/* Konpak tokens. Generated from tokens.json by build_tokens.py - do not hand-edit. */
/* Palette APPROVED 17 Oct 2026 (Adobe had no brand assets; website-derived). Change values in build_tokens.py 'color' only, with director approval. */
@font-face{font-family:'Inter';src:url(/brand/fonts/Inter.woff2) format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:'Inter Tight';src:url(/brand/fonts/InterTight.woff2) format('woff2');font-weight:100 900;font-display:swap}
:root{
  /* --- palette (approved 17 Oct 2026, the only place HEX lives) --- */
  --k-stone: #F7F6F1; /* APPROVED 17 Oct 2026 */
  --k-stone-200: #EFEDE6; /* APPROVED 17 Oct 2026 */
  --k-timber: #B08A5E; /* APPROVED 17 Oct 2026 */
  --k-charcoal: #1E1C1C; /* APPROVED 17 Oct 2026 */
  --k-lapis: #3B7DDE; /* APPROVED 17 Oct 2026 */
  --k-agate: #2E63B0; /* APPROVED 17 Oct 2026 */
  --k-deep-ocean: #26487B; /* APPROVED 17 Oct 2026 */
  --k-larimar: #DBEBF5; /* APPROVED 17 Oct 2026 */
  --k-olive: #54623D; /* APPROVED 17 Oct 2026 */
  --k-white: #FFFFFF; /* APPROVED 17 Oct 2026 */
  --k-grey-100: #ECEAE3; /* APPROVED 17 Oct 2026 */
  --k-grey-200: #CFCBC2; /* APPROVED 17 Oct 2026 */
  --k-grey-500: #76726B; /* APPROVED 17 Oct 2026 */
  --k-grey-700: #4A4744; /* APPROVED 17 Oct 2026 */
  --k-alert: #B3261E; /* APPROVED 17 Oct 2026 */
  --k-alert-bg: #FBE9E7; /* APPROVED 17 Oct 2026 */
  /* --- semantic --- */
  --k-bg: var(--k-stone);
  --k-surface: var(--k-white);
  --k-surface-sunken: var(--k-stone-200);
  --k-weekend: var(--k-stone-200);
  --k-accent-warm: var(--k-timber);
  --k-text: var(--k-charcoal);
  --k-text-muted: var(--k-grey-700);
  --k-line: var(--k-grey-200);
  --k-primary: var(--k-charcoal);
  --k-action: var(--k-agate);
  --k-action-hover: var(--k-deep-ocean);
  --k-action-ui: var(--k-lapis);
  --k-accent: var(--k-larimar);
  --k-nav: var(--k-deep-ocean);
  --k-status-tentative-bg: var(--k-larimar);
  --k-status-tentative-border: var(--k-lapis);
  --k-status-tentative-text: var(--k-deep-ocean);
  --k-status-booked-bg: var(--k-agate);
  --k-status-booked-text: var(--k-white);
  --k-status-done-bg: var(--k-olive);
  --k-status-done-text: var(--k-white);
  --k-status-alert-bg: var(--k-alert);
  --k-status-alert-text: var(--k-white);
  --k-focus: var(--k-lapis);
  /* --- fonts: to swap to Forma DJR Deck / Neue Haas Unica set these two --- */
  --font-display-target: 'Inter Tight';
  --font-body-target: 'Inter';
  --k-font-display: var(--font-display-target, 'Inter Tight'), 'Inter Tight', system-ui, sans-serif;
  --k-font-body: var(--font-body-target, 'Inter'), 'Inter', system-ui, sans-serif;
  --k-text-xs: 12px; --k-leading-xs: 16px;
  --k-text-sm: 14px; --k-leading-sm: 20px;
  --k-text-md: 16px; --k-leading-md: 24px;
  --k-text-lg: 20px; --k-leading-lg: 28px;
  --k-text-xl: 24px; --k-leading-xl: 32px;
  --k-text-2xl: 32px; --k-leading-2xl: 36px;
  --k-text-3xl: 40px; --k-leading-3xl: 44px;
  --k-text-4xl: 56px; --k-leading-4xl: 60px;
  --k-weight-regular: 400;
  --k-weight-medium: 500;
  --k-weight-semibold: 600;
  --k-space-0: 0;
  --k-space-1: 4px;
  --k-space-2: 8px;
  --k-space-3: 12px;
  --k-space-4: 16px;
  --k-space-5: 24px;
  --k-space-6: 32px;
  --k-space-7: 48px;
  --k-space-8: 64px;
  --k-radius-sm: 4px;
  --k-radius-md: 8px;
  --k-radius-pill: 999px;
  --k-shadow-none: none;
  --k-shadow-selected: 0 0 0 2px #1E1C1C;
  --k-shadow-alert: 0 0 0 2px #B3261E;
  --k-hairline: 1px;
  --k-hairline-hidpi: 0.5px;
  --k-border-strong: 2px;
  --k-focus-width: 2px;
  --k-focus-offset: 2px;
  --k-tracking-display: -0.02em;
  --k-tracking-display-lg: -0.035em;
  --k-icon-stroke: 1.5;
  --k-tracking-body: 0;
  --k-tracking-caps: 0.06em;
  --k-features-body: 'kern' 1, 'liga' 1, 'calt' 1;
  --k-features-display: 'kern' 1, 'liga' 1, 'calt' 1, 'ss01' 1;
  --k-features-tabular: 'kern' 1, 'tnum' 1, 'zero' 0;
  --k-focus-ring: 0 0 0 2px #FFFFFF, 0 0 0 4px #3B7DDE;
  --k-target-min: 48px; --k-target-comfortable: 56px;
  /* --- motion (iPhone-smooth). springs: JS values, documented as strings --- */
  --k-dur-instant: 80ms;
  --k-dur-fast: 120ms;
  --k-dur-base: 200ms;
  --k-dur-slow: 320ms;
  --k-dur-sheet: 500ms;
  --k-dur-page: 350ms;
  --k-dur-fade-reduced: 150ms;
  --k-ease-standard: cubic-bezier(0.2,0,0,1);
  --k-ease-decelerate: cubic-bezier(0,0,0,1);
  --k-ease-accelerate: cubic-bezier(0.3,0,1,1);
  --k-ease-emphasized: cubic-bezier(0.05,0.7,0.1,1);
  --k-ease-ios: cubic-bezier(0.25,0.1,0.25,1);
  --k-ease-sheet: cubic-bezier(0.32,0.72,0,1);
  --k-ease-out: cubic-bezier(0.2,0,0,1);
  --k-ease-in: cubic-bezier(0.4,0,1,1);
  --k-ease-in-out: cubic-bezier(0.4,0,0.2,1);
  --k-spring-gentle: "stiffness 170, damping 26, mass 1";
  --k-spring-snappy: "stiffness 400, damping 40, mass 1";
  --k-spring-bouncy-off: "stiffness 300, damping 34.6, mass 1 (critically damped, zero overshoot)";
  --k-spring-default: linear(0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 12.9%, 0.938 16.7%, 1.017 20.4%, 1.041 24.5%, 1.035 28.2%, 1.006 38.6%, 0.998 48.1%, 1);
  --k-dur-spring-default: 600ms;
  --k-swipe-close-distance: 0.33;
  --k-swipe-close-velocity: 0.5;
  --k-swipe-slop: 8px;
  --k-rubber-band: 0.55;
  --k-momentum-decel: 0.998;
}
/* High-DPI: hairlines drop to 0.5px (one device pixel at 2x, 1.5 at 3x) */
@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){:root{--k-hairline:var(--k-hairline-hidpi)}}
/* Browsers that draw 0.5px as 1px (detected in konpak-choices.js): keep 1px, lighter approved grey, so lines stay fine */
html.k-hairline-thick{--k-line:var(--k-grey-100)}
/* Crisp text everywhere: grayscale antialiasing, proper kerning; tabular figures wherever numbers line up */
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}
/* Crisp focus: 2px Lapis ring (WCAG 2.4.13), 2px offset, plus 1px white halo so it reads on any fill */
:focus-visible{outline:var(--k-focus-width) solid var(--k-focus);outline-offset:var(--k-focus-offset);box-shadow:0 0 0 1px var(--k-white)}
/* Reduced motion: no travel, no springs; motion becomes quick 150ms fades */
@media (prefers-reduced-motion:reduce){:root{--k-dur-instant:0ms;--k-dur-fast:0ms;--k-dur-base:var(--k-dur-fade-reduced);--k-dur-slow:var(--k-dur-fade-reduced);--k-dur-sheet:var(--k-dur-fade-reduced);--k-dur-page:var(--k-dur-fade-reduced);--k-dur-spring-default:var(--k-dur-fade-reduced);--k-spring-default:linear(0,1);--k-ease-sheet:linear;--k-ease-ios:linear;--k-rubber-band:0}*,*::before,*::after{scroll-behavior:auto!important;animation-iteration-count:1!important}}
