/* Self-hosted fonts (copied from @fontsource by scripts/vendor.js); Mongolian Ө/Ү live in the cyrillic-ext subset */
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;src:url(/vendor/fonts/golos-text-cyrillic-ext-400-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;src:url(/vendor/fonts/golos-text-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;src:url(/vendor/fonts/golos-text-latin-400-normal.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:"Golos Text";font-style:normal;font-weight:500;font-display:swap;src:url(/vendor/fonts/golos-text-cyrillic-ext-500-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;src:url(/vendor/fonts/golos-text-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;src:url(/vendor/fonts/golos-text-latin-500-normal.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:"Golos Text";font-style:normal;font-weight:600;font-display:swap;src:url(/vendor/fonts/golos-text-cyrillic-ext-600-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;src:url(/vendor/fonts/golos-text-cyrillic-600-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;src:url(/vendor/fonts/golos-text-latin-600-normal.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:"Golos Text";font-style:normal;font-weight:700;font-display:swap;src:url(/vendor/fonts/golos-text-cyrillic-ext-700-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:700;font-display:swap;src:url(/vendor/fonts/golos-text-cyrillic-700-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:700;font-display:swap;src:url(/vendor/fonts/golos-text-latin-700-normal.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(/vendor/fonts/ibm-plex-mono-cyrillic-ext-400-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/vendor/fonts/ibm-plex-mono-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/vendor/fonts/ibm-plex-mono-latin-400-normal.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:500;font-display:swap;src:url(/vendor/fonts/ibm-plex-mono-cyrillic-ext-500-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(/vendor/fonts/ibm-plex-mono-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(/vendor/fonts/ibm-plex-mono-latin-500-normal.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:"Unbounded";font-style:normal;font-weight:500;font-display:swap;src:url(/vendor/fonts/unbounded-cyrillic-ext-500-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"Unbounded";font-style:normal;font-weight:500;font-display:swap;src:url(/vendor/fonts/unbounded-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Unbounded";font-style:normal;font-weight:500;font-display:swap;src:url(/vendor/fonts/unbounded-latin-500-normal.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:"Unbounded";font-style:normal;font-weight:700;font-display:swap;src:url(/vendor/fonts/unbounded-cyrillic-ext-700-normal.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:"Unbounded";font-style:normal;font-weight:700;font-display:swap;src:url(/vendor/fonts/unbounded-cyrillic-700-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Unbounded";font-style:normal;font-weight:700;font-display:swap;src:url(/vendor/fonts/unbounded-latin-700-normal.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}

/* Layout: app shell — sticky top bar (project switcher + role + sync + user) and scrollable tab strip over one content column (max 1280px); wide tables scroll inside their own wrappers; entry views put the hole map beside the entry table on wide screens */
:root{
  --bg:#F1F3F0; --surface:#FFFFFF; --surface-2:#E7EBE6; --line:#D2D8D1; --ink:#16201B; --muted:#58665F;
  --accent:#1C579E; --accent-ink:#FFFFFF;
  --drill:#0A765C; --charge:#B05D07; --fire:#B42318; --warn:#94580A; --plan:#89938D;
  --font-display:"Unbounded","Golos Text",system-ui,sans-serif;
  --font-body:"Golos Text",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-data:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  --r:6px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#111513; --surface:#191E1B; --surface-2:#222924; --line:#323B36; --ink:#E5EBE7; --muted:#97A39C;
  --accent:#78A9E6; --accent-ink:#0C1A2B; --drill:#3CC29F; --charge:#EFA144; --fire:#F2735F; --warn:#E0A54A; --plan:#6C7771;
  color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#111513; --surface:#191E1B; --surface-2:#222924; --line:#323B36; --ink:#E5EBE7; --muted:#97A39C;
  --accent:#78A9E6; --accent-ink:#0C1A2B; --drill:#3CC29F; --charge:#EFA144; --fire:#F2735F; --warn:#E0A54A; --plan:#6C7771;
  color-scheme:dark}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:1.45}
button,input,select,textarea{font:inherit;color:inherit}
.wrap{max-width:1280px;margin:0 auto;padding-inline:16px}
.top{position:sticky;top:0;padding-top:env(safe-area-inset-top,0px);z-index:20;background:var(--surface);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-block:10px}
.brand{font-family:var(--font-display);font-weight:700;font-size:15px;letter-spacing:.01em;display:flex;align-items:center;gap:10px;margin-right:auto}
.brand svg{flex:none}
.brand small{display:block;font-family:var(--font-body);font-weight:500;font-size:11px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.who{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;min-width:0}
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;background:var(--surface-2);font-size:12px;font-weight:600;max-width:100%;border:1px solid transparent}
.chip select{width:auto;max-width:220px;padding:1px 4px;font-size:12px}
.chip.pj{background:color-mix(in srgb,var(--accent) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}
button.chip{cursor:pointer}
button.chip:hover{border-color:var(--line)}
.sync::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c,var(--drill));flex:none}
.sync[aria-busy="true"]::before{animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.25}}
.menu{position:relative}
.menu .pop{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 8px 28px rgba(0,0,0,.18);min-width:230px;max-width:min(92vw,340px);z-index:40;padding:6px;display:flex;flex-direction:column;gap:2px}
.menu .pop > button{border:0;background:none;text-align:left;padding:8px 10px;border-radius:4px;cursor:pointer;font-weight:600;font-size:13px}
.menu .pop > button:hover{background:var(--surface-2)}
.menu .pop .meta{padding:6px 10px 8px;font-size:12px;color:var(--muted);border-bottom:1px solid var(--line);margin-bottom:4px;white-space:normal}
.menu .pop .confirm{margin:4px;white-space:normal}
.tabs{border-top:1px solid var(--line);overflow-x:auto;scrollbar-width:thin}
.tabs .wrap{display:flex;gap:2px;padding-block:0}
.tab{border:0;background:none;padding:10px 12px;font-weight:600;font-size:13px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap;cursor:pointer}
.tab[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}
.tab:hover{color:var(--ink)}
#rej:empty{display:none}
#rej{padding-top:14px}
main{padding-block:20px 96px;display:flex;flex-direction:column;gap:18px}
h1,h2,h3{text-wrap:balance;margin:0}
h1{font-family:var(--font-display);font-size:20px;font-weight:700;letter-spacing:-.01em}
h2{font-size:16px;font-weight:700}
.sub{color:var(--muted);font-size:13px;margin:4px 0 0;max-width:76ch}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:14px;min-width:0}
.card.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.between{justify-content:space-between;align-items:center}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:18px;align-items:start}
.split{display:grid;gap:18px;grid-template-columns:1fr}
@media (min-width:1000px){.split{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start}.split .stick{position:sticky;top:110px;max-height:calc(100vh - 120px);overflow:auto}}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field label,.lbl{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
input[type=text],input[type=date],input[type=number],input[type=password],input:not([type]),select,textarea{background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:7px 9px;min-width:0;width:100%}
textarea{min-height:110px;font-family:var(--font-data);font-size:12px}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
input:disabled,select:disabled{opacity:.6}
.btn{border:1px solid var(--line);background:var(--surface);padding:8px 13px;border-radius:4px;font-weight:600;font-size:13px;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:var(--muted)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.pri:hover{filter:brightness(1.08)}
.btn.danger{color:var(--fire);border-color:color-mix(in srgb,var(--fire) 45%,transparent)}
.btn.sm{padding:4px 9px;font-size:12px}
.btn.ghost{border-color:transparent;background:none}
.btn:disabled{opacity:.5;cursor:not-allowed}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.seg button{border:0;background:var(--surface);padding:7px 12px;font-weight:600;font-size:13px;cursor:pointer;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--surface-2);color:var(--ink)}
.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;color:var(--ink);background:color-mix(in srgb,var(--c) 14%,transparent);border:1px solid color-mix(in srgb,var(--c) 40%,transparent)}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c)}
.tag{display:inline-block;font-size:10px;font-weight:700;padding:0 4px;border-radius:3px;margin-left:4px;vertical-align:1px;background:var(--surface-2);color:var(--muted);font-family:var(--font-body)}
.mono,.num{font-family:var(--font-data);font-variant-numeric:tabular-nums}
.num{text-align:right}
.muted{color:var(--muted)}
.tw{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
table{border-collapse:collapse;width:100%;font-size:13px}
th{position:sticky;top:0;background:var(--surface-2);text-align:left;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;white-space:nowrap;z-index:1}
th.num{text-align:right}
td{padding:6px 10px;border-top:1px solid var(--line);vertical-align:middle;white-space:nowrap}
tbody tr:hover td{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}
tr.sel td{background:color-mix(in srgb,var(--accent) 10%,transparent)}
tr.dirty td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
tfoot td{font-weight:700;background:var(--surface-2)}
td input,td select{padding:4px 6px;font-size:13px}
td input.n{width:76px;text-align:right;font-family:var(--font-data)}
td input.t{width:160px}
td select{width:auto}
td.wrapcell{white-space:normal;min-width:180px}
.tw.tall{max-height:62vh;overflow:auto}
.dev-hi{color:var(--fire);font-weight:600}
.dev-mid{color:var(--warn);font-weight:600}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:12px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:2px}
.card .kpi{background:var(--bg)}
.kpi > b{font-family:var(--font-display);font-size:22px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.kpi > b small{font-family:var(--font-body);font-size:13px;color:var(--muted);font-weight:500;margin-left:4px;letter-spacing:0}
.kpi > b.bad{color:var(--fire)}
.kpi span{font-size:12px;color:var(--muted)}
.kpi span b{color:var(--ink);font-weight:600}
.kpi .bar{margin-block:6px 2px}
.tog{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:4px 11px;font-size:13px;font-weight:600;cursor:pointer;color:var(--muted)}
.tog[aria-pressed="true"]{background:color-mix(in srgb,var(--accent) 14%,var(--surface));border-color:var(--accent);color:var(--ink)}
.nav{display:inline-flex;align-items:center;gap:6px}
.nav b{min-width:150px;text-align:center;font-variant-numeric:tabular-nums}
.sw{display:inline-block;width:12px;height:12px;border-radius:2px;vertical-align:-1px;margin-right:4px}
.bar{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden;min-width:90px}
.bar i{display:block;height:100%;background:var(--c,var(--drill));border-radius:3px}
.prog{display:flex;align-items:center;gap:8px}
.prog .mono{font-size:12px;color:var(--muted);min-width:52px}
.qlist{display:flex;flex-direction:column;gap:12px}
.qbar{display:flex;gap:2px;height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden;margin-top:4px}
.qbar i{display:block;height:100%}
.qbar .u{background:var(--charge)}
.qbar .d{background:color-mix(in srgb,var(--charge) 38%,var(--surface-2))}
.qmeta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted);align-items:center;margin-top:4px}
.stack{display:grid;gap:14px;align-content:start}
.fold>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary h2{margin:0}
.fold>summary .sub::after{content:" ▾"}
.fold[open]>summary .sub::after{content:" ▴"}
.fold[open]>summary{margin-bottom:12px}
.mapcard .map svg{max-height:min(72vh,760px)}
.findbar{display:flex;flex-direction:row;flex-wrap:wrap;align-items:end;gap:8px 16px}
.findbar input{width:min(260px,100%)}
.decks{display:grid;gap:8px;border-top:1px solid var(--line);padding-top:10px}
.decks h3{font-size:14px}
.decks select{max-width:130px}
.prof .kv{display:grid;gap:4px;font-size:13px}
.prof .kv>div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-block:3px}
.prof .kv span{color:var(--muted)}
.prof .kv b{font-weight:500;text-align:right;font-family:var(--font-data)}
.map{position:relative;border:1px solid var(--line);border-radius:var(--r);background:var(--bg);padding:6px}
.map svg{display:block;width:100%;height:auto;max-height:460px;touch-action:none;user-select:none}
.tiebar{position:absolute;top:8px;left:8px;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:calc(100% - 140px);padding:4px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.map:has(.tiebar){padding-top:46px}
.tiebar .btn{min-width:38px}
.tiebar input{width:56px}
.mapbar{position:absolute;top:8px;right:8px;display:flex;gap:4px;z-index:1}
.mapbar .btn{min-width:30px;padding-inline:6px;background:var(--surface);font-size:15px;line-height:1}
.map g[data-act]{cursor:pointer}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:11px;height:11px;border-radius:50%;border:2px solid var(--c);background:var(--f,transparent)}
.legend i.sq{border-radius:2px;border:0;background:var(--c)}
.chart svg{display:block;width:100%;height:auto}
.empty{border:1px dashed var(--line);border-radius:var(--r);padding:28px 20px;text-align:center;color:var(--muted);display:flex;flex-direction:column;gap:10px;align-items:center}
.empty strong{color:var(--ink);font-size:15px}
.banner{border-radius:var(--r);padding:10px 14px;font-size:13px;background:color-mix(in srgb,var(--warn) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--warn) 40%,transparent);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.banner.info{background:color-mix(in srgb,var(--accent) 9%,var(--surface));border-color:color-mix(in srgb,var(--accent) 35%,transparent)}
.banner.bad{background:color-mix(in srgb,var(--fire) 10%,var(--surface));border-color:color-mix(in srgb,var(--fire) 40%,transparent)}
.banner select{width:auto}
.rejpanel{display:flex;flex-direction:column;gap:0;width:100%}
.rejpanel > div{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 0;border-top:1px solid color-mix(in srgb,var(--fire) 25%,transparent)}
.rejpanel .why{flex:1 1 260px;color:var(--ink)}
.savebar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--surface);border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px))}
.savebar .wrap{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding-inline:0}
.savebar .grow{margin-right:auto;font-weight:600}
.toast{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:6px;font-size:13px;z-index:80;max-width:min(92vw,560px);box-shadow:0 6px 24px rgba(0,0,0,.2)}
.toast.err{background:var(--fire);color:#fff}
.tip{position:fixed;z-index:60;pointer-events:none;background:var(--ink);color:var(--bg);font-size:12px;padding:6px 9px;border-radius:4px;white-space:pre;font-family:var(--font-data)}
[hidden]{display:none!important}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:70;display:flex;align-items:center;justify-content:center;padding:16px}
.overlay .card{max-width:640px;width:100%}
.brview{overflow:auto;max-height:70vh;border:1px solid var(--line);border-radius:var(--r);background:#fff}
.brview svg{display:block;max-width:100%;height:auto}
.overlay.pdfdlg{z-index:80}
.pdfdlg .card{max-width:680px;max-height:94vh;overflow:auto;display:grid;gap:12px}
.pdfprev{display:flex;justify-content:center;padding:12px;background:var(--surface-2);border-radius:var(--r);overflow:auto}
.pdfpage{background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25);box-sizing:border-box;display:flex;align-items:center;justify-content:center}
.pdfpage img{max-width:100%;max-height:100%;display:block}
.saf{display:grid;gap:8px;border-top:1px solid var(--line);padding-top:12px}
.formula{font-family:var(--font-data);font-size:13px;padding:8px 10px;border-radius:var(--r);background:var(--surface-2);overflow-x:auto;white-space:nowrap}
.overlay .card.sim{max-width:1000px;max-height:94vh;overflow:auto;display:grid;gap:12px}
.confirm{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap;padding:6px 10px;border-radius:4px;background:color-mix(in srgb,var(--fire) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--fire) 35%,transparent)}
.list{display:flex;flex-direction:column}
.list > div{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line);flex-wrap:wrap}
.list > div:first-child{border-top:0}
.editor{border:1px solid var(--line);border-radius:var(--r);background:var(--bg);padding:12px;display:flex;flex-direction:column;gap:10px;width:100%}
.checks{display:flex;flex-wrap:wrap;gap:6px}
.checks label{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:13px;cursor:pointer;text-transform:none;letter-spacing:0;font-weight:500;color:var(--ink)}
.steps{display:flex;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--muted);align-items:center}
.steps b{color:var(--ink)}
.flow{display:flex;flex-wrap:wrap;font-size:12px;font-weight:600;color:var(--muted)}
.flow span{padding:4px 10px;border:1px solid var(--line);margin-left:-1px;background:var(--surface)}
.flow span:first-child{margin-left:0}
.flow span.off{text-decoration:line-through;opacity:.55}
.loading{padding:60px 0;text-align:center;color:var(--muted)}
.secret{font-family:var(--font-data);font-size:18px;letter-spacing:.04em;padding:10px 12px;border:1px dashed var(--line);border-radius:4px;background:var(--bg);user-select:all;word-break:break-all}
/* login / change-password screens */
.auth{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:24px 16px}
.auth .brand{margin:0;font-size:18px}
.auth .card{width:100%;max-width:400px}
.auth form{display:flex;flex-direction:column;gap:12px}
.auth .btn{width:100%;padding-block:10px}
.msg{font-size:13px;border-radius:4px;padding:8px 10px;background:color-mix(in srgb,var(--fire) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--fire) 35%,transparent)}
.msg.info{background:color-mix(in srgb,var(--accent) 9%,var(--surface));border-color:color-mix(in srgb,var(--accent) 35%,transparent)}
@media (prefers-reduced-motion:no-preference){.bar i,.qbar i{transition:width .3s ease}}
@media print{.top,.savebar,.toast,.tip,#rej,.btn{display:none !important}main{padding:0}.tw.tall{max-height:none;overflow:visible}body{background:#fff}}
