:root{
  --ink:#1B1E2B;--ink2:#464B63;--ink3:#5F6480;
  --ground:#F3F2ED;--surf:#FBFAF6;--surf2:#EBE9E1;
  --rule:#D9D6CB;--rule2:#B8B4A6;
  --brass:#856220;--brass2:#B0872F;--indigo:#333A6B;
  --ok:#3A6A4B;--okbg:#E4EDE5;--warn:#87621A;--warnbg:#F3EAD4;--bad:#93382C;--badbg:#F3E1DD;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --ink:#ECEBE5;--ink2:#BEBDB4;--ink3:#A3A29A;
  --ground:#15171F;--surf:#1C1F2A;--surf2:#242734;
  --rule:#343849;--rule2:#4B5064;
  --brass:#D2A24E;--brass2:#E6BE77;--indigo:#8C95D5;
  --ok:#7FBE94;--okbg:#1E2E23;--warn:#D9B364;--warnbg:#2E2718;--bad:#DE8878;--badbg:#301D1A;
}}
:root[data-theme="dark"]{
  --ink:#ECEBE5;--ink2:#BEBDB4;--ink3:#A3A29A;
  --ground:#15171F;--surf:#1C1F2A;--surf2:#242734;
  --rule:#343849;--rule2:#4B5064;
  --brass:#D2A24E;--brass2:#E6BE77;--indigo:#8C95D5;
  --ok:#7FBE94;--okbg:#1E2E23;--warn:#D9B364;--warnbg:#2E2718;--bad:#DE8878;--badbg:#301D1A;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--ground);color:var(--ink);font-family:"Karla",system-ui,sans-serif;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:"Fraunces",Georgia,serif;margin:0;text-wrap:balance}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
a{color:var(--indigo)}

/* gate */
#gate{min-height:100vh;display:grid;place-items:center;padding:24px}
.gbox{width:100%;max-width:390px;text-align:center}
.gmark{font-family:"Fraunces",serif;font-size:13px;letter-spacing:.36em;text-transform:uppercase;color:var(--brass);margin-bottom:24px}
.gbox h1{font-size:33px;font-weight:400;margin-bottom:5px}
.gbox p{color:var(--ink3);font-size:13.5px;margin:0 0 26px}
#gform{display:flex;flex-direction:column;gap:9px}
#gform input{padding:12px 14px;font-family:"IBM Plex Mono",monospace;background:var(--surf);border:1px solid var(--rule2);border-radius:0;text-align:center}
#gform input:focus{outline:2px solid var(--brass);outline-offset:1px;border-color:transparent}
#gform button{padding:12px;font-weight:700;letter-spacing:.04em;background:var(--ink);color:var(--ground);border:none;cursor:pointer}
#gform button:hover{background:var(--brass)}
#gform button:disabled{opacity:.5;cursor:wait}
#gerr{color:var(--bad);font-size:13px;min-height:20px;margin-top:11px;font-family:"IBM Plex Mono",monospace}

/* frame */
#app{display:none;max-width:1280px;margin:0 auto;padding:0 22px 90px}
#app.on{display:block}
header.top{padding:30px 0 16px;border-bottom:2px solid var(--ink);display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
header.top h1{font-size:28px;font-weight:600;letter-spacing:-.015em}
header.top .sup{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--brass);margin-bottom:4px}
.topright{display:flex;align-items:center;gap:10px;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink3)}
.btn{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:none;border:1px solid var(--rule2);color:var(--ink3);padding:7px 12px;cursor:pointer}
.btn:hover{color:var(--ink);border-color:var(--ink)}
.btn.pri{background:var(--ink);color:var(--ground);border-color:var(--ink)}
.btn.pri:hover{background:var(--brass);border-color:var(--brass)}

.strip{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--rule);padding:12px 0}
.stat{padding:0 22px 0 0;margin-right:22px;border-right:1px solid var(--rule)}
.stat:last-child{border-right:none}
.stat .k{font-family:"IBM Plex Mono",monospace;font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink3)}
.stat .v{font-family:"Fraunces",serif;font-size:21px;font-weight:600;font-variant-numeric:tabular-nums}
.stat .v small{font-size:12px;font-family:"IBM Plex Mono",monospace;color:var(--ink3);font-weight:400;margin-left:4px}

.tabs{display:flex;gap:0;border-bottom:1px solid var(--rule);margin-bottom:26px;overflow-x:auto}
.tabs button{font-size:14px;font-weight:500;background:none;border:none;color:var(--ink3);padding:14px 17px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}
.tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--brass);font-weight:700}
.tabs button:hover{color:var(--ink)}
#view:focus{outline:none}

