/* VEYLTAK — Midnight Heist.
   A dark planning desk, three brass vault façades, a security terminal for risk.
   Gold belongs to Loot and nothing else. Mint belongs to what you are choosing.
   Amber-to-red belongs to Heat. Colour is never the only signal: every state
   also carries an icon and a word. One deliberate break: the SEALED stamp. */

/* Fonts, self-hosted: loading the game makes no third-party request. The Arabic faces download only
   when a page shows Arabic (unicode-range). Every family is SIL Open Font License 1.1; see
   fonts/LICENSES.md. The faces sit here rather than in stylesheets of their own, so the page makes
   one render-blocking request instead of three. */
@font-face{font-family:'Golos Text';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/golos-text-latin-83cb19f9.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Golos Text';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/golos-text-latin-83cb19f9.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/jetbrains-mono-latin-0a7197f9.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/jetbrains-mono-latin-0a7197f9.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Oranienbaum';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/oranienbaum-latin-e67fc15d.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Oswald';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/oswald-latin-78c7a4dd.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Oswald';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/oswald-latin-78c7a4dd.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"El Messiri";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/el-messiri-arabic-400.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4, U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1;}
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/ibm-plex-sans-arabic-arabic-400.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4, U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1;}
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/ibm-plex-sans-arabic-arabic-600.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4, U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1;}
@font-face{font-family:"Noto Kufi Arabic";font-style:normal;font-weight:500 700;font-display:swap;src:url("fonts/noto-kufi-arabic-arabic-500-700.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4, U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1;}

:root{
  --ink-0:#090d13;--ink-1:#10151d;--ink-2:#1b2430;--ink-3:#253140;--line:#2f3c4b;--line-2:#3d4c5d;
  --text:#f2efe7;--text-2:#bcc5cf;--text-3:#8793a1;
  --brass:#dab56c;--brass-2:#a8864a;--brass-glow:rgba(218,181,108,.38);
  --mint:#8fd2ce;--mint-2:#5fa9a5;--mint-glow:rgba(143,210,206,.3);
  --heat:#e59b55;--danger:#e4574b;--danger-2:#f0a097;--paper:#e9e1cf;
  /* Each role names its Arabic companion second; its @font-face covers only Arabic,
     so Latin still comes from the first face. */
  --f-display:'Oranienbaum','El Messiri','Prata',Georgia,serif;
  --f-num:'Oswald','Noto Kufi Arabic','Arial Narrow','Roboto Condensed',sans-serif;
  --f-mono:'JetBrains Mono','Noto Kufi Arabic',ui-monospace,Consolas,monospace;
  --f-body:'Golos Text','IBM Plex Sans Arabic',system-ui,-apple-system,'Segoe UI',sans-serif;
  --r:0.1875rem;--gap:clamp(0.375rem,1.3vw,0.875rem);--tap:2.75rem;
  --ease-out:cubic-bezier(.2,.8,.2,1);--ease-slam:cubic-bezier(.3,1.55,.5,1);
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
/* A desktop grows with both available dimensions, up to twice the base size.
   Width alone cannot enlarge an ultrawide window. rem dimensions keep labels,
   cards and dialogs in proportion and respect the browser's default text size.
   Phone/laptop layouts retain the 1rem baseline; no transform or bitmap scaling. */
html{font-size:clamp(100%,min(.833333vw,1.481481dvh),200%)}
html,body{height:100%}
body{margin:0;background:var(--ink-0);color:var(--text);font:400 1rem/1.45 var(--f-body);
  -webkit-font-smoothing:antialiased;overflow:hidden;overscroll-behavior:none}
body::before{content:"";position:fixed;inset:0;pointer-events:none;
  background:radial-gradient(110% 65% at 50% 40%,#172230 0%,var(--ink-1) 48%,var(--ink-0) 100%)}
.grain{position:fixed;inset:0;pointer-events:none;z-index:60;opacity:.08;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
#app{position:relative;height:100%;height:100dvh}
.sr-only{position:absolute;width:0.0625rem;height:0.0625rem;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--mint);outline-offset:3px}
.icon{width:1em;height:1em;display:inline-block;vertical-align:-.12em;flex:none}
.i-line{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.i-fill{fill:currentColor}
.label{font:500 0.6875rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}

/* ------------------------------------------------------------------ buttons */
.btn{min-height:var(--tap);padding:0 1.375rem;border-radius:var(--r);display:inline-flex;align-items:center;justify-content:center;gap:0.625rem;
  font:600 0.9375rem/1 var(--f-body);letter-spacing:.02em;transition:transform .15s var(--ease-out),background .2s,box-shadow .2s,color .2s}
.btn:active,.icon-btn:active,.boost-btn:active,.level:active{transform:scale(.96)}
.btn-primary{background:linear-gradient(180deg,#ebca85,var(--brass) 55%,#b58e4c);color:#1a1307;
  box-shadow:0 0 0 1px #f3d99b inset,0 12px 32px -14px var(--brass-glow)}
.btn-primary:hover{box-shadow:0 0 0 1px #f8e5b8 inset,0 14px 44px -12px rgba(218,181,108,.6)}
.btn-primary[disabled]{background:var(--ink-3);color:var(--text-3);box-shadow:0 0 0 1px var(--line) inset;cursor:default}
.btn-ghost{color:var(--text-2);box-shadow:0 0 0 1px var(--line-2) inset}
.btn-ghost:hover{color:var(--text);box-shadow:0 0 0 1px var(--mint-2) inset}
.btn-ghost[disabled]{opacity:.4;cursor:default}
.icon-btn{width:var(--tap);height:var(--tap);display:grid;place-items:center;color:var(--text-2);border-radius:var(--r);font-size:1.25rem;transition:transform .15s var(--ease-out),background .2s,color .2s}
.icon-btn:hover{color:var(--text);background:rgba(255,255,255,.05)}
.lang-btn{font:600 0.75rem/1 var(--f-mono);letter-spacing:.1em}
.site-link{width:auto;grid-auto-flow:column;gap:0.5rem;padding-inline:0.625rem;font:600 0.75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
.site-link .icon{font-size:1.25rem}
/* The store leads the title's tools: bordered and named, so it reads as a place to go. */
.store-entry{width:auto;grid-auto-flow:column;gap:0.5rem;padding-inline:0.75rem;margin-inline-end:0.5rem;color:var(--text);font:600 0.75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;box-shadow:0 0 0 1px var(--line-2) inset}
.store-entry .icon{font-size:1.125rem}
.store-entry:hover{box-shadow:0 0 0 1px var(--mint-2) inset}

/* -------------------------------------------------------------------- art */
.vault-art,.crest{display:block;width:100%;height:auto}
.v-mass{fill:#131b25;stroke:var(--brass-2);stroke-width:1.5}
.v-mass-2{fill:#0f161e;stroke:var(--line-2);stroke-width:1.2}
.v-line{fill:none;stroke:var(--brass-2);stroke-width:1.5}
.v-fine{fill:none;stroke:var(--brass-2);stroke-width:1;opacity:.7}
.v-crest{fill:none;stroke:var(--brass);stroke-width:2}
.v-panel{fill:#0e141c;stroke:var(--line-2);stroke-width:1}
.v-door{fill:#0b1118;stroke:var(--brass);stroke-width:2}
.v-ring{fill:none;stroke:var(--brass-2);stroke-width:3;stroke-dasharray:2 6}
.v-bolt{fill:var(--brass-2)}
.v-arc{fill:none;stroke:var(--mint-2);stroke-width:1.5;stroke-linecap:round}
.v-beacon{fill:var(--danger)}
.crew-art{display:block;width:100%;height:100%}
.c-coat{fill:#233142}.c-shade{fill:#162231}.c-ink{fill:#0b1118}.c-skin{fill:#cbbba2}
.c-rim{fill:none;stroke:var(--mint);stroke-width:2;stroke-linecap:round}
.c-mirror{fill:none;stroke:var(--mint);stroke-width:1.5}
.c-prop{fill:var(--brass)}.c-prop-line{fill:none;stroke:var(--brass);stroke-width:2;stroke-linecap:round}
.c-glint{fill:none;stroke:#fff6dc;stroke-width:2;stroke-linecap:round}
.c-paper{fill:var(--paper)}.c-fold{fill:#b6ab95}.c-fine{fill:none;stroke:var(--text-3);stroke-width:1}
.c-hot{fill:var(--danger)}.c-visor{fill:var(--mint)}.c-arc{fill:none;stroke:var(--mint);stroke-width:1.6;stroke-linecap:round}
.c-roof{fill:#0d141c}
.coin{display:block;width:1.75rem;height:auto}
.coin-edge{fill:#8a6a32}.coin-face{fill:var(--brass)}.coin-inner{fill:none;stroke:#f6dea4;stroke-width:1.2;opacity:.8}

/* ---------------------------------------------------------------- screens */
.screen{position:absolute;inset:0;display:none}
.screen.is-active{display:grid}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
/* The wordmark lifts without fading: text first painted at opacity 0 never counts as the page's largest paint. */
@keyframes lift{from{transform:translateY(14px)}to{transform:none}}

.title-screen{place-items:center;padding:1.5rem;overflow:auto}
.title-stack{display:grid;justify-items:center;gap:1rem;text-align:center;max-width:35rem}
/* The rest of the title needs about 600px of height; on a shorter window the art gives way first, down to 120px, so the buttons stay in view. */
.title-art{width:min(58vw,18.125rem);width:min(58vw,18.125rem,max(7.5rem,calc(100dvh - 37.5rem)));filter:drop-shadow(0 34px 60px rgba(0,0,0,.65));animation:rise 1s var(--ease-out) both}
.title-art .door{transform-box:fill-box;transform-origin:center;animation:idle-door 16s ease-in-out infinite}
@keyframes idle-door{0%,100%{transform:rotate(0)}50%{transform:rotate(22deg)}}
.wordmark{margin:0;font:400 clamp(3.25rem,12vw,6.5rem)/.9 var(--f-display);letter-spacing:.14em;padding-left:.14em;
  text-shadow:0 0 50px rgba(218,181,108,.2);animation:lift 1s .1s var(--ease-out) both}
.tagline{margin:0;color:var(--text-2);font-size:clamp(0.9375rem,2.3vw,1.125rem);max-width:34ch;text-wrap:balance;animation:rise 1s .2s var(--ease-out) both}
.title-actions{display:grid;gap:0.625rem;width:min(100%,20.625rem);margin-top:0.5rem;animation:rise 1s .3s var(--ease-out) both}
.title-actions .btn{width:100%}
.title-tools{display:flex;gap:0.25rem;animation:rise 1s .4s var(--ease-out) both}
.title-screen > .site-link{position:absolute;inset-block-start:max(0.75rem,env(safe-area-inset-top));inset-inline-start:0.75rem;z-index:2;animation:rise 1s .4s var(--ease-out) both}
.title-note{margin:0;max-width:34ch;color:var(--text-2);font-size:0.875rem;text-wrap:balance}
/* Tonight's rival. A choice is mint, never gold: gold belongs to Loot and the one primary action. */
.rival-pick{display:grid;justify-items:center;gap:0.625rem;width:min(100%,23.75rem);margin-top:0.375rem;animation:rise 1s .25s var(--ease-out) both}
.rival-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:0.375rem;width:100%}
.rival-id{display:grid;gap:0.3125rem;min-height:4rem;align-content:center}
.rival-name{font:400 clamp(1.375rem,4.2vw,1.75rem)/1.05 var(--f-display);letter-spacing:.03em;text-wrap:balance}
.rival-line{color:var(--text-2);font-size:0.875rem;line-height:1.35;text-wrap:balance}
.icon-flip svg{transform:scaleX(-1)}
/* Arrows point the way the page reads. */
:root[dir="rtl"] .icon-dir svg{transform:scaleX(-1)}
:root[dir="rtl"] .icon-flip svg{transform:none}
.levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;border-radius:var(--r);box-shadow:0 0 0 1px var(--line) inset}
.level{min-height:2.5rem;padding:0 0.375rem;border-radius:var(--r);font:500 0.6875rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);transition:transform .15s var(--ease-out),color .2s,box-shadow .2s,background .2s}
.level:hover{color:var(--text)}
.level:is([aria-pressed="true"],[aria-selected="true"]){color:var(--mint);background:rgba(143,210,206,.07);box-shadow:0 0 0 1px var(--mint-2) inset}
.level-hint{margin:0;min-height:1.4em;color:var(--text-3);font-size:0.8125rem}

/* ------------------------------------------------------------------ table */
/* On a short screen the table scrolls instead of crushing the vaults. */
.table-screen{grid-template-rows:auto auto minmax(8.25rem,1fr) auto auto;width:100%;max-width:73.75rem;margin:0 auto;gap:var(--gap);
  overflow-y:auto;overscroll-behavior:contain;
  padding:max(0.375rem,env(safe-area-inset-top)) clamp(0.5rem,2.4vw,1.75rem) max(0.625rem,env(safe-area-inset-bottom))}
.hud{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}
.hud-nav{display:flex;align-items:center;gap:0.25rem}
.hud-tools{display:flex;justify-content:flex-end;gap:0.125rem}
.night{display:grid;justify-items:center;gap:0.4375rem}
.night-label{margin:0;font:500 0.75rem/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-2)}
.night-label.final{color:var(--heat)}
.pips{display:flex;gap:0.375rem}
.pip{width:1.25rem;height:0.25rem;background:var(--line);border-radius:1px}
.pip.done{background:var(--brass-2)}.pip.now{background:var(--mint);box-shadow:0 0 10px var(--mint-glow)}

.strip{display:flex;align-items:center;justify-content:space-between;gap:0.75rem;min-height:3.125rem}
.who{display:grid;gap:0.375rem}
.who-name{font:500 0.75rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-2)}
.who-heat-row{display:flex;align-items:center;gap:0.5rem}
.who-heat{font:700 0.8125rem/1 var(--f-num);font-variant-numeric:tabular-nums;color:var(--text-2)}.who-heat.hot{color:var(--danger-2)}
.pile{display:flex;align-items:flex-end;gap:0.625rem}
.pile-coins{position:relative;width:2.5rem;height:3rem}
.pile-coins .coin{position:absolute;inset-inline-start:0.25rem;width:2rem;bottom:calc(var(--i) * 0.25rem)}
.pile-total{font:700 clamp(1.875rem,4.6vw,2.75rem)/1 var(--f-num);color:var(--brass);text-shadow:0 0 26px var(--brass-glow);font-variant-numeric:tabular-nums}
.pile-rival .pile-total{color:var(--danger-2);text-shadow:none}
.pile-total small{display:block;font:500 0.6875rem/1 var(--f-mono);letter-spacing:.14em;color:var(--text-3);margin-top:0.25rem}
.pile.bump .pile-total{animation:bump .55s var(--ease-slam)}
@keyframes bump{40%{transform:scale(1.28)}}

.vaults{display:grid;grid-template-columns:1fr 1.16fr 1fr;gap:var(--gap);min-height:0}
.vault{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:0.25rem;min-height:0;padding:0.375rem;border-radius:4px;
  background:linear-gradient(180deg,rgba(27,36,48,.55),rgba(16,21,29,.15));box-shadow:0 0 0 1px var(--line) inset;transition:box-shadow .25s,background .25s}
.vault-lane{display:flex;align-items:center;justify-content:center;gap:0.375rem;min-height:4.25rem}
.vault-power{font:700 1.875rem/1 var(--f-num);color:var(--text);min-width:1.5em;text-align:center;font-variant-numeric:tabular-nums}
.vault-power.zero{opacity:.45}
.vault-power.empty{visibility:hidden}
.vault-body{position:relative;display:grid;place-items:end center;min-height:0;overflow:hidden}
.vault-body svg{max-height:100%;max-width:88%;width:auto;height:100%}
.vault-plate{position:absolute;left:50%;bottom:0.375rem;transform:translateX(-50%);display:grid;justify-items:center;gap:0.1875rem;
  padding:0.375rem 0.625rem 0.3125rem;background:rgba(9,13,19,.88);box-shadow:0 0 0 1px var(--brass-2) inset;border-radius:2px;white-space:nowrap}
.vault-name{font:400 clamp(0.875rem,1.7vw,1.1875rem)/1 var(--f-display);letter-spacing:.04em}
.vault-reward{display:flex;align-items:center;gap:0.3125rem;font:600 0.75rem/1 var(--f-mono);color:var(--brass)}
.vault-reward .coin{width:0.9375rem}
.vault .door{transform-box:fill-box;transform-origin:center;transition:transform 1s var(--ease-out)}
.vault.is-target{cursor:pointer;box-shadow:0 0 0 1px var(--mint-2) inset;animation:breathe 1.8s ease-in-out infinite}
.vault.is-target:hover,.vault.is-target:focus-visible{background:linear-gradient(180deg,rgba(143,210,206,.12),rgba(16,21,29,.15))}
/* With a crew picked, keys 1 to 3 send it; the badge says which key is which. */
.vault-key{display:none;position:absolute;top:0.375rem;inset-inline-start:0.375rem;z-index:2;min-width:1.25rem;padding:0.25rem 0.3125rem;border-radius:2px;
  font:500 0.6875rem/1 var(--f-mono);text-align:center;color:var(--mint);background:rgba(9,13,19,.88);box-shadow:0 0 0 1px var(--mint-2) inset}
@media (hover:hover) and (pointer:fine){.vault.is-target .vault-key{display:block}}
@keyframes breathe{50%{box-shadow:0 0 0 1px var(--mint) inset,0 0 30px -8px var(--mint-glow)}}
.vault.is-open .door{transform:rotate(-80deg) scale(.94)}
.vault.won-you{box-shadow:0 0 0 1px var(--brass) inset,0 0 44px -12px var(--brass-glow)}
.vault.won-you .vault-body::after{content:"";position:absolute;inset:auto 10% 0;height:75%;pointer-events:none;
  background:radial-gradient(50% 65% at 50% 100%,rgba(218,181,108,.55),transparent 72%);animation:rise .8s var(--ease-out) both}
.vault.won-rival{box-shadow:0 0 0 1px rgba(228,87,75,.65) inset}
.vault-result{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);z-index:3;display:flex;gap:0.375rem;align-items:center;white-space:nowrap;
  font:600 0.75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;padding:0.5rem 0.625rem;border-radius:2px;background:rgba(9,13,19,.92);opacity:0;pointer-events:none}
.vault.show-result .vault-result{opacity:1;animation:pop .35s var(--ease-slam)}
@keyframes pop{from{transform:translate(-50%,-50%) scale(.6)}}
.vault.won-you .vault-result{color:var(--brass);box-shadow:0 0 0 1px var(--brass) inset}
.vault.won-rival .vault-result{color:var(--danger-2);box-shadow:0 0 0 1px rgba(228,87,75,.7) inset}
.vault.tie .vault-result{color:var(--text-2);box-shadow:0 0 0 1px var(--line-2) inset}

.token{position:relative;width:3.25rem;height:4rem;border-radius:2px;overflow:hidden;flex:none;
  background:linear-gradient(180deg,#1f2b38,#121a23);box-shadow:0 0 0 1px var(--line-2) inset;animation:drop .45s var(--ease-slam) both}
.token .crew-art{position:absolute;inset:0.25rem 0.25rem 1.0625rem}
.token-power{position:absolute;left:0;right:0;bottom:0;height:1.0625rem;font:700 0.875rem/1.0625rem var(--f-num);text-align:center;background:rgba(9,13,19,.9)}
.token-you{box-shadow:0 0 0 1px var(--mint-2) inset}
.token-rival{box-shadow:0 0 0 1px rgba(228,87,75,.6) inset}
.token.boosted .token-power{color:var(--heat)}
@keyframes drop{from{opacity:0;transform:translateY(-14px) scale(.85)}}

.meters{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap;justify-content:flex-end}
.meter{display:grid;gap:0.375rem;justify-items:end}
.meter-head{display:flex;align-items:center;gap:0.4375rem;font:500 0.6875rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase}
.meter-value{font:700 1.25rem/1 var(--f-num);letter-spacing:0;font-variant-numeric:tabular-nums}
.m-energy .meter-head{color:var(--mint)}
.m-heat .meter-head{color:var(--heat)}
.e-pips{display:flex;gap:0.3125rem}
.e-pip{width:0.8125rem;height:0.8125rem;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:var(--line-2)}
.e-pip.on{background:var(--mint)}.e-pip.spent{background:rgba(143,210,206,.28)}
.segs{display:grid;grid-template-columns:repeat(6,0.875rem);gap:0.1875rem}
.seg{height:0.625rem;background:var(--line);border-radius:1px;transition:background .3s}
.seg.on{background:var(--heat)}.seg.on.hot{background:var(--danger)}
.seg.preview{background:repeating-linear-gradient(90deg,var(--heat) 0 3px,transparent 3px 5px)}
.seg.cooling{background:repeating-linear-gradient(90deg,var(--line-2) 0 3px,transparent 3px 5px)}
.segs.mini{grid-template-columns:repeat(6,0.5rem);gap:0.125rem}.segs.mini .seg{height:0.375rem}
.heat-next{font:500 0.6875rem/1.2 var(--f-mono);color:var(--text-2)}

.dock{display:grid;gap:0.625rem;position:sticky;bottom:0;z-index:5}
.hand{display:flex;gap:0.625rem;justify-content:center;padding:1.125rem 0.125rem 0.25rem}
.card{position:relative;width:clamp(6.25rem,11vw,9.125rem);aspect-ratio:5/7;border-radius:4px;flex:none;text-align:start;overflow:hidden;
  background:linear-gradient(180deg,#1f2b38,#121a23);box-shadow:0 0 0 1px var(--line-2) inset,0 12px 26px -14px #000;
  transition:transform .22s var(--ease-out),box-shadow .22s,opacity .22s,filter .22s}
.card-portrait{position:absolute;inset:0 0 30% 0;background:radial-gradient(90% 80% at 50% 32%,#2c3d4f,#121a23 76%)}
.card-portrait .crew-art{position:absolute;inset:16% 8% 0}
.card-cost,.card-power{position:absolute;top:0.375rem;z-index:1;display:flex;align-items:center;gap:0.125rem;height:1.5rem;padding:0 0.375rem;
  font:700 1rem/1 var(--f-num);border-radius:2px;background:rgba(9,13,19,.88)}
.card-cost{inset-inline-start:0.375rem;color:var(--mint);box-shadow:0 0 0 1px var(--mint-2) inset}
.card-cost .icon{font-size:0.6875rem}
.card-power{inset-inline-end:0.375rem;color:var(--text)}
.card-text{position:absolute;left:0;right:0;bottom:0;padding:1.25rem 0.5rem 0.5625rem;background:linear-gradient(180deg,rgba(9,13,19,0),rgba(9,13,19,.94) 34%)}
.card-name{display:block;font:600 0.75rem/1.15 var(--f-body)}
.card-line{display:block;margin-top:0.1875rem;font:italic 400 0.6875rem/1.4 var(--f-body);color:var(--text-3)}
.card-assigned{display:none;position:absolute;left:0.375rem;right:0.375rem;top:2.25rem;z-index:2;justify-content:center;padding:0.25rem;border-radius:2px;
  font:600 0.6875rem/1 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-0);background:var(--mint)}
.card:hover{transform:translateY(-6px)}
.card.is-selected{transform:translateY(-16px);box-shadow:0 0 0 2px var(--mint) inset,0 22px 44px -18px var(--mint-glow)}
.card.is-staged{opacity:.6}.card.is-staged .card-assigned{display:flex}.card.is-staged .card-line{visibility:hidden}
.card.is-poor{filter:saturate(.25) brightness(.72)}
.card.is-poor .card-cost{color:var(--danger-2);box-shadow:0 0 0 1px rgba(228,87,75,.6) inset}

.controls{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:0.625rem}
.boost-btn{min-height:var(--tap);padding:0.375rem 0.875rem;display:flex;align-items:center;gap:0.625rem;border-radius:var(--r);text-align:start;box-shadow:0 0 0 1px var(--line-2) inset;transition:transform .15s var(--ease-out),box-shadow .2s,background .2s}
.boost-btn .icon{font-size:1.25rem;color:var(--heat)}
.boost-btn b{display:block;font:600 0.875rem/1.1 var(--f-body)}
.boost-btn small{display:block;font:500 0.6875rem/1.25 var(--f-mono);color:var(--text-3)}
.boost-btn[aria-pressed="true"]{background:rgba(229,155,85,.1);box-shadow:0 0 0 1px var(--heat) inset,0 0 26px -8px rgba(229,155,85,.55)}
.boost-btn[aria-pressed="true"] small{color:var(--heat)}
.boost-btn[disabled]{opacity:.45;cursor:not-allowed}
.status{font:500 0.8125rem/1.3 var(--f-body);color:var(--text-2);text-align:center}
.status.warn{color:var(--danger-2)}
.seal{min-width:12.5rem}

/* The one break in the system: the plan is sealed with a stamp that crosses the board. */
.stamp{position:absolute;left:50%;top:47%;z-index:20;pointer-events:none;opacity:0;white-space:nowrap;
  font:700 clamp(2.5rem,9vw,6rem)/1 var(--f-num);letter-spacing:.16em;text-transform:uppercase;color:var(--danger);
  padding:.1em .38em;border:clamp(4px,.7vw,7px) solid var(--danger);border-radius:6px;transform:translate(-50%,-50%) rotate(-9deg)}
.table-screen.is-sealed .stamp{animation:slam .5s var(--ease-slam) forwards}
@keyframes slam{0%{opacity:0;transform:translate(-50%,-50%) rotate(-15deg) scale(2.3)}60%{opacity:.92}100%{opacity:.88;transform:translate(-50%,-50%) rotate(-9deg) scale(1)}}
.table-screen.is-revealing .stamp{animation:unseal .4s ease-in forwards}
@keyframes unseal{from{opacity:.88;transform:translate(-50%,-50%) rotate(-9deg)}to{opacity:0;transform:translate(-50%,-62%) rotate(-3deg) scale(.9)}}
.table-screen.is-sealed .hand,.table-screen.is-revealing .hand{pointer-events:none}
.table-screen.is-sealed .card,.table-screen.is-revealing .card{opacity:.35;transform:none}
.skip{min-width:7.5rem}
.fly-coin{position:fixed;z-index:30;width:26px;pointer-events:none;left:0;top:0}
.fly-coin .coin{width:100%}

/* ----------------------------------------------------------------- result */
.result-screen{place-items:center;padding:1.25rem;z-index:40;overflow-y:auto;overscroll-behavior:contain;background:rgba(9,13,19,.74);-webkit-backdrop-filter:blur(0.375rem);backdrop-filter:blur(0.375rem)}
.result-panel{width:min(100%,33.75rem);display:grid;gap:1.125rem;padding:1.875rem 1.5rem;text-align:center;border-radius:6px;
  background:linear-gradient(180deg,var(--ink-2),var(--ink-1));box-shadow:0 0 0 1px var(--brass-2) inset,0 40px 90px -30px #000;animation:rise .6s var(--ease-out) both}
.result-title{margin:0;font:400 clamp(2.125rem,7vw,3.375rem)/1.05 var(--f-display)}
.result-score{font:700 clamp(2.5rem,9vw,4.125rem)/1 var(--f-num);color:var(--brass);text-shadow:0 0 30px var(--brass-glow)}
.nights{display:grid;grid-template-columns:auto repeat(6,1fr);gap:0.375rem}
.night-cell{display:grid;gap:0.25rem;padding:0.5rem 0.125rem;border-radius:2px;background:var(--ink-1);box-shadow:0 0 0 1px var(--line) inset;font:700 0.875rem/1 var(--f-num)}
.night-cell .n{font:500 0.6875rem/1 var(--f-mono);color:var(--text-3)}
.night-cell .mine{color:var(--brass)}.night-cell .theirs{color:var(--danger-2)}
.night-legend{background:none;box-shadow:none;padding-inline:0 0.125rem;justify-items:end}
/* A signed number reads left to right in every language: +3, never 3+ in Arabic. */
.night-cell:not(.night-legend) :is(.mine,.theirs){direction:ltr;unicode-bidi:isolate}
.night-legend .mine,.night-legend .theirs{font:500 0.6875rem/0.875rem var(--f-mono);letter-spacing:.1em;text-transform:uppercase}
.result-actions{display:grid;gap:0.625rem}
.result-reward{margin:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:0.375rem 1.125rem;font:700 1.25rem/1.2 var(--f-num);color:var(--text)}
.result-levelup{padding-block:0.25rem;padding-inline:0.5rem;border-radius:2px;box-shadow:0 0 0 1px var(--line-2) inset;font:500 0.75rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase}
.result-hint{margin:0;color:var(--text-2);font-size:0.875rem}
.result-why{margin:0 auto;max-width:36em;color:var(--text);font-size:0.9375rem;line-height:1.45;text-wrap:balance}
/* Signed in, the account icon is the player's level, ringed by the XP towards the next one. */
.level-chip{position:relative;font:700 0.9375rem/1 var(--f-num);color:var(--text)}
.level-ring{position:absolute;inset:0.375rem;border-radius:50%;background:conic-gradient(var(--text-2) calc(var(--xp,0) * 1turn),var(--line-2) 0);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 0.1875rem),#000 calc(100% - 0.15625rem));mask:radial-gradient(farthest-side,transparent calc(100% - 0.1875rem),#000 calc(100% - 0.15625rem))}
.level-num{position:relative}
.profile-level{margin:0;font:400 1.875rem/1.1 var(--f-display)}
.profile-bar{height:0.5rem;border-radius:2px;background:var(--ink-0);box-shadow:0 0 0 1px var(--line-2) inset;overflow:hidden}
.profile-bar span{display:block;height:100%;background:var(--text-2)}
.profile-list{display:grid;margin:0;padding:0;list-style:none}
.profile-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0.125rem 0.75rem;padding-block:0.5rem;border-block-end:1px solid var(--line);font-size:0.875rem}
.profile-list .num{font-family:var(--f-num);text-align:end}
.store-section h3{margin:0}

/* ------------------------------------------------------------- overlays */
.sheet{width:min(92vw,35rem);border:0;padding:0;color:var(--text);background:var(--ink-2);border-radius:6px;box-shadow:0 0 0 1px var(--line-2) inset,0 40px 90px -20px #000}
.sheet::backdrop{background:rgba(5,8,12,.72);-webkit-backdrop-filter:blur(0.25rem);backdrop-filter:blur(0.25rem)}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding-block:1rem 0;padding-inline:1.5rem 0.75rem}
.sheet-title{margin:0;font:400 1.875rem/1.1 var(--f-display)}
.sheet ol{margin:0;padding-block:0.875rem 1.625rem;padding-inline:3rem 1.75rem;display:grid;gap:0.75rem;color:var(--text-2);font-size:0.9375rem}
.lang-list{display:grid;gap:0.625rem;padding-block:1rem 1.5rem;padding-inline:1.5rem}
.lang-option[aria-current="true"]{color:var(--mint);box-shadow:0 0 0 1px var(--mint-2) inset}
.sheet li::marker{font:700 0.9375rem var(--f-num);color:var(--brass)}
.sheet-foot{margin:0;padding-block:0 1.375rem;padding-inline:1.5rem;font-size:0.875rem;display:flex;flex-wrap:wrap;gap:0.25rem 1.25rem}
.sheet-foot a{display:inline-block;padding-block:0.25rem;color:var(--text-2);text-decoration:underline;text-underline-offset:0.1875rem}
.sheet-foot a:hover{color:var(--text)}
/* The cookie choice, built by the website's consent.js: a floating bar on the bottom edge, with Accept
   and Reject alike. Unanswered, it steps aside while a heist is on screen; Cookie settings brings it back. */
.consent{position:fixed;z-index:50;inset-inline:0.75rem;inset-block-end:max(0.75rem,env(safe-area-inset-bottom));max-width:38.75rem;margin-inline:auto;
  display:flex;flex-wrap:wrap;align-items:center;gap:0.75rem 1.125rem;padding:0.875rem 1rem;border-radius:6px;background:var(--ink-2);color:var(--text-2);
  font-size:0.875rem;line-height:1.45;box-shadow:0 0 0 1px var(--line-2) inset;animation:rise .5s var(--ease-out) both}
.consent p{margin:0;flex:1 1 17.5rem}
.consent a{color:var(--text);text-decoration:underline;text-underline-offset:0.1875rem}
.consent-act{display:flex;gap:0.625rem;flex:1 1 11.25rem}
.consent .btn{flex:1;padding:0 1rem;font-size:0.875rem;color:var(--text);box-shadow:0 0 0 1px var(--line-2) inset}
.consent .btn:hover{box-shadow:0 0 0 1px var(--mint-2) inset}
.consent .btn[aria-pressed="true"]{box-shadow:0 0 0 1px var(--mint) inset}
body:has(.table-screen) .consent:not([data-asked]){display:none}
/* Wide screens keep the title's centred stack clear: the choice becomes a card in the far bottom corner. */
@media (min-width:1200px){.consent{inset-inline:auto 1rem;inset-block-end:1rem;width:23.75rem;margin-inline:0}}
.coach{position:fixed;z-index:35;max-width:15.625rem;padding:0.625rem 0.75rem;border-radius:4px;background:var(--mint);color:var(--ink-0);
  font:600 0.8125rem/1.35 var(--f-body);box-shadow:0 14px 30px -10px rgba(0,0,0,.7);animation:rise .35s var(--ease-out) both;pointer-events:none}

/* ------------------------------------------------------------------ store */
/* A sheet like the rules: a head, the sections, a scrolling body and one status line that stays in
   place, so every update is read out. Prices are numerals in Oswald, never gold: gold is Loot's. */
.store{width:min(calc(100vw - 1rem),55rem);max-width:none;max-height:calc(100dvh - 1rem)}
.store[open]{display:flex;flex-direction:column}
.store-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0.375rem 1rem;padding-block:0.25rem 0;padding-inline:1.5rem;color:var(--text-2);font-size:0.875rem}
.store-bar b{color:var(--text);font-weight:600;overflow-wrap:anywhere}
.store-balance{font:700 1rem/1 var(--f-num);color:var(--text)}
.store-note{margin-block:0.75rem 0;margin-inline:1.5rem;padding-block:0.625rem;padding-inline:0.75rem;border-radius:var(--r);background:var(--ink-1);box-shadow:0 0 0 1px var(--line-2) inset;color:var(--text);font-size:0.875rem}
.store-tabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));margin-block:0.875rem 0;margin-inline:1.5rem;border-radius:var(--r);box-shadow:0 0 0 1px var(--line) inset}
.store-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-block:1rem 0.25rem;padding-inline:1.5rem}
.store-status{margin:0;min-height:1.45em;padding-block:0.5rem 1.125rem;padding-inline:1.5rem;color:var(--text-2);font-size:0.875rem}
.store-status.warn,.store-error{color:var(--danger-2)}
.store-sub{margin:0;color:var(--text-3);font-size:0.8125rem;line-height:1.4}
.store-list{display:grid;gap:0.75rem}
.store-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(11.875rem,1fr));gap:0.625rem;margin:0;padding:0;list-style:none}
/* A card set lists six cards, so it takes the whole row and lays them out in columns where there is room. */
.store-item.is-set{grid-column:1/-1}
.store-item.is-set .store-perks{columns:2 16rem;column-gap:1.5rem}
.store-item.is-set .store-perks li{break-inside:avoid;margin-block-end:0.75rem}
.store-set-card p{margin:0}
.store-single{align-items:center;flex-wrap:wrap;gap:0.375rem 0.625rem;margin-block-start:0.375rem}
.store-single .btn{flex:0 0 auto;width:auto;min-height:2.25rem;padding-inline:0.875rem}
.store-single-price{font:700 0.9375rem/1.2 var(--f-num);color:var(--brass)}
.store-item{display:flex;flex-direction:column;gap:0.5rem;padding:0.875rem;border-radius:4px;background:var(--ink-1);box-shadow:0 0 0 1px var(--line) inset}
.store-item[data-owned]{box-shadow:0 0 0 1px var(--mint-2) inset}
.store-item h3{margin:0;font:400 1.3125rem/1.15 var(--f-display)}
.store-price{margin:0;font:700 1.25rem/1 var(--f-num);color:var(--text)}
.store-price,.store-sum dd,.store-order-amount{direction:ltr;unicode-bidi:isolate}
.store-perks{margin:0;padding-inline-start:1.125rem;display:grid;gap:0.1875rem;color:var(--text-2);font-size:0.8125rem}
.store-perks li::marker{color:var(--text-3);font:inherit}
/* Headings take focus only to say where the player now is; they aren't controls, so they get no ring. */
.store :is(.sheet-title,.store-heading):focus{outline:none}
.store-tag{align-self:flex-start;padding:0.25rem 0.375rem;border-radius:2px;font:500 0.6875rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mint);box-shadow:0 0 0 1px var(--mint-2) inset}
.store-actions{display:grid;gap:0.5rem;margin-block-start:auto;padding-block-start:0.25rem}
.store-actions .btn{width:100%;min-height:2.5rem;padding-inline:0.75rem;font-size:0.875rem}
.store-panel{display:grid;gap:0.75rem;max-width:33.75rem}
.store-panel p{margin:0}
.store-panel a{color:var(--text-2);text-decoration:underline;text-underline-offset:0.1875rem}
.store-panel a:hover,.store-back:hover,.store-link:hover{color:var(--text)}
.store-heading{margin:0;font:400 1.625rem/1.1 var(--f-display)}
.store-back{justify-self:start;display:inline-flex;align-items:center;gap:0.375rem;min-height:var(--tap);color:var(--text-2);font-size:0.875rem}
.store-form{display:grid;gap:0.5rem}
.store-form label{font-size:0.875rem;color:var(--text-2)}
.store-input{width:100%;min-width:0;min-height:var(--tap);padding-inline:0.75rem;border:0;border-radius:var(--r);background:var(--ink-0);color:var(--text);font:400 1rem/1.2 var(--f-body);box-shadow:0 0 0 1px var(--line-2) inset}
.store-input[aria-invalid="true"]{box-shadow:0 0 0 1px var(--danger) inset}
.store-row{display:flex;flex-wrap:wrap;gap:0.625rem}
.store-row .btn{flex:1 1 9.375rem}
.store-inline{flex-wrap:nowrap}
.store-inline .store-input{flex:1}
.store-inline .btn{flex:none}
.store-sum{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0.5rem 1rem;margin:0;padding:0.875rem;border-radius:4px;background:var(--ink-1);box-shadow:0 0 0 1px var(--line) inset;font-size:0.9375rem}
.store-sum dt{color:var(--text-2)}
.store-sum dd{margin:0;font:700 1rem/1.25 var(--f-num);text-align:end}
.store-sum s{color:var(--text-3);font-weight:500}
.store-sum .total{padding-block-start:0.5rem;border-block-start:1px solid var(--line);color:var(--text)}
.store-sum dd.total{font-size:1.125rem}
.store-check{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0.625rem;align-items:start;font-size:0.875rem;color:var(--text-2)}
.store-check input{width:1.25rem;height:1.25rem;margin-block:0.0625rem 0;margin-inline:0;accent-color:var(--mint)}
.store-link{justify-self:start;min-height:2rem;color:var(--text-2);font-size:0.875rem;text-decoration:underline;text-underline-offset:0.1875rem}
.store-code{display:flex;flex-wrap:wrap;align-items:center;gap:0.25rem 0.625rem;font-size:0.875rem;color:var(--text)}
.store-orders{display:grid;gap:0.5rem;margin-block-start:0.375rem}
.store-orders h4{margin:0}
.store-order-list{display:grid;margin:0;padding:0;list-style:none}
.store-order-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0.125rem 0.75rem;padding-block:0.5rem;border-block-end:1px solid var(--line);font-size:0.875rem}
.store-order-amount{font:700 0.9375rem/1.2 var(--f-num);text-align:end}
.store-order-status{color:var(--text-2);text-align:end}
/* Shop pictures (kie.ai, approved for the store only) sit in a 1px brass frame and are never lifted. */
.store-pic{display:block;width:100%;height:auto;border:1px solid var(--brass-2);border-radius:3px;background:var(--ink-0)}
.store-pic-large{max-width:20rem}
.collection-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.375rem,1fr));gap:0.5rem 0.75rem}
.collection-grid{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr))}
.collection-card h3{font-size:1.125rem}
.collection-card p{margin:0}
.collection-meta{font:500 0.6875rem/1.3 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-2)}
.collection-price{font:700 0.9375rem/1.25 var(--f-num);color:var(--brass)}
.collection-price.is-unsold{font:500 0.6875rem/1.3 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}
/* The ten legendaries carry a quiet mark: a second inner rule and their rarity in the text colour. */
.collection-card.is-legendary{box-shadow:0 0 0 1px var(--line-2) inset,0 0 0 4px var(--ink-1) inset,0 0 0 5px var(--line) inset}
.collection-card.is-legendary .collection-rarity{color:var(--text)}
@media (max-width:640px){.store-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:520px){
  .store .sheet-head{padding-inline:1rem 0.25rem}
  .store-bar,.store-body,.store-status{padding-inline:1rem}
  .store-note,.store-tabs{margin-inline:1rem}
  .store-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .store-inline{flex-wrap:wrap}
  .store-inline .btn{flex:1 1 100%}
}
/* The account sheet shares the store's parts, in a narrower sheet. */
.account-sheet{width:min(calc(100vw - 1rem),37.5rem)}
.store-panel .store-note{display:grid;gap:0.625rem;margin:0}
.store-section{display:grid;gap:0.5rem;padding-block-start:0.875rem;border-block-start:1px solid var(--line)}
.store-section h4{margin:0}
.account-sum dd{font:600 0.875rem/1.3 var(--f-body);overflow-wrap:anywhere}
/* Deleting an account is the one red control in the menus, and it says what it does in words. */
.store-danger{color:var(--danger-2);box-shadow:0 0 0 1px var(--danger) inset}
.store-danger:hover{color:var(--text);box-shadow:0 0 0 1px var(--danger-2) inset}
/* Five title tools fit a 320px phone once the title's side padding narrows. */
@media (max-width:360px){.title-screen{padding-inline:1rem}.store-entry{margin-inline-end:0}}

/* ------------------------------------------------------------------ phone */
@media (max-width:720px){
  /* The vault row keeps room for a two-line nameplate while the table scrolls. */
  .table-screen{gap:0.375rem;padding-inline:0.5rem;grid-template-rows:auto auto minmax(10rem,1fr) auto auto}
  .hud .icon-btn{width:2.5rem;height:2.5rem}
  .hud .site-link{padding-inline:0}.hud .site-link-text{position:absolute;width:0.0625rem;height:0.0625rem;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .vaults{grid-template-columns:repeat(3,minmax(0,1fr));gap:0.3125rem}
  .vault{padding:0.25rem}
  .vault-lane{min-height:2.625rem;gap:0.1875rem;flex-wrap:wrap}
  .vault-power{font-size:1.1875rem}
  .vault-plate{padding:0.25rem 0.3125rem;bottom:0.1875rem;white-space:normal;width:94%;text-align:center}
  .vault-name{font-size:0.75rem;line-height:1.05}
  /* A result tag wraps inside its own vault rather than running into the next one. */
  .vault-result{white-space:normal;width:max-content;max-width:100%;justify-content:center;text-align:center;letter-spacing:.04em;padding:0.3125rem 0.375rem}
  .token{width:1.75rem;height:2.25rem}.token .crew-art{inset:0.125rem 0.125rem 0.6875rem}.token-power{height:0.75rem;font-size:0.6875rem;line-height:0.75rem}
  .strip{min-height:2.625rem}
  .pile-coins{width:1.875rem;height:2.375rem}.pile-coins .coin{width:1.5rem;bottom:calc(var(--i) * 0.1875rem)}
  .pile-total{font-size:1.75rem}
  .meters{gap:0.75rem}.segs{grid-template-columns:repeat(6,0.5625rem)}
  .hand{justify-content:flex-start;overflow-x:auto;scroll-snap-type:x mandatory;padding:0.875rem 0.125rem 0.375rem;scrollbar-width:none}
  .hand::-webkit-scrollbar{display:none}
  /* Size cards so part of the next one always shows past the edge of the hand. */
  .card{width:min(5.75rem,calc((100vw - 3rem) / 3.35));scroll-snap-align:start}.card-line{display:none}.card:hover{transform:none}
  .controls{grid-template-columns:1fr auto;grid-template-areas:"boost clear" "status status" "seal seal"}
  .boost-btn{grid-area:boost}.clear,.skip{grid-area:clear}.skip{min-width:0}.status{grid-area:status}.seal{grid-area:seal;width:100%}
}
@media (max-height:760px) and (min-width:721px){.card{width:6.5rem}.vault-lane{min-height:3.5rem}.token{width:2.75rem;height:3.375rem}.hand{padding-top:0.75rem}}
/* Short screens: a phone on its side, or a laptop at 200% zoom. */
@media (max-height:520px){
  .table-screen{gap:0.3125rem;padding-top:max(0.25rem,env(safe-area-inset-top))}
  .dock{gap:0.375rem;background:linear-gradient(180deg,rgba(9,13,19,0),var(--ink-0) 16px)}
  .hud .icon-btn{width:2.25rem;height:2.25rem}
  .hud .site-link{padding-inline:0}.hud .site-link-text{position:absolute;width:0.0625rem;height:0.0625rem;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .strip{min-height:2.25rem}
  .pile-coins{width:1.75rem;height:2.125rem}.pile-coins .coin{width:1.375rem;bottom:calc(var(--i) * 0.1875rem)}
  .pile-total{font-size:1.5rem}
  .vault-lane{min-height:2.125rem}
  .token{width:1.625rem;height:2rem}.token .crew-art{inset:0.125rem 0.125rem 0.6875rem}.token-power{height:0.6875rem;font-size:0.6875rem;line-height:0.6875rem}
  .hand{padding:0.5rem 0.125rem 0.125rem}
  /* The title drops its art and tightens, so the rival picker and the first button are on the first screen. */
  .title-screen{padding-block:0.75rem}.title-stack{gap:0.625rem}.title-art{display:none}.wordmark{font-size:clamp(2.5rem,13vh,6.5rem)}
  .card{width:4.75rem}.card-line{display:none}
  .result-screen{padding:0.625rem}.result-panel{gap:0.625rem;padding:1rem 1.25rem}.result-title{font-size:1.875rem}.result-score{font-size:2.5rem}
}
@media (max-height:520px) and (min-width:560px){
  .controls{grid-template-columns:auto 1fr auto auto;grid-template-areas:none}
  .boost-btn,.clear,.skip,.status,.seal{grid-area:auto}
  .seal{width:auto;min-width:10.625rem}
}
/* The narrowest phones: the night label leaves the centre rather than push the page wide. */
@media (max-width:420px){.hud{grid-template-columns:auto minmax(0,1fr) auto}.pip{width:0.875rem}}
/* The narrowest phones: the title's website link keeps only its house, clear of the art. */
@media (max-width:340px){.hud .icon-btn{width:2.25rem;height:2.25rem}.hud-nav,.hud-tools{gap:0}.night-label{letter-spacing:.1em}.title-screen > .site-link{width:var(--tap);padding-inline:0}.title-screen > .site-link .site-link-text{position:absolute;width:0.0625rem;height:0.0625rem;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}

/* Arabic joins letter to letter, so it takes no tracking and no synthesized italic. */
:lang(ar){letter-spacing:0!important}
:lang(ar) .card-line{font-style:normal}
/* Arabic letterforms read smaller than Latin at the same size, so small labels step up one size. */
:lang(ar) :is(.label,.level,.meter-head,.heat-next,.pile-total small,.boost-btn small,.card-assigned,.night-legend span,.card-line){font-size:0.75rem}
:lang(ar) :is(.night-label,.who-name,.vault-result,.card-name){font-size:0.8125rem}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}
.journey-sheet{width:min(94vw,60rem);max-height:90dvh;padding:1.5rem;border-radius:4px}
.journey-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.journey-head h2{margin:0;font:400 1.875rem/1.2 var(--f-display)}
.journey-tabs,.journey-presets{display:flex;gap:0.5rem;flex-wrap:wrap;margin-block:1rem}
.journey-tabs [aria-pressed=true]{border-color:var(--mint);color:var(--mint)}
.journey-body{line-height:1.5;color:var(--text-2)}
.journey-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15.625rem),1fr));gap:0.875rem;margin-block:1rem}
.journey-encounter,.journey-card{border:1px solid var(--line);padding:1rem;border-radius:3px;background:var(--ink-2)}
.journey-encounter h3,.journey-card h3{margin:0;color:var(--text);font:600 1.0625rem/1.4 var(--f-body)}
.journey-meta{font-size:0.8125rem;color:var(--text-2)}
.journey-count{display:flex;align-items:center;justify-content:space-between;gap:0.5rem}
.journey-count span{font:700 1.5rem var(--f-num)}
.journey-status{color:var(--text);min-height:1.5em}
.heist-brief{background:transparent;color:var(--text-2);border:1px solid var(--line);min-height:2.75rem;font:500 0.75rem var(--f-body);padding:0.375rem;border-radius:3px}
.card-line{font-style:normal;color:var(--text-2);font-size:0.6875rem;line-height:1.3}
.journey-sheet .btn{white-space:normal}
@media(max-width:600px){.journey-sheet{padding:1rem}.journey-tabs .btn{flex:1 1 40%;padding:0.625rem}.heist-brief{width:2.75rem;padding:0.25rem}}
.previous-control{position:absolute;inset-inline:0.25rem;top:0;text-align:center;font:400 0.6875rem var(--f-body);color:var(--text-2)}
.card.is-staged .card-line{visibility:visible}
@media(max-width:720px){.card{width:min(6.5rem,calc((100vw - 2.5rem)/3.2));min-height:11.625rem;aspect-ratio:auto}.card-line{display:block;font-size:0.6875rem}.card-text{padding-inline:0.375rem}.card-portrait{bottom:35%}}
@media(max-width:360px){.hud-nav .site-link{display:none}}

