/* Orli v3 site · Orli in your inclusion strategy
   ---------------------------------------------------------------------------
   The page after the shell (shell.css brings the v2 system). Tokens only.
   Sections, in order, each on its own surface so none of them blend:
     hero (canvas) · what you need to publish (warm) · the 7 principles
     (canvas) · what Orli is and isn't (warm) · the template (canvas) ·
     the allocation (warm) · sources (canvas) · try it first (deep)
   Form fields follow Orli Schools' field and choice styles (schools.css on
   origin/main: .schools-field, .schools-label, .schools-help,
   .schools-control, .schools-choice) with the site's 3px #1F3D32 focus ring
   and a control edge that meets WCAG 1.4.11 (see INTEGRATION.md). */

/* ================================================================= hero */
.inc-hero { padding-block: var(--o-space-8); }
.inc-hero .o-section-head { margin: 0; }
.inc-hero__note { margin-block-start: calc(var(--o-gap-tight) - var(--o-gap)); }
/* Very large text on a narrow window: long words break rather than run off. */
.inc-hero .o-display, .o-title, .inc-h3 { overflow-wrap: break-word; hyphens: auto; }

/* The one-page lies on a warm desk, the top of it in view. */
.inc-sheet { margin: 0; }
.inc-sheet__frame { --ratio: 4 / 3; }
.inc-sheet__paper {
  position: absolute; inset-block-start: 9%; inset-inline-start: 14%;
  width: 72% !important; height: auto !important; object-fit: initial !important;
  border-radius: 4px;
  box-shadow: 0 1px 2px rgb(60 57 50 / .08), 0 18px 40px -12px rgb(60 57 50 / .28);
  rotate: -1.5deg;
}

/* ===================================================== what to publish */
.facts { display: grid; margin: 0; border-block-end: 1px solid var(--o-warm-high); }
.facts__row {
  display: grid; gap: var(--o-space-2);
  padding-block: var(--o-space-5);
  border-block-start: 1px solid var(--o-warm-high);
}
.facts dt { font: var(--o-weight-title) var(--o-text-heading) / var(--o-lh-heading) var(--o-font-ui); letter-spacing: var(--o-track-heading); }
.facts dd { margin: 0; max-inline-size: var(--o-measure); text-wrap: pretty; }
.facts__list { display: grid; gap: var(--o-space-2); margin: 0; padding: 0; list-style: none; }
.facts__list li { position: relative; padding-inline-start: var(--o-space-5); }
.facts__list li::before {
  content: ""; position: absolute; left: 4px; top: .68em; width: 6px; height: 6px; border-radius: 50%;
  background: var(--o-action);
}
@media (min-width: 900px) {
  .facts__row { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--o-space-6); align-items: baseline; }
}
.inc-links { display: flex; flex-wrap: wrap; gap: var(--o-space-2) var(--o-space-6); margin-block-start: var(--o-space-6); }

/* ========================================================= principles
   Where Orli fits comes first: principle 5 (the whole-class routine) is the
   lead card, principle 2 (small groups) follows it with a pointer to what
   Orli's own evidence shows so far. The other five follow as quiet rows.
   Every principle keeps the DfE's number and words. */
