:root{--ink: #0a0c0b;--ink-1: #0e1110;--ink-2: #161a18;--panel: rgba(255, 255, 255, .022);--panel-hi: rgba(255, 255, 255, .04);--bone: #ecebe3;--bone-dim: #b9bbb2;--muted: #7e837a;--muted-2: #5b6058;--lime: #c2f23d;--lime-dim: #9bc02f;--cyan: #7ad7ff;--rose: #ff8aa1;--line: rgba(236, 235, 227, .1);--line-soft: rgba(236, 235, 227, .06);--font-display: "Bricolage Grotesque", "Sora", sans-serif;--font-body: "Sora", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--maxw: 1240px;--pad: clamp(20px, 5vw, 96px);--ease: cubic-bezier(.22, 1, .36, 1)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--ink);color:var(--bone);font-family:var(--font-body);font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}@media (pointer: fine){body{cursor:none}}::selection{background:var(--lime);color:#0a0c0b}a{color:inherit;text-decoration:none}ul{list-style:none}.mono{font-family:var(--font-mono);font-weight:500;letter-spacing:.02em}.bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}.bg-grid{position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 80%);mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 80%);opacity:.6}.bg-orb{position:absolute;border-radius:50%;filter:blur(90px);opacity:.5;will-change:transform}.bg-orb--lime{width:46vw;height:46vw;top:-14vw;left:46vw;background:radial-gradient(circle,rgba(194,242,61,.34),transparent 68%);transform:translate3d(calc(var(--mx, 0) * 34px),calc(var(--my, 0) * 26px),0)}.bg-orb--cyan{width:40vw;height:40vw;bottom:-10vw;left:-8vw;background:radial-gradient(circle,rgba(122,215,255,.2),transparent 70%);transform:translate3d(calc(var(--mx, 0) * -26px),calc(var(--my, 0) * -20px),0)}.bg-orb--rose{width:32vw;height:32vw;top:52vh;right:-6vw;background:radial-gradient(circle,rgba(255,138,161,.16),transparent 70%);transform:translate3d(calc(var(--mx, 0) * 22px),calc(var(--my, 0) * -16px),0)}.bg-grain{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:overlay}.bg-vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 40%,transparent 40%,rgba(5,6,5,.7) 100%)}.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;z-index:9999;pointer-events:none;border-radius:50%;margin-left:0;margin-top:0}.cursor-dot{width:6px;height:6px;background:var(--lime);transform:translate3d(-50%,-50%,0);margin:-3px 0 0 -3px}.cursor-ring{width:36px;height:36px;border:1px solid rgba(236,235,227,.4);margin:-18px 0 0 -18px;display:grid;place-items:center;transition:width .3s var(--ease),height .3s var(--ease),background .3s var(--ease),border-color .3s var(--ease)}.cursor-ring.is-hovering{width:56px;height:56px;margin:-28px 0 0 -28px;background:#c2f23d1a;border-color:var(--lime)}.cursor-ring.has-label{width:76px;height:76px;margin:-38px 0 0 -38px;background:var(--lime);border-color:var(--lime)}.cursor-label{font-family:var(--font-mono);font-size:10px;font-weight:600;color:#0a0c0b;text-transform:lowercase;letter-spacing:.02em}main{position:relative;z-index:1}.section{position:relative;max-width:var(--maxw);margin:0 auto;padding:clamp(90px,13vw,190px) var(--pad)}.nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:22px var(--pad);transition:padding .4s var(--ease),background .4s var(--ease),backdrop-filter .4s var(--ease),border-color .4s var(--ease);border-bottom:1px solid transparent}.nav.is-scrolled{padding:14px var(--pad);background:#0a0c0b9e;-webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);border-bottom:1px solid var(--line-soft)}.nav-brand{display:flex;align-items:center;gap:10px;font-weight:600}.nav-brand-mark{font-family:var(--font-mono);font-weight:700;font-size:13px;color:#0a0c0b;background:var(--lime);padding:4px 7px;border-radius:7px;letter-spacing:-.02em}.nav-brand-text{font-family:var(--font-display);font-size:16px;letter-spacing:-.01em}.nav-links{display:flex;gap:4px;padding:5px;border:1px solid var(--line-soft);border-radius:999px;background:#ffffff04}.nav-link{position:relative;font-size:13px;color:var(--bone-dim);padding:7px 15px;border-radius:999px;transition:color .3s var(--ease),background .3s var(--ease)}.nav-link:hover{color:var(--bone)}.nav-link.is-active{color:#0a0c0b;background:var(--lime);font-weight:500}.nav-cta{display:inline-flex;align-items:center;gap:9px;font-size:13px;font-weight:500;padding:9px 17px;border:1px solid var(--line);border-radius:999px;transition:border-color .3s var(--ease),background .3s var(--ease)}.nav-cta:hover{border-color:var(--lime);background:#c2f23d14}.nav-cta-dot{width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 #c2f23d80;animation:pulse 2.4s infinite}@media (max-width: 720px){.nav-links{display:none}}.hero{position:relative;z-index:1;min-height:100svh;max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);display:flex;flex-direction:column;justify-content:center}.hero-inner{padding-top:80px}.hero-status{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:12px;color:var(--bone-dim);padding:8px 14px;border:1px solid var(--line);border-radius:999px;background:var(--panel);margin-bottom:clamp(26px,4vw,42px)}.pulse{width:8px;height:8px;border-radius:50%;background:var(--lime);box-shadow:0 0 #c2f23d80;animation:pulse 2.4s infinite}@keyframes pulse{0%{box-shadow:0 0 #c2f23d80}70%{box-shadow:0 0 0 9px #c2f23d00}to{box-shadow:0 0 #c2f23d00}}.hero-title{font-family:var(--font-display);font-weight:700;font-size:clamp(2.5rem,8.2vw,7.3rem);line-height:.92;letter-spacing:-.04em}.hero-title .line{display:block;overflow:hidden;padding-bottom:.14em;margin-bottom:-.1em}.hero-title .line span{display:inline-block;will-change:transform}.hero-title-accent{color:transparent;-webkit-text-stroke:1.4px var(--bone);position:relative}@supports (-webkit-text-stroke: 1px){.hero-title-accent:after{content:"Prasitthawephorn";position:absolute;top:0;right:0;bottom:0;left:0;color:var(--lime);-webkit-text-stroke:0;clip-path:inset(0 100% 0 0);animation:fillIn 1.4s var(--ease) 1.1s forwards}}@keyframes fillIn{to{clip-path:inset(0 0 0 0)}}.hero-meta{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-top:clamp(28px,4vw,46px);flex-wrap:wrap}.hero-role{max-width:40ch;font-size:clamp(1rem,1.5vw,1.18rem);color:var(--bone-dim);display:flex;flex-direction:column;gap:8px}.mono-tag{color:var(--lime);font-family:var(--font-mono);font-size:12.5px;letter-spacing:.04em;text-transform:uppercase}.hero-scroll-link{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.hero-scroll-track{width:26px;height:42px;border:1px solid var(--line);border-radius:999px;display:flex;justify-content:center;padding-top:7px}.hero-scroll-thumb{width:4px;height:9px;border-radius:4px;background:var(--lime);animation:scrollThumb 1.8s var(--ease) infinite}@keyframes scrollThumb{0%,to{transform:translateY(0);opacity:1}60%{transform:translateY(13px);opacity:.3}}.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:clamp(48px,7vw,92px);border:1px solid var(--line-soft);border-radius:16px;overflow:hidden;background:var(--line-soft)}.stat{background:var(--ink);padding:clamp(18px,2.4vw,30px);display:flex;flex-direction:column;gap:4px}.stat-value{font-family:var(--font-display);font-weight:700;font-size:clamp(1.9rem,4vw,3.1rem);line-height:1;letter-spacing:-.03em;color:var(--bone)}.stat-label{font-family:var(--font-mono);font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.hero-side{position:absolute;right:var(--pad);top:50%;transform:translateY(-50%) rotate(180deg);writing-mode:vertical-rl;display:flex;align-items:center;gap:16px;font-size:11px;color:var(--muted-2);letter-spacing:.1em}.hero-side-line{width:1px;height:60px;background:var(--line)}@media (max-width: 980px){.hero-side{display:none}.hero-stats{grid-template-columns:repeat(2,1fr)}}.sec-head{margin-bottom:clamp(40px,6vw,76px)}.sec-head--center{text-align:center}.sec-label{display:inline-flex;align-items:center;gap:12px;font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--lime)}.sec-index{color:var(--muted)}.sec-label-line{width:38px;height:1px;background:var(--lime);opacity:.5}.sec-title{font-family:var(--font-display);font-weight:700;font-size:clamp(2rem,5vw,3.7rem);line-height:1.02;letter-spacing:-.03em;margin-top:18px;max-width:18ch}.about-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(40px,6vw,90px);align-items:start}.about-lead{font-family:var(--font-display);font-weight:400;font-size:clamp(1.4rem,2.9vw,2.35rem);line-height:1.32;letter-spacing:-.02em;color:var(--bone)}.about-aside{display:flex;flex-direction:column;gap:34px;padding-top:8px}.about-principles{display:flex;flex-direction:column;gap:22px}.principle{display:grid;grid-template-columns:110px 1fr;gap:14px;padding-bottom:22px;border-bottom:1px solid var(--line-soft)}.principle-k{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--lime);padding-top:3px}.principle-v{color:var(--bone-dim);font-size:15px;line-height:1.55}.about-edu{display:flex;flex-direction:column;gap:6px;padding:22px;border:1px solid var(--line-soft);border-radius:14px;background:var(--panel)}.about-edu-tag{font-size:11.5px;color:var(--muted)}.about-edu-school{font-family:var(--font-display);font-weight:600;font-size:1.1rem;letter-spacing:-.01em}.about-edu-meta{font-size:13px;color:var(--bone-dim)}@media (max-width: 860px){.about-grid{grid-template-columns:1fr}}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.skill-card{padding:clamp(24px,3vw,34px);border:1px solid var(--line-soft);border-radius:18px;background:var(--panel);transition:border-color .4s var(--ease),background .4s var(--ease),transform .4s var(--ease)}.skill-card:hover{border-color:var(--line);background:var(--panel-hi);transform:translateY(-4px)}.skill-card-head{display:flex;flex-direction:column;gap:4px;margin-bottom:22px}.skill-card-tag{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.skill-card-title{font-family:var(--font-display);font-weight:600;font-size:1.3rem;letter-spacing:-.01em}.skill-list{display:flex;flex-wrap:wrap;gap:9px}.skill-chip{font-size:13.5px;padding:7px 14px;border:1px solid var(--line);border-radius:999px;color:var(--bone-dim);transition:color .25s var(--ease),border-color .25s var(--ease),background .25s var(--ease)}.skill-chip:hover{color:#0a0c0b;background:var(--lime);border-color:var(--lime)}.marquee{margin-top:clamp(40px,6vw,70px);overflow:hidden;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);padding:22px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.marquee-track{display:flex;width:max-content;animation:marquee 32s linear infinite}.marquee-item{display:inline-flex;align-items:center;gap:26px;font-family:var(--font-display);font-weight:600;font-size:clamp(1.4rem,2.6vw,2.1rem);letter-spacing:-.02em;color:var(--bone-dim);padding:0 26px;white-space:nowrap}.marquee-dot{color:var(--lime);font-size:.7em}@keyframes marquee{to{transform:translate(-50%)}}@media (max-width: 720px){.skills-grid{grid-template-columns:1fr}}.timeline{display:flex;flex-direction:column}.tl-item{display:grid;grid-template-columns:28px 1fr;gap:clamp(18px,3vw,38px);padding-bottom:clamp(40px,5vw,60px)}.tl-marker{display:flex;flex-direction:column;align-items:center;padding-top:6px}.tl-dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--muted);background:var(--ink);flex-shrink:0}.tl-dot.is-current{border-color:var(--lime);background:var(--lime);box-shadow:0 0 0 4px #c2f23d26}.tl-line{width:1px;flex:1;margin-top:10px;background:linear-gradient(var(--line),transparent)}.tl-body{padding-bottom:8px}.tl-top{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}.tl-company{font-family:var(--font-display);font-weight:700;font-size:clamp(1.4rem,2.6vw,2rem);letter-spacing:-.02em}.tl-period{font-size:12px;color:var(--muted);white-space:nowrap}.tl-role{color:var(--lime);font-size:14px;margin-top:2px;margin-bottom:18px}.tl-points{display:flex;flex-direction:column;gap:10px;max-width:64ch}.tl-points li{position:relative;padding-left:22px;color:var(--bone-dim);font-size:15px;line-height:1.55}.tl-points li:before{content:"→";position:absolute;left:0;color:var(--muted)}.tl-projects{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.tag{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.02em;padding:5px 11px;border:1px solid var(--line);border-radius:7px;color:var(--bone-dim);background:var(--panel)}.projects-note{color:var(--muted);font-size:13px;margin-top:-38px;margin-bottom:40px}.proj-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.proj{position:relative;overflow:hidden;padding:clamp(28px,3.4vw,42px);border:1px solid var(--line-soft);border-radius:20px;background:var(--panel);display:flex;flex-direction:column;min-height:280px;transition:border-color .4s var(--ease),transform .4s var(--ease)}.proj:hover{border-color:color-mix(in srgb,var(--accent) 55%,transparent);transform:translateY(-5px)}.proj-glow{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;background:radial-gradient(340px circle at var(--px, 50%) var(--py, 50%),color-mix(in srgb,var(--accent) 16%,transparent),transparent 60%);transition:opacity .4s var(--ease);pointer-events:none}.proj:hover .proj-glow{opacity:1}.proj-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:auto}.proj-index{font-size:12px;color:var(--accent)}.proj-type{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.proj-name{font-family:var(--font-display);font-weight:700;font-size:clamp(1.8rem,3.4vw,2.8rem);letter-spacing:-.03em;margin-top:34px}.proj-desc{color:var(--bone-dim);font-size:14.5px;line-height:1.55;margin-top:12px;max-width:46ch}.proj-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-top:24px}.proj-stack{display:flex;flex-wrap:wrap;gap:7px}.proj-arrow{font-size:1.4rem;color:var(--accent);transition:transform .4s var(--ease);flex-shrink:0}.proj:hover .proj-arrow{transform:translate(4px,-4px)}@media (max-width: 720px){.proj-grid{grid-template-columns:1fr}.projects-note{margin-top:-24px}}.btn{display:inline-flex;align-items:center;gap:10px;font-size:14px;font-weight:500;padding:13px 22px;border-radius:999px;border:1px solid transparent;transition:transform .3s var(--ease),background .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease)}.btn-arrow{font-size:1.05em;transition:transform .3s var(--ease)}.btn--primary{background:var(--lime);color:#0a0c0b}.btn--primary:hover{transform:translateY(-2px);background:#d2ff5c}.btn--primary:hover .btn-arrow{transform:translate(4px)}.btn--ghost{border-color:var(--line);color:var(--bone);background:var(--panel)}.btn--ghost:hover{border-color:var(--lime);background:#c2f23d12;transform:translateY(-2px)}.btn--ghost:hover .btn-arrow{transform:translateY(3px)}.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:clamp(34px,4vw,48px)}.contact-grid-layout{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,6vw,84px);align-items:start}.contact-intro{display:flex;flex-direction:column;align-items:flex-start}.contact-eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--lime);margin-bottom:24px}.contact-title{font-family:var(--font-display);font-weight:700;font-size:clamp(2.4rem,5vw,4rem);line-height:.98;letter-spacing:-.04em}.contact-title-accent{color:transparent;-webkit-text-stroke:1.2px var(--lime)}.contact-mail{position:relative;display:inline-block;font-family:var(--font-display);font-weight:500;font-size:clamp(1.2rem,2.4vw,1.7rem);letter-spacing:-.02em;margin-top:clamp(26px,4vw,38px);color:var(--bone)}.contact-mail-line{position:absolute;left:0;bottom:-6px;width:100%;height:2px;background:var(--lime);transform:scaleX(.25);transform-origin:left;transition:transform .5s var(--ease)}.contact-mail:hover .contact-mail-line{transform:scaleX(1)}.resume-btn{display:inline-flex;align-items:center;gap:11px;margin-top:30px;padding:13px 22px;font-size:14px;font-weight:500;border:1px solid var(--line);border-radius:999px;background:var(--panel);transition:border-color .3s var(--ease),background .3s var(--ease),transform .3s var(--ease)}.resume-btn:hover{border-color:var(--lime);background:#c2f23d12;transform:translateY(-2px)}.resume-btn-icon{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--lime);color:#0a0c0b;font-size:13px;font-weight:700}.resume-btn-meta{font-size:11px;color:var(--muted);padding-left:4px;border-left:1px solid var(--line);margin-left:2px}.contact-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(34px,4vw,48px)}.contact-item{display:flex;flex-direction:column;gap:7px;text-align:left;padding:16px 22px;min-width:150px;border:1px solid var(--line-soft);border-radius:14px;background:var(--panel);transition:border-color .35s var(--ease),background .35s var(--ease),transform .35s var(--ease)}.contact-item:hover{border-color:var(--line);background:var(--panel-hi);transform:translateY(-3px)}.contact-item-label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.contact-item-handle{font-size:15px;color:var(--bone)}.cform{display:flex;flex-direction:column;gap:20px;padding:clamp(26px,3vw,38px);border:1px solid var(--line-soft);border-radius:20px;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.cform-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.field{display:flex;flex-direction:column;gap:9px}.field-label{display:flex;align-items:center;gap:10px;font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.field-error{font-family:var(--font-body);text-transform:none;letter-spacing:0;font-size:12px;color:var(--rose)}.field-input{width:100%;font-family:var(--font-body);font-size:15px;color:var(--bone);background:#00000040;border:1px solid var(--line);border-radius:12px;padding:13px 15px;transition:border-color .3s var(--ease),background .3s var(--ease);resize:vertical}.field-input::placeholder{color:var(--muted-2)}.field-input:focus{outline:none;border-color:var(--lime);background:#c2f23d0a}.field.has-error .field-input{border-color:#ff8aa199}.cform-foot{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.cform-submit{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-body);font-size:14px;font-weight:600;color:#0a0c0b;background:var(--lime);border:none;border-radius:999px;padding:13px 24px;transition:transform .3s var(--ease),background .3s var(--ease),opacity .3s var(--ease)}.cform-submit:hover:not(:disabled){transform:translateY(-2px);background:#d2ff5c}.cform-submit:disabled{opacity:.6;cursor:progress}.cform-submit-arrow{font-size:1.05em}.cform-note{font-size:12.5px;max-width:30ch;line-height:1.4}.cform-note--ok{color:var(--lime)}.cform-note--err{color:var(--rose)}@media (max-width: 900px){.contact-grid-layout{grid-template-columns:1fr}}@media (max-width: 520px){.cform-row{grid-template-columns:1fr}}.footer{position:relative;z-index:1;max-width:var(--maxw);margin:0 auto;padding:40px var(--pad) 56px;border-top:1px solid var(--line-soft);display:flex;flex-direction:column;gap:18px}.footer-row{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.footer-name{font-family:var(--font-display);font-weight:600;font-size:1.05rem}.footer-meta,.footer-copy{font-size:12px;color:var(--muted)}.footer-top{font-size:12px;color:var(--bone-dim);transition:color .3s var(--ease)}.footer-top:hover{color:var(--lime)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
