:root{color-scheme:light;--ink:#182b38;--muted:#677d86;--line:#dce6e9;--teal:#13796f;--bg:#f3f6f7}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}header{min-height:78px;display:flex;align-items:center;gap:22px;padding:18px 34px;background:white;border-bottom:1px solid var(--line)}a{color:inherit;text-decoration:none}.brand{font-size:24px;font-weight:750;letter-spacing:-1px}.pill,.badge{display:inline-block;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:750;background:#e7f0fb;color:#225f9b;letter-spacing:.04em}.badge.HEALTHY{background:#ddf3e9;color:#17694c}.badge.DEGRADED{background:#fff0cb;color:#8b5900}.badge.UNHEALTHY{background:#ffe1df;color:#a32323}header button{margin-left:auto}.layout{display:grid;grid-template-columns:215px minmax(0,1fr);min-height:calc(100vh - 78px)}nav{padding:32px 20px;border-right:1px solid var(--line);background:#fff}nav a{display:block;padding:10px 16px;border-radius:7px;margin-bottom:5px;color:#536772}nav a.active{background:#e6f2ef;color:var(--teal);font-weight:700}.eyebrow{font-size:11px;letter-spacing:.15em;color:var(--muted);font-weight:750;margin:0 0 10px}.nav-note{font-size:11px;color:var(--muted);padding:28px 16px;line-height:1.8}main{padding:36px clamp(18px,4vw,64px);max-width:1550px;width:100%;min-width:0}.heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:26px}h1{font-size:32px;line-height:1.2;margin:0 0 12px;letter-spacing:-1px}h2{font-size:18px;margin:0 0 20px}p{margin:0 0 12px}.muted{color:var(--muted)}.small{font-size:12px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px}.card,.panel{background:#fff;border:1px solid var(--line);border-radius:11px;padding:22px;min-width:0}.card .value{font-size:24px;font-weight:700;word-break:break-word;font-variant-numeric:tabular-nums;line-height:1.5}.card .label{font-size:12px;color:var(--muted);margin-bottom:8px}.panel{margin-bottom:20px}.two{display:grid;grid-template-columns:1.15fr 1fr;gap:20px}.accent{border-top:3px solid var(--teal)}dl{margin:0;display:grid;grid-template-columns:minmax(110px,1fr) minmax(0,1.5fr);gap:10px;font-size:13px}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}button{border:0;border-radius:6px;background:var(--teal);color:white;padding:10px 16px;font:inherit;font-size:13px;cursor:pointer;font-weight:650}button:hover{filter:brightness(.95)}button:disabled{opacity:.5;cursor:wait}.quiet{background:#eaf0f2;color:var(--ink)}.danger{background:#fce9e5;color:#9e392a}label{display:block;font-size:13px;color:var(--muted)}input,select{display:block;width:100%;padding:10px;border:1px solid #cbd9de;border-radius:6px;background:white;font:inherit;color:var(--ink)}input:focus,button:focus-visible,a:focus-visible,select:focus{outline:3px solid #8ed2c5;outline-offset:2px}.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:18px 0}.filters label{min-width:140px;flex:1}.table-wrap{overflow-x:auto;max-width:100%;border:1px solid var(--line);border-radius:8px}table{border-collapse:collapse;width:100%;white-space:nowrap;font-size:12px;background:white}th{text-align:left;background:#edf3f4;color:var(--muted);font-weight:650}td,th{padding:13px 15px;border-bottom:1px solid var(--line)}tr:last-child td{border-bottom:0}.pager{display:flex;gap:14px;align-items:center;margin-top:18px}.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:18px}#notice{padding:13px 17px;background:#fff0cb;color:#754e00;border-radius:8px;margin-bottom:20px;overflow-wrap:anywhere}footer{font-size:11px;color:var(--muted);padding:24px 0}.login-body{display:grid;min-height:100vh;place-items:center;background:#edf3f2}.login-card{max-width:450px;padding:38px;background:white;border:1px solid var(--line);border-radius:15px;margin:20px;width:calc(100% - 40px)}.login-card h1{margin-top:26px}.login-card label{margin:18px 0}.login-card button{width:100%;margin:4px 0 22px}code{overflow-wrap:anywhere} @media(max-width:900px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two{grid-template-columns:1fr}.layout{grid-template-columns:170px minmax(0,1fr)}nav{padding:25px 10px}}@media(max-width:600px){header{padding:15px;gap:10px;flex-wrap:wrap}.brand{font-size:21px}.layout{display:block}nav{display:flex;gap:5px;overflow:auto;padding:10px;border-right:0;border-bottom:1px solid var(--line)}nav a{flex-shrink:0;margin:0;padding:8px 10px}nav .eyebrow,.nav-note{display:none}main{padding:25px 16px}.grid{grid-template-columns:1fr}.heading{align-items:start;flex-wrap:wrap}h1{font-size:28px}.card .value{font-size:24px}dl{grid-template-columns:1fr 1.4fr}.panel{padding:18px}.filters label{min-width:110px}}
/* Phase 5B: semantic palette, responsive observations and touch controls. */
:root{--surface:#fff;--soft:#edf3f4;--green:#13796f;--blue:#397ec2;--warning:#916000;--danger:#b3483b;--shadow:0 2px 4px #12302b04}
html[data-theme=dark]{color-scheme:dark;--bg:#10191f;--surface:#17242d;--soft:#1e303a;--ink:#e0ebef;--muted:#9dafb9;--line:#30424c;--teal:#55c3af;--green:#55c3af;--blue:#79b2ef;--warning:#f2c778;--danger:#fa9289}
body{background:var(--bg)}header,nav,.card,.panel,.login-card,table,input,select{background:var(--surface)}th,.quiet{background:var(--soft);color:var(--ink)}button{background:var(--teal);color:var(--surface);min-height:44px}button.quiet{background:var(--soft);color:var(--ink)}.button{display:inline-flex;align-items:center;justify-content:center;border-radius:6px;min-height:44px;padding:10px 16px;font-size:13px;font-weight:650;cursor:pointer}.danger{background:#fce9e5!important;color:#9e392a!important}.card,.panel{box-shadow:var(--shadow)}header{position:relative;gap:16px}header button{margin-left:0}header #logout{margin-left:0}.theme-label{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:12px}.theme-label select{width:auto;min-height:44px;font-size:12px}.menu-toggle{display:none}.section{margin-bottom:26px}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}.section-title h2{margin:0}.system-strip{display:flex;align-items:center;justify-content:space-between;gap:18px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--teal);padding:20px 24px;border-radius:10px;margin-bottom:28px}.system-strip p{margin:8px 0 0}.system-strip strong{font-size:13px}.next-due{display:grid;gap:5px;text-align:right}.tag{display:inline-block;border:1px solid var(--line);border-radius:5px;color:var(--muted);font-size:11px;padding:4px 8px}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.market-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.market-grid .value{font-size:19px}.stats-grid .value{font-size:25px}.card .small{margin-top:8px}.positive{color:var(--green)}.negative{color:var(--danger)}.range-control{display:flex;gap:5px}.range-control button{min-width:44px;padding:7px 11px}.range.selected{background:var(--teal);color:var(--surface)}.chart{width:100%;height:auto;display:block;overflow:visible}.chart-panel{overflow:hidden}.gridline{stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}.axis{fill:var(--muted);font:12px system-ui}.series{stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.series-0{stroke:var(--teal)}.series-1{stroke:var(--blue);stroke-dasharray:6 4}.mark{stroke-width:1.5}.mark.series-0{fill:var(--teal)}.mark.series-1{fill:var(--blue)}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-bottom:12px}.line-a{color:var(--teal)}.line-b{color:var(--blue)}.empty{border:1px dashed var(--line);border-radius:8px;padding:40px 18px;text-align:center;font-size:13px;color:var(--muted);background:var(--surface)}.component-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.component-grid h2{font-size:16px}.component-grid dd{font-size:12px}.filters{gap:12px}.filters label{min-width:150px}#notice{position:sticky;top:12px;z-index:2;box-shadow:0 4px 20px #0001}#notice.error{background:#ffe1df;color:#a32323}.ERROR td:first-child{border-left:3px solid var(--danger)}.WARNING td:first-child{border-left:3px solid var(--warning)}.SUCCESS td:first-child{border-left:3px solid var(--green)}.SECURITY td:first-child{border-left:3px solid var(--blue)}.ERROR{color:var(--danger)}.WARNING{color:var(--warning)}.SECURITY{color:var(--blue)}#source-summary .table-wrap{margin-bottom:14px}.login-body{background:var(--bg)}
html[data-theme=dark] .pill{background:#1c3955;color:#9ecbff}html[data-theme=dark] .badge.HEALTHY{background:#193f35;color:#90ddbd}html[data-theme=dark] .badge.DEGRADED{background:#493b1d;color:#f3cf83}html[data-theme=dark] .badge.UNHEALTHY{background:#4a292a;color:#ffb0a6}html[data-theme=dark] nav a.active{background:#224238;color:#9be2c7}html[data-theme=dark] .danger{background:#482c2d!important;color:#ffb0a6!important}html[data-theme=dark] #notice{background:#493b1d;color:#f3cf83}html[data-theme=dark] #notice.error{background:#4a292a;color:#ffb0a6}
@media(min-width:1500px){.market-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.component-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1100px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.charts-row{grid-template-columns:1fr}.market-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){header{gap:8px;padding:12px}header .brand{font-size:20px}header>.pill{font-size:10px;padding:4px 7px}.theme-label{margin-left:0;order:4;flex:1;justify-content:flex-end}header #logout{order:5}.menu-toggle{display:block;min-width:44px}.layout nav{display:none;overflow:visible;padding:12px;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid var(--line)}.layout nav.open{display:grid}.layout nav a{min-height:44px}.stats-grid,.market-grid,.component-grid{grid-template-columns:1fr}.system-strip{align-items:flex-start;flex-direction:column;padding:18px}.next-due{text-align:left}.section-title{align-items:flex-start}.range-control{width:100%;justify-content:flex-start}.range-control button{flex:1}.card .value{font-size:25px}.market-grid .value{font-size:22px}.chart-panel{padding:15px 10px}.chart-panel h2,.chart-panel p,.chart-panel .legend{padding-left:6px}.table-wrap{touch-action:pan-x pan-y}.pager{justify-content:space-between;font-size:12px}.heading{margin-bottom:20px}.filters label{min-width:100%;}.filters button,.filters .button{flex:1}.nav-note{display:none}}

html[data-theme=dark] nav a{color:var(--muted)}

.authorization-toggle {display:flex;align-items:center;gap:.7rem;margin:1rem 0;font-weight:600}.authorization-toggle input{width:1.2rem;height:1.2rem;flex-shrink:0}
