@import url('/modules/admin.css');
@import url('/modules/support.css');
@import url('/modules/billing.css');
@import url('/modules/search.css');
@import url('/modules/pathways.css');
@import url('/modules/community.css');
@import url('/modules/learning.css');
@import url('/modules/library.css');
@import url('/modules/assistant.css');
:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#183e37;background:#f6f7f2;font-synthesis:none;--green:#126750;--muted:#667c74;--border:#dce5dd;--mint:#d9f1df}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{ -webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:var(--green)}button{border:1px solid var(--border);background:white;color:#234a40;padding:11px 17px;border-radius:11px;font-weight:650}button:hover{background:#edf5ee}button.primary,.primary{background:var(--green);color:white;border-color:var(--green)}button:disabled{opacity:.55;cursor:wait}button.danger{color:#a2392c}input,select{width:100%;padding:12px;border:1px solid #becfc4;background:white;border-radius:9px;color:#183e37}label{display:grid;gap:7px;font-size:.88rem;font-weight:600}form{display:grid;gap:17px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.9rem,3vw,2.8rem);font-weight:650;letter-spacing:-1.3px;line-height:1.15}h2{font-size:1.2rem;letter-spacing:-.35px}h3{font-size:1rem}p{line-height:1.65}small,.muted{color:var(--muted)}.shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:34px 23px;background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;gap:30px}.brand{display:flex;align-items:center;gap:11px;font-size:1.14rem;font-weight:750;letter-spacing:-.5px}.brand svg{width:39px;height:39px}.brand small{display:block;font-size:.66rem;letter-spacing:2px;font-weight:500;text-transform:uppercase;margin-top:3px}nav{display:grid;gap:8px}nav a{text-decoration:none;padding:12px 14px;border-radius:10px;color:#60776c;font-size:.91rem;display:flex;gap:12px}nav a.active{background:#e9f5ec;color:#176449;font-weight:700}.sidebar footer{margin-top:auto;font-size:.76rem;line-height:1.7;color:var(--muted)}.workspace{min-width:0;padding:0 44px 45px}.topbar{min-height:89px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:34px}.topbar .identity{display:flex;gap:12px;align-items:center}.avatar{width:37px;height:37px;background:#deebe1;border-radius:50%;display:grid;place-items:center;font-weight:700}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:.67rem;font-weight:750;color:#678578;margin-bottom:14px}.hero{background:#e4efe3;border:1px solid #d8e6d6;border-radius:22px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:35px 37px;margin-bottom:25px;overflow:hidden}.hero p{max-width:530px;color:#567064;font-size:.94rem}.hero svg{width:180px;flex-shrink:0}.grid{display:grid;gap:20px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:25px}.card{background:white;border:1px solid var(--border);border-radius:17px;padding:23px;min-width:0}.stat strong{display:block;font-size:1.9rem;letter-spacing:-1px;margin:10px 0 5px}.stat span{font-size:.81rem;color:var(--muted)}.columns{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(260px,1fr);gap:23px}.subjects{grid-template-columns:repeat(2,minmax(0,1fr))}.subject-mark{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:#ebf4e8;margin-bottom:18px;color:#287357;font-size:1.2rem}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 18px}.section-heading h2{margin:0}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:18px}.progress{height:7px;background:#edf1e9;border-radius:9px;overflow:hidden;margin:15px 0}.progress i{height:100%;background:#65a880;display:block}.bars{height:125px;display:flex;align-items:flex-end;justify-content:space-around;gap:10px;margin-top:23px}.bar{flex:1;text-align:center;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px;font-size:.66rem;color:var(--muted)}.bar i{display:block;background:#72aa89;border-radius:5px 5px 0 0;width:65%;min-height:2px}.bar small{font-size:.65rem}.empty{padding:25px 15px;text-align:center;color:var(--muted);line-height:1.7}.filters{display:flex;flex-wrap:wrap;gap:15px;margin:22px 0}.filters label{min-width:150px;flex:1}.page-intro{max-width:700px;color:var(--muted)}.auth{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.auth-story{background:#e2eee1;padding:10vw 7vw;display:flex;flex-direction:column;justify-content:center}.auth-story h1{font-size:clamp(2.5rem,5vw,4.4rem);margin-top:45px}.auth-panel{padding:50px 8vw;display:flex;flex-direction:column;justify-content:center}.tabs{display:flex;gap:10px;margin:22px 0}.tabs button{flex:1}.tabs .selected{background:#e0eee1;border-color:#a7c6af}.error{background:#fff1ec;color:#963d29;border:1px solid #f0cabc;border-radius:10px;padding:14px;line-height:1.5}.success{background:#e7f4e9;padding:16px;border-radius:10px;color:#226247}.options{display:grid;gap:12px;margin:25px 0}.option{text-align:left;display:flex;align-items:center;gap:14px;font-weight:500;padding:16px;width:100%;line-height:1.5}.option b{border:1px solid #cfdbd2;border-radius:8px;padding:5px 9px;font-size:.8rem}.option.selected{border:2px solid #368461;background:#eef7ed;padding:15px}.option.correct{background:#e7f4e5;border-color:#7bb689}.option.wrong{background:#fff0eb;border-color:#d9a08f}.question{font-size:1.2rem;line-height:1.75;white-space:pre-wrap}.feedback{padding:20px;background:#eff6ed;border-radius:12px;margin:20px 0;line-height:1.7}.feedback.bad{background:#fff2ed}.navigator{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.navigator button{width:38px;padding:8px 0;font-size:.8rem}.navigator button.answered{background:#e4f0e1}.navigator button.current{outline:2px solid #1c7053;outline-offset:2px}.timer{font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:750}.save-state{font-size:.8rem;color:#537462;min-height:1.4em}.flashcard{min-height:260px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:20px;background:#eef5e9}.flashcard p{font-size:1.4rem;max-width:700px;margin:0;white-space:pre-wrap}.lesson-body{white-space:pre-wrap;line-height:1.95;font-size:1.02rem}.list-item{padding:15px 0;border-bottom:1px solid #e7ece6}.list-item:last-child{border:0}.pill{display:inline-block;font-size:.72rem;border-radius:20px;padding:5px 10px;background:#eef3ea;color:#52725d}.source a{overflow-wrap:anywhere}.source p{font-size:.9rem;margin-bottom:10px}#notice{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#173f35;color:white;box-shadow:0 8px 30px #163e3525;padding:14px 22px;border-radius:12px;z-index:10;max-width:90vw}#notice:empty{display:none}.skip{position:fixed;left:15px;top:-60px;z-index:99;background:white;padding:12px}.skip:focus{top:12px}:focus-visible{outline:3px solid #c27c32;outline-offset:4px}.loading{padding:70px;text-align:center}.mobile-menu{display:none}.result-grid{grid-template-columns:repeat(3,1fr)}.subtitle{font-size:.83rem}.inline-error{margin:14px 0}.lesson-card{display:flex;flex-direction:column;align-items:flex-start}.lesson-card button{margin-top:auto}.footer-note{font-size:.78rem;color:var(--muted);line-height:1.7;margin-top:25px} @media (min-width:1500px){.workspace{max-width:1450px;width:100%;margin:auto}}@media (max-width:1100px){.workspace{padding:0 25px 30px}.shell{grid-template-columns:205px minmax(0,1fr)}.sidebar{padding:28px 16px}.columns{grid-template-columns:1fr}.hero svg{width:135px}.stats{gap:12px}.stat{padding:17px}}@media (max-width:700px){.shell{display:block}.sidebar{position:static;height:auto;padding:16px 20px;border-right:0;border-bottom:1px solid var(--border);gap:14px}.sidebar footer{display:none}.sidebar .brand{justify-content:space-between}.mobile-menu{display:block;padding:8px 10px}nav{display:none;grid-template-columns:1fr 1fr}nav.open{display:grid}nav a{padding:10px;font-size:.83rem}.workspace{padding:0 18px 25px}.topbar{min-height:73px;margin-bottom:22px;font-size:.8rem}.hero{padding:25px;gap:0}.hero svg{display:none}.hero h1{font-size:2rem}.stats{grid-template-columns:repeat(2,1fr)}.subjects{grid-template-columns:1fr}.card{padding:19px}.auth{grid-template-columns:1fr}.auth-story{padding:30px 25px}.auth-story h1{font-size:2.3rem;margin:25px 0 15px}.auth-story p{margin:0}.auth-panel{padding:30px 25px}.result-grid{grid-template-columns:repeat(3,1fr);gap:8px}.result-grid .stat{padding:12px}.section-heading{align-items:flex-start}.question{font-size:1.05rem}.filters{gap:10px}.filters label{min-width:130px}.flashcard p{font-size:1.18rem}}@media (prefers-reduced-motion:no-preference){button,a{transition:background .15s,border-color .15s}.card{animation:appear .25s ease}@keyframes appear{from{opacity:.7;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}}

