/* Shared styles of the cabinet: tokens, page, rows, forms, report. The menu is in menu.css. */
body{margin:0}
.nsd{--bg:#ECEEF1;--card:#FFFFFF;--soft:#F5F6F8;--line:#DDE1E6;--line-strong:#C9CED6;--ink:#0C0E12;--muted:#5A6370;--accent:#F2501F;--accent-ink:#B23A0E;--btn:#0C0E12;--btn-ink:#FFFFFF;--as:#2F6BFF;--as-ink:#2457D6;--as-bg:#E6EEFF;--rt:#C8102E;--hr:#10A86A;--ok-bg:#E0F4EB;--ok-ink:#0B6B44;--hi-bg:#FDE9E1;--hi-ink:#A3360B;--me-bg:#FBF0D6;--me-ink:#765100;--lo-bg:#E7ECF3;--lo-ink:#3A475A;--cr-bg:#FBE3E6;--cr-ink:#A00D25;--sev-cr:#D61F3A;--sev-hi:#F2501F;--sev-me:#E0A21B;--sev-lo:#8C99AD;
  --r-surface:14px;--r-ctl:8px;--r-tag:6px;
  background:var(--bg);color:var(--ink);font:15px/1.5 Onest,'Helvetica Neue',Arial,sans-serif;-webkit-font-smoothing:antialiased}
.nsd.dark{--bg:#0C0E12;--card:#14171C;--soft:#1A1E25;--line:#262B33;--line-strong:#3A414C;--ink:#F4F3EE;--muted:#A3AAB4;--accent-ink:#FF7A4D;--btn:#F4F3EE;--btn-ink:#0C0E12;--as:#5B8BFF;--as-ink:#8FB0FF;--as-bg:#1B2540;--rt:#FF4D5E;--hr:#2BC686;--ok-bg:#14302A;--ok-ink:#5ED6A4;--hi-bg:#3A2219;--hi-ink:#FF9D77;--me-bg:#3A3018;--me-ink:#F2C766;--lo-bg:#222833;--lo-ink:#B7C2D3;--cr-bg:#3D1A20;--cr-ink:#FF8A96;--sev-cr:#FF4D62;--sev-lo:#6F7C90}
.nsd *{box-sizing:border-box}
.nsd button,.nsd input,.nsd select,.nsd textarea{font-family:inherit;font-size:inherit;color:inherit}
.nsd a{color:var(--ink);text-decoration:none}
.nsd :focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ic{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.mono{font-family:'IBM Plex Mono',ui-monospace,monospace}
.muted{color:var(--muted)}
.app{display:flex;min-height:100vh}
.booting .app{visibility:hidden}

/* used by page content too, unchanged */
.ava{width:30px;height:30px;border-radius:var(--r-tag);background:var(--ink);color:var(--bg);display:grid;place-items:center;font-weight:700;font-size:12px;flex:none}
.ava.round{border-radius:50%;background:var(--line);color:var(--ink)}
.sw{width:32px;height:20px;border-radius:10px;border:0;padding:0;position:relative;flex:none;background:var(--line-strong);margin-left:auto}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .15s}
.sw.on{background:var(--btn)}.sw.on::after{left:15px;background:var(--btn-ink)}
button.sw{cursor:pointer}
button.sw[disabled]{opacity:.45;cursor:not-allowed}
.qn{font-size:13px;font-weight:700;color:var(--accent-ink)}
.sdot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}

/* top */
.main{min-width:0;display:flex;flex-direction:column;min-height:100vh}
.top{display:flex;align-items:center;gap:16px;padding:0 32px;border-bottom:1px solid var(--line);min-height:64px}
.crumb{display:flex;flex-direction:column;line-height:1.2}
.crumb small{font-size:12.5px;color:var(--muted)}
.crumb b{font-size:16px;letter-spacing:-.01em}
.spacer{flex:1}
.ibtn{width:40px;height:40px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--card);display:grid;place-items:center;cursor:pointer;flex:none}
.menu-btn{display:none}

/* page */
.page{width:100%;max-width:860px;margin:0 auto;padding:24px 32px 72px;display:flex;flex-direction:column;gap:28px}
.page.wide{max-width:1240px}
.page.bleed{max-width:none;padding:0;gap:0}
.mapframe{display:block;width:100%;height:calc(100vh - 65px);min-height:520px;border:0}
.h1{margin:0;font-size:32px;line-height:1.1;font-weight:700;letter-spacing:-.03em}
.h1.mono{font-size:26px;font-weight:600;letter-spacing:-.01em;word-break:break-all}
.lead{margin:0;font-size:16px;color:var(--muted)}
.head{display:flex;flex-direction:column;gap:8px}
.head>.back,.head>.backrow{margin-bottom:8px}
.backrow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}
.nsd .back{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:14px;font-weight:600;color:var(--muted);background:none;border:0;padding:0;cursor:pointer;align-self:flex-start}
.live{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--hr);flex:none;vertical-align:middle;margin-right:8px}
.status{display:flex;align-items:center;margin:0;font-size:14px;color:var(--muted)}
.status+.card,.tabs+.card,.tabs+.sec{margin-top:-14px}
.top .btn{flex:none}

