.pupil-portal{background:linear-gradient(180deg,#eef6ff 0,#f7f9fc 280px,#f4f6f8 100%);min-height:100vh}.pupil-shell{max-width:1040px;padding-top:18px;padding-bottom:56px}.pupil-portal h1,.pupil-portal h2,.pupil-portal h3{color:#17324a}.pupil-portal h1{font-size:clamp(2rem,5vw,3.25rem);line-height:1.04;margin:.1em 0 .25em}.pupil-portal h2{margin:.2em 0 .45em}.pupil-portal h3{margin:.2em 0 .5em}.pupil-portal p{line-height:1.55}.eyebrow{text-transform:uppercase;letter-spacing:.09em;font-size:.76rem;font-weight:800;color:#4f6f8e;margin:0 0 6px}.small{font-size:.9rem}.inline-form{display:inline;margin:0}.portal-primary,.portal-secondary,.portal-quiet,.button-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;border-radius:12px;min-height:44px;padding:11px 16px;font-weight:800}.portal-primary{background:#145da0;color:#fff;box-shadow:0 5px 14px rgba(20,93,160,.18)}.portal-primary:hover{background:#0f4e88}.portal-secondary{background:#e8f2fb;color:#174a7e;border:1px solid #c8deef}.portal-secondary:hover{background:#dcecf9}.portal-quiet{background:transparent;color:#405a72;border:1px solid #cad5df;padding:8px 12px;min-height:38px}.portal-wide{width:100%}.portal-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.portal-topbar-left,.portal-user{display:flex;align-items:center;gap:12px}.portal-user{font-size:.95rem}.portal-wordmark,.portal-back{display:inline-flex;align-items:center;gap:9px;text-decoration:none;color:#17324a;font-weight:800}.portal-back{color:#3f6282}.portal-brand-mark{width:52px;height:52px;border-radius:17px;display:inline-grid;place-items:center;background:linear-gradient(145deg,#145da0,#2d80c9);color:#fff;font-weight:900;font-size:1.45rem;box-shadow:0 7px 18px rgba(20,93,160,.22)}.portal-brand-mark.mini{width:34px;height:34px;border-radius:11px;font-size:1rem}.portal-login{max-width:470px;margin:7vh auto}.portal-brand{display:flex;align-items:center;gap:16px;margin-bottom:22px}.portal-brand h1{font-size:2.5rem}.portal-login-card{padding:26px}.section-heading,.subject-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:30px 0 12px}.section-heading h2,.subject-heading h2{margin:0}.count-pill{display:inline-flex;align-items:center;border-radius:999px;background:#e6edf4;color:#47627a;padding:5px 10px;font-weight:750;font-size:.84rem;white-space:nowrap}.practice-success{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;background:#edf9f0;border:1px solid #b9dfc2;border-radius:16px;padding:18px 20px;margin:0 0 18px}.practice-success h2{margin:2px 0 4px;font-size:1.25rem}.practice-success p{margin:0}.success-check{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#2c934b;color:#fff;font-size:1.4rem;font-weight:900;flex:0 0 auto}.success-check.small{width:32px;height:32px;font-size:1rem}.reward-panel{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:18px;align-items:center;padding:22px;border-radius:18px;border-color:#cfdcea;background:linear-gradient(135deg,#fff 0,#f7fbff 100%)}.reward-balance{display:flex;align-items:center;gap:12px}.coin-icon{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#ffd45a;color:#bd7c00;box-shadow:inset 0 0 0 5px #f4b92e;font-size:1.4rem}.reward-number{font-size:2rem;font-weight:900;color:#17324a}.reward-label{font-weight:800}.reward-balance p,.daily-boost p{margin:3px 0}.daily-boost{display:flex;align-items:center;gap:12px}.boost-ring{width:92px;height:92px;border-radius:50%;display:grid;place-content:center;text-align:center;border:7px solid #6bb5ed;background:#fff;box-shadow:inset 0 0 0 2px #dceffa}.boost-ring strong{font-size:1.25rem}.boost-ring span{font-size:.68rem;color:#5e7082;font-weight:800}.reward-slots{display:grid;grid-template-columns:1fr 1fr;gap:8px}.reward-slot{border:1px solid #d7e0e8;border-radius:14px;padding:10px;background:#fff;display:grid;grid-template-columns:auto 1fr;column-gap:7px;align-items:center}.reward-slot>span{grid-row:1/3;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#edf1f5;color:#596b7a;font-weight:900}.reward-slot strong{font-size:.93rem}.reward-slot small{font-size:.7rem;color:#6d7b87}.reward-slot-done{background:#edf9f0;border-color:#b9dfc2}.reward-slot-done>span{background:#2c934b;color:#fff}.reward-slot-next{border-color:#82bfea;background:#f0f8fe;box-shadow:0 0 0 2px rgba(65,154,219,.08)}.reward-slot-next>span{background:#2478b7;color:#fff}.reward-message{grid-column:1/-1;background:#eef6fd;border-radius:10px;padding:10px 12px;margin:0;color:#315b7d;font-weight:650}.homework-boost-note{grid-column:1/-1;margin:0;border-top:1px solid #e1e8ee;padding-top:12px}.reward-panel-compact{grid-template-columns:1fr 1fr 1fr;margin:16px 0 24px}.reward-panel-compact .homework-boost-note{display:none}.practice-hero{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center;padding:26px;background:linear-gradient(135deg,#153d68,#1b6aa8);border:0;color:#fff;box-shadow:0 10px 28px rgba(16,65,105,.19)}.practice-hero h2,.practice-hero .eyebrow{color:#fff}.practice-hero .muted{color:#d8e8f5}.practice-hero-copy p{margin:6px 0}.practice-hero-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}.practice-hero .portal-secondary{background:#fff;color:#174a7e;border-color:#fff}.practice-page-heading{margin:18px 0 8px}.resume-card{display:flex;align-items:center;justify-content:space-between;gap:20px;border-left:5px solid #2b80bd;padding:20px 22px}.resume-card p{margin:4px 0}.resume-actions{flex:0 0 auto}.status-chip{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;background:#edf1f5;color:#536879;font-size:.74rem;font-weight:800;letter-spacing:.02em}.status-progress{background:#e5f2fc;color:#1b659c}.status-recommended{background:#fff2bf;color:#7a5b00}.subject-nav{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0 8px}.subject-nav a{display:inline-flex;text-decoration:none;border-radius:999px;padding:8px 13px;background:#fff;border:1px solid #cbd8e3;color:#315d7f;font-weight:800}.area-heading{font-size:1rem;color:#5e7285;margin:16px 0 9px}.topic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.topic-card{display:flex;flex-direction:column;justify-content:space-between;min-height:190px;padding:18px;border:1px solid #d8e2eb;background:#fff;border-radius:16px;text-decoration:none;color:#263746;box-shadow:0 2px 8px rgba(0,0,0,.035);transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.topic-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(19,65,102,.09);border-color:#9bc3df}.topic-card h3{font-size:1.15rem}.topic-card p{font-size:.93rem;color:#536676}.topic-kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;font-weight:850;color:#4a78a0}.topic-card-footer{display:flex;justify-content:space-between;align-items:center;color:#49708f;font-size:.84rem;font-weight:750}.topic-arrow{font-size:1.3rem}.back-link{color:#315f82;text-decoration:none;font-weight:800}.chosen-topic{background:#eaf5fd;border:1px solid #c7e0f1;border-radius:17px;padding:22px;margin:12px 0 24px}.chosen-topic h2{font-size:1.55rem}.activity-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.activity-card{position:relative;background:#fff;border:1px solid #d8e2eb;border-radius:18px;padding:20px;box-shadow:0 2px 8px rgba(0,0,0,.035)}.activity-recommended{border-color:#e2bd45;box-shadow:0 0 0 2px rgba(232,194,69,.12),0 5px 14px rgba(0,0,0,.045)}.activity-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.app-monogram{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;background:#e7f2fb;color:#195f94;font-weight:900;font-size:1.1rem}.activity-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.activity-app{color:#4f718c;font-weight:750}.practice-history{margin-top:36px}.practice-history-list{background:#fff;border:1px solid #d9e2e9;border-radius:16px;overflow:hidden}.practice-history-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid #edf1f4}.practice-history-item:last-child{border-bottom:0}.practice-history-item p{margin:2px 0}.history-reward{font-weight:850;color:#2c7741;white-space:nowrap}.homework-card{padding:20px}.homework-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.homework-card-head h3{margin-top:8px}.due-date{font-size:.82rem;color:#6a7783;background:#f1f4f6;border-radius:999px;padding:5px 9px;white-space:nowrap}.homework-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}.empty-state{display:flex;align-items:center;gap:14px}.empty-icon{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:#e9f4fc;color:#236eaa;font-size:1.25rem;font-weight:900}.history{margin-top:28px}.history>summary{cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:15px 4px;color:#36556d}.history-body{padding-top:1px}.notice{margin:14px 0}.pupil-portal button{border-radius:12px}.pupil-portal .card{border-radius:16px}.pupil-portal a:focus-visible,.pupil-portal button:focus-visible,.pupil-portal input:focus-visible{outline:3px solid #f0b429;outline-offset:3px}
@media(max-width:760px){.pupil-shell{padding:14px 14px 42px}.portal-topbar{align-items:flex-start}.portal-user{flex-direction:column;align-items:flex-end;gap:5px}.reward-panel,.reward-panel-compact{grid-template-columns:1fr 1fr}.reward-balance{grid-column:1/-1}.reward-message,.homework-boost-note{grid-column:1/-1}.practice-hero{grid-template-columns:1fr}.practice-hero-actions{justify-content:flex-start}.topic-grid,.activity-grid{grid-template-columns:1fr}.practice-success{grid-template-columns:auto 1fr}.practice-success>a{grid-column:1/-1}.homework-card-head{flex-direction:column}.resume-card{align-items:flex-start;flex-direction:column}.resume-actions,.resume-actions form,.resume-actions button{width:100%}}
@media(max-width:500px){.portal-user>span{display:none}.portal-wordmark>span:last-child{font-size:.9rem}.reward-panel,.reward-panel-compact{grid-template-columns:1fr}.reward-balance,.daily-boost,.reward-slots,.reward-message,.homework-boost-note{grid-column:1}.boost-ring{width:78px;height:78px}.practice-success{grid-template-columns:1fr}.success-check{margin-bottom:2px}.subject-nav{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.subject-nav a{white-space:nowrap}.homework-actions form,.homework-actions button{width:100%}}
@media(prefers-reduced-motion:reduce){.topic-card{transition:none}}
/* 1.9.6 guided practice */
.subject-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}.subject-card{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:20px;border:1px solid #d7e2eb;border-radius:18px;background:#fff;color:#263746;text-decoration:none;box-shadow:0 2px 8px rgba(0,0,0,.035);transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.subject-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(19,65,102,.09);border-color:#9bc3df}.subject-card h2{margin:3px 0 6px;font-size:1.35rem}.subject-card p{margin:0;color:#596d7d}.subject-card-meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.subject-card-arrow{font-size:1.6rem;color:#40779f}.status-core{background:#e9f5ff;color:#155f96}.capacity-badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;background:#eef7ef;color:#2b7041;padding:5px 9px;font-size:.76rem;font-weight:800}.capacity-badge.capacity-finite{background:#f3f1ff;color:#5d4b8a}.capacity-badge.capacity-low{background:#fff2e6;color:#98591c}.capacity-badge.capacity-unavailable{background:#fceaea;color:#9b3737}.question-count-choice{display:grid;gap:6px;margin:14px 0}.question-count-choice label{font-weight:800;color:#36536a}.question-count-choice select{width:100%;min-height:44px;border:1px solid #bac9d5;border-radius:11px;background:#fff;padding:9px 11px;font:inherit}.activity-card.is-unavailable{opacity:.67;background:#f8f9fa}.activity-card.is-unavailable .portal-primary{pointer-events:none;background:#9ba9b4;box-shadow:none}.supply-note{font-size:.86rem;color:#65798a;margin:5px 0 0}.lesson-card{border-left:5px solid #7a62bb;background:linear-gradient(135deg,#fff 0,#faf8ff 100%)}.status-lesson{background:#efeafd;color:#654aa5}.reward-off-note{display:inline-flex;align-items:center;border-radius:999px;background:#f0f2f4;color:#64717c;padding:4px 9px;font-size:.74rem;font-weight:800}
@media(max-width:760px){.subject-grid{grid-template-columns:1fr}}
.subject-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.subject-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:#e7f2fb;color:#195f94;font-size:1.25rem;font-weight:900}.subject-card h3{margin:8px 0 6px}.subject-supply{font-size:.84rem;color:#55748d}.subject-arrow{font-weight:850;color:#336f9b;white-space:nowrap}.activity-unavailable{opacity:.68;background:#f8f9fa}.activity-unavailable .portal-primary{pointer-events:none;background:#9ba9b4;box-shadow:none}.capacity-bad{background:#fceaea;color:#9b3737}.capacity-good{background:#eef7ef;color:#2b7041}.assignment-purpose-help{align-self:end;padding:10px 0}.assignment-purpose-help p{margin:3px 0 0}

/* 1.9.8 safe practice exit + wallet */
.portal-danger{background:#fff1f0;color:#a33a32;border:1px solid #e6aaa4;border-radius:12px;padding:10px 14px;font:inherit;font-weight:850;cursor:pointer}.portal-danger:hover{background:#fde4e2}.practice-recovery{border-left:5px solid #d58a2c;background:linear-gradient(135deg,#fffaf0,#fff);margin:14px 0}.practice-recovery h2{margin:4px 0 7px}.resume-card-warning{border-left-color:#d58a2c;background:#fffaf4}.practice-hero-actions .portal-danger{background:rgba(255,255,255,.94);color:#943930;border-color:#fff}.portal-wallet-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border-radius:999px;padding:7px 12px;background:#fff4c9;color:#725800;font-weight:900;border:1px solid #ead47c}.wallet-heading{margin-bottom:16px}.wallet-summary{display:grid;grid-template-columns:1.15fr 1fr;gap:24px;align-items:center;padding:24px;background:linear-gradient(135deg,#fff9dc,#fff);border-color:#ecd77f}.wallet-balance-large{display:flex;align-items:center;gap:16px}.wallet-balance-large strong{font-size:2.7rem;line-height:1;color:#5e4a00}.wallet-balance-large span:not(.wallet-coin){font-weight:800;color:#765f0f}.wallet-coin{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#f0bd23;color:#fff3a1;font-size:2rem;box-shadow:inset 0 0 0 5px #ffd95f,0 5px 12px rgba(126,96,0,.18)}.wallet-boosts{display:grid;grid-template-columns:1fr 1fr;gap:10px}.wallet-boosts>div{display:grid;gap:3px;padding:14px;border-radius:14px;background:#fff;border:1px solid #e7ddad}.wallet-boosts span{font-size:.78rem;font-weight:850;color:#6e641f}.wallet-boosts strong{font-size:1.4rem;color:#315f82}.wallet-boosts small{color:#6f7b83}.wallet-today{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:14px}.wallet-today h2{margin:3px 0}.wallet-history{margin-top:28px}.wallet-ledger{padding:0;overflow:hidden}.wallet-ledger-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:15px 18px;border-bottom:1px solid #edf1f4}.wallet-ledger-row:last-child{border-bottom:0}.wallet-ledger-row p{margin:3px 0 0}.wallet-ledger-amount{font-weight:950;font-variant-numeric:tabular-nums}.wallet-ledger-amount.credit{color:#24713c}.wallet-ledger-amount.debit{color:#9a3d36}.wallet-ledger-balance{font-size:.78rem;color:#71808b;white-space:nowrap}
@media(max-width:760px){.wallet-summary{grid-template-columns:1fr}.wallet-today{align-items:flex-start;flex-direction:column}.wallet-ledger-row{grid-template-columns:1fr auto}.wallet-ledger-balance{grid-column:1/-1}.portal-user{gap:7px}.portal-wallet-link{padding:6px 10px}}
@media(max-width:500px){.wallet-boosts{grid-template-columns:1fr}.wallet-balance-large strong{font-size:2.2rem}.resume-actions form,.resume-actions button{width:100%}}

/* 1.9.9 shop + inventory */
.shop-heading{margin-bottom:1rem}.shop-balance{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:1.25rem}.shop-balance h2{font-size:2rem;margin:.15rem 0}.shop-balance-actions{display:flex;gap:.6rem;flex-wrap:wrap}.shop-grid,.inventory-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin:1rem 0 1.25rem}.shop-item,.inventory-item{display:flex;flex-direction:column;gap:.8rem;min-height:100%}.shop-item-owned{outline:2px solid color-mix(in srgb,currentColor 18%,transparent)}.shop-item-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:18px;background:rgba(255,255,255,.72);font-size:2rem;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}.shop-item-copy{flex:1}.shop-item-copy h2,.inventory-item h2{margin:.35rem 0}.shop-item-copy p,.inventory-item p{margin:.3rem 0}.shop-item-footer{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-top:auto}.shop-item-footer form{margin:0}.shop-policy{margin:.5rem 0 2rem}.inventory-item form{margin-top:auto}.inventory-item .portal-danger{width:100%}@media(max-width:720px){.shop-balance{align-items:flex-start;flex-direction:column}.shop-grid,.inventory-grid{grid-template-columns:1fr}.portal-user{gap:.4rem;flex-wrap:wrap}.portal-wallet-link{font-size:.9rem}}

/* 1.14.44: daily rewards total is prominent on the primary pupil dashboard. */
.reward-earned-today{margin:5px 0 0;font-size:1.13rem;color:#17324a;line-height:1.3}.reward-earned-today .today-total{font-size:1.25rem;font-weight:900;font-variant-numeric:tabular-nums}.reward-earned-breakdown{margin:3px 0 0;font-size:.9rem}
