:root{
--navy:#082d62;--green:#0b873c;--red:#c8102e;--gold:#d8b440;--ink:#172235;--muted:#66778a;
--line:#d9e3ec;--bg:#f3f7fb;--white:#fff;--blue:#0b5797;--radius:22px;--shadow:0 15px 40px rgba(8,45,98,.08)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
button,input,select,textarea{font:inherit}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:10px;top:10px;z-index:99;background:#fff;padding:10px}
.site-header{background:#fff;border-bottom:4px solid var(--green);position:sticky;top:0;z-index:20;box-shadow:0 5px 22px rgba(8,45,98,.08)}
.header-inner{width:min(1200px,calc(100% - 28px));margin:auto;padding:10px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}
.site-logo{height:92px;width:auto;object-fit:contain}.header-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.header-btn{border:1px solid #b9c9d7;background:#fff;color:var(--navy);padding:10px 12px;border-radius:11px;font-weight:800}
.app-shell{width:min(1200px,calc(100% - 28px));margin:26px auto 60px;display:grid;gap:22px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:clamp(20px,3vw,34px);box-shadow:var(--shadow)}
.hero{display:grid;grid-template-columns:1fr auto;gap:28px;align-items:center;background:linear-gradient(140deg,#fff 40%,#edf8f1 100%)}.hero h1{font-size:clamp(2.4rem,5vw,4.8rem);line-height:.96;margin:.15em 0}.hero p{color:var(--muted);max-width:760px;font-size:1.05rem}
.eyebrow{display:block;color:var(--green);font-size:.75rem;font-weight:900;letter-spacing:.16em;margin-bottom:8px}.student-row{display:grid;grid-template-columns:auto minmax(160px,280px) auto;gap:10px;align-items:center;margin-top:18px}
label,legend{font-weight:800;font-size:.9rem}input,select,textarea{width:100%;border:1px solid #c6d4e0;border-radius:12px;padding:12px;background:#fff;color:var(--ink)}textarea{min-height:100px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:3px solid rgba(11,87,151,.16);border-color:var(--blue)}button{cursor:pointer}.primary-btn,.secondary-btn{border:0;border-radius:12px;padding:12px 16px;font-weight:900}.primary-btn{background:var(--navy);color:#fff}.secondary-btn{background:#eaf2f9;color:var(--navy)}.full{width:100%;margin-top:14px}.hidden{display:none!important}
.ring-wrap{width:220px;aspect-ratio:1;position:relative}.ring-wrap svg{width:100%;transform:rotate(-90deg)}.ring-wrap circle{fill:none;stroke-width:14}.ring-track{stroke:#dce8ef}.ring-progress{stroke:var(--green);stroke-linecap:round;stroke-dasharray:439.8;stroke-dashoffset:439.8;transition:.7s}.ring-centre{position:absolute;inset:0;display:grid;place-content:center;text-align:center}.ring-centre strong{font-size:2.4rem}.ring-centre span{font-size:.78rem;color:var(--muted)}
.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;display:flex;gap:13px;align-items:center;box-shadow:0 8px 22px rgba(8,45,98,.05)}.metric-card>span{font-size:1.7rem}.metric-card div{display:grid}.metric-card small{color:var(--muted)}.metric-card strong{font-size:1.35rem}
.grid{display:grid;gap:22px}.two-one{grid-template-columns:1.45fr .75fr}.equal{grid-template-columns:1fr 1fr}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.section-heading h2,.panel h2{margin:.1em 0 .6em}
.chart-box{overflow:auto}.chart-box svg{width:100%;min-width:620px}.helper{font-size:.85rem;color:var(--muted)}
.predictor{background:linear-gradient(160deg,#082d62,#0b5797);color:#fff}.predictor .eyebrow{color:#b8efca}.prediction-main{background:rgba(255,255,255,.1);padding:18px;border-radius:16px;display:grid;gap:7px}.prediction-main strong{font-size:2.5rem}.prediction-list{display:grid;gap:12px;margin-top:15px}.prediction-list div{display:flex;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.17);padding-bottom:9px}.status-callout{margin-top:16px;background:rgba(255,255,255,.1);padding:14px;border-radius:14px}
.journey-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.84rem}.journey-legend span{display:flex;align-items:center;gap:6px}.dot{width:11px;height:11px;border-radius:3px;display:inline-block}.dot.attended{background:var(--green)}.dot.absent{background:var(--red)}.dot.remaining{background:#dce5ec}
.year-journey{display:grid;grid-template-columns:repeat(38,1fr);gap:5px;margin-top:18px}.day-cell{aspect-ratio:1;border-radius:3px;background:#dce5ec}.day-cell.attended{background:var(--green)}.day-cell.absent{background:var(--red)}.journey-summary{display:flex;justify-content:space-between;gap:20px;margin-top:14px}.journey-summary span{color:var(--muted)}
.slider-value{text-align:right;display:grid}.slider-value strong{font-size:2rem}.slider-value span{font-size:.75rem;color:var(--muted)}input[type=range]{padding:0;border:0;accent-color:var(--green)}
.scenario-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}.scenario-grid>div{border:1px solid var(--line);border-radius:16px;padding:16px;background:#fbfdff;display:grid;gap:7px}.scenario-grid span{font-size:.85rem;color:var(--muted)}.scenario-grid strong{font-size:1.35rem}
.impact-track{height:13px;border-radius:99px;background:#dce5ec;overflow:hidden;margin-top:18px}.impact-track div{height:100%;background:linear-gradient(90deg,var(--red),#db8e24,var(--green));width:100%;transition:.4s}.impact-message{font-weight:800}
.streak-display{display:flex;align-items:center;gap:18px;background:#fff6df;border-radius:16px;padding:18px}.flame{font-size:3.3rem}.streak-display div{display:grid}.streak-display strong{font-size:2rem}.streak-display small{color:var(--muted)}.mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.mini-grid div{border:1px solid var(--line);border-radius:14px;padding:14px;display:grid}.mini-grid span{font-size:.84rem;color:var(--muted)}
.goal-row{display:flex;justify-content:space-between;gap:10px;margin-top:10px}.goal-track{height:11px;border-radius:99px;background:#dce5ec;overflow:hidden;margin-top:8px}.goal-track div{height:100%;background:var(--green);width:0;transition:.3s}
.badges-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.badge{border:1px solid var(--line);border-radius:17px;padding:17px;text-align:center;opacity:.36;filter:grayscale(1);background:#fbfdff}.badge.earned{opacity:1;filter:none;background:#f1fbf4;border-color:#9fd3af}.badge span{font-size:2.2rem}.badge strong,.badge small{display:block}.badge small{color:var(--muted);margin-top:5px}
.reflection-list{display:grid;gap:12px;max-height:480px;overflow:auto}.reflection-item{border-left:4px solid var(--green);background:#f4faf6;padding:14px;border-radius:0 13px 13px 0}.reflection-item time{font-size:.8rem;color:var(--muted)}.empty{border:1px dashed #b9c7d2;border-radius:14px;padding:20px;text-align:center;color:var(--muted)}
.report-panel{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.report-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;min-width:330px}.support-strip{background:#eaf7ee;border:1px solid #b6ddc2;border-radius:18px;padding:20px}.support-strip p{margin:.35em 0 0}
dialog{border:0;border-radius:20px;padding:0;width:min(650px,calc(100% - 22px));box-shadow:0 30px 90px rgba(0,0,0,.32)}dialog::backdrop{background:rgba(5,20,40,.7)}.dialog-card{padding:28px;display:grid;gap:13px;position:relative}.close-btn{position:absolute;right:12px;top:7px;border:0;background:transparent;font-size:2rem}fieldset{border:1px solid var(--line);border-radius:14px;padding:14px}.day-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:10px}.day-grid label{border:1px solid #c9d6df;border-radius:10px;padding:10px;text-align:center}.day-grid input{width:auto}.calculation-preview{display:flex;justify-content:space-between;align-items:center;background:#eef8f1;border-radius:13px;padding:14px}.calculation-preview strong{font-size:1.5rem}
.print-report{display:none}
@media(max-width:950px){.hero{grid-template-columns:1fr}.ring-wrap{margin:auto}.metrics-grid{grid-template-columns:1fr 1fr}.two-one,.equal{grid-template-columns:1fr}.badges-grid{grid-template-columns:repeat(2,1fr)}.year-journey{grid-template-columns:repeat(19,1fr)}.report-panel{flex-direction:column}.report-actions{min-width:0;width:100%}}
@media(max-width:620px){.site-header{position:static}.header-inner{flex-direction:column;align-items:flex-start}.site-logo{width:220px;height:auto}.header-actions{justify-content:flex-start}.app-shell{width:calc(100% - 18px);margin-top:10px}.student-row,.metrics-grid,.scenario-grid,.badges-grid,.report-actions,.day-grid{grid-template-columns:1fr}.year-journey{grid-template-columns:repeat(10,1fr)}.section-heading,.journey-summary{align-items:flex-start;flex-direction:column}.ring-wrap{width:180px}}
@media print{
  body{background:#fff}.site-header,.app-shell,dialog{display:none!important}.print-report{display:block!important;padding:12mm;font-family:Arial,sans-serif;color:#122}
  .print-head{display:flex;align-items:center;justify-content:space-between;border-bottom:4px solid #0b873c;padding-bottom:8mm}.print-head img{width:55mm}.print-title{text-align:right}.print-title h1{margin:0;color:#082d62}
  .print-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5mm;margin:8mm 0}.print-stat{border:1px solid #bcc8d2;padding:5mm}.print-stat span{display:block;font-size:9pt;color:#566}.print-stat strong{font-size:18pt}
  .print-section{margin-top:8mm}.print-table{width:100%;border-collapse:collapse}.print-table th,.print-table td{border:1px solid #bcc8d2;padding:3mm;text-align:left}.print-table th{background:#eef4f8}.print-badges{display:flex;gap:4mm;flex-wrap:wrap}.print-badge{border:1px solid #a8c9b2;padding:3mm 4mm;border-radius:4mm}
  .print-footer{margin-top:12mm;border-top:2px solid #082d62;padding-top:4mm;font-size:9pt;color:#566}
}