/* =============================================================================
  Bec & Will Design System  theme.css
  A drop-in look-and-feel for every app. Warm, rounded, calm, accessibility-first
  (Bec Broomsticks tokens, Tiimo-inspired).

  USE IT:
   <link rel="stylesheet" href="theme.css">
   <html data-theme="light">  <!-- or "dark" or "marketing" -->

  The CSS custom properties below are the real contract build with
  var(--ds-*) and your app inherits the system + theme switching for free.
  Component classes (.ds-btn, .ds-card, …) are convenience on top.

  Fonts: Recoleta (display) is a paid font; we fall back to Fraunces (free,
  Google Fonts, same warm rounded-serif feel) so it looks right out of the box.
  ========================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&display=swap");

/* ---- theme-independent tokens (same on every surface) --------------------- */
:root {
 /* brand */
 --ds-lavender:    #AF8DFF;
 --ds-lavender-strong: #9F85FF;
 --ds-lavender-tint:  #ECE7FF;
 --ds-interactive:   #706DE3;
 --ds-accent:     var(--ds-lavender);  /* alias: the brand colour */

 /* category accents (pastel set, sit on any surface) */
 --ds-cat-lime:    #EAFBA9;
 --ds-cat-lavender:  #AF8DFF;
 --ds-cat-sage:    #D4DFAB;
 --ds-cat-coral:   #C85E71;
 --ds-cat-sky:    #95C8DB;
 --ds-cat-periwinkle: #B8ACD4;

 /* priority */
 --ds-prio-high:  #7C5157;
 --ds-prio-medium: #A28760;

 /* radii */
 --ds-radius-pill: 999px;
 --ds-radius-card: 16px;
 --ds-radius-sm:  8px;

 /* spacing scale (4px base) */
 --ds-space-1: 4px; --ds-space-2: 8px; --ds-space-3: 12px;
 --ds-space-4: 16px; --ds-space-5: 24px; --ds-space-6: 32px; --ds-space-8: 48px;

 /* type */
 --ds-font-ui:   "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
 --ds-font-display: "Recoleta", "Fraunces", Georgia, "Times New Roman", serif;
 --ds-text-hero:  clamp(34px, 5vw, 56px);
 --ds-text-h1:   32px;
 --ds-text-h2:   26px;
 --ds-text-h3:   19px;
 --ds-text-body:  16px;
 --ds-text-small:  13px;

 /* depth */
 --ds-shadow-soft: rgba(22,22,19,.18) 0 40px 30px -30px;
 --ds-shadow-warm: rgba(217,119,87,.24) 0 40px 80px 0;
 --ds-shadow-card: rgba(0,0,0,.06) 0 4px 12px 0;

 /* motion + layout */
 --ds-transition: .2s ease;
 --ds-maxw: 980px;

 /* Streamline icons are recoloured to the rich brand purple, which reads
   on light AND dark surfaces shown as-is everywhere. Icons sitting on
   lavender accent buttons (play, toggled-on chips) are flattened white. */
 --icon-filter: none;
 --play-ico-filter: brightness(0) invert(1);

 /* fine grain/noise overlay (apply with .ds-grain) */
 --ds-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E");

 /* default surfaces = "App · Light" so apps work with no data-theme set */
 --ds-bg:     #FFFFFF;
 --ds-surface:  #EDEBE9;
 --ds-surface-2: #F6F5F4;
 --ds-surface-3: #FCFCFC;
 --ds-text:    #111717;
 --ds-text-2:   #363636;
 --ds-text-muted: #A7A7A7;
 --ds-border:   #E2DFDB;
 --ds-btn-primary-bg:  #161212;
 --ds-btn-primary-fg:  #FFFFFF;
 --ds-btn-secondary-bg: #E5E0DA;
 --ds-btn-secondary-fg: #161213;
 --ds-hero-glow: none;
}

/* ---- App · Dark ---------------------------------------------------------- */
html[data-theme="dark"] {
 --ds-bg:    #040404;
 --ds-surface:  #121212;
 --ds-surface-2: #1B1B1B;
 --ds-surface-3: #363636;
 --ds-text:   #FFFFFF;
 --ds-text-2:  #E1E1E1;
 --ds-text-muted:#787878;
 --ds-border:  #262626;
 --ds-btn-primary-bg:  #FFFFFF;
 --ds-btn-primary-fg:  #161213;
 --ds-btn-secondary-bg: #1B1B1B;
 --ds-btn-secondary-fg: #FFFFFF;
 --ds-shadow-card: rgba(0,0,0,.4) 0 6px 16px 0;
 --ds-hero-glow: radial-gradient(circle at 100% 0%, rgba(159,133,255,.30), rgba(0,0,0,0) 55%);
}

