/* The hidden attribute must win over every class rule that sets display (.btn, #tabs button, .desk). */
[hidden]{display:none!important}
/* Payload — single dark look on purpose. Every color flows through these tokens. */
:root{
  color-scheme:dark;
  --bg:#000; --bg-2:#0A0A0A; --panel:#111; --hair:#2A2A2A;
  --ink:#FFF; --ink-2:#BDBDBD; --ink-3:#8C8C8C;   /* was #777: 4.2:1 on --panel failed AA for the sub-lines and labels set in it (UX audit 2026-09-06) */ --line:#E8E4DA; /* off-white tether lines */
  --red:#E3312D; --glow:#FFFFFF;
  /* "in active competition" (reels in the currently deployed payload). Violet is the only hue the
     five tier colours do not already claim, and --s is the SAME hex as --red, so a red marker
     would read as S-tier on the very table it appears in. */
  --live:#A855F7; --live-soft:rgba(168,85,247,.45);
  --bronze:#B87333; --silver:#C0C0C0; --gold:#D4AF37; --platinum:#E5E4E2;
  --s:#E3312D; --a:#F28C28; --b:#E9C46A; --c:#4CAF7D; --d:#4A90D9;
  /* Vision's nebula (screens/void.js + screens/vision.js): magenta · violet · cyan · ember */
  --neb-1:#ff3fa4;--neb-2:#8a5cff;--neb-3:#2ee6ff;--neb-4:#ff7a3d;--void-ink:#120a24;--void-paper:#f4f1ff;
  --radius:10px; --font:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Inter,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,monospace;
  --safe-t:env(safe-area-inset-top,0px); --safe-b:env(safe-area-inset-bottom,0px);
  --safe-l:env(safe-area-inset-left,0px); --safe-r:env(safe-area-inset-right,0px);
}
/* touch-action:manipulation kills the double-tap zoom (which stranded users zoomed into a sheet) but
   keeps two-finger pinch zoom. Never set user-scalable=no or maximum-scale in the viewport meta. */
html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--font);-webkit-font-smoothing:antialiased;touch-action:manipulation}
button,input,select,textarea{font:inherit;font-size:16px}
.btn{display:inline-block;border:1px solid var(--ink);border-radius:var(--radius);background:var(--bg);color:var(--ink);padding:.8rem 1.4rem;font-size:16px;cursor:pointer;letter-spacing:.04em}
.btn:active{background:#222}.btn.danger{border-color:var(--red);color:var(--red)}
.field{border:1px solid var(--ink);border-radius:var(--radius);background:var(--bg);color:var(--ink);padding:.9rem 1.1rem;font-size:18px;width:100%;box-sizing:border-box;outline:none}
.field::placeholder{color:#8A8A8A}
.field:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
/* Vision's motion, shared by the Vision tab and the Vision shell (void.js). */
@keyframes v-drift{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(4px,-5px) scale(1.06)}66%{transform:translate(-5px,3px) scale(.96)}}
@keyframes v-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.035) translateY(-2px)}}
@keyframes v-pulse{0%,100%{filter:drop-shadow(0 0 18px #8a5cff88)}50%{filter:drop-shadow(0 0 30px #2ee6ffcc)}}
@keyframes v-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}

/* UX audit 2026-09-06 (design pass): system blue selection + system-tinted checkboxes/radios leaked into a dark-only app;
   the ambient loops kept running for people who asked the OS for less motion. Tokens below name the values already in use
   (nothing moves); screens migrate to them as they are touched. */
:root{--bg-void:#05030b;--bg-void-rgb:5,3,11;--r-sheet:18px;--r-panel:16px;--r-card:14px;--tabbar:68px;--above-tabs:calc(var(--safe-b) + 84px);--above-tabs-2:calc(var(--safe-b) + 118px);--ease-sheet:cubic-bezier(.2,.8,.2,1);--ease-enter:cubic-bezier(.22,.61,.36,1);--scrim:rgba(0,0,0,.72)}
::selection{background:var(--ink);color:var(--bg)}
input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--ink)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* House rule: controls never trigger iOS zoom, including inherited upstream small controls. */
button,input,select,textarea{font-size:max(16px,1em)!important}
