/* =====================================================================
   THE DAILY - a magazine, and a magazine's design is its rhythm
   =====================================================================
   Jack, 28 September: "its very boring... should utiilse alments like the weather, and hsould be
   exciting", then "ok build something amazineg - needs to be a much better design, we coul duse a hero
   or come up with somethig creative".

   HAND-WRITTEN, like _ours.css and _home5.css. No builder makes this file.

   WHAT WAS WRONG WITH THE FIRST CUT. Nine sections in a fixed order, every one the same shape: kicker,
   headline, paragraph. The eye had nothing to do, and tomorrow's edition would have looked exactly like
   today's. A magazine alternates - full-bleed photograph, column of type, something set enormous, a
   list, a photograph again - and that alternation IS the design. So every kind of section here has its
   own shape and no two neighbours are drawn alike.

     the hero      a full screen of one of ours, the masthead over it like a cover
     the glance    one row of figures
     on today      cards with times
     the news      three columns of type, no photographs at all
     on this day   a wide plate with the year over it
     did you know  one sentence, enormous, on oat
     the question  a full-bleed photograph with the question over it
     out there     three short entries in a row
     four ideas    four tall cards
   --------------------------------------------------------------------- */

/* --dy-gap was clamp(56px,7vw,110px) and is the top padding of every unbanded section, so it was
   the other half of the 207px joins. It takes the same number as the banded ones. */
.dy{--dy-col:34em;--dy-wide:1100px;--dy-gap:var(--dy-pad);color:var(--ink)}

/* ---- THE COVER ----
   A full screen of one of our own photographs with the masthead over it. Every daily round-up in
   Britain opens on a headline because a headline is all an aggregator has; we have 19,257 of these.

   THE TINT IS TWO LAYERS, not one. A single dark wash over a photograph flattens it - the sky goes grey
   and the land goes grey with it. A tweed multiply keeps the colour and a gradient from the foot gives
   the type somewhere to sit, which is the same pair the door cards use. */
/* THE FILM RUNS UNDER THE BAR. header.site is position:sticky, so it takes 76px of the flow and the
   hero began below it - which meant the glass bar went transparent over PAPER and its shell-coloured
   words vanished. Pulling the hero up by the bar's own height puts the film behind it, which is what
   makes a glass bar mean anything; the padding underneath puts it back so nothing is drawn under the
   menu. Both read var(--bar) rather than 76, so neither can drift from it. */
/* PLATE J. The film runs clean from the glass bar to the strip and carries no type at all; the
   words are on our own ink along the foot. No padding on the cover itself - the strip carries its
   own, and anything the cover held would inset the strip from the edge of the window. */
.dy-hero{margin-top:calc(var(--bar,76px) * -1);
  position:relative;min-height:min(88vh,860px);display:flex;flex-direction:column;
  align-items:stretch;justify-content:flex-end;text-align:left;padding:0;
  overflow:hidden;background:var(--ink)}
.dy-hero-pic{position:absolute;inset:0;display:block}
.dy-hero-pic{background-size:cover;background-position:center}
.dy-hero-pic img,.dy-hero-pic video{width:100%;height:100%;object-fit:cover;display:block}
/* LESS MOTION: the film goes, and the poster is already behind it because the poster is the ground
   rather than an attribute of the <video>. Nothing has to be swapped in. */
@media (prefers-reduced-motion:reduce){.dy-hero-pic video{display:none}}
.dy-hero-pic::before{content:'';position:absolute;inset:0;background:#682114;opacity:.2;
  mix-blend-mode:multiply}
/* THE FOOT OF THE WASH GOES. It was there to hold the weather sentence up off the picture, and the
   sentence is on ink now. What is left is the top of it, which is not decoration: the glass bar's own
   type is white and sits over this. */
.dy-hero-pic::after{content:'';position:absolute;inset:0;
  background:linear-gradient(to bottom,rgba(12,10,8,.46) 0%,rgba(12,10,8,.1) 32%,rgba(12,10,8,0) 58%)}
/* the weather falls between the film and the words: over the picture so it reads as weather in the
   scene, under the type so nothing is ever drawn across a letter */
/* the ink is full bleed and the measure inside it is not, so the colour sits on .dy-hero-in and the
   strip only holds the layout */
.dy-hero-in{background:var(--ink);position:relative}
/* the credit rides on the foot of the film, just clear of the ink */
.dy-hero-credit{bottom:100%;margin-bottom:clamp(16px,1.8vw,26px)}
.dy-hero-strip{background:none}
.dy-hero .fd-sky{position:absolute;inset:0;z-index:1;display:block;pointer-events:none}
.dy-hero .fd-sky canvas{width:100%;height:100%;display:block}
.dy-hero-in{position:relative;z-index:2;max-width:none;width:100%}
/* THE STRIP, and its inside measured to the page rather than to the window: --dy-wide with the page's
   own gutter, so the masthead stands on the same left edge as IN THIS EDITION under it. */
.dy-hero-strip{background:var(--ink);width:100%}
.dy-hero-strip{display:flex;align-items:flex-end;justify-content:space-between;
  gap:clamp(30px,5vw,90px);
  max-width:var(--dy-wide);margin:0 auto;padding:clamp(30px,3.4vw,48px) 24px clamp(32px,3.6vw,50px)}
.dy-hero-name{min-width:0}

/* NO SHADOWS ON THE STRIP. Every one of these carried a text-shadow to survive a photograph behind
   it; on solid ink a shadow is only a smudge. And the masthead comes down from 96 to 62: it is one of
   two things on a line now rather than the whole middle of the picture. */
/* AND IT IS THE PAGE'S H1. It was a <b>, and the page had no heading of the first rank at all - on a
   page we want indexed every morning for good. The font shorthand already covers everything a <b> and
   an h1 do differently except the margin, which the browser gives an h1 as .67em top and bottom, so
   that is reset and the cover looks exactly as it did. */
.dy-mast{display:block;margin:0;font:700 min(clamp(34px,3.6vw,62px), 28px + (clamp(34px,3.6vw,62px) - 28px) * 0.6)/.92 var(--face);letter-spacing:.055em;
  text-transform:uppercase;color:#fff}
/* THE DATE IS THE THING THAT CHANGES, so it is set like it.
   Jack: "can we mek the date on the hero more impactful this should be more prominet i think to
   indicate this is recent and changes". The masthead was 96px and the date 10.5 - a ratio of nine
   to one, which made the constant loud and the variable a caption. The Daily is the same every
   morning; Tuesday 29 September is the only line on the cover that is not.

   In the display face at about a third of the masthead, so it reads as its second line rather than
   as a note under it. */
.dy-line{margin:clamp(10px,1.1vw,15px) 0 0;font:400 clamp(16px,1.5vw,22px)/1 var(--face);
  letter-spacing:.05em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.dy-line i{font-style:normal;opacity:.5;margin:0 .7em}

/* THE WEATHER IS THE COVER LINE. It is the one thing every reader wants before anything else, so it is
   the first sentence on the page rather than a section a third of the way down it. */
.dy-hero-said{margin:0;font:400 clamp(17px,1.35vw,20px)/1.6 var(--serif);
  color:rgba(255,255,255,.92);max-width:30em;flex:0 1 auto}

/* BOTTOM-LEFT, WITH A PIN, and not centred under the weather sentence.
   Jack: "put the Ross and Cromarty on the left side of hero ... make it more ovious this is the
   location of the photo". Centred and full width, it sat in the same column as the masthead and the
   date and read as another line of the page; at the gutter it reads as a caption on the picture,
   which is where a photograph's caption lives. */
/* ON THE PICTURE, bottom-left, immediately above the strip - which is where a caption sits in print.
   Jack: "the location thing should go on the bottom left of video not where it is". It is the
   photograph's place, not the masthead's, so it belongs on the thing it describes. */
.dy-hero-credit{position:absolute;left:0;z-index:3;margin:0;
  padding:0 clamp(20px,3vw,56px);
  display:inline-flex;align-items:center;gap:7px;
  font:500 9.5px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;
  color:rgba(255,255,255,.82);text-shadow:0 1px 14px rgba(8,10,7,.55)}
/* the pin: one mark that says "a place" without spending words on it */
.dy-hero-pin{width:12px;height:12px;flex:0 0 auto;display:block;opacity:.9}
.dy-hero-credit a{color:inherit;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.3)}
.dy-hero-credit a:hover{color:#fff;border-bottom-color:#fff}

/* ---- THE CONTENTS ----
   Jack, 28 September: "lets put a table of contents for the daily, add a nice table of contents somethign
   cool". Every edition carries the same departments, so the contents carries each piece's OWN headline -
   the only part of it that changes from one morning to the next.

   THE NUMERALS HOLD THE GRID, because nothing else may: there are no rules on this page. A contents set
   in columns with no lines between them falls apart unless something else marks where each entry starts,
   and a numeral large enough to be read from across the room does exactly that. It is also the oldest
   thing in magazine typography and still the best. */
/* THE SAME ROOM UNDER IT AS OVER IT. It had none, so the last row of the contents was touching a black
   band. */
/* THE WAY IN TO THE EDITION, so it gets more room than an ordinary section rather than the same.
   It had 58px above and below, which is what two sections have between them - so it read as another
   section instead of as the contents. */
/* LESS AIR. 220px above and below a ten-line list was the other half of why the block ran to
   1,336px and stretched the picture beside it into a hoarding. */
.dy-toc{max-width:var(--dy-wide);margin:0 auto;
  padding:clamp(44px,4.6vw,72px) 24px clamp(44px,4.6vw,72px)}
/* THE SAME FACE AS WHAT IS ON AND THE NEWS. Jack: "In this edition should be the same font as WHAT IS ON
   AND THE NEWS." Those are .dy-band .td-bh h3, set to 13px at .18em in the ink at 75 per cent this
   afternoon for exactly this reason - 10px caps at .24em is a whisper, and these are the only thing
   telling a reader what they are looking at. Same rule, character for character. */
.dy-toc-at{margin:0 0 clamp(22px,2.6vw,34px);font:600 13px/1 var(--sans);letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink-75);text-align:center}
/* EVERY ROW THE SAME HEIGHT.
   Jack: "why does the last line of contents look misaligned and set apart from the rest?" - and it
   was, vertically. One entry runs to two lines and its row came out 46px against 28 for the others,
   so the row below it sat 18px lower than the rhythm and read as detached.

   grid-auto-rows:1fr makes every row as tall as the tallest, so one long title cannot knock the
   list out of step - which matters more than this one title, because the entries are section
   headings and any of them could grow tomorrow. */
/* ONE COLUMN, AND A FRAME BESIDE IT. Jack: "maybe just a nice single row - or one of those single
   row and as you hover the imge on the left changes". Three columns of twelve small entries made a
   grid of numbers; one column of twelve rows is a contents. The picture is the mock's plate T4. */
/* THE PICTURE IS THE HEIGHT OF THE WORDS, and the pair is centred.
   Jack: "center it and make the image the same height as words."

   It used to stretch to the list and that was the fault - but only because the list was 1,057px
   long. At ten rows of 53px, matching it is a reasonable shape rather than a hoarding, so stretch
   comes back and the fixed aspect goes. The lesson was never "do not match the list", it was "do not
   let the list be that long".

   And the pair narrows to what it needs and centres, rather than ranging left in a 1,100px column
   with empty space beside a list whose longest line is half of it. */
.dy-toc-in{display:grid;grid-template-columns:minmax(0,.5fr) minmax(0,auto);
  gap:clamp(30px,4vw,56px);align-items:stretch;justify-content:center}
.dy-toc-pic{position:relative;overflow:hidden;background:var(--ink);min-height:0}
/* EVERY FRAME CARRIES ITS NUMBER AND ITS NAME. Jack liked them on the one panel that had no
   photograph, so they go on all of them - over a gradient at the foot, because a picture of a pale
   sky under white type is the one thing this may not do. */
.dy-toc-pic .dy-toc-fr{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;
  background-size:cover;background-position:center;background-color:var(--ink);
  padding:clamp(18px,2vw,26px);
  opacity:0;transition:opacity .42s cubic-bezier(.22,.8,.24,1)}
.dy-toc-pic .dy-toc-fr.on{opacity:1}
.dy-toc-pic .dy-toc-fr::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to bottom,rgba(12,10,8,0) 38%,rgba(12,10,8,.68) 100%)}
.dy-toc-pic .dy-toc-fr b{position:relative;z-index:1;display:block;font:400 min(clamp(40px,4vw,64px), 28px + (clamp(40px,4vw,64px) - 28px) * 0.6)/1 var(--face);
  color:rgba(255,255,255,.5)}
.dy-toc-pic .dy-toc-fr i{position:relative;z-index:1;display:block;margin:12px 0 0;
  font:600 10px/1.5 var(--sans);letter-spacing:.2em;
  text-transform:uppercase;color:rgba(255,255,255,.88);font-style:normal}
/* the last resort: no photograph anywhere for this one, so the number stands on ink */
.dy-toc-pic .dy-toc-fr.none{background-image:none}
.dy-toc-pic .dy-toc-fr.none::before{display:none}
.dy-toc-pic .dy-toc-fr.none b{color:rgba(255,255,255,.22)}
.dy-toc-pic .dy-toc-fr.none i{color:rgba(255,255,255,.5)}

.dy-toc ol{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:1fr;grid-auto-rows:1fr;gap:0}
/* A FIXED FIRST COLUMN, not auto.
   The numeral used to size itself, and the numerals are not the same width - "11" measured 20px and
   "08" measured 41 - so the text in the twelve entries began at nine different left edges. The rule
   below asks for tabular figures and Larken has none to give, which is why a font feature was never
   going to fix it: a fixed column cannot be pushed, whatever the face does. */
/* A LIST, NOT A MENU. Jack: "its too long and a bit of a mess". Ten entries at 106px each is a
   restaurant menu; a contents is scanned in two seconds and wants to read as one block. */
.dy-toc a{display:grid;grid-template-columns:clamp(40px,3vw,52px) 1fr;gap:clamp(14px,1.4vw,22px);
  align-items:baseline;padding:clamp(6px,0.6vw,9px) 0;
  color:var(--ink);text-decoration:none}
/* the numeral: large, and light enough to read as structure rather than as content. It is the only thing
   marking where an entry begins, so it carries the alignment of the whole grid. */
/* THE NUMERAL WAS LOUDER THAN THE ENTRY. Jack: "contents is poor - it might need a bigger fonts or
   something". It was 34px against the entry's 17 - two to one in favour of a number nobody reads, on
   the one block whose whole job is to say what is in the edition. The numbers come down, the entries
   go up, and the order of loudness matches the order of usefulness. */
/* and the numeral stays UNDER the entry at every width: 1.25vw against the entry's 1.35, so the
   two never cross over as the window changes. At 1440 it was 23 against 19 - the label bigger
   than the thing again, three hundred pixels further down the scale. */
/* A PAGE NUMBER, not a bullet. Jack: "for contents i think bigger page numbers or something - its
   just not right at all". At 21px beside a 22px entry it was a number in a list; at 48 in one column
   it is the thing that makes the block read as a contents at a glance. */
.dy-toc b{font:400 min(clamp(24px,2vw,32px), 28px + (clamp(24px,2vw,32px) - 28px) * 0.6)/1 var(--face);
  color:var(--ink-20,rgba(65,64,66,.2));letter-spacing:-.01em;transition:color .22s ease;
  padding-top:2px}
.dy-toc span{display:block;min-width:0}
.dy-toc i{display:block;margin:0 0 8px;font:600 10px/1 var(--sans);letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink-35);font-style:normal}
/* AND THE ENTRY IS SET LIKE AN ENTRY. 17px was smaller than the page's own body copy, on the block a
   reader uses to decide whether to stay. At 21 it is the size of the thing it stands for. */
.dy-toc a > span{font:400 clamp(18px,1.35vw,21px)/1.3 var(--face);letter-spacing:-.006em}
/* THE ROW THE PICTURE IS SHOWING. It is set by the same state that moves the frame rather than by
   :hover, so the one that opens is marked too and a reader can see which row the picture belongs to
   before touching anything. */