/* Learning starts on a phone: tap a crew, tap a vault, then reveal. */
.newcomer-options{width:100%;max-width:23.75rem;color:var(--text-2)}
.newcomer-options summary,.learning-sheet summary,.table-coaching summary{min-height:3rem;display:flex;align-items:center;gap:0.5rem;cursor:pointer;font-size:1rem}
.is-newcomer .title-art{width:min(30vw,7.5rem)}
.is-newcomer .title-stack{gap:0.75rem}
.is-newcomer .title-tools{gap:0.5rem}
.training-screen{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;padding-block:max(0.75rem,env(safe-area-inset-top)) max(0.75rem,env(safe-area-inset-bottom));padding-inline:0.75rem;scroll-padding-block:1.25rem 10rem;background:var(--ink-0);font-size:1rem;line-height:1.45}
.training-screen>*{width:100%;max-width:57.5rem;margin-inline:auto;box-sizing:border-box}
.training-head{display:flex;justify-content:space-between;align-items:center;gap:0.75rem}
.training-head h1{font:400 clamp(1.5625rem,6vw,2.5rem)/1.1 var(--f-display);margin:0.375rem 0}
.training-head .btn{padding:0.625rem;min-width:5.25rem}
.training-screen .btn,.learning-sheet .btn{min-height:3rem;white-space:normal;font-size:1rem;line-height:1.25}
.training-goal{margin-block:0.75rem 0.5rem}
.training-note{font-size:0.875rem;color:var(--text-2);margin-block:0.5rem}
.training-vaults{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0.5rem;margin-block:0.75rem}
.training-vault{min-width:0;display:flex;flex-direction:column;gap:0.375rem;align-items:center;padding:0.5rem 0.3125rem;background:var(--ink-1);border:1px solid var(--line-2);border-radius:4px;color:var(--text);font:400 0.875rem/1.3 var(--f-body);text-align:center;overflow-wrap:anywhere}
.training-vault:disabled{opacity:1;cursor:default}
.training-vault.is-target{border-color:var(--mint);cursor:pointer;background:var(--ink-2)}
.training-vault-art{display:block;height:2.5rem;width:3rem}
.training-vault-art svg{height:100%;width:100%}
.training-vault>strong{font-size:0.875rem}
.training-loot{color:var(--brass);font:500 1.25rem/1.2 var(--f-num)}
.training-lane-rival{color:var(--text-2)}
.training-lane-mine,.training-choice{color:var(--mint)}
.training-lane-power{font:500 1.625rem/1.2 var(--f-num)}
.training-meters{display:flex;gap:1.5rem;justify-content:center;font:500 1.25rem/1.3 var(--f-num)}
.training-instruction{margin-block:0.625rem;color:var(--mint)}
.training-hand{display:grid;grid-template-columns:repeat(auto-fit,minmax(6rem,1fr));gap:0.5rem}
.training-card{min-width:0;display:flex;flex-direction:column;align-items:center;gap:0.375rem;position:relative;border:1px solid var(--line-2);border-radius:4px;background:var(--ink-2);color:var(--text);padding:0.625rem 0.375rem;font:400 0.875rem/1.35 var(--f-body);text-align:center;overflow-wrap:anywhere}
.training-card[aria-pressed=true]{border:2px solid var(--mint);padding:0.5625rem 0.3125rem;background:var(--ink-3)}
.training-card>strong{font-size:1rem}
.training-card-art{height:2.8125rem;width:2.75rem;display:block}
.training-card-art svg{width:100%;height:100%}
.training-ability{color:var(--text-2)}
.training-tools{display:flex;gap:0.5rem;margin-block:0.75rem}
.training-tools .btn{flex:1}
.training-forecast{color:var(--text-2);margin-block:0.5rem}
.training-hint,.training-result{padding:0.875rem;border:1px solid var(--mint-2);border-radius:4px;background:var(--ink-1);margin-block:0.75rem}
.training-result h2{font:400 1.625rem/1.2 var(--f-display);margin-block:0 0.75rem}
.training-arithmetic{font-size:1rem;color:var(--mint)}
.training-error{color:var(--danger-2)}
.training-actions{position:sticky;inset-block-end:0;z-index:4;padding-block:0.625rem max(0.625rem,env(safe-area-inset-bottom));background:var(--ink-0);border-block-start:1px solid var(--line);display:grid;gap:0.5rem}
.training-action-row{display:flex;flex-wrap:wrap;gap:0.5rem}
.training-action-row>.btn{flex:1 1 30%;padding:0.625rem 0.5rem}
.training-action-row>.btn-primary{flex:1.2 1 30%}
.training-actions>.btn{font-size:0.875rem;min-height:2.75rem}
.training-finish{max-width:32.5rem;display:grid;gap:1rem;padding-block:1.5rem}
.training-finish h1{font:400 2.5rem/1.1 var(--f-display);margin:0}
.training-finish p{margin:0}
.training-styles{border:1px solid var(--line-2);border-radius:4px;padding:0.75rem;display:grid;gap:0.5rem}
.training-styles label,.learning-toggle{display:flex;align-items:center;gap:0.75rem;min-height:3rem;padding:0.5rem;font-size:1rem;cursor:pointer}
.training-styles input,.learning-toggle input{width:1.5rem;height:1.5rem;flex:none;accent-color:var(--mint)}
.learning-sheet{width:min(41.25rem,calc(100vw - 1rem));max-height:calc(100dvh - 1rem);padding:1rem;font-size:1rem;line-height:1.5;overflow-y:auto}
.learning-sheet p{overflow-wrap:anywhere}
.learning-sheet .journey-head{position:sticky;inset-block-start:-1rem;background:var(--ink-2);padding-block:0.5rem;z-index:2}
.learning-exercises,.learning-backups{display:grid;gap:0.5rem}
.learning-exercises .btn{text-align:start}
.learning-section{margin-block:1.25rem;padding-block-start:0.875rem;border-block-start:1px solid var(--line-2)}
.learning-section .btn{margin-block:0.25rem;width:100%}
.learning-status{color:var(--mint)}
.table-coaching{font-size:0.875rem;line-height:1.4;color:var(--text-2)}
.table-coaching summary{min-height:2.75rem;justify-content:center;color:var(--mint)}
.table-coaching p{margin:0.25rem 0 0.5rem}
.table-coaching .btn{min-height:2.75rem;font-size:0.875rem;width:100%}
.account-sheet .store-input{font-size:1rem;min-height:3rem}
.account-sheet .store-row{gap:0.5rem}
.account-sheet .store-row .btn{min-height:3rem}
.result-screen{align-items:safe center}
.result-actions .btn{min-height:3rem;white-space:normal;line-height:1.25}
.table-screen .dock{position:relative;bottom:auto}
.table-screen{scroll-padding-block:0.75rem;grid-template-rows:auto auto minmax(10rem,1fr) max-content max-content}
.strip-you{min-height:0}
@media(max-width:720px){.strip-you .meters{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;min-width:0;gap:0.5rem}.m-heat{min-width:0}.heat-next{max-width:10.625rem;white-space:normal;font-size:0.875rem;line-height:1.3}.meter-head{gap:0.25rem;letter-spacing:.08em}}
@media(max-width:720px){.card-line{font-size:0.875rem;line-height:1.3;display:block}.card-name{font-size:0.875rem}.card{min-height:13.75rem}.card-portrait{bottom:44%}.hud .icon-btn{width:2.75rem;height:2.75rem}.hud-tools{gap:0.25rem}}
@media(max-width:420px){.hud-nav .site-link{display:none}.hud-nav{gap:0.5rem}.night-label{letter-spacing:.08em}}
.training-card:only-child{display:grid;grid-template-columns:max-content minmax(0,1fr);text-align:start;column-gap:0.75rem;row-gap:0.125rem}
.training-card:only-child .training-card-art{grid-row:1/5}
.training-card:only-child>:not(.training-card-art){grid-column:2}
@media(max-width:720px){.training-vault{gap:0.25rem;padding-block:0.375rem}.training-goal{margin-block:0.5rem 0.375rem}.training-note{margin-block:0.375rem}.training-actions .btn{font-size:0.875rem}.training-head h1{font-size:1.5625rem}}
@media(min-width:721px){.training-screen{padding-inline:2rem}.training-vault-art{height:6.25rem;width:6.25rem}.training-hand{max-width:40rem;margin-inline:auto}.training-card-art{height:4.6875rem;width:4.375rem}.training-action-row>.btn-primary{flex:2 1 30%}.training-actions{max-width:40rem}.training-card{padding:1rem}.training-card[aria-pressed=true]{padding:0.9375rem}}
@media(max-width:420px){.is-newcomer .wordmark{font-size:3.25rem}.is-newcomer .title-art{width:5rem}.training-screen{padding-inline:0.625rem}.training-head .btn{font-size:0.875rem}.learning-sheet{padding:0.75rem}.learning-sheet .journey-head{inset-block-start:-0.75rem}}