.orli-fits { display: grid; gap: var(--o-space-4); max-inline-size: 54rem; }
.principles { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; max-inline-size: 54rem; }
.principle {
  display: grid; grid-template-columns: var(--o-space-6) minmax(0, 1fr); align-items: baseline;
  gap: var(--o-space-3);
  padding: var(--o-space-4);
  border-block-start: 1px solid var(--o-line);
}
.principles .principle:last-child { border-block-end: 1px solid var(--o-line); }
.principle__n {
  font: var(--o-weight-title) var(--o-text-heading) / 1 var(--o-font-ui);
  color: var(--o-ink-2); font-variant-numeric: tabular-nums;
}
.principle__name {
  margin: 0;
  font: 600 var(--o-text-lead) / var(--o-lh-heading) var(--o-font-ui); letter-spacing: -.005em;
  color: var(--o-ink-2); text-wrap: balance; max-inline-size: 60ch;
}
/* Where Orli fits: the row becomes a card, the name goes to ink. */
.principle--orli {
  padding-block: var(--o-space-5);
  background: var(--o-surface); border: 1px solid var(--o-line); border-radius: var(--o-r-card);
}
.principle--orli .principle__n, .principle--orli .principle__name { color: var(--o-ink); }
/* The lead fit: the one raised card in the section, its name a size up. */
.principle--lead { box-shadow: var(--o-shadow); }
.principle--lead .principle__name { font-size: var(--o-text-heading); letter-spacing: var(--o-track-heading); }
.principle__body { display: grid; justify-items: start; gap: var(--o-space-3); }
.principle__note { max-inline-size: 58ch; text-wrap: pretty; }
/* A footer on the card: what Orli's own evidence is, and where to read it. */
.principle__evidence {
  display: flex; flex-wrap: wrap; align-items: center; gap: 0 var(--o-space-3);
  inline-size: 100%; margin-block-start: var(--o-space-1); padding-block-start: var(--o-space-2);
  border-block-start: 1px solid var(--o-line);
  color: var(--o-ink-2);
}
.principle__evidence .o-link { color: var(--o-ink); }
.principles__title {
  margin: var(--o-space-8) 0 var(--o-space-3);
  font: var(--o-weight-ui) var(--o-text-body) / 1.3 var(--o-font-ui); color: var(--o-ink-2);
}
.inc-source { margin-block-start: var(--o-space-5); max-inline-size: 70ch; }
.inc-more { margin-block-start: var(--o-space-4); }
@media (min-width: 900px) {
  .principle { grid-template-columns: var(--o-space-8) minmax(0, 1fr); padding-inline: var(--o-space-5); }
}
/* Where Orli fits: a card with 24px corners, so 24px inside all round
   (32px from 900px); spacing rules, 2 Nov. On screen only: print keeps
   its own millimetres. */
@media screen {
  .orli-fits > .principle--orli { padding: var(--o-space-5); }
}
@media screen and (min-width: 900px) {
  .orli-fits > .principle--orli { padding: var(--o-space-6); }
}

/* ===================================================== what Orli is/isn't */
.is-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--o-grid-gap); }
@media (min-width: 900px) { .is-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.is-card .o-card__body { gap: var(--o-space-4); padding: var(--o-space-6); }
.ticks, .crosses { margin: 0; padding: 0; list-style: none; }
.ticks li, .crosses li { position: relative; padding-inline-start: var(--o-space-6); text-wrap: pretty; }
.ticks li + li, .crosses li + li { margin-block-start: var(--o-space-3); }
.ticks li::before, .crosses li::before {
  content: ""; position: absolute; left: 0; top: .2em; width: 20px; height: 20px; background: currentColor;
  -webkit-mask: var(--m) center / contain no-repeat; mask: var(--m) center / contain no-repeat;
}
.ticks li::before { --m: url("../../../../design-kit/icons/schools-doodles/teacher-setup--doodle-tick.svg"); color: var(--o-action); }
.crosses li::before { --m: url("../../../../design-kit/icons/schools-doodles/session--doodles--close.svg"); color: var(--o-ink-2); scale: .8; }
.inc-dev {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--o-space-2) var(--o-space-3);
  margin-block-start: var(--o-space-6); max-inline-size: 70ch;
  font-size: var(--o-text-small); line-height: var(--o-lh-small); color: var(--o-ink-2);
}
.inc-dev .o-pill { --pill-bg: var(--o-surface); flex: none; }

/* =========================================================== template */
.tpl-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--o-space-7); align-items: start; }
@media (min-width: 1100px) { .tpl-layout { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: var(--o-space-8); } }
.tpl-main { display: grid; gap: var(--o-space-5); min-width: 0; }

.tpl { padding: var(--o-space-6) var(--o-space-5); }
@media (min-width: 600px) { .tpl { padding: var(--o-space-6); } }
.tpl__title {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--o-space-2) var(--o-space-3);
  margin-block-end: var(--o-space-4);
  font: var(--o-weight-title) var(--o-text-heading) / var(--o-lh-heading) var(--o-font-ui); letter-spacing: var(--o-track-heading);
}
.tpl__title span { font: var(--o-weight-ui) var(--o-text-small) / 1 var(--o-font-ui); color: var(--o-ink-2); letter-spacing: .005em; }
.tpl__rows { margin: 0; }
.tpl__row { display: grid; gap: var(--o-space-1); padding-block: var(--o-space-4); border-block-start: 1px solid var(--o-line); }
.tpl__row:last-child { padding-block-end: 0; }
.tpl__row dt { font: var(--o-weight-ui) var(--o-text-body) / 1.3 var(--o-font-ui); }
.tpl__row dd { margin: 0; max-inline-size: 64ch; text-wrap: pretty; }
@media (min-width: 600px) {
  .tpl__row { grid-template-columns: 9.5rem minmax(0, 1fr); gap: var(--o-space-5); align-items: baseline; }
}
/* The parts a school fills in: a warm highlight, like a gap on a form. */
.blank {
  border-radius: 4px; background: var(--o-warm); box-shadow: 0 0 0 2px var(--o-warm);
  box-decoration-break: clone; -webkit-box-decoration-break: clone;
}
.tpl-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--o-space-3) var(--o-space-4); }

