/* Self-hosted Latin subsets (OFL). Chinese text uses the visitor's system fonts (NFR-2). */
@font-face{font-family:"Archivo";font-style:normal;font-weight:500 800;font-stretch:100% 125%;font-display:swap;src:url("../fonts/archivo-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url("../fonts/plex-sans-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/plex-mono-400-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+2000-206F}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/plex-mono-500-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+2000-206F}

/* Layout: harbour grid. One 1120px column on cool paper, wide-set display type, deep ink panels to set off the index and calls to action */
:root{
  --paper:#F4F7F7; --surface:#FFFFFF; --ink:#0F2430; --muted:#4B606A; --line:#D5DEE1;
  --teal:#11666E; --on-teal:#FFFFFF; --teal-soft:#E2EFEF;
  --amber:#D9981C; --amber-ink:#875800; --on-amber:#1B1400;
  --panel:#0F2430; --on-panel:#E9F0F1; --panel-muted:#A3B6BC; --panel-line:rgba(233,240,241,.16);
  --ok:#1E7A4C; --ok-soft:#E1F2E8; --warn:#8A5A00; --warn-soft:#FBF0D9; --danger:#9B2C1F; --danger-soft:#FBE4E1; --danger-line:#E3B4AD;
  --cjk:"PingFang HK","Noto Sans HK","Microsoft JhengHei";
  --f-display:"Archivo", var(--cjk), system-ui, sans-serif;
  --f-body:"IBM Plex Sans", var(--cjk), system-ui, sans-serif;
  --f-mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;
  --wrap:1120px; --r:10px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0B161C; --surface:#11212A; --ink:#E4ECEE; --muted:#9BAEB6; --line:#243841;
    --teal:#5DB6BD; --on-teal:#04191C; --teal-soft:#14323A;
    --amber:#E6AE45; --amber-ink:#E6AE45; --on-amber:#1B1400;
    --panel:#133039; --on-panel:#E9F0F1; --panel-muted:#9FB8BF; --panel-line:rgba(233,240,241,.14);
    --ok:#6CCB97; --ok-soft:#12301F; --warn:#E6AE45; --warn-soft:#33270F; --danger:#F2A69B; --danger-soft:#3A1A16; --danger-line:#6B2F27;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --paper:#0B161C; --surface:#11212A; --ink:#E4ECEE; --muted:#9BAEB6; --line:#243841;
  --teal:#5DB6BD; --on-teal:#04191C; --teal-soft:#14323A;
  --amber:#E6AE45; --amber-ink:#E6AE45; --on-amber:#1B1400;
  --panel:#133039; --on-panel:#E9F0F1; --panel-muted:#9FB8BF; --panel-line:rgba(233,240,241,.14);
  --ok:#6CCB97; --ok-soft:#12301F; --warn:#E6AE45; --warn-soft:#33270F; --danger:#F2A69B; --danger-soft:#3A1A16; --danger-line:#6B2F27;
  color-scheme:dark;
}
html[lang="zh-CN"]{--cjk:"PingFang SC","Noto Sans SC","Microsoft YaHei"}

*,*::before,*::after{box-sizing:border-box}
body{background:var(--paper);color:var(--ink);font:400 16px/1.65 var(--f-body)}
html[lang^="zh"] body{line-height:1.8}
table{font:inherit;color:inherit}
a{color:var(--teal);text-underline-offset:3px}
a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--amber);outline-offset:2px;border-radius:4px}
[tabindex="-1"]:focus{outline:none}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:16px;top:-60px;z-index:60;background:var(--ink);color:var(--paper);padding:8px 14px;border-radius:6px}
.skip:focus{top:8px}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:clamp(16px,4vw,32px)}
h1,h2,h3{font-family:var(--f-display);color:var(--ink);margin:0;text-wrap:balance;letter-spacing:-.01em}
h1{font-size:clamp(2rem,4.6vw,3.4rem);line-height:1.08;font-weight:760;font-stretch:112%}
h2{font-size:clamp(1.45rem,2.6vw,2rem);line-height:1.15;font-weight:700;font-stretch:108%}
h3{font-size:1.12rem;line-height:1.3;font-weight:650;font-stretch:104%}
html[lang^="zh"] :is(h1,h2,h3){letter-spacing:.01em;line-height:1.32;font-weight:700}
p{margin:0}
.lead{font-size:clamp(1.05rem,1.6vw,1.2rem);color:var(--muted);max-width:62ch}
.eyebrow,.label{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--amber-ink);font-weight:500}
.muted{color:var(--muted)} .small{font-size:.86rem}

