:root{--ink:#171312;--paper:#f3ead8;--cream:#fff8e8;--red:#d82d27;--muted:#6e655c;--line:rgba(23,19,18,.18)}
*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}body{margin:0;min-height:100vh;background:linear-gradient(rgba(23,19,18,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(23,19,18,.035) 1px,transparent 1px),var(--paper);background-size:28px 28px}button,a,input,textarea{font:inherit}.student-header{height:74px;padding:0 clamp(18px,4vw,64px);display:flex;align-items:center;justify-content:space-between;background:var(--ink);color:var(--cream);border-bottom:4px solid var(--red)}.student-header>a:last-child{color:var(--cream);text-decoration:none;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.student-brand{display:flex;gap:13px;align-items:center;color:inherit;text-decoration:none}.student-brand>span{width:43px;height:43px;display:grid;place-items:center;background:var(--red);font:900 16px Georgia,serif;border:2px solid var(--cream);transform:rotate(-3deg)}.student-brand div{display:flex;flex-direction:column}.student-brand strong{font:900 13px/1.1 Arial;letter-spacing:.15em}.student-brand small{font:700 9px/1.5 Arial;letter-spacing:.11em;color:#cabfae}.portal-loading,.portal-error{min-height:calc(100vh - 74px);display:grid;place-content:center;text-align:center;padding:30px}.loader-seal,.error-seal{margin:auto;width:86px;height:86px;display:grid;place-items:center;border:3px solid var(--ink);background:var(--red);color:#fff;font:900 22px Georgia;transform:rotate(-4deg);box-shadow:8px 8px 0 var(--ink)}.portal-loading h1,.portal-error h1{font:900 clamp(34px,7vw,72px)/.95 Georgia,serif;max-width:760px;margin:30px 0 12px}.portal-error p{color:var(--muted)}.portal-error a{display:inline-block;margin-top:16px;padding:14px 18px;background:var(--ink);color:#fff;text-decoration:none;font-weight:800}.student-hero{padding:clamp(54px,8vw,110px) clamp(20px,7vw,110px);display:grid;grid-template-columns:minmax(0,1.5fr) minmax(250px,.5fr);gap:60px;align-items:center;border-bottom:1px solid var(--line)}.student-hero>div>p:first-child{font-size:11px;font-weight:900;letter-spacing:.2em;color:var(--red)}.student-hero h1{font:900 clamp(48px,8vw,112px)/.82 Georgia,serif;letter-spacing:-.05em;margin:20px 0}.student-hero h1 span{color:var(--red)}.hero-copy{max-width:700px;font:500 18px/1.55 Georgia;color:#49413a}.hero-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.hero-links a{padding:12px 14px;border:2px solid var(--ink);color:var(--ink);text-decoration:none;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;background:var(--cream)}.progress-dial{aspect-ratio:1;border-radius:50%;border:18px solid var(--ink);outline:5px solid var(--red);display:grid;place-content:center;text-align:center;background:var(--cream);box-shadow:14px 14px 0 rgba(23,19,18,.15)}.progress-dial strong{font:900 clamp(50px,7vw,90px)/1 Georgia}.progress-dial span{font-size:10px;font-weight:900;letter-spacing:.15em}.progress-dial small{margin-top:10px;color:var(--red);font-weight:800}.portal-summary{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line)}.portal-summary article{padding:26px clamp(18px,4vw,50px);border-right:1px solid var(--line)}.portal-summary small{display:block;font-size:9px;font-weight:900;letter-spacing:.18em;color:var(--muted);margin-bottom:8px}.portal-summary strong{font:900 20px Georgia}.course-section{padding:clamp(55px,8vw,105px) clamp(20px,7vw,110px)}.course-section>header{display:grid;grid-template-columns:1fr minmax(280px,.7fr);gap:50px;align-items:end;margin-bottom:44px}.course-section header small{color:var(--red);font-size:10px;font-weight:900;letter-spacing:.18em}.course-section h2{font:900 clamp(38px,5vw,70px)/.95 Georgia;margin:12px 0 0;max-width:800px}.course-section header p{font:500 16px/1.6 Georgia;color:var(--muted)}.module-list{display:grid;gap:18px}.module-card{border:2px solid var(--ink);background:var(--cream);box-shadow:7px 7px 0 var(--ink)}.module-card.locked{opacity:.58;box-shadow:none}.module-heading{padding:22px 24px;display:grid;grid-template-columns:90px 1fr auto;gap:22px;align-items:center;border-bottom:1px solid var(--line)}.module-week{font:900 12px Arial;letter-spacing:.1em;color:var(--red)}.module-heading h3{font:900 28px Georgia;margin:0}.module-heading p{margin:5px 0 0;color:var(--muted);font-family:Georgia}.module-state{padding:8px 11px;background:var(--ink);color:#fff;font-size:9px;font-weight:900;letter-spacing:.12em}.module-card.complete .module-state{background:var(--red)}.module-content{padding:25px;display:grid;grid-template-columns:1fr minmax(300px,.8fr);gap:35px}.task-list{margin:0;padding-left:20px}.task-list li{margin:0 0 14px;line-height:1.5}.module-form{display:grid;gap:13px}.module-form label{font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.module-form input[type=url],.module-form textarea{width:100%;margin-top:7px;padding:12px;border:1px solid var(--line);background:#fff;font:500 14px/1.4 Arial}.module-form textarea{min-height:90px;resize:vertical}.complete-check{display:flex;align-items:center;gap:10px}.complete-check input{width:20px;height:20px;accent-color:var(--red)}.module-form button{justify-self:start;padding:12px 17px;border:0;background:var(--red);color:#fff;font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}.module-form button:disabled{opacity:.5;cursor:wait}.unlock-copy{padding:22px 25px;color:var(--muted);font:600 15px Georgia}.certificate{padding:70px clamp(20px,7vw,110px) 100px;text-align:center}.certificate-inner{max-width:900px;margin:auto;padding:65px;border:14px double var(--ink);background:var(--cream);position:relative}.certificate-mark{position:absolute;top:24px;left:28px;font:900 18px Georgia;color:var(--red)}.certificate-inner small{font-size:11px;font-weight:900;letter-spacing:.2em}.certificate-inner h2{font:900 62px Georgia;margin:20px 0}.certificate-inner p{font:500 18px Georgia;color:var(--muted)}.certificate-inner>strong{display:block;font:900 48px Georgia;color:var(--red);margin:22px}.certificate-inner>b{font:900 24px Georgia}.certificate-inner time{display:block;margin-top:30px;font-size:12px;font-weight:900;letter-spacing:.12em}.certificate button{margin-top:24px;padding:14px 20px;border:0;background:var(--ink);color:#fff;font-weight:900;cursor:pointer}.student-toast{position:fixed;right:22px;bottom:22px;padding:14px 18px;background:var(--ink);color:#fff;font-weight:800;transform:translateY(140%);transition:.2s;z-index:9}.student-toast.show{transform:none}@media(max-width:850px){.student-hero,.course-section>header,.module-content{grid-template-columns:1fr}.progress-dial{max-width:330px}.portal-summary{grid-template-columns:1fr 1fr}.module-heading{grid-template-columns:70px 1fr}.module-state{grid-column:2}.certificate-inner{padding:45px 20px}.certificate-inner h2{font-size:42px}}@media(max-width:520px){.student-brand div{display:none}.student-hero{padding-top:55px}.portal-summary{grid-template-columns:1fr}.portal-summary article{border-right:0;border-bottom:1px solid var(--line)}.module-heading{grid-template-columns:1fr}.module-state{grid-column:auto;justify-self:start}.module-content{padding:20px}.certificate-inner>strong{font-size:34px}}@media print{body{background:#fff}.student-header,.student-hero,.portal-summary,.course-section,.certificate>button,.student-toast{display:none!important}.certificate{display:block!important;padding:0}.certificate-inner{box-shadow:none;max-width:none;min-height:90vh;display:grid;place-content:center}.certificate-mark{display:block}}

/* v1.2.2 — portal hidden-state and responsive repair */
[hidden] { display: none !important; }
html, body { max-width: 100%; overflow-x: hidden; }
:focus-visible { outline: 3px solid var(--red); outline-offset: 3px; }

.portal-loading,
.portal-error { min-height: calc(100dvh - 74px); }

.student-hero,
.course-section,
.certificate { max-width: 1500px; margin-inline: auto; }

@media (max-width: 850px) {
  .student-hero { gap: 36px; }
  .student-hero h1 { font-size: clamp(48px, 13vw, 82px); }
  .progress-dial { width: min(310px, 82vw); justify-self: start; }
  .module-card { box-shadow: 4px 4px 0 var(--ink); }
}

@media (max-width: 520px) {
  .student-header { height: 68px; }
  .student-header > a:last-child { font-size: 10px; }
  .student-hero { padding: 44px 18px; }
  .student-hero h1 { font-size: clamp(44px, 14vw, 62px); line-height: .9; }
  .hero-copy { font-size: 16px; }
  .progress-dial { width: min(270px, 78vw); border-width: 13px; outline-width: 4px; box-shadow: 7px 7px 0 rgba(23,19,18,.15); }
  .portal-summary { grid-template-columns: 1fr 1fr; }
  .portal-summary article { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
  .portal-summary article:nth-child(2n) { border-right: 0; }
  .course-section { padding: 54px 16px; }
  .course-section h2 { font-size: 42px; }
  .module-card { box-shadow: 3px 3px 0 var(--ink); }
  .module-heading { padding: 18px; }
  .module-heading h3 { font-size: 25px; }
  .module-content { padding: 18px; gap: 24px; }
  .certificate { padding-inline: 14px; }
  .certificate-inner { border-width: 9px; }
}

.student-toast {
  opacity: 0;
  visibility: hidden;
}
.student-toast.show {
  opacity: 1;
  visibility: visible;
}


/* v1.2.9 — student portal finish pass */
html { scrollbar-gutter: stable; }
body { min-width: 0; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
.student-header { gap: 18px; }
.student-brand { min-width: 0; }
.student-brand div { min-width: 0; }
.student-brand strong, .student-brand small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.student-hero > *, .course-section > header > *, .module-heading > *, .module-content > * { min-width: 0; }
.student-hero h1, .course-section h2, .certificate-inner h2 { text-wrap: balance; }
.hero-copy, .course-section header p, .module-heading p { text-wrap: pretty; }
.hero-links a { min-height: 44px; display: inline-flex; align-items: center; }
.progress-dial { width: min(100%, 330px); justify-self: center; }
.portal-summary article { min-width: 0; }
.portal-summary strong { overflow-wrap: anywhere; }
.module-heading h3, .module-heading p, .task-list, .module-form { min-width: 0; }
.module-form input[type=url], .module-form textarea { min-width: 0; }
.module-form button { min-height: 44px; }
.certificate-inner { overflow: hidden; }
.certificate-inner > strong, .certificate-inner > b { overflow-wrap: anywhere; }
.student-toast { max-width: min(420px, calc(100vw - 24px)); }

@media (max-width: 850px) {
  .course-section > header { gap: 26px; }
  .portal-summary article:nth-child(2) { border-right: 0; }
  .portal-summary article:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
}

@media (max-width: 520px) {
  .student-header { padding-inline: 12px; gap: 10px; }
  .student-header > a:last-child { white-space: nowrap; }
  .student-hero { gap: 30px; }
  .progress-dial { justify-self: center; }
  .hero-links { display: grid; grid-template-columns: 1fr; }
  .hero-links a { justify-content: center; text-align: center; }
  .portal-summary article:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .module-heading { gap: 10px; }
  .module-state { max-width: 100%; white-space: normal; line-height: 1.3; }
  .certificate-inner { padding: 48px 16px 38px; }
  .certificate-mark { top: 15px; left: 16px; }
  .certificate-inner h2 { font-size: clamp(34px, 11vw, 42px); }
  .certificate-inner > strong { margin-inline: 0; font-size: clamp(30px, 10vw, 38px); }
  .certificate-inner > b { font-size: 20px; }
  .student-toast { right: 12px; bottom: 12px; }
}
