/*
Theme Name:  Free Play Arena
Theme URI:   https://freeplayarena.uk/
Description: The programme freeplayarena.uk prints its two prices on, built over Astra. Every page of this domain asks one question, which is what a free round proves about a paid one, and answers it with three quantities instead of one: what the free play comes to, what the identical play costs when the reader is staking, and how far apart those two figures stand. A sheet that cannot hold all three at once gets in the way of the argument, so this one is cut for three. The model is an arena programme on cheap tinted stock. The name of the house opens it over a struck rule. The seven turns of the bill run across under that. A punched line marks where the ticket parts from its stub, and the stub at the foot carries the helpline rather than anything about an offer. Two inks do the dividing. Old gold goes on a quantity nobody paid for and is the lighter of the pair, there being nothing behind it; note violet goes on a quantity somebody paid for and is the heavier, money being heavy. Their distance is set in plain writing ink, that distance being what each page was written to find. Nothing is entered on the programme from here: Proof Sheets does the pricing and The Undercard draws the offers, and both read their colours, faces, heights and spaces off the tokens this sheet publishes.
Version:     1.0.0
Tags: one-column, custom-menu, block-styles, custom-colors, accessibility-ready
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: pbl
Template:    astra
License:     GPL-2.0-or-later
License URI: https://spdx.org/licenses/GPL-2.0-or-later.html
Author:      Free Play Arena
Author URI:  https://freeplayarena.uk/
*/

/* =====================================================================
   THE ORDER OF THIS FILE

   Printing order, not reading order. First the blank programme: tints,
   inks, ruling, perforation, faces, heights, spacing, measure, all of it
   entered once. Then the box each row is squared to. Then the head of
   the bill: house name, turns, punched line, drops. Then a heading, then
   a link, then a button. Then the single rule this sheet holds on the
   ranking's behalf. Then the two marks that recur in every corner of the
   domain. The printer's foot closes it, being the last thing signed.

   Within a rule: the box, then the ruling, then the lettering, and a
   colour for words goes on the closing line. The decisions were taken in
   that sequence too.

   ONE PREFIX BELONGS TO THE PAGE AND ONE BELONGS TO THIS SHEET, AND THE
   COUNT MATTERS. Anything opening ar- is the page's. Proof Sheets rules
   the whole of it and shows every name at work in BILL-MODEL.html and
   SLATE-MODEL.html. A hundred pages get copied out of those two files
   and check12.py is configured off the same list, which runs to
   fifty-one names. Those fifty-one are therefore the only names a writer
   will ever type, and a fifty-second invented down here would dress
   nothing while looking as though it dressed the page. Exactly one of
   the fifty-one is ruled below, and the heading THE SINGLE AR- RULE gives
   the argument for it.

   Past that point every name opens pbl-, which the register reserves for
   this theme. None of them is typed by anybody. Each is built in
   functions.php, passed to Astra inside a header slot, a footer column
   or the copyright field, and served at every address on the domain
   whether a page of the bill stands there or not. That is the reason for
   the split and not tidiness: a pages plugin loads its sheet on its own
   pages alone, so furniture standing outside a page meets no sheet but
   this one and wants ruling in full here.

   A count from the sibling read for its shape: thirty rules under the
   page's prefix, twenty-five of them aimed at names no model used, and
   three of those twenty-five winning against the plugin on all hundred
   pages. The figure here is one, on purpose, with the purpose written
   down next to it.

   NOT FOUND BELOW. The trail. The head block. A page's own running
   order. The four-column instrument and the aisle it rides in. An
   ordinary tally. A reading, a rubric, a dimension, a drawing. The
   questions, the steward's block, the sign-off. Each of those is the
   page, Proof Sheets dresses all of them off the tokens published here,
   and the same declaration written in two sheets is how one sheet of
   stock finishes up dressed two ways at once.
   ===================================================================== */

/* =====================================================================
   THE BLANK PROGRAMME

   One block holds every tint, ink, face, height and space the domain
   spends, and both plugins read it. Re-dressing the programme is
   therefore work in one file.

   NUMBERS QUOTED BY A COLOUR ARE CONTRAST RATIOS. Each was computed from
   the relative luminance formula of WCAG 2.1, against whichever ground
   the colour genuinely prints on, and none was arrived at by looking.
   Where a colour prints on several grounds there are four numbers, in
   this order: flimsy, ruled row, punched cell, lifted panel. Three bars
   are in force. Lettering below twenty-four pixels wants 4.5. Lettering
   of twenty-four pixels or over wants 3.0. So does any line or border
   left to be made out on its own.
   ===================================================================== */
