/* Planka design tokens — den enda källan för färg, avstånd, radier, typografi, skuggor och rörelse.
   Mörkt är standard; html[data-theme="light"] byter bara färgerna. Komponenter använder --color-*, --space-*,
   --radius-*, --text-*, --shadow-*, --dur/--ease. De gamla namnen längst ned är alias för äldre komponenter.
   Lager i index.html: tokens, bas (style.css), komponenter (shell-*, chat-*), vyer. Ordningen är kaskaden. */

@font-face {
  font-family: "Instrument Sans";
  src: url("/fonts/instrument-sans.woff2?v=1") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Instrument Sans";
  src: url("/fonts/instrument-sans-italic.woff2?v=1") format("woff2");
  font-weight: 400 700;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/fonts/plex-mono-400.woff2?v=1") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/fonts/plex-mono-500.woff2?v=1") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

:root {
  color-scheme: dark;

  /* Färg — mjuk grafit och lila ljus. Grönt reserveras för verifierat lyckat. */
  --color-bg: #0c0d13;
  --color-bg-subtle: #11121a;
  --color-surface: #1b1c27;
  --color-surface-hover: #252633;
  --color-surface-active: #30313f;
  --color-elevated: #171821;
  --color-overlay: rgba(0, 0, 0, 0.62);
  --color-scrim: rgba(0, 0, 0, 0.76);
  --color-border: rgba(255, 255, 255, 0.08);
  --color-border-strong: rgba(255, 255, 255, 0.16);
  --color-text: #f0eff7;
  --color-text-2: #b0aebf;
  --color-text-3: #9190a5;
  --color-text-inverse: #121214;
  --color-accent: #beb0ed;
  --color-accent-strong: #e7dcfb;
  --color-accent-soft: rgba(190, 176, 237, .10);
  --color-on-accent: #201a30;
  --color-success: #3dbe86;
  --color-success-soft: rgba(61, 190, 134, 0.14);
  --color-warning: #fbbf24;
  --color-warning-soft: rgba(251, 191, 36, 0.12);
  --color-danger: #f87171;
  --color-danger-soft: rgba(248, 113, 113, 0.12);
  --color-code-bg: #121214;
  --color-focus: #cbbced;
  --app-brand: #beb0ed;
  --app-primary: #cbbced;
  --app-glow: rgba(164, 142, 205, .045);
  --app-panel: #171821;
  --app-raised-shadow: 0 12px 34px rgba(0, 0, 0, .18);
  --finish-raised: #1b1c27;
  /* Kodfärger (highlight.js): dämpade, läsbara mot --color-code-bg */
  --hl-comment: #7a7a84;
  --hl-string: #e4d2a4;
  --hl-keyword: #c6a8ff;
  --hl-number: #f2c27b;
  --hl-function: #8cb8ff;
  --hl-tag: #7fd1e8;
  --hl-attr: #e8c07a;
  --hl-prop: #9fc4ff;
  --hl-var: #f0a6a6;

  /* Avstånd (4 px-skala) */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;

  /* Radier */
  --radius-xs: 6px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-pill: 999px;

  /* Typografi — en sans, en mono */
  --font-sans: "Instrument Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Consolas, monospace;
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-md: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.375rem;
  --text-2xl: 1.75rem;
  --leading-tight: 1.3;
  --leading-normal: 1.5;
  --leading-relaxed: 1.65;
  --weight-normal: 400;
  --weight-medium: 500;
  --weight-semibold: 600;

  /* Skuggor */
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.45);
  --shadow-lg: 0 24px 64px rgba(0, 0, 0, 0.6);

  /* Rörelse */
  --dur-fast: 120ms;
  --dur: 200ms;
  --dur-slow: 320ms;
  --ease: cubic-bezier(0.2, 0.8, 0.2, 1);

  /* Layout */
  --sidebar-w: 248px;
  --header-h: 52px;
  --chat-max: 744px;
  --panel-w: 480px;
  --composer-bg: var(--color-elevated);
  --composer-border: var(--color-border-strong);
  --radius-composer: 24px;
  --shadow-menu: var(--shadow-lg);
  --sheet-w: 720px;
  --z-header: 10;
  --z-sidebar: 30;
  --z-panel: 40;
  --z-sheet: 60;
  --z-dialog: 80;
  --z-toast: 90;
}

html[data-theme="light"] {
  color-scheme: light;
  --color-bg: #fafbff;
  --color-bg-subtle: #f3f5fa;
  --color-surface: #e9edf6;
  --color-surface-hover: #e3e8f3;
  --color-surface-active: #d8dfef;
  --color-elevated: #ffffff;
  --color-overlay: rgba(18, 18, 20, 0.35);
  --color-scrim: rgba(18, 18, 20, 0.55);
  --color-border: rgba(0, 0, 0, 0.08);
  --color-border-strong: rgba(0, 0, 0, 0.14);
  --color-text: #171c29;
  --color-text-2: #596174;
  --color-text-3: #5d6577;
  --color-text-inverse: #f6f5f2;
  --color-accent: #66508f;
  --color-accent-strong: #4c396e;
  --color-accent-soft: rgba(102, 80, 143, .085);
  --color-on-accent: #ffffff;
  --color-success: #0f7a45;
  --color-success-soft: rgba(15, 122, 69, 0.1);
  --color-warning: #b45309;
  --color-warning-soft: rgba(180, 83, 9, 0.1);
  --color-danger: #dc2626;
  --color-danger-soft: rgba(220, 38, 38, 0.08);
  --color-code-bg: #efeee9;
  --color-focus: #65478f;
  --app-brand: #66508f;
  --app-primary: #65478f;
  --app-glow: rgba(102, 80, 143, .035);
  --app-panel: #ffffff;
  --app-raised-shadow: 0 12px 30px rgba(25, 37, 76, .07);
  --finish-raised: #ffffff;
  --hl-comment: #6e7781;
  --hl-string: #8a6230;
  --hl-keyword: #8250df;
  --hl-number: #9a5b00;
  --hl-function: #0550ae;
  --hl-tag: #0a6e7d;
  --hl-attr: #953800;
  --hl-prop: #0550ae;
  --hl-var: #b42318;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
  --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.08);
  --shadow-lg: 0 24px 64px rgba(0, 0, 0, 0.14);
}

/* Alias för äldre komponenter och fristående sidor (premium, home). Lägg inte till nya. */
:root,
html[data-theme="light"] {
  --bg-base: var(--color-bg);
  --bg-main: var(--color-bg);
  --bg-surface: var(--color-surface);
  --bg-elevated: var(--color-elevated);
  --border-subtle: var(--color-border);
  --border-hover: var(--color-border-strong);
  --text-primary: var(--color-text);
  --text-secondary: var(--color-text-2);
  --text-muted: var(--color-text-3);
  --danger: var(--color-danger);
  --ok: var(--color-success);
  --font-main: var(--font-sans);
  --shadow-chip: none;
}

/* Rörelse av för den som vill */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important; /* snurror står still i stället för att flimra */
    transition-duration: 1ms !important;
    scroll-behavior: auto !important;
  }
}
@keyframes planka-spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes planka-pulse {
  50% {
    opacity: 0.35;
  }
}
@keyframes planka-in {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
}
