:root{--bg-base:#0a0b0e;--bg-surface:#10131a;--bg-surface-2:#151a23;--text:#e9edf2;--text-muted:#8b93a1;--accent:#5ea2ff;--accent-dim:#3d6db3;--glow:#5ea2ff40;--glow-soft:#5ea2ff14;--border:#e9edf214;--border-accent:#5ea2ff59;--success:#5eff9e;--danger:#ff5e6c;--warning:#ffd45e;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono","Cascadia Code",monospace;--fs-hero:clamp(2.75rem,6.5vw,5.5rem);--fs-h2:clamp(1.75rem,3.5vw,2.5rem);--fs-h3:1.25rem;--fs-body:1rem;--fs-small:0.875rem;--fs-micro:0.75rem;--sp-1:0.25rem;--sp-2:0.5rem;--sp-3:0.75rem;--sp-4:1rem;--sp-6:1.5rem;--sp-8:2rem;--sp-12:3rem;--sp-16:4rem;--sp-24:6rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-card:0 8px 32px #00000073;--shadow-glow:0 0 24px var(--glow);--ease-out:cubic-bezier(0.22,1,0.36,1);--dur-fast:160ms;--dur-med:320ms;--dur-slow:640ms;--header-width:100px;--header-mobile-height:60px}.terminal-window{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);contain:layout;overflow:hidden;transition:border-color var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out)}.terminal-window__bar{align-items:center;background:var(--bg-surface-2);border-bottom:1px solid var(--border);display:flex;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4)}.terminal-window__title{color:var(--text-muted);font-size:var(--fs-micro);margin-left:var(--sp-2);-webkit-user-select:none;user-select:none}.dot{border-radius:50%;flex-shrink:0;height:10px;width:10px}.dot--red{background:var(--danger)}.dot--yellow{background:var(--warning)}.dot--green{background:var(--success)}.terminal-window__body{padding:var(--sp-6)}.prompt-symbol{color:var(--success)}.prompt-line{color:var(--text-muted)}.error-line,.prompt-line{font-size:var(--fs-small)}.error-line{color:var(--danger);margin:var(--sp-3) 0}.terminal-button{background:#0000;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;display:inline-block;font-family:var(--font-mono);font-size:var(--fs-small);font-weight:500;padding:var(--sp-3) var(--sp-6);text-decoration:none;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.terminal-button:hover{box-shadow:var(--shadow-glow)}.terminal-button--primary,.terminal-button:hover{border-color:var(--border-accent);color:var(--accent)}.terminal-button--primary{background:var(--glow-soft)}.terminal-button--primary:hover{background:#5ea2ff29}.stack-chip{color:var(--accent);display:inline-block;font-size:var(--fs-micro);opacity:.85}.terminal-link{align-items:center;color:var(--text-muted);display:inline-flex;font-size:var(--fs-small);gap:var(--sp-2);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}.terminal-link:hover{color:var(--accent)}.link-arrow{transition:transform var(--dur-fast) var(--ease-out)}.terminal-link:hover .link-arrow{transform:translateX(4px)}*{box-sizing:border-box;margin:0;padding:0}html{overflow-x:hidden;width:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-base);color:var(--text);font-family:var(--font-mono);min-height:100vh}html.has-custom-cursor{cursor:none}html.has-custom-cursor :where(a,button,input,textarea,select,label,summary,[role=button],.project-card,.terminal-button,.term-launcher__btn,.term-launcher__hint,.term-bar,.term-bar .dot,.term-body,.term-resize,.term-link){cursor:none!important}.visually-hidden{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}::selection{background:var(--accent);color:var(--bg-base)}:focus-visible{outline:1px solid var(--accent);outline-offset:3px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-base)}::-webkit-scrollbar-thumb{background:var(--bg-surface-2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--accent-dim)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.terminal-bg{background:var(--bg-base);inset:0;overflow:hidden;pointer-events:none;position:fixed;transition:visibility 0s linear 0s;z-index:0}html[data-fx-occluded] .terminal-bg{transition-delay:.4s;visibility:hidden}.terminal-bg__canvas{display:block;height:100%;inset:0;opacity:0;position:absolute;transition:opacity .6s var(--ease-out);width:100%}.terminal-bg__canvas--visible{opacity:1}.terminal-bg__layer{inset:0;pointer-events:none;position:absolute}.terminal-bg__scanlines{background:repeating-linear-gradient(180deg,#0000001f 0,#0000001f 1px,#0000 0,#0000 3px);opacity:.5}.terminal-bg__grid-wrap{bottom:-12%;height:50vh;left:-20%;-webkit-mask-image:linear-gradient(180deg,#0000 0,#000 45%,#0006);mask-image:linear-gradient(180deg,#0000 0,#000 45%,#0006);perspective:55vh;position:absolute;right:-20%}.terminal-bg__grid{inset:0;overflow:hidden;position:absolute;transform:rotateX(62deg);transform-origin:top center}.terminal-bg__grid-pattern{background-image:linear-gradient(to right,var(--glow) 1px,#0000 1px),linear-gradient(to top,var(--glow) 1px,#0000 1px);background-size:56px 56px;inset:-56px 0;opacity:.55;position:absolute}.terminal-bg--moving .terminal-bg__glow,.terminal-bg--moving .terminal-bg__grid-pattern,.terminal-bg--moving .terminal-bg__grid-wrap{will-change:transform}.terminal-bg__glow{background:radial-gradient(ellipse 60% 45% at 50% 60%,var(--glow-soft) 0,#0000 70%)}.terminal-bg__fallback{background:radial-gradient(ellipse 120% 80% at 50% 50%,#0000 35%,#0000008c 100%),radial-gradient(ellipse 70% 55% at 50% 40%,#5ea2ff1a,#0000 70%),var(--bg-base)}.term-launcher{align-items:center;bottom:var(--sp-6);display:flex;gap:var(--sp-3);position:fixed;right:var(--sp-6);z-index:1100}.term-launcher__btn{background:var(--bg-surface);border:1px solid var(--border-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-card),0 0 0 0 var(--glow);color:var(--accent);cursor:pointer;display:grid;height:56px;place-items:center;transition:box-shadow var(--dur-med) var(--ease-out),border-color var(--dur-fast) var(--ease-out);width:56px}.term-launcher__btn:hover{border-color:var(--accent);box-shadow:var(--shadow-card),var(--shadow-glow)}.term-launcher__glyph{font-family:var(--font-mono);font-size:1.4rem;font-weight:600;letter-spacing:-1px;line-height:1}.term-launcher__btn--pending{cursor:progress}.term-launcher__btn--pending .term-launcher__glyph{animation:term-launcher-wait .9s steps(2,jump-none) infinite}@keyframes term-launcher-wait{0%{opacity:1}to{opacity:.35}}.term-launcher__hint{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-card);color:var(--text-muted);cursor:pointer;font-family:var(--font-mono);font-size:var(--fs-micro);padding:var(--sp-2) var(--sp-3);white-space:nowrap}.term-launcher__hint kbd{border:1px solid var(--border-accent);border-radius:3px;color:var(--accent);font-family:var(--font-mono);padding:0 4px}@media (max-width:768px){.term-launcher{bottom:calc(60px + var(--sp-4));right:var(--sp-4)}}@media (prefers-reduced-motion:reduce){.term-launcher__btn--pending .term-launcher__glyph{animation:none}}.cursor-dot,.cursor-ring{border-radius:50%;left:0;pointer-events:none;position:fixed;top:0;will-change:transform;z-index:10000}.cursor-dot{background:var(--accent);box-shadow:0 0 8px var(--glow);height:6px;margin:-3px 0 0 -3px;width:6px}.cursor-ring{border:1.5px solid var(--accent);box-shadow:0 0 12px var(--glow-soft);height:32px;margin:-16px 0 0 -16px;width:32px}.hero-title-wrap{font-size:var(--fs-hero);margin-left:-.1em;padding:.35em .5em .35em .1em;position:relative}.hero-title{color:var(--text);font-size:inherit;font-weight:800;letter-spacing:-.03em;line-height:1.05;transition:text-shadow var(--dur-med) var(--ease-out);white-space:nowrap}.hero-title-wrap:not(.hero-title-wrap--webgl):hover .hero-title{text-shadow:2px 0 0 #ff5e6c8c,-2px 0 0 #5ea2ff8c}.hero-title-wrap--webgl .hero-title{color:#0000;text-shadow:none;transition:none}.hero-title-canvas{inset:0;opacity:0;pointer-events:none;position:absolute}.hero-title-wrap--webgl .hero-title-canvas{opacity:1}.hero-title-canvas canvas{display:block;height:100%;width:100%}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference) and (min-width:768px) and (not (pointer:coarse)){html:not([data-fx=static]) .px-host{view-timeline-name:--px;view-timeline-axis:block}html:not([data-fx=static]) .px-host__shift{animation-timeline:--px;animation-range:cover 0 cover 100%;animation-fill-mode:both;animation-name:px-shift;animation-timing-function:linear}}}@keyframes px-shift{0%{translate:0 0;translate:0 calc(var(--px-distance, 0px)*-1)}to{translate:0 0;translate:0 var(--px-distance,0)}}.home{align-items:center;display:flex;min-height:calc(100vh - var(--sp-24));position:relative}.hero-geometry{height:500px;max-width:500px;opacity:.75;pointer-events:none;position:absolute;right:-5%;top:50%;transform:translateY(-50%);width:50%}@media (max-width:900px){.hero-geometry{display:none}}.hero-content{max-width:920px;padding-left:clamp(0rem,4vw,4rem)}.hero-prompt{margin-bottom:var(--sp-3)}.hero-title-reveal{margin-bottom:var(--sp-6)}.hero-description{color:var(--text-muted);font-size:var(--fs-body);line-height:1.8;margin-top:var(--sp-3);max-width:56ch;min-height:3.6em}.hero-description__caret,.typewriter-cursor{color:var(--accent)}.typewriter-cursor{animation:caret-blink 1.1s steps(2) infinite}html[data-fx-occluded] .typewriter-cursor{animation-play-state:paused}@keyframes caret-blink{0%,to{opacity:1}50%{opacity:.3}}.hero-actions{margin-top:var(--sp-8)}.cta-buttons{display:flex;flex-wrap:wrap;gap:var(--sp-4)}.social-links{display:flex;gap:var(--sp-6);margin-top:var(--sp-8)}.social-link{color:var(--text-muted);font-size:1.35rem;transition:color var(--dur-fast) var(--ease-out),text-shadow var(--dur-med) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.social-link:hover{color:var(--accent);text-shadow:0 0 16px var(--glow);transform:translateY(-2px)}@media (max-width:768px){.home{min-height:calc(100vh - var(--sp-12))}.hero-content{padding-left:0}.cta-buttons{align-items:flex-start;flex-direction:column}}.reveal{--reveal-name:reveal-up;--reveal-duration:0.7s}.reveal--left{--reveal-name:reveal-left;--reveal-duration:0.6s}.reveal--right{--reveal-name:reveal-right;--reveal-duration:0.6s}.reveal--scale{--reveal-name:reveal-scale;--reveal-duration:0.5s}.reveal--clip{--reveal-name:reveal-clip}@media screen and (prefers-reduced-motion:no-preference){.reveal:not(.reveal--clip,[data-inview],[data-inview] *){opacity:0}.reveal--clip:not([data-inview],[data-inview] *){clip-path:inset(0 0 100% 0)}.reveal[data-inview]:not([data-revealed]),[data-inview] .reveal:not([data-revealed]){animation-duration:var(--reveal-duration);animation-fill-mode:backwards;animation-name:var(--reveal-name);animation-timing-function:var(--ease-out)}[data-inview] .reveal{animation-delay:.1s;animation-delay:calc(.1s + var(--i, 0)*80ms)}}@media screen and (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine){html[data-fx=full] .reveal--blur[data-inview]:not([data-revealed]),html[data-fx=full] [data-inview] .reveal--blur:not([data-revealed]){animation-name:var(--reveal-name),reveal-blur}}@keyframes reveal-up{0%{opacity:0;translate:0 24px}}@keyframes reveal-left{0%{opacity:0;translate:-32px 0}}@keyframes reveal-right{0%{opacity:0;translate:32px 0}}@keyframes reveal-scale{0%{opacity:0;scale:.92}}@keyframes reveal-clip{0%{clip-path:inset(0 0 100% 0);translate:0 12px}to{clip-path:inset(0)}}@keyframes reveal-blur{0%{filter:blur(6px)}}.section-heading{align-items:baseline;display:flex;font-size:var(--fs-h2);font-weight:700;gap:var(--sp-3);letter-spacing:-.02em;margin-bottom:var(--sp-12)}.section-heading__comment{color:var(--accent);opacity:.7}.section-heading__index{color:var(--text-muted);font-size:.6em;font-weight:400}.section-heading__label{color:var(--text)}.about-page{display:flex;justify-content:center}.about-container{max-width:1100px;padding-top:var(--sp-12);width:100%}.about-grid{grid-gap:var(--sp-8);align-items:start;display:grid;gap:var(--sp-8);grid-template-columns:2fr 1fr;margin-bottom:var(--sp-24)}.about-window .prompt-line{margin-bottom:var(--sp-4)}.about-description{color:var(--text-muted);font-size:var(--fs-small);line-height:1.8}.about-description+.about-description{margin-top:var(--sp-4)}.stats{gap:var(--sp-4)}.stat-item,.stats{display:flex;flex-direction:column}.stat-item{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);gap:var(--sp-1);padding:var(--sp-6);transition:border-color var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out)}.stat-item:hover{border-color:var(--border-accent);box-shadow:0 0 24px var(--glow-soft)}.stat-number{color:var(--accent);font-size:2rem;font-weight:800;text-shadow:0 0 18px var(--glow)}.stat-label{color:var(--text-muted);font-size:var(--fs-micro);letter-spacing:.08em}.subsection-title{color:var(--text);font-size:var(--fs-h3);font-weight:600;margin-bottom:var(--sp-8)}.skills-section{margin-bottom:var(--sp-24)}.skills-grid{grid-gap:var(--sp-6);display:grid;gap:var(--sp-6);grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.skill-pane{transition:border-color var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.skill-pane:hover{border-color:var(--border-accent);box-shadow:var(--shadow-card),0 0 24px var(--glow-soft);transform:translateY(-4px)}.skill-bar-list{gap:var(--sp-4)}.skill-bar-list,.skill-bar-row{display:flex;flex-direction:column}.skill-bar-row{gap:var(--sp-2)}.skill-bar-label{align-items:center;color:var(--text-muted);display:flex;font-size:var(--fs-small);gap:var(--sp-2)}.skill-bar-label .pane-bullet{color:var(--accent);flex-shrink:0}.skill-bar-label>span:nth-child(2){flex:1 1}.skill-bar-pct{color:var(--accent);font-size:var(--fs-micro);margin-left:auto;opacity:.7}.skill-bar-track{background:var(--border);border-radius:1px;height:2px;overflow:hidden}.skill-bar-fill{background:linear-gradient(90deg,var(--accent-dim),var(--accent));border-radius:1px;box-shadow:0 0 8px var(--glow);height:100%;transform:scaleX(0);transform-origin:left;transition:transform 1.1s var(--ease-out) .1s}.skill-bar-list[data-inview] .skill-bar-fill{transform:scaleX(var(--level))}@media (prefers-reduced-motion:reduce){.skill-bar-fill{transform:scaleX(var(--level));transition:none}}.journey-section{padding-bottom:var(--sp-12)}.timeline{display:flex;flex-direction:column;gap:var(--sp-12);padding:var(--sp-4) 0;position:relative}.timeline-track{background:var(--border);bottom:0;left:50%;position:absolute;top:0;transform:translateX(-50%);width:1px}.timeline-line{background:linear-gradient(to bottom,var(--accent-dim),var(--accent));box-shadow:0 0 12px var(--glow);height:100%;transform-origin:top;width:100%}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.timeline{view-timeline-name:--timeline;view-timeline-axis:block}.timeline-line{animation-timeline:--timeline;animation-range:cover 15vh cover calc(100% - 55vh);animation-fill-mode:both;animation-name:timeline-grow;animation-timing-function:linear}}}@keyframes timeline-grow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.timeline-item{position:relative;width:50%}.timeline-item--left{padding-right:var(--sp-12);text-align:right}.timeline-item--right{align-self:flex-end;padding-left:var(--sp-12)}.timeline-node{background:var(--bg-base);border:2px solid var(--accent);border-radius:50%;box-shadow:0 0 12px var(--glow);height:11px;position:absolute;top:6px;width:11px}.timeline-item--left .timeline-node{right:-6px}.timeline-item--right .timeline-node{left:-5px}.timeline-year{color:var(--accent);display:block;font-size:var(--fs-micro);letter-spacing:.06em;margin-bottom:var(--sp-2)}.timeline-content h4{font-size:var(--fs-h3);font-weight:600;margin-bottom:var(--sp-2)}.timeline-content p{color:var(--text-muted);font-size:var(--fs-small);line-height:1.7}@media (max-width:900px){.about-grid{grid-template-columns:1fr}.stats{flex-direction:row;flex-wrap:wrap}.stat-item{flex:1 1 140px}}@media (max-width:768px){.about-grid,.skills-section{margin-bottom:var(--sp-16)}.timeline-track{left:5px}.timeline-item,.timeline-item--left,.timeline-item--right{align-self:auto;padding:0 0 0 var(--sp-8);text-align:left;width:100%}.timeline-item--left .timeline-node,.timeline-item--right .timeline-node{left:0;right:auto}}.projects-page{margin:0 auto;max-width:1100px;padding-top:var(--sp-12)}.projects-grid{grid-gap:var(--sp-6);display:grid;gap:var(--sp-6);grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.project-card-link{color:inherit;display:block;height:100%;text-decoration:none}@property --tx{syntax:"<number>";inherits:false;initial-value:0}@property --ty{syntax:"<number>";inherits:false;initial-value:0}.project-card{cursor:pointer;display:flex;flex-direction:column;height:100%;position:relative;transition:border-color var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),transform .12s var(--ease-out)}@media (prefers-reduced-motion:no-preference) and (pointer:fine){.project-card:hover{transform:perspective(800px) rotateY(0deg) rotateX(0deg) translateY(-6px);transform:perspective(800px) rotateY(calc(var(--tx, 0)*6deg)) rotateX(calc(var(--ty, 0)*-5deg)) translateY(-6px)}}.project-card:hover{border-color:var(--border-accent);box-shadow:var(--shadow-card),var(--shadow-glow)}@media (prefers-reduced-motion:reduce){.project-card:hover{transform:translateY(-6px)}}.project-card__glow{background:radial-gradient(320px circle at center,var(--glow-soft),#0000 65%);height:416px;left:50%;margin:-208px 0 0 -208px;opacity:0;pointer-events:none;position:absolute;top:50%;transition:opacity var(--dur-med) var(--ease-out);width:416px;z-index:0}.project-card:hover .project-card__glow{opacity:1;will-change:transform}.project-card:after{background:linear-gradient(105deg,#0000 40%,rgba(233,237,242,.045) 50%,#0000 60%);content:"";inset:0;pointer-events:none;position:absolute;transform:translateX(-100%);z-index:2}.project-card:hover:after{transform:translateX(100%);transition:transform .9s var(--ease-out)}.project-card__preview{border-bottom:1px solid var(--border);flex-shrink:0;height:180px;overflow:hidden;position:relative;z-index:1}.project-card__preview img{display:block;filter:brightness(.7) saturate(.6);height:100%;object-fit:cover;object-position:top;transform:scale(1.04);transition:transform .7s var(--ease-out),filter .4s var(--ease-out);width:100%}.project-card:hover .project-card__preview img{filter:brightness(.9) saturate(1);transform:scale(1)}.project-card__body{display:flex;flex:1 1;flex-direction:column;gap:var(--sp-3);position:relative;z-index:1}.project-card__title{font-size:var(--fs-h3);font-weight:700;letter-spacing:-.01em}.project-card__tagline{color:var(--text-muted);flex:1 1;font-size:var(--fs-small);line-height:1.6}.project-card__stack{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3)}.project-card__open{align-items:center;color:var(--text-muted);display:inline-flex;font-size:var(--fs-small);gap:var(--sp-2);margin-top:var(--sp-2);transition:color var(--dur-fast) var(--ease-out)}.project-card:hover .project-card__open{color:var(--accent)}.project-card:hover .project-card__open .link-arrow{transform:translateX(4px)}@media (max-width:768px){.projects-grid{grid-template-columns:1fr}}.contact-page{margin:0 auto;max-width:1100px;padding-top:var(--sp-12)}.contact-container{grid-gap:var(--sp-12);align-items:start;display:grid;gap:var(--sp-12);grid-template-columns:1fr 1.2fr}.contact-description{color:var(--text-muted);font-size:var(--fs-small);line-height:1.8;margin-bottom:var(--sp-8);max-width:48ch}.contact-methods{display:flex;flex-direction:column;gap:var(--sp-4);margin-bottom:var(--sp-8)}.contact-method{align-items:center;display:flex;gap:var(--sp-4)}a.contact-link{color:inherit;text-decoration:none;transition:transform .3s ease}a.contact-link:hover{transform:translateX(5px)}a.contact-link:hover .contact-icon{background:var(--accent-color);transform:scale(1.1)}.contact-icon{align-items:center;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--accent);display:flex;flex-shrink:0;height:40px;justify-content:center;transition:border-color var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out);width:40px}.contact-method:hover .contact-icon{border-color:var(--border-accent);box-shadow:0 0 16px var(--glow-soft)}.contact-label{color:var(--text-muted);display:block;font-size:var(--fs-micro);letter-spacing:.08em}.contact-details p{color:var(--text);font-size:var(--fs-small)}.contact-page .social-links{display:flex;gap:var(--sp-6)}.contact-page .social-link{color:var(--text-muted);font-size:1.25rem;transition:color var(--dur-fast) var(--ease-out),text-shadow var(--dur-med) var(--ease-out)}.contact-page .social-link:hover{color:var(--accent);text-shadow:0 0 16px var(--glow)}.contact-form{display:flex;flex-direction:column;gap:var(--sp-8)}.form-field{padding-top:var(--sp-6);position:relative}.form-field input,.form-field textarea{background:#0000;border:none;border-bottom:1px solid var(--border);color:var(--text);font-family:var(--font-mono);font-size:var(--fs-small);padding:var(--sp-2) var(--sp-1);resize:vertical;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-med) var(--ease-out);width:100%}.form-field input:focus,.form-field textarea:focus{border-bottom-color:var(--accent);box-shadow:0 8px 16px -10px var(--glow);outline:none}.form-field label{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--fs-small);left:var(--sp-1);pointer-events:none;position:absolute;top:var(--sp-6);transform-origin:left top;transition:transform .2s var(--ease-out),color .2s var(--ease-out)}.form-field input:focus~label,.form-field input:not(:placeholder-shown)~label,.form-field textarea:focus~label,.form-field textarea:not(:placeholder-shown)~label{color:var(--accent);transform:translateY(calc(var(--sp-6)*-1)) scale(.8)}.typing-indicator{align-items:center;display:flex;gap:4px;height:8px;margin-top:var(--sp-2);opacity:0;transition:opacity .3s ease-in-out}.typing-indicator[data-active]{opacity:1}.typing-indicator span{background:var(--accent);border-radius:50%;display:block;height:4px;opacity:.7;width:4px}@media (prefers-reduced-motion:no-preference){.typing-indicator[data-active] span{animation:typing-bounce .6s ease-in-out infinite}.typing-indicator[data-active] span:nth-child(2){animation-delay:.15s}.typing-indicator[data-active] span:nth-child(3){animation-delay:.3s}html[data-fx-occluded] .typing-indicator span{animation-play-state:paused}}@keyframes typing-bounce{50%{translate:0 -4px}}.contact-form .terminal-button{align-self:flex-start}.form-success{color:var(--success);font-size:var(--fs-small)}@media (max-width:900px){.contact-container{gap:var(--sp-8);grid-template-columns:1fr}}.header{align-items:center;background:#0a0b0e99;border-right:1px solid var(--border);display:flex;flex-direction:column;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:var(--header-width);z-index:1000}html[data-fx=full] .header{backdrop-filter:blur(6px);backface-visibility:hidden;background:#0a0b0e59;transform:translateZ(0);will-change:transform}.header nav{height:100%;justify-content:center;position:relative;width:100%}.header nav,.nav-links{align-items:center;display:flex;flex-direction:column}.nav-links{height:60vh;justify-content:space-between;list-style:none}.nav-link{align-items:baseline;border-left:2px solid #0000;color:var(--text-muted);display:flex;font-size:var(--fs-small);font-weight:500;gap:var(--sp-2);letter-spacing:.14em;padding:var(--sp-2) var(--sp-3);position:relative;text-decoration:none;text-transform:lowercase;transform:rotate(-90deg);transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-med) var(--ease-out);white-space:nowrap}.nav-link__index{color:var(--accent);font-size:var(--fs-micro);opacity:.55;transition:opacity var(--dur-fast) var(--ease-out)}.nav-link:hover{border-left-color:var(--accent);box-shadow:-4px 0 12px var(--glow-soft);color:var(--text)}.nav-link:hover .nav-link__index{opacity:1}.nav-link.active{animation:nav-pulse 2.2s ease-in-out 3;color:var(--accent);text-shadow:0 0 12px var(--glow)}html:not([data-fx=full]) .nav-link.active{animation:none}.nav-link.active .nav-link__index{opacity:1}html[data-fx-occluded] .nav-link.active{animation-play-state:paused}@keyframes nav-pulse{0%,to{opacity:1}50%{opacity:.3}}@media (max-width:768px){.header{display:none}}.scroll-progress{background:var(--accent);box-shadow:0 0 12px var(--glow);height:2px;left:0;pointer-events:none;position:fixed;right:0;top:0;transform:scaleX(0);transform-origin:left center;z-index:1100}@supports (animation-timeline:view()){.scroll-progress{animation-timeline:scroll(root block);animation-fill-mode:both;animation-name:scroll-progress-grow;animation-timing-function:linear}}@keyframes scroll-progress-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.app{color:var(--text);width:100%}.app,main{min-height:100vh}main{padding-left:var(--header-width)}section{min-height:100vh;padding:var(--sp-12) var(--sp-8);position:relative;z-index:1}@media (max-width:768px){main{padding-left:0}section{padding:var(--sp-6)}}@media (max-width:375px){section{padding:var(--sp-4)}}.page{isolation:isolate}