/* Keep the play surface within a comfortable vertical and horizontal reach.
   Spare ultrawide space stays outside the table, with the same three vaults. */
@media(min-width:721px){
  .table-screen,.training-screen{max-height:60rem;margin-block:auto}
  .table-screen{grid-template-rows:auto auto minmax(17rem,1fr) max-content max-content}
  /* Passing can leave eight cards in hand. Scroll that tray, not the board. */
  .hand{justify-content:flex-start;overflow-x:auto;scroll-snap-type:x proximity}
  .hand .card{scroll-snap-align:center}
  .hand .card:first-child{margin-inline-start:auto}
  .hand .card:last-child{margin-inline-end:auto}
}
@media(min-width:1200px) and (min-height:900px){
  .card{width:10rem;min-height:15rem}
  .table-screen :is(.card-name,.card-line){font-size:.875rem;line-height:1.3}
  .card-portrait{bottom:40%}
}
@media(max-width:720px){
  .table-screen :is(.card-name,.card-line){font-size:.875rem;line-height:1.3}
}
/* Shown only without JavaScript; a class, because the page's policy allows no inline style. */
.noscript{margin:0;padding:1.5rem}
/* The daily heist: the result's own panel, the day's board and the crew name (src/play/daily.js). */
.daily-panel{display:grid;gap:0.625rem;padding-block:1rem 0;border-top:1px solid var(--line);text-align:center}
.daily-day{margin:0;font:500 0.8125rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}
.daily-place{margin:0;font:700 1.25rem/1.2 var(--f-num);color:var(--brass)}
.daily-streak{margin:0;font:700 1.0625rem/1.2 var(--f-num);color:var(--mint)}
.daily-note{margin:0;color:var(--text-2);font-size:0.875rem;text-wrap:balance}
.daily-status{margin:0;min-height:1.5em;color:var(--text);font-size:0.875rem}
.daily-actions{display:grid;gap:0.5rem}
.daily-actions .btn{width:100%}
.daily-claim{display:grid;gap:0.5rem;margin-top:0.75rem;padding:1rem;border-radius:4px;box-shadow:0 0 0 1px var(--line-2) inset}
.daily-claim h3{margin:0;font:400 1.375rem/1.2 var(--f-display)}
.daily-claim p{margin:0;color:var(--text-2);font-size:0.875rem}
.daily-code{font:700 1.5rem/1 var(--f-num);color:var(--brass);letter-spacing:.18em;direction:ltr;unicode-bidi:isolate}
.daily-sheet{width:min(94vw,34rem);max-height:90dvh;padding:1.5rem;border-radius:4px;overflow-y:auto}
.daily-board-body{display:grid;gap:0.75rem;margin-top:1rem}
.daily-rows{display:grid;gap:0.375rem;margin:0;padding:0;list-style:none}
.daily-row{display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto;gap:0.75rem;align-items:center;padding:0.5rem 0.75rem;border-radius:3px;background:var(--ink-1);box-shadow:0 0 0 1px var(--line) inset}
.daily-row.is-mine{box-shadow:0 0 0 1px var(--brass) inset}
.daily-rank{font:700 1rem/1 var(--f-num);color:var(--text-3)}
.daily-crew{overflow-wrap:anywhere}
.daily-score{font:700 1rem/1 var(--f-num);color:var(--brass);direction:ltr;unicode-bidi:isolate}
.daily-crew-editor{display:grid;gap:0.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}
.daily-crew-editor h3{margin:0;font:400 1.375rem/1.2 var(--f-display)}
@media(min-width:1100px){
  .table-coaching[open]{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1rem}
  .table-coaching[open] .coaching-content{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1rem}
  .table-coaching[open] summary{min-width:5rem}
  .table-coaching[open] p{margin:0}
  .table-coaching[open] .btn{width:auto}
}