/* ---- App · Light (explicit, same as default) ----------------------------- */
html[data-theme="light"] {
 --ds-bg:    #FFFFFF;
 --ds-surface:  #EDEBE9;
 --ds-surface-2: #F6F5F4;
 --ds-surface-3: #FCFCFC;
 --ds-text:   #111717;
 --ds-text-2:  #363636;
 --ds-text-muted:#A7A7A7;
 --ds-border:  #E2DFDB;
 --ds-btn-primary-bg:  #161212;
 --ds-btn-primary-fg:  #FFFFFF;
 --ds-btn-secondary-bg: #E5E0DA;
 --ds-btn-secondary-fg: #161213;
 --ds-hero-glow: none;
}

/* ---- Marketing (warm, editorial, lavender wash) -------------------------- */
html[data-theme="marketing"] {
 --ds-bg:    #FCFCFC;
 --ds-surface:  #F4F1FB;
 --ds-surface-2: #FFFFFF;
 --ds-surface-3: #EFE8FF;
 --ds-text:   #161213;
 --ds-text-2:  rgba(22,22,19,.75);
 --ds-text-muted:rgba(22,22,19,.55);
 --ds-border:  #E7E2F2;
 --ds-btn-primary-bg:  #161212;
 --ds-btn-primary-fg:  #FFFFFF;
 --ds-btn-secondary-bg: #E5E0DA;
 --ds-btn-secondary-fg: #161213;
 --ds-shadow-card: var(--ds-shadow-soft);
 --ds-hero-glow: radial-gradient(120% 120% at 50% 0%, var(--ds-surface-3) 0%, var(--ds-bg) 70%),
         radial-gradient(circle at 100% 50%, rgba(159,133,255,.45), rgba(0,0,0,0) 60%);
}

/* =============================================================================
  Base elements (opt-in: only affects pages that use the system globally)
  ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
body.ds {
 margin: 0;
 background: var(--ds-bg);
 color: var(--ds-text);
 font: var(--ds-text-body)/1.6 var(--ds-font-ui);
 -webkit-font-smoothing: antialiased;
 transition: background var(--ds-transition), color var(--ds-transition);
}
.ds a { color: var(--ds-interactive); text-underline-offset: 2px; }

.ds-display { font-family: var(--ds-font-display); font-weight: 600; line-height: 1.1; }
.ds h1, .ds-h1 { font-family: var(--ds-font-display); font-weight: 600; font-size: var(--ds-text-h1); margin: 0 0 var(--ds-space-3); }
.ds h2, .ds-h2 { font-family: var(--ds-font-display); font-weight: 500; font-size: var(--ds-text-h2); margin: var(--ds-space-6) 0 var(--ds-space-2); }
.ds h3, .ds-h3 { font-weight: 700; font-size: var(--ds-text-h3); margin: var(--ds-space-4) 0 var(--ds-space-2); }
.ds-hero-title { font-family: var(--ds-font-display); font-weight: 600; font-size: var(--ds-text-hero); line-height: 1.04; margin: 0 0 var(--ds-space-2); }
.ds-muted { color: var(--ds-text-muted); }
.ds-lead { color: var(--ds-text-2); }

/* =============================================================================
  Components
  ========================================================================== */

