*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-body),system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-mono),ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.border{border-width:1px}.uppercase{text-transform:uppercase}.italic{font-style:italic}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--pink:#ffc6df;--pink-deep:#ff6fb0;--lav:#d3c4f4;--lav-deep:#9f81e8;--mint:#bdeecf;--mint-deep:#4fc78c;--butter:#ffe9a0;--butter-deep:#f0bd3c;--sky:#c3e2ff;--sky-deep:#61b0f2;--accent:var(--pink-deep);--accent-soft:color-mix(in srgb,var(--accent) 22%,white);--ink:#2b2140;--ink-soft:#6f6685;--ink-faint:#9b93ad;--paper:#faf6f7;--surface:#ffffff;--surface-2:#f4eefb;--line:rgba(43,33,64,0.14);--line-2:rgba(43,33,64,0.10);--hard:#2b2140;--display:var(--font-display),"Gloock",Georgia,serif;--body:var(--font-body),"Plus Jakarta Sans",system-ui,sans-serif;--mono:var(--font-mono),"Space Mono",ui-monospace,monospace;--container:1120px;--radius:18px;--radius-lg:26px;--section-pad:120px;--gap:22px;--nav-h:84px;--land-gap:28px;--shadow-soft:0 18px 40px -24px rgba(43,33,64,0.45)}[data-theme=dark]{--ink:#f3edfb;--ink-soft:#c0b6d6;--ink-faint:#8d83a8;--paper:#14101f;--surface:#251d3c;--surface-2:#302749;--line:rgba(255,255,255,0.16);--line-2:rgba(255,255,255,0.09);--hard:#cabce6;--ink-fill:#15102a;--shadow-soft:0 22px 50px -26px rgba(0,0,0,0.7)}[data-theme=dark] .tile{color:#2b2140}[data-theme=dark] .tile.c-ink{background:var(--ink-fill);color:#fff}[data-theme=dark] .tile.c-ink .nm{color:rgba(255,255,255,.8)}[data-theme=dark] .hero__sub i,[data-theme=dark] .nav__link.active{color:#2b2140}[data-theme=dark] .skills-card .ribbon{background:var(--ink-fill)}[data-theme=dark] .hl:before{background:color-mix(in srgb,var(--mark,var(--butter)) 40%,transparent)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--nav-h)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;font-family:var(--body);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}.bg-field{position:fixed;inset:0;z-index:-1;pointer-events:none;transition:opacity .5s ease}[data-bg=calm] .bg-field{opacity:.35}[data-bg=rainbow] .bg-field,[data-bg=soft] .bg-field{opacity:1}.bg-field .blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55}[data-bg=rainbow] .bg-field .blob{opacity:.8;filter:blur(60px)}[data-bg=calm] .bg-field .blob{opacity:.5}.blob.b1{width:46vw;height:46vw;left:-12vw;top:-8vw;background:var(--pink)}.blob.b2{width:42vw;height:42vw;right:-14vw;top:4vw;background:var(--butter)}.blob.b3{width:40vw;height:40vw;left:-8vw;bottom:-12vw;background:var(--sky)}.blob.b4{width:38vw;height:38vw;right:-8vw;bottom:-10vw;background:var(--mint)}[data-theme=dark] .bg-field .blob{opacity:.28}a{color:inherit}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 28px}.section{padding:var(--section-pad) 0;position:relative;scroll-margin-top:calc(var(--land-gap) - var(--section-pad))}.section--alt{background:var(--surface-2)}.eyebrow{font-family:var(--mono);font-size:12.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink-soft);font-weight:700;display:inline-flex;align-items:center;gap:.55em}.h-display{font-weight:400;line-height:1.02;letter-spacing:-.01em}.h-display,.section-title{font-family:var(--display)}.section-title{font-size:clamp(34px,5vw,56px);line-height:1.04;margin:14px 0 0}.section-head{margin-bottom:52px;max-width:720px}.section-head p{color:var(--ink-soft);font-size:18px;line-height:1.6;margin:16px 0 0}.hl{white-space:nowrap}.hl,.hl>span{position:relative}.hl>span{z-index:1}.hl:before{content:"";position:absolute;left:-.12em;right:-.12em;bottom:.04em;height:.62em;border-radius:.4em;background:var(--mark,var(--butter));z-index:0;transform-origin:left center;transform:scaleX(0);transition:transform .6s cubic-bezier(.6,.05,.2,1)}.hl.lit:before{transform:scaleX(1)}[data-motion=off] .hl:before{transition:none;transform:scaleX(1)}.chip{font-family:var(--mono);font-size:12.5px;font-weight:400;padding:6px 11px;border-radius:999px;border:1.5px solid var(--hard);background:var(--surface);color:var(--ink);display:inline-flex;align-items:center;line-height:1;white-space:nowrap}.chip.pink{background:var(--pink)}.chip.lav{background:var(--lav)}.chip.mint{background:var(--mint)}.chip.butter{background:var(--butter)}.chip.sky{background:var(--sky)}[data-theme=dark] .chip.butter,[data-theme=dark] .chip.lav,[data-theme=dark] .chip.mint,[data-theme=dark] .chip.pink,[data-theme=dark] .chip.sky{color:#2b2140}.btn{font-family:var(--body);font-weight:700;font-size:15px;padding:13px 22px;border-radius:999px;border:2px solid var(--hard);display:inline-flex;align-items:center;gap:9px;cursor:pointer;text-decoration:none;transition:transform .18s ease,box-shadow .18s ease,background .2s;background:var(--surface);color:var(--ink);box-shadow:3px 3px 0 var(--hard);white-space:nowrap}.btn:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--hard)}.btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--hard)}.btn--primary{background:var(--accent);color:#2b2140}.btn--ghost{box-shadow:none}.btn--ghost:hover{box-shadow:3px 3px 0 var(--hard)}.card{background:var(--surface);border:2px solid var(--hard);border-radius:var(--radius);position:relative;transition:transform .2s ease,box-shadow .2s ease}.card--pop{box-shadow:6px 6px 0 var(--shadowcol,var(--pink-deep))}.card--pop:hover{transform:translate(-3px,-3px);box-shadow:9px 9px 0 var(--shadowcol,var(--pink-deep))}.sticker{position:absolute;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:2}.spark{color:var(--accent)}@keyframes floaty{0%,to{transform:translateY(0) rotate(var(--r,0))}50%{transform:translateY(-12px) rotate(var(--r,0))}}@keyframes twinkle{0%,to{transform:scale(1) rotate(0);opacity:.9}50%{transform:scale(.55) rotate(40deg);opacity:.45}}@keyframes wobble{0%,to{transform:rotate(var(--r,0))}50%{transform:rotate(calc(var(--r,0) + 5deg))}}[data-motion=full] .float{animation:floaty 6s ease-in-out infinite}[data-motion=full] .twk{animation:twinkle 3.4s ease-in-out infinite}[data-motion=full] .wob{animation:wobble 5s ease-in-out infinite}.washi{position:absolute;width:92px;height:26px;background:var(--butter);opacity:.85;border:1px dashed rgba(43,33,64,.25);box-shadow:0 2px 6px rgba(43,33,64,.12)}.reveal{transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}html.reveal-ready .reveal:not(.in){opacity:0;transform:translateY(22px)}[data-motion=off] .reveal{opacity:1!important;transform:none!important;transition:none}.nav-wrap{position:fixed;top:18px;left:0;right:0;z-index:60;flex-direction:column;padding:0 16px;pointer-events:none;transition:top .3s ease}.nav,.nav-wrap{display:flex;align-items:center}.nav{pointer-events:auto;gap:6px;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(10px) saturate(1.3);border:2px solid var(--hard);border-radius:999px;padding:8px 8px 8px 18px;box-shadow:var(--shadow-soft);max-width:calc(100vw - 32px);transition:box-shadow .3s ease}.nav-wrap.is-scrolled .nav{background:color-mix(in srgb,var(--surface) 58%,transparent);backdrop-filter:blur(18px) saturate(1.5);border-color:color-mix(in srgb,var(--hard) 55%,transparent);box-shadow:0 10px 30px -18px rgba(43,33,64,.5)}[data-theme=dark] .nav-wrap.is-scrolled .nav{box-shadow:0 14px 34px -18px rgba(0,0,0,.75)}.nav__brand{font-family:var(--display);font-size:19px;margin-right:8px;white-space:nowrap;text-decoration:none}.nav__brand b{color:var(--accent)}.nav__links{display:flex;gap:2px}.nav__link{font-size:14px;font-weight:600;color:var(--ink-soft);text-decoration:none;padding:9px 13px;border-radius:999px;transition:color .2s,background .2s;white-space:nowrap}.nav__link:hover{color:var(--ink);background:var(--surface-2)}.nav__link.active{color:var(--ink);background:var(--accent-soft)}.nav__tools{display:flex;gap:6px;align-items:center;margin-left:4px}.icon-btn{width:40px;height:40px;border-radius:999px;border:2px solid var(--hard);background:var(--surface);cursor:pointer;display:grid;place-items:center;transition:transform .15s,background .2s;font-size:16px;color:var(--ink)}.icon-btn:hover{transform:translateY(-2px);background:var(--surface-2)}.nav__cta{padding:10px 16px;font-size:14px}.nav__burger{display:none;font-size:18px}.nav-mobile{pointer-events:auto;width:min(380px,calc(100vw - 32px));background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(18px) saturate(1.4);border:2px solid var(--hard);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);overflow:hidden;display:flex;flex-direction:column;gap:2px;opacity:0;transform:translateY(-10px) scale(.98);transform-origin:top center;max-height:0;padding:0 8px;margin-top:0;transition:opacity .22s ease,transform .22s ease,max-height .28s ease,padding .22s ease,margin .22s ease}.nav-mobile.open{opacity:1;transform:none;max-height:60vh;padding:8px;margin-top:10px}.nav-mobile__link{display:flex;align-items:center;justify-content:space-between;font-size:16px;font-weight:600;color:var(--ink);text-decoration:none;padding:13px 16px;border-radius:14px;transition:background .18s,color .18s}.nav-mobile__link span:last-child{color:var(--ink-faint);transition:transform .18s}.nav-mobile__link:hover{background:var(--surface-2)}.nav-mobile__link:hover span:last-child{transform:translateX(4px)}.nav-mobile__link.active{background:var(--accent-soft);color:#2b2140}.nav-mobile__link.active span:last-child{color:#2b2140}@media (max-width:880px){.nav__links{display:none}.nav__burger{display:grid}.nav__brand{display:none}.nav{padding:8px;gap:8px;margin-inline:auto}.nav-wrap{top:auto;bottom:18px;flex-direction:column-reverse}.nav-mobile{transform-origin:bottom center;transform:translateY(10px) scale(.98)}.nav-mobile.open{transform:none;margin-top:0;margin-bottom:10px}footer.foot{padding-bottom:96px}}@media (min-width:881px){.nav-mobile{display:none}}.hero{padding-top:150px;padding-bottom:90px;position:relative}.hero__grid{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center}@media (min-width:941px){[data-hero=mirror] .hero__grid{grid-template-columns:.85fr 1.15fr}[data-hero=mirror] .collage{order:-1}}.badge-avail{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.04em;padding:8px 15px;border-radius:999px;border:2px solid var(--hard);background:var(--mint);box-shadow:3px 3px 0 var(--hard)}.badge-avail,[data-theme=dark] .badge-avail{color:#1f5a3c}.dot-live{width:9px;height:9px;border-radius:50%;background:var(--mint-deep);box-shadow:0 0 0 0 var(--mint-deep)}[data-motion=full] .dot-live{animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(79,199,140,.6)}70%{box-shadow:0 0 0 10px rgba(79,199,140,0)}to{box-shadow:0 0 0 0 rgba(79,199,140,0)}}.hero h1{font-family:var(--display);font-size:clamp(40px,4.7vw,66px);line-height:1.05;margin:22px 0 0;letter-spacing:-.015em}.hero h1 .pink{color:var(--accent)}.hero__sub{font-size:20px;line-height:1.6;color:var(--ink-soft);margin:24px 0 0;max-width:30ch}.hero__sub i{font-family:var(--mono);font-style:normal;color:var(--ink);background:var(--accent-soft);padding:1px 6px;border-radius:6px;white-space:nowrap}.hero__cta{gap:14px;margin-top:34px}.hero__cta,.hero__meta{display:flex;flex-wrap:wrap}.hero__meta{gap:22px;margin-top:30px}.hero__meta div{display:flex;flex-direction:column;gap:3px}.hero__meta .k{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}.hero__meta .v{font-weight:700;font-size:15px}.collage{position:relative}.collage .tag{position:absolute;font-family:var(--mono);font-size:12px;font-weight:700;padding:8px 13px;border-radius:999px;border:2px solid var(--hard);background:var(--surface);box-shadow:3px 3px 0 var(--hard);z-index:4}.marquee{border-top:2px solid var(--hard);border-bottom:2px solid var(--hard);background:var(--accent);overflow:hidden}.marquee__track{display:flex;gap:40px;padding:13px 0;white-space:nowrap;width:-moz-max-content;width:max-content}[data-motion=full] .marquee__track{animation:slide 26s linear infinite}[data-motion=off] .marquee__track,[data-motion=subtle] .marquee__track{animation:none}@keyframes slide{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.marquee__item{font-family:var(--display);font-size:22px;color:#2b2140;display:inline-flex;align-items:center;gap:40px}.marquee__item:after{content:"✦";font-size:15px}.feat-list{display:flex;flex-direction:column;gap:96px}.featured{display:grid;grid-template-columns:1.05fr .95fr;gap:50px;align-items:center}.feat-row--rev .browser{order:2;box-shadow:-10px 10px 0 var(--accent)}.feat-row--rev .feat-copy{order:1}.browser{border:2px solid var(--hard);border-radius:var(--radius);overflow:hidden;box-shadow:10px 10px 0 var(--accent);background:var(--surface)}.browser__bar{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:2px solid var(--hard);background:var(--surface-2)}.browser__dots{display:flex;gap:6px}.browser__dots i{width:11px;height:11px;border-radius:50%;display:block;border:1.5px solid rgba(0,0,0,.25)}.browser__url{flex:1;font-family:var(--mono);font-size:12.5px;color:var(--ink-soft);background:var(--surface);border:1.5px solid var(--line);border-radius:999px;padding:6px 13px}.browser__shot{display:block;width:100%}.featured .label{color:var(--accent)}.featured h3{font-family:var(--display);font-size:clamp(30px,3.6vw,44px);margin:12px 0 0}.featured p{color:var(--ink-soft);font-size:16.5px;line-height:1.65;margin:18px 0 0}.featured .stack{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.featured .actions{margin-top:26px;display:flex;gap:12px;flex-wrap:wrap}.proj-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:34px}.polaroid{padding:14px 14px 18px;cursor:pointer}.polaroid .shot{border:2px solid var(--hard);border-radius:12px;overflow:hidden;aspect-ratio:16/11;background:var(--surface-2)}.polaroid .shot img{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.polaroid h4{font-family:var(--display);font-size:25px;margin:16px 4px 0}.polaroid .kind{font-family:var(--mono);font-style:italic;font-size:13px;color:var(--accent);margin:4px 4px 0}.polaroid .stack{display:flex;flex-wrap:wrap;gap:6px;margin:14px 4px 0}.polaroid .more{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin:16px 4px 0;display:flex;align-items:center;gap:8px;transition:gap .2s,color .2s}.polaroid:hover .more{gap:14px;color:var(--ink)}.polaroid .stack .chip{font-size:11.5px;padding:4px 9px}.skills-card{border:2px solid var(--hard);border-radius:var(--radius-lg);background:var(--surface);box-shadow:8px 8px 0 var(--mint-deep);padding:34px;position:relative}.skills-card .ribbon{position:absolute;top:-16px;left:28px;background:var(--hard);color:#fff;font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;padding:6px 14px;border-radius:999px}.tile-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.tile{border:2px solid var(--hard);border-radius:16px;padding:18px 14px;min-height:116px;display:flex;flex-direction:column;justify-content:space-between;transition:transform .16s ease}.tile:hover{transform:translateY(-4px) rotate(-1deg)}.tile .sym{font-family:var(--display);font-size:21px;font-weight:600;line-height:1;width:46px;height:46px;flex:none;display:grid;place-items:center;border:2px solid var(--hard);border-radius:13px;background:rgba(255,255,255,.5)}.tile.c-ink .sym{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.5)}.tile .nm{font-family:var(--mono);font-size:12.5px}.tile.c-sky{background:var(--sky)}.tile.c-mint{background:var(--mint)}.tile.c-pink{background:var(--pink)}.tile.c-lav{background:var(--lav)}.tile.c-butter{background:var(--butter)}.tile.c-ink{background:var(--hard);color:#fff}.tile.c-ink .nm{color:rgba(255,255,255,.8)}.support{margin-top:26px;padding-top:24px;border-top:2px dashed var(--line);display:flex;flex-wrap:wrap;gap:9px;align-items:center}.support .lbl{font-family:var(--mono);font-style:italic;font-size:13px;color:var(--ink-soft);width:100%;margin-bottom:4px}.mono-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.mono-tile{display:flex;align-items:center;gap:13px;padding:14px 16px;border:2px solid var(--hard);border-radius:15px;background:var(--surface);transition:background .2s ease,transform .14s ease,box-shadow .14s ease}.mono-tile:hover{transform:translateY(-3px);box-shadow:4px 5px 0 var(--hard)}.mono-tile__sym{width:42px;height:42px;flex:none;display:grid;place-items:center;border-radius:12px;border:1.5px solid var(--hard);background:var(--surface-2);font-family:var(--display);font-size:18px;font-weight:600;line-height:1;transition:background .2s ease}.mono-tile__nm{font-family:var(--mono);font-size:13.5px}.mono-tile.c-sky:hover{background:color-mix(in srgb,var(--sky) 26%,var(--surface))}.mono-tile.c-mint:hover{background:color-mix(in srgb,var(--mint) 26%,var(--surface))}.mono-tile.c-pink:hover{background:color-mix(in srgb,var(--pink) 26%,var(--surface))}.mono-tile.c-lav:hover{background:color-mix(in srgb,var(--lav) 26%,var(--surface))}.mono-tile.c-butter:hover{background:color-mix(in srgb,var(--butter) 26%,var(--surface))}.mono-tile.c-ink:hover{background:color-mix(in srgb,var(--hard) 16%,var(--surface))}.mono-tile.c-sky:hover .mono-tile__sym{background:var(--sky)}.mono-tile.c-mint:hover .mono-tile__sym{background:var(--mint)}.mono-tile.c-pink:hover .mono-tile__sym{background:var(--pink)}.mono-tile.c-lav:hover .mono-tile__sym{background:var(--lav)}.mono-tile.c-butter:hover .mono-tile__sym{background:var(--butter)}.mono-tile.c-ink:hover .mono-tile__sym{background:var(--hard);color:#fff}.timeline{position:relative;padding-left:38px}.timeline:before{content:"";position:absolute;left:8px;top:8px;bottom:8px;width:2px;border-left:2px dashed var(--line)}.tl-item{position:relative;margin-bottom:28px}.tl-item:before{content:"";position:absolute;left:-38px;top:26px;width:17px;height:17px;border-radius:50%;background:var(--dotcol,var(--butter))}.tl-card,.tl-item:before{border:2px solid var(--hard)}.tl-card{border-radius:var(--radius);background:var(--surface);box-shadow:5px 5px 0 var(--dotcol,var(--lav));padding:26px 28px}.tl-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.tl-card h4{font-family:var(--display);font-size:24px;margin:0}.tl-when{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;padding:6px 12px;border-radius:999px;border:2px solid var(--hard);background:var(--surface-2);white-space:nowrap}.tl-org{font-family:var(--body);font-style:italic;font-weight:600;color:var(--accent);margin:6px 0 0}.tl-card ul{list-style:none;padding:0;margin:16px 0 0;display:flex;flex-direction:column;gap:10px}.tl-card li{display:flex;gap:11px;color:var(--ink-soft);font-size:15px;line-height:1.55}.tl-card li .mk{color:var(--accent);flex:none}.contact-card{border:2px solid var(--hard);border-radius:var(--radius-lg);background:var(--surface);box-shadow:10px 10px 0 var(--accent);padding:clamp(34px,5vw,64px);text-align:center;position:relative}.contact-card .pill-top{position:absolute;top:-18px;left:50%;transform:translateX(-50%);background:var(--butter);border:2px solid var(--hard);font-family:var(--mono);font-style:italic;font-weight:700;font-size:13px;padding:7px 18px;border-radius:999px;box-shadow:2px 2px 0 var(--hard)}.contact-card h2{font-family:var(--display);font-size:clamp(34px,5vw,58px);margin:12px 0 0}.contact-card h2 .pink{color:var(--accent)}.contact-card .lead{color:var(--ink-soft);font-size:18px;margin:14px auto 0;max-width:44ch}.contact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;max-width:640px;margin:34px auto 0;text-align:left}.cfield{border:2px solid var(--hard);border-radius:14px;background:var(--surface-2);padding:14px 18px;display:flex;flex-direction:column;gap:3px;transition:transform .16s;text-decoration:none}.cfield:hover{transform:translateY(-3px)}.cfield .k{font-style:italic;font-size:12px;color:var(--ink-faint)}.cfield .k,.cfield .v{font-family:var(--mono)}.cfield .v{font-size:14.5px;font-weight:700}.contact-actions{display:flex;gap:14px;justify-content:center;margin-top:32px;flex-wrap:wrap}.contact-card .thanks{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;margin-top:30px}.contact-card .thanks,footer.foot{font-family:var(--mono);color:var(--ink-faint)}footer.foot{text-align:center;padding:40px 0 60px;font-size:12.5px}.modal-scrim{position:fixed;inset:0;background:rgba(20,14,34,.55);backdrop-filter:blur(6px);z-index:80;display:grid;place-items:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .25s}.modal-scrim.open{opacity:1;pointer-events:auto}.modal{background:var(--surface);border:2px solid var(--hard);border-radius:var(--radius-lg);width:min(720px,100%);max-height:88vh;overflow:auto;box-shadow:0 30px 60px -20px rgba(0,0,0,.5);transform:translateY(16px) scale(.98);transition:transform .25s;position:relative;scrollbar-width:none;-ms-overflow-style:none}.modal::-webkit-scrollbar{width:0;height:0;display:none}.modal-scrim.open .modal{transform:none}.carousel{background:var(--surface-2);border-bottom:2px solid var(--hard);padding:8px 8px 0}.carousel__viewport{position:relative;overflow:hidden;border-radius:12px}.carousel__track{display:flex;transition:transform .42s cubic-bezier(.4,0,.2,1)}[data-motion=off] .carousel__track{transition:none}.gshot{position:relative;flex:0 0 100%;aspect-ratio:16/9;overflow:hidden}.gshot__zoom{position:absolute;top:9px;right:9px;z-index:4;width:34px;height:34px;border-radius:999px;border:2px solid var(--hard);background:var(--surface);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:2px 2px 0 var(--hard);opacity:0;transform:translateY(-4px);transition:opacity .16s ease,transform .16s ease,background .16s}.gshot:focus-within .gshot__zoom,.gshot:hover .gshot__zoom{opacity:1;transform:none}.gshot__zoom:hover{background:var(--accent);color:#2b2140}.carousel__arrow{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:999px;border:2px solid var(--hard);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(6px);color:var(--ink);font-size:24px;line-height:1;padding-bottom:3px;cursor:pointer;display:grid;place-items:center;box-shadow:2px 2px 0 var(--hard);transition:background .15s,transform .15s;z-index:5}.carousel__arrow:hover{background:var(--accent);color:#2b2140}.carousel__arrow.prev{left:10px}.carousel__arrow.next{right:10px}.carousel__index{position:absolute;bottom:10px;right:10px;z-index:5;font-family:var(--mono);font-size:12px;font-weight:700;color:#fff;background:rgba(0,0,0,.55);border:1.5px solid rgba(255,255,255,.22);padding:5px 11px;border-radius:999px;letter-spacing:.05em}.carousel__dots{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;padding:12px 8px}.cdot{width:9px;height:9px;border-radius:999px;border:1.5px solid var(--hard);background:transparent;padding:0;cursor:pointer;transition:background .15s,transform .15s,width .2s}.cdot:hover{background:var(--ink-faint)}.cdot.on{background:var(--accent);width:22px}.lightbox{position:fixed;inset:0;z-index:120;background:rgba(10,7,18,.88);backdrop-filter:blur(8px);display:grid;place-items:center;padding:6vmin;animation:lbfade .2s ease}@keyframes lbfade{0%{opacity:0}}.lightbox__img{max-width:92vw;max-height:86vh;border:2px solid var(--hard);border-radius:14px;background:var(--surface);box-shadow:0 36px 90px -24px rgba(0,0,0,.75);animation:lbpop .24s cubic-bezier(.2,.7,.2,1)}@keyframes lbpop{0%{transform:scale(.96);opacity:0}}.lightbox__close{position:fixed;top:20px;right:20px;z-index:2;width:46px;height:46px;border-radius:999px;border:2px solid var(--hard);background:var(--surface);color:var(--ink);font-size:18px;cursor:pointer;display:grid;place-items:center;box-shadow:var(--shadow-soft);transition:background .15s,transform .15s}.lightbox__close:hover{background:var(--surface-2);transform:rotate(90deg)}.lightbox__nav{position:fixed;top:50%;transform:translateY(-50%);width:56px;height:56px;border-radius:999px;border:2px solid var(--hard);background:var(--surface);color:var(--ink);font-size:30px;line-height:1;cursor:pointer;display:grid;place-items:center;box-shadow:var(--shadow-soft);transition:background .15s,transform .15s;padding-bottom:4px}.lightbox__nav:hover{background:var(--accent);color:#2b2140}.lightbox__nav.prev{left:22px}.lightbox__nav.next{right:22px}.lightbox__count{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:13px;font-weight:700;color:#fff;background:rgba(0,0,0,.55);border:1.5px solid rgba(255,255,255,.25);padding:7px 15px;border-radius:999px;letter-spacing:.06em}@media (max-width:600px){.lightbox__nav{width:46px;height:46px;font-size:24px}.lightbox__nav.prev{left:10px}.lightbox__nav.next{right:10px}}.modal__body{padding:30px 34px 38px}.modal__body h3{font-family:var(--display);font-size:36px;margin:0}.modal__body .kind{font-family:var(--mono);font-style:italic;color:var(--accent);margin:6px 0 0}.modal__lbl{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);display:flex;align-items:center;gap:10px;margin:26px 0 12px}.modal__lbl:before{content:"";width:22px;height:2px;background:var(--accent)}.modal__body p{color:var(--ink-soft);line-height:1.65;font-size:15.5px;margin:0}.modal__body p+p{margin-top:1em}.modal__close{position:absolute;top:16px;right:16px;z-index:3}.modal--study{width:min(780px,100%)}.cs-eyebrow{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:var(--ink-soft);margin-bottom:14px}.cs-list{list-style:none;padding:0;margin:0;flex-direction:column}.cs-list,.cs-list li{display:flex;gap:12px}.cs-list li{color:var(--ink-soft);font-size:15.5px;line-height:1.6}.cs-list li .mk{color:var(--accent);flex:none}.cs-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.cs-metric{border:2px solid var(--hard);border-radius:16px;background:var(--surface-2);padding:16px 14px;display:flex;flex-direction:column;gap:6px;text-align:left;box-shadow:3px 3px 0 var(--hard)}.cs-metric__v{font-family:var(--display);font-size:30px;line-height:1;color:var(--ink)}.cs-metric__k{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);line-height:1.35}.cs-foot{margin-top:30px;padding-top:26px;border-top:2px dashed color-mix(in srgb,var(--hard) 45%,transparent);display:flex;flex-direction:column;gap:20px}.cs-foot__cols{display:flex;flex-wrap:wrap;gap:30px}.cs-foot__col{display:flex;flex-direction:column;gap:9px;align-items:flex-start}.cs-foot__k{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.cs-foot__v{font-size:15px;color:var(--ink-soft);font-weight:600}.cs-foot__cta{align-self:flex-start}@media (max-width:560px){.cs-metrics{grid-template-columns:repeat(2,1fr)}}.ph-stripe{background-image:repeating-linear-gradient(45deg,var(--surface-2),var(--surface-2) 10px,color-mix(in srgb,var(--accent) 16%,var(--surface-2)) 10px,color-mix(in srgb,var(--accent) 16%,var(--surface-2)) 20px);display:grid;place-items:center}.ph-stripe span{font-family:var(--mono);font-size:12px;color:var(--ink-soft);background:var(--surface);padding:6px 12px;border-radius:999px;border:1.5px solid var(--line);text-align:center}.img-skeleton.is-loading{background:var(--surface-2);overflow:hidden}.img-skeleton.is-loading:before{content:"";position:absolute;top:50%;left:50%;width:300%;height:300%;transform:translate(-50%,-50%) rotate(45deg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='16'%3E%3Cpath d='M0 8 Q10 1 20 8 T40 8' fill='none' stroke='%23d76a93' stroke-opacity='0.45' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-size:40px 16px;animation:hairflow 1.1s linear infinite}[data-theme=dark] .img-skeleton.is-loading:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='16'%3E%3Cpath d='M0 8 Q10 1 20 8 T40 8' fill='none' stroke='%23cabce6' stroke-opacity='0.32' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E")}@keyframes hairflow{to{background-position:40px 0}}@media (prefers-reduced-motion:reduce){.img-skeleton.is-loading:before{animation:none}}.hero-stage{position:relative;height:460px}.obj-card{position:absolute;inset:0;border:2px solid var(--hard);border-radius:var(--radius-lg);background:var(--surface);box-shadow:10px 10px 0 var(--accent);overflow:hidden;transition:transform .25s ease;transform:perspective(900px);transform-style:preserve-3d}.code-head{display:flex;align-items:center;gap:8px;padding:13px 16px;border-bottom:2px solid var(--hard);background:var(--surface-2)}.code-head .dots{display:flex;gap:6px}.code-head .dots i{width:11px;height:11px;border-radius:50%;display:block;border:1.5px solid rgba(0,0,0,.22)}.code-head .fn{font-family:var(--mono);font-size:12.5px;color:var(--ink-soft);margin-left:6px}.code-head .caret-tag{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-faint)}.code-body{padding:24px 22px;font-family:var(--mono);font-size:14.5px;line-height:1.75}.code-body .ln{display:block;min-height:1.75em}.tok-key{color:var(--lav-deep);font-weight:700}.tok-str{color:var(--mint-deep)}.tok-num{color:var(--sky-deep)}.tok-bool{color:var(--pink-deep);font-weight:700}.tok-com{color:var(--ink-faint);font-style:italic}.tok-fn{color:var(--accent);font-weight:700}.tok-prop{color:var(--ink)}.tok-punc{color:var(--ink-soft)}.caret{display:inline-block;width:8px;height:17px;background:var(--accent);vertical-align:-3px;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.code-status{position:absolute;left:0;right:0;bottom:0;display:flex;gap:10px;align-items:center;padding:11px 16px;border-top:2px solid var(--hard);background:var(--surface-2);font-family:var(--mono);font-size:12px;color:var(--ink-soft)}.code-status .ok{color:var(--mint-deep);font-weight:700}@media (max-width:940px){.hero-stage{height:400px}.obj-card{box-shadow:7px 7px 0 var(--accent)}.contact-grid,.featured,.hero__grid,.proj-grid,.tile-grid{grid-template-columns:1fr}.feat-list{gap:64px}.feat-row--rev .browser,.feat-row--rev .feat-copy{order:0}.mono-grid,.tile-grid{grid-template-columns:repeat(2,1fr)}.collage{order:-1}.hero{padding-top:128px}}@media (max-width:880px){:root{--nav-h:24px}.hero{padding-top:56px}}@media (max-width:600px){:root{--section-pad:76px}.container{padding-left:18px;padding-right:18px}.nav{padding:7px;gap:6px}.section-head{margin-bottom:36px}.skills-card{padding:26px 20px}.tl-card{padding:22px 20px}.modal__body{padding:24px 22px 30px}.hero__sub{max-width:none}.hero{padding-top:40px;padding-bottom:56px}.hero-stage{height:300px}.code-body{padding:18px 16px;font-size:13px;line-height:1.6}.code-head,.code-status{padding:10px 14px}.collage .sticker,.collage .washi{display:none}}@media (max-width:380px){.tile-grid{grid-template-columns:1fr}.nav__cta{padding:9px 12px}.hero-stage{height:264px}.hero h1{font-size:38px}.code-body{font-size:12px}}