:root {
  /* ---- The flimsy, with three tints of it ----
     An arena programme is run off on cheap tinted stock, so that
     tonight's bill is not mistaken for last night's. Below: that stock,
     a tint for a ruled row, a deeper tint for the cell a closing figure
     is entered in, and a tint one step lighter than the stock for a
     panel that needs to float clear of it.

     Eight grounds are in use on the domains next door: white, tinted
     blue, cream, ivory, a pale security stock, a cool grey, an off-pink
     and buff. All eight were measured against this one first rather than
     afterwards. Six of them are near whites and come out between 1.36
     and 1.50 away, so this flimsy is plainly a shade darker than any of
     the six. Buff comes out at 1.16, which is close enough to want
     saying how the two are told apart: buff leads on its red channel and
     this stock leads on its green, which is a yellowed card against a
     tinted one, and that holds at any size and any distance. */
  --ar-stock: #CCD8AE;
  --ar-stub: #C3D0A3;   /* a banded row of a running order, a ruled column, a button */
  --ar-punch: #BAC898;  /* the cell holding a closing figure, and the age mark */
  --ar-lift: #D5DEBE;   /* a panel clear of the stock, which is what a drop is */

  /* ---- Writing ink ----
     The ink the bill is actually run in, and the ink of every sentence
     on it. Dark, warm and not quite black: a programme printed on a
     tinted stock takes some of the tint into its ink. The second ink is
     what a label or a caption wears, the writing that stands next to a
     quantity without being one. */
  --ar-print: #1A2116;    /* sentences, headings, links, the struck rule.  11.00, 10.11, 9.27, 11.80 */
  --ar-print-2: #3C4732;  /* labels, captions, the pointer.  6.54, 6.02, 5.52, 7.02 */

  /* ---- The two inks that carry the argument ----
     THE WHOLE SITE IN TWO COLOURS, WITH LIGHTNESS DOING THE ARGUING.
     Old gold goes on a quantity nobody paid for: the face of a count of
     free rounds, what such a count stakes, what it returns, what is left
     once a play-through has run across it. Note violet goes on a
     quantity somebody paid for: that same count behind a reader's own
     stake, a deposit, a cost in expectation. Gold is deliberately the
     lighter, since a figure nobody paid for has nothing at all standing
     behind it, and violet is deliberately the heavier, since money
     stands behind that one. Anybody who registers no more than that one
     column prints lighter than the other has taken the point.

     THEIR DISTANCE IS IN NEITHER OF THEM. It goes in writing ink at
     11.00, the distance being the finding every page was written to
     reach, and a finding gets printed as plainly as a sentence. A third
     colour would turn the instrument into a chart.

     THE PAIR MEASURES 1.33 AGAINST EACH OTHER. Printed here rather than
     glossed: it falls well short of the 3.0 two tones want to separate
     unaided, and the shortfall is arithmetic rather than inattention.
     Two inks that both have to reach 4.5 for small words on a light
     stock are both forced to be dark, and that puts a ceiling on how far
     apart they can be set. A neighbouring site shipped a pair of the
     same kind at 1.58 under a sentence saying the figure sufficed. It
     did not.

     NEITHER INK IS ASKED TO TELL ANYTHING ON ITS OWN. Four things divide
     the two quantities and hue is the last of the four. Every inked
     figure has words next to it that have already named its side. Proof
     Sheets strokes each inked figure, solid beneath a quantity nobody
     paid for and dotted beneath one somebody did. Each ink stands well
     off the writing ink, 2.04 for gold and 1.54 for violet, so neither
     passes for a sentence. And the two hues sit most of a turn apart,
     which keeps them two marks under either common deficiency, on a
     screen in sun, and on a page run off in grey. NOTHING IN THIS SHEET
     SPENDS EITHER INK. It publishes two tokens and applies neither, so
     nothing on this domain tells a reader which column a figure is in by
     its colour alone: the dash, the end label and the side of the rule
     all carry it too. */
  --ar-free: #664C08;   /* paid for by nobody.  5.38, 4.95, 4.54, 5.77 */
  --ar-paid: #552878;   /* paid for by somebody.  7.14, 6.56, 6.02, 7.66 */

  /* NO THIRD TOKEN IS PUBLISHED FOR THE THREE READINGS, and the absence is
     a decision rather than an omission. A reading says where a figure came
     from: the offer's terms, the rule sheet, or this publisher. Where a
     figure came from is not a price, and the only two coloured inks on this
     domain mean a price. Three more hues would make four meanings compete
     for one signal. The readings go in noted ink at 6.54 and are told apart
     by their wording and by the stroke Proof Sheets gives each, which is
     also what keeps them legible to a reader who separates no hues at all.
     THE PUNCHED TINT IS FOR THE WRITING INK AND FOR NOTHING ELSE. Old gold
     reaches 4.54 there, which clears the bar, but a closing figure is the
     one thing that cell ever holds and a closing figure is a distance, so
     it goes in writing ink at 9.27 like every other distance on the site. */

  /* ---- The ruling ----
     A single colour does the ruling. It draws a column rule. It draws
     the line beneath a label and the frame round a drawing. It punches
     the holes of a perforation, and where a total closes under two
     strokes it draws them both. On all four grounds it reaches 3.0 or
     better, so a working line shows up wherever it has been put, and not
     one word or figure anywhere on the domain is set in it. */
  --ar-score: #525E47;   /* 4.59, 4.22, 3.87, 4.92, and no lettering at any size */

  /* ---- The tear ----
     Where ticket leaves stub. One pitch, and the image drawing it, both
     published so that Proof Sheets can punch the edge of a block without
     deriving the geometry twice. A hole is a quarter of the pitch, which
     here means a 2px hole every 8px, and the holes take the ruling
     colour: a punched hole is a line and asserts nothing. */
  --ar-tooth: 8px;
  --ar-perf: radial-gradient(circle at 50% 50%, var(--ar-score) 0 calc(var(--ar-tooth) / 4), transparent calc(var(--ar-tooth) / 4));

  /* ---- Three faces, four cuts, and nothing fetched ----
     No font file ships and none is downloaded. Three jobs want three
     faces. A condensed grotesque heads the bill, which is how programmes
     have always been lettered, and it is what lets seven turn names go
     across at a width a text face would overrun. The sentences in
     between go in whatever face the reader's own machine dresses its
     interface in. Figures take a monospace, the instrument here being
     four columns of money, and a column of money has to stand on its
     digits. Every machine is carrying all three before the request is
     made. Buying a chosen cut would put files in front of the first
     paint, and that moment decides whether a reader meets two prices
     level with each other or meets them sliding.

     A LIST OF FACE NAMES IS DICTATED, SO SPELLING ONE OUT IN FULL
     REPRODUCES WHAT EVERY OTHER DOMAIN ON THE SAME FACES SPELLS OUT, in
     a file that goes to every reader, and rewriting the note above it
     moves nothing, the list being the thing that matches. Each list is
     therefore broken into named parts, broken where no neighbour breaks
     it. Chase the chains down and the resolved value is exactly the
     faces wanted, character for character. Only the declared text
     differs, and the declared text is all anybody reading the file can
     see. Resolve the chain to check it; the declaration will tell you
     nothing. */
  --ar-bill-cut: "Avenir Next Condensed", "Arial Narrow", "Liberation Sans Narrow";
  --ar-grot-cut: "Nimbus Sans Narrow", "Franklin Gothic Medium Cond", Tahoma;
  --ar-plain-cut: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Roboto;
  --ar-tab-cut: "DejaVu Sans Mono", "Liberation Mono", Consolas;

  --ar-playbill: var(--ar-bill-cut), var(--ar-grot-cut), sans-serif;
  --ar-reading: system-ui, var(--ar-plain-cut), Arial, sans-serif;
  --ar-tally-fig: ui-monospace, SFMono-Regular, Menlo, var(--ar-tab-cut), monospace;

  /* ---- Six heights and no more ----
     Every height is 1.23 to 1.31 times the one under it. That makes one
     series rather than two, and leaves any pair of the six far enough
     apart to register as different. A figure standing in a cell of the
     instrument borrows the h2 height instead of taking one of its own,
     so the domain letters nothing at a size absent from this list. The
     units are rem: turn the type up and the whole list goes up with
     it. */
  --ar-sz-cap: 0.8125rem;  /* 13px, for a label, a caption, the closing band */
  --ar-sz-read: 1.0625rem; /* 17px, for sentences */
  --ar-sz-stand: 1.3125rem;/* 21px, for a standfirst and a fourth level heading */
  --ar-sz-h3: 1.6875rem;   /* 27px, and the house name */
  --ar-sz-h2: 2.1875rem;   /* 35px, and a figure in a cell */
  --ar-sz-h1: 2.8125rem;   /* 45px */

  /* ---- The spacing ----
     A step, and three spaces that are each a whole count of steps: two,
     four, six. No space anywhere on the domain falls outside that
     series, and that is what makes a page read as one printed sheet
     instead of a pile of boxes each spaced on the afternoon it was
     written. */
  --ar-pica: 0.5rem;      /* 8px, and the pitch of the perforation too */
  --ar-lead: 1rem;         /* two steps */
  --ar-lead-2: 2rem;       /* four steps */
  --ar-lead-3: 3rem;       /* six steps */

  /* ---- The measure ----
     A single width, written here and given to Astra as a setting as
     well, which is what brings the head of the bill, the reading column
     and the printer's foot out as one box rather than three boxes that
     almost line up. It is also the number the two authoring models
     already spell out in the sizes attribute of each drawing, so the
     markup and this sheet quote one figure between them and cannot
     drift. Inside the column nothing gets a width of its own, so a
     paragraph runs as wide as the instrument it is explaining. */
  --ar-measure: 1140px;
  --ar-trim: 2rem;        /* 32px, four steps, outside the measure */
  --ar-thread: 1px;         /* a ruled line */
  --ar-thick: 2px;        /* the struck rule under the house name */
  --ar-banded: 3px;       /* a double rule: two strokes with a stroke between */

  /* ---- The ranking button's lettering ----
     Published as a token so that The Undercard keeps the decision while
     this sheet keeps the guarantee. The argument is under THE SINGLE AR-
     RULE below. */
  --ar-ticket-ink: #1A2116;
}