/* buttons fully rounded pills */
.ds-btn {
 font: 600 15px var(--ds-font-ui);
 border: 0; cursor: pointer;
 border-radius: var(--ds-radius-pill);
 padding: 14px 26px;
 transition: transform var(--ds-transition), filter var(--ds-transition), background var(--ds-transition);
}
.ds-btn:hover { transform: translateY(-1px); }
.ds-btn:active { transform: translateY(0); }
.ds-btn-primary  { background: var(--ds-btn-primary-bg);  color: var(--ds-btn-primary-fg); }
.ds-btn-secondary { background: var(--ds-btn-secondary-bg); color: var(--ds-btn-secondary-fg); }
.ds-btn-accent  { background: var(--ds-accent);      color: #161213; }
.ds-btn-accent:hover { background: var(--ds-lavender-strong); }
.ds-btn-ghost   { background: transparent; color: var(--ds-interactive); border: 1.5px solid var(--ds-text); }

/* cards / panels */
.ds-card {
 background: var(--ds-surface);
 border: 1px solid var(--ds-border);
 border-radius: var(--ds-radius-card);
 padding: var(--ds-space-5);
 box-shadow: var(--ds-shadow-card);
}
.ds-card-flat { box-shadow: none; }

/* inputs */
.ds-input {
 width: 100%;
 background: var(--ds-surface-2);
 color: var(--ds-text);
 border: 1px solid var(--ds-border);
 border-radius: var(--ds-radius-pill);
 padding: 12px 16px;
 font: var(--ds-text-body) var(--ds-font-ui);
 outline: none;
}
.ds-input:focus { border-color: var(--ds-accent); box-shadow: 0 0 0 3px var(--ds-lavender-tint); }

/* pills & category chips */
.ds-pill { display: inline-block; background: var(--ds-surface-3); color: var(--ds-text-2);
 border-radius: var(--ds-radius-pill); padding: 4px 12px; font-size: var(--ds-text-small); font-weight: 600; }
.ds-chip { display: inline-flex; align-items: center; gap: 6px;
 border-radius: var(--ds-radius-pill); padding: 6px 12px; font-size: var(--ds-text-small); font-weight: 600; color: #161213; }
.ds-chip-lime    { background: var(--ds-cat-lime); }
.ds-chip-sage    { background: var(--ds-cat-sage); }
.ds-chip-sky    { background: var(--ds-cat-sky); }
.ds-chip-coral   { background: var(--ds-cat-coral); color: #fff; }
.ds-chip-lavender  { background: var(--ds-cat-lavender); }
.ds-chip-periwinkle { background: var(--ds-cat-periwinkle); }

/* priority chips */
.ds-prio { display: inline-flex; align-items: center; gap: 6px; color: #fff; font-weight: 600;
 font-size: var(--ds-text-small); padding: 8px 14px; border-radius: var(--ds-radius-pill); }
.ds-prio-high  { background: var(--ds-prio-high); }
.ds-prio-medium { background: var(--ds-prio-medium); }
.ds-prio-low  { background: var(--ds-surface-3); color: var(--ds-text); }

/* planner task card (avatar + title + meta + checkbox) */
.ds-task { display: flex; align-items: center; gap: 12px;
 background: var(--ds-surface-2); border: 1px solid var(--ds-border);
 border-radius: var(--ds-radius-sm); padding: 12px 14px; }
.ds-task .ds-avatar { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center;
 font-size: 18px; flex: 0 0 auto; }
.ds-task .ds-task-body { flex: 1; min-width: 0; }
.ds-task .ds-task-body b { font-weight: 600; }
.ds-task .ds-task-body span { display: block; color: var(--ds-text-muted); font-size: var(--ds-text-small); }
.ds-task .ds-check { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--ds-text-muted); flex: 0 0 auto; }

/* time-block header (top-rounded, tinted) */
.ds-blockhead { font-weight: 600; font-size: var(--ds-text-small); letter-spacing: .06em;
 text-transform: uppercase; padding: 10px 14px; color: #161213;
 border-radius: var(--ds-radius-card) var(--ds-radius-card) 0 0; }

/* layout + depth helpers */
.ds-wrap { max-width: var(--ds-maxw); margin: 0 auto; padding: var(--ds-space-6) var(--ds-space-5); }
.ds-hero { background: var(--ds-hero-glow); }
.ds-glow-soft { box-shadow: var(--ds-shadow-soft); }
.ds-glow-warm { box-shadow: var(--ds-shadow-warm); }
.ds-grain { position: relative; }
.ds-grain::after { content: ""; position: absolute; inset: 0; pointer-events: none;
 opacity: .5; mix-blend-mode: overlay; background-image: var(--ds-grain); }

/* range / scrollbar accent for consistency */
.ds input[type="range"] { -webkit-appearance: none; appearance: none; height: 4px;
 background: var(--ds-surface-3); border-radius: 2px; }
.ds input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 14px; height: 14px;
 border-radius: 50%; background: var(--ds-accent); }

@media (prefers-reduced-motion: reduce) {
 * { transition: none !important; animation: none !important; }
}
