/* nine/frame.css — the eight solved numbers, in one place
 * ===========================================================================
 * A RELOCATION, NOT A DESIGN. These were written in three places
 * (gala/sky.css, dash/dash.css, nine/handles.js); the two stylesheets now
 * read this file instead. Every value was already the computed value on every
 * page that loads gala/sky.css, measured at four decimals before and after
 * the move. Nothing here is new and nothing here may be tuned without
 * re-deriving the aspects.
 *
 *   a pack + nine/shell.css + nine/frame.css + nine/nine.js  =  the shell
 *
 * and gala/sky.css becomes optional scenery. THE DERIVATION is in
 * ops/GALA-SHELL.md §2, the two copies that stay in JavaScript are in §9, and
 * the measured proof of both link orders is §8a. Read that before changing a
 * character here: these are solved, not chosen.
 *
 * ── THREE TRAPS, EACH OF WHICH COST SOMETHING ─────────────────────────────
 * 1 · THE GAP IS A PERCENTAGE because a fixed 8px is exact at exactly one
 *     frame size, and the two percentages DIFFER IN ORDER TO BE EQUAL IN
 *     PIXELS: column-gap% resolves against width, row-gap% against height,
 *     and 1.1% of width is 1.956% of height at 16:9. Computed `column-gap`
 *     returns the percentage, not the used pixels — measure the seam off the
 *     tracks (content box less their sum, halved), never by parsing it.
 * 2 · `--frame-pad: 0` IS THE 1.1% ERROR. shell.css insets the frame, which
 *     puts the grid in a content box of aspect 1.7976 inside a border box of
 *     1.7778 — 1.0111, precisely what every cell was out by. Zero makes
 *     content box = border box, so the grid is 16:9 at every size rather than
 *     at none. It is a token, not `padding: 0`: shell.css reads it inside an
 *     attribute-selector rule a page's media query cannot outrank.
 * 3 · TWO DECLARATIONS CARRY `!important` AND SEVEN MUST NOT.
 *     The gaps need it: shell.css writes the `gap` SHORTHAND and these are
 *     LONGHANDS, and a longhand only beats a shorthand on source order — so
 *     without it, frame.css linked above shell.css silently loses the exact
 *     aspects at every size. sky.css and dash.css both carried it here.
 *     The seven custom properties must not have it, and must stay at exactly
 *     `.vista` specificity: shell.css DECLARES NO TOKENS, so they are
 *     unopposed at any order already — while an `!important` (or a
 *     `.vista.vista`) would outrank shell.css:256-257's
 *     `body[data-left="shut"] .vista { --col-input: var(--rail, 66px) }`
 *     and the rails would stop folding, on every page, silently.
 * ======================================================================== */
.vista {
  --col-input: 1fr;     --col-work: 3fr;  --col-output: 1fr;
  --row-top:   .3164fr; --row-mid:  1fr;  --row-bot:   .2379fr;
  column-gap: 1.1%   !important;
  row-gap:    1.956% !important;
  --frame-pad: 0;
}
