:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--alabaster:#e9e6df;--mist:#d3dfdd;--refresh:#9dd2c7;--olive:#4a4d41;--navy:#23364d;--surface:#fffdf8;--paper:color-mix(in srgb, var(--alabaster) 43%, var(--surface));--line:#c8cbc0;--control-radius:12px;--serif:Georgia, "Times New Roman", "Songti SC", "Noto Serif CJK SC", SimSun, serif;--sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--mono:ui-monospace, "SFMono-Regular", Consolas, monospace}*,:before,:after{box-sizing:border-box}body{background:var(--paper);color:var(--olive);font:400 16px/1.65 var(--sans);margin:0}h1,h2,p,figure,dl,dd{margin:0}button{font:inherit;color:inherit;cursor:pointer;border-radius:var(--control-radius)}a{color:inherit}img{max-width:100%;height:auto;display:block}svg{flex:none}:focus-visible{outline:2px solid var(--navy);outline-offset:4px}.shell{width:min(100% - 100px,1290px);margin-inline:auto}.micro{font:650 .7rem/1.45 var(--sans);letter-spacing:.125em;text-transform:uppercase}.skip-link{z-index:12;background:var(--surface);padding:8px 16px;position:fixed;inset:10px auto auto 12px;transform:translateY(-150%)}.skip-link:focus{transform:none}.site-header{z-index:2;border-bottom:1px solid var(--line);background:var(--paper);position:relative}.header-inner{justify-content:space-between;align-items:center;gap:12px;min-height:64px;display:flex}.wordmark{min-height:44px;color:var(--navy);align-items:center;gap:10px;text-decoration:none;display:inline-flex}.wordmark:before{border-top:3px solid var(--refresh);content:"";width:22px}.header-actions{align-items:center;gap:8px;display:flex}.cv-link{border:1px solid var(--line);border-radius:var(--control-radius);min-height:44px;color:var(--navy);background:var(--surface);white-space:nowrap;align-items:center;gap:4px;padding-inline:10px;font-size:.78rem;font-weight:650;text-decoration:none;display:inline-flex}.cv-link:hover{border-color:var(--navy)}.cv-link svg{width:12px;height:12px}.language-switch{border:1px solid var(--line);border-radius:var(--control-radius);gap:2px;padding:2px;display:inline-flex}.language-switch button{border-radius:calc(var(--control-radius) - 3px);background:0 0;border:0;min-width:44px;min-height:38px;padding:0 8px;font-size:.75rem;font-weight:650}.language-switch button[aria-pressed=true]{background:var(--refresh);color:var(--navy)}.language-switch button:hover{box-shadow:inset 0 -2px var(--navy)}.home-layout{align-content:center;min-height:calc(100svh - 65px);padding-block:30px 44px;display:grid}.home-copy{z-index:2;width:min(100%,445px);position:relative}.home-copy h1,.case-heading h1{color:var(--navy);font:600 clamp(3rem, 6.15vw, 5.45rem)/1.06 var(--sans);letter-spacing:-.045em}.home-intro{max-width:40ch;margin-top:13px;font-size:.95rem;line-height:1.62}.home-projects{margin-top:clamp(23px,4vh,38px)}.home-projects h2,.home-contact h2{color:var(--olive);font:400 clamp(1.48rem, 2.23vw, 1.95rem)/1.14 var(--serif);letter-spacing:-.026em}.home-projects ul{border-top:1px solid var(--line);margin:10px 0 0;padding:0;list-style:none}.home-projects li{border-bottom:1px solid var(--line)}.home-projects a{min-height:44px;color:var(--navy);border-radius:8px;grid-template-columns:minmax(0,1fr) auto 16px;align-items:center;gap:10px;padding:5px 4px 5px 0;font-size:.95rem;font-weight:580;text-decoration:none;display:grid}.home-projects a>span:first-child{overflow-wrap:anywhere}.home-projects a:hover,.home-projects a:focus-visible{background:color-mix(in srgb, var(--refresh) 22%, transparent)}.project-status{font:500 .78rem/1.28 var(--sans);color:var(--olive);text-align:right}.home-contact{background:color-mix(in srgb, var(--refresh) 19%, var(--paper));border:1px solid #a9c2b6;border-radius:15px;margin-top:clamp(18px,3.3vh,29px);padding:10px 12px}.contact-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 8px;display:flex}.home-contact h2{color:var(--navy);font-size:clamp(1.2rem,1.65vw,1.45rem)}.contact-profiles,.contact-emails{margin:0;padding:0;list-style:none}.contact-profiles{align-items:center;gap:5px;display:flex}.contact-profiles a{background:var(--surface);min-height:32px;color:var(--navy);border:1px solid #a9c2b6;border-radius:9px;align-items:center;gap:4px;padding-inline:7px;font-size:.72rem;font-weight:630;text-decoration:none;display:inline-flex}.contact-profiles svg{width:11px;height:11px}.contact-emails{grid-template-columns:minmax(0,1fr) minmax(0,1.13fr);gap:7px;margin-top:6px;display:grid}.contact-emails a{min-height:43px;color:var(--navy);overflow-wrap:anywhere;border-radius:8px;align-content:center;padding:3px 6px;font-size:.86rem;line-height:1.25;text-decoration:none;display:grid}.contact-emails .micro{color:var(--olive);margin-bottom:3px;font-size:.62rem}.contact-emails a:hover,.contact-profiles a:hover{background:var(--surface);text-underline-offset:3px;text-decoration:underline}.globe-layer{--globe-size:min(58vw, 78svh, 740px);z-index:1;pointer-events:none;position:fixed;inset:0;overflow:clip}.globe-layer[data-expanded=true]{--globe-size:min(calc(100vw - 38px), calc(100svh - 52px), 920px);z-index:10;pointer-events:auto;background:var(--paper)}.globe-sphere{left:calc(100% - var(--globe-size) / 4);width:var(--globe-size);aspect-ratio:1;transition:left .62s cubic-bezier(.2,.72,.25,1),top .62s cubic-bezier(.2,.72,.25,1),width .62s cubic-bezier(.2,.72,.25,1);position:absolute;top:calc(50% + 20px);translate:-50% -50%}.globe-layer[data-expanded=true] .globe-sphere{top:50%;left:50%}.globe-sphere:before{content:"";background:radial-gradient(circle at 33% 29%,#eef4e9 0%,#deece2 24%,#c2e1d6 55%,#9dd2c7 75%,#7caaa0 96%);border:1px solid #729b8e;border-radius:50%;position:absolute;inset:.19%;box-shadow:0 10px 55px #345d551f,inset -13px -12px 38px #395c5133}.globe-canvas,.globe-launch-area{border-radius:50%;width:100%;height:100%;position:absolute;inset:0}.globe-launch-area{pointer-events:auto;background:0 0;border:0}.globe-layer[data-expanded=true] .globe-canvas{pointer-events:auto;touch-action:none;cursor:grab}.globe-canvas[data-dragging=true]{cursor:grabbing}.globe-pin{pointer-events:none;position:absolute}.globe-pin:before{content:"";width:var(--pin-length);transform-origin:0;height:1px;transform:rotate(var(--pin-angle));background:#304c58;position:absolute}.globe-pin a,.globe-pin-static{top:var(--pin-dy);left:var(--pin-dx);white-space:nowrap;position:absolute;translate:0 -50%}.globe-pin[data-side=left] a,.globe-pin[data-side=left] .globe-pin-static{translate:-100% -50%}.globe-pin a{pointer-events:auto;align-items:center;min-height:44px;text-decoration:none;display:flex}.globe-pin-label{background:var(--surface);color:var(--navy);font:650 .73rem/1.2 var(--sans);border:1px solid #829b92;border-radius:9px;gap:1px;padding:4px 8px;display:grid}.globe-pin-label small{font:500 .65rem/1.2 var(--sans);opacity:.86}.globe-pin[data-centered] .globe-pin-label,.globe-pin a:hover .globe-pin-label,.globe-pin a:focus-visible .globe-pin-label{background:var(--navy);color:var(--surface)}.globe-pin a:focus-visible{outline-offset:0;border-radius:var(--control-radius)}.globe-open,.globe-close{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--navy);pointer-events:auto;align-items:center;gap:10px;padding:5px 13px 5px 8px;font-size:.85rem;font-weight:630;display:inline-flex;position:absolute}.globe-open{right:clamp(22px,6vw,98px);bottom:max(20px, calc((100svh - var(--globe-size)) / 2 - 5px))}.globe-open-symbol{background:var(--refresh);border-radius:8px;place-items:center;width:26px;height:26px;font-size:1rem;display:grid}.globe-open:hover,.globe-close:hover{border-color:var(--navy)}.globe-close{padding:4px 12px;top:20px;right:24px}.globe-close span{font-size:1.2rem}.globe-hud{border-radius:var(--control-radius);background:var(--paper);max-width:min(290px,100vw - 32px);color:var(--navy);padding:10px 12px 8px;position:absolute;bottom:27px;left:clamp(20px,4vw,62px)}.globe-hud h2{font:400 1.42rem/1.13 var(--serif)}.globe-hud p{color:var(--olive);margin-top:3px;font-size:.78rem}.globe-hud ul{flex-wrap:wrap;gap:5px;margin:8px 0 0;padding:0;list-style:none;display:flex}.globe-hud button{border:1px solid var(--line);background:var(--surface);min-height:35px;color:var(--navy);padding:2px 8px;font-size:.72rem;font-weight:600}.globe-hud button:hover{border-color:var(--navy)}.globe-credit{color:var(--olive);text-underline-offset:3px;font-size:.7rem;position:absolute;bottom:18px;right:25px}.case{padding-block:clamp(19px,4vw,52px) 46px}.case-back{min-height:44px;color:var(--navy);align-items:center;gap:8px;font-size:.88rem;text-decoration:none;display:inline-flex}.case-back:hover{text-underline-offset:4px;text-decoration:underline}.case-heading{margin:20px 0 25px}.case-heading .micro{color:var(--navy);margin-bottom:7px}.case-heading h1{overflow-wrap:anywhere;font-size:clamp(2.65rem,5.3vw,4.7rem)}.case-location{color:var(--navy);margin-top:12px;font-size:.86rem}.case-location span{padding-inline:4px}.case-summary{max-width:64ch;margin-top:12px;font-size:1.02rem}.case-content{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:clamp(22px,5vw,65px);padding-top:24px;display:grid}.case-notes dt{font:400 1.36rem/1.2 var(--serif);color:var(--navy);margin-bottom:5px}.case-notes dd{max-width:64ch;margin:0 0 19px;font-size:.95rem}.project-sources{margin:0;padding:0;list-style:none}.project-sources a{min-height:32px;color:var(--navy);text-underline-offset:3px;align-items:center;display:inline-flex}.replay-plate{background:var(--mist);min-width:0;color:var(--olive);border:1px solid var(--line);padding:18px}.plate-heading{justify-content:space-between;align-items:center;gap:12px;padding:3px 3px 13px;display:flex}.plate-heading .micro{color:var(--navy);font-size:.68rem}.plate-heading .micro span{color:var(--navy);margin-inline:.3em}.plate-place{font:500 clamp(1.28rem, 2.12vw, 1.9rem)/1.15 var(--serif);margin-top:4px}.replay-map{background:var(--mist);border:1px solid var(--refresh);width:100%;height:auto;display:block}.map-label{font:600 15px var(--sans)}.map-code{font:13px var(--mono)}.plate-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1px 10px;padding:8px 2px 0;display:flex}.map-key{flex-wrap:wrap;gap:4px 12px;margin:0;padding:0;list-style:none;display:flex}.map-key li{color:var(--olive);align-items:center;gap:5px;font-size:.7rem;display:inline-flex}.key-symbol{width:10px;height:10px;display:inline-block}.key-0{background:repeating-linear-gradient(130deg, var(--mist) 0 2px, #628b85 2px 3px)}.key-1{border:1px dashed var(--navy)}.key-2{background:var(--navy);width:8px;height:8px}.key-3{background:var(--navy);width:11px;height:2px}.plate-link{min-height:44px;color:var(--navy);text-underline-offset:3px;background:0 0;border:0;align-items:center;gap:4px;padding:0;font-size:.76rem;display:inline-flex}.plate-link:hover{text-decoration:underline}.figure-button{aspect-ratio:2.05;border:1px solid var(--line);background:#fff;place-items:center;width:100%;padding:12px 16px;display:grid;position:relative}.figure-button:hover{border-color:var(--navy)}.figure-button img{object-fit:contain;width:100%;height:100%;min-height:0}.figure-icon{background:var(--paper);border:1px solid var(--line);place-items:center;width:30px;height:30px;display:grid;position:absolute;bottom:6px;right:6px}.project-figure figcaption{color:var(--olive);margin-top:9px;font-size:.75rem;line-height:1.45}.figure-dialog{color:var(--olive);background:var(--paper);border:1px solid var(--line);width:min(980px,100% - 28px);max-height:calc(100dvh - 28px);padding:14px clamp(12px,3vw,28px) 20px}.figure-dialog::backdrop{background:#132936a6}.dialog-controls{justify-content:end;margin-bottom:9px;display:flex}.dialog-controls button{border:1px solid var(--line);background:0 0;min-height:44px;padding:5px 10px;font-size:.84rem}.dialog-controls button span{margin-left:5px;font-size:1.1em}.figure-dialog img{object-fit:contain;background:#fff;width:100%;max-height:calc(100dvh - 160px)}.figure-dialog figcaption{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:3px 14px;margin-top:8px;font-size:.85rem;display:flex}.figure-dialog figcaption a{align-items:center;gap:6px;min-height:44px;display:inline-flex}@media (width<=1000px){.shell{width:calc(100% - 60px)}.home-copy{width:min(100%,49vw - 30px,395px)}}@media (width<=760px){.shell{width:calc(100% - 36px)}.header-inner{min-height:56px}.home-layout{align-content:start;min-height:calc(100svh - 57px);padding-block:23px 17px}.home-copy{width:100%}.home-identity{min-height:168px}.home-copy h1{max-width:56%;font-size:clamp(2.35rem,9.4vw,3.25rem)}.home-intro{width:min(55%,270px);margin-top:8px;font-size:.83rem;line-height:1.52}.home-projects{margin-top:23px}.home-projects a{min-height:43px;font-size:.88rem}.project-status{font-size:.7rem}.home-contact{margin-top:14px;padding:8px 10px}.contact-emails a{font-size:.77rem}.globe-layer{--globe-size:min(56vw, 275px)}.globe-sphere{left:calc(100% - var(--globe-size) * .15);top:173px}.globe-open{right:16px;top:min(253px, calc(173px + var(--globe-size) / 2 - 19px));gap:5px;padding:5px 8px 5px 6px;font-size:.75rem;bottom:auto}.globe-open-symbol{width:21px;height:21px}.globe-layer[data-expanded=true]{--globe-size:min(calc(100vw - 14px), calc(100svh - 188px))}.globe-close{top:11px;right:12px}.globe-hud{padding:6px 7px 3px;bottom:20px;left:13px}.globe-credit{bottom:8px;right:14px}.globe-layer[data-expanded=false] .globe-pin{visibility:hidden}.case{padding-top:13px}.case-heading{margin-top:11px}.case-content{grid-template-columns:minmax(0,1fr)}.case-content>figure{grid-row:1}.replay-plate{padding:12px}}@media (width<=360px){.header-inner{gap:8px}.header-actions{gap:5px}.cv-link{padding-inline:7px}.wordmark{letter-spacing:.08em;white-space:nowrap;gap:6px;font-size:.65rem}.wordmark:before{width:14px}.home-layout{padding-top:18px;padding-bottom:8px}.home-identity{min-height:154px}.home-copy h1{max-width:62%;font-size:2.25rem}.home-intro{font-size:.78rem}.project-status{justify-self:end;max-width:126px}.home-contact{margin-top:12px;padding-block:6px}.home-contact h2{font-size:1.08rem}.contact-emails{grid-template-columns:minmax(0,.83fr) minmax(0,1fr)}.contact-emails a{min-height:40px;padding-inline:4px;font-size:.74rem}.contact-profiles svg{display:none}.contact-profiles a{padding-inline:6px}.home-projects{margin-top:18px}.globe-sphere{top:154px}.globe-open{text-align:left;width:min(124px,39vw);line-height:1.2;top:220px}.globe-open-symbol{flex:none}}@media (prefers-reduced-motion:reduce){.globe-sphere{transition:none}}
