/* 全站共用：色彩、导航、主题、搜索和动效控制。 */
@font-face{font-family:"Bricolage";src:url('/vendor/bricolage-latin.ttf') format('truetype');font-weight:200 800;font-display:swap}
:root{color-scheme:dark;--surface:#111513;--surface-raised:#1b211e;--surface-overlay:#232b25;--glass:#1a211ddb;--overlay:#151b20db;--text-primary:#f1f4ee;--text-secondary:#bec8bf;--text-muted:#99a89e;--accent:#d8ee8b;--accent-ink:#1a2415;--accent-wash:#d8ee8b12;--border:#b8cbb522;--border-strong:#bacdb642;--orbit-color:#c0d89c3b;--pointer-glow:#d8ee8b1a;--hero-shade:#1115139c;--mask-solid:#000;--photo-text:#fff;--photo-label:#111513ab;--error:#ffb4a9;--font-body:"Microsoft YaHei UI","PingFang SC","Noto Sans CJK SC",system-ui,sans-serif;--ease:cubic-bezier(.2,.75,.2,1)}
:root[data-theme=light]{color-scheme:light;--surface:#f3f6f2;--surface-raised:#e5ece2;--surface-overlay:#f7faf6;--glass:#f7faf6e8;--overlay:#f7faf6db;--text-primary:#1d2b22;--text-secondary:#455d4b;--text-muted:#526957;--accent:#3e5b12;--accent-ink:#f7faf1;--accent-wash:#648d2916;--border:#395a3528;--border-strong:#395a3542;--orbit-color:#466b3652;--pointer-glow:#3e5b1215;--hero-shade:#f3f6f2c9;--error:#8d2421}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--surface);color:var(--text-primary);font-family:var(--font-body);line-height:1.6;-webkit-font-smoothing:antialiased}body.page-home{background:var(--surface)}a{color:inherit;text-decoration:none}button,input{font:inherit}button{border:0;background:none;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button{touch-action:manipulation}button:active{scale:.98}a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:5px}input:focus-visible{outline-offset:0}img{max-width:100%;display:block}button,a{transition-timing-function:var(--ease)}[hidden]{display:none!important}.container{width:min(1180px,calc(100% - 96px));margin-inline:auto;position:relative}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:-100px;left:20px;z-index:100;padding:12px 18px;background:var(--accent);color:var(--accent-ink)}.skip:focus{top:15px}
#universe{position:fixed;inset:0;width:100%;height:100dvh;z-index:-1;pointer-events:none;opacity:calc(.12 + var(--universe-focus,1)*.8)}.page-home::before{content:"";position:fixed;inset:0;background:var(--surface);z-index:-2;pointer-events:none}[data-theme=light] #universe{opacity:calc(.04 + var(--universe-focus,1)*.12)}.page-home main>section:not(.hero){position:relative;background:var(--surface)}.page-home main>.capabilities{background:var(--surface-raised)}.page-home main>.section{isolation:isolate}.site-header,.site-head{position:fixed;inset:0 0 auto;z-index:30;min-height:82px;padding:15px max(32px,calc((100vw - 1280px)/2));display:flex;align-items:center;justify-content:space-between;gap:24px;background:var(--glass);backdrop-filter:blur(18px);border-bottom:1px solid transparent;transition:background .3s ease,border-color .3s ease}.site-header.scrolled,.site-head.scrolled{border-color:var(--border)}.brand{display:flex;gap:17px;align-items:center;white-space:nowrap}.brand-symbol{font-family:Georgia,serif;font-size:32px;font-weight:400;letter-spacing:-.1em;line-height:1}.brand-symbol>span{color:var(--accent);margin:0 3px}.brand-name{font-size:16px;line-height:1.4;font-weight:500}.brand-name small{font-size:9px;display:block;letter-spacing:.09em;color:var(--text-secondary);margin-top:3px}.desktop-nav{display:flex;align-items:center;gap:27px;font-size:12px}.desktop-nav a{min-height:44px;display:flex;align-items:center;position:relative;color:var(--text-secondary)}.desktop-nav a:hover{color:var(--text-primary)}.desktop-nav a::after{content:"";height:2px;position:absolute;bottom:5px;left:0;right:0;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .3s ease}.desktop-nav a.active{color:var(--text-primary)}.desktop-nav a.active::after{transform:scaleX(1)}.header-actions,.head-actions{display:flex;align-items:center;gap:7px}.icon-button{height:44px;min-width:44px;display:grid;place-items:center;border:1px solid var(--border);border-radius:50%;font-size:22px;line-height:1;transition:border-color .2s ease,background .2s ease}.icon-button:hover{border-color:var(--accent);background:var(--accent-wash)}.motion-toggle{min-height:44px;display:flex;gap:8px;align-items:center;font-size:11px;margin-left:8px}.motion-glyph{color:var(--accent);font-size:15px}.menu-toggle{display:none;font-size:19px}.mobile-nav{position:fixed;left:0;right:0;top:78px;z-index:29;background:var(--surface-raised);border-bottom:1px solid var(--border);padding:16px 24px;animation:menu-enter .3s ease}.mobile-nav a,.mobile-nav button{display:flex;justify-content:space-between;align-items:center;min-height:50px;border-bottom:1px solid var(--border);width:100%;text-align:left;font-size:15px}.mobile-nav button span{font-size:12px;color:var(--text-muted)}.reading-progress{position:fixed;top:0;left:0;right:0;height:2px;transform:scaleX(var(--progress,0));transform-origin:left;background:var(--accent);z-index:40;pointer-events:none}
.button{display:inline-flex;align-items:center;justify-content:center;gap:28px;min-height:52px;white-space:nowrap;padding:0 26px;border-radius:999px;font-size:14px;font-weight:500;transition:translate .3s ease,background .3s ease,scale .2s ease;translate:var(--magnet-x,0px) var(--magnet-y,0px)}.button.primary{background:var(--accent);color:var(--accent-ink)}.button.primary:hover{filter:brightness(1.07)}.button:active{scale:.98}.text-link{display:inline-flex;align-items:center;gap:15px;min-height:44px;font-size:13px;color:var(--accent);padding:0;border-bottom:1px solid var(--border-strong);transition:gap .3s ease}.text-link:hover{gap:24px}.status-dot{height:6px;width:6px;border-radius:50%;background:var(--accent);flex:none;position:relative}.status-dot::after{content:"";position:absolute;inset:-4px;border:1px solid var(--accent);border-radius:50%;animation:dot-pulse 3s ease-out infinite}.site-footer{border-top:1px solid var(--border);padding-top:28px;padding-bottom:36px;display:flex;justify-content:space-between;align-items:center;gap:25px;color:var(--text-muted);font-size:11px;background:var(--surface)}.site-footer>div{display:flex;align-items:center;gap:22px}.site-footer a:hover{color:var(--accent)}.back-top{min-height:44px;display:flex;align-items:center}
.reveal{opacity:1;transform:none}.motion-ready .reveal{opacity:0;transform:translateY(32px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:var(--reveal-delay,0s)}.motion-ready .reveal.is-active{opacity:1;transform:translateY(0)}body.motion-ready .reveal.is-active:hover{transition-delay:0s}
dialog{border:1px solid var(--border-strong);border-radius:14px;background:var(--surface-raised);color:var(--text-primary);padding:26px;max-width:calc(100% - 32px);width:840px;max-height:90dvh;overflow:auto}dialog::backdrop{background:#07100cca;backdrop-filter:blur(12px)}dialog[open]{animation:dialog-enter .3s var(--ease)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.dialog-heading h2{font-size:20px;font-weight:500;margin:0}#guide-modal video{display:block;width:100%;max-height:65dvh;background:var(--surface);border-radius:8px}#guide-modal>p{font-size:12px;color:var(--text-secondary);margin-bottom:0}#toast{position:fixed;bottom:24px;left:50%;translate:-50% 12px;z-index:100;background:var(--text-primary);color:var(--surface);padding:12px 20px;max-width:calc(100vw - 32px);border-radius:8px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .25s ease,translate .25s ease}#toast.visible{opacity:1;translate:-50% 0}
.search-dialog{width:720px;padding:0}.search-heading{padding:18px 22px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--border)}.search-heading label{font-size:12px;color:var(--text-secondary);white-space:nowrap}.search-input{width:100%;min-width:0;border:0;background:transparent;color:var(--text-primary);min-height:44px;font-size:17px;padding:4px 8px}.search-input::placeholder{color:var(--text-muted)}.search-results{padding:10px;max-height:58dvh;overflow:auto}.search-result{display:block;padding:16px;border-radius:8px;transition:background .2s ease}.search-result:hover,.search-result:focus{background:var(--accent-wash)}.search-result b{display:block;font-size:16px;font-weight:500;margin-bottom:6px}.search-result small{font-size:11px;color:var(--accent)}.search-result p{color:var(--text-secondary);font-size:13px;line-height:1.7;margin:8px 0 0}.search-result mark{background:var(--accent);color:var(--accent-ink);padding-inline:2px;border-radius:2px}.search-status{color:var(--text-secondary);font-size:14px;padding:15px 16px;margin:0}.search-footer{padding:15px 22px;font-size:11px;color:var(--text-muted);border-top:1px solid var(--border);display:flex;justify-content:space-between;gap:16px}.search-footer kbd{font:inherit;color:var(--text-primary)}
.back-link,.head-cta{min-height:44px;display:inline-flex;align-items:center;font-size:12px;padding:0 14px;border:1px solid var(--border);border-radius:999px;white-space:nowrap}.back-link:hover,.head-cta:hover{border-color:var(--accent);color:var(--accent)}.page-outline{display:flex;flex-wrap:wrap;gap:12px;margin:0 auto;padding:20px 0;border-block:1px solid var(--border)}.page-outline a{min-height:44px;display:flex;align-items:center;padding:0 16px;font-size:13px;border-radius:6px;background:var(--surface-raised)}.page-outline a:hover{color:var(--accent)}
.static-mode *, .static-mode *::before,.static-mode *::after{animation-play-state:paused!important;transition-duration:0s!important}.static-mode .reveal{opacity:1!important;transform:none!important}.static-mode .portrait-surface,.static-mode .project-visual{transform:none!important}.static-mode [data-magnetic]{translate:0 0!important}
.tab-hidden *, .tab-hidden *::before,.tab-hidden *::after{animation-play-state:paused!important}.page-case h1 .brand-name{font:inherit;white-space:normal}.brand-symbol{display:inline-block;transition:transform .4s var(--ease)}.brand:hover .brand-symbol{transform:rotate(-8deg)}
body.leaving main{opacity:0;transform:translateY(-8px);transition:opacity .14s ease,transform .14s ease}.replay-intro{min-height:44px;font-size:11px;color:var(--text-muted)}.replay-intro:hover{color:var(--accent)}
dialog video{display:block;width:100%;max-height:65dvh;background:var(--surface);border-radius:8px}
.page-case h1,.page-case h2,.page-case h3,.page-practice h1,.page-practice h2,.page-practice h3{font-family:"Bricolage",var(--font-body)}.site-header .brand-symbol,.site-head .brand-symbol{font-family:"Bricolage",var(--font-body);font-weight:600;font-size:27px}
@media(max-width:400px){.page-home .site-header .brand-name{display:none}.page-home .site-header{gap:10px}}
@keyframes dot-pulse{0%{scale:.6;opacity:.5}100%{scale:2.2;opacity:0}}@keyframes dialog-enter{from{opacity:0;transform:translateY(15px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes menu-enter{from{opacity:0;transform:translateY(-15px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:1100px){.desktop-nav{gap:17px}.site-header,.site-head{padding-inline:24px;gap:16px}.brand-name small{font-size:8px}.motion-label{display:none}.motion-toggle{width:35px;justify-content:center;margin:0}.container{width:min(1180px,calc(100% - 64px))}}
@media(max-width:900px){.desktop-nav{display:none}.menu-toggle{display:grid}.site-header,.site-head{padding:13px 24px;min-height:78px}.brand-symbol{font-size:28px}.brand{gap:13px}.brand-name{font-size:14px}.site-footer{flex-wrap:wrap}.header-actions{gap:5px}}
@media(max-width:760px){.container{width:calc(100% - 40px)}.site-header,.site-head{padding-inline:20px}.icon-button{min-width:40px;height:44px;font-size:20px}.motion-toggle{width:32px}.brand{gap:9px}.brand-name small{font-size:7px;letter-spacing:.02em}.brand-symbol{font-size:27px}.site-footer{padding-top:20px;padding-bottom:25px;gap:14px;font-size:10px}.site-footer>div{gap:15px}.site-footer .brand-symbol{font-size:26px}.search-heading{padding:12px;gap:6px}.search-heading label{font-size:10px}.search-input{font-size:14px}.search-footer{font-size:10px;padding:12px;flex-wrap:wrap}dialog{padding:18px}.search-dialog{padding:0}.page-outline{gap:7px}.page-outline a{font-size:11px;padding:0 10px}.page-case .site-header .brand-name small{display:none}}
@media(max-width:370px){.brand-name small{display:none}.site-header,.site-head{padding-inline:14px}.header-actions{gap:2px}.brand{gap:7px}}
@media(prefers-reduced-motion:reduce){html:not([data-motion=on]){scroll-behavior:auto}html:not([data-motion=on]) *,html:not([data-motion=on]) *::before,html:not([data-motion=on]) *::after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