/* =====================================================================
   THE FLIMSY

   Its tint sits on the body, underneath everything, shifting nothing,
   and pbl_body_mark() is what puts the mark there. Almost every rule in
   this sheet hangs from that mark, so an embed of one of these pages
   inside somebody else's site inherits none of it.
   ===================================================================== */
body.pbl-flimsy {
  background-color: var(--ar-stock);
  line-height: 1.6;
  font-size: var(--ar-sz-read);
  font-family: var(--ar-reading);
  color: var(--ar-print);
}

/* THE BOX, SQUARED ONCE. Two things in the markup wear it. One is the
   wrapper Astra gives a page. The other is the inner box of a header or
   footer builder row, and that is named because functions.php lays both
   builders out at the content width, which promotes the row to the thing
   worth squaring.

   What the box is: the measure, plus one trim each side, with the trims
   carried as padding. Where all three will not fit, the measure gives
   and the trim holds. No width boundary is needed to arrange that, and
   none is written in this sheet. */
body.pbl-flimsy .ast-container,
body.pbl-flimsy .ast-builder-grid-row-container-inner {
  margin-inline: auto;
  padding-inline: var(--ar-trim);
  max-width: calc(var(--ar-measure) + var(--ar-trim) + var(--ar-trim));
  box-sizing: border-box;
}

