/* ============================================================
   sled-theme.css — Stellar Learning Experience Designer
   One file. Two size sets. WCAG 2.1 AA.

   HOW TO USE
   - Put class "sled-theme" on <body> to get the look.
   - Add "sled-app"  for app screens  (tighter text, smaller gaps, full width).
   - Leave it off    for document pages (reading sizes, 800px centred column).
     (You can also write "sled-doc" to be explicit; it matches the default.)

   COLOUR RULE FOR ACCESSIBILITY
   - Orange (#FF7B33) is for FILLS and LINES (nav bar, buttons, borders) and for
     LARGE display text only. It is too light for small text on a light background.
   - For text that should look orange on white, use the dark orange #BF5300 (--sled-orange-text).
   - Where the background is not white (the grey table header), small text is BLACK,
     and the brand orange shows up as a line instead.
   See SCB-Accessibility-Specs-v1 for the full contrast table.
   ============================================================ */

/* ---- the app's three faces, self-hosted (assets/fonts) ----
   Nothing is fetched over the network: a page renders the same on the tenth
   run as the first, which is what makes screenshot comparison trustworthy.
   These are the same Google files the @import used to pull — the latin
   subset, variable where Google ships variable, so one file covers 400-700.
   Playfair italic is not among them: it never was, so <em> in a display
   heading stays browser-synthesised exactly as before. */
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:400 700;font-display:swap;
  src:url('assets/fonts/playfair-display-var.woff2') format('woff2');}
@font-face{font-family:'Raleway';font-style:normal;font-weight:400 700;font-display:swap;
  src:url('assets/fonts/raleway-var.woff2') format('woff2');}
