/* Openfield shared chrome. One place for the palette, the header, the footer
   and the long-form typography every page outside the terminal uses. */
:root{
  --bg:#0E1319; --canvas:#080A0C; --panel:#141A21; --panel2:#1B222B; --panel3:#242C36;
  --line:#242A32; --t1:#E8EBEE; --t2:#B0BAC6; --t3:#8A94A1;
  --buy:#4FB3A5; --sell:#D06A6A; --brand:#2F6F5E; --conf:#6FBF9C; --warn:#D9A441;
  --ease:cubic-bezier(.22,.61,.36,1);
}
[data-theme="paper"]{
  --bg:#F4F6F3; --canvas:#E9EDE8; --panel:#FFFFFF; --panel2:#F7F9F6; --panel3:#EDF1EC;
  --line:#D8DED8; --t1:#16211C; --t2:#4A5A52; --t3:#5F6D65;
  --buy:#1F7A5A; --sell:#B24338; --conf:#2F6F5E;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;background:var(--bg);color:var(--t1);font-family:Manrope,system-ui,sans-serif;
  font-size:15.5px;line-height:1.7;-webkit-font-smoothing:antialiased}
a{color:inherit}
.mono{font-family:"DM Mono",ui-monospace,monospace;letter-spacing:-.01em}
.num{font-variant-numeric:tabular-nums}
.wrap{max-width:1240px;margin:0 auto;padding:0 26px}
/* the prose measure, and how far a table may exceed it */
:root{--measure:920px;--bleed:min(1188px, calc(100vw - 52px))}
/* an endpoint or a token quoted inline has no spaces to break at, and on a
   phone one of them was widening the whole document. Numbers in table cells
   keep their own rule, since breaking those would be worse than scrolling. */
p .mono, li .mono, .d .mono, .dd .mono, .note .mono{overflow-wrap:anywhere}

/* header */
.ofnav{position:sticky;top:0;z-index:60;background:color-mix(in srgb,var(--bg) 86%,transparent);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.ofnav .in{max-width:1240px;margin:0 auto;padding:0 26px;height:62px;display:flex;align-items:center;gap:10px}
.ofnav .brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.ofnav .mark{width:23px;height:23px;color:var(--t1)}
.ofnav .word{font-weight:600;font-size:16.5px;letter-spacing:-.025em}
.ofnav .tag{font-size:10.5px;color:var(--t3);border:1px solid var(--line);border-radius:100px;padding:2px 9px}
.ofnav .links{display:flex;gap:1px;margin-left:14px}
.ofnav .links a{font-size:13px;color:var(--t2);text-decoration:none;padding:8px 11px;border-radius:5px;white-space:nowrap}
.ofnav .links a:hover{color:var(--t1);background:var(--panel)}
.ofnav .links a.on{color:var(--t1);background:var(--panel)}
.ofnav .sp{flex:1}
.ofnav .th{background:transparent;border:1px solid var(--line);color:var(--t2);border-radius:5px;
  padding:6px 11px;font:inherit;font-size:12px;cursor:pointer}
.ofnav .th:hover{color:var(--t1)}
.ofnav .cta{background:var(--conf);color:#06120D;border-radius:5px;padding:8px 15px;font-size:13px;
  font-weight:600;text-decoration:none;white-space:nowrap}
.ofnav.atop{position:fixed;top:0;left:0;right:0;background:transparent;backdrop-filter:none;
  border-bottom-color:transparent;transition:background .4s var(--ease),border-color .4s,backdrop-filter .4s}
.ofnav.atop.solid{background:rgba(7,9,11,.72);backdrop-filter:blur(16px) saturate(1.4);
  border-bottom-color:var(--line)}
.ofnav .burger{display:none;background:transparent;border:1px solid var(--line);color:var(--t2);
  border-radius:5px;padding:6px 10px;font-size:13px;cursor:pointer}
/* Phones: the theme switch moves inside the menu and the action shortens, so
   the bar fits 360px without the CTA hanging off the right edge. */
.ofnav .cta .s{display:none}
.ofnav .links .thm{display:none;background:transparent;border:none;border-top:1px solid var(--line);
  color:var(--t2);font:inherit;font-size:14px;text-align:left;padding:12px 8px 4px;margin-top:6px;cursor:pointer}
@media(max-width:860px){
  .ofnav .in{padding:0 16px;gap:8px}
  .ofnav .links{display:none;position:absolute;top:62px;left:0;right:0;background:var(--bg);
    border-bottom:1px solid var(--line);flex-direction:column;padding:8px 14px 14px;gap:2px}
  .ofnav .links.open{display:flex}
  .ofnav .links a{padding:10px 8px;font-size:14px}
  .ofnav .links .thm{display:block}
  .ofnav .burger{display:block}
  .ofnav .tag,.ofnav .th{display:none}
  .ofnav .cta{padding:8px 12px;font-size:12.5px}
  .ofnav .cta .l{display:none}
  .ofnav .cta .s{display:inline}
}
@media(max-width:345px){
  .ofnav .word{display:none}
}

/* long-form */
.page{padding-top:52px;padding-bottom:110px}
@media(max-width:640px){.wrap{padding:0 18px}.page{padding-top:34px;padding-bottom:76px}}
/* Nothing on this site may make the page scroll sideways. A grid column is
   min-content wide unless told otherwise, so a long word or a wide number in
   any card pushes the whole document out, and on a phone that reads as the
   screen sliding under your thumb. Columns may shrink, and below 380 the
   multi-column blocks collapse to one. */
.grid2, .grid3, .statgrid, .ctxrow, .rec, .offoot .in{grid-template-columns:minmax(0,1fr)}
@media(min-width:381px){
  .grid2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid3{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:380px){
  .wrap{padding:0 14px}
  .tw{margin-inline:0}
  h1.big{font-size:clamp(26px,8vw,34px)}
}
/* The reading column is centred, and wide things are allowed out of it. It used
   to sit at the left edge of a 1240 wrap, which on a wide screen left a column
   of text hugging one side and half the window empty. Tables and card grids
   break out symmetrically, so their centre line is the column's centre line
   rather than a second, competing left edge. */
.page main{max-width:var(--measure);margin-inline:auto}
.page main > .tw,
.page main > .grid2,
.page main > .grid3,
.page main > .wide{
  width:min(var(--bleed), 100%);
  margin-inline:calc((100% - min(var(--bleed), 100%)) / 2);
}
.page main.data{--measure:1240px}
h1.big{font-family:Fraunces,Georgia,serif;font-weight:300;font-size:clamp(32px,5vw,50px);line-height:1.06;
  letter-spacing:-.03em;margin:0 0 16px}
h1.big em{font-style:italic;color:var(--conf)}
.lede{font-size:17.5px;color:var(--t2);line-height:1.65;margin:0 0 40px;max-width:820px}
h2{font-family:Fraunces,Georgia,serif;font-weight:300;font-size:29px;letter-spacing:-.022em;line-height:1.16;
  margin:58px 0 14px}
h3{font-size:16px;font-weight:600;margin:32px 0 9px;letter-spacing:-.01em}
p{margin:0 0 16px;color:var(--t2)}
p strong,li strong{color:var(--t1);font-weight:600}
ul,ol{margin:0 0 18px;padding-left:20px;color:var(--t2)}
li{margin-bottom:7px}
.kicker{font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--conf);font-weight:700;margin-bottom:12px}
.note{background:var(--panel);border:1px solid var(--line);border-left:2px solid var(--conf);
  border-radius:0 8px 8px 0;padding:16px 20px;margin:24px 0;font-size:14.5px;color:var(--t2)}
.note b{color:var(--t1)}
.note.warn{border-left-color:var(--warn)}
.note.bad{border-left-color:var(--sell)}
.fx{font-family:"DM Mono",monospace;background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:16px 18px;margin:22px 0;font-size:13px;line-height:1.85;color:var(--t1);overflow-x:auto}
.fx .c{color:var(--t3)}
table{width:100%;border-collapse:collapse;font-size:14px;margin:22px 0}
th{text-align:left;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--t3);font-weight:700;
  border-bottom:1.5px solid var(--t1);padding:0 16px 9px 0}
