/* ============================================================ 0  fonts */
@font-face{font-family:"Vollkorn";font-style:normal;font-weight:400 900;font-display:swap;
 src:url(../fonts/vollkorn-var-latin.woff2) format("woff2");
 unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2212;}
@font-face{font-family:"Vollkorn";font-style:normal;font-weight:400 900;font-display:swap;
 src:url(../fonts/vollkorn-var-latin-ext.woff2) format("woff2");
 unicode-range:U+0100-02BA,U+1E00-1E9F,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

@font-face{font-family:"Schibsted Grotesk";font-style:normal;font-weight:400 900;font-display:swap;
 src:url(../fonts/schibsted-var-latin.woff2) format("woff2");
 unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2212;}
@font-face{font-family:"Schibsted Grotesk";font-style:normal;font-weight:400 900;font-display:swap;
 src:url(../fonts/schibsted-var-latin-ext.woff2) format("woff2");
 unicode-range:U+0100-02BA,U+1E00-1E9F,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

@font-face{font-family:"Sometype Mono";font-style:normal;font-weight:400 700;font-display:swap;
 src:url(../fonts/sometype-var-latin.woff2) format("woff2");
 unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2122,U+2212;}
@font-face{font-family:"Sometype Mono";font-style:normal;font-weight:400 700;font-display:swap;
 src:url(../fonts/sometype-var-latin-ext.woff2) format("woff2");
 unicode-range:U+0100-02BA,U+1E00-1E9F,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ============================================================ 1  tokens */
:root{
  --paper:#FAF8F3;
  --ink:#191712;
  --accent:#5E2A20;
  --support:#736D62;

  --hair:rgba(25,23,18,.13);
  --hair-2:rgba(25,23,18,.26);
  --hair-3:rgba(25,23,18,.55);

  --serif:"Vollkorn",Georgia,"Times New Roman",serif;
  --sans:"Schibsted Grotesk","Helvetica Neue",Arial,sans-serif;
  --mono:"Sometype Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  /* Vollkorn ships old-style figures by default, so every numeral set in the
     display face has to ask for lining and tabular or the register's own
     headline numbers come out with descending 3s, 4s, 7s and 9s. */
  --lining:"lnum" 1,"tnum" 1;

  --maxw:1160px;
  --pad:56px;
  --measure:64ch;
}

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);
  font-size:18.5px;line-height:1.62;font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg{max-width:100%;}
h1,h2,h3,h4{margin:0;}
p{margin:0 0 20px;max-width:var(--measure);}
ul,ol{margin:0 0 20px;padding-left:22px;max-width:var(--measure);}
li{margin-bottom:10px;}
strong,b{font-weight:600;}

::selection{background:var(--accent);color:var(--paper);}
a{color:var(--ink);text-decoration:none;
  border-bottom:1.5px solid var(--accent);
  padding-bottom:1px;
  transition:color 120ms linear,border-color 120ms linear;}
a:hover,a:focus{color:var(--accent);border-bottom-color:var(--ink);}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px;}

.mono,.num{font-family:var(--mono);
  font-variant-numeric:tabular-nums lining-nums slashed-zero;
  font-feature-settings:"tnum" 1,"lnum" 1;}
.num{text-align:right;}
.dsp{font-family:var(--serif);font-weight:700;line-height:1.04;letter-spacing:-.012em;}
/* Everything set in the display face, in one place, so a numeral can never slip
   out as old-style anywhere on the site. */
.dsp,.mh-word,h1.page,.sec-t,h3,.facts .val,.foot h2,.quote{
  font-variant-numeric:lining-nums tabular-nums;font-feature-settings:var(--lining);}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

/* ============================================================ 2  masthead */
/* The strapline gets its own full-width line rather than sharing the flex row
   with the status strip. Sharing the row squeezed it to about 430px at 1440,
   which broke a sixty-three character sentence across two lines mid-phrase.
   Rendered at 1440 and 390 and confirmed. */
.masthead{max-width:var(--maxw);margin:0 auto;padding:38px var(--pad) 0;}
.mh-top{display:flex;align-items:flex-end;justify-content:space-between;
  gap:14px 40px;flex-wrap:wrap;}
.mh-mark{display:inline-block;border:0;padding:0;color:var(--ink);}
.mh-mark:hover{color:var(--ink);}
.mh-word{font-family:var(--serif);font-weight:800;font-size:30px;line-height:1;
  letter-spacing:-.016em;display:block;}
.mh-rule{display:block;height:3px;width:76px;background:var(--accent);margin:11px 0 0;}
.mh-say{font-size:16px;line-height:1.45;color:var(--support);margin:14px 0 0;max-width:70ch;}
.mh-status{font-family:var(--mono);font-size:12px;letter-spacing:.05em;color:var(--support);
  text-transform:uppercase;text-align:right;padding-bottom:3px;
  font-variant-numeric:tabular-nums lining-nums slashed-zero;}
.mh-status b{font-weight:400;color:var(--support);}

.navbar{max-width:var(--maxw);margin:26px auto 0;padding:0 var(--pad);}
.navwrap{border-top:1px solid var(--hair-2);border-bottom:1px solid var(--hair-2);
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.navwrap::-webkit-scrollbar{display:none;}
.nav{display:flex;list-style:none;margin:0;padding:0;white-space:nowrap;max-width:none;}
.nav li{margin:0;}
.nav a{display:inline-flex;align-items:center;gap:7px;padding:13px 26px 12px 0;
  font-family:var(--mono);font-size:12.5px;text-transform:uppercase;letter-spacing:.07em;
  color:var(--support);border:0;border-bottom:2px solid transparent;margin-bottom:-1px;}
.nav a:hover,.nav a:focus{color:var(--ink);}
.nav .n{display:none;}
.nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent);}

