:root{--paper: #f7f3e9;--paper-2: #fffdf7;--paper-3: #efe9db;--ink: #1d2126;--ink-2: #4b5560;--ink-3: #7d8894;--line: #ddd5c4;--line-2: #c9bfa9;--pine: #0f6b4f;--pine-2: #0b533e;--pine-soft: #e2efe8;--clay: #c4622d;--clay-soft: #f7e7da;--gold: #b5872a;--plum: #6b3f6e;--danger: #a4373a;--radius: 10px;--radius-lg: 16px;--shadow-1: 0 1px 2px rgba(29, 33, 38, .06), 0 1px 1px rgba(29, 33, 38, .04);--shadow-2: 0 8px 24px rgba(29, 33, 38, .09), 0 2px 6px rgba(29, 33, 38, .05);--shadow-3: 0 18px 50px rgba(29, 33, 38, .16);--font-display: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--nav-h: 58px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:14.5px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(1100px 600px at 12% -8%,rgba(15,107,79,.07),transparent 60%),radial-gradient(900px 520px at 92% 4%,rgba(196,98,45,.07),transparent 62%)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;margin:0}h1{font-size:34px;line-height:1.15}h2{font-size:21px;line-height:1.25}h3{font-size:16px;line-height:1.3}p{margin:0 0 10px}a{color:var(--pine-2);text-underline-offset:2px}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.small{font-size:12.5px}.tiny{font-size:11.5px}.center{text-align:center}.right{text-align:right}.nowrap{white-space:nowrap}.upper{text-transform:uppercase;letter-spacing:.09em}.app{position:relative;z-index:1;min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:40;height:var(--nav-h);display:flex;align-items:center;gap:18px;padding:0 22px;background:#faf6eeeb;-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:9px;flex:0 0 auto}.brand-mark{width:26px;height:26px;display:block}.brand-name{font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:-.015em}.brand-sub{font-size:11px;color:var(--ink-3);letter-spacing:.05em;text-transform:uppercase;margin-top:-3px}.tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;flex:1 1 auto}.tabs::-webkit-scrollbar{display:none}.tab{appearance:none;border:0;background:transparent;font:inherit;font-size:13.5px;color:var(--ink-2);padding:8px 12px;border-radius:8px;cursor:pointer;white-space:nowrap;transition:background .14s,color .14s}.tab:hover{background:#0f6b4f12;color:var(--ink)}.tab[aria-current=page]{background:var(--pine);color:#fff;box-shadow:var(--shadow-1)}.wrap{width:100%;max-width:1180px;margin:0 auto;padding:26px 22px 60px;flex:1 1 auto}.foot{border-top:1px solid var(--line);padding:18px 22px 30px;color:var(--ink-3);font-size:12px;display:flex;gap:16px;flex-wrap:wrap;justify-content:space-between}.head{margin-bottom:20px}.head h1{margin-bottom:6px}.head .lede{max-width:76ch;color:var(--ink-2);font-size:15px}.grid{display:grid;gap:16px}.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}.g-side{grid-template-columns:minmax(0,1fr) 340px}.g-side-l{grid-template-columns:340px minmax(0,1fr)}.row{display:flex;gap:12px}.row.wrap-row{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:12px}.spacer{flex:1 1 auto}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}@media(max-width:1000px){.g-4,.g-3{grid-template-columns:repeat(2,minmax(0,1fr))}.g-side,.g-side-l{grid-template-columns:minmax(0,1fr)}}@media(max-width:640px){.g-2,.g-3,.g-4{grid-template-columns:minmax(0,1fr)}h1{font-size:27px}.wrap{padding:18px 14px 44px}.topbar{padding:0 12px;gap:10px}.brand-sub{display:none}}.card{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:16px 18px}.card.pad-0{padding:0}.card-title{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;row-gap:2px;margin-bottom:12px}.card-title h2,.card-title h3{flex:0 0 auto}.card-title .sub{color:var(--ink-3);font-size:12.5px;white-space:nowrap}.card-flat{background:transparent;border:1px dashed var(--line-2);box-shadow:none}.stat{display:flex;flex-direction:column;gap:2px}.stat-k{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.stat-v{font-family:var(--font-mono);font-size:26px;font-weight:600;letter-spacing:-.03em;line-height:1.1}.stat-v.pine{color:var(--pine-2)}.stat-v.clay{color:var(--clay)}.stat-note{font-size:12px;color:var(--ink-2)}.kpi{display:flex;flex-direction:column;gap:8px}.kpi-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.btn{appearance:none;font:inherit;font-size:13.5px;font-weight:550;border-radius:9px;padding:8px 14px;border:1px solid var(--line-2);background:var(--paper-2);color:var(--ink);cursor:pointer;box-shadow:var(--shadow-1);transition:transform .1s,box-shadow .14s,background .14s,border-color .14s;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.btn:hover{border-color:var(--pine);box-shadow:var(--shadow-2)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--pine);border-color:var(--pine-2);color:#fff}.btn.primary:hover{background:var(--pine-2)}.btn.clay{background:var(--clay);border-color:#a9531f;color:#fff}.btn.ghost{background:transparent;box-shadow:none;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:#0f6b4f14;color:var(--ink)}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn.sm{font-size:12px;padding:5px 9px;border-radius:7px}.seg{display:inline-flex;background:var(--paper-3);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px}.seg button{appearance:none;border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--ink-2);padding:5px 11px;border-radius:7px;cursor:pointer}.seg button[aria-pressed=true]{background:var(--paper-2);color:var(--ink);box-shadow:var(--shadow-1);font-weight:600}.field{display:flex;flex-direction:column;gap:5px}.field>label{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3)}input[type=text],input[type=search],select{font:inherit;font-size:13.5px;padding:7px 10px;border-radius:9px;border:1px solid var(--line-2);background:var(--paper-2);color:var(--ink);min-width:0}input:focus-visible,select:focus-visible,button:focus-visible,textarea:focus-visible{outline:2px solid var(--pine);outline-offset:1px}input[type=range]{accent-color:var(--pine);width:100%}.tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;line-height:1.5;padding:1px 8px;border-radius:999px;background:var(--paper-3);color:var(--ink-2);border:1px solid var(--line);white-space:nowrap}.tag.pine{background:var(--pine-soft);color:var(--pine-2);border-color:#bcd9cb}.tag.clay{background:var(--clay-soft);color:#8f4319;border-color:#ecc9b1}.tag.gold{background:#f6ecd6;color:#7d5b12;border-color:#e5d3a8}.tag.plum{background:#f0e6f1;color:var(--plum);border-color:#ddc8de}.tag.on{background:var(--pine);color:#fff;border-color:var(--pine-2)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto}.rule{height:1px;background:var(--line);border:0;margin:14px 0}.note{background:var(--pine-soft);border:1px solid #c9e0d5;border-left:3px solid var(--pine);border-radius:var(--radius);padding:11px 13px;font-size:13px;color:#173d30}.note.clay{background:var(--clay-soft);border-color:#edcdbc;border-left-color:var(--clay);color:#6d3416}.note.plain{background:var(--paper-3);border-color:var(--line);border-left-color:var(--ink-3);color:var(--ink-2)}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);padding:8px 10px;border-bottom:1px solid var(--line-2);white-space:nowrap}.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl tbody tr:hover{background:#0f6b4f0b}.tbl tr:last-child td{border-bottom:0}.tbl .r{text-align:right}.tbl .why{color:var(--ink-2);font-size:12.5px}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.bar{height:7px;border-radius:999px;background:var(--paper-3);overflow:hidden;min-width:46px}.bar>i{display:block;height:100%;border-radius:999px;background:var(--pine)}.cover{display:block;border-radius:6px;box-shadow:var(--shadow-2);background:#fff}.frame{border:1px solid var(--line-2);border-radius:var(--radius);background:repeating-linear-gradient(45deg,#fbf8f1,#fbf8f1 8px,#f5f1e7 8px 16px);padding:12px;display:grid;place-items:center;min-height:120px}.chart{width:100%;display:block;overflow:visible}.chart text{font-family:var(--font-mono);fill:var(--ink-3)}.axis-label{font-size:10px;fill:var(--ink-3)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:6px}.legend i{width:10px;height:10px;border-radius:2px;display:inline-block;margin-right:5px}.reveal{animation:rise .32s cubic-bezier(.2,.7,.3,1) both}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.blink{animation:blink 1.1s steps(2,start) infinite}@keyframes blink{to{opacity:.25}}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.pulse{animation:pulse 1.6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}::selection{background:#0f6b4f2e}.kv{margin:0;display:grid;gap:2px}.kv-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:5px 0;border-bottom:1px dashed var(--line);font-size:13px}.kv-row:last-child{border-bottom:0}.kv-row dt{color:var(--ink-2)}.kv-row dd{margin:0;font-variant-numeric:tabular-nums}.log{display:grid;gap:4px;max-height:302px;overflow-y:auto;padding-right:4px}.log-line{display:grid;grid-template-columns:18px 1fr;gap:8px;align-items:start;font-size:12.5px;line-height:1.45;color:var(--ink-2);padding:4px 6px;border-radius:6px;background:var(--paper-2)}.log-line[data-kind=scan]{border-left:2px solid var(--pine)}.log-line[data-kind=match]{border-left:2px solid var(--plum)}.log-line[data-kind=handover]{border-left:2px solid var(--gold)}.log-line[data-kind=discard]{border-left:2px solid var(--danger)}.log-line[data-kind=info]{border-left:2px solid var(--line-2)}.stack{display:grid;gap:14px;align-content:start}.stack-sm{display:grid;gap:8px}.hair{height:1px;background:var(--line);margin:12px 0;border:0}.pillrow{display:flex;flex-wrap:wrap;gap:6px}.tab-num{font-variant-numeric:tabular-nums}.prose{font-size:13.5px;line-height:1.62;color:var(--ink-2)}.prose strong{color:var(--ink)}.prose code{font-family:var(--font-mono);font-size:.92em;background:var(--paper-3);border:1px solid var(--line);border-radius:4px;padding:1px 4px}.prose p{margin:0 0 9px}.prose p:last-child{margin-bottom:0}
