/* ==========================================================================
   SOLARPUNK — exhibition room. Loaded on a/solarpunk.html only.

   TIER 2. The growth: one continuous drawn line climbs the page in a fixed
   left rail (stem x = 50% of the rail in every segment, so the segments
   read as a single line). Section heads sit at branch terminations; branch
   weight carries rank (--sp-bw, declared curatorial on the page). Leaded
   stained-glass bands do the structural division between zones; the stem
   climbs past them unbroken. Warm daylight ground, green and gold, no cool
   light anywhere. Illustrated, never photographed.

   Colour, with contrast for every text/ground pair introduced here:
     ink      #24391B on ground  #FBF5E4  = 11.50:1   (body)
     ink      #24391B on ground2 #F2E8CC  = 10.26:1   (body, alt zones)
     ink-2    #3F5429 on ground  #FBF5E4  =  7.68:1   (secondary)
     ink-2    #3F5429 on ground2 #F2E8CC  =  6.84:1   (secondary, alt)
     gold-txt #7C5F17 on ground  #FBF5E4  =  5.50:1   (kickers, grades)
     gold-txt #7C5F17 on ground2 #F2E8CC  =  4.90:1   (kickers, alt)
     display  #2C4A1E on ground  #FBF5E4  =  9.16:1   (h1/h2)
     caption ivory #F6E9C8 on night panel #12151C = 15.14:1 (none used —
       demo captions sit on the museum ground, outside both panels)
   Line and glass colours (never text): stem #4A7434, gold line #C2A14E,
   leading #35461F, glass #8CB068 #E5C979 #6E9A4F #D2AC55 #AECB8B.
   Night-panel neons (#FF5FD2, #5EE0F0) appear ONLY inside the declared
   inverse demo panel — the record's own named failure, not the register.
   ========================================================================== */

