/* Digital portfolio interface. Shared component behavior lives in style.css. */
:root{--cyan:#7DE4D2;--panel:rgba(16,25,21,.88)}
body{background-image:radial-gradient(ellipse at 85% 0,rgba(54,112,93,.12),transparent 48%)}
.nav{background:rgba(12,15,13,.92);border-bottom:1px solid var(--line);backdrop-filter:blur(14px)}
.nav.scrolled{background:rgba(12,15,13,.97)}
.nav .wrap{gap:14px}
.brand{font-size:16px;white-space:nowrap}
.brand .mark{border-radius:3px;background:linear-gradient(135deg,var(--accent),var(--cyan));box-shadow:0 0 24px #baf56b16;font-weight:600;font-size:14px;width:32px;height:32px}
.navlinks{margin-left:auto;gap:0}
.navlinks a{font-size:13px;padding:9px 12px;border-radius:4px}
.navlinks a.active::after{left:12px;right:12px;bottom:0;height:1px}
.navcta{margin-left:12px;padding:9px 14px!important;border-radius:4px}
.navcta:hover{box-shadow:none}
.burger{border-radius:4px;flex:none}
.btn{border-radius:4px;padding:13px 21px;font-family:var(--sans);font-size:14px}
.btn.p,.btn.primary{background:linear-gradient(110deg,var(--accent),#A1ECAA);color:var(--accent-ink);box-shadow:0 5px 28px #baf56b16;border:1px solid var(--accent)}
.btn.p:hover,.btn.primary:hover{background:#D7FB8D;transform:translateY(-2px);box-shadow:0 6px 35px #baf56b28}
.btn.g{border-radius:4px;background:transparent}
.eyebrow{font-size:10px;letter-spacing:.13em;line-height:1.7;font-weight:500}
.text-link{font-size:14px;display:inline-flex;gap:20px;align-items:center;border-bottom:1px solid var(--line2);padding:7px 0}
.text-link:hover{color:var(--accent);border-color:var(--accent)}
.signal-dot{display:inline-block;width:6px;height:6px;flex:none;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #c8f36b77;vertical-align:middle;margin-right:9px}
.intro{position:relative;isolation:isolate;padding-top:calc(var(--nav-h) + 76px);padding-bottom:80px;display:grid;grid-template-columns:.95fr 1.05fr;gap:52px;align-items:center}
.intro::before{content:"";position:absolute;z-index:-1;inset:65px 0 0 25%;background-image:linear-gradient(#7de4d226 1px,transparent 1px),linear-gradient(90deg,#7de4d226 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse,#000,transparent 70%);pointer-events:none}
.intro::after{content:"";position:absolute;z-index:-1;width:55%;height:75%;right:0;top:14%;background:radial-gradient(ellipse,#53c6ad28,transparent 66%);filter:blur(30px);pointer-events:none}
.intro-copy{padding:12px 0;min-width:0}.intro-copy .eyebrow{font-size:9px;letter-spacing:.1em}
.intro h1{font-size:clamp(45px,5.9vw,78px);letter-spacing:-.065em;line-height:1.02;margin-top:29px;text-wrap:initial}
.intro h1>span{background:linear-gradient(115deg,#D5FA86 8%,#7DE4D2 94%);background-clip:text;-webkit-background-clip:text;color:transparent;text-shadow:0 0 45px #a5f39816;white-space:nowrap}
.terminal-caret{font-family:var(--mono);font-size:.65em;margin-left:4px;color:var(--cyan);animation:caret-pulse 2.4s ease-in-out infinite}
@keyframes caret-pulse{0%,100%{opacity:1}50%{opacity:.25}}
.intro-lede{color:var(--muted);font-size:18px;line-height:1.6;margin-top:26px}
.intro-actions{display:flex;align-items:center;gap:28px;margin-top:29px;flex-wrap:wrap}
.intro-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:30px;font:10px var(--mono);color:var(--faint)}
.intro-tags span{border:1px solid var(--line);background:#17231a66;padding:5px 9px}
.project-console{position:relative;min-width:0;border:1px solid #4a6550;border-radius:6px;background:var(--panel);box-shadow:0 25px 65px #0006,0 0 55px #7de4d20a;transform:perspective(900px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .25s var(--ease);overflow:hidden}
.js .project-console.reveal.in{transform:perspective(900px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg))}
.project-console::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(350px at var(--light-x,50%) var(--light-y,0%),#bff8bc10,transparent 70%);opacity:0;transition:opacity .3s}
.project-console:hover::after{opacity:1}
.console-bar{padding:14px 18px;display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid #3a5746;background:linear-gradient(90deg,#233e2744,#173a3544);font:9px var(--mono);letter-spacing:.1em;color:var(--muted)}
.console-bar>span:last-child{color:var(--cyan)}
.signal-link{display:block;position:relative}.signal-link:focus-visible{outline-offset:-5px}
.project-visual{height:265px;position:relative;overflow:hidden;background:#07100d}
.project-visual>img{width:100%;height:100%;object-fit:cover;object-position:center;transition:filter .3s,transform .6s var(--ease)}
.project-visual[data-kind="code"]>img{object-fit:contain;padding:18px;background-image:linear-gradient(#7de4d20a 1px,transparent 1px),linear-gradient(90deg,#7de4d20a 1px,transparent 1px);background-size:24px 24px}
.project-visual::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 65%,#08120ebb),repeating-linear-gradient(0deg,#0000,#0000 3px,#0001 4px);pointer-events:none}
.signal-link:hover .project-visual>img{filter:brightness(1.1)}
.viewfinder{position:absolute;inset:16px;border:1px solid #defdd922;z-index:1;pointer-events:none}
.viewfinder::before,.viewfinder::after{content:"";position:absolute;width:20px;height:20px;border-color:var(--accent);border-style:solid}
.viewfinder::before{top:-1px;left:-1px;border-width:1px 0 0 1px}.viewfinder::after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}
.scan-line{position:absolute;inset:0;opacity:0;background:linear-gradient(transparent 48%,#7de4d23b 50%,transparent 52%);pointer-events:none;transform:translateY(-100%);z-index:2}
.signal-link:hover .scan-line,.signal-link:focus-visible .scan-line{animation:project-scan 1.5s var(--ease) both}
@keyframes project-scan{0%{opacity:0;transform:translateY(-85%)}20%{opacity:1}100%{opacity:0;transform:translateY(85%)}}
.console-caption{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:19px 20px;background:linear-gradient(100deg,#142419,#0d1c18);border-top:1px solid var(--line)}
.console-caption>div>span{font:8px var(--mono);letter-spacing:.09em;color:var(--cyan)}
.console-caption h2{font-size:26px;letter-spacing:-.035em;margin-top:7px}
.console-open{display:grid;place-items:center;width:40px;height:40px;border:1px solid #55714b;color:var(--accent);font-size:24px;transition:background .2s}
.signal-link:hover .console-open{background:var(--accent-deep)}
.console-tabs{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line)}
.console-tabs button{min-height:49px;border:0;border-right:1px solid var(--line);background:#101914;color:var(--faint);font:9px var(--mono);cursor:pointer;position:relative}
.console-tabs button:last-child{border-right:0}.console-tabs button>span{font-size:11px;margin-left:7px;color:var(--muted)}
.console-tabs button[aria-selected="true"]{background:linear-gradient(#baf56b12,#baf56b05);color:var(--accent)}
.console-tabs button[aria-selected="true"]>span{color:var(--accent)}
.console-tabs button[aria-selected="true"]::after{content:"";position:absolute;bottom:0;left:20%;right:20%;height:2px;background:var(--accent);box-shadow:0 0 12px #c8f36b77}
.console-tabs button:focus-visible{outline-offset:-4px}
.section-top{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:30px}
.section-top h2{font-size:38px;letter-spacing:-.045em;margin-top:12px}.section-code{font:9px var(--mono);color:var(--faint);padding-bottom:4px}
.work-section{padding-top:34px;padding-bottom:64px;border-top:1px solid var(--line)}
.work-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:20px}
.work-card{position:relative;border:1px solid var(--line2);border-radius:6px;overflow:hidden;display:flex;flex-direction:column;background:linear-gradient(135deg,#16231a,#111814);transition:border-color .25s,transform .25s,box-shadow .25s}
.work-card:hover{border-color:#6d945e;transform:translateY(-4px);box-shadow:0 14px 35px #0004,0 0 25px #c8f36b08}
.work-image{position:relative;overflow:hidden;height:320px;background:#0e1110;border-bottom:1px solid var(--line2)}
.work-image::after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(4,8,5,.85));pointer-events:none}
.work-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.work-card:hover img{transform:scale(1.035)}
.work-code .work-image{display:flex;justify-content:center;align-items:flex-start;padding:28px 28px 0;background:radial-gradient(ellipse at 50% 100%,#34553680,transparent 70%),linear-gradient(#7de4d20a 1px,transparent 1px),linear-gradient(90deg,#7de4d20a 1px,transparent 1px),#102019;background-size:auto,28px 28px,28px 28px,auto}
.work-code .work-image img{width:65%;max-width:290px;height:auto;border:1px solid var(--line2);border-radius:5px;box-shadow:0 0 30px #0006}
.work-type{position:absolute;bottom:18px;left:22px;z-index:2;font:10px var(--mono);letter-spacing:.07em;color:var(--accent);padding:5px 8px;background:#09120dd9;border:1px solid #74905d66;backdrop-filter:blur(10px)}
.work-body{display:flex;gap:17px;align-items:flex-start;padding:25px 22px;flex:1}
.work-body>div{flex:1;min-width:0}.work-body h3{font-size:27px;letter-spacing:-.035em}
.work-body p{color:var(--muted);font-size:14px;line-height:1.7;margin-top:9px}
.work-arrow{font-size:25px;color:var(--accent);line-height:1;transition:transform .25s}
.work-card:hover .work-arrow,.photo-strip:hover .work-arrow{transform:translate(3px,-3px)}
.work-tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:20px;font:9px var(--mono);color:var(--cyan)}
.work-tags span{border:1px solid #314c40;padding:5px 7px;background:#10221a;border-radius:2px}
.photo-strip{margin-top:20px;position:relative;display:block;height:340px;overflow:hidden;border:1px solid var(--line2);border-radius:6px;background:var(--surface);transition:border-color .25s}
.photo-strip>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 46%;transition:transform .6s var(--ease)}
.photo-strip:hover{border-color:var(--cyan)}.photo-strip:hover>img{transform:scale(1.025)}
.photo-strip>div{position:relative;z-index:1;height:100%;padding:33px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;background:linear-gradient(transparent 30%,#06140ddb)}
.photo-strip .eyebrow{color:var(--cyan)}.photo-strip h3{font-size:42px;letter-spacing:-.045em;line-height:1.16;margin-top:10px}
.photo-strip>.work-arrow{position:absolute;right:33px;bottom:34px;z-index:2;font-size:32px}
.contact-section{border-top:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;padding-top:44px;padding-bottom:54px}
.contact-section h2{font-size:clamp(34px,4.5vw,56px);letter-spacing:-.05em}.contact-section h2>span{margin-left:15px;color:var(--cyan);font-size:.7em}
.contact-links{display:flex;gap:12px}.contact-links a{padding:12px 20px;border:1px solid var(--line2);font:12px var(--mono);background:var(--surface);transition:border-color .2s,color .2s}.contact-links a:hover{border-color:var(--accent);color:var(--accent)}
.contact-section>.np{grid-column:1 / -1}
footer{background:linear-gradient(transparent,#7de4d205);padding:27px 0 32px;margin-top:0}.fbot{font-size:10px;color:var(--faint)}.fbot a:hover{color:var(--accent)}
.mesh::before{animation:none;filter:none;height:100%;inset:0;background:radial-gradient(ellipse at 75% 25%,#7de4d213,transparent 60%),linear-gradient(90deg,#c8f36b07,transparent 60%),linear-gradient(#7de4d209 1px,transparent 1px),linear-gradient(90deg,#7de4d209 1px,transparent 1px);background-size:auto,auto,48px 48px,48px 48px;border-bottom:1px solid var(--line)}
.mesh>.wrap{position:relative;z-index:1}
.pagehero{padding-top:calc(var(--nav-h) + 65px);padding-bottom:54px;margin-bottom:0}
.pagehero h1{font-size:clamp(36px,5.5vw,68px);letter-spacing:-.055em;margin-top:18px;max-width:16ch}
.pagehero .lede{font-size:17px;line-height:1.75;max-width:62ch}
.pagehero .grad{background:linear-gradient(110deg,var(--accent),var(--cyan));color:transparent;background-clip:text;-webkit-background-clip:text}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}
.code-hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}.code-hero-copy{min-width:0}
.code-hero .lede{max-width:35ch;font-size:16px}.code-hero .hero-actions .btn:not(.primary){border-color:var(--line2);background:#101a1580}
.code-metrics{display:flex;gap:30px;margin:29px 0 0}.code-metrics>div{display:flex;flex-direction:column-reverse;gap:4px;border-left:1px solid var(--line2);padding-left:15px}.code-metrics dt{font:9px var(--mono);color:var(--faint);text-transform:uppercase;letter-spacing:.05em}.code-metrics dd{font:24px var(--mono);color:var(--cyan);margin:0}
.code-workbench{min-width:0;border:1px solid #405d50;border-radius:6px;background:#0d1813;box-shadow:0 20px 65px #0005,0 0 45px #7de4d208;overflow:hidden}
.workbench-bar{display:flex;justify-content:space-between;gap:15px;padding:14px 18px;border-bottom:1px solid #314c40;background:linear-gradient(100deg,#213a2b,#172922);font:9px var(--mono);color:var(--muted)}.workbench-bar>span:last-child{color:var(--cyan)}
.workbench-code{margin:0;padding:26px 22px;font:12px/1.95 var(--mono);color:#d8e8d9;overflow:auto;background:linear-gradient(90deg,#7de4d208 1px,transparent 1px);background-size:22px 100%}.wb-key{color:var(--accent)}.wb-comment{color:#7c9c8b}
.workbench-footer{padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid var(--line2);font:9px var(--mono);color:var(--faint)}
.workbench-inspect{background:var(--accent-deep);color:var(--accent);border:1px solid #566e31;cursor:pointer;font:10px var(--mono);padding:9px 13px}.workbench-inspect>span{margin-left:12px}.workbench-inspect:hover{border-color:var(--accent)}
.project-signals{display:flex;gap:15px;flex-wrap:wrap;margin-top:22px;font:10px var(--mono);color:var(--cyan)}.project-signals>span::before{content:"+";color:var(--accent);margin-right:7px}.prog-file{font:9px var(--mono);color:var(--cyan);display:block;margin-bottom:18px;overflow-wrap:anywhere}
.sec{padding:65px 0}.sechead{margin-bottom:30px}.sechead h2{font-size:37px}
.proj{border-radius:6px;grid-template-columns:260px 1fr;background:linear-gradient(135deg,#1c2b20,#111b17);padding:32px;gap:42px;border-color:#405d40;box-shadow:0 20px 50px #0003}
.proj-shot{border-radius:4px;max-height:450px}.proj-shot img{object-fit:cover;object-position:top}
.proj-top h3{font-size:32px}.proj-stack span,.stack-row span{border-radius:3px;font-size:11px;padding:7px 11px}
.proj-btn{border-radius:4px}.proj-btn:hover{box-shadow:none}
.prog,.game{background:linear-gradient(130deg,#17251b,#121b17);border-radius:6px;box-shadow:none;border-color:var(--line2)}
.prog:hover,.game:hover{transform:translateY(-3px);box-shadow:0 10px 35px #0004,0 0 30px #c8f36b08;border-color:#638856}
.prog .prog-title,.game .game-title{font-family:var(--display);font-size:21px;font-weight:600;line-height:1.2;letter-spacing:-.025em}
.prog .pblurb{font-size:14px}.prog .pview{font-size:11px;border-top:1px solid var(--line);padding-top:16px}
.pill,.statuschip{font-size:10px;border-radius:3px;letter-spacing:0;backdrop-filter:blur(10px)}
.games-section{padding-top:30px}.game .cover{height:270px;min-height:0;padding-top:0}.game .gbody{padding:23px}
.game-hero-meta{display:flex;align-items:center;gap:28px;margin-top:25px;font:11px var(--mono);color:var(--faint)}.game-hero-meta>span:last-child{color:var(--cyan)}.game-hero-meta>span:last-child::before{content:"";display:inline-block;width:5px;height:5px;background:var(--cyan);margin-right:10px;box-shadow:0 0 10px #7de4d255}
.game-data-row{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:22px;padding-top:15px;border-top:1px solid var(--line2)}.game-focus{font:10px var(--mono);color:var(--cyan)}.game-slot{font:9px var(--mono);color:var(--faint);white-space:nowrap}
.statuschip.is-live::before{content:"";display:inline-block;width:5px;height:5px;margin-right:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px #c8f36b88}.game .cover::after{content:"";position:absolute;inset:14px;border:1px solid #efffdf22;border-left-color:#c8f36b77;border-bottom-color:#c8f36b77;pointer-events:none}
.game .expand{font-size:10px}.project-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:25px;flex-wrap:wrap}
.filter-group{display:flex;gap:7px;flex-wrap:wrap}.filter-btn{font:11px var(--mono);background:transparent;border:1px solid var(--line2);border-radius:3px;padding:10px 14px;color:var(--muted);cursor:pointer}
.filter-btn[aria-pressed="true"]{background:var(--accent-deep);color:var(--accent);border-color:#566e31}
.filter-btn:hover{color:var(--accent);border-color:var(--accent)}
.project-count{font:11px var(--mono);color:var(--faint)}
.program-tools{border:1px solid var(--line2);border-radius:5px;padding:24px;background:linear-gradient(110deg,#17261b,#101b16);display:flex;flex-wrap:wrap;gap:20px;align-items:end}
.program-search{display:flex;flex-direction:column;gap:8px;flex:1 1 250px}.program-search>span,.program-filters legend{font:10px var(--mono);color:var(--faint);margin-bottom:6px}
.program-search input{width:100%;border:1px solid var(--line2);border-radius:3px;padding:11px 13px;color:var(--ink);background:var(--bg);font-size:14px}
.program-filters{border:0;margin:0;padding:0;display:flex;gap:12px;flex-wrap:wrap}.program-filter{font:11px var(--mono);display:flex;align-items:center;gap:5px;cursor:pointer;padding:11px 0}.program-filter input,.program-runnable input{accent-color:var(--accent)}
.program-runnable{display:flex;gap:7px;align-items:center;font:11px var(--mono);color:var(--muted);padding:11px 0}
.program-count{flex-basis:100%;font:10px var(--mono);color:var(--faint);border-top:1px solid var(--line);padding-top:14px}
.program-empty{padding:30px;border:1px solid var(--line);margin-top:20px;color:var(--muted)}
.program-empty button{margin-top:16px}.program-index{padding-top:20px;padding-bottom:10px}.program-index h2{margin-top:14px;font-size:35px}
.modal-card{border-radius:7px}.modal-close,.lb-close,.lb-nav,.hero-max,.img-fs-close{border-radius:4px}
.modal-caption{font:10px var(--mono);color:var(--faint);margin:14px 0}.modal-permalink{font:11px var(--mono);color:var(--accent);border-bottom:1px solid var(--line2)}
.mrow{border-radius:3px}.feat.emoji li .fe{font:10px var(--mono);color:var(--accent);top:4px}.editor{border-radius:5px}.cv-note{border-radius:3px}.cv-gutter{color:var(--faint)}
.hljs-comment,.hljs-quote{color:#899888}.cv-code code,.editor code{color:#DFE5D9}
.photo-cover{height:52vh;min-height:400px}.photo-cover .cover-img{object-position:center 48%}.photo-cover .cover-veil{background:linear-gradient(180deg,#0c0f0d66,#0c0f0d55 25%,#0c0f0dc9 100%)}
.photo-cover .cover-title{font-size:clamp(35px,6vw,72px);letter-spacing:-.045em;text-shadow:0 0 65px #7de4d233}.photo-cover .cover-label{font-size:10px;letter-spacing:.14em;color:var(--cyan);border:1px solid #7de4d255;padding:7px 12px;background:#0a1b1899}.photo-cover .cover-sub{color:#D8DFD2;font-family:var(--mono);font-size:11px;letter-spacing:.1em}
.photo-toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin:35px 0 14px}.photo-summary h2{font-size:24px}.photo-summary p{font-size:13px;color:var(--faint);margin-top:8px}
.photo-tools{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.photo-count{font:11px var(--mono);color:var(--faint)}
.density-toggle{display:flex;gap:4px}.density-toggle button{font:10px var(--mono);border:1px solid var(--line2);border-radius:3px;background:transparent;padding:10px 12px;color:var(--muted);cursor:pointer}
.density-toggle button[aria-pressed="true"]{color:var(--accent);border-color:#566e31;background:var(--accent-deep)}
.photo-help{font:10px var(--mono);color:var(--faint);margin-bottom:25px}.photo-state{padding:30px;color:var(--muted)}
.pshot:hover img{transform:scale(1.025)}.photo-unavailable{min-height:150px}.lightbox{background:rgba(4,7,5,.96);padding:56px 55px 70px}
.lb-stage{position:relative;touch-action:pan-y pinch-zoom}.lb-stage img{max-height:78vh;box-shadow:none;border-radius:2px}.lb-help{position:absolute;bottom:18px;font:10px var(--mono);color:var(--faint)}
.lb-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:8px 12px;background:var(--surface);font:11px var(--mono)}
.lb-error{min-height:200px;display:grid;place-items:center;color:var(--muted);padding:30px}.gb-form{border-radius:6px;background:var(--surface)}
.gb-input,.gb-entry{border-radius:4px}.gb-label{font:11px var(--mono);color:var(--muted)}
.gb-wrap .gb-form{gap:10px}.gb-wrap .gb-input{margin-bottom:8px}
.np-card{border-radius:4px}.np .clean-head{margin-top:25px;margin-bottom:12px;color:var(--faint);font-size:10px}
.skip-link{position:fixed;top:10px;left:15px;z-index:500;padding:10px 16px;background:var(--accent);color:var(--accent-ink);transform:translateY(-180%)}
.skip-link:focus{transform:none}
.command-trigger{flex:none;display:flex;align-items:center;gap:7px;padding:8px;color:var(--faint);border:1px solid var(--line);border-radius:4px;background:none;cursor:pointer}
.command-trigger>span{font-size:18px;line-height:1}.command-trigger kbd{font:9px var(--mono)}.command-trigger:hover{color:var(--accent);border-color:var(--line2)}
.command-dialog{width:min(560px,calc(100% - 32px));max-height:80vh;border:1px solid var(--line2);border-radius:6px;padding:0;background:var(--bg);color:var(--ink);box-shadow:0 30px 100px #0009}
.command-dialog::backdrop{background:#000b;backdrop-filter:blur(6px)}
.command-heading{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--line)}
.command-heading h2{font-size:17px}.command-close{background:none;color:var(--faint);border:0;cursor:pointer;width:30px;height:30px}
.command-search{display:block;background:var(--surface);color:var(--ink);border:0;border-bottom:1px solid var(--line);width:100%;padding:17px 22px;font-size:15px;border-radius:0}
.command-search:focus{outline:none;border-bottom-color:var(--accent)}
.command-results{max-height:43vh;overflow:auto;padding:8px}.command-item{display:flex;align-items:center;gap:18px;padding:13px 14px;border-radius:3px}
.command-item:hover,.command-item:focus-visible{background:var(--surface2);outline:none}.command-item:focus-visible{box-shadow:inset 0 0 0 1px var(--accent)}
.command-item>span:nth-child(2){flex:1}.command-item b{display:block;font-size:14px;font-weight:500}.command-item small{display:block;color:var(--faint);font-size:12px;margin-top:3px}.command-item>span:last-child{color:var(--accent)}
.command-index{font:10px var(--mono);color:var(--faint)}.command-footer{display:flex;gap:15px;justify-content:space-between;padding:14px 22px;border-top:1px solid var(--line);font:9px var(--mono);color:var(--faint)}.command-empty{padding:22px;color:var(--muted);font-size:14px}
@media(min-width:1440px){.intro h1{font-size:78px}.project-visual{height:285px}}
@media(max-width:1050px){.navlinks a{padding-left:8px;padding-right:8px}.navcta{margin-left:4px}.intro{gap:30px}.intro h1{font-size:58px}.code-hero-grid{gap:30px}.code-metrics{gap:20px}}
@media(max-width:920px){.navlinks{display:none}.command-trigger{margin-left:auto}.intro{gap:27px;padding-top:calc(var(--nav-h) + 48px)}.intro h1{font-size:48px}.intro-lede{font-size:16px}.intro-copy .eyebrow{font-size:8px;max-width:28ch}.project-visual{height:240px}.console-caption h2{font-size:23px}.console-caption>div>span{font-size:7px}.work-image{height:270px}.work-body{padding:22px 18px}.proj{grid-template-columns:230px 1fr;gap:25px;padding:24px}.workbench-code{font-size:10px;padding:24px 15px}.workbench-bar{font-size:8px;padding:14px}.code-metrics{gap:15px}.code-metrics>div{padding-left:10px}}
@media(max-width:700px){.wrap{padding-left:22px;padding-right:22px}.intro{grid-template-columns:1fr;padding-top:calc(var(--nav-h) + 36px);padding-bottom:45px;gap:35px}.intro h1{font-size:clamp(40px,10.5vw,68px);margin-top:22px}.intro-copy{padding:0}.intro-copy .eyebrow{font-size:9px;max-width:none}.intro-lede{font-size:17px;margin-top:20px}.intro-actions{margin-top:23px}.intro-tags{margin-top:25px}.project-visual{height:270px}.console-caption>div>span{font-size:8px}.work-grid{grid-template-columns:1fr}.work-image{height:280px}.work-code .work-image img{width:60%;max-width:245px}.section-top{gap:18px}.section-top h2{font-size:32px}.section-code{display:none}.work-section{padding-top:27px;padding-bottom:42px}.photo-strip{height:280px}.photo-strip>div{padding:25px}.photo-strip h3{font-size:34px}.photo-strip>.work-arrow{right:25px;bottom:27px}.contact-section{grid-template-columns:1fr;gap:24px;padding-top:30px;padding-bottom:40px}.contact-links{justify-content:flex-start}.pagehero{padding-top:calc(var(--nav-h) + 35px);padding-bottom:36px}.pagehero h1{font-size:50px}.pagehero .lede{font-size:16px}.code-hero-grid{grid-template-columns:1fr;gap:32px}.workbench-code{font-size:11px}.code-metrics{gap:26px}.code-metrics>div{padding-left:14px}.sec{padding:42px 0}.proj{grid-template-columns:1fr;gap:25px;padding:22px}.proj-shot{max-width:240px;max-height:360px}.proj-top h3{font-size:28px}.program-tools{padding:18px;gap:15px}.program-filters{gap:10px}.program-runnable{padding:0}.project-toolbar{gap:14px}.filter-btn{padding:9px 11px;font-size:10px}.photo-cover{min-height:340px}.pgwrap{padding:0 12px 40px}.photo-toolbar{margin-top:25px}.photo-tools{width:100%;justify-content:space-between}.photo-help{font-size:9px}.lightbox{padding:70px 14px}.lb-stage img{max-height:72vh}.lb-help{font-size:8px;bottom:12px}.fbot{font-size:9px;gap:13px}.command-trigger kbd{display:none}.modal{padding:12px}.modal-card{max-height:94vh}.modal-body{padding:15px 22px 27px}.game-data-row{gap:9px}.game-focus{font-size:9px}.game-slot{font-size:8px}}
@media(prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none}.project-console,.js .project-console.reveal.in{transform:none!important}.terminal-caret,.signal-link:hover .scan-line,.signal-link:focus-visible .scan-line{animation:none}.work-card:hover,.btn.p:hover,.btn.primary:hover,.game:hover,.prog:hover{transform:none}.work-card:hover img,.pshot:hover img,.photo-strip:hover>img{transform:none}}
@media(max-width:380px){.brand>span:last-child{display:none}.intro h1{font-size:clamp(28px,10.5vw,40px)}.intro-actions{gap:18px}.intro-actions .btn{padding:12px 16px}.console-caption{padding:17px 14px}.console-caption>div>span{font-size:7px}.console-open{width:30px;height:30px;flex:none}.console-tabs button>span{margin-left:3px;font-size:10px}.project-visual{height:225px}.intro-copy .eyebrow{font-size:8px}.game-hero-meta{gap:12px;font-size:9px}.workbench-footer{font-size:8px;padding:12px}.code-metrics{gap:17px}.code-metrics dt{font-size:8px}.command-footer{flex-direction:column;gap:8px}}
@media(hover:none){.filter-btn,.density-toggle button,.workbench-inspect{min-height:44px}.project-console{transform:none!important}}
