:root{--paper: #e8e8e6;--paper-2: #dededb;--tile: #f3f3f1;--tile-hi: #fbfbfa;--ink: #0d0d0d;--ink-2: #2a2a2a;--mute: #6b6b68;--mute-2: #9a9a96;--line: #0d0d0d;--soft-line: #c9c9c5;--ok: #0d0d0d;--bad: #0d0d0d;--b: 3px;--b-thin: 2px;--shadow: 5px 5px 0 var(--ink);--shadow-sm: 3px 3px 0 var(--ink);--r-blob: 30px 38px 28px 42px / 34px 28px 40px 30px;--r-blob-2: 40px 26px 36px 30px / 28px 38px 30px 36px;--r-pill: 999px;--r-md: 18px 22px 18px 24px;--r-sm: 12px 14px 12px 15px;--f-sans: "Rubik", system-ui, -apple-system, "Segoe UI", sans-serif;--f-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--ease: cubic-bezier(.2, .8, .2, 1);color-scheme:light}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-sans);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;background-image:radial-gradient(rgba(0,0,0,.035) 1px,transparent 1px);background-size:4px 4px}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--ink);outline-offset:3px}::selection{background:var(--ink);color:var(--tile-hi)}.tag-title{font-weight:900;font-size:clamp(28px,4.2vw,46px);line-height:.95;letter-spacing:-.02em;text-transform:uppercase;margin:0;text-shadow:0 0 0 var(--ink),2px 2px 0 var(--tile-hi)}.tag-sub{color:var(--mute);font-weight:500;margin:6px 0 0}.h2{font-weight:900;text-transform:uppercase;font-size:17px;letter-spacing:.02em;margin:0}.mono{font-family:var(--f-mono);font-size:.92em}.muted{color:var(--mute)}.small{font-size:13px}.nowrap{white-space:nowrap}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shell{display:grid;grid-template-columns:264px minmax(0,1fr);min-height:100vh}.side{position:sticky;top:0;height:100vh;padding:22px 18px;display:flex;flex-direction:column;gap:18px;border-right:var(--b) solid var(--ink);background:var(--paper-2);overflow-y:auto}.main{padding:28px clamp(16px,3vw,40px) 60px;min-width:0}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}.grid{display:grid;gap:18px}.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}.g-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.span-2{grid-column:span 2}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.mt{margin-top:18px}.logo{display:inline-grid;place-items:center;width:92px;height:92px;border:5px solid var(--ink);border-radius:28px;background:radial-gradient(120% 90% at 30% 20%,#fff,#e9e9e7 55%,#d4d4d1);box-shadow:inset 0 0 0 3px #fff,inset 0 -6px 12px #0000001f,var(--shadow-sm);text-decoration:none;transform:rotate(-3deg);transition:transform .25s var(--ease)}.logo:hover{transform:rotate(2deg) scale(1.03)}.logo span{font-weight:900;font-size:25px;letter-spacing:-.04em;color:var(--ink);text-shadow:0 0 1px var(--ink),0 0 6px rgba(0,0,0,.45),-1px -1px 0 #fff;transform:skew(-6deg)}.logo.lg{width:150px;height:150px;border-width:7px;border-radius:46px}.logo.lg span{font-size:44px}.card{background:linear-gradient(180deg,var(--tile-hi),var(--tile));border:var(--b) solid var(--ink);border-radius:var(--r-blob);box-shadow:var(--shadow);padding:18px 20px;min-width:0;position:relative}.card.alt{border-radius:var(--r-blob-2)}.card.ink{background:var(--ink);color:var(--tile-hi);box-shadow:5px 5px 0 var(--mute-2)}.card.flat{box-shadow:none}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}.sticker{display:inline-block;background:var(--ink);color:var(--tile-hi);font-weight:900;text-transform:uppercase;font-size:12px;letter-spacing:.06em;padding:4px 10px 3px;border-radius:9px 12px 8px 13px;transform:rotate(-2deg)}.card.ink .sticker{background:var(--tile-hi);color:var(--ink)}.stat{display:flex;flex-direction:column;gap:6px}.stat .label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--mute)}.card.ink .stat .label{color:var(--mute-2)}.stat .value{font-weight:900;font-size:clamp(30px,3.4vw,44px);line-height:1;letter-spacing:-.035em;font-variant-numeric:tabular-nums}.stat .hint{font-size:13px;color:var(--mute)}.delta{display:inline-flex;align-items:center;gap:4px;font-weight:800;font-size:12px;padding:2px 8px;border:var(--b-thin) solid currentColor;border-radius:var(--r-pill)}.delta.down{background:var(--ink);color:var(--tile-hi);border-color:var(--ink)}.btn{--bg: var(--ink);--fg: var(--tile-hi);display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 18px;border:var(--b) solid var(--ink);border-radius:16px 20px 15px 21px;background:var(--bg);color:var(--fg);font-weight:800;font-size:14px;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .15s var(--ease),box-shadow .15s var(--ease),background .15s,color .15s;white-space:nowrap}.btn:hover:not(:disabled){--bg: var(--tile-hi);--fg: var(--ink);transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.btn:active:not(:disabled){transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{--bg: var(--tile-hi);--fg: var(--ink)}.btn.ghost:hover:not(:disabled){--bg: var(--ink);--fg: var(--tile-hi)}.btn.danger{background-image:repeating-linear-gradient(-45deg,transparent 0 7px,rgba(255,255,255,.12) 7px 14px)}.btn.sm{min-height:32px;padding:0 12px;font-size:12px;border-width:var(--b-thin);box-shadow:2px 2px 0 var(--ink)}.btn.icon{padding:0;width:42px}.btn.sm.icon{width:32px}.link-btn{background:none;border:0;padding:0;font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;cursor:pointer}.nav{display:flex;flex-direction:column;gap:6px}.nav-group{font-size:11px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:10px 6px 2px}.nav a{display:flex;align-items:center;gap:12px;padding:9px 12px;border:var(--b-thin) solid transparent;border-radius:14px 18px 13px 19px;text-decoration:none;font-weight:700;transition:background .15s,color .15s,border-color .15s,transform .15s var(--ease)}.nav a:hover{border-color:var(--ink);background:var(--tile-hi);transform:translate(2px)}.nav a.active{background:var(--ink);color:var(--tile-hi);border-color:var(--ink);box-shadow:3px 3px 0 var(--mute-2)}.nav svg{flex:none}.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:12px}.me{display:flex;align-items:center;gap:10px;padding:10px;border:var(--b-thin) solid var(--ink);border-radius:var(--r-md);background:var(--tile-hi)}.topbar,.scrim{display:none}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>span{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.input,.select,.textarea{min-height:42px;padding:8px 14px;border:var(--b) solid var(--ink);border-radius:14px 17px 13px 18px;background:var(--tile-hi);outline:none;min-width:0;transition:box-shadow .15s var(--ease)}.input:focus,.select:focus,.textarea:focus{box-shadow:var(--shadow-sm)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:38px;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 20px) 52%,calc(100% - 14px) 52%;background-size:6px 6px;background-repeat:no-repeat}.textarea{min-height:90px;resize:vertical}.input.sm,.select.sm{min-height:34px;padding-top:4px;padding-bottom:4px;border-width:var(--b-thin)}.switch{display:inline-flex;align-items:center;gap:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;pointer-events:none}.switch .track{width:58px;height:32px;border:var(--b) solid var(--ink);border-radius:999px;background:var(--tile-hi);position:relative;flex:none;transition:background .2s var(--ease)}.switch .track:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--ink);transition:transform .25s var(--ease),background .2s}.switch input:checked+.track{background:var(--ink)}.switch input:checked+.track:after{transform:translate(26px);background:var(--tile-hi)}.switch input:focus-visible+.track{outline:3px solid var(--ink);outline-offset:3px}.switch input:disabled+.track{opacity:.4}.seg{display:inline-flex;border:var(--b) solid var(--ink);border-radius:16px 20px 15px 21px;overflow:hidden;background:var(--tile-hi);flex-wrap:wrap}.seg button{border:0;background:transparent;padding:8px 14px;font-weight:800;font-size:13px;text-transform:uppercase;cursor:pointer;border-right:var(--b-thin) solid var(--ink);transition:background .15s,color .15s}.seg button:last-child{border-right:0}.seg button:hover{background:var(--paper-2)}.seg button[aria-pressed=true]{background:var(--ink);color:var(--tile-hi)}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border:var(--b-thin) solid var(--ink);border-radius:var(--r-pill);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:var(--tile-hi);white-space:nowrap}.badge.solid{background:var(--ink);color:var(--tile-hi)}.badge.dashed{border-style:dashed;color:var(--mute)}.dot{width:9px;height:9px;border-radius:50%;background:var(--ink);border:2px solid var(--ink);display:inline-block}.dot.off{background:transparent}.dot.live{animation:pulse 1.6s infinite}@keyframes pulse{0%{box-shadow:0 0 #0d0d0d73}70%{box-shadow:0 0 0 9px #0d0d0d00}to{box-shadow:0 0 #0d0d0d00}}.user{display:inline-flex;align-items:center;gap:9px;min-width:0;max-width:100%}.avatar{width:30px;height:30px;flex:none;border-radius:11px 13px 10px 14px;border:var(--b-thin) solid var(--ink);background:var(--paper-2);object-fit:cover;display:inline-grid;place-items:center;font-weight:900;font-size:13px}.avatar.lg{width:64px;height:64px;border-width:var(--b);border-radius:20px 24px 19px 26px;font-size:24px}.table-wrap{overflow-x:auto;margin:0 -6px;padding:0 6px}table.t{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.t th{text-align:left;font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;padding:8px 10px;border-bottom:var(--b) solid var(--ink);white-space:nowrap;position:sticky;top:0;background:var(--tile)}.t th button{all:unset;cursor:pointer;display:inline-flex;gap:4px;align-items:center}.t th button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.t td{padding:9px 10px;border-bottom:1.5px solid var(--soft-line);vertical-align:middle}.t tbody tr{transition:background .12s}.t tbody tr:hover{background:#0d0d0d0b}.t tr.clickable{cursor:pointer}.t td.num,.t th.num{text-align:right;font-variant-numeric:tabular-nums}.rank{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:9px 11px 8px 12px;border:var(--b-thin) solid var(--ink);font-weight:900;font-size:12px}.rank.top{background:var(--ink);color:var(--tile-hi)}.bar-row{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:center;padding:6px 0}.bar{height:8px;border-radius:6px;background:var(--paper-2);border:1.5px solid var(--ink);overflow:hidden;margin-top:5px}.bar>i{display:block;height:100%;background:var(--ink);transform-origin:left;animation:grow .7s var(--ease) both}@keyframes grow{0%{transform:scaleX(0)}}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;flex-wrap:wrap}.skeleton{border-radius:12px;background:linear-gradient(90deg,var(--paper-2) 0%,#ececea 50%,var(--paper-2) 100%);background-size:200% 100%;animation:shimmer 1.2s infinite linear}@keyframes shimmer{to{background-position:-200% 0}}.spinner{width:18px;height:18px;border:3px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.empty{display:grid;place-items:center;text-align:center;gap:8px;padding:34px 16px;border:var(--b-thin) dashed var(--mute-2);border-radius:var(--r-md);color:var(--mute)}.empty b{color:var(--ink);font-weight:900;text-transform:uppercase}.errbox{border:var(--b) solid var(--ink);border-radius:var(--r-md);padding:14px 16px;background:repeating-linear-gradient(-45deg,var(--tile-hi) 0 10px,var(--paper-2) 10px 20px);display:flex;gap:12px;align-items:flex-start}.errbox b{font-weight:900;text-transform:uppercase}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d0d0d8c;display:grid;place-items:center;padding:16px;z-index:50;animation:fade .15s ease both}.modal{width:min(520px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--tile-hi);border:4px solid var(--ink);border-radius:var(--r-blob);box-shadow:8px 8px 0 var(--ink);padding:22px;animation:pop .22s var(--ease) both}.modal.wide{width:min(860px,100%)}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:translateY(14px) scale(.97) rotate(-.6deg);opacity:0}}.toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:10px;z-index:60;max-width:min(420px,calc(100vw - 36px))}.toast{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:var(--b) solid var(--ink);border-radius:var(--r-md);background:var(--tile-hi);box-shadow:var(--shadow);animation:pop .25s var(--ease) both}.toast.error{background:var(--ink);color:var(--tile-hi);box-shadow:5px 5px 0 var(--mute-2)}.toast b{font-weight:900;text-transform:uppercase;font-size:13px;display:block}.chart{width:100%;height:260px}.chart.sm{height:170px}.recharts-cartesian-axis-tick text{fill:var(--mute);font-size:11px;font-family:var(--f-mono)}.chart-tip{background:var(--ink);color:var(--tile-hi);padding:8px 12px;border-radius:12px 14px 11px 15px;font-size:13px;box-shadow:3px 3px 0 var(--mute-2)}.chart-tip b{font-weight:900}.heat{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:4px}.heat div{aspect-ratio:1 / 1.6;border-radius:6px;border:1.5px solid var(--ink)}.logs{font-family:var(--f-mono);font-size:12.5px;background:var(--ink);color:#e9e9e7;border-radius:var(--r-md);padding:12px;max-height:560px;overflow:auto;border:var(--b) solid var(--ink)}.logs .ln{display:grid;grid-template-columns:82px 70px minmax(0,1fr);gap:10px;padding:3px 4px;border-radius:6px}.logs .ln:hover{background:#ffffff12}.logs .lvl{font-weight:600;text-transform:uppercase}.logs .lvl.warning,.logs .lvl.error,.logs .lvl.critical{background:#e9e9e7;color:var(--ink);border-radius:4px;padding:0 4px;justify-self:start}.logs .fields{color:#a8a8a4;word-break:break-word}.logs pre{margin:4px 0 0;white-space:pre-wrap;color:#d0d0cc}.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:0}.kv dt{color:var(--mute);font-weight:600}.kv dd{margin:0;font-weight:700;min-width:0;overflow-wrap:anywhere}.divider{border:0;border-top:var(--b-thin) dashed var(--mute-2);margin:16px 0}.scribble{display:block;width:140px;height:12px;margin-top:8px}.photo-thumb{width:64px;height:48px;object-fit:cover;border:var(--b-thin) solid var(--ink);border-radius:10px 12px 9px 13px;background:var(--paper-2)}.code{font-family:var(--f-mono);background:var(--paper-2);border:1.5px solid var(--ink);border-radius:8px;padding:1px 6px;font-size:12.5px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.page{animation:rise .35s var(--ease) both}@keyframes rise{0%{transform:translateY(10px);opacity:0}}@media (max-width: 1180px){.g-4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-2-1{grid-template-columns:minmax(0,1fr)}}@media (max-width: 900px){.shell{grid-template-columns:1fr}.side{position:fixed;left:0;top:0;bottom:0;width:min(300px,86vw);z-index:40;transform:translate(-105%);transition:transform .28s var(--ease);box-shadow:8px 0 0 var(--ink)}.side.open{transform:none}.scrim.open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0d0d0d73;z-index:39}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:var(--b) solid var(--ink);background:var(--paper-2);position:sticky;top:0;z-index:30}.topbar .logo{width:52px;height:52px;border-width:4px;border-radius:17px}.topbar .logo span{font-size:15px}.g-3,.g-2{grid-template-columns:minmax(0,1fr)}.span-2{grid-column:auto}.main{padding-top:20px}}@media (max-width: 560px){.g-4{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.card{padding:14px;box-shadow:var(--shadow-sm)}.stat .value{font-size:28px}.logs .ln{grid-template-columns:64px minmax(0,1fr)}.logs .ln .lvl{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