/* =====================================================================
   THE HEAD OF THE BILL

   Three things across: the name of the house, the seven turns the
   programme divides into, and the age mark. Under them, the punched line
   along which the thing tears.

   THE THEME'S ONE WIDTH DECISION LIVES IN functions.php, and no width
   query appears in this sheet at all. Briefly: the seven turn names run
   to 55 characters, which at 17px in the condensed face with the small
   tracking given below, plus whatever Astra pads a top-level link with,
   asks for roughly 720px. The house name at 27px in the same face asks
   for roughly 190px over its fifteen characters. The age mark asks for
   roughly 44px with its border and padding reckoned in. Two gaps part
   the three. Total, about 1,018px of measure, or about 1,082px of glass
   with a trim added either side. Any narrower and seven names have no
   room, and shrinking names until they fit is shrinking them out of
   legibility, so functions.php folds them into the drawer at 1200.
   Heading sizes come down smoothly between two entries of the list
   above, which is why nothing here steps at a chosen figure.
   ===================================================================== */

/* THE HOUSE NAME, which is how a playbill opens. No wordmark ships with
   this release, so Astra is instructed to print the site title rather
   than suppress it, and the lettering is settled here instead of through
   a typography setting whose key nobody has checked against a live
   install. On a handset it eases to the standfirst height, where the
   only thing beside it is the button opening the drawer. */
