:root{
  --navy:#322F6A; --navyd:#1D2F5B; --navydp:#131322;
  --green:#9ECC47; --greend:#7CB83B;
  --orange:#F16136; --blue:#4D98D2;
  --text:#2D3748; --muted:#64748B;
  --border:#E2E8F0; --bg:#F4F5F9; --white:#FFFFFF;
  --r:10px; --sh:0 1px 4px rgba(50,47,106,.08); --shm:0 4px 16px rgba(50,47,106,.11);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Source Sans 3',system-ui,sans-serif;font-size:.95rem;line-height:1.6;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}

/* HEADER */
header{background:var(--navydp);border-bottom:3px solid var(--green);position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.hi{max-width:1360px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 2rem;height:56px}
.hbrand{display:flex;align-items:center;gap:10px}
.hbrand .dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex-shrink:0}
.hbrand span{font-family:'Nunito',sans-serif;font-weight:700;font-size:.98rem;color:#fff}
.hbrand small{display:block;font-size:.68rem;color:rgba(255,255,255,.45);margin-top:-2px}
nav{display:flex;gap:2px}
.tab{padding:7px 15px;border-radius:6px;border:none;cursor:pointer;font-family:'Nunito',sans-serif;font-size:.8rem;font-weight:700;color:rgba(255,255,255,.55);background:transparent;transition:all .15s}
.tab:hover{color:#fff;background:rgba(255,255,255,.08)}
.tab.on{color:var(--navy);background:var(--green)}
.badge-mes{background:var(--orange);color:#fff;padding:2px 10px;border-radius:20px;font-size:.73rem;font-weight:700;font-family:'Nunito',sans-serif}

/* PAGES */
.page{display:none;max-width:1360px;margin:0 auto;padding:1.75rem 2rem}
.page.on{display:block}
.ptitle{font-family:'Nunito',sans-serif;font-size:1.5rem;font-weight:800;color:var(--navy);margin-bottom:.25rem}
.psub{font-size:.88rem;color:var(--muted);margin-bottom:1.5rem}

/* CARD */
.card{background:var(--white);border-radius:var(--r);padding:1.5rem;box-shadow:var(--sh)}

/* FORM */
.fcard{background:var(--white);border-radius:var(--r);padding:1.5rem 1.75rem;margin-bottom:1rem;box-shadow:var(--sh)}
.fsect{font-family:'Nunito',sans-serif;font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding-bottom:.6rem;margin-bottom:1rem;border-bottom:1px solid var(--border)}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.85rem}
.fgrid .full{grid-column:1/-1}
.flabel{font-family:'Nunito',sans-serif;font-size:.78rem;font-weight:700;color:var(--text);display:block;margin-bottom:3px}
.flabel .req{color:var(--orange);margin-left:2px}
.fctl{width:100%;padding:8px 10px;border-radius:7px;border:1.5px solid var(--border);font-family:'Source Sans 3',sans-serif;font-size:.87rem;color:var(--text);background:var(--bg);outline:none;transition:border .15s,box-shadow .15s}
.fctl:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(50,47,106,.1);background:#fff}
select.fctl{cursor:pointer}
textarea.fctl{resize:vertical;min-height:62px;line-height:1.5}
.numrow{display:flex;align-items:center;gap:8px;margin-top:3px}
.nbtn{width:30px;height:30px;border-radius:6px;border:1.5px solid var(--border);background:var(--bg);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--navy);font-weight:800;transition:all .12s;flex-shrink:0;font-family:'Nunito',sans-serif}
.nbtn:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.nval{min-width:32px;text-align:center;font-family:'Nunito',sans-serif;font-size:.95rem;font-weight:700;color:var(--navy)}

/* PREV ANSWER */
.prev{display:flex;align-items:center;gap:6px;margin-top:4px;padding:4px 9px;border-radius:5px;background:#FEF3E8;border:1px solid #FBC995;font-size:.74rem;color:#9A3A00;cursor:pointer;transition:all .12s;user-select:none}
.prev:hover{background:#FDE8CE;transform:translateX(2px)}
.prev.ok{background:#EDF7E0;border-color:#A8D878;color:#2D5C0A;cursor:default;transform:none}
.prev .plabel{font-weight:700;flex-shrink:0}
.prev .pval{flex:1}
.prev .phint{font-size:.69rem;opacity:.6;flex-shrink:0}
#prev-banner{display:none;background:#FEF3E8;border:1px solid #FBC995;border-radius:var(--r);padding:.8rem 1.1rem;margin-bottom:1rem;font-size:.83rem;color:#7C3312;line-height:1.5}

/* BUTTONS */
.btn{padding:9px 20px;border-radius:7px;border:none;cursor:pointer;font-family:'Nunito',sans-serif;font-size:.84rem;font-weight:700;transition:all .15s;letter-spacing:.02em;line-height:1}
.btn-navy{background:var(--navy);color:#fff}
.btn-navy:hover{background:var(--navyd);transform:translateY(-1px);box-shadow:0 4px 12px rgba(50,47,106,.22)}
.btn-green{background:var(--green);color:var(--navy)}
.btn-green:hover{background:var(--greend)}
.btn-out{background:transparent;color:var(--navy);border:1.5px solid var(--border)}
.btn-out:hover{border-color:var(--navy);background:#EEEDFA}
.btn-red{background:#FEF2F2;color:#B91C1C;border:none}
.btn-red:hover{background:#FEE2E2}
.factions{display:flex;justify-content:flex-end;gap:10px;margin-top:1.25rem}

/* TOAST */
.toast{position:fixed;bottom:1.75rem;right:1.75rem;background:var(--navydp);color:#fff;padding:10px 16px;border-radius:8px;font-family:'Nunito',sans-serif;font-size:.83rem;font-weight:700;box-shadow:var(--shm);transform:translateY(60px);opacity:0;transition:all .25s;z-index:999;pointer-events:none}
.toast.show{transform:translateY(0);opacity:1}
.toast.ok{background:#1A6635}
.toast.err{background:#9B1C1C}

/* MODAL */
.overlay{position:fixed;inset:0;background:rgba(19,19,34,.55);z-index:200;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}
.overlay.on{opacity:1;pointer-events:all}
.modal{background:var(--white);border-radius:12px;padding:1.75rem;max-width:440px;width:90%;box-shadow:0 20px 60px rgba(0,0,0,.2);transform:scale(.96);transition:transform .2s}
.overlay.on .modal{transform:scale(1)}
.modal-t{font-family:'Nunito',sans-serif;font-size:1.15rem;font-weight:800;color:var(--navy);margin-bottom:.4rem}
.modal-b{font-size:.87rem;color:var(--muted);line-height:1.6;margin-bottom:1.25rem}
.modal-a{display:flex;justify-content:flex-end;gap:8px}

/* DRAWER */
#dov{display:none;position:fixed;inset:0;background:rgba(19,19,34,.4);z-index:300}
#dd{position:fixed;right:-520px;top:0;width:500px;height:100vh;background:var(--white);z-index:301;box-shadow:-4px 0 30px rgba(0,0,0,.12);overflow-y:auto;transition:right .28s cubic-bezier(.4,0,.2,1)}
#dd-head{background:var(--navydp);border-bottom:3px solid var(--green);padding:1rem 1.4rem;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0}
#dd-name{font-family:'Nunito',sans-serif;font-size:1rem;font-weight:700;color:#fff}
#dd-sub{font-size:.73rem;color:rgba(255,255,255,.45);margin-top:2px}
#dd-body{padding:1.4rem}
#dd-close{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:#fff;width:28px;height:28px;border-radius:5px;font-size:.8rem;cursor:pointer;font-weight:700;font-family:'Nunito',sans-serif}

/* DASHBOARD */
.dash-bar{background:var(--white);border-radius:var(--r);padding:.8rem 1.1rem;margin-bottom:1.2rem;box-shadow:var(--sh);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.flbl{font-family:'Nunito',sans-serif;font-size:.75rem;font-weight:800;color:var(--muted);letter-spacing:.05em;text-transform:uppercase}
.chip{padding:5px 12px;border-radius:20px;border:1.5px solid var(--border);font-family:'Nunito',sans-serif;font-size:.77rem;font-weight:700;cursor:pointer;transition:all .12s;background:var(--bg);color:var(--muted)}
.chip:hover{border-color:var(--navy);color:var(--navy)}
.chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}
#dash-alert{display:none;background:#FEF3E8;border-left:4px solid var(--orange);border-radius:var(--r);padding:.8rem 1.1rem;margin-bottom:1.1rem;font-size:.84rem;color:#7C3312;font-weight:500}

/* KPI */
.kgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:.75rem;margin-bottom:.75rem}
.kcard{background:var(--white);border-radius:var(--r);padding:1rem 1.1rem;box-shadow:var(--sh);border-top:3px solid var(--border);transition:transform .15s,box-shadow .15s}
.kcard:hover{transform:translateY(-2px);box-shadow:var(--shm)}
.kcard.kn{border-top-color:var(--navy)} .kcard.ko{border-top-color:var(--orange)}
.kcard.kg{border-top-color:var(--greend)} .kcard.kb{border-top-color:var(--blue)}
.kval{font-family:'Nunito',sans-serif;font-size:2rem;font-weight:800;line-height:1;color:var(--navy)}
.kval.g{color:var(--greend)} .kval.o{color:var(--orange)} .kval.b{color:var(--blue)}
.klbl{font-size:.76rem;color:var(--muted);margin-top:3px;line-height:1.35}
.kdelta{font-family:'Nunito',sans-serif;font-size:.71rem;font-weight:700;margin-top:4px}
.kdelta.up{color:#16A34A} .kdelta.dn{color:#DC2626} .kdelta.fl{color:var(--muted)}

/* CHARTS */
.cgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(450px,1fr));gap:1rem;margin-bottom:1rem}
.cgrid .full{grid-column:1/-1}
.ccard{background:var(--white);border-radius:var(--r);padding:1.25rem 1.4rem;box-shadow:var(--sh)}
.ctitle{font-family:'Nunito',sans-serif;font-size:.92rem;font-weight:700;color:var(--navy);margin-bottom:.2rem}
.csub{font-size:.75rem;color:var(--muted);margin-bottom:.9rem;line-height:1.4}

/* TABLE */
.rtable-wrap{background:var(--white);border-radius:var(--r);padding:1.25rem 1.4rem;box-shadow:var(--sh)}
table{width:100%;border-collapse:collapse;font-size:.82rem}
thead th{font-family:'Nunito',sans-serif;font-size:.69rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);padding:7px 10px;border-bottom:2px solid var(--border);text-align:left}
tbody tr{border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s}
tbody tr:hover{background:var(--bg)}
tbody td{padding:7px 10px;color:var(--text)}
.tag{display:inline-block;padding:2px 7px;border-radius:4px;font-family:'Nunito',sans-serif;font-size:.7rem;font-weight:700}
.tg{background:#EDF5D6;color:#2D5C0A} .to{background:#FEF0E8;color:#9A3A00}
.tb{background:#EBF5FB;color:#1A5F84} .tn{background:#EEEDFA;color:var(--navy)}

/* FILTER ROW */
.frow{background:var(--white);border-radius:var(--r);padding:1rem 1.25rem;margin-bottom:.9rem;box-shadow:var(--sh)}
.frow-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin-bottom:.75rem}
.frow-foot{display:flex;align-items:center;justify-content:space-between;padding-top:.7rem;border-top:1px solid var(--border);font-size:.8rem;color:var(--muted)}

/* EXPORT */
.egrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-bottom:1.5rem}
.ecard{background:var(--white);border-radius:var(--r);padding:1.5rem;box-shadow:var(--sh);display:flex;flex-direction:column;gap:.8rem}
.etitle{font-family:'Nunito',sans-serif;font-size:.98rem;font-weight:800;color:var(--navy)}
.edesc{font-size:.84rem;color:var(--muted);line-height:1.6}

/* DRAWER SECTIONS */
.dsec{margin-bottom:1.25rem}
.dsec-t{font-family:'Nunito',sans-serif;font-size:.67rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:.6rem;padding-bottom:5px;border-bottom:2px solid var(--border)}
.drow{padding:7px 0;border-bottom:1px solid var(--border)}
.drow-l{font-size:.73rem;color:var(--muted);margin-bottom:2px}
.drow-v{color:var(--text);font-weight:500;font-size:.85rem}

/* LOG */
.lentry{border-bottom:1px solid var(--border);padding:.6rem 0;font-size:.81rem}
.lver{font-family:'Nunito',sans-serif;font-weight:800;color:var(--navy);margin-right:6px}
.ltime{color:var(--muted);font-size:.72rem;margin-right:6px}
.ldiff{background:var(--bg);border-radius:5px;padding:3px 8px;margin-top:3px;font-size:.73rem;color:var(--muted);font-family:monospace}

@media(max-width:768px){.cgrid{grid-template-columns:1fr}.hi{padding:0 1rem}.tab{padding:7px 9px;font-size:.74rem}.page{padding:1rem}.kgrid{grid-template-columns:repeat(2,1fr)}}
.chart-export-btn{position:absolute;top:0;right:0;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:3px 9px;font-size:.72rem;font-family:'Nunito',sans-serif;font-weight:700;color:var(--muted);cursor:pointer;transition:all .15s;z-index:10}
.chart-export-btn:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:#C4C8DC;border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--navy)}
