* { box-sizing: border-box }
.landing,.home { margin:0; background:#0f1115; color:#e9e5db; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
.micro,.enter,.lesson-details,.key,.activity-foot,.months,.weekdays,#session-label { font-family:ui-monospace,SFMono-Regular,Menlo,monospace }
.micro { color:#a8b6c4; font-size:10px; font-weight:500; letter-spacing:.13em; text-transform:uppercase; line-height:1.65 }
.landing { position:relative; isolation:isolate; min-height:100svh; background:radial-gradient(ellipse at 20% 80%,#17202b,transparent 54%),#0f1115 }
.glyph-field { position:absolute; inset:0; overflow:hidden; opacity:.95; mask-image:linear-gradient(163deg,transparent 1%,#0009 17%,#000 28%,#0003 42%,#0001 49%,#0004 61%,#000 76%,#0004 91%,transparent) }
.glyph-field::before { content:""; position:absolute; inset:0; background:url('/glyphs.svg'); opacity:.24 }
#glitch { position:absolute; inset:0 }
.entry-frame { pointer-events:none; position:relative; min-height:100svh; padding:0 clamp(18px,4.5vw,80px); display:grid; grid-template-rows:auto 1fr }
.entry-header { display:flex; justify-content:space-between; align-items:center; min-height:76px; border-bottom:1px solid #8997aa38; gap:18px }
.hero { position:relative; display:grid; place-items:center; padding:70px 0 }
.hero-center { width:min(100%,920px); text-align:center; padding:clamp(35px,5vw,75px) 0; background:radial-gradient(ellipse,#0f1115bf 8%,transparent 70%) }
.hero h1 { margin:0 auto clamp(30px,4vw,60px); color:#e9e5db; font:300 clamp(52px,11vw,152px)/1 "Montserrat",sans-serif; letter-spacing:.20em; text-indent:.20em }
.enter { display:inline-flex; align-items:center; gap:32px; padding:12px 20px; background:#e9e5db; color:#171b20; text-decoration:none; font-size:13px; font-weight:600; letter-spacing:.025em; border:1px solid #e9e5db; min-height:44px; pointer-events:auto; transition:background .16s,transform .16s }
.enter:hover { background:#fffdf5; transform:translateY(-1px) }
.enter:focus-visible { outline:2px solid #bfcfe2; outline-offset:5px }
.home { min-height:100svh; background:linear-gradient(145deg,#171c22 0%,#0f1115 50%); line-height:1.45 }
.home-head { height:70px; display:flex; justify-content:space-between; align-items:center; padding:0 clamp(18px,5vw,80px); border-bottom:1px solid #343b43 }
.home-head img { display:block; height:auto; width:133px }
.home-head nav { display:flex; align-items:center; gap:24px; height:100% }
.home-head nav>* { display:grid; place-items:center; height:100%; margin:0; padding:0; background:none; color:#aab5c1; border:0; font-size:13px; font-weight:500; text-decoration:none }
.home-head nav [aria-current] { border-bottom:2px solid #a6b7c7; color:#f1f0e8 }
.home-main { width:min(1120px,100%); padding:clamp(32px,5vw,70px) clamp(18px,4vw,50px) 56px; margin:auto }
.home-title { display:flex; align-items:end; justify-content:space-between; gap:16px; margin-bottom:30px }
.home-title h1 { margin:8px 0 0; font-size:clamp(38px,5vw,60px); line-height:1.02 }
#session-label,.lesson-details,.activity-head p,.activity-foot { color:#acb8c4; font-size:12px }
#session-label { overflow-wrap:anywhere; text-align:right }
.overview-grid { display:grid; grid-template-columns:minmax(0,2.15fr) minmax(210px,1fr); gap:16px }
.continue-card,.goal-card,.activity { border:1px solid #39414b; border-radius:4px; padding:clamp(20px,3vw,34px) }
.continue-card { background:linear-gradient(120deg,#e9e5db,#dadbd5); color:#20272f; display:flex; flex-direction:column; align-items:flex-start; position:relative; overflow:hidden }
.continue-card::before { position:absolute; content:""; width:60%; height:100%; right:-10%; top:0; pointer-events:none; background:repeating-linear-gradient(128deg,transparent 0 20px,#3544570e 20px 21px); mask-image:linear-gradient(90deg,transparent,#000) }
.continue-card>* { position:relative }
.continue-card .micro,.continue-card .lesson-details { color:#4c5b69 }
.continue-card h2 { font-size:clamp(29px,3.6vw,46px); max-width:20ch; margin:16px 0 10px }
.continue-card p { margin-bottom:17px; max-width:49ch; font-size:15px }
.continue-card .enter { background:#25313b; color:#f0ede4; border:0; margin-top:20px }
.goal-card { display:flex; flex-direction:column; justify-content:center; background:#1b2027 }
.streak-number { margin:8px 0 0; color:#acb9c6 }
.streak-number strong { font:400 clamp(58px,6vw,84px)/1.1 Georgia,serif; color:#e9e5db }
.goal-divider { height:1px; width:100%; background:#3e454e; margin:20px 0 }
#goal { margin:6px 0 0; font-size:15px }
.activity { background:#181c22; margin-top:16px }
.activity-head,.activity-foot { display:flex; align-items:center; justify-content:space-between; gap:15px }
.activity-head h2 { margin:4px 0 0; font-size:30px }
.activity-head p { margin:0; text-align:right }
.home-head nav .nav-divider { color:#73808b; font-weight:300 }
.months { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px clamp(16px,4vw,48px); margin:24px 0 }
.months h3 { margin:0 0 8px; line-height:1.3; font-family:inherit; font-size:13px; font-weight:500 }
.cells { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px; text-align:center }
.cells small { color:#aab6c2; font-size:9px; padding-bottom:2px }
.cells span { font-size:10px; line-height:20px; font-variant-numeric:tabular-nums; color:#d1d8df }
.cells span,.key b { background:#323b46; border-radius:3px }
.cells .one,.key b:nth-of-type(2) { background:#869eb6; color:#101418 }
.cells .two,.key b:nth-of-type(3) { background:#dbdfdc; color:#101418 }
.cells .many,.key b:nth-of-type(4) { background:#b56f60; color:#101418 }
.cells .today { outline:1px solid #e9e5db; outline-offset:1px }
.cells .future { background:transparent; color:#77838e }
@media(max-width:760px) { .months { grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 14px } }
@media(max-width:360px) { .months { grid-template-columns:1fr } }
.key { display:flex; gap:5px; align-items:center; font-size:10px; white-space:nowrap }
.key b { width:10px; height:10px; margin-left:7px }
#activity-list { margin-top:14px; color:#aebac6; font-size:12px }
#activity-list summary { cursor:pointer }
@media(max-width:650px) {
 .entry-header { min-height:62px }
 .home-head nav { gap:14px }
 .home-head img { width:102px }
 .home-title { align-items:start; flex-direction:column; gap:9px }
 .overview-grid { grid-template-columns:1fr }
 .goal-card { display:grid; grid-template-columns:1fr 1.2fr; align-items:center; gap:10px 18px }
 .goal-card .micro:first-child { grid-area:1 / 1 }
 .goal-card .micro:nth-last-child(2) { grid-area:1 / 2 }
 .goal-card .streak-number { grid-area:2 / 1; margin:0 }
 .goal-divider { display:none }
 #goal { grid-area:2 / 2; margin:0 }
 .streak-number strong { font-size:44px }
 .activity-head p { max-width:12ch }
}
.entry-mark { display:block; width:43px; height:auto }
.landing .enter { border-radius:8px; color:#e9e5db; background:#181c22ed; border:1px solid #555f6b }
.landing .enter:hover { background:#2a3038 }
.course-meter,.curriculum { margin-top:16px; padding:clamp(20px,3vw,34px); background:#181c22; border:1px solid #39414b; border-radius:4px }
.course-meter div { display:flex; justify-content:space-between; align-items:baseline }
.course-meter h2,.curriculum h2 { margin:0; font-size:30px }
.course-meter strong { color:#ced9e3; font-variant-numeric:tabular-nums }
.course-meter p,.curr-count,.curr-topic small { color:#aab6c2; font-size:12px }
.course-meter p { margin:0 }
#course-progress { display:block; width:100%; height:7px; margin:16px 0 9px; appearance:none; background:#333c47; border:0; border-radius:5px; overflow:hidden }
#course-progress::-webkit-progress-bar { background:#333c47 }
#course-progress::-webkit-progress-value { background:#9eafbf }
#course-progress::-moz-progress-bar { background:#9eafbf }
@media (prefers-reduced-motion: no-preference) {
  html:has(body.home) { scroll-behavior:smooth }
}
.curriculum { scroll-margin-top:20px }
.curriculum h2 { margin-bottom:16px }
.curr-level,.curr-topic { border-top:1px solid #39414b }
.curriculum summary { display:flex; align-items:center; gap:14px; padding:17px 0; cursor:pointer; list-style:none }
.curriculum summary::-webkit-details-marker { display:none }
.curriculum summary::after { content:'+'; color:#aab6c2 }
.curriculum details[open]>summary::after { content:'−' }
.curriculum summary:hover { color:white }
.curriculum summary strong { font-weight:500 }
.curriculum summary .micro { white-space:nowrap }
.curr-count,.curr-topic small { margin-left:auto; white-space:nowrap }
.curr-topic { margin-left:clamp(8px,3vw,34px) }
.curr-topic summary { font-size:14px }
.curr-topic ol { margin:0 0 18px; color:#a4b0bb }
.curr-topic li { padding:5px }
.curr-topic a { color:#e1e8ed; text-underline-offset:3px }
@media(max-width:600px) { .curr-level>summary { display:grid; grid-template-columns:1fr auto; gap:4px 12px } .curr-level>summary strong { grid-column:1 } .curr-level>summary::after { grid-column:2; grid-row:2 } .curr-count { grid-column:2; grid-row:1 } .curr-topic summary { gap:7px } }

/* Normal Curve entrance: the saved crest bridges the two real documents. */
.curve-surface { position:fixed; inset:0; width:100%; height:100%; z-index:100; pointer-events:none }
html[data-curve-poster]::before { content:""; position:fixed; inset:0; z-index:99; pointer-events:none; background:#0f1115 var(--curve-poster) center / 100% 100% no-repeat; animation:curve-poster-release .3s 2.5s forwards }
@keyframes curve-poster-release { to { opacity:0 } }
@media (prefers-reduced-motion: no-preference) {
  .curve-leaving .hero h1 { animation:curve-word-release .45s cubic-bezier(.4,0,.3,1) both }
  .curve-leaving .hero .enter { animation:curve-button-release .25s ease-out both }
  .curve-leaving .entry-header { animation:curve-header-release .4s ease-out both }
}
@keyframes curve-word-release { to { opacity:0; transform:translateY(-12px) scale(.98) } }
@keyframes curve-button-release { to { opacity:0; transform:scale(.94) } }
@keyframes curve-header-release { to { opacity:0 } }
@media (prefers-reduced-motion: reduce) {
  html[data-curve-poster]::before,.curve-surface { display:none }
}
/* Keep native scrolling without a visible track around the study workspace. */
html:has(body.home) { scrollbar-width:none }
html:has(body.home)::-webkit-scrollbar { display:none }
