:root{--green:#163f36;--deep:#10332b;--lime:#d2eda9;--ink:#203831;--muted:#75837d;--border:#e5ebe7;--bg:#f5f7f5;--gold:#bc8f36}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #a8ca79;outline-offset:3px}[hidden]{display:none!important}aside{position:fixed;inset:0 auto 0 0;width:232px;background:var(--deep);color:#fff;padding:35px 23px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:13px;color:white;text-decoration:none;font-size:27px;font-weight:750;letter-spacing:2px}.brand-icon{display:grid;place-items:center;background:var(--lime);color:var(--deep);height:45px;width:45px;border-radius:12px;font-size:32px}.brand-sub{display:block;font-size:10px;letter-spacing:3px;color:#a9c7ba;margin-top:-4px}.nav-caption{font-size:10px;letter-spacing:1.5px;color:#91b2a4;margin-top:60px;margin-bottom:18px}.nav{display:flex;gap:12px;align-items:center;width:100%;padding:15px 12px;border:0;border-radius:9px;text-align:left;background:none;color:#adc4ba;font-size:14px;margin-bottom:8px}.nav>span:first-child{font-size:21px}.nav.active{background:#284f40;color:#e0f3ba}.nav-arrow{margin-left:auto;opacity:.7}.sidebar-note{margin-top:45px;font-size:12px;color:#c1d2c8;line-height:1.4}.sidebar-note p{font-size:11px;color:#89a99a;margin:8px 0 0 13px}.connection-dot{display:inline-block;width:6px;height:6px;background:#bfdc93;border-radius:50%;margin-right:7px}.sidebar-bottom{margin-top:auto;font-size:9px;letter-spacing:1px;color:#8daa9c;line-height:2}.sidebar-bottom small{font-size:11px;letter-spacing:0}main{margin-left:232px;padding:0 38px;max-width:1900px}header{height:82px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);gap:15px}.breadcrumb{font-size:13px;color:var(--muted)}.breadcrumb span{margin:0 13px;color:#b7c1bb}.breadcrumb strong{font-weight:500;color:var(--ink)}.header-actions{display:flex;gap:10px}.button{border:1px solid #d7e0d9;background:white;border-radius:7px;padding:10px 18px;color:var(--ink);font-size:14px;font-weight:600}.button:hover{background:#edf3ec}.button.small{font-size:12px;padding:8px 13px}.button.primary{background:var(--green);color:white;border-color:var(--green)}.button.primary:hover{background:#235749}.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:30px 0 15px}.eyebrow{font-size:10px;letter-spacing:1.8px;color:#748779;font-weight:700;margin:0 0 9px}h1{font-size:31px;letter-spacing:-.9px;line-height:1.25;margin:0 0 10px;font-weight:680}.page-head p:not(.eyebrow){font-size:14px;color:var(--muted);margin:0}.period-label{font-size:12px;color:#4d6658;background:#e8eee5;border:1px solid #dce5d7;padding:8px 12px;border-radius:6px;white-space:nowrap}.sync{font-size:12px;color:#7d8a81;margin:0 0 19px}.filters{background:white;border:1px solid var(--border);border-radius:12px;padding:19px 23px;margin:0 0 25px}.filter-title{display:flex;gap:9px;align-items:center;font-size:14px;font-weight:600;margin-bottom:16px}.filter-title>span{font-size:20px;color:#78917e}.text-button{background:none;border:0;color:#6e8173;font-size:12px;padding:0;margin-left:auto}.filter-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1.35fr 1.3fr;gap:13px}label{font-size:12px;font-weight:500;color:#748277;display:flex;flex-direction:column;gap:7px}input,select{font-size:13px;min-height:41px;border:1px solid #dce4dd;border-radius:6px;background:#fff;color:#2e4738;width:100%;padding:8px 10px;min-width:0}select{padding-right:21px}.filter-foot{display:flex;justify-content:space-between;align-items:center;margin-top:17px;gap:12px}.presets{display:flex;gap:7px;flex-wrap:wrap}.presets button{background:#f5f7f3;border:0;color:#70826f;border-radius:5px;font-size:11px;padding:6px 9px}.presets button:hover{background:#e3eddb}.class-filter-grid{display:grid;grid-template-columns:1fr 1.5fr 1.5fr auto;align-items:end;gap:18px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:17px}.metric{position:relative;background:white;border:1px solid var(--border);border-radius:11px;padding:21px 22px;min-height:157px}.metric.feature{background:var(--green);color:#fff;border-color:var(--green)}.metric .label{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:#728277;font-weight:600;padding-right:30px}.metric.feature .label{color:#b1cdb7}.metric .number{font-size:39px;font-weight:650;letter-spacing:-1.4px;margin:12px 0 4px;line-height:1.2}.metric .number.missing{font-size:22px;letter-spacing:-.4px;margin-top:20px;margin-bottom:12px}.metric .hint{font-size:11px;color:#8a968c}.metric.feature .hint{color:#bbd4bb}.metric .icon{position:absolute;right:18px;top:18px;width:31px;height:31px;border-radius:8px;background:#eff4ea;display:grid;place-items:center;color:#739553;font-size:17px}.metric.feature .icon{background:#376046;color:#d2eda9}.metric .up{color:#a1dd8d}.note{font-size:12px;color:#819084;margin:0 0 25px;display:flex;gap:8px}.note:before{content:'ⓘ';color:#97a88d}.grid{display:grid;grid-template-columns:1.42fr 1fr;gap:22px;margin-bottom:22px}.panel{background:white;border:1px solid var(--border);border-radius:11px;min-width:0;overflow:hidden}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:22px 23px 5px}.panel h2{font-size:16px;font-weight:630;letter-spacing:-.2px;margin:0}.panel-sub{font-size:12px;color:#8b978c;padding:0 23px 14px;margin:0}.pill{font-size:10px;border-radius:5px;padding:4px 8px;background:#f1f5ed;color:#6e8261;white-space:nowrap}.chart{padding:10px 23px 17px}.linechart{width:100%;height:auto;display:block;overflow:visible}.linechart text{font-size:11px;fill:#95a096}.legend{display:flex;justify-content:center;gap:20px;font-size:11px;color:#7b887e;margin-top:9px}.legend i{display:inline-block;width:15px;height:3px;background:#527b45;margin-right:6px;vertical-align:middle}.legend i.prev{background:#c3cfc0}.bar-list{padding:3px 23px 22px}.bar-row{display:grid;grid-template-columns:100px 1fr 38px;align-items:center;gap:12px;font-size:12px;margin:15px 0}.bar-row .track{height:8px;background:#f0f3ec;border-radius:5px;overflow:hidden}.bar-row .track>i{display:block;height:100%;background:#678e58;border-radius:5px}.bar-row:nth-child(2) .track>i{background:#90ad6e}.bar-row:nth-child(3) .track>i{background:#bccb89}.bar-row strong{text-align:right;font-size:13px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px;text-align:left;white-space:nowrap}th{font-size:10px;letter-spacing:.4px;text-transform:uppercase;font-weight:600;background:#f7f9f5;color:#82907e;padding:13px 23px}td{border-top:1px solid #eef1eb;padding:14px 23px}tbody tr:hover{background:#fafcf7}.right{text-align:right}.table-name{font-weight:550;color:#435540}.percent{display:inline-block;min-width:48px;font-size:11px;background:#f0f5e9;color:#6d8756;padding:3px 7px;border-radius:5px;text-align:center}.status-grid{display:flex;gap:22px;align-items:center;padding:15px 23px 25px}.donut{width:142px;height:142px;border-radius:50%;position:relative;flex-shrink:0}.donut:after{content:'';position:absolute;inset:19px;border-radius:50%;background:white}.donut-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1;font-size:27px;font-weight:650}.donut-label small{font-size:10px;color:#8c978c;font-weight:400}.status-list{flex:1;min-width:0}.status-line{display:flex;align-items:center;gap:8px;font-size:11px;margin:9px 0;color:#70816d}.status-line i{width:7px;height:7px;border-radius:2px;flex-shrink:0}.status-line b{margin-left:auto;color:#3c5338}.full{margin-bottom:22px}.notice{background:#faf5e8;border:1px solid #eee3c5;color:#8b723d;border-radius:9px;padding:15px 18px;font-size:13px;margin-bottom:20px}.notice.error{background:#fff0ed;color:#9a483a;border-color:#efd2cc}.quality{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;padding:10px 23px 23px}.quality>div{background:#f8f9f4;padding:15px;border-radius:8px;font-size:12px;color:#77856c}.quality strong{display:block;font-size:24px;color:#7f764c;margin-bottom:5px}.badge{padding:4px 8px;border-radius:5px;background:#faf1dc;color:#9c8145;font-size:11px}.badge.good{background:#eaf3e4;color:#597a45}.class-table td,.class-table th{padding:14px 18px}.class-table td small{display:block;color:#91a08a;font-size:11px;margin-top:3px}.class-table .table-name{white-space:normal;min-width:185px}.fillbar{display:inline-block;width:70px;height:5px;background:#eef1e5;margin-right:8px;border-radius:4px;overflow:hidden}.fillbar>i{display:block;height:100%;background:#769558}.class-detail{border:0;background:none;color:#667e50;font-size:12px;text-decoration:underline;text-underline-offset:3px;padding:3px}.empty,.loading{padding:48px 24px;text-align:center;color:#81917d;font-size:14px}.loading{background:white;border:1px solid var(--border);border-radius:12px}footer{display:flex;justify-content:space-between;gap:15px;color:#9aa592;font-size:10px;padding:15px 0 24px}dialog{border:1px solid #dce5d5;border-radius:15px;padding:25px;max-width:600px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 20px 80px #09231830}dialog::backdrop{background:#16342560}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.dialog-head h2{font-size:20px}.dialog-head button{background:none;border:0;font-size:28px;color:#789071}dialog dl{display:grid;grid-template-columns:1fr 1.4fr;font-size:14px;gap:14px}dialog dt{color:#8c9986}dialog dd{margin:0}#results.busy{opacity:.5;pointer-events:none}
@media(min-width:1600px){main{padding:0 55px}.metric{min-height:175px}.metric .number{font-size:44px}.panel h2{font-size:18px}.bar-row,table{font-size:14px}.filter-grid label,.filter-grid input,.filter-grid select{font-size:14px}}@media(max-width:1200px){aside{width:195px;padding:30px 16px}main{margin-left:195px;padding:0 24px}.filter-grid{grid-template-columns:repeat(3,1fr)}.metric{padding:20px 16px}.metric .number{font-size:32px}.metric .number.missing{font-size:19px}.status-grid{flex-direction:column;align-items:stretch}.donut{align-self:center}.status-list{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.grid{grid-template-columns:1.2fr 1fr}.metric .icon{right:12px}.class-filter-grid{grid-template-columns:1fr 1.3fr}.quality{grid-template-columns:1fr}.quality>div{display:flex;align-items:center;gap:15px}.quality strong{margin:0}td,th{padding:12px 16px}}@media(max-width:900px){aside{position:relative;width:100%;height:auto;padding:15px 20px;display:flex;flex-direction:row;align-items:center;gap:30px}.brand{font-size:20px}.brand-icon{height:34px;width:34px;font-size:24px}.brand-sub{font-size:8px}.nav-caption,.sidebar-note,.sidebar-bottom,.nav-arrow{display:none}nav{display:flex;gap:6px;margin-left:auto}.nav{margin:0;width:auto;font-size:13px;padding:9px}.nav>span:first-child{font-size:17px}main{margin:0;padding:0 22px}header{height:65px}.page-head{padding-top:23px}.metrics{gap:12px}.metric .label{font-size:10px}.metric .icon{display:none}.metric .label{padding-right:0}.metric .hint{font-size:10px}.grid{grid-template-columns:1fr 1fr}}@media(max-width:650px){aside{padding:12px 15px;gap:10px}.brand-sub{display:none}.brand{gap:8px;font-size:18px}.nav{font-size:12px}.nav>span:first-child{display:none}main{padding:0 15px}.breadcrumb{font-size:11px}.breadcrumb span{margin:0 5px}.button.small{padding:7px 9px;font-size:11px}.header-actions{gap:6px}.page-head{align-items:flex-start;flex-direction:column;gap:12px;padding-bottom:12px}h1{font-size:27px}.eyebrow{font-size:9px}.page-head p:not(.eyebrow){font-size:13px}.period-label{font-size:11px;padding:5px 8px}.sync{font-size:11px;line-height:1.6}.filters{padding:17px 15px}.filter-grid{grid-template-columns:1fr 1fr;gap:12px}.class-filter-grid{grid-template-columns:1fr}.filter-foot{align-items:flex-end}.presets{gap:5px}.presets button{font-size:10px;padding:6px}.button.primary{font-size:12px;padding:10px 12px;white-space:nowrap}.metrics{grid-template-columns:1fr 1fr;gap:10px}.metric{min-height:144px;padding:16px}.metric .number{font-size:34px}.metric .number.missing{font-size:20px}.metric .hint{font-size:11px}.grid{grid-template-columns:1fr;gap:18px;margin-bottom:18px}.panel-head{padding:18px 18px 5px}.panel-sub{padding:0 18px 12px}.status-grid{flex-direction:row;align-items:center}.status-list{display:block}.status-line{font-size:10px}.donut{width:125px;height:125px}.quality{padding:10px 18px 18px}.note{font-size:11px}footer{flex-direction:column;gap:4px}.panel h2{font-size:15px}.bar-row{grid-template-columns:90px 1fr 30px}.class-table{font-size:12px}.class-table th,.class-table td{padding:12px}.period-label:empty{display:none}}@media print{aside,header,.filter-foot,.class-filter-grid>.button,footer,.class-detail{display:none}main{margin:0;padding:0}.page-head{padding:10px 0}.filters{padding:10px}.panel,.metric{break-inside:avoid;box-shadow:none}.grid{grid-template-columns:1fr 1fr}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}.table-wrap{overflow:visible}.class-table{font-size:9px}.class-table td,.class-table th{padding:6px}.class-table .table-name{min-width:100px}.metrics{gap:8px}.metric{min-height:120px}.metric .number{font-size:30px}}
/* Keep regular controls and report data legible across screen sizes. */
label,input,select,.nav,.filter-title,.button,.bar-row,table,.status-line,.class-table,.class-detail{font-size:14px}.metric .label,.metric .hint,.note,.panel-sub,.quality>div{font-size:13px}.metric .number.missing{line-height:1.4}.status-list{min-width:150px}.status-grid{flex-wrap:wrap}.class-filter-grid select{min-height:43px}@media(max-width:650px){.status-grid{gap:15px}.class-table{font-size:14px}.nav{font-size:13px}.filter-grid{gap:12px 9px}.metric .hint{line-height:1.5}.filter-foot{flex-wrap:wrap}.filter-foot>.button{margin-left:auto}.quality>div{align-items:flex-start}.quality strong{font-size:26px}}