@font-face{font-family:'Raleway';font-style:italic;font-weight:400 700;font-display:swap;
  src:url('assets/fonts/raleway-italic-var.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('assets/fonts/ibm-plex-mono-400.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url('assets/fonts/ibm-plex-mono-500.woff2') format('woff2');}

:root{
  --sled-stage-width:980px;  /* one container width for every phase — change here, all screens follow */
  --sled-arrival-cap-top:153.98px; /* the shared arrival line: viewport Y where every screen's first text
                                   starts its capital letters, measured optically from the question-screen
                                   kicker at rest (nav bottom 109.5 + 40px nav margin + 4.48px cap offset,
                                   1280×900, entry animation settled). The kicker defines this line and
                                   does not move; other screens meet it. Recorded for reference — the
                                   working correction lives on .sled-threshold h1. */
  /* ---- brand and fixed colours ---- */
  --sled-orange:#FF7B33;      /* secondary brand: fills and lines (nav, buttons, borders), large display */
  --sled-orange-text:#BF5300; /* fresh orange for SMALL text on white — passes AA (~4.7:1). Fills/large/status use #DC5900 (--sled-status-not-started). */
  --sled-btn-ledge:color-mix(in srgb, var(--sled-orange) 62%, #000); /* darker orange ledge under the raised button */
  --sled-black:#000000;       /* dominant brand: hero and footer backgrounds */
  --sled-accent:#CE6222;      /* tertiary: rules, dividers, large display only (~3.9:1 — passes AA at large sizes). For small orange text on white use --sled-orange-text (#BF5300). */
  --sled-white:#FFFFFF;
  --sled-page:#FFFFFF;        /* V3: white app page; cards lift off it via their #e7e7e7 borders */
  --sled-grey:#E1E1E1;        /* table header row */
  --sled-neutral:#E7E7E7;     /* tables, neutral callouts, neutral card */
  --sled-line:#CCCCCC;        /* thin lines inside parts */
  --sled-caption:#1E1E1E;     /* image caption text */

  /* ---- light tints: real values, with the auto colour-mix as the method ---- */
  --sled-tint-secondary:#FFF1E9;   /* V3 secondary tint */
  --sled-tint-dominant:#F0F0F0;    /* V3 dominant tint */
  --sled-tint-tertiary:#FDF0E8;    /* V3 tertiary tint */

  /* ---- text colour on brand backgrounds (the auto white/black rule, set to the readable choice) ---- */
  --sled-on-orange:#000000;   /* black reads best on orange (about 8:1) */
  --sled-on-black:#FFFFFF;

  /* ---- app layer: muted text + status traffic light (used by app screens, not documents) ---- */
  --sled-ink-soft:#5E5E5E;                          /* muted secondary text — about 6.5:1 on white */

  /* ---- status colours (Handoff Note 5) — separated from brand ---- */
  --sled-status-not-started:#DC5900;   /* orange — dots, fills, large only */
  --sled-status-pending:#EAA444;       /* amber */
  --sled-status-accomplished:#318C22;  /* green */
  --sled-status-not-started-dark:#FF7B33;   /* dark theme placeholders — not active */
  --sled-status-pending-dark:#FCD344;
  --sled-status-accomplished-dark:#1EC655;
  --sled-border-card:#C8C8C8;          /* darker card/callout border, distinct from --sled-line */
  --sled-card:#FFFFFF;                  /* card background */
  --sled-shadow-card:0 1px 2px rgba(30,22,12,.04),0 4px 10px rgba(30,22,12,.05);

  /* ---- traffic-light aliases now point at the status colours above ---- */
  --sled-ready:var(--sled-status-accomplished);  --sled-ready-text:#2A7D1C;  /* done / ready (fill green #318C22, text #2A7D1C ~5.2:1 AA) */
  --sled-doing:var(--sled-status-pending);  --sled-doing-text:#A85F00;       /* in progress */
  --sled-not:var(--sled-line);    --sled-not-text:var(--sled-orange-text);    /* not started: grey dot, orange text */
  --sled-ring-gap:rgba(220,89,0,0.3);               /* orange glow on the current tracker stop */

  /* ---- fonts ---- */
  --sled-font-display:'Playfair Display', Georgia, 'Times New Roman', serif;
  --sled-font-text:'Raleway', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;

  /* ---- corners ---- */
  --sled-radius:15px;

  /* ===================== SIZE SET: READING (document) — default ===================== */
  --sled-w:800px;          /* centred reading column */
  --sled-pad:24px;         /* side padding */
  --sled-h1:40px;  --sled-h2:36px;  --sled-h3:24px;
  --sled-eyebrow:14px;     --sled-herosub:20px;
  --sled-body:22px;        --sled-util:18px;        --sled-nav:13px;
  --sled-num:88px;         --sled-numlabel:16px;    --sled-caption-size:14px;
  --sled-lh-head:1.2;      --sled-lh-body:1.3;
  --sled-stack:50px;       /* heading-to-paragraph and paragraph-to-paragraph */
  --sled-side:50px;        /* gap between side-by-side things */
  --sled-sec-top:50px;     --sled-sec-bottom:50px;   /* V3: standard section padding 50/50; dividers sit in the 100px gap */
}

@media (max-width:680px){
  :root{
    --sled-h1:32px; --sled-h2:28px; --sled-h3:20px;
    --sled-herosub:16px; --sled-body:18px; --sled-util:16px;
    --sled-num:64px; --sled-numlabel:14px;
  }
}

/* ===================== SIZE SET: APP (compact) — add class "sled-app" ===================== */
.sled-app{
  --sled-w:none;           /* full width allowed */
  --sled-pad:20px;
  /* App type scale: base 16px = 1rem, each step is 1.125x the one below it.
     Sizes are in rem so they follow the reader's own browser text-size setting.
     The px in each comment is what you get at the 16px default. */
  --sled-h1:1.802rem;      /* 28.8px — step +5 — screen title */
  --sled-h2:1.424rem;      /* 22.8px — step +3 — big heading / card title */
  --sled-h3:1.266rem;      /* 20.3px — step +2 — section / unit title */
  --sled-herosub:1.125rem; /* 18.0px — step +1 — lead line / card description */
  --sled-body:1rem;        /* 16.0px — step  0 — base size (the readable floor) */
  --sled-util:0.889rem;    /* 14.2px — step -1 — secondary text, status labels */
  --sled-eyebrow:0.79rem;  /* 12.6px — step -2 — small caps labels, kickers */
  --sled-nav:0.889rem;     /* 14.2px — step -1 */
  --sled-num:3rem;         /* 48.0px — featured stat, a chosen display size off the ladder */
  --sled-numlabel:0.79rem; /* 12.6px */
  --sled-caption-size:0.79rem; /* 12.6px */
  --sled-lh-body:1.5;      /* roomy lines for 16px text — matches the accessibility spec */
  --sled-stack:16px;       --sled-side:20px;
  --sled-sec-top:28px;     --sled-sec-bottom:40px;
}
/* app screens sit on the warm off-white page; white cards lift off it */
.sled-app{ background:var(--sled-page); }
@media (max-width:680px){
  .sled-app{
    /* body stays on the 16px floor; only the big headings ease down a step */
    --sled-h1:1.602rem;    /* 25.6px */
    --sled-h2:1.266rem;    /* 20.3px */
  }
}

/* ===================== BASE ===================== */
.sled-theme{
  margin:0;
  background:var(--sled-white);
  color:var(--sled-black);
  font-family:var(--sled-font-text);
  font-weight:500;                 /* Raleway Medium is the body weight */
  font-size:var(--sled-body);
  line-height:var(--sled-lh-body);
  -webkit-font-smoothing:antialiased;
}
.sled-theme *{ box-sizing:border-box; }

/* visible keyboard focus on everything you can click or tab to */
.sled-theme a:focus-visible,
.sled-theme button:focus-visible,
.sled-theme summary:focus-visible,
.sled-theme [tabindex]:focus-visible{
  outline:3px solid var(--sled-orange-text); outline-offset:2px; border-radius:3px;
}

/* text fields get the same visible dark-orange focus ring */
.sled-theme input[type=text]:focus,
.sled-theme input[type=email]:focus,
.sled-theme input[type=search]:focus,
.sled-theme input:not([type]):focus,
.sled-theme textarea:focus{
  outline:3px solid var(--sled-orange-text); outline-offset:2px;
}

/* the centred reading column; full width in app mode because --sled-w is none */
.sled-container{
  max-width:var(--sled-w);
  margin:0 auto;
  padding-left:var(--sled-pad);
  padding-right:var(--sled-pad);
}

/* ===================== TYPE ===================== */
.sled-theme h1{
  font-family:var(--sled-font-display); font-weight:700;
  font-size:var(--sled-h1); line-height:var(--sled-lh-head);
  color:var(--sled-black); margin:0 0 var(--sled-stack);
}
.sled-theme h2{
  font-family:var(--sled-font-text); font-weight:400;
  font-size:var(--sled-h2); line-height:var(--sled-lh-head);
  color:var(--sled-black); margin:0 0 var(--sled-stack);
}
.sled-theme h3{
  font-family:var(--sled-font-text); font-weight:700;
  font-size:var(--sled-h3); line-height:1.3;
  text-transform:uppercase; color:var(--sled-orange-text); /* dark orange so it passes at small app size too */
  margin:0 0 var(--sled-stack);
}
.sled-theme p{ margin:0 0 var(--sled-stack); }
.sled-theme p:last-child{ margin-bottom:0; }
.sled-theme b, .sled-theme strong{ font-weight:700; }
.sled-theme i, .sled-theme em{ font-style:italic; }

.sled-eyebrow{
  display:block; font-family:var(--sled-font-text); font-weight:700;
  font-size:var(--sled-eyebrow); letter-spacing:.12em; text-transform:uppercase;
  color:var(--sled-orange-text); margin:0 0 12px; /* dark orange on white; hero eyebrow stays orange below */
}
.sled-herosub{ font-weight:500; font-size:var(--sled-herosub); line-height:1.4; }
.sled-util{ font-size:var(--sled-util); line-height:var(--sled-lh-body); }

/* links — dark orange, bold and underlined (underline is a non-colour cue) */
.sled-theme a{ color:var(--sled-orange-text); font-weight:700; text-decoration:underline; }
.sled-theme a:hover{ color:color-mix(in srgb, var(--sled-orange-text) 85%, #000); }
/* anchor-based buttons and pills are never underlined — they match their
   <button> twins, not inline links (which keep the global rule above) */
.sled-theme a.sled-btn, .sled-theme a.sled-btn:hover,
.sled-theme a.sled-btn--ghost, .sled-theme a.sled-btn--ghost:hover,
.sled-theme a.m-edit, .sled-theme a.m-edit:hover{ text-decoration:none; }
/* the filled anchor button also takes the shared on-orange text color */
.sled-theme a.sled-btn, .sled-theme a.sled-btn:hover{ color:var(--sled-on-orange); }

/* featured number — large display, so the accent clears the large-text bar */
.sled-number{
  font-family:var(--sled-font-display); font-weight:500;
  font-size:var(--sled-num); line-height:1; color:var(--sled-accent); /* accent #CE6222 — large display clears the AA large-text bar; #FF7B33 would fail */
}
.sled-number-label{
  display:block; font-weight:700; font-size:var(--sled-numlabel);
  text-transform:uppercase; color:var(--sled-black); letter-spacing:.04em;
}

/* images + caption */
.sled-theme img{ max-width:100%; height:auto; border-radius:var(--sled-radius); display:block; }
/* The header logo is chrome, not content — square corners (George, July 29, 2026). */
.sled-theme .topbar img.logo{ border-radius:0; }
.sled-caption{ font-style:italic; font-size:var(--sled-caption-size); color:var(--sled-caption); margin-top:10px; }

/* ===================== LISTS (document) — V3 bullets =====================
   Square markers in the accent colour, 50px indent. For named items, not narrative. */
.sled-theme ul.sled-list{ list-style:none; margin:0 0 var(--sled-stack); padding:0; }
.sled-theme ul.sled-list > li{
  position:relative; padding-left:50px; margin:0 0 8px;
  font-size:16px; line-height:1.45; color:var(--sled-black);
}
.sled-theme ul.sled-list > li::before{
  content:""; position:absolute; left:24px; top:.55em; width:6px; height:6px; background:var(--sled-accent);
}
.sled-list-label{ display:block; font-style:italic; font-weight:500; font-size:16px; margin:28px 0 8px; }  /* V3 sub-list label: italic, not bold */

/* ===================== HERO ===================== */
.sled-hero{
  background:var(--sled-black); color:var(--sled-on-black);
  min-height:300px; display:flex; flex-direction:column; justify-content:flex-end;
  padding:var(--sled-sec-top) var(--sled-pad) var(--sled-sec-bottom);
  border-bottom:4px solid var(--sled-orange);   /* V3 hero bottom accent bar */
}
.sled-hero h1{ color:var(--sled-on-black); }
.sled-hero .sled-eyebrow{ color:var(--sled-orange); } /* orange on black reads fine (about 8:1) */

/* ===================== NAV =====================
   Nav background is the brand orange, so the text on it is black for contrast.
   The active item keeps black text, turns bold, and shows a black underline. */
.sled-nav{
  position:sticky; top:0; z-index:50;
  background:var(--sled-orange);
  display:flex; align-items:center; gap:2px;
  padding:0 var(--sled-pad);
  overflow-x:auto; scrollbar-width:none;
}
.sled-nav::-webkit-scrollbar{ display:none; }
.sled-nav.sled-nav--scrolled{ box-shadow:0 2px 10px rgba(0,0,0,.18); }
.sled-nav a{
  position:relative;
  font-family:var(--sled-font-text); font-weight:600; font-size:13px;
  text-transform:uppercase; letter-spacing:.04em;
  color:var(--sled-on-orange); text-decoration:none;
  padding:14px 14px; white-space:nowrap;
}
.sled-nav a:hover{ background:color-mix(in srgb, var(--sled-orange) 88%, #000); }
/* V3 active indicator: a detached underline drawn with ::after, never border-bottom
   (border-bottom bleeds sub-pixel colour at some zoom levels). Width grows 0 -> 50%. */
.sled-nav a.sled-active{ font-weight:700; }
.sled-nav a.sled-active::after{
  content:""; position:absolute; left:50%; bottom:6px; transform:translateX(-50%);
  width:50%; height:2px; background:var(--sled-on-orange);
  animation:sled-underline .2s ease;
}
@keyframes sled-underline{ from{ width:0; } to{ width:50%; } }
/* Nav wordmark: a permanent identity marker, not a tab. V3 shows it white; white on
   orange fails contrast, so it is kept black here for readability. */
.sled-nav-wordmark{
  font-family:var(--sled-font-display); font-weight:700; font-size:15px;
  text-transform:uppercase; color:var(--sled-on-orange);
  padding:10px 16px 10px 0; margin-right:8px; white-space:nowrap;
  border-right:1px solid color-mix(in srgb, var(--sled-on-orange) 30%, var(--sled-orange));
}
.sled-nav-version{
  margin-left:auto; font-family:var(--sled-font-text); font-size:12px;
  color:color-mix(in srgb, var(--sled-on-orange) 55%, var(--sled-orange)); white-space:nowrap;
}
@media (max-width:640px){ .sled-nav-wordmark{ display:none; } }

/* ===================== BUTTONS =====================
   Raised look: a darker-orange ledge sits under the button. On click the button
   moves down onto the ledge, so it reads as a real press. The ghost button gets
   the same press with a soft grey ledge. */
.sled-btn{
  display:inline-flex; align-items:center; justify-content:center;
  font-family:var(--sled-font-text); font-weight:700;
  font-size:var(--sled-util); background:var(--sled-orange); color:var(--sled-on-orange);
  border:none; border-radius:10px; padding:12px 20px; cursor:pointer; text-decoration:none;
  min-height:44px; /* comfortable touch target */
  box-shadow:0 3px 0 var(--sled-btn-ledge);
  transition:transform .08s ease, box-shadow .08s ease, background .12s ease;
}
.sled-btn:hover{ background:color-mix(in srgb, var(--sled-orange) 88%, #000); }
.sled-btn:active{ transform:translateY(3px); box-shadow:0 0 0 var(--sled-btn-ledge); }
.sled-btn--ghost{
  display:inline-flex; align-items:center; justify-content:center;
  font-family:var(--sled-font-text); font-weight:700; font-size:var(--sled-util);
  border-radius:10px; padding:12px 20px; min-height:44px; cursor:pointer; text-decoration:none;
  transition:transform .08s ease, box-shadow .08s ease, background .12s ease;
  background:transparent; color:var(--sled-black); border:2px solid var(--sled-line);
  box-shadow:0 3px 0 var(--sled-line);
}
.sled-btn--ghost:hover{ background:var(--sled-neutral); }
.sled-btn--ghost:active{ transform:translateY(3px); box-shadow:0 0 0 var(--sled-line); }
.sled-theme .sled-btn--sm{ min-height:36px; padding:8px 14px; font-size:13px; }

/* ===================== CARDS (3 variants) ===================== */
.sled-card{
  background:var(--sled-neutral); border-radius:var(--sled-radius);
  padding:22px 24px; font-size:var(--sled-util); line-height:var(--sled-lh-body);
}
.sled-app .sled-card{ padding:16px 18px; }
.sled-card--secondary{ background:var(--sled-tint-secondary); }
.sled-card--dominant{ background:var(--sled-tint-dominant); }
.sled-card--neutral{ background:var(--sled-neutral); }
a.sled-card:hover, .sled-card--link:hover{ background:color-mix(in srgb, var(--sled-neutral) 92%, #000); }

/* ===================== SHELF / CARD GRID (V3) =====================
   Labelled lists of named items — canon files, open items, explorations.
   One item per row. Hierarchy is weight, never colour: titles bold, descriptors
   medium, all black. Links turn the accent colour on hover only. */
.sled-shelf{ display:grid; gap:8px; margin:8px 0 4px; }
.sled-shelf-item{
  display:block; background:var(--sled-white);
  border:1px solid var(--sled-neutral); border-radius:var(--sled-radius);
  padding:14px 18px; text-decoration:none; color:var(--sled-black);
  transition:background .12s ease, border-color .12s ease;
}
.sled-shelf-item:hover{ background:var(--sled-tint-secondary); border-color:var(--sled-accent); }
.sled-shelf-title{ font-family:var(--sled-font-text); font-weight:700; font-size:16px; color:var(--sled-black); }
a.sled-shelf-item:hover .sled-shelf-title{ color:var(--sled-orange-text); }
.sled-shelf-desc{ font-family:var(--sled-font-text); font-weight:500; font-size:14px; color:var(--sled-black); margin-top:2px; }
/* Shelf section label — "<BOLD CATEGORY>: <regular descriptor>", colon never an em dash. */
.sled-shelf-label{ font-family:var(--sled-font-text); font-size:16px; margin:28px 0 8px; color:var(--sled-orange-text); }
.sled-shelf-label b{ font-weight:700; text-transform:uppercase; letter-spacing:.06em; }
.sled-shelf-label span{ font-weight:400; color:var(--sled-orange-text); }

/* ===================== ACCORDION (native <details>) ===================== */
details.sled-accordion{
  border:1px solid var(--sled-line); border-radius:var(--sled-radius);
  overflow:hidden; margin:0 0 12px; background:var(--sled-white);
}
details.sled-accordion > summary{
  list-style:none; cursor:pointer; background:var(--sled-neutral);
  padding:14px 18px; font-family:var(--sled-font-text); font-weight:700;
  font-size:var(--sled-util); display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.sled-app details.sled-accordion > summary{ padding:11px 14px; }
details.sled-accordion > summary::-webkit-details-marker{ display:none; }
details.sled-accordion > summary::after{
  content:""; width:10px; height:10px; flex:none;
  border-right:2px solid var(--sled-black); border-bottom:2px solid var(--sled-black);
  transform:rotate(45deg); transition:transform .2s ease;
}
details.sled-accordion[open] > summary::after{ transform:rotate(-135deg); } /* a 180° flip */
details.sled-accordion > summary:hover,
details.sled-accordion[open] > summary{ background:color-mix(in srgb, var(--sled-neutral) 90%, #000); }
details.sled-accordion .sled-accordion-body{
  background:var(--sled-white); padding:16px 18px;
  font-size:var(--sled-util); line-height:var(--sled-lh-body);
}

/* ===================== TABLE =====================
   Header text is black for full contrast on the grey row; the brand orange shows as the underline. */
.sled-table-wrap{ border:1px solid var(--sled-line); border-radius:var(--sled-radius); overflow:hidden; }
table.sled-table{ width:100%; border-collapse:collapse; font-size:var(--sled-util); }
table.sled-table thead th{
  background:var(--sled-neutral); font-family:var(--sled-font-text); font-weight:700;  /* V3 header bg #e7e7e7 */
  text-transform:uppercase; color:var(--sled-black); text-align:left;
  padding:12px 14px; letter-spacing:.04em; font-size:calc(var(--sled-util) - 2px);
  border-bottom:2px solid var(--sled-orange);
}
table.sled-table td{ padding:12px 14px; border-top:1px solid var(--sled-line); }
table.sled-table tbody tr:hover{ background:color-mix(in srgb, var(--sled-neutral) 50%, #fff); }
.sled-app table.sled-table thead th, .sled-app table.sled-table td{ padding:9px 11px; }

/* ===================== CALLOUT ===================== */
.sled-callout{
  background:var(--sled-neutral); border-left:8px solid var(--sled-accent);
  border-radius:0 var(--sled-radius) var(--sled-radius) 0; padding:16px 18px;   /* V3 radius 0 15 15 0 */
  font-size:var(--sled-util); line-height:var(--sled-lh-body); margin:0 0 var(--sled-stack);
}
.sled-callout--secondary{ background:var(--sled-tint-secondary); }
.sled-callout--dominant{ background:var(--sled-tint-dominant); }
/* V3 document callouts — the three named kinds. */
.sled-callout--context{   /* primary context: setup, prerequisites, essential context */
  background:var(--sled-tint-secondary); border-radius:0 var(--sled-radius) var(--sled-radius) 0;
  padding:24px 28px; font-size:18px; line-height:1.5; margin:var(--sled-stack) 0;
}
.sled-callout--intro{     /* act / section introduction */
  background:var(--sled-tint-dominant); border-radius:0 var(--sled-radius) var(--sled-radius) 0;
  padding:20px 24px; font-size:18px; line-height:1.5; margin:0 0 40px;
}
.sled-callout--carry{     /* carry forward: what transfers to the next section */
  background:var(--sled-tint-secondary); border-left:8px solid var(--sled-orange);
  border-radius:0 var(--sled-radius) var(--sled-radius) 0; padding:18px 24px; font-size:17px; line-height:1.5;
}

/* ===================== BLOCKQUOTE ===================== */
.sled-quote{
  border-left:8px solid var(--sled-accent); padding-left:var(--sled-stack);
  margin:0 0 var(--sled-stack); font-size:var(--sled-body);
}

/* ===================== PILL / BADGE =====================
   White fill + orange border + dark-orange text, so the small text passes on a light page. */
.sled-pill{
  display:inline-block; background:var(--sled-white); border:1.5px solid var(--sled-orange);
  color:var(--sled-orange-text); font-weight:700; font-size:12px; text-transform:uppercase;
  letter-spacing:.06em; padding:3px 11px; border-radius:999px;
}

/* ===================== SECTION DIVIDER (simple 8px line) ===================== */
.sled-divider{ border:none; border-top:8px solid var(--sled-accent); margin:var(--sled-sec-bottom) 0; }

/* ===================== FOOTER ===================== */
.sled-footer{ background:var(--sled-black); color:var(--sled-on-black); font-size:14px; padding:30px var(--sled-pad); border-top:4px solid var(--sled-orange); }
.sled-footer a{ color:var(--sled-orange); font-weight:700; }   /* V3: footer links in secondary (orange on black passes AA) */

/* ===================== SECTION + MEDIA LAYOUT (document only) ===================== */
.sled-section{ padding:var(--sled-sec-top) 0 var(--sled-sec-bottom); }
.sled-media{ display:grid; grid-template-columns:1fr; gap:var(--sled-side); align-items:center; }
/* document mode only: text left, image right, sides alternate each block */
.sled-theme:not(.sled-app) .sled-media{ grid-template-columns:1fr 1fr; }
.sled-theme:not(.sled-app) .sled-media:nth-of-type(even){ direction:rtl; }
.sled-theme:not(.sled-app) .sled-media:nth-of-type(even) > *{ direction:ltr; }
@media (max-width:680px){ .sled-theme:not(.sled-app) .sled-media{ grid-template-columns:1fr; } }

/* ===================== MOTION ===================== */
@media (prefers-reduced-motion: reduce){
  .sled-theme *{ transition:none !important; animation:none !important; }
}

/* ============================================================
   APP COMPONENT LAYER
   The pieces app screens need that documents don't. Status always
   pairs a colour with a shape (check / half / hollow) so it reads
   with colour turned off.
   ============================================================ */

.sled-theme .sled-muted{ color:var(--sled-ink-soft); }

/* --- status dot (colour + shape) --- */
.sled-theme .sled-dot{
  width:30px; height:30px; border-radius:50%; flex:none; box-sizing:border-box;
  display:inline-flex; align-items:center; justify-content:center;
  font-weight:700; font-size:16px; background:#fff;
}
.sled-theme .sled-dot--sm{ width:18px; height:18px; font-size:11px; }
.sled-theme .sled-dot.is-ready{ background:var(--sled-ready); border:2px solid var(--sled-ready); color:#fff; }
.sled-theme .sled-dot.is-doing{ background:var(--sled-doing); border:2px solid var(--sled-doing); color:#fff; }
.sled-theme .sled-dot.is-not{ background:#fff; border:2px solid var(--sled-not); color:var(--sled-not); }

/* --- status text label --- */
.sled-theme .sled-status{ font-size:var(--sled-util); font-weight:700; white-space:nowrap; }
.sled-theme .sled-status.is-ready{ color:var(--sled-ready-text); }
.sled-theme .sled-status.is-doing{ color:var(--sled-doing-text); }
.sled-theme .sled-status.is-not{ color:var(--sled-not-text); }

/* --- segmented control (the phase switch, the on/off toggle) --- */
.sled-theme .sled-seg{ display:inline-flex; border:1.5px solid var(--sled-line); border-radius:999px; overflow:hidden; flex-wrap:wrap; }
.sled-theme .sled-seg button{
  font-family:var(--sled-font-text); font-size:var(--sled-util); font-weight:700;
  border:none; background:#fff; color:var(--sled-ink-soft);
  padding:8px 15px; cursor:pointer; border-right:1px solid var(--sled-line);
}
.sled-theme .sled-seg button:last-child{ border-right:none; }
.sled-theme .sled-seg button.on{ background:var(--sled-orange); color:var(--sled-on-orange); }
.sled-theme .sled-seg button:focus-visible{ outline:3px solid var(--sled-orange-text); outline-offset:-3px; }

/* --- list row (a lesson row: leading dot, content, trailing status) --- */
.sled-theme .sled-row{
  display:flex; align-items:center; gap:14px; justify-content:space-between;
  background:#fff; border:1px solid var(--sled-line); border-radius:12px; padding:12px 16px; margin:8px 0;
}
.sled-theme .sled-row--next{ border-color:var(--sled-orange); box-shadow:0 0 0 3px var(--sled-tint-secondary); }
.sled-theme .sled-row-main{ display:flex; align-items:center; gap:12px; min-width:0; }
.sled-theme .sled-row-title{ font-size:var(--sled-body); font-weight:600; line-height:1.3; }

/* --- summary card (the compact card at the top of an app screen) --- */
.sled-theme .sled-summary{
  display:flex; gap:20px; align-items:center;
  background:#fff; border:1px solid var(--sled-line); border-radius:16px; padding:20px 24px;
}
.sled-theme .sled-summary-title{ font-family:var(--sled-font-display); font-size:var(--sled-h2); font-weight:600; line-height:1.15; }

/* --- progress ring (set style="--p:NN" for a 0-100 percent) --- */
.sled-theme .sled-ring{
  --p:0; --size:72px;
  width:var(--size); height:var(--size); border-radius:50%; flex:none; display:grid; place-items:center;
  background:conic-gradient(var(--sled-orange) calc(var(--p) * 1%), var(--sled-neutral) 0);
}
.sled-theme .sled-ring > *{
  width:calc(var(--size) - 14px); height:calc(var(--size) - 14px); border-radius:50%;
  background:#fff; display:grid; place-items:center;
  font-family:var(--sled-font-display); font-weight:600; font-size:17px;
}

/* --- phase strip (thin, always-on Prepare / Plan / Build / Launch) --- */
.sled-theme .sled-tracker{
  display:flex; align-items:center; justify-content:center; gap:0; background:#F6F6F6;
  border-bottom:1px solid #D9D9D9; padding:8px 16px; overflow-x:auto; text-decoration:none;
  position:relative;
}
.sled-theme .sled-tracker-item{ display:flex; align-items:center; gap:8px; flex:none; }
.sled-theme .sled-tracker-conn{ width:24px; height:2px; background:var(--sled-line); flex:none; margin:0 10px; }
.sled-theme .sled-tracker-name{ font-size:var(--sled-util); white-space:nowrap; }
.sled-theme .sled-tracker-item.is-done .sled-tracker-name{ color:var(--sled-black); font-weight:600; }
.sled-theme .sled-tracker-item.is-now  .sled-tracker-name{ color:var(--sled-black); font-weight:700; }
.sled-theme .sled-tracker-item.is-todo .sled-tracker-name{ color:#8A8A8A; font-weight:600; }
.sled-theme .sled-tracker-item.is-now .sled-dot{ box-shadow:0 0 0 2px #F6F6F6, 0 0 0 4px var(--sled-ring-gap); }

/* the four phases sit centered on the page; the "open the map" link is pinned to the right,
   out of the centering flow (position:absolute) so the phases stay centered no matter its width */
.sled-theme .sled-tracker-home{
  position:absolute; top:0; bottom:0; right:16px;
  display:flex; align-items:center; gap:6px;
  color:#8A8A8A; font-size:var(--sled-eyebrow); font-weight:700;
  white-space:nowrap; text-decoration:none;
}
.sled-theme .sled-tracker:hover .sled-tracker-home{ color:var(--sled-orange-text); }
.sled-theme .sled-tracker-house{ font-size:14px; line-height:1; }

/* ============================================================
   NOTCHED DIVIDER (from the spec) — paste this HTML where you want it.
   Left notch (default):
   <div style="max-width:800px;margin:0 auto;">
     <svg width="100%" viewBox="0 0 800 105" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" style="display:block;">
       <polyline points="81,60 99,78 117,60" stroke="#FF7B33" stroke-width="10" stroke-linejoin="miter" stroke-miterlimit="20" stroke-linecap="butt" fill="none"/>
       <polyline points="0,59 63,59 99,95 134,59 800,59" stroke="#0f0f0f" stroke-width="5" stroke-linejoin="miter" stroke-miterlimit="20" stroke-linecap="butt" fill="none"/>
     </svg>
   </div>
   Centre notch (use above/below full-width or centred content):
   <div style="max-width:800px;margin:0 auto;">
     <svg width="100%" viewBox="0 0 800 105" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" style="display:block;">
       <polyline points="382,60 400,78 418,60" stroke="#FF7B33" stroke-width="10" stroke-linejoin="miter" stroke-miterlimit="20" stroke-linecap="butt" fill="none"/>
       <polyline points="0,59 364,59 400,95 436,59 800,59" stroke="#0f0f0f" stroke-width="5" stroke-linejoin="miter" stroke-miterlimit="20" stroke-linecap="butt" fill="none"/>
     </svg>
   </div>
   On a dark background, change the black line #0f0f0f to #ffffff; keep the orange #FF7B33.
   ============================================================ */

/* ===== Progress Tracker — Handoff Note 5 (dot = phase status · bold name = you are here) ===== */
#ptrack{display:flex;align-items:center;background:#F8F8F8;border-bottom:1px solid var(--sled-line);padding:10px 24px;position:sticky;top:0;z-index:40;overflow-x:auto;scrollbar-width:none;font-family:var(--sled-font-text);-webkit-font-smoothing:antialiased}
#ptrack::-webkit-scrollbar{display:none}
#ptrack .sled-pt{display:flex;align-items:center;gap:0;width:100%;justify-content:center}
#ptrack .sled-pt-stop{display:flex;align-items:center;gap:7px;text-decoration:none;flex:none;font-size:13px;font-weight:600;color:#AAAAAA;transition:color .15s}
#ptrack .sled-pt-stop:hover{color:var(--sled-orange-text)}
#ptrack .sled-pt-dot{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none;font-size:11px;box-sizing:border-box;background:#FFFFFF;border:2px solid var(--sled-line);color:var(--sled-ink-soft)}
#ptrack .sled-pt-name{white-space:nowrap}
#ptrack .sled-pt-conn{width:28px;height:2px;background:var(--sled-line);flex:none;margin:0 6px}
#ptrack .sled-pt-conn.is-green{background:var(--sled-status-accomplished)}
#ptrack .is-home .sled-pt-dot{font-size:13px;color:var(--sled-ink-soft)}
#ptrack .is-home{color:var(--sled-ink-soft)}
#ptrack .is-done .sled-pt-dot{background:var(--sled-status-accomplished);border-color:var(--sled-status-accomplished);color:#fff;font-weight:900}
#ptrack .is-done{color:var(--sled-black)}
#ptrack .is-done:hover{color:var(--sled-status-accomplished)}
#ptrack .is-doing .sled-pt-dot{background:var(--sled-status-not-started);border-color:var(--sled-status-not-started);box-shadow:0 0 0 2px #F8F8F8,0 0 0 4px rgba(220,89,0,0.3)}
#ptrack .is-here{color:var(--sled-black);font-weight:700;cursor:default}
#ptrack .is-todo .sled-pt-dot{background:#fff;border-color:var(--sled-line)}
#ptrack .is-todo{color:#AAAAAA}
#ptrack .sled-pt-stop:focus-visible{outline:3px solid #000;outline-offset:3px;border-radius:6px}
@media(max-width:560px){ #ptrack{padding:10px 14px} #ptrack .sled-pt-conn{width:16px;margin:0 4px} }

/* ===== Handoff Note 5 — typography (app screens) + hero card ===== */
.sled-app h1 em{ font-style:italic; color:inherit; }   /* H1 single colour, never two-tone */
.sled-app .sub{ color:var(--sled-black); }               /* body sub-text is black, not ink-soft */
.sled-app h1{ margin-bottom:24px; }                     /* heading-to-body spacing */
.sled-hero-card{ background:#FFFFFF; border:none; border-radius:16px; padding:26px 28px; margin-bottom:24px; box-shadow:0 2px 4px rgba(30,22,12,.08), 0 16px 36px rgba(30,22,12,.14); }

/* ===== Shared app components — lifted from Home (Step 2). Home-only names stay bare; the two names other screens also use (.dot, .les) are canonical here as .sled-dot / .sled-les. ===== */
.hero{display:flex;gap:24px;align-items:center;background:var(--sled-card);border-radius:16px;padding:26px;box-shadow:0 2px 4px rgba(30,22,12,.08),0 16px 36px rgba(30,22,12,.14);margin-bottom:22px}
.hero.done{box-shadow:0 2px 4px rgba(27,122,54,.10),0 16px 36px rgba(27,122,54,.14);outline:1px solid #CBE6D2}
.ring{flex:0 0 auto}
.heroright{flex:1;min-width:0}
.herokick{display:block;font-size:var(--sled-eyebrow);letter-spacing:.12em;text-transform:uppercase;color:var(--sled-ink-soft);font-weight:700;margin-bottom:6px}
.herotitle{font-family:var(--sled-font-display);font-size:26px;font-weight:700;color:var(--sled-black);margin-bottom:6px}
.herotitle.placeholder{color:#B9B9B9;font-style:italic}
.herowhere{font-size:15px;color:var(--sled-ink-soft);line-height:1.5;margin-bottom:16px}
.ringcap{font-size:var(--sled-util);color:var(--sled-ink-soft);text-align:center;margin-top:8px;max-width:150px}
/* primary buttons use the shared .sled-btn (defined near the top of this file) */
.sled-les{background:var(--sled-card);border-radius:13px;box-shadow:var(--sled-shadow-card);margin-bottom:9px;overflow:hidden}
.sled-les.is-next{background:var(--sled-card);border:1px solid var(--sled-border-card);border-left:4px solid var(--sled-orange);box-shadow:var(--sled-shadow-card)}
.lesmain{display:flex;flex-direction:column;align-items:stretch;gap:9px;padding:14px 16px}
.lesrow1{display:flex;align-items:center;gap:11px}
.lesactions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.expand{background:none;border:none;display:flex;flex-direction:column;align-items:flex-start;gap:5px;width:100%;min-width:0;cursor:pointer;text-align:left;font-family:inherit;color:inherit;padding:0}
.sled-dot{width:26px;height:26px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-size:15px;font-weight:700}
.sled-dot.is-ready{background:var(--sled-status-accomplished);color:#fff}
.sled-dot.is-doing{background:linear-gradient(90deg,var(--sled-status-pending) 0 50%,#F6E2BD 50% 100%);border:2px solid var(--sled-status-pending)}
.sled-dot.is-not{background:#fff;border:3px solid var(--sled-status-not-started)}
.lesnum{font-size:var(--sled-eyebrow);letter-spacing:.08em;text-transform:uppercase;color:var(--sled-ink-soft);font-weight:700;flex:none}
.is-next .lesnum{color:var(--sled-orange-text)}
.lestitle{font-size:16px;color:var(--sled-black);line-height:1.35}
.lescue{font-size:13px;color:var(--sled-orange-text);font-weight:600}
.lessteps{font-size:13px;color:var(--sled-doing-text);font-weight:600}
.nextmark{background:none;color:var(--sled-orange-text);font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:0;flex:none}
.nx-arrow{display:inline-block;animation:nudge 1.5s ease-in-out infinite}
@keyframes nudge{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}
.pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--sled-font-text);font-size:12.5px;font-weight:700;border-radius:999px;padding:3px 11px 3px 9px;white-space:nowrap;flex:none}
.pill .shape{font-size:13px;line-height:1}
.pill.is-ready{color:var(--sled-ready-text);background:#EDF5EE;border:1px solid #BFD9C2}
.pill.is-doing{color:var(--sled-doing-text);background:#FFF9EC;border:1px solid #EAD9AE}
.pill.is-not{color:var(--sled-ink-soft);background:#fff;border:1px solid var(--sled-line)}
.mk{font-size:13px;font-weight:700;border-radius:999px;padding:7px 14px;cursor:pointer;flex:none;font-family:var(--sled-font-text);color:var(--sled-ready-text);background:#fff;border:1.5px solid var(--sled-status-accomplished)}
.mk.undo{color:var(--sled-ink-soft);border-color:var(--sled-line)}

/* The stop for the screen you are on shows an orange bar under its name.
   This is a separate signal from the dot colors, so "you are here" is
   always visible — even on a finished (green) phase or an in-progress
   (orange) one. The dot keeps meaning status only: grey not started,
   orange in progress, green check complete. */
#ptrack .is-here .sled-pt-name{position:relative}
#ptrack .is-here .sled-pt-name::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:3px;border-radius:2px;background:var(--sled-status-not-started)}

/* One gap below the step tracker, the same on every screen.
   Pages set no top spacing of their own — this rule is the floor. */
#ptrack{margin-bottom:40px}

/* ============================================================
   WHAT THE MIRROR SAYS WHEN IT IS BEHIND
   Two surfaces, built by sled-sync.js: a chip in the black bar
   for a slow connection, and a band under it for a connection
   that has stopped answering. Both use the app's own status
   colours, and neither is ever in the way of the writing.
   ============================================================ */
.sled-sync{display:flex;align-items:center;gap:7px;color:#C9C9C9;font-size:13px;white-space:nowrap}
.sled-sync .sled-sync-dot{width:8px;height:8px;border-radius:50%;background:var(--sled-status-pending);flex:none}
.sled-band{display:flex;align-items:center;gap:12px;padding:11px 24px;background:var(--sled-tint-secondary);
  border-bottom:1px solid var(--sled-orange);font-size:14.5px;line-height:1.45;color:var(--sled-black)}
.sled-band .sled-band-mark{width:20px;height:20px;border-radius:50%;border:2px solid var(--sled-orange-text);
  color:var(--sled-orange-text);font-weight:700;font-size:13px;display:flex;align-items:center;
  justify-content:center;flex:none}
.sled-band b{color:var(--sled-black)}
.sled-band .sled-btn--ghost{margin-left:auto;white-space:nowrap}
@media(max-width:640px){ .sled-sync span:not(.sled-sync-dot){display:none} .sled-band{font-size:13.5px} }

/* the one moment the app stops an author: the session has ended and
   there is something to say before the door */
.sled-outshade{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;align-items:center;
  justify-content:center;z-index:100;padding:24px}
.sled-outbox{background:var(--sled-card);border-radius:14px;padding:24px 26px;max-width:460px;
  box-shadow:0 12px 40px rgba(0,0,0,.2)}
.sled-outbox p{font-size:14.5px;color:var(--sled-ink-soft);line-height:1.55;margin:0 0 14px}
.sled-outbox p:last-of-type{margin-bottom:20px}
.sled-outbox b{color:var(--sled-black)}

/* ============================================================
   THE ACCOUNT CONTROL IN THE BLACK BAR
   Built by sled-auth.js on every screen that has a top bar, so
   the rule lives here rather than in sixty pages. The bar was
   already drawn for it: space-between, with the logo capped at
   54% — this is what the other half was being kept for.
   ============================================================ */
.sled-acct{display:flex;align-items:center;gap:12px;position:relative}
.sled-acct-hi{color:#fff;font-size:var(--sled-util);font-weight:600;white-space:nowrap}
.sled-acct-face{width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;
  background:var(--sled-orange);color:var(--sled-on-orange);font-family:var(--sled-font-text);
  font-weight:700;font-size:13px;letter-spacing:.02em;box-shadow:0 0 0 2px rgba(255,255,255,.25)}
.sled-acct-face:hover{box-shadow:0 0 0 2px #fff}
.sled-acct-face:focus-visible{outline:3px solid var(--sled-orange);outline-offset:3px}
.sled-acct-menu{position:absolute;top:44px;right:0;min-width:212px;background:var(--sled-card);
  border:1px solid var(--sled-border-card);border-radius:12px;box-shadow:var(--sled-shadow-card);
  padding:6px;text-align:left;z-index:60}
.sled-acct-menu[hidden]{display:none}
.sled-acct-who{font-size:12.5px;color:var(--sled-ink-soft);padding:7px 12px 6px;margin:0;
  word-break:break-all;line-height:1.35}
.sled-acct-sep{height:1px;background:var(--sled-line);margin:2px 4px 4px}
.sled-acct-item{display:block;width:100%;text-align:left;font-family:var(--sled-font-text);
  font-size:14px;font-weight:600;color:var(--sled-black);background:none;border:none;
  border-radius:8px;padding:9px 12px;cursor:pointer}
.sled-acct-item:hover{background:var(--sled-tint-secondary);color:var(--sled-orange-text)}
.sled-acct-item:focus-visible{outline:2px solid var(--sled-orange);outline-offset:-2px}
.sled-acct-item:disabled{opacity:.5;cursor:default}
@media(max-width:560px){ .sled-acct-hi{display:none} }

/* One page-heading block for every phase — the small orange label above,
   the page title below, both flush to the content's left edge. Change here,
   all screens follow. */
.sled-eyebrow{font-family:var(--sled-font-text);font-weight:700;font-size:12px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--sled-ink-soft);margin:0 0 10px}
.sled-eyebrow.red,.sled-eyebrow--accent{color:var(--sled-orange-text)}
.sled-app h1.sled-h1,.sled-h1{font-family:var(--sled-font-display);font-weight:600;font-size:28px;line-height:1.15;
  margin:0 0 10px;color:var(--sled-black)}

/* One content wrapper for every phase: same width, centered in the page,
   content starting at the top (no vertical centering). Each page adds only
   its own side and bottom padding. Change width or origin here, all follow. */
.stage{max-width:var(--sled-stage-width);margin-left:auto;margin-right:auto;padding-top:0;padding-left:24px;padding-right:24px}

/* ============================================================
   THE THRESHOLD SCREENS
   One per phase — the doorway an author crosses on first entry.
   The phase title, the phase description, one button; nothing
   else. The phase nav above already names where the author is.
   ============================================================ */
.sled-threshold{ padding:0 64px 96px; text-align:center; display:flow-root; }
   /* flow-root keeps the h1's negative top margin from collapsing through the
      container now that padding-top is 0 */
.sled-threshold h1{
  font-family:var(--sled-font-display); font-weight:700; font-size:52px;
  line-height:1.1; color:var(--sled-black);
  /* Arrival-line correction, measured optically: the kicker's cap-top sits
     4.48px below its box (Raleway 12px/1.5 — a fixed px amount, the kicker
     never changes size), and this headline's cap-top sits 0.2555em below its
     own box (Playfair 700, line-height 1.1 — scales with font-size). The em
     part is em DELIBERATELY so the 34px breakpoint self-corrects; the px part
     is fixed because the kicker's offset is. Bottom margin stays 0 — the
     description box's top margin owns the gap below. */
  margin:calc(4.48px - 0.2555em) 0 0;
}
/* the description sits in a bordered box; all em values ride the
   description's own font size, so the box scales with the text */
.sled-threshold-desc{
  max-width:730px; margin:1.5em auto 2.4em; font-size:21px; line-height:1.3;
  color:var(--sled-black); text-align:left;
  border:1px solid #8C8C87; border-radius:0; padding:1.4em;
}
/* paragraphs carry no margins of their own inside the box — the only
   vertical space between them is the 1em gap below */
.sled-threshold-desc p{ margin:0; }
.sled-threshold-desc p + p{ margin-top:1em; }
.sled-threshold .sled-btn{ margin-top:0; }   /* the description box's bottom margin owns the gap */
@media (max-width:700px){
  .sled-threshold{ padding:0 24px 64px; }
  .sled-threshold h1{ font-size:34px; }
  .sled-threshold-desc{ font-size:18px; }
}

/* ============================================================
   ASTARA'S VOICE BOX
   Where Astara speaks back to what the author just said — the
   reflections in Prepare, the approach match in Plan. Prepare and
   Plan each carried an identical copy of this; they were byte-equal,
   so one lives here now and neither screen has to be the one that
   defines it. A reply is usually one paragraph; when it is more, the
   paragraphs need a line of air, and the page resets zero every
   margin, so the space has to be asked for here.
   ============================================================ */
.astara-match{background:var(--sled-tint-secondary);border:1px solid var(--sled-orange);border-radius:11px;
  padding:12px 15px;font-size:13.5px;color:#7A3D11;line-height:1.5;margin:16px 0 0;text-align:left}
.astara-match b{color:var(--sled-orange-text)}
.astara-match p + p{margin-top:1.5em}

/* ============================================================
   THE DESIGN BRIEF
   The author's answers laid out in rows, grouped by phase, each row
   a door back to its screen. Styles live here so the brief can render
   on any page (moved from SLED-Prepare.html in the brief-portability
   work; Plan's partial copy went with the learners' card).
   ============================================================ */
.holdlist{background:#fff;border:1px solid var(--sled-line);border-radius:12px;padding:8px 18px;text-align:left}
.holdrow{display:flex;gap:12px;align-items:baseline;padding:11px 0;border-bottom:1px solid var(--sled-line)}
button.holdrow{width:100%;background:none;border:0;border-bottom:1px solid var(--sled-line);margin:0;cursor:pointer;font:inherit;text-align:left}
button.holdrow:hover{background:#FFF7F0}
button.holdrow:hover .hlabel{color:var(--sled-orange)}
.holdrow:last-child{border-bottom:none}
.holdrow .star{color:var(--sled-orange);flex:none}
.holdrow .hlabel{font-weight:700;flex:none;min-width:118px;font-size:var(--sled-util)}
.holdrow .hval{font-size:var(--sled-util)}
.holdrow .hval.skipped{color:var(--sled-ink-soft);font-style:italic}
/* something worth knowing beside an answer the author did give — the accent,
   not an error colour: nothing is broken */
.holdrow .hnote{color:var(--sled-orange-text)}
/* the phased brief — the name and mission head the page; each phase is its own section */
.briefhead{margin:0 0 20px}
.bh-name,.bh-mission{display:block;width:100%;background:none;border:0;cursor:pointer;text-align:center;color:var(--sled-black)}
.bh-name{font-family:var(--sled-font-display);font-weight:600;font-size:30px;line-height:1.2;padding:2px 4px}
.bh-mission{font-style:italic;font-size:16.5px;line-height:1.5;padding:6px 4px;margin-top:6px}
.bh-name:hover,.bh-mission:hover{color:var(--sled-orange-text)}
.bh-name:focus-visible,.bh-mission:focus-visible{outline:3px solid var(--sled-orange-text);outline-offset:2px;border-radius:8px}
.bh-name.unnamed{color:var(--sled-ink-soft);font-style:italic}
.phasesec{margin-top:14px;text-align:left}
/* The arrow's width and the gap after it decide where a phase title's text
   starts. Both are named here so the sub-heading under it can reserve the same
   space without a measured number: change the arrow and the indent follows. */
.phasesec{--sled-arrow-gap:8px; --sled-arrow-glyph:'\25B8'; --sled-phasehead-track:.08em}
.phasehead{display:flex;align-items:center;gap:var(--sled-arrow-gap);width:100%;background:none;border:0;cursor:pointer;
    font-family:var(--sled-font-text);font-size:var(--sled-util);font-weight:700;
    letter-spacing:var(--sled-phasehead-track);
    text-transform:uppercase;color:var(--sled-ink-soft);padding:6px 2px}
.phasehead:hover{color:var(--sled-orange-text)}
.phasehead:focus-visible{outline:3px solid var(--sled-orange-text);outline-offset:2px;border-radius:6px}
.phasehead .arrow{flex:none;color:var(--sled-orange-text)}
.phasebody{margin-top:6px}
.phasewait{font-style:italic;font-size:var(--sled-util);color:var(--sled-ink-soft);background:#fff;
    border:1px dashed var(--sled-line);border-radius:12px;padding:14px 18px}
/* A phase can group its rows under sub-headings. The sub-heading is a label,
   not a control: one step down the type ladder from the phase head it sits
   under, and nothing to click, collapse, or open. */
.subsec{margin-top:14px}
.subsec:first-child{margin-top:0}
/* A sub-heading lines its text up with the phase title above it, not with the
   phase title's arrow. It reserves the arrow's own space rather than an indent
   measured off a screenshot: the same glyph, hidden, and the same gap. Both
   come from .phasesec, so an arrow that changes moves the pair together. */
.subsechead{display:flex;align-items:baseline;gap:var(--sled-arrow-gap);
    font-family:var(--sled-font-text);font-size:var(--sled-eyebrow);font-weight:700;
    letter-spacing:.1em;text-transform:uppercase;color:var(--sled-ink-soft);padding:0 2px 6px}
.subsechead::before{content:var(--sled-arrow-glyph);visibility:hidden;flex:none;
    font-size:var(--sled-util);letter-spacing:var(--sled-phasehead-track)}

/* ============================================================
   LESSON PLANNING — the outcome card and its six step bars
   One card per must-have outcome the author chose, and one bar
   per step of the Mastery Roadmap, so how far into a lesson they
   are is readable without opening it. Done uses the same green
   the rest of the app uses for finished work; not-done is the
   ordinary line grey, so an untouched card reads as quiet rather
   than as an alarm.
   ============================================================ */
.mhcard{background:var(--sled-white);border:1px solid var(--sled-border-card);border-radius:12px;
    padding:16px 18px;text-align:left}
.mhcard.is-planned{background:#FCFCFC}
.mheyebrow{font-family:var(--sled-font-text);font-size:var(--sled-eyebrow);font-weight:700;
    letter-spacing:.1em;text-transform:uppercase;color:var(--sled-ink-soft)}
.mhtext{font-size:var(--sled-util);line-height:1.45;margin-top:6px}
.mhreq{font-size:var(--sled-eyebrow);color:var(--sled-ink-soft);margin-top:5px}
.stepbars{display:flex;gap:5px;margin-top:13px}
.stepbar{height:5px;flex:1;border-radius:3px;background:var(--sled-line)}
.stepbar.is-done{background:var(--sled-status-accomplished)}
.mhfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;
    flex-wrap:wrap;margin-top:14px}
.mhnote{font-size:var(--sled-eyebrow);color:var(--sled-ink-soft);font-style:italic}
.mhplanned{font-size:var(--sled-util);font-weight:700;color:var(--sled-ready-text)}
