/* P4 Warden design tokens, shared by the Chrome extension and the desktop app (apps/desktop copies this file).
   They follow the P4 Code design system: its neutral base palette, its five theme presets (each light and dark,
   16 tokens; success, warning, and info stay on the base palette), its radius scale, and its motion curve.

   Themes: html[data-theme] picks a preset; with no attribute the Default (P4 Code) preset applies.
   Mode: html[data-mode="light" | "dark"] pins the color scheme; with no attribute or "system" the operating
   system decides. Every color is a light-dark() pair, so one declaration serves both schemes and the page
   follows the system before any script runs. theme.js sets both attributes from localStorage.

   Icons are Lucide icons, ISC license, drawn as masks so they take the current color.
   Lucide is ISC licensed: Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2026 as part of
   Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2026. Permission to use,
   copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,
   provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS
   PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
   WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
   WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
   THE USE OR PERFORMANCE OF THIS SOFTWARE. */

:root { color-scheme: light dark; }
:root[data-mode="light"] { color-scheme: light; }
:root[data-mode="dark"] { color-scheme: dark; }

/* Default preset (P4 Code's neutral base: black primary in light, white in dark) and the base palette under every preset. */
:root {
  --background: light-dark(oklch(0.988 0.001 286), oklch(0.145 0.005 286));
  --foreground: light-dark(oklch(0.274 0.006 286), oklch(0.967 0.001 286));
  --card: light-dark(oklch(1 0 0), oklch(0.185 0.006 286));
  --popover: light-dark(oklch(1 0 0), oklch(0.205 0.006 286));
  --primary: light-dark(oklch(0.21 0.006 285.885), oklch(0.97 0 0));
  --primary-foreground: light-dark(oklch(1 0 0), oklch(0.205 0 0));
  --accent: light-dark(oklch(0.967 0.001 286), oklch(0.245 0.006 286));
  --accent-foreground: light-dark(oklch(0.21 0.006 286), oklch(0.967 0.001 286));
  --muted: light-dark(oklch(0.977 0.001 286), oklch(0.225 0.006 286));
  --muted-foreground: light-dark(oklch(0.442 0.006 286), oklch(0.674 0.006 286));
  --border: light-dark(oklch(0.92 0.004 286), oklch(0.274 0.006 286));
  --input: light-dark(oklch(0.871 0.006 286), oklch(0.311 0.006 286));
  --ring: light-dark(oklch(0.705 0.015 286.067), oklch(0.708 0 0));
  --sidebar: light-dark(oklch(0.967 0.001 286), oklch(0.185 0.006 286));
  --destructive: light-dark(oklch(0.637 0.237 25.331), oklch(0.704 0.191 22.216));
  --destructive-foreground: light-dark(oklch(0.505 0.213 27.518), oklch(0.783 0.157 21.5));

  /* Base palette tokens the presets leave alone (P4 Code index.css). */
  --card-foreground: var(--foreground);
  --popover-foreground: var(--foreground);
  --secondary: light-dark(oklch(0.985 0 0), rgb(255 255 255 / 4%));
  --secondary-foreground: var(--foreground);
  --success: oklch(0.696 0.17 162.48);
  --success-foreground: light-dark(oklch(0.508 0.118 165.612), oklch(0.765 0.177 163.223));
  --warning: oklch(0.769 0.188 70.08);
  --warning-foreground: light-dark(oklch(0.555 0.163 48.998), oklch(0.828 0.189 84.429));
  --info: oklch(0.623 0.214 259.815);
  --info-foreground: light-dark(oklch(0.488 0.243 264.376), oklch(0.707 0.165 254.624));

  /* Sidebar hierarchy: rows lift toward the card surface in light, tint with the accent in dark. */
  --sidebar-foreground: var(--foreground);
  --sidebar-muted-foreground: var(--muted-foreground);
  --sidebar-control-surface: light-dark(var(--accent), var(--muted));
  --sidebar-row-hover: light-dark(color-mix(in oklab, oklch(1 0 0) 55%, var(--sidebar)), var(--accent));
  --sidebar-row-active: light-dark(oklch(1 0 0), var(--accent));
  --sidebar-row-selected: light-dark(oklch(1 0 0), var(--muted));
  --sidebar-border: var(--border);

  /* Type: the system font, and P4 Code's monospace stack. */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;
  --font-mono: "SF Mono", "SFMono-Regular", "JetBrains Mono", Consolas, "Liberation Mono", Menlo, monospace;
  --text-xs: 12px;
  --text-sm: 13px;
  --text-md: 14px;
  --text-lg: 16px;
  --text-xl: 18px;
  --text-2xl: 20px;

  /* Geometry: P4 Code's radius scale from one base, its control heights, and a 4px spacing step. */
  --radius: 10px;
  --radius-sm: calc(var(--radius) - 4px);
  --radius-md: calc(var(--radius) - 2px);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) + 4px);
  --radius-2xl: calc(var(--radius) + 8px);
  --control: 32px;
  --control-compact: 28px;
  --field: 30px;
  --row: 44px;
  --icon: 16px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;

  /* Elevation: a hairline card shadow and P4 Code's dropdown shadow. */
  --shadow-xs: 0 1px 2px light-dark(rgb(0 0 0 / 5%), rgb(0 0 0 / 30%));
  --shadow-menu: 0 16px 40px -18px light-dark(rgb(0 0 0 / 55%), rgb(0 0 0 / 80%));
  --menu-edge: color-mix(in oklab, var(--foreground) 10%, transparent);

  /* Tints: P4 Code badges and alerts fill with a hue at 8% in light and 16% in dark. */
  --primary-soft: light-dark(color-mix(in oklab, var(--primary) 8%, transparent), color-mix(in oklab, var(--primary) 16%, transparent));
  --warning-soft: light-dark(color-mix(in oklab, var(--warning) 8%, transparent), color-mix(in oklab, var(--warning) 16%, transparent));
  --success-soft: light-dark(color-mix(in oklab, var(--success) 8%, transparent), color-mix(in oklab, var(--success) 16%, transparent));
  --destructive-soft: light-dark(color-mix(in oklab, var(--destructive) 8%, transparent), color-mix(in oklab, var(--destructive) 16%, transparent));

  /* Motion: P4 Code's menu (140ms) and panel (225ms) durations on its ease-out curve. */
  --motion-fast: 140ms;
  --motion-base: 225ms;
  --motion-ease: cubic-bezier(0.23, 1, 0.32, 1);
  --motion-shift: 12px;
  --motion-rise: -4px;

  /* Lucide icons (ISC, notice above). */
  --icon-vault: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2'/%3E%3Ccircle cx='7.5' cy='7.5' r='.5' fill='currentColor'/%3E%3Cpath d='m7.9 7.9 2.7 2.7'/%3E%3Ccircle cx='16.5' cy='7.5' r='.5' fill='currentColor'/%3E%3Cpath d='m13.4 10.6 2.7-2.7'/%3E%3Ccircle cx='7.5' cy='16.5' r='.5' fill='currentColor'/%3E%3Cpath d='m7.9 16.1 2.7-2.7'/%3E%3Ccircle cx='16.5' cy='16.5' r='.5' fill='currentColor'/%3E%3Cpath d='m13.4 13.4 2.7 2.7'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3C/svg%3E");
  --icon-generator: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='12' height='12' x='2' y='10' rx='2' ry='2'/%3E%3Cpath d='m17.92 14 3.5-3.5a2.24 2.24 0 0 0 0-3l-5-4.92a2.24 2.24 0 0 0-3 0L10 6'/%3E%3Cpath d='M6 18h.01'/%3E%3Cpath d='M10 14h.01'/%3E%3Cpath d='M15 6h.01'/%3E%3Cpath d='M18 9h.01'/%3E%3C/svg%3E");
  --icon-settings: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
  --icon-login: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z'/%3E%3Ccircle cx='16.5' cy='7.5' r='.5' fill='black'/%3E%3C/svg%3E");
  --icon-note: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z'/%3E%3Cpath d='M15 3v5a1 1 0 0 0 1 1h5'/%3E%3C/svg%3E");
  --icon-card: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='14' x='2' y='5' rx='2'/%3E%3Cline x1='2' x2='22' y1='10' y2='10'/%3E%3C/svg%3E");
  --icon-identity: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 10h2'/%3E%3Cpath d='M16 14h2'/%3E%3Cpath d='M6.17 15a3 3 0 0 1 5.66 0'/%3E%3Ccircle cx='9' cy='11' r='2'/%3E%3Crect x='2' y='5' width='20' height='14' rx='2'/%3E%3C/svg%3E");
  --icon-lock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E");
  --icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E");
  --icon-eye: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
  --icon-eye-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49'/%3E%3Cpath d='M14.084 14.158a3 3 0 0 1-4.242-4.242'/%3E%3Cpath d='M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143'/%3E%3Cpath d='m2 2 20 20'/%3E%3C/svg%3E");
  --icon-alert: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");
  --icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E");
  --icon-back: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E");
  --icon-caret: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  --icon-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  --icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21 21-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/svg%3E");
  --icon-ssh: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 19h8'/%3E%3Cpath d='m4 17 6-6-6-6'/%3E%3C/svg%3E");
  --icon-send: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z'/%3E%3Cpath d='m21.854 2.147-10.94 10.939'/%3E%3C/svg%3E");
  --icon-file: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z'/%3E%3Cpath d='M14 2v5a1 1 0 0 0 1 1h5'/%3E%3C/svg%3E");
  --icon-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");
  --icon-tag: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z'/%3E%3Ccircle cx='7.5' cy='7.5' r='.5' fill='black'/%3E%3C/svg%3E");
  --icon-folder: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z'/%3E%3C/svg%3E");
  --icon-trash: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 11v6'/%3E%3Cpath d='M14 11v6'/%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6'/%3E%3Cpath d='M3 6h18'/%3E%3Cpath d='M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/%3E%3C/svg%3E");
  --icon-key-round: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z'/%3E%3Ccircle cx='16.5' cy='7.5' r='.5' fill='black'/%3E%3C/svg%3E");
  --icon-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E");
  --icon-pencil: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z'/%3E%3Cpath d='m15 5 4 4'/%3E%3C/svg%3E");
  --icon-star-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8.34 8.34 2 9.27l5 4.87L5.82 21 12 17.77 18.18 21l-.59-3.43'/%3E%3Cpath d='M18.42 12.76 22 9.27l-6.91-1L12 2l-1.44 2.91'/%3E%3Cline x1='2' x2='22' y1='2' y2='22'/%3E%3C/svg%3E");
  --icon-folder-input: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1'/%3E%3Cpath d='M2 13h10'/%3E%3Cpath d='m9 16 3-3-3-3'/%3E%3C/svg%3E");
  --icon-copy-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='15' x2='15' y1='12' y2='18'/%3E%3Cline x1='12' x2='18' y1='15' y2='15'/%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E");
  --icon-rotate-ccw: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8'/%3E%3Cpath d='M3 3v5h5'/%3E%3C/svg%3E");
  --icon-more: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E");
  --icon-external: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E");
  --icon-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='M12 5v14'/%3E%3C/svg%3E");
  --icon-sidebar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2'/%3E%3Cpath d='M9 3v18'/%3E%3C/svg%3E");
  --icon-fingerprint: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4'/%3E%3Cpath d='M14 13.12c0 2.38 0 6.38-1 8.88'/%3E%3Cpath d='M17.29 21.02c.12-.6.43-2.3.5-3.02'/%3E%3Cpath d='M2 12a10 10 0 0 1 18-6'/%3E%3Cpath d='M2 16h.01'/%3E%3Cpath d='M21.8 16c.2-2 .131-5.354 0-6'/%3E%3Cpath d='M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2'/%3E%3Cpath d='M8.65 22c.21-.66.45-1.32.57-2'/%3E%3Cpath d='M9 6.8a6 6 0 0 1 9 5.2v2'/%3E%3C/svg%3E");
  --icon-laptop: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z'/%3E%3Cpath d='M20.054 15.987H3.946'/%3E%3C/svg%3E");
  --icon-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4'/%3E%3Cpath d='M12 8h.01'/%3E%3C/svg%3E");
}

