:root { --canvas: #f3efe7; --surface: #fffcf5; --surface-2: #e9e1d4; --ink: #20272a; --ink-2: #4c585c; --muted: #6f7b7e; --line: rgba(32, 39, 42, 0.14); --line-strong: rgba(32, 39, 42, 0.26); --teal: #0c766f; --teal-soft: #d6efeb; --blue: #315b72; --blue-soft: #dce8ef; --coral: #bd5a3c; --coral-soft: #f2dcd2; --gold: #a77720; --gold-soft: #f0dfb8; --green: #557a4d; --green-soft: #deead8; --plum: #6d4b64; --shadow: 0 18px 44px rgba(54, 44, 32, 0.12); --radius: 8px; --z-header: 30; --z-file: 10; --ease-out: cubic-bezier(0.165, 0.84, 0.44, 1); --ease-move: cubic-bezier(0.77, 0, 0.175, 1); color-scheme: light; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; background: linear-gradient(90deg, rgba(32, 39, 42, 0.04) 1px, transparent 1px), linear-gradient(rgba(32, 39, 42, 0.03) 1px, transparent 1px), var(--canvas); background-size: 36px 36px; color: var(--ink); font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; line-height: 1.55; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } body::before { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(243, 239, 231, 0.1), rgba(243, 239, 231, 0.94) 42%), linear-gradient(124deg, rgba(12, 118, 111, 0.08), transparent 38%, rgba(189, 90, 60, 0.07) 72%, transparent); } button, input, select { font: inherit; } button, a { touch-action: manipulation; } button { border: 0; cursor: pointer; } button:focus-visible, a:focus-visible, pre:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; } h1, h2, h3, p { margin: 0; } h1, h2 { font-family: Georgia, "Times New Roman", serif; line-height: 1.04; text-wrap: balance; } h1 { max-width: 12ch; font-size: clamp(3.05rem, 5.9vw, 6.2rem); } h2 { max-width: 13ch; font-size: clamp(2.25rem, 4.7vw, 4.8rem); } h3 { line-height: 1.16; font-size: clamp(1.1rem, 1.6vw, 1.45rem); text-wrap: balance; } a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 4px; } video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: #11191c; } .skip-link { position: fixed; top: 12px; left: 12px; z-index: 60; transform: translateY(-140%); border-radius: 6px; background: var(--ink); color: var(--surface); padding: 10px 14px; text-decoration: none; transition: transform 180ms var(--ease-out); } .skip-link:focus { transform: translateY(0); } .progress-line { position: fixed; top: 0; left: 0; right: 0; z-index: 50; height: 4px; background: rgba(32, 39, 42, 0.08); } .progress-line span { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--teal), var(--gold), var(--coral)); } .topbar { position: sticky; top: 4px; z-index: var(--z-header); display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 22px; width: min(1240px, calc(100% - 28px)); min-height: 62px; margin: 10px auto 0; padding: 9px 12px; border-radius: var(--radius); background: rgba(255, 252, 245, 0.9); box-shadow: 0 0 0 1px var(--line), 0 12px 34px rgba(54, 44, 32, 0.09); backdrop-filter: blur(14px); } .brand { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; color: var(--ink); font-weight: 760; text-decoration: none; } .mark { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 6px; background: var(--ink); color: var(--surface); font-size: 0.82rem; font-weight: 820; } .topbar nav { display: flex; justify-content: flex-end; gap: 4px; overflow-x: auto; } .topbar nav a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 10px; border-radius: 6px; color: var(--ink-2); font-weight: 680; text-decoration: none; white-space: nowrap; } .topbar nav a.active { background: rgba(12, 118, 111, 0.1); color: var(--teal); } .scene, .chapter { padding-inline: max(20px, calc((100vw - 1240px) / 2)); } .hero { display: grid; grid-template-columns: minmax(0, 0.96fr) minmax(420px, 1.04fr); align-items: center; gap: clamp(28px, 6vw, 72px); min-height: calc(100dvh - 112px); padding-top: clamp(24px, 5vw, 52px); padding-bottom: clamp(42px, 6vw, 66px); overflow: clip; } .hero-copy { display: grid; gap: 22px; } .eyebrow, .section-number { color: var(--plum); font-size: 0.78rem; font-weight: 820; letter-spacing: 0; text-transform: uppercase; } .lede { max-width: 58ch; color: var(--ink-2); font-size: clamp(1.08rem, 1.7vw, 1.34rem); } .hero-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px; } .primary-link, .ghost-link, .choice-card, .select-list button, .move-list button, .slot, .memory-check button, .feedback-choices button, #runOldCourse, #copyPlan, .topic-pill { min-height: 44px; border-radius: 7px; font-weight: 740; transition: transform 140ms var(--ease-out), background-color 150ms ease, color 150ms ease, box-shadow 150ms ease; } .primary-link, #runOldCourse, #copyPlan { display: inline-flex; align-items: center; justify-content: center; background: var(--ink); color: var(--surface); padding: 11px 15px; text-decoration: none; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); } .ghost-link { background: rgba(32, 39, 42, 0.08); color: var(--ink); padding: 11px 15px; } @media (hover: hover) and (pointer: fine) { .primary-link:hover, .ghost-link:hover, .choice-card:hover, .select-list button:hover, .move-list button:hover, .slot:hover, .memory-check button:hover, .feedback-choices button:hover, #runOldCourse:hover, #copyPlan:hover, .topic-pill:hover { transform: translateY(-1px); } } button:active, .primary-link:active { transform: scale(0.98); } .hero-art { position: relative; min-height: min(500px, 58vw); } .folder { position: relative; min-height: min(500px, 58vw); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 252, 245, 0.94), rgba(233, 225, 212, 0.82)), linear-gradient(90deg, rgba(49, 91, 114, 0.08), rgba(12, 118, 111, 0.08)); box-shadow: var(--shadow), 0 0 0 1px var(--line); overflow: hidden; } .folder::before { content: ""; position: absolute; left: 48px; top: 112px; right: 48px; height: 1px; background: var(--line); } .folder-tab { position: absolute; left: 42px; top: 38px; border-radius: 8px 8px 0 0; background: var(--blue); color: var(--surface); padding: 13px 18px; font-weight: 780; } .folder-page { position: absolute; display: grid; gap: 10px; width: min(300px, 44%); border-radius: var(--radius); background: var(--surface); padding: 18px; box-shadow: 0 12px 30px rgba(54, 44, 32, 0.14), 0 0 0 1px var(--line); } .folder-page strong { margin-bottom: 6px; } .folder-page span { border-radius: 5px; background: rgba(49, 91, 114, 0.1); padding: 8px 10px; color: var(--ink-2); font-weight: 680; } .page-a { left: 58px; top: 138px; transform: rotate(-2deg); } .page-b { right: 58px; top: 174px; transform: rotate(2deg); } .page-b span { background: var(--teal-soft); color: #0b5f59; } .learner-note { position: absolute; left: 50%; bottom: 36px; display: grid; gap: 6px; width: min(410px, calc(100% - 64px)); transform: translateX(-50%); border-left: 5px solid var(--coral); border-radius: 0 8px 8px 0; background: #fff5e8; padding: 16px; box-shadow: 0 0 0 1px var(--line); } .learner-note span { color: var(--ink-2); } .experience-shell { display: grid; grid-template-columns: minmax(280px, 360px) minmax(0, 1fr); gap: clamp(28px, 5vw, 60px); align-items: start; width: min(1240px, calc(100% - 40px)); margin: 0 auto; } .course-file { position: sticky; top: 86px; z-index: var(--z-file); display: grid; gap: 18px; max-height: calc(100dvh - 104px); overflow: auto; border-radius: var(--radius); background: rgba(255, 252, 245, 0.94); padding: 20px; box-shadow: var(--shadow), 0 0 0 1px var(--line); } .file-head { display: grid; gap: 8px; } .file-head h2 { max-width: none; font-size: 1.6rem; } .file-head p:last-child { color: var(--ink-2); } .file-section { display: grid; gap: 12px; padding-top: 16px; border-top: 1px solid var(--line); } .file-section h3 { font-size: 1rem; } .spine-list { display: grid; gap: 10px; margin: 0; } .spine-list div { display: grid; grid-template-columns: 84px 1fr; gap: 10px; align-items: start; } .spine-list dt { color: var(--muted); font-size: 0.86rem; font-weight: 760; } .spine-list dd { margin: 0; color: var(--ink); font-size: 0.94rem; font-weight: 680; } .learner-state { display: grid; gap: 12px; } .state-meter { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; } .state-meter span { position: relative; min-height: 64px; overflow: hidden; border-radius: 6px; background: rgba(32, 39, 42, 0.08); box-shadow: inset 0 0 0 1px rgba(32, 39, 42, 0.06); } .state-meter span::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: var(--fill, 22%); background: var(--bar, var(--teal)); transition: height 300ms var(--ease-move); } #meterUse { --bar: var(--teal); --fill: 28%; } #meterConfidence { --bar: var(--gold); --fill: 20%; } #meterTransfer { --bar: var(--coral); --fill: 16%; } .learner-state ul, .found-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; } .learner-state li { border-radius: 6px; background: rgba(32, 39, 42, 0.05); padding: 9px 10px; color: var(--ink-2); font-size: 0.92rem; } .memory-row { display: flex; flex-wrap: wrap; gap: 6px; } .memory-row span { border-radius: 999px; background: rgba(32, 39, 42, 0.07); padding: 6px 9px; color: var(--ink-2); font-size: 0.86rem; font-weight: 720; } .memory-row span.settled { background: var(--green-soft); color: var(--green); } .story { min-width: 0; } .chapter { padding: clamp(76px, 11vw, 136px) 0; border-top: 1px solid rgba(32, 39, 42, 0.1); } .chapter:first-child { border-top: 0; padding-top: 18px; } .chapter > p:not(.section-number), .chapter > h2 { max-width: 760px; } .chapter > p:not(.section-number) { margin-top: 18px; color: var(--ink-2); font-size: clamp(1.04rem, 1.45vw, 1.22rem); } .section-number { margin-bottom: 14px; color: var(--coral); } .old-course-lab, .decision-lab, .alignment-studio, .class-builder, .feedback-lab, .opening-lab, .launch-board, .instructor-note, .memory-check { margin-top: clamp(28px, 5vw, 48px); } .old-course-lab { display: grid; grid-template-columns: minmax(220px, 0.85fr) minmax(360px, 1.15fr); gap: 18px; align-items: stretch; } .topic-board, .semester-sim, .prompt-card, .decision-feedback, .wire-map, .alignment-controls, .move-palette, .hour-stage, .misconception-board, .feedback-choices, .opening-scene, .motivation-response, .plan-panel, .closing-claim { border-radius: var(--radius); background: rgba(255, 252, 245, 0.94); padding: 18px; box-shadow: 0 0 0 1px var(--line); } .topic-board { display: flex; flex-wrap: wrap; align-content: start; gap: 10px; } .topic-board h3 { flex: 0 0 100%; } .topic-pill { background: var(--blue-soft); color: #244a5e; padding: 9px 11px; } .semester-sim { display: grid; gap: 16px; } .sim-head, .panel-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; } .week-track { display: grid; grid-template-columns: repeat(12, 1fr); gap: 5px; } .week { display: grid; place-items: center; min-height: 58px; border-radius: 5px; background: rgba(49, 91, 114, 0.08); color: var(--muted); font-size: 0.78rem; font-weight: 780; } .week.active { background: var(--coral-soft); color: #8f3d28; animation: flashWeek 500ms var(--ease-out); } .student-log { min-height: 132px; border-radius: 7px; background: #fff6e7; padding: 14px; color: var(--ink-2); box-shadow: inset 0 0 0 1px var(--line); } .student-log p + p { margin-top: 10px; } .instructor-note { display: grid; grid-template-columns: minmax(0, 0.84fr) minmax(320px, 1.16fr); gap: 18px; align-items: center; border-radius: var(--radius); background: #192326; color: var(--surface); padding: 20px; } .instructor-note p:not(.eyebrow) { color: rgba(255, 252, 245, 0.78); } .instructor-note video { border-radius: 7px; } .compact-note { grid-template-columns: minmax(0, 1fr) minmax(260px, 0.9fr); } .decision-lab { display: grid; grid-template-columns: minmax(220px, 0.72fr) minmax(360px, 1.28fr); gap: 18px; } .prompt-card { display: grid; align-content: start; gap: 12px; background: #192326; color: var(--surface); } .prompt-card p { color: rgba(255, 252, 245, 0.78); } .choice-grid { display: grid; gap: 10px; } .choice-card { display: grid; gap: 6px; width: 100%; border: 1px solid transparent; background: var(--surface); color: var(--ink); padding: 15px; text-align: left; box-shadow: 0 0 0 1px var(--line); } .choice-card span { font-size: 1.04rem; } .choice-card small { color: var(--muted); } .choice-card.selected { background: var(--teal-soft); color: #074f4a; box-shadow: 0 0 0 2px var(--teal); } .decision-feedback, .hidden-course, .class-feedback, .motivation-response { display: grid; gap: 6px; min-height: 94px; border-left: 5px solid var(--coral); background: #fff6e7; color: var(--ink-2); } .decision-feedback strong, .hidden-course strong, .motivation-response strong { color: var(--ink); } .memory-check { display: grid; grid-template-columns: minmax(220px, 0.74fr) minmax(360px, 1.26fr); gap: 18px; align-items: start; border-radius: var(--radius); background: linear-gradient(90deg, rgba(12, 118, 111, 0.1), rgba(49, 91, 114, 0.08)); padding: 18px; box-shadow: 0 0 0 1px var(--line); } .check-options { display: grid; gap: 10px; } .memory-check button { background: var(--surface); color: var(--ink); padding: 12px; text-align: left; box-shadow: 0 0 0 1px var(--line); } .memory-check button.correct { background: var(--green-soft); color: var(--green); box-shadow: 0 0 0 2px var(--green); } .memory-check button.incorrect { background: var(--coral-soft); color: #8f3d28; } .check-feedback { grid-column: 2; color: var(--ink-2); } .alignment-studio { display: grid; grid-template-columns: minmax(380px, 1.2fr) minmax(270px, 0.8fr); gap: 18px; align-items: stretch; } .wire-map { min-height: 440px; } #wireSvg { display: block; width: 100%; height: auto; } .wire { stroke: rgba(32, 39, 42, 0.18); stroke-width: 5; stroke-linecap: round; } .wire.strong { stroke: var(--teal); } .wire.warn { stroke: var(--coral); stroke-dasharray: 12 12; } .node rect, .node circle { fill: var(--surface); stroke: var(--line-strong); stroke-width: 2; } .node text { fill: var(--ink); font-size: 18px; font-weight: 760; } .node text + text { fill: var(--muted); font-size: 15px; font-weight: 680; } .alignment-controls { display: grid; align-content: start; gap: 22px; } .select-list, .move-list, .feedback-choices { display: grid; gap: 10px; margin-top: 12px; } .select-list button, .move-list button, .feedback-choices button { background: var(--surface); color: var(--ink); padding: 12px 13px; text-align: left; box-shadow: 0 0 0 1px var(--line); } .select-list button.selected, .move-list button.selected, .feedback-choices button.selected { background: var(--teal-soft); color: #074f4a; box-shadow: 0 0 0 2px var(--teal); } .hidden-course { margin-top: 18px; padding: 16px; } .hidden-course.good { border-left-color: var(--teal); background: var(--teal-soft); } .class-builder { display: grid; grid-template-columns: minmax(220px, 0.7fr) minmax(420px, 1.3fr); gap: 18px; } .move-palette, .hour-stage { min-height: 420px; } .attention-plot { border-radius: var(--radius); background: #fff6e7; box-shadow: inset 0 0 0 1px var(--line); } #attentionSvg { display: block; width: 100%; height: auto; } #attentionSvg line { stroke: rgba(32, 39, 42, 0.18); stroke-width: 2; } #attentionCurve { fill: none; stroke: var(--coral); stroke-width: 6; stroke-linecap: round; stroke-linejoin: round; } #attentionMarkers circle { fill: var(--teal); stroke: var(--surface); stroke-width: 4; } #attentionMarkers text { fill: var(--ink); font-size: 13px; font-weight: 780; } .slot-row { display: grid; grid-template-columns: repeat(6, 1fr); gap: 7px; margin-top: 14px; } .slot { display: grid; place-items: center; min-height: 74px; background: rgba(49, 91, 114, 0.09); color: var(--ink-2); padding: 8px; text-align: center; box-shadow: 0 0 0 1px var(--line); } .slot.filled { background: var(--teal-soft); color: #074f4a; box-shadow: 0 0 0 2px rgba(12, 118, 111, 0.48); } .class-feedback { margin-top: 14px; padding: 14px; } .feedback-lab, .opening-lab, .launch-board { display: grid; grid-template-columns: minmax(320px, 1fr) minmax(320px, 1fr); gap: 18px; } .misconception-board, .feedback-choices, .opening-scene, .motivation-response { min-height: 300px; } .bug-line { margin-top: 16px; border-radius: 7px; background: #fff6e7; padding: 14px; color: var(--ink); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-weight: 740; } .persistence-bars { display: grid; gap: 8px; margin-top: 20px; } .persistence-row { display: grid; grid-template-columns: 74px 1fr; align-items: center; gap: 10px; } .persistence-row span:first-child { color: var(--muted); font-size: 0.86rem; font-weight: 760; } .bar-shell { height: 18px; overflow: hidden; border-radius: 999px; background: rgba(32, 39, 42, 0.08); } .bar-shell span { display: block; width: var(--amount, 70%); height: 100%; border-radius: inherit; background: var(--coral); transition: width 300ms var(--ease-move); } .motivation-response { padding: 18px; } .motivation-response.good { border-left-color: var(--teal); background: var(--teal-soft); } .plan-panel { min-height: 480px; } pre { min-height: 340px; overflow: auto; margin: 16px 0 0; border-radius: var(--radius); background: #172226; color: #fff8ec; padding: 18px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.94rem; line-height: 1.62; white-space: pre-wrap; } .copy-status { margin-top: 10px; color: var(--muted); font-size: 0.92rem; } .closing-claim { display: grid; align-content: center; gap: 14px; background: #192326; color: var(--surface); } .closing-claim h3 { font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.9rem, 3.2vw, 3.25rem); } .closing-claim p:not(.eyebrow) { color: rgba(255, 252, 245, 0.78); } .final-chapter { padding-bottom: clamp(90px, 14vw, 150px); } @keyframes flashWeek { 0% { transform: scale(0.96); } 100% { transform: scale(1); } } @media (max-width: 1080px) { .hero, .experience-shell, .old-course-lab, .decision-lab, .alignment-studio, .class-builder, .feedback-lab, .opening-lab, .launch-board, .instructor-note, .memory-check { grid-template-columns: 1fr; } .experience-shell { width: min(860px, calc(100% - 32px)); } .course-file { position: relative; top: auto; max-height: none; } .check-feedback { grid-column: auto; } .hero-art { min-height: 440px; } .folder { min-height: 440px; } } @media (max-width: 720px) { .topbar { grid-template-columns: 1fr; gap: 6px; width: calc(100% - 18px); } .topbar nav { justify-content: flex-start; } .brand span:last-child { display: none; } .hero { min-height: auto; padding-top: 28px; } h1 { font-size: clamp(3rem, 15vw, 4.6rem); } h2 { font-size: clamp(2rem, 10vw, 3.3rem); } .hero-art { min-height: 520px; } .folder { min-height: 520px; } .folder-page { width: calc(100% - 54px); } .page-a { left: 24px; top: 112px; } .page-b { right: 24px; top: 245px; } .learner-note { bottom: 24px; width: calc(100% - 44px); } .scene, .chapter { padding-inline: 16px; } .experience-shell { width: calc(100% - 24px); } .spine-list div { grid-template-columns: 1fr; gap: 2px; } .week-track, .slot-row { grid-template-columns: repeat(3, 1fr); } .wire-map { overflow-x: auto; } #wireSvg { min-width: 620px; } .sim-head, .panel-head { align-items: stretch; flex-direction: column; } } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation: none; transition: none; } }