/* ═══════════════════════════════════════════════════════════════
   Pye brand layer — loaded after each page's own styles.
   Look: soft periwinkle and deep indigo, pill buttons, rounded cards,
   flat clouds and waves. Font: Lexend (Google Fonts).
   ═══════════════════════════════════════════════════════════════ */
:root{
  --brand:#5B4FD6; --brand2:#9093FD; --brand-dark:#3A2E8C; --brand-dim:#ECEBFF;
  --lav:#9093FD; --lav2:#A9ABF5; --lav3:#C8CAFF; --sky:#DCDEFF; --indigo:#322283; --indigo2:#3A2E8C;
  --grad:linear-gradient(120deg,#9093FD 0%,#5B4FD6 100%);
  --grad-deep:linear-gradient(160deg,#3A2E8C 0%,#322283 100%);
  --g1:#9093FD; --g2:#5B4FD6;
  --berry:#322283; --navy:#322283;
  --font:'Lexend',system-ui,-apple-system,'Segoe UI',sans-serif;
  /* chart palette — validated for colour-blind separation (adjacent pairs) */
  --c1:#5B4FD6; --c2:#1E9E96; --c3:#E89A2C; --c4:#E0487E; --c5:#2F86C8; --c6:#A8691C; --c-other:#A6A4C4;
  --viz-track:#ECEBFF; --viz-ink:#1E1A4D; --viz-ink2:#4A4777; --viz-ink3:#6B6A9A;
  --ok-c:#1D9E75; --warn-c:#D08A12; --bad-c:#B42828; --info-c:#2F86C8;
}
body{font-family:var(--font)!important;letter-spacing:-.003em}
button,input,select,textarea{font-family:inherit}

/* ── portal ── */
.sb{background:linear-gradient(185deg,#3A2E8C 0%,#322283 45%,#221A5C 100%)!important}
.sb-logo-mark{background:var(--grad)!important}
.sb-item.active{background:linear-gradient(90deg,rgba(140,142,236,.38),rgba(140,142,236,.08))!important}
.sb-item.active::before{background:var(--grad)!important}
.sb-badge{background:var(--grad)}
.topbar{box-shadow:0 1px 0 var(--border),0 3px 0 -1px transparent}
.topbar::after{content:'';position:absolute;left:0;right:0;bottom:-3px;height:3px;background:var(--grad)}
.btn-primary{background:var(--brand)!important;border-color:var(--brand-dark)!important;border-radius:999px;box-shadow:0 2px 10px rgba(91,79,214,.25)}
.btn{border-radius:999px}
.card,.stat{border-radius:20px!important}
.card{border:0!important;box-shadow:0 4px 18px rgba(45,34,117,.06)!important}
body{background:#F2F2FF}
.prog-fill{background:var(--grad)}
.stat-grid>.stat{position:relative;overflow:hidden;border:0;background:linear-gradient(135deg,var(--st,#ECEBFF) 0%,#fff 72%)}
.stat-grid>.stat::before{content:'';position:absolute;inset:0 auto 0 0;width:4px;background:var(--sc,var(--c1))}
.stat-grid>.stat:nth-child(6n+1){--sc:var(--c1);--st:#ECEBFF}.stat-grid>.stat:nth-child(6n+2){--sc:var(--c2);--st:#E2F4F2}
.stat-grid>.stat:nth-child(6n+3){--sc:var(--c3);--st:#FDF1DF}.stat-grid>.stat:nth-child(6n+4){--sc:var(--c4);--st:#FCE6EE}
.stat-grid>.stat:nth-child(6n+5){--sc:var(--c5);--st:#E3EEF9}.stat-grid>.stat:nth-child(6n+6){--sc:var(--c6);--st:#F4EBDF}
.chip.on{background:var(--brand)!important;border-color:var(--brand)!important;color:#fff!important}

/* ── charts (charts.js) ── */
.mc-vizrow{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));margin-bottom:18px;align-items:stretch}
.mc-vizrow>.card{margin:0}
.mc-vb{container-type:inline-size}
.mc-viz{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.mc-dn{position:relative;width:128px;height:128px;flex:none}
.mc-dn svg{width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
.mc-dn circle.s{fill:none;stroke-width:17;transition:stroke-width .12s}
.mc-dn circle.s:hover{stroke-width:21}
.mc-mid{position:absolute;inset:0;display:grid;place-content:center;text-align:center;line-height:1.1;pointer-events:none;color:var(--viz-ink)}
.mc-mid b{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.mc-mid span{font-size:10.5px;color:var(--viz-ink3);font-weight:600;margin-top:2px}
.mc-lgd{flex:1;min-width:140px;display:flex;flex-direction:column;gap:5px;font-size:12.5px;margin:0;padding:0;list-style:none}
.mc-lgd li{display:flex;align-items:flex-start;gap:8px;min-width:0}
.mc-lgd i{width:10px;height:10px;border-radius:3px;flex:none;margin-top:3px}
.mc-lgd .l{flex:1;min-width:0;color:var(--viz-ink2);line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mc-lgd .v{font-variant-numeric:tabular-nums;font-weight:700;color:var(--viz-ink)}
.mc-lgd .p{font-variant-numeric:tabular-nums;color:var(--viz-ink3);width:34px;text-align:right}
.mc-hb{display:flex;flex-direction:column;gap:9px;width:100%}
.mc-hb .r{display:grid;grid-template-columns:minmax(70px,34%) 1fr auto;gap:10px;align-items:center;font-size:12.5px}
.mc-hb .l{color:var(--viz-ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mc-hb .t{height:10px;background:var(--viz-track);border-radius:99px;overflow:hidden}
.mc-hb .t i{display:block;height:100%;border-radius:99px;min-width:3px}
.mc-hb .v{font-variant-numeric:tabular-nums;font-weight:700;min-width:44px;text-align:right;color:var(--viz-ink)}
.mc-cols{display:flex;align-items:flex-end;gap:6px;height:140px;width:100%;padding-top:18px;border-bottom:1px solid rgba(0,0,0,.12)}
.mc-cols .c{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0;position:relative}
.mc-cols .c i{display:block;width:100%;max-width:32px;border-radius:8px 8px 0 0;background:linear-gradient(180deg,#9093FD,#5B4FD6);min-height:2px;opacity:.5}
.mc-cols .c.hl i{opacity:1}
.mc-cols .tv{position:absolute;font-size:10.5px;font-weight:700;color:var(--viz-ink);white-space:nowrap;font-variant-numeric:tabular-nums}
.mc-colx{display:flex;gap:6px;width:100%;margin-top:5px}
.mc-colx span{flex:1;text-align:center;font-size:10.5px;color:var(--viz-ink3);font-weight:600;min-width:0;overflow:hidden;white-space:nowrap}
.mc-gauge{position:relative;width:116px;height:116px;flex:none}
.mc-gauge svg{width:100%;height:100%;transform:rotate(-90deg)}
.mc-empty{padding:18px;text-align:center;color:var(--viz-ink3);font-size:12.5px}
.mc-tip{position:fixed;z-index:999;pointer-events:none;background:#1E1A4D;color:#fff;font-size:12px;font-weight:600;padding:6px 9px;border-radius:7px;box-shadow:0 6px 20px rgba(0,0,0,.2);max-width:260px}
@container (max-width:340px){.mc-viz{flex-direction:column;align-items:stretch}.mc-dn,.mc-gauge{align-self:center}}

/* portal sign-in */
.login-overlay{background:linear-gradient(160deg,#9093FD 0%,#5B4FD6 55%,#322283 100%)!important}
.login-card{border-radius:24px!important;box-shadow:0 24px 60px rgba(30,26,77,.3)!important}