.rowhead{margin-bottom:18px}
.rowhead h2{font-size:26px;font-weight:600;letter-spacing:-.015em}
.rowhead .sub{color:var(--ink2);margin:6px 0 0;max-width:72ch}
h3{font-size:19px;font-weight:600;margin:30px 0 10px}
p{margin:0 0 13px;max-width:74ch}
.note{font-size:13px;color:var(--ink3);max-width:78ch}
.dim{color:var(--ink3)}

/* filters */
.filters{display:flex;flex-wrap:wrap;gap:13px;align-items:flex-end;background:var(--surf);border:1px solid var(--rule);padding:15px 17px;margin-bottom:13px}
.fgroup{display:flex;flex-direction:column;gap:5px;min-width:128px}
.fgroup.fwide{flex:1;min-width:190px}
.fgroup label{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3)}
.fgroup label b{color:var(--brass);font-weight:600}
.fgroup input[type=search],.fgroup input[type=text],.fgroup input[type=date],.fgroup input[type=number],.fgroup select,.fgroup textarea{
  padding:7px 9px;background:var(--ground);border:1px solid var(--rule2);border-radius:0;width:100%}
.fgroup input[type=range]{width:100%;accent-color:var(--brass)}
.fcheck{gap:6px;justify-content:flex-end}
.fcheck label{display:flex;align-items:center;gap:6px;text-transform:none;letter-spacing:0;font-family:"Karla",sans-serif;font-size:13px;color:var(--ink2);cursor:pointer}
.fcheck input{accent-color:var(--brass)}
.freset{font-family:"IBM Plex Mono",monospace;font-size:11px;text-transform:uppercase;letter-spacing:.08em;background:none;border:1px solid var(--rule2);color:var(--ink3);padding:8px 12px;cursor:pointer;height:34px}
.freset:hover{color:var(--ink);border-color:var(--ink)}
.fcount{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--ink3);margin-bottom:10px}
.fcount span:first-child{color:var(--brass);font-weight:500}

/* tables */
.tw{overflow-x:auto;border:1px solid var(--rule);background:var(--surf);margin-bottom:12px}
table{border-collapse:collapse;width:100%;font-size:13.5px}
th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--rule);vertical-align:top}
th.r,td.r{text-align:right}
thead th{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink3);font-weight:500;background:var(--surf2);border-bottom:1px solid var(--rule2);position:sticky;top:0;white-space:nowrap}
thead th[data-sort]{cursor:pointer;user-select:none}
thead th[data-sort]:hover{color:var(--ink)}
thead th.sorted::after{content:"↓";margin-left:5px;color:var(--brass)}
thead th.sorted.asc::after{content:"↑"}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--surf2)}
tr.fit td:first-child{box-shadow:inset 3px 0 0 var(--brass)}
tr.empty td{text-align:center;color:var(--ink3);font-style:italic;padding:22px}
tr.tot td{font-weight:700;border-top:2px solid var(--rule2);background:var(--surf2)}
.num,td.r{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
.prop{font-weight:700}
.mono{font-family:"IBM Plex Mono",monospace;font-size:12px;word-break:break-all}

.tag{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border:1px solid currentColor;white-space:nowrap}
.t-UL{color:var(--brass)}.t-L{color:var(--indigo)}.t-UU{color:var(--ink3)}.t-US{color:var(--ink3)}.t-H{color:var(--ok)}
.s{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border:1px solid currentColor}
.s-ok{color:var(--ok);background:var(--okbg)}
.s-warn{color:var(--warn);background:var(--warnbg)}
.s-dead{color:var(--bad);background:var(--badbg)}

.alarm{background:var(--surf);border:1px solid var(--rule2);border-left:4px solid var(--bad);padding:17px 19px;margin:0 0 17px}
.alarm.amber{border-left-color:var(--warn)}
.alarm.brass{border-left-color:var(--brass)}
.alarm b{display:block;font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3);margin-bottom:5px}
.alarm p{margin:0}

.tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:13px;margin-bottom:10px}
.tier{background:var(--surf);border:1px solid var(--rule);border-top:3px solid var(--rule2);padding:15px 17px;display:flex;flex-direction:column;gap:3px}
.tier.hero{border-top-color:var(--brass)}
.tier .lab{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink3)}
.tier .fig{font-family:"Fraunces",serif;font-size:24px;font-weight:600}
.tier .tnote{font-size:12.5px;color:var(--ink3);line-height:1.4}

#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--ground);padding:10px 18px;font-family:"IBM Plex Mono",monospace;font-size:12px;opacity:0;pointer-events:none;transition:opacity .18s;z-index:99}
#toast.on{opacity:1}

@media (max-width:640px){
  #app{padding:0 13px 60px}
  header.top h1{font-size:22px}
  .stat{padding-right:16px;margin-right:16px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
