@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sora-latin-600-normal-Cdg4DaK0.woff2) format("woff2"),url(/assets/sora-latin-600-normal-1_7fyUAY.woff) format("woff")}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sora-latin-700-normal-9waGdLWo.woff2) format("woff2"),url(/assets/sora-latin-700-normal-BKPfQAnC.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2) format("woff2"),url(/assets/space-grotesk-latin-400-normal-BnQMeOim.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2) format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2) format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff")}:root{font-family:Space Grotesk,sans-serif;color:#172a43;background:#f5faff;color-scheme:light;font-synthesis:none;--ink:#172a43;--blue:#2454c6;--teal:#126e78;--muted:#4d6582;--line:#c4d8ee}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:78px;scrollbar-color:#bbcee7 #f5faff}body{margin:0;min-width:280px;font-size:17px;line-height:1.65}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}h1,h2,h3,p{margin-top:0}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--blue);outline-offset:5px}::selection{background:var(--blue);color:#fff}svg{flex-shrink:0}.narrative-portfolio{overflow-x:clip;background:linear-gradient(180deg,#f7fbff,#e7f3ff 44%,#f7fbff 72%,#dfedff)}.story-skip{position:fixed;top:-100px;left:15px;z-index:50;background:var(--blue);color:#fff;padding:10px 15px}.story-skip:focus{top:10px}.story-header{display:flex;align-items:center;gap:25px;padding:14px max(5vw,24px);min-height:76px;background:#f5faffed;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0;z-index:20;border-bottom:1px solid #c5daf080}.story-name{font:700 23px Sora,sans-serif;letter-spacing:-.035em}.story-header nav{display:flex;gap:27px;margin-left:auto;font-size:14px}.story-header nav a{min-height:44px;display:flex;align-items:center;gap:8px}.story-header a:hover{color:var(--blue)}.story-pause{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--teal)}.story-pause:disabled{opacity:.4;cursor:default}main{position:relative}.story-ribbon{position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.35;overflow:hidden}.story-ribbon svg{width:100%;height:100%;display:block}.story-ribbon path{fill:none;stroke-linecap:round}.ribbon-shell{stroke:#b4d2f0;stroke-width:19}.ribbon-trace{stroke:#2474d7;stroke-width:5;stroke-dasharray:1;transition:stroke-dashoffset .15s linear}.story-intro,.story-chapter,.story-projects,.story-contact{position:relative;z-index:1}.story-intro{display:grid;grid-template-columns:49% 51%;align-items:center;padding:36px 5vw 30px;min-height:650px;background:radial-gradient(ellipse at 79% 41%,#deeeffbd,transparent 64%)}.story-intro h1{font:700 clamp(72px,8.1vw,126px)/.99 Sora,sans-serif;color:var(--blue);letter-spacing:-.04em;margin-bottom:24px}.story-role{font-size:26px;font-weight:600;margin-bottom:7px;line-height:1.3}.story-lead{font-size:19px;max-width:33ch;margin-bottom:25px}.story-scroll{display:inline-flex;align-items:center;gap:12px;min-height:44px;font-size:13px;color:var(--muted)}.story-scroll>span{border:1px solid #859bc1;border-radius:50%;width:43px;height:43px;display:grid;place-items:center}.story-scroll:hover{color:var(--blue)}.narrative-world{position:relative;min-width:0;height:470px;isolation:isolate}.world-haze{position:absolute;inset:4%;background:radial-gradient(ellipse,#bedfee80,transparent 66%);pointer-events:none}.developer-scene{position:absolute;inset:-6% -8%;z-index:1}.developer-scene canvas{display:block;width:100%;height:100%;touch-action:pan-y}.narrative-world[data-ready=false] .developer-scene{visibility:hidden}.narrative-fallback{width:100%;height:100%;position:absolute;inset:0}.overview-world{height:560px}.narrative-world-labels{position:absolute;inset:0;pointer-events:none;z-index:2}.narrative-world-labels span{position:absolute;background:#f6fbfff0;border:1px solid #dce9f8;border-radius:5px;padding:3px 9px;font-weight:500;font-size:12px;color:var(--ink);box-shadow:0 5px 12px #405b7c06;white-space:nowrap}.label-0{left:13%;top:13%}.label-1{left:47%;top:24%}.label-2{right:3%;top:17%}.label-3{right:4%;bottom:15%}.overview-world .label-0{left:12%;top:26%}.overview-world .label-1{left:43%;top:8%}.overview-world .label-2{left:42%;top:52%}.overview-world .label-3{right:1%;bottom:23%}.story-rail{position:fixed;left:19px;top:42vh;z-index:10;display:flex;flex-direction:column;gap:18px;color:var(--blue)}.story-rail a{display:flex;align-items:center;gap:7px;min-width:30px;min-height:25px;font:11px JetBrains Mono,monospace;opacity:.45}.story-rail a[aria-current]{opacity:1}.story-rail i{width:5px;height:5px;border-radius:50%;background:var(--blue)}.rail-label{display:none}.story-rail a:hover .rail-label{display:block;background:#f7fbff;padding:2px 6px}.story-chapter{display:grid;grid-template-columns:45% 55%;align-items:center;min-height:570px;padding:35px 6vw 35px 8vw;background:linear-gradient(110deg,#f5faffd9,#e4f1ff30)}.chapter-copy{max-width:600px}.chapter-copy h2,.projects-heading h2{font:700 clamp(42px,4.6vw,68px)/1.1 Sora,sans-serif;letter-spacing:-.035em;margin-bottom:23px;text-wrap:balance}.chapter-copy>p{max-width:42ch;font-size:18px;margin-bottom:22px}.chapter-copy .chapter-note{font-size:13px;color:var(--muted);max-width:50ch;margin-top:28px}.chapter-design{grid-template-columns:55% 45%;background:linear-gradient(120deg,#d8ecff90,#f8fbff70);padding-left:5vw;padding-right:6vw}.chapter-design .chapter-copy{padding-left:40px}.story-projects{padding:52px 6vw 55px 8vw;min-height:770px;background:linear-gradient(140deg,#e3f1ffb0,#f5faff70)}.projects-heading{position:relative;z-index:2;max-width:42%;padding-top:8px}.projects-heading p{font-size:19px}.story-projects>.narrative-world{position:absolute;right:4vw;top:20px;width:66%;height:400px}.story-projects .narrative-world-labels .label-0{left:3%;top:13%}.story-projects .narrative-world-labels .label-1{left:39%;top:7%}.story-projects .narrative-world-labels .label-2{right:0;top:16%}.story-case-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-top:166px;position:relative;z-index:3}.story-case-index article{border-left:1px solid var(--line);padding-left:22px}.story-case-index h3{font:600 22px/1.35 Sora,sans-serif;letter-spacing:-.025em;max-width:25ch;margin-bottom:10px}.story-case-index .case-stack{color:var(--blue);font:12px/1.8 JetBrains Mono,monospace;margin-bottom:12px}.story-case-index p{font-size:16px;max-width:32ch;color:var(--muted);margin-bottom:12px}.story-case-index button{display:inline-flex;align-items:center;gap:12px;color:var(--blue);background:transparent;border:0;border-bottom:1px solid var(--blue);padding:7px 0;min-height:44px;font-size:15px}.story-case-index button:hover{color:var(--teal)}.chapter-production{grid-template-columns:51% 49%;background:linear-gradient(120deg,#f7fbffcc,#d9ecff60);padding-top:62px;padding-bottom:65px;min-height:670px}.chapter-production h2{font-size:clamp(39px,4vw,60px)}.chapter-production .chapter-copy{max-width:650px}.chapter-production>.narrative-world{height:510px}.story-skills{border:1px solid var(--line);border-radius:12px;background:#f9fcffb0;overflow:hidden;margin-top:26px}.story-skills details+details{border-top:1px solid var(--line)}.story-skills summary{list-style:none;display:grid;grid-template-columns:160px 1fr 16px;gap:13px;align-items:center;min-height:58px;padding:12px 15px;cursor:pointer;font-size:13px}.story-skills summary::-webkit-details-marker{display:none}.story-skills summary>span:first-child{font-weight:600;color:var(--ink)}.story-skills summary>span:nth-child(2){font-size:11px;color:var(--muted)}.story-skills details[open] summary{color:var(--blue)}.story-skills details[open] summary svg{rotate:180deg}.story-skills details p{padding:0 16px;color:var(--muted);font-size:15px;max-width:60ch;margin-bottom:16px}.story-skills .skills-tools{color:var(--teal);font-size:12px}.story-contact{background:linear-gradient(115deg,#d8eaff,#ecf6ffb0);padding:64px 8vw 40px;min-height:355px}.story-contact h2{font:700 clamp(46px,5.5vw,80px)/1.1 Sora,sans-serif;letter-spacing:-.035em;color:var(--blue);margin-bottom:11px}.story-contact>p{font-size:18px}.story-contact-actions{display:flex;gap:18px;flex-wrap:wrap;margin:24px 0}.story-contact-actions a{display:flex;align-items:center;gap:13px;border:1px solid var(--blue);background:#f7fbffc0;border-radius:8px;min-height:58px;padding:12px 20px;color:var(--blue);font-weight:500;overflow-wrap:anywhere}.story-contact-actions a:hover{background:#fff}.story-bio{max-width:850px;margin:17px 0 25px}.story-bio summary{list-style:none;display:inline-flex;gap:22px;align-items:center;min-height:44px;padding:5px 0;color:var(--blue);font-size:15px;cursor:pointer}.story-bio summary::-webkit-details-marker{display:none}.story-bio[open] summary svg{rotate:180deg}.story-bio>div{max-width:65ch;padding:18px 0;color:var(--muted)}.story-contact .contact-location{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin-top:22px}.atlas-technologies{list-style:none;padding:0;display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.atlas-technologies li{color:var(--teal);font-size:12px;border:1px solid var(--line);border-radius:18px;padding:4px 10px}.atlas-text-action{color:var(--blue);min-height:44px;display:inline-flex;align-items:center;gap:10px}.case-dialog{border:1px solid var(--line);background:#f8fbff;color:var(--ink);border-radius:18px;width:min(760px,calc(100% - 32px));max-height:85svh;padding:46px;box-shadow:0 22px 80px #172a4330}.case-dialog::backdrop{background:#1b385970;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.dialog-close{position:absolute;right:15px;top:15px;width:44px;height:44px;border:0;border-radius:50%;background:#e7f0fa;color:var(--ink);display:grid;place-items:center}.case-dialog h2{font:600 34px/1.2 Sora,sans-serif;letter-spacing:-.025em;margin-bottom:14px}.case-description{font-size:20px}.case-dialog p{color:var(--muted);max-width:65ch}.case-dialog h3{font-size:21px;margin-top:30px;margin-bottom:12px}.case-dialog section{border-top:1px solid var(--line);margin-top:25px}@media(max-width:1050px){.story-intro{min-height:590px}.story-intro h1{font-size:clamp(66px,9vw,95px)}.story-name{font-size:20px}.story-header nav{gap:18px;font-size:13px}.story-rail{left:8px}.narrative-world{height:390px}.overview-world{height:460px}.story-chapter{min-height:510px}.chapter-copy h2,.projects-heading h2{font-size:46px}.chapter-copy>p{font-size:17px}.story-case-index{gap:20px;margin-top:120px}.story-case-index h3{font-size:19px}.story-projects{min-height:720px}.story-projects>.narrative-world{width:63%;height:360px}.story-skills summary{grid-template-columns:130px 1fr 15px;gap:8px;padding:12px 10px}.story-skills summary>span:nth-child(2){font-size:10px}.chapter-production h2{font-size:42px}.chapter-production>.narrative-world{height:410px}}@media(max-width:700px){html{scroll-padding-top:105px}.story-header{gap:9px;flex-wrap:wrap;padding:10px 20px;min-height:97px}.story-name{font-size:19px}.story-pause{margin-left:auto;width:36px;height:36px}.story-header nav{order:3;width:100%;margin:0;justify-content:space-between;gap:8px;font-size:12px}.story-header nav a{min-height:35px}.story-intro{display:flex;flex-direction:column;padding:30px 24px 22px;min-height:0}.story-intro-copy{width:100%}.story-intro h1{font-size:clamp(52px,13vw,86px);margin-bottom:19px}.story-role{font-size:21px}.story-lead{font-size:16px;max-width:31ch;margin-bottom:18px}.story-scroll{font-size:12px}.overview-world{width:100%;height:340px;margin-top:10px}.developer-scene{inset:0 -3%}.story-ribbon{opacity:.19}.story-rail{display:none}.story-chapter{display:flex;flex-direction:column;align-items:stretch;padding:36px 24px 22px;min-height:0}.chapter-copy{width:100%;max-width:none}.chapter-copy h2,.projects-heading h2{font-size:clamp(37px,9vw,50px);margin-bottom:18px;line-height:1.1}.chapter-copy>p{font-size:16px;max-width:40ch}.chapter-copy .chapter-note{font-size:12px;margin-top:17px}.narrative-world{height:315px;width:100%;margin-top:3px}.chapter-design{flex-direction:column-reverse}.chapter-design .chapter-copy{padding:0}.story-projects{padding:38px 24px 32px;min-height:0}.projects-heading{max-width:100%}.projects-heading p{font-size:17px}.story-projects>.narrative-world{position:relative;top:auto;right:auto;width:100%;height:270px;margin:10px 0 22px}.story-case-index{grid-template-columns:1fr;margin:0;gap:22px}.story-case-index article{padding-left:0;border-left:0;border-top:1px solid var(--line);padding-top:20px}.story-case-index h3{font-size:22px;max-width:29ch}.story-case-index p{max-width:42ch}.chapter-production h2{font-size:clamp(34px,8.7vw,45px)}.story-skills{margin-top:20px}.story-skills summary{grid-template-columns:1fr 16px;padding:13px 12px;min-height:65px}.story-skills summary>span:nth-child(2){grid-row:2;grid-column:1;font-size:11px}.story-skills summary svg{grid-column:2;grid-row:1/3}.chapter-production>.narrative-world{height:340px;margin-top:19px}.story-contact{padding:38px 24px 30px;min-height:0}.story-contact h2{font-size:clamp(38px,9.4vw,52px)}.story-contact>p{font-size:16px}.story-contact-actions{gap:12px}.story-contact-actions a{font-size:14px;min-height:52px;padding:11px 12px;gap:8px}.story-contact-actions a:first-child{width:100%;justify-content:space-between}.story-contact .contact-location{font-size:11px;flex-wrap:wrap}.narrative-world-labels span{font-size:10px;padding:2px 6px}.case-dialog{padding:46px 23px 25px}.case-dialog h2{font-size:27px}.case-description{font-size:18px}}@media(max-width:350px){.story-intro h1{font-size:49px}.story-name{font-size:17px}.story-intro,.story-chapter,.story-projects,.story-contact{padding-inline:20px}.story-contact-actions a{font-size:12px}.story-header nav{font-size:11px}.overview-world{height:285px}.narrative-world{height:280px}}.overview-world .label-2{right:auto}.story-pause{width:44px;height:44px}.phase-3 .narrative-world-labels .label-2{color:#25765f;background:#edf9f5;border-color:#c3e5db}@media(min-width:701px)and (max-width:1050px){.story-intro h1{font-size:clamp(54px,7.4vw,80px)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.ribbon-trace{stroke-dashoffset:0!important}}:root{color-scheme:dark;background:#0b1220;color:#e7eef9;--ink:#e7eef9;--blue:#78b7ff;--teal:#62d9c7;--muted:#a6b8cf;--line:#2b405c;--canvas:#0b1220;--story-header-height:76px}body{background:var(--canvas);line-height:1.7}html{scrollbar-color:#3d5574 #0b1220}::selection{color:#0b1220;background:var(--blue)}.narrative-portfolio{background:#0b1220}.story-header{background:#0b1220f2;border-color:#243951}.story-pause{color:var(--teal);border-color:var(--line)}.story-ribbon{opacity:.12}.ribbon-shell{stroke:#3d688f}.ribbon-trace{stroke:#78b7ff}.story-rail a:hover .rail-label{background:#122239;color:var(--ink)}.scroll-chapter{position:relative;height:180svh;--chapter-entry:1;--chapter-progress:0;scroll-margin-top:var(--story-header-height)}.scroll-chapter>.scroll-frame{position:sticky;top:var(--story-header-height);height:calc(100svh - var(--story-header-height));min-height:0;max-height:calc(100svh - var(--story-header-height));overflow-y:auto;scrollbar-width:thin;align-content:center;overscroll-behavior-y:auto;padding-block:38px}.story-intro,.story-chapter,.story-projects,.story-contact{background:transparent}.chapter-analysis{background:radial-gradient(ellipse at 78% 45%,#112b3d,transparent 68%),#0b1220}.chapter-design{background:linear-gradient(130deg,#0e2435,#0b1424)}.story-projects{background:radial-gradient(ellipse at 65% 43%,#14253e,transparent 68%),#0b1220}.chapter-production{background:linear-gradient(135deg,#101f33,#0b1422)}.story-contact{background:radial-gradient(ellipse at 78% 65%,#12283e,transparent 65%),#0b1220}.story-intro h1{color:var(--blue)}.story-intro .story-role{color:var(--ink)}.story-lead,.chapter-copy>p,.projects-heading>p{color:var(--muted)}.story-scroll>span{border-color:#587591}.chapter-copy h2,.projects-heading h2{color:var(--ink)}.scroll-frame>.chapter-copy,.scroll-frame>.story-intro-copy,.scroll-frame>.projects-heading,.scroll-frame>.story-case-index{opacity:calc(.15 + var(--chapter-entry)*.85);transform:translateY(calc((1 - var(--chapter-entry))*28px));filter:blur(calc((1 - var(--chapter-entry))*2px))}.narrative-world.diagram-world{height:min(53svh,460px);min-width:0;margin:0;position:relative;align-self:center;opacity:calc(.3 + var(--chapter-entry)*.7)}.overview-world.diagram-world{height:min(64svh,550px)}.process-diagram{width:100%;height:100%;display:block;overflow:visible}.diagram-grid{stroke:#263b522e;stroke-width:1}.diagram-unit rect{fill:#142438;stroke:#365775;stroke-width:1.3}.diagram-title{fill:var(--ink);font:500 17px Space Grotesk,sans-serif}.diagram-sub{fill:#a6b8cf;font:12px Space Grotesk,sans-serif}.diagram-core rect,.diagram-core circle{fill:#142b3c;stroke:var(--teal);stroke-width:1.5}.diagram-core text{fill:var(--teal);font:500 20px Space Grotesk,sans-serif}.diagram-core .diagram-sub{font-size:13px;fill:#b1c9d8}.diagram-flow{fill:none;stroke:var(--blue);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--chapter-progress));filter:drop-shadow(0 2px 6px #487bba20)}.diagram-secondary{fill:none;stroke:#3d6586;stroke-width:1;stroke-dasharray:4 5}.diagram-unit{opacity:calc(.5 + var(--chapter-progress)*.5);transform:translateY(calc((1 - var(--chapter-progress))*10px))}.diagram-check{fill:none;stroke:var(--teal);stroke-width:2}.diagram-browser>rect:first-child,.diagram-editor>rect:first-child{stroke:#3b6585;stroke-width:1.4}.diagram-browser path,.diagram-editor path{stroke:#355270;stroke-width:1.2;fill:none}.diagram-browser rect:not(:first-child){fill:#213d54;stroke:#456984}.diagram-browser circle{fill:var(--teal)}.diagram-database{fill:#122b3d;stroke:#62d9c7;stroke-width:1.5}.diagram-database text{stroke:none;fill:var(--ink);font:16px Space Grotesk,sans-serif}.diagram-caption{fill:var(--muted);font:14px Space Grotesk,sans-serif}.diagram-code-line text{fill:var(--teal);font:12px JetBrains Mono,monospace}.diagram-code-line{opacity:clamp(.12,calc(var(--chapter-progress)*6 - var(--line-order)),1)}.diagram-servers path{fill:none;stroke:#48718d;stroke-width:2}.diagram-servers circle{fill:var(--teal)}.diagram-success rect{fill:#123930;stroke:#4de0a9;stroke-width:1.4}.diagram-success path{fill:none;stroke:#74ebbd;stroke-width:2.5}.diagram-success text{fill:#a8f5d5;font:500 20px Space Grotesk,sans-serif}.chapter-scrub{position:absolute;bottom:9px;left:8vw;right:8vw;height:2px;background:#263b52;pointer-events:none}.chapter-scrub i{display:block;width:100%;height:100%;background:var(--teal);transform:scaleX(var(--chapter-progress));transform-origin:left}.scroll-frame.story-projects{display:grid;grid-template-columns:42% 58%;grid-template-rows:auto auto;gap:12px 0;align-items:center}.story-projects .projects-heading{max-width:none;padding:0}.story-projects>.narrative-world{position:relative;top:auto;right:auto;width:100%;height:min(35svh,300px)}.story-case-index{grid-column:1/-1;margin-top:18px;gap:28px}.story-case-index article{border-color:var(--line)}.story-case-index h3{color:var(--ink);font-size:20px}.story-case-index button{color:var(--blue)}.story-case-index .case-stack{color:var(--teal)}.story-case-index p{color:var(--muted)}.case-carousel-note{display:none}.story-skills{background:#111f31;border-color:var(--line)}.story-skills summary>span:first-child{color:var(--ink)}.story-skills details p{color:var(--muted)}.story-skills .skills-tools{color:var(--teal)}.chapter-production .narrative-world{height:min(49svh,460px)}.scroll-frame.story-contact{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding-block:38px}.story-contact h2{color:var(--blue);margin-bottom:22px}.story-contact-actions{margin:0 0 23px}.story-contact-actions a{background:#132238;border-color:#416c9a;color:var(--blue)}.story-contact-actions a:hover{background:#1c3350}.story-bio{width:min(750px,100%);margin:10px 0 20px;background:#12243a;border:1px solid #365c7c;border-radius:12px}.story-bio summary{display:flex;justify-content:space-between;width:100%;padding:21px 24px;min-height:82px;font-size:24px;font-weight:600;color:var(--ink);gap:20px}.story-bio summary small{display:block;font-size:13px;color:var(--muted);font-weight:400;margin-top:3px}.story-bio summary:hover{color:var(--teal)}.story-bio>div{padding:10px 24px 24px;max-width:70ch}.story-bio p{color:var(--muted)}.story-contact .contact-location{color:var(--muted);margin-top:3px}.case-dialog{background:#101f32;color:var(--ink);border-color:var(--line)}.case-dialog::backdrop{background:#030812bd}.case-dialog h2,.case-dialog h3{color:var(--ink)}.case-dialog p{color:var(--muted)}.dialog-close{background:#203b55;color:var(--ink)}.atlas-technologies li{color:var(--teal);border-color:var(--line)}.atlas-text-action{color:var(--blue)}@media(max-width:1050px){.scroll-chapter>.scroll-frame{padding-block:30px}.chapter-copy h2,.projects-heading h2{font-size:clamp(35px,4.6vw,50px)}.story-case-index h3{font-size:18px}.story-case-index p{font-size:14px}.story-case-index .case-stack{font-size:11px}.story-case-index{gap:18px}.story-skills summary{min-height:50px}}@media(max-width:700px){:root{--story-header-height:102px}.scroll-chapter{height:165svh}.scroll-chapter>.scroll-frame{padding:23px 24px;display:flex;flex-direction:column;justify-content:center;gap:14px}.scroll-frame.story-intro{align-items:stretch}.story-intro h1{font-size:clamp(44px,11vw,68px);line-height:1;max-width:100%;margin-bottom:15px}.story-role{font-size:18px}.story-lead{font-size:15px;margin-bottom:14px}.story-scroll{font-size:12px}.story-scroll>span{width:36px;height:36px}.narrative-world.diagram-world{height:min(29svh,245px);width:100%;flex-shrink:0}.overview-world.diagram-world{height:min(31svh,260px)}.chapter-design.scroll-frame{flex-direction:column-reverse}.chapter-copy h2,.projects-heading h2{font-size:clamp(32px,8vw,45px);line-height:1.12;margin-bottom:15px}.chapter-copy>p{font-size:15px;margin-bottom:12px}.chapter-copy .chapter-note{font-size:12px;margin-top:12px}.scroll-frame.story-projects{display:flex;align-items:stretch;gap:10px}.story-projects>.narrative-world{height:170px;flex-shrink:0}.projects-heading p{font-size:15px;margin-bottom:6px}.story-case-index{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:22px;padding:0 0 12px;margin:0;flex-shrink:0}.story-case-index article{min-width:88%;scroll-snap-align:start;border:0;border-top:1px solid var(--line);padding:13px 0 0}.story-case-index h3{font-size:18px;line-height:1.25;max-width:25ch;margin-bottom:5px}.story-case-index p{font-size:13px;max-width:34ch;margin-bottom:6px}.story-case-index .case-stack{font-size:10px;margin-bottom:6px}.story-case-index button{font-size:13px;min-height:40px;padding-block:6px}.case-carousel-note{display:block;margin:0;color:var(--muted);font-size:11px}.chapter-production .narrative-world{height:155px}.chapter-production h2{font-size:31px}.chapter-production .chapter-copy>p{font-size:14px}.story-skills{margin-top:10px}.story-skills summary{min-height:43px;padding:8px 11px;grid-template-columns:1fr 16px}.story-skills summary>span:first-child{font-size:12px}.story-skills summary>span:nth-child(2){font-size:10px}.story-skills details p{font-size:13px}.scroll-frame.story-contact{align-items:stretch;gap:0}.story-contact h2{font-size:clamp(34px,9vw,52px)}.story-contact-actions{gap:11px}.story-contact-actions a{font-size:13px;padding:10px 12px;min-height:48px}.story-bio{margin-top:10px}.story-bio summary{font-size:22px;padding:18px;min-height:80px}.story-bio summary small{font-size:11px;max-width:24ch}.story-bio>div{padding:4px 18px 18px;font-size:15px}.chapter-scrub{left:24px;right:24px}.story-header nav a{font-size:12px}.story-header .story-name{font-size:18px}}@media(max-width:350px){.scroll-chapter>.scroll-frame{padding-inline:20px}.story-intro h1{font-size:43px}.story-header nav a{font-size:11px}.story-contact-actions a{font-size:12px}.story-projects>.narrative-world{height:140px}.chapter-production .narrative-world{height:125px}}.motion-paused .scroll-chapter{height:auto}.motion-paused .scroll-chapter>.scroll-frame{position:relative;top:auto;height:auto;min-height:calc(100svh - var(--story-header-height));max-height:none;overflow:visible}.motion-paused .diagram-flow{stroke-dashoffset:0}.motion-paused .diagram-unit,.motion-paused .diagram-code-line{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.scroll-chapter{height:auto}.scroll-chapter>.scroll-frame{position:relative;top:auto;height:auto;min-height:calc(100svh - var(--story-header-height));max-height:none;overflow:visible}.diagram-flow{stroke-dashoffset:0}.diagram-unit,.diagram-code-line{opacity:1;transform:none}.scroll-frame>.chapter-copy,.scroll-frame>.story-intro-copy,.scroll-frame>.projects-heading,.scroll-frame>.story-case-index{opacity:1;filter:none;transform:none}}.scroll-chapter>.scroll-frame{align-content:safe center}.scroll-frame.story-contact{justify-content:safe center}@media(max-width:700px){.scroll-chapter>.scroll-frame{justify-content:safe center}}.scroll-frame:has(details[open])>.chapter-scrub{display:none}:root{--canvas:#111311;--ink:#f3f4e9;--blue:#f0e34f;--teal:#a1dad1;--muted:#b6beb4;--line:#454d40;color:#f3f4e9;background:#111311}html,body,.narrative-portfolio{background:var(--canvas);scrollbar-color:#777650 #111311}::selection{background:var(--blue);color:var(--canvas)}.story-header{background:#111311f5;border-color:#353b31}.story-header .story-name{color:var(--ink)}.story-header a{color:var(--muted)}.story-header a:hover,.story-pause{color:var(--blue)}.narrative-portfolio main{height:900svh}.story-stage{position:sticky;top:var(--story-header-height);height:calc(100svh - var(--story-header-height));isolation:isolate;overflow:hidden;background:var(--canvas)}.process-backdrop{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.story-ribbon{display:none}.story-stage>.scroll-chapter{position:absolute;inset:0;height:100%;opacity:var(--scene-opacity,0);transform:scale(var(--scene-scale,1));transform-origin:65% 50%;pointer-events:none;scroll-margin-top:0;z-index:1}.story-stage>.scroll-chapter:first-of-type{--scene-opacity:1}.story-stage>.scroll-chapter:not([inert]){pointer-events:auto;z-index:2}.story-stage>.scroll-chapter>.scroll-frame{position:absolute;inset:0;height:100%;max-height:100%;width:100%;background:transparent;scrollbar-color:#777650 transparent}.scroll-frame>.chapter-copy,.scroll-frame>.story-intro-copy,.scroll-frame>.projects-heading,.scroll-frame>.story-case-index{opacity:1;transform:none;filter:none}.story-intro h1,.story-contact h2,.story-rail{color:var(--blue)}.story-rail i{background:var(--blue)}.story-rail a:hover .rail-label{background:#23291e;color:var(--ink)}.diagram-unit rect{fill:#1d241d;stroke:#55634b}.diagram-title{fill:var(--ink)}.diagram-sub,.diagram-caption{fill:var(--muted)}.diagram-grid{stroke:#a9bc7312}.diagram-core rect,.diagram-core circle{fill:#262d1b;stroke:var(--blue)}.diagram-core text{fill:var(--blue)}.diagram-core .diagram-sub{fill:#d0d6b6}.diagram-flow{stroke:var(--blue);filter:none}.diagram-secondary{stroke:#737b50}.diagram-browser>rect:first-child,.diagram-editor>rect:first-child{fill:#1a231f;stroke:#64765e}.diagram-browser path,.diagram-editor path{stroke:#526c60}.diagram-browser rect:not(:first-child){fill:#293d31;stroke:#647b6d}.diagram-database{fill:#1c322d;stroke:var(--teal)}.diagram-database text{fill:var(--ink)}.diagram-code-line text{fill:var(--teal)}.diagram-check{stroke:var(--blue)}.diagram-servers path{stroke:#667e6d}.chapter-scrub{background:#414839}.chapter-scrub i{background:var(--blue)}.story-skills{background:#1c231b}.story-contact-actions a{background:#23291a;color:var(--blue);border-color:#8d8843}.story-contact-actions a:hover{background:#343a20}.story-bio{background:#20261c;border-color:#606a48}.story-bio summary{color:var(--ink)}.story-bio summary:hover{color:var(--blue)}.case-dialog{background:#1b221b;border-color:var(--line)}.dialog-close{background:#343e2d;color:var(--ink)}.case-dialog::backdrop{background:#080b08c9}.story-skip{color:#111311}.story-scroll>span{border-color:#8a936e}.motion-paused main{height:auto}.motion-paused .story-stage{position:relative;top:auto;height:auto;overflow:visible}.motion-paused .process-backdrop{display:none}.motion-paused .story-stage>.scroll-chapter{position:relative;inset:auto;height:auto;opacity:1;transform:none;pointer-events:auto}.motion-paused .story-stage>.scroll-chapter>.scroll-frame{position:relative;inset:auto;height:auto;max-height:none;min-height:calc(100svh - var(--story-header-height));overflow:visible}.motion-paused .chapter-scrub{display:none}.motion-paused .narrative-world{opacity:1}@media(prefers-reduced-motion:reduce){.narrative-portfolio main{height:auto}.story-stage{position:relative;top:auto;height:auto;overflow:visible}.process-backdrop{display:none}.story-stage>.scroll-chapter{position:relative;inset:auto;height:auto;opacity:1;transform:none;pointer-events:auto}.story-stage>.scroll-chapter>.scroll-frame{position:relative;inset:auto;height:auto;max-height:none;min-height:calc(100svh - var(--story-header-height));overflow:visible}.chapter-scrub{display:none}}.story-stage>.scroll-chapter{transform:none}.story-stage>.scroll-chapter{opacity:1;transform:translateY(var(--scene-shift,100%));will-change:transform}.story-stage>.scroll-chapter[data-chapter="0"]{--scene-shift:0%}.diagram-unit,.diagram-code-line{opacity:1;transform:none}.motion-paused .story-stage>.scroll-chapter{transform:none;will-change:auto}@media(prefers-reduced-motion:reduce){.story-stage>.scroll-chapter{transform:none;will-change:auto}}.narrative-portfolio:not(.motion-paused) main{height:1050svh}.story-journey{grid-template-columns:42% 58%;gap:30px}.story-journey .journey-copy,.story-journey .journey-copy p{max-width:65ch}@media(max-width:700px){.story-journey .journey-copy p{font-size:15px;line-height:1.7}}@media(prefers-reduced-motion:reduce){.narrative-portfolio:not(.motion-paused) main{height:auto}}.diagram-unit>rect,.diagram-core>rect,.diagram-core>circle,.diagram-browser>rect:first-child,.diagram-editor>rect:first-child,.diagram-success>rect{stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--chapter-progress))}@media(prefers-reduced-motion:reduce){.diagram-unit>rect,.diagram-core>rect,.diagram-core>circle,.diagram-browser>rect:first-child,.diagram-editor>rect:first-child,.diagram-success>rect{stroke-dashoffset:0}}.project-circuit{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:#111311;color:var(--ink);overflow:hidden}.project-circuit::backdrop{background:#111311}.project-circuit[open]{animation:project-unfold .85s cubic-bezier(.16,1,.3,1) both}.project-shell{height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#777650 #111311}.project-opening-pulse{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3;animation:project-pulse-clear 1.1s ease both}.project-opening-pulse path{fill:none;stroke:#f0e34f;stroke-width:2;stroke-dasharray:1;stroke-dashoffset:1;animation:project-trace .8s cubic-bezier(.2,.7,.3,1) both}.project-opening-pulse path+path{stroke:#a1dad1;animation-delay:.1s}.project-toolbar{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 5vw;background:#111311f5;border-bottom:1px solid var(--line);z-index:4}.project-toolbar button,.project-document-footer button,.project-document-footer a{display:inline-flex;align-items:center;gap:12px;min-height:44px;padding:8px 0;background:none;border:0;color:var(--blue);font:inherit}.project-toolbar>span{color:var(--muted);font-size:14px}.project-toolbar .project-close{padding:10px}.narrative-portfolio .project-document{height:auto;padding:65px 8vw 35px;max-width:1600px;margin:auto}.project-introduction{display:grid;grid-template-columns:58% 42%;align-items:center;gap:24px;margin-bottom:70px;animation:project-content-enter .65s .2s both}.project-introduction h1{font:700 clamp(40px,5.5vw,80px)/1.06 Sora,sans-serif;letter-spacing:-.035em;color:var(--blue);max-width:15ch;margin-bottom:24px;text-wrap:balance}.project-description{font-size:22px;line-height:1.6;max-width:40ch;color:var(--muted)}.project-technologies{display:flex;gap:20px;flex-wrap:wrap;list-style:none;padding:0;color:var(--teal);font:13px/1.8 JetBrains Mono,monospace}.project-dataflow{width:100%;height:auto;overflow:visible}.project-dataflow rect{fill:#1d241d;stroke:#647b56;stroke-width:1}.project-dataflow text{fill:var(--ink);font:16px Space Grotesk,sans-serif}.project-flow-route{fill:none;stroke:var(--blue);stroke-width:2;stroke-dasharray:1;stroke-dashoffset:1;animation:project-trace 1s .35s both}.project-dataflow circle{fill:var(--blue)}.project-dataflow g{animation:project-content-enter .55s calc(.3s + var(--step)*.12s) both}.project-explanation{animation:project-content-enter .65s .32s both}.project-explanation section{display:grid;grid-template-columns:30% 1fr;gap:50px;padding:40px 0;border-top:1px solid var(--line)}.project-explanation h2{font:600 27px/1.3 Sora,sans-serif;letter-spacing:-.025em}.project-explanation p{max-width:65ch;font-size:18px;line-height:1.8;color:var(--muted);margin-bottom:20px}.project-document-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:25px}.project-circuit.project-leaving{animation:project-dismiss .26s ease both}@keyframes project-unfold{0%{clip-path:circle(0 at var(--origin-x) var(--origin-y))}to{clip-path:circle(150vmax at var(--origin-x) var(--origin-y))}}@keyframes project-trace{to{stroke-dashoffset:0}}@keyframes project-pulse-clear{0%,55%{opacity:1}to{opacity:0}}@keyframes project-content-enter{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}@keyframes project-dismiss{to{opacity:0;transform:translateY(20px)}}@media(max-width:700px){.project-toolbar{padding:12px 20px;gap:12px}.project-toolbar>span{display:none}.project-toolbar button{font-size:13px}.narrative-portfolio .project-document{padding:35px 24px}.project-introduction{grid-template-columns:1fr;gap:12px;margin-bottom:25px}.project-introduction h1{font-size:clamp(35px,9vw,52px)}.project-description{font-size:18px}.project-technologies{font-size:12px;gap:15px}.project-dataflow{max-height:230px}.project-explanation section{grid-template-columns:1fr;gap:12px;padding:27px 0}.project-explanation h2{font-size:24px;margin:0}.project-explanation p{font-size:16px}.project-document-footer{font-size:14px}.project-opening-pulse path{stroke-width:1.5}}@media(prefers-reduced-motion:reduce){.project-circuit[open],.project-circuit.project-leaving,.project-introduction,.project-explanation,.project-dataflow g{animation:none}.project-opening-pulse{display:none}.project-flow-route{animation:none;stroke-dashoffset:0}}@media(max-width:700px){.project-dataflow text{font-size:28px}}.project-circuit{inset:0;width:min(1120px,calc(100% - 80px));height:min(850px,calc(100dvh - 80px));margin:auto;border:1px solid var(--line);border-radius:14px}.project-circuit::backdrop{background:#080b0899;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.project-toolbar{padding:14px 30px}.narrative-portfolio .project-document{padding:38px 40px 28px}.project-introduction h1{font-size:clamp(35px,4.5vw,62px)}.project-introduction{margin-bottom:38px}.project-description{font-size:19px}.project-explanation section{gap:28px}.project-explanation h2{font-size:24px}.project-explanation p{font-size:17px}@media(max-width:700px){.project-circuit{width:calc(100% - 28px);height:calc(100dvh - 56px);border-radius:12px}.project-toolbar{padding:10px 16px}.narrative-portfolio .project-document{padding:26px 20px}.project-introduction h1{font-size:clamp(30px,8vw,42px)}.project-description{font-size:17px}.project-explanation p{font-size:16px}.project-explanation section{gap:12px}.project-dataflow text{font-size:30px}}