/* header */
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--surface);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;gap:16px;min-height:64px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);margin-right:auto;min-width:0}
.wordmark{font-family:var(--f-display);font-weight:780;font-stretch:118%;font-size:1.12rem;letter-spacing:-.01em;color:var(--ink);white-space:nowrap}
.logo-img{height:36px;width:auto;max-width:180px;display:block}
.wordmark-stack{display:grid;line-height:1.2;min-width:0}
.wordmark-stack .wordmark{font-weight:700;letter-spacing:.04em}
.wordmark-sub{font:500 .66rem/1.3 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.name-preview{display:grid;gap:10px;margin:0}
.name-preview div{display:grid;grid-template-columns:3rem minmax(0,1fr);gap:12px;align-items:center;padding:10px 14px;border:1px dashed var(--line);border-radius:8px;background:var(--paper)}
.name-preview dt{font:600 .78rem/1 var(--f-mono);color:var(--muted)}
.name-preview dd{margin:0}
.primary{display:flex;gap:2px}
.primary a{padding:8px 12px;border-radius:6px;color:var(--ink);text-decoration:none;font-weight:500;font-size:.95rem;position:relative}
.primary a:hover{background:var(--teal-soft)}
.primary a[aria-current="page"]::after{content:"";position:absolute;left:12px;right:12px;bottom:3px;height:2px;background:var(--amber)}
.langs{display:flex;border:1px solid var(--line);border-radius:999px;padding:2px;flex-shrink:0}
.langs a{padding:3px 10px;border-radius:999px;text-decoration:none;color:var(--muted);font-size:.85rem;font-weight:600;line-height:1.5}
.langs a:hover{color:var(--ink)}
.langs a[aria-current="true"]{background:var(--ink);color:var(--paper)}
.menu-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);cursor:pointer;flex-shrink:0}
.mnav{border-top:1px solid var(--line);background:var(--surface)}
.mnav .wrap{display:grid;padding-block:4px 12px}
.mnav a{padding:13px 0;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;font-weight:500}
.mnav a:last-child{border-bottom:0}
.mnav a[aria-current="page"]{color:var(--teal)}
@media (max-width:820px){.primary{display:none}.menu-btn{display:inline-flex}}
@media (min-width:821px){.mnav{display:none!important}}
@media (max-width:380px){.wordmark{font-size:.98rem}.langs a{padding:3px 8px}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:8px;font:600 .95rem/1.2 var(--f-body);text-decoration:none;border:1px solid transparent;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.btn.primary{background:var(--teal);color:var(--on-teal)}
.btn.primary:hover{background:var(--ink);color:var(--paper)}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--ink);color:var(--ink)}
.btn.sm{padding:8px 14px;font-size:.88rem}
.btn[disabled]{opacity:.6;cursor:progress}

/* sections */
.section{padding-block:clamp(48px,7vw,88px)}
.section.alt{background:var(--surface);border-block:1px solid var(--line)}
.sec-head{display:grid;gap:10px;margin-bottom:32px;max-width:64ch}

/* hero */
.hero{padding-block:clamp(40px,7vw,92px) clamp(48px,7vw,88px)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(32px,5vw,64px);align-items:center}
.hero-copy{display:grid;gap:20px}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px}
.index-panel{background:var(--panel);color:var(--on-panel);border-radius:var(--r);padding:24px 24px 10px;border-top:3px solid var(--amber)}
.index-panel .label{color:var(--amber)}
.index-panel ul{list-style:none;margin:12px 0 0;padding:0}
.index-panel li+li{border-top:1px solid var(--panel-line)}
.index-panel a{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0;color:var(--on-panel);text-decoration:none;font-weight:500}
.index-panel a:hover{color:var(--amber)}
.arr{transition:transform .2s;flex-shrink:0}
.index-panel a:hover .arr{transform:translateX(4px)}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr}}

