:root{--bg:#f2f6fd;--card:#fff;--text:#0a2044;--muted:#63748a;--main:#174caa;--line:#dbe5f2;--teal:#087a73;--red:#b7293d}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 system-ui,-apple-system,"Segoe UI",Arial,sans-serif}a{color:var(--main);text-decoration:none}h1,h2,h3{line-height:1.2;margin:0 0 12px}h1{font-size:24px}h2{font-size:19px}h3{font-size:15px}.wrap{max-width:1560px;margin:auto;padding:22px}.shell{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}.side{background:#102b59;color:#d4e3f9;padding:22px 14px;position:sticky;top:0;height:100vh;overflow:auto}.logo{color:white;font-weight:850;font-size:23px;letter-spacing:.3px;margin:5px 10px 2px}.sublogo{font-size:11px;opacity:.8;margin:0 10px 20px}.nav a{display:block;color:#d9e7fb;padding:11px 14px;border-radius:10px;margin:2px 0;font-weight:550}.nav a:hover,.nav a.on{background:#245095;color:white}.main{min-width:0}.top{background:#fff;border-bottom:1px solid var(--line);padding:13px 24px;display:flex;align-items:center;justify-content:space-between;gap:14px}.titleline{color:var(--muted);font-weight:600}.userbadge{font-size:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:0 3px 15px #143b7010;margin-bottom:18px}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:18px 0}.stat{border-left:4px solid var(--main)}.stat b{display:block;font-size:28px}.stat small{color:var(--muted)}.flex{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.muted,.hint{color:var(--muted)}.hint{font-size:12px}.btn,button{font:inherit}.btn{cursor:pointer;background:var(--main);border:1px solid var(--main);color:white;padding:9px 14px;display:inline-block;border-radius:9px;font-weight:650}.btn:hover{filter:brightness(.93);color:white}.btn.subtle{background:#edf3ff;color:var(--main);border-color:#c7d8fa}.btn.danger{background:var(--red);border-color:var(--red)}.btn.green{background:var(--teal);border-color:var(--teal)}.btn.small{font-size:12px;padding:6px 9px}input,select,textarea{font:inherit;border:1px solid #c9d7e7;border-radius:8px;background:#fff;padding:9px;width:100%;min-width:0;color:var(--text)}input:focus,select:focus,textarea:focus{outline:2px solid #a4c3ff}textarea{resize:vertical;min-height:65px}label{font-weight:650;display:block;margin-bottom:5px}.formgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.formgrid .full{grid-column:1/-1}.tablewrap{overflow:auto;border:1px solid var(--line);border-radius:10px}.tbl{width:100%;border-collapse:collapse;background:white}.tbl th,.tbl td{border-bottom:1px solid var(--line);padding:10px 11px;text-align:left;vertical-align:top}.tbl thead th{background:#edf3fc;color:#17335b;font-size:12px;position:sticky;top:0;z-index:1}.tbl tbody tr:hover{background:#f8fbff}.tbl input,.tbl select{min-width:110px}.tbl td.fixedcol{position:sticky;left:0;background:#fff;min-width:180px;z-index:1}.pill{display:inline-block;padding:3px 9px;border-radius:40px;background:#eaf0fb;color:#244978;font-size:12px;font-weight:650}.pill.approved{background:#d8f5e8;color:#126842}.pill.submitted{background:#fff1cd;color:#855a09}.pill.returned{background:#ffe4e4;color:#a32735}.flash{padding:13px 16px;border-radius:12px;border:1px solid #98d1b6;background:#e7fff1;margin-bottom:18px}.flash.error{background:#ffebeb;color:#9d1b27;border-color:#ebb2b6}.login{max-width:465px;margin:9vh auto;padding:35px}.login h1{font-size:28px}.login .field{margin:16px 0}.login input{padding:13px}.login .btn{width:100%;padding:13px}.progress{background:#e2eaf6;border-radius:50px;height:9px;overflow:hidden;min-width:90px}.progress i{display:block;background:var(--teal);height:100%;border-radius:50px}.bar{height:12px;background:#dfecff;border-radius:20px;min-width:70px;max-width:230px}.bar i{display:block;height:100%;background:#216cba;border-radius:20px}.gridhelp{background:#f1f7ff;border:1px solid #cadcf6;padding:12px;border-radius:9px}.locked{background:#f5f6f8;color:#778398;padding:8px;border-radius:6px;font-size:12px;display:block}.foot{color:var(--muted);text-align:right;font-size:11px;padding:20px}.code{font:12px ui-monospace,SFMono-Regular,Consolas,monospace}.nowrap{white-space:nowrap}.gridcell{min-width:116px;font-size:13px}.gridcell.sm{min-width:85px}.gridcell:disabled{background:#edf0f4}.subtitle{font-size:13px;color:var(--muted);margin-top:-4px}.rowform{margin-bottom:14px}.callout{border-left:4px solid #f6b54c;background:#fff8e9;padding:12px 15px;border-radius:8px;margin:12px 0}@media(max-width:1050px){.cards{grid-template-columns:repeat(2,1fr)}.shell{grid-template-columns:1fr}.side{height:auto;position:static;padding:12px}.nav{display:flex;overflow:auto;gap:5px}.nav a{white-space:nowrap}.formgrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.wrap{padding:12px}.cards,.formgrid{grid-template-columns:1fr}.top{padding:12px}.card{padding:13px}}

/* v2 responsive visual system. Additive to v1 CSS, avoids third-party CDNs. */
:root {--bg:#f1f5fc;--card:#ffffff;--text:#102642;--muted:#64748b;--main:#1957b6;--line:#dfe7f2;--teal:#078574;--red:#b91c41;}
body{background:var(--bg);font-size:14px}
.shell{grid-template-columns:258px minmax(0,1fr)}
.side{background:linear-gradient(180deg,#0d2854,#102d60 75%,#0b2247);padding:23px 14px;border-right:1px solid #2a4470;box-shadow:8px 0 26px #0b265008;z-index:15}
.side .logo{font-size:23px;letter-spacing:.4px;padding:4px 3px}
.sublogo{letter-spacing:.35px;color:#c6d8f8}
.nav a{position:relative;border-radius:11px;padding:11px 13px 11px 39px;margin:3px 0;transition:background .15s;color:#dce8fa;font-weight:600;line-height:1.15}
.nav a.on{background:#235ca4;box-shadow:0 4px 12px #00000016}
.nav a:hover{background:#1b4b88}
.nav a:before{content:'▦';position:absolute;left:14px;top:10px;color:#91c6ff}
.nav a[data-page="dashboard"]:before{content:'◫'} .nav a[data-page="reports"]:before{content:'▤'} .nav a[data-page="tracking"]:before{content:'◷'}
.nav a[data-page="summary"]:before{content:'▥'}.nav a[data-page="submissions"]:before{content:'✓'}.nav a[data-page="templates"]:before{content:'▧'}
.nav a[data-page="targets"]:before{content:'◉'}.nav a[data-page="periods"]:before{content:'▣'}.nav a[data-page="classification"]:before{content:'♧'}
.nav a[data-page="users"]:before{content:'♙'}.nav a[data-page="grants"]:before{content:'◇'}.nav a[data-page="audit"]:before{content:'◌'}.nav a[data-page="backups"]:before{content:'⇩'}
.main{min-width:0}.top{min-height:64px;padding:10px 28px;background:#ffffffef;position:sticky;top:0;z-index:8;backdrop-filter:blur(16px)}
.titleline{font-size:13px;color:#536681}.userbadge{display:flex;align-items:center;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.userbadge a{font-weight:600}.wrap{max-width:1700px;padding:24px 30px}
.card{box-shadow:0 4px 20px #132b5407;border-radius:15px;margin-bottom:18px;padding:21px;border-color:#e1e8f4}
.card h2{font-size:18px;letter-spacing:-.2px;margin-bottom:12px}h1{font-size:26px;letter-spacing:-.65px}
.btn{transition:background .16s,transform .16s;box-shadow:0 2px 7px #183e7810;border-radius:9px;padding:10px 15px}
.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.45;cursor:not-allowed}
input,select,textarea{border:1px solid #cbd8ec;border-radius:8px;min-height:39px}input:focus,select:focus,textarea:focus{outline:2px solid #c3dafd}
.tablewrap{overflow:auto;max-width:100%;-webkit-overflow-scrolling:touch}
.tbl{font-size:13px}.tbl th,.tbl td{padding:11px 12px}.tbl tbody tr:hover{background:#f2f8ff}.tbl thead th{background:#eef4fe;color:#193a69;white-space:nowrap}
.pill{font-weight:750}.pill.draft{background:#edf2ff;color:#315ba6}.pill.not_started{background:#e9edf5;color:#596b7e}
.v2-hero{display:flex;justify-content:space-between;align-items:center;gap:25px;padding:10px 0 15px}.v2-hero p{margin:0;color:var(--muted)}
.v2-kicker{color:var(--main);font-weight:800;letter-spacing:2px;font-size:11px}.v2-hero h1{font-size:28px;margin:6px 0 10px}
.v2-filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:17px}.v2-filters .v2-field{min-width:195px;max-width:500px;flex:1}.v2-filters select{margin-top:6px}
.v2-filters .btn{margin-bottom:0;white-space:nowrap}
.v2-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:14px 0 18px}.v2-stat{padding:19px 22px;border-left:4px solid #1a63c5;margin:0}
.v2-stat small{display:block;color:var(--muted);font-weight:600;font-size:12px}.v2-stat strong{display:block;font-size:31px;line-height:1.35;margin-top:6px;color:#102c59;font-variant-numeric:tabular-nums}
.v2-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:18px}.v2-two>.card{margin:0}
.v2-emphasis{font-size:28px;color:var(--teal);font-weight:850}.v2-progress{height:16px;margin:16px 0 12px}.v2-progress i{background:linear-gradient(90deg,#0b8b85,#31b99b)}
.v2-legend{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}.v2-legend span,.v2-mini-stats span{background:#eef4fd;border-radius:999px;padding:7px 12px;color:#425d80;font-size:12px}
.v2-mini-stats{display:flex;gap:9px;flex-wrap:wrap;margin:14px 0}.v2-mini-stats b{color:#123e80}.v2-groupbar{margin:15px 0}.v2-groupbar .between{margin-bottom:8px}.v2-groupbar .progress{height:9px}
.v2-actions{display:flex;gap:8px;flex-wrap:wrap;margin:15px 0 20px}.v2-actions form{display:inline-flex}
.v2-note{background:#f0f7ff;border:1px solid #d8e5f7;border-radius:10px;padding:12px 14px;margin:17px 0;color:#4e6584;font-size:12px;line-height:1.65}
.v2-derived{display:block;background:#e5f8f3;color:#077568;border:1px solid #bfe9df;padding:9px 10px;min-width:90px;border-radius:8px;font-weight:750;text-align:right;font-variant-numeric:tabular-nums}
.v2-wide-table{max-height:70vh}.v2-wide-table .tbl th{min-width:100px}.v2-wide-table .tbl th.v2-sticky,.v2-wide-table .tbl td.v2-sticky{position:sticky;left:0;z-index:3;background:#ffffff;min-width:230px;max-width:300px;white-space:normal}
.v2-wide-table .tbl thead th.v2-sticky{z-index:5;background:#eaf3ff}.v2-wide-table .tbl td.v2-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.v2-section th{background:#dceafb;color:#123966!important;text-transform:uppercase;font-weight:850!important;position:static!important}
.v2-total th,.v2-total td{background:#dbece9;color:#164b47;font-weight:750}.v2-grand th,.v2-grand td{background:#d8e5fa;color:#122f58;font-weight:800}
.v2-form-compact{grid-template-columns:repeat(2,minmax(0,1fr))}.v2-menu-button{display:none;font-size:20px;border:1px solid #dce5f2;color:#164c93;background:#f0f5fc;padding:5px 11px;border-radius:9px;cursor:pointer}
@media(max-width:1260px){.v2-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.wrap{padding:22px}.v2-two{gap:12px}}
@media(max-width:1050px){.shell{display:block}.side{position:fixed;top:0;left:0;height:100vh;width:min(310px,86vw);transform:translateX(-105%);transition:transform .2s;overflow-y:auto;box-shadow:12px 0 42px #071c4270}.side.v2-open{transform:translateX(0)}.nav{display:block;overflow:visible}.nav a{white-space:normal}.v2-menu-button{display:block}.top{z-index:10}.wrap{padding:18px}.formgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.v2-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.v2-two{grid-template-columns:1fr}.v2-hero{align-items:flex-start;flex-direction:column;gap:12px}.v2-hero h1{font-size:24px}.titleline{max-width:180px}.userbadge{font-size:11px}.v2-filters .v2-field{flex-basis:100%;max-width:100%}}
@media(max-width:600px){.wrap{padding:12px}.card{padding:14px}.v2-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.v2-stat{padding:14px 11px}.v2-stat strong{font-size:25px}.v2-stat small{min-height:33px}.formgrid,.v2-form-compact{grid-template-columns:1fr}.top{padding:10px 12px;gap:6px}.userbadge{gap:5px}.userbadge .pill{display:none}.titleline{display:none}.v2-hero{padding-top:6px}.v2-hero h1{font-size:22px}.tbl th,.tbl td{padding:9px}.v2-wide-table .tbl th.v2-sticky,.v2-wide-table .tbl td.v2-sticky{min-width:160px;max-width:180px}.login{margin:4vh 12px;padding:20px}}
@media(prefers-reduced-motion:reduce){.side,.btn{transition:none}}

.v2-indicators{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-top:12px}.v2-indicators>div{padding:15px 15px 13px;background:#f1f7ff;border-radius:11px;border:1px solid #e1eafa}.v2-indicators small{display:block;color:#5b718b;font-weight:600}.v2-indicators b{display:inline-block;font-size:21px;margin-top:9px;color:#133d79;font-variant-numeric:tabular-nums}.v2-indicators span{font-size:11px;color:#718197;margin-left:6px}@media(max-width:900px){.v2-indicators{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.v2-indicators{grid-template-columns:1fr}}