/* ============================================================ 3  layout */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad) 40px;}
.col{min-width:0;}

h1.page{font-family:var(--serif);font-weight:700;
  font-size:clamp(42px,6.4vw,78px);line-height:1.0;letter-spacing:-.02em;
  margin:76px 0 0;max-width:19ch;}
.h1rule{height:3px;width:84px;background:var(--accent);margin:30px 0 34px;
  transform:scaleX(0);transform-origin:left;}
.h1rule.drawn{transform:scaleX(1);transition:transform 460ms cubic-bezier(.2,.7,.2,1);}

.lede{font-size:23px;line-height:1.5;max-width:60ch;font-weight:400;margin:0 0 8px;}
.lede + .lede{margin-top:20px;}
.board-note{font-family:var(--mono);font-size:12px;text-transform:uppercase;
  letter-spacing:.07em;color:var(--support);margin:0 0 14px;}

/* ============================================================ 4  sections */
.sec{display:grid;grid-template-columns:64px minmax(0,1fr);gap:0;
  border-top:1px solid var(--hair-2);padding-top:26px;margin-top:74px;}
.sec-n{font-family:var(--mono);font-size:13px;color:var(--accent);font-weight:500;
  letter-spacing:.04em;padding-top:9px;}
.sec-b{min-width:0;}
.sec-t{font-family:var(--serif);font-weight:700;font-size:clamp(28px,3.4vw,42px);
  line-height:1.08;letter-spacing:-.015em;max-width:22ch;margin:0;}
.rule2{height:1px;background:var(--hair);margin:26px 0 30px;
  transform:scaleX(0);transform-origin:left;}
.rule2.drawn{transform:scaleX(1);transition:transform 460ms cubic-bezier(.2,.7,.2,1);}

.sheet{margin:0;}
.sheet.frame{margin:0;}
h3{font-family:var(--serif);font-weight:700;font-size:26px;line-height:1.2;
  letter-spacing:-.01em;margin:38px 0 14px;max-width:26ch;}
.sec-b > .sheet > h3:first-child{margin-top:0;}
h4{font-family:var(--sans);font-weight:600;font-size:17px;line-height:1.35;
  margin:30px 0 10px;}

.src{font-family:var(--mono);font-size:13px;line-height:1.62;color:var(--support);
  max-width:78ch;margin:18px 0 0;}
.src b{font-weight:500;color:var(--support);}
.src a{border-bottom-width:1px;}
.quote{font-family:var(--serif);font-size:21px;line-height:1.42;font-style:italic;
  border-left:2px solid var(--accent);padding:2px 0 2px 22px;margin:24px 0;max-width:56ch;}
.nodata{font-family:var(--mono);font-size:.86em;color:var(--support);}

/* ============================================================ 5  key figures */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(212px,1fr));
  gap:0 44px;margin:44px 0 8px;border-top:1px solid var(--hair-2);}
.facts > div{padding:22px 0 26px;border-bottom:1px solid var(--hair);}
/* Reserve two lines for every key-figure label. A one-line label next to a
   two-line one lifted its number 16px above the others, so a row of four
   figures did not sit on a common baseline. Rendered at 1440 and measured. */
.facts .lab{display:block;font-family:var(--mono);font-size:11.5px;text-transform:uppercase;
  letter-spacing:.07em;color:var(--support);margin-bottom:14px;line-height:1.45;
  min-height:2.9em;}
/* Sized so the longest value the register can hold, an eleven glyph Indian
   grouped lakh figure or a ten glyph ISO date, still sits inside its column at
   1440px without breaking across two lines or spilling past the content edge.
   Rendered and measured, not assumed. */
