/* Hanken Grotesk, SIL Open Font License. Served locally. */
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:400;font-display:swap;src:url("assets/hanken-grotesk-latin-400.woff2") format("woff2")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:500;font-display:swap;src:url("assets/hanken-grotesk-latin-500.woff2") format("woff2")}
:root{--paper:#151716;--ink:#e9ece6;--muted:#989d94;--line:#353a34;--accent:#c4d2b4;--ease:cubic-bezier(.22,1,.36,1);font-family:"Hanken Grotesk",Arial,sans-serif;font-size:14px;font-weight:400;color-scheme:dark;background:var(--paper);color:var(--ink)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}img{display:block;max-width:100%}p,h1,h2,h3{margin:0;font-weight:400}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:1px solid var(--ink);outline-offset:7px}[hidden]{display:none!important}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip:focus{position:fixed;top:12px;left:24px;z-index:100;padding:12px;background:var(--ink);color:var(--paper)}
.site-header{height:88px;padding:0 3.2%;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;position:relative;z-index:30;font-size:12px}.wordmark{justify-self:start;letter-spacing:-.02em}.site-header nav{display:flex;gap:28px}.site-header nav a{color:var(--muted);transition:color .2s}.site-header nav a[aria-current],.site-header nav a:hover{color:var(--ink)}.header-contact{justify-self:end;color:var(--muted);font-size:11px}.header-contact:hover{color:var(--ink)}.text-link{display:inline-block;border-bottom:1px solid var(--line);padding-bottom:4px}.text-link:hover{border-color:currentColor}.eyebrow{font-size:10px;letter-spacing:.06em;color:var(--muted)}
/* Upright project images projected from a compact 3D field. */
.work-stage{position:relative;min-height:calc(100svh - 180px);padding:60px 8% 100px}.orbit-field{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:50px 36px;max-width:1120px;margin:auto}.orbit-card{min-width:0}.orbit-card a{display:block;position:relative}.orbit-card img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;object-position:center top;background:#1a1c1a;user-select:none;-webkit-user-drag:none}.card-caption{display:flex;justify-content:space-between;gap:15px;padding-top:12px;font-size:11px;line-height:1.4}.card-caption>span:last-child{font-size:10px;color:var(--muted)}
.work-page.is-orbit{height:100svh;overflow:hidden}.is-orbit .work-stage{position:absolute;inset:88px 0 70px;padding:0;min-height:0;overflow:hidden;touch-action:none;cursor:grab;outline-offset:-10px}.is-orbit .work-stage.is-dragging{cursor:grabbing}.is-orbit .orbit-field{display:block;position:absolute;inset:0;max-width:none;margin:0}.is-orbit .orbit-card{position:absolute;left:50%;top:50%;width:var(--card-width,230px);transform:translate(-50%,-50%);opacity:1}.is-orbit .orbit-card a{cursor:inherit;outline-offset:5px}.is-orbit .orbit-card img{box-shadow:0 6px 20px #0002}.is-orbit .is-moving .orbit-card{will-change:transform}.is-orbit .card-caption{position:absolute;left:0;top:100%;padding:10px 0 0;width:100%;opacity:0;transition:opacity .22s;font-size:12px;pointer-events:none}.is-orbit .card-caption>span:last-child{display:none}.is-orbit .orbit-card:hover .card-caption,.is-orbit .orbit-card:focus-within .card-caption{opacity:1}.is-index .work-stage{animation:fade-in .5s var(--ease)}.is-index .orbit-card{transform:none!important;opacity:1!important}
/* The selected project expands into its own dark viewing surface. */
#project-dialog{border:1px solid #363b35;padding:26px 30px 18px;background:var(--paper);color:var(--ink);width:min(1120px,94vw);max-height:94dvh;overflow:auto;margin:auto;box-shadow:0 30px 100px #0008}#project-dialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:92dvh;overflow:hidden;animation:dialog-in .45s var(--ease)}#project-dialog::backdrop{background:#080a09e0}.preview-header{display:flex;justify-content:space-between;align-items:center;gap:20px}.preview-header h2{font-size:26px;letter-spacing:-.04em;margin-top:8px}.close-preview{display:flex;gap:18px;align-items:center;font-size:11px;padding:10px 0 10px 14px}.close-preview span{font-size:24px}.browser-shell{border:1px solid var(--line);margin-top:22px;display:flex;flex-direction:column;min-height:0}.browser-bar{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 16px;font-size:10px;border-bottom:1px solid var(--line)}#preview-address{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#preview-live{white-space:nowrap}.browser-screen{flex:1;min-height:0;overflow:hidden;overscroll-behavior:contain;scrollbar-width:thin;background:#111311}.browser-screen iframe{display:block;width:100%;height:100%;border:0;background:#fff}.preview-footer{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:var(--muted);padding-top:14px}.next-preview{font-size:11px;padding:6px 0}.next-preview span{margin-left:15px}
/* About: one reading column with a live miniature overview. */
.about-page{--paper:#151716;--ink:#ebeee7;--muted:#9b9f97;--line:#363b35;--accent:#c4d2b4;background:var(--paper);color:var(--ink);color-scheme:dark}
.about-page .site-header{position:sticky;top:0;background:#151716f5}
.about-layout{display:grid;grid-template-columns:32% 1fr;gap:12%;margin:100px 9% 120px 4.1%;align-items:start}
.about-side{position:sticky;top:140px;align-self:start;max-height:calc(100dvh - 175px)}
.minimap{position:relative;width:170px;height:clamp(90px,calc(100dvh - 430px),340px);overflow:hidden;opacity:.8;cursor:grab;touch-action:none;user-select:none}
.minimap-content{pointer-events:none;transform-origin:top left;width:640px;transform:scale(.22)}
.minimap-window{position:absolute;left:0;top:0;width:100%;height:80px;border:1px solid #b8c3ab66;background:#b8c3ab08;will-change:transform}
.chapter-nav{display:flex;flex-direction:column;align-items:flex-start;gap:5px;margin-top:25px;font-size:12px;line-height:1.5;color:var(--muted)}
.chapter-nav a{padding:3px 0;transition:color .2s}
.chapter-nav a[aria-current=true],.chapter-nav a:hover{color:var(--ink)}
.about-content{min-width:0;max-width:680px}
.about-opening{padding-bottom:12px}
.about-opening h1{font-size:clamp(36px,3.6vw,56px);line-height:1.16;letter-spacing:-.035em;text-wrap:balance}
.about-opening h1 span{display:block;color:var(--muted);margin-top:.2em}
.opening-secondary{max-width:32em;font-size:clamp(20px,1.8vw,24px);line-height:1.5;letter-spacing:-.012em;margin-top:34px;color:var(--ink)}
.about-block{margin-top:90px;scroll-margin-top:125px}
.about-block>h2{font-size:13px;line-height:1.5;color:var(--muted);margin-bottom:26px;font-weight:500;letter-spacing:.015em}
.about-block>p,.story-entry>p,.software-entry>p{font-size:18px;line-height:1.65;letter-spacing:-.008em;margin-bottom:20px}
.about-block>p:last-child,.story-entry>p:last-child,.software-entry>p:last-child{margin-bottom:0}
.story-entry+.story-entry{margin-top:36px;padding-top:30px;border-top:1px solid var(--line)}
.story-entry h3,.software-entry h3{font-size:22px;line-height:1.3;letter-spacing:-.02em;font-weight:500;margin-bottom:14px;text-wrap:balance}
.story-entry a,.software-entry h3 a{border-bottom:1px solid var(--line);transition:border-color .2s,color .2s}
.story-entry a:hover,.software-entry h3 a:hover{color:var(--accent);border-color:currentColor}
.story-entry .entry-meta{font-size:13px;line-height:1.6;color:var(--muted);letter-spacing:0;margin:-5px 0 18px}
.story-detail{margin-top:22px;border-left:1px solid var(--line);padding-left:18px}
.story-detail summary{position:relative;display:block;list-style:none;width:fit-content;padding:8px 25px 8px 0;color:var(--muted);font-size:13px;line-height:1.5;cursor:pointer}
.story-detail summary::-webkit-details-marker{display:none}
.story-detail summary::before,.story-detail summary::after{content:'';position:absolute;right:0;top:50%;width:9px;height:1px;background:currentColor;transition:transform .2s}
.story-detail summary::after{transform:rotate(90deg)}
.story-detail[open] summary::after{transform:rotate(0)}
.story-detail summary:hover,.story-detail[open] summary{color:var(--ink)}
.story-detail summary:focus-visible{outline:1px solid var(--ink);outline-offset:4px}
.story-detail>div{padding-top:10px}
.story-detail p{font-size:16px;line-height:1.65;color:var(--muted);max-width:36em}
.software-entry{padding:25px 0;border-top:1px solid var(--line)}
.software-entry:last-child{padding-bottom:0}
.software-entry h3 a{padding-bottom:2px}
.software-entry .entry-detail{font-size:14px;line-height:1.65;color:var(--muted);letter-spacing:0;margin-top:16px}
.language-section{margin-top:40px;scroll-margin-top:125px}
.language-section h3{font-size:14px;font-weight:500;margin-bottom:18px}
.language-list{margin:0}
.language-list>div{display:flex;justify-content:space-between;gap:24px;border-top:1px solid var(--line);padding:14px 0;font-size:15px;line-height:1.5}
.language-list dd{margin:0;color:var(--muted);text-align:right}
.language-list dd span{display:block;font-size:12px;margin-top:3px}
.contact-email{display:block;width:fit-content;font-size:clamp(24px,3vw,44px);line-height:1.25;letter-spacing:-.035em;white-space:nowrap}
.contact-links{display:flex;flex-wrap:wrap;gap:16px 28px;font-size:13px;margin-top:28px}
.contact-links a{transition:color .2s}
.contact-links a:hover{color:var(--accent)}
.privacy-content{max-width:740px;margin:80px auto 140px;padding:0 30px}
.privacy-content h1{font-size:60px;letter-spacing:-.035em;margin:25px 0 55px}
.privacy-content p{font-size:17px;line-height:1.7;color:var(--muted);margin-bottom:30px}
.privacy-content h2{font-size:20px;margin:40px 0 15px}
.privacy-content a{color:var(--ink)}
@keyframes fade-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes dialog-in{from{opacity:0}to{opacity:1}}
@media(min-width:1600px){.orbit-field{max-width:1400px}}
@media(max-width:900px){.about-layout{grid-template-columns:25% 1fr;gap:10%;margin-right:6%}.card-caption{flex-direction:column;gap:3px}}
@media(max-width:600px){.site-header,.about-page .site-header{height:74px;padding:0 6%;grid-template-columns:1fr auto;font-size:11px}.site-header nav{gap:23px}.header-contact{display:none}.is-orbit .work-stage{inset:74px 0 65px}.is-orbit .card-caption{font-size:11px}.work-stage{padding:35px 6% 45px}.orbit-field{grid-template-columns:1fr;gap:35px}.card-caption{flex-direction:row;font-size:12px;padding-top:13px}.card-caption>span:last-child{font-size:9px}.about-layout{display:block;margin:60px 7% 90px 60px}.about-side{display:block;position:fixed;left:12px;top:115px;width:28px;z-index:20}.about-side .chapter-nav{display:none}.about-side .minimap{width:28px;height:calc(100dvh - 155px)}.about-opening h1{font-size:clamp(30px,7.7vw,40px);line-height:1.18}.opening-secondary{font-size:20px;line-height:1.5;margin-top:28px}.about-block{margin-top:64px}.about-block>p,.story-entry>p,.software-entry>p{font-size:17px}.story-entry h3,.software-entry h3{font-size:21px}.story-entry .entry-meta{font-size:12px}.software-entry .entry-detail{font-size:14px}.contact-email{font-size:6.6vw}.contact-links{gap:24px}.site-footer{padding:25px 7%;font-size:9px;flex-wrap:wrap}.site-footer>div{gap:20px}#project-dialog{padding:20px 16px 14px;width:96vw;max-height:94dvh}.preview-header h2{font-size:24px}.close-preview{font-size:0;gap:0}.close-preview span{font-size:28px}.browser-bar{font-size:9px;padding:12px 10px}.preview-footer{font-size:9px;gap:20px}.next-preview{font-size:10px}.privacy-content{margin:55px auto 80px}.privacy-content h1{font-size:44px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
.is-orbit .card-caption{display:none}

.home-intro{transition:opacity .2s ease;text-align:center;max-width:420px;margin:0 auto 70px;position:relative;z-index:2}
.home-intro h1{font-family:inherit;font-size:clamp(24px,2.2vw,30px);line-height:1.1;letter-spacing:-.065em;margin-bottom:8px}
.home-intro p{font-size:10px;line-height:1.6;color:#a2aa9f;letter-spacing:-.01em}
.is-orbit .home-intro{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:180px;margin:0;pointer-events:none;user-select:none}
.is-orbit .orbit-field{z-index:3;pointer-events:none}
.is-orbit .orbit-card{pointer-events:auto}
.is-orbit .orbit-card a{cursor:pointer}
.is-orbit .is-dragging .orbit-card a{cursor:grabbing}
.is-orbit .orbit-card a:hover img{outline:1px solid #e9ece640;outline-offset:5px}
.is-orbit .card-caption{display:none}
.minimap.is-dragging{cursor:grabbing}
.minimap:hover .minimap-window,.minimap:focus-visible .minimap-window{border-color:#b8c3ab}

@media(max-width:600px){
 .is-orbit .home-intro{width:155px}
 .home-intro h1{font-size:24px;margin-bottom:7px}
 .home-intro p{font-size:9px;line-height:1.6}
 .is-orbit .orbit-card a:hover img{outline-offset:3px}
 .minimap-window{min-height:28px}
}
@media(max-height:500px) and (min-width:601px){.home-intro h1{font-size:35px}.home-intro p{font-size:10px}.is-orbit .work-stage{inset:70px 0 42px}}

.minimap:focus-visible{outline-offset:3px}

.is-orbit .is-dragging .home-intro,.is-orbit .intro-covered .home-intro{opacity:0}
@media(max-width:600px){.is-orbit .home-intro{top:calc(50% - 10px)}.home-intro h1{font-size:20px;margin-bottom:6px}.home-intro p{font-size:9px;line-height:1.4}}



/* Recessed lettering: local SVG with inner shading and a fine lower edge. */
.engraving{pointer-events:none;user-select:none;z-index:0}
.engraving img{display:block;width:100%;height:auto}
.about-layout{position:relative;z-index:1}
.about-page .about-content{position:relative}
.about-page .about-side{z-index:2}
.work-stage>.engraving{position:absolute;left:50%;top:50%;bottom:auto;width:min(32vw,360px);max-width:none;transform:translate(-50%,-50%);opacity:1}
.is-index .engraving{display:none}




.is-orbit .work-stage{bottom:38px}
/* Software projects use their own marks and concise details in the same viewer. */
#project-dialog.is-software{height:auto;max-height:90dvh;overflow:auto;width:min(980px,94vw)}
.software-preview{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;margin:38px 0 28px}
.software-preview>img{width:100%;height:auto;aspect-ratio:16/9}
.software-copy>p:first-child{font-size:23px;line-height:1.4;letter-spacing:-.03em}
.software-copy>p:nth-child(2){font-size:14px;line-height:1.7;margin-top:20px;color:var(--muted)}
.software-copy ul{padding:0;margin:25px 0;list-style:none;font-size:11px;line-height:1.8;color:var(--muted)}
.software-copy>a{display:inline-block;font-size:12px;border-bottom:1px solid var(--line);padding-bottom:6px}
.software-copy>a:hover{border-color:var(--ink)}
/* Native scrolling, quiet entrances, no scroll hijacking. */
.about-content>.about-opening{animation:none}
.about-content>.about-opening h1{animation:opening-in 1s var(--ease) both}
.about-content>.about-opening .opening-secondary{animation:opening-in 1.1s .14s var(--ease) both}
.about-side{animation:overview-in 1.1s .2s var(--ease) both}

.about-content>.scroll-reveal>*{opacity:0;transform:translateY(18px);transition:opacity .75s var(--ease),transform .9s var(--ease);transition-delay:var(--reveal-delay,0ms)}
.about-content>.scroll-reveal.is-visible>*{opacity:1;transform:translateY(0)}



@keyframes opening-in{from{opacity:0;transform:translateY(24px);clip-path:inset(0 0 100%)}to{opacity:1;transform:translateY(0);clip-path:inset(0)}}
@keyframes overview-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){.software-preview{gap:28px}.software-copy>p:first-child{font-size:20px}}
@media(max-width:600px){
 .work-stage>.engraving{width:230px;left:50%;opacity:1}
 .is-orbit .work-stage{bottom:30px}
 .software-preview{grid-template-columns:1fr;gap:24px;margin:24px 0}
 .software-preview>img{max-width:260px;margin:auto}
 .software-copy>p:first-child{font-size:20px}
 .contact-links{flex-wrap:wrap;gap:20px}
}
@media(prefers-reduced-motion:reduce){
 .about-content>.scroll-reveal>*{opacity:1;transform:none}
 
}

/* Quiet identity and consistent typography above the main content. */
.site-header{font-size:15px;letter-spacing:-.01em}
.site-header nav{grid-column:2}
.header-contact{grid-column:3;font-size:14px}
.engraving-mark{width:118px;display:block}
.engraving-mark img{width:100%;height:auto}

.is-orbit .home-intro{top:calc(50% + 88px)}
@media(max-width:600px){
 .site-header,.about-page .site-header{grid-template-columns:1fr auto 1fr;font-size:15px;padding:0 5%}
 .site-header nav{gap:20px}
 .engraving-mark{width:82px}
 .is-orbit .home-intro{top:calc(50% + 62px)}
}
/* Native cursor assets keep pointer feedback immediate, with no tracking loop. */
@media(hover:hover) and (pointer:fine){
 html,body,body *{cursor:url("assets/cursor-cross.svg") 12 12,crosshair!important}
 a,a *,button,button *,summary,summary *,[role="scrollbar"],[role="scrollbar"] *{cursor:url("assets/cursor-cross-link.svg") 14 14,crosshair!important}
 input,textarea,[contenteditable="true"]{cursor:text!important}
}

/* Small macOS-style windows in the gallery and a matching live viewer. */
.project-window{display:block;overflow:hidden;border:1px solid #ffffff17;border-radius:6px;background:#252825;box-shadow:0 5px 14px #0005,0 1px 2px #0005}
.project-window-bar{display:flex;align-items:center;gap:3px;height:clamp(10px,1vw,14px);padding:0 5px;background:linear-gradient(#343833,#292d28);border-bottom:1px solid #0003}
.project-window-bar>span{width:4px;height:4px;flex-shrink:0;border-radius:50%;background:#ff6058;box-shadow:inset 0 0 0 .5px #0002}
.project-window-bar>span:nth-child(2){background:#febc2e}
.project-window-bar>span:nth-child(3){background:#28c840}
.is-orbit .orbit-card img{box-shadow:none}
.is-orbit .orbit-card a:hover img{outline:none}
.orbit-card a:hover .project-window{border-color:#ffffff40}
#project-dialog{padding:0;border:1px solid #ffffff26;border-radius:13px;width:min(1180px,94vw);max-height:92dvh;overflow:hidden;background:#1b1e1b;box-shadow:0 40px 100px #0009,0 8px 26px #0005,inset 0 1px #ffffff0a}
#project-dialog[open]{display:flex;flex-direction:column;height:90dvh;animation:window-in .38s var(--ease)}
#project-dialog::backdrop{background:#080a09c9;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.preview-header{display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,2fr) minmax(100px,1fr);gap:16px;align-items:center;flex-shrink:0;min-height:64px;padding:9px 18px;background:linear-gradient(#343833,#292d28);border-bottom:1px solid #0007;box-shadow:inset 0 1px #ffffff0a}
.window-controls{display:flex;gap:0;align-items:center;margin-left:-5px}
.window-control,.close-preview{display:grid;place-items:center;position:relative;width:26px;height:28px;padding:0;border-radius:5px;font-size:0;gap:0}
.window-control:before{content:'';position:absolute;width:12px;height:12px;border-radius:50%;box-shadow:inset 0 0 0 1px #0002}
.window-close:before{background:#ff6058}
.window-minimise:before{background:#febc2e}
.window-expand:before{background:#28c840}
.window-control svg{position:relative;z-index:1;width:12px;height:12px;fill:none;stroke:#242924;stroke-width:1.15;opacity:0;transition:opacity .15s}
.window-controls:hover svg,.window-control:focus-visible svg{opacity:1}
.window-control:focus-visible{outline-offset:1px}
.preview-heading{min-width:0;text-align:center}
.preview-header h2{font-size:13px;font-weight:500;letter-spacing:-.015em;line-height:1.4;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#preview-category{display:block;font-size:10px;line-height:1.4;color:#a4aba0;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.next-preview{justify-self:end;padding:9px 0 9px 8px;font-size:11px;color:#b1b8ac;white-space:nowrap}
.next-preview:hover{color:var(--ink)}
.browser-shell{flex:1;min-height:0;border:0;margin:0}
.browser-bar{position:relative;display:grid;grid-template-columns:1fr minmax(0,2fr) 1fr;gap:12px;padding:10px 18px;background:#252925;border-bottom:1px solid #0005;font-size:11px}
.address-field{grid-column:2;display:flex;align-items:center;justify-content:center;gap:7px;min-width:0;height:29px;padding:0 14px;border-radius:7px;background:#161a16;box-shadow:inset 0 1px 3px #0003,0 1px #ffffff08}
.address-field svg{width:12px;height:12px;flex-shrink:0;fill:none;stroke:#8f988a;stroke-width:.9}
#preview-address{color:#b8c0b2;font-size:11px;text-align:center}
#preview-live{grid-column:3;justify-self:end;align-self:center;font-size:10px;color:#b0b8aa}
#preview-live:hover{color:var(--ink)}
.browser-screen{background:#fff;border-radius:0 0 12px 12px}
#project-dialog.is-software{height:auto;max-height:90dvh;overflow:hidden;width:min(980px,94vw)}
.software-preview{overflow:auto;min-height:0;gap:42px;margin:0;padding:46px;overscroll-behavior:contain}
.software-preview>img{border-radius:9px;border:1px solid #ffffff12}
#project-dialog.is-expanded{width:calc(100vw - 24px);max-width:none;height:calc(100dvh - 24px);max-height:none}
#project-dialog.is-expanded .software-preview{flex:1}
@keyframes window-in{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
@media(max-width:600px){
 #project-dialog,#project-dialog.is-software{width:96vw;border-radius:11px}
 #project-dialog[open]{height:90dvh}
 #project-dialog.is-software{height:auto}
 .preview-header{grid-template-columns:84px minmax(0,1fr) 70px;gap:7px;min-height:60px;padding:8px 10px}
 .window-control{width:28px;height:32px}
 .preview-header h2{font-size:12px}
 #preview-category{font-size:9px}
 .next-preview{font-size:10px;padding-left:0}
 .browser-bar{grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:9px 12px}
 .address-field{grid-column:1;padding:0 9px}
 #preview-address{font-size:10px}
 #preview-live{grid-column:2;font-size:9px}
 .software-preview{padding:25px 20px;gap:24px}
 #project-dialog.is-expanded{width:calc(100vw - 12px);height:calc(100dvh - 12px);max-height:none}
}

/* Two local palettes; HTML and theme.js default to light. */
body{background:var(--paper)}
:root[data-theme="light"],:root[data-theme="light"] .about-page{--paper:#eeeee8;--ink:#252b23;--muted:#626b5d;--line:#cbd0c4;--accent:#405a36;color-scheme:light;background:var(--paper);color:var(--ink)}
[data-theme="light"] .about-page .site-header{background:#eeeee8f5}
[data-theme="light"] .chapter-nav,[data-theme="light"] .home-intro p{color:var(--muted)}
[data-theme="light"] .minimap-window{border-color:#65775a80;background:#65775a0a}
[data-theme="light"] .minimap:hover .minimap-window,[data-theme="light"] .minimap:focus-visible .minimap-window{border-color:#506545}
.engraving-light{display:none!important}
[data-theme="light"] .engraving-dark{display:none!important}
[data-theme="light"] .engraving-light{display:block!important}
[data-theme="light"] .project-window{border-color:#53614c2e;background:#e3e7dc;box-shadow:0 5px 14px #26341d1f,0 1px 2px #26341d14}
[data-theme="light"] .project-window-bar,[data-theme="light"] .preview-header{background:linear-gradient(#f9faf5,#e3e7dc);border-bottom-color:#53614c26;box-shadow:inset 0 1px #fff9}
[data-theme="light"] .orbit-card a:hover .project-window{border-color:#53614c80}
[data-theme="light"] #project-dialog{background:#f6f7f0;border-color:#53614c38;box-shadow:0 40px 100px #27332138,0 8px 26px #2733211f,inset 0 1px #fff9}
[data-theme="light"] #project-dialog::backdrop{background:#77816f66}
[data-theme="light"] #preview-category,[data-theme="light"] .next-preview,[data-theme="light"] #preview-live{color:var(--muted)}
[data-theme="light"] .next-preview:hover,[data-theme="light"] #preview-live:hover{color:var(--ink)}
[data-theme="light"] .browser-bar{background:#e7eae1;border-bottom-color:#53614c26}
[data-theme="light"] .address-field{background:#f8f9f4;box-shadow:inset 0 1px 3px #26341d0d,0 1px #fff9}
[data-theme="light"] .address-field svg{stroke:#64735a}
[data-theme="light"] #preview-address{color:#4e5f43}
[data-theme="light"] .software-preview>img{border-color:#53614c26}
.theme-toggle{position:fixed;right:3.2%;bottom:max(20px,env(safe-area-inset-bottom));z-index:50;display:grid;place-items:center;width:44px;height:44px;padding:12px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--muted);box-shadow:0 2px 8px #00000008;transition:color .2s,border-color .2s,background-color .2s}
.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--ink);border-color:var(--muted)}
.theme-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}
.theme-toggle .theme-moon{display:none}
[data-theme="light"] .theme-toggle .theme-sun{display:none}
[data-theme="light"] .theme-toggle .theme-moon{display:block}
body,.about-page .site-header{transition:background-color .22s ease,color .22s ease}
@media(max-width:600px){.theme-toggle{right:16px;bottom:max(16px,env(safe-area-inset-bottom))}}
@media(hover:hover) and (pointer:fine){
 html[data-theme="light"],html[data-theme="light"] body,html[data-theme="light"] body *{cursor:url("assets/cursor-cross-light.svg") 12 12,crosshair!important}
 html[data-theme="light"] a,html[data-theme="light"] a *,html[data-theme="light"] button,html[data-theme="light"] button *,html[data-theme="light"] summary,html[data-theme="light"] summary *,html[data-theme="light"] [role="scrollbar"],html[data-theme="light"] [role="scrollbar"] *{cursor:url("assets/cursor-cross-link-light.svg") 14 14,crosshair!important}
 html[data-theme="light"] input,html[data-theme="light"] textarea,html[data-theme="light"] [contenteditable="true"]{cursor:text!important}
}

