:root,:root[data-theme=dusk]{--bg: #0c0408;--bg-soft: #140710;--bg-card: rgba(30, 12, 22, .55);--bg-card-hover: rgba(46, 18, 34, .7);--ink: #f5ebd8;--ink-mid: #d4c5b0;--ink-dim: #b9a49a;--ink-faint: #6e5d58;--accent: #ff6a8a;--accent-2: #ffa76a;--accent-deep: #8a2f5a;--rule: rgba(245, 235, 216, .14);--rule-soft: rgba(245, 235, 216, .07);--rule-accent: rgba(255, 106, 138, .28);--glow-accent: rgba(255, 106, 138, .2);--accent-soft: rgba(255, 106, 138, .1)}:root[data-theme=tide]{--bg: #050812;--bg-soft: #0a1020;--bg-card: rgba(14, 22, 46, .55);--bg-card-hover: rgba(22, 32, 62, .7);--ink: #e8ebf5;--ink-mid: #b8c0d4;--ink-dim: #8a94ad;--ink-faint: #555d72;--accent: #8ab4ff;--accent-2: #b8c5ff;--accent-deep: #2f4b8a;--rule: rgba(232, 235, 245, .14);--rule-soft: rgba(232, 235, 245, .07);--rule-accent: rgba(138, 180, 255, .32);--glow-accent: rgba(138, 180, 255, .2);--accent-soft: rgba(138, 180, 255, .1)}:root[data-theme=bloom]{--bg: #100600;--bg-soft: #1a0c04;--bg-card: rgba(42, 18, 6, .55);--bg-card-hover: rgba(60, 26, 10, .7);--ink: #fbeedc;--ink-mid: #e0c8a8;--ink-dim: #b89a78;--ink-faint: #6a5a42;--accent: #ff9347;--accent-2: #ffd27a;--accent-deep: #a8541a;--rule: rgba(251, 238, 220, .14);--rule-soft: rgba(251, 238, 220, .07);--rule-accent: rgba(255, 147, 71, .3);--glow-accent: rgba(255, 147, 71, .2);--accent-soft: rgba(255, 147, 71, .1)}:root[data-theme=static]{--bg: #0a0a0a;--bg-soft: #121212;--bg-card: rgba(22, 22, 22, .55);--bg-card-hover: rgba(32, 32, 32, .7);--ink: #e8e4dc;--ink-mid: #b8b3aa;--ink-dim: #8a8680;--ink-faint: #5a564f;--accent: #c9a079;--accent-2: #e8e4dc;--accent-deep: #5a4632;--rule: rgba(232, 228, 220, .14);--rule-soft: rgba(232, 228, 220, .07);--rule-accent: rgba(201, 160, 121, .35);--glow-accent: rgba(201, 160, 121, .18);--accent-soft: rgba(201, 160, 121, .1)}html{transition:background-color 1.3s ease,color 1.3s ease}:root{--font-display: "Instrument Serif", Georgia, "Times New Roman", serif;--font-body: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius: 14px;--radius-sm: 8px;--radius-xs: 4px}*{margin:0;padding:0;box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-weight:400;line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a,button,.tag,.pivot-tag,.highlight,.pivot,.btn,nav a{transition:color 1.3s ease,border-color 1.3s ease,background-color 1.3s ease}::selection{background:var(--accent);color:var(--bg)}::-webkit-scrollbar{width:10px;background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--accent-deep);border-radius:0}a{color:var(--ink)}img{max-width:100%;display:block}.container{max-width:1400px;margin:0 auto;padding:0 2.5rem}nav.site-nav{position:fixed;top:0;left:0;right:0;z-index:50;padding:1.5rem 0;background:transparent;transition:background .3s,backdrop-filter .3s,border-color .3s;border-bottom:1px solid transparent}nav.site-nav.scrolled{background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--rule-soft)}.nav-container{max-width:1400px;margin:0 auto;padding:0 2.5rem;display:flex;justify-content:space-between;align-items:baseline}.nav-logo{font-family:var(--font-display);font-size:1.35rem;font-style:italic;color:var(--ink);text-decoration:none}.nav-logo:hover{color:var(--accent)}nav.site-nav ul{display:flex;gap:2.25rem;list-style:none;font-family:var(--font-body);font-size:.95rem;font-weight:400}nav.site-nav a{color:var(--ink);text-decoration:none;opacity:.7}nav.site-nav a:hover{opacity:1;color:var(--accent)}nav.site-nav a.active{opacity:1;color:var(--accent)}.project-banner{position:relative;width:100%;min-height:62vh;overflow:hidden;background:var(--bg);display:flex;align-items:flex-end;border-bottom:1px solid var(--rule)}.banner-images,.banner-images.banner-carousel{position:absolute;inset:0;z-index:0;overflow:hidden}.banner-images.banner-carousel:after{content:none}.banner-images.banner-carousel .banner-track{position:absolute;inset:0;display:flex;align-items:stretch;gap:var(--banner-gap, 18px);padding:0;will-change:transform}.banner-images.banner-carousel .banner-slide{flex:0 0 var(--banner-slide-w, 420px);height:100%;background-position:center;background-size:cover;background-repeat:no-repeat;filter:saturate(.92) contrast(1.03) brightness(.9);border-radius:24px;overflow:hidden}.banner-images.banner-carousel.carousel-ready .banner-track{transition:opacity .9s ease;opacity:1}.banner-images.banner-carousel .banner-track{opacity:0}.banner-images.banner-carousel .banner-glsl{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;mix-blend-mode:normal;opacity:.55}.banner-images.banner-collage{position:absolute;inset:0;z-index:0;overflow:hidden}.banner-images.banner-collage .banner-tile{position:absolute;left:var(--x);top:var(--y);width:var(--w);height:var(--h);opacity:0;border-radius:18px;background-position:center;background-size:cover;background-repeat:no-repeat;transform:translate(0) rotate(var(--r));filter:saturate(.9) contrast(1.03) brightness(.86);box-shadow:0 22px 70px -45px #000000b8,0 0 0 1px #ffffff12;will-change:transform,opacity;animation:banner-tile-drift var(--dur) ease-in-out infinite alternate}.banner-images.banner-collage.collage-ready .banner-tile{opacity:1;transition:opacity .9s ease}.banner-images.banner-collage .banner-tile.hero{border-radius:22px}.banner-images.banner-collage .banner-tile.support{border-radius:16px}.banner-images.banner-collage .banner-tile.swapping{opacity:.18;transition:opacity .26s ease}.banner-images.banner-collage .banner-glsl{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;mix-blend-mode:soft-light;opacity:.95}@keyframes banner-tile-drift{0%{transform:translate(0) rotate(var(--r))}to{transform:translate(var(--dx),var(--dy)) rotate(var(--r))}}.banner-layer{position:absolute;inset:0;background-position:center;background-size:cover;background-repeat:no-repeat;opacity:0;transform:scale(1.05);transition:opacity 1.6s ease-in-out,transform 7s ease-out;filter:saturate(.82) contrast(1.04) brightness(.82);will-change:opacity,transform}.banner-layer.active{opacity:1;transform:scale(1.14) translate(-1.5%)}.banner-images:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at center,transparent 35%,color-mix(in srgb,var(--bg) 35%,transparent) 95%),linear-gradient(135deg,var(--accent-soft),transparent)}.project-banner:after{content:"";position:absolute;left:0;right:0;bottom:0;height:70%;background:linear-gradient(180deg,transparent 0%,color-mix(in srgb,var(--bg) 55%,transparent) 65%,color-mix(in srgb,var(--bg) 88%,transparent) 100%);z-index:1;pointer-events:none}.banner-content{position:relative;z-index:2;max-width:1400px;margin:0 auto;padding:7rem 2.5rem 3.5rem;width:100%}.banner-back{font-family:var(--font-body);font-size:.85rem;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-dim);text-decoration:none;display:inline-block;margin-bottom:1.75rem;transition:color .3s,transform .3s}.banner-back:hover{color:var(--accent);transform:translate(-4px)}.banner-content h1{font-family:var(--font-display);font-weight:400;font-size:clamp(3rem,8vw,7rem);line-height:.95;letter-spacing:-.025em;color:var(--ink);margin-bottom:1.25rem;max-width:20ch;text-shadow:0 4px 30px color-mix(in srgb,var(--bg) 50%,transparent)}.banner-content h1 em{font-style:italic;color:var(--accent)}.banner-sub{font-family:var(--font-body);font-size:1.15rem;color:var(--ink-mid);max-width:55ch;line-height:1.55}.case-study-detail{max-width:1100px;margin:0 auto;padding:4rem 2.5rem}.project-header{margin-bottom:3rem}.project-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.5rem 2rem;margin:0 0 2rem;padding:1.75rem;background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius)}.project-meta-item{display:flex;flex-direction:column;gap:.3rem}.project-meta-item strong{font-family:var(--font-body);font-weight:500;font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:var(--accent)}.project-meta-item span{font-family:var(--font-body);font-size:1rem;font-weight:400;color:var(--ink);line-height:1.35}.tech-stack{display:flex;flex-wrap:wrap;gap:.4rem;margin:1.5rem 0}.tag{font-family:var(--font-body);font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-mid);padding:.3rem .7rem;border:1px solid var(--rule);border-radius:999px;background:color-mix(in srgb,var(--bg) 35%,transparent)}.project-links{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.75rem}.project-link-btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-body);font-size:.95rem;font-weight:500;color:var(--ink);text-decoration:none;padding:.65rem 1.3rem;border:1px solid var(--rule);border-radius:999px;background:var(--bg-card);transition:color .3s,background .3s,border-color .3s,transform .3s}.project-link-btn:hover{color:var(--bg);background:var(--accent);border-color:var(--accent);transform:translateY(-2px)}.project-link-btn.primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}.project-link-btn.primary:hover{background:var(--accent-2);border-color:var(--accent-2)}.project-link-btn svg{flex-shrink:0}.case-study-content{background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius);padding:3.5rem;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.case-study-content h1{font-family:var(--font-body);font-weight:500;font-size:2rem;line-height:1.1;letter-spacing:-.015em;color:var(--ink);margin:3rem 0 1.25rem}.case-study-content h2{font-family:var(--font-body);font-weight:500;font-size:1.6rem;line-height:1.15;letter-spacing:-.01em;color:var(--ink);margin:3rem 0 1rem;display:flex;align-items:center;gap:.85rem}.case-study-content h2:before{content:"";display:inline-block;width:32px;height:1px;background:var(--accent);flex-shrink:0}.case-study-content h2:first-child{margin-top:0}.case-study-content h3{font-family:var(--font-body);font-weight:500;font-size:1.2rem;line-height:1.25;color:var(--ink);margin:2rem 0 .75rem}.case-study-content h4{font-family:var(--font-body);font-weight:500;font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;color:var(--accent-2);margin:1.5rem 0 .65rem}.case-study-content p{font-family:var(--font-body);font-size:1rem;color:var(--ink-mid);line-height:1.75;margin-bottom:1.4rem}.case-study-content a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--rule-accent);transition:border-color .3s,color .3s}.case-study-content a:hover{color:var(--accent-2);border-bottom-color:var(--accent-2)}.case-study-content strong{color:var(--ink);font-weight:500}.case-study-content ul,.case-study-content ol{color:var(--ink-mid);margin:0 0 1.4rem 1.75rem;padding-left:.5rem}.case-study-content li{font-family:var(--font-body);font-size:1rem;line-height:1.7;margin-bottom:.5rem}.case-study-content code{background:var(--accent-soft);color:var(--accent);padding:.15rem .45rem;border-radius:var(--radius-xs);font-family:var(--font-mono);font-size:.9em}.case-study-content img,.case-study-content .inline-image,.case-study-content .centered-image{max-width:100%;height:auto;margin:2rem auto;border-radius:var(--radius-sm);cursor:zoom-in;display:block;transition:transform .3s}.case-study-content img:hover{transform:scale(1.005)}.eyebrow{font-family:var(--font-body);font-size:.75rem;text-transform:uppercase;letter-spacing:.22em;color:var(--accent);font-weight:500;margin:3rem 0 .4rem;display:block}.eyebrow+h2{margin-top:.25rem!important}.highlight-box{border:1px solid var(--rule-accent);border-left:2px solid var(--accent);padding:1.1rem 1.4rem;margin:2rem 0;border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:transparent}.highlight-box .highlight-label{font-family:var(--font-body);font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:var(--accent);font-weight:500;margin-bottom:.5rem;display:block}.highlight-box>*:first-child{margin-top:0}.highlight-box>*:last-child{margin-bottom:0}.highlight-box p{margin-bottom:.75rem;font-size:.95rem}.highlight-box p:last-child{margin-bottom:0}.pivot-section{border:1px solid var(--rule);border-radius:var(--radius);padding:1.75rem 2rem;margin:2.5rem 0;background:transparent}.pivot-tag{display:inline-block;font-family:var(--font-body);font-size:.75rem;text-transform:uppercase;letter-spacing:.22em;color:var(--accent);background:var(--accent-soft);border:1px solid var(--rule-accent);padding:.28rem .7rem;border-radius:var(--radius-xs);margin-bottom:.85rem;font-weight:500}.pivot-section h3:first-of-type{margin-top:0;font-size:1.3rem;margin-bottom:.5rem}.before-after{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:1.25rem 0;border:1px solid var(--rule);border-radius:var(--radius-sm);overflow:hidden}.before-after-item{padding:1.1rem 1.35rem;background:color-mix(in srgb,var(--bg-card) 50%,transparent)}.before-after-item+.before-after-item{border-left:1px solid var(--rule)}.before-after-item .ba-label{font-family:var(--font-body);font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:var(--ink-dim);margin-bottom:.5rem;font-weight:500}.before-after-item.after .ba-label{color:var(--accent)}.before-after-item p{margin:0;font-size:.95rem;line-height:1.6}.before-after-item p+p{margin-top:.5rem}.team-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;margin:1.5rem 0}.team-member{padding:.9rem 1.1rem;background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-sm)}.team-member strong{font-family:var(--font-body);font-weight:500;font-size:.95rem;color:var(--accent);display:block;margin-bottom:.2rem}.team-member span{font-family:var(--font-body);font-size:.88rem;color:var(--ink-dim)}.architecture-diagram{background:color-mix(in srgb,var(--bg) 92%,black);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:1.5rem 1.75rem;margin:2rem 0;font-family:var(--font-mono);font-size:.85rem;line-height:1.55;overflow-x:auto;color:var(--accent-2)}.architecture-diagram pre{margin:0;white-space:pre;font-family:inherit;font-size:inherit;color:inherit;background:transparent}.image-text-row{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0;align-items:start}.image-text-row.reverse{direction:rtl}.image-text-row.reverse>*{direction:ltr}.image-text-row img{width:100%;border-radius:var(--radius-sm);cursor:zoom-in;margin:0}.image-text-row .text-content{padding:1.25rem 1.5rem;background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-sm)}.image-text-row .text-content>*:first-child{margin-top:0}.image-with-caption{margin:2rem 0}.image-with-caption img{width:100%;border-radius:var(--radius-sm);margin:0 0 .6rem}.image-with-caption .caption{font-family:var(--font-body);font-size:.88rem;color:var(--ink-dim);text-align:center;padding:.3rem 0;font-style:italic}.two-column-section{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin:1.75rem 0}.column-content{padding:1.25rem 1.5rem;background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-sm)}.column-content>*:first-child{margin-top:0}.column-content h4{color:var(--accent);margin-top:0}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin:2rem 0;border-radius:var(--radius-sm);border:1px solid var(--rule);background:var(--bg)}.video-container iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.back-link{display:inline-block;margin-top:3rem;font-family:var(--font-body);font-size:.9rem;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-mid);text-decoration:none;transition:color .3s,transform .3s}.back-link:hover{color:var(--accent);transform:translate(-4px)}footer.site-footer{padding:2.5rem 0 3rem;text-align:center;border-top:1px solid var(--rule)}footer.site-footer p{font-family:var(--font-body);font-size:.85rem;color:var(--ink-faint)}.lightbox{position:fixed;inset:0;background:color-mix(in srgb,var(--bg) 95%,black);display:none;justify-content:center;align-items:center;z-index:1000;cursor:zoom-out;padding:2rem;backdrop-filter:blur(10px)}.lightbox.active{display:flex}.lightbox img{max-width:92%;max-height:92%;object-fit:contain;border-radius:var(--radius-xs)}.lightbox-close{position:absolute;top:1.5rem;right:2rem;font-size:2.5rem;color:var(--ink);cursor:pointer;font-family:var(--font-display);line-height:1;opacity:.7;transition:opacity .3s,color .3s}.lightbox-close:hover{opacity:1;color:var(--accent)}.theme-switcher{position:fixed;bottom:1.5rem;right:1.5rem;z-index:40;display:flex;gap:.4rem;padding:.5rem;background:color-mix(in srgb,var(--bg) 80%,transparent);border:1px solid var(--rule);border-radius:999px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.theme-switcher button{width:24px;height:24px;border-radius:50%;border:1px solid var(--rule);background:var(--swatch, var(--accent));cursor:pointer;padding:0;font-size:0;transition:transform .2s,border-color .2s}.theme-switcher button:hover{transform:scale(1.15)}.theme-switcher button[aria-pressed=true]{border-color:var(--ink);transform:scale(1.1)}[data-reveal]{opacity:0;transform:translateY(30px);transition:opacity .58s cubic-bezier(.34,1.56,.64,1),transform .58s cubic-bezier(.34,1.56,.64,1);transition-delay:var(--reveal-delay, 0ms)}[data-reveal].revealed{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(max-width:900px){.image-text-row,.two-column-section,.before-after{grid-template-columns:1fr}.image-text-row.reverse{direction:ltr}.before-after{border:none}.before-after-item{border:1px solid var(--rule);border-radius:var(--radius-sm)}.before-after-item+.before-after-item{border-left:1px solid var(--rule);margin-top:.75rem}.case-study-content{padding:2rem 1.5rem}}@media(max-width:768px){.container{padding:0 1.25rem}nav.site-nav{padding:1rem 0}.nav-container{padding:0 1.25rem}nav.site-nav ul{gap:1rem;font-size:.85rem}.project-banner{min-height:55vh}.banner-content{padding:5.5rem 1.25rem 2.5rem}.case-study-detail{padding:2.5rem 1.25rem}.project-meta{padding:1.25rem}.theme-switcher{bottom:1rem;right:1rem}}
