:root{--ink:#122a25;--ink-soft:#59716b;--canvas:#e9eee9;--paper:#fbfcf8;--line:#c8d2cb;--mint:#b9e6d2;--jade:#08736a;--coral:#d85f48;--gold:#c58c26;color:var(--ink);background:var(--canvas);font-family:IBM Plex Sans,Noto Sans SC,Source Han Sans SC,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(135deg,#e9eee9,#f3f4ec);min-width:320px;margin:0}a{color:inherit}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--coral);outline-offset:2px}.eyebrow{color:var(--jade);letter-spacing:.13em;margin:0 0 8px;font:700 11px/1 IBM Plex Mono,Noto Sans Mono,monospace}.login-page{background:radial-gradient(circle at 85% 15%, var(--mint), transparent 22rem), var(--ink);place-items:center;min-height:100dvh;padding:20px;display:grid}.login-card{width:min(440px,100%);color:var(--ink);background:var(--paper);box-shadow:16px 16px 0 var(--coral);border-radius:8px 8px 48px;padding:38px}.login-card h1{letter-spacing:-.06em;margin:14px 0 8px;font-size:38px}.login-card>p:not(.eyebrow){color:var(--ink-soft);line-height:1.6}.admin-brand{letter-spacing:-.03em;align-items:center;gap:10px;font-weight:800;text-decoration:none;display:inline-flex}.admin-brand small{color:var(--ink-soft);letter-spacing:.14em;margin-top:3px;font:700 9px IBM Plex Mono,monospace;display:block}.admin-mark{width:35px;height:35px;color:var(--ink);background:var(--mint);border-radius:50% 50% 5px;place-items:center;font:800 11px IBM Plex Mono,monospace;display:grid}.login-card form{gap:15px;margin-top:26px;display:grid}.login-card label,.add-room label{gap:7px;font-size:13px;font-weight:700;display:grid}.login-card input,.add-room input{min-height:46px;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:3px;padding:0 12px}.login-card button,.add-room button,.rule-panel button{color:#fff;background:var(--ink);border:0;border-radius:3px;min-height:46px;padding:0 16px;font-weight:800}.login-card button:disabled,.rule-panel button:disabled{opacity:.5;cursor:wait}.form-error{color:#a52f22;font-size:13px}.admin-shell{grid-template-columns:224px minmax(0,1fr);min-height:100dvh;display:grid}.sidebar{color:#eef4ef;background:var(--ink);flex-direction:column;gap:40px;padding:26px 18px;display:flex}.sidebar .admin-brand{color:#fff}.sidebar .admin-brand small{color:#b8cac2}.sidebar nav{gap:5px;display:grid}.sidebar nav a{color:#d5e2dc;border-radius:3px;align-items:center;min-height:44px;padding:0 12px;font-weight:700;text-decoration:none;display:flex}.sidebar nav a:hover{color:#fff;background:#25453e}.logout{color:#c9d9d2;background:0 0;border:1px solid #45645b;border-radius:3px;min-height:42px;margin-top:auto}.admin-main{width:min(1320px,100%);padding:52px clamp(20px,5vw,76px)}.page-head{margin-bottom:28px}.page-head h1{letter-spacing:-.065em;margin:0 0 9px;font-size:clamp(34px,5vw,56px)}.page-head>p:not(.eyebrow){max-width:630px;color:var(--ink-soft);line-height:1.6}.page-head.split{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.secondary{min-height:42px;color:var(--ink);border:1px solid var(--ink);background:0 0;border-radius:3px;padding:0 12px}.add-room{align-items:end;gap:12px;max-width:650px;margin-bottom:28px;display:flex}.add-room label{flex:1}.room-table-wrap{background:var(--paper);border:1px solid var(--line);overflow-x:auto}.room-table-wrap table{border-collapse:collapse;text-align:left;width:100%;min-width:900px}.room-table-wrap th{color:var(--ink-soft);letter-spacing:.07em;background:#eef2ec;padding:14px 16px;font-size:12px}.room-table-wrap td{border-top:1px solid var(--line);vertical-align:top;padding:15px 16px;font-size:14px}.room-table-wrap td>a{font-weight:800;text-decoration:none;display:block}.room-table-wrap td small{color:var(--ink-soft);margin-top:4px;display:block}.state-pill,.job-state{color:#31544b;background:#d9e8df;border-radius:999px;padding:5px 7px;font-size:11px;font-weight:800;display:inline-block}.state-reconnecting_backoff,.job-rebuilding,.job-catching_up{color:#7e5000;background:#f2e0b1}.state-failed,.job-failed{color:#922a1e;background:#f5cfc9}.quality-count{color:var(--ink-soft);font-size:12px;display:block}.control-pair{gap:9px;min-width:220px;display:grid}.control-pair label{align-items:flex-start;gap:8px;display:flex}.control-pair input,.gift-rule-list input{width:18px;height:18px;accent-color:var(--jade)}.control-pair b,.control-pair small{display:block}.control-pair small{color:var(--ink-soft);margin-top:2px;font-size:11px;line-height:1.35}.back-link{color:var(--jade);font-size:13px;font-weight:800}.detail-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.admin-card,.rule-panel{background:var(--paper);border:1px solid var(--line);padding:24px}.admin-card h2,.rule-panel h2{letter-spacing:-.04em;margin:0 0 16px;font-size:25px}.diagnostics dl{grid-template-columns:1fr 1fr;gap:12px;display:grid}.diagnostics dl div{border-top:1px solid var(--line);padding-top:9px}.diagnostics dt{color:var(--ink-soft);font-size:11px}.diagnostics dd{margin:5px 0 0;font:700 13px IBM Plex Mono,monospace}.rule-panel{margin-top:16px}.section-title{justify-content:space-between;align-items:end;gap:16px;display:flex}.rule-panel>p{color:var(--ink-soft);line-height:1.6}.gift-rule-list{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:18px;display:grid}.gift-rule-list label{background:#fff;grid-template-columns:20px 1fr auto;align-items:center;gap:8px;min-height:46px;padding:9px 12px;font-size:14px;display:grid}.gift-rule-list small{color:var(--ink-soft);font-family:IBM Plex Mono,monospace}.job-list{gap:9px;display:grid}.job-row{background:var(--paper);border:1px solid var(--line);grid-template-columns:minmax(180px,1fr) 120px 210px;align-items:center;gap:14px;padding:16px;display:grid}.job-row b,.job-row small{display:block}.job-row small{color:var(--ink-soft);margin-top:4px;font-size:12px}.notice,.loading-panel{background:var(--paper);border:1px solid var(--line);padding:30px}@media (width<=820px){.admin-shell{grid-template-columns:1fr}.sidebar{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:14px;display:grid}.sidebar nav{gap:4px;display:flex;overflow-x:auto}.sidebar nav a{white-space:nowrap}.logout{margin:0;padding:0 10px}.admin-main{padding:34px 18px}.detail-grid,.job-row,.gift-rule-list{grid-template-columns:1fr}}@media (width<=520px){.sidebar{grid-template-columns:1fr auto}.sidebar nav{grid-column:1/-1}.page-head.split,.section-title,.add-room{flex-direction:column;align-items:stretch}.add-room button{width:100%}.login-card{padding:28px 22px}.diagnostics dl{grid-template-columns:1fr}}
