/* 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 — varm nästan-svart. Elfenben är accenten. Grönt bara för lyckat. */
  --color-bg: #0e0e10;
  --color-bg-subtle: #141416;
  --color-surface: #1c1c1f;
  --color-surface-hover: #242428;
  --color-surface-active: #2c2c31;
  --color-elevated: #18181b;
  --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: #f6f4f0;
  --color-text-2: #b0aea8;
  --color-text-3: #8d8b86;
  --color-text-inverse: #121214;
  --color-accent: #f3efe6;
  --color-accent-strong: #ffffff;
  --color-accent-soft: rgba(243, 239, 230, 0.14);
  --color-on-accent: #161616;
  --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: #f3efe6;
  /* 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: #f6f5f2;
  --color-bg-subtle: #eeede8;
  --color-surface: #e6e4de;
  --color-surface-hover: #f3f2ed;
  --color-surface-active: #dbd9d2;
  --color-elevated: #fffcf8;
  --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: #1a1916;
  --color-text-2: #5e5c56;
  --color-text-3: #5f5d57;
  --color-text-inverse: #f6f5f2;
  --color-accent: #1c1b18;
  --color-accent-strong: #000000;
  --color-accent-soft: rgba(28, 27, 24, 0.08);
  --color-on-accent: #f7f6f3;
  --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: #1c1b18;
  --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);
  }
}