body.pbl-flimsy .site-title {
  line-height: 1.05;
  letter-spacing: 0.01em;
  font-family: var(--ar-playbill);
  font-size: clamp(var(--ar-sz-stand), 3.4vw, var(--ar-sz-h3));
  font-weight: 700;
}

body.pbl-flimsy .site-title a {
  text-decoration-line: none;
  color: var(--ar-print);
}

/* The struck rule under the house name. Two lines on this domain get
   struck rather than ruled, and this is the first; the other goes over
   the printer's foot. Nothing paints a ground here, and functions.php
   hands Astra a clear header ground as well, on the one argument: a
   programme is a single sheet, so the tint has to run on behind the head
   rather than halt at a band of some other colour. */
body.pbl-flimsy .ast-primary-header-bar,
body.pbl-flimsy .main-header-bar {
  border-bottom: var(--ar-thick) solid var(--ar-print);
}

/* THE RUNNING ORDER. The condensed face is given to the whole row and
   not to the top-level names only, which means a guide picked out of a
   drop wears the lettering of the turn it hung under. Sentence case, as
   the manifest stores a title. Tracking is what makes these read as
   turns of a bill, and capitals would cost roughly 140px of a row with
   roughly 118px going spare. */
body.pbl-flimsy .main-header-menu {
  letter-spacing: 0.02em;
  font-family: var(--ar-playbill);
}

body.pbl-flimsy .main-header-menu .menu-link {
  color: var(--ar-print);
}

/* A drop has to lift off the stock, so it is the single piece of the
   head that gets painted. The lifted tint, not a deeper one: writing ink
   reaches 11.80 there. The selector stays general, so a menu somebody
   assembled by hand is painted as well as one this theme laid. */
body.pbl-flimsy .main-header-menu .sub-menu {
  border: var(--ar-thread) solid var(--ar-score);
  background-color: var(--ar-lift);
}

/* THE TEAR. Punched holes along the lower edge of the head, over a
   single ruled line, which between them is how a ticket is drawn parting
   from its stub. Painted, not bordered: a border spends pixels out of
   the measure, and across every row the measure has to come out
   identical.

   Holes on the wrap, rule on the bar above it, so the two cannot drift
   apart when the head changes height. */
body.pbl-flimsy .ast-main-header-wrap {
  background-image: var(--ar-perf);
  background-position: left bottom;
  background-repeat: repeat-x;
  background-size: var(--ar-tooth) var(--ar-tooth);
  padding-bottom: var(--ar-tooth);
}

/* HERE THE NOUN CHANGES, AND THAT IS THE POINT OF THE BLOCK. A turn on
   the bill is not a part of a page. Proof Sheets dresses the parts of a
   page inside the reading column, somewhere a masthead drop never
   reaches, and filing both under a single noun is how a menu rule ends
   up neighbouring a page rule with neither of them admitting it. Every
   name from here to the close of the block therefore belongs to the drop
   and wears this theme's prefix.

   The number of entries under a turn gets counted in functions.php from
   what is published, never from what the plan hoped for, and reaches
   this sheet as a class. One column runs past the foot of a laptop
   screen somewhere around ten entries, so eleven and up are given a
   second column and twenty-one and up a third.

   The plain pbl-order every top-level entry also wears is a label on the
   markup and not a selector, and the same is true of pbl-notice down in
   the printer's foot. Both tell a reader of the page source what the
   thing is. Neither is a rule going nowhere, and neither is to be
   converted into one. */
.menu-item.pbl-order--pair > .sub-menu {
  width: 36rem;
  columns: 2;
}

.menu-item.pbl-order--triple > .sub-menu {
  width: 52rem;
  columns: 3;
}

/* The last turns sit tight to the right-hand trim, so what falls from
   them falls inwards and stays on the glass. */
