:root{--ink:#18232b;--muted:#66757f;--line:#dfe6e8;--paper:#f4f7f7;--panel:#fff;--teal:#0d766a;--teal-dark:#07564e;--orange:#c9692f;--danger:#a22c2c;--shadow:0 10px 26px rgba(27,47,53,.08)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 Inter,"PingFang TC","Microsoft JhengHei",sans-serif}.shell{max-width:1280px;margin:auto;padding:1.25rem}.topbar{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:1px solid var(--line);padding:.6rem 0 1.15rem}.topbar h1{font-size:1.75rem;line-height:1;margin:.2rem 0}.eyebrow{margin:0;color:var(--teal);font-weight:700;font-size:.72rem;letter-spacing:.12em}.header-status{display:flex;gap:.45rem;align-items:center;color:var(--muted);font-size:.86rem}.dot{width:.55rem;height:.55rem;border-radius:50%;background:#37a175}.dot.muted{background:#a9b4b9}.login-card{max-width:520px;margin:12vh auto;background:var(--panel);padding:2rem;border-radius:18px;box-shadow:var(--shadow)}.login-card h2{margin:.45rem 0}.tabs{display:flex;gap:.5rem;overflow:auto;margin:1rem 0}.tab,.text-button{border:0;background:transparent;color:var(--muted);font:inherit;padding:.6rem .8rem;cursor:pointer}.tab.active{background:var(--teal);color:white;border-radius:999px}.view{display:none}.view.active{display:block}.alert-bar{border-left:4px solid var(--orange);padding:.75rem 1rem;background:#fff8ee;margin-bottom:1rem}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1rem}.metric,.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.metric{padding:1rem}.metric span{display:block;color:var(--muted);font-size:.85rem}.metric strong{font-size:1.35rem}.grid{display:grid;gap:1rem}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:1rem}.panel{padding:1rem}.panel h2{margin:0 0 .7rem;font-size:1.05rem}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.meta,.empty{color:var(--muted);font-size:.85rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.form-grid.compact{grid-template-columns:repeat(5,minmax(0,1fr))}.form-grid label,.inline-form label{display:grid;gap:.3rem;color:#42515a;font-size:.84rem}.wide{grid-column:1/-1}input,select,textarea,button{font:inherit}input,select,textarea{width:100%;border:1px solid #bdc9cd;border-radius:8px;padding:.55rem;background:#fff;color:var(--ink)}textarea{min-height:4.5rem;resize:vertical}button[type=submit]{border:0;border-radius:8px;padding:.6rem .8rem;background:var(--teal);color:#fff;font-weight:700;cursor:pointer;align-self:end}.inline-form{display:flex;gap:.75rem;align-items:end}.inline-form label{flex:1}.score-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(6,1fr);gap:.5rem;border:1px solid var(--line);border-radius:9px;padding:.75rem}.score-grid legend{font-size:.85rem;color:var(--muted);padding:0 .25rem}.score-grid label{font-size:.75rem}.rule-card{background:linear-gradient(140deg,#0a645b,#0d3937);color:#fff}.rule-card .eyebrow{color:#b9e3d8}.rule-card ul{padding-left:1.15rem;margin:.5rem 0}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th,.table td{padding:.6rem;border-bottom:1px solid var(--line);text-align:left}.table th{color:var(--muted);font-weight:600}.pill{display:inline-block;padding:.16rem .45rem;border-radius:999px;background:#e7f3f0;color:var(--teal-dark);font-size:.78rem}.error{color:var(--danger);min-height:1.2rem}.positive{color:var(--teal)}.negative{color:var(--danger)}#toast{position:fixed;right:1rem;bottom:1rem;background:var(--ink);color:#fff;padding:.7rem 1rem;border-radius:8px;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none}#toast.show{opacity:1;transform:translateY(0)}@media(max-width:760px){.shell{padding:.8rem}.topbar{align-items:flex-start}.metric-grid,.grid.two,.form-grid,.form-grid.compact{grid-template-columns:1fr}.score-grid{grid-template-columns:repeat(3,1fr)}.inline-form{display:grid}.panel-head{align-items:flex-start;flex-direction:column}.table{font-size:.78rem}.table th,.table td{padding:.45rem .25rem}}