.inc-h3 {
  font: var(--o-weight-title) var(--o-text-heading) / var(--o-lh-heading) var(--o-font-ui);
  letter-spacing: var(--o-track-heading); text-wrap: balance;
}
.tpl-side { display: grid; gap: var(--o-space-5); }
.map { display: grid; margin: 0; }
.map > div { display: grid; gap: 2px; padding-block: var(--o-space-3); border-block-start: 1px solid var(--o-line); }
.map dt { font: var(--o-weight-ui) var(--o-text-body) / 1.3 var(--o-font-ui); }
.map dd { margin: 0; font-size: var(--o-text-small); line-height: var(--o-lh-small); color: var(--o-ink-2); }
.tpl-side__note {
  display: grid; gap: var(--o-space-3);
  padding: var(--o-space-5); border-radius: var(--o-r-card); background: var(--o-warm);
  font-size: var(--o-text-small); line-height: var(--o-lh-small);
}

/* ===================================== fields (Orli Schools' field styles) */
.inc-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.inc-label {
  padding: 0; margin: 0;
  font: 600 var(--o-text-small) / 1.3 var(--o-font-body); color: var(--o-ink);
}
.inc-help { margin: 0; font: 400 .8125rem / 1.4 var(--o-font-body); color: var(--o-ink-2); max-inline-size: 52ch; }
.inc-control {
  width: 100%; min-height: var(--o-target); margin: 0;
  padding: var(--o-space-3) var(--o-space-4);
  border: 1px solid var(--o-n4); border-radius: var(--o-r-control);
  background: var(--o-surface); color: var(--o-ink);
  /* 16px, not Schools' 14px: smaller text makes iOS zoom the page on focus. */
  font: 500 1rem / 1.25 var(--o-font-body); font-variant-numeric: tabular-nums;
  transition: background-color var(--o-t-interact) var(--o-ease), border-color var(--o-t-interact) var(--o-ease);
}
.inc-control:hover:not(:disabled):not(:focus-visible) { background: var(--o-warm); }
.inc-control:focus { outline: none; }
.inc-control:focus-visible { border-color: var(--o-focus); outline: var(--o-focus-ring); outline-offset: 0; }
.inc-control[aria-invalid="true"] { border-color: var(--o-error); box-shadow: inset 0 0 0 1px var(--o-error); }
.inc-error {
  display: flex; align-items: flex-start; gap: var(--o-space-2); margin: 0;
  font: 600 .8125rem / 1.4 var(--o-font-body); color: var(--o-error);
}
.inc-error::before {
  content: ""; flex: none; width: 16px; height: 16px; translate: 0 1px; background: currentColor;
  -webkit-mask: url("../../../v2/system/assets/doodles/info.svg") center / contain no-repeat;
          mask: url("../../../v2/system/assets/doodles/info.svg") center / contain no-repeat;
}

/* Choices: Schools' choice rows (edge, warm on hover, green edge and warm
   fill when chosen), side by side when there's room. */
.inc-choices { display: grid; gap: var(--o-space-2); margin: 0; padding: 0; border: 0; min-width: 0; }
.inc-choices > legend { margin-block-end: var(--o-space-3); }
.inc-choices__row { display: grid; gap: var(--o-space-3); }
@media (min-width: 600px) { .inc-choices__row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* Side by side when each choice gets 12rem; stacked on a phone, so the
   notes under the titles stay on one or two lines. */
.inc-choices--compact .inc-choices__row { grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); }
.inc-choice {
  display: flex; align-items: flex-start; gap: var(--o-space-3);
  min-height: var(--o-target); padding: var(--o-space-4) var(--o-space-5);
  border: 1px solid var(--o-n4); border-radius: var(--o-r-control);
  background: var(--o-surface); cursor: pointer;
  transition: background-color var(--o-t-interact) var(--o-ease), border-color var(--o-t-interact) var(--o-ease);
}
.inc-choice:hover { background: var(--o-warm); }
.inc-choice:has(.inc-choice__input:checked) {
  border-color: var(--o-action); background: var(--o-warm);
  box-shadow: inset 0 0 0 1px var(--o-action);
}
.inc-choice__input {
  flex: none; width: 20px; height: 20px; margin: 2px 0 0;
  accent-color: var(--o-action); cursor: inherit;
}
.inc-choice__input:focus { outline: none; }
.inc-choice__input:focus-visible { outline: var(--o-focus-ring); outline-offset: 2px; }
.inc-choice__copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.inc-choice__title { font: 600 .9375rem / 1.35 var(--o-font-body); color: var(--o-ink); }
.inc-choice__meta { font: 400 .8125rem / 1.4 var(--o-font-body); color: var(--o-ink-2); }