/* Presets. Each sets the same 16 tokens as the Default above. */
:root[data-theme="grove"] {
  --background: light-dark(oklch(0.972369 0.005497 157.15), oklch(0.260865 0.02152 162.75));
  --foreground: light-dark(oklch(0.222003 0.03479 328.979), oklch(0.990339 0.008411 325.64));
  --card: light-dark(oklch(0.972369 0.005497 157.15), oklch(0.260865 0.02152 162.75));
  --popover: light-dark(oklch(0.932695 0.003778 160.944), oklch(0.411828 0.014378 166.627));
  --primary: light-dark(oklch(0.523295 0.112292 158.089), oklch(0.796228 0.133058 157.319));
  --primary-foreground: light-dark(oklch(0.990339 0.008411 325.64), oklch(0.222003 0.03479 328.979));
  --accent: light-dark(oklch(0.949276 0.004496 159.002), oklch(0.363192 0.016572 165.32));
  --accent-foreground: light-dark(oklch(0.222003 0.03479 328.979), oklch(0.990339 0.008411 325.64));
  --muted: light-dark(oklch(0.945455 0.012308 162.879), oklch(0.339728 0.039456 160.274));
  --muted-foreground: light-dark(oklch(0.527266 0.012309 320.683), oklch(0.715427 0.010896 171.428));
  --border: light-dark(oklch(0.864831 0.01312 167.255), oklch(0.457475 0.044046 160.971));
  --input: light-dark(oklch(0.829746 0.016084 168.234), oklch(0.519849 0.049896 160.863));
  --ring: light-dark(oklch(0.523295 0.112292 158.089), oklch(0.796228 0.133058 157.319));
  --sidebar: light-dark(oklch(0.972369 0.005497 157.15), oklch(0.260865 0.02152 162.75));
  --destructive: light-dark(oklch(0.637823 0.237287 25.436), oklch(0.655108 0.221148 23.473));
  --destructive-foreground: light-dark(oklch(0.509494 0.208583 28.513), oklch(0.704237 0.187511 22.228));
}
:root[data-theme="ocean"] {
  --background: light-dark(oklch(0.974199 0.002856 241.597), oklch(0.242641 0.024125 250.573));
  --foreground: light-dark(oklch(0.222003 0.03479 328.979), oklch(0.990339 0.008411 325.64));
  --card: light-dark(oklch(0.974199 0.002856 241.597), oklch(0.242641 0.024125 250.573));
  --popover: light-dark(oklch(0.934442 0.003181 269.1), oklch(0.398517 0.018232 255.72));
  --primary: light-dark(oklch(0.536684 0.120219 247.01), oklch(0.758933 0.105833 241.548));
  --primary-foreground: light-dark(oklch(0.990339 0.008411 325.64), oklch(0.222003 0.03479 328.979));
  --accent: light-dark(oklch(0.951058 0.002962 258.339), oklch(0.348439 0.019942 253.696));
  --accent-foreground: light-dark(oklch(0.222003 0.03479 328.979), oklch(0.990339 0.008411 325.64));
  --muted: light-dark(oklch(0.948004 0.009649 241.695), oklch(0.319287 0.036766 246.065));
  --muted-foreground: light-dark(oklch(0.528741 0.01828 313.823), oklch(0.691936 0.016294 261.588));
  --border: light-dark(oklch(0.867646 0.013482 252.362), oklch(0.438653 0.039496 245.44));
  --input: light-dark(oklch(0.832939 0.017389 252.598), oklch(0.500905 0.043574 244.781));
  --ring: light-dark(oklch(0.536684 0.120219 247.01), oklch(0.758933 0.105833 241.548));
  --sidebar: light-dark(oklch(0.974199 0.002856 241.597), oklch(0.242641 0.024125 250.573));
  --destructive: light-dark(oklch(0.637823 0.237287 25.436), oklch(0.655108 0.221148 23.473));
  --destructive-foreground: light-dark(oklch(0.509494 0.208583 28.513), oklch(0.702184 0.189226 22.228));
}
:root[data-theme="ember"] {
  --background: light-dark(oklch(0.976527 0.002685 60.725), oklch(0.245899 0.019144 42.044));
  --foreground: light-dark(oklch(0.222003 0.03479 328.979), oklch(0.990339 0.008411 325.64));
  --card: light-dark(oklch(0.976527 0.002685 60.725), oklch(0.245899 0.019144 42.044));
  --popover: light-dark(oklch(0.936659 0.002879 29.96), oklch(0.401111 0.014308 34.896));
  --primary: light-dark(oklch(0.552831 0.129438 44.656), oklch(0.762174 0.124117 52.082));
  --primary-foreground: light-dark(oklch(0.990339 0.008411 325.64), oklch(0.222003 0.03479 328.979));
  --accent: light-dark(oklch(0.953321 0.002701 42.266), oklch(0.351262 0.01565 37.592));
  --accent-foreground: light-dark(oklch(0.222003 0.03479 328.979), oklch(0.990339 0.008411 325.64));
  --muted: light-dark(oklch(0.950842 0.009273 51.528), oklch(0.322144 0.03574 48.309));
  --muted-foreground: light-dark(oklch(0.530413 0.018453 341.181), oklch(0.692479 0.015227 30.963));
  --border: light-dark(oklch(0.870631 0.013204 39.431), oklch(0.44099 0.040202 48.807));
  --input: light-dark(oklch(0.836213 0.017153 38.661), oklch(0.503003 0.045721 49.44));
  --ring: light-dark(oklch(0.552831 0.129438 44.656), oklch(0.762174 0.124117 52.082));
  --sidebar: light-dark(oklch(0.976527 0.002685 60.725), oklch(0.245899 0.019144 42.044));
  --destructive: light-dark(oklch(0.637823 0.237287 25.436), oklch(0.655108 0.221148 23.473));
  --destructive-foreground: light-dark(oklch(0.509494 0.208583 28.513), oklch(0.702184 0.189226 22.228));
}
:root[data-theme="iris"] {
  --background: light-dark(oklch(0.976531 0.003855 303.226), oklch(0.225975 0.031062 293.741));
  --foreground: light-dark(oklch(0.222003 0.03479 328.979), oklch(0.990339 0.008411 325.64));
  --card: light-dark(oklch(0.976531 0.003855 303.226), oklch(0.225975 0.031062 293.741));
  --popover: light-dark(oklch(0.936665 0.005041 310.132), oklch(0.386739 0.024023 297.509));
  --primary: light-dark(oklch(0.525348 0.15373 294.176), oklch(0.671712 0.169136 293.929));
  --primary-foreground: light-dark(oklch(0.990339 0.008411 325.64), oklch(0.222003 0.03479 328.979));
  --accent: light-dark(oklch(0.953326 0.004536 307.676), oklch(0.335291 0.026008 296.394));
  --accent-foreground: light-dark(oklch(0.222003 0.03479 328.979), oklch(0.990339 0.008411 325.64));
  --muted: light-dark(oklch(0.950194 0.011956 300.733), oklch(0.291515 0.05276 294.209));
  --muted-foreground: light-dark(oklch(0.529955 0.022319 321.556), oklch(0.663321 0.025932 301.862));
  --border: light-dark(oklch(0.869608 0.018226 303.859), oklch(0.40874 0.058536 295.893));
  --input: light-dark(oklch(0.834773 0.023405 303.676), oklch(0.46756 0.065775 296.265));
  --ring: light-dark(oklch(0.525348 0.15373 294.176), oklch(0.671712 0.169136 293.929));
  --sidebar: light-dark(oklch(0.976531 0.003855 303.226), oklch(0.225975 0.031062 293.741));
  --destructive: light-dark(oklch(0.637823 0.237287 25.436), oklch(0.655108 0.221148 23.473));
  --destructive-foreground: light-dark(oklch(0.509494 0.208583 28.513), oklch(0.702184 0.189226 22.228));
}

/* A theme or mode change swaps every token at once; nothing animates between the two palettes (theme.js). */
:root.no-transitions, :root.no-transitions * { transition: none !important; }

/* Motion from the first frame: under Reduce Motion nothing travels. Fades that carry state stay. */
@media (prefers-reduced-motion: reduce) {
  :root { --motion-shift: 0px; --motion-rise: 0px; }
}
