/* Direction: Suds & Signal — clean laundromat, pale aqua paper, deep navy ink, ocean-teal action */
/* Completed by the platform from the short form: both modes, every
   palette token, each text-on-ground pair at its floor. To restyle, write the
   short form again (the decisions in one :root) and it is completed again. */

:root {
  --canvas: #f1f8fa;
  --surface: #ffffff;
  --surface-2: #e5ecef;
  --border: #d0d8da;
  --border-strong: #a9b2b5;
  --ink: #0d2230;
  --muted: #4a6372;
  --accent: #0e7490;
  --accent-hover: #0c637a;
  --accent-ink: #ffffff;
  --accent-text: #0b6078;
  --accent-strong: #0d6b84;
  --accent-soft: #d1e6eb;
  --accent-border: #8bbdca;
  --success: #15803d;
  --success-ink: #ffffff;
  --success-soft: #d7eae3;
  --success-strong: #137638;
  --warning: #b45309;
  --warning-ink: #ffffff;
  --warning-soft: #eae4dd;
  --warning-strong: #a64c08;
  --danger: #b91c1c;
  --danger-ink: #ffffff;
  --danger-soft: #eadedf;
  --danger-strong: #b91c1c;
  --chart-1: #0e7490;
  --chart-2: #7977ce;
  --chart-3: #802f65;
  --chart-4: #bb6038;
  --chart-5: #58510a;
  --chart-6: #21966b;

  --font-display: "Space Grotesk", "Inter", system-ui, sans-serif;
  --font-body: "Inter", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;
  --display-weight: 700;
  --display-tracking: -0.03em;
  --radius-card: 20px;
  --radius-btn: 999px;
  --radius-input: 12px;
  --x-on-photo: #ffffff;
  --font-sans: "Inter", system-ui, sans-serif;
  --eyebrow-tracking: 0.08em;
}

html[data-theme="dark"] {
  --canvas: #020e11;
  --surface: #1b2629;
  --surface-2: #0f1a1d;
  --border: #253032;
  --border-strong: #4e5658;
  --ink: #f1f8fa;
  --muted: #919a9d;
  --accent: #0e7490;
  --accent-hover: #3289a1;
  --accent-ink: #ffffff;
  --accent-text: #529bb0;
  --accent-strong: #4392a9;
  --accent-soft: #05242d;
  --accent-border: #073c4a;
  --success: #15803d;
  --success-ink: #ffffff;
  --success-soft: #06271b;
  --success-strong: #499c68;
  --warning: #b45309;
  --warning-ink: #ffffff;
  --warning-soft: #291d0f;
  --warning-strong: #c57a40;
  --danger: #b91c1c;
  --danger-ink: #ffffff;
  --danger-soft: #2a1113;
  --danger-strong: #d16969;
  --chart-1: #1a7a96;
  --chart-2: #7f7dd5;
  --chart-3: #b45e94;
  --chart-4: #c2663e;
  --chart-5: #8e8216;
  --chart-6: #139e6f;
}

/* QR frame: always white so phone cameras can read it in dark mode */
.qr-box { display: grid; place-items: center; width: 232px; height: 232px; padding: 16px; border-radius: 16px; background: var(--x-on-photo); border: 1px solid var(--border); }
.qr-box:empty { display: none; }
.qr-box img, .qr-box canvas { max-width: 100%; height: auto; }

/* The washing drum on each machine card */
.drum { position: relative; width: 64px; height: 64px; border-radius: 50%; border: 5px solid var(--accent); background: var(--accent-soft); overflow: hidden; }
.drum span { position: absolute; left: -10%; right: -10%; bottom: -30%; height: 70%; border-radius: 45%; background: var(--accent); opacity: .35; animation: drum-sway 5s ease-in-out infinite; }
.machine-card:hover .drum span { animation-duration: 1.6s; }
@keyframes drum-sway { 0%, 100% { transform: translateX(-6%) rotate(-4deg); } 50% { transform: translateX(6%) rotate(4deg); } }

.pulse-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--accent); animation: pulse-dot 1.4s ease-in-out infinite; }
@keyframes pulse-dot { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.6); } }

.dev-bar { height: 8px; border-radius: 999px; background: var(--accent-soft); overflow: hidden; }
.dev-bar span { display: block; height: 100%; border-radius: 999px; background: var(--accent); transition: width .6s ease; }
.dev-card[hx-request], .dev-card.htmx-request { opacity: .7; }

html.reduced-motion .drum span, html.reduced-motion .pulse-dot { animation: none; }