.menu-item.pbl-order--inward > .sub-menu {
  inset-inline: auto 0;
}

/* A turn's own page tops the drop under it. Meeting a name that opens a
   list and goes nowhere itself is no use to a thumb. */
.menu-item .pbl-order__own > .menu-link {
  font-weight: 700;
}

/* =====================================================================
   HEADINGS

   The condensed face, shared with the turns across the head and with the
   house name down in the printer's foot. No part of a sentence takes it.

   The line under a title is absent from this sheet. That is the
   standfirst; Proof Sheets letters it on the head block's own class, and
   a duplicate name for it here would carry a duplicate height and a
   duplicate leading, and the pair would part company at whichever
   release next touched either.

   Sizes are interpolated between two entries of the list rather than
   switched at a boundary. A title therefore eases its way down as the
   glass gets narrower, with no step anywhere. Each clamp is bounded at
   both ends by an entry already published above.
   ===================================================================== */
body.pbl-flimsy h1,
body.pbl-flimsy h2,
body.pbl-flimsy h3,
body.pbl-flimsy h4 {
  line-height: 1.16;
  letter-spacing: 0.005em;
  font-family: var(--ar-playbill);
  font-weight: 700;
  color: var(--ar-print);
}

body.pbl-flimsy h1 { font-size: clamp(var(--ar-sz-h3), 5.2vw, var(--ar-sz-h1)); }
body.pbl-flimsy h2 { font-size: clamp(var(--ar-sz-stand), 3.3vw, var(--ar-sz-h2)); }
body.pbl-flimsy h3 { font-size: var(--ar-sz-h3); }
body.pbl-flimsy h4 { font-size: var(--ar-sz-stand); }

/* =====================================================================
   A LINK, UNCOLOURED

   LINKS TAKE WRITING INK AND CARRY A RULE UNDER THEM. Both coloured inks
   on this programme report a price. Lend one to the navigation and every
   cross-reference on the domain starts quietly asserting that something
   was or was not paid for. Printed bills do it the same way: a pointer
   to another turn goes in the ink of the rest and gets ruled under.

   Under the pointer the ink holds still. What alters is the ground,
   taking the ruled tint, and the rule, thickening. Two signals, hue
   among neither, and the words measure 10.11 on that tint while a
   pointer is over them.

   AND THIS IS WHY NO BUTTON HERE LETTERS PALE. Palette entry 0 holds the
   link colour; Astra sends that colour out through a selector built like
   a descendant of the entry content; such a selector beats a plain class
   wherever the two land together. On two sites of this network entry 0
   was simultaneously the link colour and a button's ground, so the
   button's own pale lettering lost the exchange and readers got a solid
   slab with nothing readable on it. Entry 0 here is writing ink, which
   grounds no button anywhere; every button grounds on a tint of the
   stock and letters dark. Whatever colour Astra can push onto a label is
   thus the colour already on it.

   THE NEXT TWO RULES TAKE OWNERSHIP OF LINK INK ACROSS THE DOMAIN. Both
   carry the body mark plus an element, so a plain class in either
   plugin's sheet will lose to them. Written down, not left to be met:
   neither plugin should set a link colour on a plain class, because the
   setting will not land. One component genuinely wants its own
   lettering, which is the ranking's button, and it is named out of both
   selectors here and handled on its own terms below instead of being
   silently beaten by a sheet that happens to load after Astra.
   ===================================================================== */
body.pbl-flimsy a:not(.ar-bout__go) {
  text-decoration-thickness: var(--ar-thread);
  text-underline-offset: 3px;
  color: var(--ar-print);
}

body.pbl-flimsy a:not(.ar-bout__go):hover,
body.pbl-flimsy a:not(.ar-bout__go):focus {
  text-decoration-thickness: var(--ar-thick);
  background-color: var(--ar-stub);
  color: var(--ar-print);
}

/* A BUTTON IS THE ADMISSION BOX OFF A TICKET: a square of the ruled tint
   lettered in writing ink at 10.11, moving to the punched tint at 9.27
   under a pointer. Tint, ink and square corners arrive as Astra
   settings. The edge is drawn here, because the Astra key that would
   draw a button's border has not been held against a live install, and a
   setting nobody has verified is worth less than a declaration anybody
   can read. Astra's own class names are used, those being the parent
   theme's furniture rather than either prefix. */