td{padding:12px 16px 12px 0;border-bottom:1px solid var(--line);color:var(--t2);vertical-align:top}
td:first-child{color:var(--t1);font-weight:600}
.tw{overflow-x:auto}
@media(max-width:640px){.tw table{min-width:520px}}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:22px 0}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:22px 0}
@media(max-width:760px){.grid2,.grid3{grid-template-columns:1fr}}
.card{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:18px 20px}
.card .t{font-size:14px;font-weight:600;margin-bottom:6px}
.card .d{font-size:13.5px;color:var(--t2);line-height:1.6}

/* footer */
.offoot{border-top:1px solid var(--line);background:var(--bg)}
.offoot .mark{width:22px;height:22px}
.offoot .in{max-width:1240px;margin:0 auto;padding:38px 26px 60px;display:grid;
  grid-template-columns:1.6fr 1fr 1fr 1fr 1fr;gap:28px}
@media(max-width:820px){.offoot .in{grid-template-columns:1fr 1fr;gap:24px}}
@media(max-width:380px){.offoot .in{grid-template-columns:minmax(0,1fr);gap:20px}}
.offoot .col h4{font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--t3);
  font-weight:700;margin:0 0 12px}
.offoot .col a{display:block;font-size:13.5px;color:var(--t2);text-decoration:none;padding:3px 0}
.offoot .col a:hover{color:var(--t1)}
.offoot .about{font-size:13px;color:var(--t3);line-height:1.6;max-width:280px;margin:10px 0 0}
.offoot .bar{border-top:1px solid var(--line);padding:16px 26px 30px;max-width:1240px;margin:0 auto;
  display:flex;gap:20px;flex-wrap:wrap;font-size:12px;color:var(--t3)}
.offoot .bar .sp{flex:1}

/* Phones: the header's three controls are the first thing a thumb meets, and
   all three were under 40px tall. Grown by padding so nothing else shifts. */
@media(max-width:760px){
  .ofnav .brand{min-height:44px;padding:2px 0}
  .ofnav .burger{min-height:44px;min-width:44px;padding:8px 12px}
  .ofnav .cta{min-height:44px;display:inline-flex;align-items:center;padding:8px 16px}
  .ofnav .navlnk{min-height:44px;display:inline-flex;align-items:center}
}

/* Paper: the semantic hues were chosen against the dark ground and reused
   unchanged on a pale one, where the same green lands at 2.1:1. Same meanings,
   darkened until each clears 4.5 on the surfaces it is actually painted on. */
[data-theme="paper"]{
  --conf:#1A6B51; --ok:#1A6B51; --buy:#12705A; --warn:#8A5A00; --sell:#B03535;
  --green:#1A6B51; --green-hi:#12705A;
}

/* Paper: the action button keeps a dark ink on a mid green, which reads at
   3:1. White on the darker paper green reads at 6:1 and looks the same weight. */
[data-theme="paper"] .ofnav .cta{color:#FFFFFF}

/* keyboard and motion: the same page for everyone */
:focus-visible{outline:2px solid var(--conf);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:12px;top:-60px;z-index:1000;background:var(--conf);color:#04140D;font-weight:700;padding:10px 14px;border-radius:8px;text-decoration:none;transition:top .15s}
.skip:focus{top:12px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