/* services */
.svc-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:900px){.svc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.svc-grid{grid-template-columns:1fr}}
.svc-card{position:relative;display:flex;flex-direction:column;gap:10px;padding:24px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);transition:border-color .15s}
.svc-card:hover{border-color:var(--teal)}
.svc-card h3 a{color:var(--ink);text-decoration:none}
.svc-card h3 a::after{content:"";position:absolute;inset:0;border-radius:var(--r)}
.svc-card p{color:var(--muted);font-size:.95rem}
.svc-card .more{margin-top:auto;padding-top:6px;color:var(--teal);font-weight:600;font-size:.9rem}
.svc-card.unsure{background:var(--teal-soft);border-style:dashed;border-color:var(--teal)}
.svc-card.unsure .btn{align-self:flex-start;margin-top:auto}

/* steps (a real sequence) */
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.steps li{display:grid;gap:8px;align-content:start;border-top:2px solid var(--line);padding-top:16px}
.steps li:first-child{border-top-color:var(--amber)}
.step-n{font-family:var(--f-mono);color:var(--amber-ink);font-size:.85rem;font-weight:500;font-variant-numeric:tabular-nums}
.steps p{color:var(--muted);font-size:.95rem}
.steps.compact{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:900px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.steps,.steps.compact{grid-template-columns:1fr}}

/* split + news */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:clamp(32px,5vw,72px)}
@media (max-width:900px){.split{grid-template-columns:1fr}}
.stack{display:grid;gap:14px;align-content:start}
.news-list{list-style:none;margin:0;padding:0;display:grid}
.news-list li{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:16px;padding-block:18px;border-top:1px solid var(--line)}
.news-list li:last-child{border-bottom:1px solid var(--line)}
.news-list time{font-family:var(--f-mono);font-size:.82rem;color:var(--muted);font-variant-numeric:tabular-nums;padding-top:3px}
.news-list h3 a{color:var(--ink);text-decoration:none}
.news-list h3 a:hover{color:var(--teal);text-decoration:underline}
.news-list p{color:var(--muted);font-size:.95rem;margin-top:4px}
@media (max-width:600px){.news-list li{grid-template-columns:1fr;gap:4px}}

/* band */
.band{background:var(--panel);color:var(--on-panel)}
.band-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;padding-block:clamp(36px,5vw,56px)}
.band h2{color:var(--on-panel)}
.band p{color:var(--panel-muted);margin-top:6px}
.band .btn.primary{background:var(--amber);color:var(--on-amber)}
.band .btn.primary:hover{background:var(--on-panel);color:var(--panel)}

