/* Education app development (/education/app-development). Every class is prefixed edapp.
   The tablet and phone are HTML/CSS illustrations of a made-up centre, "Your Academy". Their screens stay
   light in both themes, like screenshots, and are sized in --u: one design pixel of the device screen
   (tablet screens are drawn at 440 wide, phone screens at 170), so each device scales as one piece.
   Motion (transform and opacity only) runs with html.motion; src/js/edu-app.js drives the day story
   and the planner. Without JS or with reduced motion everything stays readable and still. */

/* ---------- Device frames */
.edapp-tab { position: relative; padding: 10px; border-radius: 24px; background: linear-gradient(150deg, #30343c, #121418 60%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.07), 0 34px 60px -30px rgba(22, 24, 29, 0.45); }
.edapp-tab__scr { position: relative; aspect-ratio: 4 / 3; border-radius: 14px; overflow: hidden; }
.edapp-ph { position: relative; padding: 6px; border-radius: 30px; background: linear-gradient(150deg, #30343c, #0e0f12 60%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08), 0 34px 60px -26px rgba(22, 24, 29, 0.5); }
.edapp-ph__scr { position: relative; aspect-ratio: 9 / 19; border-radius: 24px; overflow: hidden; }
.edapp-ph__scr::before { content: ""; position: absolute; z-index: 3; top: 7px; left: 50%; width: 30%; height: 15px; transform: translateX(-50%); border-radius: 99px; background: #0e0f12; }
:root[data-theme="dark"] .edapp-tab, :root[data-theme="dark"] .edapp-ph { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.09), 0 0 0 1px rgba(255, 255, 255, 0.04), 0 40px 70px -30px rgba(0, 0, 0, 0.8); }

/* ---------- App UI inside the devices (always light) */
.edapp-ui { --u: calc(100cqw / 440); container-type: inline-size; --ya: #0f766e; --ya-deep: #115e59; --ya-wash: #e1f2ee; --u-ink: #16181d; --u-ink2: #474c55; --u-muted: #626873; --u-line: #e4e6ea; --u-bg: #f4f5f7;
  --u-in: #0b7a34; --u-in-w: #e2f4e7; --u-late: #ad3a09; --u-late-w: #f5eedf; --u-sun: #634c00; --u-sun-w: #f4ead2; --u-gold: #d4a648;
  background: var(--u-bg); color: var(--u-ink); font-family: var(--font-body); letter-spacing: -0.006em; line-height: 1.3; text-align: left; }
.edapp-ph .edapp-ui { --u: calc(100cqw / 170); }
.edapp-ui ul, .edapp-ui ol { list-style: none; margin: 0; padding: 0; }
.edapp-ui b { font-weight: 700; }
.edapp-ui .psg-ic { width: calc(12 * var(--u)); height: calc(12 * var(--u)); stroke-width: 2; }

.edapp-bar { display: flex; align-items: center; gap: calc(7 * var(--u)); height: calc(32 * var(--u)); padding: 0 calc(12 * var(--u)); background: #fff; border-bottom: 1px solid var(--u-line); font-size: calc(11 * var(--u)); }
.edapp-logo { display: inline-grid; place-items: center; flex: none; width: calc(19 * var(--u)); height: calc(19 * var(--u)); border-radius: calc(6 * var(--u)); background: linear-gradient(140deg, var(--ya), var(--ya-deep)); color: #fff; font: 700 calc(7.5 * var(--u))/1 var(--font-body); font-style: normal; letter-spacing: 0.02em; }
.edapp-bar > b { font-size: calc(11.5 * var(--u)); }
.edapp-bar__role { padding: calc(3 * var(--u)) calc(7 * var(--u)); border-radius: 99px; background: var(--ya-wash); color: var(--ya-deep); font-size: calc(8.5 * var(--u)); font-weight: 700; }
.edapp-bar__time { margin-left: auto; color: var(--u-muted); font-size: calc(9.5 * var(--u)); font-weight: 600; }
.edapp-bar__me { display: inline-grid; place-items: center; width: calc(20 * var(--u)); height: calc(20 * var(--u)); border-radius: 50%; background: #f0e3c4; color: #6b4a12; font-size: calc(7.5 * var(--u)); font-weight: 700; }
.edapp-bar__role + .edapp-bar__me { margin-left: auto; }

.edapp-k { display: inline-flex; align-items: center; gap: calc(4 * var(--u)); color: var(--u-muted); font-size: calc(8 * var(--u)); font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }
.edapp-k .psg-ic { width: calc(10 * var(--u)); height: calc(10 * var(--u)); }
.edapp-k--ai { color: #8a5a26; }
.edapp-k--ai .psg-ic, .edapp-card--ai .edapp-k .psg-ic { fill: var(--u-gold); stroke: none; }
.edapp-st { display: inline-flex; align-items: center; gap: calc(3 * var(--u)); justify-self: start; padding: calc(3.5 * var(--u)) calc(6.5 * var(--u)); border-radius: calc(5 * var(--u)); font-size: calc(8.5 * var(--u)); font-weight: 700; line-height: 1.1; white-space: nowrap; }
.edapp-st--in { background: var(--u-in-w); color: var(--u-in); }
.edapp-st--late { background: var(--u-late-w); color: var(--u-late); }
.edapp-st--wait { background: #eceef1; color: var(--u-muted); }
.edapp-st--draft { background: var(--u-sun-w); color: var(--u-sun); }
.edapp-st--edit { background: var(--ya-wash); color: var(--ya-deep); }
.edapp-ubtn { display: inline-flex; align-items: center; justify-content: center; justify-self: start; padding: calc(5.5 * var(--u)) calc(10 * var(--u)); border-radius: 99px; background: var(--ya); color: #fff; font-size: calc(9 * var(--u)); font-weight: 700; font-style: normal; white-space: nowrap; }
.edapp-ubtn--ghost { background: #fff; color: var(--u-ink); box-shadow: inset 0 0 0 1px var(--u-line); }

/* Teacher dashboard (hero) */
.edapp-dash { display: grid; grid-template-columns: calc(58 * var(--u)) minmax(0, 1fr); height: calc(100% - 32 * var(--u)); }
.edapp-dash__nav { display: grid; align-content: start; gap: calc(4 * var(--u)); padding: calc(10 * var(--u)) calc(6 * var(--u)); background: #fff; border-right: 1px solid var(--u-line); }
.edapp-dash__nav li { display: grid; justify-items: center; gap: calc(3 * var(--u)); padding: calc(6 * var(--u)) 0; border-radius: calc(8 * var(--u)); color: var(--u-muted); font-size: calc(7.5 * var(--u)); font-weight: 600; }
.edapp-dash__nav li.is-on { background: var(--ya-wash); color: var(--ya-deep); }
.edapp-dash__nav .psg-ic { width: calc(14 * var(--u)); height: calc(14 * var(--u)); }
.edapp-dash__main { display: grid; align-content: start; gap: calc(9 * var(--u)); padding: calc(12 * var(--u)); min-width: 0; }
.edapp-dash__hi { font-size: calc(15 * var(--u)); letter-spacing: -0.02em; }
.edapp-dash__cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: calc(8 * var(--u)); }
.edapp-card { display: grid; align-content: start; gap: calc(4 * var(--u)); min-width: 0; padding: calc(9 * var(--u)) calc(10 * var(--u)); border-radius: calc(11 * var(--u)); background: #fff; box-shadow: 0 0 0 1px var(--u-line); font-size: calc(9 * var(--u)); color: var(--u-muted); }
.edapp-card b { color: var(--u-ink); font-size: calc(11 * var(--u)); letter-spacing: -0.01em; }
.edapp-card--ai { background: linear-gradient(160deg, #faf6ec, #fff); box-shadow: 0 0 0 1.5px var(--u-gold); }
.edapp-card--ai .edapp-k { color: #8a5a26; }
.edapp-card--ai .edapp-ubtn { margin-top: calc(3 * var(--u)); }
.edapp-live { display: inline-block; width: calc(6 * var(--u)); height: calc(6 * var(--u)); border-radius: 50%; background: #0b0c0e; }
.edapp-faces { display: flex; margin: calc(2 * var(--u)) 0; }
.edapp-faces i { display: grid; place-items: center; width: calc(20 * var(--u)); height: calc(20 * var(--u)); margin-right: calc(-4 * var(--u)); border-radius: 50%; background: #eef0f3; color: var(--u-ink2); font: 700 calc(6.5 * var(--u))/1 var(--font-body); font-style: normal; box-shadow: 0 0 0 calc(1.5 * var(--u)) #fff, inset 0 0 0 calc(1.5 * var(--u)) var(--u-in); }
.edapp-faces i.is-late { box-shadow: 0 0 0 calc(1.5 * var(--u)) #fff, inset 0 0 0 calc(1.5 * var(--u)) var(--u-late); color: var(--u-late); background: var(--u-late-w); }
.edapp-chapbar { display: flex; gap: calc(3 * var(--u)); margin-top: calc(3 * var(--u)); }
.edapp-chapbar i { height: calc(5 * var(--u)); border-radius: 9px; background: var(--ya-wash); flex: 1; }
.edapp-chapbar i:nth-child(1) { flex: 0.8; background: var(--ya); } .edapp-chapbar i:nth-child(2) { flex: 1.2; } .edapp-chapbar i:nth-child(3) { flex: 1.1; } .edapp-chapbar i:nth-child(4) { flex: 0.7; }

/* Phone lock screen and notifications */
.edapp-lock { display: flex; flex-direction: column; background: radial-gradient(120% 60% at 75% 0%, rgba(212, 166, 72, 0.4), transparent 60%), linear-gradient(170deg, #115e59, #0f3d3a 55%, #16181d); }
.edapp-lock__clock { display: grid; justify-items: center; gap: calc(1 * var(--u)); padding: calc(30 * var(--u)) 0 calc(12 * var(--u)); color: #fff; }
.edapp-lock__clock span { font-size: calc(9 * var(--u)); font-weight: 600; opacity: 0.86; }
.edapp-lock__clock b { font-size: calc(38 * var(--u)); line-height: 1; letter-spacing: -0.04em; font-variant-numeric: tabular-nums; }
.edapp-lock__list { display: grid; gap: calc(5 * var(--u)); padding: 0 calc(7 * var(--u)); }
.edapp-note { display: grid; gap: calc(1.5 * var(--u)); padding: calc(7 * var(--u)) calc(8 * var(--u)); border-radius: calc(13 * var(--u)); background: rgba(255, 255, 255, 0.93); color: var(--u-muted); font-size: calc(9 * var(--u)); line-height: 1.3; box-shadow: 0 calc(4 * var(--u)) calc(10 * var(--u)) rgba(0, 0, 0, 0.12); }
.edapp-note b { color: var(--u-ink); font-size: calc(9.5 * var(--u)); }
.edapp-note__app { display: flex; align-items: center; gap: calc(4 * var(--u)); color: var(--u-muted); font-size: calc(7.5 * var(--u)); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
.edapp-note__app i { display: grid; place-items: center; width: calc(12 * var(--u)); height: calc(12 * var(--u)); border-radius: calc(3.5 * var(--u)); background: linear-gradient(140deg, var(--ya), var(--ya-deep)); color: #fff; font: 700 calc(5 * var(--u))/1 var(--font-body); font-style: normal; letter-spacing: 0; }
.edapp-note__app s { margin-left: auto; text-decoration: none; text-transform: none; letter-spacing: 0; font-weight: 500; }
.edapp-note--late { box-shadow: inset calc(3 * var(--u)) 0 0 #e8590c, 0 calc(4 * var(--u)) calc(10 * var(--u)) rgba(0, 0, 0, 0.12); }

/* ---------- Hero */
.edapp-hero .h-page em { font-style: normal; color: #9a3412; }
:root[data-theme="dark"] .edapp-hero .h-page em { color: var(--sun); }
.edapp-hero .wrap { grid-template-columns: minmax(0, 1fr) minmax(0, 1.06fr); }
@media (max-width: 860px) { .edapp-hero .wrap { grid-template-columns: minmax(0, 1fr); } }
.edapp-hvis { display: grid; gap: 12px; min-width: 0; }
.edapp-duo { display: grid; position: relative; }
.edapp-duo > * { grid-area: 1 / 1; }
.edapp-duo__tab { width: 82%; justify-self: start; align-self: start; }
.edapp-duo__ph { width: 31%; justify-self: end; align-self: start; margin-top: 30%; }
.edapp-duo::before { content: ""; position: absolute; inset: 8% -6% 0 10%; z-index: -1; border-radius: 50%; background: radial-gradient(closest-side, rgba(255, 255, 255, 0.55), transparent); pointer-events: none; }
:root[data-theme="dark"] .edapp-duo::before { background: radial-gradient(closest-side, rgba(212, 166, 72, 0.12), transparent); }
@media (max-width: 560px) {
  .edapp-duo__tab { width: 86%; }
  .edapp-duo__ph { width: 40%; margin-top: 34%; }
}
html.motion .edapp-duo__tab { animation: edapp-rise 0.9s 0.15s cubic-bezier(.2, .7, .2, 1) both; }
html.motion .edapp-duo__ph { animation: edapp-rise 0.9s 0.35s cubic-bezier(.2, .7, .2, 1) both; }
html.motion .edapp-duo .edapp-note { animation: edapp-drop 0.55s cubic-bezier(.2, .8, .3, 1.15) both; animation-delay: calc(1.1s + var(--k, 0) * 0.5s); }
html.motion .edapp-duo .edapp-card--ai { animation: edapp-rise 0.6s 1.9s cubic-bezier(.2, .7, .2, 1) both; }
html.motion .edapp-duo.is-live .edapp-duo__ph > .edapp-ph { animation: edapp-float 7s ease-in-out infinite; }
html.motion .edapp-duo.is-live .edapp-live { animation: edapp-pulse 1.6s ease-in-out infinite; }
@keyframes edapp-rise { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@keyframes edapp-drop { from { opacity: 0; transform: translateY(-10px) scale(0.96); } to { opacity: 1; transform: none; } }
@keyframes edapp-float { 50% { transform: translateY(-8px); } }
@keyframes edapp-pulse { 50% { opacity: 0.35; transform: scale(0.75); } }

/* ---------- A day in the centre: steps beside a sticky stage */
.edapp-day__grid { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: clamp(32px, 5vw, 72px); align-items: start; }
.edapp-steps { list-style: none; margin: 0; padding: 0; position: relative; }
.edapp-steps::before { content: ""; position: absolute; left: 7px; top: 10px; bottom: 30vh; width: 2px; border-radius: 2px; background: var(--line-2); }
.edapp-step { display: flex; align-items: center; min-height: 58vh; padding-left: 40px; }
.edapp-step:first-child { align-items: flex-start; min-height: 44vh; padding-top: 4px; }
.edapp-step:last-child { min-height: 62vh; }
.edapp-step__card { position: relative; display: grid; gap: 12px; justify-items: start; max-width: 460px; transition: opacity 0.4s; }
.edapp-step__card::before { content: ""; position: absolute; left: -40px; top: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--bg); box-shadow: inset 0 0 0 2px var(--line-2); transition: transform 0.3s; }
.edapp-step.is-on .edapp-step__card::before { background: var(--gold-grad, linear-gradient(135deg, var(--gold-1), var(--gold-2))); box-shadow: 0 0 0 5px var(--gold-soft, var(--sun-wash)); }
.edapp-step__time { font: 700 14px/1.2 var(--font-body); letter-spacing: 0.02em; color: var(--accent-text, var(--sun-ink)); font-variant-numeric: tabular-nums; }
.edapp-step__card h3 { font: 700 clamp(24px, 2.5vw, 34px)/1.12 var(--font-body); letter-spacing: -0.028em; color: var(--ink); }
.edapp-step__card p { font: 400 clamp(16px, 1.25vw, 18px)/1.6 var(--font-body); color: var(--ink-2); }
.edapp-step__mod { display: inline-flex; align-items: center; gap: 7px; margin-top: 2px; padding: 8px 13px; border-radius: 99px; background: var(--chip); color: var(--ink); font: 600 13.5px/1 var(--font-body); text-decoration: none; }
.edapp-step__mod .psg-ic { font-size: 16px; color: var(--accent-text, var(--sun-ink)); }
a.edapp-step__mod:hover { box-shadow: inset 0 0 0 1.5px var(--gold-line, var(--sun-deep)); }
.edapp-step__mod--you { background: var(--sun); color: var(--on-sun); }
.edapp-step__mod--you .psg-ic { color: var(--on-sun); }
html.motion .edapp-day__grid.is-live .edapp-step:not(.is-on) .edapp-step__card { opacity: 0.34; }

.edapp-stage { position: sticky; top: calc(var(--head-h) + 24px); container-type: inline-size; display: grid; gap: 14px; }
.edapp-stage__clock { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-radius: var(--radius-pill); background: var(--panel); }
.edapp-stage__day { font: 600 13px/1 var(--font-body); letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
.edapp-stage__clock b { font: 700 22px/1 var(--font-body); letter-spacing: -0.03em; color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
.edapp-stage__clock small { font-size: 13px; font-weight: 600; color: var(--muted); letter-spacing: 0; }
.edapp-stage__track { flex: 1; height: 6px; border-radius: 6px; background: var(--chip); overflow: hidden; }
.edapp-stage__track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--gold-2), var(--sun-deep)); transform-origin: 0 50%; transform: scaleX(var(--p, 0.14)); transition: transform 0.5s cubic-bezier(.2, .7, .2, 1); }
.edapp-stage__devs { display: grid; }
.edapp-stage__dev { grid-area: 1 / 1; display: grid; gap: 8px; align-self: start; transition: opacity 0.45s, transform 0.45s cubic-bezier(.2, .7, .2, 1); }
.edapp-stage__dev--tab { width: 72%; justify-self: start; }
.edapp-stage__dev--ph { width: 30%; justify-self: end; margin-top: 7%; z-index: 1; }
.edapp-stage__dev--ph .edapp-stage__lbl { justify-self: end; }
.edapp-stage[data-dev="tab"] .edapp-stage__dev--tab { z-index: 2; }
.edapp-stage__lbl { justify-self: start; padding: 6px 11px; border-radius: 99px; background: var(--panel); color: var(--ink-2); font: 600 12.5px/1 var(--font-body); white-space: nowrap; }
.edapp-stage[data-dev="tab"] .edapp-stage__dev--ph, .edapp-stage[data-dev="ph"] .edapp-stage__dev--tab { opacity: 0.42; transform: scale(0.97); }
.edapp-stage__dev--ph { transform-origin: 100% 0; }
.edapp-stage__dev--tab { transform-origin: 0 0; }

/* Tablet screens: one at a time. Without JS the first (the register) shows. */
.edapp-scrs { position: relative; height: calc(100% - 32 * var(--u)); }
.edapp-scr { position: absolute; inset: 0; display: grid; align-content: start; gap: calc(8 * var(--u)); padding: calc(11 * var(--u)) calc(12 * var(--u)); font-size: calc(10 * var(--u)); }
.edapp-scr:not(:first-child) { visibility: hidden; opacity: 0; }
.edapp-scrs.is-live .edapp-scr { visibility: hidden; opacity: 0; transform: translateY(calc(6 * var(--u))); transition: opacity 0.35s, transform 0.35s cubic-bezier(.2, .7, .2, 1), visibility 0s 0.35s; }
.edapp-scrs.is-live .edapp-scr.is-on { visibility: visible; opacity: 1; transform: none; transition: opacity 0.35s, transform 0.35s cubic-bezier(.2, .7, .2, 1), visibility 0s; }
.edapp-scr__head { display: flex; align-items: flex-start; justify-content: space-between; gap: calc(8 * var(--u)); }
.edapp-scr__head > div { display: grid; gap: calc(3 * var(--u)); min-width: 0; }
.edapp-scr__head b { font-size: calc(13.5 * var(--u)); letter-spacing: -0.02em; }
.edapp-scr__foot { display: flex; flex-wrap: wrap; align-items: center; gap: calc(6 * var(--u)); }
.edapp-qr { display: inline-flex; align-items: center; gap: calc(4 * var(--u)); padding: calc(4 * var(--u)) calc(7 * var(--u)); border-radius: 99px; background: #fff; box-shadow: inset 0 0 0 1px var(--u-line); color: var(--u-ink2); font-size: calc(8.5 * var(--u)); font-weight: 700; white-space: nowrap; }
.edapp-qr .psg-ic { color: var(--ya); }
.edapp-sent { display: inline-flex; align-items: center; gap: calc(4 * var(--u)); color: var(--u-late); font-size: calc(9 * var(--u)); font-weight: 700; }
.edapp-sent--ok { color: var(--u-in); }
.edapp-reg { display: grid; gap: calc(4 * var(--u)); }
.edapp-reg li { position: relative; display: grid; grid-template-columns: calc(20 * var(--u)) minmax(0, 1fr) auto; align-items: center; gap: calc(8 * var(--u)); padding: calc(5 * var(--u)) calc(8 * var(--u)); border-radius: calc(9 * var(--u)); background: #fff; font-weight: 600; }
.edapp-av { display: grid; place-items: center; width: calc(20 * var(--u)); height: calc(20 * var(--u)); border-radius: 50%; background: #eef0f3; color: var(--u-ink2); font: 700 calc(7 * var(--u))/1 var(--font-body); font-style: normal; }
.edapp-reg__new::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 1.5px var(--u-in); opacity: 0; pointer-events: none; }
.edapp-stage[data-at="0"] .edapp-reg__new::after { opacity: 1; }
html.motion .edapp-stage[data-at="0"] .edapp-reg__new::after { animation: edapp-glow 1.4s ease-out both; }
@keyframes edapp-glow { 0% { opacity: 0; } 25% { opacity: 1; } 100% { opacity: 0.6; } }
.edapp-stage[data-at="1"] .edapp-reg__late { box-shadow: inset 0 0 0 1.5px #e8590c; }
.edapp-v1, .edapp-v4 { display: none; }
.edapp-stage[data-at="1"] .edapp-v0, .edapp-stage[data-at="4"] .edapp-v3 { display: none; }
.edapp-stage[data-at="1"] .edapp-v1, .edapp-stage[data-at="4"] .edapp-v4 { display: inline-flex; }
.edapp-stage[data-at="4"] .edapp-qz__edit .edapp-v4:not(.edapp-st) { display: inline; }

.edapp-rec { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: calc(10 * var(--u)); align-items: start; }
.edapp-rec__vid { position: relative; aspect-ratio: 16 / 11; border-radius: calc(10 * var(--u)); overflow: hidden; background: radial-gradient(90% 80% at 30% 30%, #2d6a5f, #17312d); display: grid; place-items: center; }
.edapp-rec__board { color: rgba(255, 255, 255, 0.9); font: 600 calc(12 * var(--u))/1.35 var(--font-body); letter-spacing: 0.01em; text-align: center; }
.edapp-rec__play { position: absolute; left: calc(8 * var(--u)); bottom: calc(8 * var(--u)); width: calc(20 * var(--u)); height: calc(20 * var(--u)); border-radius: 50%; background: rgba(255, 255, 255, 0.92); }
.edapp-rec__play::after { content: ""; position: absolute; left: 38%; top: 30%; border-left: calc(7 * var(--u)) solid var(--ya-deep); border-top: calc(4.5 * var(--u)) solid transparent; border-bottom: calc(4.5 * var(--u)) solid transparent; }
.edapp-rec__len { position: absolute; right: calc(8 * var(--u)); bottom: calc(10 * var(--u)); padding: calc(2 * var(--u)) calc(5 * var(--u)); border-radius: calc(4 * var(--u)); background: rgba(0, 0, 0, 0.55); color: #fff; font-size: calc(8 * var(--u)); font-weight: 700; }
.edapp-rec__ai { display: grid; gap: calc(5 * var(--u)); }
.edapp-rec__ai p { color: var(--u-ink2); font-size: calc(9.5 * var(--u)); line-height: 1.4; }
.edapp-chap { display: grid; gap: calc(3 * var(--u)); }
.edapp-chap li { display: grid; grid-template-columns: calc(26 * var(--u)) minmax(0, 1fr); gap: calc(5 * var(--u)); padding: calc(3.5 * var(--u)) calc(6 * var(--u)); border-radius: calc(6 * var(--u)); background: #fff; font-size: calc(9 * var(--u)); font-weight: 600; }
.edapp-chap b { color: var(--ya); font-variant-numeric: tabular-nums; }

.edapp-qz { display: grid; gap: calc(4 * var(--u)); }
.edapp-qz li { display: grid; grid-template-columns: calc(18 * var(--u)) minmax(0, 1fr) auto; align-items: center; gap: calc(7 * var(--u)); padding: calc(6 * var(--u)) calc(8 * var(--u)); border-radius: calc(9 * var(--u)); background: #fff; font-weight: 600; line-height: 1.3; }
.edapp-qz li > b { display: grid; place-items: center; width: calc(18 * var(--u)); height: calc(18 * var(--u)); border-radius: 50%; background: #eef0f3; font-size: calc(8 * var(--u)); }
.edapp-qz__opts { display: flex; gap: calc(3 * var(--u)); }
.edapp-qz__opts i { padding: calc(3 * var(--u)) calc(5 * var(--u)); border-radius: calc(5 * var(--u)); box-shadow: inset 0 0 0 1px var(--u-line); font-style: normal; font-size: calc(8.5 * var(--u)); }
.edapp-qz__opts i.is-key { background: var(--u-in-w); color: var(--u-in); box-shadow: none; }
.edapp-qz__more { background: transparent !important; color: var(--u-muted); padding-block: calc(1 * var(--u)) !important; }
.edapp-qz__more > b { background: transparent !important; }
.edapp-stage[data-at="4"] .edapp-qz__edit { box-shadow: inset 0 0 0 1.5px var(--ya); }

.edapp-mk__auto { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: calc(5 * var(--u)) calc(8 * var(--u)); padding: calc(8 * var(--u)) calc(10 * var(--u)); border-radius: calc(10 * var(--u)); background: #fff; font-weight: 600; }
.edapp-mk__auto b { font-size: calc(13 * var(--u)); color: var(--u-in); font-variant-numeric: tabular-nums; }
.edapp-mk__bar { grid-column: 1 / -1; height: calc(5 * var(--u)); border-radius: 9px; background: #eef0f3; overflow: hidden; }
.edapp-mk__bar i { display: block; width: 89%; height: 100%; border-radius: inherit; background: var(--u-in); }
.edapp-mk__card { display: grid; gap: calc(6 * var(--u)); padding: calc(9 * var(--u)) calc(10 * var(--u)); border-radius: calc(10 * var(--u)); background: #fff; box-shadow: 0 0 0 1px var(--u-line); }
.edapp-mk__ans { padding: calc(6 * var(--u)) calc(8 * var(--u)); border-radius: calc(7 * var(--u)); background: var(--u-bg); font-size: calc(11 * var(--u)); font-weight: 600; }
.edapp-mk__ai { display: flex; gap: calc(6 * var(--u)); align-items: flex-start; padding: calc(7 * var(--u)) calc(8 * var(--u)); border-radius: calc(7 * var(--u)); background: var(--u-sun-w); color: #4a3a10; font-size: calc(9.5 * var(--u)); line-height: 1.4; }
.edapp-mk__ai .psg-ic { flex: none; fill: var(--u-gold); stroke: none; margin-top: calc(1 * var(--u)); }
.edapp-mk__btns { display: flex; gap: calc(6 * var(--u)); }

/* Phone in the stage: notifications appear as the day goes on; the report slides up at night. */
.edapp-lock.is-live .edapp-note:not(.is-on) { display: none; }
html.motion .edapp-lock.is-live .edapp-note.is-on { animation: edapp-drop 0.5s cubic-bezier(.2, .8, .3, 1.15) both; }
.edapp-rep { position: absolute; z-index: 2; inset: calc(26 * var(--u)) 0 0; display: grid; align-content: start; gap: calc(4 * var(--u)); padding: calc(12 * var(--u)) calc(10 * var(--u)); border-radius: calc(18 * var(--u)) calc(18 * var(--u)) 0 0; background: var(--u-bg); visibility: hidden; transform: translateY(102%); transition: transform 0.5s cubic-bezier(.2, .7, .2, 1), visibility 0s 0.5s; }
.edapp-stage[data-at="6"] .edapp-rep { visibility: visible; transform: none; transition: transform 0.5s cubic-bezier(.2, .7, .2, 1), visibility 0s; }
.edapp-rep__top { display: flex; align-items: center; gap: calc(5 * var(--u)); margin-bottom: calc(6 * var(--u)); color: var(--u-muted); font-size: calc(8 * var(--u)); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; }
.edapp-rep__top .edapp-logo { width: calc(14 * var(--u)); height: calc(14 * var(--u)); border-radius: calc(4 * var(--u)); font-size: calc(5.5 * var(--u)); }
.edapp-rep > b { font-size: calc(17 * var(--u)); letter-spacing: -0.03em; }
.edapp-rep__sub { color: var(--u-muted); font-size: calc(9 * var(--u)); font-weight: 600; }
.edapp-rep dl { display: grid; gap: calc(5 * var(--u)); margin: calc(8 * var(--u)) 0 0; }
.edapp-rep dl div { display: grid; gap: calc(3 * var(--u)); padding: calc(7 * var(--u)) calc(8 * var(--u)); border-radius: calc(10 * var(--u)); background: #fff; }
.edapp-rep dt { color: var(--u-muted); font-size: calc(7.5 * var(--u)); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; }
.edapp-rep dd { margin: 0; color: var(--u-ink); font-size: calc(10 * var(--u)); font-weight: 600; line-height: 1.3; }
.edapp-day__note { margin-top: 18px; }

@media (max-width: 900px) {
  .edapp-day__grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
  /* Sticks just under the compact (scrolled) header; the shadow paints the page colour above it so text never shows through. */
  .edapp-stage { order: -1; top: 60px; z-index: 2; gap: 8px; padding: 10px 0; background: var(--bg); box-shadow: 0 -24px 0 16px var(--bg); }
  .edapp-stage__clock { padding: 8px 14px; }
  .edapp-stage__clock b { font-size: 19px; }
  .edapp-stage__devs { height: calc(75cqw + 36px); overflow: hidden; }
  .edapp-stage__dev--tab { width: 100%; }
  .edapp-stage__dev--ph { width: 60%; justify-self: center; margin-top: 0; -webkit-mask-image: linear-gradient(#000 78%, transparent); mask-image: linear-gradient(#000 78%, transparent); }
  .edapp-stage__dev--ph, .edapp-stage[data-dev="tab"] .edapp-stage__dev--ph { opacity: 0; visibility: hidden; transform: translateY(12px); }
  .edapp-stage[data-dev="ph"] .edapp-stage__dev--ph, .edapp-stage[data-dev="both"] .edapp-stage__dev--ph { opacity: 1; visibility: visible; transform: none; }
  .edapp-stage[data-dev="ph"] .edapp-stage__dev--tab, .edapp-stage[data-dev="both"] .edapp-stage__dev--tab { opacity: 0; visibility: hidden; transform: translateY(12px); }
  .edapp-stage__lbl { padding: 5px 10px; font-size: 12px; }
  .edapp-steps::before { display: none; }
  .edapp-step, .edapp-step:first-child, .edapp-step:last-child { min-height: 66vh; align-items: flex-end; padding: 0 0 7vh; }
  .edapp-step:first-child { min-height: 52vh; }
  .edapp-step__card { max-width: none; width: 100%; padding: 20px 20px 22px; border-radius: var(--radius-card); background: var(--panel); box-shadow: 0 10px 30px rgba(22, 24, 29, 0.1); }
  .edapp-step__card::before { display: none; }
  .edapp-step__card h3 { font-size: 23px; }
  html.motion .edapp-day__grid.is-live .edapp-step:not(.is-on) .edapp-step__card { opacity: 0.55; }
}
:root[data-theme="dark"] .edapp-step__card { box-shadow: none; }
@media (max-width: 900px) { :root[data-theme="dark"] .edapp-step__card { box-shadow: 0 0 0 1px var(--line), 0 12px 30px rgba(0, 0, 0, 0.35); } }
:root[data-theme="light"] .edapp-stage__clock, :root[data-theme="light"] .edapp-stage__lbl { box-shadow: 0 0 0 1px var(--line); }

/* ---------- Modules */
.edapp-mods { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: clamp(16px, 2vw, 24px); }
.edapp-mod.card { grid-column: span 2; gap: 12px; scroll-margin-top: calc(var(--head-h) + 24px); }
.edapp-mod.edapp-mod--wide { grid-column: span 3; }
.edapp-mod h3 { font: 700 21px/1.25 var(--font-body); letter-spacing: -0.02em; color: var(--ink); }
.edapp-mod p { color: var(--ink-2); font-size: 15.5px; line-height: 1.6; }
.edapp-mod__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.edapp-mod__list li { padding: 7px 11px; border-radius: 99px; background: var(--chip); color: var(--ink); font: 600 13px/1.1 var(--font-body); }
.edapp-mod__who { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; margin-top: auto; padding: 7px 11px; border-radius: 99px; background: var(--gold-soft, var(--sun-wash)); color: var(--accent-text, var(--sun-ink)); font: 700 12.5px/1.1 var(--font-body); }
.edapp-mod__who .psg-ic { font-size: 14px; }
.edapp-mod:target { box-shadow: inset 0 0 0 2px var(--gold-line, var(--sun-deep)); }
.edapp-more__t { margin: clamp(40px, 5vw, 64px) 0 18px; font: 700 clamp(21px, 2vw, 26px)/1.2 var(--font-body); letter-spacing: -0.02em; color: var(--ink); }
.edapp-more { list-style: none; margin: 0; padding: clamp(24px, 3.2vw, 44px); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(22px, 2.6vw, 34px) clamp(18px, 2.4vw, 32px); background: var(--panel); border-radius: var(--radius-card); }
.edapp-more li { display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 12px; align-items: start; }
.edapp-more li > .psg-ic { width: 38px; height: 38px; padding: 9px; border-radius: 11px; background: var(--gold-soft, var(--sun-wash)); color: var(--accent-text, var(--sun-ink)); }
.edapp-more li div { display: grid; gap: 4px; }
.edapp-more b { font: 700 15.5px/1.3 var(--font-body); letter-spacing: -0.012em; color: var(--ink); }
.edapp-more span { font: 400 14px/1.5 var(--font-body); color: var(--ink-2); }
:root[data-theme="light"] .edapp-more, :root[data-theme="light"] .edapp-safe, :root[data-theme="light"] .edapp-why__c { box-shadow: 0 0 0 1px var(--line), 0 1px 2px rgba(60, 50, 20, 0.04); }
@media (max-width: 1100px) { .edapp-more { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 960px) {
  .edapp-mods { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .edapp-mod.card, .edapp-mod.edapp-mod--wide { grid-column: span 1; }
  .edapp-mod.card:last-child { grid-column: 1 / -1; }
  .edapp-more { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .edapp-mods { grid-template-columns: minmax(0, 1fr); }
  .edapp-mod.card:last-child { grid-column: auto; }
  .edapp-more { grid-template-columns: minmax(0, 1fr); gap: 20px; }
}

/* ---------- Planner and platform map */
.edapp-plan { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(340px, 1fr); gap: clamp(16px, 2vw, 24px); align-items: start; }
.edapp-plan__in { display: grid; gap: clamp(14px, 1.6vw, 18px); }
.edapp-plan__sub { margin: 4px 0 -2px; font: 600 12px/1.2 var(--font-body); letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); }
.edapp-plan__out { position: sticky; top: calc(var(--head-h) + 24px); }
.edapp-map { gap: 14px; }
.edapp-map .proj__big b { font-size: clamp(44px, 4.6vw, 60px); }
.edapp-map__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.edapp-map__app { display: grid; align-content: start; gap: 9px; padding: 12px; border-radius: 14px; background: var(--bg); }
.edapp-map__app > b { display: flex; align-items: center; gap: 7px; font: 700 13.5px/1.25 var(--font-body); letter-spacing: -0.01em; color: var(--ink); }
.edapp-map__app > b .psg-ic { font-size: 16px; flex: none; color: var(--accent-text, var(--sun-ink)); }
.edapp-map__app ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 5px; }
.edapp-map__app li { padding: 5px 8px; border-radius: 99px; background: var(--panel); color: var(--ink); font: 600 12px/1.1 var(--font-body); box-shadow: inset 0 0 0 1px var(--line-2); transition: opacity 0.25s, transform 0.25s; }
.edapp-map.is-live .edapp-map__app li { opacity: 0.4; background: transparent; color: var(--muted); box-shadow: inset 0 0 0 1px var(--line-2); }
.edapp-map.is-live .edapp-map__app li.is-on { opacity: 1; background: var(--gold-soft, var(--sun-wash)); color: var(--ink); box-shadow: inset 0 0 0 1.5px var(--gold-line, var(--sun-deep)); }
html.motion .edapp-map.is-live .edapp-map__app li.is-pop { animation: edapp-pop 0.45s cubic-bezier(.2, .9, .3, 1.4); }
@keyframes edapp-pop { from { transform: scale(0.82); } }
.edapp-map__base { margin: 2px 0 0; }
.edapp-map__base li { font: 500 14px/1.4 var(--font-body); }
.edapp-map__fill { justify-self: center; border: 0; background: none; cursor: pointer; padding: 6px 4px; }
.edapp-map__fill:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; border-radius: 6px; }
@media (max-width: 960px) { .edapp-plan { grid-template-columns: minmax(0, 1fr); } .edapp-plan__out { position: static; } }
@media (max-width: 420px) { .edapp-map__grid { grid-template-columns: minmax(0, 1fr); } }

/* ---------- People in charge, and privacy */
.edapp-safe { margin-top: clamp(16px, 2vw, 24px); display: grid; grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.25fr); gap: clamp(24px, 4vw, 56px); padding: clamp(24px, 3.6vw, 48px); border-radius: var(--radius-card); background: var(--panel); }
.edapp-safe__head { display: grid; align-content: start; gap: 14px; }
.edapp-safe__head h3 { font: 700 clamp(24px, 2.4vw, 30px)/1.15 var(--font-body); letter-spacing: -0.025em; color: var(--ink); }
.edapp-safe__head p { color: var(--ink-2); line-height: 1.6; }
.edapp-safe__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 28px; align-content: start; }
.edapp-safe__list li { font: 400 15px/1.55 var(--font-body); color: var(--ink-2); }
.edapp-safe__list b { color: var(--ink); font-weight: 700; }
@media (max-width: 860px) { .edapp-safe, .edapp-safe__list { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Why ProjectSG */
.edapp-why { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(16px, 2vw, 24px); }
.edapp-why__c.card { gap: 12px; color: inherit; }
.edapp-why__c > b { font: 700 19px/1.25 var(--font-body); letter-spacing: -0.018em; color: var(--ink); }
.edapp-why__c > span:not(.more):not(.medal):not(.edapp-why__logos) { font: 400 15px/1.55 var(--font-body); color: var(--ink-2); }
.edapp-why__c .more { margin-top: auto; padding-top: 4px; }
.edapp-why__logos { display: flex; align-items: center; gap: 10px; height: 60px; padding: 8px 12px; border-radius: 12px; background: #fff; box-shadow: inset 0 0 0 1px rgba(22, 24, 29, 0.06); }
.edapp-why__logos img { max-height: 100%; width: auto; min-width: 0; object-fit: contain; }
.edapp-why__logos img:first-child { max-width: 62%; }
@media (max-width: 1100px) { .edapp-why { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .edapp-why { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Reduced motion: still, complete states */
@media (prefers-reduced-motion: reduce) {
  .edapp-step__card, .edapp-stage__dev, .edapp-stage__track i, .edapp-scrs.is-live .edapp-scr, .edapp-scrs.is-live .edapp-scr.is-on, .edapp-rep, .edapp-stage[data-at="6"] .edapp-rep, .edapp-map__app li { transition: none !important; }
  .edapp-duo *, .edapp-stage *, .edapp-map * { animation: none !important; }
}