.facts .val{display:block;font-family:var(--serif);font-weight:700;
  font-size:clamp(32px,2.8vw,44px);
  line-height:1.06;letter-spacing:-.02em;white-space:nowrap;
  font-variant-numeric:tabular-nums lining-nums;}
.facts .hl{color:var(--accent);}
.facts .sub{display:block;font-family:var(--mono);font-size:12px;line-height:1.55;
  color:var(--support);margin-top:14px;}

/* ============================================================ 6  schedules */
.sched-ref{font-family:var(--mono);font-size:11.5px;text-transform:uppercase;
  letter-spacing:.07em;color:var(--support);margin:0 0 6px;}
.scroller{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 6px;}
table{border-collapse:collapse;width:100%;min-width:640px;font-size:16px;}
.tcap{font-size:17px;line-height:1.55;color:var(--support);margin:0 0 22px;max-width:74ch;}
thead th{font-family:var(--mono);font-size:11.5px;font-weight:500;text-transform:uppercase;
  letter-spacing:.07em;color:var(--support);text-align:left;vertical-align:bottom;
  padding:0 18px 11px 0;border-bottom:1.5px solid var(--ink);white-space:nowrap;}
thead th .u{display:block;font-size:10.5px;letter-spacing:.05em;color:var(--support);
  text-transform:none;font-weight:400;margin-top:3px;}
thead th.sortable{cursor:pointer;}
thead th.sortable:hover{color:var(--ink);}
thead th[aria-sort]{color:var(--accent);}
tbody td{padding:13px 18px 13px 0;border-bottom:1px solid var(--hair);vertical-align:top;
  line-height:1.45;}
tbody td.num{font-family:var(--mono);font-size:15px;text-align:right;
  font-variant-numeric:tabular-nums lining-nums slashed-zero;white-space:nowrap;}
tbody td.gut{font-family:var(--mono);font-size:12px;color:var(--support);width:42px;
  padding-right:14px;}
tbody td a{border-bottom-color:var(--hair-2);}
tbody td a:hover,tbody td a:focus{border-bottom-color:var(--accent);}
tbody td.w{min-width:200px;}
tbody td.ww{min-width:270px;}
tbody td.neg{color:var(--accent);}
tbody td.st-cell{white-space:nowrap;}
tr.secrow th{font-family:var(--mono);font-size:11.5px;font-weight:500;text-transform:uppercase;
  letter-spacing:.07em;color:var(--accent);text-align:left;
  padding:34px 0 9px;border-bottom:1px solid var(--hair-2);}
tr.secrow:first-child th{padding-top:6px;}
table.tot tr.total td{border-top:1.5px solid var(--ink);border-bottom:0;font-weight:600;
  padding-top:14px;}
.srcline{font-family:var(--mono);font-size:12.5px;line-height:1.62;color:var(--support);
  display:block;max-width:86ch;margin:16px 0 0;}
.srcline b{font-weight:500;}
.srcline a{border-bottom-width:1px;}
.dens{display:none;}

.st{font-family:var(--mono);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--support);white-space:nowrap;}
.st-progress{color:var(--ink);}
.st-slipped{color:var(--accent);}
.st-open{color:var(--support);}
.st-unknown{color:var(--support);}
.tag{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--support);white-space:nowrap;}
.tag-reported{color:var(--accent);}

.legend{list-style:none;padding:0;margin:22px 0 0;display:flex;flex-wrap:wrap;gap:10px 30px;
  font-family:var(--mono);font-size:12px;color:var(--support);max-width:none;}
.legend li{margin:0;display:flex;align-items:center;gap:9px;}
.legend i{display:inline-block;width:15px;height:9px;border:1px solid var(--hair-3);}

/* A drawn sheet is not a photograph, so it must never be scaled to fit. The
   global svg{max-width:100%} shrank a 940px programme chart into a 346px phone
   column, which took 11.5px label type down to about 4px and made the whole
   figure unreadable. Rendered at 390px and confirmed. Charts now hold their
   drawn size and the reader pans, exactly as the tables already do. */
.chart{margin:8px 0 0;overflow-x:auto;-webkit-overflow-scrolling:touch;}
.chart svg{max-width:none;display:block;}
.ct{font-family:var(--mono);font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;
  color:var(--support);margin:0 0 12px;}
.cs{font-family:var(--mono);font-size:12px;color:var(--support);margin:10px 0 0;}

/* ============================================================ 7  blocks */
.dl{margin:24px 0 0;}
.dl > div{display:grid;grid-template-columns:230px minmax(0,1fr);gap:0 28px;
  padding:14px 0;border-bottom:1px solid var(--hair);}
.dl .lab{font-family:var(--mono);font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;
  color:var(--support);padding-top:3px;}
.dl .val{font-size:17px;}

.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:0 48px;
  margin:34px 0 0;border-top:1px solid var(--hair-2);}
