/* LimeAdmissions redesign layer (spec 3.1) */
:root {
  --lm-ink:#111111;
  --lm-lime:#c5f135;
  --lm-moss:#3f5a0a;
  --lm-page:#f4f6ec;
  --lm-surface:#ffffff;
  --lm-inset:#fbfbf7;
  --lm-muted:#555555;
  --lm-muted-soft:#666666;
  --lm-line:#dddddd;
  --lm-body:#333333;
  --lm-alarm:#c0392b;
  --lm-alarm-fig:#ff6b5e;
  --lm-on-dark:#cccccc;
  --lm-on-dark-lo:#bbbbbb;
  --lm-bar-h:64px;
  --lm-gutter:clamp(20px,6vw,72px);
  --lm-font:Archivo,Helvetica,sans-serif;
  --lm-serif:Georgia,serif;
}

/* ---- page, reset, links ------------------------------------------------ */
body.lm-page { background:var(--lm-page); }
.lm { margin:0; color:var(--lm-ink); font-family:var(--lm-font); font-size:15px; line-height:1.5; }
.lm :where(p,ul,ol,li,h1,h2,h3,strong,b,label,blockquote,figure) { margin:0; color:inherit; }
.lm :where(ul,ol) { padding-left:18px; }
.lm a:not(.lm-btn) { color:var(--lm-moss); }
.lm a:not(.lm-btn):hover { color:var(--lm-ink); }
.lm .lm-card--dark a:not(.lm-btn),
.lm .lm-summary a:not(.lm-btn) { color:var(--lm-lime); }
.lm .lm-card--dark a:not(.lm-btn):hover,
.lm .lm-summary a:not(.lm-btn):hover { color:#fff; }

/* ---- layout ------------------------------------------------------------- */
.lm-section { padding:56px var(--lm-gutter); border-top:2px solid var(--lm-ink); background:var(--lm-page); }
.lm-section--white { background:var(--lm-surface); }
.lm-inner { max-width:1200px; margin-left:auto; margin-right:auto; }
.lm-hero {
  max-width:1200px; margin-left:auto; margin-right:auto;
  padding:56px var(--lm-gutter) 48px;
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:48px; align-items:start;
}
.lm-hero--center { align-items:center; }
.lm-hero__main, .lm-hero__side { min-width:0; }
.lm-hero__side { display:flex; flex-direction:column; gap:12px; }
@media (max-width:899px) {
  .lm-hero { grid-template-columns:minmax(0,1fr); }
}

/* ---- type --------------------------------------------------------------- */
.lm-h1 { font:900 clamp(40px,5.2vw,66px)/1 var(--lm-font); letter-spacing:-.02em; margin:0 0 22px; text-wrap:balance; hyphens:manual; }
.lm-h1--ib { font-size:clamp(40px,5vw,62px); }
/* The generic .lm-h1 clamp floors at 40px, so a long headline on a phone just
   adds lines instead of scaling: the /ib/ hero was 320px tall on a 375px
   screen, half the visible page. This floor lets it come down. */
.lm-h1--ibhero { font-size:clamp(30px,3.4vw,44px); line-height:1.05; }
.lm-h1--tutoring { font-size:clamp(40px,5.4vw,68px); line-height:.98; text-wrap:wrap; }
.lm-hl { background:var(--lm-lime); padding:0 8px; -webkit-box-decoration-break:clone; box-decoration-break:clone; }
.lm-h2 { font:900 clamp(28px,3vw,36px)/1.05 var(--lm-font); letter-spacing:-.01em; margin:0 0 8px; }
.lm-h2--solo { margin-bottom:20px; }
.lm-h2--faq { font-size:clamp(26px,2.8vw,32px); margin-bottom:20px; }
.lm-h3 { font:900 24px/1.1 var(--lm-font); letter-spacing:-.01em; }
.lm-sub { font:400 20px/1.45 var(--lm-font); color:var(--lm-body); margin:0 0 26px; max-width:540px; }
.lm-lede { font:400 16px/1.45 var(--lm-font); color:var(--lm-muted); margin:0 0 22px; max-width:760px; }
.lm-body { font:400 15px/1.5 var(--lm-font); }
.lm-small { font:400 14px/1.4 var(--lm-font); color:var(--lm-muted); }
.lm-note { font:400 11px/1.4 var(--lm-font); color:var(--lm-muted-soft); }
.lm-eyebrow { font:600 11px/1 var(--lm-font); letter-spacing:.14em; text-transform:uppercase; color:var(--lm-moss); }
.lm-label { font:600 11px/1 var(--lm-font); letter-spacing:.12em; text-transform:uppercase; color:var(--lm-muted); }
.lm-kicker { font:700 11px/1 var(--lm-font); letter-spacing:.1em; color:var(--lm-muted); }

/* ---- buttons ------------------------------------------------------------ */
.lm-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:12px;
  box-sizing:border-box; border:2px solid var(--lm-ink); border-radius:0;
  background:var(--lm-surface); color:var(--lm-ink);
  font:700 16px/1 var(--lm-font); padding:14px; text-align:center;
  text-decoration:none; cursor:pointer;
}
.lm-btn--hero { font-size:18px; padding:18px 26px; }
.lm-btn--lg { font:900 20px/1 var(--lm-font); padding:20px 30px; }
.lm-btn--lime { background:var(--lm-lime); }
.lm-btn--dark { background:var(--lm-ink); color:#fff; }
.lm-btn--ghost { background:var(--lm-surface); }
.lm-btn--block { display:flex; width:100%; }
.lm-btn--split { justify-content:space-between; text-align:left; font:700 15px/1.35 var(--lm-font); padding:16px; }
.lm-card--dark .lm-btn--lime { border-color:var(--lm-lime); }
.lm-btns { display:flex; gap:10px; flex-wrap:wrap; }

/* ---- cards and prices --------------------------------------------------- */
.lm-card { box-sizing:border-box; min-width:0; background:var(--lm-surface); border:2px solid var(--lm-ink); padding:24px; }
.lm-card--dark { background:var(--lm-ink); color:#fff; }
.lm-card--lime { background:var(--lm-lime); }
.lm-card--inset { background:var(--lm-inset); }
.lm-card.lm-price { display:flex; flex-direction:column; padding:26px; }
.lm-card.lm-price--ib { padding:22px; }
/* The piece's name is what the buyer is picking between, so it carries more
   than the 11px caption .lm-label gives it everywhere else (owner, 20 Sep). */
.lm-card.lm-price .lm-label { font:800 14px/1.2 var(--lm-font); letter-spacing:.08em; }
.lm-price__head { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; }
.lm-price__fig { font:900 50px/1 var(--lm-font); }
.lm-card.lm-price .lm-price__fig { display:block; margin:12px 0; }
.lm-price--ib .lm-price__fig { font-size:44px; }
.lm-card.lm-price--ib .lm-price__fig { margin:12px 0 6px; }
.lm-price__was { font:400 18px/1 var(--lm-font); text-decoration:line-through; color:var(--lm-muted); margin-left:8px; }
.lm-price__list { font:400 15px/1.5 var(--lm-font); margin:0 0 20px; padding-left:18px; }
.lm-card.lm-price > .lm-btn { margin-top:auto; }
.lm-card--dark .lm-label { color:var(--lm-lime); }
/* The first-five offer, sat above the three prices. Dark so it reads as a
   different thing from the price cards, not a fourth one. Hidden in the HTML:
   js/lm-nav reveals it only while /slots.php still has a slot free. */
.lm-offer { display:flex; align-items:center; justify-content:space-between;
  gap:24px; flex-wrap:wrap; margin:0 0 22px; border-color:var(--lm-lime); }
.lm-offer__text { flex:1 1 300px; min-width:0; }
.lm-offer__fig { font:900 46px/1 var(--lm-font); color:var(--lm-lime); margin:8px 0 10px; }
.lm-offer__was { font:400 16px/1 var(--lm-font); color:var(--lm-on-dark-lo);
  margin-left:12px; letter-spacing:0; text-transform:none; }
.lm-offer__note { font:400 15px/1.5 var(--lm-font); color:var(--lm-line); margin:0; }
.lm-offer__cta { flex:0 0 auto; }
/* #pricing .lm-card makes every card a column and bottom-aligns its button.
   This one is a row with the CTA beside the price, so both need overriding,
   and at #pricing's own specificity or higher. */
#pricing .lm-card.lm-offer { flex-direction:row; }
#pricing .lm-card.lm-offer > .lm-btn { margin-top:0; }
@media (max-width:640px) {
  #pricing .lm-card.lm-offer { flex-direction:column; align-items:stretch; gap:18px; }
  /* A flex basis is the main-axis size, so it is a HEIGHT once this stacks. */
  .lm-offer__text { flex:0 1 auto; }
  .lm-offer__fig { font-size:40px; }
  .lm-offer__cta { width:100%; }
}
.lm-card--dark .lm-price__list { color:var(--lm-line); }
.lm-card--dark .lm-price__was { color:var(--lm-on-dark-lo); }
.lm-card--lime .lm-label { color:var(--lm-body); }
.lm-tag { display:inline-block; font:700 10px/1 var(--lm-font); letter-spacing:.1em; background:var(--lm-ink); color:#fff; padding:5px 7px; white-space:nowrap; }

/* ---- stats, chips, grids ------------------------------------------------ */
.lm-stat { display:grid; grid-template-columns:auto 1fr; gap:8px 14px; align-items:center; border:2px solid var(--lm-ink); padding:14px; }
.lm-chips { display:flex; flex-wrap:wrap; gap:6px; }
.lm-chip {
  display:inline-flex; align-items:center; justify-content:space-between; gap:8px;
  box-sizing:border-box; border:2px solid var(--lm-ink); border-radius:0;
  background:var(--lm-surface); color:var(--lm-ink);
  font:700 13px/1 var(--lm-font); padding:9px 12px; cursor:pointer;
}
.lm-chip[aria-pressed="true"], .lm-chip.is-on, .lm-vh:checked + .lm-chip { background:var(--lm-lime); }
.lm-vh { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
.lm-grid { display:grid; gap:12px; }
.lm-grid--auto { grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }
.lm-grid--3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.lm-grid--4 { grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
@media (max-width:1099px) {
  .lm-grid--4 { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:759px) {
  .lm-grid--3 { grid-template-columns:minmax(0,1fr); }
}
@media (max-width:619px) {
  .lm-grid--4 { grid-template-columns:minmax(0,1fr); }
}
.lm-uni { box-sizing:border-box; min-width:0; background:var(--lm-surface); border:2px solid var(--lm-ink); padding:16px; }
.lm-faq { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px 40px; font:400 15px/1.5 var(--lm-font); }

/* ---- motion and badge --------------------------------------------------- */
@keyframes lm-rise { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:none; } }
@keyframes lm-blink { 0%, 100% { opacity:1; } 50% { opacity:.35; } }
.lm-reveal { animation:lm-rise .7s ease both; }
.lm-badge { display:inline-flex; align-items:baseline; gap:10px; background:var(--lm-ink); color:#fff; padding:12px 16px; }
.lm-badge__fig { font:900 34px/1 var(--lm-font); color:var(--lm-lime); }
.lm-badge__label { font:700 17px/1.2 var(--lm-font); }

/* ---- header CTA (site.css section links are (0,3,2)/(0,4,2); this matches
       (0,4,2) and loads later, so it wins without !important) ------------- */
.lm-header nav a.lm-nav-cta:not(.nav-cross):not(.lang-switch) {
  display:inline-flex; align-items:center; box-sizing:border-box;
  background:var(--lm-lime); color:var(--lm-ink);
  border:2px solid var(--lm-ink); border-radius:0;
  padding:10px 14px; font:700 15px/1 var(--lm-font); text-decoration:none;
}
.lm-header nav a.lm-nav-cta:not(.nav-cross):not(.lang-switch):hover,
.lm-header nav a.lm-nav-cta[aria-current="page"]:not(.nav-cross):not(.lang-switch) {
  color:var(--lm-ink); border-color:var(--lm-ink);
}

/* The account link after the CTA (10 Oct 2026): an icon and a word, the word
   dropped on a phone so the row keeps its two lines. */
.lm-header nav a.lm-nav-account:not(.nav-cross):not(.lang-switch) {
  display:inline-flex; align-items:center; gap:6px; color:var(--lm-ink); text-decoration:none;
  font:700 15px/1 var(--lm-font); padding:6px 2px;
}
.lm-header nav a.lm-nav-account[aria-current="page"]:not(.nav-cross):not(.lang-switch) { text-decoration:underline; text-underline-offset:6px; }
@media (max-width:560px) {
  .lm-header nav a.lm-nav-account span { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
  .lm-header nav a.lm-nav-account svg { width:22px; height:22px; }
}

/* ---- sticky bar (spec 3.5): a duplicate CTA, so it only exists with JS ---- */
.lm-bar {
  position:fixed; left:0; right:0; bottom:0; z-index:40;
  display:none; align-items:center; gap:10px 16px; box-sizing:border-box;
  min-height:var(--lm-bar-h); padding:12px var(--lm-gutter);
  background:var(--lm-surface); border-top:2px solid var(--lm-ink);
  transform:translateY(110%); visibility:hidden;
  transition:transform .35s, visibility 0s linear .35s;
}
.js .lm-bar { display:flex; }
.lm-bar.is-stuck { transform:none; visibility:visible; transition:transform .35s, visibility 0s; }
.lm-dot { flex:none; width:8px; height:8px; border-radius:50%; background:var(--lm-moss); animation:lm-blink 1.4s infinite; }
.lm-bar__msg { flex:1; margin:0; font:700 15px/1.3 var(--lm-font); color:var(--lm-ink); }
.lm-bar .lm-btn { flex:none; white-space:nowrap; padding:12px 18px; font-size:15px; }
.lm-bar ~ .site-footer { padding-bottom:calc(var(--lm-bar-h) + 24px); }
.lm-bar:not(.is-stuck) ~ .widget-launcher.is-shown { opacity:0; visibility:hidden; }
.lm-bar.is-stuck ~ .widget-launcher { bottom:calc(var(--lm-bar-h) + 16px); }
@media (max-width:560px) {
  .consent-bar:not([hidden]) ~ .lm-bar { display:none; }
  /* A phone has no room for both: above the bar the launcher sat on the
     calculator's result and the price text (18 Sep 2026). */
  .lm-bar.is-stuck ~ .widget-launcher.is-shown { opacity:0; visibility:hidden; }
  .lm-bar__msg { font-size:13px; }
  .lm-bar .lm-btn { padding:12px; }
  .lm-header nav a.lm-nav-cta:not(.nav-cross):not(.lang-switch) { padding:8px 10px; font-size:14px; }
}

/* ---- modal -------------------------------------------------------------- */
.lm-modal { position:fixed; inset:0; z-index:70; display:none; align-items:center; justify-content:center; padding:24px; background:rgba(17,17,17,.7); }
.lm-modal.is-open { display:flex; }
.lm-modal__panel { box-sizing:border-box; width:min(960px,100%); max-height:90vh; overflow:auto; display:grid; grid-template-columns:1.4fr 1fr; background:var(--lm-surface); border:2px solid var(--lm-ink); }
.lm-modal__close { border:2px solid var(--lm-ink); border-radius:0; background:var(--lm-surface); color:var(--lm-ink); padding:6px 10px; font:700 12px/1 var(--lm-font); cursor:pointer; }
body.lm-modal-open { overflow:hidden; }
@media (max-width:719px) {
  .lm-modal__panel { grid-template-columns:minmax(0,1fr); }
}

/* ---- redaction, slot meter, booking builder ----------------------------- */
.lm-redact { display:inline-block; width:var(--w,6ch); height:1em; vertical-align:-.12em; background:var(--lm-ink); }
@media (forced-colors: active) {
  .lm-redact { background:CanvasText; forced-color-adjust:none; }
}
.lm-meter { display:flex; align-items:center; gap:6px; font:700 14px/1 var(--lm-font); }
.lm-pip { box-sizing:border-box; width:12px; height:12px; border:2px solid var(--lm-ink); background:var(--lm-lime); }
.lm-pip.is-used { background:var(--lm-line); }
.lm-steps { display:flex; flex-direction:column; gap:20px; }
.lm-step > .lm-eyebrow { display:block; margin-bottom:10px; }
.lm-summary { display:flex; flex-direction:column; gap:14px; align-self:start; position:sticky; top:24px; padding:28px; background:var(--lm-ink); color:#fff; }
.lm-summary .lm-eyebrow { color:var(--lm-lime); }

/* ---- accessibility floor (HO/01-PLAN Phase 8) --------------------------- */
.lm :focus-visible, .lm-header :focus-visible, .lm-bar :focus-visible, .lm-modal :focus-visible {
  outline:3px solid var(--lm-moss); outline-offset:2px;
}
.lm-vh:focus-visible + .lm-chip { outline:3px solid var(--lm-moss); outline-offset:2px; }
.lm .lm-card--dark :focus-visible, .lm .lm-summary :focus-visible, .lm .lm-badge :focus-visible { outline-color:#fff; }
@media (max-width:480px) {
  .lm .lm-btn, .lm .lm-chip, .lm-bar .lm-btn, .lm-modal__close,
  .lm-header nav a.lm-nav-cta:not(.nav-cross):not(.lang-switch) { min-height:44px; }
  .lm input[type="range"] { min-height:44px; }
}
@media (prefers-reduced-motion: reduce) {
  .lm-reveal { animation:none; }
  .lm-bar, .lm-bar.is-stuck { transition:none; }
  .lm-dot { animation:none; }
}

/* ---- / hero: university cards (Task 3) ---- */
.lm-unis__title{font-size:22px;font-weight:900;line-height:1.1;letter-spacing:-.01em;margin:0 0 12px}
.lm-unis{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 12px;padding:0;list-style:none}
.lm-uni__name{display:block;font-size:22px;font-weight:900;line-height:1}
.lm-uni__cap{display:block;margin-top:6px;font-size:14px;line-height:1.3;color:var(--lm-muted)}
.lm-unis__note{margin-top:12px;color:var(--lm-muted-soft)}
.lm-btn--split{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left}
/* ---- price cards (Task 3) ---- */
.lm-card__head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.lm-card__note{margin-top:10px}
#pricing .lm-card{display:flex;flex-direction:column;padding:26px}
#pricing .lm-card > .lm-btn{margin-top:auto}
#pricing p.lm-price{margin:12px 0}
#pricing .lm-price__list{margin:0 0 20px}
#pricing .lm-inner > .lm-note{margin-top:16px;font-size:15px;line-height:1.4;color:var(--lm-muted)}
.lm-section .lm-sub{font-size:16px;line-height:1.45;color:var(--lm-muted);max-width:760px;margin:0 0 22px}
/* ---- the annotated statement (Task 3) ---- */
.lm-stmt{display:grid;grid-template-columns:1fr;border:2px solid var(--lm-ink);background:var(--lm-surface)}
.lm-stmt__text{padding:28px 32px;font-family:Georgia,"Times New Roman",serif;font-size:16px;line-height:1.7;color:#222;background:var(--lm-inset)}
.lm-stmt__text p{margin:0 0 16px}
.lm-stmt__text p:last-child{margin:0}
.lm-stmt__text .lm-stmt__q,.lm-stmt__text .lm-stmt__redacted{margin:0 0 6px;font-family:Archivo,system-ui,sans-serif;font-size:11px;font-weight:700;line-height:1.2;letter-spacing:.1em;color:var(--lm-muted)}
.lm-stmt mark{background:var(--lm-lime);color:inherit;padding:0 2px;outline:0 solid transparent;transition:outline .2s}
.lm-stmt mark.is-active{outline:3px solid var(--lm-ink)}
.lm-stmt__side{display:flex;flex-direction:column;gap:8px;padding:22px 24px;border-top:2px solid var(--lm-ink)}
.lm-stmt__rules{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.lm-rule{display:block;width:100%;min-height:44px;margin:0;padding:12px 14px;text-align:left;font-family:inherit;font-size:14px;font-weight:400;line-height:1.45;color:var(--lm-ink);background:var(--lm-surface);border:2px solid var(--lm-line);border-radius:0;cursor:default}
.js .lm-rule{cursor:pointer}
.js .lm-rule:hover{border-color:var(--lm-ink)}
.lm-rule.is-active{background:var(--lm-lime);border-color:var(--lm-ink)}
.lm-rule:focus-visible{outline:3px solid var(--lm-moss);outline-offset:2px}
.lm-rule__title{display:block;margin-bottom:6px;font-size:11px;font-weight:700;line-height:1.2;letter-spacing:.1em;color:var(--lm-moss)}
.lm-stmt__foot{margin-top:auto;padding-top:12px;font-size:13px;color:var(--lm-muted)}
.lm-stmt__warn{margin:0 0 20px}
@media (max-width:480px){.lm-stmt__text{padding:20px 18px}.lm-stmt__side{padding:18px}}
@media (min-width:900px){.lm-stmt{grid-template-columns:1fr 1fr}.lm-stmt--full{grid-template-columns:2fr 1fr}.lm-stmt__side{border-top:0;border-left:2px solid var(--lm-ink)}}
/* ---- spacing the scoped reset removed (Task 3 visual check) ---- */
.lm-btns + .lm-small{margin-top:14px}
.lm-grid + .lm-note{margin-top:16px}
/* ---- guides list (Task 3) ---- */
.lm-guides{margin:0;padding:0 0 0 18px}
.lm-guides li{margin:0 0 8px}

/* ---- /ib/ work wall and sample dialog (Task 4) ------------------------- */
.lm .lm-work__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.lm .lm-work__card { display: flex; flex-direction: column; gap: 10px; min-height: 44px; padding: 18px;
  border: 2px solid var(--lm-ink); background: var(--lm-inset); color: var(--lm-ink);
  text-align: left; text-decoration: none; }
.lm .lm-work__card:hover { background: var(--lm-lime); }
.lm .lm-work__card:focus-visible { outline: 3px solid var(--lm-moss); outline-offset: 2px; }
.lm .lm-work__label { margin: 0; font-size: 11px; font-weight: 700; line-height: 1.2;
  letter-spacing: .1em; color: var(--lm-muted); }
.lm .lm-work__row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
.lm .lm-work__score { margin: 0; font-size: 56px; font-weight: 900; line-height: 1; letter-spacing: -.01em; }
.lm .lm-work__badge { display: inline-block; padding: 6px 8px; background: #eeeeee; color: var(--lm-ink);
  font-size: 13px; font-weight: 700; line-height: 1; }
.lm .lm-work__badge--top { background: var(--lm-lime); }
.lm .lm-work__open { margin-top: auto; font-size: 13px; font-weight: 700; line-height: 1;
  text-decoration: underline; }
.lm .lm-work__next { display: flex; flex-direction: column; justify-content: center; gap: 10px;
  padding: 18px; border: 2px solid var(--lm-ink); background: var(--lm-ink); color: #ffffff; }
.lm .lm-work__nexttext { margin: 0; font-size: 22px; font-weight: 900; line-height: 1.15; color: #ffffff; }
.lm .lm-work__extracts { display: grid; gap: 12px; margin-top: 24px; }
.lm-work-ready .lm .lm-work__extracts { display: none; }
.lm .lm-work__extract, .lm .lm-work__dialog { display: grid; grid-template-columns: 1.4fr 1fr; }
.lm .lm-work__extract { border: 2px solid var(--lm-ink); background: var(--lm-surface); }
.lm .lm-work__piece { min-width: 0; padding: 28px 32px; background: var(--lm-inset);
  border-right: 2px solid var(--lm-ink); }
.lm .lm-work__meta { display: flex; flex-direction: column; gap: 14px; min-width: 0; padding: 24px; }
.lm .lm-work__meta .lm-work__score { font-size: 64px; }
.lm .lm-work__meta .lm-btn { margin-top: auto; }
.lm .lm-work__file { display: block; width: 100%; height: 70vh; border: 1px solid var(--lm-line);
  background: var(--lm-surface); }
.lm .lm-work__placeholder { margin: 0; padding: 18px; border: 2px dashed var(--lm-muted); color: var(--lm-body);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 13px; line-height: 1.5; }
.lm .lm-work__modal { position: fixed; inset: 0; z-index: 70; display: flex; align-items: center;
  justify-content: center; padding: 24px; background: rgba(17, 17, 17, .7); }
.lm .lm-modal[hidden] { display: none; }
.lm .lm-work__panel { position: relative; display: block; width: min(960px, 100%); max-height: 90vh;
  overflow: auto; padding: 0; border: 2px solid var(--lm-ink); background: var(--lm-surface); }
.lm .lm-work__bar { position: sticky; top: 0; z-index: 1; display: flex; justify-content: flex-end;
  padding: 10px; border-bottom: 2px solid var(--lm-ink); background: var(--lm-surface); }
.lm .lm-work__bar .lm-modal__close { min-width: 44px; min-height: 44px; }
html.lm-modal-open { overflow: hidden; }
@media (max-width: 720px) {
  .lm .lm-work__extract, .lm .lm-work__dialog { grid-template-columns: 1fr; }
  .lm .lm-work__piece { padding: 20px; border-right: 0; border-bottom: 2px solid var(--lm-ink); }
  .lm .lm-work__file { height: 60vh; }
  .lm .lm-work__modal { padding: 0; }
  .lm .lm-work__panel { width: 100%; height: 100%; max-height: none; border: 0; }
}
/* ---- /ib/ price cards and hero badge (Task 4 reconciliation) ---- */
.lm-card.lm-price{padding:22px}
.lm-card.lm-price .lm-price__fig{font-size:44px;margin:12px 0 6px}
.lm-card.lm-price .lm-note{margin:0 0 18px;font:700 16px/1.4 var(--lm-font);color:var(--lm-ink)}
.lm-hero__main .lm-badge{margin-top:18px}
/* ---- /ib/ hero proof: the marked pieces, for arrivals that skip the intro ---- */
.lm-proof { margin-top:10px; padding:14px 16px; background:var(--lm-ink); color:#fff; }
.lm-proof__title { margin-top:0; margin-bottom:12px; font:700 11px/1.2 var(--lm-font); letter-spacing:.1em; text-transform:uppercase; color:var(--lm-lime); }
.lm-proof__list { list-style:none; margin-top:0; margin-bottom:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px 16px; }
.lm-proof__list li { display:flex; flex-direction:column; gap:4px; min-width:0; }
.lm-proof__list b { font:900 22px/1 var(--lm-font); color:#fff; }
.lm-proof__list span { font:700 10px/1.3 var(--lm-font); letter-spacing:.08em; color:#a9ad9f; }
.lm-proof__list .lm-proof__row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.lm-proof__list .lm-proof__badge { display:inline-block; padding:3px 6px;
  background:var(--lm-lime); color:var(--lm-ink);
  font:900 12px/1 var(--lm-font); letter-spacing:0; white-space:nowrap; }
/* The lead into the proof panel, and the box under it. Both are block-level
   in #pricing's inner column, so the two boxes are the same width by default. */
.lm-proof__lead { margin:22px 0 0; font:400 15px/1.5 var(--lm-font); color:var(--lm-muted); }
.lm-samples { display:flex; align-items:center; justify-content:space-between; gap:16px;
  margin-top:10px; padding:16px; box-sizing:border-box;
  background:var(--lm-surface); border:2px solid var(--lm-ink); color:var(--lm-ink);
  font:700 16px/1.2 var(--lm-font); text-decoration:none; }
.lm-samples__arrow { font-size:20px; }
/* "Scroll down to see more" and every other in-page link glide rather than
   jump. Off for anyone who asks the OS for less motion. */
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior:smooth; } }
.lm-offer__left { margin:0 0 12px; font:900 17px/1 var(--lm-font); color:var(--lm-lime); }
.lm-offer__tag { display:inline-block; margin:0 0 12px; padding:4px 8px;
  border:1px solid var(--lm-lime); color:var(--lm-lime);
  font:700 11px/1 var(--lm-font); letter-spacing:.12em; text-transform:uppercase; }
@media (max-width:640px) {
  /* Seven one-per-row cards ran to 1,028px of scroll at a 56px figure. Two
     columns at a smaller figure is the same wall in about half the height. */
  .lm .lm-work__grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .lm .lm-work__card { padding:14px; gap:8px; }
  .lm .lm-work__score { font-size:34px; }
  .lm .lm-work__next { grid-column:1 / -1; }
  /* The three price cards were 213px each, 639px for the set. */
  .lm-card.lm-price { padding:18px; }
  .lm-card.lm-price .lm-price__fig { font-size:36px; margin:8px 0 4px; }
}
@media (max-width:560px) {
  .lm-proof__list { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* ---------- IA calculator, /ib/ hero (Task 5) ------------------------------ */
.lm-calc { background: var(--lm-surface); border: 2px solid var(--lm-ink); border-radius: 0;
  padding: 24px; display: flex; flex-direction: column; gap: 14px; color: var(--lm-ink); min-width: 0; }
.lm-calc__title { font-size: 24px; font-weight: 900; line-height: 1.1; letter-spacing: -.01em; }
.lm-calc__sub { font-size: 15px; font-weight: 400; line-height: 1.4; color: var(--lm-muted); }
.lm-calc .lm-calc__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.lm-calc .lm-chip { border: 2px solid var(--lm-ink); border-radius: 0; padding: 9px 12px; margin: 0;
  font-family: inherit; font-size: 13px; font-weight: 700; line-height: 1;
  background: var(--lm-surface); color: var(--lm-ink); cursor: pointer; }
.lm-calc .lm-chip[aria-pressed="true"] { background: var(--lm-lime); }
.lm-calc__row { display: flex; justify-content: space-between; gap: 12px;
  font-size: 14px; font-weight: 700; line-height: 1; margin-bottom: 8px; }
.lm-calc__range { display: block; width: 100%; height: 44px; margin: 0;
  accent-color: var(--lm-ink); cursor: pointer; }
.lm-calc .lm-calc__stat { border: 2px solid var(--lm-ink); padding: 14px; display: grid;
  grid-template-columns: auto 1fr; gap: 8px 14px; align-items: center; background: none; }
.lm-calc__fig { font-size: 30px; font-weight: 900; line-height: 1; }
.lm-calc__fig--alarm { color: var(--lm-alarm); }
.lm-calc__cap { font-size: 15px; font-weight: 400; line-height: 1.35; color: var(--lm-body); }
.lm-calc__cap--ink { color: var(--lm-ink); }
.lm-calc__lead { font-size: 16px; font-weight: 700; line-height: 1.3; margin-top: 2px; }
.lm-calc__boxes { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.lm-calc__box { border: 2px solid var(--lm-ink); padding: 14px; background: var(--lm-surface); min-width: 0; }
.lm-calc__box--dark { background: var(--lm-ink); color: #fff; }
.lm-calc__eyebrow { font-size: 11px; font-weight: 600; line-height: 1; letter-spacing: .12em;
  color: var(--lm-muted); margin-bottom: 8px; }
.lm-calc__box--dark .lm-calc__eyebrow { color: var(--lm-lime); }
.lm-calc__need { font-size: 38px; font-weight: 900; line-height: 1; overflow-wrap: anywhere; }
.lm-calc__verdict { font-size: 13px; font-weight: 700; line-height: 1.35; margin-top: 6px; }
.lm-calc__box--dark .lm-calc__verdict { color: #fff; }
.lm-calc__line { font-size: 13px; font-weight: 400; line-height: 1.35; color: var(--lm-muted); margin-top: 4px; }
.lm-calc__box--dark .lm-calc__line { color: var(--lm-on-dark); }
.lm-calc__callout { font-size: 14px; font-weight: 400; line-height: 1.45; color: var(--lm-ink);
  background: var(--lm-inset); border-left: 4px solid var(--lm-lime); padding: 10px 12px; }
.lm-calc .lm-calc__cta { display: flex; justify-content: center; align-items: center; width: 100%;
  box-sizing: border-box; padding: 16px; font-size: 17px; font-weight: 700; line-height: 1; text-align: center; }
.lm-calc__source { font-size: 11px; font-weight: 400; line-height: 1.4; color: var(--lm-muted-soft); }
.lm-calc :focus-visible { outline: 3px solid var(--lm-moss); outline-offset: 2px; }
@media (max-width: 480px) {
  .lm-calc .lm-chip { min-height: 44px; }
}

/* ---- /tutoring/ booking builder (Task 8) ---------------------------------
   Chips are real radios inside their labels, so every choice posts without
   JS. The summary panel only exists with JS: its figures are computed live. */
.lm [hidden] { display: none !important; }
.lm-js-only { display: none; }
.js .lm-js-only { display: block; }
.js .lm-nojs { display: none; }
.lm-tutor { display: flex; flex-direction: column; gap: 16px; }
.lm-chip--lime { background: var(--lm-lime); color: var(--lm-ink); }
.lm-chip--grey { background: #eeeeee; color: var(--lm-ink); }
.lm-builder { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; align-items: start; }
@media (min-width: 900px) {
  .js .lm-builder { grid-template-columns: minmax(0, 1fr) 340px; }
}
.lm-builder__steps, .lm-panel, .lm-form { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.lm-builder .lm-step { border: 0; margin: 0; padding: 0; min-width: 0; }
.lm-builder .lm-step > legend { padding: 0; margin: 0 0 10px; }
.lm-opts { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.lm-opts--row { display: flex; flex-wrap: wrap; }
.lm-opts--hours { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lm-opt { position: relative; display: block; cursor: pointer; }
.lm-opt input { position: absolute; top: 0; left: 0; width: 1px; height: 1px; margin: 0; opacity: 0; }
.lm-opt__body {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 6px;
  box-sizing: border-box; min-height: 44px; height: 100%; padding: 12px 14px;
  border: 2px solid var(--lm-ink); background: var(--lm-surface); color: var(--lm-ink);
  font-size: 15px; font-weight: 700; line-height: 1.1;
}
.lm-opt__meta { font-size: 11px; font-weight: 600; line-height: 1.2; padding: 4px 6px; background: rgba(0, 0, 0, .08); }
.lm-opt input:checked + .lm-opt__body { background: var(--lm-lime); }
.lm-opt--dark input:checked + .lm-opt__body { background: var(--lm-ink); color: #ffffff; }
.lm-opt input:focus-visible + .lm-opt__body { outline: 3px solid var(--lm-moss); outline-offset: 2px; }
.lm-opts--hours .lm-opt__body { flex-direction: column; align-items: flex-start; justify-content: flex-start; padding: 16px; }
.lm-opt__h { font-size: 28px; font-weight: 900; line-height: 1; }
.lm-opt__n { font-size: 13px; font-weight: 400; line-height: 1.3; opacity: .8; }
.lm-flabel { display: block; margin: 12px 0 6px; font-size: 14px; font-weight: 600; line-height: 1.3; }
.lm-builder input[type="email"], .lm-builder input[type="text"], .lm-builder textarea,
.lm-ff input[type="email"], .lm-ff input[type="text"] {
  display: block; width: 100%; box-sizing: border-box; min-height: 44px; padding: 10px 12px;
  border: 2px solid var(--lm-ink); border-radius: 0; background: var(--lm-surface); color: var(--lm-ink);
  font: inherit; font-size: 16px;
}
.lm-builder textarea { min-height: 6rem; resize: vertical; }
.lm-ff input[type="email"]:focus-visible, .lm-ff input[type="text"]:focus-visible,
.lm-builder input[type="email"]:focus-visible, .lm-builder input[type="text"]:focus-visible,
.lm-builder textarea:focus-visible { outline: 3px solid var(--lm-moss); outline-offset: 2px; }
.lm-tick { display: flex; gap: 10px; align-items: flex-start; min-height: 44px; font-size: 15px; line-height: 1.45; cursor: pointer; }
.lm-tick input { flex: none; width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--lm-ink); }
/* A tick straight under small print with a link in it: without the gap the
   22px box sits 3px under the link and Lighthouse fails target-size. */
.lm-small + .lm-tick { margin-top: 12px; }
.lm-tick input:focus-visible { outline: 3px solid var(--lm-moss); outline-offset: 2px; }
.lm-mail { align-self: center; color: var(--lm-ink); font-weight: 600; overflow-wrap: anywhere; }
.lm-mail:focus-visible { outline: 3px solid var(--lm-moss); outline-offset: 2px; }
.lm-builder .lm-summary { display: none; }
.js .lm-builder .lm-summary {
  display: flex; flex-direction: column; gap: 14px; padding: 28px;
  background: var(--lm-ink); color: #ffffff;
}
@media (min-width: 900px) {
  .js .lm-builder .lm-summary { position: sticky; top: 24px; }
}
.lm-builder .lm-summary .lm-eyebrow { color: var(--lm-lime); }
.lm-summary__head { font-size: clamp(24px, 2.4vw, 30px); font-weight: 900; line-height: 1.1; }
.lm-summary__row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding-top: 14px; border-top: 1px solid #444444; }
.lm-summary__lbl { font-size: 15px; color: var(--lm-on-dark-lo); }
.lm-summary__fig { font-size: 40px; font-weight: 900; line-height: 1; }
.lm-summary__row .lm-price__was { margin-right: 8px; font-size: 18px; color: var(--lm-on-dark-lo); }
.lm-summary__note { font-size: 13px; line-height: 1.4; color: var(--lm-on-dark-lo); }
.lm-terms { margin-top: 24px; max-width: 72ch; }

/* /ib/first-five/ (spec 4.4). The states swap whole cards with [hidden], which
   the meter's display:flex would otherwise override. */
.lm-ff [hidden] { display: none !important; }
.lm-ff .lm-meter { margin: 0 0 24px; }
.lm-ff .lm-meter [data-ff-left] { margin-left: 6px; }
.lm-ff .lm-chips { margin: 14px 0 2px; }
.lm-ff .lm-chips label { display: inline-flex; }
.lm-ff .lm-chip { min-height: 44px; font-size: 14px; }
.lm-ff fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.lm-ff legend { padding: 0; margin: 0 0 2px; }
.lm-ff .lm-tick + .lm-tick { margin-top: 10px; }
.lm-ff .form-error { margin: 0; }
.lm-ff .lm-card--dark .lm-body { color: var(--lm-line); margin: 10px 0 20px; }
.lm-ff .lm-card > .lm-eyebrow + .lm-h3 { margin-top: 12px; }
.lm-ff__reserved .lm-body + .lm-body, .lm-ff__reserved .lm-body + .lm-small,
.lm-ff__reserved .lm-small + .lm-body { margin-top: 14px; }

/* Round 2 (14 Sep 2026): the tutoring refund promise and the founder card. */
.lm-promise { box-sizing: border-box; max-width: 540px; margin: 0 0 22px; padding: 14px 16px;
  background: var(--lm-lime); border: 2px solid var(--lm-ink); }
.lm-promise__head { font: 900 22px/1.15 var(--lm-font); margin: 0 0 6px; }
.lm-tutor__who { display: flex; gap: 14px; align-items: center; }
.lm-tutor__photo { flex: none; width: 112px; height: 112px; object-fit: cover; border: 2px solid var(--lm-ink); }
@media (max-width: 420px) { .lm-tutor__photo { width: 84px; height: 84px; } }

/* ---- cinematic intros (round 2). The cover paints before first paint and
       removes itself after 2.6s even if the script never runs. ------------ */
.lm-intro-pending body::after { content: ""; position: fixed; inset: 0; z-index: 95; background: #0e0f0d;
  animation: lm-cover-off 0s linear 2.6s forwards; }
@keyframes lm-cover-off { to { visibility: hidden; opacity: 0; } }
.lm-intro-open, .lm-intro-open body { overflow: hidden; }
.lm-intro { position: fixed; inset: 0; z-index: 96; display: flex; flex-direction: column; box-sizing: border-box;
  background: radial-gradient(120% 90% at 85% 0%, #1d2412 0%, #0e0f0d 55%); color: #ffffff;
  font-family: var(--lm-font); cursor: pointer; overflow: hidden; outline: none;
  opacity: 0; transition: opacity .6s ease; }
.lm-intro.is-open { opacity: 1; }
.lm-intro.is-leaving { opacity: 0; transform: scale(1.06); transition: opacity .9s ease, transform .9s cubic-bezier(.4,0,.2,1); }
.lm-intro p, .lm-intro h2, .lm-intro ul { margin: 0; color: inherit; }
.lm-intro__bar { display: flex; justify-content: space-between; gap: 16px; padding: 22px var(--lm-gutter);
  font: 700 13px/1 var(--lm-font); letter-spacing: .12em; text-transform: uppercase; color: #a9ad9f; }
.lm-intro__brand b { color: var(--lm-lime); font-weight: 700; }
.lm-intro__stage { position: relative; flex: 1; }
.lm-intro__slide { position: absolute; inset: 0; box-sizing: border-box; display: flex; flex-direction: column;
  justify-content: center; padding: 0 var(--lm-gutter) 6vh; opacity: 0; visibility: hidden;
  transform: translateY(48px); transition: opacity .6s ease, transform .9s cubic-bezier(.2,.7,.1,1), visibility 0s linear .9s; }
.lm-intro__slide.is-active { opacity: 1; visibility: visible; transform: none;
  transition: opacity .7s ease .1s, transform 1s cubic-bezier(.2,.7,.1,1) .1s, visibility 0s; }
.lm-intro__slide.is-past { transform: translateY(-48px); }
.lm-intro__kicker { font: 700 13px/1.2 var(--lm-font) !important; letter-spacing: .16em; text-transform: uppercase;
  color: var(--lm-lime) !important; margin: 0 0 24px !important; }
.lm-intro__big { font: 900 clamp(40px, 7.4vw, 108px)/.98 var(--lm-font); letter-spacing: -.03em; max-width: 15ch;
  color: #ffffff; text-wrap: balance; }
.lm-intro__big .lm-hl { background: none; color: var(--lm-lime); padding: 0; box-shadow: none; }
.lm-intro__word { display: inline-block; opacity: 0; transform: translateY(.45em);
  transition: opacity .6s ease, transform .9s cubic-bezier(.2,.7,.1,1); }
.lm-intro__slide.is-active .lm-intro__word { opacity: 1; transform: none; transition-delay: var(--d, 0s); }
.lm-intro:not(.is-open) { pointer-events: none; }
.lm-intro__sub { font: 400 clamp(17px, 2vw, 24px)/1.45 var(--lm-font); color: #d2d5cb !important; margin-top: 26px !important; max-width: 42ch; }
.lm-intro__list { display: flex; flex-wrap: wrap; gap: 18px 36px; margin-top: 34px !important; padding: 0; list-style: none;
  font: 900 clamp(26px, 3.6vw, 48px)/1 var(--lm-font); color: #ffffff; }
.lm-intro__list li span { display: block; margin-top: 8px; font: 700 11px/1.3 var(--lm-font); letter-spacing: .1em; color: #a9ad9f; }
.lm-intro__btns { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 36px; }
.lm-intro .lm-btn--ghost-dark { background: transparent; color: #ffffff; border-color: #ffffff; }
.lm-intro__photo { width: 120px; height: 120px; object-fit: cover; border: 3px solid var(--lm-lime); margin: 0 0 26px; }
.lm-intro__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px var(--lm-gutter) 28px; }
.lm-intro__dots { display: flex; gap: 6px; }
.lm-intro__dot { width: 28px; height: 4px; background: #3b3e36; transition: background .5s ease; }
.lm-intro__dot.is-on { background: var(--lm-lime); }
.lm-intro__hint { flex: 1; text-align: center; font: 600 13px/1.2 var(--lm-font); color: #8f9386; animation: lm-blink 2.4s infinite; }
.lm-intro.is-last .lm-intro__hint { visibility: hidden; }
.lm-intro__skip { min-height: 44px; padding: 10px 14px; background: none; border: 2px solid #5a5e53; color: #ffffff;
  font: 700 13px/1 var(--lm-font); cursor: pointer; }
.lm-intro :focus-visible { outline: 3px solid var(--lm-lime); outline-offset: 3px; }
.lm-intro-landing .lm-hero > * { animation: lm-land 1.2s cubic-bezier(.2,.7,.1,1) both; }
.lm-intro-landing .lm-hero > :nth-child(2) { animation-delay: .2s; }
@keyframes lm-land { from { opacity: 0; transform: translateY(56px); } to { opacity: 1; transform: none; } }
@media (max-width: 560px) {
  .lm-intro__hint { display: none; }
  .lm-intro__photo { width: 88px; height: 88px; }
}
@media (prefers-reduced-motion: reduce) {
  .lm-intro, .lm-intro.is-leaving, .lm-intro__slide, .lm-intro__slide.is-active, .lm-intro__word {
    transition: opacity .25s linear !important; transform: none !important; }
  .lm-intro-landing .lm-hero > * { animation: none; }
  .lm-intro__hint { animation: none; }
}

/* ---- intro slide 1: the pie of 45 points. A circle stroked as wide as its
       radius is a filled disc; the dasharray cuts the wedges, which draw
       themselves once the slide is active. CSS-only, reduced-motion guarded. -- */
.lm-intro__slide[data-layout="chart"] { padding-right: calc(var(--lm-gutter) + min(34vw, 400px)); }
.lm-intro__ring { position: absolute; right: var(--lm-gutter); top: 50%; width: min(28vw, 340px);
  translate: 0 -50%; opacity: 0; transform: translateY(24px);
  transition: opacity .7s ease, transform 1s cubic-bezier(.2,.7,.1,1); }
.lm-intro__slide.is-active .lm-intro__ring { opacity: 1; transform: none; transition-delay: .35s; }
.lm-intro__ringsvg { display: block; width: 100%; height: auto; }
.lm-intro__arc { fill: none; stroke-width: 96; stroke-dasharray: 0 100; transform: rotate(-90deg);
  transform-origin: 50% 50%; transition: stroke-dasharray 1.1s cubic-bezier(.2,.7,.1,1); }
.lm-intro__arc--ia { stroke: var(--lm-lime); }
.lm-intro__arc--core { stroke: #ffffff; stroke-dashoffset: -19; }
.lm-intro__arc--exam { stroke: #666b5f; stroke-dashoffset: -26; }
.lm-intro__slide.is-active .lm-intro__arc--ia { stroke-dasharray: 19 81; transition-delay: .5s; }
.lm-intro__slide.is-active .lm-intro__arc--core { stroke-dasharray: 7 93; transition-delay: 1.3s; }
.lm-intro__slide.is-active .lm-intro__arc--exam { stroke-dasharray: 74 26; transition-delay: 1.7s; }
.lm-intro .lm-intro__ringcap { margin: 18px 0 0; font: 900 clamp(30px, 3.4vw, 48px)/1 var(--lm-font);
  letter-spacing: -.02em; color: var(--lm-lime); }
.lm-intro .lm-intro__ringcap span { display: block; margin-top: 8px; font: 700 11px/1.3 var(--lm-font);
  letter-spacing: .14em; text-transform: uppercase; color: #a9ad9f; }
.lm-intro .lm-intro__legend { display: grid; gap: 8px; margin: 16px 0 0; padding: 0; list-style: none;
  font: 700 12px/1.3 var(--lm-font); letter-spacing: .1em; text-transform: uppercase; color: #a9ad9f; }
.lm-intro__sw { display: inline-block; width: 10px; height: 10px; margin-right: 10px; }
.lm-intro__sw--ia { background: var(--lm-lime); }
.lm-intro__sw--core { background: #ffffff; }
.lm-intro__sw--exam { background: #666b5f; }
@media (max-width: 760px) {
  .lm-intro__slide[data-layout="chart"] { padding-right: var(--lm-gutter); }
  .lm-intro__ring { position: static; translate: none; width: auto; display: flex; align-items: center;
    gap: 20px; margin-top: 22px; }
  .lm-intro__ringsvg { width: 136px; flex: none; }
  .lm-intro .lm-intro__ringcap { margin: 0; }
  .lm-intro .lm-intro__legend { margin-top: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .lm-intro__ring { transition: none !important; transform: none !important; }
  .lm-intro__arc { transition: none !important; }
}
/* ---- a long headline (slide 3) steps down one size so it never meets its sub. */
.lm-intro__slide[data-layout="long"] .lm-intro__big { font-size: clamp(36px, 6.2vw, 92px); max-width: 17ch; }
/* ---- intro slide 4: "Why?" at poster size, the answer beneath it. ---------- */
.lm-intro__slide[data-layout="why"] .lm-intro__big { font-size: clamp(72px, 13vw, 190px); }
.lm-intro .lm-intro__big--mid { margin-top: 14px; max-width: 24ch; letter-spacing: -.02em; }
.lm-intro__slide[data-layout="why"] .lm-intro__big--mid { font-size: clamp(26px, 3.8vw, 60px); }
.lm-intro__slide.is-active .lm-intro__big--mid .lm-intro__word { transition-delay: calc(var(--d, 0s) + .4s); }
.lm-intro__sub b { color: #ffffff; font-weight: 700; }
/* ---- the calculator is where the intro lands: a lime hard shadow always, a
       pulse when the hash points at it. ------------------------------------- */
.lm .lm-calc { border-width: 3px; box-shadow: 8px 8px 0 var(--lm-lime); }
.lm .lm-calc__title .lm-hl { padding: 2px 8px; }
#ia-calc:target { animation: lm-calc-flash 1.8s ease-out .9s 1 both; }
@keyframes lm-calc-flash { 0% { box-shadow: 8px 8px 0 var(--lm-lime); }
  40% { box-shadow: 0 0 0 12px var(--lm-lime); } 100% { box-shadow: 8px 8px 0 var(--lm-lime); } }
@media (prefers-reduced-motion: reduce) { #ia-calc:target { animation: none; } }

/* The intro's "Calculate my IA" lands on #ia-calc while the hero is still rising
   56px into place; the margin keeps the card's title on screen afterwards. */
#ia-calc { scroll-margin-top: 64px; }
/* Reviews (15 Sep 2026): the section is hidden until js/lm-reviews finds a published review. */
.lm-reviews__list { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); margin: 24px 0 16px; }
.lm-review { margin: 0; padding: 20px; background: #ffffff; border: 2px solid #111311; }
.lm-review__stars { margin: 0 0 8px; color: #5f7d10; font-size: 18px; letter-spacing: 2px; }
.lm-review__text { margin: 0 0 12px; font: 400 16px/1.5 var(--lm-font); }
.lm-review__who { font: 600 13px/1.3 var(--lm-font); color: #5a5e53; }
.lm-reviews__avg { margin: 8px 0 0; font: 700 15px/1.3 var(--lm-font); }
.lm-reviews__group:not([hidden]) ~ .lm-reviews__group:not([hidden]) { margin-top: 40px; }
/* It sits in the old article column on the checkout pages: block-axis spacing
   only, so that column's centring and side padding survive (README, "Two
   things that will bite you"). */
.lm-reviews--inline { margin-block: 1.6rem 2rem; padding-block: 1.4rem 0.4rem; border-top: 2px solid #111311; border-bottom: 2px solid #111311; }
.lm-reviews--inline .lm-h2 { font-size: 24px; }
.lm-reviews--inline .lm-reviews__group:not([hidden]) ~ .lm-reviews__group:not([hidden]) { margin-top: 28px; }
/* The review carousel (owner, 11 Oct 2026): one card at a time, an arrow either side.
   Every card shares one grid cell, so the box keeps the tallest card's height. */
.lm-reviews__list.lm-carousel { display: grid; grid-template-columns: 48px minmax(0, 1fr) 48px;
  grid-template-areas: "prev track next" ". count ."; gap: 6px 16px; align-items: center; max-width: 820px;
  margin-block: 16px 10px; margin-left: auto; margin-right: auto; }
/* Centred on the landing pages (owner, 12 Oct 2026: the box sat off to the side):
   heading, average, box and note share one axis, the review text stays left-aligned.
   Above the order forms the box already fills the column, so they keep its alignment. */
.lm-reviews:not(.lm-reviews--inline) .lm-reviews__group { text-align: center; }
.lm-reviews:not(.lm-reviews--inline) .lm-reviews__note { max-width: 820px; margin-left: auto; margin-right: auto; }
.lm-review:not(.lm-review--stars) { text-align: left; }
.lm-reviews__list.lm-carousel--one { grid-template-columns: minmax(0, 1fr); grid-template-areas: "track"; }
.lm-carousel__track { grid-area: track; display: grid; }
.lm-carousel__track > .lm-review { grid-area: 1 / 1; box-shadow: 0 6px 0 var(--lm-ink); }
.lm-carousel__track > .lm-review:not(.is-on) { visibility: hidden; }
.lm-carousel__track[data-dir="next"] > .lm-review.is-on { animation: lm-review-next .3s ease both; }
.lm-carousel__track[data-dir="prev"] > .lm-review.is-on { animation: lm-review-prev .3s ease both; }
@keyframes lm-review-next { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: none; } }
@keyframes lm-review-prev { from { opacity: 0; transform: translateX(-24px); } to { opacity: 1; transform: none; } }
.lm-carousel__btn { box-sizing: border-box; width: 48px; height: 48px; padding: 0; border: 2px solid var(--lm-ink);
  border-radius: 0; background: var(--lm-surface); color: var(--lm-ink); font: 700 20px/1 var(--lm-font); cursor: pointer; }
.lm-carousel__btn:hover { background: var(--lm-ink); color: #ffffff; }
.lm-carousel__btn:active { transform: translateY(2px); }
.lm-carousel__btn:focus-visible { outline: 3px solid var(--lm-ink); outline-offset: 3px; }
.lm-carousel__btn--prev { grid-area: prev; }
.lm-carousel__btn--next { grid-area: next; }
.lm-carousel__count { grid-area: count; margin: 0; text-align: center; font: 600 13px/1.3 var(--lm-font); color: #5a5e53; }
/* Long reviews are cut at four lines (seven until 12 Oct 2026), so one long review
   cannot leave every other card mostly empty; "Read all" (js/lm-reviews) opens it. */
.lm-carousel .lm-review__text { padding: 10px 14px; margin-bottom: 10px; }
.lm-carousel .lm-review__words { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; }
.lm-carousel .lm-review.is-open .lm-review__words { display: block; -webkit-line-clamp: none; overflow: visible; }
.lm-review__more { margin: -4px 0 12px; padding: 0; border: 0; background: none; color: var(--lm-ink);
  font: 700 14px/1.3 var(--lm-font); text-decoration: underline; cursor: pointer; }
/* A review that is its stars alone: the stars carry the card. */
.lm-review--stars { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; }
.lm-review--stars .lm-review__stars { font-size: 30px; letter-spacing: 4px; }
/* Phones: the card takes the width, the arrows sit under it beside the count. */
@media (max-width: 640px) {
  .lm-reviews__list.lm-carousel { grid-template-areas: "track track track" "prev count next"; gap: 12px 12px; }
}
/* Compact (owner, 12 Oct 2026: the section took too much of the page): less padding
   than other sections, a smaller heading, tighter cards and a smaller note. Only the
   block padding changes, so the gutter (the inline padding) stays the page's. */
.lm-section.lm-reviews { padding-block: 32px; }
.lm-reviews:not(.lm-reviews--inline) .lm-h2 { font-size: clamp(22px, 2.2vw, 28px); }
.lm-carousel__track > .lm-review { padding: 16px 18px; }
.lm-carousel .lm-review__stars { margin-bottom: 6px; }
.lm-reviews__note { font-size: 13px; }
@media (prefers-reduced-motion: reduce) {
  .lm-carousel__track > .lm-review.is-on { animation: none; }
}

/* Ratings beside the booking buttons and the subject chips (owner, 14 Oct 2026: there
   for anyone who looks, never loud). js/lm-reviews fills and shows them. */
.lm-rating { margin-left: .45em; font-weight: 600; font-size: .86em; white-space: nowrap; opacity: .85; }
.lm-opt__meta .lm-rating { margin-left: .3em; font-size: 1em; opacity: 1; }
/* /tutoring/#intro, the free 30 minutes by subject (18 Oct 2026). A button per
   subject; js/cal opens the chosen tutor's calendar under them. The stage is a
   one-row grid whose row grows from 0fr to 1fr, so the calendar slides open to
   its own height, and the frames fade while one subject's calendar gives way to
   another's. Reduced motion skips both. */
.lm-pick { margin: 20px 0 16px; }
.lm-pick__step { border: 0; margin: 0; padding: 0; min-width: 0; }
.lm-pick__step > legend { padding: 0; margin: 0 0 10px; }
.lm-pick__opts { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.lm-pick__stage { display: grid; grid-template-rows: 0fr; opacity: 0; visibility: hidden; scroll-margin-top: 96px;
  transition: grid-template-rows .45s ease, opacity .3s ease, visibility 0s linear .45s; }
.lm-pick__stage.is-open { grid-template-rows: 1fr; opacity: 1; visibility: visible;
  transition: grid-template-rows .45s ease, opacity .3s ease .05s; }
.lm-pick__inner { min-height: 0; overflow: hidden; }
.lm-pick__who { margin: 20px 0 10px; font-size: 15px; font-weight: 700; line-height: 1.3; }
.lm-pick__frames { position: relative; transition: opacity .18s ease; }
.lm-pick__frames.is-swapping { opacity: 0; }
.lm-pick__frames .cal-embed { margin: 0; }
.lm-pick__frame.is-parked { position: absolute; top: 0; left: 0; right: 0; visibility: hidden; pointer-events: none; }
.lm-pick__stage.is-loading .lm-pick__who::after { content: "Loading the times"; display: block; margin-top: 4px;
  font-size: 14px; font-weight: 400; opacity: .7; animation: lm-pick-pulse 1.2s ease-in-out infinite; }
@keyframes lm-pick-pulse { 50% { opacity: .3; } }
@media (prefers-reduced-motion: reduce) {
  .lm-pick__stage, .lm-pick__stage.is-open, .lm-pick__frames { transition: none; }
  .lm-pick__stage.is-loading .lm-pick__who::after { animation: none; }
}
/* The chosen subject's reviews, under the subject chips on /tutoring/. */
.lm-subject-reviews { margin: 0 0 22px; padding: 14px 16px; background: var(--lm-surface); border: 2px solid var(--lm-ink); }
.lm-subject-reviews__head { margin: 0 0 10px; font: 700 14px/1.3 var(--lm-font); }
.lm-mini-review { margin: 0 0 12px; }
.lm-mini-review blockquote { margin: 0; font: 400 15px/1.45 var(--lm-font); color: var(--lm-body); }
.lm-mini-review figcaption { margin-top: 4px; font: 600 12px/1.3 var(--lm-font); color: #5a5e53; }
.lm-subject-reviews__more { margin: 0; font: 600 13px/1.3 var(--lm-font); }
.lm-subject-reviews__more a { color: var(--lm-ink); }
/* The free live sessions band (owner, 14 Oct 2026): one button to the Luma calendar. */
.lm-community { padding: 30px var(--lm-gutter); background: var(--lm-ink); color: #ffffff; border-top: 2px solid var(--lm-ink); }
.lm-community__inner { max-width: 1200px; margin: 0 auto; display: flex; flex-wrap: wrap; align-items: center;
  justify-content: space-between; gap: 18px 40px; }
.lm-community__text { flex: 1 1 420px; min-width: 0; }
.lm-community .lm-label { color: var(--lm-lime); }
.lm-community__head { margin: 8px 0 6px; font: 800 clamp(22px, 2.6vw, 30px)/1.15 var(--lm-font); color: #ffffff; }
.lm-community__sub { margin: 0; max-width: 640px; font: 400 15px/1.5 var(--lm-font); color: #dddddd; }
.lm-community__rating { margin: 10px 0 0; font: 700 14px/1.3 var(--lm-font); color: var(--lm-lime); }
.lm-community .lm-btn { flex: 0 0 auto; }
.pr-wrap .lm-community, .lm-community--card { margin-top: 36px; max-width: 760px; padding: 24px; }
@media (max-width: 640px) { .lm-community .lm-btn { width: 100%; text-align: center; box-sizing: border-box; } }


/* ---- section row (owner, 15 Sep 2026): the inner pages' second line under
       the header, so the timeline, the guides and the FAQ stay one click away
       while the header keeps its four links -------------------------------- */
.lm-subnav { display:flex; flex-wrap:wrap; align-items:center; gap:0 22px; padding:0 var(--pad); background:var(--lm-surface); border-bottom:1px solid var(--lm-line); }
.lm-subnav a { display:inline-flex; align-items:center; min-height:40px; color:var(--lm-ink); font:600 14px/1.2 var(--lm-font); text-decoration:none; border-bottom:2px solid transparent; }
.lm-subnav a:hover { border-bottom-color:var(--lm-lime); }
.lm-subnav a[aria-current="page"] { border-bottom-color:var(--lm-ink); }
@media (max-width:560px) {
  .lm-subnav { gap:0 16px; }
  .lm-subnav a { min-height:44px; font-size:13px; }
}
