.skip-link{position:absolute;top:0;left:-9999px}.skip-link:focus{z-index:1;color:canvastext;outline-offset:2px;background:canvas;outline:2px solid canvastext;padding:.5rem 1rem;text-decoration:underline;left:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@font-face{font-family:Archivo;src:url(/fonts/Archivo.woff2)format("woff2");font-weight:400 800;font-style:normal;font-display:swap}@font-face{font-family:Newsreader;src:url(/fonts/Newsreader.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono.woff2)format("woff2");font-weight:100 800;font-style:normal;font-display:swap}:root{--ink:#231e14;--ink-muted:#6b6252;--canvas:#f5f0e8;--surface:#ede7da;--band:#1a1712;--border:#d5ccbb;--band-border:#3d3628;--band-rule:#2c2820;--on-band:#f0ebe0;--on-band-muted:#a89f8f;--accent:#7d2b52;--accent-muted:#b5608a;--accent-on-band:#f2a0c0;--hatch-a:#e0d9ce;--hatch-b:#ebe5d9;--lj-orange:#b24a20;--lj-teal:#0f6e72}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ink:#f0ebe0;--ink-muted:#a89f8f;--canvas:#1e1912;--surface:#3d3226;--band:#141210;--border:#3d3628;--band-border:#4a4035;--band-rule:#3d3628;--on-band:#f0ebe0;--on-band-muted:#8a8070;--accent:#e88ab5;--accent-muted:#c4669a;--accent-on-band:#f2a0c0;--hatch-a:#2a2419;--hatch-b:#322d21;--lj-orange:#f07040;--lj-teal:#3fcbd3}}:root[data-theme=dark]{--ink:#f0ebe0;--ink-muted:#a89f8f;--canvas:#1e1912;--surface:#3d3226;--band:#141210;--border:#3d3628;--band-border:#4a4035;--band-rule:#3d3628;--on-band:#f0ebe0;--on-band-muted:#8a8070;--accent:#e88ab5;--accent-muted:#c4669a;--accent-on-band:#f2a0c0;--hatch-a:#2a2419;--hatch-b:#322d21;--lj-orange:#f07040;--lj-teal:#3fcbd3}:root[data-theme=light]{--ink:#231e14;--ink-muted:#6b6252;--canvas:#f5f0e8;--surface:#ede7da;--band:#1a1712;--border:#d5ccbb;--band-border:#3d3628;--band-rule:#2c2820;--on-band:#f0ebe0;--on-band-muted:#a89f8f;--accent:#7d2b52;--accent-muted:#b5608a;--accent-on-band:#f2a0c0;--hatch-a:#e0d9ce;--hatch-b:#ebe5d9;--lj-orange:#b24a20;--lj-teal:#0f6e72}.d-c{--ff-display:"Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;--ff-body:"Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;--ff-serif:"Newsreader", "Iowan Old Style", Georgia, "Times New Roman", serif;--ff-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", monospace;--fs-label:12px;--fs-sm:15px;--fs-base:16px;--fs-lede:18px;--fs-h3:21px;--fs-h2:28px;--fs-h1:32px;--fs-disp:38px;--s1:4px;--s2:8px;--s3:16px;--s4:24px;--s5:40px;--s6:64px;--s7:96px;--s8:144px;--s9:200px;--pad:var(--s3);--maxw:1320px;--r:20px;--r2:12px;background:var(--canvas);color:var(--ink);font:400 var(--fs-base)/1.6 var(--ff-body);-webkit-font-smoothing:antialiased}@media (width>=720px){.d-c{--fs-h1:44px;--fs-disp:52px;--fs-h2:32px;--pad:var(--s5)}}@media (width>=1080px){.d-c{--fs-label:12px;--fs-sm:15px;--fs-base:17px;--fs-lede:21px;--fs-h3:26px;--fs-h2:36px;--fs-h1:56px;--fs-disp:70px;--pad:var(--s6);--r:24px}}.d-c *,.d-c :before,.d-c :after{box-sizing:border-box}.d-c p,.d-c h1,.d-c h2,.d-c h3,.d-c ul,.d-c dl,.d-c dd,.d-c figure{margin:0}.d-c ul{padding:0;list-style:none}.d-c img{max-width:100%;display:block}.d-c a{color:var(--accent);text-underline-offset:4px}.d-c a:focus-visible,.d-c button:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}.d-c .band a:focus-visible{outline-color:var(--accent-on-band)}.d-c main:focus{outline:none}.d-c .skip{left:-9999px;top:var(--s2);z-index:9;background:var(--band);color:var(--on-band);padding:var(--s2) var(--s3);font:600 var(--fs-sm)/1 var(--ff-body);border-radius:var(--r2);text-decoration:none;position:absolute}.d-c .skip:focus{left:var(--s3);outline:3px solid var(--accent-on-band);outline-offset:3px}.d-c .wrap{max-width:var(--maxw);padding-inline:var(--pad);margin:0 auto}.d-c .wrap>*{min-width:0}.d-c h1,.d-c h2,.d-c h3{font-family:var(--ff-display);letter-spacing:-.03em;text-wrap:balance;font-weight:700;line-height:1.04}.d-c h1{font-size:var(--fs-h1)}.d-c h2{font-size:var(--fs-h2);line-height:1.08}.d-c h3{font-size:var(--fs-h3);letter-spacing:-.02em;line-height:1.15}.d-c .display{font-size:var(--fs-disp);font-variation-settings:"wdth" 112, "wght" 700;letter-spacing:-.035em;line-height:.98}.d-c .label{font:600 var(--fs-label)/1.4 var(--ff-body);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted)}.d-c .band .label{color:var(--on-band-muted)}.d-c .lede{font:400 var(--fs-lede)/1.5 var(--ff-serif);color:var(--ink-muted);max-width:44ch}.d-c .prose{font-family:var(--ff-serif);font-size:var(--fs-lede);color:var(--ink-muted);max-width:62ch;line-height:1.6}.d-c .prose p+p{margin-top:var(--s3)}.d-c .band .lede,.d-c .band .prose{color:var(--on-band-muted)}.d-c .band,.d-c .band h1,.d-c .band h2,.d-c .band h3{color:var(--on-band)}.d-c code,.d-c pre{font-family:var(--ff-mono);font-size:.9em}.d-c .nav{background:var(--canvas)}.d-c .nav-in{justify-content:space-between;align-items:center;gap:var(--s3);padding-block:var(--s3);display:flex}.d-c .nav-name{font:700 14px/1 var(--ff-mono);letter-spacing:-.02em;color:var(--ink);white-space:nowrap;text-decoration:none}@media (width>=720px){.d-c .nav-name{font-variation-settings:"wdth" 108, "wght" 700;font-size:19px}}.d-c .nav-links{align-items:center;gap:var(--s2);flex-shrink:0;display:flex}@media (width>=720px){.d-c .nav-links{gap:var(--s5)}}.d-c .nav-links a{font:600 10.5px/1 var(--ff-body);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);text-decoration:none}@media (width>=720px){.d-c .nav-links a{font-size:var(--fs-label);letter-spacing:.14em}}.d-c .nav-links a:hover{color:var(--accent)}.d-c .nav-links a[aria-current=page]{color:var(--ink);box-shadow:0 2px 0 var(--accent)}.d-c .hero{padding-block:var(--s4)}@media (width>=1080px){.d-c .hero{padding-block:var(--s5) var(--s6)}}.d-c .hero .display{max-width:15ch}.d-c .hero .lede{margin-top:var(--s4)}.d-c .band{background:var(--band);padding-block:var(--s4)}@media (width>=1080px){.d-c .band{padding-block:var(--s5)}}.d-c .band-grid{gap:var(--s4);display:grid}.d-c .band-grid>*{min-width:0}@media (width>=1080px){.d-c .band-grid{column-gap:var(--s6);row-gap:var(--s4);grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);grid-template-areas:"head shots""body shots";align-items:start}.d-c .band-head{grid-area:head}.d-c .band-shots{grid-area:shots}.d-c .band-body{grid-area:body}}.d-c .appicon{border-radius:16px;flex:none;width:72px;height:72px}@media (width>=1080px){.d-c .appicon{border-radius:20px;width:88px;height:88px}}.d-c .tags{gap:var(--s2);flex-wrap:wrap;display:flex}.d-c .tag{border:1px solid var(--border);font:600 var(--fs-label)/1.6 var(--ff-body);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);border-radius:999px;padding:3px 10px}.d-c .band .tag{border-color:var(--band-border);color:var(--on-band-muted)}.d-c .band .tag-live{border-color:var(--accent-on-band);color:var(--accent-on-band)}.d-c [data-project-type]{border:1px solid var(--border);font:600 var(--fs-label)/1.6 var(--ff-body);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);border-radius:999px;margin:0;padding:3px 10px;display:inline-block}.d-c .band [data-project-type]{border-color:var(--band-border);color:var(--on-band-muted)}.d-c [data-project-status]{border:1px solid var(--accent);font:600 var(--fs-label)/1.6 var(--ff-body);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border-radius:999px;margin:0;padding:3px 10px;display:inline-block}.d-c .band [data-project-status]{border-color:var(--accent-on-band);color:var(--accent-on-band)}.d-c [data-project-tagline]{font-family:var(--ff-serif);font-size:var(--fs-sm);color:var(--ink-muted);margin:0}.d-c .band [data-project-tagline]{color:var(--on-band-muted)}.d-c [data-credibility-signal]{font-size:var(--fs-sm);color:var(--ink);margin:0}.d-c .band [data-credibility-signal]{color:var(--on-band)}.d-c .stats{gap:var(--s3);margin-top:var(--s4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.d-c .stats>div{min-width:0}.d-c .stats dt{font:600 var(--fs-label)/1.4 var(--ff-body);letter-spacing:.14em;text-transform:uppercase;color:var(--on-band-muted)}.d-c .stats dd{font:700 var(--fs-h2)/1 var(--ff-display);font-variation-settings:"wdth" 108, "wght" 700;letter-spacing:-.03em;margin-top:var(--s2);color:var(--on-band)}.d-c .shots{gap:var(--s3);padding-bottom:var(--s2);scroll-snap-type:x proximity;grid-auto-columns:190px;grid-auto-flow:column;align-items:start;display:grid;overflow-x:auto}.d-c .shots>li{scroll-snap-align:start;min-width:0}@media (width>=720px){.d-c .shots{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:row;overflow:visible}}.d-c .shots img{border-radius:12px;width:100%;height:auto}@media (width>=1080px){.d-c .shots{gap:var(--s4);grid-template-columns:repeat(3,minmax(0,1fr))}.d-c .shots>li:nth-child(2){margin-top:var(--s5)}.d-c .shots>li:nth-child(3){margin-top:var(--s7)}}.d-c .shots figcaption{margin-top:var(--s2);font:600 var(--fs-label)/1.4 var(--ff-body);letter-spacing:.1em;text-transform:uppercase;color:var(--on-band-muted)}.d-c .detail-shots .shots>li:nth-child(2),.d-c .detail-shots .shots>li:nth-child(3){margin-top:0}.d-c .cta-row{gap:var(--s3);margin-top:var(--s4);flex-wrap:wrap;align-items:center;display:flex}.d-c .btn{align-items:center;gap:var(--s2);min-height:44px;padding:10px var(--s4);font:600 var(--fs-sm)/1.4 var(--ff-body);background:var(--accent);color:var(--canvas);border:1px solid var(--accent);border-radius:999px;text-decoration:none;display:inline-flex}.d-c .band .btn{background:var(--on-band);color:var(--band);border-color:var(--on-band)}.d-c .btn-ghost{color:var(--accent);border-color:var(--accent);background:0 0}.d-c .band .btn-ghost{color:var(--accent-on-band);border-color:var(--accent-on-band);background:0 0}.d-c .badge-slot{text-align:center;aspect-ratio:2.99;height:48px;padding-inline:var(--s2);color:#fff;font:600 9px/1.3 var(--ff-body);letter-spacing:.08em;outline-offset:4px;background:#000;border-radius:8px;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.d-c .badge-slot:focus-visible{outline:3px solid var(--accent)}.d-c .band .badge-slot:focus-visible{outline-color:var(--accent-on-band)}.d-c .links-list{gap:var(--s3);flex-wrap:wrap;align-items:center;margin:0;padding:0;list-style:none;display:flex}.d-c .links-list li{display:contents}.d-c .links-list .link-secondary{font:600 var(--fs-sm)/1.4 var(--ff-body);color:var(--accent);text-decoration:none}.d-c .links-list .link-secondary:hover{text-decoration:underline}.d-c .band .links-list .link-secondary{color:var(--accent-on-band)}.d-c .sec{padding-block:var(--s5)}@media (width>=1080px){.d-c .sec{padding-block:var(--s7)}}.d-c .sec-head{justify-content:space-between;align-items:baseline;gap:var(--s3);margin-bottom:var(--s5);flex-wrap:wrap;display:flex}.d-c .cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;max-width:1100px;display:grid}.d-c .cards>*{min-width:0}.d-c .card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);color:inherit;grid-template-rows:auto 1fr auto;text-decoration:none;transition:box-shadow .2s,transform .2s;display:grid;overflow:hidden}.d-c .card:hover{transform:translateY(-2px);box-shadow:0 4px 20px #0000001f}.d-c .card:hover .card-name{color:var(--accent)}.d-c .card-preview{background:var(--surface);justify-content:center;align-items:center;height:180px;display:flex}.d-c .card-icon{object-fit:cover;border-radius:24px;width:116px;height:116px;box-shadow:0 6px 20px #00000040}.d-c .card-preview-ph{background:var(--surface);width:100%;height:100%;font:700 48px/1 var(--ff-display);color:var(--accent);letter-spacing:-.02em;user-select:none;justify-content:center;align-items:center;display:flex}.d-c .card-body{align-items:flex-start;gap:var(--s2);flex-direction:column;padding:16px;display:flex}.d-c .card-body [data-project-type]{flex-shrink:0}.d-c .card-body .card-name{font:700 1.1rem/1.2 var(--ff-display);letter-spacing:-.02em;color:var(--ink);margin:0}.d-c .card-body [data-project-tagline]{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.d-c .band-head [data-project-tagline],.d-c .band-head [data-credibility-signal]{display:none}.d-c .meta-tags{align-items:center;gap:var(--s2);flex-wrap:wrap;display:flex}.d-c .meta-tags [data-project-tagline],.d-c .meta-tags [data-credibility-signal]{margin-top:var(--s2);flex-basis:100%}.d-c .card-name{color:var(--ink);margin:0}.d-c .split{gap:var(--s5);display:grid}.d-c .split>*{min-width:0}@media (width>=1080px){.d-c .split{column-gap:var(--s6);grid-template-columns:minmax(0,340px) minmax(0,1fr);align-items:start}}.d-c .portrait{aspect-ratio:4/5;border-radius:var(--r);border:1px solid var(--border);background:repeating-linear-gradient(45deg, var(--hatch-a) 0 10px, var(--hatch-b) 10px 20px);text-align:center;width:100%;max-width:220px;padding:var(--s3);place-items:center;display:grid}@media (width>=1080px){.d-c .portrait{max-width:none}}.d-c .facts{margin-top:var(--s4)}.d-c .facts>div{padding-block:var(--s3);border-bottom:1px solid var(--border)}.d-c .facts dt{font:600 var(--fs-label)/1.4 var(--ff-body);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}.d-c .facts dd{margin-top:var(--s1);font-size:var(--fs-sm);overflow-wrap:anywhere}.d-c .about-section{margin-top:var(--s5)}.d-c .about-section h2{margin-bottom:var(--s4)}.d-c .about-section p{font-family:var(--ff-serif);font-size:var(--fs-lede);color:var(--ink-muted);line-height:1.6}.d-c .about-section p+p{margin-top:var(--s3)}.d-c .e404{padding-block:var(--s6) var(--s8)}.d-c .e404 h1{margin-bottom:var(--s4)}.d-c .e404-links{margin-top:var(--s4);gap:var(--s3);flex-direction:column;display:flex}.d-c .e404-links a{font:600 var(--fs-sm)/1 var(--ff-body)}.d-c .detail-header{padding-block:var(--s5) var(--s4)}@media (width>=1080px){.d-c .detail-header{padding-block:var(--s6) var(--s5)}}.d-c .detail-header .meta-tags{margin-top:var(--s3)}.d-c .detail-header .appicon{margin-bottom:var(--s3)}.d-c .detail-section{padding-block:var(--s4);border-top:1px solid var(--border)}@media (width>=1080px){.d-c .detail-section{padding-block:var(--s5)}}.d-c .detail-section h2{margin-bottom:var(--s4)}.d-c .detail-section .prose p:first-child{margin-top:0}.d-c .tech-list{gap:var(--s2);margin-top:var(--s2);flex-wrap:wrap;display:flex}.d-c .tech-item{border:1px solid var(--border);font:400 var(--fs-sm)/1.6 var(--ff-body);color:var(--ink-muted);border-radius:999px;padding:3px 10px}.d-c .back-link{align-items:center;gap:var(--s2);font:600 var(--fs-sm)/1 var(--ff-body);color:var(--ink-muted);margin-top:var(--s5);text-decoration:none;display:inline-flex}.d-c .back-link:hover{color:var(--accent)}.d-c .platform-note{font-size:var(--fs-sm);color:var(--ink-muted);margin-top:var(--s3)}.d-c .ft{background:var(--band);color:var(--on-band);padding-block:var(--s6) var(--s4)}.d-c .ft a{color:var(--on-band)}.d-c .ft-in{gap:var(--s5);display:grid}.d-c .ft-in>*{min-width:0}@media (width>=720px){.d-c .ft-in{gap:var(--s5);grid-template-columns:1.6fr 1fr 1fr}}.d-c .ft-mail{margin-top:var(--s3);overflow-wrap:anywhere;font:700 var(--fs-h3)/1.2 var(--ff-display);font-variation-settings:"wdth" 104, "wght" 700;letter-spacing:-.02em;color:var(--on-band);border-bottom:2px solid var(--accent-on-band);text-decoration:none;display:inline-block}.d-c .ft-mail:hover{color:var(--accent-on-band)}.d-c .ft-col-heading{font:700 var(--fs-sm)/1 var(--ff-body);letter-spacing:.08em;text-transform:uppercase;color:var(--on-band-muted)}.d-c .ft-list,.d-c .ft-list li{margin-top:var(--s3)}.d-c .ft-list a{font-size:var(--fs-sm);color:var(--on-band-muted);text-decoration:none}.d-c .ft-list a:hover{color:var(--accent-on-band)}.d-c .ft-fine{margin-top:var(--s6);padding-top:var(--s3);border-top:1px solid var(--band-rule);gap:var(--s2) var(--s5);font-size:var(--fs-label);color:var(--on-band-muted);flex-wrap:wrap;display:flex}#theme-toggle{vertical-align:middle;align-items:center;display:inline-flex}@media (prefers-reduced-motion:reduce){.d-c *,.d-c :before,.d-c :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
