@font-face{font-family:Plex;src:url('/assets/fonts/IBMPlexSans-Regular.ttf');font-display:swap;font-weight:400}@font-face{font-family:Plex;src:url('/assets/fonts/IBMPlexSans-Medium.ttf');font-display:swap;font-weight:500}@font-face{font-family:Mono;src:url('/assets/fonts/IBMPlexMono-Regular.ttf');font-display:swap}
:root{color-scheme:dark;--ink:#f4f6f8;--body:#c3cbd4;--support:#a8b2bc;--line:#ffffff26;--cyan:#a9e8ea;--gold:#f4c88c;--p:0;--fs-card:20px;--fs-body:16px;font-family:Plex,Arial,sans-serif;background:#000;color:var(--ink)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#000}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{touch-action:manipulation}a:focus-visible,button:focus-visible,#inspect:focus-visible{outline:2px solid var(--cyan);outline-offset:5px}button:disabled{opacity:.35;cursor:default}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip:focus{position:fixed;z-index:20;background:#000;padding:20px}#universe{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}.reading-shade{position:fixed;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,#000b,transparent 55%)}header{height:88px;position:absolute;inset:0 5%;z-index:6;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff20;font-size:14px}.wordmark{display:inline-flex;align-items:center;gap:9px;font:500 17px Plex;letter-spacing:.09em}.wordmark b{color:var(--support);font-weight:inherit}.wordmark .icon{color:var(--cyan);font-size:1.1rem}.nav-work span{color:var(--gold);padding-left:14px}#journey{height:240svh;position:relative;z-index:2}.scene-ui{position:sticky;top:0;height:100svh;min-height:640px;overflow:hidden}.identity{position:absolute;top:24%;left:5%;width:40%;max-width:600px;opacity:calc(1 - var(--intro-out,0));transform:translateY(calc(var(--intro-out,0)* -35px));pointer-events:auto}.eyebrow{font:12px/1.6 Mono;letter-spacing:.12em;color:var(--cyan);margin:0 0 25px}.eyebrow>span{display:inline-block;width:6px;height:6px;background:var(--cyan);border-radius:50%;margin-right:10px}h1{font-weight:500;letter-spacing:-.02em;font-size:clamp(42px,5.35vw,88px);line-height:1.03;margin:0 0 25px}.period{color:var(--gold)}.intro{max-width:405px;font-size:17px;line-height:1.7;color:var(--body);margin:0 0 30px}.actions{display:flex;gap:12px}.actions a{padding:15px 19px;border:1px solid #ffffff59;font-size:14px;font-weight:500;background:#090b0dbb;display:flex;align-items:center;gap:23px}.actions .primary{color:#13191b;background:#e6f1ed;border-color:#e6f1ed}.actions a:hover{border-color:var(--cyan)}.social{display:flex;gap:22px;font:12px Plex;color:var(--support);margin-top:22px}.social a:hover{color:white}.scene-caption{margin-top:50px;font:12px/1.8 Mono;color:#82929b;letter-spacing:.05em}.scene-caption span{color:#a9b0b5;letter-spacing:0}#inspect{position:absolute;left:49%;top:32%;width:43%;height:42%;border-radius:35%;touch-action:pan-y;cursor:grab}#inspect:active{cursor:grabbing}.craft-tools{position:absolute;right:6%;bottom:15%;display:flex;align-items:center;gap:12px;font-size:12px}.craft-tools>span{font:11px Mono;letter-spacing:.08em;color:#b4c0c2;margin-right:10px}.craft-tools button{border:1px solid #ffffff30;background:#050708db;min-height:44px;padding:0 15px;border-radius:3px}.craft-tools button:hover{border-color:#b8d9df}.scene-foot{position:absolute;bottom:28px;left:5%;right:5%;display:flex;justify-content:space-between;gap:20px;font:10px Mono;letter-spacing:.08em;color:#8e9ca5;align-items:center}.scene-foot>span:last-child{max-width:190px;line-height:1.7;text-align:right}.scroll-cue span{display:inline-block;margin-left:15px;color:var(--gold);font-size:22px}.etl-stack{position:absolute;left:5%;right:5%;top:13%;display:flex;flex-direction:column;gap:24px;pointer-events:none}.etl-title{opacity:var(--etl-in,0);pointer-events:none}.etl-title h2{font-size:clamp(32px,4vw,62px);font-weight:400;letter-spacing:-.045em;line-height:1.05;margin:0 0 18px}.etl-title p:last-child{color:#a9b0b5;line-height:1.7;font-size:16px}.pipeline{flex-shrink:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(6,1fr);list-style:none;gap:0;opacity:var(--etl-in,0);visibility:hidden}.pipeline li{border-top:1px solid #a6d5d577;border-right:1px solid #ffffff17}.pipeline button{display:block;text-align:left;width:100%;background:#060a0dde;border:0;padding:16px 12px;min-height:115px}.pipeline span{font:10px Mono;letter-spacing:.05em;color:#8eb3b9}.pipeline strong{display:block;font-size:17px;font-weight:400;margin:8px 0}.pipeline small{font-size:12px;line-height:1.5;color:#a0aab0}.pipeline button[aria-pressed=true]{background:#182526ee}.is-etl .pipeline{visibility:visible}.is-etl .identity{visibility:hidden}.is-etl #inspect{pointer-events:none}.is-etl .craft-tools{bottom:8%;}.fallback{display:none}.failed .fallback,.static .fallback{display:block;position:absolute;right:6%;top:40%;width:38%;font-size:17px;line-height:1.8;color:var(--body)}.failed #inspect,.static #inspect{display:none}.failed #universe,.static #universe{display:none}.failed .craft-tools,.static .craft-tools{display:none}#evidence{position:relative;z-index:2;margin:0 5%;padding:120px 0 100px}.evidence-heading h2{font-size:clamp(30px,4vw,60px);letter-spacing:-.045em;font-weight:400;line-height:1.13;margin-bottom:60px}.evidence-heading h2 span{color:var(--support)}article{display:grid;grid-template-columns:1.2fr 1fr;gap:8%;border-top:1px solid var(--line);padding:38px;background:linear-gradient(120deg,#090d11f5,#090d1180)}h3{font-weight:400;font-size:28px;letter-spacing:-.025em;margin:0 0 20px}article p:not(.eyebrow){color:var(--body);line-height:1.8;font-size:17px;max-width:530px}article a{display:inline-block;padding:15px 0;border-bottom:1px solid #87bdc4;font-size:15px}article a span{margin-left:28px;color:var(--gold)}dl{display:grid;grid-template-columns:1fr;gap:24px;margin:0}dt{font:11px Mono;color:var(--cyan);letter-spacing:.1em}dd{margin:8px 0 0;font-size:38px;letter-spacing:-.03em}dd span{font-size:14px;color:var(--support);letter-spacing:0;margin-left:10px}.boundary{font-size:13px;line-height:1.7;color:var(--support);padding:15px 0;border-bottom:1px solid var(--line)}.supporting{display:grid;grid-template-columns:1fr 1fr;gap:36px;margin-top:40px}.supporting a{padding:24px 0;border-bottom:1px solid var(--line)}.supporting span{font:11px Mono;color:var(--cyan)}.supporting h3{margin-top:15px;font-size:var(--fs-card)}.supporting p{font-size:var(--fs-body);line-height:1.6;color:var(--body)}footer{position:relative;z-index:2;margin:0 5%;padding:35px 0;border-top:1px solid var(--line);display:flex;gap:30px;justify-content:space-between;font:11px/1.8 Mono;color:var(--support)}#reticle{position:fixed;z-index:9;width:28px;height:28px;border:1px solid #c1e7e366;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%);transition:opacity .2s}.inspect-hover #reticle{opacity:1}
@media(max-width:760px){header{height:64px}.wordmark{font-size:14px}.nav-work{font-size:12px}#journey{height:270svh}.scene-ui{min-height:700px}.identity{top:13%;width:90%;max-width:none}h1{font-size:clamp(35px,9vw,53px);line-height:1.05;margin-bottom:15px}.eyebrow{font-size:10px;margin-bottom:15px;letter-spacing:.07em}.intro{font-size:16px;line-height:1.55;max-width:310px;margin-bottom:18px}.actions a{font-size:12px;padding:12px 15px;gap:15px;min-height:44px}.social{margin-top:15px;font-size:11px}.scene-caption{display:none}#inspect{left:8%;top:51%;width:84%;height:29%}.craft-tools{right:5%;left:5%;bottom:12%;justify-content:flex-end;gap:8px}.craft-tools>span{font-size:9px;margin-right:auto}.craft-tools button{font-size:11px;padding:0 10px}.scene-foot{bottom:16px;font-size:9px;gap:10px}.scene-foot>span:last-child{display:none}.scroll-cue{max-width:170px;font-size:8px}.etl-stack{display:contents}.etl-title{position:absolute;top:12%;left:5%}.etl-title h2{font-size:31px}.etl-title h2 br{display:none}.etl-title .eyebrow{font-size:9px}.etl-title p:last-child{display:none}.pipeline{position:absolute;left:39%;right:5%;top:25%;bottom:13%;display:grid;grid-template-columns:1fr;grid-template-rows:repeat(6,1fr)}.pipeline li{border-top:1px solid #ffffff26;border-right:0}.pipeline button{min-height:0;height:100%;padding:8px 12px}.pipeline strong{font-size:15px;margin:3px 0}.pipeline span{font-size:9px}.pipeline small{font-size:11px}.is-etl .craft-tools{bottom:6%}.is-etl .craft-tools>span{display:none}.is-etl .scene-foot{display:none}.reading-shade{background:linear-gradient(#0008,transparent 60%)}#evidence{padding:75px 0}.evidence-heading h2{font-size:34px}article{grid-template-columns:1fr;padding:22px;gap:35px}h3{font-size:25px}article p:not(.eyebrow){font-size:15px}dl{gap:20px}dd{font-size:31px}.supporting{grid-template-columns:1fr;gap:10px}footer{flex-direction:column;gap:10px}.fallback{left:5%;right:5%;width:90%!important;top:58%!important;font-size:14px!important}}
#inspect[aria-disabled=true]{outline:none;pointer-events:none}
/* Public-page design coordination (owner-authorized site-wide pass): nav, project
   cards, capabilities, career and conversion sections use the same tokens (--ink,
   --muted, --line, --cyan, --gold) and panel/typography language already established
   by #evidence's article/dl/supporting rules above, extended rather than replaced. */
.site-nav{display:flex;align-items:center;gap:2px;font:13px Plex}.site-nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border-radius:3px;color:var(--support);transition:color .12s,background .12s}.site-nav a:hover{color:var(--ink);background:#ffffff0d}.nav-toggle{display:none;border:1px solid #ffffff35;background:#090b0dbb;color:var(--ink);font:12px Mono;letter-spacing:.08em;padding:9px 14px;border-radius:3px}
#capabilities,#career,#conversion{position:relative;z-index:2;margin:0 5%;padding:90px 0}
.evidence-lede{max-width:640px;color:var(--body);line-height:1.8;font-size:17px;margin:18px 0 0}
.tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:18px 0}.tags li{font:11px Mono;letter-spacing:.04em;color:var(--support);border:1px solid var(--line);padding:5px 10px;border-radius:3px}
.evidence-line{font:12px Mono;color:var(--support);letter-spacing:.04em;margin:14px 0 0}
.projects__pair{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:36px}
/* .project-card is an <article>, so without an explicit `display` it was
   inheriting the generic `article{display:grid;grid-template-columns:1.2fr
   1fr}` rule below (meant for the flagship card's single content-div + dl
   pair) — that silently turned each card's 7 direct children (eyebrow, h3,
   p, evidence-line, tags, disclose, link) into an interleaved 2-column
   auto-placed grid instead of a vertical stack. `display:block` opts back
   out to normal flow; the outer 2-column pairing above only needed a plain
   equal-width grid once this was fixed — no float/clearfix workaround
   needed, confirmed by re-rendering (see CINEMATIC_PROOF_STATUS.md). */
.project-card{display:block;border-top:1px solid var(--line);padding:32px 24px 32px}.project-card h3{font-size:var(--fs-card);margin:14px 0 12px}.project-card>p:not(.eyebrow):not(.evidence-line){color:var(--body);line-height:1.75;font-size:var(--fs-body);max-width:480px}
/* .evidence-line is a plain <p>, so the generic `article p:not(.eyebrow)`
   rule below (written for the flagship project's <article>) also matches
   it and — at (0,1,1) vs .evidence-line's own (0,1,0) — wins on font-size
   regardless of source order, rendering this Mono metadata line at 17px
   instead of the 12px .evidence-line itself declares. Card-scoped so it
   outranks that rule without touching either the flagship article's own
   text or .evidence-line's base declaration (font-family/color/margin
   still come from there unchanged); ~14px keeps it legible while reading
   as subordinate metadata rather than body copy. */
.project-card .evidence-line{font-size:14px;line-height:1.6}
.project-card a{display:inline-block;margin-top:22px;padding:15px 0;border-bottom:1px solid #87bdc4;font-size:15px}.project-card a span{margin-left:20px;color:var(--gold)}
.disclose{margin-top:20px}.disclose summary{list-style:none;display:flex;align-items:center;gap:9px;cursor:pointer;font:12px Mono;color:var(--cyan);letter-spacing:.04em}.disclose summary::-webkit-details-marker{display:none}.disclose summary .icon{width:.85em;height:.85em;transition:transform .18s}.disclose[open] summary .icon{transform:rotate(90deg)}
.detail-list{list-style:none;margin:14px 0 0;padding:16px 0 0;border-top:1px solid var(--line);display:grid;gap:10px}.detail-list li{font-size:14px;line-height:1.6;color:var(--body)}.detail-list strong{color:var(--ink);font-weight:500}
.capabilities{list-style:none;padding:0;margin:44px 0 0;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line)}
.capabilities li{background:#05070aee;padding:26px 24px}.cap-head{display:flex;align-items:center;gap:10px;font:11px Mono;letter-spacing:.08em;color:var(--cyan);margin:0}.capabilities h3{font-size:var(--fs-card);margin:14px 0 10px}.capabilities>li>p:last-child{font-size:var(--fs-body);line-height:1.6;color:var(--body);margin:0}
.career{list-style:none;padding:0;margin:40px 0 0;display:grid;gap:0}.career li{display:grid;grid-template-columns:150px 1fr;gap:30px;padding:24px 14px;margin:0 -14px;border-top:1px solid var(--line);background:#080c10db}.career time{font:12px Mono;color:var(--support);letter-spacing:.04em}.career h3{font-size:var(--fs-card);font-weight:400;margin:0 0 8px}.career p{font-size:var(--fs-body);line-height:1.7;color:var(--body);margin:0;max-width:560px}
.education{margin-top:24px;margin-left:-14px;margin-right:-14px;padding-top:24px;padding-left:14px;padding-right:14px;border-top:1px solid var(--line);font-size:14px;color:var(--body);line-height:1.7;background:#080c10db}.education strong{color:var(--ink);font-weight:500;margin-right:8px}
.conv-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px}.conv-actions a{display:flex;align-items:center;gap:12px;padding:15px 20px;border:1px solid #ffffff35;font-size:14px;background:#090b0dbb}.conv-actions .primary{color:#13191b;background:#e6f1ed;border-color:#e6f1ed}.conv-actions .primary .icon{color:#13191b}.conv-actions a:hover{border-color:var(--gold)}
.note{margin-top:22px;font:13px Mono;color:var(--support)}
.stage-attrib{font:11px Mono;color:var(--cyan);letter-spacing:.04em;margin:10px 0 0!important}
.footer-id{display:flex;flex-direction:column;gap:4px}
@media(max-width:1000px){
 .nav-toggle{display:block}
 .site-nav{position:fixed;top:64px;left:0;right:0;z-index:7;flex-direction:column;align-items:flex-start;gap:0;background:#05070c;border-bottom:1px solid var(--line);padding:8px 5% 18px;transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .16s,transform .16s}
 .site-nav a{padding:12px 0;width:100%}
 .site-nav.is-open{opacity:1;pointer-events:auto;transform:translateY(0)}
 /* 7 capability cards: a fixed 4-column grid (4+3) avoids the accidental
    single-card orphan row that a fluid auto-fit track can land on at
    in-between widths (7 mod 2, 3 or 6 all leave one stranded card). Below
    1000px there isn't room for 4 comfortable columns, so stack to 1. */
 .capabilities{grid-template-columns:1fr}
}
@media(max-width:760px){
 .nav-toggle{position:relative;z-index:8}
 .site-nav{top:64px}
 #capabilities,#career,#conversion{padding:56px 0}
 .evidence-lede{font-size:15px}
 .projects__pair{grid-template-columns:1fr;gap:0}
 .project-card{padding:26px 16px 26px}
 .career li{grid-template-columns:1fr;gap:6px}
 .conv-actions{flex-direction:column}.conv-actions a{justify-content:center}
 footer{align-items:flex-start}
}
.failed #journey,.static #journey{height:auto}.failed .scene-ui,.static .scene-ui{position:relative;height:auto;min-height:0;padding:120px 5% 30px}.failed .identity,.static .identity,.failed .etl-stack,.static .etl-stack,.failed .etl-title,.static .etl-title,.failed .pipeline,.static .pipeline{position:static;opacity:1;visibility:visible;width:100%;transform:none;pointer-events:auto}.failed .etl-title,.static .etl-title{margin-top:40px}.failed .fallback,.static .fallback{position:static;margin-top:30px;width:100%}.failed .scene-foot,.static .scene-foot{display:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}#reticle{display:none}}@media(forced-colors:active){#universe,.reading-shade,#reticle{display:none}a,button{border:1px solid ButtonText!important}.identity,.etl-title,.pipeline{opacity:1!important}.pipeline{visibility:visible;position:relative;left:auto;right:auto;top:auto;bottom:auto;grid-template-columns:1fr}.scene-ui{position:relative;height:auto;min-height:0;padding:110px 5% 20px}.identity,.etl-stack,.etl-title{position:static;width:100%;visibility:visible!important;pointer-events:auto}.etl-title{margin-top:50px}#journey{height:auto}#inspect,.craft-tools,.scene-foot{display:none}}