/* the one white surface per page */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-surface);overflow:hidden}
.pad{padding:20px}
/* unboxed sections on the page background */
.sec{display:flex;flex-direction:column;min-width:0;margin:0}
.sec-h{margin:0 0 10px;font-size:17px;line-height:1.3;font-weight:600;letter-spacing:-.01em}
.sec-h .n{font-weight:400;color:var(--muted)}
.sec>.r,.sec>.ck,.sec>.empty{padding-left:0;padding-right:0}
section.sec>.r:last-child,form.sec>.field:last-child{border-bottom:1px solid var(--line)}
.sec>a.r:hover,.sec>button.r:hover{background:transparent}
.sec>a.r:hover .t,.sec>button.r:hover .t{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong)}
details.sec{border-bottom:1px solid var(--line)}
details.sec>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;cursor:pointer;list-style:none;border-top:1px solid var(--line)}
details.sec>summary .sec-h{margin:0}
details.sec+details.sec{margin-top:-28px}
details.sec+details.sec>summary{border-top:0}
.sec .body{padding:2px 0 18px}
.opbox{border:1px dashed var(--line-strong);border-radius:var(--r-surface);padding:18px 20px}

/* rows */
.r{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:16px 20px;border-top:1px solid var(--line);color:var(--ink)}
.card>.r:first-child{border-top:0}
.card a.r:hover,.card button.r:hover{background:var(--soft)}
button.r{width:100%;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;cursor:pointer;font:inherit}
.card>button.r:first-child{border-top:0}
.card>details.grp>summary.r{cursor:pointer;list-style:none}
.card>details.grp:first-child>summary.r{border-top:0}
.card>details.grp>summary.r:hover{background:var(--soft)}
.card>details.grp>summary .ic{margin-left:auto}
.grp-b{background:var(--soft)}
.grp-b .r{padding-left:32px}
.r .m{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:2px}
.r .t{font-size:16px;font-weight:600;overflow-wrap:anywhere}
.r .s{font-size:13.5px;color:var(--muted);overflow-wrap:anywhere}
.r .s.hot,.hot{color:var(--accent-ink);font-weight:600}
.r .end{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;align-items:center;margin-left:auto;max-width:100%}
.r .end.cnts{gap:4px 20px}
.r .chev{color:var(--muted)}
.r.done{background:var(--ok-bg);color:var(--ok-ink)}
.r.done .t{font-size:15px}
.lc{width:72px;flex:none;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.lc.ok{color:var(--ok-ink)}
.lc.bad{color:var(--cr-ink)}
.tm{width:72px;flex:none;font-size:13px;color:var(--muted)}
.nsd a.quiet{font-size:14px;font-weight:600;color:var(--muted);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong)}
.nsd a.quiet:hover{color:var(--ink)}
.tag{display:inline-flex;align-items:center;justify-content:center;min-width:72px;font-size:12px;font-weight:600;padding:3px 8px;border-radius:var(--r-tag);white-space:nowrap;flex:none}
.tag.cr{background:var(--cr-bg);color:var(--cr-ink)}.tag.hi{background:var(--hi-bg);color:var(--hi-ink)}
.tag.me{background:var(--me-bg);color:var(--me-ink)}.tag.lo{background:var(--lo-bg);color:var(--lo-ink)}
.sv.cr{color:var(--cr-ink)}.sv.hi{color:var(--hi-ink)}.sv.me{color:var(--me-ink)}.sv.lo{color:var(--lo-ink)}
.r .s.sv{font-weight:600}
.r .s.new{color:var(--as-ink);font-weight:600}
.okline,.stline{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600}
.okline{color:var(--ok-ink)}.stline{color:var(--muted)}
.app-st{margin:0 0 6px;font-weight:600}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--r-ctl);border:1px solid var(--line-strong);background:var(--card);color:var(--ink);font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap}
.btn:hover{box-shadow:inset 0 0 0 1px var(--ink)}
.nsd .btn.p{background:var(--btn);border-color:var(--btn);color:var(--btn-ink)}
.btn.p:hover{opacity:.86;box-shadow:none}
.btn.sm{height:34px;padding:0 12px;font-size:14px}
.btn .n{font-weight:500;opacity:.6}
.btn.danger{color:var(--cr-ink)}
.endbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:var(--r-surface);background:var(--me-bg);color:var(--me-ink);font-size:14.5px}
.endbar b{font-weight:600}
.btn[disabled]{opacity:.4;cursor:not-allowed;box-shadow:none}
.r .t a:hover{text-decoration:underline;text-underline-offset:3px}
.linkbtn{border:0;background:transparent;padding:0;font-weight:600;font-size:14px;text-decoration:underline;text-underline-offset:3px;cursor:pointer;color:inherit}
.big{font-size:17px;line-height:1.55;margin:0}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.kv{display:grid;grid-template-columns:160px 1fr;gap:10px 16px;margin:0;font-size:14.5px}
.kv dt{color:var(--muted)}.kv dd{margin:0;min-width:0;word-break:break-word}
.kv dt.mid{align-self:center}
details>summary::-webkit-details-marker{display:none}
details>summary .ic{transition:transform .15s;color:var(--muted)}
details[open]>summary .ic{transform:rotate(90deg)}
pre.code{margin:0;font:13px/1.6 'IBM Plex Mono',monospace;background:var(--card);border:1px solid var(--line);border-radius:var(--r-ctl);padding:14px 16px;white-space:pre-wrap;word-break:break-all}
pre.code mark{background:var(--hi-bg);color:var(--hi-ink);border-radius:4px;padding:0 3px}
.empty{padding:28px 20px;color:var(--muted)}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,16px);opacity:0;pointer-events:none;background:var(--btn);color:var(--btn-ink);padding:12px 16px;border-radius:var(--r-ctl);font-size:14px;font-weight:500;max-width:calc(100% - 32px);transition:all .2s;z-index:80}
.toast.on{opacity:1;transform:translate(-50%,0)}
.scrim{position:fixed;inset:0;background:rgba(12,14,18,.4);opacity:0;pointer-events:none;z-index:55;transition:opacity .2s}
.scrim.on{opacity:1;pointer-events:auto}