@font-face {
  font-family: "Young Serif SP";
  src: url("fonts/young-serif.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Petrona SP";
  src: url("fonts/petrona.woff2") format("woff2-variations");
  font-weight: 100 900;
  font-display: swap;
}

.sp-page {
  --sp-ground:  #FBF5E4;
  --sp-ground2: #F2E8CC;
  --sp-ink:     #24391B;
  --sp-ink2:    #3F5429;
  --sp-goldtxt: #7C5F17;
  --sp-disp:    #2C4A1E;
  --sp-stem:    #4A7434;
  --sp-goldln:  #C2A14E;
  --sp-lead:    #35461F;
  --sp-railw:   clamp(3rem, 8vw, 5.5rem);
  --sp-young:   "Young Serif SP", "Iowan Old Style", Georgia, serif;
  --sp-petrona: "Petrona SP", Georgia, "Times New Roman", serif;
}
.sp-page main {
  background: linear-gradient(180deg, #FDF9EC 0%, var(--sp-ground) 30%);
  color: var(--sp-ink);
  font-family: var(--sp-petrona);
}
.sp-canvas { overflow: hidden; }
.sp {
  max-width: 72rem;
  margin-inline: auto;
  padding-inline: clamp(0.5rem, 3vw, 2rem);
}

/* ---- rows: every row shares the rail, so the line never breaks ---------- */
.sp-zone, .sp-div {
  display: grid;
  grid-template-columns: var(--sp-railw) minmax(0, 1fr);
  column-gap: clamp(0.75rem, 2.5vw, 1.75rem);
}
.sp-zone--alt { background: var(--sp-ground2); }
.sp-rail { display: flex; flex-direction: column; min-height: 100%; }
.sp-node { display: block; width: 100%; height: 7.5rem; flex: none; }
.sp-node--crown { height: 9rem; }
.sp-node--root { height: 8rem; }
.sp-run { display: block; width: 100%; flex: 1 1 0; min-height: 0; }

/* The line itself. Branch weight is the rank (--sp-bw per section). */
.sp-stem   { stroke: var(--sp-stem); stroke-width: 4px; stroke-linecap: round; }
.sp-branch { stroke: var(--sp-stem); stroke-width: calc(var(--sp-bw, 3) * 1px); stroke-linecap: round; }
.sp-root   { stroke: var(--sp-stem); stroke-width: 3px; stroke-linecap: round; }
.sp-leaf   { fill: #6E9A4F; }
.sp-leaf--gold { fill: var(--sp-goldln); }
.sp-bud    { fill: var(--sp-goldln); }

/* ---- section bodies ------------------------------------------------------ */
.sp-body { padding: 1.1rem clamp(0.75rem, 3vw, 2.5rem) clamp(1.75rem, 4vw, 3rem) 0; max-width: 46rem; }
.sp-h2 {
  margin: 0 0 0.4rem;
  font: 400 clamp(1.35rem, 2.6vw, 1.8rem)/1.25 var(--sp-young);
  color: var(--sp-disp);
  letter-spacing: 0.005em;
}
.sp-text { margin: 0.75rem 0 0; font-size: 1.02rem; line-height: 1.65; }
.sp-text b { color: var(--sp-ink); }
.sp-text--small { font-size: 0.9rem; color: var(--sp-ink2); }
.sp-grade {
  margin: 0 0 0.9rem;
  font: 400 0.72rem/1.5 var(--mono);
  letter-spacing: 0.06em;
  color: var(--sp-goldtxt);
}
.sp-claim {
  margin: 0.5rem 0 0;
  font: 400 clamp(1.1rem, 2vw, 1.3rem)/1.55 var(--sp-petrona);
  color: var(--sp-ink);
}

/* ---- crown --------------------------------------------------------------- */
.sp-zone--crown .sp-body--crown { position: relative; padding-top: clamp(2rem, 5vw, 3.5rem); max-width: 52rem; }
.sp-dawn {
  position: absolute;
  inset-inline-start: clamp(-2rem, -3vw, -1rem);
  top: 0;
  width: min(36rem, 96%);
  height: auto;
  z-index: 0;
  pointer-events: none;
}
.sp-kicker, .sp-h1, .sp-defining, .sp-aliases, .sp-rule { position: relative; z-index: 1; }
.sp-kicker { margin: 0 0 0.75rem; font: 400 0.72rem/1.4 var(--mono); letter-spacing: 0.22em; text-transform: uppercase; color: var(--sp-goldtxt); }
.sp-h1 {
  margin: 0 0 0.9rem;
  font: 400 clamp(3rem, 9vw, 6.25rem)/1.02 var(--sp-young);
  color: var(--sp-disp);
}
.sp-defining { margin: 0 0 0.6rem; font-size: clamp(1.1rem, 2.2vw, 1.35rem); line-height: 1.5; color: var(--sp-ink); max-width: 34ch; }
.sp-aliases { margin: 0 0 1.5rem; font-size: 0.95rem; color: var(--sp-ink2); font-style: italic; }
.sp-rule { margin: 0; max-width: 56ch; font-size: 0.95rem; line-height: 1.6; color: var(--sp-ink2); border-inline-start: 3px solid var(--sp-goldln); padding-inline-start: 1rem; }

/* The rank scale: the weights the rule above declares, stated in the open so
   the hierarchy is checkable against the rail. */
.sp-scale { margin: 1.1rem 0 0; padding-inline-start: calc(1rem + 3px); display: flex; flex-wrap: wrap; gap: 0.35rem 1.75rem; position: relative; z-index: 1; }
.sp-scale__row { display: flex; align-items: center; gap: 0.6rem; }
.sp-scale__ln {
  width: 2.6rem;
  height: calc(var(--w, 3) * 1px);
  background: var(--sp-stem);
  border-radius: 999px;
  flex: none;
}
.sp-scale__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.sp-scale dd { margin: 0; font: 400 0.78rem/1.4 var(--mono); color: var(--sp-ink2); }

/* ---- claim zone ----------------------------------------------------------- */
.sp-costs { margin-top: 1.5rem; border: 1px solid var(--sp-goldln); border-radius: 1.25rem 0.25rem 1.25rem 0.25rem; padding: 1rem 1.25rem; }
.sp-costs__h { margin: 0 0 0.35rem; font: 400 0.72rem/1.5 var(--mono); letter-spacing: 0.06em; color: var(--sp-goldtxt); }
.sp-costs__row { margin: 0 0 0.35rem; font: 400 1.15rem/1.4 var(--sp-young); color: var(--sp-disp); }
.sp-costs__aud { margin: 0; font-size: 0.95rem; color: var(--sp-ink2); }

/* ---- dividers: the glass does the structural division -------------------- */
.sp-div .sp-glass { display: block; width: 100%; height: clamp(3.25rem, 7vw, 5rem); align-self: center; }
.sp-glass polygon { stroke: var(--sp-lead); stroke-width: 3px; stroke-linejoin: round; }

/* ---- vignette ------------------------------------------------------------- */
.sp-vig { margin: 1.75rem 0 0; }
.sp-vig__art { display: block; width: min(26rem, 100%); height: auto; margin-inline: auto; }
.sp-vg-ground, .sp-vg-trunk, .sp-vg-rib, .sp-vg-arm { stroke: var(--sp-stem); stroke-linecap: round; }
.sp-vg-trunk { stroke-width: 5; }
.sp-vg-rib { stroke-width: 3.5; }
.sp-vg-arm { stroke-width: 3; }
.sp-vg-brace { stroke: var(--sp-goldln); stroke-width: 2; stroke-linecap: round; }
.sp-vg-ground { stroke-width: 2; stroke: var(--sp-goldln); }
.sp-vg-glass { stroke: var(--sp-lead); stroke-width: 2.5; stroke-linejoin: round; }
.sp-cap { margin: 0.9rem auto 0; max-width: 52ch; font-size: 0.9rem; line-height: 1.6; color: var(--sp-ink2); }
.sp-avoid { margin: 1.5rem 0 0; font-size: 0.95rem; line-height: 1.6; color: var(--sp-ink2); }
.sp-avoid b { color: var(--sp-ink); font-weight: 600; }

/* ---- type specimen -------------------------------------------------------- */
.sp-type { margin-top: 1.4rem; border-inline-start: 3px solid var(--sp-goldln); padding-inline-start: 1.1rem; }
.sp-type__disp { margin: 0 0 0.5rem; font: 400 clamp(1.5rem, 3.4vw, 2.1rem)/1.2 var(--sp-young); color: var(--sp-disp); }
.sp-type__body { margin: 0; font: 400 1.02rem/1.65 var(--sp-petrona); color: var(--sp-ink); max-width: 48ch; }

/* ---- the declared-inverse pair -------------------------------------------- */
.sp-pair { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr)); gap: clamp(1rem, 3vw, 2rem); margin-top: 1.5rem; }
.sp-pair__item { margin: 0; }
.sp-vig { display: block; width: 100%; height: auto; border: 2px solid var(--sp-lead); border-radius: 0.4rem; }

/* Day panel: the register held. */
.sp-vig--day .sp-scene-sky   { fill: #F6ECD2; }
.sp-vig--day .sp-scene-floor { fill: #E4E1B5; }
.sp-vig--day .sp-scene-sun   { fill: #E3B94E; }
.sp-vig--day .sp-scene-ray   { stroke: #E3B94E; stroke-width: 3; stroke-linecap: round; }
.sp-vig--day .sp-scene-line  { stroke: var(--sp-goldln); stroke-width: 2.5; stroke-linecap: round; }
.sp-vig--day .sp-scene-rib, .sp-vig--day .sp-scene-hang, .sp-vig--day .sp-scene-leg { stroke: var(--sp-stem); stroke-width: 4; stroke-linecap: round; }
.sp-vig--day .sp-scene-fan { fill: #8CB068; stroke: var(--sp-lead); stroke-width: 2.5; stroke-linejoin: round; }
.sp-vig--day .sp-scene-fan--b { fill: #E5C979; }
.sp-vig--day .sp-scene-sign { fill: #FBF5E4; stroke: var(--sp-stem); stroke-width: 3; }
.sp-vig--day .sp-scene-glyph { stroke: var(--sp-stem); stroke-width: 2.5; fill: #AECB8B; }
.sp-vig--day .sp-scene-bench { fill: var(--sp-goldln); }

/* Night panel: the record's own named failure — darken it and wet it. */
.sp-vig--night .sp-scene-sky   { fill: #12151C; }
.sp-vig--night .sp-scene-floor { fill: #0C0F14; }
.sp-vig--night .sp-scene-rain  { stroke: #3E4A5C; stroke-width: 2; stroke-linecap: round; }
.sp-vig--night .sp-scene-line  { stroke: #232B38; stroke-width: 2.5; }
.sp-vig--night .sp-scene-rib, .sp-vig--night .sp-scene-hang, .sp-vig--night .sp-scene-leg { stroke: #39445A; stroke-width: 4; stroke-linecap: round; }
.sp-vig--night .sp-scene-fan { fill: #171C28; stroke: #5EE0F0; stroke-width: 1.5; stroke-linejoin: round; }
.sp-vig--night .sp-scene-fan--b { fill: #1B2130; }
.sp-vig--night .sp-scene-sign { fill: #10131B; stroke: #FF5FD2; stroke-width: 2.5; }
.sp-vig--night .sp-scene-glyph { stroke: #FF5FD2; stroke-width: 2.5; fill: none; }
.sp-vig--night .sp-scene-bench { fill: #232B38; }
.sp-vig--night .sp-scene-ant { stroke: #5EE0F0; stroke-width: 2; }
.sp-vig--night .sp-scene-ant-tip { fill: #FF5FD2; }
.sp-vig--night .sp-scene-box { fill: none; stroke: #5EE0F0; stroke-width: 2; }
.sp-vig--night .sp-scene-box-ln { stroke: #5EE0F0; stroke-width: 2; opacity: 0.7; }
.sp-vig--night .sp-scene-brk { stroke: #5EE0F0; stroke-width: 2.5; fill: none; }
.sp-vig--night .sp-scene-refl { fill: #FF5FD2; }
.sp-vig--night .sp-scene-refl--1 { opacity: 0.18; }
.sp-vig--night .sp-scene-refl--2 { opacity: 0.32; }
.sp-vig--night .sp-scene-refl--3 { fill: #5EE0F0; opacity: 0.25; }

.sp-xref { margin: 1.25rem 0 0; font-size: 0.98rem; line-height: 1.6; }
.sp-xref a { color: var(--sp-disp); text-decoration-color: var(--sp-goldln); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.sp-xref a:hover, .sp-xref a:focus-visible { color: var(--sp-ink); }

/* ---- the oldest line ------------------------------------------------------ */
.sp-frozen { margin: 1rem 0 0; padding: 0; }
.sp-frozen p { margin: 0 0 0.3rem; font: 400 clamp(1.2rem, 2.4vw, 1.5rem)/1.4 var(--sp-young); color: var(--sp-disp); }
.sp-frozen footer { font: 400 0.72rem/1.5 var(--mono); color: var(--sp-goldtxt); letter-spacing: 0.04em; }

/* ---- motion: the line draws in as growth, root first ----------------------
   Resting styles above ARE the drawn state; everything below is additive and
   exists only where motion is welcome. Reduced motion = fully grown line,
   leaves open, glass lit. */
@media (prefers-reduced-motion: no-preference) {
  .sp-draw {
    stroke-dasharray: 100;
    stroke-dashoffset: 100;
    animation: sp-grow 0.55s ease-out calc(var(--sp-d, 0s)) forwards;
  }
  .sp-node .sp-stem { animation-delay: calc(var(--sp-d, 0s) + 0.4s); }
  .sp-branch { animation-delay: calc(var(--sp-d, 0s) + 0.7s); }
  .sp-node--root .sp-stem { animation-delay: var(--sp-d, 0s); }
  .sp-root { animation-delay: calc(var(--sp-d, 0s) + 0.3s); }
  .sp-leaf, .sp-bud {
    opacity: 0;
    animation: sp-bloom 0.5s ease-out calc(var(--sp-d, 0s) + 1.05s) forwards;
  }
  .sp-glass polygon {
    opacity: 0.25;
    animation: sp-lit 0.8s ease-out calc(var(--sp-d, 0s) + 0.35s) forwards;
  }
}
@keyframes sp-grow { to { stroke-dashoffset: 0; } }
@keyframes sp-bloom { to { opacity: 1; } }
@keyframes sp-lit { to { opacity: 1; } }

/* ==========================================================================
   THE RECORD — the same rail, still climbing, down to the root.
   Same grounds, same inks, same two faces as the room above: every text/
   ground pair here is one already measured in the header table. Labels in
   the mono at gold-txt (>= 4.90:1); sentences in Petrona at ink or ink-2,
   upright, never under 0.95rem. The record's line is drawn already grown.
   ========================================================================== */
/* The shell's scroll reveal must never leave the record at opacity 0. */
.sp-page main > section.sp-rec { opacity: 1; transform: none; transition: none; will-change: auto; }
.sp-rec { color: var(--sp-ink); font-family: var(--sp-petrona); overflow: hidden; }
.sp-rec .sp-draw { animation: none; stroke-dasharray: none; stroke-dashoffset: 0; }
.sp-rec .sp-leaf, .sp-rec .sp-bud { animation: none; opacity: 1; }
.sp-rec .sp-glass polygon { animation: none; opacity: 1; }
.sp-rec a { color: var(--sp-disp); text-decoration-color: var(--sp-goldln); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.sp-rec a:hover { color: var(--sp-ink); text-decoration-color: var(--sp-stem); }
.sp-rec :focus-visible { outline: 3px solid var(--sp-stem); outline-offset: 3px; border-radius: 2px; }
.sp-rbody { max-width: 48rem; }
.sp-rbody > :first-child { margin-top: 0; }
.sp-rn { font: 400 0.6em/1 var(--mono); color: var(--sp-goldtxt); vertical-align: 0.35em; margin-inline-start: 0.2em; }
.sp-h3 { margin: 0 0 0.5rem; font: 400 1.15rem/1.3 var(--sp-young); color: var(--sp-disp); }
.sp-lab { margin: 0; font: 400 0.75rem/1.5 var(--mono); letter-spacing: 0.06em; color: var(--sp-goldtxt); }
.sp-rp { margin: 0.75rem 0 0; font-size: 1.02rem; line-height: 1.65; max-width: 62ch; }
.sp-rp b { font-weight: 600; }
.sp-rsmall { margin: 0.4rem 0 1rem; font-size: 0.95rem; line-height: 1.6; color: var(--sp-ink2); }
.sp-rsmall .sp-lab { margin-inline-end: 0.5rem; }
.sp-rnone { margin: 0.35rem 0 0; font-size: 0.95rem; line-height: 1.55; color: var(--sp-ink2); }

/* The particulars: label over value, in two columns where there is room. */
.sp-rfacts { margin: 0.75rem 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr)); gap: 1rem 2rem; }
.sp-rfacts > div { border-block-start: 2px solid var(--sp-goldln); padding-block-start: 0.5rem; }
.sp-rfacts__wide { grid-column: 1 / -1; }
.sp-rfacts dt { font: 400 0.75rem/1.5 var(--mono); letter-spacing: 0.06em; color: var(--sp-goldtxt); }
.sp-rfacts dd { margin: 0.2rem 0 0; font-size: 1.02rem; line-height: 1.55; }

/* The refusal: set against the claim on the stem's own leaf-shaped edge. */
.sp-rrefuse { margin: 1.25rem 0 0; border-inline-start: 3px solid var(--sp-stem); padding-inline-start: 1rem; }
.sp-rrefuse p:last-child { margin: 0.2rem 0 0; font-size: 1.05rem; line-height: 1.6; }
.sp-costs__h + .sp-costs__row { margin-bottom: 0.75rem; }
.sp-rec .sp-costs__h { font-size: 0.75rem; }
.sp-rec .sp-costs__aud { color: var(--sp-ink); font-size: 1rem; line-height: 1.6; }

/* The diagnostic, lifted out onto the branch in the display face. */
.sp-rdx { margin: 1.1rem 0 0; max-width: 40ch; font: 400 clamp(1.2rem, 2.4vw, 1.45rem)/1.45 var(--sp-young); color: var(--sp-disp); border-inline-start: 3px solid var(--sp-goldln); padding-inline-start: 1rem; }
.sp-rdx--warn { max-width: 48ch; font-size: clamp(1.05rem, 2vw, 1.2rem); }

/* What carries the look. */
.sp-rdims { margin: 0; padding: 0; list-style: none; }
.sp-rdims > li { display: grid; grid-template-columns: minmax(9rem, 12rem) minmax(0, 1fr); gap: 0.25rem 1.5rem; padding: 0.4rem 0 0.7rem; border-block-start: 1px solid rgba(74, 116, 52, 0.28); }
.sp-rdim { margin: 0; display: flex; flex-direction: column; align-items: flex-start; }
.sp-rdim a { font: 400 1.1rem/1.2 var(--sp-young); min-height: 44px; display: inline-flex; align-items: center; }
.sp-rdimv > p { margin: 0.55rem 0 0; font-size: 1rem; line-height: 1.55; }
.sp-rdimv > p.sp-rtags { margin: 0; }
.sp-rtags { display: flex; flex-wrap: wrap; gap: 0 1.1rem; }
.sp-rtags a { min-height: 44px; display: inline-flex; align-items: center; font-size: 1rem; }
.sp-rface { font-size: 1.15em; color: var(--sp-disp); }
.sp-rsws { margin: 0.6rem 0 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 4.5rem)); gap: 0.75rem; }
.sp-rsw { display: flex; flex-direction: column; align-items: flex-start; gap: 0.3rem; }
.sp-rsw i { display: block; width: 2.6rem; height: 2.6rem; border: 2px solid var(--sp-lead); border-radius: 0 60% 0 60%; }
.sp-rsw span { font: 400 0.75rem/1.3 var(--mono); color: var(--sp-ink); }

/* Rules: leaf-marked, by area. */
.sp-rarea { margin: 1.5rem 0 0; }
.sp-rrules { margin: 0; padding: 0; list-style: none; }
.sp-rrules > li { margin: 0 0 1rem; padding-inline-start: 1.4rem; position: relative; }
.sp-rrules > li::before {
  content: "";
  position: absolute; inset-inline-start: 0; top: 0.45em;
  width: 0.7em; height: 0.5em;
  background: #6E9A4F;
  border-radius: 0 70% 0 70%;
}
.sp-rrules .sp-rp { margin-top: 0.15rem; }
.sp-rev { color: var(--sp-ink2); }

/* The ledger. */
.sp-rtw { margin: 1.25rem 0 0; overflow-x: auto; }
.sp-rtbl { border-collapse: collapse; width: 100%; min-width: 26rem; font-size: 0.98rem; }
.sp-rtbl th, .sp-rtbl td { text-align: start; padding: 0.55rem 1rem 0.55rem 0; border-block-end: 1px solid rgba(74, 116, 52, 0.28); vertical-align: top; }
.sp-rtbl thead th { font: 400 0.75rem/1.4 var(--mono); letter-spacing: 0.06em; color: var(--sp-goldtxt); border-block-end: 2px solid var(--sp-goldln); }
.sp-rtbl tbody th { font-weight: 600; }

/* Neighbours. */
.sp-rconf { margin: 0; padding: 0; list-style: none; }
.sp-rconf > li { margin: 0 0 1.1rem; }
.sp-rconf__n { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0 0.9rem; }
.sp-rconf__n > a, .sp-rconf__n > span:first-child { font: 400 1.25rem/1.2 var(--sp-young); color: var(--sp-disp); min-height: 44px; display: inline-flex; align-items: center; }
.sp-rconf .sp-rp { margin-top: 0; }

/* Exits: the last branch. */
.sp-rexits { margin: 0.5rem 0 0; padding: 0; list-style: none; }
.sp-rexits > li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 1rem; padding: 0.2rem 0; border-block-end: 1px solid rgba(74, 116, 52, 0.28); }
.sp-rexits a { font: 400 1.2rem/1.2 var(--sp-young); min-height: 44px; display: inline-flex; align-items: center; }
.sp-rexits span { font-size: 0.98rem; line-height: 1.5; color: var(--sp-ink2); padding-block-end: 0.35rem; }
.sp-zone--last { padding-bottom: clamp(0.5rem, 2vw, 1.5rem); }
.sp-zone--last .sp-run { min-height: 2rem; }

/* ---- narrow screens -------------------------------------------------------- */
@media (max-width: 48rem) {
  .sp-page { --sp-railw: 2.6rem; }
  .sp-node { height: 6rem; }
  .sp-node--crown { height: 7rem; }
  .sp-body { padding-top: 0.85rem; }
  .sp-dawn { width: 100%; }
  .sp-rdims > li { grid-template-columns: minmax(0, 1fr); }
  .sp-rtbl { min-width: 0; table-layout: fixed; font-size: 0.95rem; }
  .sp-rtbl th, .sp-rtbl td { padding-inline-end: 0.6rem; overflow-wrap: break-word; }
  .sp-rtbl tbody th { word-break: normal; }
  .sp-rtbl thead th:first-child { width: 42%; }
  .sp-rtbl thead th { overflow-wrap: normal; hyphens: manual; letter-spacing: 0; }
  .sp-rtbl thead th:last-child { width: 24%; }
}