.dy-toc a.on b{color:var(--cask,#392916)}
.dy-toc a.on > span{text-decoration:underline;text-underline-offset:4px;
  text-decoration-thickness:1px;text-decoration-color:var(--stone-2,#D8D1CB)}

/* the marks the contents scrolls to, held clear of the sticky bar */
.dy-mark{display:block;height:0;scroll-margin-top:calc(var(--bar,76px) + 24px)}

/* ---- THE GLANCE ----
   The temperature, the sky, when the light goes, how much of it there is, and the moon. Every figure is
   observed or arithmetic - nothing written by hand.

   NO RULES IN IT. Jack, 28 September: "i dont like line and page breaks." The hairlines between the
   cells are gone and so is the one under the row. And the count of what is on went with them: it stood
   forty pixels above the list where the two things are named.

   THE ARRANGEMENT is the deck's plate E - the temperature at headline size, the sky beside it, the light
   and the moon quiet underneath. It is the only one with an obvious first thing to read, which matters
   more here than on paper because on a wet morning this is read against a moving sky. */
/* FULL WIDTH, AND TALL ENOUGH TO SEE THE SKY IN. Jack: "dark full width background", then "it needs to
   be much bigger in height and spaced out better."

   It was 160 pixels holding 72 pixels of words - the height of a toolbar. A sky is not a texture: sky.ts
   draws stars with the Milky Way across them, or cloud in perspective receding to a horizon, and neither
   of those exists in 160 pixels. So the band takes about a third of the viewport and the words sit in
   the middle of it rather than filling it. A band you can see through is the whole reason for drawing a
   sky in it. */
.dy-glance{position:relative;overflow:hidden;width:100%;
  min-height:clamp(260px,32vh,400px);display:flex;align-items:center;
  padding:clamp(40px,5vw,72px) 24px;border-bottom:0}
/* THE WIDTH MINUS THE PADDING, so this lines up with the contents above it. Measured: the contents at
   434 and the glance at 410, because the contents puts --dy-wide on the outer box and the padding inside
   it while this puts the padding outside and the width in. Those are not the same left edge. */
/* THE SKY FILM behind the glance on a dry day, in the same place the drawn sky sits.

   A SCRIM OVER IT, because the band is white type on a dark ground and two of the three films are
   bright - a blue sky with white cloud, or gold. Without it the words stop being readable, which is
   the one thing a background may not do. The same darkening the hero uses. */
.dy-gl-film{position:absolute;inset:0;display:block;overflow:hidden;background:var(--ink,#414042)}
.dy-gl-film video{width:100%;height:100%;object-fit:cover;display:block}
.dy-gl-film::after{content:'';position:absolute;inset:0;
  background:linear-gradient(to right,rgba(12,10,8,.72),rgba(12,10,8,.46) 60%,rgba(12,10,8,.55))}

.dy-gl-in{position:relative;z-index:2;width:100%;max-width:calc(var(--dy-wide) - 48px);margin:0 auto;
  display:flex;flex-direction:column;align-items:stretch;gap:clamp(18px,2vw,30px)}
/* THE LABEL, in the same 13px at .18em as IN THIS EDITION above it, in white because this band is
   white on a film. One label style on the page, not two. */
.dy-gl-at{margin:0;font:600 13px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;
  color:rgba(255,255,255,.62)}
.dy-gl-row{display:flex;align-items:center;gap:clamp(22px,3vw,40px)}
.dy-gl-big{font:400 min(clamp(58px,7vw,116px), 28px + (clamp(58px,7vw,116px) - 28px) * 0.6)/.86 var(--face);font-variant-numeric:tabular-nums;
  letter-spacing:-.016em}
.dy-gl-said{min-width:0}
.dy-gl-sky{display:block;font:400 min(clamp(21px,2.2vw,30px), 28px + (clamp(21px,2.2vw,30px) - 28px) * 0.6)/1.18 var(--face);letter-spacing:-.004em}
/* THE WEATHER IN SENTENCES. Jack: "a little more conversation for this so its more editorial and almost
   like a forecast maybe." Set in the face rather than the serif and just under the heading size it
   replaces, so the band reads figure, then sentence, then almanac - largest to smallest, which is the
   order somebody goes through them in anyway. Held to 42 characters a line because a measure that long
   at this size is a paragraph, and this is a band. */
.dy-gl-say{margin:0;font:400 min(clamp(19px,1.9vw,26px), 28px + (clamp(19px,1.9vw,26px) - 28px) * 0.6)/1.34 var(--face);letter-spacing:-.004em;
  max-width:42ch;text-wrap:pretty}
.dy-gl-rest{display:block;margin:clamp(12px,1.4vw,18px) 0 0;
  font:400 clamp(15px,1.15vw,17px)/1.6 var(--serif);color:var(--ink-55)}
.dy-gl-rest em{font-style:normal;color:var(--ink-35)}
.dy-gl-rest i{font-style:normal;color:var(--ink-20,rgba(65,64,66,.2))}

/* ---- AND WHEN IT IS RAINING ----
   Jack: "how about a section like the feed where its raining or snowing in teh whole background depending
   on the weather?" - then, of the deck, "ok lets do i and j so weather showing behind it."

   IT IS DARK EVERY MORNING. Jack, the same afternoon: "it should be dark full width background and
   raining or snowing or whatever the weather is." The first cut went dark only when something fell,
   because the drops are lit against a night and cannot be seen on paper - true, and beside the point:
   skyFor() hands a dry day CLOUD drawn overhead in perspective, so a dry band is a sky rather than an
   empty stripe. Daily::sky() answers all eight and never null.

   #2B301D is the feed's own .fd-row.dark, not a new one: the weather entries in the home feed stand on
   it, and this is the same thing pointed at the glance. */
.dy-glance{background:#2B301D;color:#fff}
.dy-glance .fd-sky{position:absolute;inset:0;z-index:0;display:block;pointer-events:none}
.dy-glance .fd-sky canvas{display:block;width:100%;height:100%}
.dy-glance .dy-gl-big{text-shadow:0 1px 26px rgba(4,6,10,.7)}
.dy-glance .dy-gl-sky,.dy-glance .dy-gl-say{text-shadow:0 1px 20px rgba(4,6,10,.66)}
.dy-glance .dy-gl-rest{color:#D7D2CB;text-shadow:0 1px 18px rgba(4,6,10,.66)}
.dy-glance .dy-gl-rest em{color:#414042}
.dy-glance .dy-gl-rest i{color:rgba(255,255,255,.3)}

/* AND NO HOLE UNDER THE BAND. The section after the glance carries 110px of top margin, which is the gap
   between two sections ON PAPER, where white space is what separates them. Here the glance is #2B301D
   and the band under it is oat, and both run the full width - so that margin was never air between two
   blocks of type, it was a stripe of paper showing between two full-bleed grounds. There is no amount of
   it that looks deliberate. They stack, and the band's own 56px of padding does the breathing.

   Written as `.dy-glance + .dy-band` rather than `.dy-glance + *`: the universal selector adds nothing to
   specificity, so `+ *` scored the same (0,1,0) as .dy-band's own margin and lost on source order. */
.dy-glance + .dy-band{margin-top:0}
.dy-glance + .dy-sec{margin-top:clamp(28px,3.4vw,44px)}

/* ---- TODAY'S FREE MAGAZINE ARTICLE ----
   Jack, 28 September: "make this a feature."

   THE PHOTOGRAPH TAKES HALF THE ROW. It is the only full-bleed photograph in the edition below the cover
   and it is what says "magazine" before a word is read; a picture small enough to ignore is one that
   should not be there. The words keep the page's own left edge, so the picture hangs off the right of the
   column rather than the pair sitting centred as an island. */
/* .dy-sec.dy-feature, not .dy-feature: .dy-sec sets the narrow reading column, both score (0,1,0) and
   .dy-sec is further down the file - so the feature was laid out at column width and the photograph came
   out 240px wide. */
.dy-sec.dy-feature{max-width:var(--dy-wide)}
.dy-ft{display:grid;grid-template-columns:1fr 1fr;gap:clamp(26px,3.4vw,56px);align-items:center}
.dy-ft-pic{position:relative;display:block;overflow:hidden;background:var(--oat);
  aspect-ratio:5/4;order:2}
.dy-ft-pic img{display:block;width:100%;height:100%;object-fit:cover;
  transition:transform .6s cubic-bezier(.22,.8,.24,1)}
.dy-ft:hover .dy-ft-pic img{transform:scale(1.02)}
/* THE LINE THAT IS THE POINT OF THIS BLOCK. Jack: "should make a bigger deail about being free today -
   and from the amgazine". It was 10px caps, the size of a label, and the magazine appeared only as a
   badge on the photograph - so the two facts that make this worth stopping for were the two smallest
   things in it. Both in one line now, at a size somebody reads rather than scans, because they only mean
   anything together: out of the magazine is what makes free worth having. */
.dy-ft-at{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 12px;margin:0 0 clamp(16px,1.8vw,24px)}
.dy-ft-at b{font:600 clamp(13px,1.15vw,16px)/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  color:#682114}
.dy-ft-at i{font-style:normal;font:400 clamp(13px,1.1vw,15px)/1.3 var(--serif);color:var(--ink-35)}
.dy-ft-in{order:1;min-width:0}
/* the kicker is the one mark on this page allowed to be an offer, so it takes the bracken the band uses
   for a thing that is on now - and it is the only place the word free appears */

.dy-feature h2{margin:0;font:400 min(clamp(28px,3.1vw,44px), 28px + (clamp(28px,3.1vw,44px) - 28px) * 0.6)/1.08 var(--face);letter-spacing:-.012em;
  text-wrap:balance}
.dy-feature h2 a{color:inherit;text-decoration:none}
.dy-feature h2 a:hover{text-decoration:underline;text-underline-offset:4px;
  text-decoration-thickness:1px;text-decoration-color:var(--stone-2)}
.dy-ft-sub{margin:clamp(10px,1.2vw,14px) 0 0;font:400 clamp(17px,1.5vw,21px)/1.38 var(--face);
  color:var(--ink-75)}
.dy-ft-said{margin:clamp(14px,1.6vw,20px) 0 0;font:400 clamp(16px,1.2vw,18px)/1.62 var(--serif);
  color:var(--ink-75);max-width:46ch;text-wrap:pretty}
/* the writer, named rather than in the small print */
/* the opening of the piece: the writer's own voice, set apart from the standfirst so the two read as
   two different things rather than one long paragraph */
/* THE SAME TREATMENT AS THE STANDFIRST ABOVE IT. Both are prose by the same writer and setting them at
   two sizes and two greys made two paragraphs look like two kinds of thing. Only the colour separates
   them now, which is enough to say one leads and one follows. */
.dy-ft-open{margin:clamp(12px,1.3vw,16px) 0 0;font:400 clamp(16px,1.2vw,18px)/1.62 var(--serif);
  color:var(--ink-55);max-width:46ch;text-wrap:pretty}
/* the byline takes the kicker rule rather than a seventh size of its own */
.dy-ft-by{margin:clamp(14px,1.6vw,20px) 0 0;font:600 clamp(13px,1.15vw,16px)/1.3 var(--sans);
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-35)}
.dy-feature .dy-go{margin-top:clamp(18px,2vw,26px)}

@media (max-width:860px){
  /* two columns of anything at this width is two columns of nothing */
  .dy-ft{grid-template-columns:1fr;gap:22px}
  .dy-ft-pic{order:1;aspect-ratio:4/3}
  .dy-ft-in{order:2}
}

/* ---- OUT THERE: ITS OWN GROUND ----
   Jack, 28 September: "i like this but it needs to be a section on its own so differnet background."

   It is the only department of the edition that is not about a thing somebody made - no event, no
   opening, no writing, no question. It is what the country is doing on its own, and running it on the
   same paper as everything else filed it with the news.

   The shell, not the oat: the band below it is already oat, and two oat blocks with a paper one between
   them reads as an accident. Full width, so the change of ground is the thing that separates it rather
   than a rule - there are no rules on this page. */
/* ONE NUMBER FOR THE ROOM INSIDE A SECTION, because it is also the gap to the next one.
   Every band on this page butts against its neighbour, so a join is the sum of two paddings: at 84
   and 96 apiece that came to 180, and at the news band and the weekend rows, which were paying 110,
   it came to 207. Eight rules were setting it separately and had drifted. */
:root{--dy-pad:clamp(38px,4.2vw,64px)}

.dy-sec.dy-out{max-width:none;width:100%;background:var(--shell,#F9F5EE);
  padding:var(--dy-pad) 24px;margin-top:clamp(30px,3.2vw,50px)}
.dy-sec.dy-out > *{max-width:calc(var(--dy-wide) - 48px);margin-left:auto;margin-right:auto}
.dy-sec.dy-out + *{margin-top:clamp(30px,3.2vw,50px)}

/* ---- OUT THERE: the almanac band ----
   The deck's plate G4. Full bleed, its own dark, the film behind everything and the words at its foot -
   the same treatment as the weather band, because it is the same kind of thing: a band you look at rather
   than a section you read.

   THE WORDS SIT AT THE FOOT, which needs align-items rather than padding: laid out at the top of a taller
   box the gradient stops in mid-air and leaves a bright strip of film under it. Caught on the design
   sheet and carried over. */
.dy-sec.dy-outband{position:relative;max-width:none;width:100%;overflow:hidden;background:#2B301D;
  color:#fff;min-height:clamp(340px,52vh,560px);display:flex;align-items:flex-end;padding:0;
  margin-top:clamp(30px,3.2vw,50px)}
.dy-outband .dy-ob-film{position:absolute;inset:0;display:block;pointer-events:none}
.dy-outband .dy-ob-film video{display:block;width:100%;height:100%;object-fit:cover}
.dy-outband .dy-ob-in{position:relative;z-index:2;width:100%;
  /* THE WORDS WERE CRAMMED AGAINST THE BOTTOM. Jack, pointing at the band: "needs space here".
     Measured: 280px of empty film above the text and 56 below it, a ratio of five to one, so the
     block sat on the edge of the band with a field of nothing over it. The text still sits low -
     that is the shape, and a film wants room above its words - but 160 and 110 is a composition
     where 280 and 56 was an accident. */
  padding:clamp(90px,10vw,160px) 24px clamp(60px,7vw,110px);
  background:linear-gradient(to top,rgba(8,10,14,.9),rgba(8,10,14,.14) 72%,rgba(8,10,14,0))}
/* ONE BOX, ONE LEFT EDGE. Giving each line its own max-width and auto margins centres their MIDDLES,
   so a 24ch headline and a 56ch note sit on different left edges - measured at 28, 435 and 683 across
   four lines. The column carries the width and everything inside it starts in the same place. */
.dy-outband .dy-ob-col{max-width:calc(var(--dy-wide) - 48px);margin:0 auto}

/* THE KICKER, and it is now the only small-caps line in the block. */
.dy-outband .dy-ob-at{margin:0;font:600 13px/1.3 var(--sans);letter-spacing:.2em;
  text-transform:uppercase;color:rgba(255,255,255,.92);text-shadow:0 1px 14px rgba(4,6,10,.75)}

.dy .dy-outband h2{margin:clamp(20px,2.2vw,32px) 0 0;font:400 min(clamp(28px,3.6vw,54px), 28px + (clamp(28px,3.6vw,54px) - 28px) * 0.6)/1.06 var(--face);
  letter-spacing:-.014em;text-wrap:balance;max-width:24ch;text-shadow:0 1px 30px rgba(4,6,10,.6)}
/* the deadlines: the line that turns a status into a reason to go on Saturday */
.dy-outband .dy-ob-left{margin:clamp(14px,1.6vw,20px) 0 0;
  font:400 clamp(15px,1.25vw,18px)/1.6 var(--serif);color:#E5DED4;max-width:58ch}
/* NO GAP UNDER IT. Jack: "there is a white gap below section". That margin was the page background
   showing between a full-bleed dark band and a full-bleed oat one - the same fault as the strip under the
   weather band, which I fixed there and then wrote again here. Two full-bleed grounds stack; only a
   section on the page's own column needs air above it. */
.dy-outband + .dy-disc,
.dy-outband + .dy-know2{margin-top:0}
.dy-outband + .dy-sec:not(.dy-disc):not(.dy-know2){margin-top:clamp(30px,3.2vw,50px)}

@media (max-width:760px){
  .dy-sec.dy-outband{min-height:clamp(300px,58vh,440px)}
  .dy-outband .dy-ob-in{padding:clamp(80px,26vw,140px) 16px 30px}
}

/* ---- DISCOVER: one of our own collections, a different one every morning ----
   Jack asked for it to match this page rather than the home page's dark carousel, so it takes the Daily's
   own language: the department kicker, the collection's title as the heading, and a row.

   ON THE OAT, so it separates from the almanac band above by ground rather than by a rule - there are no
   rules on this page. Oat and not shell, because shell is Out there's and two sections on the same ground
   with nothing between them would read as one.

   THE PICTURES ARE UPRIGHT, 4:5. Four landscape pictures across this column give each about 250 by 160,
   which is a thumbnail; upright they are 250 by 312 and you can see what the place is. It is also the
   shape the listings cards already use. */
.dy-sec.dy-disc{max-width:none;width:100%;background:var(--oat,#F5F1E9);
  padding:var(--dy-pad) 24px;margin-top:0}
/* ONE BOX, ONE LEFT EDGE - the almanac band's pattern. Per-child centring aligns middles rather than
   left edges, which put the heading at 434, the intro at 613 and the kicker at 24. */
.dy-disc .dy-disc-col{max-width:calc(var(--dy-wide) - 48px);margin:0 auto}
.dy-sec.dy-disc .dy-disc-col > *{margin-left:0;margin-right:0}
/* .dy-sec.dy-disc h2, not .dy-disc h2:  ties with it on specificity (0,1,1) and wins
   on source order, which put the heading on the bleed edge at x=24 while the rail sat at 434. Third time
   today an equal-specificity tie has decided a layout - measure, do not assume. */
.dy-sec.dy-disc h2{margin:clamp(12px,1.4vw,18px) 0 0;font:400 min(clamp(26px,2.9vw,40px), 28px + (clamp(26px,2.9vw,40px) - 28px) * 0.6)/1.08 var(--face);
  letter-spacing:-.012em;text-wrap:balance;max-width:22ch}
.dy-sec.dy-disc h2 a{color:inherit;text-decoration:none}
.dy-sec.dy-disc h2 a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;
  text-decoration-color:var(--stone-2)}
.dy-sec.dy-disc .dy-disc-said{margin:clamp(12px,1.4vw,18px) 0 0;font:400 clamp(16px,1.2vw,18px)/1.62 var(--serif);
  color:var(--ink-75);max-width:62ch;text-wrap:pretty}

/* THE RAIL. The cards themselves are _excard.css's and nothing here touches them; this is only the
   track they sit in. It carries twelve rather than four, which is the actual argument for swiping - the
   collection is the point and four of it is a sample. */
.dy-rail{position:relative;margin:clamp(26px,3vw,40px) 0 0}
.dy-rail-row{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-ms-overflow-style:none;padding-bottom:4px}
.dy-rail-row::-webkit-scrollbar{display:none}
/* MIN-WIDTH 0, and it is the whole reason this works. A flex item's used minimum size defaults to its
   CONTENT's min-content width, which silently overrides flex-basis - so every card grew to fit its own
   sentence and four of them filled the rail: the rule said 210px and the card rendered at 781. */
.dy-rail-i{flex:0 0 clamp(210px,20vw,268px);min-width:0;scroll-snap-align:start}
.dy-rail-i .ex-c{width:100%}

/* the arrows move by exactly one card and go away at each end, rather than sitting there doing nothing */
.dy-rail-a{position:absolute;top:calc(50% - 46px);z-index:3;width:40px;height:40px;display:grid;
  place-items:center;padding:0;border:1px solid var(--stone-2);background:var(--paper);color:var(--ink);
  cursor:pointer;transition:opacity .2s ease,background .2s ease}
.dy-rail-a svg{width:17px;height:17px}
.dy-rail-a.back{left:-20px}
.dy-rail-a.on{right:-20px}
.dy-rail-a:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.dy-rail-a[disabled]{opacity:0;pointer-events:none}

.dy-disc .dy-go{margin-top:clamp(26px,3vw,40px)}

@media (max-width:900px){
  /* no arrows on a phone: a thumb is better at this than a button, and two buttons over a scroller is
     two things to mis-tap */
  .dy-rail-a{display:none}
  .dy-rail-row{gap:16px}
}
@media (max-width:480px){
  .dy-sec.dy-disc{padding:40px 16px}
  .dy-rail-i{flex-basis:64vw}
}

/* ---- WORTH KNOWING: the word of the day ----
   Jack: "phrase or word of the day but needs redesigned to match the rest."

   A WORD IS SET, A FACT IS READ, and the rota hands over both: "Wheesht" one morning and "Shetland is
   closer to Bergen than to Edinburgh" the next. A word at 130px is a specimen - it is the one thing in
   the edition worth setting rather than describing. The same size on a sentence is a shout. So `.one`
   carries the word treatment and everything without it stays at a readable headline size.

   ON PAPER, because the collection above is on oat and two coloured grounds with nothing between them
   read as one section. */
/* ---- THE WEEKEND: three itineraries on the explore page's card ----
   Jack: "this design is poor needs to be much cleaner more like explore page lsitings".

   The card itself is untouched - it is ExploreCard and _excard.css, which ten pages already draw.
   All this adds is the column count and one licence: two lines for a title.

   WHY THE TITLE NEEDS TWO. The card clips to one line with an ellipsis, which is right on the
   explore wall where a listing is called Neist Point. An itinerary is called "Flora MacDonald and
   the Prince: two days on Skye in the steps of 1746", and one line of that stops mid-thought.
   Clamped at two so a long one still cannot push its row out of line. */
/* THE WIDE COLUMN. .dy-sec defaults to --dy-col, 34em, which is the reading measure for a section
   of prose - and three cards in 544px came out 161px wide each. Every section on this page that
   holds cards takes --dy-wide, as the row it replaces did. */
.dy-sec.dy-trips{max-width:var(--dy-wide);padding:var(--dy-pad) 24px}
.dy-trips-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ex-gap,23px);
  margin-top:clamp(22px,2.6vw,34px)}
.dy-trips-grid .ex-t b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;text-overflow:clip}
/* and the line under it, which the card leaves to one line for the same reason */
.dy-trips-grid .ex-t i,.dy-trips-grid .ex-t em,.dy-trips-grid .ex-t u{white-space:normal;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dy-trips .dy-go{margin-top:clamp(24px,2.8vw,36px)}

@media (max-width:860px){
  .dy-trips-grid{grid-template-columns:1fr;gap:clamp(24px,5vw,34px)}
}

/* ---- FOUR SMALL THINGS: a word, a name, a number and a story ----
   Jack picked this off the deck at /design-2026/daily-word/ - and picked what plate B RENDERED as,
   which is not what plate B says. The deck's builder puts the kind's class on the panel as well as
   the plate's, and the kind colours come later in that sheet at the same specificity, so plates A,
   B and C were pixel-identical and "one colour, all four kinds" never appeared on screen.

   What he saw and chose is four coloured panels, one colour a kind - which is the argument written
   under plate C: a reader who sees the green and knows it is a map morning is being given a rhythm,
   where four colours at random would be decoration.

   EVERY NUMBER HERE IS READ OFF THE MOCK with getComputedStyle rather than re-typed by eye. */
.dy-sec.dy-know2{max-width:none;width:100%;background:var(--paper,#FBF9F6);
  padding:var(--dy-pad) 24px}
.dy-kn{max-width:calc(var(--dy-wide) - 48px);margin:0 auto}
.dy-kn-at{display:block;font:600 13px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-75)}
/* NO KICKER ABOVE IT NOW, so the top margin goes with it - the heading is the first thing in the
   section and a heading does not need pushing off a ground.
   AND MORE AIR UNDER IT. Jack: "then give more space below that and the box". 40px above four
   coloured panels made it read as a caption on them; 66 makes it a heading over them. */
/* .dy-sec.dy-know2 h2, not .dy-kn-h: ".dy h2" is (0,1,1) and a bare class is (0,1,0), so it was
   winning the margin AND the type - the heading sat flush on the panels at 36px instead of 66 above
   them at 42. The third time this rule has caught something; it is the reason the discover heading
   carries its section class too. */
.dy-sec.dy-know2 h2.dy-kn-h{margin:0 0 clamp(34px,4.6vw,66px);
  font:400 min(clamp(26px,3vw,42px), 28px + (clamp(26px,3vw,42px) - 28px) * 0.6)/1.1 var(--face);letter-spacing:-.012em}
/* still spaced when there is a kicker, since one may come back */
.dy-sec.dy-know2 .dy-kn-at + h2.dy-kn-h{margin-top:clamp(10px,1.2vw,14px)}

/* two columns, 14px gap - the mock's, and the panels carry the colour so there is nothing between
   them but the page.

   EVERY ROW THE HEIGHT OF THE TALLEST, so the four read as one thing with four parts rather than as
   two pairs. Left to itself the grid gave 290, 290, 380, 380 - the word rows short and the rows
   holding the myth deep, because a row is as tall as its tallest cell and "The Stoor Worm" at 104px
   runs to two lines. */
.dy-kn-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-auto-rows:1fr;gap:14px}

/* THE WORD SIZE IS ONE NUMBER and the sentence is a fraction of it, as the mock has it. Two clamps
   would drift apart the first time either was touched. */
/* 5.5vw, not 5.4: 5.4vw of 1920 is 103.68 and never reaches the cap, so the page sat a third
   of a pixel under the mock at every size. 5.5vw passes 104 at 1891 and the cap holds it. */
.dy-kn-grid{--dy-word:clamp(44px,5.5vw,104px)}

/* CONTENT AT THE TOP, not centred.
   Centred is what the mock does and it only works while the four panels hold about the same amount.
   On the page they do not: "Loch Awe is 41 kilometres long" is one line of 33px type in a panel 380
   deep, and floated in the middle of it, it read as a panel somebody forgot to finish. At the top,
   the labels line up across a row whatever the type is doing and the spare room falls at the foot,
   where it reads as air.

   290 is a floor rather than a height, so a morning when all four are short does not collapse into
   four letterbox strips. */
.dy-kn-one{min-height:290px;display:flex;align-items:flex-start;overflow:hidden;
  padding:clamp(20px,2.4vw,34px);background:var(--oat,#F5F1E9);color:var(--ink,#414042)}
/* ONE CHILD, or the four parts become four columns - which is what the page did on the first go */
.dy-kn-in{width:100%}

/* a colour a kind, each with one job */
.dy-kn-word{background:#EFE7DA}
.dy-kn-gaelic{background:#E6EBE2}
.dy-kn-number{background:#E9EAEE}
.dy-kn-myth{background:#2B301D;color:#fff}

.dy-kn-kind{display:block;margin:0 0 14px;font:600 12px/1.3 var(--sans);letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-75,rgba(65,64,66,.78))}
.dy-kn-myth .dy-kn-kind{color:rgba(255,255,255,.5)}

/* A WORD IS SET, A SENTENCE IS READ. They arrive in the same field and cannot be told apart by
   looking: "Blether" and "Loch Awe is 41 kilometres long". A word at 104px is a specimen; a
   sentence at 104px is a shout. */
.dy-kn-w{display:block;margin:0;font:400 calc(var(--dy-word) * .32)/1.1 var(--face);
  letter-spacing:-.01em}
.dy-kn-one.word .dy-kn-w{font:400 var(--dy-word)/.94 var(--face);letter-spacing:-.03em}

/* how to say it, lifted out of the tail of the meaning where nobody looks */
.dy-kn-say{display:block;margin:12px 0 0;font:600 11px/1 var(--sans);letter-spacing:.22em;
  text-transform:uppercase;color:var(--cask,#392916);text-decoration:none}
.dy-kn-myth .dy-kn-say{color:#C08C3D}

.dy-kn-said{margin:16px 0 0;font:400 16px/1.6 var(--serif);color:var(--ink-75,rgba(65,64,66,.78));
  max-width:44ch;text-wrap:pretty}
.dy-kn-myth .dy-kn-said{color:rgba(255,255,255,.82)}

/* ONE COLUMN ON A PHONE: two words at 104px side by side at 390 is two words nobody can read, and
   the panel loses its 290px floor because a single column of four of them is a very long section. */
@media (max-width:760px){
  .dy-kn-grid{grid-template-columns:1fr}
  .dy-kn-one{min-height:0}
}

@media (max-width:480px){
  .dy-sec.dy-know2{padding:44px 16px}
}

/* ---- SOMEWHERE TO STAY ----
   Jack: "can you add an accomomdation of the day".

   ONE PHOTOGRAPH LEADING AND TWO BESIDE IT. A single picture of a house is an estate agent's listing;
   three is somewhere you can imagine being, and 197 of the 199 have more than three to choose from. The
   lead is 3:2 and the pair stack beside it at half its height each, so the block is one rectangle rather
   than three pictures in a row.

   On paper, and the word above it is on paper too, so they read as two parts of the same quiet stretch
   after the collection's oat. */
.dy-sec.dy-stay{max-width:none;width:100%;background:var(--paper);padding:var(--dy-pad) 24px}
.dy-stay-col{max-width:calc(var(--dy-wide) - 48px);margin:0 auto}
/* THE RATIO IS ON THE GRID, not on the lead. A grid row is auto unless it is told otherwise, so with the
   aspect-ratio on the lead alone the two side pictures took their natural height and set the row - the
   same fault as the ribbon that overflowed its heading this morning. The container carries the shape and
   both columns fill it. */
.dy-stay-grid{display:grid;grid-template-columns:2fr 1fr;gap:12px;aspect-ratio:3/2;
  margin:clamp(20px,2.4vw,30px) 0 0;margin-top:clamp(20px,2.2vw,32px)}
.dy-stay-lead{display:block;height:100%;min-height:0;overflow:hidden;background:var(--stone)}
.dy-stay-lead img{display:block;width:100%;height:100%;object-fit:cover;
  transition:transform .7s cubic-bezier(.22,.8,.24,1)}
.dy-stay:hover .dy-stay-lead img{transform:scale(1.02)}
.dy-stay-more{display:grid;grid-template-rows:1fr 1fr;gap:12px;height:100%;min-height:0}
.dy-stay-more span{display:block;overflow:hidden;min-height:0;background:var(--stone)}
.dy-stay-more img{display:block;width:100%;height:100%;object-fit:cover}
.dy-sec.dy-stay h2{margin:clamp(20px,2.4vw,30px) 0 0;font:400 min(clamp(26px,2.9vw,40px), 28px + (clamp(26px,2.9vw,40px) - 28px) * 0.6)/1.08 var(--face);
  letter-spacing:-.012em;max-width:22ch}
.dy-stay h2 a{color:inherit;text-decoration:none}
.dy-stay h2 a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;
  text-decoration-color:var(--stone-2)}
/* the facts that do not go out of date. No price: price_from is null on all 199, and a rate nobody keeps
   up to date is worse than none at all. */
.dy-stay-facts{margin:10px 0 0;font:600 10px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-75)}
.dy-stay-said{margin:clamp(14px,1.6vw,20px) 0 0;font:400 clamp(16px,1.2vw,18px)/1.62 var(--serif);
  color:var(--ink-75);max-width:52ch;text-wrap:pretty}
.dy-stay .dy-go{margin-top:clamp(20px,2.4vw,30px)}

/* ---- BEFORE IT GOES: a countdown, set as one ----
   It was a headline that happened to begin with a numeral - "4 weeks to the clocks going back" - which is
   a deadline written as a statement, the same fault the almanac had this morning. The number is the
   point, so the number is the size of the point. */
/* PLATE B: DARK, and the forest green rather than the ink.
   Jack picked B off /design-2026/daily-ahead/ - "the section looks boring and has a white back".
   It is ink on the sheet, and on the page this section sits between the light band and the quiz,
   both of which are ink: three dark bands running together read as one long dark stretch with the
   section edges lost, which is the opposite of what a dark ground is for. Forest is dark, which is
   the whole point of B, and its own colour, so it reads as a separate thing between them. The myth
   panel two sections above already wears it, so it is an echo rather than a new colour. */
/* ---------------------------------------------------------------------
   DID YOU KNOW: one fact, on its own dark band.
   Jack: "whats going on here, this should be a dark section like my example." It was rendering
   through the page's generic branch with no rules of its own, so a kicker, a heading and a paragraph
   sat on the paper ground like a stray caption.

   It is the same kind of thing as Coming up - one short fact, no photograph, standing between two
   long pictorial blocks - so it takes the same treatment: full bleed, its own dark, a breath between
   the stay above it and the four facts below.

   INK RATHER THAN FOREST, so the two dark bands on the page are not the same dark. Did you know is a
   pause; Coming up is a countdown. A reader scrolling should be able to tell them apart without
   reading either.
   --------------------------------------------------------------------- */
.dy-sec.dy-dyk{max-width:none;width:100%;background:var(--ink);color:#fff;
  padding:var(--dy-pad) 24px;margin:0}
.dy-dyk .dy-at{display:block;max-width:calc(var(--dy-wide) - 48px);margin:0 auto;
  color:rgba(255,255,255,.5)}
/* NAMED WITH ITS SECTION, because something later was winning and setting the margins to zero: measured
   at 1920 the kicker and the paragraph sat at 427 and this at 24, hard against the left edge of the
   band while the rest of the page kept its column. */
.dy-sec.dy-dyk h2{max-width:calc(var(--dy-wide) - 48px);margin:clamp(14px,1.6vw,22px) auto 0;
  font:400 min(clamp(28px,3.2vw,46px), 28px + (clamp(28px,3.2vw,46px) - 28px) * 0.6)/1.08 var(--face);letter-spacing:-.014em;color:#fff}
/* THE SAME MEASURE AS THE HEADING ABOVE IT. A narrower max-width with margin:auto centres the
   paragraph inside the band, which indents it from the kicker and the heading and reads as a
   mistake. All three share one width so they share one left edge. */
.dy-dyk .dy-said{max-width:calc(var(--dy-wide) - 48px);
  margin:clamp(14px,1.6vw,20px) auto 0;
  font:400 clamp(17px,1.35vw,20px)/1.66 var(--serif);color:rgba(255,255,255,.8)}

.dy-sec.dy-ahead2{max-width:none;width:100%;background:var(--forest,#2B301D);color:#fff;
  padding:var(--dy-pad) 24px}
.dy-ah{max-width:calc(var(--dy-wide) - 48px);margin:0 auto}
/* THE NUMBER AND ITS UNIT ARE ONE PHRASE. Setting the numeral alone at 108px against two wrapped lines
   of 30px beside it was a big 4 with a paragraph hanging off its shoulder. "4 weeks" reads as one thing
   and goes on one line; what it is counting down to goes underneath at heading size. */
.dy-ah-n{margin:clamp(16px,1.8vw,24px) 0 0}
.dy-ah-n b{display:block;font:400 min(clamp(44px,5.4vw,84px), 28px + (clamp(44px,5.4vw,84px) - 28px) * 0.6)/1 var(--face);font-variant-numeric:tabular-nums;
  letter-spacing:-.024em}
.dy-ah-n span{display:block;margin:clamp(6px,.8vw,12px) 0 0;font:400 min(clamp(21px,2.1vw,32px), 28px + (clamp(21px,2.1vw,32px) - 28px) * 0.6)/1.16 var(--face);
  letter-spacing:-.008em;max-width:22ch;color:var(--ink-75)}
.dy-ahead2 .dy-at{color:rgba(255,255,255,.5)}
.dy-ah-n b,.dy-ah-n span{color:#fff}
.dy-ah-said{margin:clamp(14px,1.6vw,20px) 0 0;font:400 clamp(16px,1.2vw,18px)/1.62 var(--serif);
  color:rgba(255,255,255,.78);max-width:52ch}
.dy-ahead2 .dy-go{margin-top:clamp(20px,2.4vw,30px)}

/* AND AFTER THAT: the next two markers, quiet under the explanation.
   Smaller than the line above them and separated by a rule rather than a gap, because they are the
   same kind of thing as the countdown and not a new section - a reader should read down into them
   rather than across to them. */
.dy-ah-then{list-style:none;margin:clamp(20px,2.4vw,30px) 0 0;padding:clamp(16px,1.8vw,22px) 0 0;
  border-top:1px solid rgba(255,255,255,.22);display:flex;flex-wrap:wrap;
  gap:6px clamp(20px,2.4vw,32px)}
.dy-ah-then li{font:400 clamp(14px,1.05vw,16px)/1.5 var(--serif);color:rgba(255,255,255,.62)}
.dy-ah-then li::first-letter{text-transform:uppercase}

/* ---- THE CONFETTI ----
   A canvas made when it is needed and removed when it has finished, so it is never in the page at rest.
   It must not catch a click - the answer is underneath it. */
.dy-q{position:relative}
.dy-q-conf{position:absolute;inset:0;width:100%;height:100%;z-index:5;pointer-events:none;display:block}

@media (max-width:760px){
  .dy-stay-grid{grid-template-columns:1fr;grid-template-rows:auto auto;aspect-ratio:auto;gap:10px}
  .dy-stay-lead{aspect-ratio:3/2}
  .dy-stay-more{grid-template-rows:none;grid-template-columns:1fr 1fr}
  .dy-stay-more span{aspect-ratio:1}
  .dy-sec.dy-stay,.dy-sec.dy-ahead2{padding:44px 16px}
}

/* ---- THE LAST OF THE LIGHT ----
   The sky drawn behind, full bleed, with a rail of the real listing cards under the words. It is the
   almanac band's shape, which is deliberate: a reader should meet two of these on the page and recognise
   the second as the same kind of thing.

   THE CARDS ARE ON A DARK GROUND here, which _excard.css does not know about - it was written for a page
   on paper. So the two lines under each card are lifted to something readable on black, and nothing else
   about the card is touched. */
.dy-sec.dy-light{position:relative;max-width:none;width:100%;overflow:hidden;background:#2B301D;
  color:#fff;padding:0;margin-top:clamp(30px,3.2vw,50px)}
.dy-light .fd-sky{position:absolute;inset:0;z-index:0;display:block;pointer-events:none}
.dy-light .fd-sky canvas{display:block;width:100%;height:100%}
.dy-light-in{position:relative;z-index:2;width:100%;padding:var(--dy-pad) 24px;
  background:linear-gradient(to bottom,rgba(8,10,14,.5),rgba(8,10,14,.86) 40%)}
.dy-light-col{max-width:calc(var(--dy-wide) - 48px);margin:0 auto}
.dy-light .dy-at{color:#C08C3D}
.dy-sec.dy-light h2{margin:clamp(14px,1.6vw,20px) 0 0;font:400 min(clamp(26px,3vw,44px), 28px + (clamp(26px,3vw,44px) - 28px) * 0.6)/1.08 var(--face);
  letter-spacing:-.014em;text-wrap:balance;max-width:24ch;text-shadow:0 1px 30px rgba(4,6,10,.6)}
.dy-light-said{margin:clamp(12px,1.4vw,18px) 0 0;font:400 clamp(15px,1.2vw,17px)/1.6 var(--serif);
  color:#D7D2CB;max-width:56ch}
.dy-light .dy-rail{margin-top:clamp(26px,3vw,40px)}
/* the card's own words, on black */
.dy-light .ex-t b{color:#fff}
.dy-light .ex-t .eye,.dy-light .ex-t i,.dy-light .ex-t em,.dy-light .ex-t u{color:rgba(255,255,255,.55)}
.dy-light .dy-rail-a{background:rgba(251,249,246,.92);border-color:transparent;color:#414042}
.dy-light .dy-rail-a:hover{background:#fff;color:#414042}
.dy-light .dy-go{color:#fff;border-bottom-color:rgba(255,255,255,.4)}
.dy-light .dy-why,.dy-light .dy-why *{color:rgba(255,255,255,.38)}

/* ---- a section, and the marks every one carries ---- */
.dy-sec{max-width:var(--dy-col);margin:0 auto;padding:var(--dy-gap) 24px 0}
.dy-at{display:block;font:600 13px/1.3 var(--sans);letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-75);margin:0 0 16px}
.dy h2{margin:0;font:400 min(clamp(26px,2.7vw,36px), 28px + (clamp(26px,2.7vw,36px) - 28px) * 0.6)/1.2 var(--face);letter-spacing:-.004em;
  text-wrap:balance}
.dy-said{margin:16px 0 0;font:400 19px/1.66 var(--serif);color:var(--ink)}
.dy-go{display:inline-block;margin:22px 0 0;font:500 13px/1 var(--sans);letter-spacing:.06em;
  color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink-35);padding-bottom:4px}
.dy-go:hover{border-bottom-color:var(--ink)}

/* SHOWING THE WORKING. One line under every section saying why it is in today's edition.
   docs/YOUR-WEEK.md section 9: the site this was drawn against sells itself on "no AI, no algorithms",
   ours is assembled, and pretending otherwise would be the only lie on the page. Set small and italic -
   it is a footnote; at the size of the writing it becomes a disclaimer. */
.dy-why{margin:22px 0 0;font:italic 400 14.5px/1.55 var(--serif);color:var(--ink-35)}

.dy-pic{display:block;margin:26px 0 0;aspect-ratio:16/9;overflow:hidden;background:var(--oat)}
.dy-pic img{width:100%;height:100%;object-fit:cover}

/* ---- THE NEWS: three columns of type, and no photographs ----
   A newspaper's news page has no pictures on it, which is why you can read six stories in twenty
   seconds. The photographs are everywhere else in this edition; here they would only slow it. */
.dy-news{max-width:var(--dy-wide)}
.dy-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:0 40px;margin:28px 0 0}
.dy-cols article{padding:0 0 0 0}
.dy-cols article + article{border-left:1px solid var(--stone);padding-left:40px}
.dy-cols b{display:block;font:400 21px/1.3 var(--face);font-weight:400;letter-spacing:-.002em}
.dy-cols b a{color:inherit;text-decoration:none;border-bottom:1px solid var(--ink-20)}
.dy-cols b a:hover{border-bottom-color:var(--ink)}
.dy-cols p{margin:10px 0 0;font:400 16px/1.6 var(--serif);color:var(--ink-75)}
.dy-cols em{display:block;margin:10px 0 0;font-style:normal;font:600 9.5px/1 var(--sans);
  letter-spacing:.18em;text-transform:uppercase;color:var(--moss)}

/* ---- ON THIS DAY: a wide plate with the year over it ---- */
.dy-hist{max-width:var(--dy-wide);display:grid;grid-template-columns:1.1fr .9fr;gap:44px;
  align-items:center}
.dy-hist-plate{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--oat)}
.dy-hist-plate img{width:100%;height:100%;object-fit:cover}
.dy-year{position:absolute;left:0;right:0;bottom:-.08em;text-align:center;
  font:700 min(clamp(64px,9vw,140px), 28px + (clamp(64px,9vw,140px) - 28px) * 0.6)/1 var(--face);letter-spacing:.02em;color:#fff;
  text-shadow:0 2px 50px rgba(0,0,0,.45);font-variant-numeric:tabular-nums}
.dy-hist-in{min-width:0}

/* ---- DID YOU KNOW: a pull-quote, which is what a fact is ---- */
.dy-know{max-width:var(--dy-wide)}
.dy-know blockquote{margin:0;padding:clamp(34px,4vw,60px) clamp(24px,4vw,64px);background:var(--oat);
  font:400 min(clamp(26px,3.1vw,42px), 28px + (clamp(26px,3.1vw,42px) - 28px) * 0.6)/1.26 var(--face);letter-spacing:-.006em;text-wrap:balance;
  text-align:center}
.dy-know .dy-said{max-width:var(--dy-col);margin-left:auto;margin-right:auto;text-align:center}
.dy-know .dy-go,.dy-know .dy-why{display:block;text-align:center;
  max-width:var(--dy-col);margin-left:auto;margin-right:auto}

/* NO GAP ABOVE IT. Jack: "there is also a white gap below this section pleae remove". Measured at
   64px - the quiz own top margin, which is right everywhere else and wrong here: every band on this
   page butts against its neighbour, and this margin was written when the section above was pale and
   a gap was invisible. Between two coloured grounds it is a stripe. */
/* ---- THE QUESTION: a full-bleed photograph with the question over it ---- */
.dy-q{position:relative;margin:0;min-height:min(78vh,720px);
  display:flex;align-items:center;justify-content:center;padding:60px 24px;overflow:hidden;
  background:var(--ink)}
.dy-q-pic{position:absolute;inset:0;display:block}
.dy-q-pic img{width:100%;height:100%;object-fit:cover}
.dy-q-pic::after{content:'';position:absolute;inset:0;background:rgba(12,10,8,.52)}
.dy-q-in{position:relative;z-index:2;width:min(100%,30em);text-align:center;color:#fff}
.dy-q-in .dy-at{color:rgba(255,255,255,.6)}
.dy-q-in h2{color:#fff;text-shadow:0 1px 30px rgba(0,0,0,.4)}
.dy-opts{list-style:none;margin:28px 0 0;padding:0;display:grid;gap:9px}
.dy-opts button{display:block;width:100%;text-align:left;padding:14px 18px;cursor:pointer;
  border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.08);color:#fff;
  font:400 17px/1.3 var(--serif);backdrop-filter:blur(3px);transition:background .2s,border-color .2s}
.dy-opts button:hover:enabled{background:rgba(255,255,255,.2);border-color:#fff}
.dy-opts button.right{border-color:#fff;background:rgba(255,255,255,.92);color:var(--ink)}
.dy-opts button.wrong{border-color:rgba(255,255,255,.3);text-decoration:line-through;
  color:rgba(255,255,255,.55)}
.dy-opts button.dim{opacity:.35}
.dy-answer{margin:22px 0 0;font:400 17px/1.6 var(--serif);color:#fff}
.dy-answer b{font-weight:500}
.dy-answer a{color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.5)}

/* ---- and the four things five questions need that one did not ---- */

/* ONE SHAPE, WHATEVER THE QUESTION. Jack: "this section should never change shape depending on
   the quetion alwapys same". It had three heights - 720 with a photograph, 560 without, 520 for
   the score - so the page jumped every time a reader pressed Next, and a quiz that resizes under
   the hand reads as five sections rather than one thing being worked through. The rule that set a
   shorter box for a question with no photograph is gone; so is the score one below. */

/* WHERE THEY ARE IN THE FIVE. A quiz with no end in sight is one people leave. */
.dy-q-of{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 0 18px}
.dy-q-of span{font:600 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;
  color:rgba(255,255,255,.6)}
.dy-q-of i{display:flex;gap:5px}
.dy-q-of u{display:block;width:16px;height:2px;background:rgba(255,255,255,.28);
  text-decoration:none;transition:background .3s}
.dy-q-of u.on{background:#fff}

/* True or false?, so a two-button question announces itself rather than looking short */
.dy-q-kick{margin:0 0 10px;font:400 clamp(15px,1.15vw,17px)/1.3 var(--serif);
  color:rgba(255,255,255,.62)}

/* TWO BUTTONS SIDE BY SIDE. True and False stacked full width reads as a list with two things
   missing; as a pair it reads as a pair. */
.dy-opts.two{grid-template-columns:1fr 1fr}
.dy-opts.two button{text-align:center}

/* THE ONE THING TO PRESS once an answer is showing, so it is solid where the options are outlined
   and cannot be mistaken for a fifth option. */
.dy-q-on{margin:24px 0 0;padding:14px 26px;cursor:pointer;border:0;background:#fff;color:var(--ink);
  font:500 12px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;
  transition:background .2s,color .2s}
.dy-q-on:hover{background:var(--oat,#F5F1E9)}

/* THE SCORE: the number large and what it is out of small beside it - the shape the countdown
   already uses for "4 weeks / to the clocks going back". */

.dy-q-score{margin:0 0 6px;display:flex;align-items:baseline;justify-content:center;gap:12px}
.dy-q-score b{font:400 min(clamp(72px,9vw,140px), 28px + (clamp(72px,9vw,140px) - 28px) * 0.6)/.9 var(--face);letter-spacing:-.04em;color:#fff;
  font-variant-numeric:tabular-nums}
.dy-q-score i{font:400 clamp(16px,1.3vw,20px)/1 var(--serif);font-style:normal;
  color:rgba(255,255,255,.62)}
.dy-q-again{margin:16px 0 0;font:400 16px/1.6 var(--serif);color:rgba(255,255,255,.62)}

@media (max-width:480px){
  .dy-opts.two{grid-template-columns:1fr}
  .dy-opts.two button{text-align:left}
}

/* ---- ROWS: what is on, out there, four ideas ---- */
.dy-row{max-width:var(--dy-wide)}
.dy-run{list-style:none;margin:28px 0 0;padding:0;display:grid;gap:30px}
.dy-run.n2{grid-template-columns:repeat(2,1fr)}
.dy-run.n3{grid-template-columns:repeat(3,1fr)}
.dy-run.n4{grid-template-columns:repeat(4,1fr)}
.dy-run-pic{display:block;aspect-ratio:4/3;overflow:hidden;background:var(--oat);margin:0 0 14px}
.dy-row.tall .dy-run-pic{aspect-ratio:3/4}
.dy-run-pic img{width:100%;height:100%;object-fit:cover;
  transition:transform .6s cubic-bezier(.22,.8,.24,1)}
.dy-run li:hover .dy-run-pic img{transform:scale(1.04)}
.dy-run b{display:block;font:400 20px/1.32 var(--face);font-weight:400;letter-spacing:-.002em}
.dy-run b a{color:inherit;text-decoration:none;border-bottom:1px solid var(--ink-20)}
.dy-run b a:hover{border-bottom-color:var(--ink)}
.dy-run span{display:block;margin:8px 0 0;font:400 15.5px/1.6 var(--serif);color:var(--ink-75)}
.dy-run em{display:block;margin:9px 0 0;font-style:normal;font:600 9.5px/1.5 var(--sans);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink-35)}

/* ---- the foot ---- */
.dy-foot{max-width:var(--dy-col);margin:0 auto;padding:var(--dy-gap) 24px clamp(60px,8vw,120px);
  text-align:center}
.dy-next{margin:0;font:400 18px/1.6 var(--serif);color:var(--ink-75)}
.dy-nav{display:flex;gap:26px;justify-content:center;flex-wrap:wrap;margin:24px 0 0}
.dy-nav a{font:500 12px/1 var(--sans);letter-spacing:.1em;color:var(--ink-55);text-decoration:none;
  border-bottom:1px solid var(--ink-20);padding-bottom:4px}
.dy-nav a:hover{color:var(--ink);border-bottom-color:var(--ink)}

/* THE ONE ASK ON THE PAGE, so it gets the room to be one: the archive links that used to sit above
   it are gone and it is the whole foot now. */
.dy-join{margin:clamp(28px,3.4vw,48px) 0 0;padding:clamp(32px,3.8vw,52px) clamp(20px,3vw,36px);
  background:var(--oat)}
.dy-join h3{margin:0;font:400 min(clamp(24px,2.4vw,30px), 28px + (clamp(24px,2.4vw,30px) - 28px) * 0.6)/1.2 var(--face);letter-spacing:-.004em}
.dy-join p{margin:10px 0 0;font:400 17px/1.6 var(--serif);color:var(--ink-75)}
.dy-form{display:flex;max-width:380px;margin:22px auto 0;border:1px solid var(--ink-20);background:#fff}
.dy-form input{flex:1;min-width:0;height:48px;padding:0 14px;border:0;background:none;
  font:400 16px/1 var(--serif);color:var(--ink)}
.dy-form input::placeholder{color:var(--ink-35)}
.dy-form button{height:48px;padding:0 22px;border:0;background:var(--ink);color:var(--paper);
  font:500 11px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.dy-more{margin:20px 0 0;font-size:15px;color:var(--ink-55)}
.dy-more a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink-35)}

/* ---- every edition there has been ---- */
.dy-arch-list{list-style:none;margin:0;padding:0 24px;max-width:var(--dy-wide);
  margin-left:auto;margin-right:auto;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:30px}
.dy-arch-list a{display:block;color:inherit;text-decoration:none}
.dy-arch-pic{display:block;aspect-ratio:3/2;overflow:hidden;background:var(--oat)}
.dy-arch-pic img{width:100%;height:100%;object-fit:cover;
  transition:transform .6s cubic-bezier(.22,.8,.24,1)}
.dy-arch-list a:hover .dy-arch-pic img{transform:scale(1.04)}
.dy-arch-when{display:block;margin:12px 0 0;font:500 10px/1 var(--sans);letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-35)}
.dy-arch-list b{display:block;margin:7px 0 0;font:400 19px/1.3 var(--face);font-weight:400}
.dy-empty{max-width:var(--dy-col);margin:0 auto;font:400 19px/1.6 var(--serif);color:var(--ink-55);
  text-align:center}
.dy-arch .dy-hero{min-height:auto;background:var(--paper);padding:clamp(40px,6vw,80px) 24px}
.dy-arch .dy-mast{color:var(--ink);text-shadow:none}
.dy-arch .dy-line{color:var(--ink-55)}

/* ---- narrower ---- */
@media (max-width:1000px){
  .dy-cols{grid-template-columns:1fr;gap:26px}
  .dy-cols article + article{border-left:0;padding-left:0;padding-top:26px;
    border-top:1px solid var(--stone,#E4DED9)}
  .dy-hist{grid-template-columns:1fr;gap:28px}
  .dy-run.n4{grid-template-columns:repeat(2,1fr)}
}
/* A PHONE. The glance is six figures in a row, which at 390 is 55px each - so it wraps to two rows of
   three instead of being squeezed. Checked at 390 for page overflow. */
@media (max-width:760px){
  /* .dy-sec.dy-trips by name: a bare .dy-sec is (0,1,0) and the weekend section sets its own
     padding at (0,2,0), so it kept the 24px gutter and sat 8px right of everything else at 390. */
  /* .dy-light-in as well: the light section is a full-bleed band and its inner column carries the
     24px gutter itself, so it was the one heading on the page sitting 8px right of every other at
     390. Found by listing every heading's left edge rather than by looking. */
  /* .dy-foot too: it sat at a 24px gutter where the rest of the page is at 16, so the
     subscription box started 8px right of everything above it. */
  .dy-sec,.dy-news,.dy-hist,.dy-know,.dy-row,.dy-sec.dy-trips{padding-left:16px;padding-right:16px}
  .dy-foot{padding-left:16px;padding-right:16px}
  .dy-light-in{padding-left:16px;padding-right:16px}
  .dy-glance{min-height:clamp(210px,34vh,300px);padding:34px 16px}
  .dy-gl-row{flex-direction:column;align-items:flex-start;gap:16px}
  /* IT HAD NO BOTTOM PADDING AT ALL - 30px 16px 0 - so the list ran straight into the weather
     band. Jack asked for space above and below, and below was zero. */
  /* THE STRIP STACKS. Jack's standing brief: "evearything easily and beautifully stackable so they
     work on all devides". Two things side by side at 1920 is two things one above the other at 390,
     in the same order a reader wants them. */
  .dy-hero-strip{flex-direction:column;align-items:flex-start;gap:22px;
    padding:26px 16px 30px}
  .dy-hero-said{max-width:none}
  .dy-toc{padding:44px 16px 44px}
  /* NO FRAME ON A PHONE. Hover does not exist there, so a picture that cannot change is a screen
     spent on nothing - Jack's own "no information for the sake of it". */
  .dy-toc-in{grid-template-columns:1fr;gap:0}
  .dy-toc-pic{display:none}
  .dy-toc ol{grid-template-columns:1fr;gap:0}
  .dy-toc a{gap:14px;grid-template-columns:38px 1fr;padding:10px 0}
/* ---- FOUR IDEAS: a list, not a fourth row of photographs ----
   It had pictures, and by the time a reader reaches it they have already had the free article's
   photograph, the almanac's film and the collection's rail of ten cards. A list of things to do reads
   faster as a list, and the page does not need a fourth photographic block in five sections. */
.dy-sec.dy-ideas .dy-run-pic{display:none}
.dy-sec.dy-ideas .dy-run{grid-template-columns:repeat(2,1fr);gap:clamp(22px,2.6vw,34px)}
.dy-sec.dy-ideas .dy-run b{font:400 clamp(19px,1.7vw,23px)/1.28 var(--face)}
/* the place under each idea. It was being drawn nowhere at all, so the section was four category names
   with nothing under them - "A family day out" is a heading FOR something. */
.dy-sec.dy-ideas .dy-run span{display:block;margin:8px 0 0;font:400 14.5px/1.5 var(--serif);
  color:var(--ink-55)}

  .dy-run.n3,.dy-run.n4{grid-template-columns:repeat(2,1fr);gap:20px}
  .dy-said{font-size:17.5px}
  /* THE FILM NEEDS ROOM LEFT OVER. On a phone the strip stacks and runs to 359px, which out of a
     658px cover left the film a 299px band - a letterbox rather than a picture. The cover grows
     so the film keeps about four hundred of it whatever the weather sentence comes to. */
  .dy-hero{min-height:min(92vh,780px)}
  /* A FIXED SHAPE ON A PHONE TOO. min-height:auto let it vary 266 to 476 across the five, which
     is the jump Jack asked to be rid of - it was only fixed on the desktop. 520 clears the tallest
     question with room and still leaves most of an 844 screen for the rest of the page. */
  .dy-q{min-height:520px;padding:48px 16px}
  .dy-form{flex-direction:column;border:0;gap:8px}
  .dy-form input{border:1px solid var(--ink-20)}
  .dy-form button{width:100%}
}


/* =====================================================================
   THE DATED DEPARTMENTS: Scotland, today's own rows
   =====================================================================
   Jack, 28 September, pointing at that band on /homeold: "i think we should utilise this design for the
   daily". What's on and The news are lists of dated facts, and a list of dated facts wants a listings
   row rather than the card with a photograph they had.

   COPIED FROM _home.css RATHER THAN SHARED, and the class names are not renamed. Both are house rules:
   class names come from the mock, and one stylesheet per page means every page carries its own copy -
   the same reason these four were copied into _home5.css when the home feed took them.
   --------------------------------------------------------------------- */
.dy-dated{max-width:var(--dy-wide)}
/* A BIGGER DATE. Jack: "maybe increase side of the date boxes". At 42px with a 15px numeral the
   date read as a stamp beside the words; at 56 with a 22px numeral it is the first thing on the row,
   which is what it should be on a list whose whole subject is when. */
.dy-dated .td-block{--td-row:60px;--td-chip:56px;--td-corner:0;--td-title:19px;margin-top:0}
.dy-dated .td-bh{margin:0 0 6px}
.dy-dated .td-bh h3{font:600 10px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;
  color:var(--ink-35);margin:0}
/* NO RULE BETWEEN THE ROWS. Jack: "please take away the line devider lines". A hairline under every
   row turned a list of five things into a table of five things; the dates stepping down the left
   already say where one row ends and the next starts. */
.dy-dated .td-list a{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center;
  min-height:var(--td-row);color:var(--ink);text-decoration:none;
  transition:padding-left .35s cubic-bezier(.22,.8,.24,1)}
.dy-dated .td-list a:hover{padding-left:8px}
.dy-dated .td-chip{display:grid;place-items:center;width:var(--td-chip);height:var(--td-chip);
  border:1px solid var(--ink-20);line-height:1;flex:0 0 auto}
.dy-dated .td-chip i{display:block;font-style:normal;font:600 8.5px/1 var(--sans);letter-spacing:.16em;
  color:var(--ink-55);margin-bottom:4px}
.dy-dated .td-chip b{display:block;font:400 22px/1 var(--face);color:var(--ink)}
.dy-dated .td-t{min-width:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dy-dated .td-t > span{font:400 var(--td-title)/1.3 var(--face);letter-spacing:-.004em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.dy-dated .td-pill{flex:0 0 auto;padding:3px 9px;background:rgba(65,64,66,.07);
  font:500 8.5px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--ink)}
/* BRACKEN MEANS NOW, and it is not a red badge: it is the difference between a thing happening today
   and a thing happening in three weeks, which is a fact rather than a prod. */
.dy-dated .td-pill.now{background:#C08C3D;color:#fff}
.dy-dated .td-when{font:400 13px/1 var(--sans);color:var(--ink-55);white-space:nowrap}

/* the long read's subtitle, which no other department has */
.dy-sub{margin:10px 0 0;font:italic 400 19px/1.5 var(--serif);color:var(--ink-55)}

@media (max-width:700px){
  /* the place goes under the thing rather than squeezing it: a two-word region in a 390 row leaves
     about eleven characters for the headline, which is an ellipsis with a date beside it */
  .dy-dated .td-list a{grid-template-columns:auto 1fr;gap:14px;padding:12px 0}
  .dy-dated .td-t{align-items:flex-start;flex-direction:column;gap:7px}
  .dy-dated .td-t > span{white-space:normal;overflow:visible}
  .dy-dated .td-when{grid-column:2;margin-top:-4px}
}

/* ON THIS DAY WITH NO PHOTOGRAPH. onThisDay() carries none, and the two-column shape was drawing a 4:3
   grey rectangle beside the words. Bare, the year stands on its own as type in the column - which is
   what the plate was there to do in the first place. */
.dy-hist.bare{display:block;max-width:var(--dy-wide)}
.dy-hist.bare .dy-hist-in{max-width:var(--dy-col)}
.dy-hist.bare .dy-hist-plate{position:static;aspect-ratio:auto;background:none;margin:0 0 4px}
.dy-hist.bare .dy-year{position:static;text-align:left;color:var(--ink-20);text-shadow:none;
  display:block;font-size:min(clamp(56px,7vw,96px), 28px + (clamp(56px,7vw,96px) - 28px) * 0.6);line-height:.9}

/* =====================================================================
   SCOTLAND, TODAY - the band from the old home page, whole
   =====================================================================
   Jack, 28 September: "i think we should utilise this design for the daily", then "sorry i meant that
   exact section with the video too."

   COPIED FROM _home.css, class names unrenamed. Both house rules: class names come from the mock, and
   one stylesheet per page means every page carries its own copy rather than sharing one.

   It replaces three departments that were each too thin standing alone - What's on, The news and On
   this day were 109, 229 and 58 words in three separate sections - with one dense block.
   --------------------------------------------------------------------- */
/* A BIGGER DATE. Jack: "maybe increase side of the date boxes". At 42px square with a 15px numeral
   the date was a stamp beside the words; at 54 with a 21px numeral it is the first thing read on the
   row, which is right for a list whose whole subject is when. */
.dy-band{--td-in:1560px;--td-cols:.88fr 1fr;--td-row:54px;--td-chip:54px;--td-title:18px;
  --td-corner:0px;--td-shape:4/5;--td-gap:clamp(34px,5vw,80px);
  --td-ease:cubic-bezier(.22,.8,.24,1);--td-ground:#F5F1E9;--td-listen:40px;
  background:var(--td-ground);margin:var(--dy-gap) 0 0;
  padding:var(--dy-pad) 0}
.dy-band .td-in{max-width:var(--td-in);margin:0 auto;padding:0 clamp(20px,3vw,56px);
  display:grid;grid-template-columns:var(--td-cols);gap:var(--td-gap);align-items:start}

/* the film as a WINDOW rather than a ground: nothing written over it but what a camera burns into its
   own corners */
.dy-band .td-win{display:block;position:relative;overflow:hidden;background:#2B301D;
  aspect-ratio:var(--td-shape);text-decoration:none}
.dy-band .td-win video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.dy-band .td-burn{position:absolute;inset:0;z-index:2;pointer-events:none;
  padding:clamp(14px,1.5vw,22px);display:grid;grid-template-rows:auto 1fr auto;
  background:linear-gradient(to bottom,rgba(12,14,11,.34) 0,rgba(12,14,11,0) 26%,
    rgba(12,14,11,0) 62%,rgba(12,14,11,.42) 100%)}
.dy-band .td-burn .up,.dy-band .td-burn .dn{display:flex;align-items:center;
  justify-content:space-between;gap:16px}
.dy-band .td-burn span{font:500 9.5px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;
  color:rgba(255,255,255,.9);text-shadow:0 1px 12px rgba(8,10,7,.6);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.dy-band .td-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#fff;
  margin-right:9px;vertical-align:1px;animation:td-pulse 2.6s ease-in-out infinite}
@keyframes td-pulse{0%,100%{opacity:1}50%{opacity:.35}}
.dy-band .td-win .go{position:absolute;left:0;right:0;bottom:0;z-index:3;
  padding:clamp(14px,1.5vw,22px);text-align:right;font:500 9.5px/1 var(--sans);letter-spacing:.2em;
  text-transform:uppercase;color:#fff;opacity:0;transform:translateY(6px);
  transition:opacity .35s var(--td-ease),transform .35s var(--td-ease);
  text-shadow:0 1px 12px rgba(8,10,7,.6)}
.dy-band .td-win:hover .go{opacity:1;transform:none}
.dy-band .td-win:hover .dn{opacity:0;transition:opacity .3s var(--td-ease)}

/* LISTEN UNMUTES THE FILM ITSELF. 425 of our films carry their own audio, so this is the actual sound
   of that place on the day it was filmed rather than a library recording. */
/* UP, clear of the date burned into the corner under it. Jack: "on the video the listen box needs to
   be moved up." */
.dy-band .td-listen{position:absolute;z-index:4;left:clamp(14px,1.5vw,22px);
  bottom:clamp(54px,5vw,74px);display:inline-flex;align-items:center;gap:10px;
  height:var(--td-listen);padding:0 15px 0 13px;cursor:pointer;border:0;background:#C08C3D;color:#fff;
  font:600 9.5px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;
  transition:background .25s var(--td-ease),transform .3s var(--td-ease)}
.dy-band .td-listen:hover{background:#C08C3D;transform:translateY(-1px)}
.dy-band .td-listen i{display:flex;align-items:flex-end;gap:2px;height:13px}
.dy-band .td-listen i s{display:block;width:2px;height:4px;background:#fff;text-decoration:none;
  transform-origin:50% 100%}
.dy-band .td-listen.on i s{animation:td-bars 1.1s ease-in-out infinite}
.dy-band .td-listen.on i s:nth-child(1){animation-delay:0s}
.dy-band .td-listen.on i s:nth-child(2){animation-delay:.18s}
.dy-band .td-listen.on i s:nth-child(3){animation-delay:.36s}
@keyframes td-bars{0%,100%{height:4px}50%{height:13px}}

/* THE COLUMN FILLS THE FILM BESIDE IT. Jack: "the above section should fill the space". The grid
   sets align-items:start, so the two lists sat at the top of a 800px row and left 277px of nothing
   under them. Stretched and spread, the two headings sit level with the top and bottom of the film
   whatever today's events and news come to. */
.dy-band .td-said{min-width:0;align-self:stretch;display:flex;flex-direction:column;
  justify-content:space-between}
.dy-band .td-h{margin:0 0 6px;font:400 min(clamp(30px,3vw,44px), 28px + (clamp(30px,3vw,44px) - 28px) * 0.6)/1.03 var(--face);letter-spacing:-.014em;
  color:var(--ink)}
.dy-band .td-block{margin-top:clamp(34px,4vh,52px)}
.dy-band .td-said > .td-block:first-child{margin-top:0}
.dy-band .td-bh{padding-bottom:0;margin-bottom:22px}
.dy-band .td-bh{display:flex;align-items:baseline;justify-content:space-between;gap:18px;
  padding-bottom:2px}
/* BIGGER, AND WITH ROOM UNDER THEM. 9.5px caps is a label; these are the only thing telling a reader
   what they are looking at. At 13 the tracking comes down from .3em, which at that size starts to read
   as a gap between letters rather than as letterspacing. */
.dy-band .td-bh h3{margin:0;font:600 13px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-75)}
/* THE FIRST ROW HAS NO LINE. Every row carried a border-top, so the first one sat two pixels under
   "WHAT IS ON" and read as an underline on the heading rather than a rule between rows. Now the first
   line a reader meets is BETWEEN two things rather than under one.

   The headline may wrap to two lines as well: there is room for it once the right-hand column has gone,
   and Arthouse Glasgow was losing its second half to an ellipsis. */
/* NO RULE BETWEEN THE ROWS. Jack: "please take away the line devider lines". A hairline under every
   row turned a list of things into a table of things; the dates stepping down the left already say
   where one row ends and the next starts, and the space does the rest. */
/* A THIRD COLUMN, FOR HOW FAR. It is `auto` at the end rather than a fixed width, so on a reader we
   know nothing about it collapses to nothing and the row is the two columns it always was. */
/* A ROW WITHOUT A DATE IS TWO COLUMNS, not three with an empty one - an invisible first column
   would indent every news headline to nothing. */
.dy-band .td-list a.nodate{grid-template-columns:1fr auto}
.dy-band .td-list a{display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:center;
  min-height:var(--td-row);padding:11px 0;color:var(--ink);text-decoration:none;
  transition:padding-left .35s var(--td-ease)}
.dy-band .td-list a:first-child{padding-top:0}
.dy-band .td-list a:last-child{padding-bottom:0}
.dy-band .td-list a:hover{padding-left:8px}
.dy-band .td-chip{display:grid;place-items:center;width:var(--td-chip);height:var(--td-chip);
  border:1px solid var(--ink-20);line-height:1;flex:0 0 auto}
.dy-band .td-chip i{display:block;font-style:normal;font:600 8.5px/1 var(--sans);letter-spacing:.16em;
  color:var(--ink-55);margin-bottom:4px}
.dy-band .td-chip b{display:block;font:400 21px/1 var(--face);color:var(--ink)}
.dy-band .td-t{min-width:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dy-band .td-t > span{font:400 var(--td-title)/1.36 var(--face);letter-spacing:-.004em;max-width:100%}
/* THE PILL STOPPED SHOUTING. "TODAY AND TOMORROW" in bracken at 8.5px with 9px of padding was a long
   string of white caps on orange - the loudest thing in the band by a distance, on the least important
   thing in it. */
/* THE PILL WAS NEVER ACTUALLY SMALL. Jack: "the fond on the tool tip on today and last day on
   events is too large, make it smaller and bold". This rule already asked for 8px semibold caps and
   the browser was drawing 18px regular, because .dy-band .td-t > span above it is (0,3,1) against
   this rule's (0,2,0) and set the row title's face over the top of it. Naming the class on the same
   child selector is what makes it stick - the fourth time on this page that a bare class has lost
   to a descendant one, and the reason every change here is measured off the page rather than off
   the stylesheet. */
.dy-band .td-t > span.td-pill{flex:0 0 auto;padding:3px 8px;background:rgba(65,64,66,.06);
  font:600 9.5px/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-75)}
/* WHAT SUITS THEM - quieter than the state pill beside it, because "Last day" is about today and
   this is about them. Moss rather than bracken for the same reason: it is a fact in the margin, not
   a thing to act on. */
.dy-band .td-t > span.td-fits{flex:0 0 auto;padding:3px 8px;background:rgba(65,64,66,.1);
  font:600 9.5px/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:#414042}

/* bracken means NOW, and it is a fact rather than a prod: the difference between a thing happening
   today and a thing happening in three weeks */
.dy-band .td-t > span.td-pill.now{background:rgba(192,140,61,.14);color:#682114}
/* HOW FAR, ranged right and quiet. It is read in the corner of the eye while the headline is being
   read, so it is small, it is tabular, and it never wraps. */
.dy-band .td-when{font:500 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-75);white-space:nowrap;font-variant-numeric:tabular-nums}
/* NEAR BIRSE, beside the section's own label and set apart from it. The label is the department; this
   is the one word that is true of this reader and nobody else. */
.dy-band .td-near{display:inline;font-style:normal;color:var(--bracken,#C08C3D);
  text-transform:none;letter-spacing:.1em}
.dy-band .td-near::before{content:'\2009\00b7\2009';color:var(--ink-20)}

@media (max-width:900px){
  .dy-band .td-in{grid-template-columns:1fr;gap:34px}
  .dy-band .td-win{aspect-ratio:3/2}
}
@media (max-width:640px){
  .dy-band .td-list a{grid-template-columns:auto 1fr;gap:14px;padding:12px 0}
  .dy-band .td-t{flex-direction:column;align-items:flex-start;gap:7px}
  .dy-band .td-t > span{white-space:normal;overflow:visible}
  .dy-band .td-when{grid-column:2;margin-top:-4px}
}

/* B7 in the Daily: "On this day in 1813," opens the headline in weight and the forest colour, and the fact
   runs straight on. The heading's own <b>, not a new class - the feed does the same with fd-was. */
.dy-hist h2 b{font-weight:700;color:var(--forest)}

/* ON THIS DAY, THE BAND'S LAST ROW (Jack, 30 September: "as part of the section above, so same backgound
   but below it"). The band's two columns again, under a hairline: the year or the photograph under the
   film, the headline under the lists. The standalone .dy-hist and .dy-hist.bare rules are reset whole
   here, not half-overridden. */
.dy-band .dy-hist,.dy-band .dy-hist.bare{grid-column:1/-1;max-width:none;margin:clamp(40px,5vh,64px) 0 0;
  padding:clamp(34px,4.4vh,56px) 0 0;border-top:1px solid rgba(65,64,66,.14);display:grid;
  grid-template-columns:var(--td-cols);gap:var(--td-gap);align-items:center;position:relative}
.dy-band .dy-hist .dy-mark{position:absolute;top:0}
.dy-band .dy-hist-plate{position:relative;aspect-ratio:3/2;overflow:hidden;background:var(--oat);margin:0}
.dy-band .dy-hist.bare .dy-hist-plate{aspect-ratio:auto;overflow:visible;background:none}
.dy-band .dy-hist .dy-year{position:absolute;left:clamp(14px,1.5vw,22px);right:auto;bottom:clamp(8px,1vw,14px);
  text-align:left;font:400 min(clamp(64px,7vw,112px), 28px + (clamp(64px,7vw,112px) - 28px) * 0.6)/.85 var(--face);letter-spacing:-.02em;color:#fff;
  text-shadow:0 2px 40px rgba(0,0,0,.4);font-variant-numeric:lining-nums tabular-nums}
.dy-band .dy-hist.bare .dy-year{position:static;display:block;color:var(--forest);text-shadow:none;
  font-size:min(clamp(88px,10vw,168px), 28px + (clamp(88px,10vw,168px) - 28px) * 0.6);line-height:.8}
.dy-band .dy-hist-in{min-width:0;max-width:34em}
.dy-band .dy-hist h2{margin:0;font:400 min(clamp(24px,2.3vw,34px), 28px + (clamp(24px,2.3vw,34px) - 28px) * 0.6)/1.16 var(--face);letter-spacing:-.01em;
  color:var(--ink)}
.dy-band .dy-hist h2 b{font-weight:700;color:var(--forest)}
.dy-band .dy-hist .dy-said{margin:16px 0 0;font:400 17px/1.62 var(--serif);color:var(--ink-75)}
.dy-band .dy-hist .dy-go{margin-top:18px}
@media (max-width:900px){
  .dy-band .dy-hist,.dy-band .dy-hist.bare{grid-template-columns:1fr;gap:18px}
  .dy-band .dy-hist.bare .dy-year{font-size:min(clamp(64px,18vw,96px), 28px + (clamp(64px,18vw,96px) - 28px) * 0.6)}
}

/* ON THIS DAY, CENTRED IN THE BAND (Jack, 30 September: "more centered"). The year and the headline are
   one pair at a reading distance, centred, instead of each on its own column's edge. */
.dy-band .dy-hist,.dy-band .dy-hist.bare{grid-template-columns:auto minmax(0,34em);justify-content:center;
  column-gap:clamp(40px,4vw,72px)}
.dy-band .dy-hist:not(.bare) .dy-hist-plate{width:clamp(260px,24vw,400px)}
@media (max-width:900px){
  .dy-band .dy-hist,.dy-band .dy-hist.bare{grid-template-columns:1fr;justify-content:stretch}
  .dy-band .dy-hist:not(.bare) .dy-hist-plate{width:auto}
}

/* THE CONTENTS PICTURE HAS A FLOOR (Jack, 1 October: "check why image has messed up in the contents").
   It took half of what the list left over, and a list holding one long line left it 34px. The floor is
   the width it has on an ordinary morning; the list wraps before the picture narrows. */
.dy-toc-in{grid-template-columns:minmax(clamp(240px,22vw,320px),.5fr) minmax(0,auto)}
@media (max-width:760px){
  .dy-toc-in{grid-template-columns:1fr}
}

/* NOT INTERESTED, under a very local news row (Jack, 1 October). Quiet: the sans at label size in the
   faded ink, no box, an underline on hover. It hangs under its row, on the row's own left edge. */
.dy-band .td-no{display:block;margin:-4px 0 10px;padding:0;border:0;background:none;cursor:pointer;
  font:500 11px/1 var(--sans);letter-spacing:.06em;color:var(--ink-55);text-align:left}
.dy-band .td-no:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}

/* THE PEOPLE (dyp-), from /design-2026/daily-people.html as Jack chose it on 1 October: B2, B4 and E1.
   The section takes the page's wide measure; the words are Larken, the attribution Lora, the label the
   page's own dy-at. Square corners, no rules. */
.dy-sec.dyp{max-width:var(--dy-wide)}
.dyp blockquote{margin:0;font:400 min(clamp(24px,2.3vw,30px), 28px + (clamp(24px,2.3vw,30px) - 28px) * 0.6)/1.22 var(--face);letter-spacing:-.008em;
  color:var(--ink);max-width:30em}
.dyp-who{margin:16px 0 0;font:400 16px/1.5 var(--serif);color:var(--ink-75);max-width:36em}
.dyp-who b{font-weight:600;color:var(--ink)}
.dyp .dy-go{display:inline-block;margin-top:20px}
.dyp-pic{display:block;overflow:hidden;background:var(--stone);aspect-ratio:4/5}
.dyp-pic img{display:block;width:100%;height:100%;object-fit:cover}
/* B2: their portrait, tall, beside the line */
.dy-sec.dyp-b2{display:grid;grid-template-columns:minmax(0,31fr) minmax(0,69fr);
  gap:clamp(28px,4vw,64px);align-items:center}
/* B4: small and quick, in words alone */
.dyp-b4 blockquote{font-size:clamp(19px,1.7vw,22px);max-width:34em}
.dyp-b4 .dyp-who{margin-top:8px;font-size:14px}
/* E1: the story in one line, their words under it, their portrait */
.dy-sec.dyp-e1{display:grid;grid-template-columns:minmax(0,35fr) minmax(0,65fr);
  gap:clamp(28px,4vw,64px);align-items:center}
.dyp-e1 h2{margin:0;font:400 min(clamp(26px,2.6vw,38px), 28px + (clamp(26px,2.6vw,38px) - 28px) * 0.6)/1.08 var(--face);letter-spacing:-.01em;
  color:var(--ink);max-width:16em}
.dyp-e1 blockquote{margin-top:18px;font-size:clamp(18px,1.6vw,21px);color:var(--ink-75)}
@media (max-width:760px){
  .dy-sec.dyp-b2,.dy-sec.dyp-e1{grid-template-columns:1fr;gap:22px}
  .dyp-pic{max-width:280px}
}

/* ASK A LOCAL (A1·1): the place at the left, the words beside it, and the person's face as a small square
   beside their name. The by-line is a row everywhere now, so the attribution's own top margin moves to it. */
.dyp-by{display:flex;align-items:center;gap:16px;margin-top:16px}
.dyp-by .dyp-who{margin:0}
.dyp-b4 .dyp-by{margin-top:8px}
.dyp-face{display:block;flex:none;width:72px;height:72px;overflow:hidden;background:var(--stone)}
.dyp-face img{display:block;width:100%;height:100%;object-fit:cover}
.dy-sec.dyp-a1{display:grid;grid-template-columns:minmax(0,44fr) minmax(0,56fr);
  gap:clamp(28px,4vw,64px);align-items:center}
@media (max-width:760px){
  .dy-sec.dyp-a1{grid-template-columns:1fr;gap:22px}
  .dyp-a1 .dyp-pic{max-width:none;aspect-ratio:3/2}
}

/* ---- A NOTE FROM US, under the cover (daily-note.py, 1 October 2026) ----
   The three cards Jack chose on /design-2026/daily-next/card2.html, under the mock's own names. A white
   card; a landscape as the main thing; the words large; the portrait small, square-cornered, cut 4:5,
   beside the written name. */
.dx-t{padding:clamp(44px,4.6vw,72px) 0 0}
.dx-t .dx-in{max-width:var(--dy-wide);margin:0 auto;padding:0 24px}
.dx-t p{margin:0}
.dx-t a{color:inherit;text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px;
  text-decoration-color:var(--ink-35);white-space:nowrap}
.dx-t-card{max-width:1080px;margin:0 auto;background:#fff;box-shadow:0 14px 44px rgba(65,64,66,.11)}
.dx-t-land{display:block;width:100%;object-fit:cover;object-position:50% 58%}
.dx-t-say{font:400 min(clamp(24px,2.4vw,34px), 28px + (clamp(24px,2.4vw,34px) - 28px) * 0.6)/1.25 var(--face);letter-spacing:-.01em}
.dx-t .dx-t-who{display:flex;align-items:center;gap:16px;margin-top:clamp(24px,2.6vw,36px)}
.dx-t-who img{width:64px;height:80px;object-fit:cover;object-position:50% 24%;flex:none;border-radius:0}
.dx-t-who b{display:block;font:italic 500 min(34px, 28px + (34px - 28px) * 0.6)/1 var(--script);color:var(--ink)}
.dx-t-who i{display:block;margin-top:6px;font:400 16px/1.3 var(--serif);font-style:normal;color:var(--ink-55)}
/* t1 - the picture at the side, to the card's edge, as tall as the words need */
.dx-t1 .dx-t-card,.dx-t5 .dx-t-card{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}
.dx-t1 .dx-t-land{align-self:stretch;height:0;min-height:100%}
.dx-t1 .dx-t-w{min-height:clamp(320px,33vw,430px)}
.dx-t1 .dx-t-w,.dx-t5 .dx-t-w{padding:clamp(28px,4.2vw,64px);display:flex;flex-direction:column;justify-content:center}
/* t2 - the picture across the top; the words at the left, the person at the right */
.dx-t2 .dx-t-land{aspect-ratio:21/9;height:auto}
.dx-t2 .dx-t-w{padding:clamp(26px,3.6vw,52px);display:grid;grid-template-columns:minmax(0,1.6fr) auto;
  gap:clamp(24px,4vw,72px);align-items:center}
.dx-t.dx-t2 .dx-t-who{margin-top:0}
/* t5 - the picture at the side with a white margin round it */
.dx-t5 .dx-t-card{padding:clamp(16px,1.8vw,24px)}
.dx-t5 .dx-t-land{aspect-ratio:4/3;height:auto;align-self:center}
.dx-t5 .dx-t-w{padding-top:0;padding-bottom:0;padding-right:clamp(12px,2.4vw,40px)}
@media(max-width:760px){
  .dx-t .dx-in{padding:0 16px}
  .dx-t1 .dx-t-card,.dx-t5 .dx-t-card{grid-template-columns:1fr}
  .dx-t1 .dx-t-land,.dx-t5 .dx-t-land{height:auto;min-height:0;aspect-ratio:4/3}
  .dx-t1 .dx-t-w{min-height:0}
  .dx-t5 .dx-t-w{padding:22px 4px 8px}
  .dx-t2 .dx-t-land{aspect-ratio:4/3}
  .dx-t2 .dx-t-w{grid-template-columns:1fr}
  .dx-t.dx-t2 .dx-t-who{margin-top:4px}
}

/* the note says what it is, and can be closed (daily-note2.py, 1 October 2026) */
.dx-t-card{position:relative}
.dx-t-at{margin:0 0 clamp(14px,1.5vw,20px)!important;font:600 13px/1.3 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-75)}
.dx-t-x{position:absolute;top:0;right:0;z-index:2;width:48px;height:48px;display:grid;place-items:center;border:0;background:none;color:var(--ink-55);cursor:pointer}
.dx-t-x svg{width:16px;height:16px;display:block}
.dx-t-x:hover{color:var(--ink)}
.dx-t-x:focus-visible{outline:2px solid var(--august);outline-offset:-4px}
/* across the top, the close sits on the photograph: a paper square so it reads on any picture */
.dx-t2 .dx-t-x{background:var(--paper);color:var(--ink)}

/* AN ANNOUNCEMENT FROM HIDDEN SCOTLAND (daily-post.py; the sheet is /design-2026/daily-next/update.html).
   B, the picture beside the words, and D, words alone on a plain card. */
.dx-u{padding:clamp(44px,5vw,76px) 0 0}
.dx-u .dx-in{position:relative;max-width:var(--dy-wide);margin:0 auto;padding:0 24px}
.dx-u p{margin:0}
.dx-u .dx-kick{font:600 13px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-75)}
.dx-u h2{font:400 min(clamp(30px,3.4vw,52px), 28px + (clamp(30px,3.4vw,52px) - 28px) * 0.6)/1.05 var(--face);letter-spacing:-.014em;margin:14px 0 0}
.dx-u .dx-u-said{font:400 clamp(17px,1.5vw,20px)/1.5 var(--serif);max-width:32em;margin-top:14px}
.dx-u img{display:block}
.dx-u .dx-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:clamp(20px,2.2vw,30px)}
.dx-u .dx-btn{display:inline-flex;align-items:center;justify-content:center;height:52px;padding:0 24px;border:0;cursor:pointer;
  background:var(--ink);color:var(--paper);font:500 15px/1 var(--sans);text-decoration:none}
.dx-u .dx-btn.quiet{background:none;color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.dx-u .dx-btn:hover{opacity:.86}
.dx-u-b .dx-in{display:grid;grid-template-columns:clamp(160px,20vw,280px) minmax(0,1fr);gap:clamp(28px,4.4vw,72px);align-items:center}
.dx-u-b img{width:100%;aspect-ratio:4/5;object-fit:cover;box-shadow:0 18px 40px rgba(65,64,66,.18)}
.dx-u-b .dx-t-x{right:24px}
.dx-u-d .dx-u-box{position:relative;background:var(--oat,#F1EDE8);padding:clamp(36px,4.4vw,68px) clamp(20px,4vw,60px);text-align:center}
.dx-u-d h2{margin-top:16px}
.dx-u-d .dx-u-said{margin:14px auto 0}
.dx-u-d .dx-btns{justify-content:center}
@media (max-width:760px){
  .dx-u .dx-in{padding:0 16px}
  .dx-u-b .dx-in{grid-template-columns:1fr}
  .dx-u-b img{max-width:220px}
  .dx-u-b .dx-t-x{right:16px}
}

/* ---- THE SMALL LABELS, LEGIBLE (daily-labels.py, 2 October 2026) ----
   The card's town, on the two light bands that carry cards: ink at three quarters, never lighter. */
.dy-disc .ex-t .eye,.dy-trips-grid .ex-t .eye{color:var(--ink-75)}
/* AND DID YOU KNOW'S LINK, which had no rule for its dark band: "See the place" was ink on ink (1.0 to 1)
   and stood at the page's edge, 24px in, outside the column its heading and words stand on (427 at 1920).
   Every part of .dy-go that worked together is reset: the place, the colour and the underline. */
.dy-dyk .dy-go{display:block;max-width:calc(var(--dy-wide) - 48px);margin:clamp(18px,2vw,26px) auto 0;
  padding-bottom:0;border-bottom:0;color:#fff;text-decoration:underline;text-decoration-thickness:1px;
  text-decoration-color:rgba(255,255,255,.45);text-underline-offset:6px}
.dy-dyk .dy-go:hover{text-decoration-color:#fff}

/* ---- THE WELCOME KEEPS ITS PARAGRAPHS (daily-welcome.py, 2 October 2026) ---- */
.dy-hero-said{white-space:pre-line}

/* ---- THE TODAY BAND, E2 (daily-band-e2.py, 2 October 2026) ----
   What is on as tickets across the top, the film beside the news under them. The sheet's rules, under
   .dy-band.dtb2; the card's words held in the middle (Jack: "move it down so its centered"). */
.dy-band.dtb2{padding:clamp(64px,6vw,104px) 0}
.dy-band.dtb2 .dtb2-in{max-width:var(--dy-wide);margin:0 auto;padding:0 24px}
.dy-band.dtb2 .dtb2-hd{margin:0 0 clamp(22px,2.2vw,32px)}
.dy-band.dtb2 .dtb2-hd h3{margin:0;font:400 min(clamp(32px,2.9vw,44px), 28px + (clamp(32px,2.9vw,44px) - 28px) * 0.6)/1.04 var(--face);letter-spacing:-.014em;color:var(--ink)}
.dy-band.dtb2 .dtb2-hd p{margin:10px 0 0;font:500 14px/1.3 var(--sans);letter-spacing:.04em;color:var(--ink-75)}
.dy-band.dtb2 .dtb2-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.dy-band.dtb2 .c-ticket{display:grid;grid-template-columns:96px minmax(0,1fr);min-height:200px;background:#fff;
  color:var(--ink);text-decoration:none;transition:transform .25s,box-shadow .25s}
.dy-band.dtb2 .c-ticket:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(65,64,66,.10)}
.dy-band.dtb2 .c-ticket .stub{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  padding:0 8px;box-shadow:inset -1px 0 0 rgba(65,64,66,.14);text-align:center}
.dy-band.dtb2 .c-ticket .stub b{font:400 min(40px, 28px + (40px - 28px) * 0.6)/1 var(--face);letter-spacing:-.02em}
.dy-band.dtb2 .c-ticket .stub i{font:500 10.5px/1.35 var(--sans);font-style:normal;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-75)}
.dy-band.dtb2 .c-ticket .body{display:flex;flex-direction:column;justify-content:center;padding:22px 22px 22px}
.dy-band.dtb2 .c-ticket .body em{font:600 11px/1.3 var(--sans);font-style:normal;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-75);margin-bottom:10px}
.dy-band.dtb2 .c-ticket .body b{display:block;font:400 24px/1.18 var(--face);letter-spacing:-.008em}
.dy-band.dtb2 .c-ticket .body > span{margin-top:10px;font:400 15px/1.4 var(--serif);color:var(--ink-75)}
.dy-band.dtb2 .c-ticket u{margin-top:12px;text-decoration:none;font:600 11px/1 var(--sans);letter-spacing:.16em;
  text-transform:uppercase;color:#682114}
/* C2 (Jack, 4 October 2026, of daily-today-band-3.html): a run that goes on says until when, quiet; only a state that
   changes tomorrow is in bracken */
.dy-band.dtb2 .c-ticket u.dim{color:var(--ink-55,rgba(65,64,66,.55))}
.dy-band.dtb2 .dtb2-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(34px,5vw,80px);
  align-items:start;margin-top:clamp(56px,5vw,88px)}
.dy-band.dtb2 .dtb2-on + .dtb2-pair{margin-top:clamp(56px,5vw,88px)}
.dy-band.dtb2 .dtb2-in > .dtb2-pair:first-child{margin-top:0}
.dy-band.dtb2 .dtb2-film{display:block;position:relative;overflow:hidden;background:#2B301D;aspect-ratio:16/10;text-decoration:none}
.dy-band.dtb2 .dtb2-film video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.dy-band.dtb2 .dtb2-burn{position:absolute;left:0;right:0;top:0;z-index:2;display:flex;justify-content:space-between;
  padding:clamp(14px,1.5vw,22px);pointer-events:none}
.dy-band.dtb2 .dtb2-burn.dn{top:auto;bottom:0}
.dy-band.dtb2 .dtb2-burn span{font:500 11px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:#fff;
  text-shadow:0 1px 8px rgba(0,0,0,.45);font-variant-numeric:tabular-nums}
.dy-band.dtb2 .dtb2-news{list-style:none;margin:0;padding:0}
.dy-band.dtb2 .dtb2-news li{padding:0 0 18px}
.dy-band.dtb2 .dtb2-news a{display:block;color:var(--ink);text-decoration:none;font:400 20px/1.4 var(--face)}
.dy-band.dtb2 .dtb2-news a:hover span{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.dy-band.dtb2 .dtb2-no{display:block;margin:6px 0 0;padding:0;border:0;background:none;cursor:pointer;
  font:500 11px/1 var(--sans);letter-spacing:.06em;color:var(--ink-75)}
.dy-band.dtb2 .dtb2-no:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.dy-band.dtb2 .dtb2-more{margin-top:clamp(34px,3vw,48px)}
@media (max-width:1100px){
  .dy-band.dtb2 .dtb2-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .dy-band.dtb2 .dtb2-cards{grid-template-columns:1fr}
  .dy-band.dtb2 .c-ticket{min-height:150px;grid-template-columns:84px minmax(0,1fr)}
  .dy-band.dtb2 .dtb2-pair{grid-template-columns:1fr;gap:34px}
  .dy-band.dtb2 .dtb2-news a{font-size:18px}
}

/* ---- A QUESTION NOW AND THEN (daily-ask.py) ---- */
/* The Daily's questions as a quick quiz, in the Daily quiz's own shape (daily-ask-quiz-tsx.py). Jack, 2 October:
   "just a few questsions like the quiz format", and of interests "i dont think its obviosu what their selecting".
   What is picked is plain: filled white, a tick in front of it, and named in a line under the answers. */
.dy-q .dy-opts button.on{border-color:#fff;background:#fff;color:var(--ink)}
.dy-q .dy-opts button.on::before{content:'\2713';display:inline-block;width:1.4em;font-weight:600}
/* a long list (interests, regions, the months) in columns, and the column wide enough to hold them */
.dy-q-in:has(.dy-opts > li:nth-child(6)){width:min(100%,46em)}
.dy-q .dy-opts:has(> li:nth-child(6)){grid-template-columns:repeat(3,minmax(0,1fr))}
.dy-q .dy-opts:has(> li:nth-child(6)) button{padding:12px 14px;font-size:16px}
/* this or that: the photograph inside the button */
.dy-q .dy-opts button img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;margin:0 0 12px}
.dy-q .dy-opts.two button:has(img){padding:8px 8px 14px}
/* the dates, or where they are staying: fields the shape of the answers */
.dy-q .tg-field{display:flex;flex-wrap:wrap;gap:9px;margin:22px 0 0}
.dy-q .tg-field input{flex:1 1 10em;min-width:0;height:50px;padding:0 14px;border:1px solid rgba(255,255,255,.4);
  background:rgba(255,255,255,.08);color:#fff;font:400 17px/1 var(--serif);color-scheme:dark}
.dy-q .tg-field input::placeholder{color:rgba(255,255,255,.7)}
.dy-q .tg-field .dy-q-on{margin:0}
.dy-q .dy-q-on:disabled{opacity:.45;cursor:default}
/* Skip, quiet under the answers */
.dy-q .dy-q-again button{background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer;
  text-decoration:underline;text-decoration-color:rgba(255,255,255,.4);text-underline-offset:3px}
.dy-q .dy-q-again button:hover{color:#fff}
@media (max-width:760px){
  .dy-q .dy-opts:has(> li:nth-child(6)){grid-template-columns:1fr 1fr}
  .dy-q .tg-field{flex-direction:column}
}
/* ---- end: a question now and then ---- */

/* ---- ON THIS DAY, A BAND OF ITS OWN (daily-otd.py) ---- */
/* Jack's O1 (2 October): the band after What is on, on forest, full width, the year large beside the story */
.dy-sec.otd-band{max-width:none;width:100%;margin:0;padding:clamp(64px,6vw,104px) 0;background:var(--forest);color:#fff}
.dy .otd-in{max-width:var(--dy-wide);margin:0 auto;padding:0 24px;display:grid;
  grid-template-columns:auto minmax(0,1fr);gap:clamp(32px,5vw,80px);align-items:center}
.dy .otd-year{font:400 min(clamp(110px,12vw,200px), 28px + (clamp(110px,12vw,200px) - 28px) * 0.6)/.8 var(--face);letter-spacing:-.03em;color:#fff}
.dy .otd-at{margin:0 0 12px;font:600 13px/1.3 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.8)}
.dy .otd-band h2{margin:0;font:400 min(clamp(28px,2.6vw,40px), 28px + (clamp(28px,2.6vw,40px) - 28px) * 0.6)/1.15 var(--face);color:#fff;text-wrap:balance}
.dy .otd-said{margin:16px 0 0;font:400 18px/1.6 var(--serif);color:rgba(255,255,255,.88);max-width:36em}
.dy .otd-band .dy-go{display:inline-block;margin-top:18px;color:#fff}
@media (max-width:760px){
  .dy .otd-in{grid-template-columns:1fr;gap:18px;padding:0 16px}
}
/* ---- end: on this day ---- */

/* TODAY'S DISCOVERY on oat, the Discover band's ground, so it reads apart from the long read on paper above it
   (Jack, 3 October 2026: "needs a differnet background to differnetiate it from teh avove listing").
   scratchpad/design-2026/daily-discovery.py */
.dy-sec.dy-stay.dy-discovery{background:var(--oat,#F5F1E9)}

/* THE COVER CAPTION ON THE MASTHEAD'S EDGE (Jack, 3 October 2026: "the location on the hero is badly
   postitioned"). The left edge is the strip's: the page column centred, plus its own 24px gutter.
   scratchpad/design-2026/daily-hero-caption.py */
.dy-hero-credit{left:max(24px,calc((100% - var(--dy-wide)) / 2 + 24px));padding:0;
  margin-bottom:clamp(18px,2vw,28px);font-size:11px;letter-spacing:.16em;gap:8px}
@media (max-width:760px){
  .dy-hero-credit{left:16px;margin-bottom:14px;font-size:10px}
}

/* THE FOOT: S1 AND K2 (Jack, 3 October 2026, from /design-2026/daily-end.html: "use S1 and K2 and code it").
   The sheet's own names (de-). scratchpad/design-2026/daily-end-build.py */
.dy .de-band{padding:clamp(56px,6vw,96px) 24px;margin:var(--dy-gap) 0}
/* a paper strip under it too: K2 on forest otherwise runs into the site footer, forest as well */
.dy .de-in{max-width:var(--dy-wide);margin:0 auto}
.dy .de-band.g-oat{background:var(--oat,#F5F1E9);color:var(--ink)}
.dy .de-band.g-forest{background:var(--forest,#2B301D);color:#fff}
.dy .de-c{text-align:center}
.dy .de-k{margin:0 0 18px;font:600 12px/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;opacity:.75}
.dy .de-h{margin:0 0 14px;font:400 min(clamp(30px,3vw,40px), 28px + (clamp(30px,3vw,40px) - 28px) * 0.6)/1.08 var(--face);letter-spacing:-.012em}
.dy .de-said{max-width:34em;margin:0 0 26px;font:400 17px/1.6 var(--serif);opacity:.85}
.dy .de-c .de-said{margin-left:auto;margin-right:auto}
.dy .de-clock{margin:0 0 18px;font:400 min(clamp(64px,7.4vw,112px), 28px + (clamp(64px,7.4vw,112px) - 28px) * 0.6)/.9 var(--face);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.dy .de-form{display:flex;max-width:440px;margin:0 auto 12px;border:1px solid currentColor}
.dy .de-form input{flex:1;min-width:0;height:52px;border:0;background:none;padding:0 16px;font:400 16px var(--serif);color:inherit}
.dy .de-form button{height:52px;padding:0 24px;border:0;background:var(--ink);cursor:pointer}
.dy .de-form button span{font:600 12px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--paper)}
.dy .de-small{margin:0;font:400 14px/1.5 var(--sans);opacity:.7}
.dy .de-covers{display:flex;justify-content:center;gap:14px;margin:34px 0 0}
.dy .de-covers figure{margin:0;flex:1;max-width:220px}
.dy .de-covers img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--stone)}
.dy .de-covers figcaption{margin:9px 0 0;font:500 11px/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.dy .de-two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px);align-items:center}
.dy .de-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;padding:0;list-style:none}
.dy .de-chips a{display:block;padding:10px 14px;border:1px solid currentColor;color:inherit;text-decoration:none;
  font:500 14px/1 var(--sans)}
.dy .de-chips a:hover{background:#fff;color:var(--forest,#2B301D)}
.dy .de-chips b{margin-right:6px;font-weight:600;font-size:12px;letter-spacing:.12em;text-transform:uppercase;opacity:.6}
.dy .de-go{display:inline-block;color:inherit;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:4px;
  font:500 14px/1 var(--sans);letter-spacing:.06em}
@media (max-width:760px){
  .dy .de-band{padding:48px 16px}
  .dy .de-two{grid-template-columns:1fr}
  .dy .de-clock{font-size:min(min(72px,17vw), 28px + (min(72px,17vw) - 28px) * 0.6)}
  .dy .de-covers figure:nth-child(n+3){display:none}
}

/* ---- EVERY SECTION ON ITS OWN GROUND ----
   Jack, 4 October 2026: "there are sections whtat dont have their own background in todays daily", "this
   section needs space its too close" (the free article, whose picture ran into the band under it) and "also
   random white bar at the bottom".

   The page decides each light section's ground in order (DailyPage, grounds): paper or oat, never the same
   as the light section touching it. The wrapper carries the ground full width; the section inside keeps its
   own column and loses its own ground, and every one ends with the same air it starts with.

   NO PAGE SHOWING BETWEEN BANDS. The margins above the two dark film bands and round the foot were the
   page's own paper showing as a strip between two full-bleed grounds - the fault fixed once already under
   Out there (see NO GAP UNDER IT). Grounds stack; nothing sits between them. */
.dy-gr{width:100%}
.dy-gr.g-paper{background:var(--paper,#FFFFF7)}
.dy-gr.g-oat{background:var(--oat,#F5F1E9)}
.dy-gr > .dy-sec{background:transparent;margin-top:0;padding-bottom:var(--dy-pad)}
.dy-sec.dy-outband,.dy-sec.dy-light{margin-top:0}
.dy .de-band{margin:0}
.dy-gr.g-oat + .de-band.g-oat{background:var(--paper,#FFFFF7)}

/* ---- THE QUESTIONS IN A POP-UP (daily-ask-pop.py) ---- */
.dy-pop{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:24px;background:rgba(12,10,8,.72);animation:dy-pop-in .18s ease-out}
.dy-pop-in{position:relative;width:min(100%,980px);max-height:calc(100vh - 48px);overflow:auto;
  box-shadow:0 30px 80px rgba(0,0,0,.45)}
/* the card is a band on the page; in here it is the size of what it holds */
.dy-pop .dy-q{min-height:min(72vh,620px);padding:64px 32px 48px}
.dy-pop-x{position:absolute;top:0;right:0;z-index:6;width:52px;height:52px;border:0;padding:0;cursor:pointer;
  background:rgba(12,10,8,.35);color:#fff;font:300 min(34px, 28px + (34px - 28px) * 0.6)/52px var(--serif);text-align:center}
.dy-pop-x:hover{background:rgba(12,10,8,.7)}
.dy-pop-x:focus-visible{outline:2px solid #fff;outline-offset:-4px}
/* a chip pressed and waiting for its questions */
.de-chips a[aria-busy]{opacity:.55;cursor:progress}
@keyframes dy-pop-in{from{opacity:0}to{opacity:1}}
@media (max-width:760px){
  .dy-pop{padding:0;align-items:stretch}
  .dy-pop-in{max-height:100vh;width:100%}
  .dy-pop .dy-q{min-height:100vh;padding:72px 16px 40px}
}
/* ---- end: the questions in a pop-up ---- */

/* >>> daily-ask-flow.py: the month in a question */
.dy-q .cal .mh{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}
.dy-q .cal .mh h3{margin:0;font:400 24px/1 var(--face)}
.dy-q .cal .mh h3 span{margin-left:8px;font:italic 400 16px var(--serif);color:var(--ink-55)}
.dy-q .cal .sq{display:flex;gap:6px}
.dy-q .cal .sq button{width:40px;height:40px;border:1px solid var(--rule);background:none;cursor:pointer;display:grid;place-items:center}
.dy-q .cal .sq button:hover{background:var(--paper)}
.dy-q .cal .sq button:disabled{opacity:.25;cursor:default}
.dy-q .cal .sq svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5}
.dy-q .cal .dow, .dy-q .cal .days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.dy-q .cal .dow{margin-bottom:6px}
.dy-q .cal .dow span{text-align:center;font:600 11px var(--sans);letter-spacing:.12em;color:var(--ink-55)}
.dy-q .cal .days button{aspect-ratio:1;font:400 15px var(--serif);border:0;cursor:pointer;padding:0;background:var(--stone);color:var(--ink)}
.dy-q .cal .days button:hover{background:#fff}
.dy-q .cal .days .pad{visibility:hidden}
.dy-q .cal .days .past{background:transparent;color:var(--ink-55);cursor:default}
.dy-q .cal .days .today{box-shadow:inset 0 0 0 1px var(--ink)}
.dy-q .cal .days .in{background:#C08C3D;color:#FBF9F6}
.dy-q .cal .days .from, .dy-q .cal .days .to{background:#C08C3D;color:#FBF9F6}
.dy-q .cal .sq button[hidden]{display:none}
.dy-q .cal .sq button svg{display:block;width:16px;height:16px;fill:none;stroke:var(--ink);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.dy-q .cal{margin:28px auto 0;max-width:380px;text-align:left;color:#fff}
.dy-q .cal .mh h3{color:#fff}
.dy-q .cal .mh h3 span{color:rgba(255,255,255,.75)}
.dy-q .cal .sq button{border-color:rgba(255,255,255,.55);color:#fff}
.dy-q .cal .sq button:hover:enabled{background:rgba(255,255,255,.2)}
.dy-q .cal .sq button svg{stroke:#fff}
.dy-q .cal .dow span{color:rgba(255,255,255,.75)}
.dy-q .cal .days button{background:rgba(255,255,255,.14);color:#fff;font-size:16px}
.dy-q .cal .days button:hover:enabled{background:rgba(255,255,255,.34)}
.dy-q .cal .days .past{background:transparent;color:rgba(255,255,255,.35)}
.dy-q .cal .days .today{box-shadow:inset 0 0 0 1px #fff}
.dy-q .cal .days .in{background:rgba(255,255,255,.6);color:var(--ink)}
.dy-q .cal .days .from,.dy-q .cal .days .to,.dy-q .cal .days .from:hover:enabled,.dy-q .cal .days .to:hover:enabled{background:#fff;color:var(--ink)}
.dy-q .cal .days button:focus-visible,.dy-q .cal .sq button:focus-visible{outline:2px solid #fff;outline-offset:2px}
/* <<< daily-ask-flow.py */


/* ==== 11 OCTOBER 2026: THE CONTENTS AS FIVE CARDS (scratchpad/design-2026/daily-oct11-cards.py) ====
   Jack: "the contents of the daily is a mess its wayy too long and doesnt look good at all". Fourteen lines
   and a hover picture became the edition's five best pieces in one row, drawn as Days Out draws a place: the
   photograph, the kind of piece above in small capitals, the name at the foot over a dark fall. On a phone the
   row scrolls sideways under the thumb. */
/* .dy-toc ol and .dy-toc a are the old list's, and outrank a bare class: every rule here leads with .dy-toc
   and resets what the list set (grid, padding, gap, the underline state) rather than half-overriding it */
.dy-toc ol.dy-toc-row{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
  grid-auto-rows:auto;gap:14px}
.dy-toc .dy-toc-row li{min-width:0}
.dy-toc .dy-toc-card{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;background:var(--stone);
  color:#F9F5EE;text-decoration:none;padding:0;gap:0;grid-template-columns:none;align-items:normal}
.dy-toc .dy-toc-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:transform .9s cubic-bezier(.22,.8,.24,1)}
.dy-toc .dy-toc-card:hover img{transform:scale(1.03)}
.dy-toc .dy-toc-card::after{content:'';position:absolute;inset:30% 0 0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(14,12,10,0),rgba(14,12,10,.3) 45%,rgba(14,12,10,.7))}
.dy-toc .dy-toc-card::before{content:'';position:absolute;inset:0 0 72%;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(14,12,10,.34),rgba(14,12,10,0))}
.dy-toc .dy-toc-card .dy-toc-tag{position:absolute;z-index:2;left:18px;right:18px;top:16px;
  font:600 10.5px/1.3 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:#F9F5EE;margin:0}
.dy-toc .dy-toc-card .dy-toc-t{position:absolute;z-index:2;left:18px;right:18px;bottom:16px;
  font:300 clamp(19px,1.45vw,24px)/1.1 var(--face);letter-spacing:-.01em;color:#F9F5EE;
  display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
@media (max-width:760px){
  .dy-toc ol.dy-toc-row{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 16px;margin:0 -16px;padding:0 16px;
    scrollbar-width:none}
  .dy-toc ol.dy-toc-row::-webkit-scrollbar{display:none}
  .dy-toc .dy-toc-row li{flex:0 0 62vw;scroll-snap-align:start}
}

/* ==== WHAT IS ON TODAY AS DAYS OUT'S EVENT CARDS (the same script) ====
   Jack: "on days out we hve this style for events - can we use this for the daily too". The card is Days
   Out's .dor6-pin.ev: a 3:2 block of a house colour, the two small-capital words across the top, the name in
   Larken at the foot. Five colours in turn; Days Out's pale blue is left out, white words do not stand on it. */
.dy-band.dtb2 .dtb2-cards.k-ev{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.dy-band.dtb2 .dtb2-ev{aspect-ratio:3/2;display:flex;flex-direction:column;justify-content:space-between;
  padding:20px;color:#F9F5EE;text-decoration:none;transition:filter .3s}
.dy-band.dtb2 .dtb2-ev:hover{filter:brightness(1.07)}
.dy-band.dtb2 .dtb2-ev.ink0{background:#C08C3D}
.dy-band.dtb2 .dtb2-ev.ink1{background:#2B301D}
.dy-band.dtb2 .dtb2-ev.ink2{background:#682114}
.dy-band.dtb2 .dtb2-ev.ink3{background:#392916}
.dy-band.dtb2 .dtb2-ev.ink4{background:#414042}
.dy-band.dtb2 .dtb2-ev-tag{display:flex;justify-content:space-between;gap:12px;
  font:600 10.5px/1.3 var(--sans);letter-spacing:.22em;text-transform:uppercase;opacity:.88}
.dy-band.dtb2 .dtb2-ev-tag > span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dy-band.dtb2 .dtb2-ev-tag > span + span{flex:none}
.dy-band.dtb2 .dtb2-ev-t{font:300 clamp(22px,1.75vw,30px)/1.06 var(--face);letter-spacing:-.015em;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
@media (max-width:980px){
  .dy-band.dtb2 .dtb2-cards.k-ev{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:520px){
  .dy-band.dtb2 .dtb2-cards.k-ev{grid-template-columns:1fr}
  .dy-band.dtb2 .dtb2-ev{aspect-ratio:auto;min-height:150px;padding:16px}
}
/* THE FRONT: C, THE MASTHEAD OVER THE MORNING (Jack, 14 October 2026, from /design-2026/daily-masthead.html: "lets try C",
   "logo a bit smaller"). scratchpad/design-2026/daily-masthead-build.py */
.dy .dym{position:relative;background:var(--paper,#FBF9F4);color:var(--ink)}
.dy .dym::before{content:"";position:absolute;inset:0;background:url(/design-2026/mail/paper.jpg) center top/1982px auto;
  mix-blend-mode:multiply;opacity:.35;pointer-events:none}
.dy .dym>*{position:relative}
/* more room between the parts, the ears level with the lettering's middle (Jack, 14 October: "needs a little more
   space in between things i reckon the logo can be a littel bit smaller too") */
.dy .dym-mast{max-width:var(--dy-wide,1284px);margin:0 auto;padding:clamp(40px,4vw,64px) 24px clamp(34px,3.4vw,52px);
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:48px}
.dy .dym-name{margin:0;line-height:0}
.dy .dym-logo{display:block;width:min(260px,26vw);height:auto}
.dy .dym-ear{margin:0;max-width:22em;font:400 14px/1.5 var(--serif);color:#3B2A1A}
.dy .dym-ear b{display:block;margin-bottom:10px;font:600 11px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase}
.dy .dym-r{justify-self:end;text-align:right}
/* boxed in the page's column, not full width, and short (Jack, 14 October: "the video height is way too big much
   smaller ... not full width so more boxed in with the margins") */
.dy .dym-ph{position:relative;width:calc(100% - 48px);max-width:calc(var(--dy-wide,1284px) - 48px);margin:0 auto;aspect-ratio:3/1;overflow:hidden;background:var(--forest,#2B301D)}
.dy .dym-ph .dy-hero-pic{position:absolute;inset:0;display:block;background-size:cover;background-position:center 60%}
.dy .dym-ph .dy-hero-pic img,.dy .dym-ph .dy-hero-pic video{width:100%;height:100%;object-fit:cover;object-position:center 60%;display:block}
.dy .dym-ph .fd-sky{position:absolute;inset:0;z-index:1;display:block;pointer-events:none}
.dy .dym-ph .fd-sky canvas{width:100%;height:100%;display:block}
/* the place, bottom left of the film, no pin (Jack, 14 October) */
.dy .dym-ph .dy-hero-credit{position:absolute;left:clamp(16px,1.6vw,22px);bottom:clamp(14px,1.4vw,18px);z-index:2;margin:0;padding:0}
.dy .dym-open{max-width:760px;margin:0 auto;padding:clamp(40px,4vw,60px) 24px clamp(48px,4.6vw,68px);text-align:center}
.dy .dym-lede{margin:0;font:400 19px/1.6 var(--serif);color:var(--ink);white-space:pre-line}
/* "In this edition" at the column's left edge, like the ears above it and Today's weather below it, rather than centred
   over the cards (Jack, 14 October: "In this edition doesnt seem aligned propertlly") */
.dy .dy-toc-at{text-align:left}
@media (prefers-reduced-motion:reduce){.dy .dym-ph .dy-hero-pic video{display:none}}
@media (max-width:760px){
  .dy .dym-mast{grid-template-columns:1fr;justify-items:center;text-align:center;gap:18px;padding:30px 16px 28px}
  .dy .dym-name{order:-1}
  .dy .dym-r{justify-self:center;text-align:center}
  .dy .dym-ear b{margin-bottom:6px}
  .dy .dym-logo{width:min(190px,52vw)}
  .dy .dym-ear{font-size:13px}
  .dy .dym-ph{width:calc(100% - 32px);aspect-ratio:16/10}
  .dy .dym-ph .dy-hero-credit{left:12px;bottom:10px}
  .dy .dym-open{padding:26px 16px 34px}
  .dy .dym-lede{font-size:17px}
}
/* end of the front */
/* LINKS IN ONE STYLE, LABELS IN ONE COLOUR A GROUND (Jack, 14 October 2026: "make one style"; "ok try that").
   scratchpad/design-2026/daily-links-labels.py */
.dy .dy-more{font-size:inherit;color:inherit}
.dy .dy-more a,.dy a.dy-go{font:500 13px/1 var(--sans);letter-spacing:.06em;text-transform:none;
  border:0;padding:0;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent)}
.dy .dy-more a{color:var(--ink)}
.dy .dy-more a:hover,.dy a.dy-go:hover{text-decoration-color:currentColor}
.dy .dy-at,.dy .otd-at,.dy .dy-ob-at,.dy .dy-gl-at,.dy .dy-ft-at b,.dy .de-k,.dy .dy-kn-kind{color:rgba(65,64,66,.78)}
.dy .dy-dyk .dy-at,.dy .dy-dyk .otd-at,.dy .dy-dyk .dy-ob-at,.dy .dy-dyk .dy-gl-at,.dy .dy-dyk .dy-ft-at b,.dy .dy-dyk .de-k,.dy .dy-dyk .dy-kn-kind,.dy .otd-band .dy-at,.dy .otd-band .otd-at,.dy .otd-band .dy-ob-at,.dy .otd-band .dy-gl-at,.dy .otd-band .dy-ft-at b,.dy .otd-band .de-k,.dy .otd-band .dy-kn-kind,.dy .dy-outband .dy-at,.dy .dy-outband .otd-at,.dy .dy-outband .dy-ob-at,.dy .dy-outband .dy-gl-at,.dy .dy-outband .dy-ft-at b,.dy .dy-outband .de-k,.dy .dy-outband .dy-kn-kind,.dy .dy-glance .dy-at,.dy .dy-glance .otd-at,.dy .dy-glance .dy-ob-at,.dy .dy-glance .dy-gl-at,.dy .dy-glance .dy-ft-at b,.dy .dy-glance .de-k,.dy .dy-glance .dy-kn-kind,.dy .dy-light .dy-at,.dy .dy-light .otd-at,.dy .dy-light .dy-ob-at,.dy .dy-light .dy-gl-at,.dy .dy-light .dy-ft-at b,.dy .dy-light .de-k,.dy .dy-light .dy-kn-kind,.dy .dy-ahead2 .dy-at,.dy .dy-ahead2 .otd-at,.dy .dy-ahead2 .dy-ob-at,.dy .dy-ahead2 .dy-gl-at,.dy .dy-ahead2 .dy-ft-at b,.dy .dy-ahead2 .de-k,.dy .dy-ahead2 .dy-kn-kind,.dy .dy-q .dy-at,.dy .dy-q .otd-at,.dy .dy-q .dy-ob-at,.dy .dy-q .dy-gl-at,.dy .dy-q .dy-ft-at b,.dy .dy-q .de-k,.dy .dy-q .dy-kn-kind,.dy .dy-kn-myth .dy-at,.dy .dy-kn-myth .otd-at,.dy .dy-kn-myth .dy-ob-at,.dy .dy-kn-myth .dy-gl-at,.dy .dy-kn-myth .dy-ft-at b,.dy .dy-kn-myth .de-k,.dy .dy-kn-myth .dy-kn-kind,.dy .de-band.g-forest .dy-at,.dy .de-band.g-forest .otd-at,.dy .de-band.g-forest .dy-ob-at,.dy .de-band.g-forest .dy-gl-at,.dy .de-band.g-forest .dy-ft-at b,.dy .de-band.g-forest .de-k,.dy .de-band.g-forest .dy-kn-kind{color:rgba(255,255,255,.72)}
/* THE SECTION LABELS IN THE HOUSE FACE (Jack, 14 October 2026, of the labels in Karla's hand on /daily: "can you
   change the font of the script font, and make this our normal font, dont want to use script for that"). Jost small
   capitals, upright, as the site's kicker and the Daily email's labels are; maroon on a light ground, the Daily's gold
   on a dark one, as they were. Only the labels over sections; the small capitals inside cards stay as they are. */
.dy .dy-at,.dy .otd-at,.dy .dy-ob-at,.dy .dy-gl-at,.dy .dy-ft-at b,.dy .de-k,.dy .dy-toc-at{display:block;font:600 13px/1.3 var(--sans);
  letter-spacing:.2em;text-transform:uppercase;color:#682114;transform:none}
.dy .dy-ft-at b{display:inline-block}
.dy .dy-dyk .dy-at,.dy .dy-dyk .otd-at,.dy .dy-dyk .dy-ob-at,.dy .dy-dyk .dy-gl-at,.dy .dy-dyk .dy-ft-at b,.dy .dy-dyk .de-k,.dy .dy-dyk .dy-toc-at,.dy .otd-band .dy-at,.dy .otd-band .otd-at,.dy .otd-band .dy-ob-at,.dy .otd-band .dy-gl-at,.dy .otd-band .dy-ft-at b,.dy .otd-band .de-k,.dy .otd-band .dy-toc-at,.dy .dy-outband .dy-at,.dy .dy-outband .otd-at,.dy .dy-outband .dy-ob-at,.dy .dy-outband .dy-gl-at,.dy .dy-outband .dy-ft-at b,.dy .dy-outband .de-k,.dy .dy-outband .dy-toc-at,.dy .dy-glance .dy-at,.dy .dy-glance .otd-at,.dy .dy-glance .dy-ob-at,.dy .dy-glance .dy-gl-at,.dy .dy-glance .dy-ft-at b,.dy .dy-glance .de-k,.dy .dy-glance .dy-toc-at,.dy .dy-light .dy-at,.dy .dy-light .otd-at,.dy .dy-light .dy-ob-at,.dy .dy-light .dy-gl-at,.dy .dy-light .dy-ft-at b,.dy .dy-light .de-k,.dy .dy-light .dy-toc-at,.dy .dy-ahead2 .dy-at,.dy .dy-ahead2 .otd-at,.dy .dy-ahead2 .dy-ob-at,.dy .dy-ahead2 .dy-gl-at,.dy .dy-ahead2 .dy-ft-at b,.dy .dy-ahead2 .de-k,.dy .dy-ahead2 .dy-toc-at,.dy .dy-q .dy-at,.dy .dy-q .otd-at,.dy .dy-q .dy-ob-at,.dy .dy-q .dy-gl-at,.dy .dy-q .dy-ft-at b,.dy .dy-q .de-k,.dy .dy-q .dy-toc-at,.dy .dy-kn-myth .dy-at,.dy .dy-kn-myth .otd-at,.dy .dy-kn-myth .dy-ob-at,.dy .dy-kn-myth .dy-gl-at,.dy .dy-kn-myth .dy-ft-at b,.dy .dy-kn-myth .de-k,.dy .dy-kn-myth .dy-toc-at,.dy .de-band.g-forest .dy-at,.dy .de-band.g-forest .otd-at,.dy .de-band.g-forest .dy-ob-at,.dy .de-band.g-forest .dy-gl-at,.dy .de-band.g-forest .dy-ft-at b,.dy .de-band.g-forest .de-k,.dy .de-band.g-forest .dy-toc-at{color:#C08C3D}
@media (max-width:760px){.dy .dy-at,.dy .otd-at,.dy .dy-ob-at,.dy .dy-gl-at,.dy .dy-ft-at b,.dy .de-k,.dy .dy-toc-at{font-size:12px}}
/* GET TO KNOW SCOTLAND, SMALLER (Jack, 14 October 2026: "make this one better - i think reduce font a little"). The
   word a size and a half down, the dark card's words in the same colour as the others' (no gold), and each row as tall
   as its own cards rather than every row as tall as the tallest card on the page, which left a third of a card empty. */
.dy .dy-kn-grid{--dy-word:clamp(40px,4vw,66px);grid-auto-rows:auto;gap:14px}
.dy .dy-kn-said{font-size:16px;line-height:1.6}
.dy .dy-kn-one:not(.word) .dy-kn-w{display:block;font-size:min(clamp(24px,2.1vw,30px), 28px + (clamp(24px,2.1vw,30px) - 28px) * 0.6);line-height:1.15;letter-spacing:-.01em}
.dy .dy-kn-myth .dy-kn-say{color:rgba(255,255,255,.72)}
/* end of links and labels */
/* SCOTLAND THIS WEEK, PLATE B (Jack, 14 October 2026: "B One leads", "build that"). The old band's full-bleed rules
   (.dy-outband's min-height, padding, film) are reset here, all of them. scratchpad/design-2026/daily-out-b.py */
.dy .dy-sec.dyo{position:relative;display:block;min-height:0;padding:0;margin:0;background:#2B301D;color:#fff;overflow:hidden}
.dy .dyo-lead{position:relative;min-height:clamp(380px,46vw,620px);display:flex;align-items:flex-end}
.dy .dyo-lead.bare{min-height:0}
.dy .dyo-film{position:absolute;inset:-2px;display:block;background:center/cover no-repeat}
.dy .dyo-film video{display:block;width:100%;height:100%;object-fit:cover}
.dy .dyo-film::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 30%,rgba(0,0,0,.66))}
.dy .dyo-words{position:relative;z-index:2;width:100%;max-width:var(--dy-wide);margin:0 auto;padding:clamp(48px,5vw,72px) 24px clamp(34px,3.4vw,48px)}
.dy .dyo-words>*{max-width:44rem}
.dy .dyo-words h2{margin:0;font:400 min(clamp(34px,3.6vw,50px), 28px + (clamp(34px,3.6vw,50px) - 28px) * 0.6)/1.06 var(--face);letter-spacing:-.012em;color:#fff}
.dy .dyo-left{margin:14px 0 0;font:400 clamp(18px,1.5vw,21px)/1.35 var(--face);color:#fff}
.dy .dyo-note{margin:12px 0 0;font:400 16px/1.6 var(--serif);color:rgba(255,255,255,.84)}
.dy .dyo-note span{color:rgba(255,255,255,.62)}
.dy .dyo-also{max-width:var(--dy-wide);margin:0 auto;padding:clamp(24px,2.6vw,34px) 24px clamp(30px,3vw,40px);display:grid;grid-template-columns:1fr 1fr;gap:28px}
.dy .dyo-one{display:grid;grid-template-columns:96px minmax(0,1fr);gap:18px;align-items:center}
.dy .dyo-one.bare{grid-template-columns:1fr}
.dy .dyo-one i{display:block;aspect-ratio:1;background:center/cover no-repeat}
.dy .dyo-one b{display:block;margin:0 0 7px;font:400 21px/1.2 var(--face)}
.dy .dyo-one em{display:block;font:600 12px/1.3 var(--sans);font-style:normal;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.72)}
@media (prefers-reduced-motion:reduce){.dy .dyo-film video{display:none}}
@media (max-width:760px){
  .dy .dyo-lead{min-height:min(118vw,560px)}
  .dy .dyo-words{padding:40px 16px 26px}
  .dy .dyo-words h2{font-size:32px}
  .dy .dyo-also{grid-template-columns:1fr;gap:18px;padding:22px 16px 28px}
  .dy .dyo-one{grid-template-columns:80px minmax(0,1fr)}
  .dy .dyo-one b{font-size:19px}
}
/* end of Scotland this week */
/* THE DAILY'S LIST PAGES (Jack, 14 October 2026: "build the whole thing"). scratchpad/design-2026/daily-list-build.py */
.dy.dl{background:var(--paper,#FBF9F4)}
.dy .dl-band{position:relative;max-width:720px;margin:0 auto;padding:clamp(56px,7vw,104px) 24px clamp(48px,5vw,72px);text-align:center}
.dy .dl-band::before{content:"";position:absolute;inset:0 calc(50% - 50vw);background:url(/design-2026/mail/paper.jpg) center top/1982px auto;
  mix-blend-mode:multiply;opacity:.35;pointer-events:none}
.dy .dl-band>*{position:relative}
.dy .dl-logo{display:block;width:min(260px,62vw);height:auto;margin:0 auto clamp(30px,3vw,42px)}
.dy .dl-h{margin:0;font:400 min(clamp(32px,3.4vw,46px), 28px + (clamp(32px,3.4vw,46px) - 28px) * 0.6)/1.08 var(--face);letter-spacing:-.012em;color:var(--ink)}
.dy .dl-h2{margin:0 0 12px;font:400 min(clamp(26px,2.4vw,32px), 28px + (clamp(26px,2.4vw,32px) - 28px) * 0.6)/1.12 var(--face);letter-spacing:-.01em;color:var(--ink)}
.dy .dl-say{margin:16px auto 0;max-width:34em;font:400 18px/1.6 var(--serif);color:rgba(65,64,66,.85);overflow-wrap:anywhere}
.dy .dl-small{margin:26px auto 0;max-width:34em;font:400 15px/1.55 var(--sans);color:rgba(65,64,66,.72)}
.dy .dl-acts{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px 28px;margin:22px 0 0}
.dy .dl-btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 28px;border:0;background:var(--ink);
  color:var(--paper,#FFFEF7);font:600 12.5px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;text-decoration:none;cursor:pointer}
.dy .dl-btn:hover{background:#2B301D}
.dy .dl-btn[disabled]{opacity:.6;cursor:default}
.dy .dl-go,.dy .dl-foot a{font:500 13px/1 var(--sans);letter-spacing:.06em;color:var(--ink);text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:6px;text-decoration-color:rgba(65,64,66,.4)}
.dy .dl-k{display:block;margin:0 0 14px;font:600 13px/1.3 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:#682114}
.dy .dl-today{max-width:var(--dy-wide);margin:0 auto;padding:clamp(48px,5vw,72px) 24px;display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);
  gap:clamp(32px,5vw,72px);align-items:center;background:var(--oat,#F5F1E9);box-shadow:0 0 0 100vmax var(--oat,#F5F1E9);clip-path:inset(0 -100vmax)}
.dy .dl-cover img{display:block;width:100%;height:auto;box-shadow:0 16px 34px -18px rgba(43,48,29,.45)}
.dy .dl-words .dl-say{margin:0 0 6px}
.dy .dl-list{margin:14px 0 26px;padding:0;list-style:none;font:400 17px/1.9 var(--serif);color:var(--ink)}
.dy .dl-list li::before{content:"";display:inline-block;width:6px;height:6px;margin:0 12px 3px 0;border-radius:50%;background:#C08C3D}
.dy .dl-other{max-width:720px;margin:0 auto;padding:clamp(52px,5vw,76px) 24px;text-align:center}
.dy .dl-other .dl-k{transform-origin:center}
.dy .dl-foot{max-width:720px;margin:0 auto;padding:0 24px clamp(56px,6vw,88px);text-align:center;font:400 15px/1.7 var(--sans);color:rgba(65,64,66,.72)}
/* the two buttons in the Daily's foot box once an address is in: they read as the house link */
.dy button.de-go{padding:0;border:0;background:none;cursor:pointer;font:inherit;color:inherit;text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:4px}
@media (max-width:760px){
  .dy .dl-band{padding:44px 16px 40px}
  .dy .dl-say{font-size:17px}
  .dy .dl-today{grid-template-columns:1fr;padding:40px 16px}
  .dy .dl-cover{max-width:280px;margin:0 auto}
  .dy .dl-other{padding:44px 16px}
  .dy .dl-foot{padding:0 16px 48px}
}
/* end of the list pages */
/* COMING UP AS THREE TO COME (Jack, 14 October 2026). scratchpad/design-2026/daily-three-build.py */
.dy .dy-sec.dah{display:block;min-height:0;margin:0;padding:clamp(56px,6vw,90px) 24px;background:#2B301D;color:#fff;text-align:left}
.dy .dah-in{max-width:calc(var(--dy-wide) - 48px);margin:0 auto}
.dy .dah-h{margin:0;font:400 min(clamp(32px,3.4vw,46px), 28px + (clamp(32px,3.4vw,46px) - 28px) * 0.6)/1.08 var(--face);letter-spacing:-.012em;color:#fff}
.dy .dah-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin:32px 0 0}
.dy .dah-card{display:flex;flex-direction:column;align-items:flex-start;padding:30px 28px 28px;background:rgba(255,255,255,.06)}
.dy .dah-n{display:block;font:400 min(clamp(60px,6vw,80px), 28px + (clamp(60px,6vw,80px) - 28px) * 0.6)/.9 var(--face);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:#fff}
.dy .dah-u{display:block;margin:8px 0 0;font:600 12px/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.dy .dah-t{margin:22px 0 4px;font:400 25px/1.15 var(--face);color:#fff}
.dy .dah-d{margin:0 0 12px;font:500 13px/1.3 var(--sans);letter-spacing:.04em;color:#C08C3D}
.dy .dah-said{margin:0;font:400 15.5px/1.6 var(--serif);color:rgba(255,255,255,.8)}
.dy .dah-card .dy-go{margin-top:auto;padding-top:18px;color:#fff}
@media (max-width:760px){
  .dy .dy-sec.dah{padding:44px 16px}
  .dy .dah-row{grid-template-columns:1fr;gap:14px}
  .dy .dah-card{padding:24px 20px 22px}
}
/* end of three to come */
