:root{--bg:#f4f7fc;--panel:#fff;--ink:#0f172a;--ink-soft:#334155;--line:#cdd7e3;--line-soft:#e5ebf3;--brand:#0b57d0;--brand-strong:#0a47ad;--brand-soft:#eaf1ff;--danger:#b42318;--danger-soft:#fdecec;--success-soft:#ecfdf3;--shadow:0 6px 22px #0f172a14}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{background:radial-gradient(circle at 20% 0%,#dde9ff 0%,var(--bg)42%);color:var(--ink);font-family:IBM Plex Sans,Avenir Next,Segoe UI,sans-serif;line-height:1.45}.shell{max-width:1240px;margin:0 auto;padding:24px 18px 40px}.header{margin-bottom:16px}.header h1{letter-spacing:.2px;margin:0;font-size:28px}.header p{color:var(--ink-soft);margin:8px 0 0;font-size:14px}.notice{border:1px solid var(--line);color:var(--ink-soft);background:#f8fbff;border-radius:12px;margin-bottom:14px;padding:12px;font-size:13px}.notice strong{color:var(--ink)}.notice code{background:#eef3ff;border:1px solid #d7e2fb;border-radius:6px;padding:1px 5px;font-family:IBM Plex Mono,SFMono-Regular,Menlo,monospace;font-size:12px}.grid{grid-template-columns:repeat(12,1fr);gap:14px;display:grid}.card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;grid-column:span 12;padding:16px}.card h2{margin:0 0 12px;font-size:16px}.card h3{color:var(--ink-soft);margin:14px 0 8px;font-size:14px}.row{grid-template-columns:140px 1fr;align-items:center;gap:10px;margin:8px 0;display:grid}label{color:var(--ink-soft);font-size:13px}input,select,textarea,button{font:inherit}input,select,textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:10px;padding:9px 10px}input[type=checkbox]{border-radius:4px;justify-self:start;width:18px;height:18px;padding:0}textarea{resize:vertical;min-height:120px}input:hover,select:hover,textarea:hover{border-color:#9fb3cc}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-color:var(--brand)}.actions{flex-wrap:wrap;gap:8px;display:flex}button{border:1px solid var(--brand);background:var(--brand);color:#fff;cursor:pointer;border-radius:10px;padding:8px 12px;transition:background .12s,border-color .12s,transform 80ms}button:hover{background:var(--brand-strong);border-color:var(--brand-strong)}button:active{transform:translateY(1px)}button.secondary{background:var(--brand-soft);color:#0a3f9a;border-color:#a6c0ee}button.secondary:hover{background:#dce8ff;border-color:#7da4e8}button.danger{border-color:var(--danger);background:var(--danger)}button.danger:hover{background:#912018;border-color:#912018}button:disabled{opacity:.68;cursor:not-allowed;transform:none}.status{border:1px solid #bfd3f9;border-left:4px solid var(--brand);color:#1d4f9d;background:#f0f5ff;border-radius:10px;margin-top:10px;padding:8px 10px;font-size:13px}.status.error{border-color:#f4b4b4;border-left-color:var(--danger);background:var(--danger-soft);color:#7a271a}.status-icon{margin-right:6px;font-weight:700}.metrics{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;display:grid}.metric{border:1px solid var(--line-soft);background:#fbfdff;border-radius:10px;padding:10px}.metric span{color:var(--ink-soft);font-size:12px;display:block}.metric strong{font-size:18px}.muted{color:var(--ink-soft);font-size:13px}.table-wrap{border:1px solid var(--line-soft);border-radius:10px;margin-top:8px;overflow-x:auto}.table{border-collapse:collapse;background:#fff;width:100%;min-width:560px}.table th,.table td{text-align:left;border-bottom:1px solid var(--line-soft);vertical-align:top;padding:8px 10px;font-size:13px}.table th{color:var(--ink-soft);white-space:nowrap;background:#f8fbff;font-weight:600}.table tbody tr:nth-child(2n){background:#fcfdff}.table td.table-empty{text-align:center;color:var(--ink-soft);font-style:italic}.confirm-overlay{z-index:50;background:#0f172a8c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.confirm-dialog{border:1px solid var(--line);background:#fff;border-radius:12px;width:min(560px,100%);padding:16px;box-shadow:0 18px 30px #0f172a4d}.confirm-dialog h2{margin:0 0 8px}.confirm-dialog p{margin:8px 0}@media (min-width:900px){.card-span-4{grid-column:span 4}.card-span-6{grid-column:span 6}.card-span-8{grid-column:span 8}}@media (max-width:960px){.row{grid-template-columns:1fr;gap:6px}.row label{font-weight:600}}@media (max-width:640px){.shell{padding:14px 10px 24px}.header h1{font-size:22px}.actions button{width:100%}.table{min-width:460px}}
