main:has(.project-detail-shell){max-width:min(1240px,calc(100% - 2rem));padding:clamp(1.25rem,2vw,2rem);background:radial-gradient(circle at top,oklch(.24 .036 228 / .82),transparent 58%),#08131a;border-color:#293b43cc;box-shadow:0 28px 78px #00010457}main:has(.project-detail-shell) .site-header{margin-bottom:clamp(1.8rem,4vw,3rem);padding:.25rem clamp(.35rem,1.2vw,.85rem) 1.25rem;border-bottom-color:#293b43cc}main:has(.project-detail-shell) .logo,main:has(.project-detail-shell) .theme-toggle svg,main:has(.project-detail-shell) .nav-links a:not([aria-current=page]){color:#e7ecf2}main:has(.project-detail-shell) .nav-links a:not([aria-current=page]):visited{color:#e7ecf2}main:has(.project-detail-shell) .nav-links a[aria-current=page]{color:#f2f5fb;background:#172933eb;border-color:#37796dc7;box-shadow:0 16px 34px #00000147}main:has(.project-detail-shell) .nav-links a:before,main:has(.project-detail-shell) .nav-links a:after{border-color:#79c58e8c}main:has(.project-detail-shell) .theme-toggle,main:has(.project-detail-shell) .kbd-hint{border-color:#2f434ceb;background:#141f25eb}.project-detail-shell{position:relative;display:grid;gap:clamp(2rem,4vw,4rem);padding:clamp(1.4rem,3vw,3rem);border-radius:30px;background:linear-gradient(180deg,#121f27f0,#091319fa),#091319;border:1px solid oklch(.34 .028 228 / .88);color:#e2e9f0;overflow:hidden;isolation:isolate}.project-detail-atmosphere{position:absolute;inset:0;pointer-events:none}.project-detail-glow{position:absolute;border-radius:999px;filter:blur(28px)}.project-detail-glow-a{top:-4rem;left:-7rem;width:24rem;height:24rem;background:radial-gradient(circle,oklch(.62 .15 150 / .18),transparent 72%)}.project-detail-glow-b{right:-6rem;top:6rem;width:20rem;height:20rem;background:radial-gradient(circle,oklch(.68 .08 94 / .12),transparent 72%)}.project-hero,.project-story,.project-footer{position:relative;z-index:1}.project-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(340px,.95fr);gap:clamp(1.75rem,4vw,3.5rem);align-items:start}.project-hero.is-copy-only{grid-template-columns:minmax(0,1fr)}.project-copy{display:grid;gap:1.2rem;align-content:start}.project-back-link,.project-kicker,.project-meta-item,.project-tech-pill,.project-rail-label,.project-nav-label,.project-footer-kicker{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em}.project-back-link{font-size:.7rem;color:#89cd9b;text-decoration:none}.project-kicker,.project-footer-kicker{margin:0;font-size:.72rem;color:#89cd9b}.project-title{margin:0;font-size:clamp(3rem,8vw,5.2rem);line-height:.94;letter-spacing:-.065em;color:oklch(.98 .012 248);text-wrap:balance}.project-summary,.project-content,.project-footer-copy p{font-size:1.05rem;line-height:1.8;color:#b4bbc4}.project-summary,.project-footer-copy p{max-width:35rem;margin:0}.project-meta-row{display:flex;flex-wrap:wrap;gap:.8rem}.project-meta-item{display:inline-flex;align-items:center;padding:.4rem .7rem;border-radius:999px;font-size:.64rem;color:#eaeff5;background:#edf2f90f;border:1px solid oklch(.75 .08 152 / .16)}.project-tech-list{display:flex;flex-wrap:wrap;gap:.5rem}.project-tech-pill{display:inline-flex;align-items:center;padding:.32rem .62rem;border-radius:999px;font-size:.66rem;color:#94caa1;background:#edf2f90f;border:1px solid oklch(.75 .08 152 / .16)}.project-visual{display:grid;gap:.85rem;--hero-x: 0;--hero-y: 0;--hero-scale: 1.06}.project-visual-trigger{display:block;color:inherit;padding:0;border:none;background:none;cursor:zoom-in}.project-visual-trigger:hover,.project-visual-trigger:focus-visible{--hero-scale: 1.1}.project-visual-trigger:focus-visible{outline:none}.project-visual-trigger:focus-visible .project-feature-frame{border-color:#73b78599;box-shadow:0 30px 56px #00020557,0 0 0 4px #73b78526,inset 0 1px #e0e5eb0d}.project-feature-frame{position:relative;aspect-ratio:16 / 10;border-radius:30px;overflow:hidden;background:linear-gradient(180deg,#202b30,#0a1319);border:1px solid oklch(.39 .03 228 / .72);box-shadow:0 26px 48px #00020547,inset 0 1px #e0e5eb0d;transition:border-color .26s cubic-bezier(.16,1,.3,1),box-shadow .26s cubic-bezier(.16,1,.3,1)}.project-feature-frame:after{content:"";position:absolute;inset:auto -16% -18% auto;width:58%;height:54%;background:linear-gradient(135deg,oklch(.97 .02 120 / .16),transparent 70%);transform:rotate(14deg);pointer-events:none}.project-feature-image{width:100%;height:100%;display:block;object-fit:cover;transform:scale(var(--hero-scale)) translate3d(calc(var(--hero-x) * 14px),calc(var(--hero-y) * 14px),0);transition:transform .48s cubic-bezier(.16,1,.3,1)}.project-zoom-chip{position:absolute;left:1rem;bottom:1rem;z-index:1;display:inline-flex;align-items:center;padding:.45rem .7rem;border-radius:999px;border:1px solid oklch(.78 .1 152 / .2);background:#040a0fb8;font-family:var(--font-mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.12em;color:#edf3f8;opacity:0;transform:translate3d(0,.45rem,0);transition:opacity .22s ease,transform .22s cubic-bezier(.16,1,.3,1);pointer-events:none}.project-visual-trigger:hover .project-zoom-chip,.project-visual-trigger:focus-visible .project-zoom-chip{opacity:1;transform:translateZ(0)}.project-gallery{position:relative;z-index:1;display:grid;gap:.9rem;padding:.2rem 0 0}.project-gallery-bar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.project-gallery-kicker{margin:0;font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:#89cd9b}.project-gallery-count{margin:0;font-family:var(--font-mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.12em;color:#9fa9b3}.project-gallery-grid{display:flex;gap:.85rem;overflow-x:auto;padding-bottom:.35rem;scrollbar-width:thin;scroll-snap-type:x proximity}.project-gallery-trigger{flex:0 0 min(220px,calc(50vw - 1.5rem));padding:0;border:none;background:none;color:inherit;cursor:zoom-in;scroll-snap-align:start}.project-gallery-trigger:focus-visible{outline:none}.project-gallery-frame{position:relative;display:block;aspect-ratio:4 / 3;border-radius:18px;overflow:hidden;border:1px solid oklch(.38 .03 228 / .72);background:linear-gradient(180deg,#1a262c,#081116);box-shadow:0 18px 34px #00000138,inset 0 1px #e0e5eb0d;transition:transform .28s cubic-bezier(.16,1,.3,1),border-color .22s ease,box-shadow .22s ease}.project-gallery-trigger:hover .project-gallery-frame,.project-gallery-trigger:focus-visible .project-gallery-frame{transform:translateY(-3px);border-color:#73b7858f;box-shadow:0 18px 34px #0000013d,0 0 0 4px #73b7851f,inset 0 1px #e0e5eb0d}.project-gallery-image{width:100%;height:100%;display:block;object-fit:cover}.project-gallery-chip{position:absolute;left:.7rem;bottom:.7rem;display:inline-flex;align-items:center;padding:.36rem .56rem;border-radius:999px;border:1px solid oklch(.78 .1 152 / .18);background:#040a0fc7;font-family:var(--font-mono);font-size:.58rem;text-transform:uppercase;letter-spacing:.12em;color:#f0f6fc}.project-lightbox{position:fixed;inset:0;z-index:999;display:grid;align-items:center;justify-items:center;padding:clamp(.75rem,3vw,1.5rem);background:radial-gradient(circle at top,oklch(.52 .12 152 / .14),transparent 42%),#000101db;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);opacity:0;pointer-events:none;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;transition:opacity .22s ease}.project-lightbox[hidden]{display:none}.project-lightbox.is-open{opacity:1;pointer-events:auto}.project-lightbox-shell{display:grid;gap:.85rem;width:min(96vw,1360px);max-width:100%;margin:auto;padding:0}.project-lightbox-toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem}.project-lightbox-count{margin:0;font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.14em;color:#88c598}.project-lightbox-actions{display:flex;align-items:center;gap:.6rem}.project-lightbox-figure{display:grid;gap:.85rem;margin:0}.project-lightbox-frame{display:grid;place-items:center;width:100%;max-height:calc(100dvh - 7.75rem);padding:clamp(.4rem,1.6vw,.85rem);border-radius:30px;overflow:hidden;border:1px solid oklch(.39 .03 228 / .8);background:linear-gradient(180deg,#111c23f5,#060e14fa),#060e14;box-shadow:0 36px 80px #00000080,inset 0 1px #e0e5eb14}.project-lightbox-image{display:block;width:auto;max-width:100%;max-height:calc(100dvh - 9.5rem);object-fit:contain}.project-lightbox-caption{margin:0;font-size:.9rem;line-height:1.6;text-align:center;color:#bdc5ce}.project-lightbox-nav,.project-lightbox-close{display:inline-flex;align-items:center;justify-content:center;padding:.7rem .95rem;border-radius:999px;border:1px solid oklch(.78 .1 152 / .26);background:#040a0fd1;color:#f3f9ff;font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;cursor:pointer;transition:transform .22s cubic-bezier(.16,1,.3,1),border-color .22s ease,background .22s ease}.project-lightbox-nav:disabled{opacity:.55;cursor:default;transform:none}.project-lightbox-nav:hover:not(:disabled),.project-lightbox-nav:focus-visible:not(:disabled),.project-lightbox-close:hover,.project-lightbox-close:focus-visible{transform:translateY(-2px);border-color:#73b7858f;background:#091319eb;outline:none}.project-story{display:grid;grid-template-columns:210px minmax(0,1fr);gap:clamp(1.5rem,4vw,3rem);align-items:start}.project-rail{position:sticky;top:1.5rem;display:grid;gap:.9rem}.project-rail-card{display:grid;gap:.55rem;padding:1rem;border-radius:18px;background:linear-gradient(180deg,#152128e0,#0d181efa);border:1px solid oklch(.38 .026 228 / .7);box-shadow:inset 0 1px #dadee50d}.project-rail-label{font-size:.64rem;color:#87c293bf}.project-rail-value{font-family:var(--font-display);font-size:1.1rem;font-weight:600;color:oklch(.98 .012 248);text-wrap:balance}.project-rail-stack{font-size:.98rem;line-height:1.4}.project-content{max-width:68ch}.project-content p{margin-bottom:1.25rem;color:#bac2ca}.project-content h2,.project-content h3{margin-top:2.6rem;margin-bottom:1rem;color:oklch(.98 .012 248);text-wrap:balance}.project-content h2{font-size:clamp(1.85rem,4vw,2.5rem);letter-spacing:-.04em}.project-content h3{font-size:clamp(1.35rem,3vw,1.8rem);letter-spacing:-.03em}.project-content ul,.project-content ol{margin:0 0 1.5rem 1.25rem;color:#bac2ca}.project-content li+li{margin-top:.55rem}.project-content a{color:#8cd9a1;text-decoration:none;border-bottom:1px solid oklch(.82 .11 152 / .4);word-break:break-word}.project-content a:hover{border-bottom-color:transparent}.project-content blockquote{margin:2rem 0;padding:1rem 1.25rem;border-left:3px solid oklch(.78 .1 152 / .68);background:#1521289e;border-radius:0 18px 18px 0}.project-content img{width:100%;height:auto;display:block;margin:2rem 0;border-radius:22px;border:1px solid oklch(.39 .03 228 / .7)}.project-footer{display:grid;gap:1.5rem;padding-top:1rem;border-top:1px solid oklch(.37 .03 228 / .72)}.project-footer-copy{display:grid;gap:.75rem}.project-footer-copy h2{margin:0;font-size:clamp(1.9rem,4vw,2.9rem);letter-spacing:-.05em;color:oklch(.98 .012 248)}.project-nav-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.project-nav-card{display:grid;gap:.6rem;padding:1rem;border-radius:18px;background:linear-gradient(180deg,#152128e0,#0d181efa);border:1px solid oklch(.38 .026 228 / .7);text-decoration:none}.project-nav-card:hover{border-color:#73b7858a;transform:translateY(-2px)}.project-nav-card:focus-visible{outline:2px solid oklch(.72 .1 152 / .72);outline-offset:4px;border-color:#73b7858a;transform:translateY(-2px)}.project-nav-label{font-size:.64rem;color:#87c293bf}.project-nav-title{font-size:1.05rem;font-weight:600;color:oklch(.98 .012 248)}html:not([data-theme=dark]) main:has(.project-detail-shell){background:radial-gradient(circle at top,oklch(.99 .012 180 / .96),transparent 58%),#e6f4f6;border-color:#b8d0d3f2;box-shadow:0 28px 78px #819aa12e}html:not([data-theme=dark]) main:has(.project-detail-shell) .site-header{border-bottom-color:#b8d0d3e6}html:not([data-theme=dark]) main:has(.project-detail-shell) .logo,html:not([data-theme=dark]) main:has(.project-detail-shell) .theme-toggle svg,html:not([data-theme=dark]) main:has(.project-detail-shell) .nav-links a:not([aria-current=page]){color:#112228}html:not([data-theme=dark]) main:has(.project-detail-shell) .nav-links a:not([aria-current=page]):visited{color:#112228}html:not([data-theme=dark]) main:has(.project-detail-shell) .nav-links a[aria-current=page]{color:#030f14;background:#f6fefdeb;border-color:#53998280;box-shadow:0 14px 28px #819aa11f}html:not([data-theme=dark]) main:has(.project-detail-shell) .nav-links a:before,html:not([data-theme=dark]) main:has(.project-detail-shell) .nav-links a:after{border-color:#2f987480}html:not([data-theme=dark]) main:has(.project-detail-shell) .theme-toggle,html:not([data-theme=dark]) main:has(.project-detail-shell) .kbd-hint{border-color:#b8d0d3f2;background:#f7fdfdcc}html:not([data-theme=dark]) .project-detail-shell{background:linear-gradient(180deg,#effbf9fa,#deeff1fa),#e1f0f2;border-color:#afcacee6;color:#122227}html:not([data-theme=dark]) .project-detail-glow-a{background:radial-gradient(circle,oklch(.6 .12 166 / .2),transparent 72%)}html:not([data-theme=dark]) .project-detail-glow-b{background:radial-gradient(circle,oklch(.76 .08 92 / .18),transparent 72%)}html:not([data-theme=dark]) .project-back-link,html:not([data-theme=dark]) .project-kicker,html:not([data-theme=dark]) .project-footer-kicker,html:not([data-theme=dark]) .project-content a{color:oklch(.57 .12 166)}html:not([data-theme=dark]) .project-title,html:not([data-theme=dark]) .project-rail-value,html:not([data-theme=dark]) .project-content h2,html:not([data-theme=dark]) .project-content h3,html:not([data-theme=dark]) .project-footer-copy h2,html:not([data-theme=dark]) .project-nav-title{color:#08191e}html:not([data-theme=dark]) .project-summary,html:not([data-theme=dark]) .project-content,html:not([data-theme=dark]) .project-footer-copy p,html:not([data-theme=dark]) .project-content p,html:not([data-theme=dark]) .project-content ul,html:not([data-theme=dark]) .project-content ol{color:#3c4b4f}html:not([data-theme=dark]) .project-meta-item{color:#08191e;background:#f8fdfce6;border-color:#7db69e33}html:not([data-theme=dark]) .project-tech-pill,html:not([data-theme=dark]) .project-rail-label,html:not([data-theme=dark]) .project-nav-label{color:#235c47}html:not([data-theme=dark]) .project-tech-pill{background:#f8fdfce6;border-color:#7db69e33}html:not([data-theme=dark]) .project-feature-frame,html:not([data-theme=dark]) .project-gallery-frame{background:linear-gradient(180deg,#d6e9ea,#c0d6d9);border-color:#aec6c9d1;box-shadow:0 24px 44px #819aa11f}html:not([data-theme=dark]) .project-gallery-count{color:#435a60}html:not([data-theme=dark]) .project-visual-trigger:focus-visible .project-feature-frame,html:not([data-theme=dark]) .project-gallery-trigger:focus-visible .project-gallery-frame,html:not([data-theme=dark]) .project-gallery-trigger:hover .project-gallery-frame{border-color:oklch(.57 .12 166 / .56);box-shadow:0 24px 44px #819aa11f,0 0 0 4px oklch(.57 .12 166 / .12)}html:not([data-theme=dark]) .project-feature-frame:after{background:linear-gradient(135deg,rgba(255,255,255,.34),transparent 70%)}html:not([data-theme=dark]) .project-zoom-chip,html:not([data-theme=dark]) .project-gallery-chip,html:not([data-theme=dark]) .project-lightbox-nav,html:not([data-theme=dark]) .project-lightbox-close{border-color:oklch(.57 .12 166 / .18);background:#f7fdfdeb;color:#122227}html:not([data-theme=dark]) .project-lightbox-nav:hover:not(:disabled),html:not([data-theme=dark]) .project-lightbox-nav:focus-visible:not(:disabled),html:not([data-theme=dark]) .project-lightbox-close:hover,html:not([data-theme=dark]) .project-lightbox-close:focus-visible{border-color:oklch(.57 .12 166 / .4);background:#deefeefa;color:#030f14}html:not([data-theme=dark]) .project-lightbox-count{color:#235c47}html:not([data-theme=dark]) .project-lightbox{background:radial-gradient(circle at top,oklch(.62 .12 166 / .12),transparent 42%),#08131961}html:not([data-theme=dark]) .project-lightbox-frame{border-color:#aec6c9d1;background:linear-gradient(180deg,#f3fafafa,#e4f1f2fa),#e4f1f2;box-shadow:0 30px 70px #7c8c912e}html:not([data-theme=dark]) .project-lightbox-caption{color:#3c4b4f}html:not([data-theme=dark]) .project-rail-card,html:not([data-theme=dark]) .project-nav-card{background:linear-gradient(180deg,#fafdfdf0,#eaf5f6fa),#ecf8f8;border-color:#aec6c9db;box-shadow:0 24px 44px #819aa114,inset 0 1px #ffffffe6}html:not([data-theme=dark]) .project-nav-card:hover{border-color:oklch(.57 .12 166 / .54)}html:not([data-theme=dark]) .project-nav-card:focus-visible{outline-color:oklch(.57 .12 166 / .72);border-color:oklch(.57 .12 166 / .54)}html:not([data-theme=dark]) .project-content a{border-bottom-color:oklch(.57 .12 166 / .35)}html:not([data-theme=dark]) .project-content blockquote{border-left-color:oklch(.57 .12 166 / .56);background:#eef7f8ad}html:not([data-theme=dark]) .project-content img{border-color:#aec6c9d1}html:not([data-theme=dark]) .project-footer{border-top-color:#afcaced1}@media(max-width:960px){main:has(.project-detail-shell){max-width:calc(100% - 1.25rem)}.project-hero,.project-story,.project-nav-grid{grid-template-columns:1fr}.project-gallery-grid{gap:.7rem}.project-rail{position:static;grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:768px){main:has(.project-detail-shell){margin:1.25rem auto;padding:1rem}.project-detail-shell{padding:1.2rem}.project-title{font-size:clamp(2.5rem,16vw,3.8rem)}.project-rail{grid-template-columns:1fr}.project-gallery-grid{gap:.65rem}.project-gallery-trigger{flex-basis:min(70vw,180px)}.project-lightbox-toolbar{flex-direction:column;align-items:stretch}.project-lightbox-actions{justify-content:space-between;flex-wrap:wrap}.project-zoom-chip{opacity:1;transform:none}.project-lightbox{padding:.75rem}.project-lightbox-shell{width:min(100%,28rem)}.project-lightbox-frame{max-height:calc(100dvh - 7rem);border-radius:24px;padding:.35rem}.project-lightbox-image{max-height:calc(100dvh - 8rem)}.project-lightbox-nav,.project-lightbox-close{padding:.72rem 1rem}}@media(prefers-reduced-motion:reduce){.project-feature-image,.project-nav-card,.project-feature-frame,.project-gallery-frame,.project-zoom-chip,.project-lightbox-nav,.project-lightbox-close{transition:none;transform:none}}html.project-lightbox-open,body.project-lightbox-open{overflow:hidden}