/* forms */
.in{height:40px;padding:0 12px;border-radius:var(--r-ctl);border:1px solid var(--line-strong);background:var(--card);min-width:0}
input.in{flex:1 1 200px}
textarea.in{height:auto;padding:10px 12px;resize:vertical;font-family:'IBM Plex Mono',monospace;font-size:14px;line-height:1.5}
.field{display:flex;flex-direction:column;gap:6px;padding:16px 0;border-top:1px solid var(--line)}
.field>label,.field>.lab{font-weight:600}
.field .hint{font-size:13.5px;color:var(--muted)}
.field .field-err,.actions .field-err{color:var(--cr-ink);font-weight:600}
.row>.field-err,.actions>.field-err{flex:0 0 100%;order:1}
.actions>.field-err{font-size:13.5px}
.actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:16px;border-top:1px solid var(--line)}
.field .in{width:100%}
.field>.in{flex:none}
.radio,.cb{display:flex;align-items:flex-start;gap:10px;padding:6px 0;cursor:pointer}
.radio input,.cb input,.ck input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--ink);flex:none}
.ck{display:flex;align-items:flex-start;gap:12px;padding:14px 0;border-top:1px solid var(--line);cursor:pointer}
.drop{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:22px;border:1.5px dashed var(--line-strong);border-radius:var(--r-ctl);background:var(--card);cursor:pointer;text-align:center}
.drop:hover{border-color:var(--ink)}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.drop.has{border-style:solid;border-color:var(--ok-ink);background:var(--ok-bg);color:var(--ok-ink)}
.steps2{list-style:none;margin:0;padding:0;counter-reset:s}
.steps2>li{position:relative;padding:16px 0 16px 44px;border-top:1px solid var(--line);counter-increment:s;display:flex;flex-direction:column;gap:10px}
.steps2>li:last-child{border-bottom:1px solid var(--line)}
.steps2>li::before{content:counter(s);position:absolute;left:0;top:16px;width:28px;height:28px;border-radius:50%;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-weight:700;font-size:14px}
.steps2 .t{font-weight:600;font-size:16px}
.split{display:flex;flex-wrap:wrap;gap:28px;align-items:flex-start}
.split>*{flex:1 1 360px;min-width:0}
.stack{display:flex;flex-direction:column;gap:14px}
.fld{display:flex;flex-direction:column;gap:6px}
.fld>label,.fld>.lab,.fset>legend{font-weight:600}
.fld .in{width:100%;flex:none}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.fset{border:0;padding:0;margin:0;min-width:0}
.fset>legend{margin-bottom:4px;padding:0}
.fset .mono{word-break:break-word}
form.sec>.fset,form.sec>.fld,form.sec>.fgrid{margin-top:16px}
.dropin{display:contents}
.note{margin:8px 0 0;padding:12px 14px;border-left:3px solid var(--line-strong);background:var(--soft);white-space:pre-wrap;word-break:break-word}
.pdfview{display:flex;flex-direction:column;gap:10px}
.pdf{width:100%;height:min(78vh,900px);border:1px solid var(--line);border-radius:4px;background:#fff}
.nsd [hidden]{display:none!important}
.paper{background:#fff;color:#0C0E12;border:1px solid var(--line);border-radius:4px;padding:30px 34px;font-size:14px;line-height:1.6;box-shadow:0 10px 30px rgba(12,14,18,.07)}
.paper .pp-h{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;font-weight:700;font-size:13px;color:#5A6370;margin-bottom:12px}
.paper .pp-h .mono{font-weight:500}
.paper ul{margin:6px 0 10px;padding-left:18px}
.paper .sig{margin-top:24px;display:flex;flex-direction:column;gap:2px}
.paper .sigline{font-family:'Snell Roundhand','Segoe Script','Brush Script MT',cursive;font-size:28px;border-bottom:1px solid #C9CED6;padding-bottom:2px;width:250px;color:#1B3A8C}

/* report */
.sheet{background:#fff;color:#0C0E12;border-radius:4px;border:1px solid var(--line);padding:48px 56px}
.sheet .m{color:#5A6370}
.sheet h1{font-size:30px;line-height:1.1;margin:18px 0 6px;letter-spacing:-.03em}
.sheet h2{font-size:17px;margin:32px 0 10px}
.sheet .nums{display:flex;flex-wrap:wrap;gap:1px;background:#E3E6EA;border:1px solid #E3E6EA;border-radius:var(--r-ctl);overflow:hidden;margin-top:22px}
.sheet .nums div{flex:1 1 150px;background:#fff;padding:14px 16px}
.sheet .nums b{display:block;font-size:28px;letter-spacing:-.03em;line-height:1.1}
.sheet .nums span{font-size:13px;color:#5A6370}
.sheet table{width:100%;border-collapse:collapse;font-size:14px}
.sheet th{text-align:left;font-size:13px;font-weight:600;color:#5A6370;border-bottom:1px solid #0C0E12;padding:8px 10px 8px 0}
.sheet td{border-bottom:1px solid #E3E6EA;padding:10px 10px 10px 0;vertical-align:top}
.sheet ul{padding-left:18px;margin:0}.sheet li{margin:6px 0}
.sheet .sv{font-weight:600}.sheet .sv.cr{color:#A00D25}.sheet .sv.hi{color:#A3360B}.sheet .sv.me{color:#765100}.sheet .sv.lo{color:#3A475A}
.sheet .sfoot{margin-top:36px;padding-top:14px;border-top:1px solid #E3E6EA;font-size:12px;color:#5A6370;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}
.sheet .sfoot span:last-child{text-align:right}

@media (max-width:900px){
  .menu-btn{display:grid}
  .top{padding:0 12px;gap:8px}
  .page{padding:16px 16px 56px;gap:24px}
  .tabs{flex-wrap:nowrap;overflow-x:auto;margin:0 -16px;padding:0 16px;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tabs>.btn{flex:none}
  details.sec+details.sec{margin-top:-24px}
  .h1{font-size:26px}.h1.mono{font-size:20px}
  .kv{grid-template-columns:1fr;gap:2px}.kv dd{margin-bottom:10px}
  .sheet{padding:28px 20px}
}
/* phone: rows keep the chevron on the right edge instead of wrapping it onto its own line */
@media (max-width:600px){
  .r .m{flex-basis:170px}
  a.r,button.r{position:relative;padding-right:44px}
  .sec>a.r,.sec>button.r{padding-right:28px}
  a.r>.chev,button.r>.chev{position:absolute;right:16px;top:50%;margin-top:-9px;display:flex}
  .sec>a.r>.chev,.sec>button.r>.chev{right:0}
  .r>.lc+.m~.s.hot{margin-left:86px}
  .r.log>.lc{width:24px;justify-content:flex-start}
  .r.log>.end{flex:0 0 100%;padding-left:38px}
}
@page{size:A4;margin:14mm}
@media print{
  body.nsd{background:#fff}
  .side,.top,.no-print,.toast,.scrim{display:none!important}
  .app{display:block}.page{padding:0;max-width:none}
  .sheet{border:0;padding:0}
  .sheet tr{break-inside:avoid}
}