.option:disabled{opacity:1;cursor:default}.option:disabled:hover{background:inherit}.option.correct:disabled:hover{background:#e7f4e5}.option.wrong:disabled:hover{background:#fff0eb}

.nav-group{margin-bottom:12px}.nav-group>small{display:block;padding:5px 12px;color:#a9d1ad}.sidebar nav a{padding-block:6px}.sidebar nav{overflow-y:auto;max-height:calc(100vh - 200px)}.feature-links{margin-bottom:22px}.feature-links a{color:var(--petrol,#123e36);text-decoration:none}
@media (max-width:760px){.sidebar nav.open{max-height:65vh;overflow-y:auto}}

.nav-group>small{color:#597568;font-weight:700;letter-spacing:.04em}
.feature-area{margin:24px 0}.feature-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:12px}.feature-link{display:flex;flex-direction:column;gap:9px;padding:18px;transition:border-color .15s,transform .15s}.feature-link:hover{border-color:#6a9782;transform:translateY(-2px)}.feature-link strong{font-size:15px}.feature-link small{font-size:12px;color:#597568}.feature-icon{font-size:24px;color:#17644e}.feature-more{display:flex;gap:8px 18px;flex-wrap:wrap;padding:8px 2px;font-size:13px}.feature-more a{color:#4b6c5d;text-decoration:none}.feature-more a:hover{text-decoration:underline}
@media (max-width:600px){.feature-link{padding:14px 10px;gap:7px}.feature-link small{display:none}.feature-link strong{font-size:13px}.feature-more{gap:10px 16px}}
@media (prefers-reduced-motion:reduce){.feature-link{transition:none}.feature-link:hover{transform:none}}

.bank-picker{display:flex;align-items:center;gap:.6rem;font-size:.85rem}.bank-picker select{max-width:190px}@media (max-width:700px){.topbar{flex-wrap:wrap;gap:12px}.bank-picker{order:3;width:100%}}

.admin-login{max-width:560px;min-height:100vh;margin:auto;padding:32px 24px;gap:20px}.admin-login .brand{margin-bottom:24px}

/* Keep onboarding usable with a mobile keyboard and visible operation states. */
.auth-panel{min-width:0;scroll-margin-block:24px}
.auth-panel .error{overflow-wrap:anywhere}
.auth-panel [aria-busy="true"]{cursor:progress}
.settings-links a{display:block;padding-block:12px;min-height:44px}
@media (max-width:700px){.auth{min-height:100dvh}.auth-panel input{font-size:16px;scroll-margin-block:24px}.auth-panel .tabs{flex-wrap:wrap}.auth-panel .tabs button{min-height:44px}}

.google-signin{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--line,#dce5df)}
.google-signin-status{font-size:.9rem;line-height:1.5}
.google-signin-button{min-height:44px;max-width:100%;overflow:hidden}
.google-signin-button[inert]{opacity:.65;pointer-events:none}
.google-invite input{font-family:monospace;width:100%;box-sizing:border-box}
.google-signin [hidden]{display:none}

/* Shared UI refresh primitives. Keep module imports and existing hooks above. */
:root {
  --ui-radius: 14px;
  --ui-shadow: 0 3px 12px #183d3106;
  --ui-focus: #996018;
}
:where(form, fieldset, label, input, select, textarea) {
  min-width: 0;
  max-width: 100%;
}
:where(.grid, .columns, .row, .stack, .card, .form, .page-heading) > * {
  min-width: 0;
}
:where(h1, h2, h3, p, label, button, a, small, dd, .option, .option-card) {
  overflow-wrap: anywhere;
}
:where(button, .action, summary, .navigator button, .icon-button) {
  min-height: 44px;
  min-width: 44px;
  max-width: 100%;
  white-space: normal;
}
textarea {
  display: block;
  width: 100%;
  padding: 12px;
  font: inherit;
  color: var(--ink, #213b30);
  border: 1px solid var(--border);
  background: var(--surface, #fff);
  resize: vertical;
  line-height: 1.6;
}
input[type="radio"], input[type="checkbox"] {
  width: 20px;
  height: 20px;
  min-height: 20px;
  flex: 0 0 20px;
  margin: 0;
  padding: 0;
  accent-color: var(--forest, #183d31);
}
.page-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px 20px;
  margin-bottom: 24px;
}
.page-heading > :where(h1, h2, p, .eyebrow) { flex-basis: 100%; }
.page-heading h1 { margin: 0; font-size: 28px; line-height: 1.3; letter-spacing: -.035em; }
.page-heading h2 { margin: 0; }
.page-heading p { max-width: 72ch; margin: 0; color: var(--muted); }
.page-heading .eyebrow { margin: 0; }
.page-heading > div { min-width: 0; }
.empty-state {
  display: grid;
  justify-items: start;
  gap: 12px;
  padding: 24px;
  border: 1px dashed var(--border);
  border-radius: var(--ui-radius);
  background: var(--surface, #fff);
}
.empty-state :where(h2, h3, p) { margin: 0; }
.empty-state p { max-width: 65ch; color: var(--muted); }
.action {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 10px 16px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface, #fff);
  color: var(--ink, #213b30);
  font: inherit;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
  text-decoration: none;
  white-space: normal;
}
.action:hover { border-color: #8b9d88; background: var(--canvas, #f8f9f5); }
.action.primary { color: #fff; background: var(--forest, #183d31); border-color: var(--forest, #183d31); }
.action.primary:hover { background: #2c5943; }
.form { display: grid; gap: 12px; width: 100%; max-width: 760px; min-width: 0; }
.form-field { display: grid; gap: 6px; min-width: 0; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.form-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.form-hint, .form-status { color: var(--muted); font-size: 14px; line-height: 1.6; }
.form-status { min-height: 1.6em; }
:where(.form, .auth-panel) [aria-busy="true"] { cursor: progress; }
.option-group { display: grid; gap: 10px; margin: 0; padding: 0; border: 0; min-width: 0; }
.option-group legend { padding: 0; margin-bottom: 12px; font-size: 16px; font-weight: 700; }
.option-card {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  min-width: 0;
  min-height: 44px;
  width: 100%;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface, #fff);
  color: var(--ink, #213b30);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.65;
  white-space: normal;
  overflow-wrap: anywhere;
  cursor: pointer;
}
.option-card > :where(span, div) { min-width: 0; }
.option-card input { margin-top: 2px; }
.option-badge { display: grid; place-items: center; flex: 0 0 28px; min-height: 28px; border: 1px solid var(--border); border-radius: 7px; font-size: 14px; font-weight: 700; }
.option-card:hover { border-color: #92a58b; }
.option-card:has(input:checked), .option-card.selected {
  border-color: var(--forest, #183d31);
  background: #edf3e5;
  box-shadow: inset 3px 0 0 var(--forest, #183d31);
}
.option-card:focus-within { outline-width: 3px; outline-style: solid; outline-color: var(--ui-focus); outline-offset: 3px; }
.option-card:has(input:disabled) { cursor: default; color: var(--muted); }
/* Explicit hidden state also beats shared display:grid/flex utilities. */
[hidden] { display: none !important; }
