:root{--paper:#f4f1e8;--panel:#fdfbf5;--ink:#172c25;--muted:#56645f;--green:#21694f;--copper:#a84f32;--line:#d4d8cd;--mono:ui-monospace,"SFMono-Regular",Consolas,monospace;--sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:105px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-underline-offset:5px}a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,summary:focus-visible{outline:3px solid var(--copper);outline-offset:6px}::selection{background:#cfdfba}h1,h2,h3,p{margin:0}.wrap{width:min(1220px,calc(100% - 80px));margin-inline:auto}.skip-link{position:fixed;top:12px;left:12px;z-index:100;background:var(--ink);color:white;padding:12px 20px;transform:translateY(-180%)}.skip-link:focus{transform:none}
/* Identity and navigation */
.topbar{background:rgba(244,241,232,.96);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:86px}.brand{display:flex;gap:15px;align-items:center;text-decoration:none;font:600 10px/1.6 var(--mono);letter-spacing:.1em}.brand-mark{font:650 27px/1 var(--sans);letter-spacing:-.07em}.brand-mark>span{color:var(--copper)}.brand-sub{display:block;font-size:9px;color:var(--muted);letter-spacing:.17em}nav{display:flex;gap:30px}nav a{font-size:13px;text-decoration:none}nav a>span{margin-left:6px;font:10px var(--mono);color:var(--muted)}nav a:hover,.text-link:hover,.footer a:hover{color:var(--green)}
/* Introduction */
.hero{display:grid;grid-template-columns:1.6fr 1fr;gap:70px;padding-block:94px 84px;align-items:end}.eyebrow{font:600 10px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.13em;color:var(--green)}.hero .eyebrow{margin-bottom:25px}h1{font-size:clamp(42px,4.7vw,66px);font-weight:550;line-height:1.08;letter-spacing:-.055em}h1 em{font-style:normal;color:var(--green)}.intro{font-size:18px;line-height:1.75;color:var(--muted);max-width:52ch;margin-top:26px}.hero-links{display:flex;align-items:center;gap:25px;flex-wrap:wrap;margin-top:32px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:28px;background:var(--green);color:var(--panel);padding:12px 18px;font-size:12px;font-weight:600;text-decoration:none;border:1px solid transparent;border-radius:3px;transition:background .18s}.button:hover{background:#164a37}.text-link{font-size:12px;text-decoration:none;border-bottom:1px solid var(--copper);padding-block:5px}.text-link span{margin-left:12px}.index-panel{border-top:2px solid var(--ink);padding-top:17px;margin-bottom:2px}.panel-top{display:flex;justify-content:space-between;align-items:center}.panel-top .eyebrow{margin:0;color:var(--muted)}.index-panel>a{display:flex;align-items:center;gap:18px;padding-block:22px;border-bottom:1px solid var(--line);text-decoration:none}.index-panel>a>span:last-child{margin-left:auto;color:var(--green)}.index-number{font:12px var(--mono);color:var(--copper)}.index-panel strong{display:block;font-size:19px;font-weight:550;letter-spacing:-.025em}.index-panel small{display:block;font-size:12px;color:var(--muted);margin-top:4px}.index-panel>p{font-size:12px;color:var(--muted);padding-top:17px;max-width:40ch}.discipline-strip{border-block:1px solid var(--line)}.discipline-strip>.wrap{display:flex;justify-content:space-between;gap:18px;padding-block:16px}.discipline-strip span{font:10px/1.5 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.discipline-strip span::before{content:"+";color:var(--copper);margin-right:16px}
/* Project directory */
.project-section{padding-block:72px 82px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:50px;margin-bottom:32px}.section-heading h2{font-size:clamp(32px,3.3vw,46px);font-weight:550;letter-spacing:-.045em;line-height:1.2;margin-top:9px}.section-heading>p{max-width:44ch;font-size:14px;color:var(--muted)}.count{display:inline-block;vertical-align:top;font:11px var(--mono);color:var(--copper);margin:7px 0 0 14px;letter-spacing:0}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.project{padding:28px 30px;background:var(--panel);border:1px solid var(--line);border-radius:4px;display:flex;flex-direction:column;min-width:0;scroll-margin-top:105px}.project-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;font:10px/1.5 var(--mono);color:var(--muted);margin-bottom:24px}.project-meta>span:first-child{text-transform:uppercase;letter-spacing:.045em}.status{padding:4px 8px;border:1px solid var(--line);border-radius:3px;white-space:nowrap;font-size:9px;color:#415449}.current{color:#235e35;background:#eaf0df;border-color:#d2dfc2}.archived{color:#775548;background:#f4eae1;border-color:#e5d5c8}.project h3{font-size:25px;line-height:1.2;font-weight:550;letter-spacing:-.035em;margin-bottom:14px}.project-summary{font-size:14px;color:var(--muted);line-height:1.8}.project-note{margin-block:23px 22px;padding-left:14px;border-left:2px solid #c8d5c2}.project-note strong{font-size:12px;font-weight:600}.project-note p{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.75}.engagement-detail{display:grid;grid-template-columns:48px minmax(0,1fr);gap:16px;padding:18px;margin:0 0 22px;background:#f2f4eb;border:1px solid #dde2d5;border-radius:3px}.engagement-icon{width:42px;height:42px;fill:none;stroke:var(--green);stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}.engagement-detail strong{display:block;font-size:12px;font-weight:650;color:var(--ink);margin-bottom:5px}.engagement-detail p{font-size:12px;line-height:1.72;color:var(--muted)}.tags{list-style:none;padding:0;margin:0;display:flex;gap:6px;flex-wrap:wrap}.tags li{font:10px/1.4 var(--mono);padding:5px 7px;background:#eef0e7;color:#46584d;border-radius:2px}.project>.tags{margin-top:auto}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding-block:22px}.metrics strong{display:block;font-size:32px;font-weight:550;letter-spacing:-.05em;color:var(--green)}.metrics span{display:block;font-size:11px;line-height:1.6;color:var(--muted);max-width:22ch}.project details{margin-top:23px;border-top:1px solid var(--line)}summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;font-size:12px;padding-top:15px;list-style:none;font-weight:550}summary::-webkit-details-marker{display:none}summary>span{font:18px var(--mono);color:var(--green);transition:transform .15s}details[open] summary>span{transform:rotate(45deg)}.detail-body{font-size:12px;color:var(--muted);padding-top:16px}.detail-body p+p{margin-top:12px}code{font-family:var(--mono);color:var(--green)}.retired{background:rgba(253,251,245,.45)}.retired .project-note{border-color:#ddcbbd}
/* Warden feature and hardware diagram */
.hobby-section{border-block:1px solid var(--line);background:#e9ede3}.warden-feature{display:grid;grid-template-columns:1fr 1fr;background:#17372e;color:#f4f1e8;border-radius:4px;overflow:hidden;margin-bottom:20px}.warden-copy{padding:36px}.warden-copy .project-meta{color:#bbccc1}.feature-status{color:#dbe5c4;border-color:#60796a}.warden-copy h3{font-size:48px;font-weight:550;letter-spacing:-.05em;line-height:1.1}.warden-copy h3>span{display:block;font-size:22px;letter-spacing:-.025em;color:#c3d7a9;margin-top:7px}.warden-copy>p{font-size:14px;line-height:1.85;color:#c5d2c9;margin-top:22px}.warden-copy .tags{margin-block:24px}.warden-copy .tags li{color:#c5d2c9;background:#2a473b}.button.light{background:#d6e2bd;color:#17372e}.button.light:hover{background:#e7eddb}.system-sketch{display:flex;flex-direction:column;justify-content:center;padding:38px;background:repeating-linear-gradient(0deg,transparent,transparent 27px,#ffffff04 27px,#ffffff04 28px),repeating-linear-gradient(90deg,transparent,transparent 27px,#ffffff04 27px,#ffffff04 28px),#102c25;border-left:1px solid #ffffff12}.sketch-label{font:9px var(--mono);letter-spacing:.1em;color:#9fb8aa;text-transform:uppercase;margin-bottom:28px}.sketch-clients{display:flex;justify-content:center;gap:10px}.sketch-clients>span{border:1px solid #5e7666;padding:8px 14px;border-radius:3px;font:11px var(--mono);color:#cedacb}.sketch-connector{height:45px;display:flex;align-items:center;justify-content:center;position:relative}.sketch-connector::before{content:"";height:100%;width:1px;background:#6f8e70;position:absolute}.sketch-connector>span{position:relative;background:#102c25;padding:3px 9px;color:#9fb8aa;font:8px var(--mono);letter-spacing:.13em}.sketch-warden{border:1px solid #9cb87c;background:#244535;padding:18px;display:flex;align-items:center;gap:12px;border-radius:3px}.sketch-warden strong{font-size:19px;font-weight:550;letter-spacing:-.03em}.sketch-warden small{font:8px/1.6 var(--mono);letter-spacing:.08em;color:#c4d5b6;margin-left:auto;max-width:15ch}.signal{width:7px;height:7px;background:#c2d992;border-radius:50%;box-shadow:0 0 12px #b6d08b40}.sketch-branches{height:30px;width:53%;margin-inline:auto;border-inline:1px solid #6f8e70;border-top:1px solid #6f8e70;margin-top:20px;position:relative}.sketch-branches::before{content:"";position:absolute;left:50%;top:-21px;height:20px;border-left:1px solid #6f8e70}.sketch-gpus{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sketch-gpus>div{border:1px solid #496450;background:#18382a;padding:16px 12px;border-radius:3px}.sketch-gpus span{display:block;font:8px var(--mono);color:#aec894;letter-spacing:.06em}.sketch-gpus strong{display:block;font-size:13px;font-weight:550;margin-block:7px 3px}.sketch-gpus small{color:#b2c5b4;font:11px var(--mono)}.sketch-foot{font:9px var(--mono);color:#9fb8aa;text-align:center;margin-top:24px}.hobby-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.hobby-grid .project{padding:25px}.hobby-grid .project h3{font-size:23px}.project-link{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:23px;padding-top:15px;border-top:1px solid var(--line);text-decoration:none;font-size:12px;font-weight:550}.project-link:hover{color:var(--green)}.game-project{border-top:3px solid var(--copper)}
.footer{display:flex;align-items:center;justify-content:space-between;gap:30px;padding-block:37px 44px}.footer-name{font-size:16px;font-weight:550;text-decoration:none}.footer-name span{color:var(--green);margin-left:8px}.footer p{font:9px/1.7 var(--mono);color:var(--muted);margin-top:8px;text-transform:uppercase;letter-spacing:.08em}.footer-links{display:flex;gap:25px;font-size:12px}.footer-links a{text-decoration:none}
@media(min-width:1500px){.hero{padding-block:110px 100px}}
@media(max-width:1050px){.hero{gap:35px;grid-template-columns:1.4fr 1fr}h1{font-size:48px}.hobby-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.game-project{grid-column:1/-1}.system-sketch{padding:28px}.warden-copy{padding:28px}.warden-copy .project-meta{flex-wrap:wrap}.discipline-strip span{font-size:9px}}
@media(max-width:760px){.wrap{width:calc(100% - 40px)}.header-inner{min-height:76px;gap:15px}.brand{font-size:8px;gap:10px}.brand-sub{font-size:8px}.brand-mark{font-size:24px}nav{gap:16px}nav a{font-size:12px}nav a>span{display:none}.hero{grid-template-columns:1fr;padding-block:54px 45px;gap:38px}h1{font-size:clamp(38px,7vw,52px)}.intro{font-size:16px;max-width:52ch}.hero-links{gap:22px;margin-top:24px}.index-panel{max-width:none}.index-panel>a{padding-block:17px}.index-panel>p{max-width:none}.discipline-strip>.wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px}.discipline-strip span::before{margin-right:8px}.section-heading{display:block;margin-bottom:25px}.section-heading>p{margin-top:18px;max-width:54ch}.project-section{padding-block:48px}.project-grid{grid-template-columns:1fr}.project{padding:25px}.warden-feature{grid-template-columns:1fr}.warden-copy h3{font-size:44px}.system-sketch{border-left:0;border-top:1px solid #ffffff12;padding:30px}.hobby-grid{grid-template-columns:1fr}.game-project{grid-column:auto}.footer{align-items:start;flex-direction:column;gap:23px}.footer-links{flex-wrap:wrap;gap:22px}}
@media(max-width:390px){.brand>span:last-child{max-width:125px}.brand-sub{letter-spacing:.08em}nav{gap:12px}.project{padding:22px 20px}.project-meta{font-size:9px;gap:8px}.status{font-size:8px}.sketch-clients>span{padding:8px 10px;font-size:10px}.sketch-gpus strong{font-size:12px}.hero-links{align-items:flex-start;flex-direction:column;gap:13px}}
/* Interactive application connection */
.case-study-actions{display:flex;flex-wrap:wrap;gap:12px}
.button.outline-light{background:transparent;color:#d6e2bd;border-color:#8ba77b}
.button.outline-light:hover{background:#2a473b}
.sketch-clients{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:min(100%,260px);align-self:center;gap:10px}
.sketch-clients button{border:1px solid #5e7666;background:transparent;padding:10px 6px;min-height:44px;border-radius:3px;font:11px var(--mono);color:#cedacb;cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.sketch-clients button:hover{background:#244535;border-color:#9cb87c}
.sketch-clients button[aria-pressed="true"]{background:#d6e2bd;color:#17372e;border-color:#d6e2bd}
.sketch-clients button:focus-visible{outline:2px solid #e8b688;outline-offset:4px}
.sketch-connector{width:min(100%,260px);align-self:center;height:52px;flex:none;align-items:flex-end;padding-bottom:9px}
.sketch-connector::before{left:calc(75% + 2.5px);top:0;height:15px;background:#aac68b;transition:left .25s ease}
.sketch-connector::after{content:"";position:absolute;top:14px;left:50%;width:calc(25% + 2.5px);height:1px;background:#aac68b;transition:left .25s ease}
.sketch-connector i{position:absolute;top:14px;bottom:0;left:50%;width:1px;background:#aac68b}
.sketch-connector>span{z-index:1;white-space:nowrap}
.system-sketch[data-client="writer"] .sketch-connector::before,.system-sketch[data-client="writer"] .sketch-connector::after{left:calc(25% - 2.5px)}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
/* Case studies and source access */
.access-note{display:grid;grid-template-columns:1fr 1fr;gap:48px;padding-block:48px;border-bottom:1px solid var(--line)}
.access-note h2{font-size:27px;line-height:1.25;letter-spacing:-.035em;font-weight:550;margin-top:10px}
.access-note p:not(.eyebrow){font-size:14px;line-height:1.8;color:var(--muted);margin-bottom:17px}
.access-note .text-link{display:inline-block}
.case-study{max-width:1100px}
.case-back{display:inline-block;margin-top:32px;font-size:12px;text-decoration:none;color:var(--muted)}
.case-back:hover{color:var(--green)}
.case-intro{padding-block:55px 50px;border-bottom:1px solid var(--line)}
.case-intro h1{font-size:clamp(34px,5vw,64px);margin-top:20px;overflow-wrap:anywhere}
.case-lede{font-size:clamp(23px,3vw,33px);line-height:1.3;color:var(--green);letter-spacing:-.035em;margin-top:16px}
.case-intro .intro{max-width:72ch;font-size:17px}
.case-intro .tags{margin-top:26px}
.case-section{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);gap:65px;padding-block:50px;border-bottom:1px solid var(--line)}
.case-section h2{font-size:31px;line-height:1.2;letter-spacing:-.035em;font-weight:550;margin-top:13px}
.case-prose{font-size:15px;line-height:1.85;color:var(--muted)}
.case-prose p+p{margin-top:18px}.case-prose strong{font-weight:600;color:var(--ink)}
.case-prose a{color:var(--green)}
.case-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding-block:30px;border-bottom:1px solid var(--line)}
.case-roles article{background:var(--panel);padding:24px;border:1px solid var(--line);border-radius:4px}
.case-roles h3{font-size:19px;line-height:1.3;font-weight:550;letter-spacing:-.025em;margin:13px 0 10px}
.case-roles p{font-size:13px;color:var(--muted);line-height:1.8}
@media(max-width:760px){.access-note{grid-template-columns:1fr;gap:22px;padding-block:36px}.case-intro{padding-block:36px}.case-intro .intro{font-size:16px}.case-section{grid-template-columns:1fr;gap:24px;padding-block:36px}.case-section h2{font-size:28px}.case-roles{grid-template-columns:1fr;gap:14px}.case-roles article{padding:22px}.case-prose{font-size:14px}}
@media(max-width:390px){.header-inner{flex-wrap:wrap;padding-block:14px;gap:10px}.header-inner nav{margin-left:auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}