/* inner pages */
.page-head{padding-block:clamp(28px,5vw,56px) clamp(28px,4vw,44px);border-bottom:1px solid var(--line);background:var(--surface)}
.page-head .wrap{display:grid;gap:14px}
.crumbs{display:flex;flex-wrap:wrap;gap:8px;font-size:.85rem;color:var(--muted)}
.crumbs a{color:var(--muted)}
.prose{display:grid;gap:16px;max-width:68ch}
.prose p{font-size:1.04rem}
.prose :is(ol,ul){margin:0;padding-left:1.4em;display:grid;gap:8px}
.values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.values div{border-top:2px solid var(--ink);padding-top:16px;display:grid;gap:8px;align-content:start}
.values p{color:var(--muted)}
@media (max-width:760px){.values{grid-template-columns:1fr}}
.faq{border-top:1px solid var(--line);max-width:74ch}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;padding:16px 40px 16px 0;font-weight:600;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:6px;top:14px;font:400 1.35rem/1 var(--f-mono);color:var(--teal)}
.faq details[open] summary::after{content:"\2212"}
.faq details p{padding:0 0 18px;color:var(--muted)}
.detail{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:clamp(32px,5vw,64px);align-items:start;padding-block:clamp(36px,6vw,72px)}
.detail .main{display:grid;gap:16px;min-width:0}
.detail h2{font-size:1.3rem;margin-top:20px}
.detail h2:first-child{margin-top:0}
.checks{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.checks li{position:relative;padding-left:30px}
.checks li::before{content:"";position:absolute;left:2px;top:.42em;width:14px;height:8px;border-left:2px solid var(--teal);border-bottom:2px solid var(--teal);transform:rotate(-45deg)}
.side-card{position:sticky;top:calc(env(safe-area-inset-top,0px) + 88px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:24px;display:grid;gap:14px}
@media (max-width:900px){.detail{grid-template-columns:1fr}.side-card{position:static}}
.other{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.other a{display:flex;justify-content:space-between;gap:12px;height:100%;padding:16px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);color:var(--ink);text-decoration:none;font-weight:600}
.other a:hover{border-color:var(--teal)}
@media (max-width:900px){.other{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:500px){.other{grid-template-columns:1fr}}
.article-meta{font-family:var(--f-mono);font-size:.85rem;color:var(--muted)}
.notice{background:var(--warn-soft);color:var(--warn);border-bottom:1px solid var(--line)}
.notice .wrap{display:flex;flex-wrap:wrap;gap:8px 16px;padding-block:10px;font-weight:600;font-size:.9rem}
.notice a{color:var(--warn)}

/* email + copy */
.email{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}
.email-text{font-family:var(--f-mono);font-size:.95rem;user-select:all;overflow-wrap:anywhere}
.copy{font:600 .78rem/1 var(--f-body);padding:6px 10px;border-radius:6px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.copy:hover{border-color:var(--ink)}

/* contact + chat */
.contact-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(24px,4vw,48px);align-items:start;padding-block:clamp(28px,5vw,64px)}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr}}
.chat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column;overflow:hidden}
.chat-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.chat-head .dot{width:9px;height:9px;border-radius:50%;background:var(--ok)}
.chat-notice{font-size:.82rem;color:var(--muted);padding:10px 18px;background:var(--paper);border-bottom:1px solid var(--line)}
.chat-log{height:clamp(320px,52vh,480px);overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:12px}
.msg{max-width:85%;padding:10px 14px;border-radius:14px;font-size:.96rem;line-height:1.6;overflow-wrap:anywhere}
.msg span{white-space:pre-wrap}
.msg.bot{align-self:flex-start;background:var(--teal-soft);color:var(--ink);border-bottom-left-radius:4px}
.msg.user{align-self:flex-end;background:var(--teal);color:var(--on-teal);border-bottom-right-radius:4px}
.msg-link{display:block;margin-top:8px;font-weight:600}
.typing{display:inline-flex;gap:4px;padding-block:6px}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:blink 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes blink{0%,80%,100%{opacity:.25}40%{opacity:1}}
.chips{display:flex;flex-wrap:wrap;gap:8px;padding:0 18px 14px}
.chip{font:500 .86rem/1.3 var(--f-body);padding:7px 12px;border-radius:999px;border:1px solid var(--teal);background:transparent;color:var(--teal);cursor:pointer;text-align:left}
.chip:hover{background:var(--teal-soft)}
.chat-form{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}
.kv{display:grid;gap:16px;margin:0}
.kv dt{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.kv dd{margin:3px 0 0;font-weight:500}
.clock{font-family:var(--f-mono);font-variant-numeric:tabular-nums}

/* forms */
input,textarea,select{font:inherit;font-size:1rem;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 12px;width:100%;min-width:0}
input:focus,textarea:focus,select:focus{outline:2px solid var(--teal);outline-offset:0;border-color:var(--teal)}
textarea{resize:vertical;line-height:1.55}
label{font-weight:600;font-size:.9rem}

/* footer */
.site-footer{background:var(--surface);border-top:1px solid var(--line)}
.foot{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);gap:32px;padding-block:44px 28px}
.foot p{color:var(--muted);font-size:.92rem;margin-top:10px;max-width:36ch}
.foot nav{display:grid;gap:8px;align-content:start}
.foot nav a{color:var(--ink);text-decoration:none;font-size:.95rem}
.foot nav a:hover{text-decoration:underline}
.foot .label{display:block;margin-bottom:8px;color:var(--muted)}
.foot-base{display:flex;flex-wrap:wrap;gap:8px 24px;padding-block:18px 28px;font-size:.82rem;color:var(--muted)}
.foot-base-line{border-top:1px solid var(--line)}
.foot-base a{color:var(--muted)}
@media (max-width:760px){.foot{grid-template-columns:1fr}}

