*{box-sizing:border-box;margin:0;padding:0}body{font-family:'Segoe UI',system-ui,sans-serif;background:#0f1117;color:#e2e8f0;min-height:100vh;padding:12px}.container{max-width:920px;margin:auto;background:#1a1d27;border:1px solid #2d3147;border-radius:14px;overflow:hidden;box-shadow:0 8px 40px #0008}.header{background:linear-gradient(135deg,#1a2744 0%,#0d1f3c 100%);padding:20px 24px 16px;border-bottom:1px solid #2d3147}.header h1{font-size:1.35em;font-weight:700;color:#e2e8f0;letter-spacing:.01em;display:flex;align-items:center;gap:10px}.header h1 .badge{background:#3b82f6;color:#fff;font-size:.55em;padding:3px 8px;border-radius:20px;letter-spacing:.05em;font-weight:600;vertical-align:middle}.status{padding:10px 24px;background:#141722;border-bottom:1px solid #2d3147;font-size:.82em;color:#94a3b8;display:flex;flex-wrap:wrap;gap:12px}.status strong{color:#60a5fa}.status .s-pill{background:#1e2436;border:1px solid #2d3147;border-radius:20px;padding:3px 10px}.tab-bar{display:flex;flex-wrap:wrap;gap:0;background:#141722;border-bottom:1px solid #2d3147;padding:0 12px}.tab-bar button{background:none;color:#64748b;padding:12px 14px;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:.83em;font-weight:500;transition:all .15s;white-space:nowrap;letter-spacing:.02em}.tab-bar button:hover{color:#94a3b8;background:#1a1d27}.tab-bar button.active{color:#60a5fa;border-bottom-color:#3b82f6;background:none;font-weight:600}.tab-body{padding:20px 24px}.tabcontent{display:none}h2{font-size:1em;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.08em;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid #2d3147}h3{font-size:.93em;font-weight:600;color:#cbd5e1;margin-bottom:10px;margin-top:16px}.frow{display:flex;align-items:center;margin:9px 0;flex-wrap:wrap;gap:8px}.frow label{min-width:170px;font-size:.85em;color:#94a3b8}.frow input[type=text],.frow input[type=password],.frow input[type=number],.frow select{padding:7px 10px;background:#0f1117;border:1px solid #2d3147;color:#e2e8f0;border-radius:6px;min-width:220px;font-size:.87em;transition:border .15s}.frow input:focus,.frow select:focus{outline:none;border-color:#3b82f6}.frow select option{background:#1a1d27}.frow input[type=checkbox]{width:16px;height:16px;accent-color:#3b82f6}.btn{background:#3b82f6;color:#fff;padding:9px 20px;border:none;border-radius:7px;cursor:pointer;font-size:.85em;font-weight:600;margin-top:12px;transition:background .15s;letter-spacing:.02em}.btn:hover{background:#2563eb}.btn-warn{background:#ef4444}.btn-warn:hover{background:#dc2626}.btn-info{background:#0891b2}.btn-info:hover{background:#0e7490}.btn-sm{background:#1e3a5f;color:#60a5fa;padding:4px 11px;border:1px solid #2563eb;border-radius:5px;cursor:pointer;font-size:.8em;font-weight:600;transition:all .15s}.btn-sm:hover{background:#2563eb;color:#fff}.btn-sm.btn-warn{background:#3b0f0f;color:#f87171;border-color:#ef4444}.btn-sm.btn-warn:hover{background:#ef4444;color:#fff}.rcwl-section{background:#141722;border:1px solid #2d3147;border-radius:8px;padding:14px 18px;margin-bottom:14px}.reading-badge{display:inline-block;background:#0c2340;color:#60a5fa;padding:3px 12px;border-radius:12px;font-weight:700;font-size:.85em;border:1px solid #1e4080}table{border-collapse:collapse;width:100%;font-size:.85em;margin-top:8px}th{background:#141722;color:#64748b;padding:8px 10px;text-align:left;font-weight:600;text-transform:uppercase;font-size:.75em;letter-spacing:.06em;border-bottom:2px solid #2d3147}td{padding:8px 10px;border-bottom:1px solid #1e2436;vertical-align:middle;color:#cbd5e1}tr:hover td{background:#1e2436}td input[type=text]{width:80px;padding:5px 7px;background:#0f1117;border:1px solid #2d3147;color:#e2e8f0;border-radius:5px;font-size:.85em}td input[type=text]:focus{outline:none;border-color:#3b82f6}td select{padding:5px 7px;background:#0f1117;border:1px solid #2d3147;color:#e2e8f0;border-radius:5px;font-size:.85em}td select:focus{outline:none;border-color:#3b82f6}td input[type=checkbox]{width:16px;height:16px;accent-color:#3b82f6}.state-on{color:#4ade80;font-weight:700;font-size:.85em}.state-off{color:#ef4444;font-size:.85em}.state-hi{color:#60a5fa;font-size:.85em}.state-lo{color:#64748b;font-size:.85em}.inv-badge{display:inline-block;background:#312e0a;color:#fbbf24;border:1px solid #78350f;border-radius:4px;font-size:.7em;padding:1px 5px;margin-left:4px;vertical-align:middle;font-weight:700}#toast{position:fixed;bottom:24px;right:24px;background:#1e2436;color:#e2e8f0;padding:12px 20px;border-radius:8px;font-size:.87em;display:none;z-index:9999;border:1px solid #3b82f6;box-shadow:0 4px 20px #0005}#toast.show{display:block}#toast.ok{border-color:#22c55e;color:#4ade80}#toast.err{border-color:#ef4444;color:#f87171}.section-note{font-size:.8em;color:#475569;margin:-8px 0 14px;line-height:1.5}
.pt-card{background:#141722;border:1px solid #2d3147;border-radius:8px;padding:14px 18px;margin-bottom:14px}
.pt-title{color:#94a3b8;font-weight:700}
.pt-row{margin-top:10px;display:flex;flex-wrap:wrap;gap:16px;align-items:center}
.pt-lbl{font-size:.83em;color:#64748b}
.pt-lbl2{font-size:.83em;color:#64748b;margin-left:12px}
.pt-num{width:72px;padding:5px 7px;background:#0f1117;border:1px solid #2d3147;color:#e2e8f0;border-radius:5px;font-size:.85em}
.pt-sel{width:58px}
.sch-sec{margin-top:12px}
.sch-hdr{font-size:.83em;color:#64748b;margin-bottom:6px}
.sch-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;padding:6px 0;border-top:1px solid #1e2436}
.sch-lbl{font-size:.8em;color:#94a3b8}
.sch-dlbl{font-size:.8em;color:#64748b;margin-left:4px}
.sch-day{padding:2px 6px;border-radius:4px;border:1px solid #2d3147;cursor:pointer;font-size:.78em;background:#0f1117;color:#64748b}
.sch-day.on{background:#2563eb;color:#fff}
.sch-tlbl{font-size:.8em;color:#64748b;margin-left:6px}
.sch-t{width:46px;padding:3px 5px;background:#0f1117;border:1px solid #2d3147;color:#e2e8f0;border-radius:4px;font-size:.83em}
.ntp-warn{background:#2d1a00;border:1px solid #f59e0b;border-radius:6px;padding:8px 14px;margin-bottom:12px;font-size:.83em;color:#fbbf24}
.can-row-disabled{opacity:.45;}
.can-row-disabled input{cursor:not-allowed;}