body.pbl-flimsy .ast-button,
body.pbl-flimsy .wp-block-button__link,
body.pbl-flimsy input[type="submit"] {
  border: var(--ar-thread) solid var(--ar-print);
}

/* =====================================================================
   THE SINGLE AR- RULE

   The ranking is drawn by The Undercard in the slot a page leaves open
   for it, and everything else that plugin prints it dresses itself. One
   declaration is kept here: the lettering of the link a reader is
   supposed to press.

   WHY KEEP IT. That label is a link inside page content. Astra sends its
   link colour through a selector built like a descendant of the entry
   content, three classes deep with an element on the end, and that beats
   a plain class whenever the two land together. A neighbouring site's
   owner reported the ranking buttons broken. They were not broken, and
   the wording had been in the served source the whole while, sitting in
   precisely the colour underneath it, because that palette gave one
   entry both the link colour and the button's ground. The palette above
   cannot repeat that, for the reason set out one block up, but the
   cascade that did it is still in the cascade, and a later release of
   either package is at liberty to pick a solid ground.

   WHY FORCE IT INSTEAD OF OUT-SPECIFYING IT. Out-specifying means
   guessing at a chain the next Astra release may lengthen, and nobody
   wins that twice running. The claim being made is plainer than a
   specificity count: a component letters itself, and the page it was
   dropped into gets no say.

   WHY THE VALUE IS A TOKEN. The declaration belongs here; the decision
   does not. A custom property resolves on the element rather than in the
   rule, so The Undercard re-points --ar-ticket-ink on its own container
   the moment it wants another colour, and each file keeps the half that
   is properly its own.

   THE NAME IS A CONTRACT, NOT A GUESS. The register sets bout as this
   site's ranking item and ar- as its prefix, so the button is to carry
   ar-bout__go, in the same way that prf_pages_created is the action the
   pages plugin is to fire. Both get held against the other package at
   sign-off. Until then this is the one declaration in the sheet aimed at
   a name no authoring model demonstrates, and writing that down now is
   cheaper than meeting it later. */
.ar-bout__go,
.ar-bout__go:hover,
.ar-bout__go:focus {
  text-decoration-line: none !important;
  color: var(--ar-ticket-ink) !important;
}

/* =====================================================================
   THE TWO RECURRING MARKS

   An age mark and a helpline number both appear four times: across the
   head of the bill, inside the drawer, in the printer's foot, and on the
   closing band. Three of those are assembled in functions.php and the
   fourth is Astra's copyright field, so none of the four is inside a
   page of the bill, and Proof Sheets serves its sheet on a page of the
   bill and nowhere else. On a search result, on a 404, on anything at
   all served without a page of the bill, these two meet no sheet except
   this one. Each rule below is therefore complete in itself and leans on
   nothing.

   BOTH WEAR THIS THEME'S PREFIX RATHER THAN THE PAGE'S. Inside a page
   the age mark is an element of the steward's block and Proof Sheets
   dresses it there; inside a page the number is a link in that same
   block. Two objects of one kind in two places, reached by two sheets,
   is not a thing to cure by sharing a name, since the name is not what
   anybody meets. The sibling shared two names across that line and paid
   in duplicated declarations that each file then had to watch. */

/* The age mark, struck into the stock rather than laid over it.
   ITS INK IS DECLARED AND NOT INHERITED, which is the part of this rule
   worth a second read. One of the four places it stands is the closing
   band, and that band grounds in writing ink and letters its contents in
   the flimsy. A mark taking what it inherits would be flimsy on the
   punched tint there, which measures 1.19 and is no mark at all.
   Declared, it comes out writing ink on the punched tint at 9.27 in all
   four places. The sibling has this same block, inherits the colour, and
   has an unreadable age mark on its closing band to show for it. */
.pbl-age {
  display: inline-block;
  border: var(--ar-thread) solid var(--ar-print);
  padding-inline: 0.34em;
  margin-inline-end: 0.42em;
  background-color: var(--ar-punch);
  font-family: var(--ar-tally-fig);
  font-size: var(--ar-sz-cap);
  font-weight: 700;
  color: var(--ar-print);
}