.card{padding:24px 0 28px;border-bottom:1px solid var(--hair);}
.card h3{margin:0 0 10px;font-size:22px;}
.card p{margin:0 0 12px;font-size:16.5px;}
.card .lab{font-family:var(--mono);font-size:11.5px;text-transform:uppercase;
  letter-spacing:.07em;color:var(--support);display:block;margin-bottom:12px;}

.gaps{margin:8px 0 0;padding:0;list-style:none;max-width:82ch;}
.gaps li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:0 18px;
  padding:18px 0;border-bottom:1px solid var(--hair);margin:0;}
.gaps .gn{font-family:var(--mono);font-size:12.5px;color:var(--accent);padding-top:3px;}

.tb{margin:78px 0 0;border-top:1.5px solid var(--ink);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0 40px;}
.tb > div{padding:20px 0 22px;border-bottom:1px solid var(--hair);}
.tb > div.wide{grid-column:1 / -1;}
.tb .lab{display:block;font-family:var(--mono);font-size:11px;text-transform:uppercase;
  letter-spacing:.08em;color:var(--support);margin-bottom:9px;}
.tb .val{display:block;font-size:16.5px;line-height:1.5;}

.minitb{font-family:var(--mono);font-size:12px;color:var(--support);
  border-top:1px solid var(--hair);margin:34px 0 0;padding:14px 0 0;
  display:flex;flex-wrap:wrap;gap:6px 30px;}
.minitb b{font-weight:500;text-transform:uppercase;letter-spacing:.07em;}

/* ============================================================ 8  footer */
.foot{border-top:1px solid var(--hair-2);margin-top:96px;}
.foot-in{max-width:var(--maxw);margin:0 auto;padding:54px var(--pad) 64px;}
.foot h2{font-family:var(--serif);font-weight:900;font-size:26px;letter-spacing:-.018em;
  line-height:1;}
.frule{height:3px;width:84px;background:var(--accent);margin:12px 0 44px;}
.foot-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:38px 44px;}
.foot h3{font-family:var(--mono);font-size:11.5px;font-weight:500;text-transform:uppercase;
  letter-spacing:.08em;color:var(--support);margin:0 0 16px;}
.foot ul{list-style:none;padding:0;margin:0;}
.foot li{margin-bottom:11px;}
.foot p{font-size:16px;line-height:1.6;margin:0;}
.foot-meta{font-family:var(--mono);font-size:11.5px;line-height:1.8;color:var(--support);
  border-top:1px solid var(--hair);margin-top:48px;padding-top:22px;}

/* ============================================================ 9  mobile */
@media (max-width:900px){
  :root{--pad:34px;}
  .sec{grid-template-columns:minmax(0,1fr);}
  .sec-n{padding:0 0 10px;}
  .dl > div{grid-template-columns:minmax(0,1fr);gap:7px;}
}
@media (max-width:620px){
  :root{--pad:22px;}
  body{font-size:17.5px;line-height:1.6;}
  .masthead{padding-top:26px;}
  .mh-top{align-items:flex-start;flex-direction:column;gap:14px;}
  .mh-word{font-size:26px;}
  .mh-say{font-size:15.5px;margin-top:12px;max-width:none;}
  .mh-status{text-align:left;font-size:11.5px;line-height:1.7;}
  .navbar{margin-top:20px;}
  .nav a{padding:12px 20px 11px 0;font-size:12px;}
  h1.page{margin-top:46px;font-size:clamp(34px,9.4vw,46px);line-height:1.04;max-width:none;}
  .h1rule{margin:22px 0 26px;}
  .lede{font-size:20px;line-height:1.5;}
  .sec{margin-top:52px;padding-top:22px;}
  .sec-t{font-size:26px;max-width:none;}
  h3{font-size:22px;margin-top:30px;}
  .facts{gap:0;margin-top:34px;}
  /* One figure per row on a phone, so there is no shared baseline to hold and
     the reserved second label line would just be dead space. */
  .facts .lab{min-height:0;}
  .facts .val{font-size:40px;}
  table{font-size:15.5px;min-width:560px;}
  tbody td{padding:11px 15px 11px 0;}
  .scroller,.chart{margin-right:calc(var(--pad) * -1);padding-right:var(--pad);}
  .tb{margin-top:56px;}
  .foot{margin-top:64px;}
  .foot-in{padding:40px var(--pad) 48px;}
}

/* ============================================================ 10  print */
@media print{
  body{background:#FFFFFF;font-size:10.5pt;}
  .navbar,.dens{display:none;}
  .sec{page-break-inside:avoid;}
  a{border-bottom:0;}
  .foot{margin-top:24pt;}
}
@media (prefers-reduced-motion:reduce){
  .h1rule,.rule2,.bar-fill{transform:none !important;transition:none !important;}
}