/* admin */
.admin-head .pill{background:var(--teal-soft);color:var(--teal)}
.admin-links{display:flex;gap:16px;align-items:center;font-weight:500}
.linkish{background:none;border:0;color:var(--teal);font:inherit;cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:3px}
.admin{display:grid;grid-template-columns:200px minmax(0,1fr);gap:32px;padding-block:32px 64px;align-items:start}
.admin.solo{grid-template-columns:minmax(0,1fr)}
.admin-nav{display:grid;gap:2px;position:sticky;top:calc(env(safe-area-inset-top,0px) + 84px)}
.admin-nav a{padding:9px 12px;border-radius:8px;color:var(--ink);text-decoration:none;font-weight:500}
.admin-nav a:hover{background:var(--teal-soft)}
.admin-nav a[aria-current="page"]{background:var(--teal-soft);color:var(--teal)}
.admin-main{display:grid;gap:20px;min-width:0}
@media (max-width:820px){.admin{grid-template-columns:minmax(0,1fr);gap:20px}.admin-nav{position:static;display:flex;overflow-x:auto;gap:4px;border-bottom:1px solid var(--line);padding-bottom:8px}.admin-nav a{white-space:nowrap}}
.admin-top{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.admin h1{font-size:clamp(1.6rem,3vw,2rem)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:clamp(18px,3vw,28px);display:grid;gap:14px;min-width:0}
.card h2{font-size:1.15rem}
.field{display:grid;gap:6px}
.field-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.tbl{width:100%;border-collapse:collapse;font-size:.92rem;min-width:640px}
.tbl th{text-align:left;font:500 .72rem/1.4 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:12px 16px;border-bottom:1px solid var(--line);background:var(--paper)}
.tbl td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl tr:last-child td{border-bottom:0}
.tbl .num{font-variant-numeric:tabular-nums;font-family:var(--f-mono);font-size:.82rem;white-space:nowrap}
.status{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:600;white-space:nowrap}
.status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.status.pub{background:var(--ok-soft);color:var(--ok)}
.status.draft{background:var(--warn-soft);color:var(--warn)}
.langchips{display:flex;gap:4px}
.langchips span{font:600 .72rem/1.7 var(--f-body);padding:0 6px;border:1px solid var(--line);border-radius:4px;color:var(--muted)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line)}
.tab{background:none;border:0;border-bottom:2px solid transparent;padding:10px 14px;font:600 .95rem/1 var(--f-body);color:var(--muted);cursor:pointer;margin-bottom:-1px}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--amber)}
.counter{font-family:var(--f-mono);font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums}
.counter.over{color:var(--warn);font-weight:600}
.empty{border:1px dashed var(--line);border-radius:var(--r);padding:28px;text-align:center;color:var(--muted)}
.login{max-width:420px;width:100%;margin:24px auto}
.logo-preview{display:flex;align-items:center;min-height:80px;padding:16px;border:1px dashed var(--line);border-radius:8px;background:var(--paper);color:var(--muted)}
.logo-preview img{max-height:64px;width:auto}
.file-btn:focus-within{outline:3px solid var(--amber);outline-offset:2px}
code{font-family:var(--f-mono);font-size:.9em}

.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:8px;font-weight:500;font-size:.92rem;z-index:50;max-width:calc(100% - 32px);box-shadow:0 8px 24px rgba(0,0,0,.18)}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* production additions */
html{-webkit-text-size-adjust:100%}
body{margin:0}
img{max-width:100%}
[hidden]{display:none!important}
.side-title{font-size:1.15rem;margin:0}
.side-label{color:var(--muted)}
.side-email{margin-top:6px}
.narrow{max-width:880px}
.prose h2{font-size:1.2rem;margin-top:12px}
.prose a{word-break:break-word}
.pager{display:flex;justify-content:space-between;gap:16px;margin-top:24px}
.notice.preview{background:var(--teal-soft);color:var(--teal)}
.notice.preview a{color:var(--teal)}
.chat-error{color:var(--warn);font-size:.86rem;padding:0 18px 10px}
.noscript{padding:12px 18px;color:var(--muted)}
.flashes{display:grid;gap:8px}
.flash{padding:10px 14px;border-radius:8px;font-weight:500;background:var(--ok-soft);color:var(--ok)}
.flash.warn{background:var(--warn-soft);color:var(--warn)}
.flash.error{background:var(--danger-soft);color:var(--danger)}
.versions{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.versions li{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:.9rem}
.versions form{margin:0}
.lang-panel[hidden]{display:none!important}
.btn.danger{background:transparent;color:var(--danger);border-color:var(--danger-line)}
.btn.danger:hover{background:var(--danger-soft);color:var(--danger)}
.inline-form{display:inline}
.grid-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
@media (max-width:700px){.grid-2{grid-template-columns:minmax(0,1fr)}}
.qr svg{width:200px;height:200px;background:#fff;padding:8px;border-radius:8px}
.mono{font-family:var(--f-mono);font-size:.85rem;overflow-wrap:anywhere}
.transcript{display:grid;gap:10px}
.kv-row{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline}
