@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";
:root{--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-8:3rem;--space-10:4.5rem;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.9375rem;--text-lg:1.0625rem;--text-xl:1.375rem;--text-2xl:2rem;--text-3xl:2.75rem;--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace;--track-tight:-.02em;--track-label:.09em;--bg:#e9e2d2;--surface:#f6f1e5;--surface-2:#e0d7c3;--border:#d2c8b0;--border-strong:#ab9d7d;--text:#232019;--text-muted:#675e4d;--text-subtle:#9a8f78;--accent:#55632f;--accent-hover:#45521f;--accent-contrast:#f6f1e5;--accent-soft:#dfe0c4;--accent-soft-text:#3f4a22;--success:#4a6a34;--warning:#9c7220;--danger:#97402c;--info:#4a6270;--focus-ring:0 0 0 3px #55632f4d;--radius-sm:2px;--radius:3px;--radius-lg:4px;--shadow-sm:0 1px 0 #3c341e0d;--shadow:0 8px 22px #3c341e1a}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font-family:var(--font-sans);color:var(--text);background:var(--bg);font-size:var(--text-base);-webkit-font-smoothing:antialiased;letter-spacing:.005em;line-height:1.6}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent);text-underline-offset:3px}.app{flex-direction:column;min-height:100vh;display:flex}.top{z-index:5;background:var(--surface);border-bottom:1px solid var(--border-strong);position:sticky;top:0}.top .in{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);max-width:1100px;margin:0 auto;display:flex}.logo{letter-spacing:var(--track-tight);color:var(--text);margin-right:auto;font-weight:600;line-height:1.15;text-decoration:none}.logo small{color:var(--text-subtle);letter-spacing:var(--track-label);text-transform:uppercase;font-size:.65rem;font-weight:400;display:block}.tabs{gap:var(--space-1);display:flex}.tabs a,.tabs button{padding:var(--space-2) var(--space-3);border-radius:var(--radius);color:var(--text-muted);font-weight:500;font-size:var(--text-sm);background:0 0;border:1px solid #0000;text-decoration:none}.tabs a:hover,.tabs button:hover{background:var(--surface-2);color:var(--text)}.tabs a.on{background:var(--accent-soft);color:var(--accent-soft-text);border-color:var(--border)}.main{width:100%;max-width:1100px;padding:var(--space-4);flex:1;margin:0 auto}h1{font-size:var(--text-xl);margin:var(--space-1) 0 var(--space-4);letter-spacing:var(--track-tight);font-weight:600;line-height:1.15}h2{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-muted);margin:var(--space-5) 0 var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--border-strong);font-weight:600}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4)}.card.accent{border-left:3px solid var(--accent);border-radius:0 var(--radius-lg) var(--radius-lg) 0}.row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.btn{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius);padding:var(--space-2) var(--space-4);font-weight:500;font-size:var(--text-sm);white-space:nowrap;align-items:center;gap:var(--space-2);color:var(--text);line-height:1.2;text-decoration:none;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn.primary:hover{background:var(--accent-hover)}.btn.small{padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}.btn.ghost{color:var(--accent);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--accent-soft)}.btn.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, transparent);background:0 0}.btn:disabled{opacity:.45;cursor:not-allowed}textarea{resize:vertical;border:1px solid var(--border-strong);border-radius:var(--radius);width:100%;min-height:150px;padding:var(--space-3);background:var(--surface);line-height:1.6;font-size:var(--text-sm)}input[type=text],input[type=number],input[type=file],select{border:1px solid var(--border-strong);border-radius:var(--radius);padding:var(--space-3);background:var(--surface);width:100%;font-size:var(--text-sm)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}.muted{color:var(--text-muted)}.faint{color:var(--text-subtle)}.mono{font-family:var(--font-mono);font-size:var(--text-sm)}.chip{border-radius:var(--radius-sm);padding:3px var(--space-2);font-size:var(--text-xs);background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);white-space:nowrap;align-items:center;gap:4px;font-weight:500;line-height:1.3;text-decoration:none;display:inline-flex}.chip.tag{background:var(--accent-soft);color:var(--accent-soft-text);border-color:#0000}.chip.ok{background:color-mix(in srgb, var(--success) 16%, transparent);color:var(--success);border-color:#0000}.chip.warn{background:color-mix(in srgb, var(--warning) 16%, transparent);color:var(--warning);border-color:#0000}.chip.bad{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger);border-color:#0000}.chip.sel{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.chip.btn{cursor:pointer}.chip.btn:hover{filter:brightness(.96)}.chip .x{color:inherit;opacity:.6;background:0 0;border:0;padding:0 0 0 2px;line-height:1}.chip .x:hover{opacity:1}.hint{font-size:var(--text-xs);color:var(--text-subtle)}.right{margin-left:auto}.sticky-foot{background:linear-gradient(to top, var(--bg) 70%, transparent);padding:var(--space-4) 0 var(--space-2);margin-top:var(--space-2);position:sticky;bottom:0}.err{color:var(--danger);font-size:var(--text-sm)}.rev{gap:var(--space-2);flex-direction:column;display:flex}.rev .card{gap:var(--space-2) var(--space-3);grid-template-columns:28px 1fr;display:grid}.rev .card.will-save{border-left:3px solid var(--accent);border-radius:0 var(--radius-lg) var(--radius-lg) 0}.rev .num{color:var(--text-subtle);font-weight:600;font-size:var(--text-xs);font-variant-numeric:tabular-nums;padding-top:3px}.rev .input{font-size:var(--text-xs);color:var(--text-subtle);word-break:break-word;font-family:var(--font-mono)}.rev .title{letter-spacing:var(--track-tight);font-weight:600;line-height:1.35}.rev .meta{font-size:var(--text-sm);color:var(--text-muted)}.rev .body{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.name{align-items:center;gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.name input{width:auto;min-width:160px;font-family:var(--font-mono);font-size:var(--text-sm);padding:var(--space-1) var(--space-2);flex:1}.cands{gap:var(--space-2);margin-top:var(--space-1);flex-direction:column;display:flex}.cand{gap:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2) var(--space-3);cursor:pointer;background:var(--surface);align-items:flex-start;display:flex}.cand.on{border-color:var(--accent);background:var(--accent-soft)}.cand input{accent-color:var(--accent);margin-top:5px}.cand b{font-weight:600;line-height:1.35;display:block}.state{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.side{display:contents}.lib-head{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.lib-head h1{margin:var(--space-1) 0}.count{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--track-label);font-variant-numeric:tabular-nums;font-weight:600}.seg2{border:1px solid var(--border-strong);border-radius:var(--radius);display:inline-flex;overflow:hidden}.seg2 a,.seg2 button{border:0;border-right:1px solid var(--border);background:var(--surface);padding:var(--space-2) var(--space-3);color:var(--text-muted);font-size:var(--text-sm);font-weight:500;text-decoration:none}.seg2 a:last-child,.seg2 button:last-child{border-right:0}.seg2 a:hover,.seg2 button:hover{background:var(--accent-soft)}.seg2 .on{background:var(--accent);color:var(--accent-contrast);font-weight:600}.fbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-3);gap:var(--space-2);flex-direction:column;display:flex}.frow{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.search{position:relative}.search input[type=text]{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);width:100%;height:36px;font-size:var(--text-sm);padding:0 30px 0 32px}.search .ico{width:15px;height:15px;color:var(--text-subtle);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search .clr{color:var(--text-subtle);font-size:var(--text-sm);background:0 0;border:0;padding:4px 8px;display:none;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.search.has .clr{display:block}.dd{position:relative}.ddb{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius);height:36px;padding:0 var(--space-3);font-size:var(--text-sm);white-space:nowrap;color:var(--text);align-items:center;gap:6px;font-weight:500;display:inline-flex}.ddb:hover{background:var(--surface-2)}.ddb.act{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-soft-text)}.ddb .n{font-variant-numeric:tabular-nums;background:var(--accent);color:var(--accent-contrast);border-radius:999px;padding:0 6px;font-size:.65rem;font-weight:600;line-height:1.6}.ddb .car{opacity:.65;margin-left:2px;font-size:.55rem}.ddm{z-index:20;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);min-width:210px;max-width:min(320px,100vw - 32px);max-height:320px;padding:var(--space-1) 0;position:absolute;top:calc(100% + 4px);left:0;overflow:auto}.dd.flip .ddm{left:auto;right:0}.ddm label{align-items:center;gap:var(--space-2);padding:6px var(--space-3);font-size:var(--text-sm);cursor:pointer;white-space:nowrap;display:flex}.ddm label:hover{background:var(--surface-2)}.ddm input[type=checkbox],.ddm input[type=radio]{accent-color:var(--accent);margin:0}.ddm .sub{padding:4px var(--space-3) 6px;background:var(--surface);position:sticky;top:0}.ddm .sub input[type=text]{border:1px solid var(--border);border-radius:var(--radius);width:100%;font-size:var(--text-xs);background:var(--surface);padding:4px 8px}.ddm .foot{padding:6px var(--space-3) 2px;border-top:1px solid var(--border);justify-content:flex-end;margin-top:4px;display:flex}.ddm .foot button,.clear{color:var(--accent);font-size:var(--text-xs);white-space:nowrap;background:0 0;border:0;padding:0;font-weight:500}.clear{padding:0 var(--space-2)}.yr{align-items:center;gap:4px;display:inline-flex}.yr input[type=number]{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);width:66px;height:36px;font-size:var(--text-sm);text-align:center;appearance:textfield;padding:0 8px}.yr input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.yr input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.yr input.act{border-color:var(--accent);background:var(--accent-soft)}.yr span{color:var(--text-subtle);font-size:var(--text-xs)}.icob{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius);width:36px;height:36px;color:var(--text);flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.icob svg{width:16px;height:16px}.icob:hover{background:var(--surface-2)}.dd.open .icob{background:var(--accent-soft);border-color:var(--accent)}.chips{gap:var(--space-1);padding-top:var(--space-1);flex-wrap:wrap;align-items:center;display:flex}.fchip{background:var(--accent-soft);color:var(--accent-soft-text);border-radius:var(--radius-sm);font-size:var(--text-xs);border:1px solid #0000;align-items:center;gap:6px;padding:2px 8px;font-weight:500;display:inline-flex}.fchip b{color:var(--text-muted);font-weight:400}.fchip .x{opacity:.6}.fchip:hover .x{opacity:1}.list{gap:var(--space-2);margin-top:var(--space-3);flex-direction:column;display:flex}.src{cursor:pointer;color:inherit;text-decoration:none;transition:background .12s;display:block}.src:hover{background:var(--surface-2)}.src .t{letter-spacing:var(--track-tight);font-weight:600;line-height:1.35;font-size:var(--text-base)}.src .au{font-size:var(--text-sm);color:var(--text);margin-top:3px;line-height:1.45}.src .y{font-variant-numeric:tabular-nums;font-weight:500}.src .meta{margin-top:var(--space-2);font-size:var(--text-xs);color:var(--text-muted);line-height:1.6}.src .meta .k{color:var(--text-subtle)}.pager{align-items:stretch;gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-3) 0;flex-direction:column;display:flex}.pmeta{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.pages{flex-wrap:wrap;align-items:center;gap:2px;display:flex}.pg{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius);min-width:32px;height:32px;font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--text);justify-content:center;align-items:center;padding:0 6px;text-decoration:none;display:inline-flex}.pg:hover{background:var(--surface-2)}.pg.on{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent);font-weight:600}.pg:disabled{opacity:.4;cursor:default;background:var(--surface)}.dots{text-align:center;min-width:22px;color:var(--text-subtle);font-size:var(--text-sm)}.psize{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-muted);display:inline-flex}.psize select{width:auto;font-size:var(--text-xs);height:32px;padding:0 8px}.det .head{gap:var(--space-2);flex-direction:column;display:flex}.det .title{font-size:var(--text-xl);letter-spacing:var(--track-tight);font-weight:600;line-height:1.2}.kv{gap:var(--space-1) var(--space-3);font-size:var(--text-sm);grid-template-columns:110px 1fr;display:grid}.kv>div:nth-child(odd){color:var(--text-muted)}.cols{gap:var(--space-4);grid-template-columns:1fr;display:grid}.link{justify-content:space-between;gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--border);font-size:var(--text-sm);color:inherit;align-items:center;text-decoration:none;display:flex}a.link:hover span:first-child{color:var(--accent)}.link:last-child{border-bottom:0}.link .arrow{color:var(--text-subtle);font-size:var(--text-xs);white-space:nowrap}.abs{font-size:var(--text-sm);color:var(--text-muted)}details summary{cursor:pointer;color:var(--text-muted);font-size:var(--text-sm)}.toast{top:var(--space-4);background:color-mix(in srgb, var(--success) 14%, var(--surface));border:1px solid color-mix(in srgb, var(--success) 50%, transparent);color:var(--success);padding:var(--space-3) var(--space-4);border-radius:var(--radius);font-size:var(--text-sm);z-index:50;box-shadow:var(--shadow);text-align:center;max-width:min(90vw,480px);font-weight:500;position:fixed;left:50%;transform:translate(-50%)}.toast.error{background:color-mix(in srgb, var(--danger) 14%, var(--surface));border-color:color-mix(in srgb, var(--danger) 50%, transparent);color:var(--danger)}.form{gap:var(--space-3);grid-template-columns:1fr;display:grid}.form label{gap:var(--space-1);font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--track-label);flex-direction:column;font-weight:600;display:flex}.form label input,.form label select,.form label textarea{text-transform:none;letter-spacing:.005em;color:var(--text);font-weight:400}.form .two,.form .three{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.login{max-width:420px;margin:var(--space-10) auto;padding:0 var(--space-4);text-align:center}.login h1{font-size:var(--text-2xl)}@media (min-width:576px){.form .three{grid-template-columns:1fr 1fr 1fr}.pager{flex-flow:wrap;align-items:center}.pmeta{display:contents}.pager .hint{order:1}.pages{order:2;margin-left:auto}.psize{order:3}}@media (min-width:768px){.main{padding:var(--space-5) var(--space-6)}.top .in{padding:var(--space-3) var(--space-6)}.rev .card{grid-template-columns:28px 1fr 240px}.side{gap:var(--space-1);text-align:right;flex-direction:column;align-items:flex-end;display:flex}.cols{grid-template-columns:1fr 320px}}@media (min-width:1200px){.main{padding:var(--space-6)}.cols{grid-template-columns:1fr 360px}}