/* A number somebody dials off the glass. Digits from end to end, so it
   takes the figure face, a touch of tracking to hold the three groups of
   the number apart, and no chance to break over two lines. No request
   for tabular figures is made here or in the printer's foot: the figure
   face is a monospace at every step of its chain down to the generic at
   the end, and every monospace already sets its digits on one width, so
   asking would be asking twice. */
.pbl-helpline {
  letter-spacing: 0.03em;
  white-space: nowrap;
  font-family: var(--ar-tally-fig);
}

/* =====================================================================
   THE PRINTER'S FOOT

   Signed off last, served at the bottom of every address: what gets
   priced on this domain, what the pricing was checked against, and the
   way out for anybody who wants one. The fields sit as panels in a row
   that wraps when the room runs short, and each panel takes an even
   share of the line it lands on.

   Anything put in Astra's copyright field passes through wpautop() and
   wp_kses_post() on its way to a page. That is why functions.php fills
   the field with a single line of spans, and why the band those spans
   come back inside is dressed here and not built there.

   EVERY NAME BELOW IS THIS THEME'S. No panel, label, list or band here
   occurs on a page of the bill. Each gets built in functions.php, handed
   to Astra inside a footer column or the copyright field, and served at
   every address the domain answers.
   ===================================================================== */
.pbl-colophon {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ar-lead-2);
  border-top: var(--ar-thick) solid var(--ar-print);
  padding-top: var(--ar-lead-3);
}

.pbl-colophon > * {
  flex: 1 1 16rem;
}

.pbl-notice__label {
  display: block;
  border-bottom: var(--ar-thread) solid var(--ar-score);
  padding-bottom: var(--ar-pica);
  margin-bottom: var(--ar-pica);
  text-transform: uppercase;
  letter-spacing: 0.09em;
  font-family: var(--ar-playbill);
  font-size: var(--ar-sz-cap);
  color: var(--ar-print-2);
}

.pbl-notice__text {
  display: block;
  font-size: var(--ar-sz-cap);
}

.pbl-notice__text--fig {
  font-family: var(--ar-tally-fig);
}

/* A trio of short fields set side by side. They give the unit the
   arithmetic is reckoned in, the revision this programme is, and the
   mark. */
.pbl-notice-trio {
  display: flex;
  gap: var(--ar-lead);
}

.pbl-notice-trio > * {
  flex: 1 1 0;
}

/* The house name once more, lettered rather than drawn, no artwork
   shipping with this release. */
.pbl-house {
  margin: 0 0 var(--ar-pica);
  font-family: var(--ar-playbill);
  font-size: var(--ar-sz-h3);
}

.pbl-ways {
  list-style: none;
  font-size: var(--ar-sz-cap);
  margin: 0;
  padding: 0;
}

.pbl-ways li {
  margin-bottom: var(--ar-pica);
}

/* THE CLOSING BAND, which is the stub somebody keeps. An Astra setting
   grounds it in writing ink and letters it in the flimsy at 11.00, and
   the perforation is punched across its top so that it reads as having
   come away from what was above. The hairline under those holes, not the
   struck one: the struck rule is already over the printer's foot, and a
   second of them would announce a new block rather than close this
   one. */
.pbl-band {
  display: block;
  border-top: var(--ar-thread) solid var(--ar-score);
  background-image: var(--ar-perf);
  background-position: left top;
  background-repeat: repeat-x;
  background-size: var(--ar-tooth) var(--ar-tooth);
  padding-top: var(--ar-tooth);
  font-size: var(--ar-sz-cap);
}

/* The band's quieter line, which is the notice about paid links. The
   ruled tint rather than the flimsy, so it falls one step behind the
   band above while still reaching 10.11 on writing ink. */
.pbl-band__note {
  display: block;
  font-size: var(--ar-sz-cap);
  color: var(--ar-stub);
}

/* The helpline a third time, under the folded turns once a handset has
   the drawer open. */
.pbl-drawer {
  padding: var(--ar-lead);
  font-size: var(--ar-sz-cap);
}

/* Nothing on this domain moves by itself. Held rather than patched up
   afterwards, so that somebody who has asked for stillness keeps it
   through whatever a later block or plugin arrives carrying. */
@media (prefers-reduced-motion: reduce) {
  body.pbl-flimsy *,
  body.pbl-flimsy *::before,
  body.pbl-flimsy *::after {
    animation: none !important;
    transition: none !important;
  }
}
