:root{color-scheme:dark;--tidal-50: #faffe6;--tidal-100: #f1fdca;--tidal-200: #e6fca6;--tidal-300: #cdf660;--tidal-400: #b5eb30;--tidal-500: #97d111;--tidal-600: #74a709;--tidal-700: #587f0c;--tidal-800: #476410;--tidal-900: #3c5512;--tidal-950: #1e2f04;--bg: #0b0f14;--fg: #e7edf3;--muted: #8b97a5;--line: #1e2733;--accent: var(--tidal-500);--accent-ink: var(--tidal-950);--accent-glow: 151, 209, 17;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);touch-action:manipulation}body{color:var(--fg);min-height:100dvh;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}#app{min-height:100dvh}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}h1[tabindex="-1"]:focus,h1[tabindex="-1"]:focus-visible{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}button{font:inherit;cursor:pointer;min-height:44px;border-radius:10px;border:1px solid transparent;padding:.7rem 1.1rem;transition:filter .15s ease,opacity .15s ease}button:disabled{opacity:.5;cursor:default}button:focus-visible{outline-offset:3px}.primary{background:var(--accent);color:var(--accent-ink);font-weight:700;box-shadow:0 8px 24px rgba(var(--accent-glow),.25)}.primary:not(:disabled):hover{filter:brightness(1.08)}.primary.big{padding:.9rem 2rem;font-size:1.05rem}.ghost{background:transparent;border-color:#2a3846;color:var(--fg)}.ghost:hover{border-color:#3a4c5e}.screen{min-height:100dvh}.screen.center{display:flex;flex-direction:column;gap:.9rem;align-items:center;justify-content:center;padding:2rem;color:var(--muted);text-align:center}.screen.err{color:#ff8f8f}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:citytap-spin .8s linear infinite}@keyframes citytap-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,:before,:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.spinner{animation:none;border-top-color:var(--line)}}