/* ========================================================== estimator */
.est { display: grid; grid-template-columns: minmax(0, 1fr); }
.est__form { display: grid; gap: var(--o-space-5); align-content: start; padding: var(--o-space-6) var(--o-space-5); }
.est__example { margin-block-start: calc(-1 * var(--o-space-2)); }
.est__result {
  display: grid; gap: var(--o-space-4); align-content: start;
  padding: var(--o-space-6) var(--o-space-5);
  background: var(--o-canvas); border-block-start: 1px solid var(--o-line);
}
@media (min-width: 600px) { .est__form, .est__result { padding: var(--o-space-6); } }
@media (min-width: 900px) {
  .est { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
  .est__result { border-block-start: 0; border-inline-start: 1px solid var(--o-line); }
}
.receipt { margin: 0; }
.receipt__row {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 0 var(--o-space-4);
  padding-block: var(--o-space-3); border-block-start: 1px solid var(--o-line);
}
.receipt__row dt { color: var(--o-ink-2); }
.receipt__row dd { margin: 0; font-variant-numeric: tabular-nums; white-space: nowrap; }
.receipt__row--sub dt, .receipt__row--sub dd { color: var(--o-ink); font-weight: var(--o-weight-strong); }
.receipt__total {
  display: grid; gap: var(--o-space-1);
  padding-block-start: var(--o-space-4); border-block-start: 2px solid var(--o-ink);
}
.receipt__total-label { font: var(--o-weight-ui) var(--o-text-small) / 1.3 var(--o-font-ui); color: var(--o-ink-2); }
.receipt__total-value {
  font: var(--o-weight-title) var(--o-text-title) / 1 var(--o-font-ui); letter-spacing: var(--o-track-title);
  font-variant-numeric: tabular-nums;
}
.receipt__total-value.is-waiting { font-size: var(--o-text-heading); letter-spacing: var(--o-track-heading); line-height: var(--o-lh-heading); }
.receipt__formula { max-inline-size: 46ch; }
.caveats {
  display: grid; gap: var(--o-space-2); margin: var(--o-space-6) 0 0; padding: 0; list-style: none;
  max-inline-size: 72ch; font-size: var(--o-text-small); line-height: var(--o-lh-small); color: var(--o-ink-2);
}
.caveats li { position: relative; padding-inline-start: var(--o-space-5); }
.caveats li::before {
  content: ""; position: absolute; left: 4px; top: .62em; width: 5px; height: 5px; border-radius: 50%;
  background: var(--o-ink-2);
}

/* ========================================================== try it first
   The site's one closing band (as schools.html's). */
.inc-cta .o-section-head { margin: 0; }
.inc-cta .o-title { max-inline-size: 18ch; }
.inc-cta .o-lead { text-wrap: balance; }

/* Sources: a quiet footnote just above the closing ask, on its own canvas
   between the warm allocation and the deep band. */
.inc-sources { padding-block: var(--o-space-8); }
.sources { display: grid; gap: var(--o-space-4); }
.sources__list { display: grid; gap: var(--o-space-3); margin: 0; padding: 0; list-style: none; max-inline-size: 80ch; }
.sources__list li { display: grid; gap: 2px; }
.sources__list span { font-size: var(--o-text-small); line-height: var(--o-lh-small); color: var(--o-ink-2); }
.sources__checked { max-inline-size: 70ch; }

/* ========================================================= motion levels */
html[data-motion="still"] :is(.inc-control, .inc-choice) { transition: none; }

/* ======================================================= forced colours */
@media (forced-colors: active) {
  .ticks li::before, .crosses li::before, .inc-error::before, .facts__list li::before, .caveats li::before { background: CanvasText; }
  .inc-choice:has(.inc-choice__input:checked) { outline: 2px solid Highlight; }
  .blank { border: 1px dashed CanvasText; }
}

/* ================================================================ print
   A leader is likely to print this page for a meeting: the words, the
   principles, both versions of the template, the worked figure and the
   sources with their addresses. No header, footer, buttons or pictures. */
@media print {
  @page { margin: 14mm 14mm 16mm; }
  html, body { background: #fff !important; }
  body { font-size: 10pt; line-height: 1.42; }
  .o-skip, [data-shell-header], .s-header, .s-access, .s-menu, .s-footer, footer.o-footer, .s-toast,
  .inc-sheet, .o-cluster, .inc-hero__note, [data-variant-picker], [data-copy-row], .est__form,
  .inc-links { display: none !important; }
  main .tpl[hidden] { display: flex !important; }
  .o-container { width: auto; }
  .o-section { padding-block: 0 7mm !important; background: none !important; }
  .inc-hero { padding-block-start: 0 !important; }
  .o-split { display: block; }
  .o-display { font-size: 24pt; max-inline-size: none; }
  .o-title { font-size: 16pt; max-inline-size: none; }
  .o-lead { font-size: 11pt; max-inline-size: none; }
  .inc-h3, .o-card__title, .tpl__title, .facts dt { font-size: 12pt; }
  .o-section-head { margin-block-end: 4mm; gap: 2mm; }
  .o-card, .principle--orli, .tpl-side__note { box-shadow: none !important; border-color: #b1aa9a !important; }
  .facts__row, .principle, .tpl, .tpl__row, .receipt__row, .is-card, .map, .tpl-side__note, .est, .sources__list li, .inc-dev, .caveats li, .inc-cta { break-inside: avoid; }
  h2, h3, .o-section-head { break-after: avoid; }
  #template { break-before: page; }
  .caveats { break-inside: avoid; }
  .facts__row { grid-template-columns: 34mm minmax(0, 1fr); gap: 5mm; align-items: baseline; padding-block: 2.6mm; }
  .principle { grid-template-columns: 9mm minmax(0, 1fr); padding: 2.2mm 3mm; }
  .orli-fits { gap: 3mm; max-inline-size: none; }
  .principle--orli { padding-block: 3.4mm; }
  .principle__name { font-size: 11pt; max-inline-size: none; }
  .principle--lead .principle__name { font-size: 12pt; }
  .principle__body { gap: 1.6mm; }
  .principle__evidence { padding-block-start: 1.6mm; }
  .principle__evidence .o-link--arrow { min-height: 0; }
  .principles__title { margin: 4mm 0 1.2mm; font-size: 10pt; }
  .principles .principle { padding-block: 1.6mm; }
  .inc-source { margin-block-start: 3mm; }
  .inc-more { display: none; }
  .o-pill { min-height: 0; padding-block: .8mm; }
  .is-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4mm; }
  .is-card .o-card__body { padding: 4mm; gap: 2.4mm; }
  .ticks li + li, .crosses li + li { margin-block-start: 1.6mm; }
  .inc-dev { margin-block-start: 3mm; }
  .tpl-layout { display: block; }
  .tpl-main { gap: 4mm; }
  .tpl { padding: 4mm 5mm; }
  .tpl__title { margin-block-end: 2mm; }
  .tpl__row { padding-block: 2.2mm; grid-template-columns: 30mm minmax(0, 1fr); gap: 4mm; }
  .tpl-side { margin-block-start: 5mm; gap: 3mm; }
  .map > div { padding-block: 1.6mm; }
  .tpl-side__note { padding: 3.4mm 4mm; gap: 1.6mm; }
  .est { display: block; overflow: visible; }
  .est__result { border: 0; padding: 4mm; gap: 2mm; }
  .receipt__row { padding-block: 1.6mm; }
  .receipt__total-value { font-size: 18pt; }
  .caveats { margin-block-start: 3mm; gap: 1mm; }
  .inc-cta, .inc-cta * { color: #000 !important; }
  .inc-cta .o-section-head { align-items: flex-start; text-align: start; }
  .inc-cta .o-section-head > * { margin-inline: 0; }
  .blank { background: none; box-shadow: none; border-bottom: 1px dotted #797468; border-radius: 0; }
  .sources { margin-block-start: 5mm; gap: 2mm; }
  .sources__list { gap: 1.6mm; }
  .sources__list a::after { content: " " attr(href); font-size: 8pt; color: #52525b; word-break: break-all; }
  a { text-decoration-color: #b1aa9a; }
}
