decks/learning-outcomes-assessment/styles.css
2026-07-07 08:34:19 +05:30

1277 lines
21 KiB
CSS

: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;
}
}