
/* Same self-hosted family as minrutine.no. Both subsets include named guests. */
@font-face {
  font-family: "AOE Sans";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/fonts/instrument-sans-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "AOE Sans";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/fonts/instrument-sans-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  --sk-type-ipad-pos-total: 1.5rem;
  --sk-type-ipad-pos-caption: .85rem;
  --sk-font-fee-claims: system-ui,sans-serif;
  --sk-type-pilot-help: 14px;
  --sk-font-code-plain: monospace;
  --sk-font-code-stack: ui-monospace, SFMono-Regular, Consolas, monospace;
  /* Shared customer and print typography; original sizes retained. */
    --sk-type-customer-weight: 600;
    --sk-type-load-caption: 0.9rem;
    --sk-type-print-body: 14pt/1.5 sans-serif;
    --sk-type-print-title: 22pt;
    --sk-type-gallery-relative: .95em;
    --sk-type-manage-title: 1.5rem;
    --sk-type-manage-caption: .875rem;
    --sk-type-manage-section: 1.125rem;

  --sk-type-calendar-compact:11px;
  --sk-type-calendar-detail:14px;
  --sk-font-export-mono:monospace;
  --sk-font-layout-mono:ui-monospace, SFMono-Regular, Consolas, monospace;
  --sk-type-employee-page-title: 1.5rem;
  --sk-type-employee-section-title: 1.125rem;
  --sk-type-employee-detail: .875em;
  --sk-type-employee-profile-label: 14px;
  /* Employee type roles share the central dashboard typography owner. */
  --sk-type-employee-workspace-font: var(--sk-font-weight-body) var(--sk-font-size-xs) var(--sk-font);
  --sk-type-employee-size-26px: 26px;
  --sk-type-employee-responsive-title: clamp(24px,2.35vw,34px);
  --sk-font-employee-serif: Georgia,serif;
  --sk-type-employee-fluid-2-25rem-9vw-3-75rem: clamp(2.25rem,9vw,3.75rem);
  /* Employee portal sizes without a numbered interface role; rem/clamp values moved verbatim from employee-portal.css. */
  --sk-font-employee-newspaper-serif: Georgia,'Times New Roman',serif;
  --sk-type-employee-fluid-1-25rem-4-7vw-1-75rem: clamp(1.25rem,4.7vw,1.75rem);
  --sk-type-employee-fluid-1-375rem-6vw-1-875rem: clamp(1.375rem,6vw,1.875rem);
  --sk-type-employee-fluid-1-75rem-6vw-2-5rem: clamp(1.75rem,6vw,2.5rem);
  --sk-type-employee-fluid-1-75rem-7vw-2-5rem: clamp(1.75rem,7vw,2.5rem);
  --sk-type-employee-fluid-1-75rem-7vw-2-75rem: clamp(1.75rem,7vw,2.75rem);
  --sk-type-employee-fluid-2-5rem-10vw-3-5rem: clamp(2.5rem,10vw,3.5rem);
  --sk-type-employee-fluid-2rem-7vw-3rem: clamp(2rem,7vw,3rem);
  --sk-type-employee-fluid-2rem-8vw-3-5rem: clamp(2rem,8vw,3.5rem);
  --sk-type-employee-size-3_25rem: 3.25rem;
  --sk-type-employee-size-3rem: 3rem;
  --sk-type-employee-welcome-body: 16px/1.6 var(--sk-font,system-ui);
  --sk-type-employee-welcome-title: 38px Georgia,serif;
  --sk-type-employee-language-brand: 28px Georgia,serif;
  --sk-type-employee-language-caption: 10px sans-serif;

  /* Existing deployment phase and newspaper typography, with unchanged values. */
  --sk-type-deployment-phase-font: 12px/1.5 system-ui,sans-serif;
  --sk-type-deployment-phase-title: 15px;
  --sk-type-deployment-phase-compact: 11px;
  --sk-type-salongavisen-salon-name: 26px;
  --sk-type-salongavisen-meta: 14px;
  --sk-type-salongavisen-masthead-size: clamp(32px,6vw,72px);
  --sk-type-salongavisen-body: 16px;
  --sk-type-salongavisen-nav: 13px;
  --sk-type-salongavisen-shortcut-title: 18px;
  --sk-type-salongavisen-mobile-story: clamp(22px,6vw,30px);
  --sk-type-salongavisen-mobile-reader: clamp(26px,7vw,36px);
  --sk-type-salongavisen-section-title: clamp(24px,3vw,36px);
  --sk-type-salongavisen-feature-title: clamp(28px,3vw,42px);
  --sk-type-salongavisen-brand: 24px;
  --sk-type-salongavisen-masthead: 700 clamp(32px,6vw,72px)/1 Georgia,serif;
  --sk-type-salongavisen-weight: 700;
  --sk-type-salongavisen-story: 700 30px/1.1 Georgia,serif;
  --sk-type-salongavisen-caption: 12px;
  --sk-type-salongavisen-lead: 52px;
  --sk-type-salongavisen-sidebar: 700 24px/1.1 Georgia,serif;
  --sk-type-salongavisen-reader: 700 48px/1.1 Georgia,serif;
  --sk-type-salongavisen-terminal: 700 24px Georgia,serif;
  --sk-type-salongavisen-compact-title: 36px;

  /* Safe defaults before the existing inline personal preferences are applied.
     Values match interfaceAccentTokens(DEFAULT_INTERFACE_ACCENT, false).
     Inline accent, swatch and rail preferences continue to take precedence. */
  --sk-user-accent: #82667f;
  --sk-user-accent-text: #82667f;
  --sk-user-accent-soft: #efe6ee;
  --sk-user-accent-on: #ffffff;
  --sk-user-accent-hover: #6d5469;
  --sk-user-accent-on-hover: #ffffff;
  --sk-user-accent-active: #615160;
  --sk-user-accent-on-active: #ffffff;
  --sk-swatch: var(--sk-user-accent);
  --sk-swatch-on: var(--sk-user-accent-on);
  --sk-user-rail-width: 248px;

  color-scheme: light;

  /* Neutral staff, customer and terminal foundations; cobalt is an accent. */
  --sk-color-ink: #202124;
  --sk-color-ink-soft: #62666c;
  --sk-color-ink-faint: #686d74;
  --sk-color-canvas: #ffffff;
  --sk-color-surface: #ffffff;
  --sk-color-surface-warm: #f0f0f0;
  --sk-color-surface-hover: color-mix(in srgb, var(--sk-color-ink) 4%, var(--sk-color-surface));
  --sk-color-surface-selected: #f2ebe8;
  --sk-color-surface-raised: var(--sk-color-surface);
  --sk-color-surface-subtle: var(--sk-color-canvas);
  --sk-color-rail: #343638;
  --sk-color-border: #dedfe2;
  --sk-color-border-soft: color-mix(in srgb, var(--sk-color-border) 60%, var(--sk-color-surface));
  --sk-color-border-interactive: #888888;
  --sk-color-border-interactive-warm: #888888;

  --sk-color-primary: #82667f;
  --sk-color-primary-hover: #6d5469;
  --sk-color-primary-active: #4f4150;
  --sk-color-primary-soft: #f2ebe8;
  --sk-color-signal: #e5e7ea;
  --sk-color-signal-soft: #f0f0f0;
  --sk-color-accent: var(--sk-color-ink);
  --sk-color-accent-soft: var(--sk-color-signal-soft);
  /* Tjeneste-aksent: samme lyse cyan som brukes på tjenestevelgeren (ny time).
     Deles av ServicePicker sitt fargemerke og hurtigsalg-korta i Nytt salg. */
  --sk-color-service-accent: #e5e9f1;

  --sk-color-success: #136b45;
  --sk-color-success-soft: #e3f1e9;
  --sk-color-info: var(--sk-color-primary);
  --sk-color-info-soft: var(--sk-color-primary-soft);
  --sk-color-warning: #8a5a00;
  --sk-color-warning-soft: #fcf4ce;
  --sk-color-danger: #b3261e;
  --sk-color-danger-soft: #f7d4de;

  --sk-color-disabled-bg: #e9eaec;
  --sk-color-disabled-text: #62666c;
  --sk-color-disabled-border: #b5b8bd;
  --sk-color-focus-ring: #82667f;
  --sk-color-focus-ring-inverse: #ffffff;
  --sk-color-overlay: rgb(35 33 44 / 42%);

  /* Timestatus: én fargekode for samme time i kalenderen (partner) og i
     timeboka (kasse). Brukes som aksentkant; flaten er en lys blanding. */
  --sk-appointment-booked: var(--sk-color-primary);
  --sk-appointment-arrived: var(--sk-color-warning);
  --sk-appointment-completed: var(--sk-color-success);
  --sk-appointment-no-show: var(--sk-color-danger);
  --sk-appointment-pending: var(--sk-color-ink-faint);
  --sk-appointment-cancelled: var(--sk-color-ink-faint);

  --sk-font: "AOE Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --sk-font-heading: Georgia, "Times New Roman", serif;
  --sk-type-drawer-title: 1.25rem;
  --sk-control-height-compact: 36px;
  --sk-color-header: #f0f0f0;
  --sk-color-action: #202124;
  --sk-color-action-hover: #383b40;
  --sk-color-on-action: #ffffff;
  --sk-color-assistant: #82667f;
  --sk-color-assistant-hover: #6d5469;
  --sk-color-danger-action: #b3261e;
  --sk-color-on-danger-action: #ffffff;
  --sk-font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  --sk-font-size-xs: 0.75rem;
  --sk-font-size-sm: 0.875rem;
  --sk-font-size-md: 0.9375rem;
  --sk-font-size-lg: 1rem;
  --sk-font-size-xl: 1.25rem;
  --sk-font-size-2xl: 1.625rem;
  --sk-font-size-display: 2rem;
  --sk-type-widget-signal-value: clamp(25px, 2.6vw, 40px);
  --sk-font-weight-body: 400;
  --sk-font-weight-medium: 500;
  --sk-font-weight-strong: 600;
  --sk-type-page-title: 1.75rem;
  --sk-type-section-title: var(--sk-font-size-xl);
  --sk-type-card-title: var(--sk-font-size-lg);
  --sk-type-control: var(--sk-font-size-sm);
  --sk-type-table: var(--sk-font-size-sm);
  --sk-type-input: var(--sk-font-size-lg);
  /* Customer-facing terminal screens are read from a distance. Their display
     roles share the family and weights, while keeping their physical scale. */
  --sk-type-display-queue: clamp(2.6rem, 7vw, 5.5rem);
  --sk-type-display-name: clamp(2.3rem, 5vw, 4.2rem);
  --sk-type-display-welcome: clamp(2.4rem, 6vw, 4.5rem);
  --sk-type-display-heading: clamp(1.45rem, 3vw, 2.15rem);
  --sk-type-display-total: clamp(2rem, 6vw, 3.5rem);
  /* Kassebeløpet skalerer med valgt tekststørrelse. */
  --sk-type-checkout-total-compact: 2rem;
  --sk-type-checkout-total-medium: 3rem;
  --sk-type-checkout-total-wide: 3.5rem;
  --sk-type-display-caption: clamp(0.85rem, 1.6vw, 1.05rem);
  --sk-type-display-label: clamp(1rem, 2vw, 1.35rem);
  --sk-type-signage-preview: 2cqw;
  /* iOS zoomer inn på felt under 16 px; gulvet gjelder bare touch (90-device.css). */
  --sk-type-touch-field-min: max(16px, 1em);
  /* Kundeskjerm og hjelpetekst på terminal: aldri under 11 px, også med 14 px rot. */
  --sk-type-display-small: max(11px, 0.75rem);
  --sk-type-keypad-delete: max(1.9rem, 26px);
  --sk-terminal-root-pos: 12.5px;
  --sk-terminal-root-tablet: 14px;
  --sk-terminal-root-laptop: 15px;
  --sk-type-terminal-compact-title: 1.35rem;
  --sk-type-terminal-compact-section: 1.1rem;
  --sk-line-tight: 1.2;
  --sk-line-copy: 1.5;

  --sk-space-1: 0.25rem;
  --sk-space-2: 0.5rem;
  --sk-space-3: 0.75rem;
  --sk-space-4: 1rem;
  --sk-space-5: 1.25rem;
  --sk-space-6: 1.5rem;
  --sk-space-7: 1.75rem;
  --sk-space-8: 2rem;
  --sk-space-10: 2.5rem;
  --sk-space-12: 3rem;

  --sk-radius-sm: 0.5rem;
  --sk-radius-md: 0.75rem;
  --sk-radius-lg: 1rem;
  --sk-radius-pill: 999px;
  --sk-shadow-card: 0 1px 2px rgb(35 33 44 / 6%), 0 0 0 1px rgb(35 33 44 / 3%);
  --sk-shadow-popover: 0 12px 35px rgb(35 33 44 / 16%);
  --sk-shadow-drawer: -12px 0 40px rgb(35 33 44 / 16%);

  --sk-topbar-height: 4.5rem;
  --sk-rail-width: 6.5rem;
  --sk-secondary-width: 16rem;
  --sk-control-height: 2.75rem;
  --sk-control-height-lg: 2.75rem;
  --sk-content-max: 98rem;
  --sk-rail-button-height: 3rem;
  --sk-directory-card-padding: var(--sk-space-4);
  --sk-directory-card-gap: var(--sk-space-3);
  --sk-rail-padding-block: clamp(0.5rem, 1.1dvh, 1rem);
  --sk-rail-gap: clamp(0.1rem, 0.25dvh, 0.28rem);

  --sk-z-topbar: 30;
  --sk-z-rail: 25;
  --sk-z-overlay: 80;
  --sk-z-tutorial: 90;
  --sk-z-copilot: 70;
  --sk-z-toast: 100;
  --sk-motion-fast: 100ms;
  --sk-motion-base: 200ms;
  --sk-motion-slow: 300ms;
  --sk-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --sk-ease-emphasized: cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* Spacing adapts to the viewport. Typography keeps the same role and size on
   every administrative page, including laptop and mobile layouts. */
@media (min-width: 44.01rem) {
  :root {
    --sk-space-6: clamp(1.15rem, 0.8rem + 0.583vw, 1.5rem);
    --sk-space-8: clamp(1.5rem, 1rem + 0.833vw, 2rem);
    --sk-space-10: clamp(1.85rem, 1.2rem + 1.083vw, 2.5rem);
    --sk-space-12: clamp(2.2rem, 1.4rem + 1.333vw, 3rem);

    --sk-topbar-height: clamp(4rem, 3.5rem + 0.75vw, 4.5rem);
    --sk-secondary-width: clamp(12rem, 10rem + 3vw, 14rem);
  }
}

/* Staff theme is installed only while a staff interface is mounted. */
:root[data-ui-theme="dark"] {
  color-scheme: dark;
  --sk-color-ink: #e7e9ed;
  --sk-color-ink-soft: #b7bec8;
  --sk-color-ink-faint: #a5aebc;
  --sk-color-canvas: #111214;
  --sk-color-surface: #1b1d20;
  --sk-color-header: #202225;
  --sk-color-rail: #202225;
  --sk-color-surface-warm: #25282d;
  --sk-color-surface-hover: #2c3036;
  --sk-color-surface-selected: #303640;
  --sk-color-surface-raised: #25282d;
  --sk-color-surface-subtle: #202225;
  --sk-color-border: #454951;
  --sk-color-border-soft: #363b42;
  --sk-color-border-interactive: #747b86;
  --sk-color-border-interactive-warm: #747b86;
  --sk-color-primary: #d6c6d9;
  --sk-color-primary-hover: #e3d8e6;
  --sk-color-primary-active: #d9e1ff;
  --sk-color-primary-soft: #252f4d;
  --sk-color-focus-ring: #d6c6d9;
  --sk-color-action: #e7e9ed;
  --sk-color-action-hover: #ffffff;
  --sk-color-on-action: #181a1d;
  --sk-color-signal: #34383e;
  --sk-color-signal-soft: #25282d;
  --sk-color-accent-soft: #25282d;
  --sk-color-service-accent: #343d52;
  --sk-color-success: #84d5a7;
  --sk-color-success-soft: #183527;
  --sk-color-warning: #ffd47d;
  --sk-color-warning-soft: #392e16;
  --sk-color-danger: #ffaaa3;
  --sk-color-danger-soft: #3a2427;
  --sk-color-disabled-bg: #292d33;
  --sk-color-disabled-text: #939da9;
  --sk-color-disabled-border: #4f5661;
  --sk-color-overlay: rgb(0 0 0 / 60%);
}

/* Customer typography roles. Customers never receive the staff marker, so the shared
   roles below are scoped to both interfaces; the family references the existing --sk-font. */
:root[data-customer-appearance]{
 --sk-interface-type-1:var(--sk-font);
}

/* Shared staff typography for the approved interface; public typography is unchanged. */
:root[data-staff-interface]{
 --sk-interface-font:"AOE Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
 --sk-interface-control-size:0.75rem;
 --sk-interface-type-1:"AOE Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
}

/* Static-length roles are max(Npx, N/16rem): exactly Npx at every registered 100% root
   (<=16px, including the 12.5/14/15px terminal roots) and 2*Npx at a 32px root.
   Roles 12 and 35 keep their complete clamp and add the declared upper bound's rem lift. */
:root[data-staff-interface],:root[data-customer-appearance]{
 --sk-interface-type-2:500;
 --sk-interface-type-3:max(12px,0.75rem);
 --sk-interface-type-4:max(14px,0.875rem);
 --sk-interface-type-5:600;
 --sk-interface-type-6:max(13px,0.8125rem);
 --sk-interface-type-7:max(30px,1.875rem);
 --sk-interface-type-8:max(11px,0.6875rem);
 --sk-interface-type-9:max(10px,0.625rem);
 --sk-interface-type-10:max(28px,1.75rem);
 --sk-interface-type-11:max(32px,2rem);
 --sk-interface-type-12:calc(clamp(9px,1.1vh,10px) + max(0px,.625rem - 10px));
 --sk-interface-type-13:550;
 --sk-interface-type-14:max(19px,1.1875rem);
 --sk-interface-type-15:max(15px,0.9375rem);
 --sk-interface-type-16:max(38px,2.375rem);
 --sk-interface-type-17:max(27px,1.6875rem);
 --sk-interface-type-18:max(17px,1.0625rem);
 --sk-interface-type-19:max(8px,0.5rem);
 --sk-interface-type-20:max(16px,1rem);
 --sk-interface-type-21:max(31px,1.9375rem);
 --sk-interface-type-22:max(24px,1.5rem);
 --sk-interface-type-23:max(36px,2.25rem);
 --sk-interface-type-24:max(20px,1.25rem);
 --sk-interface-type-25:max(22px,1.375rem);
 --sk-interface-type-26:max(40px,2.5rem);
 --sk-interface-type-27:450;
 --sk-interface-type-28:max(29px,1.8125rem);
 --sk-interface-type-29:max(21px,1.3125rem);
 --sk-interface-type-30:max(9px,0.5625rem);
 --sk-interface-type-31:max(23px,1.4375rem);
 --sk-interface-type-32:max(18px,1.125rem);
 --sk-interface-type-33:400;
 --sk-interface-type-34:max(25px,1.5625rem);
 --sk-interface-type-35:calc(clamp(28px,2.6vw,40px) + max(0px,2.5rem - 40px));
}

/* Shared with the approved landing/dashboard motion study. */
:root {
  --sk-gradient-activity: linear-gradient(110deg,#ddcfe0,#b0a8e5 56%,#e6d7e6);
  /* Visually matched to Apple's current pearlescent Siri reference, not renderer constants. */
  --sk-gradient-loading: linear-gradient(105deg,#27bfff 0%,#a58cb0 19%,#a279ef 36%,#fff7e9 51%,#ffbe8b 66%,#f392bb 81%,#70d8ff 100%);
  --sk-color-loading-pearl: #fff8ee;
  --sk-color-loading-cyan: #62d8ff;
  --sk-color-activity-selected: #f3f4fa;
  --sk-color-activity-edge: #b0a8e5;
  --sk-motion-activity-grace: 220ms;
  --sk-motion-activity-fade: 420ms;
  --sk-motion-activity-breathe: 7200ms;
  --sk-motion-activity-drift: 1900ms;
}
:root[data-ui-theme="dark"] {
  --sk-color-activity-selected: #30343f;
  --sk-color-activity-edge: #8a8bb6;
}

:root { --sk-type-salongavisen-hero-title:clamp(30px,3vw,46px); --sk-type-salongavisen-hero-title-mobile:clamp(30px,6vw,40px); }


/* Customer app roles share this owner and preserve its native visual hierarchy. */
:root {
 --sk-type-customer-emphasis:1.0625rem;
 --sk-type-customer-feature-title:1.4375rem;
 --sk-type-customer-display-small:1.5625rem;
 --sk-type-customer-display-large:2.125rem;
 --sk-type-customer-introduction-title:clamp(2.125rem,9.7vw,3.375rem);
 --sk-font-weight-heavy:800;
 --sk-font-customer-native:-apple-system,BlinkMacSystemFont,'DM Sans',sans-serif;
}
:root[data-customer-appearance] {
 --sk-type-customer-body:var(--sk-font-size-lg);
 --sk-type-customer-control:var(--sk-font-size-sm);
}

/* Shared UI roles from Peter's October workflow and customer surfaces.
   These values are global: web/native roots must not depend on staff-only aliases. */
:root {
  --sk-card-radius: 1.375rem;
  --sk-card-inset: var(--sk-space-5);
  --sk-card-gap: var(--sk-space-4);
  --sk-page-inset-inline: var(--sk-space-7);
  --sk-page-inset-block: var(--sk-space-7);
  --sk-page-inset-bottom: var(--sk-space-7);
  --sk-type-customer-caption: 0.8125rem;
  --sk-type-customer-eyebrow: 0.6875rem;
  --sk-type-customer-heading: 1.75rem;
  --sk-type-customer-subheading: 1.375rem;
  --sk-type-customer-gift-title: 1.5rem;
  --sk-font-weight-bold: 700;
}
@media (max-width: 44rem) {
  :root {
    --sk-card-radius: 1.125rem;
    --sk-card-inset: var(--sk-space-4);
    --sk-page-inset-inline: var(--sk-space-4);
    --sk-page-inset-block: var(--sk-space-5);
    --sk-page-inset-bottom: var(--sk-space-6);
  }
}

/* Shared public/consumer roles. Compatibility names in landing only alias these. */
:root {
  --sk-type-customer-page-title: 1.5rem;
  --sk-type-customer-section-title: 1.375rem;
  --sk-card-inset-compact: var(--sk-space-3);
  --sk-type-public-display: clamp(2.75rem, 6vw, 5.25rem);
  --sk-type-public-h1: clamp(2.5rem, 5vw, 4.5rem);
  --sk-type-public-h2: clamp(2rem, 3.6vw, 3.35rem);
  --sk-type-public-h3: clamp(1.35rem, 2vw, 1.75rem);
  --sk-type-public-lead: clamp(1.125rem, 1.5vw, 1.35rem);
  --sk-type-public-body: 1rem;
  --sk-type-public-small: .875rem;
  --sk-type-public-caption: .75rem;
  --sk-line-height-public-display: 1.02;
  --sk-line-height-public-h2: 1.08;
  --sk-line-height-public-h3: 1.22;
  --sk-line-height-public-lead: 1.5;
  --sk-line-height-public-body: 1.6;
  --sk-line-height-public-small: 1.45;
  --sk-tracking-public-display: -.035em;
  --sk-tracking-public-h2: -.025em;
  --sk-tracking-public-h3: -.012em;
  --sk-radius-control-neutral: .625rem;
  --sk-radius-public-control-small: .6rem;
  --sk-radius-public-control-medium: .9rem;
  --sk-border-width: 1px;
}

:root[data-ui-theme="dark"] {
  /* Accessible default accent; personal inline preferences remain authoritative. */
  --sk-user-accent-text: #a58cb0;
  --sk-user-accent-soft: #232b48;
}

:root {
  /* Integration typography roles, with existing values preserved. */
  --sk-font-accounting-status: system-ui, sans-serif;
  --sk-type-accounting-status-title: clamp(1.2rem, 3vw, 1.6rem);
  --sk-type-accounting-status-note: .9rem;
  --sk-type-mirror-highlight: 1.5rem;
  --sk-type-mirror-hint: 1.05rem;
  --sk-type-mirror-compact: 1.125rem;
  --sk-type-calendar-marker: 11px;
  --sk-type-calendar-marker-note: 14px;
}

/* Brand kit v1: original positive/negative assets; salon branding stays separate. */
.sk-minrutine-logo { display:inline-block; width:150px; max-width:100%; height:auto; vertical-align:middle; flex-shrink:0; filter:none !important; mix-blend-mode:normal !important; }
.sk-minrutine-logo > img { display:block; width:100%; height:auto; object-fit:contain; filter:none !important; transform:none; }
.sk-minrutine-logo > .sk-minrutine-logo__white { display:none; }
:root[data-ui-theme="dark"] .sk-minrutine-logo > .sk-minrutine-logo__ink,
.sk-minrutine-logo[data-brand-tone="white"] > .sk-minrutine-logo__ink,
.sk-customer-portal-logo .sk-minrutine-logo > .sk-minrutine-logo__ink { display:none; }
:root[data-ui-theme="dark"] .sk-minrutine-logo > .sk-minrutine-logo__white,
.sk-minrutine-logo[data-brand-tone="white"] > .sk-minrutine-logo__white,
.sk-customer-portal-logo .sk-minrutine-logo > .sk-minrutine-logo__white { display:block; }
.sk-brand-logo--approved { display:inline-flex; align-items:center; justify-content:center; animation:none !important; transform:none !important; }
.sk-brand-logo--approved > .sk-minrutine-logo { width:76%; height:auto; animation:none; transform:none; }
.sk-brand-logo--approved > .sk-minrutine-logo > img { animation:none !important; transform:none !important; height:auto !important; }
.sk-minrutine-logo.sk-wordmark-image { width:158px; }
.sk-minrutine-logo.sk-platform-wordmark { width:190px; }
.sk-minrutine-logo.sk-terminal-wordmark { width:148px; }
.sk-minrutine-logo.employee-minrutine-logo { width:150px; }
.sa-brand .sk-minrutine-logo { width:132px; }
.sk-customer-portal-logo > .sk-minrutine-logo { width:140px; height:auto; background:transparent; border-radius:0; display:inline-block; }
@media(max-width:720px) { .sk-minrutine-logo.sk-wordmark-image { width:120px; } .sk-minrutine-logo.sk-terminal-wordmark { width:116px; } }


:root[data-customer-appearance=dark] .sk-minrutine-logo>.sk-minrutine-logo__ink,.sk-customer-portal-sidebar .sk-minrutine-logo>.sk-minrutine-logo__ink{display:none}
:root[data-customer-appearance=dark] .sk-minrutine-logo>.sk-minrutine-logo__white,.sk-customer-portal-sidebar .sk-minrutine-logo>.sk-minrutine-logo__white{display:block}
.sk-customer-portal-auth-card>.sk-platform-wordmark{margin-bottom:2rem}

*, *::before, *::after { box-sizing: border-box; }
html { min-width: min(20rem, 100%); background: var(--sk-color-canvas); font-family: var(--sk-font); color: var(--sk-color-ink); }
body { margin: 0; min-height: 100vh; background: var(--sk-color-canvas); color: var(--sk-color-ink); font-size: var(--sk-font-size-md); line-height: var(--sk-line-copy); -webkit-font-smoothing: antialiased; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
a { color: inherit; }
h1, h2, h3, h4, h5, h6, p { margin-top: 0; }
h1, h2, h3, h4, h5, h6 { font-family: var(--sk-font); font-weight: var(--sk-font-weight-medium); line-height: var(--sk-line-tight); letter-spacing: -0.025em; }
h1 { font-size: var(--sk-type-page-title); }
h2 { font-size: var(--sk-type-section-title); }
h3 { font-size: var(--sk-type-card-title); }
h4, h5, h6 { font-size: var(--sk-font-size-md); }
strong, b { font-weight: var(--sk-font-weight-strong); }
small { font-size: var(--sk-font-size-xs); }
code, pre, kbd, samp { font-family: var(--sk-font-mono); }
button:disabled { cursor: not-allowed; }
/* Tastaturfokus: full fokusfarge (#82667f gir ≥ 5:1 mot lerret og hvitt, WCAG 1.4.11 krever 3:1).
   Musklikk gir ingen ring, fordi nettleseren bare treffer :focus-visible ved tastatur. */
:focus-visible { outline: 2px solid var(--sk-color-focus-ring); outline-offset: 2px; }
:focus:not(:focus-visible) { outline: none; }
::selection { background: var(--sk-color-primary-soft); color: var(--sk-color-ink); }
.sk-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
/* LUFT: en tom statuslinje (role=status/alert, aria-live) står klar til å melde fra, men skal ikke
   ta plass. I grid/flex tok hver tomme linje et helt gap, så skjemaer i skuffer startet langt ned
   (f.eks. «Legg til vakt»). Ute av flyten, men fortsatt i tilgjengelighetstreet, så meldinger
   som kommer senere leses opp som før. */
:is([role="status"], [role="alert"], [aria-live]):empty:not([aria-label], [aria-labelledby]) { position: absolute; width: 1px; height: 1px; margin: 0; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.sk-spin { animation: sk-spin 900ms linear infinite; }
/* A nonzero universal duration creates new default-all transitions on reused DOM,
   including display padding. Reduced motion must apply final geometry immediately. */
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 0s !important; } }

/* Support references remain readable inside narrow notices on every app surface. */
[role="alert"], [role="status"], .sk-form-error, .sk-form-warning, .sk-terminal-notice, .sk-empty-state p { overflow-wrap: anywhere; }

.sk-button { white-space: nowrap; min-height: var(--sk-control-height); padding: 0 var(--sk-space-5); border: 1px solid transparent; border-radius: var(--sk-radius-pill); display: inline-flex; align-items: center; justify-content: center; gap: var(--sk-space-2); font-weight: var(--sk-font-weight-strong); cursor: pointer; transition: background var(--sk-motion-base), border-color var(--sk-motion-base), transform var(--sk-motion-fast); }
.sk-button--compact { min-height: 2.5rem; padding-inline: var(--sk-space-3); font-size: var(--sk-font-size-sm); }
.sk-button:active:not(:disabled) { transform: scale(.98); }
/* En knapp som faktisk ER en lenke — den åpner en adresse framfor å kjøre noe.
   Uten dette arver den understrekingen fra brødteksten og skiller seg fra
   knappen den står ved siden av. */
a.sk-button { text-decoration: none; }
.sk-button:disabled { border-color: var(--sk-color-disabled-border); background: var(--sk-color-disabled-bg); color: var(--sk-color-disabled-text); cursor: not-allowed; }
.sk-button--primary { color: white; background: var(--sk-color-primary); }
.sk-button--primary:hover:not(:disabled) { background: var(--sk-color-primary-hover); }
.sk-button--primary:active:not(:disabled) { background: var(--sk-color-primary-active); }
.sk-button--secondary { background: transparent; border-color: var(--sk-color-primary); color: var(--sk-color-primary); }
.sk-button--secondary:hover:not(:disabled) { background: var(--sk-color-primary-soft); border-color: var(--sk-color-primary-hover); color: var(--sk-color-primary-hover); }
.sk-button--secondary:active:not(:disabled) { background: var(--sk-color-primary-soft); border-color: var(--sk-color-primary-active); color: var(--sk-color-primary-active); }
.sk-button--ghost:hover:not(:disabled) { background: var(--sk-color-surface-hover); }
.sk-button--ghost { background: transparent; }
.sk-button--danger { background: var(--sk-color-danger); color: white; }
.sk-icon-button { width: var(--sk-control-height); height: var(--sk-control-height); border: 0; border-radius: 50%; background: transparent; display: inline-grid; place-items: center; position: relative; cursor: pointer; transition: background var(--sk-motion-base); }
.sk-icon-button:hover { background: var(--sk-color-surface-hover); }
.sk-icon-button__badge { position: absolute; right: 0; top: -.15rem; min-width: 1.25rem; height: 1.25rem; padding: 0 .3rem; border-radius: var(--sk-radius-pill); background: var(--sk-color-danger-action); color: var(--sk-color-on-danger-action); border: 2px solid var(--sk-color-surface); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); line-height: 1rem; }
.sk-card { min-width: 0; overflow-wrap: anywhere; background: var(--sk-color-surface); border: 1px solid var(--sk-color-border); border-radius: var(--sk-card-radius); box-shadow: var(--sk-shadow-card); }
.sk-card--inset { padding: var(--sk-card-inset); }
.sk-avatar > span, .sk-avatar > img { grid-area: 1 / 1; }
.sk-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.sk-avatar { width: 2.75rem; height: 2.75rem; border-radius: 50%; display: inline-grid; place-items: center; background: var(--sk-color-primary-soft); color: var(--sk-color-primary); font-weight: var(--sk-font-weight-strong); }
.sk-kicker { color: var(--sk-color-primary); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); letter-spacing: .08em; text-transform: uppercase; }
.sk-text-link { border: 0; padding: 0; color: var(--sk-color-primary); background: transparent; cursor: pointer; text-decoration: underline; text-underline-offset: .15em; }
/* The primary/secondary idiom <span><strong/><small/></span> is used in ~117
   places for a title with a caption underneath. A bare <span> stays inline, so
   the two run together on one line ("GK-E6054CB321. juli 2026"). Stack it by
   default. :where() keeps specificity at 0 so any container rule still wins. */
:where(span:has(> strong + small), span:has(> small + strong)) { display: grid; gap: .1rem; align-content: center; }
:where(span:has(> strong) > small) { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); line-height: 1.35; }
.sk-field { display: grid; align-content: start; gap: var(--sk-space-2); font-weight: var(--sk-font-weight-strong); }
.sk-field > label { font-weight: var(--sk-font-weight-strong); }
.sk-field :is(input, select, textarea) { font-weight: var(--sk-font-weight-body); }
/* One control surface for labelled fields and editable table cells. Hints may
   increase a field's height, but must never stretch its label/control rows. */
.sk-input, .sk-field input, .sk-field select, .sk-field textarea,
.sk-table :is(input, select, textarea):not([type="checkbox"], [type="radio"], [type="range"], [type="hidden"], [type="color"], [type="file"]) {
  width: 100%; min-width: 0; min-height: var(--sk-control-height-lg);
  padding: 0 var(--sk-space-4); border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-sm); background: var(--sk-color-surface); color: var(--sk-color-ink);
  font-size: var(--sk-type-input);
}
.sk-field textarea, .sk-table textarea { padding-block: var(--sk-space-3); resize: vertical; }
:is(.sk-input, .sk-field input, .sk-field select, .sk-field textarea):hover:not(:disabled),
.sk-table :is(input, select, textarea):not([type="checkbox"], [type="radio"], [type="range"], [type="hidden"], [type="color"], [type="file"]):hover:not(:disabled) { border-color: var(--sk-color-ink-soft); }
:is(.sk-input, .sk-field input, .sk-field select, .sk-field textarea):focus,
.sk-table :is(input, select, textarea):not([type="checkbox"], [type="radio"], [type="range"], [type="hidden"], [type="color"], [type="file"]):focus { border-color: var(--sk-color-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sk-color-primary) 18%, transparent); }
:is(.sk-input, .sk-field input, .sk-field select, .sk-field textarea):disabled,
.sk-table :is(input, select, textarea):disabled { border-color: var(--sk-color-disabled-border); background: var(--sk-color-disabled-bg); color: var(--sk-color-disabled-text); }
.sk-field > small { font-weight: var(--sk-font-weight-medium); }
.sk-field-actions > .sk-inline-actions { min-height: var(--sk-control-height-lg); }
.sk-field-hint { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }
.sk-button { font-size: var(--sk-type-control); }
.sk-field { font-size: var(--sk-type-control); }
.sk-field input, .sk-field select, .sk-field textarea { font-size: var(--sk-type-input); }
.sk-table { font-family: var(--sk-font); font-size: var(--sk-type-table); }
.sk-table th { font-size: var(--sk-type-table); font-weight: var(--sk-font-weight-strong); }
.sk-table-scroll { min-width: 0; max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; }
.sk-table .sk-inline-actions { gap: var(--sk-space-2); }
.sk-table .sk-inline-actions > .sk-button { min-height: 2.25rem; padding-block: var(--sk-space-1); white-space: normal; }
:where(.sk-table:not(.sk-data-table)) { width: 100%; border-collapse: collapse; }
:where(.sk-table:not(.sk-data-table)) :is(th, td) { padding: var(--sk-space-3) var(--sk-space-4); border-bottom: 1px solid var(--sk-color-border-soft); text-align: left; }

/* Editable numeric rates need room for the value and its hint at every width. */
.sk-table.sk-editable-rate-table { min-width: 62rem; table-layout: auto; }
.sk-table.sk-editable-rate-table input { min-width: 10rem; }
@media (max-width: 44rem) {
  .sk-table.sk-editable-rate-table { min-width: 0; }
  .sk-table.sk-editable-rate-table tbody td:has(> input) { grid-template-columns: minmax(0, 1fr); }
}

/* Standard customer content cards share the base even when an app still has
   legacy local CSS. Artwork, icons and sectioned interiors are deliberately absent. */
:root[data-customer-appearance] :is(.customer-profile-welcome,.customer-profile-identity,.customer-profile-menu,.customer-profile-next,.customer-profile-settings,.customer-wallet-card,.customer-treatment-set-card,.marketplace-card,.salon-heart-row,.mr-highlight-card,.mr-giftcard-shell),
:root[data-customer-appearance] .customer-profile-shortcuts > button { border-radius: var(--sk-card-radius); }
:root[data-customer-appearance] :is(.customer-profile-welcome,.customer-profile-identity,.customer-profile-next,.customer-profile-settings,.customer-wallet-card,.mr-giftcard-shell),
:root[data-customer-appearance] .customer-profile-shortcuts > button,
:root[data-customer-appearance] .native-salon-discovery .marketplace-card { padding: var(--sk-card-inset); }
:root[data-customer-appearance] .customer-profile-menu { padding: 0 var(--sk-card-inset); }

/* Explicit touch targets remain usable in the compact staff control context. */
.sk-button.sk-touch-control, .sk-field .sk-touch-control,
:root[data-staff-interface] .sk-app-shell .sk-page .sk-button.sk-touch-control,
:root[data-staff-interface] :is(.sk-drawer__body,.sk-modal__body) .sk-button.sk-touch-control { min-height: 44px; }

/* Shared action and content layouts used by agreements, catalogue and training. */
.sk-actions { display:flex; flex-wrap:wrap; align-items:center; gap:var(--sk-space-3); }
.sk-list { display:grid; gap:var(--sk-space-3); padding-inline-start:var(--sk-space-5); }
.sk-dpa-banner { display:flex; flex-wrap:wrap; gap:var(--sk-space-3); padding:var(--sk-space-4); background:var(--sk-color-warning-soft); color:var(--sk-color-ink); }
.sk-dpa-document { white-space:pre-wrap; overflow-wrap:anywhere; max-width:100%; padding:var(--sk-space-4); }
.sk-training-embed { display:block; width:100%; max-width:100%; aspect-ratio:16/9; border:0; }
.sk-terminal { min-width:0; max-width:100%; }

.sk-app-shell { min-height: 100vh; }
.sk-skip-link { position: fixed; z-index: calc(var(--sk-z-toast) + 1); top: var(--sk-space-2); left: var(--sk-space-2); padding: var(--sk-space-3) var(--sk-space-4); border-radius: var(--sk-radius-md); background: var(--sk-color-ink); color: white; font-weight: var(--sk-font-weight-strong); transform: translateY(-150%); }
.sk-skip-link:focus { transform: translateY(0); }
.sk-global-topbar { position: fixed; z-index: var(--sk-z-topbar); inset: 0 0 auto; height: var(--sk-topbar-height); background: var(--sk-color-surface); border-bottom: 1px solid var(--sk-color-border); display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-4); padding: 0 var(--sk-space-6); }
.sk-topbar-context { min-width: 0; display: flex; align-items: center; gap: var(--sk-space-4); }
.sk-wordmark { flex: 0 0 auto; border: 0; background: transparent; padding: 0; display: inline-flex; align-items: center; gap: .7rem; cursor: pointer; color: var(--sk-color-ink); font-size: var(--sk-font-size-2xl); font-weight: var(--sk-font-weight-strong); letter-spacing: -.05em; }
.sk-brand-logo { width: 2.5rem; height: 2.5rem; flex: 0 0 auto; object-fit: contain; animation: mr-brand-sway 8s ease-in-out infinite; }
.sk-wordmark__name { white-space: nowrap; }
.sk-workspace-context { min-width: 0; display: flex; align-items: center; gap: var(--sk-space-2); padding-left: var(--sk-space-4); border-left: 1px solid var(--sk-color-border); }
.sk-tenant-context, .sk-location-context { min-width: 0; display: flex; align-items: center; gap: var(--sk-space-2); color: var(--sk-color-ink-soft); }
.sk-tenant-context > svg, .sk-location-context > svg, .sk-location-switcher > svg { flex: 0 0 auto; width: 1.1rem; height: 1.1rem; color: var(--sk-color-primary); }
.sk-tenant-context > span { min-width: 0; display: grid; line-height: 1.15; }
.sk-tenant-context small { font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); color: var(--sk-color-ink-soft); }
.sk-tenant-context strong { max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--sk-color-ink); font-size: var(--sk-font-size-sm); }
.sk-topbar-context > .sk-tenant-switcher { padding-left: var(--sk-space-4); border-left: 1px solid var(--sk-color-border); }
.sk-tenant-switcher { position: relative; min-width: 0; flex: 0 1 auto; }
.sk-tenant-switcher__trigger { min-width: 0; min-height: 3.25rem; border: 0; border-radius: var(--sk-radius-md); padding: .3rem .45rem; background: transparent; color: var(--sk-color-ink); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--sk-space-2); font: inherit; text-align: left; cursor: pointer; }
.sk-tenant-switcher__trigger:hover, .sk-tenant-switcher__trigger[aria-expanded="true"] { background: var(--sk-color-surface-hover); }
.sk-tenant-switcher__avatar { width: 2.15rem; height: 2.15rem; border-radius: .65rem; background: var(--sk-color-primary-soft); color: var(--sk-color-primary); display: inline-grid; place-items: center; font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); letter-spacing: -.02em; }
.sk-tenant-switcher__avatar.is-platform { background: var(--sk-color-ink); color: var(--sk-color-surface); }
.sk-tenant-switcher__avatar > svg { width: 1.05rem; height: 1.05rem; }
.sk-tenant-switcher__label, .sk-tenant-switcher__item-label { min-width: 0; display: grid; line-height: 1.18; }
.sk-tenant-switcher__label small { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }
.sk-tenant-switcher__label strong { max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--sk-font-size-sm); }
.sk-tenant-switcher__chevron { width: 1rem; height: 1rem; color: var(--sk-color-ink-soft); transition: transform var(--sk-motion-fast); }
.sk-tenant-switcher__trigger[aria-expanded="true"] .sk-tenant-switcher__chevron { transform: rotate(180deg); }
.sk-tenant-switcher__menu { position: absolute; z-index: calc(var(--sk-z-topbar) + 1); top: calc(100% + .65rem); left: 0; width: min(21rem, calc(100vw - 2rem)); max-height: min(32rem, calc(100vh - var(--sk-topbar-height) - 2rem)); overflow-y: auto; padding: var(--sk-space-2); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); box-shadow: var(--sk-shadow-popover); }
.sk-tenant-switcher__heading, .sk-tenant-switcher__section-label { padding: .45rem var(--sk-space-3); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); letter-spacing: .04em; text-transform: uppercase; }
.sk-tenant-switcher__section-label { margin-top: var(--sk-space-1); padding-top: var(--sk-space-3); border-top: 1px solid var(--sk-color-border-soft); }
.sk-tenant-switcher__item { width: 100%; min-height: 3.75rem; border: 0; border-radius: var(--sk-radius-md); padding: .55rem var(--sk-space-2); background: transparent; color: var(--sk-color-ink); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--sk-space-3); font: inherit; text-align: left; cursor: pointer; }
.sk-tenant-switcher__item:hover:not(:disabled), .sk-tenant-switcher__item:focus-visible { background: var(--sk-color-surface-hover); }
.sk-tenant-switcher__item.is-active { background: var(--sk-color-primary-soft); }
.sk-tenant-switcher__item:disabled { cursor: wait; opacity: .65; }
.sk-tenant-switcher__item-label strong, .sk-tenant-switcher__item-label small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk-tenant-switcher__item-label strong { font-size: var(--sk-font-size-sm); }
.sk-tenant-switcher__item-label small { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }
.sk-tenant-switcher__item > svg { width: 1.05rem; height: 1.05rem; color: var(--sk-color-primary); }
.sk-tenant-switcher__status { min-height: 3rem; padding: var(--sk-space-2) var(--sk-space-3); color: var(--sk-color-ink-soft); display: flex; align-items: center; gap: var(--sk-space-2); font-size: var(--sk-font-size-xs); }
.sk-tenant-switcher__status svg { width: 1rem; height: 1rem; }
.sk-tenant-switcher__error { margin: var(--sk-space-1); padding: var(--sk-space-2); border-radius: var(--sk-radius-sm); background: var(--sk-color-danger-soft); color: var(--sk-color-danger); display: grid; gap: var(--sk-space-2); font-size: var(--sk-font-size-xs); }
.sk-tenant-switcher__error button { justify-self: start; border: 0; padding: 0; background: transparent; color: inherit; font: inherit; font-weight: var(--sk-font-weight-strong); text-decoration: underline; cursor: pointer; }
.sk-location-context { max-width: 12rem; font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); }
.sk-location-context span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk-location-switcher { min-width: 0; display: flex; align-items: center; gap: var(--sk-space-1); }
.sk-location-switcher select { min-width: 8rem; max-width: 13rem; height: 2.6rem; border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); padding: 0 2rem 0 var(--sk-space-3); background: var(--sk-color-surface); color: var(--sk-color-ink); font: inherit; font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); text-overflow: ellipsis; }
.sk-topbar-actions { flex: 0 0 auto; display: flex; align-items: center; gap: var(--sk-space-2); }
.sk-topbar-report-action { background: var(--sk-color-primary-soft); color: var(--sk-color-primary); }
.sk-topbar-report-action:hover { background: var(--sk-color-surface-selected); }
.sk-setup-button { min-width: 18rem; margin-right: var(--sk-space-2); }
.sk-profile-name { align-self: center; font-weight: var(--sk-font-weight-strong); font-size: var(--sk-font-size-sm); color: var(--sk-color-ink); white-space: nowrap; max-width: 12rem; overflow: hidden; text-overflow: ellipsis; }
.sk-profile-button { width: 3.35rem; height: 3.35rem; border: 0; border-radius: 50%; background: var(--sk-color-primary-soft); color: var(--sk-color-primary); font-weight: var(--sk-font-weight-strong); font-size: var(--sk-font-size-lg); cursor: pointer; }
.sk-primary-rail { position: fixed; z-index: var(--sk-z-rail); inset: var(--sk-topbar-height) auto 0 0; width: var(--sk-rail-width); background: var(--sk-color-rail); display: flex; flex-direction: column; align-items: center; justify-content: space-between; padding: var(--sk-rail-padding-block) 0; }
.sk-primary-rail__main { width: 100%; display: grid; justify-items: center; gap: var(--sk-rail-gap); }
.sk-primary-rail button { width: calc(100% - .75rem); min-height: var(--sk-rail-button-height); border: 0; border-radius: .7rem; background: transparent; color: white; display: grid; grid-template-rows: auto auto; align-content: center; justify-items: center; gap: .35rem; cursor: pointer; transition: background var(--sk-motion-base), transform var(--sk-motion-fast); }
.sk-primary-rail button:hover { background: rgb(255 255 255 / 11%); }
.sk-primary-rail button.is-active { background: var(--sk-color-primary); }
.sk-primary-rail button:active { transform: scale(.96); }
.sk-mobile-more { display: none !important; }
.sk-mobile-module-list { display: grid; gap: var(--sk-space-2); }
.sk-mobile-module-list > section { display: grid; gap: var(--sk-space-2); }
.sk-mobile-module-list > section > h3 { margin: var(--sk-space-2) 0; }
.sk-mobile-module-list > button { min-height: 3.5rem; padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--sk-space-3); color: var(--sk-color-ink); font: inherit; font-weight: var(--sk-font-weight-strong); text-align: left; cursor: pointer; }
.sk-mobile-module-list > button.is-active { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }
.sk-mobile-report-action > span { min-width: 0; display: grid; gap: var(--sk-space-1); }
.sk-mobile-report-action small { color: var(--sk-color-ink-soft); font-weight: var(--sk-font-weight-medium); }
.sk-secondary-nav { position: fixed; z-index: 20; top: var(--sk-topbar-height); bottom: 0; left: var(--sk-rail-width); width: var(--sk-secondary-width); background: var(--sk-color-surface); border-right: 1px solid var(--sk-color-border); overflow-y: auto; transition: width var(--sk-motion-base) var(--sk-ease-standard); }
.sk-secondary-nav.is-collapsed { width: 4.25rem; overflow: visible; }
.sk-secondary-nav.is-collapsed nav, .sk-secondary-nav.is-collapsed .sk-mobile-secondary-nav { display: none; }
.sk-secondary-nav__title { min-height: 5rem; display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-2); padding: 0 var(--sk-space-4) 0 var(--sk-space-6); border-bottom: 1px solid var(--sk-color-border-soft); font-size: var(--sk-font-size-xl); font-weight: var(--sk-font-weight-strong); }
.sk-secondary-nav.is-collapsed .sk-secondary-nav__title { justify-content: center; padding: 0; }
.sk-secondary-nav.is-collapsed .sk-secondary-nav__title > span { display: none; }
.sk-secondary-nav__title .sk-icon-button { min-height: 2.75rem; padding: 0; text-align: center; color: var(--sk-color-ink-soft); }
.sk-secondary-nav nav { display: grid; padding: var(--sk-space-3); gap: .15rem; }
.sk-secondary-nav__group { display: grid; gap: .15rem; }
.sk-secondary-nav__group + .sk-secondary-nav__group { margin-top: var(--sk-space-4); }
.sk-secondary-nav__group-title { margin: 0; padding: var(--sk-space-2) var(--sk-space-4) .1rem; font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); letter-spacing: .04em; text-transform: uppercase; color: var(--sk-color-ink-soft); }
.sk-secondary-nav button { min-height: 2.8rem; border: 0; border-radius: .45rem; padding: 0 var(--sk-space-4); text-align: left; background: transparent; color: var(--sk-color-ink-soft); cursor: pointer; }
.sk-secondary-nav button:hover { color: var(--sk-color-ink); background: var(--sk-color-surface-hover); }
.sk-secondary-nav button.is-active { color: var(--sk-color-ink); background: var(--sk-color-surface-selected); font-weight: var(--sk-font-weight-strong); }
/* Modul som ikke er aktivert (bare når serveren håndhever moduler): lås + pris. */
.sk-secondary-nav button.is-locked { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-2); }
.sk-nav-lock { display: inline-flex; align-items: center; gap: .25rem; flex-shrink: 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); white-space: nowrap; }
.sk-mobile-secondary-nav { display: none; }
.sk-main { min-height: 100vh; padding-top: var(--sk-topbar-height); padding-left: var(--sk-rail-width); }
.sk-main.has-secondary-nav { padding-left: calc(var(--sk-rail-width) + var(--sk-secondary-width)); }
.sk-main.has-secondary-nav.has-collapsed-secondary { padding-left: calc(var(--sk-rail-width) + 4.25rem); }

/* Etiketten under ikonet i hovedskinnen. Flyttet hit fra
   10-restored-modules.css: resten av skinnen bor her, og fila den lå i var
   i ferd med å sprenge strukturvaktens linjegrense. */
.sk-primary-rail__label {
  position: static;
  width: 100%;
  padding: 0 0.15rem;
  color: rgb(255 255 255 / 86%);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.05;
  letter-spacing: -0.01em;
  text-align: center;
  overflow: visible;
  text-overflow: clip;
  /* Et menypunkt er et navn, ikke brødtekst. Med `lang="nb"` orddelte
     nettleseren «Innstillinger» til «Innstilli-nger» og «Nettbestilling» til
     «Nettbestil-ling». Etiketten skal stå hel: skinnen er bred nok til de
     lengste navnene, og resten holder vi i sjakk med tettere sperring. */
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: keep-all;
  hyphens: manual;
  opacity: 1;
  pointer-events: none;
  transform: none;
}
.sk-primary-rail button.is-active .sk-primary-rail__label {
  color: white;
}
@media (min-width: 44.01rem) {
  .sk-primary-rail {
    --sk-rail-padding-block: .25rem;
    --sk-rail-gap: 1px;
    /* Divide the space between the top bar and bottom by the visible items.
       Keep a readable minimum; very short windows can still scroll. */
    --sk-rail-button-height: clamp(2.75rem, calc((100dvh - var(--sk-topbar-height) - 2 * var(--sk-rail-padding-block) - var(--sk-rail-item-count, 15) * var(--sk-rail-gap)) / var(--sk-rail-item-count, 15)), 4rem);
  }
  .sk-primary-rail button { padding-block: 0; gap: var(--sk-space-1); }
  .sk-primary-rail button > svg { width: 1.5rem; height: 1.5rem; }
  .sk-primary-rail > .sk-primary-help { flex-shrink: 0; }
}

@media (prefers-reduced-motion: reduce) { .sk-brand-logo { animation: none; transform: none; } }

/* Actual SVG-derived geometry has one finite motion; static fallback shares its size. */
.sk-brand-logo--geometry { position: relative; display: inline-block; animation: none; }
.sk-brand-logo--geometry > img, .sk-brand-logo--geometry > canvas { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.sk-brand-logo--geometry > img { transform: scale(.82); }

/* The same existing picker serves desktop advanced modules and mobile overflow. */
.sk-desktop-more-label { display: none; }
.sk-mobile-more-label { display: inline; }
@media (min-width: 44.001rem) {
  .sk-mobile-module-list > .sk-mobile-daily-modules { display: none; }
  .sk-primary-rail .is-desktop-overflow { display: none; }
  .sk-primary-rail .sk-mobile-more.is-desktop-more { display: grid !important; }
  .sk-desktop-more-label { display: inline; }
  .sk-mobile-more-label { display: none; }
}

.sk-primary-rail :focus-visible { outline-color: var(--sk-color-focus-ring-inverse); }

.sk-page {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
  align-content: start;
  gap: var(--sk-space-6);
  width: min(100%, var(--sk-content-max));
  margin: 0 auto;
  padding: var(--sk-space-10) var(--sk-space-8) var(--sk-space-12);
}
.sk-page--reading { width: min(100%, 72rem); }
.sk-page--stacked {
  display: grid;
  align-content: start;
  gap: var(--sk-space-6);
}
.sk-page--stacked > .sk-page-header { margin-bottom: 0; }
.sk-card-stack { display: grid; gap: var(--sk-space-4); }
.sk-card-layout { min-width: 0; }
/* Vertikal rytme mellom kortgrupper i en vanlig container: enkeltkort OG
   rutenett (.sk-card-grid/.sk-dashboard-grid) som stables rett under hverandre
   får samme luft som to kort. Fanger tilfeller som /team/motivation, der et
   rutenett veksler med et enkeltkort og ellers klistrer seg sammen. Dedikerte
   layout-containere (rutenett, stabler, innstillinger) er unntatt som forelder
   fordi de styrer avstanden med `gap`. `:is()` beholder samme spesifisitet som
   den gamle `.sk-card + .sk-card`-regelen. */
:where(:not(.sk-card-stack, .sk-card-grid, .sk-card-layout, .sk-dashboard-grid, .sk-settings-sections, .sk-settings-list, .sk-form-stack, .sk-page--stacked, .sk-plan-grid, .sk-insurance-kpis, .sk-page, .sk-loyalty-layout, .sk-operations-registers)) > :is(.sk-card, .sk-card-grid, .sk-card-layout, .sk-dashboard-grid, .sk-data-table-wrap) + :is(.sk-card, .sk-card-grid, .sk-card-layout, .sk-dashboard-grid, .sk-data-table-wrap) { margin-top: var(--sk-space-6); }
.sk-card--inset > .sk-card-header { min-height: auto; padding: 0 0 var(--sk-card-gap); }
.sk-card--inset > .sk-form-grid,
.sk-card--inset:where(:not(.sk-form-stack)) > .sk-inline-actions { margin-top: var(--sk-space-4); }
.sk-detail-list { margin: 0; border-block: 1px solid var(--sk-color-border-soft); }
.sk-detail-list > div {
  min-height: 4.2rem;
  display: grid;
  grid-template-columns: minmax(8rem, .35fr) minmax(0, 1fr);
  gap: var(--sk-space-4);
  align-items: center;
  padding: var(--sk-space-3) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-detail-list > div:last-child { border-bottom: 0; }
.sk-detail-list dt,
.sk-detail-list dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.sk-detail-list dt { color: var(--sk-color-ink-soft); }
.sk-detail-list dd { font-weight: var(--sk-font-weight-strong); }
.sk-help-copy { max-width: 70ch; margin-top: var(--sk-space-4); line-height: 1.5; overflow-wrap: anywhere; }
.sk-page-header {
  margin-bottom: 0;
  min-height: 5.5rem;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-6);
}
/* Samme uttrykk som .sk-terminal-eyebrow, bygd på de samme tokenene, slik at
   terminalen og operatørrommet har én eyebrow og ikke to. */
.sk-eyebrow {
  margin: 0 0 0.45rem;
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.sk-page-header h1 {
  margin-bottom: 0.4rem;
  font-size: var(--sk-type-page-title);
}
.sk-page-header p {
  color: var(--sk-color-ink-soft);
}
/* Eyebrow-en er også et <p> i sidetoppen, så regelen over slo den ut på
   spesifisitet og malte den i den dempede brødtekstfargen. Den skal stå i
   primærfargen — i begge temaer, siden fargen kommer fra tokenet. */
.sk-page-header .sk-eyebrow {
  color: var(--sk-color-primary);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.sk-page-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-page-title-row h1 {
  margin-bottom: 0;
}
.sk-page-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
}
.sk-page-toolbar {
  min-height: 4.5rem;
  margin-bottom: 0;
  padding: var(--sk-space-2) 0;
  display: flex;
  align-items: flex-end;
  gap: var(--sk-space-3);
}
.sk-toolbar-spacer {
  flex: 1;
}
.sk-card-grid,
.sk-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-6);
}
.sk-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: var(--sk-space-4);
}
.sk-card-grid--compact {
  grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
}
.sk-dashboard-card {
  display: flex;
  flex-direction: column;
  min-height: clamp(24rem, 50dvh, 31rem);
  overflow: hidden;
}
/* «Kom i gang» er en statuslinje med noen få oppgaver, ikke et diagramkort. Med
   kortets minstehøyde ble den et stort, nesten tomt felt når oppsettet er kommet langt. */
.sk-dashboard-readiness { min-height: 0; height: auto; }
/* Periodevelger, lokasjonsstatus og «Oppdater» stod på én linje som ikke kunne brytes,
   så fanene ble presset til 190 px og brøt over tre rader på iPad stående. Nå bryter
   linjen mellom gruppene, og fanene er alltid én rad (de ruller hvis de ikke får plass). */
.sk-dashboard-toolbar { flex-wrap: wrap; row-gap: var(--sk-space-3); }
.sk-dashboard-toolbar > .sk-pill-tabs { flex: 0 1 auto; flex-wrap: nowrap; min-width: 0; max-width: 100%; }
/* Feilbanneret på dashboardet er en innebygd melding, ikke en hel feilside. */
.sk-dashboard > .sk-error-state { max-width: none; margin: 0; padding: var(--sk-space-4) var(--sk-space-5); }
.sk-card-header {
  min-height: 5.2rem;
  padding: var(--sk-card-inset);
  flex-shrink: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-card-header h2 {
  margin-bottom: 0.25rem;
  font-size: var(--sk-type-card-title);
}
.sk-card-header p {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-dashboard-card__body {
  flex: 1 0 auto;
  min-height: 0;
  padding: 0 1.4rem 1.4rem;
  display: flex;
  flex-direction: column;
}
.sk-dashboard-loading {
  min-height: 8rem;
  display: grid;
  place-items: center;
  padding: 1.5rem;
  color: var(--sk-color-ink-soft);
}
.sk-dashboard-loading.is-error { align-content: center; gap: var(--sk-space-3); color: var(--sk-color-danger); }
.sk-dashboard-loading.is-error .sk-button { justify-self: center; }
.sk-data-freshness {
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
  text-align: right;
  margin: var(--sk-space-4) 0 0;
}

/* Dashbordets hurtigvalg: seks valg med «Åpne kassen» (lenke til /terminal).
   Grunnoppsettet (fem kolonner) står i workflows/04-drawers-and-inventory.css. */
.sk-dashboard .sk-dashboard-quick-start > div { grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); }
.sk-dashboard .sk-dashboard-quick-start button:last-child { grid-column: auto; }
.sk-dashboard-quick-start__till { min-height: 5.5rem; padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); color: var(--sk-color-ink); display: grid; justify-items: center; align-content: center; gap: var(--sk-space-2); font-weight: var(--sk-font-weight-strong); text-decoration: none; }
.sk-dashboard-quick-start__till:hover { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }
.sk-dashboard-quick-start__till svg { color: var(--sk-color-primary); }

/* Nora (KI-resepsjon): samtalelogg og sperreliste, salon-operations/OperationsOverview.tsx. */
.sk-nora-admin { margin-top: var(--sk-space-5); }
.sk-nora-list { margin: 0; padding: 0; list-style: none; display: grid; }
.sk-nora-list > li + li { border-top: 1px solid var(--sk-color-border-soft); }
.sk-nora-row { width: 100%; min-height: 3.25rem; padding: var(--sk-space-3) 0; border: 0; background: transparent; color: inherit; display: flex; align-items: center; gap: var(--sk-space-3); text-align: left; font: inherit; cursor: pointer; }
.sk-nora-row--static { cursor: default; }
.sk-nora-row > span:first-child { flex: 1; min-width: 0; display: grid; gap: .15rem; }
.sk-nora-row small { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-medium); }
.sk-nora-row > svg { flex-shrink: 0; color: var(--sk-color-ink-soft); transition: transform var(--sk-motion-base) var(--sk-ease-standard); }
.sk-nora-row > svg.is-open { transform: rotate(90deg); }
.sk-nora-transcript { margin: 0 0 var(--sk-space-3); padding: var(--sk-space-3); border-radius: var(--sk-radius-sm); background: var(--sk-color-surface-hover); font-family: inherit; font-size: var(--sk-font-size-sm); line-height: 1.5; white-space: pre-wrap; }
.sk-nora-block-form { display: grid; grid-template-columns: minmax(10rem, 14rem) minmax(0, 1fr) auto; align-items: end; gap: var(--sk-space-3); margin-bottom: var(--sk-space-4); }
@media (max-width: 40rem) { .sk-nora-block-form { grid-template-columns: 1fr; } }

.sk-page--stacked > :is(.sk-kpi-grid, .sk-stat-row, .sk-restored-status-strip, .sk-pill-tabs) { margin-block: 0; }
.sk-payroll-config-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: var(--sk-space-4); align-items: start; }

/* Oppfølging på dashbordet og Min rutine: scopede blokker, salon/dashboard/WaitingTasksCard.tsx m.fl. */
.sk-followup-stack { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); gap: var(--sk-space-4); min-width: 0; overflow-wrap: anywhere; }
.sk-followup-stack > h2, .sk-followup-stack > p { margin: 0; }
.sk-followup-block { display: grid; align-content: start; gap: var(--sk-space-3); min-width: 0; padding: var(--sk-space-4); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); }
.sk-followup-block > :is(h3, p, ul) { margin: 0; }
.sk-followup-block > h3 { font-size: var(--sk-font-size-md, 1rem); }
.sk-followup-block ul { padding-left: var(--sk-space-5); display: grid; gap: var(--sk-space-1); }
.sk-followup-meta { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-followup-status { padding: var(--sk-space-3); border-radius: var(--sk-radius-sm); background: var(--sk-color-warning-soft); color: var(--sk-color-ink); }
.sk-followup-rows { display: grid; gap: var(--sk-space-2); min-width: 0; }
.sk-followup-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sk-space-2) var(--sk-space-3); min-width: 0; padding-top: var(--sk-space-2); border-top: 1px solid var(--sk-color-border-soft); }
.sk-followup-row > span { flex: 1 1 14rem; min-width: 0; display: grid; gap: var(--sk-space-1); }
.sk-followup-row > .sk-button { flex: 0 0 auto; }
.sk-followup-block > .sk-inline-actions, .sk-followup-block > .sk-button { margin-top: var(--sk-space-1); justify-self: start; }

/* Min rutine: handlinger og lenker i kort. */
.sk-my-events-list { display: grid; gap: var(--sk-space-4); }
.sk-my-events-list > div { display: grid; gap: var(--sk-space-1); min-width: 0; }
.sk-my-events-list h3, .sk-my-events-list p { margin: 0; }
.sk-inline-link { color: var(--sk-color-primary); font-weight: var(--sk-font-weight-strong); text-decoration: underline; text-underline-offset: 0.15em; overflow-wrap: anywhere; }

/* Onboardingmaler: status uten gyldig mal og handlingsrader. */
.sk-onboarding-templates .sk-inline-actions { margin-top: var(--sk-space-1); }
.sk-onboarding-templates__empty { display: grid; gap: var(--sk-space-1); padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-left-width: 4px; border-radius: var(--sk-radius-md); background: var(--sk-color-warning-soft); }
.sk-onboarding-templates__empty > * { margin: 0; }
.sk-onboarding-templates fieldset { padding: var(--sk-space-4); }
.sk-onboarding-templates legend { padding-inline: var(--sk-space-2); font-weight: var(--sk-font-weight-strong); }

.sk-followup-stack > :is(h2, p, .sk-inline-actions) { grid-column: 1 / -1; }

.sk-staff-rule-drafts { display: grid; gap: var(--sk-space-3); }
.sk-staff-rule-drafts > :is(h2, p) { margin: 0; }

.sk-overlay { position: fixed; z-index: var(--sk-z-overlay); inset: 0; background: var(--sk-color-overlay); display: flex; justify-content: flex-end; animation: sk-fade-in var(--sk-motion-base) var(--sk-ease-standard); }
.sk-drawer { width: min(34rem, 100vw); height: 100%; background: var(--sk-color-surface); box-shadow: var(--sk-shadow-drawer); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; animation: sk-drawer-in var(--sk-motion-slow) var(--sk-ease-emphasized); }
.sk-drawer__header { min-height: 5rem; padding: 0 var(--sk-space-5) 0 var(--sk-space-6); border-bottom: 1px solid var(--sk-color-border); display: flex; align-items: center; justify-content: space-between; }
.sk-drawer__header h2 { margin: 0; }
.sk-drawer__header-actions { display: flex; align-items: center; gap: var(--sk-space-2); }
.sk-drawer__body { position: relative; padding: var(--sk-space-6); overflow: auto; display: grid; grid-auto-rows: max-content; align-content: start; gap: var(--sk-space-6); }
/* Long document references must wrap inside the panel rather than enlarge its
   implicit grid column and push the close button and body off screen. */
.sk-drawer, .sk-drawer__body { grid-template-columns: minmax(0, 1fr); }
.sk-drawer__header > div:first-child { min-width: 0; overflow-wrap: anywhere; }
.sk-drawer__footer { flex-wrap: wrap; min-height: 5.25rem; padding: var(--sk-space-4) var(--sk-space-6); border-top: 1px solid var(--sk-color-border); display: flex; align-items: center; justify-content: flex-end; gap: var(--sk-space-3); }
.sk-save-guidance { margin-right: auto; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-overlay--center { align-items: center; justify-content: center; padding: var(--sk-space-5); }
.sk-modal { width: min(100%, 35rem); max-height: calc(100vh - 2 * var(--sk-space-5)); max-height: calc(100dvh - 2 * var(--sk-space-5)); overflow: auto; border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); box-shadow: var(--sk-shadow-popover); animation: sk-modal-in var(--sk-motion-base) var(--sk-ease-emphasized); }
.sk-modal__header { padding: var(--sk-space-6); border-bottom: 1px solid var(--sk-color-border); display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sk-space-4); }
.sk-modal__header h2 { margin-bottom: .35rem; }
.sk-modal__header p { margin: 0; color: var(--sk-color-ink-soft); }
.sk-modal__body { padding: var(--sk-space-6); }
.sk-modal__footer { padding: var(--sk-space-4) var(--sk-space-6); border-top: 1px solid var(--sk-color-border); display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--sk-space-3); }
.sk-modal__footer > .sk-button { max-inline-size: 100%; white-space: normal; }
.sk-search-box { width: 100%; min-width: 0; min-height: var(--sk-control-height-lg); padding: 0 var(--sk-space-4); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-sm); display: flex; align-items: center; gap: var(--sk-space-3); background: var(--sk-color-surface); transition: border-color var(--sk-motion-fast), box-shadow var(--sk-motion-fast); }
.sk-search-box:focus-within { border-color: var(--sk-color-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sk-color-primary) 18%, transparent); }
.sk-search-box svg { flex: none; width: 1.2rem; height: 1.2rem; color: var(--sk-color-ink-faint); }
.sk-search-box input { width: 100%; min-width: 0; min-height: var(--sk-control-height-lg); border: 0; border-radius: 0; padding: var(--sk-space-3) 0; background: transparent; color: var(--sk-color-ink); box-shadow: none !important; font: inherit; }
.sk-search-box--inline { width: min(36rem, 100%); }
/* LUFT: i ren blokkflyt (vanlig innfelt kort, skjema/fieldset/details/div uten egen layoutklasse)
   finnes det ikke gap, så felt, søk og teksten under lå kant i kant (label rett mot forrige
   nedtrekksliste, «Ingen kunder funnet» klistret til søkefeltet). Grid/flex-beholdere med egen
   klasse eier fortsatt sin egen avstand og påvirkes ikke. */
:where([class="sk-card sk-card--inset"], div:not([class], [style]), form:not([class], [style]), fieldset:not([class], [style]), details:not([class], [style]), section:not([class], [style]))
  > :is(.sk-field, .sk-search-box, fieldset):not(:last-child) { margin-block-end: var(--sk-space-4); }
/* LUFT: et <fieldset> uten klasse fikk nettleserens rille og 2 px marg, så rammen lå nesten i
   kortkanten og innholdet tett på rammen. :where() holder spesifisiteten på 0, så alle
   kontekstregler (opplæring, varsler, regler …) fortsatt vinner. */
:where(fieldset:not([class])) { min-width: 0; margin: 0; padding: var(--sk-space-3) var(--sk-space-4) var(--sk-space-4); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-sm); }
:where(fieldset:not([class]) > legend) { padding-inline: var(--sk-space-1); font-weight: var(--sk-font-weight-strong); }
.sk-count-badge { min-width: 2rem; height: 2rem; padding: 0 .6rem; border-radius: var(--sk-radius-pill); background: var(--sk-color-surface-hover); color: var(--sk-color-ink-soft); display: inline-grid; place-items: center; font-weight: var(--sk-font-weight-strong); }
.sk-status-badge { min-height: 1.65rem; padding: .15rem .65rem; border-radius: var(--sk-radius-pill); background: var(--sk-color-info-soft); color: var(--sk-color-info); display: inline-flex; align-items: center; font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }
/* Klassenavnet kommer fra `statusBadgeSlug` i components/patterns.tsx: små
   bokstaver, æ→ae, ø→o, å→a, resten til bindestrek. «Fullført» ble tidligere
   `is-fullf-rt`, så regelen `.is-fullført` under her traff aldri noe — og hele
   det norske statussettet sto i standard blåfarge uansett betydning.
   Grønt = ferdig og bra, gult = venter på noen, grått = ikke i spill,
   rødt = stoppet. Nye statuser skal føres opp her, ikke i en modulfil. */
.sk-status-badge.is-aktiv,
.sk-status-badge.is-live,
.sk-status-badge.is-paid,
.sk-status-badge.is-fullfort,
.sk-status-badge.is-mottatt,
.sk-status-badge.is-innlost { background: var(--sk-color-success-soft); color: var(--sk-color-success); }
.sk-status-badge.is-apen,
.sk-status-badge.is-planlagt,
.sk-status-badge.is-bestilt,
.sk-status-badge.is-delvis-mottatt,
.sk-status-badge.is-venter-pa-betaling { background: var(--sk-color-warning-soft); color: var(--sk-color-warning); }
.sk-status-badge.is-arkivert,
.sk-status-badge.is-inactive,
.sk-status-badge.is-draft,
.sk-status-badge.is-utkast,
.sk-status-badge.is-utlopt { background: var(--sk-color-surface-hover); color: var(--sk-color-ink-soft); }
.sk-status-badge.is-avvik,
.sk-status-badge.is-feil,
.sk-status-badge.is-cancelled,
.sk-status-badge.is-kansellert { background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }
.sk-data-table-wrap { overflow: auto; border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); }
.sk-data-table { width: 100%; min-width: 48rem; border-collapse: collapse; }
.sk-data-table th, .sk-data-table td { min-height: 4rem; padding: var(--sk-space-3) var(--sk-space-4); border-bottom: 1px solid var(--sk-color-border-soft); text-align: left; vertical-align: middle; }
.sk-data-table th { position: sticky; z-index: 2; top: 0; height: 3.5rem; background: var(--sk-color-surface); color: var(--sk-color-ink-soft); font-size: var(--sk-type-table); font-weight: var(--sk-font-weight-strong); }
.sk-sort-button { width: 100%; min-height: 2.5rem; padding: 0; border: 0; background: transparent; color: inherit; display: inline-flex; align-items: center; gap: var(--sk-space-2); font: inherit; font-weight: inherit; text-align: left; cursor: pointer; }
.sk-sort-button svg { width: 1rem; height: 1rem; opacity: .65; }
.sk-data-table th.is-right .sk-sort-button { justify-content: flex-end; }
.sk-data-table tbody tr:hover { background: var(--sk-color-surface-hover); }
.sk-data-table tbody tr.is-active { background: var(--sk-color-primary-soft); box-shadow: inset 3px 0 0 var(--sk-color-primary); }
.sk-data-table tbody tr.is-clickable { cursor: pointer; }
.sk-data-table tbody tr.is-clickable:focus-visible { outline: 3px solid var(--sk-color-focus-ring); outline-offset: -3px; }
.sk-data-table .is-right { text-align: right; }
.sk-data-table__check { width: 3rem; text-align: center !important; }
.sk-data-table__check input { width: 1.15rem; height: 1.15rem; accent-color: var(--sk-color-primary); }
.sk-data-table__open { width: 3.5rem; padding-inline: var(--sk-space-2) !important; }
.sk-data-table__open button { width: 2.5rem; height: 2.5rem; border: 0; border-radius: 50%; background: transparent; cursor: pointer; }
.sk-data-table__open button:hover { background: var(--sk-color-surface-hover); }
.sk-table-empty { min-height: 12rem; display: grid; place-items: center; }
.sk-person-cell { display: flex; align-items: center; gap: var(--sk-space-3); }
.sk-person-cell > span:last-child { display: grid; }
.sk-person-cell small { color: var(--sk-color-ink-soft); }
.sk-selection-bar { position: sticky; z-index: 8; bottom: var(--sk-space-4); width: fit-content; min-height: 4rem; margin: var(--sk-space-4) auto 0; padding: var(--sk-space-2) var(--sk-space-3) var(--sk-space-2) var(--sk-space-5); border-radius: var(--sk-radius-pill); background: var(--sk-color-ink); color: var(--sk-color-canvas); box-shadow: var(--sk-shadow-popover); display: flex; align-items: center; gap: var(--sk-space-3); }
.sk-selection-bar .sk-button { min-height: 2.7rem; }
.sk-selection-bar .sk-button--secondary:not(:disabled), .sk-selection-bar .sk-button--ghost:not(:disabled) { background: var(--sk-color-surface); border-color: var(--sk-color-border); color: var(--sk-color-ink); }
.sk-selection-bar .sk-button--secondary:hover:not(:disabled), .sk-selection-bar .sk-button--ghost:hover:not(:disabled) { background: var(--sk-color-surface-hover); }
.sk-settings-list { display: grid; gap: var(--sk-space-8); }
.sk-settings-list h2 { font-size: var(--sk-type-section-title); }
.sk-settings-list__group { border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); overflow: hidden; background: var(--sk-color-surface); }
.sk-settings-list > section { min-width: 0; }
.sk-settings-list__group > button { width: 100%; min-height: 5rem; padding: var(--sk-space-3) var(--sk-space-5); border: 0; border-bottom: 1px solid var(--sk-color-border-soft); background: var(--sk-color-surface); display: grid; grid-template-columns: 2.75rem minmax(0, 1fr) auto auto; align-items: center; gap: var(--sk-space-4); text-align: left; cursor: pointer; }
.sk-settings-list__group > button > span { min-width: 0; overflow-wrap: anywhere; }
.sk-settings-list__group > button:last-child { border-bottom: 0; }
.sk-settings-list__group > button:hover { background: var(--sk-color-surface-hover); }
.sk-settings-list__group strong, .sk-settings-list__group small { display: block; }
.sk-settings-list__group small { color: var(--sk-color-ink-soft); }
.sk-settings-list__icon { color: var(--sk-color-ink-soft); display: grid; place-items: center; }
.sk-pagination { min-height: 4rem; display: flex; justify-content: flex-start; align-items: center; gap: var(--sk-space-3); flex-wrap: wrap; }
.sk-pagination__pages { display: flex; align-items: center; gap: var(--sk-space-1); list-style: none; margin: 0; padding: 0; }
.sk-pagination__gap { min-width: 2.4rem; text-align: center; color: var(--sk-color-ink-soft); }
.sk-pagination__page { min-width: 2.75rem; min-height: 2.75rem; padding: 0 var(--sk-space-2); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); color: var(--sk-color-ink); font: inherit; font-weight: var(--sk-font-weight-strong); cursor: pointer; }
.sk-pagination__page:hover { background: var(--sk-color-surface-hover); }
.sk-pagination__page:focus-visible { outline: 3px solid var(--sk-color-focus-ring); outline-offset: 2px; }
.sk-pagination__page[aria-current="page"] { background: var(--sk-color-ink); border-color: var(--sk-color-ink); color: white; }
.sk-pagination__jump { display: flex; align-items: center; gap: var(--sk-space-2); }
.sk-pagination__jump input { width: 5.5rem; min-height: var(--sk-control-height); padding: 0 var(--sk-space-2); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); color: var(--sk-color-ink); font: inherit; }
.sk-pagination__jump input:focus-visible { outline: 3px solid var(--sk-color-focus-ring); outline-offset: 2px; }
.sk-directory-table { position: relative; }
.sk-directory-table[data-busy="true"] { opacity: 0.6; transition: opacity 120ms ease; }
.sk-directory-status { display: flex; align-items: center; justify-content: center; gap: var(--sk-space-2); min-height: 2.4rem; margin-bottom: var(--sk-space-2); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-directory-status svg { animation: sk-spin 900ms linear infinite; }
.sk-directory-error { margin-top: var(--sk-space-2); padding: var(--sk-space-2) var(--sk-space-3); border-radius: var(--sk-radius-md); background: var(--sk-color-danger-soft, var(--sk-color-surface-hover)); color: var(--sk-color-danger); font-size: var(--sk-font-size-sm); }
@keyframes sk-spin { to { transform: rotate(360deg); } }
.sk-action-menu { position: relative; }
.sk-action-popover { min-width: 19rem; }
.sk-action-popover > button { width: 100%; min-height: 3.7rem; padding: var(--sk-space-2) var(--sk-space-3); border: 0; border-radius: var(--sk-radius-sm); background: transparent; display: grid; grid-template-columns: 1.5rem minmax(0, 1fr) auto; align-items: center; gap: var(--sk-space-3); text-align: left; cursor: pointer; }
.sk-action-popover > button:hover { background: var(--sk-color-surface-hover); }
.sk-action-popover > button.is-danger { color: var(--sk-color-danger); }
.sk-action-popover > button:disabled { background: var(--sk-color-disabled-bg); color: var(--sk-color-disabled-text); cursor: not-allowed; }
.sk-action-popover > button > span:nth-child(2) { display: grid; min-width: 0; overflow-wrap: anywhere; }
.sk-action-popover small { color: var(--sk-color-ink-soft); }
.sk-drawer--wide { width: min(48rem, 100vw); }
.sk-drawer--client { width: min(62rem, calc(100vw - 16rem)); }
.sk-avatar--large { width: 4.5rem; height: 4.5rem; font-size: var(--sk-font-size-xl); }
.sk-client-hero { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--sk-space-4); }
.sk-client-hero > div:not(.sk-client-hero-actions) { display: grid; }
.sk-client-hero > div:not(.sk-client-hero-actions) > strong { font-size: var(--sk-font-size-xl); }
.sk-client-hero > div:not(.sk-client-hero-actions) > span { color: var(--sk-color-ink-soft); }
.sk-client-photo { overflow: hidden; }
.sk-client-photo img { width: 100%; height: 100%; object-fit: cover; }
.sk-client-hero-actions { display: flex; align-items: center; justify-content: flex-end; gap: var(--sk-space-2); flex-wrap: wrap; }
.sk-client-image-action, .sk-client-image-remove { display: inline-flex; align-items: center; justify-content: center; gap: var(--sk-space-2); min-height: var(--sk-control-height); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-md); padding: 0 var(--sk-space-3); background: var(--sk-color-surface); color: var(--sk-color-ink); font: inherit; font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); cursor: pointer; }
.sk-client-image-action input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.sk-client-image-action:has(input:focus-visible), .sk-client-image-remove:focus-visible { outline: 3px solid var(--sk-color-focus-ring); outline-offset: 2px; }
.sk-client-image-action:has(input:disabled), .sk-client-image-remove:disabled { background: var(--sk-color-disabled-bg); color: var(--sk-color-disabled-text); cursor: wait; }
.sk-client-image-remove { width: var(--sk-control-height); padding: 0; color: var(--sk-color-danger); }
.sk-client-directory { max-height: min(58rem, calc(100vh - 19rem)); }
.sk-client-directory .sk-data-table { min-width: 50rem; table-layout: fixed; }
.sk-client-directory .sk-data-table__check { width: 3.25rem; }
.sk-client-directory .sk-data-table__open { width: 3.5rem; }
.sk-client-directory th:nth-child(2),
.sk-client-directory td:nth-child(2) { width: 42%; }
.sk-client-directory th:nth-child(3),
.sk-client-directory td:nth-child(3) { width: 22%; }
.sk-client-directory th:nth-child(4),
.sk-client-directory td:nth-child(4) { width: 18%; }
.sk-client-contact-line { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk-client-activity-cell { display: grid; gap: var(--sk-space-1); }
.sk-client-activity-cell small { color: var(--sk-color-ink-soft); }
.sk-primary-actions { display: flex; gap: var(--sk-space-3); }
.sk-tabs { display: flex; gap: var(--sk-space-1); overflow-x: auto; border-bottom: 1px solid var(--sk-color-border); }
.sk-tabs button { min-height: 3rem; padding: 0 var(--sk-space-3); border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--sk-color-ink-soft); cursor: pointer; white-space: nowrap; }
.sk-tabs button.is-active { border-bottom-color: var(--sk-color-primary); color: var(--sk-color-ink); font-weight: var(--sk-font-weight-strong); }
/* Nøkkeltall deler alltid bredde. Med to faste kolonner ble tre kort til to
   pluss ett halvbredt, og fem kort til fire pluss ett — søsken i samme
   gruppe så da ulikt store ut uten at det betydde noe. `auto-fit` gir like
   spor uansett antall, og `stretch` gir lik høyde. Se også `.sk-kpi-grid` i
   24-designsystem.css, som er den samme regelen for nye flater. */
.sk-stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); align-items: stretch; gap: var(--sk-space-3); }
/* Tiles are authored as either <span> or <div>. Match any direct child so the
   card layout applies everywhere; an inline tile would otherwise run its label
   and value together on one line. */
.sk-stat-grid > * { min-height: 7rem; padding: var(--sk-space-4); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); display: grid; align-content: center; gap: var(--sk-space-1); }
.sk-stat-grid > * > small, .sk-stat-grid > * > span { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-stat-grid strong { color: var(--sk-color-ink); font-size: var(--sk-font-size-xl); line-height: 1.15; font-variant-numeric: tabular-nums; }
.sk-timeline { display: grid; }
.sk-timeline article { min-height: 4.5rem; display: grid; grid-template-columns: 1rem 1fr; gap: var(--sk-space-3); }
.sk-timeline article > span { width: .7rem; height: .7rem; margin-top: .35rem; border-radius: 50%; background: var(--sk-color-primary); box-shadow: 0 0 0 4px var(--sk-color-primary-soft); }
.sk-timeline article > div { padding-bottom: var(--sk-space-4); border-bottom: 1px solid var(--sk-color-border-soft); }
.sk-timeline p, .sk-muted-copy { margin: 0; color: var(--sk-color-ink-soft); }
.sk-json-summary { margin: 0; padding: var(--sk-space-4); border-radius: var(--sk-radius-md); background: var(--sk-color-canvas); overflow: auto; white-space: pre-wrap; }
.sk-segment-card, .sk-feature-card { padding: var(--sk-card-inset); display: grid; gap: var(--sk-space-5); }
.sk-segment-card > div { display: flex; align-items: center; gap: var(--sk-space-3); }
.sk-segment-card > div > span { display: grid; }
.sk-segment-card small { color: var(--sk-color-ink-soft); }
.sk-segment-card > b { font-size: var(--sk-font-size-2xl); }
.sk-feature-card > svg { color: var(--sk-color-primary); }
.sk-rule-builder { padding: var(--sk-space-4); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); display: grid; gap: var(--sk-space-4); }
.sk-rule-builder header { display: flex; align-items: center; gap: var(--sk-space-3); }
.sk-rule-row { display: grid; grid-template-columns: 1.4fr 1fr 1fr auto; gap: var(--sk-space-2); }
.sk-rule-row select, .sk-rule-row input { min-width: 0; height: var(--sk-control-height); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-sm); padding: 0 var(--sk-space-3); background: var(--sk-color-surface); }
/* Terminalen tegner tomme tilstander som et kort med stiplet ramme
   (.sk-terminal-empty-card). Operatørrommet tegnet dem som fri tekst midt i et
   ellers rammet grensesnitt, så «ingenting her» og «noe mangler i lastingen»
   så like ut. Samme ramme, radius og luft her gir én tom tilstand i hele
   produktet. */
.sk-empty-state { min-height: 12rem; margin: auto; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px dashed var(--sk-color-border-soft); border-radius: var(--sk-radius-lg); padding: var(--sk-space-6) var(--sk-space-5); text-align: center; color: var(--sk-color-ink); }
.sk-empty-state svg { margin-bottom: var(--sk-space-4); }
.sk-empty-state strong { font-size: var(--sk-font-size-xl); }
.sk-empty-state p { max-width: 28rem; margin: var(--sk-space-2) 0 var(--sk-space-4); color: var(--sk-color-ink-soft); }
.sk-empty-state--compact { min-height: 8rem; }
.sk-error-state { max-width: 40rem; margin: 4rem auto; padding: var(--sk-space-8); border: 1px solid var(--sk-color-danger); border-radius: var(--sk-radius-lg); background: var(--sk-color-danger-soft); }
.sk-error-state strong { font-size: var(--sk-font-size-xl); }
.sk-error-state p { color: var(--sk-color-danger); }
.sk-skeleton-card { min-height: 24rem; padding: var(--sk-space-8); }
.sk-skeleton { display: block; border-radius: .4rem; background: linear-gradient(90deg, var(--sk-color-border-soft) 25%, var(--sk-color-canvas) 50%, var(--sk-color-border-soft) 75%); background-size: 200% 100%; animation: sk-shimmer 1.35s linear infinite; }
.sk-skeleton--title { width: 42%; height: 1.7rem; }
.sk-skeleton--value { width: 28%; height: 2.8rem; margin: 2rem 0 3rem; }
.sk-skeleton--body { height: 1rem; margin-top: 1rem; }
.sk-form-error { padding: .75rem 1rem; border-radius: var(--sk-radius-sm); background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }
/* Søsken til `.sk-form-error`, i gult i stedet for rødt: noe er ufullstendig,
   men det stopper deg ikke. Brukes til rader som var ufullstendige før du åpnet
   skjemaet — de skal merkes, ikke låse lagringen. */
.sk-form-hint { padding: .75rem 1rem; border-radius: var(--sk-radius-sm); background: var(--sk-color-warning-soft); color: var(--sk-color-warning); }
.sk-form-hint > button { background: none; border: 0; padding: 0; color: inherit; font: inherit; font-weight: var(--sk-font-weight-strong); text-decoration: underline; cursor: pointer; }
/* A stale-reload failure keeps the previous list on screen — this banner sits
   above it instead of replacing the page with a full-screen error, so a
   flaky retry never reads as data loss. */
.sk-inline-error-banner { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-4); margin-bottom: var(--sk-space-4); padding: .75rem 1rem; border-radius: var(--sk-radius-sm); background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }
.sk-refresh-hint { margin: 0 0 var(--sk-space-4); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
/* En advarsel er ikke et avslag. Den skal ses, men ikke se ut som at skjemaet
   er avvist — det er fortsatt lov å lagre. */
.sk-form-warning { margin: 0; padding: .75rem 1rem; border-radius: var(--sk-radius-sm); background: var(--sk-color-warning-soft); color: var(--sk-color-ink); line-height: 1.5; }
.sk-form-stack { display: grid; gap: var(--sk-space-5); }
.sk-form-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: var(--sk-space-4); }
.sk-form-row > .sk-button { align-self: end; justify-self: start; }
.sk-form-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--sk-space-3); }
.sk-back-row { justify-self: start; min-height: 2.5rem; padding: 0; border: 0; background: transparent; color: var(--sk-color-ink-soft); display: inline-flex; align-items: center; gap: var(--sk-space-2); cursor: pointer; }
.sk-back-row:hover { color: var(--sk-color-ink); }
.sk-picker { display: grid; gap: var(--sk-space-4); min-height: 0; }
.sk-picker-create { min-height: 4.5rem; padding: var(--sk-space-3); border: 0; border-radius: var(--sk-radius-md); background: var(--sk-color-primary-soft); color: var(--sk-color-primary); display: grid; grid-template-columns: 2.5rem 1fr auto; align-items: center; gap: var(--sk-space-3); text-align: left; cursor: pointer; }
.sk-picker-create strong, .sk-picker-create small { display: block; }
.sk-picker-create small { color: var(--sk-color-ink-soft); }
.sk-picker-list { max-height: min(54vh, 36rem); overflow-y: auto; border-block: 1px solid var(--sk-color-border-soft); }
.sk-picker-list > button { width: 100%; min-height: 4.8rem; padding: var(--sk-space-3) var(--sk-space-2); border: 0; border-bottom: 1px solid var(--sk-color-border-soft); background: var(--sk-color-surface); display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: var(--sk-space-3); text-align: left; cursor: pointer; }
.sk-picker-list > button:hover, .sk-picker-list > button.is-selected { background: var(--sk-color-surface-selected); }
.sk-picker-list strong, .sk-picker-list small { display: block; }
.sk-picker-list small { color: var(--sk-color-ink-soft); }
.sk-service-color { width: .75rem; height: 2.5rem; border-radius: var(--sk-radius-pill); background: var(--sk-service-category-color, var(--sk-color-service-accent)); }
.sk-picker-footer { position: sticky; bottom: 0; min-height: 4.5rem; padding-top: var(--sk-space-3); background: var(--sk-color-surface); display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-4); }
.sk-list-skeleton { height: 16rem; border-radius: var(--sk-radius-md); background: linear-gradient(90deg, var(--sk-color-border-soft) 25%, var(--sk-color-canvas) 50%, var(--sk-color-border-soft) 75%); background-size: 200% 100%; animation: sk-shimmer 1.35s linear infinite; }
.sk-readiness-banner { padding: var(--sk-space-4); border-radius: var(--sk-radius-md); background: var(--sk-color-info-soft); color: var(--sk-color-info); }
.sk-readiness-banner strong, .sk-readiness-banner p { display: block; }
.sk-readiness-banner p { margin: var(--sk-space-1) 0 0; }
.sk-readiness-banner ul { margin: var(--sk-space-2) 0 0; padding-left: var(--sk-space-5); }
.sk-readiness-banner li + li { margin-top: var(--sk-space-1); }
.sk-readiness-banner.is-warning { background: var(--sk-color-warning-soft); color: var(--sk-color-warning); }
.sk-settings-sections { display: grid; gap: var(--sk-space-8); }
.sk-settings-sections section { display: grid; gap: var(--sk-space-4); }
.sk-settings-sections h3 { margin: 0; font-size: var(--sk-type-card-title); }
.sk-stat-grid--four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sk-loyalty-layout { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sk-space-4); }
.sk-loyalty-empty { min-height: 22rem; display: grid; place-items: center; align-content: center; gap: var(--sk-space-4); padding: var(--sk-space-8); text-align: center; }
.sk-loyalty-empty h3, .sk-loyalty-empty p { margin: 0; }
.sk-loyalty-empty p, .sk-loyalty-empty small { color: var(--sk-color-ink-soft); }
.sk-loyalty-empty__icon { width: 4rem; height: 4rem; display: grid; place-items: center; border-radius: 50%; background: var(--sk-color-primary-soft); color: var(--sk-color-primary); }
.sk-loyalty-empty__icon svg { width: 1.6rem; height: 1.6rem; }
.sk-switch-row, .sk-checkbox-row { min-height: 3.5rem; display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-4); border-bottom: 1px solid var(--sk-color-border-soft); }
.sk-switch-row > span { display: grid; flex: 1 1 auto; min-width: 0; }
/* LUFT: bryteren/haken skal aldri presse forklaringen sammen til ett ord per linje, og selve
   kontrollen skal ikke krympe. */
:is(.sk-switch-row, .sk-checkbox-row) > input { flex: none; }
.sk-switch-row small { color: var(--sk-color-ink-soft); }
.sk-switch-row input { width: 2.75rem; height: 1.5rem; accent-color: var(--sk-color-primary); }
.sk-checkbox-row { justify-content: flex-start; }
.sk-checkbox-row input { width: 1.25rem; height: 1.25rem; accent-color: var(--sk-color-primary); }
.sk-check-list { display: grid; gap: var(--sk-space-1); }
.sk-check-list:is(fieldset) { margin: 0; padding: var(--sk-space-2); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-sm); }
.sk-check-list > legend { padding: 0 var(--sk-space-1); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); }
.sk-check-list > label { min-height: 2.5rem; padding: 0 var(--sk-space-2); display: flex; align-items: center; gap: var(--sk-space-2); border-radius: var(--sk-radius-sm); }
.sk-check-list > label:hover { background: var(--sk-color-surface-hover); }
.sk-check-list > button { min-height: 3.75rem; padding: 0 var(--sk-space-3); border: 0; border-radius: var(--sk-radius-sm); background: transparent; display: flex; align-items: center; justify-content: space-between; text-align: left; cursor: pointer; }
.sk-check-list > button:hover, .sk-check-list > button.is-selected { background: var(--sk-color-surface-selected); }
/* En rad i «Velg team»: valgknappen selv, med opp/ned-pilene ved siden av.
   Knappen er ikke lenger et direkte barn av lista, så den arver ikke regelen
   over — radutseendet gjentas her framfor å la navnet renne sammen. */
.sk-check-list > .sk-team-order-row { display: flex; align-items: center; gap: var(--sk-space-1); }
.sk-check-list > .sk-team-order-row > button:first-child { flex: 1; min-width: 0; min-height: 3.75rem; padding: 0 var(--sk-space-3); border: 0; border-radius: var(--sk-radius-sm); background: transparent; display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-2); text-align: left; cursor: pointer; }
.sk-check-list > .sk-team-order-row > button:first-child:hover, .sk-check-list > .sk-team-order-row > button:first-child.is-selected { background: var(--sk-color-surface-selected); }
.sk-team-order-controls { flex: none; display: flex; align-items: center; gap: var(--sk-space-1); }
.sk-team-order-controls .sk-icon-button svg { width: 1.1rem; height: 1.1rem; }
.sk-check-list strong, .sk-check-list small { display: block; }
.sk-check-list small { color: var(--sk-color-ink-soft); }
.sk-inset-form { padding: var(--sk-space-4); border-radius: var(--sk-radius-md); background: var(--sk-color-canvas); display: grid; gap: var(--sk-space-4); }
.sk-emoji-picker { display: flex; flex-wrap: wrap; gap: var(--sk-space-2); }
.sk-emoji-picker button, .sk-weekday-picker button { width: 2.9rem; height: 2.9rem; border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-sm); background: var(--sk-color-surface); cursor: pointer; }
.sk-emoji-picker button { font-size: var(--sk-font-size-xl); }
.sk-emoji-picker button.is-selected, .sk-weekday-picker button.is-selected { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }
.sk-weekday-picker { display: flex; gap: var(--sk-space-2); }
.sk-auth-shell { min-height: 100vh; display: grid; place-items: center; padding: var(--sk-space-6); background: var(--sk-color-canvas); }
.sk-auth-card { width: min(100%, 29rem); padding: 2.75rem; border: 1px solid var(--sk-color-border); border-radius: var(--sk-card-radius); background: var(--sk-color-surface); box-shadow: var(--sk-shadow-popover); }
.sk-auth-card--wide { width: min(100%, 38rem); }
.sk-auth-brand { display: flex; align-items: center; gap: .7rem; margin-bottom: 3rem; font-size: var(--sk-font-size-xl); font-weight: var(--sk-font-weight-strong); }
.sk-auth-icon { width: 3rem; height: 3rem; display: grid; place-items: center; border-radius: .8rem; background: var(--sk-color-primary-soft); color: var(--sk-color-primary); }
.sk-auth-card h1 { margin: var(--sk-space-5) 0 var(--sk-space-2); font-size: var(--sk-type-page-title); }
.sk-auth-card > p { color: var(--sk-color-ink-soft); }
.sk-auth-card form { display: grid; gap: var(--sk-space-5); margin-top: var(--sk-space-8); }
.sk-auth-loading { display: inline-flex; align-items: center; gap: var(--sk-space-3); font-weight: var(--sk-font-weight-strong); }
.sk-tenant-list { display: grid; gap: var(--sk-space-2); margin: var(--sk-space-8) 0 var(--sk-space-5); }
.sk-tenant-list > button { min-height: 4.8rem; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: var(--sk-space-4); padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); text-align: left; cursor: pointer; }
.sk-tenant-list > button:hover { background: var(--sk-color-surface-hover); }
.sk-tenant-list strong, .sk-tenant-list small { display: block; }
.sk-tenant-list small { color: var(--sk-color-ink-soft); }
.sk-auth-card .sk-button--primary { width: 100%; justify-content: center; }
.sk-auth-card .sk-back-row { margin-top: var(--sk-space-6); }
.sk-auth-links { margin-top: var(--sk-space-5); display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-3); }
.sk-auth-links button, .sk-auth-resend { min-height: 2.5rem; padding: 0; border: 0; background: transparent; color: var(--sk-color-primary); font: inherit; font-weight: var(--sk-font-weight-strong); cursor: pointer; }
.sk-auth-resend { margin-top: var(--sk-space-4); display: inline-flex; align-items: center; gap: var(--sk-space-2); }
.sk-auth-resend:disabled { color: var(--sk-color-ink-faint); cursor: default; }
.sk-auth-code-expiry { display: flex; align-items: flex-start; gap: var(--sk-space-2); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-auth-code-expiry svg { width: 1rem; height: 1rem; flex: 0 0 auto; margin-top: .15rem; color: var(--sk-color-primary); }
.sk-auth-code-expiry p { margin: 0; }
.sk-auth-code-expiry.is-expired, .sk-auth-code-expiry.is-expired svg { color: var(--sk-color-danger); }
.sk-auth-code-notice { margin: 0; padding: .75rem 1rem; border-radius: var(--sk-radius-sm); }
.sk-auth-code-notice.is-error { background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }
.sk-auth-code-notice.is-success { background: var(--sk-color-success-soft); color: var(--sk-color-success); }

.sk-audit-meta { display: flex; flex-wrap: wrap; gap: var(--sk-space-4); margin: 0; padding: var(--sk-space-3) 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-audit-meta > div { display: flex; gap: var(--sk-space-2); }
.sk-audit-meta dt { font-weight: var(--sk-font-weight-strong); color: var(--sk-color-ink); }
.sk-audit-meta dd { margin: 0; }
.sk-readiness-gate { display: flex; align-items: flex-start; gap: var(--sk-space-3); padding: var(--sk-space-4); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); }
.sk-readiness-gate > span { display: grid; place-items: center; width: 2.25rem; height: 2.25rem; flex: 0 0 auto; border-radius: 50%; background: var(--sk-color-warning-soft); color: var(--sk-color-warning); }
.sk-readiness-gate > div { display: grid; gap: var(--sk-space-2); }
.sk-readiness-gate p { margin: 0; color: var(--sk-color-ink-soft); }
.sk-readiness-gate.is-blocked > span { background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }
.sk-code-input { min-height: 4.2rem !important; text-align: center; font-size: var(--sk-font-size-2xl); font-weight: var(--sk-font-weight-strong); letter-spacing: .65rem; font-variant-numeric: tabular-nums; }
.sk-auth-readiness, .sk-auth-security-copy { margin-top: var(--sk-space-6); padding: var(--sk-space-4); border-radius: var(--sk-radius-md); background: var(--sk-color-canvas); display: grid; grid-template-columns: auto 1fr; align-items: start; gap: var(--sk-space-3); color: var(--sk-color-ink-soft); }
.sk-auth-readiness > svg { color: var(--sk-color-success); }
.sk-auth-security-copy > svg { color: var(--sk-color-primary); }
.sk-auth-readiness p, .sk-auth-security-copy p { margin: 0; }
.sk-auth-readiness strong { display: block; color: var(--sk-color-ink); }
.sk-auth-trust { margin-top: var(--sk-space-7); padding-top: var(--sk-space-4); border-top: 1px solid var(--sk-color-border-soft); color: var(--sk-color-ink-soft); display: flex; align-items: center; gap: var(--sk-space-2); font-size: var(--sk-font-size-sm); }
.sk-auth-trust svg { color: var(--sk-color-success); }
.sk-auth-options { margin-top: var(--sk-space-6); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); overflow: hidden; }
.sk-auth-options > button { width: 100%; min-height: 5.2rem; padding: var(--sk-space-3) var(--sk-space-4); border: 0; border-bottom: 1px solid var(--sk-color-border-soft); background: var(--sk-color-surface); display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: var(--sk-space-3); text-align: left; cursor: pointer; }
.sk-auth-options > button:last-child { border-bottom: 0; }
.sk-auth-options > button:hover { background: var(--sk-color-surface-hover); }
.sk-auth-options > button.is-selected { background: var(--sk-color-primary-soft); color: var(--sk-color-primary); }
.sk-auth-options > button > svg:first-child { color: var(--sk-color-primary); }
.sk-auth-options span { display: grid; }
.sk-auth-options small { color: var(--sk-color-ink-soft); }
.sk-auth-recovery-result { margin: var(--sk-space-4) 0 0; padding: var(--sk-space-3) var(--sk-space-4); border-radius: var(--sk-radius-md); background: var(--sk-color-canvas); color: var(--sk-color-ink-soft); }
.sk-entity-picker:disabled, .sk-choice-grid button:disabled, .sk-settings-rows button:disabled { border-color: var(--sk-color-disabled-border); background: var(--sk-color-disabled-bg); color: var(--sk-color-disabled-text); }
.sk-toast-region { position: fixed; z-index: var(--sk-z-toast); left: var(--sk-space-5); bottom: var(--sk-space-5); width: min(25rem, calc(100vw - 2 * var(--sk-space-5))); display: flex; flex-direction: column; align-items: stretch; gap: var(--sk-space-3); pointer-events: none; }
.sk-toast { position: relative; min-height: 5rem; padding: var(--sk-space-4); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); box-shadow: var(--sk-shadow-popover); display: grid; grid-template-columns: auto 1fr auto; align-items: start; gap: var(--sk-space-3); overflow: hidden; pointer-events: auto; animation: sk-toast-in var(--sk-motion-slow) var(--sk-ease-emphasized); }
.sk-toast > svg { color: var(--sk-color-info); }
.sk-toast.is-success > svg { color: var(--sk-color-success); }
.sk-toast.is-warning > svg { color: var(--sk-color-warning); }
.sk-toast.is-danger > svg { color: var(--sk-color-danger); }
.sk-toast > div { min-width: 0; overflow-wrap: anywhere; display: grid; gap: var(--sk-space-1); }
.sk-toast p { margin: 0; color: var(--sk-color-ink-soft); }
.sk-toast > button { width: max(44px, var(--sk-control-height)); height: max(44px, var(--sk-control-height)); min-width: max(44px, var(--sk-control-height)); min-height: max(44px, var(--sk-control-height)); border: 0; border-radius: 50%; background: transparent; display: grid; place-items: center; cursor: pointer; }
.sk-toast > button:hover { background: var(--sk-color-surface-hover); }
.sk-toast > div > button { width: fit-content; min-height: 2rem; padding: 0; border: 0; background: transparent; color: var(--sk-color-primary); font: inherit; font-weight: var(--sk-font-weight-strong); cursor: pointer; }
.sk-toast > i { position: absolute; inset: auto 0 0; height: .2rem; background: currentColor; opacity: .24; animation: sk-toast-life 4.5s linear forwards; transform-origin: left; }
.sk-toast.is-persistent { border-width: 2px; }
@media (max-width: 44rem) {
  .sk-data-table-wrap { overflow: visible; border: 0; background: transparent; }
  .sk-data-table { min-width: 0; display: block; }
  .sk-client-directory { max-height: none; }
  .sk-client-directory .sk-data-table { min-width: 0; }
  .sk-client-directory .sk-data-table tbody td { width: auto; }
  .sk-data-table thead { position: absolute; left: 0; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; display: block; }
  .sk-data-table thead tr { display: block; width: 1px; height: 1px; overflow: hidden; }
  .sk-data-table thead th { position: static; display: block; width: 1px; height: 1px; min-height: 0; padding: 0; overflow: hidden; }
  .sk-data-table tbody { display: grid; gap: var(--sk-space-3); }
  .sk-data-table tbody tr { padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sk-space-2); }
  .sk-data-table tbody td { min-width: 0; min-height: 2.75rem; padding: var(--sk-space-2); border: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(7rem, 40%)), 1fr)); align-items: center; gap: var(--sk-space-3); text-align: left !important; overflow-wrap: anywhere; }
  .sk-data-table tbody td > * { min-width: 0; overflow-wrap: anywhere; }
  .sk-data-table tbody td[data-label]::before { content: attr(data-label); color: var(--sk-color-ink-soft); font-size: var(--sk-type-table); font-weight: var(--sk-font-weight-strong); }
  .sk-data-table .sk-data-table__check,
  .sk-data-table .sk-data-table__open { width: auto; display: flex; justify-content: flex-end; }
  .sk-data-table__open button { width: 2.75rem; height: 2.75rem; }
  .sk-data-table tbody td:has(> .sk-table-empty) { display: block; }
  .sk-data-table .sk-table-empty { min-height: 12rem; }
}
.sk-filter-chips { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-2); margin-bottom: var(--sk-space-4); }
.sk-filter-chips > button:not(.sk-button) { min-height: 2.25rem; padding: .35rem .7rem; border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-pill); background: var(--sk-color-surface); color: var(--sk-color-ink); cursor: pointer; }
.sk-filter-chips > button:not(.sk-button):hover { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }
.sk-location-badges { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .35rem; }
.sk-location-badges > span { display: inline-flex; align-items: center; min-height: 1.4rem; padding: .1rem .5rem; border-radius: var(--sk-radius-pill); background: var(--sk-color-surface-hover); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }
.sk-inline-select { min-width: 12rem; margin: 0; }
.sk-inline-select > span { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* Kanalmatrise i Kundemeldinger: hendelse i rad, kanal i kolonne. */
.sk-channel-matrix { width: 100%; border-collapse: collapse; }
.sk-channel-matrix th, .sk-channel-matrix td { padding: var(--sk-space-3) var(--sk-space-2); border-bottom: 1px solid var(--sk-color-border-soft); text-align: left; vertical-align: middle; }
.sk-channel-matrix thead th { color: var(--sk-color-ink-soft); font-size: var(--sk-type-table); font-weight: var(--sk-font-weight-strong); }
.sk-channel-matrix thead th:not(:first-child), .sk-channel-matrix tbody td { width: 5.5rem; text-align: center; }
.sk-channel-matrix tbody th { font-weight: var(--sk-font-weight-strong); }
.sk-channel-matrix__event { display: grid; gap: .15rem; }
.sk-channel-matrix__event small { color: var(--sk-color-ink-soft); }
.sk-channel-matrix input { width: 1.25rem; height: 1.25rem; accent-color: var(--sk-color-primary); cursor: pointer; }
.sk-status-group-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sk-space-3); min-width: 0; }
.sk-status-group-grid > section { min-width: 0; padding: var(--sk-space-3); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); background: var(--sk-color-surface-subtle); }
.sk-status-group-grid h3 { margin: 0 0 var(--sk-space-2); color: var(--sk-color-ink-soft); font-size: var(--sk-type-card-title); text-transform: uppercase; letter-spacing: .04em; }
.sk-status-group-grid dl { display: grid; gap: var(--sk-space-2); margin: 0; }
.sk-status-group-grid dl > div { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sk-space-2); min-width: 0; }
.sk-status-group-grid dt,
.sk-status-group-grid dd { min-width: 0; margin: 0; overflow-wrap: break-word; font-size: var(--sk-font-size-xs); }
.sk-status-group-grid dd { color: var(--sk-color-ink-soft); font-weight: var(--sk-font-weight-strong); text-align: right; white-space: nowrap; }
.sk-status-group-grid dd.is-ready,
.sk-status-group-grid dd.is-live { color: var(--sk-color-success); }
.sk-status-group-grid dd.is-pending,
.sk-status-group-grid dd.is-test { color: var(--sk-color-warning); }
.sk-status-group-grid dd.is-offline,
.sk-status-group-grid dd.is-degraded,
.sk-status-group-grid dd.is-rejected,
.sk-status-group-grid dd.is-blocked,
.sk-status-group-grid dd.is-unavailable { color: var(--sk-color-danger); }

/* Feltene serveren avviste, med veien tilbake til steget de står på. Ligger
   under feilmeldingen fordi den sier AT noe er galt; denne sier hva og hvor. */
.sk-field-errors { margin-top: var(--sk-space-3); border: 1px solid var(--sk-color-danger); border-radius: var(--sk-radius-sm); padding: .75rem 1rem; background: var(--sk-color-danger-soft); }
.sk-field-errors > strong { display: block; margin-bottom: var(--sk-space-2); color: var(--sk-color-danger); }
.sk-field-errors ul { display: grid; gap: var(--sk-space-2); margin: 0; padding: 0; list-style: none; }
.sk-field-errors li { display: flex; flex-wrap: wrap; gap: var(--sk-space-2); align-items: baseline; }
.sk-field-errors button { border: 0; padding: 0; background: none; color: var(--sk-color-danger); font: inherit; font-weight: var(--sk-font-weight-strong); text-decoration: underline; cursor: pointer; }
.sk-field-errors span { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

/* One app update notice, shared by the partner workspace and terminals. */
.sk-update-banner {
  position: fixed;
  right: var(--sk-space-4);
  bottom: var(--sk-space-4);
  z-index: 9000;
  display: flex;
  gap: var(--sk-space-4);
  align-items: center;
  max-width: min(26rem, calc(100vw - 2rem));
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-3) var(--sk-space-4);
  background: var(--sk-color-surface);
  box-shadow: 0 12px 32px rgb(35 33 44 / 22%);
}
.sk-update-banner > span {
  display: grid;
  gap: 0.1rem;
  min-width: 0;
}
.sk-update-banner small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-update-banner > .sk-button { flex: none; }

.sk-update-banner.sk-update-banner--inline { position: static; width: 100%; max-width: none; flex-basis: 100%; grid-column: 1 / -1; box-shadow: none; }
:is(.sk-drawer__footer, .sk-modal__footer):has(> .sk-update-banner--inline) { flex-wrap: wrap; }

/* Fast plass før policy/fase er hentet, også når begge brikkene er borte.
   Høyere spesifisitet enn deployment-phase.css sin display:contents.
   Ansattskallet beholder sin eksisterende kompakte faseplass; driftsmeldingen flyter der. */
body [data-deployment-phase-slot] {
  display: inline-flex;
  align-items: center;
  flex: none;
  min-width: calc(var(--sk-space-4) * 6);
  min-height: var(--sk-touch-min);
}
body [data-deployment-phase-slot]:not(.employee-phase-slot) {
  display: inline-grid;
  grid-template-columns: calc(var(--sk-space-4) * 8) calc(var(--sk-space-4) * 10);
  gap: var(--sk-space-4);
  width: calc(var(--sk-space-4) * 19);
  min-width: calc(var(--sk-space-4) * 19);
  height: max(var(--sk-control-height), var(--sk-touch-min));
}
[data-deployment-phase-slot] > .sk-deployment-phase--inline { grid-column: 1; grid-row: 1; }
[data-deployment-phase-slot] > .sk-service-chip--inline { grid-column: 2; grid-row: 1; white-space: nowrap; }

/* Driftsmelding og lokalt reservebanner (pwa/ServiceNotice.tsx, N-22). Flytter aldri fast plasserte elementer:
   stripen står bare der det ikke finnes fast topplinje, og reserverer høyde for innhold i flyt via
   --sk-service-notice-height; ellers en chip (i topplinjens plass eller flytende under den) som åpner et ark. */
.sk-service-notice { position: fixed; z-index: var(--sk-z-toast); inset: 0 0 auto; display: flex; gap: var(--sk-space-3); align-items: center; min-height: 44px; padding: var(--sk-space-1) var(--sk-space-4); padding-top: max(var(--sk-space-1), env(safe-area-inset-top)); border-bottom: 1px solid var(--sk-color-border); background: var(--sk-color-surface); font-size: var(--sk-font-size-sm); }
.sk-service-notice strong { flex: none; }
.sk-service-notice__text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--sk-color-ink-soft); }
.sk-service-notice > .sk-button { flex: none; }
.sk-service-notice--warning { background: var(--sk-color-warning-soft); border-bottom-color: var(--sk-color-warning); }
.sk-service-notice--info { background: var(--sk-color-info-soft); border-bottom-color: var(--sk-color-info); }
.sk-service-notice--success { background: var(--sk-color-success-soft); border-bottom-color: var(--sk-color-success); }
:root[data-service-notice="strip"] body { padding-top: var(--sk-service-notice-height, 0px); transition: padding-top var(--sk-motion-base) var(--sk-ease-standard); }
/* Klistrede elementer med top: 0 legger seg under stripen, ikke bak den (målt: kundeportalens sidemeny). */
:root[data-service-notice="strip"] .sk-customer-portal-sidebar { top: var(--sk-service-notice-height, 0px); height: calc(100vh - var(--sk-service-notice-height, 0px)); }
.sk-service-chip { position: fixed; z-index: var(--sk-z-toast); top: calc(var(--sk-topbar-height, 0px) + var(--sk-space-2) + env(safe-area-inset-top)); left: 50%; translate: -50% 0; display: inline-flex; gap: var(--sk-space-2); align-items: center; min-height: 44px; padding: 0 var(--sk-space-4); border: 1px solid var(--sk-color-border); border-radius: 999px; background: var(--sk-color-surface); box-shadow: var(--sk-shadow-popover); color: var(--sk-color-ink); font: inherit; font-size: var(--sk-font-size-sm); cursor: pointer; }
.sk-service-chip--inline { position: static; translate: none; box-shadow: none; }
.sk-service-chip__dot { width: 0.6rem; height: 0.6rem; border-radius: 50%; background: var(--sk-color-warning); }
.sk-service-chip--info .sk-service-chip__dot { background: var(--sk-color-info); }
.sk-service-chip--success .sk-service-chip__dot { background: var(--sk-color-success); }
@media (prefers-reduced-motion: reduce) { :root[data-service-notice="strip"] body { transition: none; } }

/* Feature cards share row sizing and keep actions aligned across content lengths. */
.sk-loyalty-layout { grid-auto-rows: 1fr; gap: var(--sk-space-6); }
.sk-loyalty-layout > .sk-feature-card { margin: 0; grid-template-rows: auto 1fr auto auto; min-width: 0; }
.sk-loyalty-layout > .sk-feature-card > .sk-button { justify-self: start; }
.sk-segment-member-list { max-height: 24rem; overflow: auto; margin-block: var(--sk-space-4); }
@media (max-width: 720px) { .sk-segment-member-list .sk-list-row { flex-wrap: wrap; } }

/* DEV-FAST: rolleveksler i dev (auth/DevLoginSwitcher.tsx). Gjenbruker .sk-button og .sk-auth-options; fjernes før ordinær release. */
.sk-dev-role-switcher { position: fixed; z-index: var(--sk-z-copilot); left: var(--sk-space-3); bottom: calc(var(--sk-space-3) + env(safe-area-inset-bottom)); display: grid; justify-items: start; gap: var(--sk-space-2); max-width: min(22rem, calc(100vw - 2 * var(--sk-space-3))); }
.sk-dev-role-switcher > .sk-auth-options { margin-top: 0; width: 100%; max-height: min(32rem, calc(100dvh - 6rem)); overflow-y: auto; box-shadow: var(--sk-shadow-popover); background: var(--sk-color-surface); }
.sk-dev-role-switcher > .sk-auth-options > button { min-height: 3.5rem; }
/* DEV-FAST: kompakt status øverst i visningsporten, over topplinjen. */
.sk-readiness-banner.sk-dev-readiness {
  position: fixed;
  z-index: calc(var(--sk-z-topbar) + 1);
  top: calc(env(safe-area-inset-top, 0px) + var(--sk-space-1));
  left: 50%;
  translate: -50% 0;
  box-sizing: border-box;
  max-width: min(22rem, calc(100vw - 2 * var(--sk-space-3)));
  margin: 0;
  padding: var(--sk-space-1) var(--sk-space-2);
  font-size: var(--sk-font-size-xs);
  white-space: nowrap;
  pointer-events: none;
}

.sk-dev-readiness > strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Hele forklaringen beholdes i statusmeldingen for skjermlesere. */
.sk-dev-readiness > span {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.sk-dev-role-switcher__error { margin: 0; padding: var(--sk-space-3) var(--sk-space-4); color: var(--sk-color-danger); font-size: var(--sk-font-size-sm); }

/* Category color is decorative; status background, text and geometry stay unchanged. */
.sk-calendar-event.has-category-color { border-left-color: var(--sk-service-category-color, var(--sk-color-service-accent)); }

/* Personal privacy actions can have long Norwegian labels on narrow screens. */
:is(.sk-personal-coach,.sk-employee-protection,.sk-minutes-corrections), :is(.sk-personal-coach,.sk-employee-protection,.sk-minutes-corrections) > * { min-inline-size: 0; }
:is(.sk-personal-coach,.sk-employee-protection,.sk-minutes-corrections) .sk-button { max-inline-size: 100%; min-block-size: 2.75rem; white-space: normal; padding-block: var(--sk-space-2); }
.sk-personal-coach .sk-checkbox-row > input { flex-shrink: 0; }
.sk-personal-coach .sk-json-summary { max-inline-size: 100%; overflow-wrap: anywhere; }
.sk-personal-coach summary { min-block-size: 2.75rem; cursor: pointer; }

/* Keep the complaint header close control usable when its heading wraps. */
.sk-restored-detail > header > div { min-width: 0; overflow-wrap: anywhere; }
.sk-restored-detail > header > .sk-icon-button {
  flex-shrink: 0;
  min-width: max(44px, var(--sk-control-height));
  min-height: max(44px, var(--sk-control-height));
}
/* Kalenderlenker bruker de vanlige trykkflatene, med plass til lange titler. */
.sk-activity-calendar .sk-button { max-inline-size: 100%; white-space: normal; text-align: start; }
:is(.sk-personal-coach,.sk-employee-protection,.sk-minutes-corrections) summary { min-block-size: 2.75rem; cursor: pointer; }

/* Privacy forms keep the shared 44px touch floor inside the dense staff shell. */
.sk-employee-protection, .sk-minutes-corrections { --sk-control-height: 2.75rem; }

/* Regnskapsførers forslag skal fungere ved 360px og stor tekst. */
.sk-accountant-proposals,
.sk-accountant-proposals .sk-field,
.sk-accountant-proposals .sk-field-control { min-width: 0; }
.sk-accountant-proposals { overflow-wrap: anywhere; }
.sk-accountant-proposals select,
.sk-accountant-proposals input:not([type="checkbox"]) { width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box; }
.sk-accountant-proposals .sk-field-actions { flex-wrap: wrap; }

.sk-accountant-proposals .sk-form-stack { grid-template-columns: minmax(0, 1fr); }
.sk-accountant-proposals .sk-button { max-width: 100%; white-space: normal; }

/* Felles oppgaveforslag tåler små skjermer og stor tekst. */
.sk-salon-advice, .sk-salon-advice .sk-form-stack, .sk-salon-advice .sk-field { min-width: 0; grid-template-columns: minmax(0, 1fr); }
.sk-salon-advice { overflow-wrap: anywhere; }
.sk-salon-advice fieldset { min-width: 0; margin-inline: 0; }
.sk-salon-advice .sk-button { max-width: 100%; white-space: normal; }
.sk-salon-advice input:not([type="checkbox"]):not([type="radio"]), .sk-salon-advice select, .sk-salon-advice textarea { min-width: 0; max-width: 100%; box-sizing: border-box; }

/* Nora journeys: preserve disabled/focus/forced-colors states and wrap long Norwegian controls. */
.sk-nora-journey { min-width: 0; overflow-wrap: anywhere; }
.sk-nora-journey fieldset { min-inline-size: 0; }
.sk-nora-journey :is(select,input,textarea) { min-width: 0; max-width: 100%; }
.sk-nora-journey .sk-button { white-space: normal; max-width: 100%; transition-property: transform; }
.sk-nora-journey .sk-button--secondary:not(:disabled) { color: var(--sk-color-ink); background: var(--sk-color-surface); border-color: var(--sk-color-border); }
.sk-nora-journey .sk-button--secondary:hover:not(:disabled) { background: var(--sk-color-surface-hover); }
.sk-nora-journey [tabindex="-1"]:focus { outline: 2px solid var(--sk-color-primary); outline-offset: 3px; }
@media (forced-colors: active) { .sk-nora-journey .sk-button--secondary:not(:disabled) { color: ButtonText; background: ButtonFace; border-color: ButtonText; } }
/* Explicit owners for existing document, action and supplier layouts. */
.sk-actions { display:flex; flex-wrap:wrap; gap:.65rem; align-items:center; }
.sk-list { display:grid; gap:1rem; padding-inline-start:1.25rem; }
.sk-dpa-banner { padding:1rem; border:1px solid var(--sk-color-border-interactive); border-radius:.6rem; display:grid; gap:.5rem; }
.sk-dpa-document { white-space:pre-wrap; overflow-wrap:anywhere; padding:1rem; border:1px solid var(--sk-color-border-interactive); border-radius:.6rem; max-height:60vh; overflow:auto; }
.sk-training-embed { width:100%; min-width:0; aspect-ratio:16 / 9; border:0; }
/* Error references and public codes must wrap inside 360 px layouts. */
[role="alert"], .sk-form-error, .sk-terminal-error, .sk-terminal-notice, .sk-customer-portal-alert {
  min-width: 0;
  overflow-wrap: anywhere;
}
/* Plain training/survey lists share spacing without browser marker indentation. */
.sk-plain-list { list-style: none; margin: 0; padding: 0; min-inline-size: 0; }
.sk-plain-list > li + li { margin-block-start: var(--sk-space-4); }
/* Consent-gated training media stays within its owning card at every width. */
.sk-training-embed { min-inline-size: 0; max-inline-size: 100%; margin-block: var(--sk-space-3); }

.sk-metric-value {
  display: block;
  margin-bottom: var(--sk-space-6);
  font-size: var(--sk-font-size-display);
  line-height: 1;
}
.sk-metric-details {
  display: grid;
  margin-bottom: var(--sk-space-5);
  color: var(--sk-color-ink-soft);
}
.sk-metric-details b {
  color: var(--sk-color-ink);
}
.sk-chart {
  min-height: 17rem;
  margin-top: auto;
  display: flex;
  flex-direction: column;
}
.sk-chart__selection {
  min-height: 2.5rem;
  margin-bottom: var(--sk-space-2);
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-chart__selection span {
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-chart svg {
  width: 100%;
  min-height: 15rem;
  flex: 1;
  overflow: visible;
  touch-action: none;
  outline: none;
}
.sk-chart svg:focus-visible {
  border-radius: var(--sk-radius-sm);
  outline: 2px solid var(--sk-color-focus-ring);
  outline-offset: 2px;
}
.sk-chart__grid line {
  stroke: var(--sk-color-border-soft);
  stroke-width: 1;
}
.sk-chart__axis-line {
  stroke: var(--sk-color-border);
  stroke-width: 1;
}
.sk-chart__axis text {
  fill: var(--sk-color-ink-soft);
  font-family: inherit;
  font-size: var(--sk-font-size-xs);
}
.sk-chart polyline {
  stroke: var(--sk-color-primary);
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
.sk-chart circle {
  fill: var(--sk-color-primary);
  stroke: var(--sk-color-surface);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
  transition: r var(--sk-motion-fast) var(--sk-ease-standard);
}
.sk-chart circle.is-active {
  fill: var(--sk-color-surface);
  stroke: var(--sk-color-primary);
  stroke-width: 3;
}
.sk-chart__crosshair {
  stroke: var(--sk-color-primary);
  stroke-width: 1;
  stroke-dasharray: 4 4;
  opacity: 0.55;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
}
.sk-chart__legend {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-5);
  margin-top: var(--sk-space-3);
}
.sk-chart__legend span {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-chart__legend i {
  width: 0.75rem;
  height: 0.75rem;
  border-radius: 50%;
  background: var(--sk-color-success);
}
.sk-chart__legend i.is-purple {
  background: var(--sk-color-primary);
}
.sk-chart__legend small {
  color: var(--sk-color-ink-soft);
}
.sk-upcoming-list,
.sk-activity-list {
  margin: 0 -1.4rem -1.4rem;
}
.sk-appointment-row,
.sk-activity-row {
  width: 100%;
  min-height: 6.5rem;
  border: 0;
  border-top: 1px solid var(--sk-color-border-soft);
  padding: var(--sk-space-4) 1.4rem;
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: 4rem 1fr;
  align-items: center;
  gap: var(--sk-space-4);
  text-align: left;
  cursor: pointer;
}
.sk-appointment-row:hover,
.sk-activity-row:hover {
  background: var(--sk-color-surface-hover);
}
.sk-appointment-row > time {
  display: grid;
  justify-items: center;
  line-height: 1.1;
}
.sk-appointment-row > time b {
  font-size: var(--sk-font-size-xl);
}
.sk-appointment-row > time span {
  color: var(--sk-color-ink-soft);
  text-transform: lowercase;
}
.sk-appointment-row__content {
  display: grid;
}
.sk-appointment-row__content > span {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-appointment-row__content em {
  padding: 0.15rem 0.55rem;
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-info-soft);
  color: var(--sk-color-info);
  font-size: var(--sk-font-size-xs);
  font-style: normal;
}
.sk-appointment-row__content small,
.sk-activity-row small {
  color: var(--sk-color-ink-soft);
}
.sk-activity-row__date {
  color: var(--sk-color-ink-soft);
}
.sk-activity-row > span:last-child {
  display: grid;
}
.sk-table-card {
  min-height: 31rem;
  overflow: auto;
}
.sk-table-card .sk-card-header {
  min-height: 5rem;
  align-items: center;
  padding-bottom: var(--sk-space-4);
}
.sk-table-card .sk-card-header h2 {
  margin: 0;
}
.sk-table-card table {
  width: 100%;
  border-collapse: collapse;
}
.sk-table-card th,
.sk-table-card td {
  height: 4rem;
  padding: 0 1.8rem;
  border-top: 1px solid var(--sk-color-border-soft);
  text-align: left;
}
.sk-table-card th:last-child,
.sk-table-card td:last-child {
  text-align: right;
}
.sk-table-card th {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-type-table);
}
.sk-dashboard-table-empty {
  min-height: 8rem;
  display: grid;
  place-items: center;
  text-align: center;
  color: var(--sk-color-ink-soft);
}
.sk-dashboard-table-empty span {
  display: grid;
  gap: 0.35rem;
}
.sk-dashboard-table-empty strong {
  color: var(--sk-color-ink);
}

/* Calendar is a reusable workspace pattern. Day, multi-day and week views
   share the same toolbar, resource header, time gutter, columns and events. */
.sk-calendar-page {
  min-height: calc(100vh - var(--sk-topbar-height));
  background: var(--sk-color-surface);
}
.sk-calendar-toolbar {
  position: sticky;
  z-index: 12;
  top: 0;
  min-height: 4.5rem;
  padding: 0 var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border);
  background: var(--sk-color-surface);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
/* A reusable calendar has no implicit topbar. Only the owning app shell
   reserves the fixed-header offset; embedded/error views stay in normal flow. */
.sk-app-shell .sk-calendar-toolbar {
  top: var(--sk-topbar-height);
}
.sk-calendar-toolbar__group {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-calendar-block-notice {
  margin: var(--sk-space-3) var(--sk-space-4);
}
.sk-inline-error-banner.sk-calendar-block-notice {
  flex-wrap: wrap;
}
.sk-calendar-block-notice > span {
  flex: 1 1 16rem;
}
.sk-calendar-block-notice > button {
  flex: 0 0 auto;
}
.sk-calendar-shift-error {
  margin: var(--sk-space-3) var(--sk-space-4) 0;
}
.sk-calendar-team-button {
  min-height: var(--sk-control-height);
  padding: 0 var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  cursor: pointer;
  font: inherit;
}
.sk-calendar-team-button__label {
  display: grid;
  line-height: 1.15;
  text-align: left;
}
.sk-calendar-team-button__label small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-segmented {
  display: flex;
  align-items: center;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-pill);
  overflow: hidden;
  background: var(--sk-color-surface);
}
.sk-segmented .sk-icon-button {
  border-radius: 0;
  width: 2.7rem;
}
.sk-calendar-date-button {
  min-width: 11rem;
  height: var(--sk-control-height);
  padding: 0 var(--sk-space-3);
  border: 0;
  border-inline: 1px solid var(--sk-color-border);
  background: var(--sk-color-surface);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-2);
  cursor: pointer;
}
.sk-calendar-date-button {
  position: relative;
  overflow: hidden;
}
.sk-calendar-date-button input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  cursor: pointer;
}
.sk-toolbar-select {
  min-height: var(--sk-control-height);
  padding: 0 var(--sk-space-4);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  cursor: pointer;
}
.sk-add-menu {
  position: relative;
}
.sk-popover {
  position: absolute;
  z-index: 40;
  top: calc(100% + var(--sk-space-2));
  right: 0;
  min-width: 20rem;
  padding: var(--sk-space-2);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
  animation: sk-popover-in var(--sk-motion-base) var(--sk-ease-emphasized);
}
.sk-add-popover button {
  width: 100%;
  min-height: 4rem;
  padding: var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  display: grid;
  grid-template-columns: 2rem 1fr;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-add-popover button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-add-popover strong,
.sk-add-popover small {
  display: block;
}
.sk-add-popover small {
  color: var(--sk-color-ink-soft);
}
.sk-view-popover {
  min-width: 10rem;
}
.sk-view-popover button {
  width: 100%;
  min-height: 2.8rem;
  padding: 0 var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  text-align: left;
  cursor: pointer;
}
.sk-view-popover button:hover,
.sk-view-popover button.is-selected {
  background: var(--sk-color-surface-selected);
}
.sk-view-popover button {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-drawer--calendar-filters {
  width: min(40rem, 100vw);
}
.sk-drawer--calendar-filters .sk-drawer__body {
  padding: 0;
  gap: 0;
}
.sk-drawer--calendar-filters .sk-drawer__footer > .sk-button {
  min-width: 10rem;
}
.sk-drawer--calendar-filters .sk-drawer__footer > .sk-button--primary {
  background: var(--sk-color-primary);
  border-color: var(--sk-color-primary);
}
.sk-saved-filter-button {
  min-height: var(--sk-control-height);
  padding: 0 var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-saved-filter-list {
  margin: var(--sk-space-3) var(--sk-space-5) 0;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  gap: var(--sk-space-1);
}
.sk-saved-filter-list > button {
  min-height: 3.5rem;
  padding: var(--sk-space-2) var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  display: grid;
  text-align: left;
  cursor: pointer;
}
.sk-saved-filter-list > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-saved-filter-list > span {
  padding: var(--sk-space-2);
  display: grid;
  color: var(--sk-color-ink-soft);
}
.sk-calendar-filter-list {
  display: grid;
}
.sk-calendar-filter-section {
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-calendar-filter-row {
  position: relative;
  min-height: 4.5rem;
  display: flex;
  align-items: stretch;
}
.sk-calendar-filter-row > button:first-child {
  width: 100%;
  padding: 0 var(--sk-space-5);
  border: 0;
  background: transparent;
  display: grid;
  grid-template-columns: 1.6rem minmax(0, 1fr) 1.4rem;
  align-items: center;
  gap: var(--sk-space-3);
  color: var(--sk-color-ink);
  text-align: left;
  cursor: pointer;
}
.sk-calendar-filter-row > button:first-child:hover {
  background: var(--sk-color-surface-hover);
}
.sk-calendar-filter-row > button:first-child > span {
  display: grid;
}
.sk-calendar-filter-row > button:first-child small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-calendar-filter-edit {
  position: absolute;
  z-index: 1;
  right: 3.3rem;
  top: 50%;
  transform: translateY(-50%);
  padding: 0.25rem;
  border: 0;
  background: transparent;
  color: var(--sk-color-primary);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-calendar-filter-content {
  padding: 0 var(--sk-space-5) var(--sk-space-5) 4.2rem;
  display: grid;
  gap: var(--sk-space-3);
  animation: sk-popover-in var(--sk-motion-fast) var(--sk-ease-emphasized);
}
.sk-filter-option-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-2);
}
.sk-filter-options {
  position: relative;
  margin-right: auto;
}
.sk-filter-options .sk-popover {
  top: auto;
  right: auto;
  bottom: calc(100% + var(--sk-space-2));
  left: 0;
  min-width: 14rem;
}
.sk-filter-options .sk-popover button {
  width: 100%;
  min-height: 2.8rem;
  padding: 0 var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  text-align: left;
  cursor: pointer;
}
.sk-filter-options .sk-popover button:hover {
  background: var(--sk-color-surface-hover);
}

.sk-calendar-workspace {
  height: calc(100vh - var(--sk-topbar-height) - 4.5rem);
  overflow: auto;
  background: var(--sk-color-surface);
}
.sk-calendar-resource-header {
  position: sticky;
  z-index: 10;
  top: 0;
  min-width: 52rem;
  height: 5.5rem;
  display: grid;
  grid-template-columns: 4.5rem repeat(var(--sk-calendar-columns), minmax(12rem, 1fr));
  background: var(--sk-color-surface);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-calendar-time-gutter {
  border-right: 1px solid var(--sk-color-border-soft);
}
.sk-resource-heading {
  position: relative;
  border-right: 1px solid var(--sk-color-border-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-2);
}
.sk-resource-heading.is-today {
  background: var(--sk-color-primary-soft);
}
.sk-resource-heading__trigger {
  width: 100%;
  height: 100%;
  padding: 0 var(--sk-space-3);
  border: 0;
  background: transparent;
  color: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-2);
  font: inherit;
  cursor: pointer;
}
.sk-resource-heading__trigger:hover,
.sk-resource-heading__trigger[aria-expanded="true"] {
  background: var(--sk-color-surface-hover);
}
.sk-resource-heading__trigger:focus-visible {
  outline: 2px solid var(--sk-color-primary);
  outline-offset: -3px;
}
.sk-resource-menu {
  top: calc(100% - 0.2rem);
  right: auto;
  left: 50%;
  min-width: 18rem;
  transform: translateX(-50%);
  text-align: left;
}
.sk-resource-menu > button {
  width: 100%;
  min-height: 2.85rem;
  padding: 0 var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  display: grid;
  grid-template-columns: 1.5rem minmax(0, 1fr) 1.25rem;
  align-items: center;
  gap: var(--sk-space-2);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-resource-menu > button:hover,
.sk-resource-menu > button.is-selected {
  background: var(--sk-color-surface-selected);
}
.sk-resource-menu__label {
  margin: var(--sk-space-2) calc(-1 * var(--sk-space-2)) var(--sk-space-1);
  padding: var(--sk-space-3) var(--sk-space-5) var(--sk-space-2);
  border-top: 1px solid var(--sk-color-border-soft);
  color: var(--sk-color-ink-soft);
  display: block;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-resource-avatar {
  width: 3.25rem;
  height: 3.25rem;
  border: 2px solid color-mix(in srgb, var(--sk-color-primary) 30%, var(--sk-color-surface));
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-calendar-shift-row {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  align-items: end;
  gap: var(--sk-space-3);
}
.sk-calendar-grid {
  position: relative;
  min-width: 52rem;
  height: var(--sk-calendar-height);
  padding-left: 4.5rem;
  background:
    repeating-linear-gradient(to bottom, transparent 0, transparent 17px, var(--sk-color-border-soft) 18px),
    repeating-linear-gradient(to bottom, transparent 0, transparent 71px, var(--sk-color-border) 72px);
}
.sk-calendar-times {
  position: absolute;
  inset: 0 auto 0 0;
  width: 4.5rem;
  border-right: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
}
.sk-calendar-times time {
  position: absolute;
  right: 0.65rem;
  transform: translateY(-0.7em);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-calendar-columns {
  height: 100%;
  display: grid;
  grid-template-columns: repeat(var(--sk-calendar-columns), minmax(12rem, 1fr));
}
.sk-calendar-column {
  position: relative;
  min-width: 0;
  border-right: 1px solid var(--sk-color-border-soft);
}
.sk-calendar-column.is-drag-target {
  background: color-mix(in srgb, var(--sk-color-primary) 7%, transparent);
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--sk-color-primary) 45%, transparent);
}
.sk-calendar-drop-preview {
  position: absolute;
  z-index: 5;
  right: 3px;
  left: 3px;
  min-height: 1.75rem;
  padding: var(--sk-space-2) var(--sk-space-3);
  border: 2px dashed var(--sk-color-primary);
  border-radius: var(--sk-radius-sm);
  overflow: hidden;
  background: color-mix(in srgb, var(--sk-color-primary-soft) 92%, white);
  color: var(--sk-color-ink);
  box-shadow: 0 8px 22px rgb(35 33 44 / 18%);
  display: grid;
  align-content: start;
  gap: .15rem;
  pointer-events: none;
}
.sk-calendar-drop-preview strong {
  font-size: var(--sk-font-size-sm);
}
.sk-calendar-drop-preview span,
.sk-calendar-drop-preview small {
  font-size: var(--sk-font-size-xs);
}
.sk-calendar-drop-preview small {
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-calendar-column::after {
  content: "";
  position: absolute;
  inset: calc(12 * 72px) 0 0;
  pointer-events: none;
  background: repeating-linear-gradient(
    135deg,
    rgb(22 22 22 / 2%) 0,
    rgb(22 22 22 / 2%) 2px,
    transparent 2px,
    transparent 6px
  );
}
/* Samme statusfarger som timeboka i kassen (terminal/04-calendar.css), via
   --sk-appointment-*-tokenene. Klassen er `is-<status>` fra CalendarTimeline. */
.sk-calendar-event {
  --sk-appointment-accent: var(--sk-appointment-booked);
  position: absolute;
  z-index: 2;
  left: 2px;
  right: 2px;
  min-height: 1.75rem;
  padding: 0.3rem 0.45rem;
  border: 0;
  border-left: 3px solid var(--sk-appointment-accent);
  border-radius: 0.2rem;
  overflow: hidden;
  background: color-mix(in srgb, var(--sk-appointment-accent) 16%, var(--sk-color-surface));
  color: var(--sk-color-ink);
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-overlap-confirmation {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-3);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.4;
}
.sk-overlap-confirmation input {
  flex: 0 0 auto;
  margin-top: 0.2rem;
}
.sk-calendar-event:hover {
  filter: brightness(0.97);
  box-shadow: 0 2px 8px rgb(17 17 17 / 12%);
}
.sk-calendar-event span {
  font-size: var(--sk-font-size-xs);
  line-height: 1.2;
}
.sk-calendar-event strong {
  font-size: var(--sk-font-size-xs);
  line-height: 1.25;
}
.sk-calendar-event__open {
  width: 100%;
  min-height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-calendar-event.is-arrived,
.sk-calendar-event.is-started {
  --sk-appointment-accent: var(--sk-appointment-arrived);
}
.sk-calendar-event.is-completed {
  --sk-appointment-accent: var(--sk-appointment-completed);
}
.sk-calendar-event.is-no_show {
  --sk-appointment-accent: var(--sk-appointment-no-show);
}
.sk-calendar-event.is-pending {
  --sk-appointment-accent: var(--sk-appointment-pending);
}
.sk-calendar-event.is-cancelled {
  --sk-appointment-accent: var(--sk-appointment-cancelled);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-ink-soft);
  text-decoration: line-through;
}
.sk-calendar-event[draggable="true"] {
  cursor: grab;
}
.sk-calendar-event[draggable="true"]:active {
  cursor: grabbing;
  opacity: 0.76;
}
.sk-calendar-event.is-dragging {
  opacity: 0.32;
}
.sk-calendar-resize {
  position: absolute;
  z-index: 3;
  right: 0.25rem;
  bottom: 1px;
  left: 0.25rem;
  height: 0.42rem;
  padding: 0;
  border: 0;
  border-radius: var(--sk-radius-pill);
  background: rgb(21 36 42 / 24%);
  cursor: ns-resize;
  opacity: 0;
  transition: opacity var(--sk-motion-fast) var(--sk-ease-standard);
}
.sk-calendar-event:hover .sk-calendar-resize,
.sk-calendar-event:focus-within .sk-calendar-resize {
  opacity: 1;
}
.sk-calendar-blocked-time {
  position: absolute;
  z-index: 1;
  left: 2px;
  right: 2px;
  min-height: 1.75rem;
  padding: 0.3rem 0.45rem;
  border: 1px dashed #9a9aa1;
  border-left: 3px solid #6f7077;
  border-radius: 0.2rem;
  overflow: hidden;
  background: repeating-linear-gradient(135deg, #f0f0f2 0, #f0f0f2 6px, #e5e5e8 6px, #e5e5e8 12px);
  color: #3b3b40;
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-calendar-blocked-time.allows-online {
  border-left-color: #779b83;
  background: repeating-linear-gradient(135deg, #edf5ef 0, #edf5ef 6px, #e2eee5 6px, #e2eee5 12px);
}
.sk-calendar-blocked-time span,
.sk-calendar-blocked-time small {
  font-size: var(--sk-font-size-xs);
  line-height: 1.2;
}
.sk-calendar-blocked-time strong {
  font-size: var(--sk-font-size-xs);
  line-height: 1.25;
}
.sk-move-summary {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-move-summary > strong {
  font-size: var(--sk-font-size-lg);
}
.sk-move-summary > div:not(.sk-readiness-banner) {
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: 4rem 1fr;
  align-items: center;
}
.sk-move-summary > div > span {
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-strong);
}
.sk-move-summary p {
  margin: 0;
}
.sk-current-time {
  position: absolute;
  z-index: 5;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--sk-color-danger);
  pointer-events: none;
}
.sk-current-time span {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 4.5rem;
  padding-right: 0.35rem;
  background: var(--sk-color-danger);
  color: var(--sk-color-focus-ring-inverse);
  text-align: right;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-entity-picker {
  min-height: 4.5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: 2.5rem 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-entity-picker:hover {
  background: var(--sk-color-surface-hover);
}
.sk-entity-picker strong,
.sk-entity-picker small {
  display: block;
}
.sk-entity-picker small {
  color: var(--sk-color-ink-soft);
}
.sk-appointment-hero {
  min-height: 5rem;
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-appointment-hero > div {
  display: grid;
}
.sk-appointment-hero small {
  color: var(--sk-color-ink-soft);
}
.sk-sticky-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--sk-space-3);
}
.sk-month-view {
  height: calc(100vh - var(--sk-topbar-height) - 4.5rem);
  overflow: auto;
  min-width: 0;
  max-width: 100%;
  background: var(--sk-color-surface);
}
.sk-month-weekdays {
  min-width: 52rem;
  position: sticky;
  z-index: 5;
  top: 0;
  height: 2.75rem;
  display: grid;
  grid-template-columns: repeat(7, minmax(7rem, 1fr));
  background: var(--sk-color-surface);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-month-weekdays span {
  display: grid;
  place-items: center;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-grid {
  min-width: 52rem;
  min-height: calc(100% - 2.75rem);
  display: grid;
  grid-template-columns: repeat(7, minmax(7rem, 1fr));
  grid-template-rows: repeat(6, minmax(8rem, 1fr));
}
.sk-month-day {
  min-width: 0;
  padding: var(--sk-space-2);
  border-right: 1px solid var(--sk-color-border-soft);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-month-day.is-outside {
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink-faint);
}
.sk-month-day__number {
  width: 2rem;
  height: 2rem;
  margin-bottom: var(--sk-space-1);
  border: 0;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
}
.sk-month-day.is-today .sk-month-day__number {
  background: var(--sk-color-primary);
  color: white;
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-day > div {
  display: grid;
  gap: 2px;
}
.sk-month-day > div > button {
  width: 100%;
  min-height: 1.65rem;
  padding: 0 0.35rem;
  border: 0;
  border-left: 3px solid var(--sk-appointment-booked);
  border-radius: 0.2rem;
  background: color-mix(in srgb, var(--sk-appointment-booked) 14%, var(--sk-color-surface));
  display: flex;
  align-items: center;
  gap: 0.35rem;
  overflow: hidden;
  text-align: left;
  cursor: pointer;
}
.sk-month-day > div > button time {
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-day > div > button span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--sk-font-size-xs);
}
.sk-month-more {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

.sk-processing-window form { display: grid; gap: .65rem; min-width: 0; }
.sk-processing-window form :is(input,select,textarea) { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; font: inherit; color: var(--sk-color-ink); background: var(--sk-color-surface); border: 1px solid var(--sk-color-border-interactive); border-radius: .5rem; padding: .7rem; }
.sk-processing-window form :is(input,select,textarea):focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: 2px; }

/* G-02: merker på timeflisen. Egne knapper utenfor åpne-knappen; minst 24px treffflate, forklaring som fast bunnark (virker fra 360px). */
.sk-calendar-marks { position: absolute; top: 2px; right: 2px; display: inline-flex; gap: 2px; z-index: 2; }
.sk-calendar-mark { min-width: 24px; min-height: 24px; padding: 0 4px; border: 1px solid currentColor; border-radius: 12px; font: inherit; font-size: var(--sk-type-calendar-marker); font-weight: var(--sk-font-weight-strong); line-height: 1; background: var(--sk-surface, #fff); color: var(--sk-text, #1a1a1a); cursor: pointer; }
.sk-calendar-mark.is-minor { background: #fff4d6; color: #5b3a00; }
.sk-calendar-mark:focus-visible { outline: 2px solid var(--sk-focus, #82667f); outline-offset: 1px; }
.sk-calendar-mark__note { position: fixed; left: 8px; right: 8px; bottom: 8px; max-width: 420px; margin-inline: auto; z-index: 80; padding: 10px 12px; border-radius: 8px; border: 1px solid var(--sk-border, #bbb); background: var(--sk-surface, #fff); color: var(--sk-text, #1a1a1a); box-shadow: 0 4px 16px rgba(0,0,0,.2); font-size: var(--sk-type-calendar-marker-note); line-height: 1.4; }
.sk-calendar-mark__close { margin-left: 8px; min-height: 32px; min-width: 44px; }


.sk-filter-options .sk-popover button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-calendar-workspace {
  height: calc(100vh - var(--sk-topbar-height) - 4.5rem);
  overflow: auto;
  background: var(--sk-color-surface);
}
.sk-calendar-resource-header {
  position: sticky;
  z-index: 10;
  top: 0;
  min-width: 52rem;
  height: 5.5rem;
  display: grid;
  grid-template-columns: 4.5rem repeat(var(--sk-calendar-columns), minmax(12rem, 1fr));
  background: var(--sk-color-surface);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-calendar-time-gutter {
  border-right: 1px solid var(--sk-color-border-soft);
}
.sk-resource-heading {
  position: relative;
  border-right: 1px solid var(--sk-color-border-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-2);
}
.sk-resource-heading.is-today {
  background: var(--sk-color-primary-soft);
}
.sk-resource-heading__trigger {
  width: 100%;
  height: 100%;
  padding: 0 var(--sk-space-3);
  border: 0;
  background: transparent;
  color: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-2);
  font: inherit;
  cursor: pointer;
}
.sk-resource-heading__trigger:hover,
.sk-resource-heading__trigger[aria-expanded="true"] {
  background: var(--sk-color-surface-hover);
}
.sk-resource-heading__trigger:focus-visible {
  outline: 2px solid var(--sk-color-primary);
  outline-offset: -3px;
}
.sk-resource-menu {
  top: calc(100% - 0.2rem);
  right: auto;
  left: 50%;
  min-width: 18rem;
  transform: translateX(-50%);
  text-align: left;
}
.sk-resource-menu > button {
  width: 100%;
  min-height: 2.85rem;
  padding: 0 var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  display: grid;
  grid-template-columns: 1.5rem minmax(0, 1fr) 1.25rem;
  align-items: center;
  gap: var(--sk-space-2);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-resource-menu > button:hover,
.sk-resource-menu > button.is-selected {
  background: var(--sk-color-surface-selected);
}
.sk-resource-menu__label {
  margin: var(--sk-space-2) calc(-1 * var(--sk-space-2)) var(--sk-space-1);
  padding: var(--sk-space-3) var(--sk-space-5) var(--sk-space-2);
  border-top: 1px solid var(--sk-color-border-soft);
  color: var(--sk-color-ink-soft);
  display: block;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-resource-avatar {
  width: 3.25rem;
  height: 3.25rem;
  border: 2px solid color-mix(in srgb, var(--sk-color-primary) 30%, var(--sk-color-surface));
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-calendar-shift-row {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  align-items: end;
  gap: var(--sk-space-3);
}
.sk-calendar-grid {
  position: relative;
  min-width: 52rem;
  height: var(--sk-calendar-height);
  padding-left: 4.5rem;
  background:
    repeating-linear-gradient(to bottom, transparent 0, transparent 17px, var(--sk-color-border-soft) 18px),
    repeating-linear-gradient(to bottom, transparent 0, transparent 71px, var(--sk-color-border) 72px);
}
.sk-calendar-times {
  position: absolute;
  inset: 0 auto 0 0;
  width: 4.5rem;
  border-right: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
}
.sk-calendar-times time {
  position: absolute;
  right: 0.65rem;
  transform: translateY(-0.7em);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-calendar-columns {
  height: 100%;
  display: grid;
  grid-template-columns: repeat(var(--sk-calendar-columns), minmax(12rem, 1fr));
}
.sk-calendar-column {
  position: relative;
  min-width: 0;
  border-right: 1px solid var(--sk-color-border-soft);
}
.sk-calendar-column.is-drag-target {
  background: color-mix(in srgb, var(--sk-color-primary) 7%, transparent);
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--sk-color-primary) 45%, transparent);
}
.sk-calendar-drop-preview {
  position: absolute;
  z-index: 5;
  right: 3px;
  left: 3px;
  min-height: 1.75rem;
  padding: var(--sk-space-2) var(--sk-space-3);
  border: 2px dashed var(--sk-color-primary);
  border-radius: var(--sk-radius-sm);
  overflow: hidden;
  background: color-mix(in srgb, var(--sk-color-primary-soft) 92%, white);
  color: var(--sk-color-ink);
  box-shadow: 0 8px 22px rgb(35 33 44 / 18%);
  display: grid;
  align-content: start;
  gap: .15rem;
  pointer-events: none;
}
.sk-calendar-drop-preview strong {
  font-size: var(--sk-font-size-sm);
}
.sk-calendar-drop-preview span,
.sk-calendar-drop-preview small {
  font-size: var(--sk-font-size-xs);
}
.sk-calendar-drop-preview small {
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-calendar-column::after {
  content: "";
  position: absolute;
  inset: calc(12 * 72px) 0 0;
  pointer-events: none;
  background: repeating-linear-gradient(
    135deg,
    rgb(22 22 22 / 2%) 0,
    rgb(22 22 22 / 2%) 2px,
    transparent 2px,
    transparent 6px
  );
}
/* Samme statusfarger som timeboka i kassen (terminal/04-calendar.css), via
   --sk-appointment-*-tokenene. Klassen er `is-<status>` fra CalendarTimeline. */
.sk-calendar-event {
  --sk-appointment-accent: var(--sk-appointment-booked);
  position: absolute;
  z-index: 2;
  left: 2px;
  right: 2px;
  min-height: 1.75rem;
  padding: 0.3rem 0.45rem;
  border: 0;
  border-left: 3px solid var(--sk-appointment-accent);
  border-radius: 0.2rem;
  overflow: hidden;
  background: color-mix(in srgb, var(--sk-appointment-accent) 16%, var(--sk-color-surface));
  color: var(--sk-color-ink);
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-overlap-confirmation {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-3);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.4;
}
.sk-overlap-confirmation input {
  flex: 0 0 auto;
  margin-top: 0.2rem;
}
.sk-calendar-event:hover {
  filter: brightness(0.97);
  box-shadow: 0 2px 8px rgb(17 17 17 / 12%);
}
.sk-calendar-event span {
  font-size: var(--sk-font-size-xs);
  line-height: 1.2;
}
.sk-calendar-event strong {
  font-size: var(--sk-font-size-xs);
  line-height: 1.25;
}
.sk-calendar-event__open {
  width: 100%;
  min-height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-calendar-event.is-arrived,
.sk-calendar-event.is-started {
  --sk-appointment-accent: var(--sk-appointment-arrived);
}
.sk-calendar-event.is-completed {
  --sk-appointment-accent: var(--sk-appointment-completed);
}
.sk-calendar-event.is-no_show {
  --sk-appointment-accent: var(--sk-appointment-no-show);
}
.sk-calendar-event.is-pending {
  --sk-appointment-accent: var(--sk-appointment-pending);
}
.sk-calendar-event.is-cancelled {
  --sk-appointment-accent: var(--sk-appointment-cancelled);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-ink-soft);
  text-decoration: line-through;
}
.sk-calendar-event[draggable="true"] {
  cursor: grab;
}
.sk-calendar-event[draggable="true"]:active {
  cursor: grabbing;
  opacity: 0.76;
}
.sk-calendar-event.is-dragging {
  opacity: 0.32;
}
.sk-calendar-resize {
  position: absolute;
  z-index: 3;
  right: 0.25rem;
  bottom: 1px;
  left: 0.25rem;
  height: 0.42rem;
  padding: 0;
  border: 0;
  border-radius: var(--sk-radius-pill);
  background: rgb(21 36 42 / 24%);
  cursor: ns-resize;
  opacity: 0;
  transition: opacity var(--sk-motion-fast) var(--sk-ease-standard);
}
.sk-calendar-event:hover .sk-calendar-resize,
.sk-calendar-event:focus-within .sk-calendar-resize {
  opacity: 1;
}
.sk-calendar-blocked-time {
  position: absolute;
  z-index: 1;
  left: 2px;
  right: 2px;
  min-height: 1.75rem;
  padding: 0.3rem 0.45rem;
  border: 1px dashed #9a9aa1;
  border-left: 3px solid #6f7077;
  border-radius: 0.2rem;
  overflow: hidden;
  background: repeating-linear-gradient(135deg, #f0f0f2 0, #f0f0f2 6px, #e5e5e8 6px, #e5e5e8 12px);
  color: #3b3b40;
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-calendar-blocked-time.allows-online {
  border-left-color: #779b83;
  background: repeating-linear-gradient(135deg, #edf5ef 0, #edf5ef 6px, #e2eee5 6px, #e2eee5 12px);
}
.sk-calendar-blocked-time span,
.sk-calendar-blocked-time small {
  font-size: var(--sk-font-size-xs);
  line-height: 1.2;
}
.sk-calendar-blocked-time strong {
  font-size: var(--sk-font-size-xs);
  line-height: 1.25;
}
.sk-move-summary {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-move-summary > strong {
  font-size: var(--sk-font-size-lg);
}
.sk-move-summary > div:not(.sk-readiness-banner) {
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: 4rem 1fr;
  align-items: center;
}
.sk-move-summary > div > span {
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-strong);
}
.sk-move-summary p {
  margin: 0;
}
.sk-current-time {
  position: absolute;
  z-index: 5;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--sk-color-danger);
  pointer-events: none;
}
.sk-current-time span {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 4.5rem;
  padding-right: 0.35rem;
  background: var(--sk-color-danger);
  color: var(--sk-color-focus-ring-inverse);
  text-align: right;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-entity-picker {
  min-height: 4.5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: 2.5rem 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-entity-picker:hover {
  background: var(--sk-color-surface-hover);
}
.sk-entity-picker strong,
.sk-entity-picker small {
  display: block;
}
.sk-entity-picker small {
  color: var(--sk-color-ink-soft);
}
.sk-appointment-hero {
  min-height: 5rem;
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-appointment-hero > div {
  display: grid;
}
.sk-appointment-hero small {
  color: var(--sk-color-ink-soft);
}
.sk-sticky-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--sk-space-3);
}
.sk-month-view {
  height: calc(100vh - var(--sk-topbar-height) - 4.5rem);
  overflow: auto;
  min-width: 0;
  max-width: 100%;
  background: var(--sk-color-surface);
}
.sk-month-weekdays {
  min-width: 52rem;
  position: sticky;
  z-index: 5;
  top: 0;
  height: 2.75rem;
  display: grid;
  grid-template-columns: repeat(7, minmax(7rem, 1fr));
  background: var(--sk-color-surface);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-month-weekdays span {
  display: grid;
  place-items: center;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-grid {
  min-width: 52rem;
  min-height: calc(100% - 2.75rem);
  display: grid;
  grid-template-columns: repeat(7, minmax(7rem, 1fr));
  grid-template-rows: repeat(6, minmax(8rem, 1fr));
}
.sk-month-day {
  min-width: 0;
  padding: var(--sk-space-2);
  border-right: 1px solid var(--sk-color-border-soft);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-month-day.is-outside {
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink-faint);
}
.sk-month-day__number {
  width: 2rem;
  height: 2rem;
  margin-bottom: var(--sk-space-1);
  border: 0;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
}
.sk-month-day.is-today .sk-month-day__number {
  background: var(--sk-color-primary);
  color: white;
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-day > div {
  display: grid;
  gap: 2px;
}
.sk-month-day > div > button {
  width: 100%;
  min-height: 1.65rem;
  padding: 0 0.35rem;
  border: 0;
  border-left: 3px solid var(--sk-appointment-booked);
  border-radius: 0.2rem;
  background: color-mix(in srgb, var(--sk-appointment-booked) 14%, var(--sk-color-surface));
  display: flex;
  align-items: center;
  gap: 0.35rem;
  overflow: hidden;
  text-align: left;
  cursor: pointer;
}
.sk-month-day > div > button time {
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-day > div > button span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--sk-font-size-xs);
}
.sk-month-more {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

.sk-processing-window form { display: grid; gap: .65rem; min-width: 0; }
.sk-processing-window form :is(input,select,textarea) { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; font: inherit; color: var(--sk-color-ink); background: var(--sk-color-surface); border: 1px solid var(--sk-color-border-interactive); border-radius: .5rem; padding: .7rem; }
.sk-processing-window form :is(input,select,textarea):focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: 2px; }

/* G-02: merker på timeflisen. Egne knapper utenfor åpne-knappen; minst 24px treffflate, forklaring som fast bunnark (virker fra 360px). */
.sk-calendar-marks { position: absolute; top: 2px; right: 2px; display: inline-flex; gap: 2px; z-index: 2; }
.sk-calendar-mark { min-width: 24px; min-height: 24px; padding: 0 4px; border: 1px solid currentColor; border-radius: 12px; font: inherit; font-size: var(--sk-type-deployment-phase-compact); font-weight: var(--sk-font-weight-strong); line-height: 1; background: var(--sk-surface, #fff); color: var(--sk-text, #1a1a1a); cursor: pointer; }
.sk-calendar-mark.is-minor { background: #fff4d6; color: #5b3a00; }
.sk-calendar-mark:focus-visible { outline: 2px solid var(--sk-focus, #82667f); outline-offset: 1px; }
.sk-calendar-mark__note { position: fixed; left: 8px; right: 8px; bottom: 8px; max-width: 420px; margin-inline: auto; z-index: 80; padding: 10px 12px; border-radius: 8px; border: 1px solid var(--sk-border, #bbb); background: var(--sk-surface, #fff); color: var(--sk-text, #1a1a1a); box-shadow: 0 4px 16px rgba(0,0,0,.2); font-size: var(--sk-type-employee-profile-label); line-height: 1.4; }
.sk-calendar-mark__close { margin-left: 8px; min-height: 32px; min-width: 44px; }

/* Samme statusfarger som timeboka i kassen (terminal/04-calendar.css), via
   --sk-appointment-*-tokenene. Klassen er `is-<status>` fra CalendarTimeline. */
.sk-calendar-event {
  --sk-appointment-accent: var(--sk-appointment-booked);
  position: absolute;
  z-index: 2;
  left: 2px;
  right: 2px;
  min-height: 1.75rem;
  padding: 0.3rem 0.45rem;
  border: 0;
  border-left: 3px solid var(--sk-appointment-accent);
  border-radius: 0.2rem;
  overflow: hidden;
  background: color-mix(in srgb, var(--sk-appointment-accent) 16%, var(--sk-color-surface));
  color: var(--sk-color-ink);
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-overlap-confirmation {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-3);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.4;
}
.sk-overlap-confirmation input {
  flex: 0 0 auto;
  margin-top: 0.2rem;
}
.sk-calendar-event:hover {
  filter: brightness(0.97);
  box-shadow: 0 2px 8px rgb(17 17 17 / 12%);
}
.sk-calendar-event span {
  font-size: var(--sk-font-size-xs);
  line-height: 1.2;
}
.sk-calendar-event strong {
  font-size: var(--sk-font-size-xs);
  line-height: 1.25;
}
.sk-calendar-event__open {
  width: 100%;
  min-height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-calendar-event.is-arrived,
.sk-calendar-event.is-started {
  --sk-appointment-accent: var(--sk-appointment-arrived);
}
.sk-calendar-event.is-completed {
  --sk-appointment-accent: var(--sk-appointment-completed);
}
.sk-calendar-event.is-no_show {
  --sk-appointment-accent: var(--sk-appointment-no-show);
}
.sk-calendar-event.is-pending {
  --sk-appointment-accent: var(--sk-appointment-pending);
}
.sk-calendar-event.is-cancelled {
  --sk-appointment-accent: var(--sk-appointment-cancelled);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-ink-soft);
  text-decoration: line-through;
}
.sk-calendar-event[draggable="true"] {
  cursor: grab;
}
.sk-calendar-event[draggable="true"]:active {
  cursor: grabbing;
  opacity: 0.76;
}
.sk-calendar-event.is-dragging {
  opacity: 0.32;
}
.sk-calendar-resize {
  position: absolute;
  z-index: 3;
  right: 0.25rem;
  bottom: 1px;
  left: 0.25rem;
  height: 0.42rem;
  padding: 0;
  border: 0;
  border-radius: var(--sk-radius-pill);
  background: rgb(21 36 42 / 24%);
  cursor: ns-resize;
  opacity: 0;
  transition: opacity var(--sk-motion-fast) var(--sk-ease-standard);
}
.sk-calendar-event:hover .sk-calendar-resize,
.sk-calendar-event:focus-within .sk-calendar-resize {
  opacity: 1;
}
.sk-calendar-blocked-time {
  position: absolute;
  z-index: 1;
  left: 2px;
  right: 2px;
  min-height: 1.75rem;
  padding: 0.3rem 0.45rem;
  border: 1px dashed #9a9aa1;
  border-left: 3px solid #6f7077;
  border-radius: 0.2rem;
  overflow: hidden;
  background: repeating-linear-gradient(135deg, #f0f0f2 0, #f0f0f2 6px, #e5e5e8 6px, #e5e5e8 12px);
  color: #3b3b40;
  display: grid;
  align-content: start;
  text-align: left;
  cursor: pointer;
}
.sk-calendar-blocked-time.allows-online {
  border-left-color: #779b83;
  background: repeating-linear-gradient(135deg, #edf5ef 0, #edf5ef 6px, #e2eee5 6px, #e2eee5 12px);
}
.sk-calendar-blocked-time span,
.sk-calendar-blocked-time small {
  font-size: var(--sk-font-size-xs);
  line-height: 1.2;
}
.sk-calendar-blocked-time strong {
  font-size: var(--sk-font-size-xs);
  line-height: 1.25;
}
.sk-move-summary {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-move-summary > strong {
  font-size: var(--sk-font-size-lg);
}
.sk-move-summary > div:not(.sk-readiness-banner) {
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: 4rem 1fr;
  align-items: center;
}
.sk-move-summary > div > span {
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-strong);
}
.sk-move-summary p {
  margin: 0;
}
.sk-current-time {
  position: absolute;
  z-index: 5;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--sk-color-danger);
  pointer-events: none;
}
.sk-current-time span {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 4.5rem;
  padding-right: 0.35rem;
  background: var(--sk-color-danger);
  color: var(--sk-color-focus-ring-inverse);
  text-align: right;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-entity-picker {
  min-height: 4.5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: 2.5rem 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-entity-picker:hover {
  background: var(--sk-color-surface-hover);
}
.sk-entity-picker strong,
.sk-entity-picker small {
  display: block;
}
.sk-entity-picker small {
  color: var(--sk-color-ink-soft);
}
.sk-appointment-hero {
  min-height: 5rem;
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-appointment-hero > div {
  display: grid;
}
.sk-appointment-hero small {
  color: var(--sk-color-ink-soft);
}
.sk-sticky-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--sk-space-3);
}
.sk-month-view {
  height: calc(100vh - var(--sk-topbar-height) - 4.5rem);
  overflow: auto;
  min-width: 0;
  max-width: 100%;
  background: var(--sk-color-surface);
}
.sk-month-weekdays {
  min-width: 52rem;
  position: sticky;
  z-index: 5;
  top: 0;
  height: 2.75rem;
  display: grid;
  grid-template-columns: repeat(7, minmax(7rem, 1fr));
  background: var(--sk-color-surface);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-month-weekdays span {
  display: grid;
  place-items: center;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-grid {
  min-width: 52rem;
  min-height: calc(100% - 2.75rem);
  display: grid;
  grid-template-columns: repeat(7, minmax(7rem, 1fr));
  grid-template-rows: repeat(6, minmax(8rem, 1fr));
}
.sk-month-day {
  min-width: 0;
  padding: var(--sk-space-2);
  border-right: 1px solid var(--sk-color-border-soft);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-month-day.is-outside {
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink-faint);
}
.sk-month-day__number {
  width: 2rem;
  height: 2rem;
  margin-bottom: var(--sk-space-1);
  border: 0;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
}
.sk-month-day.is-today .sk-month-day__number {
  background: var(--sk-color-primary);
  color: white;
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-day > div {
  display: grid;
  gap: 2px;
}
.sk-month-day > div > button {
  width: 100%;
  min-height: 1.65rem;
  padding: 0 0.35rem;
  border: 0;
  border-left: 3px solid var(--sk-appointment-booked);
  border-radius: 0.2rem;
  background: color-mix(in srgb, var(--sk-appointment-booked) 14%, var(--sk-color-surface));
  display: flex;
  align-items: center;
  gap: 0.35rem;
  overflow: hidden;
  text-align: left;
  cursor: pointer;
}
.sk-month-day > div > button time {
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-month-day > div > button span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--sk-font-size-xs);
}
.sk-month-more {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

.sk-processing-window form { display: grid; gap: .65rem; min-width: 0; }
.sk-processing-window form :is(input,select,textarea) { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; font: inherit; color: var(--sk-color-ink); background: var(--sk-color-surface); border: 1px solid var(--sk-color-border-interactive); border-radius: .5rem; padding: .7rem; }
.sk-processing-window form :is(input,select,textarea):focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: 2px; }

/* G-02: merker på timeflisen. Egne knapper utenfor åpne-knappen; minst 24px treffflate, forklaring som fast bunnark (virker fra 360px). */
.sk-calendar-marks { position: absolute; top: 2px; right: 2px; display: inline-flex; gap: 2px; z-index: 2; }
.sk-calendar-mark { min-width: 24px; min-height: 24px; padding: 0 4px; border: 1px solid currentColor; border-radius: 12px; font: inherit; font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); line-height: 1; background: var(--sk-surface, #fff); color: var(--sk-text, #1a1a1a); cursor: pointer; }
.sk-calendar-mark.is-minor { background: #fff4d6; color: #5b3a00; }
.sk-calendar-mark:focus-visible { outline: 2px solid var(--sk-focus, #82667f); outline-offset: 1px; }
.sk-calendar-mark__note { position: fixed; left: 8px; right: 8px; bottom: 8px; max-width: 420px; margin-inline: auto; z-index: 80; padding: 10px 12px; border-radius: 8px; border: 1px solid var(--sk-border, #bbb); background: var(--sk-surface, #fff); color: var(--sk-text, #1a1a1a); box-shadow: 0 4px 16px rgba(0,0,0,.2); font-size: var(--sk-font-size-sm); line-height: 1.4; }
.sk-calendar-mark__close { margin-left: 8px; min-height: 32px; min-width: 44px; }

/*
 * Markering av et tidsrom for en ny time (CalendarSlotMarkers.tsx) og den
 * nøkterne sluttids-linjen i «Rediger avtalen» (AppointmentEndSummary.tsx).
 *
 * Kolonnen får ingen `touch-action: none`: kalenderen skal fortsatt rulle med
 * én finger på iPad. Markeringen starter etter et kort hold, og rullingen
 * stoppes da av en ikke-passiv touchmove-lytter (useCalendarSlotSelection.ts).
 * Mens en gest pågår i en kolonne (klassen settes ved trykk og fjernes ved
 * slipp/avbryt) skal langt trykk ikke markere tekst eller åpne Safaris
 * lupe/meny. Ellers kan navn og telefon på timekortene markeres og kopieres.
 */
.sk-calendar-column.is-slot-gesture {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
}

.sk-calendar-slot-selection {
  position: absolute;
  z-index: 4;
  right: 3px;
  left: 3px;
  min-height: 1.75rem;
  padding: var(--sk-space-1) var(--sk-space-2);
  border: 2px solid var(--sk-color-primary);
  border-radius: var(--sk-radius-sm);
  overflow: hidden;
  background: color-mix(in srgb, var(--sk-color-primary) 14%, var(--sk-color-surface));
  color: var(--sk-color-ink);
  display: grid;
  align-content: start;
  gap: 0.1rem;
  pointer-events: none;
}
.sk-calendar-slot-selection strong {
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-calendar-slot-selection span,
.sk-calendar-slot-selection small {
  font-size: var(--sk-font-size-xs);
}
.sk-calendar-slot-selection small {
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}

/* Mens skjemaet er åpent: et holdt-av, ennå ikke lagret tidsrom. Stiplet kant
   og skravering skiller det fra en lagret time. */
.sk-calendar-slot-selection.is-pending {
  z-index: 3;
  border-style: dashed;
  background:
    repeating-linear-gradient(
      135deg,
      color-mix(in srgb, var(--sk-color-primary) 10%, transparent) 0,
      color-mix(in srgb, var(--sk-color-primary) 10%, transparent) 6px,
      transparent 6px,
      transparent 12px
    ),
    color-mix(in srgb, var(--sk-color-primary) 8%, var(--sk-color-surface));
}

@media (prefers-reduced-motion: no-preference) {
  .sk-calendar-slot-selection.is-pending {
    transition: height 160ms ease-out;
  }
}

.sk-appointment-end {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-appointment-end__summary {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--sk-space-1) var(--sk-space-2);
}
.sk-appointment-end__summary p {
  margin: 0;
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-sm);
}
.sk-appointment-end__summary small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-appointment-end__toggle {
  min-height: var(--sk-touch-min);
  padding: 0 var(--sk-space-2);
  border: 0;
  background: transparent;
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  text-decoration: underline;
  text-underline-offset: 0.15em;
  cursor: pointer;
}
.sk-appointment-end__toggle:focus-visible {
  border-radius: var(--sk-radius-sm);
  outline: 2px solid var(--sk-color-focus-ring);
  outline-offset: 2px;
}

/* Overlapp: to avtaler hos samme frisør ligger side om side, med en diskret markering. */
.sk-calendar-event.is-overlapping {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--sk-appointment-accent) 55%, transparent);
  background-image: repeating-linear-gradient(135deg, transparent 0 7px, color-mix(in srgb, var(--sk-appointment-accent) 9%, transparent) 7px 8px);
}
.sk-calendar-event[data-lanes] { padding-inline: 0.3rem; }
.sk-calendar-event[data-lanes="3"] small,
.sk-calendar-event[data-lanes="4"] small { display: none; }

.sk-overlap-warning {
  display: grid;
  gap: var(--sk-space-2);
  margin-bottom: var(--sk-space-3);
  padding: var(--sk-space-3) var(--sk-space-4);
  border-radius: var(--sk-radius-sm);
  border-left: 4px solid var(--sk-color-warning);
  background: var(--sk-color-warning-soft);
  color: var(--sk-color-ink);
  line-height: 1.45;
}
.sk-overlap-warning p { margin: 0; font-size: var(--sk-font-size-sm); }
.sk-overlap-warning__list { margin: 0; padding-left: 1.1rem; font-size: var(--sk-font-size-md); }
.sk-overlap-warning__actions { display: flex; flex-wrap: wrap; gap: var(--sk-space-2); }
.sk-overlap-warning__actions .sk-button { min-height: 2.75rem; }

/* Sales workspace: Min Rutine owns order context; Oppgjør owns payment truth. */
.sk-toolbar-date,
.sk-sales-datebar input {
  min-height: var(--sk-control-height);
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
  font: inherit;
}
.sk-sales-datebar {
  min-height: 4.6rem;
  margin-bottom: var(--sk-space-5);
  padding: var(--sk-space-2);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-canvas);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-sales-summary-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
  gap: var(--sk-space-5);
  align-items: start;
}
.sk-summary-table-card {
  overflow: auto;
}
.sk-summary-table-card h2 {
  margin: 0;
  padding: var(--sk-space-5);
  font-size: var(--sk-type-card-title);
}
.sk-summary-table-card table {
  width: 100%;
  border-collapse: collapse;
}
.sk-summary-table-card th,
.sk-summary-table-card td {
  height: 3.7rem;
  padding: 0 var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border-soft);
  text-align: left;
}
.sk-summary-table-card th:not(:first-child),
.sk-summary-table-card td:not(:first-child) {
  text-align: right;
}
.sk-summary-table-card th {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-type-table);
}
.sk-summary-table-card tr.is-total {
  font-weight: var(--sk-font-weight-strong);
}
.sk-summary-table-card .sk-summary-table-empty td {
  height: auto;
  padding: var(--sk-space-4);
  color: var(--sk-color-ink-soft);
  text-align: left;
}
.sk-summary-table-card .sk-readiness-banner {
  margin: var(--sk-space-4);
}
.sk-pill-tabs {
  max-width: 100%;
  min-width: 0;
  display: flex;
  gap: var(--sk-space-2);
  margin-bottom: var(--sk-space-5);
  overflow-x: auto;
  overscroll-behavior-inline: contain;
}
.sk-pill-tabs button {
  flex: 0 0 auto;
  min-height: 2.6rem;
  padding: 0 var(--sk-space-4);
  border: 0;
  border-radius: var(--sk-radius-pill);
  background: transparent;
  cursor: pointer;
  white-space: nowrap;
}
.sk-pill-tabs button.is-active {
  background: var(--sk-color-ink);
  color: white;
  font-weight: var(--sk-font-weight-strong);
}
.sk-drawer--sale {
  width: min(70rem, calc(100vw - 3rem));
}
.sk-drawer--sale .sk-drawer__body {
  padding: 0;
  overflow: hidden;
  /* `.sk-drawer__body` er et rutenett med `grid-auto-rows: max-content` og
     `align-content: start`. Arbeidsflaten ble dermed nøyaktig like høy som sitt
     eget innhold, og `height: 100%` målte seg mot seg selv. Ingen av panelene
     fikk en reell høyde å rulle innenfor, og `overflow: hidden` her klippet
     resten bort — det var derfor en full handlekurv ikke lot seg scrolle.
     Kolonneflex gir arbeidsflaten den høyden skuffen faktisk har. */
  display: flex;
  flex-direction: column;
}
.sk-drawer--sale .sk-drawer__footer {
  padding-block: var(--sk-space-3);
}
.sk-sale-controls {
  flex: 1 1 auto;
  display: flex;
  min-width: 0;
  min-height: 0;
  border: 0;
  padding: 0;
  margin: 0;
}

.sk-sale-workspace {
  min-height: 0;
  /* Fyller resten av skuffekroppen i stedet for å vokse med innholdet. Raden
     låses til den samme høyden, ellers vokser den med det høyeste panelet og
     `overflow-y: auto` på katalogen og kurven får aldri noe å rulle mot. */
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(19rem, 0.85fr);
  grid-template-rows: minmax(0, 1fr);
}
.sk-sale-draft-status {
  margin: 0;
  padding: var(--sk-space-2) var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface-subtle);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-sale-draft-status.is-saved { color: var(--sk-color-success); }
.sk-sale-draft-status.is-error {
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}
.sk-sale-workspace > main {
  min-width: 0;
  padding: var(--sk-space-6);
  overflow-y: auto;
}
.sk-sale-workspace > aside {
  min-width: 0;
  padding: var(--sk-space-6);
  border-left: 1px solid var(--sk-color-border);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-5);
}
.sk-sale-catalog {
  display: grid;
  gap: var(--sk-space-6);
}
.sk-sale-category-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-sale-category-grid button,
.sk-quick-sale-grid button {
  min-height: 4.5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  justify-items: start;
  gap: var(--sk-space-2);
  text-align: left;
  cursor: pointer;
  transition:
    border-color var(--sk-motion-fast),
    background var(--sk-motion-fast),
    transform var(--sk-motion-fast);
}
.sk-sale-category-grid button:hover,
.sk-quick-sale-grid button:hover {
  background: var(--sk-color-surface-selected);
}
.sk-sale-category-grid button.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-surface-selected);
}
.sk-sale-category-grid button:active,
.sk-quick-sale-grid button:active {
  transform: scale(0.985);
}
.sk-sale-category-grid svg {
  color: var(--sk-color-ink-soft);
}
.sk-section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.sk-section-heading h3 {
  margin: 0;
}
.sk-section-heading button {
  border: 0;
  background: transparent;
  color: var(--sk-color-primary);
  cursor: pointer;
}
.sk-quick-sale-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-quick-sale-grid button {
  min-height: 4.8rem;
  border-left: 5px solid var(--sk-color-service-accent);
}
.sk-quick-sale-grid small,
.sk-sale-customer small,
.sk-cart-lines article small {
  color: var(--sk-color-ink-soft);
}
.sk-sale-customer {
  width: 100%;
  min-height: 6rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
  text-align: left;
  cursor: pointer;
}
.sk-sale-customer:hover {
  background: var(--sk-color-surface-hover);
}
.sk-sale-customer > span:first-child {
  display: grid;
}
.sk-sale-customer-context {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-sale-customer-context.has-customer .sk-sale-customer {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 1px var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-sale-customer-clear {
  justify-self: end;
  border: 0;
  padding: var(--sk-space-1) var(--sk-space-2);
  background: transparent;
  color: var(--sk-color-danger);
  font: inherit;
  font-size: var(--sk-font-size-sm);
  cursor: pointer;
}
.sk-sale-customer-clear:hover {
  text-decoration: underline;
}
.sk-cart-panel {
  min-height: 26rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.sk-cart-panel .sk-empty-state {
  min-height: 18rem;
}
.sk-cart-panel dl {
  margin: auto 0 0;
  padding-top: var(--sk-space-5);
  border-top: 1px solid var(--sk-color-border);
  display: grid;
  gap: var(--sk-space-2);
}
.sk-cart-panel dl div {
  display: flex;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-cart-panel dt,
.sk-cart-panel dd {
  margin: 0;
}
.sk-cart-panel dl div:last-child {
  font-size: var(--sk-font-size-lg);
  font-weight: var(--sk-font-weight-strong);
}
.sk-cart-lines {
  display: grid;
  /* Panelet har `flex-basis: 0` og `min-height: 26rem`, altså en fast høyde.
     Linjelisten er det eneste som vokser når kurven fylles, så den må eie
     rullingen selv — da blir totalsummen under stående. `min-height: 0` er
     det som lar den krympe under sitt eget innhold i det hele tatt.
     Vannrett rulling er bevisst stengt: lange varenavn skal brytes, ikke
     skyve panelet sidelengs. */
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.sk-cart-lines article {
  padding: var(--sk-space-4) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: grid;
  /* `minmax(0, …)` og ordbrytingen under holder et langt varenavn innenfor
     panelet nå som linjelisten ikke lenger ruller sidelengs. */
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--sk-space-2);
}
.sk-cart-lines article > span {
  min-width: 0;
  display: grid;
  overflow-wrap: break-word;
}
.sk-cart-lines article button {
  justify-self: start;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--sk-color-danger);
  cursor: pointer;
}
.sk-quantity-stepper {
  width: max-content;
  margin-top: var(--sk-space-2);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-pill);
  display: grid !important;
  grid-template-columns: 2rem 2rem 2rem;
  align-items: center;
  text-align: center;
  overflow: hidden;
}
.sk-cart-lines article .sk-quantity-stepper button {
  width: 2rem;
  height: 2rem;
  justify-self: stretch;
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-lg);
}
.sk-cart-lines article .sk-quantity-stepper button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-cart-line-actions {
  display: flex;
  gap: var(--sk-space-3);
  grid-column: 1 / -1;
}
.sk-cart-line-actions button:first-child {
  color: var(--sk-color-primary);
}
.sk-cart-line-editor {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-3);
  padding: var(--sk-space-3);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-hover);
}
/* «Gyldighet» har en lang hjelpetekst under nedtrekkslisten. `.sk-field` er et
   rutenett som strekker radene sine når feltet får ekstra høyde av naboen, så
   inndatafeltet for «Mobil» ble høyere enn feltene i raden over — det var det
   kunden så som feil størrelse. Feltene toppstilles i stedet, og beholder
   samme bredde som resten av skjemaene. */
.sk-giftcard-form .sk-form-row {
  align-items: start;
}
.sk-cart-options {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  gap: var(--sk-space-3);
}
.sk-sale-footer {
  width: 100%;
  min-width: 0;
  flex-wrap: wrap;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-sale-footer > span {
  min-width: 0;
  max-width: 100%;
  display: grid;
}
.sk-sale-footer > .sk-sale-footer__actions { display: flex; flex-wrap: wrap; grid-auto-flow: column; gap: var(--sk-space-2); }
.sk-sale-footer .sk-button { min-width: 44px; min-height: max(44px, var(--sk-control-height)); max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.sk-sale-footer small {
  color: var(--sk-color-ink-soft);
}
.sk-sale-footer strong {
  font-size: var(--sk-font-size-lg);
}
.sk-sale-picker {
  position: absolute;
  z-index: 5;
  inset: 0;
  padding: var(--sk-space-6);
  overflow-y: auto;
  background: var(--sk-color-surface);
  animation: sk-drawer-in var(--sk-motion-slow) var(--sk-ease-emphasized);
}
.sk-sale-picker header {
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-5);
}
.sk-sale-picker header h3 {
  margin: 0;
}
.sk-sale-picker > div {
  margin-top: var(--sk-space-4);
  display: grid;
}
.sk-sale-picker > div > button {
  min-height: 4.7rem;
  padding: var(--sk-space-3);
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-sale-picker > div > button:hover,
.sk-sale-picker > div > button.is-selected {
  background: var(--sk-color-surface-selected);
}
.sk-sale-picker > div > button > span:last-child {
  display: grid;
}
.sk-sale-picker small {
  color: var(--sk-color-ink-soft);
}
.sk-payment-step {
  max-width: 38rem;
  margin: 0 auto;
  padding: var(--sk-space-8) 0;
  display: grid;
  gap: var(--sk-space-5);
}
.sk-sale-payment-content {
  max-width: 38rem;
  margin: 0 auto;
  display: grid;
  gap: var(--sk-space-5);
}
.sk-sale-payment-content > .sk-payment-step {
  min-width: 0;
  margin: 0;
  padding: 0;
}
.sk-payment-step > svg {
  width: 3rem;
  height: 3rem;
  color: var(--sk-color-primary);
}
.sk-payment-step h3,
.sk-payment-step p {
  margin: 0;
}
.sk-tip-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-tip-grid button {
  min-height: 4.5rem;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  cursor: pointer;
}
.sk-tip-grid button.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-payment-methods {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-payment-methods button {
  min-height: 5rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: var(--sk-space-4);
  text-align: left;
  cursor: pointer;
}
.sk-payment-methods button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-payment-methods button span {
  display: grid;
}
.sk-payment-methods small {
  color: var(--sk-color-ink-soft);
}
.sk-allocation-list {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-allocation-list > div,
.sk-payment-balance {
  min-height: 3.5rem;
  padding: 0 var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.sk-allocation-list > div {
  gap: var(--sk-space-3);
}
.sk-allocation-list > div > span {
  margin-right: auto;
}
.sk-allocation-list > div > button {
  border: 0;
  background: transparent;
  color: var(--sk-color-danger);
  cursor: pointer;
}
.sk-cash-presets {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
.sk-cash-presets button {
  min-height: 2.75rem;
  padding: 0 var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
  cursor: pointer;
}
.sk-cash-presets button:hover,
.sk-cash-presets button.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-campaign-preview {
  min-height: 12rem;
  padding: var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-canvas);
  display: grid;
  align-content: start;
  gap: var(--sk-space-2);
}
.sk-campaign-preview.is-email {
  border-top: 0.35rem solid var(--sk-color-primary);
  background: var(--sk-color-surface);
}
.sk-campaign-preview.is-sms {
  max-width: 24rem;
  border-radius: 1.5rem 1.5rem 0.3rem 1.5rem;
  background: var(--sk-color-primary-soft);
}
.sk-campaign-preview p {
  white-space: pre-wrap;
}
.sk-report-source {
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-report-source > span {
  display: grid;
}
.sk-report-source small {
  color: var(--sk-color-ink-soft);
}
.sk-report-table {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  overflow-x: auto;
  overflow-y: hidden;
  /* Skuffekroppen (`.sk-drawer__body`) er et rutenett, og et rutenett-barn har
     som standard `min-width: auto`. Den brede tabellen (nowrap-kolonner) presset
     derfor sporet ut i full innholdsbredde, sprengte skuffen og tvang HELE siden
     til å rulle sidelengs. `min-width: 0` lar barnet krympe, slik at den egne
     `overflow-x: auto` her fanger den horisontale rullingen inne i tabellkortet
     i stedet — ingen kolonner går tapt, men siden ruller aldri. */
  min-width: 0;
  max-width: 100%;
}
.sk-report-table table {
  width: 100%;
  border-collapse: collapse;
  white-space: nowrap;
}
.sk-report-table th,
.sk-report-table td {
  padding: var(--sk-space-3) var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
  text-align: left;
}
/* Tall skal justeres til høyre og la lange produktnavn brytes, slik at tabellen
   holder seg smal og lettleselig uten å tvinge unødig bredde. */
.sk-report-table td.is-numeric,
.sk-report-table th.is-numeric {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.sk-report-table td.is-wrap {
  white-space: normal;
  min-width: 12rem;
}
.sk-report-table th {
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-type-table);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.sk-report-table tbody tr:last-child td {
  border-bottom: 0;
}
.sk-sale-detail {
  display: grid;
  gap: var(--sk-space-6);
}
.sk-sale-detail section {
  display: grid;
  gap: var(--sk-space-3);
}

/* Den fiskale kvitteringen (uten importmerkelapp) starter rett på tittelen
   inne i .sk-inset-form, uten noe headerfelt slik den rekonstruerte kopien
   under har. Da blir toppen trang: én rem padding og null margin er alt som
   skiller "Kvittering og dokumenter" fra kortkanten. Litt ekstra luft over
   tittelen, ikke en ny header-struktur. */
.sk-receipt-heading {
  padding-top: var(--sk-space-3);
}
.sk-receipt-print {
  display: grid;
  gap: var(--sk-space-5);
  padding: var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}
.sk-receipt-print__header {
  display: grid;
  gap: var(--sk-space-1);
  padding-bottom: var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-receipt-print__header > strong {
  color: var(--sk-color-danger);
  font-size: var(--sk-font-size-sm);
  letter-spacing: 0.04em;
}
.sk-receipt-print__header h3,
.sk-receipt-print__header p,
.sk-receipt-print__payments h4 {
  margin: 0;
}
.sk-receipt-print__payments {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-receipt-print__payments > div {
  display: flex;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-receipt-print__notice {
  margin: 0;
  padding-top: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}

@media print {
  body * {
    visibility: hidden !important;
  }
  .sk-receipt-print,
  .sk-receipt-print * {
    visibility: visible !important;
  }
  .sk-receipt-print {
    position: fixed;
    inset: 0;
    z-index: 9999;
    overflow: visible;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    color: #111;
    background: #fff;
  }
  .sk-no-print {
    display: none !important;
  }
}
.sk-list-row {
  min-height: 4.5rem;
  padding: var(--sk-space-3) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-list-row > span {
  display: grid;
}
.sk-list-row small {
  color: var(--sk-color-ink-soft);
}
.sk-service-history-row__main {
  min-width: 0;
  flex: 1 1 auto;
  padding: var(--sk-space-2) 0;
  border: 0;
  background: transparent;
  color: inherit;
  display: grid;
  justify-items: start;
  gap: var(--sk-space-1);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-service-history-row__main:hover strong,
.sk-service-history-row__main:focus-visible strong {
  color: var(--sk-color-primary);
}
.sk-service-history-row__main:focus-visible {
  border-radius: var(--sk-radius-sm);
  outline: 3px solid var(--sk-color-focus-ring);
  outline-offset: 3px;
}
.sk-service-history-row__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-1) var(--sk-space-3);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: var(--sk-line-copy);
}
.sk-service-history-row__meta > span + span::before {
  margin-right: var(--sk-space-3);
  color: var(--sk-color-ink-faint);
  content: "·";
}
@media (max-width: 40rem) {
  .sk-service-history-row {
    align-items: stretch;
    flex-direction: column;
  }
  .sk-service-history-row > .sk-button {
    align-self: flex-start;
  }
}
@media (max-width: 960px) {
  /* Under 960px stables katalogen over kurven (07-responsive.css), og da er
     det arbeidsflaten selv som ruller. Radene må tilbake til sin naturlige
     høyde, ellers presses begge kolonnene inn i én låst rad. Selektoren er
     bevisst to klasser dyp: denne filen lastes før 07-responsive.css. */
  .sk-drawer--sale .sk-sale-workspace {
    grid-template-rows: auto;
  }
}

/* Professional recipes use existing form tokens and wrap long product names. */
.sk-customer-formula-fields,
.sk-customer-formula-fields fieldset,
.sk-customer-formula-summary {
  min-width: 0;
}
.sk-customer-formula-fields fieldset {
  display: grid;
  gap: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-4);
}
.sk-customer-formula-summary {
  overflow-wrap: anywhere;
}

/* Supplier URLs and routines remain readable within the existing drawer. */
.sk-supplier-drawer .sk-field,
.sk-customer-formula-fields .sk-field {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
}
.sk-supplier-drawer .sk-field > label,
.sk-customer-formula-fields .sk-field > label {
  width: auto;
}
.sk-supplier-drawer .sk-field :is(input, textarea),
.sk-customer-formula-fields .sk-field :is(input, textarea) {
  width: 100%;
  min-width: 0;
}

.sk-supplier-drawer :is(p, h2, h3) { overflow-wrap: anywhere; }

/* Keep finance provenance and follow-up filters readable on narrow screens. */
.sk-system-costs .sk-field,
.sk-reactivation-opportunities .sk-field {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
}
.sk-system-costs .sk-field > label,
.sk-reactivation-opportunities .sk-field > label { width: auto; }
.sk-system-costs .sk-field :is(input, textarea, select),
.sk-reactivation-opportunities .sk-field :is(input, textarea, select) { width: 100%; min-width: 0; }
.sk-system-costs :is(p, summary),
.sk-reactivation-opportunities :is(p, li) { overflow-wrap: anywhere; }

.sk-staffing-tools { border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); padding: var(--sk-space-4); }
.sk-staffing-tools > summary { cursor: pointer; font-weight: var(--sk-font-weight-strong); overflow-wrap: anywhere; }
.sk-staffing-tools[open] > summary { margin-bottom: var(--sk-space-4); }
.sk-staffing-tools .sk-page--stacked { display: grid; gap: var(--sk-space-4); }

.sk-employee-reviews .sk-data-table-wrap { min-width: 0; }
@media (max-width: 44rem) {
  .sk-employee-reviews .sk-data-table { min-width: 0; }
  .sk-employee-reviews .sk-data-table .sk-button { max-width: 100%; white-space: normal; }
  .sk-employee-reviews .sk-inline-actions { flex-wrap: wrap; }
}

.sk-reactivation-contact { border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-lg); padding: 12px; margin-block: 12px; min-width: 0; overflow-wrap: anywhere; }
.sk-reactivation-contact summary { cursor: pointer; min-height: 44px; display: list-item; }
.sk-reactivation-contact .sk-field { min-width: 0; }
.sk-reactivation-contact select { max-width: 100%; }

/* Only the employee booking form: keep recovery actions visible after a long error. */
.sk-modal:has(.employee-booking-form) { display: flex; flex-direction: column; overflow: hidden; }
.sk-modal:has(.employee-booking-form) > .sk-modal__header,
.sk-modal:has(.employee-booking-form) > .sk-modal__footer { flex: 0 0 auto; }
.sk-modal:has(.employee-booking-form) > .sk-modal__body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }

/* The portal is outside the app shell; keep its dark recovery buttons readable. */
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-modal:has(.employee-booking-form) > .sk-modal__footer, .sk-appointment-detail) .sk-button:not(.sk-button--primary):not(:disabled) { background: var(--sk-color-surface); color: var(--sk-color-ink); border-color: var(--sk-color-border); }

/* Existing checkout layout, scoped to the employee checkout on touch screens.
   No root screen override: other employee pages keep their own layout. */
.sk-drawer.sk-drawer--employee-sale {
  width: min(100vw, 90rem);
  max-width: 100vw;
}
.sk-drawer--employee-sale :is(button, input, select, textarea, a[href]) {
  min-height: 44px;
  min-width: 44px;
}
:root[data-staff-interface] .sk-drawer--employee-sale .sk-drawer__body :is(button, input, select, textarea) {
  min-height: 44px;
}
.sk-drawer--employee-sale .sk-sale-member-question {
  margin-bottom: var(--sk-space-4);
}
.sk-sale-member-question form {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-sale-member-question .sk-sale-footer__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-3);
}
.sk-drawer--employee-sale .sk-sale-workspace > aside {
  overflow-y: auto;
}
@media (max-width: 960px) {
  .sk-drawer--employee-sale .sk-sale-workspace > aside {
    overflow: visible;
  }
}
@media (max-height: 800px) and (min-width: 961px) {
  .sk-drawer--employee-sale .sk-sale-workspace > main,
  .sk-drawer--employee-sale .sk-sale-workspace > aside {
    padding: var(--sk-space-4);
  }
}

.sk-drawer--employee-sale .sk-drawer__header {
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  padding-block: var(--sk-space-3);
}
.sk-drawer--employee-sale .sk-drawer__header-actions,
.sk-drawer--employee-sale .sk-sale-footer__actions {
  display: flex;
  align-items: center;
  min-width: 0;
  max-width: 100%;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
}

:root[data-staff-interface] .sk-app-shell .sk-employee-checkout :is(.sk-modal, .sk-drawer) :is(button, input, select, textarea, a[href]) {
  min-height: 44px;
  min-width: 44px;
}

/* Keep the 44 px hit area during opening too; reuse the shared opacity motion
   instead of the general modal scale animation. */
.sk-employee-checkout .sk-modal {
  animation-name: sk-fade-in;
}

/* Online booking, marketplace profile, external links and publication wizard. */
.sk-online-page {
  width: 100%;
  max-width: none;
  min-height: calc(100vh - var(--sk-topbar-height));
  padding: 0;
}
.sk-online-hero {
  position: relative;
  min-height: calc(100vh - var(--sk-topbar-height));
  padding: clamp(4rem, 10vh, 8rem) clamp(2rem, 9vw, 10rem);
  overflow: hidden;
  display: grid;
  grid-template-columns: minmax(22rem, 0.9fr) minmax(26rem, 1.1fr);
  align-items: center;
  gap: var(--sk-space-10);
}
.sk-online-hero::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: -20% -12% auto auto;
  width: 48rem;
  height: 48rem;
  border-radius: 50%;
  background: radial-gradient(
    circle at 65% 35%,
    var(--sk-color-signal) 0,
    var(--sk-color-signal-soft) 35%,
    transparent 70%
  );
  animation: sk-ambient-drift 9s ease-in-out infinite alternate;
}
.sk-online-hero > div:first-child {
  max-width: 42rem;
  justify-self: end;
}
.sk-online-hero h1 {
  margin: var(--sk-space-4) 0;
  font-size: var(--sk-type-page-title);
  line-height: 1.02;
  letter-spacing: -0.045em;
}
.sk-online-hero p {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-lg);
}
.sk-online-hero ul {
  margin: var(--sk-space-6) 0;
  padding: 0;
  display: grid;
  gap: var(--sk-space-3);
  list-style: none;
}
.sk-online-hero li {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-online-hero li svg {
  width: 1.2rem;
  color: var(--sk-color-success);
}
.sk-online-hero > div:first-child > div {
  display: flex;
  gap: var(--sk-space-3);
}
.sk-marketplace-preview {
  min-height: 35rem;
  display: grid;
  place-items: center;
  perspective: 75rem;
}
.sk-marketplace-phone {
  width: min(20rem, 75%);
  min-height: 34rem;
  padding: var(--sk-space-3);
  border: 0.55rem solid var(--sk-color-ink);
  border-radius: 2.6rem;
  background: var(--sk-color-surface);
  box-shadow: 0 40px 80px rgb(61 85 80 / 23%);
  transform: rotateY(-9deg) rotateX(3deg);
  animation: sk-phone-float 5s ease-in-out infinite;
}
.sk-marketplace-map {
  display: block;
  height: 16rem;
  border-radius: 1.8rem 1.8rem 0.8rem 0.8rem;
  background:
    linear-gradient(135deg, #e8f3ea, #d8e7f5),
    repeating-linear-gradient(45deg, transparent 0 18px, rgb(255 255 255 / 70%) 18px 21px);
}
.sk-marketplace-phone article {
  min-height: 5rem;
  padding: var(--sk-space-3);
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-marketplace-phone article div {
  display: grid;
}
.sk-marketplace-phone small {
  color: var(--sk-color-ink-soft);
}
.sk-location-strip {
  padding: 0 clamp(2rem, 9vw, 10rem) var(--sk-space-10);
}
.sk-location-strip > div {
  margin-top: var(--sk-space-3);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
  gap: var(--sk-space-3);
}
.sk-location-strip button {
  min-height: 5rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-location-strip button span {
  display: grid;
}
.sk-location-strip small {
  color: var(--sk-color-ink-soft);
}
.sk-link-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: var(--sk-space-4);
}
.sk-link-card {
  min-height: 0;
  padding: var(--sk-card-inset);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.sk-link-card > svg {
  width: 1.5rem;
  height: 1.5rem;
  color: var(--sk-color-primary);
}
.sk-link-card h2 {
  margin: var(--sk-space-3) 0 var(--sk-space-2);
  font-size: var(--sk-type-card-title);
}
.sk-link-card p {
  margin: 0 0 var(--sk-space-4);
  color: var(--sk-color-ink-soft);
}
.sk-link-card .sk-button {
  width: 100%;
  margin-top: auto;
}
.sk-channel-setup {
  max-width: 48rem;
  margin: 2rem auto;
  padding: var(--sk-space-10);
  display: grid;
  justify-items: start;
  gap: var(--sk-space-5);
}
.sk-channel-icons {
  display: flex;
  gap: var(--sk-space-3);
  color: var(--sk-color-primary);
}
.sk-channel-icons svg {
  width: 3rem;
  height: 3rem;
}
.sk-channel-setup h2,
.sk-channel-setup p {
  margin: 0;
}
.sk-channel-setup p {
  color: var(--sk-color-ink-soft);
}
.sk-channel-setup ul {
  padding: 0;
  display: grid;
  gap: var(--sk-space-3);
  list-style: none;
}
.sk-channel-setup li {
  display: flex;
  gap: var(--sk-space-3);
}
.sk-channel-setup li svg {
  color: var(--sk-color-success);
}
.sk-store-hero {
  min-height: 34rem;
  padding: var(--sk-space-10);
  border-radius: var(--sk-radius-lg);
  background: linear-gradient(135deg, var(--sk-color-primary-soft), var(--sk-color-surface-warm));
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: var(--sk-space-8);
}
.sk-store-hero > div:first-child {
  max-width: 34rem;
}
.sk-store-hero > div:first-child > svg {
  width: 4rem;
  height: 4rem;
  color: var(--sk-color-primary);
}
.sk-store-hero h2 {
  font-size: var(--sk-type-section-title);
}
.sk-store-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-store-grid span {
  min-height: 5rem;
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: rgb(255 255 255 / 78%);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  font-weight: var(--sk-font-weight-strong);
}
.sk-store-grid svg {
  color: var(--sk-color-success);
}
.sk-wizard {
  position: fixed;
  z-index: calc(var(--sk-z-overlay) + 4);
  inset: 0;
  background: var(--sk-color-surface);
  overflow-y: auto;
  animation: sk-rise-in var(--sk-motion-slow) var(--sk-ease-emphasized);
}
.sk-wizard > header {
  position: sticky;
  z-index: 4;
  top: 0;
  width: min(68rem, calc(100% - 3rem));
  min-height: 6rem;
  margin: 0 auto;
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
}
.sk-wizard > header > div:last-child {
  display: flex;
  gap: var(--sk-space-3);
}
.sk-wizard-progress {
  position: absolute;
  inset: 0.6rem 0 auto;
  display: grid;
  grid-template-columns: repeat(9, 1fr);
  gap: var(--sk-space-1);
}
.sk-wizard-progress span {
  height: 0.22rem;
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-border-soft);
}
.sk-wizard-progress span.is-complete {
  background: var(--sk-color-primary);
}
.sk-wizard > main {
  width: min(62rem, calc(100% - 3rem));
  min-height: calc(100vh - 6rem);
  margin: 0 auto;
  padding: clamp(3rem, 10vh, 8rem) 0;
  display: grid;
  align-items: center;
}
.sk-wizard-intro {
  display: grid;
  grid-template-columns: 12rem 1fr;
  align-items: center;
  gap: var(--sk-space-10);
}
.sk-wizard-intro h1,
.sk-wizard-form h1 {
  margin: var(--sk-space-3) 0;
  font-size: var(--sk-type-page-title);
}
.sk-wizard-intro p,
.sk-wizard-form > p {
  max-width: 43rem;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-lg);
}
.sk-wizard-illustration {
  width: 10rem;
  height: 10rem;
  border-radius: 2.4rem;
  background: linear-gradient(
    145deg,
    var(--sk-color-signal),
    var(--sk-color-primary) 60%,
    var(--sk-color-primary-soft)
  );
  color: white;
  display: grid;
  place-items: center;
  box-shadow: 0 25px 45px color-mix(in srgb, var(--sk-color-primary) 25%, transparent);
}
.sk-wizard-illustration svg {
  width: 4.5rem;
  height: 4.5rem;
}
.sk-wizard-form {
  width: min(100%, 42rem);
  margin: 0 auto;
  display: grid;
  gap: var(--sk-space-5);
}
.sk-wizard-form--wide {
  width: min(100%, 58rem);
}
.sk-hours-row {
  min-height: 4rem;
  display: grid;
  grid-template-columns: 1fr 8rem auto 8rem;
  align-items: center;
  gap: var(--sk-space-3);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-hours-row label {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  font-weight: var(--sk-font-weight-strong);
}
.sk-hours-row input {
  min-height: var(--sk-control-height);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-sm);
  padding: 0 var(--sk-space-2);
}
.sk-image-dropzone {
  min-height: 17rem;
  border: 2px dashed var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-canvas);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-3);
  transition:
    border-color var(--sk-motion-base),
    background var(--sk-motion-base),
    transform var(--sk-motion-base);
}
.sk-image-dropzone.is-dragging {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  transform: scale(1.01);
}
.sk-image-dropzone > svg {
  width: 2rem;
  height: 2rem;
}
.sk-image-preview-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-image-preview-grid article {
  min-height: 5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: 8rem minmax(0, 1fr) auto;
  align-items: start;
  gap: var(--sk-space-3);
  cursor: grab;
  transition:
    opacity var(--sk-motion-fast) var(--sk-ease-standard),
    transform var(--sk-motion-fast) var(--sk-ease-standard);
}
.sk-image-preview-grid article.is-dragging {
  opacity: 0.45;
  transform: scale(0.98);
}
.sk-image-preview-grid article span {
  min-width: 0;
  display: grid;
}
.sk-image-preview-grid article strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-image-preview-grid article button {
  border: 0;
  background: transparent;
  cursor: pointer;
}
.sk-media-preview {
  position: relative;
  width: 8rem;
  aspect-ratio: 1.5;
  border-radius: var(--sk-radius-sm);
  overflow: hidden;
  background: var(--sk-color-canvas);
}
.sk-media-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.sk-media-preview > span {
  position: absolute;
  inset: auto 0.35rem 0.35rem;
  width: fit-content;
  padding: 0.2rem 0.4rem;
  border-radius: var(--sk-radius-sm);
  background: rgb(17 17 17 / 75%);
  color: white;
  font-size: var(--sk-font-size-xs);
}
.sk-image-preview-grid article .sk-field {
  margin-top: var(--sk-space-2);
}
.sk-profile-image-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-profile-review {
  display: grid;
}
.sk-profile-review > div {
  min-height: 4rem;
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-profile-review > div > svg {
  color: var(--sk-color-success);
}
.sk-generated-link {
  padding: var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-canvas);
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-generated-link > svg {
  width: 4rem;
  height: 4rem;
}
.sk-generated-link > div {
  min-width: 0;
  display: grid;
}
.sk-generated-link code {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-link-preview {
  min-height: 8rem;
  padding: var(--sk-space-5);
  border: 1px dashed var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-link-preview span {
  display: grid;
}
.sk-connection-icon {
  width: 5rem;
  height: 5rem;
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-connection-icon svg {
  width: 2.5rem;
  height: 2.5rem;
}
.sk-setup-step {
  min-height: 3.5rem;
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-setup-step > span {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--sk-color-canvas);
  display: grid;
  place-items: center;
  font-weight: var(--sk-font-weight-strong);
}

/* Marketing and communications use the same cards, drawers and readiness gates. */
.sk-marketing-home,
.sk-automation-sections {
  display: grid;
  gap: var(--sk-space-8);
}
.sk-marketing-home {
  grid-template-columns: minmax(0, 1fr);
}
.sk-marketing-home > * {
  min-width: 0;
}
.sk-campaign-balance {
  min-height: 12rem;
  padding: var(--sk-space-6);
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: var(--sk-space-2) var(--sk-space-6);
}
.sk-campaign-balance > span {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-campaign-balance > b {
  grid-row: span 2;
  font-size: var(--sk-font-size-display);
}
.sk-campaign-balance p {
  margin: 0;
  color: var(--sk-color-ink-soft);
}
.sk-campaign-balance .sk-button {
  justify-self: start;
}
@media (max-width: 44rem) {
  .sk-campaign-balance {
    grid-template-columns: minmax(0, 1fr);
    overflow-wrap: anywhere;
  }
  .sk-campaign-balance > b {
    grid-row: auto;
  }
}
.sk-campaign-grid,
.sk-automation-grid,
.sk-review-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: var(--sk-space-4);
}
.sk-campaign-card,
.sk-automation-card,
.sk-review-card {
  min-height: 18rem;
  padding: var(--sk-card-inset);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--sk-space-3);
}
.sk-campaign-card > svg,
.sk-automation-card > svg {
  color: var(--sk-color-primary);
}
.sk-campaign-card h2,
.sk-automation-card h3,
.sk-campaign-card p,
.sk-automation-card p {
  margin: 0;
}
.sk-campaign-card p,
.sk-automation-card p {
  color: var(--sk-color-ink-soft);
}
.sk-campaign-card .sk-button,
.sk-automation-card .sk-button {
  margin-top: auto;
}
.sk-automation-sections section {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-automation-sections h2 {
  margin: 0;
}
.sk-promo-hero {
  position: relative;
  min-height: 38rem;
  margin: calc(-1 * var(--sk-space-5)) calc(-1 * var(--sk-space-6)) 0;
  padding: clamp(3rem, 8vw, 8rem);
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: var(--sk-space-8);
}
.sk-promo-hero::after {
  content: "";
  position: absolute;
  z-index: -1;
  right: -12rem;
  top: -18rem;
  width: 52rem;
  height: 52rem;
  border-radius: 50%;
  background: radial-gradient(circle, var(--sk-color-signal), var(--sk-color-signal-soft) 38%, transparent 70%);
  animation: sk-ambient-drift 10s ease-in-out infinite alternate;
}
.sk-promo-hero.is-reviews::after {
  background: radial-gradient(circle, var(--sk-color-primary-soft), var(--sk-color-surface-warm) 40%, transparent 70%);
}
.sk-promo-hero > div:first-child {
  max-width: 43rem;
  justify-self: end;
}
.sk-promo-hero h2 {
  margin: var(--sk-space-4) 0;
  font-size: var(--sk-type-section-title);
  line-height: 1.05;
}
.sk-promo-hero p {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-lg);
}
.sk-promo-hero ul {
  padding: 0;
  display: grid;
  gap: var(--sk-space-3);
  list-style: none;
}
.sk-promo-hero li {
  display: flex;
  gap: var(--sk-space-3);
}
.sk-promo-art {
  min-height: 27rem;
  display: grid;
  place-items: center;
}
.sk-promo-art > svg {
  width: 7rem;
  height: 7rem;
  color: var(--sk-color-primary);
  animation: sk-phone-float 5s ease-in-out infinite;
}
.sk-promo-art article {
  min-width: 20rem;
  padding: var(--sk-space-6);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-2);
  transform: rotate(-3deg);
}
.sk-promo-art article strong,
.sk-promo-art article small {
  width: 100%;
}
.sk-promo-art article small {
  color: var(--sk-color-ink-soft);
}
.sk-promo-art article > svg {
  color: #f1a900;
  fill: #f1a900;
}
.sk-pricing-overview {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-5);
}
.sk-pricing-overview .sk-card {
  min-height: 8rem;
  padding: var(--sk-card-inset);
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-pricing-overview svg {
  color: var(--sk-color-primary);
}
.sk-pricing-overview span {
  display: grid;
}
.sk-pricing-overview b {
  font-size: var(--sk-font-size-2xl);
}
.sk-review-card > div {
  display: flex;
}
.sk-review-card svg,
.sk-review-stars svg {
  color: var(--sk-color-border);
}
.sk-review-card svg.is-filled,
.sk-review-stars svg.is-filled {
  color: #f1a900;
  fill: #f1a900;
}
.sk-review-card p {
  flex: 1;
}
.sk-review-card small {
  color: var(--sk-color-ink-soft);
}
.sk-choice-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: var(--sk-space-3);
}
.sk-choice-grid > button {
  min-height: 8rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  justify-items: start;
  gap: var(--sk-space-2);
  text-align: left;
  cursor: pointer;
}
.sk-choice-grid > button:hover {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
/* Valget var usynlig: `is-selected` ble satt i JSX, men ingenting tegnet det,
   så rutenettet så likt ut uansett hva brukeren hadde trykket på. */
.sk-choice-grid > button.is-selected {
  border-color: var(--sk-color-primary);
  border-width: 2px;
  background: var(--sk-color-primary-soft);
}
/* «Flere valg» i ansattskjemaet: standardfeltene skal ikke stå i veien for en
   rask vikarregistrering, men de må være ett klikk unna og se klikkbare ut. */
.sk-inset-form > summary {
  cursor: pointer;
  font-weight: var(--sk-font-weight-strong);
}
.sk-choice-grid small {
  color: var(--sk-color-ink-soft);
}
.sk-wizard-dots {
  /* Klassen deles av importveiviserne (3 faste steg) og kampanjeveiviseren
     (5 steg fra en «steps»-liste). Et fast repeat(4, …) ga enten en tom
     fjerde kolonne eller et femte steg som falt ned i en ny rad.
     auto-flow lager i stedet én kolonne per faktisk steg. */
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: var(--sk-space-2);
}
.sk-wizard-dots > span {
  color: var(--sk-color-ink-faint);
  display: grid;
  justify-items: center;
  gap: var(--sk-space-1);
}
.sk-wizard-dots i {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--sk-color-canvas);
  display: grid;
  place-items: center;
  font-style: normal;
}
.sk-wizard-dots span.is-active {
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-wizard-dots span.is-active i {
  background: var(--sk-color-primary);
  color: white;
}

/* Kampanjedetaljen skal vise meldingen kunden faktisk vil motta, og samtidig
   gjøre utkastet redigerbart uten å forlate flyten. */
.sk-campaign-content-card {
  display: grid;
  gap: var(--sk-space-5);
}
.sk-campaign-content-card__heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-campaign-content-card__heading h3,
.sk-campaign-content-card__heading p {
  margin: 0;
}
.sk-campaign-content-card__heading p {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}
.sk-campaign-message-preview {
  overflow: hidden;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}
.sk-campaign-message-preview__meta {
  display: grid;
  gap: var(--sk-space-2);
  padding: var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-canvas);
}
.sk-campaign-message-preview__meta > span {
  display: grid;
  grid-template-columns: 4rem minmax(0, 1fr);
  gap: var(--sk-space-3);
}
.sk-campaign-message-preview__meta small {
  color: var(--sk-color-ink-soft);
}
.sk-campaign-message-preview__body {
  min-height: 16rem;
  padding: clamp(2rem, 7vw, 4.5rem);
  text-align: center;
}
.sk-campaign-message-preview__brand {
  display: inline-block;
  margin-bottom: var(--sk-space-5);
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.sk-campaign-message-preview__body p {
  max-width: 52ch;
  margin: 0 auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.65;
}
.sk-campaign-message-preview.is-sms {
  width: min(26rem, 100%);
  margin-inline: auto;
  padding: var(--sk-space-4);
  border-radius: 1.25rem 1.25rem 0.35rem 1.25rem;
  background: var(--sk-color-primary-soft);
}
.sk-campaign-message-preview.is-sms small {
  color: var(--sk-color-ink-soft);
}
.sk-campaign-message-preview.is-sms p {
  margin: var(--sk-space-2) 0 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.5;
}
.sk-campaign-editor textarea {
  resize: vertical;
}

/* Fieldset brukes bare for å låse en avgjort fraværsforespørsel. Nettleserens
   standardramme skal ikke lage en ekstra boks rundt skjemaet. */
.sk-plain-fieldset {
  display: contents;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

@media (max-width: 40rem) {
  .sk-campaign-content-card__heading {
    align-items: stretch;
    flex-direction: column;
  }
  .sk-campaign-content-card__heading .sk-button {
    width: 100%;
  }
  .sk-campaign-message-preview__meta > span {
    grid-template-columns: 1fr;
    gap: 0;
  }
}

/* Team, reports, add-ons, setup and help share operational navigation patterns. */
.sk-team-grid,
.sk-addon-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
  align-items: stretch;
  gap: var(--sk-space-4);
}
.sk-team-grid > .sk-team-card + .sk-team-card {
  margin-top: 0;
}
.sk-team-card,
.sk-addon-card {
  min-height: 0;
  padding: var(--sk-directory-card-padding);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--sk-directory-card-gap);
}
.sk-team-card {
  height: 100%;
  min-height: 0;
  padding: var(--sk-directory-card-padding);
  gap: var(--sk-directory-card-gap);
}
.sk-team-card__identity {
  width: 100%;
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-team-card__identity > div {
  min-width: 0;
  display: grid;
  justify-items: start;
  gap: var(--sk-space-2);
}
.sk-team-card h2,
.sk-addon-card h2,
.sk-addon-card p {
  margin: 0;
}
.sk-team-card dl {
  margin: 0;
  width: 100%;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sk-space-2);
}
.sk-team-card dl > div {
  padding: var(--sk-space-2);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-canvas);
  display: grid;
}
.sk-team-card dt {
  color: var(--sk-color-ink-soft);
}
.sk-team-card dd {
  margin: 0;
  font-weight: var(--sk-font-weight-strong);
}
.sk-team-card .sk-button,
.sk-addon-card .sk-button {
  margin-top: auto;
}
.sk-team-card .sk-button {
  width: 100%;
}
.sk-schedule-board {
  overflow-x: auto;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
}
.sk-schedule-board > header {
  min-height: 4.5rem;
  padding: 0 var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-3);
}
.sk-schedule-grid {
  min-width: 62rem;
  display: grid;
  grid-template-columns: 13rem repeat(7, minmax(7rem, 1fr));
}
.sk-schedule-grid > .sk-schedule-team-heading,
.sk-schedule-grid > .sk-schedule-day {
  min-height: 3.5rem;
  padding: var(--sk-space-3);
  border-right: 1px solid var(--sk-color-border-soft);
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: grid;
  place-items: center;
}
.sk-schedule-day {
  display: grid;
  align-content: center;
  gap: 0.1rem;
  color: var(--sk-color-ink-soft);
  text-align: center;
}
.sk-schedule-day > span {
  font-size: var(--sk-font-size-xs);
  text-transform: capitalize;
}
.sk-schedule-day > strong {
  color: var(--sk-color-ink);
}
.sk-schedule-person {
  min-height: 6rem;
  padding: var(--sk-space-3);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-schedule-grid > button {
  min-height: 6rem;
  border: 0;
  border-left: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  cursor: pointer;
}
.sk-schedule-grid > button:hover {
  background: var(--sk-color-surface-selected);
}
.sk-schedule-grid-row {
  display: contents;
}
.sk-schedule-grid-row > button {
  min-height: 6rem;
  border: 0;
  border-left: 1px solid var(--sk-color-border-soft);
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  display: grid;
  place-items: center;
  padding: var(--sk-space-2);
  cursor: pointer;
}
/* En dag kan romme flere vakter for samme ansatt; cella stabler dem. */
.sk-schedule-grid-row > .sk-schedule-cell {
  min-height: 6rem;
  border-left: 1px solid var(--sk-color-border-soft);
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  display: grid;
  align-content: center;
  gap: var(--sk-space-1);
  padding: var(--sk-space-2);
}
.sk-schedule-cell > button {
  width: 100%;
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  display: grid;
  place-items: center;
  padding: var(--sk-space-1);
  cursor: pointer;
}
.sk-schedule-cell > button:hover {
  background: var(--sk-color-surface-selected);
}
.sk-schedule-shift {
  display: grid;
  justify-items: center;
  gap: var(--sk-space-1);
  line-height: 1.2;
}
.sk-schedule-shift small {
  color: var(--sk-color-ink-soft);
}
.sk-schedule-grid-row > button:hover {
  background: var(--sk-color-surface-selected);
}
.sk-schedule-grid-row > button.sk-schedule-cell--disabled {
  cursor: not-allowed;
  color: var(--sk-color-ink-soft);
  background: var(--sk-color-surface-muted, var(--sk-color-surface));
}
.sk-schedule-grid-row > button.sk-schedule-cell--disabled:hover {
  background: var(--sk-color-surface-muted, var(--sk-color-surface));
}
.sk-board-columns {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-board-columns > .sk-card {
  min-height: 28rem;
  padding: var(--sk-card-inset);
}
.sk-timeoff-column .sk-settings-collection {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-timeoff-column .sk-list-row {
  align-items: start;
}
.sk-list-row__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
}
.sk-member-bank-account {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-member-bank-form {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-member-bank-form h3,
.sk-member-bank-form p {
  margin: 0;
}
.sk-member-bank-form p {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}
.sk-member-readiness {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  overflow: hidden;
  background: var(--sk-color-surface);
}
.sk-member-readiness > div {
  padding: var(--sk-space-4);
  background: var(--sk-color-warning-soft);
}
.sk-member-readiness p {
  margin: var(--sk-space-1) 0 0;
  color: var(--sk-color-ink-soft);
}
.sk-member-readiness ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-member-readiness li + li {
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-member-readiness a {
  min-height: 3.5rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  color: var(--sk-color-ink);
  text-decoration: none;
}
.sk-member-readiness a:hover {
  background: var(--sk-color-surface-hover);
}
.sk-member-readiness a svg {
  flex: 0 0 auto;
  color: var(--sk-color-ink-soft);
}
.sk-payroll-flow-bar {
  grid-template-columns: minmax(11rem, 14rem) minmax(12rem, 1fr) auto auto;
  align-items: end;
}
.sk-payroll-flow-bar .sk-form-stack { gap: var(--sk-space-1); align-self: center; }
.sk-payroll-flow-bar .sk-form-stack small { color: var(--sk-color-ink-soft); }
.sk-payroll-flow-bar > .sk-button { min-height: 2.75rem; }
@media (max-width: 1100px) {
  .sk-payroll-flow-bar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-payroll-flow-bar > .sk-button { width: 100%; justify-content: center; }
}
@media (max-width: 640px) {
  .sk-payroll-flow-bar { grid-template-columns: minmax(0, 1fr); }
}

.sk-payroll-person,
.sk-payroll-person > strong,
.sk-payroll-person > small {
  display: block;
}
.sk-table-subline {
  display: block;
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}
.sk-payroll-person > small {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}
.sk-payroll-issue-list {
  margin: var(--sk-space-3) 0 0;
  padding: 0;
  display: grid;
  list-style: none;
}
.sk-payroll-issue-list > li {
  min-height: 3.5rem;
  padding: var(--sk-space-2) 0;
  border-top: 1px solid currentColor;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-payroll-issue-list > li > span:first-child {
  display: grid;
}
.sk-commission-scope {
  margin: 0;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-2) var(--sk-space-4);
}
.sk-commission-scope legend {
  padding: 0 var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}
.sk-board-columns article {
  min-height: 6rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-board-columns article div {
  display: grid;
}
.sk-board-columns article small {
  color: var(--sk-color-ink-soft);
}
.sk-settings-rows {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  overflow: hidden;
}
.sk-settings-rows button {
  width: 100%;
  min-height: 3.75rem;
  padding: 0 var(--sk-space-4);
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
}
.sk-settings-rows button:last-child {
  border-bottom: 0;
}
.sk-settings-rows button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-report-groups {
  column-count: 2;
  column-gap: var(--sk-space-6);
}
.sk-report-groups section {
  display: inline-grid;
  gap: var(--sk-space-3);
  break-inside: avoid;
  width: 100%;
  margin-bottom: var(--sk-space-6);
}
.sk-report-groups section > div {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  overflow: hidden;
}
.sk-report-launcher {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-report-launcher:last-child {
  border-bottom: 0;
}
.sk-report-launcher > button:first-child {
  width: 100%;
  min-height: 5rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 0;
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-report-launcher > button:last-child {
  width: 3rem;
  border: 0;
  border-left: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink-soft);
  cursor: pointer;
  font-size: var(--sk-font-size-lg);
}
.sk-report-launcher > button:last-child.is-selected {
  color: var(--sk-color-accent);
  background: var(--sk-color-accent-soft);
}
.sk-report-launcher > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-report-launcher button span {
  display: grid;
}
.sk-report-launcher button small {
  color: var(--sk-color-ink-soft);
}
.sk-report-controls {
  display: grid;
  grid-template-columns: auto minmax(16rem, 1fr);
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-drawer--report {
  width: min(64rem, 100vw);
}
.sk-report-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
}
.sk-report-toolbar input,
.sk-report-toolbar select {
  min-height: var(--sk-control-height);
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
}
.sk-report-dimensions {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-report-dimensions .sk-field {
  font-size: var(--sk-font-size-sm);
}
.sk-report-chart {
  min-height: 22rem;
  display: grid;
  place-items: center;
  align-content: center;
  gap: var(--sk-space-3);
  color: var(--sk-color-ink-soft);
}
.sk-report-chart > svg {
  width: 4rem;
  height: 4rem;
  color: var(--sk-color-primary);
}
.sk-addon-card > span {
  width: 4rem;
  height: 4rem;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-addon-card > span svg {
  width: 2rem;
  height: 2rem;
}
.sk-addon-card p {
  color: var(--sk-color-ink-soft);
}
.sk-addon-detail {
  display: grid;
  justify-items: start;
  gap: var(--sk-space-5);
}
.sk-help-page {
  max-width: 78rem;
}
.sk-help-hero {
  min-height: 22rem;
  margin: 0 0 var(--sk-space-8);
  padding: var(--sk-space-10);
  border-radius: 0 0 2rem 2rem;
  background: linear-gradient(135deg, var(--sk-color-primary-soft), var(--sk-color-surface-warm));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-5);
  text-align: center;
}
.sk-help-hero > svg {
  width: 3.5rem;
  height: 3.5rem;
  color: var(--sk-color-primary);
}
.sk-help-hero h1 {
  margin: 0;
  font-size: var(--sk-type-page-title);
}
.sk-help-hero .sk-search-box {
  width: min(38rem, 100%);
  min-width: 0;
  background: var(--sk-color-surface);
}
.sk-help-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-help-grid > button {
  min-width: 0;
  min-height: 7rem;
  padding: var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-4);
  text-align: left;
  cursor: pointer;
}
.sk-help-grid > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-help-grid > button.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-help-grid > button > svg:first-child {
  color: var(--sk-color-primary);
}
.sk-help-grid > button span {
  display: grid;
}
.sk-help-grid small {
  color: var(--sk-color-ink-soft);
}
.sk-help-library {
  margin-top: var(--sk-space-7);
  display: grid;
  gap: var(--sk-space-4);
}
.sk-help-articles {
  overflow: hidden;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}
.sk-help-articles > button {
  width: 100%;
  min-height: 5.25rem;
  padding: var(--sk-space-4);
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: transparent;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-4);
  text-align: left;
  cursor: pointer;
}
.sk-help-articles > button:last-child {
  border-bottom: 0;
}
.sk-help-articles > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-help-articles > button > span {
  display: grid;
  gap: 0.2rem;
}
.sk-help-articles small {
  color: var(--sk-color-ink-soft);
}
.sk-support-case-open {
  width: 100%;
  border: 0;
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-2);
  background: transparent;
  color: inherit;
  display: grid;
  gap: var(--sk-space-2);
  text-align: left;
  cursor: pointer;
}
.sk-support-case-open:hover { background: var(--sk-color-surface-hover); }
.sk-support-case-open:focus-visible { outline: 3px solid var(--sk-color-primary); outline-offset: 2px; }
.sk-support-case-open__label { display: inline-flex; align-items: center; gap: var(--sk-space-1); color: var(--sk-color-primary); font-weight: var(--sk-font-weight-strong); }
.sk-support-case-open__label svg { width: 1rem; height: 1rem; }
.sk-support-case-detail { display: grid; gap: var(--sk-space-6); }
.sk-support-case-detail > section { display: grid; gap: var(--sk-space-2); }
.sk-support-case-detail h3, .sk-support-case-detail p { margin: 0; }
.sk-support-case-badges { display: flex; flex-wrap: wrap; gap: var(--sk-space-2); }
.sk-support-case-copy { padding: var(--sk-space-4); border-radius: var(--sk-radius-md); background: var(--sk-color-surface-raised); white-space: pre-wrap; overflow-wrap: anywhere; }
.sk-support-case-events { margin: 0; padding: 0; list-style: none; display: grid; }
.sk-support-case-events li { min-height: 4.5rem; display: grid; grid-template-columns: 1rem minmax(0, 1fr); gap: var(--sk-space-3); }
.sk-support-case-events li > span { width: .7rem; height: .7rem; margin-top: .35rem; border-radius: 50%; background: var(--sk-color-primary); box-shadow: 0 0 0 4px var(--sk-color-primary-soft); }
.sk-support-case-events li > div { padding-bottom: var(--sk-space-4); border-bottom: 1px solid var(--sk-color-border-soft); display: grid; gap: var(--sk-space-1); }
.sk-support-case-events small, .sk-support-case-events p { color: var(--sk-color-ink-soft); }
.sk-support-case-actions { padding-top: var(--sk-space-4); border-top: 1px solid var(--sk-color-border); }
.sk-help-article {
  display: grid;
  gap: var(--sk-space-6);
}
.sk-help-article > nav {
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-raised);
  display: grid;
  gap: var(--sk-space-2);
}
.sk-help-article > nav a {
  color: var(--sk-color-primary);
}
.sk-help-article > section {
  scroll-margin-top: var(--sk-space-6);
}
.sk-help-article > section h2 {
  margin-bottom: var(--sk-space-2);
}
.sk-help-article > aside {
  padding-top: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border);
  display: grid;
  gap: var(--sk-space-2);
}
.sk-help-article > aside a {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: inherit;
  text-decoration: none;
}
.sk-support-card {
  margin-top: var(--sk-space-8);
  padding: var(--sk-card-inset);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-5);
}
.sk-support-card h2,
.sk-support-card p {
  margin: 0;
}
.sk-support-card p {
  color: var(--sk-color-ink-soft);
}

.sk-team-card h2, .sk-addon-card h2 { font-size: var(--sk-font-size-lg); }

.sk-campaign-attempt-fields { min-width: 0; margin: 0; padding: 0; border: 0; }

.sk-composer-block-tools { display: grid; gap: var(--sk-space-3); padding-block: var(--sk-space-4); min-width: 0; }
.sk-composer-block-tools .sk-inline-actions { flex-wrap: wrap; }

.sk-hidden-composer-blocks { display: grid; gap: var(--sk-space-2); min-width: 0; }
.sk-hidden-composer-blocks > div { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-3); }
.sk-hidden-composer-blocks span { min-width: 0; overflow-wrap: anywhere; }

/* Global drawers remain mounted over the active route and preserve origin. */
.sk-global-search,
.sk-insights-panel,
.sk-notifications,
.sk-wallet,
.sk-account-panel {
  min-height: 0;
  display: grid;
  align-content: start;
  gap: var(--sk-space-5);
}
.sk-search-filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
.sk-search-filters button {
  min-height: 2.4rem;
  padding: 0 var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-canvas);
  cursor: pointer;
}
.sk-search-filters button.is-active {
  background: var(--sk-color-ink);
  color: white;
}
.sk-global-results,
.sk-notification-list {
  display: grid;
  border-block: 1px solid var(--sk-color-border-soft);
}
.sk-global-results > button,
.sk-notification-list > button {
  width: 100%;
  min-height: 4.8rem;
  padding: var(--sk-space-3) 0;
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-global-results > button:hover,
.sk-notification-list > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-global-results > button.is-active {
  background: var(--sk-color-primary-soft);
  box-shadow: inset 0.2rem 0 0 var(--sk-color-primary);
}
.sk-global-results > button > span:nth-child(2),
.sk-notification-list > button > span:nth-child(2) {
  display: grid;
}
.sk-global-results small,
.sk-notification-list small,
.sk-notification-list time {
  color: var(--sk-color-ink-soft);
}
.sk-result-icon {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  display: grid;
  place-items: center;
}
.sk-result-icon.is-customer {
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-result-icon.is-appointment {
  background: #e2f6fc;
  color: #28738f;
}
.sk-result-icon.is-sale {
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
}
.sk-insight-hero {
  padding: var(--sk-space-5);
  border-radius: var(--sk-radius-lg);
  background: linear-gradient(135deg, var(--sk-color-primary-soft), var(--sk-color-signal-soft));
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-insight-hero > svg {
  width: 2.5rem;
  height: 2.5rem;
  color: var(--sk-color-primary);
}
.sk-insight-hero div {
  display: grid;
}
.sk-insight-hero p {
  margin: var(--sk-space-1) 0 0;
  color: var(--sk-color-ink-soft);
}
.sk-insight-row {
  width: 100%;
  min-height: 5.5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-insight-row:hover {
  background: var(--sk-color-surface-hover);
}
.sk-insight-row > span {
  display: grid;
}
.sk-insight-row > span:last-child {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  color: var(--sk-color-primary);
}
.sk-insight-row small {
  color: var(--sk-color-ink-soft);
}
.sk-notification-list > button.is-read {
  opacity: 0.62;
}
.sk-notification-list > button > span:first-child {
  width: 2.8rem;
  height: 2.8rem;
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-connect-onboarding {
  min-height: 34rem;
  display: grid;
  justify-items: center;
  align-content: center;
  gap: var(--sk-space-4);
  text-align: center;
}
.sk-connect-onboarding > p {
  max-width: 34rem;
  color: var(--sk-color-ink-soft);
}
.sk-connect-onboarding > span:not(.sk-connect-art) {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-connect-onboarding > span > svg {
  color: var(--sk-color-success);
}
.sk-connect-art {
  width: 7rem;
  height: 7rem;
  border-radius: 2rem;
  background: linear-gradient(
    145deg,
    var(--sk-color-signal),
    var(--sk-color-primary) 60%,
    var(--sk-color-primary-soft)
  );
  color: white;
  display: grid;
  place-items: center;
  box-shadow: 0 20px 40px color-mix(in srgb, var(--sk-color-primary) 20%, transparent);
}
.sk-connect-art svg {
  width: 3.4rem;
  height: 3.4rem;
}
.sk-connect-workspace {
  height: min(68vh, 46rem);
  margin: calc(-1 * var(--sk-space-6));
  display: grid;
  grid-template-columns: 19rem 1fr;
}
.sk-connect-workspace > aside {
  padding: var(--sk-space-4);
  border-right: 1px solid var(--sk-color-border);
  overflow-y: auto;
}
.sk-connect-sidebar-header {
  margin-bottom: var(--sk-space-3);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-2);
}
.sk-connect-sidebar-header .sk-pill-tabs {
  min-width: 0;
  margin: 0;
}
.sk-connect-filters {
  margin: var(--sk-space-3) 0;
  display: flex;
  gap: var(--sk-space-1);
}
.sk-connect-filters button {
  padding: 0.4rem 0.65rem;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--sk-color-ink-soft);
  cursor: pointer;
}
.sk-connect-filters button.is-active {
  background: var(--sk-color-surface-selected);
  color: var(--sk-color-ink);
}
.sk-connect-workspace > aside > button {
  width: 100%;
  min-height: 4.8rem;
  padding: var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-md);
  background: transparent;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-connect-workspace > aside > button.is-active {
  background: var(--sk-color-surface-selected);
}
.sk-connect-workspace > aside > button > span:nth-child(2) {
  min-width: 0;
  display: grid;
}
.sk-connect-workspace > aside small {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-connect-workspace > aside i {
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: var(--sk-color-primary);
  color: white;
  display: grid;
  place-items: center;
  font-size: var(--sk-font-size-xs);
  font-style: normal;
}
.sk-connect-workspace > main {
  min-width: 0;
  display: grid;
  grid-template-rows: auto 1fr auto;
}
.sk-connect-workspace > main > header {
  min-height: 5rem;
  padding: 0 var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.sk-connect-workspace > main > header > div {
  display: grid;
}
.sk-connect-workspace > main > header small {
  color: var(--sk-color-ink-soft);
}
.sk-message-thread {
  padding: var(--sk-space-5);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--sk-space-3);
  background: var(--sk-color-canvas);
}
.sk-message-thread time {
  align-self: center;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-message-thread article {
  max-width: 75%;
  padding: var(--sk-space-3) var(--sk-space-4);
  border-radius: 1rem 1rem 1rem 0.25rem;
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
  display: grid;
  gap: var(--sk-space-1);
}
.sk-message-thread article small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-message-thread article.is-outgoing {
  align-self: flex-end;
  border-radius: 1rem 1rem 0.25rem 1rem;
  background: var(--sk-color-primary);
  color: white;
}
.sk-message-thread article.is-outgoing small {
  color: rgb(255 255 255 / 70%);
}
.sk-connect-workspace > main > footer {
  padding: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border);
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--sk-space-3);
}
.sk-connect-workspace textarea {
  min-height: 3rem;
  max-height: 8rem;
  resize: vertical;
}
.sk-connect-composer {
  position: relative;
  grid-template-columns: auto minmax(0, 1fr) auto !important;
  align-items: end;
}
.sk-composer-tools {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--sk-space-1);
}
.sk-composer-tools label input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.sk-emoji-picker {
  position: absolute;
  z-index: 40;
  bottom: calc(100% + var(--sk-space-2));
  left: 0;
  padding: var(--sk-space-2);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
  display: flex;
}
.sk-emoji-picker button {
  width: 2.5rem;
  height: 2.5rem;
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  font-size: var(--sk-font-size-xl);
  cursor: pointer;
}
.sk-emoji-picker button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-composer-attachment {
  grid-column: 1 / -1;
  padding: var(--sk-space-2) var(--sk-space-3);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-canvas);
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-composer-attachment svg {
  width: 1rem;
}
.sk-composer-attachment button {
  margin-left: auto;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.sk-connect-new {
  position: absolute;
  z-index: 45;
  inset: 0 0 0 19rem;
  padding: var(--sk-space-5);
  background: var(--sk-color-surface);
  overflow-y: auto;
}
.sk-connect-new > header {
  margin-bottom: var(--sk-space-5);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.sk-connect-team {
  min-height: 34rem;
  display: grid;
  justify-items: center;
  align-content: center;
  gap: var(--sk-space-4);
  text-align: center;
}
.sk-connect-team > p {
  max-width: 36rem;
  color: var(--sk-color-ink-soft);
}
.sk-connect-team .sk-settings-sections {
  width: min(100%, 38rem);
  text-align: left;
}
.sk-wallet-balance {
  min-height: 11rem;
  padding: var(--sk-space-6);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-ink);
  color: white;
  display: grid;
  align-content: center;
}
.sk-wallet-balance strong {
  font-size: var(--sk-font-size-display);
}
.sk-wallet-balance small {
  color: rgb(255 255 255 / 68%);
}
.sk-wallet-rows,
.sk-account-rows {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  overflow: hidden;
}
.sk-wallet-rows > button,
.sk-account-rows > button {
  width: 100%;
  min-height: 5rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-wallet-rows > button:last-child,
.sk-account-rows > button:last-child {
  border-bottom: 0;
}
.sk-wallet-rows > button:hover,
.sk-account-rows > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-wallet-rows > button > span:first-child {
  width: 2.7rem;
  height: 2.7rem;
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-wallet-rows > button > span:nth-child(2),
.sk-account-rows > button > span {
  display: grid;
}
.sk-wallet-rows small,
.sk-account-rows small {
  color: var(--sk-color-ink-soft);
}
.sk-account-hero {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-account-hero > div {
  min-width: 0;
  display: grid;
}
.sk-account-hero > div strong,
.sk-account-hero > div small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-account-hero small {
  color: var(--sk-color-ink-soft);
}
.sk-account-rows > button > svg {
  color: var(--sk-color-primary);
}
.sk-account-scopes {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
.sk-account-scopes strong {
  width: 100%;
}
.sk-account-scopes code {
  padding: 0.35rem 0.6rem;
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-canvas);
  font-size: var(--sk-font-size-xs);
}
.sk-wallet-detail,
.sk-account-detail {
  display: grid;
  align-content: start;
  gap: var(--sk-space-5);
}
.sk-wallet-detail > span {
  width: 4rem;
  height: 4rem;
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-wallet-detail h2,
.sk-wallet-detail p,
.sk-account-detail h2 {
  margin: 0;
}
.sk-wallet-detail p {
  color: var(--sk-color-ink-soft);
}
.sk-flip-x {
  transform: rotate(180deg);
}

/* Inventory workflows share one durable count/order/detail language. */
.sk-tabs--scroll {
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
}
.sk-choice-emoji {
  font-size: var(--sk-font-size-2xl);
  line-height: 1;
}
.sk-stocktake-toolbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.75fr);
  gap: var(--sk-space-3);
}
.sk-quick-scan {
  min-height: 3rem;
  padding: 0 var(--sk-space-2) 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-quick-scan:focus-within {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 3px var(--sk-color-primary-soft);
}
.sk-quick-scan > svg {
  color: var(--sk-color-ink-soft);
}
.sk-quick-scan input {
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
}
.sk-count-list {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  overflow: hidden;
}
.sk-count-list > label {
  min-height: 4.75rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) 6rem;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-count-list > label:last-child {
  border-bottom: 0;
}
.sk-count-list > label > span:nth-child(2) {
  min-width: 0;
  display: grid;
}
.sk-count-list > label small {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-count-list input,
.sk-list-row > input[type="number"] {
  width: 100%;
  min-height: 2.75rem;
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-sm);
  text-align: right;
}
.sk-inventory-review {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  overflow: hidden;
}
.sk-inventory-review .sk-list-row {
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-inventory-review .sk-list-row:last-child {
  border-bottom: 0;
}
.sk-shift-break {
  display: grid;
  grid-template-columns: minmax(7rem, 1fr) minmax(7rem, 1fr) auto auto;
  align-items: end;
  gap: var(--sk-space-3);
}
.sk-timesheet-entry {
  display: grid;
  grid-template-columns: minmax(8rem, 1.25fr) repeat(3, minmax(6rem, 1fr)) auto;
  align-items: end;
  gap: var(--sk-space-3);
}
.sk-section-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-section-heading h3,
.sk-section-heading p {
  margin: 0;
}
.sk-section-heading p {
  color: var(--sk-color-ink-soft);
}
.sk-settings-collection {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  overflow: hidden;
}
.sk-settings-collection > button,
.sk-form-template-row {
  width: 100%;
  min-height: 4.75rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
}
.sk-settings-collection > button {
  cursor: pointer;
}
.sk-settings-collection > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-settings-collection > :last-child {
  border-bottom: 0;
}
.sk-settings-collection > button > span,
.sk-form-template-row > span {
  min-width: 0;
  display: grid;
}
.sk-settings-collection small,
.sk-form-template-row small {
  color: var(--sk-color-ink-soft);
}
.sk-hours-editor {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  align-items: end;
  gap: var(--sk-space-3);
}
.sk-permission-matrix {
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  overflow-x: auto;
}
.sk-permission-matrix > div {
  min-width: 34rem;
  min-height: 3.75rem;
  padding: var(--sk-space-2) var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: grid;
  grid-template-columns: minmax(10rem, 1fr) repeat(4, 4.5rem);
  align-items: center;
  text-align: center;
}
.sk-permission-matrix > div:first-child {
  background: var(--sk-color-canvas);
  font-size: var(--sk-font-size-sm);
}
.sk-permission-matrix > div:last-child {
  border-bottom: 0;
}
.sk-permission-matrix > div > strong:first-child {
  text-align: left;
}
.sk-permission-matrix input {
  justify-self: center;
}
.sk-form-template {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-form-template-row label {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-audit-timeline article {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--sk-space-3);
}
.sk-audit-timeline article > span {
  width: 0.75rem;
  height: 0.75rem;
  margin-top: 0.4rem;
  border-radius: 50%;
  background: var(--sk-color-border);
}
.sk-audit-timeline article > div {
  display: grid;
}
.sk-audit-timeline small {
  color: var(--sk-color-ink-soft);
}
.sk-status-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
.sk-date-popover {
  width: min(42rem, calc(100vw - 2 * var(--sk-space-4)));
  padding: var(--sk-space-4);
}
.sk-date-popover > header,
.sk-date-popover > footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-date-popover > div {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-5);
}
.sk-date-popover > footer {
  margin-top: var(--sk-space-3);
  justify-content: flex-end;
}
.sk-mini-month h3 {
  margin: var(--sk-space-3) 0;
  text-align: center;
  text-transform: capitalize;
}
.sk-mini-month__weekdays,
.sk-mini-month__days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 0.2rem;
}
.sk-mini-month__weekdays span {
  padding: 0.35rem;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  text-align: center;
}
.sk-mini-month__days > button,
.sk-mini-month__days > span {
  min-width: 2rem;
  aspect-ratio: 1;
  border: 0;
  border-radius: 50%;
  background: transparent;
  display: grid;
  place-items: center;
}
.sk-mini-month__days > button {
  cursor: pointer;
}
.sk-mini-month__days > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-mini-month__days > button.is-today {
  box-shadow: inset 0 0 0 1px var(--sk-color-primary);
}
.sk-mini-month__days > button.is-selected {
  background: var(--sk-color-primary);
  color: white;
}
.sk-scope-choice {
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  gap: var(--sk-space-3);
}
.sk-scope-choice legend {
  padding: 0 var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}
.sk-scope-choice label {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-readiness-banner.is-danger {
  border-color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
}
.sk-dashboard-toolbar {
  margin-bottom: var(--sk-space-5);
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--sk-space-3);
}
.sk-dashboard-quick-start { margin-bottom: var(--sk-space-5); padding: var(--sk-space-5); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); display: grid; gap: var(--sk-space-4); }
.sk-dashboard-quick-start > header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sk-space-4); }
.sk-dashboard-quick-start h2, .sk-dashboard-quick-start p { margin: 0; }
.sk-dashboard-quick-start p { margin-top: .2rem; color: var(--sk-color-ink-soft); }
.sk-dashboard-quick-start > header > span { padding: .35rem var(--sk-space-3); border-radius: var(--sk-radius-pill); background: var(--sk-color-primary-soft); color: var(--sk-color-primary); font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); }
.sk-dashboard-quick-start > div { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--sk-space-3); }
.sk-dashboard-quick-start button { min-height: 5.5rem; padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); color: var(--sk-color-ink); display: grid; justify-items: center; align-content: center; gap: var(--sk-space-2); font: inherit; font-weight: var(--sk-font-weight-strong); cursor: pointer; }
.sk-dashboard-quick-start button:hover { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }
.sk-dashboard-quick-start button svg { color: var(--sk-color-primary); }
.sk-dashboard-toolbar .sk-pill-tabs {
  flex-wrap: wrap;
  min-width: 0;
  margin-right: auto;
}
.sk-dashboard-toolbar .sk-field {
  width: 13rem;
}
.sk-dashboard-tour {
  margin-bottom: var(--sk-space-5);
  padding: var(--sk-space-4) var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: linear-gradient(120deg, var(--sk-color-primary-soft), var(--sk-color-surface));
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-dashboard-tour > svg {
  color: var(--sk-color-primary);
}
.sk-dashboard-tour p {
  margin: 0.2rem 0 0;
  color: var(--sk-color-ink-soft);
}
.sk-location-status {
  min-height: var(--sk-control-height);
  padding: 0.35rem var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-pill);
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-location-status > svg {
  width: 1rem;
  height: 1rem;
}
.sk-location-status > span {
  display: grid;
  line-height: 1.1;
}
.sk-location-status small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-location-status.is-open {
  border-color: var(--sk-color-success);
  color: var(--sk-color-success);
  background: var(--sk-color-success-soft);
}
.sk-location-status.is-closed {
  color: var(--sk-color-ink-soft);
}
.sk-dashboard-readiness {
  grid-column: 1 / -1;
  padding-bottom: 1.4rem;
  height: auto;
  min-height: 0;
}
.sk-dashboard-operations {
  grid-column: 1 / -1;
  min-height: auto;
}
.sk-dashboard-operations .sk-dashboard-card__body {
  height: auto;
}
.sk-dashboard-operations .sk-dashboard-shortcuts {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.sk-dashboard-readiness > .sk-readiness-progress,
.sk-dashboard-readiness > .sk-readiness-banner,
.sk-dashboard-readiness > .sk-readiness-task-list,
.sk-dashboard-readiness > .sk-button {
  margin-inline: 1.4rem;
}
.sk-dashboard-readiness > .sk-readiness-progress,
.sk-dashboard-readiness > .sk-readiness-banner,
.sk-dashboard-readiness > .sk-readiness-task-list {
  margin-bottom: var(--sk-space-5);
}
.sk-readiness-progress {
  height: 0.5rem;
  border-radius: 999px;
  background: var(--sk-color-canvas);
  overflow: hidden;
}
.sk-readiness-progress i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--sk-color-primary);
  transition: width var(--sk-motion-slow) var(--sk-ease-emphasized);
}
.sk-readiness-task-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-readiness-task-list > button {
  min-height: 5rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-readiness-task-list > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-readiness-task-list > button > span {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-readiness-task-list small {
  color: var(--sk-color-ink-soft);
}

/* Full-screen partner onboarding maps five UX stages to the canonical backend readiness steps. */
.sk-onboarding {
  position: fixed;
  z-index: calc(var(--sk-z-overlay) + 2);
  inset: 0;
  background: var(--sk-color-surface);
  display: grid;
  grid-template: var(--sk-topbar-height) minmax(0, 1fr) 5rem / 19rem minmax(0, 1fr);
  animation: sk-fade-in var(--sk-motion-base) var(--sk-ease-standard);
}
.sk-onboarding > header {
  grid-column: 1 / -1;
  padding: 0 var(--sk-space-5);
  border-bottom: 1px solid var(--sk-color-border);
  display: grid;
  grid-template-columns: 1fr minmax(15rem, 25rem) 1fr;
  align-items: center;
  gap: var(--sk-space-6);
}
.sk-onboarding > header .sk-wordmark {
  min-height: max(2.75rem, var(--sk-control-height));
}
.sk-onboarding > header .sk-icon-button {
  justify-self: end;
}
.sk-onboarding-progress {
  display: grid;
  grid-template-columns: auto minmax(8rem, 1fr);
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-onboarding-progress > span {
  display: grid;
  text-align: right;
}
.sk-onboarding-progress small {
  color: var(--sk-color-ink-soft);
}
.sk-onboarding-progress > div {
  height: 0.45rem;
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-canvas);
  overflow: hidden;
}
.sk-onboarding-progress i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--sk-color-primary);
  transition: width var(--sk-motion-slow) var(--sk-ease-emphasized);
}
.sk-onboarding > aside {
  grid-row: 2;
  padding: var(--sk-space-7) var(--sk-space-4);
  border-right: 1px solid var(--sk-color-border);
  overflow-y: auto;
  background: var(--sk-color-canvas);
  display: flex;
  flex-direction: column;
}
.sk-onboarding > aside > p {
  margin: 0 var(--sk-space-3) var(--sk-space-5);
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-strong);
}
.sk-onboarding > aside nav {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-onboarding > aside nav button {
  width: 100%;
  min-height: 4.6rem;
  padding: var(--sk-space-2) var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-md);
  background: transparent;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-onboarding > aside nav button:hover,
.sk-onboarding > aside nav button.is-active {
  background: var(--sk-color-surface-selected);
}
.sk-onboarding > aside nav button > span:first-child {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--sk-color-canvas);
  display: grid;
  place-items: center;
}
.sk-onboarding > aside nav button.is-active > span:first-child {
  background: var(--sk-color-primary);
  color: white;
}
.sk-onboarding > aside nav button > span:nth-child(2) {
  display: grid;
}
.sk-onboarding > aside nav button small {
  color: var(--sk-color-ink-soft);
}
.sk-onboarding > aside nav i {
  font-style: normal;
  font-weight: var(--sk-font-weight-strong);
}
.sk-onboarding-help {
  margin-top: auto;
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  display: grid;
  gap: var(--sk-space-2);
}
.sk-onboarding-help > svg {
  color: var(--sk-color-primary);
}
.sk-onboarding-help p {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-onboarding > main {
  grid-row: 2;
  overflow-y: auto;
}
.sk-onboarding-loading {
  min-height: 100%;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: var(--sk-space-3);
}
.sk-onboarding-content {
  width: min(100%, 59rem);
  margin: 0 auto;
  padding: clamp(2rem, 5vw, 5rem);
  display: grid;
  gap: var(--sk-space-8);
}
.sk-onboarding-heading {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: var(--sk-space-5);
}
.sk-onboarding-heading > span {
  width: 4rem;
  height: 4rem;
  border-radius: 1.1rem;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-onboarding-heading > span svg {
  width: 2rem;
  height: 2rem;
}
.sk-onboarding-heading small {
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-onboarding-heading h1 {
  margin: var(--sk-space-1) 0 var(--sk-space-2);
  font-size: var(--sk-type-page-title);
}
.sk-onboarding-heading p {
  max-width: 42rem;
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-lg);
}
.sk-onboarding-form {
  display: grid;
  gap: var(--sk-space-5);
}
.sk-onboarding-choices {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-onboarding-choices button {
  min-height: 4.5rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
}
.sk-onboarding-choices button.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-map-placeholder {
  min-height: 10rem;
  padding: var(--sk-space-6);
  border: 1px dashed var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: radial-gradient(circle at 30% 30%, #eef6f1, #f5f5f7);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-4);
}
.sk-map-placeholder > svg {
  color: var(--sk-color-primary);
}
.sk-map-placeholder > span {
  display: grid;
}
.sk-map-placeholder small {
  color: var(--sk-color-ink-soft);
}
.sk-location-map {
  width: 100%;
  min-height: 18rem;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface-subtle);
}

.sk-policy-result {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface-hover);
}
.sk-policy-result > svg {
  flex: 0 0 auto;
  color: var(--sk-color-primary);
}
.sk-policy-result > span {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-policy-result small {
  color: var(--sk-color-ink-soft);
}
.sk-field > span:has(svg) {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}

.sk-catalogue-variant {
  display: grid;
  grid-template-columns: minmax(10rem, 1.4fr) repeat(2, minmax(7rem, 0.8fr)) auto;
  gap: var(--sk-space-3);
  align-items: end;
  padding: var(--sk-space-3) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-assignment-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-assignment-grid button {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  min-height: 4.5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  text-align: left;
  cursor: pointer;
}
.sk-assignment-grid button:hover {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-assignment-grid button > span {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-assignment-grid small {
  color: var(--sk-color-ink-soft);
}
.sk-import-dropzone:has(input[type="file"]) input {
  max-width: 100%;
}

.sk-customer-address {
  display: grid;
  grid-template-columns: 0.75fr 1.5fr 0.65fr 1fr 1fr auto auto;
  gap: var(--sk-space-3);
  align-items: end;
  padding: var(--sk-space-4) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-customer-contact {
  display: grid;
  grid-template-columns: 1fr 0.8fr 1.2fr 1fr auto;
  gap: var(--sk-space-3);
  align-items: end;
  padding: var(--sk-space-4) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-phone-field {
  display: grid;
  grid-template-columns: 0.7fr 1.3fr;
  gap: var(--sk-space-2);
}
.sk-onboarding-modules {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-onboarding-modules article {
  min-height: 7rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-onboarding-modules article > span {
  width: 3rem;
  height: 3rem;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-canvas);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-onboarding-modules p {
  margin: var(--sk-space-1) 0 0;
  color: var(--sk-color-ink-soft);
}
.sk-onboarding-needs {
  display: grid;
  gap: var(--sk-space-6);
}
.sk-onboarding-need-list {
  margin-top: var(--sk-space-5);
  display: grid;
  border-top: 1px solid var(--sk-color-border);
}
.sk-onboarding-need-list button {
  min-height: 4.75rem;
  padding: var(--sk-space-3) 0;
  border: 0;
  border-bottom: 1px solid var(--sk-color-border);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-onboarding-need-list button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-onboarding-need-list button.is-selected > svg,
.sk-onboarding-need-list button.is-selected > span:first-child {
  color: var(--sk-color-primary);
}
.sk-onboarding-need-list button > span:first-child {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.65rem;
  background: var(--sk-color-canvas);
  display: grid;
  place-items: center;
}
.sk-onboarding-need-list button > span:nth-child(2) {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-onboarding-need-list button small,
.sk-onboarding-start p,
.sk-onboarding-start button small {
  color: var(--sk-color-ink-soft);
}
.sk-onboarding-start {
  padding-top: var(--sk-space-2);
  display: grid;
  gap: var(--sk-space-4);
}
.sk-onboarding-start h2,
.sk-onboarding-start p {
  margin: 0;
}
.sk-onboarding-start > div:last-child {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-onboarding-start button {
  min-height: 6rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  gap: var(--sk-space-2);
  text-align: left;
  cursor: pointer;
}
.sk-onboarding-start button:hover,
.sk-onboarding-start button.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-import-note {
  margin-top: var(--sk-space-5);
  padding: var(--sk-space-5);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-canvas);
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--sk-space-4);
}
.sk-import-note > svg {
  color: var(--sk-color-primary);
}
.sk-import-note p {
  margin: var(--sk-space-1) 0 0;
  color: var(--sk-color-ink-soft);
}
.sk-launch-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sk-space-3);
}
.sk-launch-summary > div {
  min-height: 7rem;
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-canvas);
  display: grid;
  align-content: center;
}
.sk-launch-summary span {
  color: var(--sk-color-ink-soft);
}
.sk-launch-summary strong {
  font-size: var(--sk-font-size-xl);
  text-transform: capitalize;
}
.sk-readiness-checklist {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-readiness-checklist article {
  min-height: 4.5rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-readiness-checklist article.is-complete > span {
  background: var(--sk-color-success);
  color: white;
}
.sk-readiness-checklist article.is-blocked > span {
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}
.sk-readiness-checklist article > span {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--sk-color-canvas);
  display: grid;
  place-items: center;
}
.sk-readiness-checklist article > div {
  display: grid;
}
.sk-readiness-checklist article small {
  color: var(--sk-color-ink-soft);
}
.sk-readiness-checklist select {
  min-height: 2.6rem;
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
}
.sk-onboarding > footer {
  grid-column: 1 / -1;
  padding: 0 var(--sk-space-5);
  border-top: 1px solid var(--sk-color-border);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--sk-space-5);
  background: var(--sk-color-surface);
}
.sk-onboarding > footer > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-onboarding > footer > .sk-button:last-child {
  justify-self: end;
}
.sk-form-delivery-list {
  grid-column: 1 / -1;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-form-submission {
  grid-column: 1 / -1;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}
.sk-form-submission summary {
  cursor: pointer;
  font-weight: var(--sk-font-weight-strong);
}
.sk-form-submission[open] summary {
  margin-bottom: var(--sk-space-4);
}
.sk-public-form-shell {
  min-height: 100vh;
  padding: clamp(1rem, 4vw, 4rem);
  background:
    radial-gradient(circle at 10% 0%, var(--sk-color-primary-soft), transparent 36rem), var(--sk-color-canvas);
  display: grid;
  place-items: start center;
}
.sk-public-form-card {
  width: min(42rem, 100%);
  margin-top: clamp(1rem, 6vh, 5rem);
  padding: clamp(1.25rem, 4vw, 2.5rem);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-card-radius);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}
.sk-public-form-card > header {
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
  padding-bottom: var(--sk-space-5);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-public-form-card > header > span {
  width: 3rem;
  height: 3rem;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-public-form-card h1,
.sk-public-form-card h2,
.sk-public-form-card p {
  margin: 0;
}
.sk-public-form-card header small,
.sk-public-form-card form > p,
.sk-public-form-field > small,
.sk-public-form-security small,
.sk-public-form-success small {
  color: var(--sk-color-ink-soft);
}
.sk-public-form-card form {
  display: grid;
  gap: var(--sk-space-5);
  padding-top: var(--sk-space-5);
}
.sk-public-form-field {
  display: grid;
  gap: var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}
.sk-public-form-field b {
  color: var(--sk-color-danger);
}
.sk-public-form-field input,
.sk-public-form-field textarea,
.sk-public-form-field select {
  width: 100%;
  min-height: 3rem;
  padding: 0.75rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-body);
}
.sk-public-form-field textarea {
  resize: vertical;
}
.sk-public-form-field input:focus,
.sk-public-form-field textarea:focus,
.sk-public-form-field select:focus {
  outline: 3px solid var(--sk-color-primary-soft);
  border-color: var(--sk-color-primary);
}
.sk-public-form-check {
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-3);
  font-weight: var(--sk-font-weight-strong);
}
.sk-public-form-check input {
  width: 1.25rem;
  height: 1.25rem;
  flex: 0 0 auto;
}
.sk-public-form-submit {
  min-height: 3.25rem;
  border: 0;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary);
  color: white;
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-public-form-submit:disabled {
  border: 1px solid var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: wait;
}
.sk-public-form-security {
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  display: flex;
  gap: var(--sk-space-3);
  color: var(--sk-color-primary);
}
.sk-public-form-security span {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-public-form-success,
.sk-public-form-error {
  margin-top: var(--sk-space-6);
  padding: var(--sk-space-6);
  border-radius: var(--sk-radius-lg);
  text-align: center;
  display: grid;
  justify-items: center;
  gap: var(--sk-space-3);
}
.sk-public-form-success {
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
}
.sk-public-form-success svg {
  width: 3rem;
  height: 3rem;
}
.sk-public-form-error {
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}
.sk-public-form-loading {
  padding: var(--sk-space-7) 0;
  display: grid;
  gap: var(--sk-space-3);
}
.sk-public-form-loading i {
  height: 3.25rem;
  border-radius: var(--sk-radius-md);
  background: linear-gradient(
    90deg,
    var(--sk-color-border-soft) 25%,
    var(--sk-color-canvas) 50%,
    var(--sk-color-border-soft) 75%
  );
  background-size: 200% 100%;
  animation: sk-shimmer 1.35s linear infinite;
}

/* Leverandørkickback. Nøkkeltallene står øverst fordi spørsmålet siden svarer
   på er «hvor mye har vi til gode?» — tabellen er begrunnelsen, ikke svaret. */
.sk-kickback-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: 1rem;
}
.sk-kickback-summary > .sk-card > b {
  display: block;
  margin: 0.35rem 0 0.2rem;
  font-size: var(--sk-font-size-2xl);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.sk-kickback-warnings {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0.75rem 0 0;
  padding: 0;
  list-style: none;
}
.sk-kickback-warnings li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.9rem;
  padding: 0.55rem 0;
  border-top: 1px solid var(--sk-color-border);
}
.sk-kickback-warnings li strong {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
}

/* Kickback-skjemaene. Trinnene er en liste med to tall per rad, ikke et
   skjemafelt — de leses ovenfra og ned som en trapp. */
.sk-form-grid .sk-field--wide {
  grid-column: 1 / -1;
}
.sk-kickback-tiers {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  margin: 0;
  padding: 0.9rem 1rem;
  border: 1px solid var(--sk-color-border);
  border-radius: 0.75rem;
}
.sk-kickback-tiers legend {
  padding: 0 0.4rem;
  font-weight: var(--sk-font-weight-strong);
}
.sk-kickback-tier-row {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  align-items: end;
  gap: 0.6rem;
}
.sk-kickback-tier-row input {
  font-variant-numeric: tabular-nums;
}

.sk-tenant-data-export {
  margin-block: var(--sk-space-6);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  width: 100%;
  max-width: 48rem;
  box-sizing: border-box;
  min-width: 0;
  overflow-wrap: anywhere;
}
.sk-tenant-data-export dd { margin-inline-start: 0; font-family:var(--sk-font-code-plain); }
.sk-tenant-data-export button { white-space: normal; max-width: 100%; }
.sk-tenant-data-export summary { cursor: pointer; min-height: 44px; display: list-item; padding-block: .5rem; }
.sk-tenant-data-export :focus-visible { outline: 3px solid var(--sk-color-focus-ring); outline-offset: 3px; }

.sk-tenant-full-export, .sk-tenant-full-export * { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.sk-tenant-full-export { width: 100%; }
.sk-tenant-full-export .sk-button { white-space: normal; min-height: 44px; }
.sk-tenant-full-export input[type="file"] { width: 100%; min-height: 44px; }


/* Opt-in touch controls for the new fee and accountant flows. Preserve the
   existing staff palette and density elsewhere; these actions need 44px. */
.sk-touch-controls :is(.sk-button, .sk-icon-button, .sk-checkbox-row, input:not([type="checkbox"]):not([type="radio"]), select, textarea, summary),
:root[data-staff-interface] .sk-app-shell .sk-page .sk-touch-controls :is(.sk-button, .sk-icon-button, .sk-checkbox-row, input:not([type="checkbox"]):not([type="radio"]), select, textarea, summary) {
  min-height: 2.75rem;
}

/* Checkbox rows already own their label target; icon actions need a square target. */
.sk-touch-controls .sk-icon-button { min-width: 2.75rem; }

/* Shared surfaces and list rhythm for the retained Port features. */
.sk-calm-note {padding:var(--sk-space-3);background:var(--sk-color-surface-warm);color:var(--sk-color-ink);border-radius:var(--sk-radius-md);}
.sk-plain-list {list-style:none;padding:0;margin:0;display:grid;gap:var(--sk-space-4);}
.sk-report-metrics {display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:var(--sk-space-4);}
.sk-surface {min-width:0;padding:var(--sk-space-4);background:var(--sk-color-surface);color:var(--sk-color-ink);border:1px solid var(--sk-color-border);border-radius:var(--sk-radius-md);}
.sk-terminal-price-level-notice {display:grid;gap:var(--sk-space-3);overflow-wrap:anywhere;}
.sk-terminal-button {min-height:44px;padding:var(--sk-space-2) var(--sk-space-4);font:inherit;color:var(--sk-color-ink);background:var(--sk-color-surface);border:1px solid var(--sk-color-border-interactive);border-radius:var(--sk-radius-md);cursor:pointer;}
.sk-terminal-button:focus-visible {outline:2px solid var(--sk-color-primary);outline-offset:2px;}

@media (max-width: 78rem) {
  .sk-setup-button { min-width: 0; }
  .sk-tenant-context { display: none; }
  .sk-workspace-context { padding-left: var(--sk-space-3); }
  .sk-tenant-switcher__label small { display: none; }
  .sk-tenant-switcher__label strong { max-width: 8rem; }
}
@media (max-width: 62rem) {
  :root { --sk-rail-width: 6.35rem; }
  .sk-wordmark__name { display: none; }
  .sk-profile-name { display: none; }
  .sk-topbar-actions .sk-topbar-secondary-action { display: none; }
  .sk-primary-rail button { width: calc(100% - .65rem); }
  /* Below this width the sidebar does not fit, but hiding it stranded every
     module's sub-pages: from /sales/daily-sales there was no route to Avtaler,
     Betalinger, Gavekort and the rest. It becomes a horizontally scrollable
     strip under the top bar instead, so all sub-pages stay reachable. */
  .sk-secondary-nav, .sk-secondary-nav.is-collapsed {
    top: var(--sk-topbar-height); left: var(--sk-rail-width); right: 0; bottom: auto;
    width: auto; height: 3.5rem;
    border-right: 0; border-bottom: 1px solid var(--sk-color-border);
    overflow-x: auto; overflow-y: hidden;
    display: flex; align-items: center;
  }
  .sk-secondary-nav__title {
    display: none;
  }
  .sk-secondary-nav__title > span { display: none; }
  .sk-secondary-nav nav, .sk-secondary-nav.is-collapsed nav { display: flex; flex: 0 0 auto; align-items: center; height: 100%; gap: var(--sk-space-1); padding: var(--sk-space-1) var(--sk-space-3); }
  .sk-secondary-nav__group { display: flex; flex: 0 0 auto; align-items: center; gap: var(--sk-space-1); }
  .sk-secondary-nav__group + .sk-secondary-nav__group { margin-top: 0; }
  .sk-secondary-nav__group-title { display: none; }
  .sk-secondary-nav button { white-space: nowrap; }
  .sk-main.has-secondary-nav,
  .sk-main.has-secondary-nav.has-collapsed-secondary {
    padding-left: var(--sk-rail-width);
    padding-top: calc(var(--sk-topbar-height) + 3.5rem);
  }
  .sk-main.has-secondary-nav { padding-left: var(--sk-rail-width); }
  .sk-card-grid, .sk-dashboard-grid { grid-template-columns: 1fr; }
  .sk-status-group-grid { grid-template-columns: 1fr; }
  .sk-dashboard-card { min-height: 28rem; }
  .sk-table-card { min-height: 0; }
  .sk-dashboard-readiness { min-height: 0; height: auto; }
  .sk-dashboard-operations { min-height: auto; }
  .sk-dashboard-operations .sk-dashboard-shortcuts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-dashboard-operations .sk-dashboard-shortcuts > button:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .sk-setup-button { display: none; }
}
/* The calendar toolbar is wider than an iPad in landscape. Nothing in its
   ancestor chain scrolls, so it widened the document and dragged the fixed
   top bar with it. This rule existed at 62rem; 64rem covers 1024px too. */
@media (max-width: 64rem) {
  .sk-calendar-toolbar { overflow-x: auto; justify-content: flex-start; }
  .sk-calendar-toolbar__group:last-child { margin-left: auto; }
}
@media (max-width: 44rem) {
  /* Long action labels remain readable with enlarged text on narrow screens. */
  .sk-button { max-inline-size: 100%; white-space: normal; text-wrap: balance; padding-block: var(--sk-space-2); }
  .sk-button > svg { flex-shrink: 0; }
  :root { --sk-topbar-height: 4.25rem; --sk-rail-width: 0rem; }
  /* Keep feedback away from the bottom selection actions on phones. A
     bounded scroll region also keeps several persistent errors reachable. */
  body:has(.sk-selection-bar) .sk-toast-region {
    top: calc(var(--sk-topbar-height) + var(--sk-space-3));
    bottom: auto;
    max-height: calc(100dvh - var(--sk-topbar-height) - 6.5rem);
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .sk-global-topbar { gap: var(--sk-space-2); padding: 0 var(--sk-space-3); }
  .sk-topbar-context { gap: var(--sk-space-2); }
  .sk-wordmark__name, .sk-location-context span { display: none; }
  .sk-brand-logo { width: 2.15rem; height: 2.15rem; }
  .sk-workspace-context, .sk-topbar-context > .sk-tenant-switcher { padding-left: var(--sk-space-2); }
  .sk-tenant-switcher__trigger { min-height: 2.75rem; padding-inline: .3rem; }
  .sk-tenant-switcher__label { display: none; }
  .sk-tenant-switcher__menu { position: fixed; top: calc(var(--sk-topbar-height) - 1px); right: var(--sk-space-3); left: var(--sk-space-3); width: auto; max-height: calc(100vh - var(--sk-topbar-height) - 1rem); }
  .sk-location-switcher > svg { display: none; }
  .sk-location-switcher select { min-width: 5.5rem; max-width: 6.25rem; padding-left: var(--sk-space-2); }
  .sk-profile-button { width: 2.65rem; height: 2.65rem; }
  .sk-topbar-actions { gap: 0; }
  .sk-topbar-actions .sk-topbar-secondary-action, .sk-topbar-report-action { display: none; }
  .sk-primary-rail { inset: auto 0 0; width: 100%; height: calc(5.25rem + env(safe-area-inset-bottom)); flex-direction: row; overflow: hidden; padding: .3rem .4rem calc(.3rem + env(safe-area-inset-bottom)); }
  .sk-primary-rail__main { width: 100%; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: .1rem; }
  .sk-primary-rail button { width: 100%; min-width: 0; min-height: 4.55rem; }
  .sk-primary-rail .is-mobile-overflow, .sk-primary-rail > .sk-primary-help { display: none; }
  .sk-primary-rail .sk-mobile-more { display: grid !important; }
  /* The current module lives in «Mer» when it has no tab of its own here. */
  .sk-primary-rail .sk-mobile-more.is-mobile-active { background: var(--sk-color-primary); }
  .sk-primary-rail .sk-mobile-more.is-mobile-active .sk-primary-rail__label { color: white; }
  .sk-secondary-nav, .sk-secondary-nav.is-collapsed { height: auto; }
  .sk-secondary-nav nav, .sk-secondary-nav.is-collapsed nav { display: none; }
  .sk-secondary-nav__title { display: none; }
  .sk-mobile-secondary-nav, .sk-secondary-nav.is-collapsed .sk-mobile-secondary-nav { width: 100%; padding: var(--sk-space-2) var(--sk-space-3); display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: var(--sk-space-3); }
  .sk-mobile-secondary-nav label { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sk-space-2); min-width: 0; }
  /* Visually hidden, still the label's text: the select keeps its name. */
  .sk-mobile-secondary-nav label > span { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
  .sk-mobile-secondary-nav select { width: 100%; min-height: 2.75rem; }
  .sk-main, .sk-main.has-secondary-nav { padding-left: 0; padding-bottom: calc(5.25rem + env(safe-area-inset-bottom)); }
  /* Strip = 2 × space-2 padding + 2.75rem control row + 1px bottom border;
     collapsed shows the same strip, so both get the same offset. */
  .sk-main.has-secondary-nav,
  .sk-main.has-secondary-nav.has-collapsed-secondary {
    padding-top: calc(var(--sk-topbar-height) + 2 * var(--sk-space-2) + var(--sk-control-height) + 1px);
  }
  .sk-page { padding: 1.3rem var(--sk-space-3) 3rem; }
  .sk-card--inset { padding: var(--sk-card-inset); }
  .sk-card-header { flex-wrap: wrap; }
  .sk-card-header > div:first-child:not(.sk-inline-actions) { flex: 1 0 100%; min-width: 0; }
  .sk-card-header > .sk-inline-actions { flex-basis: 100%; }
  .sk-detail-list > div { min-height: auto; grid-template-columns: 1fr; align-items: start; gap: var(--sk-space-1); }
  /* Full-bleed heroes cancel the page padding with a negative margin. The
     desktop values overshoot once .sk-page drops to --sk-space-3, which widens
     the document and drags the fixed topbar and rail past the viewport. */
  .sk-help-hero { margin-inline: 0; }
  .sk-promo-hero { margin-inline: calc(-1 * var(--sk-space-3)); }
  .sk-card-grid, .sk-dashboard-grid { gap: var(--sk-space-3); }
  .sk-dashboard-card { min-height: 26rem; }
  .sk-table-card { min-height: 0; }
  .sk-dashboard-operations { min-height: auto; }
  .sk-dashboard-operations .sk-dashboard-shortcuts { grid-template-columns: 1fr; }
  .sk-dashboard-operations .sk-dashboard-shortcuts > button:last-child:nth-child(odd) { grid-column: auto; }
  .sk-drawer { width: 100vw; }
  .sk-drawer--client { width: 100vw; }
  .sk-auth-card { padding: var(--sk-card-inset); }
  .sk-calendar-toolbar__group:first-child .sk-toolbar-select { display: none; }
  .sk-form-row, .sk-form-grid { grid-template-columns: 1fr; }
  .sk-page-header { display: grid; }
  .sk-page-actions, .sk-page-toolbar { flex-wrap: wrap; }
  .sk-search-box--inline { width: 100%; }
  .sk-rule-row { grid-template-columns: 1fr; }
  .sk-primary-actions { flex-wrap: wrap; }
  /* The co-pilot launcher floats fixed at bottom: 6.5rem, ~3.35rem tall — a
     scrollable grid without this clearance lets the button end up sitting
     directly over the last row's tap targets instead of below the content. */
  .sk-schedule-board { margin-bottom: 10rem; }
}
@media (max-width: 28rem) {
  /* On the narrowest phones the same action remains first in «Mer», while
     the top bar keeps enough room for search, notifications and account. */
  .sk-topbar-report-action { display: none; }
  .sk-location-switcher { flex: 1 1 auto; }
  .sk-location-switcher select { min-width: 0; width: 100%; max-width: 6.25rem; }
  .sk-tenant-switcher__chevron { display: none; }
  .sk-tenant-switcher__trigger { grid-template-columns: auto; }
  .sk-workspace-context > .sk-tenant-switcher { flex: 0 0 auto; }
}
@media (max-width: 960px) {
  .sk-drawer--client { width: min(56rem, 100vw); }
  .sk-catalogue-variant, .sk-customer-address, .sk-customer-contact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-stat-grid--four, .sk-loyalty-layout { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-sales-summary-grid { grid-template-columns: 1fr; }
  .sk-drawer--sale { width: min(52rem, 100vw); }
  .sk-sale-workspace { grid-template-columns: 1fr; overflow-y: auto; }
  .sk-sale-workspace > main, .sk-sale-workspace > aside { overflow: visible; }
  .sk-sale-workspace > aside { border-left: 0; border-top: 1px solid var(--sk-color-border); }
  .sk-online-hero { grid-template-columns: 1fr; }
  .sk-online-hero > div:first-child { justify-self: center; }
  .sk-marketplace-preview { min-height: 30rem; }
  .sk-store-hero { grid-template-columns: 1fr; }
  .sk-promo-hero { grid-template-columns: 1fr; }
  .sk-promo-hero > div:first-child { justify-self: center; }
  .sk-board-columns { grid-template-columns: 1fr; }
  .sk-report-groups { column-count: 1; }
  .sk-report-controls { grid-template-columns: 1fr; }
  .sk-report-dimensions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-onboarding { grid-template-columns: 14rem minmax(0, 1fr); }
  .sk-software-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .sk-report-dimensions { grid-template-columns: 1fr; }
  .sk-commission-scope { grid-template-columns: 1fr; }
  .sk-catalogue-variant, .sk-customer-address, .sk-customer-contact, .sk-cart-line-editor, .sk-assignment-grid { grid-template-columns: 1fr; }
  .sk-stocktake-toolbar { grid-template-columns: 1fr; }
  .sk-dashboard-toolbar { align-items: stretch; flex-direction: column; }
  .sk-dashboard-toolbar .sk-field { width: 100%; }
  .sk-dashboard-tour { grid-template-columns: auto 1fr; }
  .sk-dashboard-tour .sk-button { grid-column: 1 / -1; width: 100%; justify-content: center; }
  .sk-dashboard-quick-start > header { display: grid; }
  .sk-dashboard-quick-start > header > span { width: fit-content; }
  .sk-dashboard-quick-start > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-dashboard-quick-start button:last-child { grid-column: 1 / -1; }
  .sk-readiness-task-list { grid-template-columns: 1fr; }
  .sk-date-popover > div { grid-template-columns: 1fr; }
  .sk-date-popover .sk-mini-month:nth-child(2) { display: none; }
  .sk-report-source { grid-template-columns: 1fr; }
  .sk-shift-break, .sk-timesheet-entry { grid-template-columns: 1fr 1fr; }
  .sk-hours-editor { grid-template-columns: 1fr 1fr; }
  .sk-hours-editor .sk-button { grid-column: 1 / -1; }
  .sk-form-template-row { grid-template-columns: 1fr; }
  .sk-count-list > label { grid-template-columns: auto minmax(0, 1fr); }
  .sk-count-list > label > input { grid-column: 1 / -1; }
  .sk-stat-grid--four, .sk-loyalty-layout { grid-template-columns: 1fr; }
  .sk-sale-category-grid, .sk-quick-sale-grid { grid-template-columns: 1fr; }
  .sk-sales-datebar { overflow-x: auto; }
  .sk-online-hero { padding: var(--sk-space-10) var(--sk-space-5); }
  .sk-marketplace-preview { display: none; }
  .sk-wizard > header { grid-template-columns: auto 1fr; }
  .sk-wizard > header > div:last-child .sk-button:first-child { display: none; }
  .sk-wizard-intro { grid-template-columns: 1fr; }
  .sk-wizard-illustration { width: 7rem; height: 7rem; }
  .sk-hours-row { grid-template-columns: 1fr 6.5rem auto 6.5rem; }
  .sk-image-preview-grid, .sk-store-grid { grid-template-columns: 1fr; }
  .sk-generated-link { grid-template-columns: auto 1fr; }
  .sk-pricing-overview { grid-template-columns: 1fr; }
  .sk-promo-art { display: none; }
  .sk-help-grid { grid-template-columns: 1fr; }
  .sk-support-card { align-items: flex-start; flex-direction: column; }
  .sk-connect-workspace { grid-template-columns: 1fr; }
  .sk-connect-workspace > aside { max-height: 15rem; border-right: 0; border-bottom: 1px solid var(--sk-color-border); }
  .sk-connect-new { inset: 0; }
  .sk-auth-links { align-items: flex-start; flex-direction: column; }
  .sk-onboarding { grid-template: var(--sk-topbar-height) minmax(0, 1fr) 5rem / 1fr; }
  .sk-onboarding > header { grid-template-columns: 1fr auto; }
  .sk-onboarding > header .sk-onboarding-progress { display: none; }
  .sk-onboarding > aside { display: none; }
  .sk-onboarding > main { grid-column: 1; }
  .sk-onboarding-content { padding: var(--sk-space-6) var(--sk-space-4); }
  .sk-onboarding-heading { grid-template-columns: 1fr; }
  .sk-onboarding-choices, .sk-onboarding-start > div:last-child, .sk-launch-summary { grid-template-columns: 1fr; }
  .sk-onboarding-modules article { grid-template-columns: auto 1fr; }
  .sk-onboarding-modules article .sk-button { grid-column: 1 / -1; }
  .sk-readiness-checklist article { grid-template-columns: auto 1fr; }
  .sk-readiness-checklist article select { grid-column: 1 / -1; }
  .sk-onboarding > footer { padding: 0 var(--sk-space-3); grid-template-columns: auto 1fr; }
  .sk-onboarding > footer > span { display: none; }
}

/* Salongterminal: iPad under 1024 px bruker den eksisterende bunnnavigasjonen.
   Selve siden står stille i 100dvh; arbeidsflaten og kalenderen ruller i sine
   egne bokser, slik at Chrome-kiosk aldri får en ekstra dokumentrull. */
@media (max-width: 63.99rem) {
  .sk-terminal-workspace > .sk-terminal-workspace-header {
    grid-template-columns: 1fr auto;
    min-height: 4.25rem;
    flex-basis: 4.25rem;
    padding: 0 var(--sk-space-3);
  }
  .sk-terminal-workspace .sk-terminal-workspace-context,
  .sk-terminal-workspace .sk-terminal-profile > span:nth-child(2) {
    display: none;
  }
  .sk-terminal-workspace > .sk-terminal-workspace-layout {
    display: block;
    /* Fyller det som er igjen under topplinje og varsler (flex: 1 1 auto). */
    height: auto;
    min-height: 0;
  }
  .sk-terminal-workspace .sk-terminal-workspace-nav {
    position: fixed;
    inset: auto 0 0;
    z-index: 40;
    display: grid;
    /* I dette iPad-vinduet er «mer»-knappen (desktop), mobil-mer-knappen og
       mellomromsspennet fortsatt til stede sammen med de to primærknappene —
       til sammen flere enn fem barn. Et fast repeat(5, …) presset dermed den
       siste knappen ned i en egen rad med tomme kolonner ved siden av. Med
       auto-flow følger antall kolonner alltid antall synlige knapper, i én rad. */
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
    height: auto;
    padding: var(--sk-space-2) var(--sk-space-2)
      max(var(--sk-space-2), env(safe-area-inset-bottom));
    overflow: visible;
    border-top: 1px solid color-mix(in srgb, white 12%, transparent);
  }
  .sk-terminal-workspace .sk-terminal-workspace-nav button {
    min-width: 0;
    min-height: 4.25rem;
  }
  .sk-terminal-workspace .sk-terminal-workspace-nav .sk-terminal-nav-secondary {
    display: none;
  }
  .sk-terminal-workspace .sk-terminal-workspace-nav > .sk-terminal-mobile-more-trigger {
    display: grid;
  }
  .sk-terminal-workspace .sk-terminal-workspace-content {
    height: 100%;
    min-height: 0;
    overflow-y: auto;
    padding: var(--sk-space-4) var(--sk-space-4) 6.75rem;
  }
  .sk-terminal-workspace .sk-terminal-workspace-content:has(> .sk-timebook-panel) {
    height: 100%;
    overflow: hidden;
  }
  .sk-terminal-workspace .sk-timebook-panel {
    display: flex;
    height: 100%;
    min-height: 0;
  }
  .sk-terminal-workspace .sk-timebook-panel > .sk-timebook {
    min-height: 0;
  }
  .sk-terminal-workspace .sk-timebook-panel .sk-timebook-scroll {
    height: 100%;
    max-height: none;
  }
  .sk-terminal-workspace .sk-terminal-checkout-grid {
    grid-template-columns: 1fr;
  }
  .sk-terminal-workspace .sk-terminal-today-columns {
    grid-template-columns: 1fr;
  }
  .sk-terminal-workspace .sk-terminal-checkout-grid aside {
    position: static;
  }
  .sk-terminal-workspace .sk-terminal-sheet-layer > .sk-timebook-sheet {
    width: 100%;
    border-radius: 0;
    padding: var(--sk-space-5) var(--sk-space-4);
  }
  .sk-terminal-workspace .sk-profile-hero {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .sk-terminal-workspace .sk-profile-hero-actions {
    grid-column: 1 / -1;
    justify-content: flex-start;
    max-width: none;
  }
}

/* iPad portrett: tre profiler gir fire kompakte rader ved 12 ansatte. */
@media (max-width: 48rem) {
  .sk-terminal-lock .sk-terminal-roster {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Smalere enn iPad: to kolonner bevarer navn og 44 px treffflate. */
@media (max-width: 36rem) {
  .sk-terminal-lock .sk-terminal-roster {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-terminal-workspace .sk-terminal-workspace-content {
    padding-inline: var(--sk-space-3);
  }
}

/* Lav kiosk 1024 × 768 / MacBook 1440 × 719: behold alle funksjoner, men bruk
   høyden på selve arbeidet. Navigasjonen og panelene er fortsatt minst 44 px. */
@media (min-width: 64rem) and (max-height: 800px) {
  .sk-terminal-lock > .sk-terminal-lock-header,
  .sk-terminal-workspace > .sk-terminal-workspace-header {
    min-height: 4rem;
    flex-basis: 4rem;
  }
  .sk-terminal-lock > .sk-terminal-lock-content {
    padding-block: clamp(0.65rem, 2vh, 1rem);
  }
  .sk-terminal-lock > .sk-terminal-lock-content h1 {
    font-size: var(--sk-type-page-title);
  }
  .sk-terminal-lock .sk-terminal-roster {
    margin-top: clamp(0.65rem, 2vh, 1rem);
  }
  .sk-terminal-workspace > .sk-terminal-workspace-layout {
    min-height: 0;
  }
  .sk-terminal-workspace .sk-terminal-workspace-nav {
    height: 100%;
    padding-block: var(--sk-space-2);
  }
  .sk-terminal-workspace .sk-terminal-workspace-nav button {
    min-height: 3.5rem;
  }
  .sk-terminal-workspace .sk-terminal-workspace-content {
    padding: var(--sk-space-4);
  }
  .sk-terminal-workspace .sk-terminal-workspace-content:has(> .sk-timebook-panel) {
    height: 100%;
  }
  .sk-terminal-workspace .sk-terminal-summary-grid,
  .sk-terminal-workspace .sk-terminal-day-toolbar {
    margin-bottom: var(--sk-space-4);
  }
  .sk-terminal-workspace .sk-terminal-summary-grid article {
    min-height: 4.75rem;
    padding: var(--sk-space-3);
  }
  .sk-terminal-workspace .sk-terminal-today-columns {
    gap: var(--sk-space-4);
  }
  .sk-terminal-sheet-layer > .sk-timebook-sheet {
    padding-block: var(--sk-space-5);
  }
}

[data-density="compact"] { --sk-control-height: 2.5rem; --sk-control-height-lg: 2.5rem; }
[data-theme="dark"] { color-scheme: dark; --sk-color-ink: #fbf8f3; --sk-color-ink-soft: #dcd7d1; --sk-color-ink-faint: #b8b3b9; --sk-color-canvas: #18171e; --sk-color-surface: #23212c; --sk-color-surface-hover: #302e39; --sk-color-surface-selected: #4f4150; --sk-color-surface-raised: #2b2934; --sk-color-surface-subtle: #302e39; --sk-color-border: #4b4852; --sk-color-border-soft: #393641; --sk-color-overlay: rgb(0 0 0 / 60%); }

/*
 * Skjermklasser for terminalen — se `terminal/screenClass.ts`.
 *
 * Terminal-CSS-en er skrevet i rem. Det gjør at én rot-skriftstørrelse per
 * klasse skalerer hele flaten proporsjonalt: tekst, avstander, kort, knapper.
 * Kassa-PC-en (1024×768 touch) får den tetteste skalaen, men touch-målene
 * holdes oppe med egne tokens så knappene ikke krymper under fingeren.
 *
 *   html[data-screen="pos-1024"]        1024×768 touch-PC ved kassa
 *   html[data-screen="tablet-portrait"] iPad stående
 *   html[data-screen="tablet-landscape"] iPad liggende / små bærbare
 *   html[data-screen="laptop"]          MacBook 1440×900 (719 px kiosk)
 *   html[data-screen="desktop"]         alt større
 *
 * Overstyr per enhet med `?screen=pos-1024` (huskes) eller `?screen=auto`.
 */

:root {
  --sk-terminal-touch-min: max(2.75rem, 44px);
  --sk-terminal-nav-w: 9.75rem;
  --sk-terminal-panel-pad: var(--sk-space-4, 1rem);
}

html[data-touch="0"] {
  --sk-terminal-touch-min: max(2.25rem, 44px);
}

/* Kontraktens kontrollhøyde kan ikke være lavere enn fingermålet. */
html[data-touch="1"] {
  --sk-terminal-control-h: max(3.3rem, var(--sk-terminal-touch-min));
}

/* Kontrollhøyden kan ikke være lavere enn fingermålet.
 *
 * `--sk-control-height` er 2,75 rem og følger derfor rotstørrelsen. På
 * kassa-PC-en er roten 12,5 px, så høyden blir 34 px — mens knappene i samme
 * rad krever `--sk-terminal-touch-min`, som der er låst til 44 px nettopp
 * fordi en finger ikke krymper med skriften. Raden ble altså ti piksler
 * lavere enn knappen den inneholdt, og «Stemple inn» stakk ut av sin egen
 * boks.
 *
 * Gulvet settes her, i terminalen, framfor å bytte token på tjue kallsteder:
 * en `max()` kan bare gjøre noe høyere, aldri lavere, så ingen flate kan bli
 * trangere av dette enn den var. */
.sk-terminal-workspace,
.sk-terminal-lock {
  --sk-control-height: max(2.75rem, var(--sk-terminal-touch-min));
  --sk-control-height-lg: max(2.9rem, var(--sk-terminal-touch-min));
}

/* ── Kassa-PC 1024×768: liten skrift, tette avstander, smal meny ─────────── */
html[data-screen="pos-1024"] {
  font-size: var(--sk-terminal-root-pos);
  /* 44 px er minstemålet for en finger — i px, ikke rem, så det ikke krymper
     sammen med teksten. */
  --sk-terminal-touch-min: 44px;
  --sk-terminal-nav-w: 6.5rem;
  --sk-terminal-panel-pad: 0.75rem;
}

html[data-screen="pos-1024"] :where(.sk-terminal-workspace-nav) button {
  min-height: var(--sk-terminal-touch-min);
  padding-block: 0.35rem;
  font-size: var(--sk-font-size-xs);
}

html[data-screen="pos-1024"] :where(.sk-terminal-workspace-nav) button svg {
  width: 1.25rem;
  height: 1.25rem;
}

/* Bredde og fast synlig betaling gjelder bare når menyen er en siderail.
   Windows-skalering kan gi 900 px CSS-bredde selv på en 1024 px kasse-PC.
   Da flytter menyen seg til bunnen og må fylle hele vinduet. */
@media (min-width: 64rem) {
  html[data-screen="pos-1024"] .sk-terminal-workspace-nav {
    width: var(--sk-terminal-nav-w);
    min-width: var(--sk-terminal-nav-w);
    padding-block: var(--sk-space-3);
  }

  .sk-terminal-workspace-nav > .sk-terminal-nav-pay {
    /* Varsler tar høyde fra siderailen. Alle funksjoner kan rulles, mens
       Betal forblir synlig nederst også på lave, brede skjermer. */
    position: sticky;
    bottom: 0;
    z-index: 2;
    flex-shrink: 0;
    margin-top: auto;
  }
}

/* Kassa-PC-en har 768 punkter i høyden. En arbeidsdag fra 08 til 20 er 720
   minutter; 0,85 px/min gir 612 piksler, og da ser frisøren hele dagen uten
   å rulle. Halvtimen blir 25,5 px — nok til navnet, og behandlingen kommer
   fram når timen er en time eller mer. */
html[data-screen="pos-1024"] .sk-timebook-scroll {
  --sk-timebook-minute: 0.85;
}

html[data-screen="pos-1024"] .sk-terminal-workspace-content:has(> .sk-terminal-checkout-panel) {
  height: 100%;
  overflow: hidden;
}

html[data-screen="pos-1024"] .sk-terminal-workspace-content:has(> .sk-terminal-work-area) {
  box-sizing: border-box;
  height: 100%;
  overflow: hidden;
}

html[data-screen="pos-1024"] .sk-terminal-checkout-panel,
html[data-screen="pos-1024"] .sk-terminal-sale-layout {
  min-height: 0;
  height: 100%;
}

/* Toppstripa: enhetsnavnet og «Arbeidsflate»-etiketten tar plass fra jobben. */
html[data-screen="pos-1024"] .sk-terminal-workspace-header,
html[data-screen="pos-1024"] .sk-terminal-lock-header {
  min-height: 3rem;
  padding-block: 0.25rem;
}

html[data-screen="pos-1024"] .sk-terminal-panel {
  padding: var(--sk-terminal-panel-pad);
}

html[data-screen="pos-1024"] h1 {
  font-size: var(--sk-type-terminal-compact-title);
}

html[data-screen="pos-1024"] h2 {
  font-size: var(--sk-type-terminal-compact-section);
}

html[data-screen="pos-1024"] .sk-terminal-day-status {
  gap: 0.5rem;
  margin-bottom: 0.5rem;
}

html[data-screen="pos-1024"] .sk-terminal-day-status-item,
html[data-screen="pos-1024"] :where(.sk-terminal-roster-control) > button {
  min-height: 44px;
  padding: 0.4rem 0.65rem;
}

/* Alle knapper og listerader som kan trykkes på: minst fingerhøyde.
   Kontraktens knappevarianter får høyden fra --sk-terminal-control-h, som på
   berøringsflater allerede er max(3.3rem, fingermålet) — de skal ikke
   trekkes NED til fingermålet her. */
html[data-touch="1"] .sk-terminal-primary,
html[data-touch="1"] .sk-terminal-secondary,
html[data-touch="1"] .sk-terminal-link,
html[data-touch="1"] .sk-terminal-danger,
html[data-touch="1"] .sk-terminal-danger-outline,
html[data-touch="1"] .sk-terminal-icon-button {
  min-height: var(--sk-terminal-control-h);
}
html[data-touch="1"] .sk-terminal-nav-primary,
html[data-touch="1"] .sk-terminal-nav-secondary,
html[data-touch="1"] :where(.sk-terminal-catalog-results) button {
  min-height: var(--sk-terminal-touch-min);
}
html[data-touch="1"] .sk-terminal-search-control input {
  min-height: max(44px, var(--sk-terminal-touch-min));
}

/* ── Nettbrett stående: én kolonne, litt mindre skrift ───────────────────── */
html[data-screen="tablet-portrait"] {
  font-size: var(--sk-terminal-root-tablet);
  --sk-terminal-touch-min: 44px;
}

html[data-screen="tablet-landscape"] {
  font-size: var(--sk-terminal-root-tablet);
  --sk-terminal-touch-min: 44px;
  --sk-terminal-nav-w: 8rem;
}

html[data-screen="laptop"] {
  font-size: var(--sk-terminal-root-laptop);
}

/* Dra-for-å-bekrefte: nettleseren skal aldri tolke draget som rulling. */
.sk-slide-confirm,
.sk-slide-confirm-knob {
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
  -webkit-tap-highlight-color: transparent;
}

.sk-slide-confirm-fallback {
  display: flex;
  justify-content: flex-end;
  margin-top: 0.4rem;
}

:where(.sk-slide-confirm-fallback) button {
  min-height: var(--sk-terminal-touch-min);
}

.sk-terminal-walkin-picker {
  margin: var(--sk-space-3, 0.75rem) 0;
  padding: var(--sk-space-3, 0.75rem);
  border: 1px solid var(--sk-color-border, rgba(0, 0, 0, 0.12));
  border-radius: var(--sk-terminal-radius, 0.75rem);
}

/* Kontraktens to tokener (docs/architecture/ui/TERMINAL-DESIGN-CONTRACT.md): én høyde for
   alle knapper og felt, ett hjørne. Berøringsflater hever høyden i
   00-screen-classes.css (`html[data-touch="1"]`). Kort bruker --sk-radius-lg. */

:root {
  --sk-terminal-control-h: 3.3rem;
  --sk-terminal-radius: 0.8rem;
  /* Displayoverskrift: den ENE store tittelen på en flate uten arbeidsflate
     (aktivering, lås). Panelene bruker --sk-font-size-2xl fra 00-tokens.css. */
  --sk-font-size-3xl: clamp(2rem, 1.5rem + 1.5vw, 2.75rem);
}

.sk-terminal-loading,
.sk-terminal-enrollment,
.sk-terminal-lock,
.sk-terminal-workspace,
.sk-customer-display {
  min-height: 100dvh;
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink);
}

.sk-terminal-loading,
.sk-terminal-enrollment {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  place-items: center;
  padding: 2rem;
}

.sk-terminal-loading {
  align-content: center;
  gap: 1rem;
}

.sk-terminal-loading p {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-mark {
  position: relative;
  display: grid;
  place-items: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 1.15rem;
  background: var(--sk-color-primary);
  color: white;
  font-size: var(--sk-font-size-2xl);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: -0.08em;
  box-shadow: 0 14px 30px
    color-mix(in srgb, var(--sk-color-primary) 24%, transparent);
}

.sk-terminal-mark.is-small {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.8rem;
  font-size: var(--sk-font-size-lg);
  box-shadow: none;
}

.sk-terminal-enrollment-card {
  width: min(31rem, 100%);
  min-width: 0;
  padding: 2.5rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-card-radius);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}

/* Merket på aktiveringskortet er merkeraden (ring + «min rutine»), ikke en
   løs flis: samme merke som låseskjermen og arbeidsflaten. */

.sk-terminal-enrollment-card .sk-terminal-brand {
  margin-bottom: 2rem;
}

.sk-terminal-enrollment-card .sk-terminal-brand strong {
  font-size: var(--sk-font-size-xl);
  letter-spacing: -0.02em;
}

.sk-terminal-eyebrow {
  margin: 0 0 0.45rem;
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.sk-terminal-enrollment-card h1 {
  /* Kundeskjermen har ikke personalets grensesnitt-attributt, så overskriften falt
     tilbake til serif-token. Aktiveringskortet skal se likt ut for begge modusene. */
  font-family: var(--sk-font);
  margin: 0 0 0.85rem;
  font-size: var(--sk-type-page-title);
  letter-spacing: -0.04em;
}

.sk-terminal-enrollment-card > p:not(.sk-terminal-eyebrow, .sk-terminal-help) {
  color: var(--sk-color-ink-soft);
  line-height: 1.55;
}

.sk-terminal-enrollment-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.7rem;
  margin-top: 2rem;
}

.sk-terminal-enrollment-form label {
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-enrollment-form input,
.sk-terminal-inline-fields input {
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0 1rem;
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  outline: none;
  transition:
    border-color var(--sk-motion-fast),
    box-shadow var(--sk-motion-fast);
}

.sk-terminal-enrollment-form input {
  width: 100%;
  min-width: 0;
  text-align: center;
  font-size: var(--sk-font-size-xl);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: 0.14em;
}

.sk-terminal-enrollment-form input:focus,
.sk-terminal-inline-fields input:focus {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 3px var(--sk-color-primary-soft);
}

/* Knappevariantene (.sk-terminal-primary, -secondary, -link, -danger,
   -danger-outline, -icon-button) er definert i 01a-contract.css. */

/* «Opprett ny kunde» står under søketreffene, ikke i en verktøylinje: den er
   svaret når søket ikke ga det man lette etter, og hører til der man ser. */

.sk-new-customer-cta {
  width: 100%;
  margin-top: var(--sk-space-3);
}

/* Kunden fantes fra før. Raden ser ut som et søketreff fordi det er nettopp
   det den er — treffet søket burde gitt. */

.sk-terminal-duplicate-hit {
  display: flex;
  gap: var(--sk-space-3);
  align-items: center;
  justify-content: space-between;
  width: 100%;
  margin-top: var(--sk-space-2);
  border: 1px solid var(--sk-color-primary);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-3) var(--sk-space-4);
  background: var(--sk-color-primary-soft);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.sk-terminal-duplicate-hit > span {
  display: grid;
  min-width: 0;
}

.sk-terminal-duplicate-hit small {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-duplicate-hit > small {
  flex: none;
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-help {
  margin: 1.25rem 0 0;
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-type-display-small);
  line-height: 1.5;
}

.sk-terminal-error {
  margin: 0.25rem 0;
  color: var(--sk-color-danger);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

/* De to skjermene man møter UTENFOR arbeidsflaten — aktivering og lås — deler
   én flate. Fargene er tokener, ikke en engangsgradient. */

.sk-terminal-enrollment,
.sk-terminal-lock {
  background: linear-gradient(
    135deg,
    var(--sk-color-primary-soft) 0%,
    var(--sk-color-canvas) 45%,
    var(--sk-color-signal-soft) 100%
  );
}

.sk-terminal-lock {
  display: flex;
  height: 100dvh;
  flex-direction: column;
  overflow: hidden;
  background: linear-gradient(
    135deg,
    var(--sk-color-primary-soft) 0%,
    var(--sk-color-canvas) 45%,
    var(--sk-color-signal-soft) 100%
  );
}

.sk-terminal-lock-header,
.sk-terminal-workspace-header,
.sk-customer-display > header {
  flex: 0 0 auto;
  min-height: 5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0 2rem;
  border-bottom: 1px solid
    color-mix(in srgb, var(--sk-color-ink) 8%, transparent);
  background: color-mix(in srgb, var(--sk-color-surface) 88%, transparent);
  backdrop-filter: blur(18px);
}

.sk-terminal-lock-header > div,
.sk-terminal-lock-header > span,
.sk-terminal-brand,
.sk-customer-display > header > div {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.sk-terminal-lock-header > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}

.sk-terminal-lock-actions,
.sk-terminal-lock-device {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}

.sk-terminal-lock-device {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}

.sk-terminal-lock-content {
  display: flex;
  min-height: 0;
  flex: 1 1 auto;
  flex-direction: column;
  width: min(72rem, calc(100% - 3rem));
  margin: 0 auto;
  padding: clamp(1rem, 3vh, 3.5rem) 0;
  text-align: center;
}

.sk-terminal-lock-content h1 {
  margin: 0.25rem 0 0.55rem;
  /* «Hvem er du?» er en kort kontrollsetning, ikke en sidetittel; den fylte for mye av iPad-skjermen. */
  font-size: var(--sk-type-section-title);
  letter-spacing: -0.055em;
}

.sk-terminal-lock-content > p:not(.sk-terminal-eyebrow, .sk-terminal-error) {
  margin-block: 0;
  color: var(--sk-color-ink-soft);
}

.sk-terminal-roster {
  display: grid;
  grid-template-columns: repeat(
    auto-fit,
    minmax(clamp(9rem, 16vw, 11rem), 1fr)
  );
  /* Radene skal følge innholdet, ikke skjermhøyden.
     Med `1fr`-rader og `flex: 1 1 auto` strakk rutenettet seg over all ledig
     plass og delte den likt mellom radene. Ti frisører ble til to rader som
     hver fylte en halv skjerm — kortene så høye ut fordi skjermen var høy,
     ikke fordi det sto noe i dem.
     Minimumshøyden står igjen fordi dette er en berøringsskjerm: kortet er en
     treffflate før det er et kort. */
  grid-auto-rows: minmax(9.5rem, auto);
  align-content: start;
  min-height: 0;
  flex: 0 1 auto;
  gap: clamp(0.6rem, 1.6vh, 1rem);
  margin-top: clamp(1rem, 3vh, 2.8rem);
}

:where(.sk-terminal-roster) > button {
  position: relative;
  display: flex;
  min-height: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(0.3rem, 1vh, 0.75rem);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: 1.15rem;
  padding: clamp(0.6rem, 1.6vh, 1.15rem);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  cursor: pointer;
  box-shadow: var(--sk-shadow-card);
  transition:
    border-color var(--sk-motion-base),
    box-shadow var(--sk-motion-base),
    transform var(--sk-motion-base);
}

:where(.sk-terminal-roster) > button:hover:not(:disabled) {
  transform: translateY(-3px);
  border-color: var(--sk-color-primary);
  box-shadow: 0 16px 38px
    color-mix(in srgb, var(--sk-color-ink) 10%, transparent);
}

:where(.sk-terminal-roster) > button:disabled {
  border-color: var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}

.sk-terminal-roster small {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-roster i {
  position: absolute;
  top: 0.9rem;
  right: 0.9rem;
  width: 0.65rem;
  height: 0.65rem;
  border-radius: 50%;
  background: var(--sk-color-success);
  box-shadow: 0 0 0 4px var(--sk-color-success-soft);
}

.sk-terminal-avatar {
  position: relative;
  display: grid;
  place-items: center;
  width: clamp(2.75rem, 7vh, 4.35rem);
  height: clamp(2.75rem, 7vh, 4.35rem);
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary-active);
  font-size: var(--sk-font-size-xl);
  font-weight: var(--sk-font-weight-strong);
  overflow: hidden;
}

.sk-terminal-avatar > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  object-fit: cover;
}

.sk-terminal-avatar.is-small {
  width: 2.55rem;
  height: 2.55rem;
  flex: 0 0 auto;
  font-size: var(--sk-font-size-xs);
}

.sk-terminal-lock > footer {
  flex: 0 0 auto;
  padding: clamp(0.55rem, 1.5vh, 1.2rem);
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
  text-align: center;
}

.sk-terminal-pin-layer {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: 1.5rem;
  background: var(--sk-color-overlay);
  backdrop-filter: blur(8px);
  animation: sk-fade-in var(--sk-motion-base) var(--sk-ease-standard);
}

/* Bare PIN-dialogen kan rulle hvis kortet er høyere enn skjermen. De andre arkene
   deler grunnklassen og skal ikke bli rullbare lag. På touch uten uskarphet: et fixed
   lag med backdrop-filter som også ruller er det WebKit på iPad håndterer dårligst. */

.sk-terminal-pin-layer.is-pin {
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: max(1rem, var(--sk-safe-top)) max(1rem, var(--sk-safe-right)) max(1rem, var(--sk-safe-bottom)) max(1rem, var(--sk-safe-left));
}

.sk-terminal-pin-layer.is-pin {
  padding-inline: max(clamp(var(--sk-space-1), calc(100vw - 18rem), var(--sk-space-4)), var(--sk-safe-left), var(--sk-safe-right));
}

html[data-touch="1"] .sk-terminal-pin-layer.is-pin {
  backdrop-filter: none;
}

html[data-touch="1"] :where(.sk-terminal-keypad) button {
  min-width: 44px;
  padding-inline: 0;
  min-height: max(3.7rem, 56px);
}

.sk-terminal-pin-card {
  position: relative;
  width: min(24rem, 100%);
  margin: auto;
  padding: 1.5rem 2rem;
  padding-inline: clamp(var(--sk-space-1), calc(100vw - 18rem), var(--sk-space-8));
  border-radius: var(--sk-card-radius);
  background: var(--sk-color-surface);
  text-align: center;
  box-shadow: 0 28px 80px rgb(35 33 44 / 25%);
  animation: sk-modal-in var(--sk-motion-slow) var(--sk-ease-emphasized);
}

.sk-terminal-pin-card > .sk-terminal-avatar {
  margin: 0.25rem auto 1rem;
}

.sk-terminal-pin-card h2 {
  margin: 0;
  font-size: var(--sk-type-section-title);
}

.sk-terminal-pin-card > p:not(.sk-terminal-error) {
  margin: 0.35rem 0 1.1rem;
  color: var(--sk-color-ink-soft);
}

.sk-terminal-language-switch {
  display: inline-flex;
  flex-shrink: 0;
  overflow: hidden;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
}

:where(.sk-terminal-language-switch) button {
  display: grid;
  min-width: 2.75rem;
  min-height: 2.75rem;
  place-items: center;
  border: 0;
  padding: 0 var(--sk-space-2);
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

:where(.sk-terminal-language-switch) button + button {
  border-left: 1px solid var(--sk-color-border-soft);
}

:where(.sk-terminal-language-switch) button.is-active {
  background: var(--sk-color-primary);
  color: white;
}

:where(.sk-terminal-language-switch) button:disabled {
  cursor: wait;
  opacity: 0.7;
}

.sk-terminal-pin-card > .sk-terminal-language-switch {
  margin: 0 auto;
}

/* surface-hover mot kortets surface er 1.09:1 – berøringsmålet var praktisk talt
   usynlig. Legger på border-interactive (3.51:1) så treffflaten kan ses i sterkt lys. */

.sk-terminal-back {
  min-width: 44px;
  min-height: 44px;
  position: absolute;
  top: 1rem;
  left: 1rem;
  display: grid;
  place-items: center;
  width: 2.6rem;
  height: 2.6rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: 50%;
  background: var(--sk-color-surface-hover);
  cursor: pointer;
}

/* «Bytt frisør»: en tydelig knapp med navn og stort trykkmål i stedet for en 36 px pil. */

.sk-terminal-back.is-labeled {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  width: auto;
  height: auto;
  /* Minste fingermål, ikke mer: knappen er en liten utvei, ikke hovedhandlingen. */
  min-height: max(44px, var(--sk-terminal-touch-min, 44px));
  padding: 0 0.8rem 0 0.4rem;
  border-radius: var(--sk-radius-pill, 999px);
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-medium);
}

.sk-terminal-back.is-labeled svg {
  width: 1.1rem;
  height: 1.1rem;
}

.sk-terminal-pin-card > .sk-terminal-back.is-labeled + .sk-terminal-avatar {
  margin-top: 2.75rem;
}

.sk-terminal-pin-dots {
  display: flex;
  justify-content: center;
  gap: 0.65rem;
  min-height: 1.05rem;
  margin: 1.2rem 0;
}

/* Uutfylte PIN-prikker er eneste tilbakemelding på at et siffer er registrert.
   disabled-border #b8b3b9 mot hvitt kort gir 2.06:1 – under 3:1-kravet for grafiske
   elementer. border-interactive #8c878f gir 3.51:1 og er samme token som input-rammene. */

.sk-terminal-pin-dots span {
  width: 0.72rem;
  height: 0.72rem;
  border: 1.5px solid var(--sk-color-border-interactive);
  border-radius: 50%;
  transition:
    background var(--sk-motion-fast),
    transform var(--sk-motion-fast);
}

.sk-terminal-pin-dots span.is-filled {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary);
  transform: scale(1.08);
}

.sk-terminal-keypad {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(var(--sk-space-1), calc(100vw - 18rem), var(--sk-space-3));
  margin: 0.75rem 0 1rem;
}

/* Tasteflaten (canvas #fbf8f3) mot kortet (surface #ffffff) er bare 1.06:1, så rammen er
   det eneste som viser hvor tasten slutter. border-soft ga 1.24:1; border-interactive gir
   3.51:1 og oppfyller 3:1 for UI-komponenter. */

:where(.sk-terminal-keypad) button {
  min-height: 3.7rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  background: var(--sk-color-canvas);
  color: inherit;
  font: inherit;
  font-size: var(--sk-font-size-xl);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

:where(.sk-terminal-keypad) button:active {
  background: var(--sk-color-primary-soft);
  transform: scale(0.97);
}

:where(.sk-terminal-keypad) button.is-muted {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

.sk-terminal-keypad button.sk-terminal-key-delete {
  font-size: var(--sk-type-keypad-delete);
  line-height: 1;
}

.sk-terminal-lock-content > .sk-terminal-forgot {
  align-self: center;
}

.sk-terminal-forgot {
  display: inline-block;
  margin-top: 0.75rem;
  padding: 0.6rem 1rem;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm, 0.95rem);
  text-decoration: underline;
}

.sk-terminal-pin-card > .sk-terminal-primary {
  width: 100%;
}

.sk-terminal-workspace {
  min-width: 60rem;
}

.sk-terminal-workspace-header {
  position: sticky;
  top: 0;
  z-index: 20;
  min-height: 4.8rem;
  padding: 0 1.35rem;
}

.sk-terminal-brand > span:last-child {
  padding-left: 0.75rem;
  border-left: 1px solid var(--sk-color-border);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

.sk-terminal-workspace-header nav {
  display: flex;
  align-self: stretch;
  gap: 0.25rem;
  /* Fanene har vokst fra tre til seks. Uten dette presses de sammen på de
     smaleste terminalskjermene, og den siste fanen blir uleselig eller faller
     utenfor. Vannrett rulling framfor ombrekking: en fanerad som plutselig blir
     to linjer flytter alt innholdet under seg nedover midt i arbeidsdagen. */
  overflow-x: auto;
  scrollbar-width: thin;
}

:where(.sk-terminal-workspace-header nav) button {
  /* Fanene skal beholde bredden sin og rulle, ikke krympe til uleselige. */
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  border: 0;
  border-bottom: 2px solid transparent;
  padding: 0 1.2rem;
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

:where(.sk-terminal-workspace-header nav) button svg {
  width: 1.15rem;
}

:where(.sk-terminal-workspace-header nav) button.is-active {
  border-bottom-color: var(--sk-color-primary);
  color: var(--sk-color-ink);
}

.sk-terminal-profile {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  border: 0;
  border-radius: var(--sk-terminal-radius);
  padding: 0.35rem 0.55rem;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.sk-terminal-profile:hover {
  background: var(--sk-color-surface-hover);
}

.sk-terminal-profile > span:nth-child(2) {
  display: grid;
  gap: 0.1rem;
}

.sk-terminal-profile small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

.sk-terminal-profile > svg {
  width: 1rem;
  color: var(--sk-color-ink-soft);
}

.sk-terminal-global-error {
  width: min(76rem, calc(100% - 3rem));
  margin: 1rem auto 0;
  border-radius: var(--sk-radius-md);
  padding: 0.8rem 1rem;
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}

.sk-terminal-panel {
  width: min(76rem, calc(100% - 3rem));
  margin: 0 auto;
  padding: 2.4rem 0 4rem;
}

.sk-terminal-day-toolbar {
  display: grid;
  grid-template-columns: var(--sk-terminal-control-h) 1fr var(--sk-terminal-control-h);
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.8rem;
  text-align: center;
}

.sk-timebook-day-toolbar {
  align-items: center;
}

/* Norske ukedager og måneder skrives med liten bokstav; bare første tegn i
   strengen skal opp («Tirsdag 1. september», ikke «… September»). */

.sk-terminal-day-toolbar h1 {
  margin: 0;
  font-size: var(--sk-type-page-title);
  letter-spacing: -0.04em;
}

.sk-terminal-day-toolbar h1::first-letter {
  text-transform: uppercase;
}

/* Pilknappene lå som hvit flate på canvas med border #dcd7d1 = 1.35:1. border-interactive
   gir 3.32:1 mot canvas. background: white → surface-tokenet (identisk i lyst tema). */

:where(.sk-terminal-day-toolbar) > button {
  display: grid;
  place-items: center;
  width: var(--sk-terminal-control-h);
  height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  background: var(--sk-color-surface);
  color: inherit;
  cursor: pointer;
}

.is-forward {
  transform: rotate(180deg);
}

/* Nøkkeltall (.sk-terminal-summary-grid) og panelhodet
   (.sk-terminal-section-heading) er definert i 01a-contract.css. */

.sk-terminal-appointments {
  overflow: hidden;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
}

.sk-terminal-appointments article {
  display: grid;
  grid-template-columns: 5rem 1fr auto;
  align-items: center;
  gap: 1rem;
  min-height: 5.3rem;
  padding: 0.9rem 1.15rem;
  border-bottom: 1px solid var(--sk-color-border-soft);
}

.sk-terminal-appointments article.is-roster {
  grid-template-columns: 5rem 2.55rem minmax(0, 1fr) auto;
}

.sk-terminal-appointments article:last-child {
  border-bottom: 0;
}

.sk-terminal-appointments time {
  font-size: var(--sk-font-size-lg);
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-appointments article > div {
  display: grid;
  gap: 0.25rem;
}

.sk-terminal-appointments article > div span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}

.sk-terminal-appointments article.sk-timesheet-day {
  grid-template-columns: 5rem minmax(0, 1fr) auto;
}

.sk-timesheet-day-summary {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}

.sk-timesheet-day-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--sk-space-2);
}

:where(.sk-timesheet-day-actions) button {
  min-height: var(--sk-control-height);
}

.sk-timesheet-day-editor {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: minmax(12rem, 0.8fr) minmax(14rem, 1.2fr) auto;
  align-items: end;
  gap: var(--sk-space-3);
  margin-top: 0;
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-4);
}

.sk-timesheet-day-editor fieldset {
  min-width: 0;
  margin: 0;
  border: 0;
  padding: 0;
}

.sk-timesheet-day-editor legend,
.sk-timesheet-day-editor label > span {
  margin-bottom: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}

.sk-timesheet-duration-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-2);
}

.sk-timesheet-duration-fields label,
.sk-timesheet-note-field {
  display: grid;
  min-width: 0;
}

.sk-timesheet-day-editor input {
  min-width: 0;
}

.sk-timesheet-field-help {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  line-height: 1.4;
}

.sk-timesheet-editor-actions {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}

.sk-timesheet-absence-fields {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.sk-timesheet-day-error {
  grid-column: 1 / -1;
}

.sk-timesheet-absence-section {
  display: grid;
  gap: var(--sk-space-4);
  margin-top: var(--sk-space-8);
}

.sk-timesheet-absence-section > .sk-terminal-section-heading {
  margin-bottom: 0;
}

.sk-timesheet-labelled-field {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}

.sk-timesheet-labelled-field > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}

.sk-timesheet-labelled-field > span small {
  font-weight: var(--sk-font-weight-medium);
}

.sk-timesheet-sick-fields {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
}

.sk-timesheet-absence-form {
  display: grid;
  gap: var(--sk-space-4);
}

/* Merkelapper (.sk-terminal-status) og tomtilstand (.sk-terminal-empty-card)
   er definert i 01a-contract.css. */

.sk-terminal-product-search {
  display: grid;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-6);
}

.sk-terminal-product-search__label {
  display: grid;
  gap: var(--sk-space-1);
  width: fit-content;
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-product-search__label small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-medium);
}

/* Skannefeilen står ved feltet den kom fra, ikke i statuslinja øverst — den
   er opptatt av kladdefeilen så lenge kladden ikke lot seg lagre. Samme
   feilform som ellers (.sk-terminal-error), bare plassert her. */

.sk-terminal-scan-hint {
  margin: calc(var(--sk-space-2) * -1) 0 0;
}

/* ── Felt og søk (kontrakt, del 4) ─────────────────────────────────────────
   Samme høyde (--sk-terminal-control-h) og hjørne (--sk-terminal-radius) på
   tekst-/datofeltet og på søkefeltet med ikon. .sk-terminal-order-search er
   alias for søkefeltet og skal ikke brukes i ny kode. */

.sk-terminal-search {
  width: 100%;
  min-width: 0;
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
}

.sk-terminal-search:focus {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 3px var(--sk-color-primary-soft);
}

.sk-terminal-order-search,
.sk-terminal-search-control {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  width: 100%;
  min-width: 0;
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  cursor: text;
  transition:
    border-color var(--sk-motion-fast),
    box-shadow var(--sk-motion-fast);
}

.sk-terminal-order-search:focus-within,
.sk-terminal-search-control:focus-within {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 3px var(--sk-color-primary-soft);
}

.sk-terminal-order-search svg,
.sk-terminal-search-control svg {
  flex: none;
  width: 1.2rem;
  color: var(--sk-color-ink-faint);
}

.sk-terminal-order-search input,
.sk-terminal-search-control input {
  width: 100%;
  min-width: 0;
  min-height: max(44px, calc(var(--sk-terminal-control-h) - 2px));
  flex: 1;
  border: 0;
  border-radius: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  box-shadow: none !important;
}

/* Nettleserens plassholderfarge følger ikke mørkt tema av seg selv. */

.sk-terminal-search::placeholder,
.sk-terminal-order-search input::placeholder,
.sk-terminal-search-control input::placeholder {
  color: var(--sk-color-ink-faint);
  opacity: 1;
}

.sk-terminal-order-search input:focus,
.sk-terminal-search-control input:focus {
  outline: none;
}

.sk-terminal-catalog-results {
  display: grid;
  max-height: 28rem;
  margin: var(--sk-space-4) 0 0;
  padding: 0;
  overflow-y: auto;
  list-style: none;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}

.sk-terminal-catalog-results li + li {
  border-top: 1px solid var(--sk-color-border-soft);
}

/* Treffet er en rad-knapp: mål og rytme her, farger i :where-regelen under
   så en variantklasse aldri taper mot containeren. */

:where(.sk-terminal-catalog-results) button {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-4);
  width: 100%;
  min-height: 5rem;
  padding: var(--sk-space-4) var(--sk-space-5);
  text-align: left;
  cursor: pointer;
}

:where(.sk-terminal-catalog-results) button {
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
}

:where(.sk-terminal-catalog-results) button:hover {
  background: var(--sk-color-surface-hover);
}

.sk-terminal-catalog-result__main {
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
  min-width: 0;
}

.sk-terminal-catalog-result__image {
  flex: none;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: var(--sk-radius-md);
  object-fit: cover;
  background: var(--sk-color-surface-hover);
}

.sk-terminal-catalog-result__content {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-2);
}

.sk-terminal-catalog-result__title,
.sk-terminal-catalog-result__meta {
  overflow-wrap: anywhere;
}

.sk-terminal-catalog-result__title {
  font-size: var(--sk-font-size-md);
  line-height: 1.3;
}

.sk-terminal-catalog-result__meta {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: 1.4;
}

.sk-terminal-catalog-result__price {
  justify-self: end;
  padding-left: var(--sk-space-4);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.sk-terminal-customer-list {
  margin-top: 1rem;
  padding: 0;
  overflow: hidden;
  list-style: none;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}

/* Kunderegisteret: en oversikt man leter i, ikke en kø man går gjennom.
   Én kolonne ga sju kunder på skjermen og et bredt tomrom til høyre.
   `auto-fit` gir to eller tre kolonner der det er plass, og faller til én
   på kassa-PC-en uten en egen regel. Radene er egne kort med luft mellom seg
   (samme form som Oppgjør-radene); et rutenett med 1px-gap over en grå flate
   ga grå fyllceller der siste rad ikke fylte kolonnene. */

.sk-terminal-customer-list.is-directory {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr));
  gap: var(--sk-space-3);
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: none;
}

/* Kunderaden: mål og rytme i den første regelen, farger og ramme i
   :where-regelen så en variantklasse aldri taper mot containeren. */

:where(.sk-terminal-customer-list) > button,
.sk-terminal-customer-result {
  display: flex;
  width: 100%;
  min-height: 4.75rem;
  align-items: center;
  gap: 0.8rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  text-align: left;
  cursor: pointer;
}

:where(.sk-terminal-customer-list) > button,
.sk-terminal-customer-result {
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
}

:where(.sk-terminal-customer-list) > button:hover,
.sk-terminal-customer-result:hover {
  background: var(--sk-color-surface-hover);
}

:where(.sk-terminal-customer-list) > button:last-child,
.sk-terminal-customer-list > li:last-child .sk-terminal-customer-result {
  border-bottom: 0;
}

/* Registeret har rutenett-linjer i stedet for radskiller; står etter
   grunnregelen fordi begge nå har samme (lave) spesifisitet. */

:where(.sk-terminal-customer-list.is-directory) > button {
  min-height: var(--sk-terminal-touch-min);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
}

:where(.sk-terminal-customer-list) > button > span:nth-child(2),
.sk-terminal-customer-result > span:nth-child(2) {
  display: grid;
  flex: 1;
  gap: 0.15rem;
}

.sk-terminal-customer-list small {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-customer-contact {
  display: block;
  margin-top: var(--sk-space-1);
}

.sk-terminal-customer-list .sk-terminal-customer-history {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
}

/* Én linje under hodet: «Laster …», forklaring, hjelpetekst. */

.sk-terminal-hint {
  display: block;
  margin: var(--sk-space-3) 0 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: 1.5;
}

.sk-terminal-hint[role="status"] {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-control-h);
  margin: 0;
}

.sk-terminal-success {
  margin: var(--sk-space-3) 0;
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3) var(--sk-space-4);
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
  line-height: 1.45;
}

.sk-terminal-field {
  display: grid;
  gap: var(--sk-space-2);
  min-width: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-field > input,
.sk-terminal-field > select,
.sk-terminal-field > textarea {
  width: 100%;
  min-height: var(--sk-control-height);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-medium);
}

.sk-terminal-field > textarea {
  min-height: 6rem;
  resize: vertical;
}

.sk-terminal-check {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-touch-min);
  color: var(--sk-color-ink);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

.sk-terminal-check > input {
  width: 1.25rem;
  height: 1.25rem;
  flex: none;
  accent-color: var(--sk-color-primary);
}

/* Terminalens direkte informasjonskort må ha en kontrollerbar tekstflate,
   også når den generelle ansattstilen bruker gjennomskinnelige kort. */

html[data-surface="terminal"] #root > section.sk-card.sk-card--inset {
  background: var(--sk-color-surface);
  backdrop-filter: none;
}

/* Error references and public codes must wrap inside 360 px layouts. */

[role="alert"], .sk-form-error, .sk-terminal-error, .sk-terminal-notice, .sk-customer-portal-alert {
  min-width: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 480px) {
  .sk-terminal-payment-readiness-error {
    flex-direction: column;
    align-items: stretch;
  }
  .sk-terminal-payment-readiness-error > p { width: 100%; }
  .sk-terminal-payment-readiness-error > button { align-self: flex-start; }
}


/* ── Terminalens designkontrakt ──────────────────────────────────────────────
   Se docs/architecture/ui/TERMINAL-DESIGN-CONTRACT.md. Alt som er felles for panelene — knapper,
   overskrifter, kort, nøkkeltall, merkelapper, tomtilstand og søk — bor her,
   ÉN gang. Tokenene (`--sk-terminal-control-h`, `--sk-terminal-radius`) settes
   i 01-foundations.css og 00-screen-classes.css.

   Containerregler av typen `.foo button {}` skal skrives `:where(.foo) button`
   slik at de aldri slår gjennom variantklassene under. */

/* ── Knapper: fem varianter + ikonknapp. Gamle klasser er aliaser. ─────── */
.sk-terminal-primary,
.sk-terminal-secondary,
.sk-terminal-link,
.sk-terminal-danger,
.sk-terminal-danger-outline,
.sk-terminal-icon-button,
.sk-timebook-sheet-undo,
.sk-timebook-sheet-charge,
.sk-timebook-sheet-danger,
.sk-terminal-danger-button,
.sk-terminal-back-link,
.sk-profile-back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-control-h);
  border-radius: var(--sk-terminal-radius);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.2;
  cursor: pointer;
  /* Bytt tekst- og bakgrunnsfarge samtidig, slik at kontrasten holder. */
  transition: transform var(--sk-motion-fast);
}

.sk-terminal-primary {
  border: 0;
  padding: 0 var(--sk-space-5);
  background: var(--sk-color-primary);
  color: white;
}
.sk-terminal-primary:hover:not(:disabled) {
  background: var(--sk-color-primary-hover);
}
.sk-terminal-primary:active:not(:disabled) {
  transform: translateY(1px);
}
.sk-terminal-primary:disabled {
  border: 1px solid var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}

.sk-terminal-secondary,
.sk-timebook-sheet-undo,
.sk-timebook-sheet-charge,
.sk-profile-back {
  border: 1px solid var(--sk-color-border-interactive);
  padding: 0 var(--sk-space-5);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
}
.sk-terminal-secondary:hover:not(:disabled),
.sk-timebook-sheet-undo:hover:not(:disabled),
.sk-timebook-sheet-charge:hover:not(:disabled),
.sk-profile-back:hover:not(:disabled) {
  background: var(--sk-color-surface-hover);
}
.sk-terminal-secondary:disabled,
.sk-timebook-sheet-undo:disabled,
.sk-timebook-sheet-charge:disabled,
.sk-profile-back:disabled {
  border-color: var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}

.sk-terminal-link,
.sk-terminal-back-link {
  border: 0;
  padding: 0 var(--sk-space-3);
  background: transparent;
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-link:hover:not(:disabled),
.sk-terminal-back-link:hover:not(:disabled) {
  background: var(--sk-color-primary-soft);
}
/* Tekstknapp for noe som fjerner: samme form, rød tekst. */
.sk-terminal-link.is-danger {
  color: var(--sk-color-danger);
}
.sk-terminal-link:disabled,
.sk-terminal-back-link:disabled {
  background: transparent;
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}

.sk-terminal-danger {
  border: 0;
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-danger);
  color: var(--sk-color-canvas);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-danger:hover:not(:disabled) {
  background: color-mix(in srgb, var(--sk-color-danger) 86%, var(--sk-color-ink));
}
.sk-terminal-danger:disabled {
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}

.sk-terminal-danger-outline,
.sk-timebook-sheet-danger,
.sk-terminal-danger-button {
  border: 1px solid var(--sk-color-danger);
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-surface);
  color: var(--sk-color-danger);
}
.sk-terminal-danger-outline:hover:not(:disabled),
.sk-timebook-sheet-danger:hover:not(:disabled),
.sk-terminal-danger-button:hover:not(:disabled) {
  background: var(--sk-color-danger-soft);
}
.sk-terminal-danger-outline:disabled,
.sk-timebook-sheet-danger:disabled,
.sk-terminal-danger-button:disabled {
  border-color: var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}

/* Kvadratisk ikonknapp: lukk-X, pil, «forstyrrelser». */
.sk-terminal-icon-button {
  width: var(--sk-terminal-control-h);
  height: var(--sk-terminal-control-h);
  flex: none;
  padding: 0;
  border: 1px solid var(--sk-color-border-interactive);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
}
.sk-terminal-icon-button:hover:not(:disabled) {
  background: var(--sk-color-surface-hover);
}
.sk-terminal-icon-button:disabled {
  border-color: var(--sk-color-disabled-border);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}
.sk-terminal-icon-button svg {
  width: 1.1rem;
  height: 1.1rem;
}

/* ── Panelhode ─────────────────────────────────────────────────────────────
   <div class="sk-terminal-section-heading">
     <div><p eyebrow/><h1/><p lead/></div>
     <div class="sk-terminal-heading-actions">…</div>
   </div>
   h1 = panel, h2 = underseksjon, h3 = kort. */
.sk-terminal-section-heading,
.sk-profile-section-heading,
.sk-terminal-cart-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-4);
}
.sk-terminal-section-heading > div,
.sk-profile-section-heading > div,
.sk-terminal-cart-heading > div {
  min-width: 0;
}
.sk-terminal-section-heading h1,
.sk-terminal-section-heading h2,
.sk-terminal-section-heading h3,
.sk-profile-section-heading h1,
.sk-profile-section-heading h2,
.sk-profile-section-heading h3,
.sk-terminal-cart-heading h1,
.sk-terminal-cart-heading h2,
.sk-terminal-cart-heading h3 {
  margin: 0;
  line-height: 1.15;
  letter-spacing: -0.035em;
}
.sk-terminal-section-heading h1,
.sk-profile-section-heading h1,
.sk-terminal-cart-heading h1 {
  font-size: var(--sk-type-page-title);
  letter-spacing: -0.04em;
}
.sk-terminal-section-heading h2,
.sk-profile-section-heading h2,
.sk-terminal-cart-heading h2 {
  font-size: var(--sk-type-section-title);
}
.sk-terminal-section-heading h3,
.sk-profile-section-heading h3,
.sk-terminal-cart-heading h3,
.sk-terminal-cart-heading .sk-terminal-cart-section-title {
  font-size: var(--sk-type-card-title);
  letter-spacing: -0.02em;
}
/* Profile subsections sit beneath the customer heading without changing its visual scale. */
.sk-profile-section .sk-terminal-section-heading h3 {
  font-size: var(--sk-type-section-title);
  letter-spacing: -0.035em;
}
.sk-terminal-section-heading .sk-terminal-eyebrow,
.sk-profile-section-heading .sk-terminal-eyebrow,
.sk-terminal-cart-heading .sk-terminal-eyebrow {
  margin-bottom: var(--sk-space-1);
}
/* Teller i en overskrift eller på en flis: «Venteliste 10», «Oppgaver 0».
   Samme merkelapp som .sk-terminal-status.is-muted, men den står INNE i
   teksten og skal ikke arve overskriftens størrelse eller sperring.
   .sk-nora-tasks__count er alias for overgangen. */
.sk-terminal-heading-count,
.sk-nora-tasks__count {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-1);
  margin-left: var(--sk-space-2);
  border-radius: var(--sk-radius-pill);
  padding: var(--sk-space-1) var(--sk-space-3);
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: 0;
  line-height: 1.3;
  vertical-align: middle;
  white-space: nowrap;
}
/* Løs tekst i hodet (tellere, datoer) er metatekst. */
.sk-terminal-section-heading > span,
.sk-profile-section-heading > span,
.sk-terminal-cart-heading > span,
.sk-terminal-section-heading p:not(.sk-terminal-eyebrow, .sk-terminal-lead),
.sk-profile-section-heading p:not(.sk-terminal-eyebrow, .sk-terminal-lead),
.sk-terminal-cart-heading p:not(.sk-terminal-eyebrow, .sk-terminal-lead) {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-terminal-lead {
  max-width: 62ch;
  margin: var(--sk-space-2) 0 0;
  color: var(--sk-color-ink-soft);
  line-height: var(--sk-line-copy);
}
.sk-terminal-heading-actions {
  display: flex;
  flex: none;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--sk-space-2);
}

/* ── Kort ────────────────────────────────────────────────────────────────── */
.sk-terminal-card,
.sk-terminal-cart-editor,
.sk-nora-side-card,
.sk-terminal-overview-today {
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-5);
  background: var(--sk-color-surface);
}
/* Siste barn i et kort skal ikke legge luft oppå kortets egen polstring. */
.sk-terminal-card > .sk-terminal-section-heading:last-child,
.sk-terminal-card > .sk-terminal-summary-grid:last-child,
.sk-terminal-card > .sk-terminal-cart-lines:last-child {
  margin-bottom: 0;
}

/* ── Nøkkeltall: fliser i auto-fit-kolonner. article > span + strong ────── */
.sk-terminal-summary-grid,
.sk-profile-stats,
.sk-terminal-my-day {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-6);
}
.sk-terminal-summary-grid article,
.sk-profile-stats article,
.sk-terminal-my-day article {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: center;
  gap: var(--sk-space-1);
  min-height: 6.25rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-4);
  background: var(--sk-color-surface);
}
.sk-terminal-summary-grid article:has(> svg),
.sk-profile-stats article:has(> svg),
.sk-terminal-my-day article:has(> svg) {
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  column-gap: var(--sk-space-3);
}
.sk-terminal-summary-grid article > svg,
.sk-profile-stats article > svg,
.sk-terminal-my-day article > svg {
  grid-row: 1 / 3;
  width: 1.4rem;
  height: 1.4rem;
  color: var(--sk-color-primary);
}
.sk-terminal-summary-grid article span,
.sk-profile-stats article span,
.sk-terminal-my-day article span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-terminal-summary-grid article strong,
.sk-profile-stats article strong,
.sk-terminal-my-day article strong {
  font-size: var(--sk-font-size-lg);
  font-variant-numeric: tabular-nums;
}
/* Stemplingskortet er invertert (mørk flate). Teksten bruker canvas-tokenet i
   stedet for hardkodet white: canvas og ink bytter plass i mørkt tema, så
   kortet beholder kontrasten uansett tema. */
.sk-terminal-summary-grid article.is-attendance {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  column-gap: var(--sk-space-3);
  background: var(--sk-color-ink);
  color: var(--sk-color-canvas);
}
.sk-terminal-summary-grid article.is-attendance span {
  color: var(--sk-color-border);
}
/* Knappen på det mørke kortet: eksplisitt ink på surface, ellers arver den
   hvit tekst fra kortet og forsvinner. */
:where(.sk-terminal-summary-grid article.is-attendance) button {
  min-height: var(--sk-terminal-touch-min);
  border: 0;
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
/* Standard fokusring gir bare 2.63:1 mot det mørke kortet; bruk den inverse. */
:where(.sk-terminal-summary-grid article.is-attendance) button:focus-visible {
  outline-color: var(--sk-color-focus-ring-inverse);
}

/* ── Merkelapper ─────────────────────────────────────────────────────────── */
.sk-terminal-status {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-1);
  border-radius: var(--sk-radius-pill);
  padding: var(--sk-space-1) var(--sk-space-3);
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.3;
  white-space: nowrap;
}
.sk-terminal-status.is-info,
.sk-terminal-status.is-confirmed {
  background: var(--sk-color-info-soft);
  color: var(--sk-color-info);
}
.sk-terminal-status.is-warning,
.sk-terminal-status.is-arrived,
.sk-terminal-status.is-started {
  background: var(--sk-color-warning-soft);
  color: var(--sk-color-warning);
}
.sk-terminal-status.is-success,
.sk-terminal-status.is-completed {
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
}
.sk-terminal-status.is-danger,
.sk-terminal-status.is-no_show {
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}
.sk-terminal-status.is-muted,
.sk-terminal-status.is-cancelled,
.sk-terminal-status.is-pending {
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-ink-soft);
}

/* ── Tomtilstand og lastelinje ───────────────────────────────────────────── */
.sk-terminal-empty-card,
.sk-terminal-order-empty,
.sk-terminal-empty {
  display: grid;
  justify-items: center;
  gap: var(--sk-space-2);
  margin: 0;
  border: 1px dashed var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-8) var(--sk-space-5);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink-soft);
  text-align: center;
}
.sk-terminal-empty-card svg,
.sk-terminal-order-empty svg,
.sk-terminal-empty svg {
  width: 1.75rem;
  height: 1.75rem;
  color: var(--sk-color-ink-faint);
}
.sk-terminal-empty-card h3,
.sk-terminal-order-empty h3,
.sk-terminal-empty h3 {
  margin: 0;
  color: var(--sk-color-ink);
  font-size: var(--sk-type-card-title);
  letter-spacing: -0.02em;
}
.sk-terminal-empty-card p,
.sk-terminal-order-empty p,
.sk-terminal-empty p {
  margin: 0;
}
/* Lastelinja .sk-terminal-hint ligger i 01-foundations.css. */

/* Felt og søk (.sk-terminal-search, .sk-terminal-search-control og aliaset
   .sk-terminal-order-search) ligger i 01-foundations.css. */

/* ── Segmentert velger: to til fire likeverdige valg ──────────────────────────
   ÉN definisjon. Den fantes i to — 04-calendar.css (flex, `is-active`, valgt
   = surface-hover) og 02-shifts-and-checkout.css (grid, `is-selected`, valgt =
   primærfarge) — og hvilken som gjaldt kom an på hvilken fil som lastet sist.
   Utslaget var synlig: den UVALGTE «Pris»-fanen beholdt fet skrift, så to av
   tre faner så valgte ut samtidig.

   Kontrakten her:
     <div class="sk-terminal-segmented" role="group" aria-label="…">
       <button class="is-selected">…</button>
       <button>…</button>
     </div>
   `is-active` er alias for `is-selected` mens flatene skrives om.

   Den valgte tilstanden er ENTYDIG: fylt flate, invers tekst og tyngre skrift.
   Alle tre samtidig, fordi bakgrunnen alene forsvinner i sollys over en
   kasseskuff og skriftvekten alene ikke er en tilstand.

   MERK: så lenge duplikatene i 02 og 04 står, laster de etter denne og vinner.
   De skal fjernes; se rapporten fra Wave 1. */
.sk-terminal-segmented {
  display: grid;
  /* Like brede flater når det er plass, to og to når det ikke er det. Aldri
     smalere enn en tommel — `auto-fit` framfor et mediespørsmål. */
  grid-template-columns: repeat(auto-fit, minmax(var(--sk-terminal-control-h), 1fr));
  gap: var(--sk-space-1);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-1);
  background: var(--sk-color-surface-hover);
}
:where(.sk-terminal-segmented) > button {
  min-height: var(--sk-terminal-touch-min);
  border: 0;
  border-radius: var(--sk-radius-sm);
  padding: 0 var(--sk-space-2);
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.2;
  cursor: pointer;
}
:where(.sk-terminal-segmented) > button:hover:not(:disabled, .is-selected, .is-active) {
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
}
:where(.sk-terminal-segmented) > button.is-selected,
:where(.sk-terminal-segmented) > button.is-active {
  background: var(--sk-color-primary);
  color: white;
  font-weight: var(--sk-font-weight-strong);
}
:where(.sk-terminal-segmented) > button:disabled {
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}

/* ── Statuslinje under topplinja ─────────────────────────────────────────────
   For beskjeder som gjelder HELE flaten, ikke ett panel: skriveren er borte,
   nettet er nede. Den står mellom topplinja og arbeidsflaten fordi
   designkontrakten § 3 gir hvert panel ÉN statuslinje — et banner inne i
   innholdet dyttet panelets eyebrow og kladdefeilen nedover og ble en andre
   status i samme panel.

   Kompakt med vilje: den skal leses i forbifarten, ikke ta plassen til
   arbeidet. Lukkeknappen er .sk-terminal-link. */
.sk-terminal-bar-notice {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  margin: 0;
  padding: var(--sk-space-2) var(--sk-space-5);
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-warning-soft);
  color: var(--sk-color-warning);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.4;
}
.sk-terminal-bar-notice > span {
  min-width: 0;
}
:where(.sk-terminal-bar-notice) button {
  flex: none;
  min-height: var(--sk-terminal-touch-min);
  color: inherit;
}

.sk-terminal-camera-preview {
  width: 100%;
  max-width: 100%;
  max-height: 40vh;
}

.sk-terminal-checkout-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 20rem;
  gap: var(--sk-space-4);
  margin-top: var(--sk-space-6);
}
/* .sk-terminal-cart-editor og .sk-terminal-cart-heading er kort- og
   hodealiaser i 01a-contract.css. */
.sk-terminal-checkout-grid aside {
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-5);
  background: var(--sk-color-surface);
}
.sk-terminal-inline-fields {
  display: grid;
  grid-template-columns: 1fr 9rem auto;
  gap: 0.6rem;
}
/* Ink-flate med canvas-tekst (14.96:1) i stedet for hardkodet white, så paret følger
   temaet og ikke kollapser dersom ink/canvas byttes om.
   `:where()` gir containerdelen null spesifisitet, så en variantklasse
   (.sk-terminal-secondary på «Oppdater») alltid vinner over denne. */
:where(.sk-terminal-inline-fields) button {
  min-height: var(--sk-terminal-control-h);
  border: 0;
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-ink);
  color: var(--sk-color-canvas);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-terminal-cart-lines {
  display: grid;
  gap: 0.55rem;
  margin-top: 1rem;
  padding: 0;
  list-style: none;
}
.sk-terminal-cart-lines > article,
.sk-terminal-cart-lines > li {
  display: grid;
  align-items: center;
  gap: 0.8rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  padding: 0.9rem;
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  text-align: left;
}
/* Varelinje i kassa: tittel | antall | beløp | handlinger. Kolonnene tar
   plassen innholdet trenger, tittelen får resten; radene har luft nok til at
   to linjer tittel ikke klemmer stepperen. */
.sk-terminal-cart-lines > article {
  grid-template-columns: minmax(0, 1fr) auto minmax(6.5rem, auto) auto;
  gap: var(--sk-space-4);
  padding: var(--sk-space-4);
  line-height: 1.35;
}
.sk-terminal-cart-lines > article > span:first-child > strong {
  font-size: var(--sk-font-size-md);
}
.sk-terminal-cart-lines > li {
  grid-template-columns: minmax(0, 1fr) auto;
}
.sk-terminal-cart-lines > article > strong {
  min-width: 0;
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.sk-terminal-cart-lines > article > span:first-child,
.sk-terminal-cart-lines > li > span:first-child {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}
.sk-terminal-cart-lines > article > span:first-child .sk-terminal-price-changed {
  color: var(--sk-color-warning);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-cart-lines > article > span:first-child .sk-terminal-unit-price {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-medium);
}
.sk-terminal-cart-lines > li small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
/* Klikkbar rad: hele innholdet er én knapp (kontraktens radgrammatikk
   «tid | tittel+meta | beløp | merkelapp»), tegnet som raden selv. */
:where(.sk-terminal-cart-lines > li) > button {
  display: grid;
  grid-template-columns: 4.5rem minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--sk-space-3);
  width: 100%;
  min-height: 0;
  border: 0;
  border-radius: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
:where(.sk-terminal-cart-lines > li) > button:disabled {
  cursor: default;
  opacity: 0.6;
}
:where(.sk-terminal-cart-lines > li) > button > time {
  color: var(--sk-color-ink-soft);
  font-variant-numeric: tabular-nums;
}
:where(.sk-terminal-cart-lines > li) > button > span:not(.sk-terminal-status) {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}
:where(.sk-terminal-cart-lines > li) > button > span:not(.sk-terminal-status) > small {
  color: var(--sk-color-ink-soft);
  overflow-wrap: anywhere;
}
:where(.sk-terminal-cart-lines > li) > button > strong {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.sk-terminal-cart-lines > li .sk-terminal-inline-fields {
  grid-template-columns: auto auto auto;
  align-items: center;
}
/* --- Rabatt i kassa ------------------------------------------------------
   Rabatten er en PÅSTAND om at prisen er endret, og skal kunne leses uten å
   regne: den strøkne prisen står ved siden av den kunden betaler, og
   merkelappen sier hvor mye («−10 %»). */
.sk-terminal-cart-lines > article > strong > s {
  display: block;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-medium);
}
.sk-terminal-cart-lines > article > span:first-child > .sk-terminal-status {
  justify-self: start;
}
/* Rabattknappen legger til en kolonne i bunnlinja. Regelen står bak :has() så
   den bare gjelder den bunnlinja som faktisk har knappen — en eldre bunnlinje
   uten den beholder sine fire kolonner. */
.sk-terminal-sale-footer:has(.sk-terminal-sale-discount-trigger) {
  grid-template-columns: minmax(10rem, 1fr) auto auto minmax(12rem, auto) minmax(12rem, auto);
}
.sk-terminal-sale-discount {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-terminal-sale-discount > strong {
  color: inherit;
  font-variant-numeric: tabular-nums;
}
:where(.sk-terminal-sale-discount) button {
  min-height: 0;
  padding: 0 var(--sk-space-2);
  font-size: var(--sk-font-size-xs);
}

/* Rabattarket: samme dialekt som de andre arkene i kassa — rund tilbakepil,
   eyebrow med linjen det gjelder, og h2 som tittel. */
.sk-terminal-discount-layer {
  position: fixed;
  inset: 0;
  z-index: 121;
  display: grid;
  place-items: center;
  padding: var(--sk-space-4);
  background: rgb(20 18 28 / 55%);
}
.sk-terminal-discount-sheet {
  display: grid;
  width: min(34rem, 100%);
  box-sizing: border-box;
  max-height: calc(100dvh - 2 * var(--sk-space-4));
  overflow-y: auto;
  gap: var(--sk-space-4);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-5);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}
.sk-terminal-discount-sheet > header {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-terminal-discount-sheet h2 {
  margin: 0;
}
.sk-terminal-discount-sheet label {
  display: grid;
  gap: var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-discount-sheet input {
  min-height: var(--sk-terminal-touch-min);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-3);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
}
.sk-terminal-discount-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
.sk-terminal-discount-preview {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-md);
  font-variant-numeric: tabular-nums;
}
/* Den strøkne prisen på kundeskjermen — samme grep som i kurven. */
.sk-customer-line-original {
  display: block;
  opacity: 0.6;
  font-size: var(--sk-type-display-small);
  font-weight: var(--sk-font-weight-medium);
}

/* ── Frisør per linje ──────────────────────────────────────────────────────
   Brikken sitter blant linjens handlinger og er en initialbrikke, ikke en
   nedtrekksliste: valget tas med en finger, med kunden ved siden av. Åpnet
   står laget som brikker i selve brikkens egen rad — en flytende meny ville
   blitt klippet av kurvens egen rulling. */
.sk-terminal-line-stylist {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-2);
  /* Laget bryter til flere rader inne i brikken. Uten taket ville en salong
     med åtte frisører dyttet tittelkolonnen sammen til ingenting. */
  max-width: 12rem;
}
.sk-terminal-stylist-chip {
  border-radius: 50%;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: 0.02em;
}
.sk-terminal-stylist-chip.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary);
  color: white;
}
.sk-terminal-stylist-choices {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
/* «hos Sara» står under tittelen, i samme dempede skrift som enhetsprisen —
   den forteller at NOEN har flyttet linjen, ikke at linjen er et varsel. */
.sk-terminal-cart-lines > article > span:first-child .sk-terminal-line-stylist-name {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-price-level-notice { display: grid; gap: var(--sk-space-3); }
.sk-terminal-button { min-height: max(44px,var(--sk-terminal-touch-min)); padding: var(--sk-space-3) var(--sk-space-4); color: var(--sk-color-ink); background: var(--sk-color-surface); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); font: inherit; cursor: pointer; }
.sk-terminal-button:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }

/* En rad som folder seg ut UNDER seg selv — venteliste, oppgjør, retur.
   Innholdet ble før løftet ut i et lag over skjermen, og da mistet den som
   jobber nedover lista både plassen sin og flatens farger. Her arves begge:
   raden er fortsatt raden, den har bare blitt høyere. */
.sk-terminal-row-expand {
  grid-column: 1 / -1;
  min-width: 0;
  margin-top: var(--sk-space-3);
}
/* Kortet har allerede skillelinje og luft fra timearket; her er raden selv
   rammen, så toppmargen skal ikke legges oppå den. */
.sk-terminal-row-expand > .sk-timebook-sheet-card {
  margin-top: 0;
}
.sk-terminal-cart-lines > li.is-selected-sale {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-cashup-sale-detail {
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-4);
  background: var(--sk-color-surface);
}
.sk-cashup-sale-detail > .sk-terminal-section-heading {
  margin-bottom: var(--sk-space-2);
}
.sk-cashup-sale-detail__footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
  margin-top: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-4);
}
.sk-cashup-sale-detail__footer > span {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-cashup-sale-detail__footer small {
  color: var(--sk-color-ink-soft);
}
:where(.sk-cashup-sale-detail__footer) > button {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-cashup-return-sheet > .sk-terminal-hint {
  margin: 0 0 var(--sk-space-4);
}
.sk-cashup-return-lines {
  margin-bottom: var(--sk-space-4);
}
.sk-cashup-return-quantity output {
  min-width: 2rem;
  text-align: center;
  font-weight: var(--sk-font-weight-strong);
  font-variant-numeric: tabular-nums;
}
.sk-cashup-return-footer {
  position: sticky;
  bottom: calc(-1 * var(--sk-space-6));
  z-index: 4;
  display: grid;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-5);
  padding: var(--sk-space-4) 0 calc(var(--sk-space-4) + env(safe-area-inset-bottom));
  background: var(--sk-color-surface);
}
.sk-cashup-return-footer > strong {
  font-size: var(--sk-font-size-lg);
}
/* Trykket som folder ut skal se ut som et trykk, ikke som en lenke man mister
   av syne. Pila peker ned når det er noe å åpne, opp når det er åpent. */
.sk-terminal-row-toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-1);
}
.sk-terminal-row-toggle svg {
  width: 1em;
  height: 1em;
  flex: none;
  transition: transform var(--sk-motion-fast, 120ms) ease;
}
.sk-terminal-row-toggle svg.is-open {
  transform: rotate(180deg);
}

/* Arbeidstid er kontraktens panel (.sk-terminal-panel) + retten til å eie hele
   høyden på kasse-PC-en. Panelets egen polstring og maksbredde ville skjøvet
   vaktplanen ut av den låste skjermen, så de settes her. */
.sk-terminal-work-area,
.sk-terminal-panel.sk-terminal-work-area {
  display: flex;
  width: min(82rem, 100%);
  height: 100%;
  min-height: 0;
  margin: 0 auto;
  padding: 0;
  flex-direction: column;
  gap: var(--sk-space-3);
}
/* Alias: hodet ER .sk-terminal-section-heading. Her står bare det som skiller
   et hode i en flate som eier høyden — det skal ikke krympe, og luften under
   kommer fra flex-gapen, ikke fra en margin. */
.sk-terminal-work-area-header {
  flex: 0 0 auto;
  margin-bottom: 0;
}
.sk-terminal-work-area-header h1 {
  margin: var(--sk-space-1) 0 0;
}
/* Innholdet i en arbeidsflate er ikke sitt eget panel — panelet er
   .sk-terminal-work-area over. Alias for den eldre panelklassen. */
.sk-terminal-work-area-view {
  display: block;
  min-height: 0;
  padding-bottom: var(--sk-space-6);
}
.sk-terminal-work-area-tabs {
  display: inline-flex;
  overflow: hidden;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}
/* Fanene er knapper som ER en flis: mål her, farger i :where-regelen under. */
:where(.sk-terminal-work-area-tabs) button {
  display: inline-flex;
  min-height: var(--sk-terminal-touch-min);
  align-items: center;
  gap: var(--sk-space-2);
  padding-inline: var(--sk-space-4);
  cursor: pointer;
}
:where(.sk-terminal-work-area-tabs) button {
  border: 0;
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
}
:where(.sk-terminal-work-area-tabs) button + button {
  border-left: 1px solid var(--sk-color-border-soft);
}
:where(.sk-terminal-work-area-tabs) button.is-active {
  background: var(--sk-color-primary);
  color: white;
}
.sk-terminal-work-area-tabs svg {
  width: 1.25rem;
  height: 1.25rem;
}
.sk-terminal-work-area-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.sk-terminal-work-area-body:has(.sk-shift-plan-calendar) {
  overflow: hidden;
}
.sk-terminal-work-area-body:has(.sk-shift-plan-calendar) > .sk-terminal-work-area-view,
.sk-terminal-work-area-body:has(.sk-shift-plan-calendar) > .sk-terminal-panel {
  display: flex;
  height: 100%;
  min-height: 0;
  flex-direction: column;
  overflow: hidden;
  padding-bottom: 0;
}
.sk-terminal-work-area-body:has(.sk-shift-plan-calendar) .sk-shift-plan-calendar {
  display: grid;
  min-height: 0;
  flex: 1 1 auto;
  grid-template-rows: auto minmax(0, 1fr);
}
.sk-terminal-work-area-body:has(.sk-shift-plan-calendar) .sk-shift-grid {
  min-height: 0;
}
.sk-terminal-work-area-body:has(.sk-shift-plan-calendar) .sk-shift-grid-scroll {
  height: 100%;
  max-height: none;
}

/* Vaktplanen. Én bolk per dag, egne vakter markert — hun leter etter seg selv
   først, og finner kollegaen i samme blikk. */
.sk-terminal-shift-day {
  margin-top: var(--sk-space-6);
}
/* Norske ukedager skrives med liten bokstav; bare første tegn opp. */
.sk-terminal-shift-day .sk-terminal-eyebrow {
  text-transform: none;
}
.sk-terminal-shift-day .sk-terminal-eyebrow::first-letter {
  text-transform: uppercase;
}
.sk-shift-plan-calendar {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-shift-week-tabs {
  display: inline-grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  justify-self: start;
  overflow: hidden;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}
:where(.sk-shift-week-tabs) button {
  min-height: var(--sk-control-height);
  border: 0;
  padding: 0 var(--sk-space-4);
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
:where(.sk-shift-week-tabs) button + button {
  border-left: 1px solid var(--sk-color-border-soft);
}
:where(.sk-shift-week-tabs) button.is-active {
  background: var(--sk-color-primary);
  color: white;
}
/* Visningsbryteren og ukevalget står på samme linje, men brytes under
   hverandre på en smal skjerm framfor å presse tabbene sammen til ulesbare
   knapper. */
.sk-shift-plan-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  align-items: center;
  justify-content: space-between;
}
.sk-shift-view-tabs {
  /* Denne klassen deles av vaktplanen (uke/dag/liste – 3 knapper) og
     timeboken (kalender/liste – 2 knapper). Et fast repeat(3, …) ga et
     tomt, tredje rutenett-felt i timeboken når bare to knapper ble
     rendret. auto-flow lager i stedet én kolonne per faktisk knapp. */
  display: inline-grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  overflow: hidden;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}
:where(.sk-shift-view-tabs) button {
  min-height: var(--sk-control-height);
  border: 0;
  padding: 0 var(--sk-space-5);
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
:where(.sk-shift-view-tabs) button + button {
  border-left: 1px solid var(--sk-color-border-soft);
}
:where(.sk-shift-view-tabs) button.is-active {
  background: var(--sk-color-primary);
  color: white;
}
.sk-shift-day-nav {
  display: flex;
  gap: var(--sk-space-2);
  align-items: center;
}
.sk-shift-day-nav strong {
  min-width: 8.5rem;
  text-align: center;
}
.sk-shift-day-nav strong::first-letter {
  text-transform: uppercase;
}
:where(.sk-shift-day-nav) button {
  display: grid;
  width: var(--sk-control-height);
  height: var(--sk-control-height);
  place-items: center;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: inherit;
  cursor: pointer;
}
:where(.sk-shift-day-nav) button:disabled {
  opacity: 0.4;
  cursor: default;
}
.sk-shift-day-nav .is-forward {
  transform: rotate(180deg);
}

/* Rutenettet. Samme oppbygning som timeboken — klistret overskrift, tidsakse i
   margen, absolutt plasserte blokker — så de to flatene leses med samme blikk. */
.sk-shift-grid {
  --sk-shift-columns: repeat(7, minmax(5.5rem, 1fr));
  overflow: hidden;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
}
.sk-shift-grid-scroll {
  max-height: 62vh;
  overflow: auto;
  overscroll-behavior: contain;
}
.sk-shift-grid-head,
.sk-shift-grid-body {
  display: grid;
  grid-template-columns: 3.6rem var(--sk-shift-columns);
  min-width: max-content;
}
.sk-shift-grid-head-cell,
.sk-shift-grid-corner {
  position: sticky;
  top: 0;
  z-index: 3;
  background: var(--sk-color-surface);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-shift-grid-corner {
  left: 0;
  z-index: 4;
}
.sk-shift-grid-head-cell {
  display: grid;
  gap: 0.1rem;
  align-content: center;
  min-height: 4.1rem;
  border: 0;
  border-left: 1px solid var(--sk-color-border-soft);
  padding: 0.5rem 0.6rem;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-shift-grid-head-cell.is-static {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  cursor: default;
}
.sk-shift-grid-head-cell > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-shift-grid-head-cell > span::first-letter {
  text-transform: uppercase;
}
.sk-shift-grid-head-cell > strong {
  overflow: hidden;
  font-size: var(--sk-font-size-md);
  white-space: nowrap;
  text-overflow: ellipsis;
}
.sk-shift-grid-head-cell > em {
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
  font-style: normal;
}
.sk-shift-grid-head-cell.is-mine {
  background: var(--sk-color-primary-soft);
}
/* I dag er ikke et utvalg, men et faktum. Prikken skiller de to. */
.sk-shift-grid-head-cell.is-today > strong::after {
  display: inline-block;
  width: 0.4rem;
  height: 0.4rem;
  margin-left: 0.3rem;
  border-radius: 50%;
  background: var(--sk-color-warning);
  vertical-align: middle;
  content: "";
}
.sk-shift-grid-body {
  position: relative;
}
.sk-shift-grid-gutter {
  position: relative;
}
.sk-shift-grid-gutter span {
  position: absolute;
  right: 0.45rem;
  transform: translateY(-0.4rem);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-variant-numeric: tabular-nums;
}
.sk-shift-grid-gutter span:first-child {
  transform: none;
}
.sk-shift-grid-column {
  position: relative;
  border-left: 1px solid var(--sk-color-border-soft);
}
.sk-shift-grid-rule {
  position: absolute;
  left: 0;
  right: 0;
  border-top: 1px solid var(--sk-color-border);
}
.sk-shift-grid-free {
  position: absolute;
  top: 0.6rem;
  left: 0;
  right: 0;
  margin: 0;
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  text-align: center;
}
/* Kollegenes vakter: nok til å se at man ikke står alene, for lite til å
   konkurrere med sin egen. */
.sk-shift-coverage {
  position: absolute;
  left: 0.2rem;
  right: 0.2rem;
  z-index: 0;
  border-radius: 0.4rem;
  background: color-mix(
    in srgb,
    var(--sk-color-ink-faint) 14%,
    var(--sk-color-surface)
  );
}
.sk-shift-block {
  position: absolute;
  left: 0.2rem;
  right: 0.2rem;
  z-index: 1;
  display: grid;
  gap: 0.05rem;
  align-content: start;
  overflow: hidden;
  border: 1px solid var(--sk-color-border);
  border-left: 5px solid var(--sk-color-ink-faint);
  border-radius: 0.55rem;
  padding: 0.28rem 0.45rem;
  background: var(--sk-color-surface);
}
.sk-shift-block.is-mine {
  border-color: color-mix(
    in srgb,
    var(--sk-color-primary) 38%,
    var(--sk-color-surface)
  );
  border-left-color: var(--sk-color-primary);
  background: color-mix(
    in srgb,
    var(--sk-color-primary) 12%,
    var(--sk-color-surface)
  );
}
.sk-shift-block-time {
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  font-variant-numeric: tabular-nums;
}
.sk-shift-block strong {
  overflow: hidden;
  font-size: var(--sk-font-size-xs);
  white-space: nowrap;
  text-overflow: ellipsis;
}
.sk-shift-block small {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* Dagen i rekkefølge. Klokkeslettet står i egen kolonne med tabulærsiffer, så
   radene under hverandre danner en lesbar tidslinje framfor en ujevn kant. */
.sk-timebook-list {
  display: grid;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-timebook-list-row {
  display: grid;
  grid-template-columns: 4.4rem minmax(0, 1fr) auto;
  gap: var(--sk-space-3);
  align-items: center;
  width: 100%;
  min-height: 3.6rem;
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  border-radius: 0;
  padding: var(--sk-space-3) var(--sk-space-4);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-timebook-list > li:first-child .sk-timebook-list-row {
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-timebook-list-row:hover,
.sk-timebook-list-row:focus-visible {
  background: var(--sk-color-surface-hover);
}
.sk-timebook-list-row.is-cancelled {
  opacity: 0.62;
}
.sk-timebook-list-time {
  display: grid;
  font-variant-numeric: tabular-nums;
}
.sk-timebook-list-time small {
  color: var(--sk-color-ink-faint);
}
.sk-timebook-list-who {
  display: grid;
  min-width: 0;
}
.sk-timebook-list-who strong,
.sk-timebook-list-who small {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.sk-timebook-list-who small {
  color: var(--sk-color-ink-soft);
}

.sk-shift-list {
  display: grid;
  gap: var(--sk-space-5);
}
.sk-shift-list-day {
  display: flex;
  gap: var(--sk-space-3);
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: var(--sk-space-2);
}
/* inline-block: ::first-letter virker ikke på en inline-flex-knapp.
   Regelen må henge på en egen klasse: `:where(.sk-shift-list-day) button` har
   bare elementvekt, og kontraktens .sk-terminal-link (01a-contract.css) vant —
   dagen sto igjen med liten forbokstav. */
.sk-terminal-shift-label {
  display: inline-block;
}
.sk-terminal-shift-label::first-letter {
  text-transform: uppercase;
}
.sk-shift-list-day > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-shift-day .sk-terminal-section-heading h3::first-letter {
  text-transform: uppercase;
}
.sk-terminal-shift-day .sk-terminal-section-heading > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
/* Egen vakt får venstrekant og fylt flate. Fet skrift alene forsvinner i en
   liste der alle rader har et navn i fet skrift. */
.sk-terminal-cart-lines > li.is-mine {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  box-shadow: inset 0.22rem 0 0 var(--sk-color-primary);
}

/* Det kunden allerede har betalt for. Nøytralt når det bare er en opplysning,
   tydelig når klippekortet treffer noe som står på regningen akkurat nå. */
.sk-terminal-entitlements {
  display: grid;
  gap: var(--sk-space-3);
  margin: var(--sk-space-4) 0;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-4);
  background: var(--sk-color-surface-subtle);
}
.sk-terminal-entitlements.is-actionable {
  border-color: var(--sk-color-warning);
  background: var(--sk-color-warning-soft);
}
.sk-terminal-entitlements > .sk-terminal-eyebrow {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  margin: 0;
}
.sk-terminal-entitlements svg {
  width: 1.05em;
  height: 1.05em;
  flex: none;
}
.sk-terminal-entitlement {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-terminal-entitlement ul {
  display: grid;
  gap: var(--sk-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-terminal-entitlement li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-terminal-entitlement li small {
  color: var(--sk-color-ink-soft);
  white-space: nowrap;
}
/* Behandlingen som faktisk står på regningen. Det er denne linja frisøren skal
   finne på et halvt sekund. */
.sk-terminal-entitlement li.is-match {
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-entitlement li.is-match small {
  color: var(--sk-color-warning);
}
.sk-terminal-entitlement-expiry {
  color: var(--sk-color-ink-soft);
}

/* Klippet som tender: står OVER betalingsmåtene, ikke blant dem. «Betal med noe
   kunden allerede har betalt» hører ikke hjemme i en rekke med Vipps og kort,
   og oppdages det etter at kortet er dratt, er det for sent. */
.sk-terminal-package-tender {
  display: grid;
  gap: var(--sk-space-3);
  margin-bottom: var(--sk-space-5);
  border: 2px solid var(--sk-color-success);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-4);
  background: var(--sk-color-success-soft);
}
.sk-terminal-package-tender > .sk-terminal-eyebrow {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  margin: 0;
  color: var(--sk-color-success);
}
.sk-terminal-package-tender svg {
  width: 1.1em;
  height: 1.1em;
  flex: none;
}
.sk-terminal-package-tender .sk-terminal-help {
  margin: 0;
}

/* Timeboka armert for rebooking. Beskjeden må stå der helt til frisøren har
   pekt på et tidspunkt — arket som åpner seg med et navn allerede utfylt er
   ellers uforklarlig. */
.sk-terminal-rebook-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-4);
  border: 1px solid var(--sk-color-primary);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3) var(--sk-space-4);
  background: var(--sk-color-primary-soft);
}
.sk-terminal-rebook-banner small {
  color: var(--sk-color-ink-soft);
}

/* Etter godkjent betaling: bookingen er handlingen, «ferdig» er veien ut. */
.sk-terminal-complete-actions {
  display: grid;
  gap: var(--sk-space-3);
  justify-items: center;
  margin-top: var(--sk-space-5);
}

/* Innringerens kundekort følger samme dokumentflyt som de øvrige
   terminalpanelene. Det skal aldri dekke arbeidsflaten som et modal-lag. */
.sk-terminal-customer-inline {
  width: 100%;
  margin-bottom: var(--sk-space-5);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-5);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  border: 1px solid var(--sk-color-border-soft);
  box-shadow: var(--sk-shadow-card);
}
/* Kortet er øverst i seksjonen; skillelinja det har mot timearket har ingenting
   å skille fra her. */
.sk-terminal-customer-inline > .sk-timebook-sheet-card:first-child {
  margin-top: 0;
  border-top: 0;
  padding-top: 0;
}
.sk-terminal-customer-inline > .sk-terminal-link {
  margin-top: var(--sk-space-4);
}
.sk-terminal-checkout-panel {
  box-sizing: border-box;
  display: flex;
  min-height: 0;
  flex-direction: column;
  overflow: hidden;
  padding-bottom: 0;
}
.sk-terminal-sale-layout {
  display: grid;
  min-height: 0;
  flex: 1 1 auto;
  grid-template-columns: minmax(18rem, 0.9fr) minmax(28rem, 1.35fr);
  grid-template-rows: minmax(0, 1fr) auto;
  gap: var(--sk-space-3);
  overflow: hidden;
}
.sk-terminal-sale-catalog,
.sk-terminal-sale-cart {
  display: flex;
  min-width: 0;
  min-height: 0;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-3);
  background: var(--sk-color-surface);
}
.sk-terminal-sale-catalog {
  overflow-x: hidden;
  overflow-y: auto; /* search and scan controls stay reachable when a customer tab row shrinks the pane */
  overscroll-behavior: contain;
}
.sk-terminal-sale-cart {
  overflow: hidden;
}
.sk-terminal-sale-catalog .sk-terminal-catalog-results,
.sk-terminal-sale-cart .sk-terminal-cart-lines {
  min-height: 0;
  max-height: none;
  flex: 1 1 auto;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.sk-terminal-sale-cart .sk-terminal-cart-editor {
  display: flex;
  min-height: 0;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 0;
  border: 0;
  box-shadow: none;
}
.sk-terminal-sale-footer {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: minmax(10rem, 1fr) auto auto minmax(12rem, auto);
  align-items: center;
  gap: var(--sk-space-3);
  min-height: 4.75rem;
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-3);
  background: var(--sk-color-canvas);
}
.sk-terminal-sale-status {
  min-width: 0;
}
.sk-terminal-sale-status > p {
  margin: 0;
}
.sk-terminal-sale-footer .sk-terminal-clear-trigger {
  min-height: max(44px, var(--sk-terminal-touch-min));
}
.sk-terminal-sale-total {
  display: grid;
  justify-items: end;
  line-height: 1.1;
}
.sk-terminal-sale-total span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-terminal-sale-total strong {
  font-size: var(--sk-font-size-xl);
}
.sk-terminal-add-amount,
.sk-terminal-pay-total {
  min-height: var(--sk-terminal-touch-min);
  padding-inline: var(--sk-space-4);
  white-space: nowrap;
}
.sk-terminal-custom-amount-layer {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: grid;
  place-items: center;
  padding: var(--sk-space-4);
  background: rgb(20 18 28 / 55%);
}
.sk-terminal-custom-amount-dialog {
  display: grid;
  width: min(32rem, 100%);
  box-sizing: border-box;
  max-height: calc(100dvh - 2 * var(--sk-space-4));
  overflow-y: auto;
  gap: var(--sk-space-4);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-5);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}
.sk-terminal-custom-amount-dialog label {
  display: grid;
  gap: var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-custom-amount-dialog input {
  min-height: var(--sk-terminal-touch-min);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  padding-inline: var(--sk-space-3);
  font: inherit;
}
.sk-terminal-line-actions {
  display: flex;
  gap: var(--sk-space-2);
}
.sk-terminal-quantity {
  display: grid;
  grid-template-columns: repeat(3, var(--sk-control-height));
  align-items: center;
  justify-self: start;
  overflow: hidden;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-surface);
}
:where(.sk-terminal-quantity button, .sk-terminal-quantity input) {
  width: var(--sk-control-height);
  min-height: var(--sk-control-height);
  border: 0;
  background: transparent;
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  text-align: center;
}
:where(.sk-terminal-quantity) button {
  cursor: pointer;
}
:where(.sk-terminal-quantity) button:disabled {
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}
:where(.sk-terminal-quantity) input {
  border-inline: 1px solid var(--sk-color-border-soft);
  appearance: textfield;
}
:where(.sk-terminal-quantity) input::-webkit-inner-spin-button,
:where(.sk-terminal-quantity) input::-webkit-outer-spin-button {
  margin: 0;
  appearance: none;
}
:where(.sk-terminal-line-actions button, .sk-terminal-price-editor button, .sk-terminal-undo button) {
  min-height: var(--sk-control-height);
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  background: var(--sk-color-surface);
  color: var(--sk-color-primary);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
:where(.sk-terminal-line-actions button):last-child {
  color: var(--sk-color-danger);
}
.sk-terminal-price-editor {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(7rem, 0.4fr) minmax(12rem, 1fr) auto auto;
  align-items: end;
  gap: var(--sk-space-3);
  padding-top: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-terminal-price-editor label {
  display: grid;
  gap: var(--sk-space-1);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-price-editor input {
  width: 100%;
  min-width: 0;
  min-height: 2.75rem;
  padding: 0 var(--sk-space-3);
}
.sk-terminal-undo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-3);
  padding: var(--sk-space-3);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-info-soft);
  color: var(--sk-color-info);
}
.sk-terminal-checkout-grid aside {
  display: flex;
  position: sticky;
  top: calc(4.75rem + var(--sk-space-6));
  flex-direction: column;
  gap: 0.8rem;
  align-self: start;
}
.sk-terminal-checkout-grid aside > span {
  color: var(--sk-color-ink-soft);
}
.sk-terminal-checkout-grid aside > strong {
  margin-bottom: 0.8rem;
  font-size: var(--sk-font-size-display);
  letter-spacing: -0.04em;
}
.sk-terminal-checkout-grid aside p {
  margin: 0;
  color: var(--sk-color-success);
  font-size: var(--sk-font-size-xs);
}
.sk-terminal-clear-trigger {
  align-self: center;
}
.sk-terminal-clear-confirm {
  display: grid;
  gap: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-4);
}
.sk-terminal-clear-confirm > p {
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-sm);
  line-height: var(--sk-line-copy);
}
.sk-terminal-clear-confirm > div {
  display: flex;
  justify-content: flex-end;
  gap: var(--sk-space-2);
}
/* .sk-terminal-danger-button er alias for .sk-terminal-danger-outline i
   01a-contract.css. */
.sk-terminal-notice {
  margin: 1rem 0 0;
  border-radius: var(--sk-radius-md);
  padding: 0.8rem 1rem;
  background: var(--sk-color-info-soft);
  color: var(--sk-color-info);
  font-size: var(--sk-font-size-xs);
  line-height: 1.45;
}

/* ── Kvittering: valg, sendinger og status ───────────────────────────────────
   Valget ligger over betalingsmåtene, ikke under dem: kunden står der, og
   spørsmålet «hvor vil du ha kvitteringen?» stilles FØR kortet dras — ikke
   etterpå, når hun allerede har snudd seg mot døra. */
.sk-terminal-receipt-choice {
  display: grid;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3);
  background: var(--sk-color-surface);
}
/* Fire like store flater. Med `1fr` per kolonne treffer fingeren like sikkert
   på «Ingen» som på «Skriv ut», og ingen av dem ser ut som hovedvalget. */
.sk-terminal-segmented {
  display: grid;
  /* Fire like brede flater når det er plass, to og to når det ikke er det.
     `auto-fit` framfor et mediespørsmål: knappene skal aldri bli smalere enn
     en tommel, uansett hvilken bredde panelet får. */
  grid-template-columns: repeat(auto-fit, minmax(5rem, 1fr));
  gap: var(--sk-space-1);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-1);
  background: var(--sk-color-surface-hover);
}
.sk-terminal-segmented > button {
  min-height: var(--sk-terminal-touch-min);
  border: 0;
  border-radius: var(--sk-radius-sm);
  padding: 0 var(--sk-space-2);
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-terminal-segmented > button.is-selected {
  background: var(--sk-color-primary);
  color: white;
}
.sk-terminal-segmented > button:disabled {
  cursor: not-allowed;
  opacity: 0.6;
}
.sk-terminal-receipt-paper {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-receipt-target {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-terminal-receipt-target > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-receipt-actions {
  display: grid;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-4);
}
/* Knappene brytes framfor å krympe: «Send på e-post» skal aldri stå med
   avkuttet tekst på en håndholdt terminal. */
.sk-terminal-receipt-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
.sk-terminal-receipt-deliveries {
  display: grid;
  gap: var(--sk-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-terminal-receipt-deliveries > li {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-terminal-receipt-deliveries > li > span:last-child {
  display: grid;
}
.sk-terminal-receipt-deliveries small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-cashup-sale-receipts {
  display: grid;
  gap: var(--sk-space-1);
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-3);
  margin-top: var(--sk-space-3);
}
.sk-profile-receipt-preference {
  display: grid;
  gap: var(--sk-space-2);
}

/* --- Gavekortsalg (wave 3 A) --------------------------------------------
   Arket låner formen fra rabattarket med vilje: operatøren skal kjenne igjen
   «et ark med felter og én blå knapp», ikke lære en ny flate for hver ting
   som selges. Koden etter betalingen står i monospace — den skal leses opp
   og tastes inn av et menneske, og 0/O og 1/I må kunne skilles. */
.sk-terminal-giftcard-layer {
  position: fixed;
  inset: 0;
  z-index: 60;
  display: grid;
  place-items: center;
  padding: var(--sk-space-4);
  background: rgb(0 0 0 / 45%);
}
.sk-terminal-giftcard-sheet {
  display: grid;
  gap: var(--sk-space-3);
  width: min(34rem, 100%);
  max-height: 90vh;
  overflow-y: auto;
  padding: var(--sk-space-5);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}
.sk-terminal-giftcard-sheet > header {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-terminal-giftcard-sheet label,
.sk-terminal-giftcard-issued > ul > li {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-terminal-giftcard-amounts {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
.sk-terminal-giftcard-amounts > button {
  flex: 1 1 6rem;
  min-height: 3rem;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-giftcard-amounts > button.is-active,
.sk-terminal-giftcard-pill.is-sent {
  border-color: var(--sk-color-accent);
  background: var(--sk-color-accent-soft);
}
.sk-terminal-giftcard-vat,
.sk-terminal-giftcard-blocker {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-terminal-giftcard-issued {
  display: grid;
  gap: var(--sk-space-2);
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-3);
  margin-top: var(--sk-space-3);
}
.sk-terminal-giftcard-issued ul {
  display: grid;
  gap: var(--sk-space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-terminal-giftcard-code {
  font-family: var(--sk-font-mono);
  font-size: var(--sk-font-size-lg);
  letter-spacing: 0.08em;
}
.sk-terminal-giftcard-pill {
  justify-self: start;
  border-radius: 999px;
  padding: 0.15rem 0.65rem;
  background: var(--sk-color-surface-subtle);
  font-size: var(--sk-font-size-xs);
}
.sk-terminal-giftcard-pill.is-failed {
  background: var(--sk-color-danger-soft, var(--sk-color-surface-subtle));
}

/* Gavekort-flis ved «Start salg uten time» */
.sk-terminal-giftcard-tile { gap: var(--sk-space-2); }

/* Rabattkode, kundeklubbkupong og kvitteringsvalg i betalingsvalget. Skilt ut fra 02-shifts-and-checkout.css
   (grense 1200 linjer); importeres rett etter den, så kaskaden er uendret. */
/* ── Rabattkode og kundeklubbkupong i betalingsvalget ─────────────────────────
   Basisklassen .sk-terminal-package-tender er grønn med vilje: den er klippet,
   noe kunden ALLEREDE har betalt for. Rabattkoden og kupongen deler den, men
   er bare grønne når en kode/kupong faktisk er brukt (`is-applied`). Ellers er
   de et vanlig, rolig kort som ikke konkurrerer med betalingsmåtene over. */
.sk-terminal-package-tender.sk-terminal-discount-card:not(.is-applied) {
  border: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
}
.sk-terminal-package-tender.sk-terminal-discount-card:not(.is-applied) > .sk-terminal-eyebrow,
.sk-terminal-discount-card:not(.is-applied) > summary .sk-terminal-eyebrow {
  color: var(--sk-color-ink-soft);
}
.sk-terminal-discount-card__summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-2) var(--sk-space-3);
  min-height: var(--sk-terminal-touch-min);
  list-style: none;
  cursor: pointer;
}
.sk-terminal-discount-card__summary::-webkit-details-marker { display: none; }
.sk-terminal-discount-card > summary .sk-terminal-eyebrow {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  margin: 0;
}
.sk-terminal-discount-card[open]:not(.is-applied) > summary .sk-terminal-eyebrow { color: var(--sk-color-ink-soft); }
.sk-terminal-discount-card.is-applied > summary .sk-terminal-eyebrow { color: var(--sk-color-success); }
.sk-terminal-discount-card__hint {
  flex: 1 1 12rem;
  color: var(--sk-color-ink-soft);
}
.sk-terminal-discount-card__chevron {
  margin-left: auto;
  transition: transform 120ms ease;
}
.sk-terminal-discount-card[open] .sk-terminal-discount-card__chevron { transform: rotate(180deg); }
/* Lukket er kortet én linje: ingen ekstra luft under sammendraget. */
details.sk-terminal-discount-card:not([open]) { gap: 0; }

/* Kvitteringsvalget er sammenlagt til én linje som sier hva kunden får. */
.sk-terminal-receipt-details {
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}
.sk-terminal-receipt-details > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  min-height: var(--sk-terminal-touch-min);
  padding: var(--sk-space-2) var(--sk-space-4);
  list-style: none;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-terminal-receipt-details > summary::-webkit-details-marker { display: none; }
.sk-terminal-receipt-details > summary > span { min-width: 0; overflow-wrap: anywhere; }
.sk-terminal-receipt-details > summary > svg { flex: none; transition: transform 120ms ease; }
.sk-terminal-receipt-details[open] > summary > svg { transform: rotate(180deg); }
/* Inne i den sammenlagte rammen trenger valget ikke en egen ramme til. */
.sk-terminal-receipt-details > .sk-terminal-receipt-choice {
  margin-top: 0;
  border: 0;
  border-top: 1px solid var(--sk-color-border-soft);
  border-radius: 0 0 var(--sk-radius-md) var(--sk-radius-md);
  padding: var(--sk-space-3) var(--sk-space-4) var(--sk-space-4);
}

/* Aktiv rabatt som én linje ved beløpet, så frisøren ser at koden er trukket
   fra uten å lete i kortet under betalingsmåtene. */
.sk-terminal-payment-discount-line {
  color: var(--sk-color-success);
  font-weight: var(--sk-font-weight-strong);
}

/* «Gå til avstemming» står under «Kontroller igjen», som sekundær vei. */
.sk-terminal-payment-reconcile {
  display: grid;
  gap: var(--sk-space-2);
  justify-items: start;
  margin-top: var(--sk-space-3);
}
.sk-terminal-payment-reconcile > button { min-height: var(--sk-terminal-touch-min); }
details.sk-terminal-package-tender.sk-terminal-discount-card:not([open]) { padding-block: var(--sk-space-2); }

/* Lange referanser må kunne brytes i den fullførte kvitteringen, også når
   kunden bruker større tekst. Hjelpetekst må ha kontrast på den grønne flaten. */
.sk-terminal-payment-flow.is-complete dl,
.sk-terminal-payment-flow.is-complete dd { min-inline-size: 0; }
.sk-terminal-package-tender .sk-terminal-help { color: var(--sk-color-ink); }

/* Beløpet følger valgt tekststørrelse. Skjermbredden velger bare trinnet. */
.sk-terminal-payment-flow.is-complete {
  --sk-checkout-total-font-size: var(--sk-type-checkout-total-compact);
  --sk-type-display-total: var(--sk-checkout-total-font-size);
  overflow-wrap: anywhere;
}
.sk-terminal-payment-flow.is-complete > * { min-inline-size: 0; max-inline-size: 100%; }
@media (min-width: 768px) {
  .sk-terminal-payment-flow.is-complete { --sk-checkout-total-font-size: var(--sk-type-checkout-total-medium); }
}
@media (min-width: 1200px) {
  .sk-terminal-payment-flow.is-complete { --sk-checkout-total-font-size: var(--sk-type-checkout-total-wide); }
}

/* Invertert skjerm: canvas-tekst på ink-flate = 14.96:1 og følger temaet. */
.sk-customer-display {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--sk-color-ink);
  color: var(--sk-color-canvas);
}
/* Kundeskjermen deler enhetsklasse og safe-area med resten av terminalen.
   Faste ytre felt; bare varelisten bruker plassen som er igjen og kan rulle. */
html[data-surface="display"] .sk-customer-display {
  box-sizing: border-box;
  height: 100dvh;
  min-height: 0;
  padding: var(--sk-safe-top) var(--sk-safe-right) var(--sk-safe-bottom) var(--sk-safe-left);
}
.sk-customer-display::before,
.sk-customer-display::after {
  content: "";
  position: absolute;
  width: 38rem;
  height: 38rem;
  border-radius: 50%;
  filter: blur(80px);
  opacity: 0.34;
  pointer-events: none;
  animation: sk-customer-orbit 14s ease-in-out infinite alternate;
}
.sk-customer-display::before {
  top: -18rem;
  right: -10rem;
  background: var(--sk-color-primary);
}
.sk-customer-display::after {
  bottom: -24rem;
  left: -8rem;
  background: var(--sk-color-signal);
  animation-delay: -7s;
}
.sk-customer-display > header {
  position: relative;
  z-index: 2;
  border-color: rgb(255 255 255 / 10%);
  background: rgb(17 17 20 / 55%);
}
.sk-customer-display > header > div {
  flex-shrink: 0;
}
.sk-customer-display > header > span {
  color: rgb(255 255 255 / 60%);
  font-size: var(--sk-type-display-small);
  min-width: 0;
  overflow-wrap: anywhere;
  text-align: right;
}

/* Sesongprofilen er et eget, ikke-interaktivt lag. Den kan derfor endres uten
   å berøre handlekurv, betalingsstatus eller personverntekst. Uttrykket holdes
   i ytterkantene av skjermen slik at beløp og QR-kode alltid har ro. */
.sk-customer-season {
  position: absolute;
  inset: 5rem 0 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

/* Jul: nisseluen sitter på Min Rutine-merket, mens langsom snø gir liv i den
   mørke bakgrunnen uten å konkurrere med betalingen. */
.sk-customer-display.season-christmas .sk-terminal-mark.is-small::before {
  content: "";
  position: absolute;
  top: -0.78rem;
  left: -0.12rem;
  width: 2.15rem;
  height: 1.15rem;
  border-radius: 1.6rem 1.6rem 0.18rem 0.18rem;
  background: #c9343d;
  clip-path: polygon(0 100%, 31% 4%, 100% 78%, 88% 100%);
  transform: rotate(-8deg);
  transform-origin: bottom center;
}
.sk-customer-display.season-christmas .sk-terminal-mark.is-small::after {
  content: "";
  position: absolute;
  top: -0.18rem;
  left: -0.18rem;
  width: 2.45rem;
  height: 0.42rem;
  border-radius: 1rem;
  background: #fff7ec;
  box-shadow: 1.83rem -0.78rem 0 -0.04rem #fff7ec;
}
.sk-customer-snow {
  --snow-left: 8%;
  --snow-delay: 0s;
  --snow-duration: 12s;
  position: absolute;
  top: -1.2rem;
  left: var(--snow-left);
  width: 0.38rem;
  height: 0.38rem;
  border-radius: 50%;
  background: rgb(255 255 255 / 72%);
  box-shadow: 0 0 1rem rgb(255 255 255 / 30%);
  animation: sk-customer-snowfall var(--snow-duration) linear infinite;
  animation-delay: var(--snow-delay);
}
.sk-customer-snow:nth-child(2) {
  --snow-left: 16%;
  --snow-delay: -8s;
  --snow-duration: 15s;
}
.sk-customer-snow:nth-child(3) {
  --snow-left: 24%;
  --snow-delay: -3s;
  --snow-duration: 11s;
}
.sk-customer-snow:nth-child(4) {
  --snow-left: 33%;
  --snow-delay: -10s;
  --snow-duration: 17s;
}
.sk-customer-snow:nth-child(5) {
  --snow-left: 41%;
  --snow-delay: -5s;
  --snow-duration: 13s;
}
.sk-customer-snow:nth-child(6) {
  --snow-left: 49%;
  --snow-delay: -12s;
  --snow-duration: 18s;
}
.sk-customer-snow:nth-child(7) {
  --snow-left: 57%;
  --snow-delay: -7s;
  --snow-duration: 12s;
}
.sk-customer-snow:nth-child(8) {
  --snow-left: 64%;
  --snow-delay: -1s;
  --snow-duration: 16s;
}
.sk-customer-snow:nth-child(9) {
  --snow-left: 71%;
  --snow-delay: -9s;
  --snow-duration: 14s;
}
.sk-customer-snow:nth-child(10) {
  --snow-left: 78%;
  --snow-delay: -4s;
  --snow-duration: 19s;
}
.sk-customer-snow:nth-child(11) {
  --snow-left: 84%;
  --snow-delay: -13s;
  --snow-duration: 15s;
}
.sk-customer-snow:nth-child(12) {
  --snow-left: 90%;
  --snow-delay: -6s;
  --snow-duration: 12s;
}
.sk-customer-snow:nth-child(13) {
  --snow-left: 95%;
  --snow-delay: -11s;
  --snow-duration: 18s;
}
.sk-customer-snow:nth-child(14) {
  --snow-left: 4%;
  --snow-delay: -2s;
  --snow-duration: 16s;
}
.sk-customer-display.season-winter .sk-customer-snow {
  opacity: 0.5;
}

/* Vår: lyse kronblader. Sommer: små solglimt. Høst: varme blader. Samme
   posisjonsmønster brukes for alle, men form og bevegelse følger årstiden. */
.sk-customer-petal,
.sk-customer-summer-glint,
.sk-customer-leaf {
  --season-left: 8%;
  --season-delay: 0s;
  --season-duration: 16s;
  position: absolute;
  top: -2rem;
  left: var(--season-left);
  animation: sk-customer-season-fall var(--season-duration) ease-in-out infinite;
  animation-delay: var(--season-delay);
}
.sk-customer-petal {
  width: 0.72rem;
  height: 1rem;
  border-radius: 80% 15% 80% 15%;
  background: #f5a9c5;
  box-shadow: 0 0 0.8rem rgb(245 169 197 / 22%);
  opacity: 0.66;
}
.sk-customer-summer-glint {
  width: 0.56rem;
  height: 0.56rem;
  border-radius: 50%;
  background: #ffd264;
  box-shadow: 0 0 1.35rem 0.35rem rgb(255 210 100 / 24%);
  opacity: 0.72;
  animation-name: sk-customer-summer-float;
}
.sk-customer-leaf {
  width: 0.66rem;
  height: 1.12rem;
  border-radius: 85% 12% 85% 12%;
  background: #d17a38;
  box-shadow: inset -0.16rem -0.1rem rgb(119 58 29 / 25%);
  opacity: 0.72;
}
.sk-customer-petal:nth-child(2),
.sk-customer-summer-glint:nth-child(2),
.sk-customer-leaf:nth-child(2) {
  --season-left: 16%;
  --season-delay: -11s;
  --season-duration: 19s;
}
.sk-customer-petal:nth-child(3),
.sk-customer-summer-glint:nth-child(3),
.sk-customer-leaf:nth-child(3) {
  --season-left: 25%;
  --season-delay: -4s;
  --season-duration: 14s;
}
.sk-customer-petal:nth-child(4),
.sk-customer-summer-glint:nth-child(4),
.sk-customer-leaf:nth-child(4) {
  --season-left: 34%;
  --season-delay: -15s;
  --season-duration: 22s;
}
.sk-customer-petal:nth-child(5),
.sk-customer-summer-glint:nth-child(5),
.sk-customer-leaf:nth-child(5) {
  --season-left: 43%;
  --season-delay: -7s;
  --season-duration: 17s;
}
.sk-customer-petal:nth-child(6),
.sk-customer-summer-glint:nth-child(6),
.sk-customer-leaf:nth-child(6) {
  --season-left: 52%;
  --season-delay: -18s;
  --season-duration: 23s;
}
.sk-customer-petal:nth-child(7),
.sk-customer-summer-glint:nth-child(7),
.sk-customer-leaf:nth-child(7) {
  --season-left: 61%;
  --season-delay: -9s;
  --season-duration: 18s;
}
.sk-customer-petal:nth-child(8),
.sk-customer-summer-glint:nth-child(8),
.sk-customer-leaf:nth-child(8) {
  --season-left: 70%;
  --season-delay: -2s;
  --season-duration: 15s;
}
.sk-customer-petal:nth-child(9),
.sk-customer-summer-glint:nth-child(9),
.sk-customer-leaf:nth-child(9) {
  --season-left: 79%;
  --season-delay: -13s;
  --season-duration: 21s;
}
.sk-customer-petal:nth-child(10),
.sk-customer-summer-glint:nth-child(10),
.sk-customer-leaf:nth-child(10) {
  --season-left: 88%;
  --season-delay: -6s;
  --season-duration: 16s;
}
.sk-customer-petal:nth-child(11),
.sk-customer-leaf:nth-child(11) {
  --season-left: 95%;
  --season-delay: -16s;
  --season-duration: 20s;
}
.sk-customer-petal:nth-child(12),
.sk-customer-leaf:nth-child(12) {
  --season-left: 4%;
  --season-delay: -8s;
  --season-duration: 18s;
}

.sk-customer-display.season-spring::after {
  background: #77c99a;
}
.sk-customer-display.season-summer::after {
  background: #f4b849;
}
.sk-customer-display.season-autumn::after {
  background: #c86f36;
}

/* Halloween: to enkle edderkopper beveger seg bare langs ytterkanten. */
.sk-customer-display.season-halloween {
  --sk-season-accent: #ff8b2c;
}
.sk-customer-display.season-halloween::after {
  background: var(--sk-season-accent);
}
.sk-customer-web {
  position: absolute;
  top: -6.5rem;
  width: 13rem;
  height: 13rem;
  border: 1px solid rgb(255 255 255 / 15%);
  border-radius: 50%;
  background:
    repeating-conic-gradient(
      from 0deg,
      rgb(255 255 255 / 14%) 0 1deg,
      transparent 1deg 30deg
    ),
    repeating-radial-gradient(
      circle,
      transparent 0 1.8rem,
      rgb(255 255 255 / 12%) 1.85rem 1.92rem
    );
}
.sk-customer-web.is-left {
  left: -6.5rem;
}
.sk-customer-web.is-right {
  right: -6.5rem;
  transform: scaleX(-1);
}
.sk-customer-spider {
  position: absolute;
  top: -1rem;
  width: 1px;
  height: 9rem;
  background: rgb(255 255 255 / 28%);
  animation: sk-customer-spider-drop 7s ease-in-out infinite alternate;
}
.sk-customer-spider.is-left {
  left: 11%;
}
.sk-customer-spider.is-right {
  right: 12%;
  animation-delay: -3.5s;
}
.sk-customer-spider b {
  position: absolute;
  bottom: -0.9rem;
  left: -0.58rem;
  width: 1.15rem;
  height: 1.35rem;
  border-radius: 50% 50% 45% 45%;
  background: #07070a;
  box-shadow:
    -0.7rem 0.18rem 0 -0.5rem #07070a,
    0.7rem 0.18rem 0 -0.5rem #07070a;
}
.sk-customer-spider b::before,
.sk-customer-spider b::after {
  content: "";
  position: absolute;
  top: 0.42rem;
  width: 1rem;
  height: 0.55rem;
  border-top: 2px solid #07070a;
  border-bottom: 2px solid #07070a;
}
.sk-customer-spider b::before {
  right: 0.8rem;
  transform: rotate(18deg);
}
.sk-customer-spider b::after {
  left: 0.8rem;
  transform: rotate(-18deg);
}

/* Pride: samme mørke Min Rutine-flate, med en rolig fargebue langs kanten. */
.sk-customer-display.season-pride::before {
  background: #7957ff;
}
.sk-customer-pride-ribbon {
  position: absolute;
  width: 45rem;
  height: 45rem;
  border: 0.7rem solid transparent;
  border-radius: 50%;
  background:
    linear-gradient(var(--sk-color-ink), var(--sk-color-ink)) padding-box,
    conic-gradient(
        #e93445,
        #f49b2f,
        #f2dc4b,
        #2eac6d,
        #82667f,
        #8250be,
        #e93445
      )
      border-box;
  opacity: 0.36;
  animation: sk-customer-pride-drift 18s ease-in-out infinite alternate;
}
.sk-customer-pride-ribbon.is-one {
  right: -28rem;
  top: -24rem;
}
.sk-customer-pride-ribbon.is-two {
  left: -34rem;
  bottom: -31rem;
  animation-delay: -9s;
}

@keyframes sk-customer-snowfall {
  from {
    transform: translate3d(-0.8rem, -2rem, 0) rotate(0deg);
  }
  50% {
    transform: translate3d(1.1rem, 50vh, 0) rotate(140deg);
  }
  to {
    transform: translate3d(-0.4rem, 105vh, 0) rotate(280deg);
  }
}
@keyframes sk-customer-spider-drop {
  from {
    transform: translateY(-3.5rem);
  }
  to {
    transform: translateY(3rem);
  }
}
@keyframes sk-customer-pride-drift {
  from {
    transform: rotate(-8deg) scale(0.96);
  }
  to {
    transform: rotate(8deg) scale(1.04);
  }
}
@keyframes sk-customer-season-fall {
  from {
    transform: translate3d(-1rem, -3rem, 0) rotate(-20deg);
  }
  35% {
    transform: translate3d(1.5rem, 35vh, 0) rotate(90deg);
  }
  70% {
    transform: translate3d(-1.2rem, 72vh, 0) rotate(210deg);
  }
  to {
    transform: translate3d(1rem, 108vh, 0) rotate(340deg);
  }
}
@keyframes sk-customer-summer-float {
  from {
    transform: translate3d(0, 105vh, 0) scale(0.7);
    opacity: 0;
  }
  25% {
    opacity: 0.72;
  }
  60% {
    transform: translate3d(1.2rem, 48vh, 0) scale(1);
  }
  to {
    transform: translate3d(-0.7rem, -3rem, 0) scale(0.76);
    opacity: 0;
  }
}
.sk-customer-welcome,
.sk-customer-transaction {
  position: relative;
  z-index: 1;
  flex: 1;
}
.sk-customer-display .sk-customer-welcome,
.sk-customer-display .sk-customer-transaction {
  min-height: 0;
  min-width: 0;
}
.sk-customer-welcome {
  display: grid;
  place-items: center;
  align-content: center;
  text-align: center;
}
.sk-customer-display .sk-display-portal-entrance {
  box-sizing: border-box;
  max-width: calc(100% - var(--sk-space-8));
}
/* Norske ukedager og måneder skrives med liten bokstav; bare første tegn opp. */
.sk-customer-welcome-date {
  display: inline-block;
  color: rgb(255 255 255 / 58%);
}
.sk-customer-welcome-date::first-letter {
  text-transform: uppercase;
}
.sk-customer-welcome h1 {
  margin: 0.4rem 0;
  max-width: min(90vw, 60rem);
  font-size: var(--sk-type-display-queue);
  letter-spacing: -0.05em;
  text-wrap: balance;
}
.sk-customer-display .sk-customer-welcome h1,
.sk-customer-display .sk-customer-transaction-heading h1 {
  overflow-wrap: anywhere;
}
.sk-customer-welcome span {
  color: rgb(255 255 255 / 76%);
  font-size: var(--sk-font-size-2xl);
}
/* 40 % hvit ga 3.73:1 mot ink – under 4.5:1 for brødtekst, og bare 2.54:1 der den lyse
   signal-sirkelen nederst til venstre slår inn. 72 % gir 8.82:1 mot ink og 4.59:1 i
   verste punkt over sirkelen, men holder fortsatt notisen nedtonet. */
.sk-customer-privacy {
  position: relative;
  z-index: 1;
  padding: 1rem;
  color: rgb(255 255 255 / 72%);
  font-size: var(--sk-type-display-small);
  text-align: center;
}
.sk-customer-display .sk-customer-privacy {
  flex: 0 0 auto;
}
.sk-customer-transaction {
  display: grid;
  grid-template-rows: auto 1fr auto;
  width: min(64rem, calc(100% - 4rem));
  margin: 0 auto;
  padding: 3rem 0 2rem;
}
.sk-customer-display .sk-customer-transaction {
  grid-template-rows: auto minmax(0, 1fr) auto;
  gap: var(--sk-space-4);
  padding-block: clamp(var(--sk-space-4), 3vh, var(--sk-space-12)) var(--sk-space-4);
}
.sk-customer-transaction-body {
  display: flex;
  flex-direction: column;
  min-height: 0;
  min-width: 0;
  gap: var(--sk-space-4);
}
.sk-customer-display .sk-customer-qr {
  flex: 0 0 auto;
  max-width: 100%;
  margin-block: 0;
}
.sk-customer-display .sk-customer-qr svg {
  width: clamp(9rem, 23vh, 240px);
  height: auto;
  max-width: 100%;
}
.sk-customer-transaction-heading {
  text-align: center;
}
.sk-customer-transaction-heading p {
  margin: 0 0 0.65rem;
  color: var(--sk-color-primary-soft);
  font-size: var(--sk-type-display-small);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.sk-customer-transaction-heading h1 {
  margin: 0;
  font-size: var(--sk-type-display-name);
  letter-spacing: -0.06em;
}
.sk-customer-transaction-heading > span:not(.sk-customer-result-icon) {
  display: block;
  margin-top: 0.8rem;
  color: rgb(255 255 255 / 62%);
}
.sk-customer-result-icon {
  display: grid;
  place-items: center;
  width: 5rem;
  height: 5rem;
  margin: 0 auto 1.2rem;
  border-radius: 50%;
  background: var(--sk-color-success);
  font-size: var(--sk-font-size-display);
}
.sk-customer-lines {
  align-self: center;
  overflow: hidden;
  border: 1px solid rgb(255 255 255 / 10%);
  border-radius: 1rem;
  background: rgb(255 255 255 / 5%);
}
.sk-customer-display .sk-customer-lines {
  flex: 1 1 auto;
  align-self: stretch;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}
.sk-customer-lines > div {
  display: flex;
  justify-content: space-between;
  gap: 2rem;
  border-bottom: 1px solid rgb(255 255 255 / 9%);
  padding: 1.1rem 1.25rem;
  font-size: var(--sk-font-size-lg);
}
.sk-customer-display .sk-customer-lines > div {
  gap: var(--sk-space-4);
}
.sk-customer-lines > div > span {
  min-width: 0;
  overflow-wrap: anywhere;
}
.sk-customer-lines > div > strong {
  flex-shrink: 0;
  text-align: right;
}
.sk-customer-lines > div:last-child {
  border-bottom: 0;
}
.sk-customer-transaction > footer {
  display: flex;
  align-items: end;
  justify-content: space-between;
  border-top: 1px solid rgb(255 255 255 / 15%);
  padding-top: 1.4rem;
}
.sk-customer-display .sk-customer-transaction > footer {
  gap: var(--sk-space-4);
  min-width: 0;
}
/* Foten ligger over den lyse signal-sirkelen nederst til venstre: 60 % hvit falt til
   3.72:1 der. 72 % gir 4.59:1 i verste punkt og 8.82:1 mot ren ink-bakgrunn. */
.sk-customer-transaction > footer span {
  color: rgb(255 255 255 / 72%);
}
.sk-customer-transaction > footer strong {
  font-size: var(--sk-type-display-welcome);
  letter-spacing: -0.06em;
}
.sk-customer-display .sk-customer-transaction > footer strong {
  white-space: nowrap;
}

/* Stående nettbrett: kurv, tips og QR stables, også på iPad Pro. */
@media (orientation: portrait) {
  html[data-surface="display"][data-device="tablet-portrait"] .sk-customer-transaction-body {
    flex-direction: column;
  }
  html[data-surface="display"][data-device="tablet-portrait"] .sk-customer-transaction {
    width: calc(100% - var(--sk-space-8));
  }
}

@media (max-width: 760px) {
  .sk-customer-display > header {
    padding-inline: var(--sk-space-4);
  }
  .sk-customer-display .sk-customer-transaction {
    width: calc(100% - var(--sk-space-8));
  }
  .sk-customer-display .sk-customer-lines > div {
    padding: var(--sk-space-3) var(--sk-space-4);
  }
  .sk-customer-display .sk-customer-result-icon {
    width: var(--sk-space-12);
    height: var(--sk-space-12);
    margin-bottom: var(--sk-space-2);
  }
  .sk-customer-display .sk-display-portal-entrance {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    text-align: left;
    gap: var(--sk-space-4);
  }
  .sk-customer-display .sk-display-portal-entrance > svg {
    width: clamp(7rem, 20vw, 144px);
    height: auto;
  }
  .sk-customer-display .sk-customer-welcome h1 {
    max-width: calc(100vw - var(--sk-space-8) - var(--sk-safe-left) - var(--sk-safe-right));
  }
  .sk-terminal-enrollment-card {
    padding: 1.6rem;
  }
  .sk-terminal-lock-header {
    padding: 0 1rem;
    flex-wrap: wrap;
    padding-block: 0.75rem;
  }
  .sk-terminal-lock-header > .sk-terminal-lock-actions {
    flex-wrap: wrap;
    min-width: 0;
  }
  .sk-terminal-lock-device {
    min-width: 0;
    overflow-wrap: anywhere;
  }
  .sk-terminal-lock-device svg {
    flex-shrink: 0;
  }
  .sk-terminal-lock-header > span {
    display: none;
  }
  .sk-terminal-lock-content {
    width: min(100% - 2rem, 36rem);
    padding: 2rem 0;
  }
  .sk-terminal-roster {
    grid-template-columns: repeat(2, 1fr);
  }
  :where(.sk-terminal-roster) > button {
    min-height: 9.5rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sk-terminal-pin-layer,
  .sk-terminal-pin-card,
  .sk-customer-display::before,
  .sk-customer-display::after {
    animation: none;
  }
  .sk-customer-snow,
  .sk-customer-spider,
  .sk-customer-pride-ribbon,
  .sk-customer-petal,
  .sk-customer-summer-glint,
  .sk-customer-leaf,
  .sk-customer-heart,
  .sk-customer-flag,
  .sk-customer-spark {
    animation: none;
  }
}


.sk-terminal-admin-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}
.sk-terminal-admin-heading p {
  margin: 0.3rem 0 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: 1.45;
}
.sk-terminal-admin-heading > svg {
  color: var(--sk-color-primary);
}
.sk-terminal-activation {
  display: grid;
  justify-items: center;
  gap: 0.35rem;
  border: 1px solid var(--sk-color-primary);
  border-radius: var(--sk-radius-md);
  padding: 1.1rem;
  background: var(--sk-color-primary-soft);
  text-align: center;
}
.sk-terminal-activation span,
.sk-terminal-activation small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-type-display-small);
}
.sk-terminal-activation strong {
  color: var(--sk-color-primary-active);
  font-size: var(--sk-font-size-2xl);
  letter-spacing: 0.12em;
}
.sk-terminal-pin-status {
  display: grid;
  overflow: hidden;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
}
.sk-terminal-pin-status > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  border-bottom: 1px solid var(--sk-color-border-soft);
  padding: 0.75rem 1rem;
}
.sk-terminal-pin-status > div:last-child {
  border-bottom: 0;
}
.sk-terminal-device-list {
  display: grid;
  overflow: hidden;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
}
.sk-terminal-device-list > article {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  align-items: center;
  gap: 0.8rem;
  border-bottom: 1px solid var(--sk-color-border-soft);
  padding: 0.8rem;
}
.sk-terminal-device-list > article:last-child {
  border-bottom: 0;
}
.sk-terminal-device-list article > div {
  display: grid;
  gap: 0.15rem;
}
.sk-terminal-device-list small {
  color: var(--sk-color-ink-soft);
}
.sk-terminal-device-icon {
  display: grid;
  place-items: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.7rem;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-terminal-device-icon svg {
  width: 1.15rem;
}


/* ── Tips (wave 2 B) ───────────────────────────────────────────────────────
   Tipsspørsmålet på kundeskjermen. Beløpene er STORE fordi de leses på
   halvannen meters avstand, tvers over disken — det er hele poenget med å
   vise dem i det hele tatt. Ingenting her er klikkbart: kundeskjermen har
   ingen returkanal, og frisøren taster valget. Se CustomerDisplayTip.tsx. */
.sk-customer-tip {
  display: grid;
  gap: 1rem;
  justify-items: center;
  text-align: center;
  margin-top: 1.2rem;
}
.sk-customer-display .sk-customer-tip {
  flex: 0 0 auto;
  margin-top: 0;
  gap: var(--sk-space-2);
}
.sk-customer-tip-lead {
  font-size: var(--sk-font-size-3xl, 2rem);
  font-weight: var(--sk-font-weight-strong);
  margin: 0;
}
.sk-customer-tip-options {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.9rem;
}
.sk-customer-display .sk-customer-tip-options {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  width: 100%;
  gap: var(--sk-space-2);
}
@media (max-width: 760px) {
  .sk-customer-display .sk-customer-tip-options {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.sk-customer-tip-option {
  display: grid;
  gap: 0.25rem;
  min-width: 9rem;
  padding: 1.2rem 1.6rem;
  border: 2px solid var(--sk-color-border-soft);
  border-radius: var(--sk-terminal-radius, 0.8rem);
  background: var(--sk-color-surface, #fff);
  /* Kortet er lyst på mørk kundeskjerm; uten egen tekstfarge arvet prosentvalget
     hvit tekst og ble usynlig (sett i nettleserharnesset 17. okt). */
  color: var(--sk-color-ink);
}
.sk-customer-display .sk-customer-tip-option,
.sk-customer-display .sk-customer-tip-decline {
  box-sizing: border-box;
  min-width: 44px;
  min-height: 44px;
  overflow-wrap: anywhere;
  padding: var(--sk-space-3) var(--sk-space-4);
}
html[data-surface="display"][data-touch="1"] .sk-customer-tip-option,
html[data-surface="display"][data-touch="1"] .sk-customer-tip-decline {
  min-height: var(--sk-touch-min);
}
.sk-customer-tip-option strong {
  font-size: var(--sk-font-size-display);
  line-height: 1.1;
}
.sk-customer-tip-option span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-lg);
}
.sk-customer-tip-option.is-chosen,
.sk-customer-tip-decline.is-chosen {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-customer-tip-decline {
  padding: 0.8rem 1.6rem;
  border: 2px solid var(--sk-color-border-soft);
  border-radius: var(--sk-terminal-radius, 0.8rem);
  font-size: var(--sk-font-size-xl);
}
.sk-customer-tip-note {
  margin: 0;
  color: var(--sk-color-ink-soft);
}

/* Kassens egen tipsrad. Den bor i betalingsflaten, men stilen står her
   sammen med resten av driksen slik at de to sidene holdes i takt. */
.sk-terminal-tip {
  display: grid;
  gap: 0.6rem;
  padding: 0.9rem 0;
  border-top: 1px solid var(--sk-color-border-soft);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-terminal-tip-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}
.sk-terminal-tip-chips button {
  display: grid;
  gap: 0.1rem;
  min-width: 6.5rem;
  justify-items: center;
}
.sk-terminal-tip-custom {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.6rem;
}
.sk-terminal-tip-stylists {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.sk-terminal-tip-stylist {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.8rem 0.4rem 0.4rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: 999px;
  background: var(--sk-color-surface, #fff);
}
.sk-terminal-tip-stylist span {
  display: grid;
  place-items: center;
  width: 1.9rem;
  height: 1.9rem;
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-tip-stylist.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}

/* ---------------------------------------------------------------------------
   Betalings-QR på kundeskjermen.

   Hvit flate med god margin rundt koden er ikke pynt: QR-lesere trenger den
   stille sonen for å finne kanten av mønsteret, og kundeskjermen har ellers en
   mørk bakgrunn som ville spist den. Derfor får koden sitt eget lyse felt.
   --------------------------------------------------------------------------- */

.sk-customer-qr {
  margin: 20px auto 8px;
  padding: 16px;
  width: fit-content;
  background: #fff;
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.sk-customer-qr svg {
  display: block;
  /* Skarpe modulkanter. Uten dette interpolerer nettleseren rutene og gjør
     mønsteret uskarpt i kantene, som er nettopp der leseren finner det. */
  image-rendering: pixelated;
}

.sk-customer-qr figcaption {
  color: #23212c;
  font-size: var(--sk-font-size-md);
  font-weight: var(--sk-font-weight-medium);
  text-align: center;
  max-width: 22ch;
}

/* ------------------------------------------------------------------ Timebok
 *
 * Rutenettet for hele salongen: én kolonne per frisør, tidsakse til venstre.
 * Flaten er en BERØRINGSSKJERM — hvert kvarter er 30 px høyt, dra-håndtaket i
 * bunnen av en blokk er en drøy centimeter, og alt som kan dras har
 * `touch-action: none` slik at skjermen ikke ruller i stedet for å flytte timen.
 */
.sk-timebook {
  overflow: hidden;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
}
/* Loddrett skala, lest av TimebookPanel. Én verdi styrer både det som tegnes
   og det draing regner med — to tall ville drevet fra hverandre. */
.sk-timebook-scroll {
  --sk-timebook-minute: 1.05;
  /* `72vh` tok ikke hensyn til alt annet på skjermen — topplinje, dato- og
     visningsvelger, handlingsrad. På en lav skjerm ble kalenderen da høyere
     enn det som var igjen av plassen, og siden bak begynte å scrolle i
     stedet for kalenderen. `dvh` framfor `vh` fordi mobilens adresselinje
     endrer høyden mens man scroller. */
  max-height: min(72dvh, calc(100dvh - 16rem));
  overflow: auto;
  overscroll-behavior: contain;
  /* Kalenderen scroller vannrett når frisørene ikke får plass. Uten dette
     arvet den sidens berøringsretning og satt fast. */
  touch-action: pan-x pan-y;
  -webkit-overflow-scrolling: touch;
}
.sk-timebook-grid {
  display: grid;
  grid-template-columns: 4.5rem var(--sk-timebook-columns);
  min-width: max-content;
}

/* Hvor smal en frisørkolonne får bli. Et navn og et klokkeslett trenger
   ikke 11rem — under 7rem blir avtalene derimot uleselige, og da er det
   bedre å scrolle vannrett. */
.sk-timebook {
  --sk-timebook-column-min: 11rem;
}
.sk-timebook-head,
.sk-timebook-body {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: subgrid;
  min-width: 0;
}
.sk-timebook-head {
  position: sticky;
  top: 0;
  z-index: 3;
}
.sk-timebook-head-cell,
.sk-timebook-corner {
  background: var(--sk-color-surface);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-timebook-corner {
  position: sticky;
  left: 0;
  z-index: 4;
}
.sk-timebook-head-cell {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  min-width: 0;
  min-height: 4.1rem;
  overflow: hidden;
  padding: 0.55rem 0.7rem;
  border-left: 1px solid var(--sk-color-border-soft);
}
.sk-timebook-head-cell strong {
  min-width: 0;
  flex: 1 1 auto;
  overflow: hidden;
  font-size: var(--sk-font-size-md);
  white-space: nowrap;
  text-overflow: ellipsis;
}
.sk-timebook-head-cell small {
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
}
.sk-timebook-head-cell.is-me {
  background: var(--sk-color-primary-soft);
}
.sk-timebook-body {
  position: relative;
}
.sk-timebook-gutter {
  position: relative;
}
.sk-timebook-gutter span {
  position: absolute;
  right: 0.55rem;
  transform: translateY(-0.4rem);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-variant-numeric: tabular-nums;
}
/* Første klokkeslett ligger på selve toppkanten. Uten dette klippes øverste
   halvdel av tallet bort, og dagen ser ut til å begynne en time senere. */
.sk-timebook-gutter span:first-child {
  transform: none;
}
.sk-timebook-column {
  position: relative;
  border-left: 1px solid var(--sk-color-border-soft);
}
.sk-timebook-slot {
  border-bottom: 0;
}
.sk-timebook-slot.is-half-hour {
  border-bottom: 1px dashed
    color-mix(in srgb, var(--sk-color-border) 45%, var(--sk-color-surface));
}
.sk-timebook-slot.is-hour {
  border-bottom: 1px solid var(--sk-color-border);
}
/* Slippsonen må ses fra en armlengdes avstand, ikke bare anes. */
.sk-timebook-slot.is-target {
  background: var(--sk-color-primary-soft);
  box-shadow: inset 0 0 0 1px var(--sk-color-primary);
}
.sk-timebook-now {
  position: absolute;
  left: 0;
  right: 0;
  z-index: 2;
  height: 2px;
  background: var(--sk-color-signal);
  pointer-events: none;
}
.sk-timebook-block {
  --sk-timebook-accent: var(--sk-appointment-booked);
  position: absolute;
  z-index: 1;
  display: grid;
  gap: 0.05rem;
  align-content: start;
  overflow: hidden;
  border: 1px solid
    color-mix(in srgb, var(--sk-timebook-accent) 38%, var(--sk-color-surface));
  border-left: 5px solid var(--sk-timebook-accent);
  border-radius: 0.55rem;
  padding: 0.28rem 0.45rem 0;
  background: color-mix(
    in srgb,
    var(--sk-timebook-accent) 12%,
    var(--sk-color-surface)
  );
  color: var(--sk-color-ink);
  cursor: grab;
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
}
.sk-timebook-block:active {
  cursor: grabbing;
}
.sk-timebook-block strong {
  overflow: hidden;
  font-size: var(--sk-font-size-sm);
  white-space: nowrap;
  text-overflow: ellipsis;
}
.sk-timebook-block small {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  white-space: nowrap;
  text-overflow: ellipsis;
}
.sk-timebook-block-time {
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  font-variant-numeric: tabular-nums;
}
.sk-timebook-block.is-narrow {
  padding-right: 0.25rem;
  padding-left: 0.3rem;
}
/* Under 60 minutter (38–50 px på kasse-PC) er blokka to tekstrader høy. Rutenettet ga tid, navn og
   merkelapp hver sin rad, og `overflow: hidden` klipte akkurat det navnet
   frisøren leser rutenettet for. Korte blokker legger derfor tid og navn på
   samme rad; merkelappen står i aria-teksten og på kortet. */
.sk-timebook-block.is-short {
  grid-auto-flow: column;
  grid-template-columns: auto minmax(0, 1fr);
  align-content: center;
  align-items: baseline;
  gap: 0.3rem;
  padding-bottom: 0.28rem;
}
.sk-timebook-block.is-short.is-fragment {
  grid-auto-flow: row;
}
.sk-timebook-block.is-short.is-fragment .sk-timebook-block-time {
  grid-column: 1;
  grid-row: 1;
}
.sk-timebook-block.is-short.is-fragment strong {
  grid-column: 2;
  grid-row: 1;
}
.sk-timebook-block.is-short.is-fragment .sk-timebook-continuation {
  grid-column: 1 / -1;
  grid-row: 2;
}
.sk-timebook-block.is-short .sk-timebook-block-status {
  display: none;
}
/* Håndtaket dekket hele rad to. På en kort blokk er det navnets rad. */
.sk-timebook-block.is-short .sk-timebook-resize {
  height: 0.6rem;
}
.sk-timebook-block.is-arrived,
.sk-timebook-block.is-started {
  --sk-timebook-accent: var(--sk-appointment-arrived);
}
.sk-timebook-block.is-completed {
  --sk-timebook-accent: var(--sk-appointment-completed);
}
.sk-timebook-block.is-no_show {
  --sk-timebook-accent: var(--sk-appointment-no-show);
}
.sk-timebook-block.is-pending {
  --sk-timebook-accent: var(--sk-appointment-pending);
}
.sk-timebook-block.is-locked {
  cursor: default;
}
/* Blokkert tid er ikke en time. Den er dempet og skravert nettopp for å ikke
   kunne forveksles med en kunde på tvers av rommet: ingen aksentkant i
   statusfarge, ingen merkelapp, og ingen dra-gest — den kan bare fjernes. */
.sk-timebook-block.is-block {
  --sk-timebook-accent: var(--sk-color-ink-faint);
  border-left-width: 1px;
  background:
    repeating-linear-gradient(
      135deg,
      transparent 0 6px,
      color-mix(in srgb, var(--sk-color-ink-faint) 16%, transparent) 6px 12px
    ),
    color-mix(in srgb, var(--sk-color-ink-faint) 8%, var(--sk-color-surface));
  color: var(--sk-color-ink-soft);
  cursor: pointer;
  touch-action: manipulation;
}
.sk-timebook-block.is-dragging {
  opacity: 0.42;
}
.sk-timebook-block.is-resizing {
  z-index: 5;
  box-shadow: 0 10px 26px rgb(35 33 44 / 22%);
}
/* Mens svaret ventes er blokka ikke fasit ennå. Den dempes så ingen rekker å
   tro at flyttingen er lagret før serveren har sagt ja. */
.sk-timebook-block.is-saving {
  opacity: 0.62;
  cursor: progress;
}
.sk-timebook-resize {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1.35rem;
  border-radius: 0 0 0.5rem 0.5rem;
  background: linear-gradient(
    to top,
    color-mix(in srgb, var(--sk-timebook-accent) 26%, transparent),
    transparent
  );
  cursor: ns-resize;
  touch-action: none;
}
.sk-timebook-resize::after {
  content: "";
  position: absolute;
  bottom: 0.28rem;
  left: 50%;
  width: 1.6rem;
  height: 3px;
  transform: translateX(-50%);
  border-radius: 2px;
  background: var(--sk-timebook-accent);
}

/* Radene i «Mine avtaler» er knapper: kunden står foran deg, og statusen skal
   være ett trykk unna der navnet allerede står. */
:where(.sk-terminal-appointments) > button {
  display: grid;
  grid-template-columns: 5rem 1fr auto;
  align-items: center;
  gap: 1rem;
  width: 100%;
  min-height: 5.3rem;
  padding: 0.9rem 1.15rem;
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
:where(.sk-terminal-appointments) > button:last-child {
  border-bottom: 0;
}
:where(.sk-terminal-appointments) > button:hover {
  background: var(--sk-color-surface-hover);
}
:where(.sk-terminal-appointments) > button time {
  font-size: var(--sk-font-size-lg);
  font-weight: var(--sk-font-weight-strong);
}
:where(.sk-terminal-appointments) > button > div {
  display: grid;
  gap: 0.25rem;
}
:where(.sk-terminal-appointments) > button > div span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}

/* Detaljene bak en blokk. Ligger på samme lag som PIN-koden, og arver derfor
   dens bakgrunn, uskarphet og animasjon. */
.sk-timebook-sheet {
  position: relative;
  width: min(28rem, 100%);
  padding: 2rem 1.8rem 1.8rem;
  border-radius: 1.4rem;
  background: var(--sk-color-surface);
  box-shadow: 0 28px 80px rgb(35 33 44 / 25%);
  animation: sk-modal-in var(--sk-motion-slow) var(--sk-ease-emphasized);
}
.sk-timebook-sheet h2 {
  margin: 0.15rem 0 0.2rem;
  font-size: var(--sk-type-section-title);
  letter-spacing: -0.035em;
}
.sk-timebook-sheet > .sk-terminal-eyebrow {
  margin-top: 1.6rem;
}
.sk-timebook-sheet-service {
  margin: 0 0 1.2rem;
  color: var(--sk-color-ink-soft);
}
/* Hvem kunden er: status og telefon på samme linje, rett under navnet.
   De lå før i en definisjonsliste under kundekortet — for å ringe kunden
   måtte man bla forbi forrige behandling og fargeformelen. */
.sk-timebook-sheet-identity {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-3);
  margin: 0 0 0.35rem;
}
.sk-timebook-sheet-phone {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: var(--sk-color-primary);
}
.sk-timebook-sheet-notes {
  margin: 0 0 1.2rem;
  border-radius: var(--sk-radius-md);
  padding: 0.8rem 0.95rem;
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-timebook-sheet-actions {
  display: grid;
  gap: 0.6rem;
}
:where(.sk-timebook-sheet-actions) button {
  min-height: var(--sk-terminal-control-h);
}
.sk-timebook-visit-workflow {
  display: grid;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-5);
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-4);
}
.sk-timebook-visit-workflow__heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-timebook-visit-workflow__heading h3,
.sk-timebook-visit-workflow__heading span {
  margin: 0;
}
.sk-timebook-visit-workflow__heading h3 {
  font-size: var(--sk-type-card-title);
}
.sk-timebook-visit-workflow__heading span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-timebook-progress {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-timebook-progress li {
  position: relative;
  display: grid;
  justify-items: center;
  gap: var(--sk-space-1);
  min-width: 0;
  color: var(--sk-color-ink-faint);
  text-align: center;
}
.sk-timebook-progress li::before {
  position: absolute;
  top: 0.42rem;
  right: 50%;
  left: -50%;
  height: 2px;
  background: var(--sk-color-border-soft);
  content: "";
}
.sk-timebook-progress li:first-child::before {
  display: none;
}
.sk-timebook-progress li > span {
  position: relative;
  z-index: 1;
  width: 0.9rem;
  height: 0.9rem;
  border: 2px solid var(--sk-color-border-interactive);
  border-radius: 50%;
  background: var(--sk-color-surface);
}
.sk-timebook-progress li.is-complete,
.sk-timebook-progress li.is-current {
  color: var(--sk-color-ink);
}
.sk-timebook-progress li.is-complete::before,
.sk-timebook-progress li.is-current::before {
  background: var(--sk-color-primary);
}
.sk-timebook-progress li.is-complete > span {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary);
}
.sk-timebook-progress li.is-current > span {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 4px var(--sk-color-primary-soft);
}
.sk-timebook-progress small {
  max-width: 100%;
  overflow: hidden;
  font-size: var(--sk-font-size-xs);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-timebook-sheet-actions.is-forward-actions,
.sk-timebook-sheet-actions.is-undo-actions {
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
}
.sk-timebook-sheet-actions.is-undo-actions {
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-3);
}
.sk-timebook-sheet-actions.is-undo-actions > small {
  grid-column: 1 / -1;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-timebook-sheet-exception {
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-3);
}
:where(.sk-timebook-sheet-exception) > button {
  width: 100%;
}
.sk-timebook-sheet-work-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-5);
}
:where(.sk-timebook-sheet-work-actions) > button,
:where(.sk-timebook-sheet-work-actions) > a {
  width: 100%;
}
.sk-timebook-sheet-work-actions > .sk-terminal-hint {
  grid-column: 1 / -1;
}
/* .sk-timebook-sheet-danger, -undo og -charge er aliaser i 01a-contract.css
   (danger-outline / secondary) og skal ikke brukes i ny kode. */
/* Arket bærer nå både timen, notatet og kundekortet. Det blir høyere enn en
   liggende terminalskjerm, så det ruller — men bare inni seg selv, slik at
   bakgrunnen bak ligger stille. */
.sk-timebook-sheet {
  max-height: min(92vh, 58rem);
  overflow-y: auto;
  overscroll-behavior: contain;
}
/* To likeverdige valg ved siden av hverandre: kunde fra registeret, eller
   drop-in. Ingen av dem er «det avanserte alternativet». */
.sk-terminal-segmented {
  display: flex;
  gap: 0.4rem;
  margin-top: 1.4rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-terminal-radius);
  padding: 0.3rem;
}
:where(.sk-terminal-segmented) button {
  flex: 1;
  min-height: 2.8rem;
  border: 0;
  border-radius: var(--sk-terminal-radius);
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
:where(.sk-terminal-segmented) button.is-active {
  background: var(--sk-color-surface-hover);
  color: inherit;
}
.sk-timebook-sheet-delay {
  margin-top: 1.5rem;
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: 1.1rem;
}
.sk-timebook-sheet-delay-actions {
  display: flex;
  gap: 0.6rem;
  margin-top: 0.5rem;
}
:where(.sk-timebook-sheet-delay-actions) button {
  flex: 1;
}
.sk-timebook-delay-preview {
  display: grid;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-4);
  background: var(--sk-color-surface-hover);
}
.sk-timebook-delay-preview > label {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-timebook-delay-preview > textarea {
  width: 100%;
  min-height: 7.5rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  line-height: 1.5;
  resize: vertical;
}
.sk-timebook-delay-preview > small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
/* Knappen som setter opp en ny time. Står i seksjonsoverskriften, der blikket
   allerede er når man leter etter en ledig rute. */
.sk-timebook-new {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: var(--sk-terminal-control-h);
  padding-inline: 1.1rem;
  white-space: nowrap;
}
.sk-timebook-view-summary,
.sk-timebook-opening-hours {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: 1.45;
}
.sk-timebook-opening-hours {
  display: block;
  margin-top: var(--sk-space-1);
}
.sk-timebook-heading {
  align-items: flex-start;
  flex-wrap: wrap;
}
.sk-timebook-date-nav {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-timebook-date-nav h1 {
  margin: 0;
  /* Dag/Uke, «Bare mine», Kalender/Liste og Ny time deler raden med datoen;
     datoen brytes ikke — verktøylinja bryter i stedet under. */
  white-space: nowrap;
}
.sk-timebook-date-nav h1::first-letter {
  text-transform: uppercase;
}
.sk-timebook-controls {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: wrap;
  row-gap: var(--sk-space-2);
  align-items: center;
  justify-content: flex-end;
  gap: var(--sk-space-3);
  margin-left: auto;
}
/* Står sammen med .sk-terminal-icon-button (01a-contract.css), som eier
   form og størrelse; her bare fargen og varselet ved hover. */
.sk-timebook-disruption {
  color: var(--sk-color-ink-soft);
}
.sk-timebook-disruption:hover:not(:disabled) {
  border-color: var(--sk-color-warning);
  color: var(--sk-color-warning);
}
/* En ledig rute skal se ut som noe man kan trykke på — men bare så vidt, ellers
   konkurrerer rutenettet med timene som ligger i det. */
.sk-timebook-slot.is-open {
  cursor: pointer;
}
.sk-timebook-slot.is-open:hover {
  background: var(--sk-color-surface-hover);
}
.sk-timebook-sheet-note {
  display: grid;
  gap: 0.45rem;
  margin-top: 1.4rem;
}
.sk-timebook-sheet-note input,
.sk-timebook-sheet-note select {
  width: 100%;
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-terminal-radius);
  padding: 0.55rem 0.85rem;
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
}
.sk-timebook-sheet-note label {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-timebook-sheet-note > small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-appointment-cancellation {
  display: grid;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-4);
}
.sk-appointment-cancellation > p {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: 1.5;
}
.sk-appointment-cancellation__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--sk-space-3);
}
.sk-timebook-sheet-exception.is-cancellation {
  margin-top: 0;
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: var(--sk-space-3);
}
.sk-disruption-sheet {
  width: min(54rem, 100%);
  max-height: min(90vh, 58rem);
  overflow-y: auto;
  overscroll-behavior: contain;
}
.sk-disruption-tabs {
  margin: var(--sk-space-5) 0 var(--sk-space-4);
}
.sk-disruption-list {
  display: grid;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-4);
}
.sk-disruption-item {
  display: grid;
  gap: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border-soft);
  padding: var(--sk-space-4) 0 0;
}
.sk-disruption-item > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-disruption-item > header > span:first-child {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}
.sk-disruption-item > header small {
  color: var(--sk-color-ink-soft);
}
.sk-disruption-choice {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2) var(--sk-space-5);
}
.sk-disruption-choice > label {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-touch-min);
  font-weight: var(--sk-font-weight-strong);
}
.sk-disruption-choice input {
  width: 1.2rem;
  height: 1.2rem;
  accent-color: var(--sk-color-primary);
}
.sk-disruption-message {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-disruption-message > textarea,
.sk-disruption-item > textarea {
  width: 100%;
  min-height: 6rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  resize: vertical;
}
.sk-disruption-delay-options {
  display: flex;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-4);
}
:where(.sk-disruption-delay-options) > button {
  min-height: var(--sk-terminal-touch-min);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-pill);
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
}
:where(.sk-disruption-delay-options) > button.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-disruption-submit {
  position: sticky;
  bottom: calc(-1 * var(--sk-space-6));
  z-index: 4;
  width: 100%;
  margin-top: var(--sk-space-5);
  box-shadow: 0 -1rem 1.5rem var(--sk-color-surface);
}
.sk-timebook-sheet-note > small.sk-terminal-error {
  color: var(--sk-color-danger);
}
.sk-timebook-sheet-note textarea {
  width: 100%;
  min-height: 3.6rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-terminal-radius);
  padding: 0.7rem 0.85rem;
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  resize: vertical;
}
.sk-new-appointment-schedule {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-new-appointment-schedule-state {
  margin: var(--sk-space-2) 0 0;
}
.sk-new-appointment-customer-selected {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
  min-height: var(--sk-control-height);
  margin-top: var(--sk-space-3);
  border: 1px solid var(--sk-color-primary);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3) var(--sk-space-4);
  background: var(--sk-color-primary-soft);
}
.sk-new-appointment-customer-selected > span {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}
.sk-new-appointment-customer-selected small {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-new-service-picker {
  position: relative;
}
.sk-new-service-picker__label {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-new-service-picker__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  width: 100%;
  min-height: var(--sk-control-height);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3) var(--sk-space-4);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-new-service-picker__trigger > span {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}
.sk-new-service-picker__trigger small,
.sk-new-service-options small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-new-service-picker__trigger svg {
  width: 1.1rem;
  flex: none;
  transform: rotate(-90deg);
  transition: transform var(--sk-motion-fast) var(--sk-ease-standard);
}
.sk-new-service-picker__trigger svg.is-open {
  transform: rotate(90deg);
}
.sk-new-service-options {
  display: grid;
  max-height: min(32rem, 52vh);
  overflow-y: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}
.sk-new-service-picker__panel {
  display: grid;
  gap: var(--sk-space-2);
  padding-top: var(--sk-space-2);
}
.sk-new-service-picker__panel > label {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-new-service-picker__search {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  padding: 0 var(--sk-space-3);
  background: var(--sk-color-surface);
}
.sk-new-service-picker__search svg { width: 1rem; flex: none; }
.sk-new-service-picker__search input {
  width: 100%;
  min-height: var(--sk-control-height);
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
}
.sk-new-service-picker__search input:focus { outline: 0; }
.sk-new-service-picker__search:focus-within { outline: 2px solid var(--sk-color-border-interactive); outline-offset: 2px; }
.sk-new-service-picker__empty { padding: var(--sk-space-3) var(--sk-space-4); }
:where(.sk-new-service-options) > button {
  display: grid;
  justify-items: start;
  gap: var(--sk-space-1);
  min-height: var(--sk-terminal-touch-min);
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  padding: var(--sk-space-3) var(--sk-space-4);
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
:where(.sk-new-service-options) > button:last-of-type {
  border-bottom: 0;
}
:where(.sk-new-service-options) > button:hover,
:where(.sk-new-service-options) > button:focus-visible,
:where(.sk-new-service-options) > button.is-selected {
  background: var(--sk-color-surface-selected);
}
.sk-new-appointment-notifications {
  display: grid;
  gap: var(--sk-space-2);
  margin: var(--sk-space-5) 0 0;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-4);
}
.sk-new-appointment-notifications legend {
  padding: 0 var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}
.sk-new-appointment-notifications > p {
  margin: 0 0 var(--sk-space-1);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-new-appointment-notifications > label {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-3);
  min-height: var(--sk-control-height);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3);
  background: var(--sk-color-surface);
  cursor: pointer;
}
.sk-new-appointment-notifications > label.is-disabled {
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}
.sk-new-appointment-notifications input {
  width: 1.25rem;
  height: 1.25rem;
  accent-color: var(--sk-color-primary);
}
.sk-new-appointment-notifications svg {
  width: 1.25rem;
  height: 1.25rem;
}
.sk-new-appointment-notifications span {
  display: grid;
  min-width: 0;
  gap: 0.15rem;
}
.sk-new-appointment-notifications small {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-timebook-sheet-note-actions {
  display: flex;
  align-items: center;
  gap: 0.7rem;
}
:where(.sk-timebook-sheet-note-actions) button {
  min-height: var(--sk-terminal-control-h);
}
.sk-timebook-sheet > .sk-timebook-sheet-actions:last-of-type {
  position: sticky;
  bottom: calc(-1 * var(--sk-space-6));
  z-index: 4;
  margin-top: var(--sk-space-5);
  padding: var(--sk-space-4) 0 calc(var(--sk-space-4) + env(safe-area-inset-bottom));
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, var(--sk-color-surface) 0%, transparent),
    var(--sk-color-surface) var(--sk-space-4)
  );
}
.sk-timebook-sheet > .sk-timebook-sheet-actions:last-of-type > small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  text-align: center;
}
/* Kundekortet. Skilt fra timen med en linje, fordi det er kundens historikk og
   ikke dagens avtale. */
.sk-timebook-sheet-card {
  margin-top: 1.6rem;
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: 1.2rem;
}
.sk-timebook-sheet-card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
}
.sk-timebook-sheet-card-head h3 {
  margin: 0;
  font-size: var(--sk-type-card-title);
}
.sk-timebook-sheet-latest {
  display: grid;
  gap: 0.2rem;
  margin: 0.8rem 0 1.2rem;
  border-radius: var(--sk-radius-md);
  padding: 0.85rem 0.95rem;
  background: var(--sk-color-surface-hover);
}
.sk-timebook-sheet-latest p {
  margin: 0;
}
.sk-timebook-sheet-latest small {
  color: var(--sk-color-ink-soft);
}
/* Fargeformelen leses av og skrives inn igjen på en flaske. Den skal kunne
   leses tegn for tegn på en armlengdes avstand. */
.sk-timebook-sheet-formula {
  margin-top: 0.35rem;
  font-family: var(--sk-font-mono);
  font-size: var(--sk-font-size-md);
  letter-spacing: 0.02em;
}
.sk-timebook-sheet-notes-list,
.sk-timebook-sheet-history {
  display: grid;
  gap: 0.6rem;
  margin: 0.6rem 0 1.2rem;
  padding: 0;
  list-style: none;
}
.sk-timebook-sheet-notes-list > li,
.sk-timebook-sheet-history > li {
  display: grid;
  gap: 0.15rem;
  border-radius: var(--sk-radius-md);
  padding: 0.7rem 0.85rem;
  background: var(--sk-color-surface-hover);
  font-size: var(--sk-font-size-sm);
}
.sk-timebook-sheet-notes-list p,
.sk-timebook-sheet-history span {
  margin: 0;
}
.sk-timebook-sheet-notes-list time,
.sk-timebook-sheet-history time,
.sk-timebook-sheet-history small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
/* Varsel-spørsmålet etter en flytting. Ligger som en stripe nederst framfor som
   en modal: flyttingen ER lagret, og spørsmålet skal ikke sperre neste gest. */
.sk-timebook-notify {
  position: sticky;
  bottom: 0;
  z-index: 5;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
  margin-top: 0.75rem;
  padding: 0.9rem 1.15rem;
  border: 1px solid var(--sk-color-border);
  border-radius: 0.9rem;
  background: var(--sk-color-surface);
  box-shadow: 0 -2px 16px rgb(0 0 0 / 12%);
}
.sk-timebook-notify p {
  margin: 0;
  font-size: var(--sk-font-size-md);
  font-weight: var(--sk-font-weight-strong);
}
.sk-timebook-notify-actions {
  display: flex;
  gap: 0.6rem;
}
.sk-timebook-notify-dismiss {
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-terminal-radius);
  padding: 0 1.25rem;
  background: transparent;
  color: var(--sk-color-ink-faint);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-timebook-notify-dismiss:hover {
  color: var(--sk-color-ink);
}

/* --- Dobbeltbooking: spørsmålet som stopper en overlapp -------------------
   Laget legger seg over arkene (z-index høyere enn timebok-arket), fordi
   spørsmålet kommer AV en handling i arket og må besvares før det gir mening
   å røre noe annet. */
.sk-overlap-layer {
  position: fixed;
  inset: 0;
  z-index: 140;
  display: grid;
  place-items: center;
  padding: 1rem;
  background: rgb(20 18 28 / 60%);
}
.sk-overlap-dialog {
  display: grid;
  width: min(30rem, 100%);
  gap: 0.9rem;
  border-radius: var(--sk-terminal-radius);
  padding: 1.5rem;
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}
.sk-overlap-dialog h2 {
  margin: 0;
  font-size: var(--sk-type-section-title);
  line-height: 1.35;
}
/* Timen som står i veien står som et faktum, ikke som en advarsel: den er
   ikke en feil, den er opplysningen operatøren mangler. */
.sk-overlap-dialog__clash {
  margin: 0;
  border-radius: var(--sk-terminal-radius);
  padding: 0.6rem 0.75rem;
  background: var(--sk-color-surface-muted, rgb(0 0 0 / 4%));
  color: var(--sk-color-ink-faint);
  font-weight: var(--sk-font-weight-strong);
}
.sk-overlap-dialog .sk-terminal-field textarea {
  min-height: 4.5rem;
  border: 1px solid var(--sk-color-border-interactive, var(--sk-color-border));
  border-radius: var(--sk-terminal-radius);
  padding: 0.6rem 0.75rem;
  font: inherit;
  resize: vertical;
}
.sk-overlap-dialog .sk-inline-actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.75rem;
  align-items: center;
}

/* ── Kundeprofilen ────────────────────────────────────────────────────────────
   En egen arbeidsflate, ikke et kort i timedetaljene. Modalvarianten dekker
   skjermen og ligger over timearket. Workspace-varianten nedenfor blir i
   terminalens vanlige dokumentflyt, slik at toppfelt og navigasjon beholdes. */
.sk-profile-layer {
  position: fixed;
  inset: 0;
  z-index: 110;
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-5);
  padding: var(--sk-space-5) clamp(1rem, 4vw, 2.4rem) var(--sk-space-8);
  overflow-y: auto;
  background: var(--sk-color-canvas);
  animation: sk-fade-in var(--sk-motion-base) var(--sk-ease-standard);
}
.sk-profile-layer.is-workspace {
  position: static;
  inset: auto;
  z-index: auto;
  width: 100%;
  gap: var(--sk-space-6);
  padding: 0;
  overflow: visible;
  background: transparent;
  animation: none;
}
.sk-profile-layer.is-workspace > :not(.sk-terminal-pin-layer) {
  width: 100%;
  max-width: none;
}
.sk-profile-head {
  display: grid;
  gap: var(--sk-space-3);
}
/* Profilen beholder sin egen arbeidsflate, men innholdet skal ikke strekkes til
   skjermbredden. En rolig lesekolonne gjør journal og handlinger skannbare på
   brede terminaler, uten å ofre full bredde på håndholdte flater. */
.sk-profile-layer > :not(.sk-terminal-pin-layer) {
  flex: 0 0 auto;
  width: min(100%, 64rem);
  margin-inline: auto;
}
.sk-profile-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
  min-height: 2.75rem;
}
.sk-profile-topline > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
/* .sk-profile-back er alias for .sk-terminal-secondary i 01a-contract.css. */
.sk-profile-hero {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) minmax(17rem, 22rem);
  align-items: center;
  gap: var(--sk-space-5);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-5);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
}
.sk-profile-photo {
  display: grid;
  place-items: center;
  width: 5.5rem;
  height: 5.5rem;
  overflow: hidden;
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xl);
  font-weight: var(--sk-font-weight-strong);
}
.sk-profile-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.sk-profile-identity {
  min-width: 0;
}
.sk-profile-identity h2 {
  margin: 0 0 var(--sk-space-1);
  font-size: var(--sk-type-section-title);
  letter-spacing: -0.035em;
}
.sk-profile-contact {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 1rem;
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-profile-contact a {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
  text-decoration: none;
}
.sk-profile-hero-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--sk-space-2);
  flex-wrap: wrap;
  max-width: 22rem;
}
.sk-profile-image-action,
.sk-profile-image-remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-profile-image-action input {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  clip-path: inset(50%);
}
.sk-profile-image-action:has(input:focus-visible) {
  outline: 3px solid var(--sk-color-focus-ring);
  outline-offset: 2px;
}
.sk-profile-image-action:has(input:disabled),
.sk-profile-image-remove:disabled {
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: wait;
}
.sk-profile-image-remove {
  width: var(--sk-terminal-control-h);
  padding: 0;
  color: var(--sk-color-danger);
}
.sk-profile-image-error {
  margin-block: calc(-1 * var(--sk-space-2)) 0;
}

.sk-profile-workspace {
  overflow: hidden;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
}

/* Allergier står OVER fanene. Et varsel som ligger bak et trykk er et varsel
   ingen leser før det er for sent. */
.sk-profile-alerts {
  display: grid;
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-profile-alerts p {
  margin: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  padding: var(--sk-space-3) var(--sk-space-5);
  background: var(--sk-color-surface-hover);
  font-size: var(--sk-font-size-md);
}
.sk-profile-alerts p:last-child {
  border-bottom: 0;
}
.sk-profile-alerts p.is-critical {
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}
.sk-profile-alerts strong {
  margin-right: 0.5rem;
  text-transform: uppercase;
  font-size: var(--sk-font-size-xs);
  letter-spacing: 0.08em;
}

.sk-profile-tabs {
  display: flex;
  gap: var(--sk-space-1);
  overflow-x: auto;
  border-bottom: 1px solid var(--sk-color-border-soft);
  padding: 0 var(--sk-space-4);
}
:where(.sk-profile-tabs) button {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: 3.25rem;
  padding: 0 var(--sk-space-3);
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-strong);
  white-space: nowrap;
  cursor: pointer;
}
:where(.sk-profile-tabs) button.is-active {
  border-bottom-color: var(--sk-color-primary);
  color: var(--sk-color-ink);
}
:where(.sk-profile-tabs) button small {
  border-radius: var(--sk-radius-pill);
  padding: 0.05rem 0.45rem;
  background: color-mix(in srgb, var(--sk-color-ink) 8%, transparent);
  font-size: var(--sk-font-size-xs);
}
:where(.sk-profile-tabs) button.is-active small {
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}

.sk-profile-body {
  display: grid;
  gap: var(--sk-space-5);
  align-content: start;
  padding: var(--sk-space-5);
}
.sk-profile-body > .sk-terminal-eyebrow {
  margin: 0.8rem 0 0;
}

.sk-profile-overview {
  display: grid;
  gap: var(--sk-space-7);
}
.sk-profile-section {
  display: grid;
  gap: var(--sk-space-4);
  padding-top: var(--sk-space-6);
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-profile-section.is-summary {
  padding-top: 0;
  border-top: 0;
}
/* .sk-profile-section-heading (panelhode) og .sk-profile-stats (nøkkeltall)
   er aliaser i 01a-contract.css. */
.sk-profile-section-heading {
  margin-bottom: 0;
}
/* Seks nøkkeltall: tre i bredden i lesekolonnen, to på smal skjerm. */
.sk-profile-stats {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: 0;
}

/* Fargeformelen settes i monospace. Den LESES tegn for tegn og skrives av til
   en skål — «6.34 + 9%» tåler ikke en skrift som gjør 1 og l like. */
.sk-profile-formulas,
.sk-profile-visits,
.sk-profile-treatments,
.sk-profile-purchases,
.sk-profile-products {
  display: grid;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-profile-formulas > li {
  display: grid;
  gap: 0.4rem;
  border-bottom: 1px solid var(--sk-color-border-soft);
  padding: var(--sk-space-3) 0 var(--sk-space-4);
}
.sk-profile-formulas > li:last-child {
  border-bottom: 0;
}
.sk-profile-formulas small,
.sk-profile-visits small,
.sk-profile-treatments small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-profile-formulas > li > div {
  display: grid;
  gap: 0.1rem;
}
.sk-profile-formulas > li > .sk-profile-formula-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-profile-formula-head > div {
  display: grid;
  min-width: 0;
  gap: 0.1rem;
}
.sk-profile-formula-edit {
  display: inline-flex;
  flex: none;
  align-items: center;
  gap: var(--sk-space-2);
  min-height: 2.5rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-3);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-profile-formula-edit:hover {
  border-color: var(--sk-color-primary);
  color: var(--sk-color-primary);
}
.sk-profile-formulas em {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-style: normal;
}
.sk-profile-layer code {
  border-radius: 0.6rem;
  padding: 0.45rem 0.7rem;
  background: var(--sk-color-signal-soft);
  color: var(--sk-color-ink);
  font-family: var(--sk-font-mono);
  font-size: var(--sk-font-size-md);
  letter-spacing: 0.02em;
  word-break: break-word;
}

.sk-profile-next {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.9rem;
  border-left: 3px solid var(--sk-color-primary);
  border-radius: var(--sk-radius-sm);
  padding: var(--sk-space-4);
  background: var(--sk-color-primary-soft);
}
.sk-profile-next span:not(.sk-terminal-status) {
  color: var(--sk-color-ink-soft);
}
.sk-profile-visits > li {
  display: grid;
  grid-template-columns: 7rem 1fr auto;
  align-items: center;
  gap: 0.3rem 0.8rem;
  border-bottom: 1px solid var(--sk-color-border-soft);
  padding: var(--sk-space-3) 0;
}
.sk-profile-visits.is-upcoming > li:first-child {
  border-left: 3px solid var(--sk-color-primary);
  border-radius: var(--sk-radius-sm);
  padding-inline: var(--sk-space-4);
  background: var(--sk-color-primary-soft);
}
.sk-profile-visits time {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-profile-visits small {
  grid-column: 2 / -1;
}
.sk-profile-history-heading {
  margin: var(--sk-space-2) 0 0;
  font-size: var(--sk-font-size-md);
}

.sk-profile-treatments > li {
  display: grid;
  gap: 0.5rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: 0.9rem 1rem;
  background: var(--sk-color-surface);
}
.sk-profile-treatments > li.is-reversed {
  border-style: dashed;
  opacity: 0.75;
}
.sk-profile-treatment-edit {
  justify-self: start;
  min-height: var(--sk-terminal-control-h);
  padding-inline: var(--sk-space-4);
}
.sk-profile-treatments p {
  margin: 0;
}
.sk-profile-reversed {
  color: var(--sk-color-danger);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-profile-treatment-head,
.sk-profile-purchase-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 1rem;
}
.sk-profile-treatment-head > div:first-child,
.sk-profile-purchase-head > div {
  display: grid;
  gap: 0.15rem;
}
.sk-profile-purchase-head > div:last-child {
  justify-items: end;
  gap: 0.35rem;
}
/* Produktene som gikk med i behandlingen — undertøyet i journalen, ikke
   overskriften. Derfor lettere ramme enn raden de hører til. */
.sk-profile-products {
  gap: 0.25rem;
  border-top: 1px solid var(--sk-color-border-soft);
  padding-top: 0.5rem;
}
.sk-profile-products > li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  font-size: var(--sk-font-size-sm);
}
.sk-profile-products small {
  color: var(--sk-color-ink-soft);
}

.sk-profile-purchases > li {
  display: grid;
  gap: 0.5rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: 0.9rem 1rem;
  background: var(--sk-color-surface);
}
.sk-profile-purchases ul {
  display: grid;
  gap: 0.25rem;
  margin: 0;
  border-top: 1px solid var(--sk-color-border-soft);
  padding: 0.5rem 0 0;
  list-style: none;
}
.sk-profile-purchases ul li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  font-size: var(--sk-font-size-sm);
}
.sk-profile-purchases ul small {
  color: var(--sk-color-ink-soft);
}

/* Inngangen til profilen, slik den ser ut nede i timen: ett kort, ett trykk.
   Alt som før krevde rulling ligger nå bak dette trykket. */
.sk-profile-teaser {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  width: 100%;
  margin-top: 1.2rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-lg);
  padding: 0.9rem 1rem;
  background: var(--sk-color-surface);
  text-align: left;
  cursor: pointer;
  transition:
    border-color var(--sk-motion-fast),
    background var(--sk-motion-fast);
}
.sk-profile-teaser:hover {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-surface-hover);
}
.sk-profile-teaser-body {
  display: grid;
  gap: 0.25rem;
  flex: 1;
  min-width: 0;
}
.sk-profile-teaser strong {
  font-size: var(--sk-font-size-lg);
}
.sk-profile-teaser small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-profile-teaser-latest {
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-sm);
}
.sk-profile-teaser code {
  justify-self: start;
  border-radius: 0.55rem;
  padding: 0.3rem 0.55rem;
  background: var(--sk-color-signal-soft);
  font-family: var(--sk-font-mono);
  font-size: var(--sk-font-size-sm);
}
.sk-profile-teaser-cta {
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-profile-teaser svg {
  flex: none;
  color: var(--sk-color-ink-faint);
}

/* Navnet i timearket er også en vei inn til kunden — samme mål, kortere vei. */
.sk-timebook-sheet-customer {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0.15rem 0 0.2rem;
  border: 0;
  padding: 0;
  background: none;
  color: var(--sk-color-ink);
  font: inherit;
  font-size: var(--sk-font-size-2xl);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: -0.035em;
  cursor: pointer;
}
.sk-timebook-sheet-customer svg {
  width: 1.15rem;
  height: 1.15rem;
  color: var(--sk-color-primary);
}
.sk-timebook-sheet-customer:hover span {
  text-decoration: underline;
}

/* ── Registrer behandling ─────────────────────────────────────────────────────
   Arket er høyere enn de andre fordi det SKRIVES i, ikke bare trykkes i: felt,
   søk og forbruksrader under hverandre. Rullingen ligger inne i arket, slik at
   knappen for å lagre aldri havner utenfor skjermen på en liten terminal. */
.sk-treatment-sheet {
  width: min(34rem, 100%);
  max-height: min(92vh, 60rem);
  overflow-y: auto;
}
.sk-treatment-fields {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr));
  gap: 0.8rem;
  margin: 1rem 0 1.4rem;
}
.sk-treatment-fields label {
  display: grid;
  gap: 0.3rem;
}
.sk-treatment-fields > * {
  min-width: 0;
}
.sk-treatment-fields > .is-wide {
  grid-column: 1 / -1;
}
.sk-treatment-fields > .is-wide > .sk-terminal-secondary {
  min-inline-size: 0;
  max-inline-size: 100%;
  white-space: normal;
}
.sk-treatment-fields span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-treatment-fields input,
.sk-treatment-fields textarea {
  width: 100%;
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0.6rem 0.8rem;
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  resize: vertical;
}
.sk-treatment-fields input:focus-visible,
.sk-treatment-fields textarea:focus-visible {
  outline: 2px solid var(--sk-color-focus-ring);
  outline-offset: 2px;
  border-color: var(--sk-color-primary);
}
/* Formelen skrives av til en skål og leses tegn for tegn — samme begrunnelse
   som når den vises i profilen. */
.sk-treatment-fields input.sk-treatment-formula,
.sk-treatment-fields textarea.sk-treatment-formula {
  font-family: var(--sk-font-mono);
  letter-spacing: 0.02em;
}

.sk-treatment-lines {
  display: grid;
  gap: 0.4rem;
  margin: 0.4rem 0 0.8rem;
  padding: 0;
  list-style: none;
}
.sk-treatment-lines > li {
  display: grid;
  grid-template-columns: 1fr 4.5rem auto auto;
  align-items: center;
  gap: 0.6rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  padding: 0.5rem 0.7rem;
  background: var(--sk-color-surface);
}
.sk-treatment-lines input {
  width: 100%;
  min-height: 2.5rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0.35rem 0.5rem;
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  text-align: right;
}
.sk-treatment-lines small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-treatment-remove {
  display: grid;
  place-items: center;
  width: 2.2rem;
  height: 2.2rem;
  border: 0;
  border-radius: 50%;
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-ink-soft);
  cursor: pointer;
}
.sk-treatment-hits {
  display: grid;
  gap: var(--sk-space-2);
  margin: var(--sk-space-4) 0;
  padding: 0;
  list-style: none;
}
/* Treffet er en rad-knapp: mål her, farger i :where-regelen under. */
:where(.sk-treatment-hits) button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  min-height: 4.75rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  text-align: left;
  cursor: pointer;
}
:where(.sk-treatment-hits) button {
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
}
:where(.sk-treatment-hits) button:hover {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-surface-hover);
}
.sk-treatment-hits small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

/* Journalknappen står blant timens handlinger, men er ikke en statusendring —
   samme form som «Ta betalt», som den deler plass med. */
.sk-timebook-sheet-journal {
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-timebook-sheet-journal:hover {
  border-color: var(--sk-color-primary);
  color: var(--sk-color-primary);
}
.sk-profile-register {
  justify-self: start;
  min-height: var(--sk-terminal-control-h);
  padding: 0.5rem 1.2rem;
}

/* Samtykkekortet på oversikten.
   Raden er den samme grammatikken som ellers i profilen: tittel + metatekst
   til venstre, kontrollen til høyre. Beviset står i metateksten og ikke i en
   egen boks — det skal leses sammen med svaret, ikke som en fotnote. */
.sk-profile-consents {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-profile-consent-rows {
  display: grid;
  gap: var(--sk-space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-profile-consent-rows > li {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  align-items: center;
  justify-content: space-between;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-3);
}
.sk-profile-consent-rows > li > span {
  display: grid;
  gap: 0.15rem;
  min-width: 12rem;
  flex: 1 1 12rem;
}
.sk-profile-consent-rows small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
/* To like brede svar, aldri smalere enn en tommel. */
.sk-profile-consent-rows .sk-terminal-segmented {
  flex: 0 0 auto;
  grid-template-columns: repeat(2, minmax(5rem, 1fr));
}

/* ── Samlet terminalarbeidsflate ─────────────────────────────────────────────
   Terminalen bruker samme rytme, flater og navigasjonslogikk som resten av
   Min Rutine. Navigasjonen er en rolig arbeidsrail på store skjermer og en
   fast, scrollbar fanerad på håndholdte flater. */
.sk-terminal-workspace {
  display: flex;
  height: 100vh;
  height: 100dvh;
  min-width: 0;
  min-height: 100vh;
  min-height: 100dvh;
  flex-direction: column;
  overflow: hidden;
  background: var(--sk-color-canvas);
}

.sk-terminal-skip-link {
  min-width: 44px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  box-sizing: border-box;
  position: fixed;
  top: 0.5rem;
  left: 0.5rem;
  z-index: 250;
  padding: var(--sk-space-2) var(--sk-space-3);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-ink);
  color: var(--sk-color-canvas);
  transform: translateY(-150%);
}
.sk-terminal-skip-link:focus {
  transform: translateY(0);
}
.sk-terminal-workspace-header {
  position: sticky;
  top: 0;
  z-index: 30;
  display: grid;
  flex: 0 0 4.75rem;
  grid-template-columns: minmax(12rem, auto) 1fr auto;
  min-height: 4.75rem;
  padding: 0 var(--sk-space-5);
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: color-mix(in srgb, var(--sk-color-surface) 94%, transparent);
  box-shadow: 0 1px 0 rgb(35 33 44 / 3%);
}
/* Innholdet bestemmer høyden også når responsive regler setter flex-basis.
   Enhetsnavn og knapper må bli i headeren når tekst bryter over flere linjer. */
.sk-terminal-workspace > header.sk-terminal-workspace-header {
  flex-basis: auto;
}
.sk-terminal-workspace-header > *,
.sk-terminal-workspace-header .sk-terminal-brand > span:last-child {
  min-width: 0;
}
.sk-terminal-workspace-header .sk-terminal-brand > span:last-child small {
  white-space: normal;
  overflow-wrap: anywhere;
}
.sk-terminal-brand > span:last-child {
  display: grid;
  gap: 0.1rem;
  padding: 0;
  border: 0;
  color: var(--sk-color-ink);
}
.sk-terminal-brand > span:last-child strong {
  line-height: 1;
  letter-spacing: -0.025em;
}
.sk-terminal-brand > span:last-child small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-medium);
}
.sk-terminal-workspace-context {
  display: grid;
  align-content: center;
  justify-items: center;
  line-height: 1.2;
}
.sk-terminal-workspace-context span {
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
}
.sk-terminal-workspace-context strong {
  font-size: var(--sk-font-size-sm);
}
.sk-terminal-workspace-context strong::first-letter {
  text-transform: uppercase;
}
.sk-terminal-workspace-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--sk-space-2);
}
/* Skriverbrikka står ved siden av språkvalget. Den bruker den vanlige
   merkelappen fra kontrakten — ingen egen farge, ingen egen form — men skal
   aldri brytes over to linjer eller presse profilknappen ut av topplinja. */
.sk-terminal-workspace-actions > .sk-terminal-status {
  flex: 0 0 auto;
  align-self: center;
}
/* Under 900 px er plassen brukt opp av dato og profil. Fargen på brikka bærer
   beskjeden alene der; den fulle setningen står uansett i varselet under
   overskriften. */
@media (max-width: 56.25rem) {
  .sk-terminal-workspace-actions > .sk-terminal-status {
    padding: var(--sk-space-1) var(--sk-space-2);
    font-size: 0;
  }
  .sk-terminal-workspace-actions > .sk-terminal-status::before {
    content: "";
    display: block;
    width: 0.5rem;
    height: 0.5rem;
    border-radius: var(--sk-radius-pill);
    background: currentcolor;
  }
}
.sk-terminal-workspace-layout {
  display: grid;
  grid-template-columns: 7rem minmax(0, 1fr);
  /* Én rad som er nøyaktig så høy som plassen under topplinja OG eventuelle
     varsler (skriver frakoblet, nett borte). Menyen og innholdet måler seg mot
     denne raden — ikke mot 100dvh minus en fast topplinje. Med det gamle
     regnestykket dyttet skriver-banneret «Betal» under kanten på kasse-PC-en. */
  grid-template-rows: minmax(0, 1fr);
  min-height: 0;
  flex: 1 1 auto;
  overflow: hidden;
}
.sk-terminal-workspace-nav {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-1);
  height: 100%;
  min-height: 0;
  padding: var(--sk-space-3) var(--sk-space-2);
  overflow-y: auto;
  background: var(--sk-color-ink);
}
:where(.sk-terminal-workspace-nav) button {
  display: grid;
  place-items: center;
  gap: 0.3rem;
  min-height: 4.25rem;
  border: 0;
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-2);
  background: transparent;
  color: color-mix(in srgb, var(--sk-color-canvas) 72%, transparent);
  font: inherit;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
:where(.sk-terminal-workspace-nav) button svg {
  width: 1.25rem;
  height: 1.25rem;
}
:where(.sk-terminal-workspace-nav) button:hover {
  background: color-mix(in srgb, var(--sk-color-canvas) 9%, transparent);
  color: var(--sk-color-canvas);
}
:where(.sk-terminal-workspace-nav) button.is-active {
  background: var(--sk-color-primary);
  color: white;
  box-shadow: 0 0.45rem 1.3rem
    color-mix(in srgb, var(--sk-color-primary) 32%, transparent);
}
:where(.sk-terminal-workspace-nav) button.sk-terminal-nav-pay {
  min-height: var(--sk-terminal-touch-min);
  background: var(--sk-color-primary);
  color: var(--sk-color-on-action);
}
:where(.sk-terminal-workspace-nav) button.sk-terminal-nav-pay[aria-current="page"] {
  box-shadow: 0 0 0 2px white, 0 0.45rem 1.3rem color-mix(in srgb, var(--sk-color-primary) 42%, transparent);
}
/* «Betal» og beløpet skal alltid være lesbare mot den fylte knappen, uansett hvilken
   nav-regel (rail, bunnmeny) som ellers gjør tekst dempet. */
.sk-terminal-workspace-nav button.sk-terminal-nav-pay :is(span, small, svg) {
  color: var(--sk-color-on-action);
  opacity: 1;
}
:where(.sk-terminal-workspace-nav) button.sk-terminal-nav-pay small {
  /* Flisa er smal. «Aktivt salg: 919 kr» brøt over tre linjer og dyttet
     betalingsknappen ut av rekka — beløpet er det eneste tallet noen leser her,
     og hele setningen står i tittel og aria-etikett. */
  max-width: 100%;
  overflow: hidden;
  font-size: var(--sk-font-size-xs);
  line-height: 1.1;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.sk-terminal-nav-spacer {
  flex: 1 1 auto;
}
.sk-terminal-workspace-nav > .sk-terminal-mobile-more-trigger {
  position: relative;
  display: none;
}
.sk-terminal-nav-badge {
  position: absolute;
  top: var(--sk-space-1);
  right: var(--sk-space-2);
  display: inline-grid;
  min-width: 1.2rem;
  height: 1.2rem;
  place-items: center;
  border-radius: var(--sk-radius-pill);
  padding-inline: 0.3rem;
  background: var(--sk-color-warning);
  color: white;
  font-size: var(--sk-font-size-xs);
  line-height: 1;
}
.sk-terminal-mobile-more-layer {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: grid;
  align-items: end;
  padding: var(--sk-space-4);
  background: color-mix(in srgb, var(--sk-color-ink) 58%, transparent);
}
.sk-terminal-mobile-more-sheet {
  width: min(34rem, 100%);
  margin-inline: auto;
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-5);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
  animation: sk-terminal-more-enter var(--sk-motion-base) ease-out;
}
.sk-terminal-mobile-more-sheet > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-4);
}
.sk-terminal-mobile-more-sheet h2 {
  margin: 0;
  font-size: var(--sk-type-section-title);
  letter-spacing: -0.035em;
}
:where(.sk-terminal-mobile-more-sheet > header) > button {
  display: grid;
  width: var(--sk-control-height);
  height: var(--sk-control-height);
  flex: none;
  place-items: center;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  cursor: pointer;
}
.sk-terminal-mobile-more-sheet > header svg {
  width: 1.25rem;
}
.sk-terminal-mobile-more-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
:where(.sk-terminal-mobile-more-grid) > button {
  position: relative;
  display: flex;
  min-height: 4.5rem;
  align-items: center;
  gap: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-4);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  text-align: left;
  cursor: pointer;
}
:where(.sk-terminal-mobile-more-grid) > button:hover,
:where(.sk-terminal-mobile-more-grid) > button.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
:where(.sk-terminal-mobile-more-grid) > button svg {
  width: 1.3rem;
  flex: none;
  color: var(--sk-color-primary);
}
:where(.sk-terminal-mobile-more-grid) > button strong {
  display: inline-grid;
  min-width: 1.4rem;
  height: 1.4rem;
  margin-left: auto;
  place-items: center;
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-warning);
  color: white;
  font-size: var(--sk-font-size-xs);
}
@keyframes sk-terminal-more-enter {
  from {
    opacity: 0;
    transform: translateY(var(--sk-space-4));
  }
}
.sk-terminal-workspace-content {
  height: 100%;
  min-width: 0;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: var(--sk-space-6);
}
.sk-terminal-workspace-content:has(> .sk-timebook-panel) {
  box-sizing: border-box;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}
.sk-terminal-workspace-content > .sk-terminal-panel,
.sk-terminal-workspace-content > .sk-timebook-panel {
  width: min(82rem, 100%);
  margin: 0 auto;
  padding: 0 0 var(--sk-space-8);
}
.sk-terminal-workspace-content > .sk-page {
  width: min(82rem, 100%);
  margin: 0 auto;
  padding: 0 0 var(--sk-space-8);
}
.sk-terminal-workspace-content > .sk-timebook-panel {
  padding-bottom: 0;
}
/* Oversikten («Hjem»: hode, snarveier, dagens timer, «mer»-rutenettet) ligger i
   06b-workspace-overview.css. */
.sk-timebook-panel {
  display: flex;
  height: 100%;
  min-height: 0;
  flex-direction: column;
}
.sk-timebook-panel > .sk-timebook {
  min-height: 16rem;
  flex: 1 1 auto;
}
.sk-timebook-panel .sk-timebook-scroll {
  height: 100%;
  max-height: none;
}
.sk-terminal-day-status {
  position: relative;
  z-index: 8;
  display: grid;
  flex: 0 0 auto;
  grid-template-columns: minmax(8rem, 0.8fr) minmax(6rem, 0.55fr) minmax(17rem, 1.5fr) minmax(10rem, auto);
  gap: var(--sk-space-2);
  margin-bottom: var(--sk-space-3);
}
.sk-terminal-day-status.is-compact {
  display: flex;
  margin: 0;
}
.sk-terminal-day-status.is-compact .sk-terminal-day-status-item {
  /* Stemplingen står nå i kontrollraden ved siden av visningsvelgeren og
     «Ny time». Den skal ta den plassen den trenger, ikke 28 rem. */
  /* Ingen egen boks i hodet: tekst + knapp, som de andre handlingene. Boksen
     fikk «Stemple inn» til å se ut som en annen slags knapp enn «Ny time». */
  width: auto;
  min-height: 0;
  border: 0;
  border-radius: 0;
  padding: 0;
  background: transparent;
}
/* Ikke stemplet inn: varselfargen bare på ikonet, ikke en gul boks midt i
   hodet. */
.sk-terminal-day-status.is-compact .sk-terminal-day-status-item:not(.is-clocked-in) > svg {
  color: var(--sk-color-warning);
}
.sk-timebook-panel > .sk-terminal-section-heading {
  align-items: center;
  min-height: var(--sk-control-height);
}
.sk-terminal-day-status-item,
:where(.sk-terminal-roster-control) > button {
  display: flex;
  min-height: var(--sk-terminal-touch-min);
  align-items: center;
  gap: var(--sk-space-2);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-2) var(--sk-space-3);
  background: var(--sk-color-surface);
}
.sk-terminal-day-status-item {
  justify-content: space-between;
}
.sk-terminal-day-status-item > span {
  color: var(--sk-color-ink-soft);
}
:where(.sk-terminal-day-status-item.is-attendance) button,
:where(.sk-terminal-roster-control) > button {
  min-height: var(--sk-terminal-touch-min);
  border: 0;
  border-radius: var(--sk-terminal-radius);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
:where(.sk-terminal-day-status-item.is-attendance) button {
  margin-left: auto;
  padding-inline: var(--sk-space-3);
  background: var(--sk-color-primary);
  color: white;
}
.sk-terminal-roster-control {
  position: relative;
}
:where(.sk-terminal-roster-control) > button {
  width: 100%;
  justify-content: center;
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
}
.sk-terminal-roster-popover {
  position: absolute;
  top: calc(100% + var(--sk-space-2));
  right: 0;
  z-index: 20;
  width: min(28rem, calc(100vw - var(--sk-terminal-nav-w) - 2rem));
  max-height: min(30rem, calc(100dvh - 10rem));
  overflow-y: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-3);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}
.sk-terminal-global-error {
  width: min(82rem, 100%);
  margin: 0 auto var(--sk-space-4);
}
.sk-terminal-day-toolbar {
  max-width: 38rem;
  margin: 0 auto var(--sk-space-5);
}
.sk-terminal-today-columns {
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(20rem, 0.85fr);
  gap: var(--sk-space-6);
  align-items: start;
}
.sk-terminal-today-section {
  min-width: 0;
}
/* Sammenlagt tar vaktlisten én rad, ikke en halv skjerm. Kolonnen krymper med
   den, så egne avtaler får plassen tilbake framfor å stå igjen ved siden av et
   tomt felt. */
.sk-terminal-roster-aside {
  align-self: start;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}
.sk-terminal-roster-toggle {
  display: flex;
  gap: var(--sk-space-3);
  align-items: center;
  width: 100%;
  border: 0;
  border-radius: inherit;
  padding: var(--sk-space-4);
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-terminal-roster-toggle > span:first-child {
  flex: 1;
  min-width: 0;
}
.sk-terminal-roster-toggle h2 {
  margin: 0;
  font-size: var(--sk-type-section-title);
}
.sk-terminal-roster-count {
  flex: none;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-roster-toggle > svg {
  flex: none;
  transition: transform var(--sk-motion-fast);
}
.sk-terminal-roster-aside.is-open .sk-terminal-roster-toggle > svg {
  transform: rotate(180deg);
}
.sk-terminal-roster-aside > div {
  padding: 0 var(--sk-space-4) var(--sk-space-4);
}
/* Lukket har den ikke lenger krav på sin egen spalte. */
.sk-terminal-today-columns:has(
    .sk-terminal-roster-aside:not(.is-open)
  ) {
  grid-template-columns: minmax(0, 1fr) minmax(16rem, auto);
}
.sk-terminal-today-section .sk-terminal-appointments {
  border-radius: var(--sk-radius-lg);
}

/* Fra iPad-landskap og oppover eier «I dag» resten av arbeidshøyden. Begge
   listene ruller i sine egne paneler; dagshodet og vaktlista blir dermed stående
   synlig uten at selve arbeidskolonnen får en ekstra rull. */
@media (min-width: 64rem) {
  .sk-terminal-workspace-content:has(> .sk-terminal-today-panel) {
    overflow: hidden;
  }
  .sk-terminal-workspace-content > .sk-terminal-today-panel {
    box-sizing: border-box;
    display: flex;
    height: 100%;
    min-height: 0;
    flex-direction: column;
    padding-bottom: 0;
  }
  .sk-terminal-today-panel > .sk-terminal-day-toolbar,
  .sk-terminal-today-panel > .sk-terminal-summary-grid {
    flex: 0 0 auto;
  }
  .sk-terminal-today-panel > .sk-terminal-today-columns {
    min-height: 0;
    flex: 1 1 auto;
    align-items: stretch;
  }
  .sk-terminal-today-columns > .sk-terminal-today-section {
    display: flex;
    min-height: 0;
    flex-direction: column;
    overflow: hidden;
  }
  .sk-terminal-today-columns
    > section.sk-terminal-today-section
    > .sk-terminal-appointments,
  .sk-terminal-today-columns
    > section.sk-terminal-today-section
    > .sk-terminal-empty-card,
  .sk-terminal-roster-aside > div {
    min-height: 0;
    flex: 1 1 auto;
    overflow: auto;
    overscroll-behavior: contain;
  }
  .sk-terminal-roster-aside {
    align-self: stretch;
  }
  .sk-terminal-roster-toggle,
  .sk-terminal-section-heading {
    flex: 0 0 auto;
  }
}

/* 768 px POS-/719 px kiosk-høyde: behold de tre beslutningskortene på én rad,
   men gi mesteparten av høyden til avtalene og vaktlista. */
@media (min-width: 64rem) and (max-height: 800px) {
  .sk-terminal-workspace .sk-terminal-day-toolbar {
    max-width: 34rem;
    margin-bottom: var(--sk-space-3);
  }
  .sk-terminal-workspace .sk-terminal-day-toolbar h1 {
    font-size: var(--sk-font-size-xl);
  }
  .sk-terminal-workspace .sk-terminal-summary-grid {
    gap: var(--sk-space-3);
    margin-bottom: var(--sk-space-3);
  }
  .sk-terminal-workspace .sk-terminal-summary-grid article {
    min-height: 4.25rem;
    padding: var(--sk-space-2) var(--sk-space-3);
  }
  .sk-terminal-workspace .sk-terminal-summary-grid article strong {
    font-size: var(--sk-font-size-md);
  }
  .sk-terminal-workspace .sk-terminal-today-columns {
    gap: var(--sk-space-3);
  }
  .sk-terminal-workspace .sk-terminal-section-heading,
  .sk-terminal-workspace .sk-terminal-roster-toggle {
    margin-bottom: var(--sk-space-2);
  }
  .sk-terminal-workspace .sk-terminal-roster-toggle {
    padding: var(--sk-space-3);
  }
  .sk-terminal-workspace .sk-terminal-roster-aside > div {
    padding: 0 var(--sk-space-3) var(--sk-space-3);
  }
}

/* Arbeidsark er høyrestilte drawers på terminal/desktop. Det bevarer dagens
   kontekst og følger samme mønster som administrasjonsappen. */
.sk-terminal-sheet-layer {
  display: flex;
  align-items: stretch;
  justify-content: flex-end;
  padding: 0;
}
.sk-terminal-sheet-layer > .sk-timebook-sheet {
  width: min(38rem, 100%);
  height: 100dvh;
  max-height: 100dvh;
  border-radius: var(--sk-radius-lg) 0 0 var(--sk-radius-lg);
  padding: var(--sk-space-7) var(--sk-space-6);
  box-shadow: var(--sk-shadow-popover);
}
.sk-timebook-sheet:focus,
.sk-terminal-pin-card:focus,
.sk-profile-layer:focus {
  outline: none;
}
.sk-timebook-sheet-note.is-appointment-note {
  margin-top: var(--sk-space-5);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-4);
  background: var(--sk-color-surface-hover);
}
.sk-timebook-sheet > .sk-terminal-eyebrow {
  min-height: 1.5rem;
  margin-left: 3.5rem;
}
/* Dra-bryteren for hovedhandlingen. Bred nok til at banen er en tydelig
   bevegelse, høy nok til at knotten treffes med tommelen. */
.sk-slide-confirm {
  position: relative;
  display: flex;
  align-items: center;
  overflow: hidden;
  min-height: 3.6rem;
  margin: var(--sk-space-4) 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-primary);
  border-radius: 1.8rem;
  background: var(--sk-color-primary-soft);
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
}
.sk-slide-confirm.is-ready {
  background: var(--sk-color-primary);
}
.sk-slide-confirm.is-ready .sk-slide-confirm-label {
  color: white;
}
.sk-slide-confirm.is-locked {
  border-color: var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  cursor: progress;
}
.sk-slide-confirm-label {
  /* Teksten står midt i sporet, ikke etter knotten: den skal kunne leses før
     bevegelsen begynner, og bli stående mens knotten passerer. */
  position: absolute;
  left: 0;
  right: 0;
  text-align: center;
  font-weight: var(--sk-font-weight-strong);
  pointer-events: none;
}
.sk-slide-confirm-knob {
  display: grid;
  width: 3.2rem;
  height: 3.2rem;
  margin: 0.2rem;
  place-items: center;
  border-radius: 50%;
  background: var(--sk-color-primary);
  color: white;
  touch-action: none;
}
.sk-slide-confirm.is-locked .sk-slide-confirm-knob {
  background: var(--sk-color-disabled-text);
}
.sk-slide-confirm:focus-visible {
  outline: 2px solid var(--sk-color-primary);
  outline-offset: 2px;
}

/* Rediger og send står side om side: begge handler om timen som helhet, og
   begge er sjeldnere enn statusknappene under.

   Marginen over er ikke pynt. Kundekortet rett foran har sin egen ramme, og
   uten luft mellom dem la knappene seg inntil kortkanten og så ut som en del
   av kortet — to flater som klistret seg sammen. */
.sk-timebook-sheet-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
  align-items: center;
  margin-top: var(--sk-space-5);
  margin-bottom: var(--sk-space-3);
  padding-top: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border-soft);
}

/* Hva kunden faktisk har fått, hentet fra køen og ikke fra en knapp som husker
   sitt eget trykk. Står under knappen fordi den svarer på «hva skjedde da jeg
   trykket» — og på «har noen andre allerede sendt dette?». */
.sk-message-log {
  display: grid;
  gap: var(--sk-space-1);
  width: 100%;
  margin: var(--sk-space-2) 0 0;
  padding: 0;
  list-style: none;
}
.sk-message-log > li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0 var(--sk-space-3);
  align-items: baseline;
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-2) var(--sk-space-3);
  background: var(--sk-color-surface-hover);
}
.sk-message-log strong {
  font-size: var(--sk-font-size-sm);
}
.sk-message-log > li > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.sk-message-log small {
  grid-column: 1 / -1;
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
}
.sk-timebook-sheet-edit,
.sk-timebook-sheet-send {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-3);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-timebook-sheet-send:disabled {
  border-color: var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}
.sk-timebook-sheet-toolbar > small {
  flex-basis: 100%;
}
.sk-timebook-sheet-edit-form {
  display: grid;
  gap: var(--sk-space-3);
  margin: 0 0 var(--sk-space-5);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-4);
  background: var(--sk-color-surface-hover);
}
.sk-timebook-sheet-edit-summary {
  display: flex;
  justify-content: space-between;
  gap: var(--sk-space-3);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-timebook-sheet-edit-summary strong {
  color: var(--sk-color-ink);
}
.sk-timebook-sheet-note.is-appointment-note > p,
.sk-treatment-journal-note > small {
  margin: 0 0 var(--sk-space-2);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  line-height: 1.45;
}
.sk-treatment-journal-note {
  border: 1px solid
    color-mix(in srgb, var(--sk-color-primary) 24%, var(--sk-color-border-soft));
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-4);
  background: var(--sk-color-primary-soft);
}
.sk-treatment-journal-note > span {
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
/* Kladdens ENE statuslinje. Feilteksten og et nytt forsøk står på samme rad så
   lenge det er plass; knappen faller under på smal skjerm. */
.sk-terminal-draft-status {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-timebook-block-status {
  display: inline-flex;
  align-self: end;
  width: max-content;
  border-radius: var(--sk-radius-pill);
  padding: 0.08rem 0.38rem;
  background: color-mix(in srgb, currentColor 8%, transparent);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-timebook-block:focus-visible,
.sk-timebook-slot[role="button"]:focus-visible {
  z-index: 8;
  outline: 3px solid var(--sk-color-focus-ring);
  outline-offset: -3px;
}
.sk-timebook-block.is-no_show,
.sk-timebook-block.is-cancelled {
  border-style: dashed;
}

/* Redigering av bekreftede kundeopplysninger ligger på samme profilflate,
   og sikkerhetsfeltene er fullbredde slik at de ikke kan overses. */
.sk-profile-edit,
.sk-profile-book {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: 0 var(--sk-space-4);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-profile-book {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary);
  color: white;
}
.sk-profile-book:hover {
  filter: brightness(0.96);
}
.sk-profile-edit-card {
  display: grid;
  gap: var(--sk-space-5);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-card-radius);
  padding: var(--sk-card-inset);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
}
.sk-profile-edit-card > .sk-terminal-section-heading {
  margin-bottom: 0;
}
.sk-profile-edit-card > .sk-terminal-error {
  margin: 0;
}
.sk-profile-edit-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-profile-edit-grid label,
.sk-timebook-sheet-edit-form label {
  display: grid;
  gap: var(--sk-space-2);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
/* Hjelpelinja under et felt står i samme rutenett som etiketten, og arvet
   derfor både den halvfete vekten og en toppmarg oppå rutenettets mellomrom.
   Den skal leses som en forklaring, ikke som enda en etikett. */
.sk-timebook-sheet-edit-form label > .sk-terminal-hint {
  margin: 0;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-body);
}
.sk-profile-edit-grid label.is-wide {
  grid-column: 1 / -1;
}
.sk-profile-edit-grid input,
.sk-profile-edit-grid textarea,
.sk-timebook-sheet-edit-form input,
.sk-timebook-sheet-edit-form select,
.sk-treatment-fields input,
.sk-treatment-fields select,
.sk-treatment-fields textarea {
  width: 100%;
  min-height: var(--sk-terminal-control-h);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-terminal-radius);
  padding: var(--sk-space-2) var(--sk-space-3);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
}
.sk-profile-edit-grid textarea,
.sk-treatment-fields textarea {
  resize: vertical;
}
/* Knappene i arket får høyden fra kontrakten (--sk-terminal-control-h);
   .sk-terminal-back er et fast 2.6rem-mål i 01-foundations.css. */
.sk-treatment-remove {
  min-height: var(--sk-control-height);
}
.sk-treatment-remove {
  width: var(--sk-control-height);
  height: var(--sk-control-height);
}
.sk-terminal-inline-fields input[type="checkbox"] {
  width: 1.5rem;
  height: 1.5rem;
  min-height: 1.5rem;
  accent-color: var(--sk-color-primary);
}
.sk-terminal-inline-fields:has(input[type="checkbox"]) {
  min-height: var(--sk-control-height);
  align-items: center;
}
/* Gjenbrukte design-systemkontroller blir ellers 40–42 px i Oppgaver-fanen.
   I terminalen er de berøringsmål og følger derfor samme 44 px-kontrakt som
   de lokale terminalknappene. */
.sk-terminal-workspace .sk-inline-actions .sk-button,
.sk-terminal-workspace .sk-chip,
.sk-terminal-workspace .sk-linklike,
.sk-terminal-workspace .sk-terminal-profile,
.sk-terminal-workspace .sk-terminal-payment-readiness-error button,
.sk-terminal-workspace .sk-profile-formula-edit,
.sk-terminal-workspace .sk-timebook-sheet-customer {
  min-height: var(--sk-control-height);
}
.sk-terminal-workspace .sk-linklike,
.sk-terminal-workspace .sk-timebook-sheet-customer {
  display: inline-flex;
  align-items: center;
}
.sk-terminal-workspace .sk-call-row {
  min-height: var(--sk-control-height);
  align-items: center;
}
.sk-terminal-workspace button:focus-visible,
.sk-terminal-workspace a:focus-visible,
.sk-terminal-workspace input:focus-visible,
.sk-terminal-workspace select:focus-visible,
.sk-terminal-workspace textarea:focus-visible,
.sk-terminal-pin-layer button:focus-visible,
.sk-profile-layer button:focus-visible {
  outline: 3px solid var(--sk-color-focus-ring);
  outline-offset: 2px;
}

@media (max-width: 72rem) {
  .sk-terminal-cart-lines > article {
    grid-template-columns: minmax(0, 1fr) 8.25rem 9rem;
  }
  .sk-terminal-line-actions {
    grid-column: 2 / -1;
    justify-content: flex-end;
  }
}

@media (max-width: 56rem) {
  .sk-terminal-workspace {
    min-width: 0;
  }
  .sk-terminal-workspace-header {
    grid-template-columns: 1fr auto;
    min-height: 4.25rem;
    padding: 0 var(--sk-space-3);
  }
  .sk-terminal-workspace-context {
    display: none;
  }
  .sk-terminal-profile > span:nth-child(2) {
    display: none;
  }
  .sk-terminal-workspace-layout {
    display: block;
    min-height: 0;
  }
  .sk-terminal-workspace-nav {
    position: fixed;
    inset: auto 0 0;
    z-index: 40;
    display: grid;
    /* Under denne bredden skjules sekundærknappene, desktop-versjonen av
       «mer» og mellomrommet. Antall synlige hovedknapper kan endres når
       arbeidsflaten får nye snarveier, så kolonnene følger det som faktisk
       rendres i stedet for et hardkodet antall. */
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
    height: auto;
    padding: var(--sk-space-2) var(--sk-space-2)
      max(var(--sk-space-2), env(safe-area-inset-bottom));
    overflow: visible;
    border-top: 1px solid color-mix(in srgb, white 12%, transparent);
  }
  :where(.sk-terminal-workspace-nav) button {
    min-width: 0;
    min-height: 4.25rem;
  }
  .sk-terminal-workspace-nav .sk-terminal-nav-secondary {
    display: none;
  }
  .sk-terminal-workspace-nav .sk-terminal-nav-desktop-more,
  .sk-terminal-workspace-nav .sk-terminal-nav-spacer {
    display: none;
  }
  .sk-terminal-workspace-nav > .sk-terminal-mobile-more-trigger {
    display: grid;
  }
  .sk-terminal-workspace-content {
    padding: var(--sk-space-4) var(--sk-space-4) 6.75rem;
  }
  .sk-terminal-overview-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-terminal-workspace-content:has(> .sk-timebook-panel) {
    height: auto;
    overflow: visible;
  }
  .sk-timebook-panel {
    display: block;
    height: auto;
  }
  .sk-timebook-panel .sk-timebook-scroll {
    height: auto;
    max-height: 72vh;
  }
  .sk-shift-calendar-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .sk-terminal-payment-flow.is-processing,
  .sk-terminal-payment-flow.is-complete {
    min-height: calc(100dvh - 4.25rem - 6.75rem);
  }
  .sk-terminal-summary-grid article.is-attendance {
    grid-column: 1 / -1;
  }
  .sk-terminal-checkout-grid {
    grid-template-columns: 1fr;
  }
  .sk-terminal-sale-layout {
    display: flex;
    height: auto;
    overflow: visible;
    flex-direction: column;
  }
  .sk-terminal-sale-catalog,
  .sk-terminal-sale-cart {
    overflow: visible;
  }
  .sk-terminal-sale-footer {
    position: sticky;
    bottom: 6.75rem;
    grid-template-columns: 1fr auto;
  }
  .sk-terminal-sale-status {
    grid-column: 1 / -1;
  }
  .sk-terminal-checkout-grid aside {
    position: static;
  }
  .sk-terminal-price-editor {
    grid-template-columns: 1fr 1fr;
  }
  .sk-timesheet-day-editor {
    grid-template-columns: minmax(12rem, 0.75fr) minmax(0, 1.25fr);
  }
  .sk-timesheet-editor-actions {
    grid-column: 1 / -1;
    justify-content: flex-end;
  }
  .sk-terminal-sheet-layer > .sk-timebook-sheet {
    width: 100%;
    border-radius: 0;
    padding: var(--sk-space-5) var(--sk-space-4);
  }
  .sk-profile-hero {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .sk-profile-hero-actions {
    grid-column: 1 / -1;
    justify-content: flex-start;
    max-width: none;
  }
}

/* «Mer» sto i fire kolonner mens Oversikt sto i tre, på samme skjerm, rett ved
   siden av hverandre — `auto-fit` teller plass, ikke fliser. Tre kolonner er
   tallet Oversikt bruker, og de to flatene skal møte øyet likt.
   Regelen er skrevet med panelet foran seg fordi 06b-workspace-overview.css
   lastes ETTER denne fila; en like spesifikk regel her ville tapt. */
.sk-terminal-more-panel .sk-terminal-more-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 56rem) {
  .sk-terminal-more-panel .sk-terminal-more-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (prefers-reduced-motion: reduce) {
  .sk-terminal-mobile-more-sheet {
    animation: none;
  }
}

/* Din dag (.sk-terminal-my-day) er nøkkeltallsfliser — alias for
   .sk-terminal-summary-grid i 01a-contract.css. */

/* Desktop header parts keep their own text width; enlarged text may take another row. */
@media (min-width: 64rem) {
  .sk-terminal-workspace > .sk-terminal-workspace-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
  }
  .sk-terminal-workspace-header > .sk-terminal-brand,
  .sk-terminal-workspace-header > .sk-terminal-workspace-actions {
    flex: 1 1 max-content;
    max-inline-size: 100%;
  }
  .sk-terminal-workspace-header > .sk-terminal-workspace-context {
    flex: 0 1 max-content;
    max-inline-size: 100%;
  }
}

/* Tastaturfokus må rulle hele menyvalget over den faktisk målte Betal-flisa. */
@media (min-width: 64rem) {
  .sk-terminal-workspace-nav {
    scroll-padding-block-end: calc(var(--sk-terminal-sticky-pay-height, 0px) + var(--sk-space-3));
  }
}

/* Stable groups replace wrapping header rows; no action or identity is removed. */
.sk-terminal-workspace > header.sk-terminal-workspace-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  gap: var(--sk-space-3);
  padding-block: var(--sk-space-3);
}
.sk-terminal-workspace-header > .sk-terminal-brand {
  flex-direction: column;
  align-items: flex-start;
}
.sk-terminal-workspace-header > .sk-terminal-workspace-context {
  grid-column: 1;
  max-inline-size: 100%;
}
.sk-terminal-workspace-header > .sk-terminal-workspace-actions {
  display: grid;
  grid-column: 2;
  grid-row: 1 / 3;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 8rem), 1fr));
  align-items: center;
  justify-items: start;
}
.sk-terminal-workspace-actions > * { min-inline-size: 0; max-inline-size: 100%; }
.sk-terminal-workspace-actions > [data-deployment-phase-slot],
.sk-terminal-workspace-actions > .sk-terminal-profile { grid-column: 1 / -1; }
.sk-terminal-workspace-actions > .sk-terminal-profile {
  inline-size: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}
/* Queue content and rail remain scrollable instead of being cut by an outer frame. */
.sk-terminal-workspace:has(.sk-terminal-order-list) { overflow: auto; }
.sk-terminal-workspace:has(.sk-terminal-order-list) > .sk-terminal-workspace-layout {
  overflow: auto;
}

/* A tall enlarged header must not collapse the rail before the operator can navigate. */
.sk-terminal-workspace { overflow: auto; }
.sk-terminal-workspace > header.sk-terminal-workspace-header { position: static; }
.sk-terminal-workspace > .sk-terminal-workspace-layout {
  flex: 1 0 auto;
  min-block-size: min(70dvh, calc(var(--sk-terminal-control-h) * 6));
  overflow: auto;
}

/* The identity column stays at the top even when the action column is taller. */
.sk-terminal-workspace > header.sk-terminal-workspace-header {
  grid-template-rows: min-content minmax(0, 1fr);
  align-items: start;
}
.sk-terminal-workspace-header > .sk-terminal-workspace-context {
  align-self: start;
  align-content: start;
}
.sk-terminal-workspace > .sk-terminal-workspace-layout { margin-block-start: var(--sk-space-2); }

/* ── Oversikten («Hjem») ─────────────────────────────────────────────────────
   Panelhode, snarveirutenett, dagens timer og «mer»-rutenettet. Skilt ut fra
   06-workspace.css for lengdens skyld; samme kontrakt (01a-contract.css). */
.sk-terminal-overview-header {
  max-width: 44rem;
  margin-bottom: var(--sk-space-6);
}
.sk-terminal-overview-header h1 {
  margin: var(--sk-space-1) 0 var(--sk-space-2);
  font-size: var(--sk-type-page-title);
  letter-spacing: -0.045em;
}
.sk-terminal-overview-header > p:last-child {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-lg);
}
/* Rutenettet hadde to spalter fordi dagens timer sto i den andre. Da listen
   ble flyttet ned, ble spalte to stående tom og handlingene klemt inn på
   halve bredden. En layout skal ikke huske et barn den ikke har lenger. */
.sk-terminal-overview-layout {
  display: grid;
  gap: var(--sk-space-6);
  align-items: start;
}
/* Ni ruter i tre kolonner — det eneste antallet som deler ni jevnt, så alle
   rutene får samme bredde uansett skjerm. `auto-fit` ga 4 over 5 med kanter
   som aldri traff hverandre. På smal skjerm (under 56rem) blir det to. */
.sk-terminal-overview-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
/* Rutene ER knapper (flis-mønsteret): stilen kommer fra containeren, med
   `:where()` så en variantklasse aldri taper mot den. */
:where(.sk-terminal-overview-actions) > button {
  display: flex;
  min-width: 0;
  min-height: 6.75rem;
  align-items: center;
  gap: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  padding: var(--sk-space-4);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
:where(.sk-terminal-overview-actions) > button:hover {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-terminal-overview-actions svg {
  width: 1.5rem;
  height: 1.5rem;
  flex: none;
  color: var(--sk-color-primary);
}
.sk-terminal-overview-actions span {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}
.sk-terminal-overview-actions strong {
  font-size: var(--sk-font-size-lg);
}
.sk-terminal-overview-actions small {
  color: var(--sk-color-ink-soft);
  line-height: 1.35;
}
/* Dagens timer står nederst, over hele bredden. Kortutseendet er
   .sk-terminal-card-aliaset i 01a-contract.css. */
.sk-terminal-overview-today {
  min-width: 0;
  margin-top: var(--sk-space-6);
}
.sk-terminal-overview-today .sk-terminal-section-heading {
  margin-bottom: var(--sk-space-3);
}
.sk-terminal-overview-today .sk-terminal-appointments {
  border-top: 1px solid var(--sk-color-border-soft);
}

/* «Mer»-panelet: de sekundære flatene som fliser. */
.sk-terminal-more-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: var(--sk-space-4);
}
:where(.sk-terminal-more-grid) > button {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-4);
  min-height: 5.5rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
:where(.sk-terminal-more-grid) > button:hover {
  background: var(--sk-color-surface-hover);
}
:where(.sk-terminal-more-grid) > button > span {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-1);
}
.sk-terminal-more-grid small {
  color: var(--sk-color-ink-soft);
}

/* Timeboken på liten skjerm.
   Terminalen hadde ingen slike regler i det hele tatt: kolonnene lå fast på
   11 rem, så fire frisører ga et rutenett på 48 rem som aldri fikk plass.
   Det som manglet var ikke bare bredden, men et sted å si det. */
@media (max-width: 64rem) {
  .sk-timebook {
    --sk-timebook-column-min: 8.5rem;
  }
  /* Dagsraden lå på fire faste kolonner med til sammen 41 rem som minimum.
     Under det klemte den «Stemple inn» og bemanningsknappen sammen til de
     ikke lenger var til å trykke på. To rader er den ærlige løsningen: vakt
     og antall timer er opplysninger, stempling og bemanning er handlinger. */
  .sk-terminal-day-status {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
}

@media (max-width: 48rem) {
  .sk-timebook {
    --sk-timebook-column-min: 7rem;
  }
  /* Én ting per rad. «Stemplet inn 08:14» og knappen ved siden av trenger
     hele bredden når skriften ikke krymper. */
  .sk-terminal-day-status {
    grid-template-columns: minmax(0, 1fr);
  }
  .sk-terminal-day-status.is-compact .sk-terminal-day-status-item {
    width: 100%;
  }
  /* Timelinjalen tar 4,5 rem av en skjerm som ikke har dem å avse. */
  .sk-timebook-grid {
    grid-template-columns: 3.25rem var(--sk-timebook-columns);
  }
  /* Mer av skjermen til selve dagen når det er lite igjen av den. */
  .sk-timebook-scroll {
    max-height: min(78dvh, calc(100dvh - 12rem));
  }
}

/* Bunnmenyen aktiveres under 1024 px; samme grense må gjelde for innholdets
   rulling. Mellom 896 og 1023 px var menyen mobil, mens kassen fortsatt
   låste salgsflaten til skrivebordshøyde og skjulte betalingsknappene. */
@media (max-width: 63.99rem) {
  /* On iPad Safari the checkout panel must grow with its catalog and cart.
     The desktop height lock otherwise clips the cart while the footer fills
     the only visible part of the page. Keep one scroll owner: workspace. */
  .sk-terminal-workspace .sk-terminal-workspace-content:has(> .sk-terminal-checkout-panel) {
    height: 100%;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  .sk-terminal-workspace .sk-terminal-checkout-panel {
    display: block;
    height: auto;
    overflow: visible;
  }
  .sk-terminal-workspace .sk-terminal-sale-layout {
    display: flex;
    flex: none;
    height: auto;
    overflow: visible;
    flex-direction: column;
  }
  .sk-terminal-workspace .sk-terminal-sale-catalog,
  .sk-terminal-workspace .sk-terminal-sale-cart,
  .sk-terminal-workspace .sk-terminal-sale-catalog .sk-terminal-catalog-results,
  .sk-terminal-workspace .sk-terminal-sale-cart .sk-terminal-cart-lines {
    flex: none;
    max-height: none;
    overflow: visible;
  }
  .sk-terminal-workspace .sk-terminal-sale-footer {
    position: static;
    bottom: auto;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-terminal-sale-footer .sk-terminal-sale-status {
    grid-column: auto;
  }
  .sk-terminal-sale-footer .sk-terminal-add-amount,
  .sk-terminal-sale-footer .sk-terminal-sale-discount-trigger,
  .sk-terminal-sale-footer .sk-terminal-pay-total {
    width: 100%;
    min-width: 0;
    white-space: normal;
  }
  .sk-terminal-workspace .sk-terminal-workspace-content:has(> .sk-timebook-panel) {
    height: 100%;
    overflow-y: auto;
  }
  .sk-terminal-workspace .sk-timebook-panel {
    display: block;
    height: auto;
  }
  .sk-terminal-workspace .sk-timebook-panel > .sk-timebook {
    min-height: 16rem;
  }
  .sk-terminal-workspace .sk-timebook-panel .sk-timebook-scroll {
    height: auto;
    max-height: min(78dvh, calc(100dvh - 12rem));
  }
  .sk-terminal-overview-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  html[data-screen="pos-1024"] .sk-terminal-workspace-nav {
    width: 100%;
    min-width: 0;
    overflow: visible;
  }
  html[data-screen="pos-1024"] .sk-terminal-workspace-content:has(> .sk-terminal-checkout-panel),
  html[data-screen="pos-1024"] .sk-terminal-workspace-content:has(> .sk-terminal-work-area) {
    height: auto;
    overflow-y: auto;
  }
}

/* The 1024px landscape iPad shares the compact POS screen class, whose
   fixed-height checkout otherwise hides the cart behind the footer. Larger
   touch tablets need the same single scroll owner. */
:is(html[data-screen="pos-1024"], html[data-screen="tablet-landscape"][data-touch="1"])
  .sk-terminal-workspace-content:has(> .sk-terminal-checkout-panel) {
  box-sizing: border-box;
  height: 100%;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
:is(html[data-screen="pos-1024"], html[data-screen="tablet-landscape"][data-touch="1"])
  .sk-terminal-checkout-panel,
:is(html[data-screen="pos-1024"], html[data-screen="tablet-landscape"][data-touch="1"])
  .sk-terminal-sale-layout {
  height: auto;
  flex: none;
  overflow: visible;
}
:is(html[data-screen="pos-1024"], html[data-screen="tablet-landscape"][data-touch="1"])
  .sk-terminal-sale-layout {
  align-items: start;
  grid-template-rows: auto auto;
}
:is(html[data-screen="pos-1024"], html[data-screen="tablet-landscape"][data-touch="1"])
  .sk-terminal-sale-catalog,
:is(html[data-screen="pos-1024"], html[data-screen="tablet-landscape"][data-touch="1"])
  .sk-terminal-sale-cart,
:is(html[data-screen="pos-1024"], html[data-screen="tablet-landscape"][data-touch="1"])
  .sk-terminal-sale-catalog .sk-terminal-catalog-results,
:is(html[data-screen="pos-1024"], html[data-screen="tablet-landscape"][data-touch="1"])
  .sk-terminal-sale-cart .sk-terminal-cart-lines {
  max-height: none;
  overflow: visible;
}

/* The POS scroll area becomes shorter when a printer or day-close notice is
   shown. Keep the action row visible while the catalog and cart scroll inside
   the checkout workspace. */
@media (min-width: 64rem) {
  html[data-screen="pos-1024"]
    .sk-terminal-workspace-content:has(> .sk-terminal-checkout-panel)
    .sk-terminal-sale-footer {
    position: sticky;
    bottom: 0;
    z-index: 2;
    padding-bottom: var(--sk-space-2);
    box-shadow: 0 -1px 0 var(--sk-color-border-soft);
  }
}

/* I et kort kiosk-vindu kan dagsoppgjør og skrivervarsel spise opp høyden
   over salget. Hold betalingsraden synlig mens varelisten rulles. Vanlig
   nettbrettlandskap beholder den opprinnelige raden. */
@media (min-width: 64rem) and (max-height: 38rem) {
  html[data-screen="pos-1024"]
    .sk-terminal-workspace-content:has(> .sk-terminal-checkout-panel) {
    padding-bottom: 7rem;
  }
  html[data-screen="pos-1024"]
    .sk-terminal-workspace-content:has(> .sk-terminal-checkout-panel)
    .sk-terminal-sale-footer {
    position: fixed;
    bottom: 0;
    left: calc(var(--sk-terminal-nav-w) + var(--sk-space-6));
    right: var(--sk-space-6);
    z-index: 35;
    padding: var(--sk-space-3);
    background: var(--sk-color-canvas);
    box-shadow: 0 -0.5rem 1rem rgb(0 0 0 / 10%);
  }
}

/* Flishøyden på den minste skjermen. Regelen sto i 06-workspace.css, men den
   fila lastes FØR 06b-workspace-overview.css: da `.sk-terminal-overview-actions
   > button` ble skrevet med `:where()` (kontrakten § 2) tapte den mot
   grunnregelen der. Her, etter 06b, vinner den på rekkefølge i stedet for på
   spesifisitet — som er nettopp poenget med `:where()`. */
@media (max-width: 34rem) {
  .sk-terminal-overview-actions,
  :where(.sk-terminal-overview-actions) > button {
    min-height: 5.75rem;
  }
}

@media (max-width: 36rem) {
  .sk-terminal-sale-footer { padding-bottom: var(--sk-space-4); }
  .sk-terminal-workspace .sk-terminal-payment-heading {
    display: flex;
    align-items: stretch;
    flex-direction: column;
  }
  .sk-terminal-payment-heading > .sk-terminal-heading-actions {
    width: 100%;
    justify-content: space-between;
  }
  .sk-terminal-open-orders > .sk-terminal-section-heading,
  .sk-terminal-work-area-header {
    align-items: stretch;
    flex-direction: column;
  }
  .sk-terminal-open-orders > .sk-terminal-section-heading > .sk-terminal-heading-actions,
  .sk-terminal-work-area-header > .sk-terminal-heading-actions {
    width: 100%;
    justify-content: flex-start;
  }
  .sk-timebook-heading > div:first-child,
  .sk-timebook-date-nav {
    width: 100%;
  }
  .sk-timebook-date-nav {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
  }
  .sk-timebook-date-nav h1 {
    min-width: 0;
    text-align: center;
    white-space: normal;
  }
  .sk-timebook-controls {
    flex-wrap: wrap;
  }
  .sk-timebook-disruption {
    order: 0;
    width: var(--sk-terminal-control-h);
    justify-content: center;
  }
  .sk-disruption-item > header,
  .sk-appointment-cancellation__actions {
    align-items: stretch;
    flex-direction: column;
  }

  .sk-cashup-sale-detail__footer {
    align-items: stretch;
    flex-direction: column;
  }

  .sk-new-appointment-schedule {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .sk-terminal-workspace-content {
    padding-inline: var(--sk-space-3);
  }
  .sk-terminal-brand > span:last-child small {
    max-width: 9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .sk-terminal-day-toolbar h1 {
    font-size: var(--sk-type-page-title);
  }
  .sk-terminal-mobile-more-layer {
    padding: var(--sk-space-2);
  }
  .sk-terminal-mobile-more-sheet {
    padding: var(--sk-space-4);
  }
  .sk-terminal-mobile-more-grid {
    grid-template-columns: 1fr;
    gap: var(--sk-space-2);
  }
  .sk-terminal-summary-grid,
  .sk-profile-edit-grid {
    grid-template-columns: 1fr;
  }
  .sk-shift-week-tabs {
    width: 100%;
  }
  .sk-shift-calendar-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-profile-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-profile-tabs {
    overflow-x: auto;
    padding-inline: var(--sk-space-2);
  }
  :where(.sk-profile-tabs) button {
    width: auto;
    padding-inline: var(--sk-space-3);
  }
  .sk-profile-body {
    padding: var(--sk-space-4);
  }
  .sk-terminal-workspace .sk-profile-hero {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
  }
  .sk-profile-photo {
    width: 4.75rem;
    height: 4.75rem;
  }
  .sk-terminal-workspace .sk-profile-hero-actions {
    grid-column: auto;
    justify-content: stretch;
  }
  .sk-profile-hero-actions > * {
    flex: 1 1 auto;
  }
  .sk-terminal-cart-lines > article,
  .sk-terminal-price-editor {
    grid-template-columns: 1fr;
  }
  .sk-terminal-cart-lines > li {
    grid-template-columns: 1fr;
  }
  .sk-terminal-cart-lines > li > .sk-terminal-link {
    grid-template-columns: auto 1fr;
  }
  .sk-terminal-cart-lines > li > .sk-terminal-link small {
    grid-column: 1 / -1;
  }
  .sk-terminal-line-actions {
    grid-column: auto;
    flex-wrap: wrap;
  }
  :where(.sk-terminal-catalog-results) button {
    grid-template-columns: 1fr;
    align-items: start;
    gap: var(--sk-space-3);
    padding: var(--sk-space-4);
  }
  .sk-terminal-catalog-result__price {
    justify-self: start;
    padding-left: 0;
  }
  .sk-profile-edit-grid label.is-wide {
    grid-column: auto;
  }
  :where(.sk-terminal-appointments) > button,
  .sk-terminal-appointments article {
    grid-template-columns: 3.75rem minmax(0, 1fr);
  }
  .sk-terminal-appointments article.sk-timesheet-day {
    grid-template-columns: 4.25rem minmax(0, 1fr);
  }
  .sk-terminal-appointments article.is-roster {
    grid-template-columns: 3.75rem 2.55rem minmax(0, 1fr);
  }
  .sk-timesheet-day-actions {
    grid-column: 1 / -1;
    justify-content: flex-end;
    flex-wrap: wrap;
  }
  .sk-timesheet-day-editor {
    grid-template-columns: 1fr;
  }
  .sk-timesheet-day-editor > fieldset,
  .sk-timesheet-note-field,
  .sk-timesheet-editor-actions {
    grid-column: 1 / -1;
  }
  .sk-timesheet-editor-actions {
    justify-content: flex-end;
    flex-wrap: wrap;
  }
  .sk-timesheet-absence-fields {
    grid-template-columns: 1fr;
  }
  .sk-timesheet-sick-fields {
    grid-template-columns: 1fr;
  }
  .sk-terminal-appointments .sk-terminal-status {
    grid-column: 2;
    justify-self: start;
  }
  .sk-terminal-appointments article.is-roster .sk-terminal-status {
    grid-column: 3;
  }
}

/* Keep operator identity, language controls and lock reachable on phones. */
@media (max-width: 48rem) {
  .sk-terminal-workspace .sk-terminal-workspace-header {
    grid-template-columns: minmax(0, 1fr);
    flex-basis: auto;
    min-height: 0;
    padding-block: var(--sk-space-3);
    gap: var(--sk-space-3);
  }
  .sk-terminal-workspace-header .sk-terminal-brand,
  .sk-terminal-workspace-header .sk-terminal-brand > span:last-child {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
  }
  .sk-terminal-workspace-header .sk-terminal-brand > span:last-child small { white-space: normal; overflow: visible; max-width: 100%; }
  .sk-terminal-workspace-header .sk-terminal-workspace-actions {
    min-width: 0;
    flex-wrap: wrap;
    justify-content: flex-start;
  }
  .sk-terminal-workspace-header .sk-terminal-profile > span:nth-child(2) {
    display: grid;
    min-width: 0;
    overflow-wrap: anywhere;
  }
  .sk-terminal-workspace-header .sk-terminal-profile { max-width: 100%; }
}
@media (max-width: 48rem) {
  .sk-terminal-workspace .sk-terminal-overview-actions strong,
  .sk-terminal-workspace .sk-terminal-overview-actions small { overflow-wrap: anywhere; }
}
@media (max-width: 24rem) {
  .sk-terminal-workspace .sk-terminal-overview-actions { grid-template-columns: minmax(0, 1fr); }
}

/* Oversikt på iPad stående: Vakt og Timer er bare to tall, og trenger ikke hver sin
   fullbredde stripe. De står side om side; stempling, pauser og «På jobb» har knapper
   og beholder full bredde. Fem striper over flisene ble nesten en hel skjerm. */
html[data-screen="tablet-portrait"] .sk-terminal-day-status:not(.is-compact) {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
html[data-screen="tablet-portrait"] .sk-terminal-day-status:not(.is-compact) > .is-attendance,
html[data-screen="tablet-portrait"] .sk-terminal-day-status:not(.is-compact) > .is-break,
html[data-screen="tablet-portrait"] .sk-terminal-day-status:not(.is-compact) > .sk-terminal-roster-control {
  grid-column: 1 / -1;
}

/* Stemplingsknappen skifter tekst (Stemple inn / Stemple ut / Lagrer …) og skal ikke
   flytte raden eller bli smalere enn fingeren. */
.sk-terminal-day-status-item.is-attendance > .sk-terminal-attendance-button {
  flex: 0 0 auto;
  min-width: calc(var(--sk-space-6) * 5);
  margin-left: auto;
  white-space: nowrap;
}
.sk-terminal-day-status-item.is-attendance > span {
  min-width: 0;
}

/* Bunnmenyen på iPad stående og smalere ligger over innholdet. Panelfargen i
   stafflaget er halvgjennomsiktig (glass), så kort, tid og knapper rullet synlig
   gjennom menyen. Lerretsfargen er alltid dekkende (lys og mørk). */
@media (max-width: 63.99rem) {
  html:root .sk-terminal-workspace .sk-terminal-workspace-nav {
    background: var(--sk-color-canvas);
  }
}
/* A tall, enlarged header must scroll away so the queue and checkout remain reachable. */
@media (max-width: 30rem) {
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) {
    overflow-y: auto;
  }
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) > .sk-terminal-workspace-header {
    position: static;
  }
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) > .sk-terminal-workspace-layout {
    flex: 0 0 auto;
    overflow: visible;
  }
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) .sk-terminal-workspace-content {
    height: auto;
    overflow: visible;
  }
}

/* Large text uses the existing compact sale layout when this workspace,
   rather than the physical viewport, cannot fit the desktop columns. */
@media (min-width: 64rem) {
  .sk-terminal-workspace-content:has(> .sk-terminal-checkout-panel) {
    container: terminal-checkout / inline-size;
    overflow-y: auto;
  }
  @container terminal-checkout (width < 56rem) {
    .sk-terminal-workspace .sk-terminal-checkout-panel {
      display: block;
      height: auto;
      overflow: visible;
    }
    .sk-terminal-workspace .sk-terminal-sale-layout {
      display: flex;
      flex: none;
      height: auto;
      overflow: visible;
      flex-direction: column;
    }
    .sk-terminal-workspace .sk-terminal-sale-catalog,
    .sk-terminal-workspace .sk-terminal-sale-cart,
    .sk-terminal-workspace .sk-terminal-sale-catalog .sk-terminal-catalog-results,
    .sk-terminal-workspace .sk-terminal-sale-cart .sk-terminal-cart-lines {
      flex: none;
      max-height: none;
      overflow: visible;
    }
    .sk-terminal-workspace .sk-terminal-workspace-content .sk-terminal-checkout-panel .sk-terminal-sale-layout > .sk-terminal-sale-footer {
      position: static;
      bottom: auto;
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .sk-terminal-workspace .sk-terminal-sale-footer .sk-terminal-sale-status {
      grid-column: auto;
    }
    .sk-terminal-workspace .sk-terminal-sale-footer .sk-terminal-add-amount,
    .sk-terminal-workspace .sk-terminal-sale-footer .sk-terminal-sale-discount-trigger,
    .sk-terminal-workspace .sk-terminal-sale-footer .sk-terminal-pay-total {
      width: 100%;
      min-width: 0;
      white-space: normal;
    }
  }
}


/* Mobilheader: innholdets bredde bestemmer radene også ved 200 % tekst.
   Ordmerket og enhetsnavnet må ikke konkurrere om den samme smale resten.
   Behold alle handlinger og tekststørrelsen; la hele kontrollen bryte. */
@media (max-width: 48rem) {
  .sk-terminal-workspace-header .sk-terminal-brand {
    flex-wrap: wrap;
  }
  .sk-terminal-workspace-header .sk-terminal-brand > img {
    max-inline-size: 100%;
    height: auto;
  }
  .sk-terminal-workspace-header .sk-terminal-brand > span:last-child {
    flex: 1 1 12rem;
  }
  .sk-terminal-workspace-header .sk-terminal-workspace-actions > * {
    min-inline-size: 0;
    max-inline-size: 100%;
  }
  .sk-terminal-workspace-header .sk-terminal-workspace-actions > button,
  .sk-terminal-workspace-header .sk-terminal-profile > span:nth-child(2) {
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .sk-terminal-workspace-header .sk-terminal-profile > span:nth-child(2) {
    flex: 1 1 auto;
  }
}

/* Fase- og driftsbrikken beholder reserverte plasser, men ikke en bredde
   på 19 rem når stor tekst gjør selve headeren smalere enn reservasjonen. */
@media (max-width: 48rem) {
  .sk-terminal-workspace-header .sk-terminal-workspace-actions {
    container: terminal-header-actions / inline-size;
  }
  @container terminal-header-actions (width < 19rem) {
    .sk-terminal-workspace-header .sk-terminal-workspace-actions > [data-deployment-phase-slot]:not(.employee-phase-slot) {
      width: 100%;
      min-width: 0;
      grid-template-columns: minmax(0, 1fr);
      grid-template-rows: repeat(2, minmax(max(var(--sk-control-height), var(--sk-touch-min)), auto));
      height: auto;
      gap: var(--sk-space-2);
    }
    .sk-terminal-workspace-header [data-deployment-phase-slot] > .sk-service-chip--inline {
      grid-column: 1;
      grid-row: 2;
      min-width: 0;
      max-width: 100%;
      white-space: normal;
    }
  }
}

/* The whole phone scroll viewport ends above the measured fixed navigation.
   Reserving space only inside the layout left the tall header behind the menu. */
@media (max-width: 30rem) {
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) {
    height: calc(100dvh - var(--sk-terminal-measured-bottom-nav-height, var(--sk-terminal-bottom-nav-height)));
    min-height: 0;
    margin-bottom: var(--sk-terminal-measured-bottom-nav-height, var(--sk-terminal-bottom-nav-height));
  }
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) > .sk-terminal-workspace-layout {
    margin-bottom: 0;
  }
}

/* One header group per row below the rail breakpoint, including tablets. */
@media (max-width: 63.99rem) {
  .sk-terminal-workspace > header.sk-terminal-workspace-header {
    grid-template-columns: minmax(0, 1fr);
  }
  .sk-terminal-workspace-header > .sk-terminal-workspace-actions {
    grid-column: 1;
    grid-row: auto;
  }
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) {
    height: calc(100dvh - var(--sk-terminal-measured-bottom-nav-height, var(--sk-terminal-bottom-nav-height)));
    min-height: 0;
    margin-bottom: var(--sk-terminal-measured-bottom-nav-height, var(--sk-terminal-bottom-nav-height));
    overflow-y: auto;
    scroll-padding-block-end: var(--sk-space-2);
  }
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) > .sk-terminal-workspace-header {
    position: static;
  }
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) > .sk-terminal-workspace-layout {
    flex: 0 0 auto;
    margin-bottom: 0;
    overflow: visible;
  }
  .sk-terminal-workspace:has(.sk-terminal-order-list, .sk-terminal-checkout-panel) .sk-terminal-workspace-content {
    height: auto;
    overflow: visible;
  }
}

/* A horizontal flex basis must not become a blank vertical brand row. */
.sk-terminal-workspace > .sk-terminal-workspace-header > .sk-terminal-brand > span:last-child {
  flex: 0 1 auto;
  inline-size: 100%;
  align-content: start;
}
/* Theme follows its existing React DOM order, then the phase/service portals.
   The phase, service chip and existing theme control share the reserved first
   row. At narrow sizes the service chip gets its own second row; phase and
   theme still share the same real grid row rather than a positional offset. */
.sk-terminal-workspace-header .sk-terminal-workspace-actions {
  container: terminal-header-actions / inline-size;
}
.sk-terminal-workspace-header .sk-terminal-workspace-actions > [data-deployment-phase-slot].sk-terminal-workspace-phase-tools {
  grid-template-columns: var(--sk-touch-min) calc(var(--sk-space-4) * 8) calc(var(--sk-space-4) * 10);
  width: calc(var(--sk-space-4) * 20 + var(--sk-touch-min));
  min-width: 0;
}
.sk-terminal-workspace-phase-tools > .sk-interface-theme {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  min-width: var(--sk-touch-min);
  min-height: var(--sk-touch-min);
}
.sk-terminal-workspace-phase-tools > .sk-deployment-phase--inline {
  grid-column: 2;
  grid-row: 1;
}
.sk-terminal-workspace-phase-tools > .sk-service-chip--inline {
  grid-column: 3;
  grid-row: 1;
}
/* 19rem original phase/service reservation +1rem gap +44px theme target. */
@container terminal-header-actions (width < calc(20rem + 44px)) {
  .sk-terminal-workspace-header .sk-terminal-workspace-actions > [data-deployment-phase-slot].sk-terminal-workspace-phase-tools {
    width: 100%;
    grid-template-columns: var(--sk-touch-min) minmax(0, 1fr);
    grid-template-rows: repeat(2, minmax(max(var(--sk-control-height), var(--sk-touch-min)), auto));
    height: auto;
    gap: var(--sk-space-2);
  }
  .sk-terminal-workspace-header .sk-terminal-workspace-phase-tools > .sk-service-chip--inline {
    grid-column: 1 / -1;
    grid-row: 2;
  }
}

/* Keep the existing lock-screen theme control beside the phase it qualifies.
   The real group follows its keyboard order; phones reserve the service row. */
.sk-terminal-lock-header .sk-terminal-lock-actions > [data-deployment-phase-slot].sk-terminal-lock-phase-tools {
  grid-template-columns: var(--sk-touch-min) calc(var(--sk-space-4) * 8) calc(var(--sk-space-4) * 10);
  width: calc(var(--sk-space-4) * 20 + var(--sk-touch-min));
  min-width: 0;
}
.sk-terminal-lock-phase-tools > .sk-interface-theme {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  min-width: var(--sk-touch-min);
  min-height: var(--sk-touch-min);
}
.sk-terminal-lock-phase-tools > .sk-deployment-phase--inline {
  grid-column: 2;
  grid-row: 1;
}
.sk-terminal-lock-phase-tools > .sk-service-chip--inline {
  grid-column: 3;
  grid-row: 1;
}
@media (max-width: 600px) {
  .sk-terminal-lock-header .sk-terminal-lock-actions > [data-deployment-phase-slot].sk-terminal-lock-phase-tools {
    width: 100%;
    grid-template-columns: var(--sk-touch-min) minmax(0, 1fr);
    grid-template-rows: repeat(2, minmax(max(var(--sk-control-height), var(--sk-touch-min)), auto));
    height: auto;
    gap: var(--sk-space-2);
  }
  .sk-terminal-lock-header .sk-terminal-lock-phase-tools > .sk-service-chip--inline {
    grid-column: 1 / -1;
    grid-row: 2;
  }
}

/* -------------------------------------------------------------------------
   Åpne ordre og betaling i salongterminalen.

   Dette er en arbeidskø, ikke en rapporttabell: hele raden er trykkbar, de fire
   beslutningsfeltene står alltid i samme rekkefølge, og opprinnelig frisør er
   synlig selv når en kollega tar betalingen. */
.sk-terminal-open-orders,
.sk-terminal-payment-flow {
  display: grid;
  gap: var(--sk-space-4);
}

/* Panelhodet i Åpne ordre er det delte .sk-terminal-section-heading; ikonknappen
   er .sk-terminal-icon-button — begge i 01a-contract.css. */
.sk-terminal-payment-heading h1 {
  margin: 0;
  letter-spacing: -0.035em;
}

.sk-terminal-payment-heading p:last-child {
  margin: var(--sk-space-1) 0 0;
  color: var(--sk-color-ink-soft);
}

/* Betalingskøen.
 *
 * Raden var et rutenett på fem kolonner — kunde, ordrenummer, frisør, sum og
 * en «Ta betalt»-etikett — hver med sin egen overskrift, 5,5 rem høy. Fem
 * kolonneoverskrifter for én linje informasjon, og en handlingsetikett på en
 * rad som ALLEREDE var én stor knapp. Nå er raden én linje, og hele linjen er
 * knappen. */

.sk-terminal-order-toolbar {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  margin-bottom: var(--sk-space-3);
}

/* .sk-terminal-order-search er alias for .sk-terminal-search-control
   (01a-contract.css); her bare plassen i verktøylinja. */
.sk-terminal-order-search {
  flex: 1 1 auto;
}

.sk-terminal-order-toolbar > p {
  display: flex;
  flex: 0 0 auto;
  align-items: baseline;
  gap: var(--sk-space-2);
  margin: 0;
  color: var(--sk-color-ink-soft);
}

.sk-terminal-order-toolbar strong {
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-lg);
}

.sk-terminal-order-list {
  display: grid;
  gap: var(--sk-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.sk-terminal-order-list > li {
  overflow: hidden;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}

/* Raden er én linje. Fingermålet gjelder for HELE `li`-en, som også rommer
   forkast-knappen — så knappen her trenger ikke sette det på nytt, og
   loddrett polstring på toppen av det gjorde raden høyere enn innholdet. */
:where(.sk-terminal-order-list > li > button:first-child) {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  min-height: var(--sk-terminal-touch-min);
  padding: 0 var(--sk-space-3);
  border: 0;
  background: transparent;
  color: inherit;
  text-align: left;
}

:where(.sk-terminal-order-list > li > button:first-child):hover,
:where(.sk-terminal-order-list > li > button:first-child):focus-visible {
  background: color-mix(in srgb, var(--sk-color-primary) 5%, transparent);
}

.sk-terminal-order-list .sk-terminal-avatar.is-small {
  width: 1.75rem;
  height: 1.75rem;
  font-size: var(--sk-font-size-sm);
}

.sk-terminal-order-name {
  display: grid;
  flex: 1 1 auto;
  min-width: 0;
  line-height: 1.25;
}

.sk-terminal-order-name strong,
.sk-terminal-order-name small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sk-terminal-order-name small {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-order-stylist {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--sk-space-2);
  color: var(--sk-color-ink-soft);
}

.sk-terminal-order-stylist svg {
  width: 1rem;
  color: var(--sk-color-primary);
}

.sk-terminal-order-total {
  flex: 0 0 auto;
  font-size: var(--sk-font-size-lg);
  font-variant-numeric: tabular-nums;
}

:where(.sk-terminal-order-list > li > button:first-child) > svg:last-child {
  flex: 0 0 auto;
  width: 1rem;
  color: var(--sk-color-primary);
}

.sk-terminal-order-list > li > p {
  margin: 0;
  padding: 0 var(--sk-space-3) var(--sk-space-2);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}

/* «Forkast» ligger i selve raden, ytterst.
   Det hadde før en egen linje under HVER ordre — også når det ikke sto noe
   der — og gjorde listen tykkere enn innholdet krevde. */
.sk-terminal-order-list > li {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}

:where(.sk-terminal-order-list > li > button:first-child) {
  flex: 1 1 auto;
  min-width: 0;
}

.sk-terminal-order-discard {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: var(--sk-terminal-touch-min);
  min-height: var(--sk-terminal-touch-min);
  margin-right: var(--sk-space-2);
  border: 0;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  color: var(--sk-color-ink-faint);
  cursor: pointer;
}

.sk-terminal-order-discard:hover:not(:disabled) {
  background: color-mix(in srgb, var(--sk-color-danger) 10%, transparent);
  color: var(--sk-color-danger);
}

.sk-terminal-order-discard svg {
  width: 1rem;
}

/* Bekreftelsen bytter plass med ikonet i samme rad. Legges den i en ny linje
   flytter alt under seg, og man mister det man så på. */
.sk-terminal-order-confirm {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--sk-space-1);
  margin-right: var(--sk-space-2);
}

:where(.sk-terminal-order-confirm) button {
  min-height: var(--sk-terminal-touch-min);
  padding: 0 var(--sk-space-2);
  border: 0;
  background: transparent;
  color: var(--sk-color-ink-soft);
  font: inherit;
  cursor: pointer;
}

.sk-terminal-order-list > li > p {
  flex: 1 0 100%;
}

/* .sk-terminal-order-empty er alias for .sk-terminal-empty-card (01a-contract.css). */

.sk-terminal-payment-heading {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-4);
}

:where(.sk-terminal-payment-heading) > button {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-control-h);
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-terminal-radius);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
}

:where(.sk-terminal-payment-heading) > button svg {
  width: 1rem;
}

.sk-terminal-payment-heading > strong {
  font-size: var(--sk-type-display-heading);
  letter-spacing: -0.04em;
}

.sk-terminal-payment-attribution {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  margin: 0;
  padding: var(--sk-space-3) var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  color: var(--sk-color-ink-soft);
}

.sk-terminal-payment-attribution svg {
  width: 1rem;
  color: var(--sk-color-primary);
}

.sk-terminal-payment-methods {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}

:where(.sk-terminal-payment-methods) > button {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-4);
  min-height: 7rem;
  padding: var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  text-align: left;
}

:where(.sk-terminal-payment-methods) > button:hover,
:where(.sk-terminal-payment-methods) > button:focus-visible {
  border-color: var(--sk-color-primary);
  background: color-mix(in srgb, var(--sk-color-primary) 5%, transparent);
}

:where(.sk-terminal-payment-methods) > button:disabled {
  cursor: not-allowed;
  border-color: var(--sk-color-border-soft);
  background: var(--sk-color-surface-subtle);
  color: var(--sk-color-ink-soft);
  opacity: 0.72;
}

:where(.sk-terminal-payment-methods) > button:disabled svg {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-payment-methods svg {
  width: 1.75rem;
  height: 1.75rem;
  color: var(--sk-color-primary);
}

.sk-terminal-payment-methods span {
  display: grid;
  gap: var(--sk-space-1);
}

.sk-terminal-payment-methods strong {
  font-size: var(--sk-font-size-lg);
}

.sk-terminal-payment-methods small {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-payment-readiness-error {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid color-mix(in srgb, var(--sk-color-danger) 30%, transparent);
  border-radius: var(--sk-radius-md);
  background: color-mix(in srgb, var(--sk-color-danger) 7%, transparent);
}

.sk-terminal-payment-readiness-error p {
  margin: 0;
}

:where(.sk-terminal-payment-readiness-error) button {
  flex: 0 0 auto;
  min-height: var(--sk-terminal-control-h);
  padding-inline: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-terminal-radius);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-payment-form,
.sk-terminal-split-payment {
  display: grid;
  gap: var(--sk-space-4);
  width: min(38rem, 100%);
}

.sk-terminal-payment-form label,
.sk-terminal-split-fields label {
  display: grid;
  gap: var(--sk-space-2);
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-payment-form input,
.sk-terminal-split-fields input,
.sk-terminal-split-fields select {
  width: 100%;
  min-height: var(--sk-terminal-control-h);
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-terminal-radius);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
}

.sk-terminal-change {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sk-space-4);
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
}

.sk-terminal-change strong {
  font-size: var(--sk-font-size-xl);
}

.sk-terminal-split-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr)) auto;
  align-items: end;
  gap: var(--sk-space-3);
}

:where(.sk-terminal-split-fields) > button {
  min-height: var(--sk-terminal-control-h);
  padding: 0 var(--sk-space-4);
  border: 1px solid var(--sk-color-primary);
  border-radius: var(--sk-terminal-radius);
  background: var(--sk-color-primary);
  color: white;
  font-weight: var(--sk-font-weight-strong);
}

.sk-terminal-allocation-list {
  display: grid;
  gap: var(--sk-space-2);
}

.sk-terminal-allocation-list > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--sk-space-3);
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
}

.sk-terminal-allocation-list span {
  display: grid;
}

.sk-terminal-allocation-list small {
  color: var(--sk-color-ink-soft);
}

:where(.sk-terminal-allocation-list) button {
  border: 0;
  background: transparent;
  color: var(--sk-color-danger);
}

.sk-terminal-payment-flow.is-processing,
.sk-terminal-payment-flow.is-complete {
  place-items: center;
  align-content: center;
  min-height: min(36rem, calc(100dvh - 10rem));
  text-align: center;
}

.sk-terminal-payment-flow.is-processing > svg,
.sk-terminal-payment-flow.is-complete > svg,
.sk-terminal-payment-flow.is-complete > .sk-terminal-completed-details > svg {
  width: 3.5rem;
  height: 3.5rem;
  color: var(--sk-color-primary);
}

.sk-terminal-payment-flow.is-processing > strong,
.sk-terminal-payment-flow.is-complete > h1,
.sk-terminal-payment-flow.is-complete > .sk-terminal-completed-details > h1 {
  margin: 0;
  font-size: var(--sk-type-display-total);
  letter-spacing: -0.05em;
}

.sk-terminal-payment-flow.is-processing .sk-customer-qr {
  margin-block: var(--sk-space-2);
}

.sk-terminal-payment-flow.is-complete dl {
  display: grid;
  width: min(32rem, 100%);
  margin: 0;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
}

.sk-terminal-payment-flow.is-complete dl > div {
  display: flex;
  justify-content: space-between;
  gap: var(--sk-space-4);
  padding: var(--sk-space-3) var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
}

.sk-terminal-payment-flow.is-complete dl > div:last-child {
  border-bottom: 0;
}

.sk-terminal-payment-flow.is-complete dt {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-payment-flow.is-complete dd {
  margin: 0;
  font-weight: var(--sk-font-weight-strong);
}

.is-spinning {
  animation: sk-terminal-spin 0.9s linear infinite;
}

@keyframes sk-terminal-spin {
  to {
    transform: rotate(360deg);
  }
}

@media (max-width: 70rem) {
  /* Frisørnavnet er det første som kan gå når raden blir trang: det står
     også i beskjeden under raden når det er en annens kunde. */
  .sk-terminal-order-stylist {
    display: none;
  }
}

@media (max-width: 48rem) {
  /* Søkefeltet og summen får hver sin linje når de ikke får plass ved siden
     av hverandre. */
  .sk-terminal-order-toolbar {
    flex-wrap: wrap;
  }
  .sk-terminal-order-toolbar > p {
    flex: 1 0 100%;
  }
  .sk-terminal-payment-heading {
    grid-template-columns: minmax(0, 1fr);
  }
  .sk-terminal-payment-heading > div { min-width: 0; }
  .sk-terminal-payment-heading .sk-terminal-heading-actions {
    justify-content: space-between;
    flex-wrap: wrap;
  }
  .sk-terminal-payment-heading > strong {
    grid-column: 2;
  }
}

@media (max-width: 36rem) {
  .sk-terminal-payment-methods,
  .sk-terminal-split-fields {
    grid-template-columns: 1fr;
  }
  :where(.sk-terminal-payment-methods) > button {
    min-height: 5.75rem;
    padding: var(--sk-space-4);
  }
  .sk-terminal-payment-flow.is-processing {
    gap: var(--sk-space-4);
  }
  .sk-terminal-payment-flow.is-processing .sk-customer-qr {
    padding: 0.75rem;
  }
  .sk-terminal-payment-flow.is-processing .sk-customer-qr svg {
    width: 13.125rem;
    height: 13.125rem;
  }
  :where(.sk-terminal-split-fields) > button {
    width: 100%;
  }
  .sk-terminal-payment-flow.is-complete dl > div {
    display: grid;
    gap: var(--sk-space-1);
    text-align: left;
  }
}


/* Nora UI-batch 2026-08-12: checkout skann/format + retur + logo */
.sk-terminal-workspace .sk-terminal-search-control input:focus-visible { outline: none; }
.sk-terminal-catalog-result__kind { flex: none; padding: 0.1rem 0.5rem; border-radius: 999px; background: var(--sk-color-surface-hover); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); text-transform: uppercase; letter-spacing: 0.03em; }
.sk-terminal-catalog-result__price { justify-self: end; padding-left: var(--sk-space-4); white-space: nowrap; font-variant-numeric: tabular-nums; font-weight: var(--sk-font-weight-strong); font-size: var(--sk-font-size-md); }
.sk-terminal-cart-editor > .sk-terminal-search,
.sk-terminal-cart-editor > .sk-terminal-checkout-grid,
.sk-terminal-cart-editor > .sk-terminal-cart-editor { margin-top: 1rem; }
.sk-terminal-mark.has-logo { background: none; box-shadow: none; color: inherit; }
.sk-terminal-mark.has-logo img { width: 100%; height: 100%; object-fit: contain; border-radius: inherit; animation: mr-brand-sway 8s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { .sk-terminal-mark.has-logo img { animation: none; transform: none; } }

/* Kundeskjerm-berikelse 2026-08: velkomst + nyttår/valentine/17.mai-dekor */
.sk-customer-welcome-eyebrow { margin: 0 0 0.1rem; color: rgb(255 255 255 / 55%); font-size: var(--sk-type-display-caption); font-weight: var(--sk-font-weight-strong); letter-spacing: 0.16em; text-transform: uppercase; }
.sk-customer-welcome-greeting { margin: 0.85rem 0 0; padding: 0.4rem 1.1rem; border-radius: 999px; border: 1px solid rgb(255 255 255 / 14%); background: rgb(255 255 255 / 9%); color: rgb(255 255 255 / 90%); font-size: var(--sk-type-display-label); font-weight: var(--sk-font-weight-strong); }
.sk-customer-heart, .sk-customer-flag, .sk-customer-spark { --season-left: 8%; --season-delay: 0s; --season-duration: 16s; position: absolute; top: -2rem; left: var(--season-left); animation: sk-customer-season-fall var(--season-duration) ease-in-out infinite; animation-delay: var(--season-delay); }
.sk-customer-heart:nth-child(2), .sk-customer-flag:nth-child(2), .sk-customer-spark:nth-child(2) { --season-left: 16%; --season-delay: -11s; --season-duration: 19s; }
.sk-customer-heart:nth-child(3), .sk-customer-flag:nth-child(3), .sk-customer-spark:nth-child(3) { --season-left: 25%; --season-delay: -4s; --season-duration: 14s; }
.sk-customer-heart:nth-child(4), .sk-customer-flag:nth-child(4), .sk-customer-spark:nth-child(4) { --season-left: 34%; --season-delay: -15s; --season-duration: 22s; }
.sk-customer-heart:nth-child(5), .sk-customer-flag:nth-child(5), .sk-customer-spark:nth-child(5) { --season-left: 43%; --season-delay: -7s; --season-duration: 17s; }
.sk-customer-heart:nth-child(6), .sk-customer-flag:nth-child(6), .sk-customer-spark:nth-child(6) { --season-left: 52%; --season-delay: -18s; --season-duration: 23s; }
.sk-customer-heart:nth-child(7), .sk-customer-flag:nth-child(7), .sk-customer-spark:nth-child(7) { --season-left: 61%; --season-delay: -9s; --season-duration: 18s; }
.sk-customer-heart:nth-child(8), .sk-customer-flag:nth-child(8), .sk-customer-spark:nth-child(8) { --season-left: 70%; --season-delay: -2s; --season-duration: 15s; }
.sk-customer-heart:nth-child(9), .sk-customer-flag:nth-child(9), .sk-customer-spark:nth-child(9) { --season-left: 79%; --season-delay: -13s; --season-duration: 21s; }
.sk-customer-heart:nth-child(10), .sk-customer-flag:nth-child(10), .sk-customer-spark:nth-child(10) { --season-left: 88%; --season-delay: -6s; --season-duration: 16s; }
.sk-customer-heart:nth-child(11), .sk-customer-flag:nth-child(11), .sk-customer-spark:nth-child(11) { --season-left: 95%; --season-delay: -16s; --season-duration: 20s; }
.sk-customer-heart:nth-child(12), .sk-customer-flag:nth-child(12), .sk-customer-spark:nth-child(12) { --season-left: 4%; --season-delay: -8s; --season-duration: 18s; }
.sk-customer-heart { width: 0.9rem; height: 0.9rem; opacity: 0.7; background: #e5537b; transform: rotate(-45deg); box-shadow: 0 0 0.9rem rgb(229 83 123 / 22%); }
.sk-customer-heart::before, .sk-customer-heart::after { content: ""; position: absolute; width: 0.9rem; height: 0.9rem; border-radius: 50%; background: inherit; }
.sk-customer-heart::before { top: -0.45rem; left: 0; }
.sk-customer-heart::after { top: 0; left: 0.45rem; }
.sk-customer-flag { width: 1.3rem; height: 0.95rem; border-radius: 0.1rem; opacity: 0.72; box-shadow: 0 0.15rem 0.5rem rgb(0 0 0 / 20%); background: linear-gradient(#ba0c2f, #ba0c2f); }
.sk-customer-spark { width: 0.5rem; height: 0.5rem; border-radius: 50%; opacity: 0.8; background: #e8c66a; box-shadow: 0 0 1.1rem 0.3rem rgb(232 198 106 / 28%), 0 0 0.2rem 0.05rem rgb(255 255 255 / 60%); animation-name: sk-customer-summer-float; }
.sk-customer-display.season-newyear::before { background: #e8c66a; }
.sk-customer-display.season-newyear::after { background: var(--sk-color-primary); }
.sk-customer-display.season-valentine::before { background: #e5537b; }
.sk-customer-display.season-valentine::after { background: #f4a6c0; }
.sk-customer-display.season-seventeenth::before { background: #ba0c2f; }
.sk-customer-display.season-seventeenth::after { background: #33292f; }


/* Shared finite geometry animation; never apply bitmap CSS motion to its fallback. */
.sk-terminal-mark.sk-brand-logo--geometry > img { animation: none; transform: scale(.82); }

.sk-terminal-workspace-nav :focus-visible { outline-color: var(--sk-color-focus-ring-inverse); }

/* Payment decisions and Nora enquiries keep separate positions in Tasks. */
.sk-terminal-nav-badge--fee { right: auto; left: var(--sk-space-2); background: var(--sk-color-primary); }

.sk-terminal-mobile-more-grid .sk-terminal-nav-badge--fee { position: static; margin-inline: auto; }

/* Søkefeltet er en pille som viser fokus selv (`:focus-within`). Feltet inni skal ikke
   få en egen firkantet ramme oppå den, som på iPad ble en blå firkant i pillen. */
:root .sk-terminal-workspace .sk-terminal-search-control input:is(:focus, :focus-visible),
:root .sk-terminal-workspace .sk-terminal-order-search input:is(:focus, :focus-visible) {
  border: 0;
  outline: 0;
  box-shadow: none;
}

/* Venteflaten under kortbetaling. Regelen over (`min(36rem, …)`) lastes ETTER
   06-workspace.css og vant derfor over høyden derfra på iPad stående: flaten
   ble 36 rem høy og innholdet lå i øvre del, med en stor tom flate under.
   Her fyller den den synlige arbeidsflaten, og innholdet står i midten. */
.sk-terminal-payment-flow.is-processing {
  min-height: calc(100dvh - var(--sk-terminal-wait-chrome, 14rem));
  gap: var(--sk-space-3);
}
@media (max-width: 56rem) {
  .sk-terminal-payment-flow.is-processing { --sk-terminal-wait-chrome: 17rem; }
}
.sk-terminal-payment-flow.is-processing > p { margin: 0; max-width: 34rem; }
.sk-terminal-payment-wait__elapsed {
  min-height: 1.5em;
  color: var(--sk-color-ink-soft);
  font-variant-numeric: tabular-nums;
}
.sk-terminal-payment-wait__phase {
  font-size: var(--sk-font-size-lg, 1.125rem);
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-payment-wait__phase.is-uncertain {
  border: 1px solid var(--sk-color-warning);
  border-radius: var(--sk-radius-md);
  padding: var(--sk-space-3) var(--sk-space-4);
  background: var(--sk-color-warning-soft, var(--sk-color-surface));
}
.sk-terminal-payment-wait__hint { color: var(--sk-color-ink-soft); }

/* Oppgaver: én rolig linje når begge betalingskortene er bekreftet tomme. */
.sk-nora-tasks__payments-clear { margin: 0; color: var(--sk-color-ink-soft); }

.sk-terminal-workspace > .sk-terminal-bar-notice {
  flex-shrink: 0;
}

/* Bunnmenyen eier sin del av vinduet; innholdet ruller over den, ikke bak den.
   Samme høyde inkluderer eksisterende knappmål, polstring og trygg bunnkant. */
@media (max-width: 63.99rem) {
  .sk-terminal-workspace {
    --sk-terminal-bottom-nav-height: calc(max(4.25rem, var(--sk-terminal-touch-min)) + var(--sk-space-2) + max(var(--sk-space-2), env(safe-area-inset-bottom)) + 1px);
    scroll-padding-block-end: calc(var(--sk-terminal-measured-bottom-nav-height, var(--sk-terminal-bottom-nav-height)) + var(--sk-space-2));
  }
  .sk-terminal-workspace > .sk-terminal-workspace-layout {
    margin-bottom: var(--sk-terminal-measured-bottom-nav-height, var(--sk-terminal-bottom-nav-height));
  }
  .sk-terminal-workspace > .sk-terminal-workspace-layout > .sk-terminal-workspace-nav {
    box-sizing: border-box;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    height: auto;
    min-height: var(--sk-terminal-bottom-nav-height);
    max-height: 100vh;
    max-height: 100dvh;
    overflow-x: hidden;
    overflow-y: auto;
  }
  /* Beløpsendringer skal ikke flytte Betal eller naboknappene. Full sum
     står fortsatt i handlekurven og knappens tilgjengelige etikett. */
  .sk-terminal-workspace .sk-terminal-workspace-nav > .sk-terminal-nav-pay small {
    inline-size: 8ch;
    max-inline-size: 100%;
    text-align: center;
  }
  .sk-terminal-workspace .sk-terminal-workspace-nav > button {
    flex: 1 1 auto;
    min-inline-size: max-content;
    max-inline-size: 100%;
    white-space: normal;
    overflow-wrap: normal;
  }
}

/* The queue has deliberate rows, not a wrapped strip of unrelated controls. */
.sk-terminal-open-orders .sk-terminal-order-toolbar {
  flex-direction: column;
  align-items: stretch;
}
.sk-terminal-open-orders .sk-terminal-order-toolbar > p {
  display: block;
  flex: none;
  overflow-wrap: anywhere;
}
.sk-terminal-open-orders .sk-terminal-order-toolbar > p > strong {
  display: block;
}
.sk-terminal-open-orders .sk-terminal-heading-actions {
  flex-direction: column;
  align-items: stretch;
}
.sk-terminal-order-list > li {
  flex-direction: column;
  align-items: stretch;
  gap: var(--sk-space-2);
}
.sk-terminal-order-list > li > button:first-child {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  inline-size: 100%;
  padding: var(--sk-space-3);
}
.sk-terminal-order-list > li > button:first-child > .sk-terminal-order-name {
  grid-column: 2 / -1;
}
.sk-terminal-order-list .sk-terminal-order-name :is(strong, small) {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  overflow-wrap: anywhere;
}
.sk-terminal-order-list > li > button:first-child > .sk-terminal-order-stylist,
.sk-terminal-order-list > li > button:first-child > .sk-terminal-order-total {
  grid-column: 2;
}
.sk-terminal-order-list > li > button:first-child > svg:last-child { grid-column: 3; }
.sk-terminal-order-list .sk-terminal-order-discard {
  align-self: flex-end;
  margin-block-end: var(--sk-space-2);
}
@media (max-width: 63.99rem) {
  .sk-terminal-workspace > .sk-terminal-workspace-layout > .sk-terminal-workspace-nav {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 8ch), 1fr));
    gap: var(--sk-space-2);
  }
  .sk-terminal-workspace-nav > .sk-terminal-nav-pay { grid-column: 1 / -1; }
}

/* Enlarged labels own their full height instead of overflowing a fixed control. */
.sk-terminal-open-orders .sk-terminal-heading-actions > button {
  height: auto;
  min-height: var(--sk-terminal-control-h);
  padding-block: var(--sk-space-2);
  /* Wrapped labels (large text) need leading above the glyph height, or the two lines touch. */
  line-height: 1.3;
}

/* Grouping remains layout-transparent outside the native cashier viewport. */
.sk-terminal-payment-content {display:contents;}

.sk-terminal-completed-details,.sk-terminal-post-sale-details {display:contents;}

.ipad-club-enrollment-details {display:contents;}

/* Innkommende anrop ligger under terminalhodet, men over øvrige overlays som
   en rolig, tydelig arbeidsbeskjed. Ingen kundeopplysninger vises før PIN. */
.sk-incoming-call {
  position: fixed;
  top: calc(4.75rem + var(--sk-space-3) + env(safe-area-inset-top));
  right: max(var(--sk-space-4), env(safe-area-inset-right));
  z-index: var(--sk-z-toast);
  width: min(25rem, calc(100vw - 2 * var(--sk-space-4)));
  min-height: 5rem;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-3);
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface-raised);
  color: var(--sk-color-ink);
  box-shadow: var(--sk-shadow-popover);
}
.sk-incoming-call__icon {
  width: 3rem;
  height: 3rem;
  display: grid;
  place-items: center;
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  animation: sk-incoming-call-ring 1.1s var(--sk-ease-standard) infinite;
}
.sk-incoming-call__icon svg { width: 1.4rem; height: 1.4rem; }
.sk-incoming-call__open {
  min-width: 0;
  min-height: 3.5rem;
  padding: var(--sk-space-1) var(--sk-space-2);
  border: 0;
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-content: center;
  column-gap: var(--sk-space-2);
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-incoming-call__open:hover { background: var(--sk-color-surface-hover); }
.sk-incoming-call__open > :not(svg) { grid-column: 1; }
.sk-incoming-call__open > svg {
  grid-column: 2;
  grid-row: 1 / 4;
  align-self: center;
  width: 1.15rem;
  color: var(--sk-color-primary);
}
.sk-incoming-call__eyebrow {
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: .055em;
  text-transform: uppercase;
}
.sk-incoming-call__open strong,
.sk-incoming-call__locked strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--sk-font-size-md);
}
.sk-incoming-call__open > span:last-of-type,
.sk-incoming-call__locked span {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-incoming-call__locked { min-width: 0; display: grid; gap: var(--sk-space-1); }
.sk-incoming-call__close {
  width: var(--sk-control-height);
  height: var(--sk-control-height);
  border: 0;
  border-radius: var(--sk-radius-pill);
  display: grid;
  place-items: center;
  background: transparent;
  color: var(--sk-color-ink-soft);
  cursor: pointer;
}
.sk-incoming-call__close:hover { background: var(--sk-color-surface-hover); color: var(--sk-color-ink); }
.sk-incoming-call__close svg { width: 1.1rem; }
:where(.sk-incoming-call) button:focus-visible {
  outline: 3px solid var(--sk-color-focus-ring);
  outline-offset: 2px;
}
@keyframes sk-incoming-call-ring {
  0%, 100% { transform: rotate(0deg); }
  20% { transform: rotate(-10deg); }
  40% { transform: rotate(8deg); }
  60% { transform: rotate(-5deg); }
  80% { transform: rotate(3deg); }
}

/* Oppgaver er en arbeidskø, ikke en stabel med generiske administrasjonskort. */
.sk-nora-tasks { display: grid; align-content: start; gap: var(--sk-space-5); }
.sk-nora-tasks__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-6);
}
.sk-nora-tasks__header > div { min-width: 0; }
.sk-nora-tasks__header h1 {
  margin: 0;
  font-size: var(--sk-type-page-title);
  letter-spacing: -.04em;
}
.sk-nora-tasks__header > div > p:last-child {
  max-width: 62ch;
  margin: var(--sk-space-2) 0 0;
  color: var(--sk-color-ink-soft);
  line-height: var(--sk-line-copy);
}
.sk-nora-tasks__title-row {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  flex-wrap: wrap;
}
.sk-nora-tasks__header .is-refreshing svg { animation: sk-terminal-spin .8s linear infinite; }
@keyframes sk-terminal-spin { to { transform: rotate(360deg); } }
.sk-nora-tasks__error {
  min-height: var(--sk-control-height);
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid color-mix(in srgb, var(--sk-color-danger) 35%, transparent);
  border-radius: var(--sk-radius-md);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-nora-tasks__error svg { width: 1.15rem; flex: 0 0 auto; }
.sk-nora-tasks__layout {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(18rem, .75fr);
  align-items: start;
  gap: var(--sk-space-5);
}
/* .sk-nora-side-card er kortalias (01a-contract.css). Begge har hode og rader
   med egen polstring, så selve kortet står uten. */
.sk-nora-work-queue {
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}
.sk-nora-work-queue,
.sk-nora-side-card {
  overflow: hidden;
  padding: 0;
}
.sk-nora-work-queue > header,
.sk-nora-side-card > header {
  padding: var(--sk-space-5);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-nora-work-queue > header h2,
.sk-nora-side-card > header h2 {
  margin: 0;
  font-size: var(--sk-type-section-title);
}
.sk-nora-work-queue > header p,
.sk-nora-side-card > header p {
  margin: var(--sk-space-1) 0 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: var(--sk-line-copy);
}
.sk-nora-work-queue > .sk-empty-state { margin: var(--sk-space-5); }
.sk-nora-task-list { display: grid; }
.sk-nora-task {
  position: relative;
  min-width: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: start;
  gap: var(--sk-space-4);
  padding: var(--sk-space-5);
  border-left: 3px solid var(--sk-color-primary);
}
.sk-nora-task + .sk-nora-task { border-top: 1px solid var(--sk-color-border-soft); }
.sk-nora-task.is-complaint { border-left-color: var(--sk-color-danger); }
.sk-nora-task.is-waitlist { border-left-color: var(--sk-color-warning); }
.sk-nora-task.is-followup { border-left-color: var(--sk-color-success); }
.sk-nora-task__icon,
.sk-nora-call-log__icon {
  width: 2.7rem;
  height: 2.7rem;
  display: grid;
  place-items: center;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-nora-task.is-complaint .sk-nora-task__icon { background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }
.sk-nora-task.is-waitlist .sk-nora-task__icon { background: var(--sk-color-warning-soft); color: var(--sk-color-warning); }
.sk-nora-task.is-followup .sk-nora-task__icon { background: var(--sk-color-success-soft); color: var(--sk-color-success); }
.sk-nora-task__icon svg,
.sk-nora-call-log__icon svg { width: 1.2rem; height: 1.2rem; }
.sk-nora-task__body { min-width: 0; }
.sk-nora-task__meta {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  flex-wrap: wrap;
}
.sk-nora-task__meta time { color: var(--sk-color-ink-faint); font-size: var(--sk-font-size-xs); }
.sk-nora-kind {
  display: inline-flex;
  padding: var(--sk-space-1) var(--sk-space-2);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-nora-kind.is-complaint { background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }
.sk-nora-kind.is-waitlist { background: var(--sk-color-warning-soft); color: var(--sk-color-warning); }
.sk-nora-kind.is-followup { background: var(--sk-color-success-soft); color: var(--sk-color-success); }
.sk-nora-task__body h3 { margin: var(--sk-space-2) 0 0; font-size: var(--sk-type-card-title); }
.sk-nora-task__phone { margin: var(--sk-space-1) 0 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-nora-task__note {
  max-width: 65ch;
  margin: var(--sk-space-3) 0 0;
  color: var(--sk-color-ink);
  line-height: var(--sk-line-copy);
  overflow-wrap: anywhere;
}
.sk-nora-task__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--sk-space-2);
  flex-wrap: wrap;
}
.sk-nora-task__remove { color: var(--sk-color-danger); }
.sk-nora-tasks__sidebar { min-width: 0; display: grid; gap: var(--sk-space-5); }
.sk-nora-answer-mode { min-width: 0; margin: 0; padding: var(--sk-space-5); border: 0; }
.sk-nora-answer-mode legend { padding: 0; font-size: var(--sk-font-size-lg); font-weight: var(--sk-font-weight-strong); }
.sk-nora-answer-mode > p { margin: var(--sk-space-1) 0 var(--sk-space-4); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); line-height: var(--sk-line-copy); }
.sk-nora-answer-mode > div { display: grid; gap: var(--sk-space-2); }
.sk-nora-answer-mode label {
  position: relative;
  min-height: var(--sk-control-height);
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  display: flex;
  /* Forklaringen står under navnet, så knappen er ikke lenger én linje.
     `center` ville lagt radioknappen midt på to linjer tekst. */
  align-items: flex-start;
  gap: var(--sk-space-3);
  background: var(--sk-color-surface);
  cursor: pointer;
}
.sk-nora-answer-mode label > span {
  display: grid;
  gap: 0.15rem;
  min-width: 0;
}
.sk-nora-answer-mode label small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-body);
  line-height: var(--sk-line-copy);
}
/* Den valgte muligheten farger navnet, ikke forklaringen — den skal være
   like lesbar i alle tre. */
.sk-nora-answer-mode label.is-active small {
  color: var(--sk-color-ink-soft);
}
.sk-nora-answer-mode input {
  margin-top: 0.2rem;
}
.sk-nora-answer-mode label:hover { border-color: var(--sk-color-primary); }
.sk-nora-answer-mode label.is-active { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); color: var(--sk-color-primary); font-weight: var(--sk-font-weight-strong); }
.sk-nora-answer-mode input { width: 1rem; height: 1rem; accent-color: var(--sk-color-primary); }
.sk-nora-call-log,
.sk-nora-call-log ul { margin: 0; padding: 0; list-style: none; }
.sk-nora-call-log li + li { border-top: 1px solid var(--sk-color-border-soft); }
:where(.sk-nora-call-log) button {
  width: 100%;
  min-height: 5rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-3);
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
:where(.sk-nora-call-log) button:hover { background: var(--sk-color-surface-hover); }
.sk-nora-call-log__icon { width: 2.35rem; height: 2.35rem; border-radius: var(--sk-radius-pill); }
.sk-nora-call-log__body { min-width: 0; display: grid; gap: .1rem; }
.sk-nora-call-log__body strong,
.sk-nora-call-log__body small,
.sk-nora-call-log__body > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk-nora-call-log__body small,
.sk-nora-call-log__body > span { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }
.sk-nora-call-log__time { display: flex; align-items: center; gap: var(--sk-space-1); color: var(--sk-color-ink-faint); font-size: var(--sk-font-size-xs); }
.sk-nora-call-log__time svg { width: .95rem; }
.sk-nora-call-log__empty { margin: 0; padding: var(--sk-space-5); color: var(--sk-color-ink-soft); }
.sk-terminal-caller-context {
  margin-bottom: var(--sk-space-4);
  padding: var(--sk-space-4);
  border: 1px solid color-mix(in srgb, var(--sk-color-primary) 30%, var(--sk-color-border));
  border-radius: var(--sk-radius-lg);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-3);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-ink);
}
.sk-terminal-caller-context > span {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: var(--sk-radius-pill);
  display: grid;
  place-items: center;
  background: var(--sk-color-surface);
  color: var(--sk-color-primary);
}
.sk-terminal-caller-context svg { width: 1.2rem; }
.sk-terminal-caller-context strong { display: block; }
.sk-terminal-caller-context p { margin: var(--sk-space-1) 0 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-terminal-caller-context small { display: block; margin-top: var(--sk-space-1); color: var(--sk-color-primary); font-weight: var(--sk-font-weight-strong); }
.sk-terminal-workspace-nav > .sk-terminal-nav-secondary { position: relative; }

@media (width <= 72rem) {
  .sk-nora-tasks__layout { grid-template-columns: 1fr; }
  .sk-nora-tasks__sidebar { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); }
}

@media (width <= 56rem) {
  .sk-incoming-call { top: calc(4.25rem + var(--sk-space-3) + env(safe-area-inset-top)); }
  .sk-nora-tasks__header { display: grid; }
  .sk-nora-tasks > .sk-terminal-section-heading { align-items: stretch; flex-direction: column; }
  .sk-nora-tasks > .sk-terminal-section-heading > div { min-width: 0; width: 100%; }
  .sk-nora-tasks > .sk-terminal-section-heading > .sk-terminal-heading-actions { justify-content: flex-start; flex-wrap: wrap; }
  .sk-nora-tasks__sidebar { grid-template-columns: 1fr; }
  .sk-nora-task { grid-template-columns: auto minmax(0, 1fr); }
  .sk-nora-task__actions { grid-column: 1 / -1; justify-content: stretch; }
}

@media (width <= 36rem) {
  .sk-incoming-call {
    top: auto;
    right: max(var(--sk-space-3), env(safe-area-inset-right));
    bottom: calc(5.5rem + env(safe-area-inset-bottom));
    left: max(var(--sk-space-3), env(safe-area-inset-left));
    width: auto;
  }
  .sk-nora-task { padding: var(--sk-space-4); }
  .sk-nora-task__actions { display: grid; grid-template-columns: 1fr 1fr; }
  .sk-nora-task__actions .sk-nora-task__open { grid-column: 1 / -1; }
  :where(.sk-nora-call-log) button { padding-inline: var(--sk-space-3); }
}

@media (prefers-reduced-motion: reduce) {
  .sk-incoming-call__icon,
  .sk-nora-tasks__header .is-refreshing svg { animation: none; }
}

/* Financial recovery uses the same card and summary contract as Kundeprofil. */
.sk-terminal-payment-overview { display: grid; gap: var(--sk-space-3); min-width: 0; }
.sk-terminal-payment-overview p { margin: 0; }
.sk-terminal-payment-overview__list { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,18rem),1fr)); gap: var(--sk-space-4); list-style: none; margin: 0; padding: 0; }
.sk-terminal-payment-overview__list > li { display: grid; align-content: start; gap: var(--sk-space-2); padding-top: var(--sk-space-4); border-top: 1px solid var(--sk-color-border-soft); min-width: 0; }
.sk-terminal-payment-overview__list h3 { margin: 0; }
.sk-terminal-payment-overview__reference { overflow-wrap: anywhere; }
.sk-terminal-payment-overview .sk-terminal-status { justify-self: start; }
@media(max-width:720px) { .sk-terminal-payment-overview > .sk-terminal-section-heading { flex-direction: column; align-items: stretch; } .sk-terminal-payment-overview .sk-terminal-heading-actions { justify-content: flex-start; } }
.sk-terminal-payment-overview .sk-terminal-summary-grid { grid-template-columns: minmax(0,1fr); gap: 0; margin-bottom: 0; }
.sk-terminal-payment-overview .sk-terminal-summary-grid article { grid-template-columns: minmax(0,1fr) auto; min-height: 0; gap: var(--sk-space-2); border: 0; border-radius: 0; border-bottom: 1px solid var(--sk-color-border-soft); padding: var(--sk-space-2) 0; }
.sk-terminal-payment-overview .sk-terminal-summary-grid strong { align-self: center; white-space: nowrap; }

/* Original sale inspection stays within its existing recovery card. */
.sk-terminal-payment-inspection { display: grid; gap: var(--sk-space-3); min-width: 0; }
.sk-terminal-payment-inspection .sk-terminal-cart-lines,
.sk-terminal-payment-inspection .sk-terminal-cart-lines > li,
.sk-terminal-payment-inspection .sk-cashup-sale-detail { min-width: 0; max-width: 100%; }
.sk-terminal-payment-inspection .sk-terminal-cart-lines > li { grid-template-columns: minmax(0,1fr); overflow-wrap: anywhere; }
.sk-terminal-payment-inspection .sk-terminal-cart-lines > li > span { min-width: 0; }
.sk-terminal-payment-inspection .sk-terminal-section-heading { flex-wrap: wrap; }
.sk-terminal-payment-inspection .sk-terminal-section-heading > div { min-width: 0; }
.sk-terminal-payment-inspection .sk-terminal-cart-lines > li > button { grid-template-columns: minmax(0,1fr) auto; }
.sk-terminal-payment-inspection .sk-terminal-cart-lines > li > button > span:not(.sk-terminal-status) { grid-column: 1 / -1; grid-row: 1; }
.sk-terminal-payment-inspection .sk-terminal-cart-lines > li > button > strong { grid-column: 1; }
.sk-terminal-payment-inspection .sk-terminal-cart-lines > li > button > .sk-terminal-status { grid-column: 2; }

/* Betalingskortene i Oppgaver ligger i hver sin ramme. Rammen skjules (`hidden`)
   bare når kortet har bekreftet at det er tomt; den er ellers usynlig. */
.sk-nora-tasks__payments { min-width: 0; }

/* Venteliste-booking og anropslogg.
   Skilt ut fra 01-foundations.css, som traff strukturvaktens grense på
   1200 linjer. Reglene hører uansett sammen: begge er snarveier fra en
   liste til en handling. */

/* Ventelisten er en kompakt arbeidskø. Den hadde tidligere kassens generelle
   varelinje-klasse, og hver person fikk derfor høyden og kolonnene til en
   ordre. Det blir særlig voldsomt på iMac-flaten. Detaljer lastes og vises
   først når raden er åpnet. */
.sk-terminal-waitlist-list {
  display: grid;
  gap: var(--sk-space-2);
  margin: var(--sk-space-3) 0 0;
  padding: 0;
  list-style: none;
}

.sk-terminal-waitlist-list > li {
  display: grid;
  gap: var(--sk-space-2);
  min-height: var(--sk-terminal-touch-min);
  padding: var(--sk-space-2) var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}

.sk-terminal-waitlist-list > li.is-expanded {
  border-color: color-mix(in srgb, var(--sk-color-primary) 35%, var(--sk-color-border-soft));
}

/* Kontraktens radgrammatikk (§4): hele radens innhold er ÉN knapp, tegnet som
   raden selv — ikke en lenke inni raden. */
:where(.sk-terminal-waitlist-list > li) > button {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--sk-space-2) var(--sk-space-3);
  width: 100%;
  min-height: 0;
  border: 0;
  border-radius: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
:where(.sk-terminal-waitlist-list > li) > button:disabled {
  cursor: default;
}
:where(.sk-terminal-waitlist-list > li) > button > span:first-child {
  display: grid;
  min-width: 0;
  gap: 0.15rem;
}
:where(.sk-terminal-waitlist-list > li) > button > span:first-child > strong {
  font-weight: var(--sk-font-weight-strong);
}
:where(.sk-terminal-waitlist-list > li) > button > span:first-child > small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
:where(.sk-terminal-waitlist-list > li) > button > svg {
  flex: 0 0 auto;
  width: 1rem;
  height: 1rem;
  color: var(--sk-color-ink-soft);
  transition: transform 140ms ease;
}
:where(.sk-terminal-waitlist-list > li) > button > svg.is-open {
  transform: rotate(180deg);
}

/* Kundens egne ord, synlig først når raden er åpnet. */
.sk-terminal-waitlist-note {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: var(--sk-line-copy);
}

/* Alias for overgangen: den gamle lenkeknappen i raden. Skal ikke brukes i ny
   kode — raden er knappen. */
.sk-terminal-waitlist-list .sk-terminal-row-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: var(--sk-space-1);
  width: fit-content;
  max-width: 100%;
  min-height: 0;
  padding: 0;
  font-weight: var(--sk-font-weight-strong);
  text-align: left;
}

.sk-terminal-waitlist-list .sk-terminal-row-toggle svg {
  flex: 0 0 auto;
  width: 1rem;
  height: 1rem;
  transition: transform 140ms ease;
}

.sk-terminal-waitlist-list .sk-terminal-row-toggle svg.is-open {
  transform: rotate(180deg);
}

.sk-terminal-waitlist-list .sk-waitlist-book,
.sk-terminal-waitlist-list .sk-terminal-row-expand {
  grid-column: 1 / -1;
}

.sk-terminal-waitlist-list .sk-terminal-row-expand {
  min-width: 0;
  padding-top: var(--sk-space-2);
  border-top: 1px solid var(--sk-color-border-soft);
}

@media (max-width: 48rem) {
  :where(.sk-terminal-waitlist-list > li) > button {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  :where(.sk-terminal-waitlist-list > li) > button > .sk-terminal-status {
    grid-column: 2;
  }

  :where(.sk-terminal-waitlist-list > li) > button > svg {
    grid-column: 2;
  }
}

/* Snarveien fra ventelisten til en booket time.
   Knappene er tidspunkter, og de trykkes med en finger på en terminal — de
   er derfor store nok til det, og bryter til flere rader framfor å krympe. */
.sk-waitlist-book {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-2) var(--sk-space-3);
  margin-top: var(--sk-space-2);
}
.sk-waitlist-book__slots {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
/* Egen komponentklasse, ikke en etterkommerregel: :where() har null vekt, så
   `:where(.sk-waitlist-book__slots) > button` tapte mot kontraktens
   .sk-terminal-secondary (01a-contract.css) og knappene ble inline-flex igjen —
   tidspunktet og frisørnavnet la seg på samme linje. Beholderen under er
   fortsatt en containerregel og skal fortsatt skrives med :where(). */
.sk-terminal-waitlist-slot {
  min-height: 2.9rem;
  display: grid;
  gap: 0.1rem;
  line-height: 1.15;
}
.sk-waitlist-book__slots small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-waitlist-book__tom {
  color: var(--sk-color-ink-soft);
}

/* Selve raden som åpner kunden. Fikk en egen klasse da sletteknappen kom
   ved siden av, slik at de to ikke arver samme regler. */
.sk-nora-call-log__open {
  width: 100%;
}

/* Sletting av transkripsjon ligger som en egen knapp UNDER raden, ikke inni
   den: den store knappen åpner kunden, og en knapp inni en knapp er ugyldig
   markup og umulig å treffe med tastatur. */
.sk-nora-call-log__forget {
  justify-self: start;
  margin: 0 0 var(--sk-space-2) var(--sk-space-2);
  padding: var(--sk-space-1) var(--sk-space-2);
  border: 0;
  background: transparent;
  color: var(--sk-color-danger);
  font: inherit;
  font-size: var(--sk-font-size-xs);
  text-decoration: underline;
  cursor: pointer;
}
.sk-nora-call-log__forget:disabled {
  color: var(--sk-color-ink-faint);
  cursor: default;
}

/* Samtaleloggen åpner sin egen detaljflate. Oppsummering og transkripsjon
   skal være lesbare som en samtale, ikke som et kundekort klemt nederst på
   oppgavesiden. */
.sk-nora-call-detail {
  display: grid;
  align-content: start;
}
/* «Tilbake» i en samtaledetalj er en tekstknapp (kontrakt §2), ikke den runde
   sk-terminal-back-pilen som hører til arkene. .sk-terminal-back-link er beholdt
   som alias i 01a-contract.css og skal ikke brukes i ny kode. */
:where(.sk-nora-call-detail) > .sk-terminal-link:first-child,
.sk-terminal-back-link {
  justify-self: start;
  width: fit-content;
  margin-bottom: var(--sk-space-3);
  padding-inline: var(--sk-space-2);
}
:where(.sk-nora-call-detail) > .sk-terminal-link:first-child svg,
.sk-terminal-back-link svg {
  width: 1rem;
}

.sk-nora-call-detail__icon {
  display: grid;
  place-items: center;
  width: 3rem;
  height: 3rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--sk-color-primary) 10%, transparent);
  color: var(--sk-color-primary);
}

.sk-nora-call-detail__content {
  display: grid;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-4);
}

.sk-nora-call-detail__content > section {
  display: grid;
  gap: var(--sk-space-2);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}

.sk-nora-call-detail__content h2,
.sk-nora-call-detail__content p {
  margin: 0;
}

.sk-nora-call-detail__transcript {
  max-width: 72ch;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.65;
}

.sk-nora-call-detail__actions {
  justify-content: flex-start;
  margin-top: var(--sk-space-4);
}

/* Vaktblokka er nå en knapp, ikke en <article>. Den arver ikke knappens
   standardutseende — den skal se ut nøyaktig som før, bare kunne trykkes. */
button.sk-shift-block {
  border: 0;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

/* Detaljene om én vakt. Merknaden er ofte det eneste som ikke fikk plass i
   blokka, så den får bryte over flere linjer her. */
.sk-shift-detail {
  margin: var(--sk-space-4) 0 0;
  display: grid;
  gap: var(--sk-space-3);
}
.sk-shift-detail > div {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-shift-detail dt {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-shift-detail dd {
  margin: 0;
  font-weight: var(--sk-font-weight-strong);
  overflow-wrap: anywhere;
}

/* Explicit wait-time choices remain reachable on narrow terminal screens. */
.sk-terminal-waitlist-horizons { display: flex; flex-wrap: wrap; }
.sk-terminal-waitlist-horizons > p { flex-basis: 100%; }

/* Musikk i lokalet.
 *
 * Panelet styres av folk som står, ofte med en saks i den andre hånden. Alt
 * som kan trykkes holder fingermålet, og volumet er en skyvebryter framfor to
 * knapper: å treffe «opp» fire ganger på rad er verre enn å dra én gang. */

.sk-terminal-music-now {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  margin-bottom: var(--sk-space-3);
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}

.sk-terminal-music-track {
  display: grid;
  flex: 1 1 auto;
  min-width: 0;
}

.sk-terminal-music-track strong,
.sk-terminal-music-track small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sk-terminal-music-track small {
  color: var(--sk-color-ink-soft);
}

.sk-terminal-music-controls {
  display: flex;
  flex: 0 0 auto;
  gap: var(--sk-space-2);
}

:where(.sk-terminal-music-controls) > button {
  display: grid;
  place-items: center;
  width: var(--sk-terminal-touch-min);
  min-height: var(--sk-terminal-touch-min);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-surface-subtle);
  color: var(--sk-color-primary);
  cursor: pointer;
}

:where(.sk-terminal-music-controls) > button:disabled {
  opacity: 0.5;
  cursor: default;
}

.sk-terminal-music-volume {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  min-height: var(--sk-terminal-touch-min);
  margin-bottom: var(--sk-space-2);
}

.sk-terminal-music-volume svg {
  width: 1.15rem;
  color: var(--sk-color-ink-soft);
}

.sk-terminal-music-volume input {
  flex: 1 1 auto;
  min-width: 0;
  /* Selve sporet skal være lett å treffe, ikke bare håndtaket. */
  height: var(--sk-terminal-touch-min);
  accent-color: var(--sk-color-primary);
}

.sk-terminal-music-volume strong {
  min-width: 2.5rem;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.sk-terminal-music-playlists {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-3);
}

:where(.sk-terminal-music-playlists) > button {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  min-height: var(--sk-terminal-touch-min);
  padding: var(--sk-space-2) var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: inherit;
  text-align: left;
  cursor: pointer;
}

:where(.sk-terminal-music-playlists) > button:hover:not(:disabled),
:where(.sk-terminal-music-playlists) > button:focus-visible {
  background: color-mix(in srgb, var(--sk-color-primary) 5%, transparent);
}

:where(.sk-terminal-music-playlists) > button:disabled {
  opacity: 0.55;
  cursor: default;
}

.sk-terminal-music-playlists svg {
  flex: 0 0 auto;
  width: 1.1rem;
  color: var(--sk-color-primary);
}

.sk-terminal-music-playlists span {
  display: grid;
  min-width: 0;
}

.sk-terminal-music-playlists strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sk-terminal-music-playlists small {
  color: var(--sk-color-ink-soft);
}

/* ── «Tell kassa»: kasseopptelling ved dagsoppgjør ──────────────────────────
   Visningen følger designkontraktens panelskjelett
   (docs/architecture/ui/TERMINAL-DESIGN-CONTRACT.md § 3): `sk-terminal-panel`, eyebrow + h1 i
   `.sk-terminal-section-heading`, bokser som `.sk-terminal-card` og knapper i
   kontraktens varianter. Her ligger BARE det som er særegent for
   opptellingen: valørradene med bildene, summen, stepperen og PIN-blokken.

   Alle mål går gjennom tokenene. En valørrad som er lavere enn
   `--sk-terminal-control-h` er ikke til å treffe med en finger over en åpen
   kasseskuff. Oppsettet styres av panelets egen bredde (container queries),
   ikke av vinduet: kassa-PC-en på 1024×768 og en 1280×800-skjerm gir omtrent
   like brede paneler fordi rotskriften er ulik. */

.sk-terminal-panel--cash-count {
  container-type: inline-size;
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-4);
}

.sk-cash-count-back {
  align-self: flex-start;
}

/* Overskriften får fokus når visningen åpnes (tar rullingen til toppen).
   Den skal ikke få en fokusring av det — den er ikke en kontroll. */
.sk-terminal-panel--cash-count h1:focus {
  outline: none;
}

/* Én kolonne på smalt panel; valørene til venstre og summen/bekreftelsen til
   høyre når panelet har plass til begge. */
.sk-cash-count-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--sk-space-4);
  align-items: start;
}

@container (min-width: 60rem) {
  .sk-cash-count-layout {
    grid-template-columns: minmax(0, 1.2fr) minmax(20rem, 0.9fr);
  }
}

.sk-cash-count-side,
.sk-cash-count-done,
.sk-cash-count-confirm,
.sk-cash-count-summary,
.sk-cash-count-denominations {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-4);
  min-width: 0;
}

.sk-cash-count-group {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-2);
}

.sk-cash-count-card-title {
  margin: 0;
  font-size: var(--sk-font-size-lg);
}

.sk-cash-count-group-title {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* ── Valørradene: [bilde] valør · − antall + · sum ─────────────────────── */

.sk-cash-count-rows {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.sk-cash-count-row {
  display: grid;
  grid-template-columns: 4.5rem minmax(3.5rem, 1fr) auto minmax(6rem, auto);
  align-items: center;
  gap: var(--sk-space-3);
  padding: var(--sk-space-2) var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}

.sk-cash-count-row-label {
  font-size: var(--sk-font-size-lg);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.sk-cash-count-row-sum {
  justify-self: end;
  font-size: var(--sk-font-size-md);
  font-weight: var(--sk-font-weight-strong);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* Bildet ved valøren. Stiliserte illustrasjoner (se cash/DenominationArt.tsx)
   med faste farger — en tjuekroning er gul også i mørk modus. */
.sk-cash-art {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4.5rem;
  height: 3rem;
}
.sk-cash-art svg {
  display: block;
  width: 100%;
  height: 100%;
}
.sk-cash-art.is-coin svg {
  width: 3rem;
}
.sk-cash-art.is-note svg {
  filter: drop-shadow(0 1px 1px rgb(0 0 0 / 18%));
}

.sk-cash-count-stepper {
  display: grid;
  grid-template-columns: var(--sk-terminal-control-h) minmax(4rem, 5rem) var(--sk-terminal-control-h);
  align-items: center;
  gap: var(--sk-space-2);
}

/* `:where()` holder regelen på variantens egen spesifisitet (kontrakten § 2). */
:where(.sk-cash-count-stepper) > .sk-terminal-icon-button {
  font-size: var(--sk-font-size-xl);
  font-weight: var(--sk-font-weight-strong);
}

.sk-cash-count-stepper input {
  min-height: var(--sk-terminal-control-h);
  text-align: center;
  font-size: var(--sk-font-size-lg);
  font-variant-numeric: tabular-nums;
  font-weight: var(--sk-font-weight-strong);
}

/* Nullstiller nettleserens egne pilknapper: de er små, de ligger inntil
   hverandre, og over en åpen skuff treffer ingen dem. −/+ er knappene. */
.sk-cash-count-stepper input::-webkit-outer-spin-button,
.sk-cash-count-stepper input::-webkit-inner-spin-button {
  margin: 0;
  appearance: none;
}
.sk-cash-count-stepper input {
  appearance: textfield;
}

/* Smalt panel (telefon, iPad stående): stepperen går på egen linje under
   bildet, valøren og summen, så knappene beholder full fingerstørrelse. */
@container (max-width: 34rem) {
  .sk-cash-count-row {
    grid-template-columns: 4rem minmax(0, 1fr) auto;
  }
  .sk-cash-count-row .sk-cash-count-stepper {
    grid-column: 1 / -1;
    grid-row: 2;
    grid-template-columns: var(--sk-terminal-control-h) minmax(0, 1fr) var(--sk-terminal-control-h);
  }
  .sk-cash-art {
    width: 4rem;
  }
}

/* ── Summen: talt (stort), forventet med regnestykket, avviket ─────────── */

.sk-cash-count-total {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-1);
}
.sk-cash-count-total > span {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-cash-count-total > strong {
  font-size: var(--sk-font-size-2xl);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}

.sk-cash-count-totals {
  font-variant-numeric: tabular-nums;
}

/* Regnestykket bak «forventet». Det står under tallet, ikke ved siden av: en
   linje som brytes midt i en formel er verre enn ingen formel. */
.sk-cash-count-breakdown {
  display: block;
  color: var(--sk-color-ink-soft);
}

.sk-cash-count-money-fields {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: var(--sk-space-3);
}

/* Hvem som signerer: den som er logget inn på kassa (ingen ny PIN). */
.sk-cash-count-signer {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-strong);
}

/* Forventet beløp kunne ikke hentes: beskjeden og «Prøv igjen» på én linje.
   Rutene med det som er talt står urørt. */
.sk-cash-count-load-error {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
}

.sk-cash-count-actions {
  flex-wrap: wrap;
}

/* Opptellingen slik den står i Z-kvitteringen etterpå. Samme radgrammatikk
   som resten av kassakortet — dette er tallene noen slår opp i ettertid. */
.sk-cash-count-block {
  font-variant-numeric: tabular-nums;
}

/* Startkassen hos Oppgjør: tilbudet om å føre differansen som kontant inn/ut.
   Egen blokk inne i godkjenningskortet, skilt med samme myke linje. */
.sk-cash-count-adjust {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--sk-space-3);
  padding-top: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border-soft);
}

/* ── Uka i timeboken ────────────────────────────────────────────────────────
   Ukevisningen ARVER dagsrutenettet fra 04-calendar.css. `.sk-timebook`,
   `.sk-timebook-grid`, `.sk-timebook-block` og statusklassene er nøyaktig de
   samme — en time skal se lik ut uansett hvilken visning den står i. Her ligger
   BARE de tre tingene uka gjør annerledes:

     1. sju kolonner må få plass på 1280 piksler, ikke fire brede frisørspalter,
     2. kolonnehodet viser en ukedag i stedet for et navn og et ansikt,
     3. blokkert tid er bakgrunn, ikke innhold.

   Alle mål går gjennom tokenene, som resten av terminalen. */

.sk-timebook-week {
  /* Sju ganger 11rem er 77rem pluss tidsaksen — bredere enn skjermen, og da
     dytter rutenettet seg ut i stedet for å krympe. 8,5rem gir sju kolonner
     pluss akse innenfor 64rem, og en kolonne er fortsatt bred nok til at
     klokkeslett og fornavn står på hver sin linje. */
  --sk-timebook-column-min: 8.5rem;
}

.sk-timebook-week-head {
  /* Ingen avatar her: kolonnen er en dag, ikke en person. */
  flex-direction: column;
  align-items: flex-start;
  gap: 0.1rem;
  text-transform: capitalize;
}

.sk-timebook-week-head small {
  color: var(--sk-color-ink-soft);
}

/* I dag skal kunne pekes ut fra andre siden av rommet. */
.sk-timebook-week-head.is-today {
  border-bottom: 2px solid var(--sk-color-primary);
}

.sk-timebook-week-head.is-today strong {
  color: var(--sk-color-primary);
}

/* Dagen man kom fra i dagsvisningen, så uka viser hvor man står. */
.sk-timebook-week-head.is-selected {
  background: color-mix(in srgb, var(--sk-color-primary) 8%, transparent);
}

.sk-timebook-week-closed {
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  color: var(--sk-color-ink-faint);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.sk-timebook-week-column.is-today {
  background: color-mix(in srgb, var(--sk-color-primary) 4%, transparent);
}

/* Blokkert tid sier «her er det opptatt». Den skal ikke konkurrere med kundens
   time, som ligger oppå den — derfor stripet flate og dempet tekst framfor en
   farget blokk med kant. */
.sk-timebook-week-block {
  --sk-timebook-accent: var(--sk-color-ink-faint);
  display: flex;
  align-items: flex-start;
  overflow: hidden;
  padding: 0.2rem 0.35rem;
  border-left-style: dashed;
  background: repeating-linear-gradient(
    135deg,
    color-mix(in srgb, var(--sk-color-ink-faint) 14%, transparent),
    color-mix(in srgb, var(--sk-color-ink-faint) 14%, transparent) 6px,
    transparent 6px,
    transparent 12px
  );
  color: var(--sk-color-ink-soft);
  cursor: default;
}

.sk-timebook-week-block span {
  overflow: hidden;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* Dag/uke-velgeren og «Bare mine» står i det samme hodet som kalender/liste.
   Velgeren arver segmentformen fra `.sk-shift-view-tabs`; her sikres bare at
   den ikke klemmes sammen når hodet blir trangt — den bestemmer hva alt det
   andre i hodet handler om, og skal aldri være det første som krymper.
   Knappen beholder sekundærformen fra designkontrakten; `is-active` sier bare
   at filteret står på. */
.sk-timebook-mode-tabs {
  flex-shrink: 0;
}

.sk-timebook-only-mine.is-active {
  border-color: var(--sk-color-primary);
  background: color-mix(in srgb, var(--sk-color-primary) 10%, transparent);
  color: var(--sk-color-primary);
}

.sk-timebook-only-mine:disabled {
  /* Låst PÅ i ukemodus, ikke slått av. Den skal se valgt ut, bare ikke
     trykkbar — en grå, tom knapp ville lest som «av». */
  opacity: 1;
  border-color: var(--sk-color-border-soft);
  background: color-mix(in srgb, var(--sk-color-primary) 6%, transparent);
  color: var(--sk-color-ink-soft);
  cursor: not-allowed;
}

@media (max-width: 60rem) {
  .sk-timebook-week {
    --sk-timebook-column-min: 7rem;
  }
}

/* ── Dagsoppgjør: varsel og bekreftelse ─────────────────────────────────────
   Statuslinja arver `.sk-terminal-bar-notice` fra designkontrakten (gul som
   standard). Her legges bare den røde varianten på, og plass til tekst og
   knapper på samme linje. Knappene er kontraktens egne varianter. */

.sk-terminal-bar-notice.is-danger {
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}

.sk-day-close-notice {
  /* Varselteksten skal aldri presses opp i headeren av arbeidsflaten. */
  flex: 0 0 auto;
  min-width: 0;
  flex-wrap: wrap;
}

.sk-day-close-notice-text {
  display: flex;
  min-width: 0;
  flex-wrap: wrap;
  overflow-wrap: anywhere;
  align-items: center;
  gap: var(--sk-space-2) var(--sk-space-3);
}

.sk-day-close-notice-text small {
  font-weight: var(--sk-font-weight-medium);
}

.sk-day-close-notice-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}

.sk-day-close-sheet {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-4);
}

.sk-day-close-choice,
.sk-day-close-form {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-3);
}

/* ── Oppgjør: «Dagens oppgjør», fliser og resultatet ─────────────────────────
   Reviewen 2026-09-22 og Peters tilbakemelding samme dag: ett panelhode, ÉN
   primærknapp, sekundære handlinger som fliser (samme grammatikk som
   «Mer»-panelet: ikon | tittel + undertekst), og resultatet etter
   avslutningen i sin EGEN seksjon med luft — ikke klemt inntil kortet. Knappene er kontraktens egne varianter;
   flisene er knapper som ER en flis og får stilen fra containeren
   (`:where(.sk-cashup-tiles) > button`). */

.sk-cashup-headline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-2) var(--sk-space-3);
}

.sk-cashup-day {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-4);
  margin-top: var(--sk-space-4);
}

/* Hovedknappen bærer fagbegrepet i undertekst; den er høyere enn en vanlig
   knapp, men fortsatt kontraktens primærknapp. */
.sk-cashup-close-day {
  width: 100%;
  min-height: calc(var(--sk-terminal-control-h) * 1.4);
  padding-block: var(--sk-space-3);
}
.sk-cashup-close-day > span {
  display: grid;
  gap: var(--sk-space-1);
  text-align: center;
}
/* Undertekst i primærknappen: samme farge som knappeteksten (hvit, eller
   deaktivert grå), aldri den dempede brødtekstfargen på blått. */
.sk-cashup-close-day small {
  color: inherit;
  font-weight: var(--sk-font-weight-medium);
  opacity: 0.92;
}

.sk-cashup-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: var(--sk-space-3);
}
:where(.sk-cashup-tiles) > button {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-3);
  min-height: 4.5rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
:where(.sk-cashup-tiles) > button:hover:not(:disabled) {
  background: var(--sk-color-surface-hover);
}
:where(.sk-cashup-tiles) > button:focus-visible {
  outline: 3px solid var(--sk-color-primary);
  outline-offset: 2px;
}
:where(.sk-cashup-tiles) > button:disabled {
  border-color: var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}
:where(.sk-cashup-tiles) > button > svg {
  width: 1.5rem;
  height: 1.5rem;
  color: var(--sk-color-primary);
}
:where(.sk-cashup-tiles) > button > span {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-1);
}
:where(.sk-cashup-tiles) > button small {
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-medium);
}

/* Én kort linje: «Dagsoppgjøret tas av leder.» / «Kassa må telles i kveld». */
.sk-cashup-leader-only,
.sk-cashup-must-count {
  margin: 0;
}

/* «Dagen er gjort opp»: egen seksjon under kassekortet, med samme luft som
   mellom andre seksjoner i panelet (designkontrakten § 3–4). */
.sk-cashup-result {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-6);
}
.sk-cashup-result > h2 {
  margin: 0;
}

.sk-cashup-sales-heading {
  margin-top: var(--sk-space-6);
}
.sk-cashup-sales-heading p {
  margin: var(--sk-space-1) 0 0;
}

/* Smal skjerm: flisene under hverandre, aldri en rad som renner ut. */
@media (max-width: 36rem) {
  .sk-cashup-tiles {
    grid-template-columns: 1fr;
  }
}

/* «Meld feil» i terminalens topplinje (TerminalBugReportButton.tsx).
   Arket gjenbruker .sk-terminal-sheet-layer/.sk-timebook-sheet; her står bare
   typevelgeren, samtykkene, forhåndsvisningen og krasjkortet. */
.sk-terminal-bug-sheet {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-4);
  overflow-y: auto;
}
.sk-terminal-bug-lead {
  margin: 0;
  color: var(--sk-color-ink-soft);
}
.sk-terminal-bug-kinds {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-terminal-bug-kind {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  column-gap: var(--sk-space-3);
  row-gap: var(--sk-space-1);
  min-height: 5.5rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  text-align: left;
  cursor: pointer;
}
.sk-terminal-bug-kind svg {
  grid-row: span 2;
  width: 1.75rem;
  height: 1.75rem;
  color: var(--sk-color-primary);
}
.sk-terminal-bug-kind small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-terminal-bug-kind.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  box-shadow: inset 0 0 0 1px var(--sk-color-primary);
}
.sk-terminal-bug-consent {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-3);
  min-height: 3rem;
  cursor: pointer;
}
.sk-terminal-bug-consent input {
  flex: none;
  width: 1.5rem;
  height: 1.5rem;
  margin-top: 0.1rem;
}
.sk-terminal-bug-consent span {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-terminal-bug-consent small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-terminal-bug-preview {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-terminal-bug-preview img {
  width: 10rem;
  max-height: 7rem;
  object-fit: cover;
  object-position: top left;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
}
.sk-terminal-bug-error {
  margin: 0;
  color: var(--sk-color-danger);
}
.sk-terminal-bug-actions {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  margin-top: auto;
}
.sk-terminal-bug-done {
  display: grid;
  justify-items: start;
  gap: var(--sk-space-3);
}
.sk-terminal-bug-done > svg {
  width: 2.5rem;
  height: 2.5rem;
  color: var(--sk-color-success);
}
.sk-terminal-bug-crash {
  position: fixed;
  right: var(--sk-space-5);
  bottom: var(--sk-space-5);
  z-index: 60;
  display: grid;
  gap: var(--sk-space-3);
  width: min(26rem, calc(100vw - 2 * var(--sk-space-5)));
  padding: var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-popover);
}
.sk-terminal-bug-crash p {
  margin: 0;
  color: var(--sk-color-ink-soft);
}
.sk-terminal-bug-crash textarea {
  width: 100%;
}
@media (max-width: 640px) {
  .sk-terminal-bug-kinds {
    grid-template-columns: 1fr;
  }
}

/* «Hjelp» i topplinjen og på låseskjermen. Tekstknapp (ikke bare ikon) slik at
   inngangen er synlig, minst så høy som øvrige kontroller (touch ≥ 44 px). */
.sk-terminal-help-button {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  flex: none;
  min-height: var(--sk-terminal-control-h);
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-terminal-help-button:hover:not(:disabled) {
  background: var(--sk-color-surface-hover);
}
.sk-terminal-help-button svg {
  width: 1.1rem;
  height: 1.1rem;
}
.sk-terminal-help-button.is-urgent {
  border-color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}
/* De to kritiske valgene skiller seg med farge og kant, aldri med farge alene:
   teksten sier «Kritisk». */
.sk-terminal-help-choices {
  grid-template-columns: minmax(0, 1fr);
}
.sk-terminal-bug-kind.is-critical {
  border-color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
}
.sk-terminal-bug-kind.is-critical svg {
  color: var(--sk-color-danger);
}
.sk-terminal-primary.is-critical {
  background: var(--sk-color-danger);
  border-color: var(--sk-color-danger);
}
.sk-terminal-help-critical {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-terminal-help-critical-title {
  margin: 0;
  font-weight: var(--sk-font-weight-strong);
  color: var(--sk-color-danger);
}
.sk-terminal-help-technical {
  margin: 0;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  overflow-wrap: anywhere;
}
@media (min-width: 48rem) {
  .sk-terminal-help-choices {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.sk-terminal-help-link {
  border: 0;
  background: none;
  font: inherit;
  cursor: pointer;
  min-height: var(--sk-terminal-control-h);
}

/* Arket går helt ned, men den nederste fanelinja (Oversikt … Betal) ligger over
   det på iPad stående. Uten fri plass under var «Send» skjult bak den, og en
   kritisk melding kunne ikke sendes. 6.5 rem dekker fanelinja pluss sikker sone. */
.sk-terminal-sheet-layer > .sk-timebook-sheet.sk-terminal-bug-sheet,
.sk-terminal-workspace .sk-terminal-sheet-layer > .sk-timebook-sheet.sk-terminal-bug-sheet {
  padding-bottom: calc(6.5rem + env(safe-area-inset-bottom, 0px));
}
/* Knappene følger innholdet i stedet for å ligge i bunnen av et ark som er
   høyere enn skjermen: «Send» skal være i øyehøyde, ikke bak fanelinja. */
.sk-terminal-bug-sheet .sk-terminal-bug-actions {
  margin-top: var(--sk-space-4);
}

/* Terminalens ark (drawers): felles topplinje og felles luft.

   Lastes sist i 09-terminal.css, slik at én regel her gjelder alle ark uten å
   kjempe mot de eldre per-ark-reglene i 04-calendar.css og 06-workspace.css.

   1. Topplinjen. Tilbakeknappen var absolutt plassert oppe til venstre, 2,6 rem
      (32–39 px, under fingermålet) med eyebrow-teksten skjøvet 3,5 rem inn ved
      siden av og tittelen en hel linje lenger ned. På iPad så pila ut som den
      fløt over innholdet, og «Ny time» havnet langt nede. Nå er knappen og
      overskriften én rad i <header class="sk-sheet-header">.
   2. Luften. Arkets barn hadde hver sin margin (0, 0,75 rem, 1,4 rem, …), så
      kundesøket sto kant i kant med «Fra registeret»-valget, og «Opprett ny
      kunde» rett mot dato-feltene. Én rytme for alle ark: --sk-space-4 mellom
      blokker, --sk-space-5 før en ny seksjon. */

.sk-terminal-sheet-layer > .sk-timebook-sheet,
.sk-terminal-workspace .sk-terminal-sheet-layer > .sk-timebook-sheet {
  padding:
    max(var(--sk-space-5), var(--sk-safe-top, 0px))
    max(var(--sk-space-8), var(--sk-safe-right, 0px))
    max(var(--sk-space-6), var(--sk-safe-bottom, 0px))
    max(var(--sk-space-8), var(--sk-safe-left, 0px));
}

.sk-sheet-header {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-3);
  margin: 0;
}
.sk-sheet-header > .sk-terminal-back {
  position: static;
  width: var(--sk-terminal-control-h);
  height: var(--sk-terminal-control-h);
  min-width: var(--sk-terminal-touch-min);
  min-height: var(--sk-terminal-touch-min);
  color: inherit;
}
.sk-sheet-header > .sk-terminal-back svg {
  width: 1.35rem;
  height: 1.35rem;
}
.sk-sheet-header__title {
  display: grid;
  gap: var(--sk-space-1);
  min-width: 0;
}
.sk-sheet-header__title > .sk-terminal-eyebrow,
.sk-sheet-header__title > h2 {
  margin: 0;
  min-height: 0;
}
.sk-sheet-header__title > h2,
.sk-sheet-header__title > .sk-timebook-sheet-customer {
  overflow-wrap: anywhere;
}
.sk-sheet-header__title > .sk-timebook-sheet-customer {
  justify-self: start;
  margin: 0;
}
/* En berøring fokuserer ikke knapper i iPadOS Safari. Når arket så flytter
   fokus til tilbakeknappen, tegnes fokusringen (3 px, 2 px utenfor) som en
   ekstra sirkel rundt pila — «markeringen» oppe til venstre. På touch holdes
   fokusmarkeringen inne i knappens egen ramme. */
html[data-touch="1"] .sk-sheet-header > .sk-terminal-back:focus-visible {
  outline: none;
  border-color: var(--sk-color-primary);
  box-shadow: inset 0 0 0 2px var(--sk-color-focus-ring);
}

/* Én rytme mellom blokkene i arket. Gjelder ark med den nye topplinjen;
   ark som fortsatt har den gamle pila (feilrapporten) beholder sine mål. */
.sk-terminal-sheet-layer > .sk-timebook-sheet > .sk-sheet-header ~ * {
  margin-top: var(--sk-space-4);
}
.sk-terminal-sheet-layer > .sk-timebook-sheet > .sk-sheet-header ~ :is(
    .sk-timebook-sheet-card,
    .sk-timebook-visit-workflow,
    .sk-new-appointment-notifications,
    .sk-timebook-sheet-note.is-appointment-note,
    .sk-timebook-sheet-actions:last-of-type
  ) {
  margin-top: var(--sk-space-5);
}
/* En eyebrow lenger ned i arket («Produkter brukt») er en seksjonstittel og
   skal ikke skyves inn ved siden av en tilbakeknapp som ikke står der. */
.sk-terminal-sheet-layer > .sk-timebook-sheet > .sk-sheet-header ~ .sk-terminal-eyebrow {
  min-height: 0;
  margin-left: 0;
}
/* Dato og klokkeslett står i et eget rutenett; feltenes egen toppmarg kom i
   tillegg til arkets rytme og ga et dobbelt tomrom over «Dato». */
.sk-new-appointment-schedule > .sk-timebook-sheet-note {
  margin-top: 0;
}
/* Navn, status og behandling hører sammen med overskriften. */
.sk-terminal-sheet-layer > .sk-timebook-sheet > .sk-sheet-header + :is(.sk-timebook-sheet-identity, .sk-terminal-hint),
.sk-terminal-sheet-layer > .sk-timebook-sheet > .sk-sheet-header ~ .sk-timebook-sheet-identity + .sk-timebook-sheet-service {
  margin-top: var(--sk-space-2);
}

/* «Send bekreftelse og påminnelse»: en <legend> i en fieldset med
   display: grid får minste innholdsbredde i iPadOS Safari, og teksten
   brytes da til ett ord per linje. Fieldset er en vanlig blokk, og legenden
   flyter i full bredde over innholdet — en vanlig overskriftslinje. */
.sk-new-appointment-notifications {
  display: block;
  min-width: 0;
  min-inline-size: 0;
}
.sk-new-appointment-notifications > legend {
  float: left;
  width: 100%;
  margin: 0 0 var(--sk-space-2);
  padding: 0;
  white-space: normal;
  overflow-wrap: normal;
}
.sk-new-appointment-notifications > legend + * {
  clear: both;
}
.sk-new-appointment-notifications > p {
  margin: 0 0 var(--sk-space-3);
}
.sk-new-appointment-notifications > label + label {
  margin-top: var(--sk-space-2);
}
.sk-new-appointment-notifications > label > span {
  min-width: 0;
}

/* Stor tekst: kundenavnet og redigeringen får hver sin plass når raden er smal. */
.sk-new-appointment-customer-selected { flex-wrap: wrap; }
.sk-new-appointment-customer-selected > span {
  flex: 1 1 10rem;
  overflow-wrap: anywhere;
}
.sk-new-appointment-customer-selected > button {
  flex: 0 0 auto;
  max-width: 100%;
  min-height: var(--sk-terminal-touch-min);
}
.sk-new-appointment-customer-selected small { white-space: normal; }

/* Smart speil: kioskflate ved stolen. Invertert flate som kundeskjermen; kontrast følger tokens. */
.sk-mirror {
  box-sizing: border-box;
  min-height: 100dvh;
  padding: calc(var(--sk-safe-top, 0px) + 1.5rem) calc(var(--sk-safe-right, 0px) + 1.5rem) calc(var(--sk-safe-bottom, 0px) + 1.5rem) calc(var(--sk-safe-left, 0px) + 1.5rem);
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  background: var(--sk-color-ink);
  color: var(--sk-color-canvas);
  font-size: var(--sk-font-size-xl);
  line-height: 1.5;
}
.sk-mirror h1 { margin: 0; font-size: var(--sk-font-size-display); }
.sk-mirror h2 { margin: 0 0 .5rem; font-size: var(--sk-type-mirror-highlight); }
.sk-mirror h3 { margin: 0 0 .25rem; font-size: var(--sk-font-size-xl); }
.sk-mirror-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.sk-mirror-badge {
  margin: 0;
  padding: .5rem 1rem;
  border: 2px solid var(--sk-color-canvas);
  border-radius: 999px;
  font-weight: var(--sk-font-weight-strong);
}
.sk-mirror-badge.is-on { background: var(--sk-color-danger); border-color: var(--sk-color-danger); color: var(--sk-color-on-action); }
.sk-mirror-live:empty { display: none; }
.sk-mirror-live { padding: .75rem 1rem; border-left: 4px solid var(--sk-color-warning); background: rgb(255 255 255 / 8%); }
.sk-mirror-sign { padding: 1rem 1.25rem; border: 2px solid var(--sk-color-canvas); border-radius: .75rem; }
.sk-mirror-sign ul { margin: 0; padding-left: 1.25rem; }
.sk-mirror-actions { display: flex; flex-wrap: wrap; gap: 1rem; margin-block: .75rem; }
/* Trykkflater på minst 56 px (touch-laget bestemmer resten via data-touch). */
.sk-mirror-btn, .sk-mirror-swatch, .sk-mirror select {
  min-height: 3.5rem;
  min-width: 3.5rem;
  padding: .75rem 1.5rem;
  border: 2px solid var(--sk-color-canvas);
  border-radius: .75rem;
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-mirror-btn--quiet, .sk-mirror-swatch { background: transparent; color: var(--sk-color-canvas); }
.sk-mirror-swatch[aria-pressed="true"], .sk-mirror-swatch[aria-checked="true"] { background: var(--sk-color-canvas); color: var(--sk-color-ink); }
.sk-mirror-btn:disabled { opacity: .5; cursor: not-allowed; }
.sk-mirror :is(button, select, input, video):focus-visible { outline: 4px solid var(--sk-color-warning); outline-offset: 3px; }
.sk-mirror-swatches { display: flex; flex-wrap: wrap; gap: .75rem; margin-block: 1rem; }
.sk-mirror-chip { display: inline-block; width: 1.25rem; height: 1.25rem; margin-right: .5rem; border-radius: 50%; border: 1px solid var(--sk-color-canvas); vertical-align: middle; }
.sk-mirror-video { position: relative; max-width: 48rem; border-radius: 1rem; overflow: hidden; background: #000; }
.sk-mirror-video video { display: block; width: 100%; }
.sk-mirror-tint { position: absolute; inset: 0; opacity: .35; mix-blend-mode: color; pointer-events: none; }
.sk-mirror-form { display: flex; flex-wrap: wrap; gap: 1rem; align-items: end; }
.sk-mirror-form label { display: grid; gap: .25rem; }
.sk-mirror-list { list-style: none; margin: 1rem 0 0; padding: 0; display: grid; gap: 1rem; }
.sk-mirror-list li { padding: 1rem 1.25rem; border: 1px solid var(--sk-color-canvas); border-radius: .75rem; }
.sk-mirror-hint { opacity: .8; font-size: var(--sk-type-mirror-hint); }
.sk-mirror-check { display: flex; gap: .75rem; align-items: start; }
.sk-mirror-check input { width: 1.75rem; height: 1.75rem; flex: none; }
.sk-mirror-photo { border: 2px solid var(--sk-color-canvas); border-radius: .75rem; padding: 1rem; }
.sk-mirror-pay .sk-customer-qr { background: #fff; display: inline-block; padding: .5rem; border-radius: .5rem; }
.sk-mirror-amount { font-size: var(--sk-type-mirror-highlight); }
@media (prefers-reduced-motion: reduce) { .sk-mirror * { animation: none !important; transition: none !important; } }
@media (max-width: 40rem) { .sk-mirror { padding-inline: 1rem; font-size: var(--sk-type-mirror-compact); } }

.sk-mirror-stage { display: grid; gap: 1rem; min-width: 0; }
.sk-mirror-camera-off, .sk-mirror-suggest { display: grid; gap: .75rem; min-width: 0; padding: 1rem 1.25rem; border: 1px solid var(--sk-color-canvas); border-radius: .75rem; }
.sk-mirror-note { margin: 0; opacity: .85; }




.sk-primary-rail__main {
  max-height: calc(
    100dvh - var(--sk-topbar-height) - var(--sk-rail-button-height) -
      var(--sk-rail-padding-block) - var(--sk-rail-padding-block)
  );
  overflow-y: auto;
  scrollbar-width: none;
}
.sk-primary-rail__main::-webkit-scrollbar {
  display: none;
}
.sk-primary-rail button {
  position: relative;
}

.sk-restored-stack {
  display: grid;
  gap: var(--sk-space-5);
  min-width: 0;
}
.sk-restored-split {
  display: grid;
  grid-template-columns: minmax(15rem, 20rem) minmax(0, 1fr);
  gap: var(--sk-space-6);
  align-items: start;
}
.sk-restored-picker {
  padding: var(--sk-space-4);
  display: grid;
  gap: var(--sk-space-2);
  position: sticky;
  top: calc(var(--sk-topbar-height) + var(--sk-space-6));
}
.sk-restored-picker h2 {
  padding: var(--sk-space-2);
  font-size: var(--sk-type-section-title);
}
.sk-restored-picker > button,
.sk-chain-location {
  width: 100%;
  min-height: 4.5rem;
  padding: var(--sk-space-3);
  border: 0;
  border-radius: var(--sk-radius-md);
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-restored-picker > button:hover,
.sk-restored-picker > button.is-active,
.sk-chain-location:hover {
  background: var(--sk-color-surface-selected);
}
.sk-restored-picker > button > span,
.sk-chain-location > span {
  display: grid;
  flex: 1;
  min-width: 0;
}
.sk-restored-picker small,
.sk-chain-location small {
  color: var(--sk-color-ink-soft);
}
.sk-chain-location input {
  width: 1.2rem;
  height: 1.2rem;
  accent-color: var(--sk-color-primary);
}

.sk-restored-form-card {
  margin-bottom: var(--sk-space-6);
  padding: var(--sk-card-inset);
}
.sk-restored-form-card > header,
.sk-restored-form-heading,
.sk-restored-form > header,
.sk-restored-detail > header,
.sk-restored-panel > header,
.sk-restored-summary > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-restored-form-card h2,
.sk-restored-form-card p,
.sk-restored-panel h2,
.sk-restored-panel p,
.sk-restored-summary h2,
.sk-restored-summary p {
  margin: 0;
}
.sk-restored-form-card header p,
.sk-restored-panel header p,
.sk-restored-summary header p {
  margin-top: 0.3rem;
  color: var(--sk-color-ink-soft);
}
.sk-restored-form {
  display: grid;
  gap: var(--sk-space-5);
}
/* Review creation also runs inside a narrow existing team card. Native date
   and select controls must not set the minimum width of its grid tracks. */
.sk-review-create-form,
.sk-review-create-form :is(.sk-form-row, .sk-form-stack, .sk-field, details) {
  min-width: 0;
}
.sk-review-create-form :is(input, select, textarea) {
  min-width: 0;
  max-width: 100%;
}
.sk-review-create-form > header {
  flex-wrap: wrap;
}
.sk-review-create-form > header > div {
  flex: 1 1 10rem;
  min-width: 0;
}
.sk-restored-form-card > .sk-restored-form {
  margin-top: var(--sk-space-5);
}
.sk-restored-form footer,
.sk-restored-detail > footer {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
}
.sk-restored-form .sk-form-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-restored-form textarea {
  resize: vertical;
}
.sk-inline-error {
  margin: 0;
  padding: var(--sk-space-3) var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}

.sk-restored-detail {
  margin-top: var(--sk-space-6);
  padding: var(--sk-space-6);
  display: grid;
  gap: var(--sk-space-5);
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 1px var(--sk-color-primary-soft);
}
.sk-restored-notes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-restored-notes section {
  min-height: 8rem;
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-canvas);
}
.sk-restored-notes h3 {
  margin-bottom: var(--sk-space-2);
  font-size: var(--sk-type-card-title);
}
.sk-review-prep {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-review-prep__section {
  min-height: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}
.sk-review-prep__section h4 {
  margin: 0 0 var(--sk-space-2);
  font-size: var(--sk-font-size-md);
}
.sk-review-prep__section ul {
  margin: 0;
  padding-left: 1.25rem;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-review-integration-list {
  margin: 0 0 var(--sk-space-4);
  display: grid;
  gap: var(--sk-space-3);
}
.sk-review-integration-list > div {
  display: grid;
  grid-template-columns: minmax(7rem, auto) 1fr;
  gap: var(--sk-space-3);
}
.sk-review-integration-list dt {
  color: var(--sk-color-ink-soft);
}
.sk-review-integration-list dd {
  margin: 0;
  overflow-wrap: anywhere;
  font-weight: var(--sk-font-weight-strong);
}
.sk-inline-warning,
.sk-form-progress {
  margin: 0;
  padding: var(--sk-space-3) var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-warning-soft);
  color: var(--sk-color-ink);
}
.sk-form-progress {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-form-progress svg {
  width: 1rem;
  height: 1rem;
  animation: sk-spin 0.9s linear infinite;
}
.sk-restored-subsection {
  padding-top: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border-soft);
  display: grid;
  gap: var(--sk-space-4);
}
.sk-restored-subsection > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
}
.sk-restored-subsection h3,
.sk-restored-subsection p {
  margin: 0;
}
.sk-restored-subsection h3 {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-restored-subsection header p {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}
.sk-consumption-row {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  align-items: end;
}
.sk-check-row {
  min-height: var(--sk-control-height-lg);
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}
.sk-check-row input {
  width: 1.2rem;
  height: 1.2rem;
  accent-color: var(--sk-color-primary);
}
.sk-treatment-photos {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
  gap: var(--sk-space-3);
}
.sk-treatment-photos figure {
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}
.sk-treatment-photos img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  background: var(--sk-color-canvas);
}
.sk-treatment-photos figcaption {
  padding: var(--sk-space-2);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-2);
}
.sk-treatment-photos figcaption > span {
  font-weight: var(--sk-font-weight-strong);
}
.sk-line-clamp {
  display: -webkit-box;
  max-width: 34rem;
  overflow: hidden;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.sk-inline-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  align-items: center;
}
.sk-inline-actions .sk-button {
  padding-inline: var(--sk-space-3);
  font-size: var(--sk-font-size-sm);
}

.sk-restored-summary,
.sk-restored-panel {
  padding: var(--sk-space-5);
  display: grid;
  gap: var(--sk-space-5);
}
.sk-restored-panel > header h2 {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-restored-panel > header svg {
  color: var(--sk-color-primary);
}
.sk-restored-alert-list {
  margin: 0;
  padding: var(--sk-space-4) var(--sk-space-4) var(--sk-space-4) 2.5rem;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-warning-soft);
  color: var(--sk-color-warning);
}
.sk-restored-success {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  color: var(--sk-color-success);
  font-weight: var(--sk-font-weight-strong);
}
.sk-checklist {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-checklist label {
  min-height: 4.25rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-checklist input {
  width: 1.25rem;
  height: 1.25rem;
  accent-color: var(--sk-color-primary);
}
.sk-checklist label > span {
  display: grid;
}
.sk-checklist small {
  color: var(--sk-color-ink-soft);
}
.sk-restored-list {
  display: grid;
}
.sk-restored-list > article {
  min-height: 4.5rem;
  padding: var(--sk-space-3) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-restored-list > article:last-child {
  border-bottom: 0;
}
.sk-restored-list > article > svg {
  flex: 0 0 auto;
  color: var(--sk-color-ink-soft);
}
.sk-restored-list > article > span {
  display: grid;
  min-width: 0;
  flex: 1;
}
/* Statusmerket er også en <span>, men skal ha sin naturlige bredde — ikke
   strekkes som tekstkolonnen over. */
.sk-restored-list > article > span.sk-status-badge {
  display: inline-flex;
  flex: 0 0 auto;
}
.sk-restored-list small {
  color: var(--sk-color-ink-soft);
}

.sk-employee-document-preview {
  max-height: min(62vh, 720px);
  margin: 0;
  padding: 20px;
  overflow: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: 14px;
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink);
  font: inherit;
  line-height: 1.65;
}
.sk-forecast-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
  align-items: stretch;
  gap: var(--sk-space-4);
}
.sk-forecast-grid > article {
  min-height: 15rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-4);
  background: var(--sk-color-surface);
}
.sk-forecast-grid > article.is-missing-data {
  background: var(--sk-color-canvas);
}
.sk-forecast-grid article > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-forecast-grid dl {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-2);
}
.sk-forecast-grid dl > div {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-1);
}
.sk-forecast-grid dt {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-forecast-grid dd {
  margin: 0;
  font-size: var(--sk-font-size-lg);
  font-weight: var(--sk-font-weight-strong);
}
.sk-forecast-grid p {
  margin: auto 0 0;
  color: var(--sk-color-ink-soft);
}
.sk-expense-list {
  padding: var(--sk-space-4) var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}

.sk-leaderboard {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}
.sk-leaderboard li {
  min-height: 3.6rem;
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: grid;
  grid-template-columns: 2rem 1fr auto;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-leaderboard li > strong {
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-lg);
}
.sk-reward-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
  gap: var(--sk-space-3);
}
.sk-reward-grid article {
  min-height: 13rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  align-content: start;
  gap: var(--sk-space-2);
}
.sk-reward-grid h3,
.sk-reward-grid p {
  margin: 0;
}
.sk-reward-grid p {
  color: var(--sk-color-ink-soft);
}
.sk-reward-grid strong {
  margin-top: auto;
  color: var(--sk-color-primary);
}
.sk-reward-icon {
  font-size: var(--sk-font-size-display);
}

.sk-learning-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
  gap: var(--sk-space-4);
  align-items: stretch;
}
.sk-learning-card {
  min-height: 30rem;
  height: 100%;
  padding: var(--sk-card-inset);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--sk-space-3);
}
.sk-learning-card__body {
  display: grid !important;
  gap: var(--sk-space-2) !important;
  color: inherit !important;
  font-size: inherit !important;
}
.sk-learning-card__body h2,
.sk-learning-card__body p {
  margin: 0;
}
.sk-learning-card__body p {
  color: var(--sk-color-ink-soft);
}
.sk-learning-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-learning-card__meta strong {
  color: var(--sk-color-primary);
}
.sk-learning-card__actions {
  margin-top: auto;
  padding-top: var(--sk-space-2);
}
.sk-learning-card__icon {
  width: 3.25rem;
  height: 3.25rem;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-learning-tile {
  min-width: 0;
  padding: 0;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: block;
  overflow: hidden;
  background: var(--sk-color-surface);
}
.sk-learning-grid > .sk-learning-tile[open] { grid-column: 1 / -1; }
.sk-learning-tile > summary.sk-learning-summary {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 20px;
  cursor: pointer;
  list-style: none;
  min-height: 96px;
}
.sk-learning-summary::-webkit-details-marker { display: none; }
.sk-learning-summary::after { content: '+'; font-size:var(--sk-interface-type-22); flex: none; color: var(--sk-color-ink-soft); }
.sk-learning-tile[open] > .sk-learning-summary::after { content: '−'; }
.sk-learning-summary:focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: -3px; }
.sk-learning-summary__icon { width: 44px; height: 44px; flex: none; border-radius: 12px; background: var(--sk-color-primary-soft); color: var(--sk-color-primary); display: grid; place-items: center; }
.sk-learning-summary__copy { min-width: 0; flex: 1; display: grid; gap: 6px; }
.sk-learning-summary__copy strong { font-size:var(--sk-interface-type-20); line-height: 1.4; overflow-wrap: anywhere; }
.sk-learning-summary__copy small,.sk-learning-summary__state { color: var(--sk-color-ink-soft); font-size:var(--sk-interface-type-6); line-height: 1.4; }
.sk-learning-summary__state { flex: none; }
.sk-learning-content { padding: 0 24px 24px; border-top: 1px solid var(--sk-color-border-soft); }
.sk-learning-content > * { max-width: 760px; }
.sk-learning-content .sk-learning-description { margin: 20px 0 16px; color: var(--sk-color-ink-soft); line-height: 1.65; overflow-wrap: anywhere; }
.sk-learning-content > .sk-text-link { display: inline-flex; min-height: 44px; align-items: center; margin-bottom: 20px; font-weight:var(--sk-interface-type-2); }
.sk-training-quiz { min-width: 0; display: grid; gap: 24px; }
.sk-training-quiz fieldset { min-width: 0; margin: 0; padding: 16px; border: 1px solid var(--sk-color-border-soft); border-radius: 12px; display: grid; gap: 10px; }
.sk-training-quiz legend { max-width: 100%; padding-inline: 8px; font-weight: var(--sk-font-weight-strong); font-size:var(--sk-interface-type-20); line-height: 1.5; }
.sk-training-quiz label { min-height: 48px; padding: 12px 14px; border: 1px solid var(--sk-color-border-soft); border-radius: 10px; display: flex; align-items: flex-start; gap: 12px; cursor: pointer; line-height: 1.5; }
.sk-training-quiz label:has(input:checked) { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }
.sk-training-quiz label span { min-width: 0; overflow-wrap: anywhere; }
.sk-training-quiz input { width: 18px; height: 18px; flex: 0 0 18px; margin: 3px 0 0; accent-color: var(--sk-color-primary); }
.sk-training-quiz > .sk-button { justify-self: start; min-height: 44px; }
@media(max-width:720px) {
 .sk-learning-grid { grid-template-columns: minmax(0,1fr); }
 .sk-learning-tile > summary.sk-learning-summary { padding: 16px; gap: 12px; flex-wrap: wrap; }
 .sk-learning-summary__copy { flex: 1 1 calc(100% - 56px); }
 .sk-learning-summary__state { margin-left: 56px; }
 .sk-learning-summary::after { margin-left: auto; }
 .sk-learning-content { padding: 0 16px 20px; }
 .sk-training-quiz fieldset { padding: 12px; }
}

.sk-my-routine-hero {
  margin-bottom: var(--sk-space-6);
  padding: var(--sk-space-6);
  border-radius: var(--sk-radius-lg);
  background: linear-gradient(135deg, var(--sk-color-ink), #283231);
  color: white;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-my-routine-hero > div {
  display: grid;
  justify-items: center;
  gap: var(--sk-space-1);
}
.sk-my-routine-hero strong {
  font-size: var(--sk-font-size-2xl);
  line-height: 1;
}
.sk-my-routine-hero span,
.sk-my-routine-hero small {
  color: rgb(255 255 255 / 70%);
}

.sk-operations-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-operations-grid > button {
  min-height: 11rem;
  padding: var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--sk-space-4);
  text-align: left;
  cursor: pointer;
  transition:
    border-color var(--sk-motion-fast),
    transform var(--sk-motion-fast),
    box-shadow var(--sk-motion-fast);
}
.sk-operations-grid > button:hover {
  border-color: var(--sk-color-primary);
  box-shadow: var(--sk-shadow-card);
  transform: translateY(-2px);
}
.sk-operations-grid > button > span {
  width: 3.5rem;
  height: 3.5rem;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-operations-grid h2,
.sk-operations-grid p {
  margin: 0;
}
.sk-operations-grid p {
  margin: 0.4rem 0 0.8rem;
  color: var(--sk-color-ink-soft);
}
.sk-restored-status-strip {
  margin-bottom: var(--sk-space-6);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  display: grid;
  /* Klassen deles av seks sider med fra ett til fem statusfelt (utleggsskjemaet
     viser bare de satsene som finnes, lydpanelet og skiltoversikten viser
     fem). Et fast repeat(3, …) ga enten tomme kolonner i raden eller et
     ensomt felt i en ny rad. auto-flow holder alt i én rad uansett antall. */
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: var(--sk-space-3);
}
.sk-restored-status-strip > span {
  padding: var(--sk-space-3);
  display: grid;
  gap: 0.2rem;
}
.sk-restored-status-strip small {
  color: var(--sk-color-ink-soft);
}
.sk-restored-status-strip strong {
  font-size: var(--sk-font-size-lg);
}
.sk-operations-registers {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-dashboard-shortcuts {
  display: grid;
  align-content: start;
}
.sk-dashboard-shortcuts > button {
  min-height: 4.5rem;
  padding: var(--sk-space-3);
  border: 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-sm);
  background: transparent;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-dashboard-shortcuts > button:hover {
  background: var(--sk-color-surface-hover);
}
.sk-dashboard-shortcuts > button > svg {
  color: var(--sk-color-primary);
}
.sk-dashboard-shortcuts > button > span {
  display: grid;
}
.sk-dashboard-shortcuts small {
  color: var(--sk-color-ink-soft);
}

.sk-assistant-workspace {
  min-height: 0;
  display: block;
  overflow: hidden;
}
.sk-assistant-messages {
  padding: var(--sk-space-6);
  overflow-y: auto;
  display: grid;
  align-content: start;
  gap: var(--sk-space-4);
}
.sk-assistant-messages article {
  max-width: 46rem;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--sk-space-3);
}
.sk-assistant-messages article.is-user {
  justify-self: end;
  grid-template-columns: auto minmax(0, 1fr);
}
.sk-assistant-messages article > span {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-assistant-messages article > div {
  padding: var(--sk-space-3) var(--sk-space-4);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-canvas);
}
.sk-assistant-messages article.is-user > div {
  background: var(--sk-color-primary);
  color: white;
}
.sk-assistant-messages p {
  margin: 0;
  white-space: pre-wrap;
}
.sk-assistant-confirm {
  margin-top: var(--sk-space-3);
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  display: grid;
  gap: 0.3rem;
}
.sk-assistant-confirm small {
  color: var(--sk-color-ink-soft);
}
.sk-assistant-customer-results {
  margin-top: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border);
}
.sk-assistant-customer-result {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--sk-space-3);
  align-items: center;
  padding: var(--sk-space-3) 0;
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-assistant-customer-link {
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--sk-color-ink);
  display: grid;
  gap: 0.15rem;
  text-align: left;
  cursor: pointer;
}
.sk-assistant-customer-link:hover strong,
.sk-assistant-customer-link:focus-visible strong {
  color: var(--sk-color-primary);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}
.sk-assistant-customer-link span {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-assistant-result-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}
.sk-assistant-result-empty {
  margin-top: var(--sk-space-3);
  padding-top: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border);
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  align-items: center;
  justify-content: space-between;
}
.sk-assistant-composer {
  padding: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--sk-space-3);
  align-items: end;
}
.sk-assistant-composer label {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-assistant-composer textarea {
  width: 100%;
  resize: none;
}

@media (max-width: 44rem) {
  .sk-assistant-customer-result {
    grid-template-columns: 1fr;
  }
}

.sk-template-strip {
  margin: var(--sk-space-5) 0;
  display: flex;
  gap: var(--sk-space-2);
  overflow-x: auto;
  padding-bottom: var(--sk-space-2);
}
.sk-template-strip button {
  min-width: 8rem;
  min-height: 5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  justify-items: start;
  gap: var(--sk-space-2);
  cursor: pointer;
}
.sk-template-strip button.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-template-gallery {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-template-gallery h3,
.sk-template-gallery p {
  margin: 0;
}
.sk-template-gallery p {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}
.sk-template-gallery > div {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
  gap: var(--sk-space-2);
}
.sk-template-gallery button {
  min-height: 5.5rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
}
.sk-template-gallery button:hover {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-surface-hover);
}
.sk-template-gallery button.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  box-shadow: 0 0 0 1px var(--sk-color-primary);
}
.sk-template-gallery button > svg {
  width: 1.25rem;
  color: var(--sk-color-primary);
}
.sk-template-gallery button > span {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-1);
}
.sk-template-gallery button small {
  color: var(--sk-color-ink-soft);
  line-height: var(--sk-line-copy);
}

.sk-marketing-composer-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(22rem, 0.85fr);
  gap: var(--sk-space-6);
  align-items: start;
}
.sk-marketing-editor-column,
.sk-marketing-inspector,
.sk-marketing-inspector-fields {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-5);
}
.sk-rich-composer {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-rich-composer__heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-rich-composer__heading .sk-button {
  min-height: 2.5rem;
  padding-inline: var(--sk-space-3);
  font-size: var(--sk-font-size-sm);
}
.sk-rich-composer__toolbar {
  padding: var(--sk-space-2);
  border: 1px solid var(--sk-color-border-interactive);
  border-bottom: 0;
  border-radius: var(--sk-radius-sm) var(--sk-radius-sm) 0 0;
  background: var(--sk-color-canvas);
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-1);
}
.sk-rich-composer__toolbar button {
  min-width: 2.25rem;
  min-height: 2.25rem;
  padding: 0 var(--sk-space-2);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-1);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-rich-composer__toolbar button:hover:not(:disabled) {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-rich-composer__toolbar button:disabled {
  border-color: var(--sk-color-disabled-border);
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}
.sk-rich-composer__toolbar button svg {
  width: 1rem;
  height: 1rem;
}
.sk-rich-composer__editable {
  min-height: 18rem;
  max-height: 38rem;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: 0 0 var(--sk-radius-sm) var(--sk-radius-sm);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  overflow-y: auto;
  line-height: 1.65;
  outline: 0;
}
.sk-rich-composer__editable:focus {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--sk-color-primary) 18%, transparent);
}
.sk-rich-composer__editable.is-dragging {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  box-shadow: inset 0 0 0 1px var(--sk-color-primary);
}
.sk-rich-composer__editable img {
  max-width: 100%;
  height: auto;
}
.sk-rich-composer__hint {
  margin: var(--sk-space-1) 0 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-field-error {
  color: var(--sk-color-danger);
  font-size: var(--sk-font-size-sm);
}

.sk-marketing-preview {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-marketing-preview > h3 {
  margin: 0;
  font-size: var(--sk-type-card-title);
}
.sk-marketing-preview iframe {
  width: 100%;
  height: min(46rem, 72vh);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-canvas);
  box-shadow: var(--sk-shadow-card);
}
.sk-marketing-drawer-preview {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-marketing-drawer-preview .sk-marketing-preview iframe {
  height: 34rem;
}

.sk-marketing-inspector-card {
  padding: var(--sk-card-inset);
  display: grid;
  gap: var(--sk-space-4);
}
.sk-marketing-inspector-tabs {
  border-bottom: 1px solid var(--sk-color-border);
  display: flex;
}
.sk-marketing-inspector-tabs button {
  min-height: 2.75rem;
  padding: 0 var(--sk-space-3);
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-marketing-inspector-tabs button.is-active {
  border-bottom-color: var(--sk-color-primary);
  color: var(--sk-color-primary);
}
.sk-marketing-inspector-fields .sk-field > small {
  justify-self: end;
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-medium);
}
.sk-marketing-inspector-fields .sk-field > small.is-over {
  color: var(--sk-color-danger);
  font-weight: var(--sk-font-weight-strong);
}
.sk-cover-upload {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-cover-upload > img {
  display: block;
  width: min(100%, 32rem);
  max-height: 18rem;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  object-fit: cover;
}
.sk-article-title-cell {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-article-title-cell small {
  color: var(--sk-color-ink-soft);
}
.sk-filter-chips > button.is-active:not(.sk-button) {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary);
  color: white;
  font-weight: var(--sk-font-weight-strong);
}
.sk-content-calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(8rem, 1fr));
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  overflow: auto;
  background: var(--sk-color-border);
  gap: 1px;
}
.sk-content-calendar > article {
  min-height: 10rem;
  padding: var(--sk-space-2);
  background: var(--sk-color-surface);
  display: grid;
  align-content: start;
  gap: var(--sk-space-2);
}
.sk-content-calendar > article > header {
  color: var(--sk-color-ink-soft);
}
.sk-content-calendar > article > div {
  padding: var(--sk-space-2);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-primary-soft);
  display: grid;
  gap: 0.2rem;
}
.sk-content-calendar > article > div > span {
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}
.sk-upload-button {
  cursor: pointer;
}
.sk-upload-button input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

/* Shared routine instructions retain readable spacing when expanded. */
.sk-routine-instructions{display:grid;gap:12px}.sk-routine-item{padding:16px;border:1px solid var(--sk-color-border);border-radius:12px}.sk-routine-item>summary{cursor:pointer;min-height:44px;align-content:center}.sk-routine-item[open]>summary{margin-bottom:12px}

.sk-media-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
  gap: var(--sk-space-4);
}
.sk-media-grid > article {
  overflow: hidden;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
}
.sk-media-preview {
  aspect-ratio: 4 / 3;
  background: var(--sk-color-canvas);
  display: grid;
  place-items: center;
  overflow: hidden;
}
.sk-media-preview img,
.sk-media-preview video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.sk-media-grid > article > div:nth-child(2) {
  padding: var(--sk-space-4);
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.2rem var(--sk-space-2);
}
.sk-media-grid > article > div:nth-child(2) > span {
  grid-row: span 2;
  color: var(--sk-color-primary);
}
.sk-media-grid > article small {
  color: var(--sk-color-ink-soft);
}
.sk-media-grid footer {
  padding: 0 var(--sk-space-3) var(--sk-space-3);
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}

@media (max-width: 78rem) {
  .sk-restored-form .sk-form-row {
    grid-template-columns: 1fr 1fr;
  }
  .sk-marketing-composer-grid {
    grid-template-columns: 1fr;
  }
  .sk-marketing-preview iframe {
    height: 38rem;
  }
  .sk-content-calendar {
    grid-template-columns: repeat(7, minmax(7rem, 1fr));
  }
}
@media (max-width: 62rem) {
  .sk-restored-split {
    grid-template-columns: 1fr;
  }
  .sk-restored-picker {
    position: static;
    max-height: 20rem;
    overflow-y: auto;
  }
  .sk-operations-grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 44rem) {
  .sk-restored-list > article { flex-wrap: wrap; }
  .sk-restored-list > article > span:not(.sk-status-badge) { flex-basis: calc(100% - 3rem); }
  .sk-restored-list > article > .sk-button { flex: 1 1 9rem; }
  .sk-primary-rail__main {
    max-height: none;
    overflow-y: visible;
  }
  .sk-primary-rail__label {
    display: block;
    font-size: var(--sk-font-size-xs);
  }
  .sk-restored-form-card,
  .sk-restored-detail,
  .sk-restored-panel,
  .sk-restored-summary {
    padding: var(--sk-space-4);
  }
  .sk-restored-form .sk-form-row,
  .sk-restored-notes,
  .sk-my-routine-hero {
    grid-template-columns: 1fr;
  }
  /* sk-restored-status-strip fikk grid-auto-flow: column ovenfor (se
     kommentar der) for å følge det faktiske antallet statusfelt. Uten å
     sette flyten tilbake til rad her ville feltene fortsatt legge seg ved
     siden av hverandre i én smal kolonne i stedet for å stables under
     hverandre på smal skjerm. */
  .sk-restored-status-strip {
    grid-auto-flow: row;
    grid-template-columns: 1fr;
  }
  .sk-learning-tile {
    grid-template-columns: auto 1fr;
  }
  .sk-learning-tile > .sk-button,
  .sk-learning-tile > .sk-text-link,
  .sk-learning-tile > .sk-status-badge {
    grid-column: 1 / -1;
  }
  .sk-operations-grid > button {
    grid-template-columns: auto 1fr;
  }
  .sk-operations-grid > button > svg {
    display: none;
  }
  .sk-assistant-messages {
    padding: var(--sk-space-3);
  }
  .sk-assistant-composer {
    grid-template-columns: 1fr;
  }
  .sk-rich-composer__heading {
    align-items: flex-start;
    flex-direction: column;
  }
  .sk-rich-composer__editable {
    min-height: 15rem;
  }
  .sk-marketing-preview iframe {
    height: 32rem;
  }
  .sk-content-calendar {
    grid-template-columns: repeat(7, minmax(6rem, 1fr));
  }
}

/* Små delte hjelpeklasser som fortsatt brukes i ordre- og ventelisteflyt. */
.sk-stack { display: grid; gap: var(--sk-space-3); margin-bottom: var(--sk-space-4); }
.sk-linklike { background: none; border: 0; padding: 0; font: inherit; font-weight: var(--sk-font-weight-strong); color: var(--sk-color-primary); text-decoration: underline; cursor: pointer; }

/* Aktiv Nora-samtale: samme handling skal fungere fra bred resepsjonsskjerm
   og fra en telefon uten at direktetranskripsjonen skyver knappen ut. */
.sk-nora-live { margin-top: var(--sk-space-6); }
.sk-nora-live__header { display: flex; align-items: flex-start; gap: var(--sk-space-3); margin-bottom: var(--sk-space-3); }
.sk-nora-live__header h2 { margin: 0; font-size: var(--sk-type-section-title); }
.sk-nora-live__header p { margin: var(--sk-space-1) 0 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-nora-live__pulse { width: .65rem; height: .65rem; margin-top: .35rem; flex: 0 0 auto; border-radius: 50%; background: var(--sk-color-danger); box-shadow: 0 0 0 .25rem color-mix(in srgb, var(--sk-color-danger) 16%, transparent); }
.sk-nora-live__call { margin-bottom: var(--sk-space-3); padding: var(--sk-space-4); border: 1px solid color-mix(in srgb, var(--sk-color-danger) 32%, var(--sk-color-border)); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); }
.sk-nora-live__meta { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-4); }
.sk-nora-live__meta > div { min-width: 0; display: grid; gap: var(--sk-space-1); }
.sk-nora-live__meta strong { font-size: var(--sk-font-size-sm); overflow-wrap: anywhere; }
.sk-nora-live__meta span { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }
.sk-nora-live__transcript { display: grid; gap: var(--sk-space-2); margin-top: var(--sk-space-3); padding-top: var(--sk-space-3); border-top: 1px solid var(--sk-color-border-soft); }
.sk-nora-live__transcript p { margin: 0; font-size: var(--sk-font-size-sm); line-height: 1.5; }
.sk-nora-live__transcript p.is-nora { color: var(--sk-color-ink-soft); }
.sk-nora-live__transcript strong { color: var(--sk-color-ink); }
.sk-nora-live__waiting { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

@media (max-width: 44rem) {
  .sk-nora-live__meta { align-items: stretch; flex-direction: column; }
  .sk-nora-live__meta .sk-button { width: 100%; justify-content: center; min-height: 2.75rem; }
}

.sk-salon-pulse { display: grid; gap: var(--sk-space-6); }
.sk-pulse-toolbar { padding: var(--sk-space-5); display: grid; grid-template-columns: minmax(20rem, 1fr) repeat(3, minmax(10rem, 14rem)); gap: var(--sk-space-4); align-items: end; }
.sk-pulse-toolbar .sk-pill-tabs { margin: 0; align-self: center; }
.sk-pulse-headline { padding: var(--sk-space-4) var(--sk-space-5); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); display: grid; grid-template-columns: auto 1fr auto; gap: var(--sk-space-4); align-items: center; }
.sk-pulse-headline > span { width: .75rem; height: .75rem; border-radius: 50%; background: var(--sk-color-success); box-shadow: 0 0 0 .35rem var(--sk-color-success-soft); }
.sk-pulse-headline.is-partial > span { background: var(--sk-color-warning); box-shadow: 0 0 0 .35rem var(--sk-color-warning-soft); }
.sk-pulse-headline.is-empty > span, .sk-pulse-headline.is-unavailable > span { background: var(--sk-color-danger); box-shadow: 0 0 0 .35rem var(--sk-color-danger-soft); }
.sk-pulse-headline p { margin: .15rem 0 0; color: var(--sk-color-ink-soft); }
.sk-pulse-headline time { color: var(--sk-color-ink-faint); font-size: var(--sk-font-size-sm); }
.sk-pulse-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sk-space-4); }
.sk-pulse-metric { min-height: 14rem; padding: var(--sk-space-5); border-top: .25rem solid var(--sk-color-border-interactive); display: grid; align-content: start; gap: var(--sk-space-2); }
.sk-pulse-metric.is-positive { border-top-color: var(--sk-color-success); }
.sk-pulse-metric.is-warning { border-top-color: var(--sk-color-warning); }
.sk-pulse-metric.is-danger { border-top-color: var(--sk-color-danger); }
.sk-pulse-metric > div, .sk-pulse-metric footer { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-2); }
.sk-pulse-metric > div { color: var(--sk-color-ink-soft); font-weight: var(--sk-font-weight-strong); }
.sk-pulse-metric > div svg { width: 1.15rem; color: var(--sk-color-primary); }
.sk-pulse-metric > strong { font-size: var(--sk-font-size-2xl); line-height: 1.1; }
.sk-pulse-metric > small { color: var(--sk-color-ink-soft); }
.sk-pulse-metric > p { margin: var(--sk-space-2) 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-pulse-metric footer { margin-top: auto; padding-top: var(--sk-space-3); border-top: 1px solid var(--sk-color-border-soft); color: var(--sk-color-ink-faint); font-size: var(--sk-font-size-xs); }
.sk-pulse-primary-grid, .sk-pulse-secondary-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(20rem, .8fr); gap: var(--sk-space-6); align-items: stretch; }
.sk-pulse-chart-card, .sk-pulse-signals, .sk-pulse-table-card, .sk-pulse-inventory, .sk-pulse-snapshots { padding: var(--sk-space-6); min-width: 0; }
.sk-pulse-chart-card > header, .sk-pulse-signals > header, .sk-pulse-table-card > header, .sk-pulse-inventory > header, .sk-pulse-snapshots > header { margin-bottom: var(--sk-space-5); display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sk-space-4); }
.sk-pulse-chart-card h2, .sk-pulse-signals h2, .sk-pulse-table-card h2, .sk-pulse-inventory h2, .sk-pulse-snapshots h2 { margin: .2rem 0 0; }
.sk-pulse-chart-card > header > strong { font-size: var(--sk-font-size-xl); }
.sk-pulse-chart-wrap svg { width: 100%; height: auto; overflow: visible; }
.sk-pulse-chart-wrap line { stroke: var(--sk-color-border-soft); stroke-width: 1; }
.sk-pulse-chart-area { fill: url(#sk-pulse-area); }
.sk-pulse-chart-line { fill: none; stroke: var(--sk-color-primary); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.sk-pulse-chart-wrap circle { fill: var(--sk-color-surface); stroke: var(--sk-color-primary); stroke-width: 3; }
.sk-pulse-chart-labels { display: flex; justify-content: space-between; color: var(--sk-color-ink-faint); font-size: var(--sk-font-size-xs); }
.sk-pulse-signals { display: grid; align-content: start; gap: var(--sk-space-3); }
.sk-pulse-signals > header { margin-bottom: var(--sk-space-2); }
.sk-pulse-signals article { padding: var(--sk-space-4); border-left: .25rem solid var(--sk-color-primary); border-radius: var(--sk-radius-sm); background: var(--sk-color-primary-soft); }
.sk-pulse-signals article.is-warning { border-color: var(--sk-color-warning); background: var(--sk-color-warning-soft); }
.sk-pulse-signals article.is-critical { border-color: var(--sk-color-danger); background: var(--sk-color-danger-soft); }
.sk-pulse-signals article > div { display: flex; justify-content: space-between; gap: var(--sk-space-3); }
.sk-pulse-signals article p { margin: var(--sk-space-2) 0; }
.sk-pulse-signals article small { color: var(--sk-color-ink-soft); }
.sk-pulse-table-card td > small { display: block; margin-top: .15rem; color: var(--sk-color-ink-soft); }
.sk-pulse-inventory dl { display: grid; gap: var(--sk-space-3); }
.sk-pulse-inventory dl > div { padding: var(--sk-space-3) 0; border-bottom: 1px solid var(--sk-color-border-soft); display: flex; align-items: center; justify-content: space-between; }
.sk-pulse-inventory dt { color: var(--sk-color-ink-soft); }
.sk-pulse-inventory dd { margin: 0; font-size: var(--sk-font-size-xl); font-weight: var(--sk-font-weight-strong); }
.sk-pulse-snapshots ol { margin: 0; padding: 0; list-style: none; display: grid; }
.sk-pulse-snapshots li { padding: var(--sk-space-3) 0; border-bottom: 1px solid var(--sk-color-border-soft); display: flex; justify-content: space-between; gap: var(--sk-space-3); }
.sk-pulse-snapshots li > span { display: grid; }
.sk-pulse-snapshots li > span:last-child { text-align: right; }
.sk-pulse-snapshots li small { color: var(--sk-color-ink-soft); }
@media (max-width: 75rem) {
  .sk-pulse-toolbar { grid-template-columns: repeat(3, 1fr); }
  .sk-pulse-toolbar .sk-pill-tabs { grid-column: 1 / -1; }
  .sk-pulse-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-pulse-primary-grid, .sk-pulse-secondary-grid { grid-template-columns: 1fr; }
}
@media (max-width: 48rem) {
  .sk-pulse-toolbar, .sk-pulse-metrics { grid-template-columns: 1fr; }
  .sk-pulse-toolbar .sk-pill-tabs { overflow-x: auto; }
  .sk-pulse-headline { grid-template-columns: auto 1fr; }
  .sk-pulse-headline time { grid-column: 2; }
  .sk-pulse-chart-card, .sk-pulse-signals, .sk-pulse-table-card, .sk-pulse-inventory, .sk-pulse-snapshots { padding: var(--sk-space-4); }
}
@media (prefers-reduced-motion: reduce) {
  .sk-pulse-chart-line, .sk-pulse-chart-area { transition: none; }
}

.sk-rules-policy {
  display: grid;
  gap: var(--sk-space-6);
}
.sk-rules-toolbar {
  padding: var(--sk-space-5);
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--sk-space-6);
}
.sk-rules-toolbar > .sk-field {
  min-width: 18rem;
}
.sk-rules-boundary {
  max-width: 42rem;
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  color: var(--sk-color-ink-soft);
}
.sk-rules-boundary > svg {
  width: 2rem;
  height: 2rem;
  color: var(--sk-color-primary);
  flex: 0 0 auto;
}
.sk-rules-boundary div {
  display: grid;
  gap: 0.15rem;
}
.sk-rules-boundary strong {
  color: var(--sk-color-ink);
}
.sk-rules-boundary span {
  font-size: var(--sk-font-size-sm);
}
.sk-rules-notice {
  padding: var(--sk-space-4) var(--sk-space-5);
  border-radius: var(--sk-radius-md);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-rules-notice svg {
  width: 1.25rem;
  height: 1.25rem;
}
.sk-rules-notice.is-success {
  color: var(--sk-color-success);
  background: var(--sk-color-success-soft);
}
.sk-rules-notice.is-error {
  color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
}
.sk-rules-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-rule-kpi {
  padding: var(--sk-space-5);
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-rule-kpi > span {
  width: 2.8rem;
  height: 2.8rem;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}
.sk-rule-kpi svg {
  width: 1.35rem;
  height: 1.35rem;
}
.sk-rule-kpi > div {
  display: grid;
  gap: 0.1rem;
}
.sk-rule-kpi strong {
  font-size: var(--sk-font-size-xl);
  line-height: var(--sk-line-tight);
}
.sk-rule-kpi small {
  color: var(--sk-color-ink-soft);
}
.sk-rule-section {
  overflow: hidden;
}
.sk-rule-section__header {
  padding: var(--sk-space-6);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-rule-section__header h2 {
  margin: var(--sk-space-1) 0 0;
  font-size: var(--sk-type-section-title);
}
.sk-rule-section__header time {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-rule-section__intro {
  margin: 0;
  padding: 0 var(--sk-space-6) var(--sk-space-5);
  color: var(--sk-color-ink-soft);
}
.sk-rule-table-wrap {
  overflow-x: auto;
}
.sk-rule-table {
  width: 100%;
  border-collapse: collapse;
}
.sk-rule-table th,
.sk-rule-table td {
  padding: var(--sk-space-4) var(--sk-space-5);
  text-align: left;
  border-bottom: 1px solid var(--sk-color-border-soft);
  vertical-align: top;
}
.sk-rule-table th {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-type-table);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.sk-rule-table td:first-child {
  min-width: 22rem;
}
.sk-rule-table td strong,
.sk-rule-table td small {
  display: block;
}
.sk-rule-table td small {
  max-width: 46rem;
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
  line-height: var(--sk-line-copy);
}
.sk-rule-lab {
  display: grid;
  grid-template-columns: minmax(20rem, 0.9fr) minmax(24rem, 1.1fr);
}
.sk-rule-form-grid {
  padding: var(--sk-space-6);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-4);
  border-right: 1px solid var(--sk-color-border-soft);
}
.sk-rule-check {
  min-height: var(--sk-control-height);
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-sm);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  font-weight: var(--sk-font-weight-strong);
}
.sk-rule-check input {
  width: 1.1rem;
  height: 1.1rem;
  accent-color: var(--sk-color-primary);
}
.sk-rule-form-action {
  grid-column: 1 / -1;
  padding-top: var(--sk-space-2);
}
.sk-rule-results {
  min-height: 30rem;
  padding: var(--sk-space-6);
  background: var(--sk-color-surface-subtle);
}
.sk-rule-results > .sk-empty-state {
  min-height: 24rem;
}
.sk-rules-inline-error {
  margin-bottom: var(--sk-space-4);
  padding: var(--sk-space-3);
  color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
  border-radius: var(--sk-radius-sm);
}
.sk-policy-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-policy-summary > div {
  padding: var(--sk-space-4);
  background: var(--sk-color-surface);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  gap: var(--sk-space-2);
}
.sk-policy-summary small {
  color: var(--sk-color-ink-soft);
}
.sk-decision-list {
  margin-top: var(--sk-space-5);
  display: grid;
  gap: var(--sk-space-3);
}
.sk-decision-list article {
  padding: var(--sk-space-4);
  background: var(--sk-color-surface);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: minmax(11rem, 0.7fr) minmax(14rem, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-decision-list article div {
  display: grid;
  gap: 0.15rem;
}
.sk-decision-list article small,
.sk-decision-list article p {
  color: var(--sk-color-ink-soft);
}
.sk-decision-list article p {
  margin: 0;
  line-height: var(--sk-line-copy);
}
.sk-policy-authority {
  margin: var(--sk-space-5) 0 0;
  color: var(--sk-color-ink-soft);
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  font-size: var(--sk-font-size-sm);
}
.sk-policy-authority svg {
  width: 1rem;
  height: 1rem;
}
.sk-overrides-grid {
  display: grid;
  grid-template-columns: minmax(19rem, 0.72fr) minmax(24rem, 1.28fr);
}
.sk-override-form {
  padding: var(--sk-space-6);
  display: grid;
  align-content: start;
  gap: var(--sk-space-4);
  border-right: 1px solid var(--sk-color-border-soft);
}
.sk-override-form .sk-field--wide textarea {
  padding-top: var(--sk-space-3);
  min-height: 9rem;
  resize: vertical;
  font-family: var(--sk-font-mono);
  font-size: var(--sk-font-size-sm);
}
.sk-override-list {
  padding: var(--sk-space-5);
  background: var(--sk-color-surface-subtle);
  display: grid;
  align-content: start;
  gap: var(--sk-space-3);
}
.sk-override-list article {
  padding: var(--sk-space-4);
  background: var(--sk-color-surface);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
}
.sk-override-list__head,
.sk-override-list footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-override-list__head > div {
  display: grid;
  gap: 0.15rem;
}
.sk-override-list__head small,
.sk-override-list time {
  color: var(--sk-color-ink-soft);
}
.sk-override-list code {
  margin-top: var(--sk-space-3);
  padding: var(--sk-space-2) var(--sk-space-3);
  display: block;
  overflow-wrap: anywhere;
  color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  border-radius: var(--sk-radius-sm);
}
.sk-override-list p {
  margin: var(--sk-space-3) 0;
  color: var(--sk-color-ink-soft);
}
.sk-override-list footer .sk-button {
  min-height: 2.35rem;
  padding: 0 var(--sk-space-3);
}
.sk-flag-grid {
  padding: 0 var(--sk-space-6) var(--sk-space-6);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-flag-card {
  min-height: 6rem;
  padding: var(--sk-card-inset);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-card-radius);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
  cursor: pointer;
  transition:
    border-color var(--sk-motion-fast) var(--sk-ease-standard),
    background var(--sk-motion-fast) var(--sk-ease-standard);
}
.sk-flag-card.is-on {
  border-color: color-mix(in srgb, var(--sk-color-success) 38%, var(--sk-color-border));
  background: var(--sk-color-success-soft);
}
.sk-flag-card.is-locked {
  cursor: not-allowed;
  background: var(--sk-color-surface-hover);
}
.sk-flag-card > span:first-child {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-flag-card small {
  color: var(--sk-color-ink-soft);
  line-height: 1.35;
}
.sk-flag-control {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-flag-control svg {
  width: 1rem;
  height: 1rem;
  color: var(--sk-color-ink-soft);
}
.sk-flag-control input {
  width: 2.7rem;
  height: 1.45rem;
  accent-color: var(--sk-color-primary);
}

@media (max-width: 76rem) {
  .sk-rules-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-rule-lab,
  .sk-overrides-grid {
    grid-template-columns: 1fr;
  }
  .sk-rule-form-grid,
  .sk-override-form {
    border-right: 0;
    border-bottom: 1px solid var(--sk-color-border-soft);
  }
  .sk-flag-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 48rem) {
  .sk-rules-toolbar {
    align-items: stretch;
    flex-direction: column;
  }
  .sk-rules-toolbar > .sk-field {
    min-width: 0;
  }
  .sk-rules-kpis,
  .sk-rule-form-grid,
  .sk-policy-summary,
  .sk-flag-grid {
    grid-template-columns: 1fr;
  }
  .sk-rule-section__header {
    align-items: flex-start;
    flex-direction: column;
  }
  .sk-decision-list article {
    grid-template-columns: 1fr;
  }
  .sk-rule-table th,
  .sk-rule-table td {
    padding: var(--sk-space-3);
  }
}
@media (prefers-reduced-motion: reduce) {
  .sk-flag-card {
    transition: none;
  }
}

.sk-workplace-governance {
  display: grid;
  gap: var(--sk-space-6);
}
.sk-hms-page {
  min-width: 0;
  grid-template-columns: minmax(0, 1fr);
  display: grid;
  gap: var(--sk-space-5);
}

.sk-hms-practical {
  display: grid;
  gap: 1rem;
  min-width: 0;
}

.sk-hms-practical > .sk-card {
  padding: var(--sk-card-inset);
}

.sk-hms-practical .sk-field {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
}

.sk-hms-practical form,
.sk-hms-practical section {
  display: grid;
  gap: .75rem;
  min-width: 0;
  margin-block: 1rem;
}

.sk-hms-practical input:not([type="checkbox"]),
.sk-hms-practical select,
.sk-hms-practical textarea {
  width: 100%;
  min-width: 0;
  max-width: 100%;
}

.sk-hms-practical p,
.sk-hms-practical h4 {
  overflow-wrap: anywhere;
}
.sk-hms-overview {
  min-width: 0;
  grid-template-columns: minmax(0, 1fr);
  display: grid;
  gap: var(--sk-space-6);
}
.sk-hms-summary {
  padding: var(--sk-space-5) 0;
  border-top: 1px solid var(--sk-color-border);
  border-bottom: 1px solid var(--sk-color-border);
  display: grid;
  grid-template-columns: minmax(12rem, 1.2fr) minmax(0, 4fr);
  align-items: stretch;
  gap: var(--sk-space-5);
}
.sk-hms-summary__status {
  padding-right: var(--sk-space-5);
  border-right: 1px solid var(--sk-color-border-soft);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-hms-summary__status > span,
.sk-hms-summary dt {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-hms-summary dl {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-hms-summary dl > div {
  display: grid;
  align-content: start;
  gap: var(--sk-space-1);
}
.sk-hms-summary dd {
  margin: 0;
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-xl);
  font-weight: var(--sk-font-weight-strong);
}
.sk-hms-issues {
  min-width: 0;
  grid-template-columns: minmax(0, 1fr);
  display: grid;
  gap: var(--sk-space-4);
}
.sk-hms-issues > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-hms-issues h2,
.sk-hms-issues p {
  margin: 0;
}
.sk-hms-issues p {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}
/* BHT: én rad per juridisk arbeidsgiver — plikt, dekning og handling. */
.sk-hms-bht-entity {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-hms-bht-entity > div:not(.sk-hms-bht-entity__actions) {
  display: grid;
  gap: 0.15rem;
}
.sk-hms-bht-entity small {
  color: var(--sk-color-ink-soft);
}
.sk-hms-bht-entity.is-covered > svg {
  color: var(--sk-color-success);
}
.sk-hms-bht-entity.is-missing {
  background: var(--sk-color-danger-soft);
}
.sk-hms-bht-entity.is-missing > svg {
  color: var(--sk-color-danger);
}
.sk-hms-bht-entity__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
  justify-content: flex-end;
}
.sk-issue-list,
.sk-routine-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.sk-issue-list {
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-issue-list li {
  min-height: 3.5rem;
  padding: var(--sk-space-3) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-routine-list li + li {
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-routine-list details {
  padding: var(--sk-space-3) 0;
}
.sk-routine-list summary {
  cursor: pointer;
}
.sk-workplace-notice {
  padding: var(--sk-space-4) var(--sk-space-5);
  border-radius: var(--sk-radius-md);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-workplace-notice svg {
  width: 1.25rem;
  height: 1.25rem;
}
.sk-workplace-notice.is-success {
  color: var(--sk-color-success);
  background: var(--sk-color-success-soft);
}
.sk-workplace-notice.is-error,
.sk-workplace-inline-error {
  color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
}
.sk-workplace-readiness {
  border-top: 1px solid var(--sk-color-border);
  border-bottom: 1px solid var(--sk-color-border);
}
.sk-workplace-readiness > header {
  padding: var(--sk-space-4) 0;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-workplace-readiness h2,
.sk-workplace-readiness p {
  margin: 0;
}
.sk-workplace-readiness h2 {
  font-size: var(--sk-type-section-title);
}
.sk-workplace-readiness p {
  color: var(--sk-color-ink-soft);
}
.sk-workplace-source-list {
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-workplace-source {
  min-height: 4.25rem;
  padding: var(--sk-space-3) 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-workplace-source + .sk-workplace-source {
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-workplace-source > span {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: var(--sk-radius-sm);
  display: grid;
  place-items: center;
}
.sk-workplace-source > span svg {
  width: 1.25rem;
  height: 1.25rem;
}
.sk-workplace-source.is-live > span {
  color: var(--sk-color-success);
  background: var(--sk-color-success-soft);
}
.sk-workplace-source.is-limited > span {
  color: var(--sk-color-warning);
  background: var(--sk-color-warning-soft);
}
.sk-workplace-source.is-operations > span {
  color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-workplace-source > div {
  min-width: 0;
  display: grid;
  gap: 0.15rem;
}
.sk-workplace-source > div small {
  color: var(--sk-color-ink-soft);
}
.sk-workplace-source > .sk-workplace-source__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-workplace-count {
  min-width: 2rem;
  text-align: right;
  font-size: var(--sk-font-size-lg);
}
.sk-workplace-analysis > header,
.sk-workplace-proposals > header {
  padding: var(--sk-space-6);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-workplace-analysis > header h2,
.sk-workplace-proposals > header h2 {
  margin: var(--sk-space-1) 0 0;
  font-size: var(--sk-type-section-title);
}
.sk-workplace-analysis > header p {
  max-width: 58rem;
  margin: var(--sk-space-2) 0 0;
  color: var(--sk-color-ink-soft);
}
.sk-workplace-analysis > header > svg {
  width: 2rem;
  height: 2rem;
  color: var(--sk-color-primary);
}
.sk-workplace-analysis__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sk-workplace-analysis__grid > section {
  padding: var(--sk-space-6);
  display: grid;
  align-content: start;
  gap: var(--sk-space-4);
}
.sk-workplace-analysis__grid > section + section {
  border-left: 1px solid var(--sk-color-border-soft);
}
/* Området som analyseres nå fremheves med aksent. Det andre kortet forblir
   helt vanlig og klikkbart – ingen grå/deaktivert stemning. `box-shadow` gir
   rammen uten å flytte innholdet, og radius holder markeringen inne i kortet. */
.sk-workplace-analysis__grid > section.is-active {
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  box-shadow: inset 0 0 0 2px var(--sk-color-primary);
}
.sk-workplace-analysis__title {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-workplace-analysis__title > svg {
  width: 2rem;
  height: 2rem;
  color: var(--sk-color-primary);
}
.sk-workplace-analysis__title > div {
  display: grid;
  gap: 0.15rem;
}
.sk-workplace-analysis__title small {
  color: var(--sk-color-ink-soft);
}
.sk-workplace-analysis textarea {
  padding-top: var(--sk-space-3);
  resize: vertical;
  line-height: var(--sk-line-copy);
}
.sk-workplace-inline-error {
  margin: var(--sk-space-5);
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
}
.sk-workplace-proposals > .sk-empty-state {
  min-height: 18rem;
}
.sk-proposal-list {
  padding: var(--sk-space-5);
  background: var(--sk-color-surface-subtle);
  display: grid;
  gap: var(--sk-space-4);
}
.sk-proposal-card {
  padding: var(--sk-card-inset);
  background: var(--sk-color-surface);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-card-radius);
}
.sk-proposal-card > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-proposal-card > header > div {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-proposal-card > header p {
  max-width: 70rem;
  margin: 0;
  line-height: var(--sk-line-copy);
}
.sk-proposal-card time {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-proposal-metrics {
  margin-top: var(--sk-space-5);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sk-space-3);
}
.sk-proposal-metrics span {
  padding: var(--sk-space-3);
  background: var(--sk-color-surface-hover);
  border-radius: var(--sk-radius-sm);
  display: grid;
  gap: var(--sk-space-1);
}
.sk-proposal-metrics small {
  color: var(--sk-color-ink-soft);
}
.sk-proposal-metrics strong {
  font-size: var(--sk-font-size-lg);
}
.sk-proposal-findings {
  margin-top: var(--sk-space-5);
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-proposal-findings > summary {
  padding: var(--sk-space-3) 0;
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-proposal-findings ul {
  margin: 0 0 var(--sk-space-4);
  padding-left: var(--sk-space-5);
}
.sk-proposal-findings li + li {
  margin-top: var(--sk-space-2);
}
.sk-proposal-risks {
  margin: 0 0 var(--sk-space-4);
  display: grid;
  gap: var(--sk-space-2);
}
.sk-proposal-risks > div {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-sm);
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: var(--sk-space-3);
}
.sk-proposal-risks > div.is-high,
.sk-proposal-risks > div.is-critical {
  border-color: color-mix(in srgb, var(--sk-color-danger) 35%, var(--sk-color-border));
}
.sk-proposal-risks > div span {
  display: grid;
  gap: 0.15rem;
}
.sk-proposal-risks small {
  color: var(--sk-color-ink-soft);
}
.sk-proposal-actions {
  margin-top: var(--sk-space-5);
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-proposal-actions > div {
  padding: var(--sk-space-4) 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-3);
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-proposal-actions > div > svg {
  width: 1.2rem;
  height: 1.2rem;
  color: var(--sk-color-primary);
}
.sk-proposal-actions > div > span {
  display: grid;
  gap: 0.15rem;
}
.sk-proposal-actions small {
  color: var(--sk-color-ink-soft);
}
.sk-proposal-actions > p {
  color: var(--sk-color-ink-soft);
}
.sk-proposal-history {
  border-top: 1px solid var(--sk-color-border);
}
.sk-proposal-history > summary {
  padding: var(--sk-space-4) 0;
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-proposal-history > div {
  display: grid;
  gap: var(--sk-space-4);
}

@media (max-width: 62rem) {
  .sk-hms-summary {
    grid-template-columns: 1fr;
  }
  .sk-hms-summary__status {
    padding: 0 0 var(--sk-space-4);
    border-right: 0;
    border-bottom: 1px solid var(--sk-color-border-soft);
  }
  .sk-workplace-analysis__grid {
    grid-template-columns: 1fr;
  }
  .sk-workplace-analysis__grid > section + section {
    border-left: 0;
    border-top: 1px solid var(--sk-color-border-soft);
  }
}
@media (max-width: 48rem) {
  .sk-hms-summary dl {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-hms-issues > header {
    flex-direction: column;
  }
  .sk-hms-bht-entity {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .sk-hms-bht-entity__actions {
    grid-column: 1 / -1;
    justify-content: flex-start;
  }
  .sk-proposal-metrics {
    grid-template-columns: 1fr;
  }
  .sk-workplace-readiness > header {
    align-items: flex-start;
    flex-direction: column;
    gap: var(--sk-space-1);
  }
  .sk-workplace-source {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .sk-workplace-source > .sk-workplace-source__actions {
    grid-column: 2;
    justify-content: flex-start;
  }
  .sk-workplace-analysis > header,
  .sk-workplace-proposals > header,
  .sk-proposal-card > header {
    flex-direction: column;
  }
  .sk-proposal-actions > div {
    grid-template-columns: auto 1fr;
  }
  .sk-proposal-actions > div > .sk-button,
  .sk-proposal-actions > div > .sk-status-badge {
    grid-column: 1 / -1;
  }
}

/* Årshjul-tabellen (HmsPage, «Oppgaver i årshjulet»).
   Fristen skal ikke brekke over to linjer, og prioritetsmerket og hjemmelen
   skal holdes tydelig fra hverandre — de rant sammen som «HøyInternkontroll-
   forskriften § 5» da kolonnene ble trange. */
.sk-hms-tasks-table td[data-label="Frist"] {
  white-space: nowrap;
}
.sk-hms-tasks-table td[data-label="Prioritet"] {
  white-space: nowrap;
}
.sk-hms-tasks-table td[data-label="Prioritet"] .sk-status-badge {
  white-space: nowrap;
}
.sk-hms-tasks-table td[data-label="Hjemmel"] {
  min-width: 10rem;
  padding-left: var(--sk-space-4);
}
.sk-hms-tasks-table td[data-label="Handling"] { min-width: 14rem; }

/* Detaljvisningen for en oppgave: nøkkel/verdi-par i to kolonner. */
.sk-hms-detail {
  margin: 0;
  display: grid;
  grid-template-columns: minmax(7rem, auto) minmax(0, 1fr);
  gap: var(--sk-space-2) var(--sk-space-4);
}
.sk-hms-detail > div {
  display: contents;
}
.sk-hms-detail dt {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-hms-detail dd {
  margin: 0;
  font-weight: var(--sk-font-weight-strong);
  overflow-wrap: anywhere;
}

@media (max-width: 760px) {
  .sk-hms-overview .sk-data-table {
    min-width: 0;
    width: 100%;
  }
}

.sk-onboarding-templates,
.sk-onboarding-templates form,
.sk-onboarding-templates fieldset {
  display: grid;
  gap: var(--sk-space-3, 12px);
  min-width: 0;
}
.sk-onboarding-templates {
  margin-block: var(--sk-space-4, 16px);
  overflow-wrap: anywhere;
}
.sk-onboarding-templates input:not([type="checkbox"]),
.sk-onboarding-templates select,
.sk-onboarding-templates textarea { width: 100%; min-width: 0; }
.sk-onboarding-templates fieldset { border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md, 8px); }
.sk-onboarding-templates .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); }
.sk-my-onboarding { min-width: 0; overflow-wrap: anywhere; }
.sk-my-onboarding section, .sk-my-onboarding details { margin-block: var(--sk-space-4); }
.sk-my-onboarding summary { cursor: pointer; }
.sk-my-onboarding progress { width: 100%; }
.sk-review-completion-detail, .sk-review-completion-detail > *,
.sk-review-completion-detail .sk-field { min-width: 0; overflow-wrap: anywhere; }
.sk-review-completion-detail input, .sk-review-completion-detail textarea,
.sk-review-completion-detail select { min-width: 0; width: 100%; }
.sk-review-completion-detail .sk-restored-notes > section { min-width: 0; }
.sk-review-completion-detail .sk-restored-notes .sk-button {
  max-width: 100%; white-space: normal; padding-block: var(--sk-space-2);
}
@media (max-width: 760px) {
  .sk-review-completion-detail .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); }
  .sk-review-completion-detail .sk-stat-grid { grid-template-columns: minmax(0, 1fr); }
}

.sk-attendance-history { margin-top: var(--sk-space-4); min-width: 0; overflow-wrap: anywhere; }
.sk-attendance-history summary { cursor: pointer; font-weight: var(--sk-font-weight-strong); }
.sk-attendance-history .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); }
.sk-attendance-history select { width: 100%; min-width: 0; }
.sk-attendance-history > button { margin-block: var(--sk-space-3); }

.sk-attendance-history input, .sk-attendance-history textarea { width: 100%; min-width: 0; }
.sk-attendance-history details { margin-block: var(--sk-space-3); }
.sk-attendance-history details > button { margin-block: var(--sk-space-3); }

.sk-attendance-correction .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); min-width: 0; margin-block: var(--sk-space-3); }
.sk-attendance-correction .sk-field label { width: auto; }
.sk-attendance-correction :is(input, select, textarea) { width: 100%; min-width: 0; }
.sk-attendance-correction textarea { min-height: 6rem; }

.sk-my-time { min-width: 0; overflow-wrap: anywhere; }
.sk-my-time > * { min-width: 0; max-width: 100%; }
.sk-my-time .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); max-width: 20rem; margin-block: var(--sk-space-3); }
.sk-my-time .sk-field label { width: auto; }
.sk-my-time input { min-width: 0; width: 100%; }
.sk-my-time li { margin-block: var(--sk-space-2); }

.sk-attendance-review-impact { min-width: 0; overflow-wrap: anywhere; margin-block: var(--sk-space-4); }

.sk-attendance-input-review .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); min-width: 0; margin-block: var(--sk-space-3); }
.sk-attendance-input-review textarea { width: 100%; min-width: 0; min-height: 6rem; }
.sk-attendance-review-ack { display: flex; align-items: flex-start; gap: var(--sk-space-2); margin-block: var(--sk-space-3); }
.sk-attendance-review-ack input { flex: none; width: auto; }
.sk-attendance-review-ack span { min-width: 0; overflow-wrap: anywhere; }
.sk-attendance-input-review > button { max-width: 100%; white-space: normal; }

.sk-notification-preferences { overflow-wrap: anywhere; }
.sk-notification-preferences fieldset { min-width: 0; }
.sk-notification-preferences .sk-checkbox { display: flex; align-items: baseline; gap: var(--sk-space-2); margin-block: var(--sk-space-2); }
.sk-notification-preferences input[type="checkbox"] { flex: 0 0 auto; width: auto; }
.sk-notification-preferences .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); max-width: 26rem; }
.sk-notification-preferences .sk-field label { width: auto; }
.sk-notification-preferences select, .sk-notification-preferences input[type="time"] { width: 100%; min-width: 0; }

.sk-clock-in-preview { overflow-wrap: anywhere; }
.sk-clock-in-preview .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); max-width: 26rem; margin-block: var(--sk-space-3); }
.sk-clock-in-preview .sk-field label { width: auto; }
.sk-clock-in-preview select { width: 100%; min-width: 0; }
.sk-clock-in-preview li { margin-block: var(--sk-space-4); }

.sk-staff-rule-drafts { overflow-wrap: anywhere; }
.sk-staff-rule-drafts .sk-field { display: grid; grid-template-columns: minmax(0, 1fr); max-width: 26rem; }
.sk-staff-rule-drafts .sk-field label { width: auto; }
.sk-staff-rule-drafts fieldset { min-width: 0; }
.sk-staff-rule-drafts .sk-checkbox { display: flex; align-items: baseline; gap: var(--sk-space-2); margin-block: var(--sk-space-2); }
.sk-staff-rule-drafts input[type="checkbox"] { width: auto; flex: 0 0 auto; }
.sk-staff-rule-drafts select, .sk-staff-rule-drafts textarea { width: 100%; min-width: 0; }

/* Long Norwegian setting labels and guidance must not compete with the control. */
.sk-business-settings-drawer .sk-field {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
}
.sk-business-settings-drawer .sk-field > :is(input, select, textarea) {
  width: 100%;
  min-width: 0;
}

.sk-insurance {
  display: grid;
  gap: var(--sk-space-6);
}
.sk-insurance-notice {
  padding: var(--sk-space-4) var(--sk-space-5);
  border-radius: var(--sk-radius-md);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-insurance-notice svg {
  width: 1.25rem;
  height: 1.25rem;
}
.sk-insurance-notice.is-success {
  color: var(--sk-color-success);
  background: var(--sk-color-success-soft);
}
.sk-insurance-notice.is-error {
  color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
}
.sk-insurance-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-insurance-kpi {
  padding: var(--sk-space-5);
  display: flex;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-insurance-kpi > span {
  width: 2.8rem;
  height: 2.8rem;
  border-radius: var(--sk-radius-md);
  color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  display: grid;
  place-items: center;
}
.sk-insurance-kpi.is-attention > span {
  color: var(--sk-color-warning);
  background: var(--sk-color-warning-soft);
}
.sk-insurance-kpi svg {
  width: 1.3rem;
  height: 1.3rem;
}
.sk-insurance-kpi > div {
  display: grid;
  gap: 0.1rem;
}
.sk-insurance-kpi strong {
  font-size: var(--sk-font-size-xl);
}
.sk-insurance-kpi small {
  color: var(--sk-color-ink-soft);
}
.sk-insurance-compliance {
  padding: var(--sk-space-5);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-4);
}
.sk-insurance-compliance > svg {
  width: 2rem;
  height: 2rem;
}
.sk-insurance-compliance.is-ready {
  color: var(--sk-color-success);
  background: var(--sk-color-success-soft);
}
.sk-insurance-compliance.is-missing {
  color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
}
.sk-insurance-compliance.is-unknown {
  color: var(--sk-color-warning);
  background: var(--sk-color-warning-soft);
}
.sk-insurance-compliance > div {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-insurance-compliance p {
  margin: 0;
}
.sk-insurance-compliance small {
  color: var(--sk-color-ink-soft);
}
.sk-policy-form,
.sk-insurance-section {
  overflow: hidden;
}
.sk-policy-form > header,
.sk-insurance-section > header {
  padding: var(--sk-space-6);
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-policy-form > header h2,
.sk-insurance-section > header h2 {
  margin: var(--sk-space-1) 0 0;
  font-size: var(--sk-type-section-title);
}
.sk-policy-form__grid {
  padding: var(--sk-space-6);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-4);
}
.sk-policy-notes {
  grid-column: 1 / -1;
}
.sk-policy-notes textarea {
  padding-top: var(--sk-space-3);
  resize: vertical;
}
.sk-coverage-grid {
  margin: 0;
  padding: 0 var(--sk-space-6) var(--sk-space-6);
  border: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sk-space-2);
}
.sk-coverage-grid legend {
  width: 100%;
  margin-bottom: var(--sk-space-3);
  font-weight: var(--sk-font-weight-strong);
}
.sk-coverage-grid label {
  min-height: 3.2rem;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-sm);
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-coverage-grid label.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-coverage-grid input {
  width: 1.1rem;
  height: 1.1rem;
  accent-color: var(--sk-color-primary);
}
.sk-policy-form > footer {
  padding: var(--sk-space-5) var(--sk-space-6);
  background: var(--sk-color-surface-subtle);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-4);
}
.sk-policy-form > footer p {
  margin: 0;
  color: var(--sk-color-ink-soft);
}
.sk-insurance-table-wrap {
  position: relative;
  overflow-x: auto;
  min-width: 0;
  max-width: 100%;
}
.sk-insurance-table-wrap table {
  width: 100%;
  border-collapse: collapse;
}
.sk-insurance-table-wrap th,
.sk-insurance-table-wrap td {
  padding: var(--sk-space-4);
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-insurance-table-wrap th {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-type-table);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.sk-insurance-table-wrap td strong,
.sk-insurance-table-wrap td small {
  display: block;
}
.sk-insurance-table-wrap td small {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}
.sk-insurance-table-wrap td:nth-child(5) {
  min-width: 20rem;
  max-width: 32rem;
  color: var(--sk-color-ink-soft);
}
.sk-insurance-table-wrap .sk-button {
  min-height: 2.3rem;
  padding: 0 var(--sk-space-3);
}
.sk-insurance-columns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sk-space-5);
}
.sk-insurance-panel {
  min-width: 0;
}
.sk-insurance-list,
.sk-provider-list {
  padding: var(--sk-space-4) var(--sk-space-5);
  display: grid;
  gap: var(--sk-space-2);
}
.sk-insurance-list article {
  padding: var(--sk-space-3) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
}
.sk-insurance-list article > div {
  display: grid;
  gap: 0.15rem;
}
.sk-insurance-list small,
.sk-insurance-list time,
.sk-insurance-list > p {
  color: var(--sk-color-ink-soft);
}
.sk-provider-list article {
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--sk-space-3);
}
.sk-provider-list article > div {
  display: grid;
  gap: 0.15rem;
}
.sk-provider-list article small,
.sk-provider-list article p {
  color: var(--sk-color-ink-soft);
}
.sk-provider-list article p {
  grid-column: 1 / -1;
  margin: 0;
  line-height: var(--sk-line-copy);
}

@media (max-width: 76rem) {
  .sk-insurance-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-policy-form__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sk-coverage-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 56rem) {
  .sk-insurance-table-wrap { overflow: visible; }
  .sk-insurance-table-wrap table { display: block; width: 100%; }
  .sk-insurance-table-wrap thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .sk-insurance-table-wrap tbody { display: grid; gap: var(--sk-space-3); padding: var(--sk-space-3); }
  .sk-insurance-table-wrap tbody tr { display: grid; min-width: 0; padding: var(--sk-space-3); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); }
  .sk-insurance-table-wrap tbody td,
  .sk-insurance-table-wrap tbody td:nth-child(5) { display: grid; grid-template-columns: minmax(5.5rem, 35%) minmax(0, 1fr); gap: var(--sk-space-2); min-width: 0; max-width: none; padding: var(--sk-space-2) 0; overflow-wrap: anywhere; }
  .sk-insurance-table-wrap tbody td::before { content: attr(data-label); grid-column: 1; grid-row: 1 / span 2; color: var(--sk-color-ink-soft); font-size: var(--sk-type-table); font-weight: var(--sk-font-weight-strong); }
  .sk-insurance-table-wrap tbody td > * { grid-column: 2; min-width: 0; }
  .sk-insurance-columns {
    grid-template-columns: 1fr;
  }
  .sk-insurance-compliance {
    grid-template-columns: auto 1fr;
  }
  .sk-insurance-compliance > .sk-status-badge {
    grid-column: 1 / -1;
  }
}
@media (max-width: 42rem) {
  .sk-insurance-kpis,
  .sk-policy-form__grid,
  .sk-coverage-grid {
    grid-template-columns: 1fr;
  }
  .sk-policy-form > header,
  .sk-insurance-section > header,
  .sk-policy-form > footer {
    align-items: stretch;
    flex-direction: column;
  }
}

.sk-copilot {
  position: fixed;
  z-index: var(--sk-z-copilot);
  right: var(--sk-space-6);
  bottom: var(--sk-space-6);
}

.sk-copilot__launcher {
  position: relative;
  min-height: 3.75rem;
  padding: var(--sk-space-2) var(--sk-space-5) var(--sk-space-2) var(--sk-space-2);
  border: 1px solid rgb(255 255 255 / 18%);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-ink);
  color: white;
  box-shadow: 0 10px 28px rgb(35 33 44 / 24%);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  cursor: pointer;
  transition:
    transform var(--sk-motion-fast),
    box-shadow var(--sk-motion-base),
    background var(--sk-motion-base);
}

.sk-copilot__badge {
  position: absolute;
  top: -.2rem;
  right: -.15rem;
  min-width: 1.35rem;
  height: 1.35rem;
  padding: 0 .3rem;
  border: 2px solid var(--sk-color-surface);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-danger);
  color: white;
  display: grid;
  place-items: center;
  font-size: var(--sk-font-size-xs);
  line-height: 1;
}

.sk-copilot__launcher:hover {
  background: color-mix(in srgb, var(--sk-color-ink) 90%, var(--sk-color-primary));
  box-shadow: 0 14px 34px rgb(35 33 44 / 30%);
  transform: translateY(-2px);
}

.sk-copilot__launcher:active {
  transform: translateY(0) scale(.98);
}

.sk-copilot__launcher > span:first-child,
.sk-copilot__mark {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: var(--sk-color-signal);
  color: var(--sk-color-ink);
  display: grid;
  place-items: center;
  flex: 0 0 auto;
}

.sk-copilot__launcher > span:nth-child(2) {
  display: grid;
  gap: .05rem;
  text-align: left;
}

.sk-copilot__backdrop {
  display: none;
}

.sk-copilot__launcher small,
.sk-copilot__header small {
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.2;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.sk-copilot__launcher strong {
  font-size: var(--sk-font-size-sm);
  line-height: 1.2;
}

.sk-copilot__panel {
  position: absolute;
  right: 0;
  bottom: calc(100% + var(--sk-space-3));
  width: min(31rem, calc(100vw - 2rem));
  height: min(46rem, calc(100dvh - var(--sk-topbar-height) - 6rem));
  min-height: 31rem;
  border: 1px solid var(--sk-color-border);
  border-radius: 1.25rem;
  background: var(--sk-color-surface);
  box-shadow: 0 24px 64px rgb(35 33 44 / 24%);
  overflow: hidden;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
}

.sk-copilot__header {
  min-height: 4.75rem;
  padding: var(--sk-space-3) var(--sk-space-3) var(--sk-space-3) var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--sk-space-3);
}

.sk-copilot__header > span:nth-child(2) {
  display: grid;
  gap: .15rem;
}

.sk-copilot__header small {
  color: var(--sk-color-primary);
}

.sk-copilot__header strong {
  font-size: var(--sk-font-size-lg);
  line-height: var(--sk-line-tight);
}

.sk-copilot__tabs {
  padding: var(--sk-space-2);
  border-bottom: 1px solid var(--sk-color-border);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sk-space-2);
}

.sk-copilot__tabs button {
  min-height: 2.65rem;
  padding: 0 var(--sk-space-3);
  border: 1px solid transparent;
  border-radius: var(--sk-radius-md);
  background: transparent;
  color: var(--sk-color-ink-soft);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sk-space-2);
  font: inherit;
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

.sk-copilot__tabs button:hover {
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-ink);
}

.sk-copilot__tabs button[aria-selected="true"] {
  border-color: color-mix(in srgb, var(--sk-color-primary) 28%, var(--sk-color-border));
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}

.sk-copilot__tabs svg {
  width: 1.1rem;
  height: 1.1rem;
}

.sk-copilot__tabs button > span {
  min-width: 1.25rem;
  height: 1.25rem;
  padding: 0 .3rem;
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
  display: grid;
  place-items: center;
  font-size: var(--sk-font-size-xs);
}

.sk-copilot__guide-view,
.sk-copilot__chat-view {
  min-height: 0;
}

.sk-copilot__guide-view {
  padding: var(--sk-space-4);
  background: var(--sk-color-canvas);
  overflow-y: auto;
  overscroll-behavior: contain;
  display: grid;
  align-content: start;
  gap: var(--sk-space-4);
}

.sk-copilot__guide-view > header {
  display: grid;
  gap: .25rem;
}

.sk-copilot__guide-view > header small {
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.sk-copilot__guide-view > header h2 {
  margin: 0;
  font-size: var(--sk-type-section-title);
  line-height: var(--sk-line-tight);
}

.sk-copilot__guide-view > header p {
  margin: var(--sk-space-1) 0 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: var(--sk-line-copy);
}

.sk-copilot__guide-list {
  display: grid;
  gap: var(--sk-space-3);
}

.sk-copilot__guide-notice {
  margin: 0;
  padding: var(--sk-space-3);
  border: 1px solid color-mix(in srgb, var(--sk-color-warning) 35%, var(--sk-color-border));
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-warning-soft);
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-xs);
  line-height: 1.45;
}

.sk-copilot__guide-list > button {
  width: 100%;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  box-shadow: var(--sk-shadow-card);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: var(--sk-space-3);
  text-align: left;
  cursor: pointer;
  transition:
    border-color var(--sk-motion-fast),
    box-shadow var(--sk-motion-base),
    transform var(--sk-motion-fast);
}

.sk-copilot__guide-list > button:hover {
  border-color: color-mix(in srgb, var(--sk-color-primary) 58%, var(--sk-color-border));
  box-shadow: 0 10px 28px rgb(35 33 44 / 12%);
  transform: translateY(-1px);
}

.sk-copilot__guide-list > button:focus-visible,
.sk-copilot__tabs button:focus-visible {
  outline: 3px solid var(--sk-color-focus-ring);
  outline-offset: 2px;
}

.sk-copilot__guide-icon {
  width: 2.4rem;
  height: 2.4rem;
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
}

.sk-copilot__guide-icon.is-complete {
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
}

.sk-copilot__guide-icon svg {
  width: 1.15rem;
  height: 1.15rem;
}

.sk-copilot__guide-copy {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-2);
}

.sk-copilot__guide-copy > strong {
  font-size: var(--sk-font-size-md);
  line-height: 1.3;
}

.sk-copilot__guide-copy > span:not(.sk-copilot__guide-outcome) {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: 1.45;
}

.sk-copilot__guide-copy > small {
  color: var(--sk-color-primary);
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}

.sk-copilot__guide-copy > small svg {
  width: .9rem;
  height: .9rem;
}

.sk-copilot__guide-outcome {
  padding-top: var(--sk-space-2);
  border-top: 1px solid var(--sk-color-border-soft);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  line-height: 1.45;
}

.sk-copilot__guide-outcome b {
  color: var(--sk-color-ink);
}

.sk-copilot__page-tips {
  padding: var(--sk-space-4);
  border: 1px solid color-mix(in srgb, var(--sk-color-warning) 28%, var(--sk-color-border));
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-warning-soft);
  display: grid;
  gap: var(--sk-space-3);
}

.sk-copilot__page-tips > div {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
}

.sk-copilot__page-tips svg {
  width: 1.1rem;
  height: 1.1rem;
  color: var(--sk-color-warning);
}

.sk-copilot__page-tips h3 {
  margin: 0;
  font-size: var(--sk-type-card-title);
}

.sk-copilot__page-tips ul {
  margin: 0;
  padding-left: 1.15rem;
  color: var(--sk-color-ink-soft);
  display: grid;
  gap: var(--sk-space-2);
  font-size: var(--sk-font-size-xs);
  line-height: 1.45;
}

.sk-copilot__chat-view {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
}

.sk-copilot__status {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}

.sk-copilot__status i {
  width: .5rem;
  height: .5rem;
  border-radius: 50%;
  background: var(--sk-color-success);
  box-shadow: 0 0 0 3px var(--sk-color-success-soft);
}

.sk-copilot__tips {
  padding: var(--sk-space-4);
  border-bottom: 1px solid var(--sk-color-border-soft);
  background: linear-gradient(135deg, var(--sk-color-primary-soft), color-mix(in srgb, var(--sk-color-signal-soft) 55%, white));
  display: grid;
  gap: var(--sk-space-3);
}

.sk-copilot__tips > div:first-child {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-2);
  color: var(--sk-color-primary);
}

.sk-copilot__tips > div:first-child > span {
  display: grid;
  gap: .15rem;
  color: var(--sk-color-ink);
}

.sk-copilot__tips small,
.sk-copilot__tips p {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  line-height: 1.4;
}

.sk-copilot__tips p {
  margin: 0;
}

.sk-copilot__quick-prompts {
  display: flex;
  gap: var(--sk-space-2);
  overflow-x: auto;
  padding: 2px 2px var(--sk-space-1);
  scrollbar-width: thin;
}

.sk-copilot__quick-prompts button {
  min-height: 2.25rem;
  padding: 0 var(--sk-space-3);
  border: 1px solid color-mix(in srgb, var(--sk-color-primary) 35%, var(--sk-color-border));
  border-radius: var(--sk-radius-pill);
  background: rgb(255 255 255 / 82%);
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  white-space: nowrap;
  cursor: pointer;
}

.sk-copilot__quick-prompts button:hover:not(:disabled) {
  border-color: var(--sk-color-primary);
  background: white;
}

.sk-copilot__quick-prompts button:disabled {
  opacity: .55;
  cursor: not-allowed;
}

.sk-copilot__messages {
  min-height: 0;
  padding: var(--sk-space-4);
  background: var(--sk-color-canvas);
  overflow-y: auto;
  overscroll-behavior: contain;
  display: grid;
  align-content: start;
  gap: var(--sk-space-4);
}

.sk-copilot__messages article {
  max-width: 92%;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: end;
  gap: var(--sk-space-2);
}

.sk-copilot__messages article.is-user {
  justify-self: end;
  grid-template-columns: minmax(0, 1fr) auto;
}

.sk-copilot__messages article.is-user > span {
  grid-column: 2;
  grid-row: 1;
}

.sk-copilot__messages article.is-user > div {
  grid-column: 1;
  grid-row: 1;
  background: var(--sk-color-primary);
  color: white;
}

.sk-copilot__messages article > span {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  display: grid;
  place-items: center;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}

.sk-copilot__messages article > div {
  padding: .7rem var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg) var(--sk-radius-lg) var(--sk-radius-lg) .3rem;
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
}

.sk-copilot__messages article.is-user > div {
  border-color: transparent;
  border-radius: var(--sk-radius-lg) var(--sk-radius-lg) .3rem var(--sk-radius-lg);
}

.sk-copilot__messages p {
  margin: 0;
  font-size: var(--sk-font-size-sm);
  line-height: var(--sk-line-copy);
  white-space: pre-wrap;
}

.sk-copilot__confirmation {
  margin-top: var(--sk-space-3);
  padding-top: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border);
  display: grid;
  gap: var(--sk-space-2);
}

.sk-copilot__confirmation > small {
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: .06em;
  text-transform: uppercase;
}

.sk-copilot__confirmation > strong {
  font-size: var(--sk-font-size-sm);
  line-height: 1.4;
}

.sk-copilot__confirmation > div {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
}

.sk-copilot__confirmation .sk-button {
  min-height: 2.25rem;
  padding-inline: var(--sk-space-3);
  font-size: var(--sk-font-size-xs);
}

.sk-copilot__messages article.is-working > div {
  min-width: 3.75rem;
  display: flex;
  align-items: center;
  gap: .28rem;
}

.sk-copilot__messages article.is-working i {
  width: .38rem;
  height: .38rem;
  border-radius: 50%;
  background: var(--sk-color-ink-faint);
  animation: sk-copilot-pulse 1.1s ease-in-out infinite;
}

.sk-copilot__messages article.is-working i:nth-child(2) { animation-delay: 120ms; }
.sk-copilot__messages article.is-working i:nth-child(3) { animation-delay: 240ms; }

.sk-copilot__composer {
  padding: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border);
  background: var(--sk-color-surface);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-2);
}

.sk-copilot__composer label {
  min-width: 0;
}

.sk-copilot__composer textarea {
  width: 100%;
  min-height: 3rem;
  max-height: 7rem;
  padding: .75rem var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  line-height: 1.4;
  resize: vertical;
}

.sk-copilot__composer textarea:focus {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--sk-color-primary) 18%, transparent);
}

.sk-copilot__composer > .sk-icon-button {
  width: 3rem;
  height: 3rem;
  background: var(--sk-color-primary);
  color: white;
}

.sk-copilot__composer > .sk-icon-button:hover:not(:disabled) {
  background: var(--sk-color-primary-hover);
}

.sk-copilot__composer > .sk-icon-button:disabled {
  background: var(--sk-color-disabled-bg);
  color: var(--sk-color-disabled-text);
  cursor: not-allowed;
}

.sk-copilot__composer > small {
  grid-column: 1 / -1;
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
  text-align: center;
}

@media (max-width: 44rem) {
  .sk-copilot {
    right: var(--sk-space-3);
    bottom: 6.5rem;
  }

  .sk-copilot__launcher {
    min-height: 3.35rem;
    width: 3.5rem;
    padding: 0;
    justify-content: center;
  }

  .sk-copilot__launcher > span:first-child {
    width: 2.4rem;
    height: 2.4rem;
  }

  .sk-copilot__launcher > span:nth-child(2) { display: none; }

  .sk-copilot.is-open .sk-copilot__launcher {
    display: none;
  }

  .sk-copilot__backdrop {
    position: fixed;
    z-index: -1;
    inset: 0;
    display: block;
    background: var(--sk-color-overlay);
  }

  .sk-copilot__panel {
    position: fixed;
    inset: calc(var(--sk-topbar-height) + var(--sk-space-2)) var(--sk-space-2) 5.75rem;
    width: auto;
    height: auto;
    min-height: 0;
    border-radius: var(--sk-radius-lg);
  }

  .sk-copilot__header {
    min-height: 4.25rem;
    padding-left: var(--sk-space-3);
    grid-template-columns: auto minmax(0, 1fr) auto;
  }

  .sk-copilot__header .sk-copilot__status {
    display: none;
  }

  .sk-copilot__mark {
    width: 2.4rem;
    height: 2.4rem;
  }

  .sk-copilot__tips {
    padding: var(--sk-space-3);
  }

  .sk-copilot__messages {
    padding: var(--sk-space-3);
  }
}

@media (max-height: 42rem) and (min-width: 44.01rem) {
  .sk-copilot__panel {
    height: calc(100dvh - 6rem);
    min-height: 0;
  }

  .sk-copilot__tips p {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sk-copilot__launcher {
    transition: none;
  }

  .sk-copilot__messages article.is-working i {
    animation: none;
  }
}

/* Nora's live voice surface shares the login's restrained blue glass palette. */
:root[data-staff-interface] .nora-call-view{gap:var(--sk-space-3);background:radial-gradient(ellipse at 85% 10%,color-mix(in srgb,var(--sk-color-primary) 14%,transparent),transparent 70%),linear-gradient(155deg,color-mix(in srgb,var(--sk-color-primary) 5%,var(--sk-color-surface)),var(--sk-color-surface));}
:root[data-staff-interface] .nora-call-view .nora-voice-orb{margin-bottom:var(--sk-space-3);}
:root[data-staff-interface] .nora-call-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sk-space-2);width:100%;}
:root[data-staff-interface] .nora-call-caption{width:100%;max-height:10rem;overflow:auto;padding:var(--sk-space-3);border:1px solid var(--sk-color-border-soft);border-radius:var(--sk-radius-lg);background:color-mix(in srgb,var(--sk-color-surface) 80%,transparent);text-align:left;overflow-wrap:anywhere;}
:root[data-staff-interface] .nora-call-view[data-call-state="connected"] .nora-voice-orb{animation:nora-call-breathe 3.5s ease-in-out infinite;}
@keyframes nora-call-breathe{0%,100%{transform:scale(1);}50%{transform:scale(1.035);}}
@media(prefers-reduced-motion:reduce){:root[data-staff-interface] .nora-call-view .nora-voice-orb{animation:none;}}

/* The global assistant shares the canonical chat and retains it while closed. */
.sk-copilot__canonical-panel { display:flex; flex-direction:column; }
.sk-copilot__canonical-panel > header,
.sk-copilot__canonical-panel > .sk-copilot__tabs,
.sk-copilot__canonical-panel > .nora-mode-action { flex-shrink:0; }
.sk-copilot__canonical-panel > .sk-copilot__chat-view { display:flex; flex:1; min-height:0; flex-direction:column; overflow:auto; }
.sk-copilot__canonical-chat { min-height:0; min-width:0; padding:var(--sk-space-3); overflow:auto; }
.sk-copilot__canonical-chat .sk-assistant-chat { display:flex; min-width:0; flex-direction:column; }
.sk-copilot__canonical-chat .sk-assistant-chat .sk-assistant-messages { min-height:0; max-height:none; overflow:visible; flex-shrink:0; }
.sk-copilot__canonical-chat .sk-assistant-chat > * { flex-shrink:0; }
.sk-copilot__canonical-chat { overflow-wrap:anywhere; }
.sk-copilot__voice-transcript { max-height:12rem; overflow:auto; padding:var(--sk-space-3); }
.sk-copilot__canonical-chat .sk-assistant-composer { min-width:0; }

.sk-restoration-layout { display: grid; grid-template-columns: minmax(13rem, 17rem) minmax(0, 1fr); gap: var(--sk-space-5); align-items: start; }
.sk-restoration-sidebar { position: sticky; top: var(--sk-space-4); }
.sk-restoration-sidebar h2 { margin: 0 0 var(--sk-space-3); font-size: var(--sk-type-section-title); }
.sk-restoration-main { display: grid; gap: var(--sk-space-5); min-width: 0; }
.sk-selection-list { display: grid; gap: var(--sk-space-1); }
.sk-selection-list button { display: grid; gap: .2rem; width: 100%; padding: var(--sk-space-3); border: 1px solid transparent; border-radius: var(--sk-radius-sm); background: transparent; color: var(--sk-color-ink); text-align: left; cursor: pointer; }
.sk-selection-list button:hover { background: var(--sk-color-surface-subtle); }
.sk-selection-list button.is-active { border-color: var(--sk-color-primary); background: color-mix(in srgb, var(--sk-color-primary) 9%, var(--sk-color-surface)); }
.sk-selection-list span, .sk-muted { color: var(--sk-color-ink-soft); }
.sk-compact-field { min-width: 13rem; }
.sk-section-heading, .sk-builder-heading { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-4); margin-bottom: var(--sk-space-4); }
.sk-section-heading h2, .sk-builder-heading h3 { margin: .2rem 0 0; }
.sk-weekly-schedule { display: grid; }
.sk-day-row { display: grid; grid-template-columns: minmax(8rem, 10rem) 1fr; gap: var(--sk-space-4); padding: var(--sk-space-3) 0; border-top: 1px solid var(--sk-color-border); }
.sk-day-row > div:first-child { display: grid; align-content: start; gap: .2rem; }
.sk-day-row > div:first-child span { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-day-windows { display: grid; gap: var(--sk-space-2); }
.sk-time-window { display: flex; align-items: center; flex-wrap: wrap; gap: var(--sk-space-2); }
.sk-time-window input { min-height: var(--sk-control-height); padding: 0 var(--sk-space-3); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-sm); background: var(--sk-color-surface); color: var(--sk-color-ink); }
.sk-form-grid--availability { grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); align-items: end; }
.sk-form-grid--availability input, .sk-form-grid--availability select { min-width: 0; max-width: 100%; }
.sk-exception-list { display: grid; gap: var(--sk-space-2); margin-top: var(--sk-space-4); }
.sk-exception-list article { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-3); padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-sm); }
.sk-exception-list article > div { display: grid; gap: .25rem; }
.sk-exception-list article span { color: var(--sk-color-ink-soft); }
/* Stenging: opplysninger og handlinger må ikke presse hverandre til smale kolonner. */
.sk-exception-list.sk-closing-impact-list > article { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; }
.sk-exception-list.sk-closing-impact-list > article > .sk-inline-actions { display: flex; flex-wrap: wrap; gap: var(--sk-space-3); }

.sk-inline-alert { display: flex; align-items: flex-start; gap: var(--sk-space-3); margin-bottom: var(--sk-space-4); padding: var(--sk-space-5); border-left: .25rem solid var(--sk-color-warning); }
.sk-inline-alert.is-danger { border-left-color: var(--sk-color-danger); }
.sk-inline-alert h2, .sk-inline-alert p { margin: 0; }
.sk-inline-alert > div { flex: 1; min-width: 0; }
.sk-payroll-readiness { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--sk-space-3); align-items: start; margin: 0 0 var(--sk-space-5); padding: 0 0 var(--sk-space-4); border-bottom: 1px solid var(--sk-color-border); }
.sk-payroll-readiness > svg { width: 1.15rem; height: 1.15rem; margin-top: .1rem; color: var(--sk-color-warning); }
.sk-payroll-readiness > div { display: grid; gap: .25rem; }
.sk-payroll-readiness strong { color: var(--sk-color-ink); }
.sk-payroll-readiness p { max-width: 48rem; margin: 0; color: var(--sk-color-ink-soft); }
.sk-current-rate { display: grid; gap: .18rem; min-width: 8.5rem; }
.sk-current-rate strong { color: var(--sk-color-ink); white-space: nowrap; }
.sk-current-rate small { color: var(--sk-color-ink-soft); line-height: 1.3; }
.sk-template-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: var(--sk-space-4); }
.sk-template-card { display: grid; gap: var(--sk-space-4); align-content: start; }
.sk-template-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sk-space-3); }
.sk-template-card h2 { margin: .25rem 0 0; font-size: var(--sk-type-section-title); }
.sk-template-card dl { display: flex; gap: var(--sk-space-6); margin: 0; }
.sk-template-card dl div { display: grid; gap: .2rem; }
.sk-template-card dt { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-template-card dd { margin: 0; font-weight: var(--sk-font-weight-strong); }
.sk-template-card footer { display: flex; flex-wrap: wrap; gap: var(--sk-space-2); margin-top: auto; }
.sk-field-builder { display: grid; gap: var(--sk-space-3); }
.sk-field-builder article { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--sk-space-3); align-items: start; padding: var(--sk-space-4); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); background: var(--sk-color-surface-subtle); }
.sk-field-builder__order { display: grid; justify-items: center; gap: .25rem; }
.sk-field-builder__order > span { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--sk-color-primary); color: white; font-weight: var(--sk-font-weight-strong); }
.sk-field-builder__order button { display: grid; place-items: center; width: 2rem; height: 2rem; border: 0; background: transparent; color: var(--sk-color-ink-soft); cursor: pointer; }
.sk-field-builder__order button svg { width: 1rem; }
.sk-field-builder__inputs { display: grid; grid-template-columns: minmax(12rem, 2fr) minmax(9rem, 1fr); gap: var(--sk-space-3); }
.sk-field-builder__inputs .sk-field--wide { grid-column: 1 / -1; }
.sk-checkbox-row { display: flex; align-items: center; gap: var(--sk-space-2); min-height: var(--sk-control-height); font-weight: var(--sk-font-weight-strong); }
.sk-checkbox-row input { width: 1.1rem; height: 1.1rem; }
.sk-answer-list, .sk-staff-fill { display: grid; gap: var(--sk-space-4); }
.sk-answer-list article { padding-bottom: var(--sk-space-3); border-bottom: 1px solid var(--sk-color-border); }
.sk-answer-list p { margin: .4rem 0 0; white-space: pre-wrap; }
.sk-public-link-card { display: grid; gap: var(--sk-space-3); margin: var(--sk-space-4) 0; background: var(--sk-color-surface-subtle); }
.sk-public-link-card code { overflow-wrap: anywhere; }
.sk-public-link-card div { display: flex; flex-wrap: wrap; gap: var(--sk-space-2); }
.sk-payment-methods { margin-top: var(--sk-space-5); }
.sk-x-report-panel { display: grid; gap: var(--sk-space-4); margin: var(--sk-space-5) 0; }
.sk-x-report-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sk-space-3); }
.sk-x-report-panel > header h2, .sk-x-report-panel > header p { margin: .2rem 0 0; }
.sk-x-report-methods { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: var(--sk-space-2); }
.sk-x-report-methods > span { display: grid; gap: .2rem; padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-sm); }
.sk-x-report-methods small { color: var(--sk-color-ink-soft); }
.sk-payment-methods > header, .sk-station-section .sk-section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sk-space-4); }
.sk-payment-methods > header h2, .sk-station-section h3 { display: flex; align-items: center; gap: var(--sk-space-2); margin: 0; }
.sk-payment-methods > header p { margin: .35rem 0 var(--sk-space-4); color: var(--sk-color-ink-soft); }
.sk-method-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: var(--sk-space-2); }
.sk-method-row { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-3); padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-sm); }
.sk-method-row > span { display: grid; gap: .2rem; }
.sk-method-row small { color: var(--sk-color-ink-soft); }
.sk-method-row select { min-height: var(--sk-control-height); padding: 0 var(--sk-space-3); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-sm); background: var(--sk-color-surface); color: var(--sk-color-ink); }
.sk-station-section { display: grid; gap: var(--sk-space-3); margin-bottom: var(--sk-space-4); }
.sk-support-code { display: grid; justify-items: start; gap: var(--sk-space-2); padding: var(--sk-space-4); border: 1px solid var(--sk-color-primary); border-radius: var(--sk-radius-md); background: color-mix(in srgb, var(--sk-color-primary) 7%, var(--sk-color-surface)); }
.sk-support-code > strong { font-size: var(--sk-font-size-2xl); letter-spacing: .14em; font-variant-numeric: tabular-nums; }
.sk-support-code > span, .sk-support-code > small { color: var(--sk-color-ink-soft); }
.sk-support-sessions { display: grid; gap: var(--sk-space-2); }
.sk-support-sessions article { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-3); padding: var(--sk-space-3); border-top: 1px solid var(--sk-color-border); }
.sk-support-sessions article > div { display: grid; gap: .2rem; }
.sk-support-sessions span, .sk-support-sessions small { color: var(--sk-color-ink-soft); }
.sk-member-summary { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sk-space-4); margin-bottom: var(--sk-space-4); }
.sk-member-summary .sk-card { display: grid; gap: .3rem; }
.sk-member-summary .sk-card strong { font-size: var(--sk-font-size-2xl); }
.sk-table-subline { display: block; margin-top: .2rem; color: var(--sk-color-ink-soft); }
.sk-chain-comparison { min-height: 0; }
.sk-chain-salon-cell { display: grid; }
.sk-variance-panel { margin-top: var(--sk-space-5); }
.sk-variance-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sk-space-4); }
.sk-variance-panel > header h2, .sk-variance-panel > header p { margin: 0; }
.sk-variance-panel > header p { margin-top: .35rem; color: var(--sk-color-ink-soft); }
.sk-variance-list { display: grid; gap: var(--sk-space-2); margin-top: var(--sk-space-4); }
.sk-variance-list > article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--sk-space-3); padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-sm); }
.sk-variance-list > article > div { display: grid; gap: .2rem; }
.sk-variance-list > article span { color: var(--sk-color-ink-soft); }
.sk-variance-list details { grid-column: 1 / -1; }
.sk-variance-list details p { display: flex; justify-content: space-between; margin: .5rem 0 0; }
.sk-training-question-list { display: grid; gap: var(--sk-space-3); }
.sk-training-question-list .sk-card { display: grid; gap: var(--sk-space-3); background: var(--sk-color-surface-subtle); }
.sk-training-options { display: grid; gap: var(--sk-space-2); }
.sk-training-options > div { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: end; gap: var(--sk-space-2); }
.sk-radio-row { display: flex; align-items: center; gap: .4rem; min-height: var(--sk-control-height); font-weight: var(--sk-font-weight-strong); }
.sk-content-calendar-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(18rem, 23rem); gap: var(--sk-space-4); align-items: start; }
.sk-content-calendar--month { min-width: 0; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.sk-calendar-weekdays { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); background: var(--sk-color-surface-subtle); }
.sk-calendar-weekdays span { padding: var(--sk-space-2); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); text-align: center; }
.sk-content-calendar > article.is-outside { background: var(--sk-color-surface-subtle); color: var(--sk-color-ink-soft); }
.sk-content-calendar > article.is-selected { box-shadow: inset 0 0 0 2px var(--sk-color-primary); }
.sk-content-calendar > article > header button { display: grid; place-items: center; min-width: 2rem; height: 2rem; border: 0; border-radius: 50%; background: transparent; color: inherit; cursor: pointer; }
.sk-content-calendar > article > header button:hover { background: var(--sk-color-primary-soft); color: var(--sk-color-primary); }
.sk-content-calendar .sk-calendar-entry { display: grid; gap: .2rem; width: 100%; padding: var(--sk-space-2); border: 1px solid transparent; border-radius: var(--sk-radius-sm); background: var(--sk-color-primary-soft); color: var(--sk-color-ink); text-align: left; cursor: pointer; }
.sk-content-calendar .sk-calendar-entry.is-editable { cursor: grab; }
.sk-content-calendar .sk-calendar-entry.is-locked { border-color: var(--sk-color-border); background: var(--sk-color-surface-subtle); }
.sk-content-calendar .sk-calendar-entry > span:first-child { color: var(--sk-color-primary); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }
.sk-content-calendar .sk-status-badge { width: fit-content; font-size: var(--sk-font-size-xs); }
.sk-selected-day-panel { position: sticky; top: var(--sk-space-4); }
.sk-selected-day-panel > h2 { margin: .25rem 0 var(--sk-space-4); text-transform: capitalize; }
.sk-selected-day-panel > div { display: grid; gap: var(--sk-space-3); }
.sk-selected-day-panel article { overflow: hidden; border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); }
.sk-selected-day-panel article > img { width: 100%; max-height: 10rem; object-fit: cover; }
.sk-selected-day-panel article > div { display: grid; gap: .3rem; padding: var(--sk-space-3); }
.sk-selected-day-panel article > div > span, .sk-selected-day-panel article small { color: var(--sk-color-ink-soft); }
.sk-selected-day-panel article footer { display: flex; align-items: center; flex-wrap: wrap; gap: var(--sk-space-2); padding: 0 var(--sk-space-2) var(--sk-space-2); }
.sk-locked-note { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-media-dropzone { display: flex; align-items: center; gap: var(--sk-space-4); min-height: 7rem; margin-bottom: var(--sk-space-4); padding: var(--sk-space-5); border: 2px dashed var(--sk-color-border-interactive); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface-subtle); }
.sk-media-dropzone.is-dragging { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }
.sk-media-dropzone > svg { width: 2rem; height: 2rem; color: var(--sk-color-primary); }
.sk-media-dropzone > div { display: grid; gap: .25rem; }
.sk-media-dropzone span { color: var(--sk-color-ink-soft); }
.sk-media-dropzone progress { margin-left: auto; }
.sk-media-grid > article > div:nth-child(2) { grid-template-columns: auto minmax(0, 1fr); }
.sk-media-inline-field { grid-column: 2; }
.sk-media-inline-field input { width: 100%; min-height: 2.25rem; padding: 0 var(--sk-space-2); border: 1px solid transparent; border-radius: var(--sk-radius-sm); background: transparent; color: var(--sk-color-ink); font: inherit; font-weight: var(--sk-font-weight-strong); }
.sk-media-inline-field input:hover, .sk-media-inline-field input:focus { border-color: var(--sk-color-border-interactive); background: var(--sk-color-surface); }
.sk-editor-local-tools { display: flex; align-items: center; justify-content: space-between; gap: var(--sk-space-3); padding: var(--sk-space-3); border: 1px solid color-mix(in srgb, var(--sk-color-primary) 35%, var(--sk-color-border)); border-radius: var(--sk-radius-md); background: color-mix(in srgb, var(--sk-color-primary) 6%, var(--sk-color-surface)); }
.sk-editor-local-tools p { margin: .25rem 0 0; color: var(--sk-color-ink-soft); }
.sk-ai-compose { display: grid; gap: var(--sk-space-4); }
.sk-ai-preview { display: grid; gap: var(--sk-space-3); background: var(--sk-color-surface-subtle); }
.sk-ai-preview h3 { margin: .25rem 0 0; }
.sk-ai-preview__frame { width: 100%; min-height: 18rem; border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-sm); background: var(--sk-color-surface); }
.sk-seo-preview { display: grid; gap: var(--sk-space-2); background: var(--sk-color-surface-subtle); }
.sk-seo-preview code { color: var(--sk-color-primary); }
.sk-seo-preview p, .sk-seo-preview small { margin: 0; color: var(--sk-color-ink-soft); }
.sk-rebooking-queue {
  display: grid;
  align-content: start;
  gap: var(--sk-space-4);
}
.sk-rebooking-list { display: grid; gap: var(--sk-space-2); max-height: 26rem; overflow-y: auto; overscroll-behavior: contain; }
.sk-rebooking-list article { display: grid; align-items: start; gap: var(--sk-space-2); padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-sm); }
.sk-rebooking-list .sk-inline-actions { gap: var(--sk-space-2); }
.sk-rebooking-list .sk-button { min-height: 2.25rem; padding-inline: var(--sk-space-2); }
.sk-rebooking-list article > div:first-child { display: grid; gap: .2rem; }
.sk-rebooking-list span, .sk-rebooking-list small { color: var(--sk-color-ink-soft); }

@media (max-width: 900px) {
  .sk-restoration-layout { grid-template-columns: 1fr; }
  .sk-restoration-sidebar { position: static; }
  .sk-selection-list { display: flex; overflow-x: auto; }
  .sk-selection-list button { min-width: 12rem; }
  .sk-form-grid--availability { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-content-calendar-layout { grid-template-columns: 1fr; overflow-x: auto; }
  .sk-content-calendar--month { min-width: 42rem; grid-template-columns: repeat(7, minmax(6rem, 1fr)); }
  .sk-selected-day-panel { position: static; }
}
@media (max-width: 640px) {
  .sk-chain-comparison .sk-data-table tbody tr { gap: var(--sk-space-1); }
  .sk-chain-comparison .sk-data-table tbody td {
    min-height: 2.5rem;
    height: auto;
    padding: var(--sk-space-1) var(--sk-space-2);
  }
  .sk-day-row { grid-template-columns: 1fr; }
  .sk-form-grid--availability, .sk-field-builder__inputs { grid-template-columns: 1fr; }
  .sk-member-summary { grid-template-columns: 1fr; }
  .sk-training-options > div { grid-template-columns: 1fr auto; }
  .sk-training-options > div > .sk-button { grid-column: 1 / -1; justify-self: start; }
  .sk-editor-local-tools, .sk-rebooking-list article { align-items: flex-start; flex-direction: column; }
  .sk-media-dropzone { align-items: flex-start; flex-direction: column; }
  .sk-media-dropzone progress { margin-left: 0; width: 100%; }
  .sk-field-builder article { grid-template-columns: auto minmax(0, 1fr); }
  .sk-field-builder article > .sk-button { grid-column: 2; justify-self: start; }
  .sk-section-heading, .sk-builder-heading { align-items: flex-start; flex-direction: column; }
}

.mr-platform-loader { --mr-loader-size:2rem; display:inline-grid; justify-items:center; gap:var(--sk-space-3); color:var(--sk-color-ink-soft); }
.mr-platform-loader.is-small { --mr-loader-size:1.5rem; }
.mr-platform-loader.is-large { --mr-loader-size:2.75rem; }
.sk-page-loading { display:grid; gap:var(--sk-space-4); }
.sk-page-loading > .mr-platform-loader { justify-self:center; }
.mr-platform-loader__arrows { width:var(--mr-loader-size); height:var(--mr-loader-size); animation:sk-spin var(--sk-motion-activity-drift) linear infinite; }
@media (prefers-reduced-motion:reduce) { .mr-platform-loader__arrows { animation:none; } }

.driver-overlay {
  z-index: var(--sk-z-tutorial) !important;
}

.driver-popover.sk-tutorial-popover {
  width: min(25rem, calc(100vw - 2rem));
  max-width: min(25rem, calc(100vw - 2rem));
  padding: var(--sk-space-5);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  box-shadow: 0 24px 64px rgb(35 33 44 / 28%);
  font-family: var(--sk-font);
}

.sk-tutorial-popover .driver-popover-title {
  padding-right: var(--sk-space-6);
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-lg);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.3;
}

.sk-tutorial-popover .driver-popover-description {
  margin-top: var(--sk-space-3);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: 1.55;
}

.sk-tutorial-popover .driver-popover-footer {
  margin-top: var(--sk-space-5);
  align-items: center;
  gap: var(--sk-space-3);
}

.sk-tutorial-popover .driver-popover-progress-text {
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}

.sk-tutorial-popover .driver-popover-navigation-btns {
  display: flex;
  gap: var(--sk-space-2);
}

.sk-tutorial-popover .driver-popover-prev-btn,
.sk-tutorial-popover .driver-popover-next-btn {
  min-height: 2.5rem;
  padding: 0 var(--sk-space-4);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  text-shadow: none;
  font: inherit;
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

.sk-tutorial-popover .driver-popover-next-btn {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary);
  color: white;
}

.sk-tutorial-popover .driver-popover-prev-btn:hover {
  background: var(--sk-color-surface-hover);
}

.sk-tutorial-popover .driver-popover-next-btn:hover {
  background: var(--sk-color-primary-hover);
}

.sk-tutorial-popover .driver-popover-prev-btn:focus-visible,
.sk-tutorial-popover .driver-popover-next-btn:focus-visible,
.sk-tutorial-popover .driver-popover-close-btn:focus-visible {
  outline: 3px solid var(--sk-color-focus-ring);
  outline-offset: 2px;
}

.sk-tutorial-popover .driver-popover-close-btn {
  top: var(--sk-space-3);
  right: var(--sk-space-3);
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  color: var(--sk-color-ink-soft);
  display: grid;
  place-items: center;
  font-size: var(--sk-font-size-2xl);
}

.sk-tutorial-popover .driver-popover-close-btn:hover {
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-ink);
}

.driver-active-element {
  border-radius: var(--sk-radius-md);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--sk-color-signal) 78%, white);
}

@media (max-width: 44rem) {
  .driver-popover.sk-tutorial-popover {
    width: calc(100vw - 1.5rem);
    max-width: calc(100vw - 1.5rem);
    padding: var(--sk-space-4);
  }

  .sk-tutorial-popover .driver-popover-footer {
    align-items: stretch;
    flex-direction: column;
  }

  .sk-tutorial-popover .driver-popover-navigation-btns {
    width: 100%;
  }

  .sk-tutorial-popover .driver-popover-prev-btn,
  .sk-tutorial-popover .driver-popover-next-btn {
    flex: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .driver-active-element,
  .driver-popover,
  .driver-overlay {
    transition: none !important;
  }
}

/* BEVEGELSESLAGET
 *
 * Alle @keyframes i Min Rutine bor her. Modulfilene sier fortsatt HVA som
 * beveger seg — `animation: sk-rise-in ...` står der elementet står — men HVORDAN
 * en bevegelse ser ut defineres på ett sted.
 *
 * Grunnen er konkret: før dette lå bevegelsene spredt over seks lag, og de fant
 * på hverandre igjen. `sk-terminal-fade` var tegn for tegn lik `sk-fade-in`.
 * `mr-platform-loader-spin` var lik `sk-spin`. Tre nesten like «stig opp» med
 * 0,75rem, 1rem og 1,2rem løftehøyde, valgt hver for seg — forskjellen var ikke
 * en beslutning, den var at ingen så de andre to.
 *
 * Regelen framover: trenger du en bevegelse, se om den finnes her først. Legger
 * du til en, legg den til her.
 *
 * Varighet og kurve hentes fra --sk-motion-* og --sk-ease-* i 00-tokens.css.
 * Ingen tall skrives rett inn i en animasjonskortform uten grunn.
 */

/* --- Inn på skjermen ---------------------------------------------------- */

/* Bare gjennomsiktighet. For noe som allerede står der det skal stå. */
@keyframes sk-fade-in {
  from {
    opacity: 0;
  }
}

/* Kanonisk «stig opp». Erstattet sk-wizard-in og brukes av nye flater. */
@keyframes sk-rise-in {
  from {
    opacity: 0;
    transform: translateY(0.75rem);
  }
}

/* Stig opp med et hint av zoom — for flater som legger seg OPPÅ noe annet:
   dialoger, terminalens kort. Erstattet sk-terminal-rise. */
@keyframes sk-modal-in {
  from {
    opacity: 0;
    transform: translateY(0.75rem) scale(0.98);
  }
}

/* Kommer ovenfra, ikke nedenfra: en popover henger under knappen sin, og skal
   se ut som den faller ut av den. */
@keyframes sk-popover-in {
  from {
    opacity: 0;
    transform: translateY(-0.35rem) scale(0.98);
  }
}

@keyframes sk-drawer-in {
  from {
    transform: translateX(100%);
  }
}

@keyframes sk-toast-in {
  from {
    opacity: 0;
    transform: translateY(1rem) scale(0.97);
  }
}

/* Spretter inn. For et resultat — kvittering, bekreftelse, «lagret». */
@keyframes sk-pop-in {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
}

/* --- Pågående tilstand --------------------------------------------------- */

@keyframes sk-spin {
  to {
    transform: rotate(360deg);
  }
}

@keyframes sk-shimmer {
  to {
    background-position: -200% 0;
  }
}

@keyframes sk-toast-life {
  to {
    transform: scaleX(0);
  }
}

@keyframes sk-copilot-pulse {
  0%,
  80%,
  100% {
    transform: translateY(0);
    opacity: 0.45;
  }
  40% {
    transform: translateY(-3px);
    opacity: 1;
  }
}

@keyframes sk-ambient-drift {
  to {
    transform: translate(-5%, 7%) scale(1.08);
  }
}

@keyframes sk-phone-float {
  50% {
    transform: rotateY(-7deg) rotateX(2deg) translateY(-0.8rem);
  }
}

@keyframes sk-customer-orbit {
  to {
    transform: translate(8rem, 5rem) scale(1.12);
  }
}

@keyframes mr-platform-loader-roll {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-3.5%);
  }
}

@keyframes mr-platform-loader-blink {
  0%,
  88%,
  100% {
    transform: scaleY(1);
  }
  92% {
    transform: scaleY(0.12);
  }
}

/* --- Oppmerksomhet ------------------------------------------------------- */

/* Ett dytt, ikke en risting som gjentar seg. Gjentakelse leser som feil på
   skjermen, ikke som feil i det brukeren gjorde. */
@keyframes sk-nudge {
  25% {
    transform: translateX(-0.35rem);
  }
  75% {
    transform: translateX(0.35rem);
  }
}

/* Et tall som nettopp endret seg. Kort, ellers ser summen ustabil ut. */
@keyframes sk-tick {
  50% {
    transform: scale(1.08);
  }
}

/* --- Verktøyklasser (velges bevisst, aldri automatisk) ------------------- */

.sk-anim-fade {
  animation: sk-fade-in var(--sk-motion-base) var(--sk-ease-standard) both;
}
.sk-anim-rise {
  animation: sk-rise-in var(--sk-motion-base) var(--sk-ease-emphasized) both;
}
.sk-anim-pop {
  animation: sk-pop-in var(--sk-motion-base) var(--sk-ease-emphasized) both;
}
.sk-anim-nudge {
  animation: sk-nudge var(--sk-motion-slow) var(--sk-ease-standard);
}
.sk-anim-tick {
  animation: sk-tick var(--sk-motion-base) var(--sk-ease-emphasized);
}

/* Trappetrinn: barna kommer inn etter tur i stedet for som én blokk.
   Nummerert framfor en variabel per element — en liste skal kunne trappes uten
   at den som skriver JSX-en må telle radene sine. Etter tiende rad kommer alt
   samtidig; en trapp som varer lenger enn det er ikke lenger en trapp, det er
   venting. */
.sk-stagger > * {
  animation: sk-rise-in var(--sk-motion-base) var(--sk-ease-emphasized) both;
}
.sk-stagger > *:nth-child(1) {
  animation-delay: 0ms;
}
.sk-stagger > *:nth-child(2) {
  animation-delay: 40ms;
}
.sk-stagger > *:nth-child(3) {
  animation-delay: 80ms;
}
.sk-stagger > *:nth-child(4) {
  animation-delay: 120ms;
}
.sk-stagger > *:nth-child(5) {
  animation-delay: 160ms;
}
.sk-stagger > *:nth-child(6) {
  animation-delay: 200ms;
}
.sk-stagger > *:nth-child(7) {
  animation-delay: 240ms;
}
.sk-stagger > *:nth-child(8) {
  animation-delay: 280ms;
}
.sk-stagger > *:nth-child(9) {
  animation-delay: 320ms;
}
.sk-stagger > *:nth-child(n + 10) {
  animation-delay: 360ms;
}

/* --- Anvendt overalt ----------------------------------------------------- */

/* En feilmelding som bare dukker opp blir oversett — særlig i en skuff der
   blikket står nede ved Lagre-knappen. Bevegelsen er der for å bli sett, ikke
   for å pynte. */
.sk-form-error {
  animation: sk-rise-in var(--sk-motion-fast) var(--sk-ease-emphasized);
}

/* --- Redusert bevegelse -------------------------------------------------- */

/* 01-base.css kutter allerede varigheten til 1ms for alt. Den regelen rører
   ikke forsinkelse, og en trapp med 360ms forsinkelse ville fortsatt latt siste
   rad komme et halvt sekund for sent — for en bruker som nettopp har bedt om at
   ingenting skal bevege seg. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-delay: 0ms !important;
  }
}

/* Legacy raster branding only; geometric BrandMark retains its finite WebGL motion. */
@keyframes mr-brand-sway { 0%, 100% { transform: perspective(160px) rotateY(-6deg); } 50% { transform: perspective(160px) rotateY(6deg); } }

/* Stationary light: only opacity changes; the colour field never travels. */
@keyframes sk-activity-reveal { from { opacity:0; } to { opacity:1; } }
@keyframes sk-activity-breathe {
  from { opacity:.24; }
  to { opacity:.4; }
}

/* Widget charts reveal their measured height once, rather than inventing live changes. */
@keyframes sk-widget-rise { from { transform:scaleY(0);opacity:.4; } to { transform:scaleY(1);opacity:1; } }
@keyframes sk-widget-bar { from { transform:scaleX(0); } to { transform:scaleX(1); } }
@keyframes sk-widget-wave { from { transform:translate3d(-2%,1%,0) scale(1.04);opacity:.6; } to { transform:translate3d(2%,-1%,0) scale(1.08);opacity:1; } }
.dashboard-visual-system .dashboard-chart-rise{animation:sk-widget-rise 850ms var(--sk-ease-emphasized) both;}
.dashboard-visual-system .dashboard-ranking-track i{animation:sk-widget-bar 650ms var(--sk-ease-emphasized) both;}
.dashboard-visual-system .dashboard-signal::before{animation:sk-widget-wave 12s ease-in-out infinite alternate;}
@media(prefers-reduced-motion:reduce){.dashboard-visual-system :is(.dashboard-chart-rise,.dashboard-ranking-track i),.dashboard-visual-system .dashboard-signal::before{animation:none!important;transform:none!important;}}

.sk-terminal-admin__summary {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.sk-terminal-admin__summary-card {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: var(--sk-card-inset);
}
.sk-terminal-admin__summary-card strong {
  font-size: var(--sk-font-size-xl);
}
.sk-terminal-admin__summary-card span {
  color: var(--sk-color-ink-soft);
}
.sk-terminal-admin__summary-card.is-warn strong {
  color: var(--sk-color-warning);
}

.sk-terminal-admin__notice {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4) var(--sk-space-5);
  color: var(--sk-color-warning);
  background: var(--sk-color-warning-soft);
}
.sk-terminal-admin__notice svg {
  flex-shrink: 0;
  width: 1.25rem;
  height: 1.25rem;
}

.sk-terminal-admin__screen-hub {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  padding: 0;
  overflow: hidden;
}
.sk-terminal-admin__screen-hub > div {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sk-space-4);
  min-width: 0;
  padding: var(--sk-space-5);
}
.sk-terminal-admin__screen-hub > div + div {
  border-left: 1px solid var(--sk-color-border-soft);
}
.sk-terminal-admin__screen-hub > div > svg {
  color: var(--sk-color-primary);
}
.sk-terminal-admin__screen-hub span {
  display: grid;
  min-width: 0;
  gap: var(--sk-space-1);
}
.sk-terminal-admin__screen-hub small {
  color: var(--sk-color-ink-soft);
  line-height: 1.45;
}

@media (max-width: 68rem) {
  .sk-terminal-admin__screen-hub {
    grid-template-columns: 1fr;
  }
  .sk-terminal-admin__screen-hub > div + div {
    border-top: 1px solid var(--sk-color-border-soft);
    border-left: 0;
  }
}

@media (max-width: 42rem) {
  .sk-terminal-admin__screen-hub > div {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .sk-terminal-admin__screen-hub .sk-button {
    grid-column: 1 / -1;
  }
}

.sk-terminal-admin__salon {
  display: grid;
  gap: var(--sk-space-4);
  min-width: 0;
}
.sk-terminal-admin__salon h2 {
  font-size: var(--sk-type-section-title);
  line-height: 1.35;
}

.sk-terminal-workstation-card {
  padding: 0;
}
.sk-terminal-workstation-card__open {
  width: 100%;
  display: grid;
  gap: var(--sk-space-3);
  padding: var(--sk-space-5);
  text-align: left;
  background: none;
  border: none;
  cursor: pointer;
  position: relative;
}
.sk-terminal-workstation-card__open:hover,
.sk-terminal-workstation-card__open:focus-visible {
  background: var(--sk-color-surface-hover);
}
.sk-terminal-workstation-card__open h2 {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  font-size: var(--sk-type-section-title);
}
.sk-terminal-workstation-card__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-terminal-workstation-card__chevron {
  position: absolute;
  top: var(--sk-space-5);
  right: var(--sk-space-5);
  color: var(--sk-color-ink-soft);
}

.sk-terminal-drawer > .sk-card { min-width: 0; }
.sk-terminal-drawer__list {
  list-style: none;
  display: grid;
  gap: var(--sk-space-3);
  margin: 0;
  padding: 0;
}
.sk-terminal-drawer__list li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-3);
  padding: var(--sk-space-3) 0;
  border-bottom: 1px solid var(--sk-color-border-soft);
}
.sk-terminal-drawer__list li > :first-child {
  flex: 1 1 12rem;
  min-width: 0;
}
.sk-terminal-drawer__list li > .sk-inline-actions {
  margin-left: auto;
}
.sk-terminal-drawer__list li:last-child {
  border-bottom: none;
}
.sk-terminal-drawer__associate {
  align-items: flex-end;
  margin-top: var(--sk-space-3);
}

.sk-terminal-inline-editor {
  flex: 1 0 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-1);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-hover);
}
.sk-terminal-inline-editor__heading {
  grid-column: 1 / -1;
  font-weight: var(--sk-font-weight-strong);
}
.sk-terminal-season-setting {
  grid-column: 1 / -1;
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-3);
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  cursor: pointer;
}
.sk-terminal-season-setting input {
  width: 1.15rem;
  height: 1.15rem;
  margin-top: 0.15rem;
  accent-color: var(--sk-color-primary);
}
.sk-terminal-season-setting span {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-terminal-season-setting small {
  color: var(--sk-color-ink-soft);
  line-height: 1.45;
}

.sk-terminal-reactivation-notice {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-hover);
}
.sk-terminal-reactivation-notice svg {
  flex: 0 0 auto;
  color: var(--sk-color-accent);
}
.sk-terminal-reactivation-notice h3,
.sk-terminal-reactivation-notice p {
  margin: 0;
}
.sk-terminal-reactivation-notice p {
  margin-top: var(--sk-space-2);
  color: var(--sk-color-ink-soft);
}

.sk-terminal-activation-code {
  display: grid;
  gap: var(--sk-space-3);
  padding: var(--sk-space-5);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-hover);
}
.sk-terminal-activation-code strong {
  font-size: var(--sk-font-size-xl);
  letter-spacing: 0.08em;
}
.sk-terminal-activation-type {
  width: fit-content;
  padding: var(--sk-space-1) var(--sk-space-2);
  border-radius: 999px;
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

/* Stasjonsprofil: forhåndsvisning av 2×20-kundedisplayet og feltgruppene. */
.sk-station-profile__preview {
  display: grid;
  gap: var(--sk-space-2);
  align-content: start;
}
.sk-station-profile__vfd {
  width: fit-content;
  margin: 0;
  padding: var(--sk-space-3) var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: #0b1a12;
  color: #5dff9b;
  font-family: var(--sk-font-mono);
  font-size: var(--sk-font-size-lg);
  line-height: 1.35;
  letter-spacing: 0.08em;
  white-space: pre;
}
.sk-station-profile__group {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: var(--sk-space-3) var(--sk-space-5);
  margin: 0;
  padding: var(--sk-space-4) 0 0;
  border: 0;
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-station-profile__group legend {
  padding: 0;
  font-weight: var(--sk-font-weight-strong);
}
.sk-station-profile__row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-station-profile__own {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-1);
  white-space: nowrap;
  font-size: var(--sk-font-size-sm);
}
.sk-station-profile__device {
  display: grid;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-5);
  padding-top: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-station-profile__device h4 {
  margin: 0;
}

@media (max-width: 64rem) {
  .sk-terminal-admin__summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 40rem) {
  .sk-terminal-admin__summary {
    grid-template-columns: 1fr;
  }
  .sk-terminal-inline-editor {
    grid-template-columns: 1fr;
  }
  .sk-terminal-inline-editor .sk-inline-actions {
    justify-content: flex-start;
  }
  .sk-station-profile__row {
    grid-template-columns: 1fr;
  }
}

.sk-roster-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-4);
}

.sk-roster-summary > .sk-card {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  box-shadow: none;
}

.sk-roster-summary > .sk-card.is-warning {
  border-color: color-mix(
    in srgb,
    var(--sk-color-warning) 42%,
    var(--sk-color-border)
  );
  background: var(--sk-color-warning-soft);
}

.sk-roster-summary__icon {
  width: 2.5rem;
  height: 2.5rem;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}

.sk-roster-summary > .is-warning .sk-roster-summary__icon {
  background: var(--sk-color-surface);
  color: var(--sk-color-warning);
}

.sk-roster-summary strong,
.sk-roster-summary small {
  display: block;
}

.sk-roster-summary strong {
  font-size: var(--sk-font-size-xl);
  line-height: 1.1;
}

.sk-roster-summary small {
  margin-top: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
}

.sk-roster-form-card {
  width: min(100%, 64rem);
}

.sk-roster-form-card .sk-field--wide,
.sk-roster-form-card .sk-inline-actions {
  grid-column: 1 / -1;
}

.sk-roster-table-card > .sk-card-header {
  padding-bottom: var(--sk-space-3);
}

.sk-roster-table-card > .sk-data-table-wrap {
  margin-top: var(--sk-space-2);
}

.sk-roster-table-card .sk-data-table select {
  min-width: 12rem;
  min-height: var(--sk-control-height);
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
}

.sk-roster-table__action {
  width: 1%;
  white-space: nowrap;
}

.sk-roster-disclosure {
  margin-top: var(--sk-space-5);
  border-top: 1px solid var(--sk-color-border-soft);
}

.sk-roster-disclosure > summary {
  min-height: 3.5rem;
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  color: var(--sk-color-ink-soft);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

.sk-roster-disclosure > summary::before {
  content: "+";
  width: 1.5rem;
  height: 1.5rem;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-lg);
}

.sk-roster-disclosure[open] > summary::before {
  content: "−";
}

.sk-roster-complete {
  min-height: 4rem;
  padding: var(--sk-space-3) var(--sk-space-4);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
}

.sk-roster-complete p {
  margin: 0;
  color: var(--sk-color-ink);
}

@media (max-width: 62rem) {
  .sk-roster-summary {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 44rem) {
  .sk-roster-summary {
    gap: var(--sk-space-3);
  }

  .sk-roster-table-card .sk-data-table select {
    width: 100%;
    min-width: 0;
  }

  .sk-roster-table__action {
    width: auto;
    white-space: normal;
  }

  .sk-roster-table__action .sk-button {
    width: 100%;
  }
}

.sk-customer-portal-login {
  min-height: 100vh;
  background:
    radial-gradient(circle at 86% 4%, rgb(244 179 160 / 18%), transparent 22rem),
    var(--sk-color-canvas);
}

/* Innlogget kundeinnhold har en ensfarget, kontrollerbar tekstbakgrunn. */

.sk-customer-portal { min-height: 100vh; background: var(--sk-color-canvas); }

.sk-customer-portal-login {
  display: grid;
  place-items: center;
  padding: clamp(1rem, 5vw, 4rem);
}

.sk-customer-portal-auth-card {
  width: min(100%, 30rem);
  padding: clamp(1.5rem, 6vw, 3rem);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-card-radius);
  background: var(--sk-color-surface);
  box-shadow: 0 24px 70px rgb(35 33 44 / 10%);
}

.sk-customer-portal-brandmark,
.sk-customer-portal-logo > span:first-child {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: .9rem;
  background: var(--sk-color-primary);
  color: #fff;
  font-size: var(--sk-font-size-xl);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: -.04em;
}

.sk-customer-portal-auth-card > .sk-customer-portal-brandmark { margin-bottom: 2rem; }

.sk-customer-portal-auth-card h1 { margin: .35rem 0 .75rem; font-size: var(--sk-type-page-title); }

.sk-customer-portal-auth-card > p:not(.sk-customer-portal-eyebrow) { margin-bottom: 2rem; color: var(--sk-color-ink-soft); }

.sk-customer-portal-eyebrow,
.sk-customer-portal-page-heading p,
.sk-customer-portal-section header p,
.sk-customer-portal-feature p,
.sk-customer-portal-thread header p,
.sk-customer-portal-profile form > header p {
  margin: 0 0 .35rem;
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: .1em;
  text-transform: uppercase;
}

.sk-customer-portal-auth-card form { display: grid; gap: 1.15rem; }

.sk-customer-portal-auth-card label,
.sk-customer-portal-form-grid label,
.sk-customer-portal-thread-body > label {
  display: grid;
  gap: .45rem;
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

.sk-customer-portal-auth-card input,
.sk-customer-portal-form-grid input,
.sk-customer-portal-thread-body > label input,
.sk-customer-portal-thread textarea {
  width: 100%;
  min-height: 3.2rem;
  padding: .75rem .9rem;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: .7rem;
  background: #fff;
  color: var(--sk-color-ink);
}

.sk-customer-portal-auth-card input:focus,
.sk-customer-portal-form-grid input:focus,
.sk-customer-portal-thread-body > label input:focus,
.sk-customer-portal-thread textarea:focus {
  border-color: var(--sk-color-primary);
  box-shadow: 0 0 0 3px rgb(39 92 204 / 14%);
}

.sk-customer-portal-code {
  font-size: var(--sk-font-size-2xl);
  font-weight: var(--sk-font-weight-strong);
  letter-spacing: .35em;
  text-align: center;
}

.sk-customer-portal-channel-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .3rem;
  padding: .3rem;
  border-radius: .8rem;
  background: var(--sk-color-canvas);
}

.sk-customer-portal-channel-tabs button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  min-height: 2.75rem;
  border: 0;
  border-radius: .6rem;
  background: transparent;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

.sk-customer-portal-channel-tabs button svg { width: 1rem; }

.sk-customer-portal-channel-tabs button.is-active { background: #fff; box-shadow: var(--sk-shadow-card); color: var(--sk-color-primary); }

.sk-customer-portal-primary,
.sk-customer-portal-secondary {
  min-height: 3rem;
  padding: .7rem 1.1rem;
  border-radius: var(--sk-radius-pill);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

.sk-customer-portal-primary { border: 1px solid var(--sk-color-primary); background: var(--sk-color-primary); color: var(--sk-color-on-action); }

.sk-customer-portal-primary:hover:not(:disabled) { background: var(--sk-color-primary-hover); }

.sk-customer-portal-primary.is-compact,
.sk-customer-portal-secondary { min-height: 2.75rem; padding: .55rem 1rem; }

.sk-customer-portal-primary svg,
.sk-customer-portal-secondary svg { width: 1rem; height: 1rem; }

.sk-customer-portal-primary:disabled,
.sk-customer-portal-secondary:disabled { opacity: .55; cursor: wait; }

.sk-customer-portal-secondary { border: 1px solid var(--sk-color-border-interactive); background: var(--sk-color-surface); color: var(--sk-color-ink); }

.sk-customer-portal-secondary:hover:not(:disabled) { border-color: var(--sk-color-primary); color: var(--sk-color-primary); }

.sk-customer-portal-text-button,
.sk-customer-portal-auth-actions button {
  min-height: 2.75rem;
  border: 0;
  padding: .35rem;
  background: transparent;
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

.sk-customer-portal-auth-card > .sk-customer-portal-text-button { width: 100%; margin-top: .75rem; }

.sk-customer-portal-auth-actions { display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap; }

.sk-customer-portal-auth-note { margin: -.25rem 0 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); text-align: center; }

.sk-customer-portal-salon-fallback { width: 100%; margin-top: .5rem; font-size: var(--sk-font-size-sm); text-align: center; }

.sk-customer-portal-salon-picker-layer {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 5vw, 3rem);
  background: rgb(20 18 28 / 55%);
}

.sk-customer-portal-salon-picker {
  display: grid;
  width: min(28rem, 100%);
  max-height: min(32rem, 100%);
  gap: 1rem;
  overflow-y: auto;
  border-radius: 1.25rem;
  padding: clamp(1.25rem, 5vw, 2rem);
  background: var(--sk-color-surface);
  box-shadow: 0 24px 70px rgb(35 33 44 / 18%);
}

.sk-customer-portal-salon-picker > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }

.sk-customer-portal-salon-picker > header h2 { margin: 0; font-size: var(--sk-type-section-title); }

.sk-customer-portal-salon-picker > p { margin: 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

.sk-customer-portal-salon-picker-close {
  display: grid;
  place-items: center;
  width: 2.2rem;
  height: 2.2rem;
  flex: none;
  border: 0;
  border-radius: 50%;
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink-soft);
  cursor: pointer;
}

.sk-customer-portal-salon-picker-close:hover { color: var(--sk-color-ink); }

.sk-customer-portal-salon-picker-close svg { width: 1.05rem; height: 1.05rem; }

.sk-customer-portal-salon-list { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }

.sk-customer-portal-salon-list button {
  display: flex;
  align-items: center;
  gap: .75rem;
  width: 100%;
  min-height: 3.2rem;
  padding: .7rem .9rem;
  border: 1px solid var(--sk-color-border);
  border-radius: .8rem;
  background: #fff;
  color: var(--sk-color-ink);
  font-weight: var(--sk-font-weight-strong);
  text-align: left;
  cursor: pointer;
}

.sk-customer-portal-salon-list button:hover { border-color: var(--sk-color-primary); background: var(--sk-color-surface-hover); }

.sk-customer-portal-salon-list button > svg:first-child { flex: none; width: 1.1rem; color: var(--sk-color-primary); }

.sk-customer-portal-salon-list button > span { flex: 1; min-width: 0; }

.sk-customer-portal-salon-list button > svg:last-child { flex: none; width: 1rem; color: var(--sk-color-ink-faint); }

.sk-customer-portal-vipps-option { margin-top: 1.25rem; }

.sk-customer-portal-separator {
  display: flex;
  align-items: center;
  gap: .8rem;
  margin: 0 0 1.1rem;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

.sk-customer-portal-separator::before,
.sk-customer-portal-separator::after {
  content: "";
  height: 1px;
  flex: 1;
  background: var(--sk-color-border);
}

.sk-customer-portal-vipps-button {
  width: 100%;
  min-height: 3.2rem;
  padding: .7rem 1.1rem;
  border: 1px solid #ff5b24;
  border-radius: var(--sk-radius-pill);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .65rem;
  background: #ff5b24;
  color: #fff;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

.sk-customer-portal-vipps-button > span {
  display: grid;
  place-items: center;
  width: 1.45rem;
  height: 1.45rem;
  border-radius: 50%;
  background: #fff;
  color: #ff5b24;
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

.sk-customer-portal-vipps-button:hover:not(:disabled) { background: #e94c18; }

.sk-customer-portal-vipps-button:focus-visible {
  outline: 3px solid rgb(255 91 36 / 28%);
  outline-offset: 3px;
}

.sk-customer-portal-vipps-button:disabled { opacity: .55; cursor: wait; }

.sk-customer-portal-alert {
  padding: .8rem 1rem;
  border-radius: .7rem;
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}

.sk-customer-portal-alert.is-error { border: 1px solid rgb(179 38 30 / 25%); background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }

.sk-customer-portal-alert.is-success { border: 1px solid rgb(19 107 69 / 22%); background: var(--sk-color-success-soft); color: var(--sk-color-success); }

.sk-customer-portal-progress { height: .3rem; overflow: hidden; border-radius: 1rem; background: var(--sk-color-primary-soft); }

.sk-customer-portal-progress span { display: block; width: 42%; height: 100%; border-radius: inherit; background: var(--sk-color-primary); animation: customer-portal-loading 1.3s ease-in-out infinite alternate; }

@keyframes customer-portal-loading { to { transform: translateX(140%); } }

.sk-customer-portal { display: grid; grid-template-columns: 17.5rem minmax(0, 1fr); }

.sk-customer-portal-sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  box-sizing: border-box;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 1.4rem 1rem;
  display: flex;
  flex-direction: column;
  background: var(--sk-color-rail);
  color: #fff;
}

.sk-customer-portal-logo {
  display: flex;
  align-items: center;
  gap: .8rem;
  width: 100%;
  padding: .4rem .45rem 1.6rem;
  border: 0;
  background: transparent;
  color: #fff;
  text-align: left;
  cursor: pointer;
}

.sk-customer-portal-logo > span:last-child { display: grid; }

.sk-customer-portal-logo strong { font-size: var(--sk-font-size-lg); }

.sk-customer-portal-logo small { color: rgb(255 255 255 / 62%); font-size: var(--sk-font-size-xs); white-space: normal; overflow-wrap: normal; overflow: visible; }

.sk-customer-portal-sidebar nav { display: grid; gap: .3rem; }

.sk-customer-portal-sidebar nav button,
.sk-customer-portal-signout {
  width: 100%;
  min-height: 2.85rem;
  padding: .65rem .75rem;
  border: 0;
  border-radius: .7rem;
  display: flex;
  align-items: center;
  gap: .75rem;
  background: transparent;
  color: rgb(255 255 255 / 74%);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  text-align: left;
  cursor: pointer;
}

.sk-customer-portal-sidebar nav button:hover,
.sk-customer-portal-signout:hover { background: rgb(255 255 255 / 7%); color: #fff; }

.sk-customer-portal-sidebar nav button.is-active { background: rgb(255 255 255 / 12%); color: #fff; }

.sk-customer-portal-sidebar nav svg,
.sk-customer-portal-signout svg { width: 1.15rem; height: 1.15rem; flex: 0 0 auto; }

.sk-customer-portal-sidebar nav button > span { margin-left: auto; min-width: 1.35rem; padding: .05rem .35rem; border-radius: 1rem; background: var(--sk-color-signal); color: var(--sk-color-ink); font-size: var(--sk-font-size-xs); text-align: center; }

.sk-customer-portal-identity {
  margin-top: auto;
  padding: 1rem .45rem .75rem;
  border-top: 1px solid rgb(255 255 255 / 11%);
  display: flex;
  align-items: center;
  gap: .7rem;
  min-width: 0;
}

.sk-customer-portal-identity img,
.sk-customer-portal-avatar-fallback,
.sk-customer-portal-mobile-header img,
.sk-customer-portal-profile-photo > img {
  width: 2.55rem;
  height: 2.55rem;
  flex: 0 0 auto;
  border-radius: 50%;
  object-fit: cover;
}

.sk-customer-portal-avatar-fallback { display: grid; place-items: center; background: var(--sk-color-signal-soft); color: var(--sk-color-ink); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }

.sk-customer-portal-identity > span:last-child { min-width: 0; display: grid; }

/* The full name and contact are always readable: long values wrap inside the sidebar, never cut with an ellipsis. */

.sk-customer-portal-identity strong,
.sk-customer-portal-identity small { white-space: normal; overflow-wrap: anywhere; }

.sk-customer-portal-identity strong { font-size: var(--sk-font-size-sm); }

.sk-customer-portal-identity small { color: rgb(255 255 255 / 55%); font-size: var(--sk-font-size-xs); }

.sk-customer-portal-signout { color: rgb(255 255 255 / 60%); }

.sk-customer-portal-main { min-width: 0; }

.sk-customer-portal-page { width: min(100%, 72rem); margin: 0 auto; padding: clamp(2rem, 5vw, 4.5rem) clamp(1.25rem, 5vw, 4.5rem) 6rem; }

.sk-customer-portal-page-heading { min-height: 0; margin-bottom: 1.6rem; display: flex; justify-content: space-between; align-items: end; gap: 1.5rem; }

.sk-customer-portal-page-heading h1 { margin: 0 0 .5rem; font-size: var(--sk-type-page-title); letter-spacing: -.045em; }

.sk-customer-portal-page-heading > div > span { color: var(--sk-color-ink-soft); }

.sk-customer-portal-feature,
.sk-customer-portal-section,
.sk-customer-portal-profile,
.sk-customer-portal-messages {
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: var(--sk-shadow-card);
}

.sk-customer-portal-feature {
  padding: clamp(1.4rem, 4vw, 2.2rem);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 1.3rem;
  background: linear-gradient(135deg, var(--sk-color-surface) 48%, var(--sk-color-primary-soft));
}

.sk-customer-portal-feature-icon { width: 3.8rem; height: 3.8rem; border-radius: 1rem; display: grid; place-items: center; background: var(--sk-color-primary); color: #fff; }

.sk-customer-portal-feature-icon svg { width: 1.45rem; }

.sk-customer-portal-feature h2 { margin: 0 0 .5rem; font-size: var(--sk-type-section-title); }

.sk-customer-portal-feature > div:nth-child(2) { display: grid; }

.sk-customer-portal-feature > div:nth-child(2) > span,
.sk-customer-portal-feature > div:nth-child(2) > small { color: var(--sk-color-ink-soft); }

.sk-customer-portal-feature > div:nth-child(2) > small { margin-top: .25rem; font-size: var(--sk-font-size-xs); }

.sk-customer-portal-feature > button,
.sk-customer-portal-section header button {
  border: 0;
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  background: transparent;
  color: var(--sk-color-primary);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}

.sk-customer-portal-feature > button svg { width: 1rem; }

.sk-customer-portal-overview-grid { margin-top: 1.25rem; display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }

.sk-customer-portal-section { margin-top: 1.25rem; overflow: hidden; }

.sk-customer-portal-overview-grid .sk-customer-portal-section { margin-top: 0; }

.sk-customer-portal-section > header,
.sk-customer-portal-profile form > header {
  min-height: 5.2rem;
  padding: var(--sk-space-4) var(--sk-space-5);
  border-bottom: 1px solid var(--sk-color-border-soft);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sk-space-4);
}

.sk-customer-portal-section-body {
  padding: var(--sk-space-4) var(--sk-space-5);
  display: grid;
  gap: var(--sk-space-3);
  justify-items: start;
}

.sk-customer-portal-section-body > p { margin: 0; }

.sk-customer-portal-section header h2,
.sk-customer-portal-profile form > header h2 { margin: 0; font-size: var(--sk-type-section-title); }

.sk-customer-portal-summary-row {
  width: 100%;
  min-height: 6.8rem;
  padding: 1.2rem 1.4rem;
  border: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .9rem;
  background: transparent;
  text-align: left;
  cursor: pointer;
}

.sk-customer-portal-summary-row:hover { background: var(--sk-color-surface-hover); }

.sk-customer-portal-summary-row > svg:first-child { width: 1.25rem; color: var(--sk-color-primary); }

.sk-customer-portal-summary-row > svg:last-child { width: 1rem; color: var(--sk-color-ink-faint); }

.sk-customer-portal-summary-row span { min-width: 0; }

.sk-customer-portal-summary-row small { max-width: 24rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.sk-customer-portal-empty { min-height: 6.8rem; padding: 1.3rem 1.4rem; display: flex; align-items: center; gap: 1rem; color: var(--sk-color-ink-soft); }

.sk-customer-portal-empty > span { width: 2.5rem; height: 2.5rem; flex: 0 0 auto; border-radius: .8rem; display: grid; place-items: center; background: var(--sk-color-canvas); color: var(--sk-color-primary); }

.sk-customer-portal-empty svg { width: 1.15rem; }

.sk-customer-portal-empty strong { color: var(--sk-color-ink); }

.sk-customer-portal-empty p { margin: .1rem 0 0; font-size: var(--sk-font-size-sm); }

.sk-customer-portal-shortcuts > div { display: grid; grid-template-columns: repeat(3, 1fr); }

.sk-customer-portal-shortcuts > div > button {
  min-height: 7.5rem;
  padding: 1.15rem 1.4rem;
  border: 0;
  border-right: 1px solid var(--sk-color-border-soft);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .8rem;
  background: transparent;
  text-align: left;
  cursor: pointer;
}

.sk-customer-portal-shortcuts > div > button:last-child { border-right: 0; }

.sk-customer-portal-shortcuts > div > button:hover { background: var(--sk-color-surface-hover); }

.sk-customer-portal-shortcuts button > svg:first-child { width: 1.25rem; color: var(--sk-color-primary); }

.sk-customer-portal-shortcuts button > svg:last-child { width: 1rem; color: var(--sk-color-ink-faint); }

.sk-customer-portal-list { display: grid; }

.sk-customer-portal-list > * + * { border-top: 1px solid var(--sk-color-border-soft); }

.sk-customer-portal-appointment { padding: 1.2rem 1.4rem; display: grid; grid-template-columns: 3.2rem minmax(0, 1fr) auto; align-items: center; gap: 1rem; }

.sk-customer-portal-appointment > div { min-inline-size: 0; overflow-wrap: anywhere; }

.sk-customer-portal-appointment time { width: 3.2rem; min-height: 3.5rem; border-radius: .8rem; display: grid; place-items: center; align-content: center; background: var(--sk-color-primary-soft); color: var(--sk-color-primary); line-height: 1; }

.sk-customer-portal-appointment time strong { font-size: var(--sk-font-size-xl); }

.sk-customer-portal-appointment time span { margin-top: .2rem; font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); text-transform: uppercase; }

.sk-customer-portal-appointment h3 { margin: 0 0 .3rem; font-size: var(--sk-type-card-title); }

.sk-customer-portal-appointment p,
.sk-customer-portal-appointment > div > span { margin: 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

.sk-customer-portal-appointment-actions { display: flex; align-items: flex-end; gap: .45rem; flex-direction: column; }

.sk-customer-portal-appointment-actions button,
.sk-customer-portal-appointment-actions a { border: 0; background: transparent; color: var(--sk-color-primary); font: inherit; font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); padding: .2rem 0; cursor: pointer; }

.sk-customer-portal-appointment-actions button:disabled { cursor: wait; opacity: .6; }

/* Poengrad: én tekstkolonne som kan brytes, og ett tall som ikke skal brytes. */

.sk-customer-portal-points-row { padding: 1.1rem 1.4rem; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 1rem; }

.sk-customer-portal-points-row strong { display: block; font-size: var(--sk-font-size-md); }

.sk-customer-portal-points-row small { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

.sk-customer-portal-points-row > span:last-child { font-weight: var(--sk-font-weight-strong); white-space: nowrap; }

.sk-customer-portal-points-row > span:last-child.is-negative { color: var(--sk-color-danger); }

.sk-customer-portal-status { display: inline-flex; width: fit-content; padding: .3rem .58rem; border-radius: 1rem; font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); white-space: nowrap; }

.sk-customer-portal-status.is-success { background: var(--sk-color-success-soft); color: var(--sk-color-success); }

.sk-customer-portal-status.is-attention { background: var(--sk-color-warning-soft); color: var(--sk-color-warning); }

.sk-customer-portal-status.is-muted { background: var(--sk-color-canvas); color: var(--sk-color-ink-soft); }

.sk-customer-portal-purchase > button { width: 100%; min-height: 5.4rem; padding: 1rem 1.4rem; border: 0; display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; align-items: center; gap: .9rem; background: transparent; text-align: left; cursor: pointer; }

.sk-customer-portal-purchase > button:hover { background: var(--sk-color-surface-hover); }

.sk-customer-portal-purchase > button > svg:first-child { width: 1.25rem; color: var(--sk-color-primary); }

.sk-customer-portal-purchase > button > svg:last-child { width: 1rem; transition: transform var(--sk-motion-base); }

.sk-customer-portal-purchase.is-open > button > svg:last-child { transform: rotate(90deg); }

.sk-customer-portal-purchase-detail { padding: 0 1.4rem 1.4rem 3.6rem; }

.sk-customer-portal-purchase-detail dl { margin: 0 0 1rem; padding: 1rem 0; border-top: 1px solid var(--sk-color-border-soft); border-bottom: 1px solid var(--sk-color-border-soft); display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

.sk-customer-portal-purchase-detail dl div { display: grid; }

.sk-customer-portal-purchase-detail dt { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }

.sk-customer-portal-purchase-detail dd { margin: .15rem 0 0; overflow-wrap: anywhere; font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); }

.sk-customer-portal-purchase-detail ul { margin: 0 0 1.1rem; padding: 0; list-style: none; }

.sk-customer-portal-purchase-detail li { padding: .6rem 0; display: flex; justify-content: space-between; gap: 1rem; font-size: var(--sk-font-size-sm); }

.sk-customer-portal-purchase-detail li + li { border-top: 1px solid var(--sk-color-border-soft); }

.sk-customer-portal-purchase-detail li span { display: grid; }

.sk-customer-portal-purchase-detail li small,
.sk-customer-portal-muted-note { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }

.sk-customer-portal-messages { min-height: 35rem; display: grid; grid-template-columns: 19rem minmax(0, 1fr); overflow: hidden; }

.sk-customer-portal-messages > aside { border-right: 1px solid var(--sk-color-border); background: var(--sk-color-canvas); }

.sk-customer-portal-messages > aside > button { width: 100%; min-height: 5rem; padding: .9rem 1rem; border: 0; border-bottom: 1px solid var(--sk-color-border-soft); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: .7rem; background: transparent; text-align: left; cursor: pointer; }

.sk-customer-portal-messages > aside > button:hover,
.sk-customer-portal-messages > aside > button.is-active { background: #fff; }

.sk-customer-portal-messages > aside > button.is-active { box-shadow: inset 3px 0 0 var(--sk-color-primary); }

.sk-customer-portal-messages aside button > svg { width: 1.1rem; margin-top: .2rem; color: var(--sk-color-primary); }

.sk-customer-portal-messages aside button span { min-width: 0; }

.sk-customer-portal-messages aside button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.sk-customer-portal-messages aside button time { color: var(--sk-color-ink-faint); font-size: var(--sk-font-size-xs); white-space: nowrap; }

.sk-customer-portal-messages > aside > .sk-customer-portal-empty { min-height: 12rem; }

.sk-customer-portal-thread { min-width: 0; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }

.sk-customer-portal-thread > header { min-height: 5rem; padding: 1rem 1.25rem; border-bottom: 1px solid var(--sk-color-border); display: flex; justify-content: space-between; align-items: center; }

.sk-customer-portal-thread > header h2 { margin: 0; font-size: var(--sk-type-section-title); }

.sk-customer-portal-thread > header button { width: 2.3rem; height: 2.3rem; border: 0; border-radius: 50%; display: grid; place-items: center; background: transparent; cursor: pointer; }

.sk-customer-portal-thread > header button:hover { background: var(--sk-color-surface-hover); }

.sk-customer-portal-thread > header svg { width: 1rem; }

.sk-customer-portal-thread-body { min-height: 25rem; max-height: 32rem; overflow-y: auto; padding: 1.25rem; display: flex; flex-direction: column; align-items: flex-start; gap: .8rem; }

.sk-customer-portal-thread-body > label { width: 100%; }

.sk-customer-portal-thread-body article { width: fit-content; max-width: min(80%, 34rem); }

.sk-customer-portal-thread-body article > span { display: block; margin: 0 .2rem .25rem; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }

.sk-customer-portal-thread-body article p { margin: 0; padding: .75rem .9rem; border-radius: .9rem .9rem .9rem .2rem; background: var(--sk-color-canvas); white-space: pre-wrap; overflow-wrap: anywhere; }

.sk-customer-portal-thread-body article.is-customer { align-self: flex-end; }

.sk-customer-portal-thread-body article.is-customer > span { text-align: right; }

.sk-customer-portal-thread-body article.is-customer p { border-radius: .9rem .9rem .2rem .9rem; background: var(--sk-color-primary); color: #fff; }

.sk-customer-portal-thread-body article time { display: block; margin: .25rem .2rem 0; color: var(--sk-color-ink-faint); font-size: var(--sk-font-size-xs); }

.sk-customer-portal-thread-body article.is-customer time { text-align: right; }

.sk-customer-portal-thread > form { padding: .85rem 1rem; border-top: 1px solid var(--sk-color-border); display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: .65rem; }

.sk-customer-portal-thread textarea { min-height: 3rem; max-height: 9rem; resize: vertical; }

.sk-customer-portal-thread > form button { width: 3rem; height: 3rem; border: 0; border-radius: 50%; display: grid; place-items: center; background: var(--sk-color-primary); color: #fff; cursor: pointer; }

.sk-customer-portal-thread > form button:disabled { opacity: .5; }

.sk-customer-portal-thread > form button svg { width: 1.1rem; }

.sk-customer-portal-thread .sk-customer-portal-alert { margin: 0 1rem .6rem; }

.sk-customer-portal-thread-closed { margin: 0; padding: 1rem 1.25rem; border-top: 1px solid var(--sk-color-border); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

.sk-customer-portal-profile { overflow: hidden; }

.sk-customer-portal-photo-panel { padding: 1.5rem; border-bottom: 1px solid var(--sk-color-border); display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 1.25rem; }

.sk-customer-portal-photo-panel > input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

.sk-customer-portal-profile-photo { position: relative; }

.sk-customer-portal-profile-photo > img,
.sk-customer-portal-profile-photo > .sk-customer-portal-avatar-fallback { width: 6rem; height: 6rem; font-size: var(--sk-font-size-xl); }

.sk-customer-portal-profile-photo > button { position: absolute; right: -.15rem; bottom: -.15rem; width: 2.2rem; height: 2.2rem; border: 3px solid #fff; border-radius: 50%; display: grid; place-items: center; background: var(--sk-color-primary); color: #fff; cursor: pointer; }

.sk-customer-portal-profile-photo > button svg { width: .9rem; }

.sk-customer-portal-photo-panel h2 { margin: 0 0 .25rem; font-size: var(--sk-type-section-title); }

.sk-customer-portal-photo-panel p { margin: 0 0 .8rem; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

.sk-customer-portal-photo-panel > div:nth-child(2) > div { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }

.sk-customer-portal-profile form { display: grid; }

.sk-customer-portal-form-grid { padding: 1.4rem; display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

.sk-customer-portal-form-grid label.is-wide { grid-column: 1 / -1; }

.sk-customer-portal-form-grid label > span { position: relative; display: block; }

.sk-customer-portal-form-grid label > span svg { position: absolute; left: .9rem; top: 50%; width: 1rem; transform: translateY(-50%); color: var(--sk-color-ink-faint); pointer-events: none; }

.sk-customer-portal-form-grid label > span input { padding-left: 2.45rem; }

.sk-customer-portal-profile form > .sk-customer-portal-alert { margin: 0 1.4rem 1rem; }

.sk-customer-portal-profile form > footer { padding: 1rem 1.4rem 1.4rem; display: flex; justify-content: flex-end; }

.sk-customer-portal-mobile-header,
.sk-customer-portal-bottom-nav { display: none; }

.sk-customer-portal-sr-only { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap !important; }

@media (max-width: 900px) {
  .sk-customer-portal { display: block; padding-bottom: 4.7rem; }
  .sk-customer-portal-sidebar { display: none; }
  .sk-customer-portal-mobile-header { min-height: 4.25rem; padding: .65rem 1rem; border-bottom: 1px solid var(--sk-color-border); display: flex; justify-content: flex-end; background: rgb(255 255 255 / 92%); backdrop-filter: blur(12px); }
  /* Reserver pillens plass slik at profilnavnet kan bruke resten av topplinjen. */
  body:has(.sk-deployment-phase--fixed) .sk-customer-portal-mobile-header { padding-inline-end: calc(8 * var(--sk-space-4) + var(--sk-safe-right, 0px)); }
  .sk-customer-portal-mobile-header > button { min-width: 0; padding: 0; border: 0; display: flex; align-items: center; gap: .65rem; background: transparent; text-align: left; }
  .sk-customer-portal-mobile-header > button > span:last-child { min-width: 0; display: grid; }
  .sk-customer-portal-mobile-header strong,
  .sk-customer-portal-mobile-header small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .sk-customer-portal-mobile-header strong { font-size: var(--sk-font-size-sm); }
  .sk-customer-portal-mobile-header small { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }
  .sk-customer-portal-bottom-nav { position: fixed; z-index: 40; right: 0; bottom: 0; left: 0; min-height: 4.7rem; padding: .45rem max(.5rem, env(safe-area-inset-right)) max(.45rem, env(safe-area-inset-bottom)) max(.5rem, env(safe-area-inset-left)); border-top: 1px solid var(--sk-color-border); display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); background: color-mix(in srgb, var(--sk-color-surface) 96%, transparent); backdrop-filter: blur(14px); box-shadow: 0 -8px 30px rgb(35 33 44 / 7%); }
  .sk-customer-portal-bottom-nav button { overflow-wrap: anywhere; text-align: center; min-width: 0; padding: .25rem; border: 0; border-radius: .55rem; display: grid; justify-items: center; align-content: center; gap: .2rem; background: transparent; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }
  .sk-customer-portal-bottom-nav button.is-active { background: var(--sk-color-primary-soft); color: var(--sk-color-primary); }
  .sk-customer-portal-bottom-nav svg { width: 1.15rem; height: 1.15rem; }
  .sk-customer-portal-page { padding-top: 1.4rem; padding-bottom: 2.5rem; }
  .sk-customer-portal-page-heading { min-height: 0; align-items: start; }
  .sk-customer-portal-page-heading h1 { font-size: var(--sk-type-page-title); }
}

@media (max-width: 680px) {
  .sk-customer-portal-auth-card { padding: var(--sk-card-inset); border-radius: var(--sk-card-radius); }
  .sk-customer-portal-page { padding-right: 1rem; padding-left: 1rem; }
  .sk-customer-portal-page-heading { display: grid; }
  .sk-customer-portal-page-heading > .sk-customer-portal-primary { width: 100%; }
  .sk-customer-portal-feature { grid-template-columns: auto minmax(0, 1fr); align-items: start; }
  .sk-customer-portal-feature > button { grid-column: 1 / -1; min-height: 2.75rem; padding-top: .8rem; border-top: 1px solid var(--sk-color-border-soft); justify-content: space-between; }
  .sk-customer-portal-overview-grid { grid-template-columns: 1fr; }
  .sk-customer-portal-shortcuts > div { grid-template-columns: 1fr; }
  .sk-customer-portal-shortcuts > div > button { min-height: 5.5rem; border-right: 0; border-bottom: 1px solid var(--sk-color-border-soft); }
  .sk-customer-portal-shortcuts > div > button:last-child { border-bottom: 0; }
  .sk-customer-portal-appointment { grid-template-columns: 3rem minmax(0, 1fr); align-items: start; }
  .sk-customer-portal-appointment > .sk-customer-portal-status { grid-column: 2; }
  .sk-customer-portal-appointment-actions { grid-column: 2; align-items: flex-start; }
  .sk-customer-portal-purchase > button { grid-template-columns: auto minmax(0, 1fr) auto; }
  .sk-customer-portal-purchase > button > .sk-customer-portal-status { grid-column: 2; }
  .sk-customer-portal-purchase > button > svg:last-child { grid-column: 3; grid-row: 1 / span 2; }
  .sk-customer-portal-purchase-detail { padding-left: 1.4rem; }
  .sk-customer-portal-purchase-detail dl { grid-template-columns: 1fr; }
  .sk-customer-portal-messages { min-height: 0; display: block; }
  .sk-customer-portal-messages > aside { max-height: 14rem; overflow-y: auto; border-right: 0; border-bottom: 1px solid var(--sk-color-border); }
  .sk-customer-portal-thread-body { min-height: 20rem; max-height: 45vh; }
  .sk-customer-portal-thread-body article { max-width: 88%; }
  .sk-customer-portal-photo-panel { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .sk-customer-portal-photo-panel > div:nth-child(2) > div { justify-content: center; }
  .sk-customer-portal-form-grid { grid-template-columns: 1fr; }
  .sk-customer-portal-form-grid label.is-wide { grid-column: auto; }
}

/* Verv en venn: kortet i «Mine poeng» og landingssiden vervelenken peker på.
   Landingssiden låner auth-kortet fra innloggingen med vilje — den vervede
   møter det samme uttrykket hen møter igjen når hen logger inn på Min side. */

.sk-customer-portal-referral { padding: 1.1rem 1.4rem 1.4rem; display: grid; gap: .9rem; }

.sk-customer-portal-referral-lead { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

.sk-customer-portal-referral-link {
  /* Lenken må kunne markeres for hånd: utklippstavlen nektes stille i noen
     nettlesere, og da er dette den eneste veien videre. */
  padding: .7rem .9rem;
  border: 1px solid var(--sk-color-border-soft);
  border-radius: .6rem;
  background: var(--sk-color-canvas);
  font-family: var(--sk-font-mono);
  font-size: var(--sk-font-size-sm);
  overflow-wrap: anywhere;
  user-select: all;
}

.sk-customer-portal-referral-actions { display: flex; flex-wrap: wrap; gap: .6rem; }

.sk-customer-portal-referral-qr { margin: 0; display: grid; justify-items: center; gap: .5rem; }

.sk-customer-portal-referral-qr figcaption { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }

.sk-customer-portal-qr { border-radius: .5rem; background: #fff; }

.sk-customer-portal-referral > .sk-customer-portal-points-row { padding: 1rem 0 0; border-top: 1px solid var(--sk-color-border-soft); }

.sk-customer-portal-auth-card > a.sk-customer-portal-primary { width: 100%; text-decoration: none; }

@media (max-width: 680px) {
  .sk-customer-portal-referral { padding: 1rem; }
  .sk-customer-portal-referral-actions > button { width: 100%; }
}

/* Samtykke og personvern (MarketingConsentChoices / PortalPrivacy). */

.sk-consent-choices { display: grid; gap: .65rem; margin: 0; padding: 0; border: 0; min-width: 0; }

.sk-consent-choices legend { margin-bottom: .35rem; font-weight: var(--sk-font-weight-strong); color: var(--sk-color-ink); }

.sk-consent-choice { display: flex; gap: .65rem; align-items: flex-start; line-height: 1.4; cursor: pointer; }

.sk-consent-choice input { flex: none; width: 1.15rem; height: 1.15rem; margin-top: .1rem; accent-color: var(--sk-color-ink); }

.sk-consent-choices-help,
.sk-consent-optout p { margin: 0; font-size: var(--sk-font-size-sm); color: var(--sk-color-ink-soft); }

.sk-consent-optout { display: grid; gap: .5rem; margin-top: .35rem; padding-top: .75rem; border-top: 1px solid var(--sk-color-border); }

.sk-customer-portal-privacy { display: grid; gap: 1rem; padding: 1.25rem; }

.sk-customer-portal-privacy-requests { display: grid; gap: .6rem; }

.sk-customer-portal-privacy-requests h3,
.sk-customer-portal-privacy-requests p { margin: 0; }

.sk-customer-portal-privacy-actions,
.sk-customer-portal-privacy-confirm { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }

.sk-customer-portal-privacy-list { display: grid; gap: .4rem; margin: 0; padding: 0; list-style: none; }

.sk-customer-portal-privacy-list li { display: grid; gap: .1rem; }

.sk-customer-portal-privacy-list span { font-size: var(--sk-font-size-sm); color: var(--sk-color-ink-soft); }

/* «Meld feil» på Min side (bug-hunter/public/PublicReportDialog.tsx). */

.sk-customer-portal-report-footer { margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid var(--sk-color-border-soft); display: flex; justify-content: flex-end; }

.sk-customer-portal-report-link { min-height: 2.75rem; border: 0; padding: .35rem .5rem; background: transparent; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }

.sk-customer-portal-report-link:hover { color: var(--sk-color-primary); }

.sk-customer-portal-report-link:focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: 2px; border-radius: .35rem; }

.sk-customer-portal-report { width: min(34rem, calc(100vw - 2rem)); max-height: calc(100dvh - 2rem); padding: 1.25rem; border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: #fff; color: var(--sk-color-ink); box-shadow: 0 24px 60px rgb(35 33 44 / 18%); }

.sk-customer-portal-report::backdrop { background: rgb(35 33 44 / 40%); }

.sk-customer-portal-report-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }

.sk-customer-portal-report-head h2 { margin: 0; font-size: var(--sk-type-section-title); }

.sk-customer-portal-report-form,
.sk-customer-portal-report-done { display: grid; gap: .9rem; justify-items: stretch; }

.sk-customer-portal-report-done { justify-items: start; }

.sk-customer-portal-report-done p { margin: 0; color: var(--sk-color-ink-soft); }

.sk-customer-portal-report-kinds { margin: 0; padding: 0; border: 0; display: grid; gap: .45rem; }

.sk-customer-portal-report-kinds legend { margin-bottom: .45rem; font-weight: var(--sk-font-weight-strong); font-size: var(--sk-font-size-sm); }

.sk-customer-portal-report-kinds label { display: flex; gap: .6rem; align-items: flex-start; padding: .65rem .75rem; border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); cursor: pointer; }

.sk-customer-portal-report-kinds label.is-selected { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }

.sk-customer-portal-report-kinds label:focus-within { outline: 2px solid var(--sk-color-primary); outline-offset: 1px; }

.sk-customer-portal-report-kinds span,
.sk-customer-portal-report-consent span { display: grid; gap: .15rem; }

.sk-customer-portal-report-kinds small,
.sk-customer-portal-report-consent small { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }

.sk-customer-portal-report-field { display: grid; gap: .35rem; font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); }

.sk-customer-portal-report-field textarea { box-sizing: border-box; font: inherit; font-weight: var(--sk-font-weight-body); width: 100%; min-height: 2.75rem; padding: .6rem .7rem; border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-md); resize: vertical; }

.sk-customer-portal-report-field textarea[aria-invalid="true"] { border-color: var(--sk-color-danger); }

.sk-customer-portal-report-consent { display: flex; gap: .6rem; align-items: flex-start; font-size: var(--sk-font-size-sm); }

.sk-customer-portal-report-form > .sk-customer-portal-primary { justify-self: start; }

.sk-customer-portal-contact-card { min-width: 0; padding: 1.15rem 1.4rem; overflow-wrap: anywhere; }

.sk-customer-portal-contact-card h2 { margin: 0 0 .4rem; font-size: var(--sk-type-card-title); }

.sk-customer-portal-contact-card > p { margin: 0; color: var(--sk-color-ink-soft); }

.sk-customer-portal-contact-card + .sk-customer-portal-contact-card { border-top: 1px solid var(--sk-color-border); }

.sk-customer-portal-contact-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .65rem; margin-top: 1rem; }

.sk-customer-portal-contact-actions p { margin: 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

.sk-customer-portal-contact-card .sk-customer-portal-primary { max-width: 100%; margin: 0; text-decoration: none; }

.sk-customer-portal-conversation > header > div { min-width: 0; overflow-wrap: anywhere; }

.sk-customer-portal-conversation-list { display: grid; gap: 1rem; margin: 0; padding: 1.25rem 1.4rem; list-style: none; }

.sk-customer-portal-conversation-list > li { min-width: 0; display: flex; }

.sk-customer-portal-conversation-list > li.is-from-customer { justify-content: flex-end; }

.sk-customer-portal-history-message { min-width: 0; max-width: min(100%, 38rem); padding: 1rem 1.1rem; border: 1px solid var(--sk-color-border-soft); border-radius: 1rem; background: var(--sk-color-canvas); }

.is-from-customer > .sk-customer-portal-history-message { background: var(--sk-color-primary-soft); }

.sk-customer-portal-history-message > strong { display: block; font-size: var(--sk-font-size-sm); overflow-wrap: anywhere; }

.sk-customer-portal-history-message > p { margin: .55rem 0 .8rem; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; }

.sk-customer-portal-history-message > time { display: block; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); line-height: 1.5; overflow-wrap: anywhere; }

.sk-customer-portal-booking-links { display: flex; flex-wrap: wrap; gap: .75rem; padding: 1.5rem; }

.sk-customer-portal-shortcuts > .sk-customer-portal-booking-links { display: flex; }

.sk-customer-portal-booking-links .sk-customer-portal-primary { text-decoration: none; }

.sk-customer-portal-review { grid-column: 1 / -1; min-width: 0; width: 100%; }

.sk-customer-portal-review form { display: grid; gap: 12px; }

.sk-customer-portal-review label { display: grid; gap: 6px; }

.sk-customer-portal-review input:not([type="checkbox"]), .sk-customer-portal-review textarea, .sk-customer-portal-review select { box-sizing: border-box; width: 100%; max-width: 100%; }

.sk-customer-portal-review textarea { min-height: 100px; resize: vertical; }

.sk-customer-portal-review form h4, .sk-customer-portal-review form p { margin: 0; }

.sk-customer-portal-review label.sk-customer-portal-review-consent { display: flex; align-items: flex-start; gap: .65rem; }

.sk-customer-portal-review-consent input { flex: none; margin: .25rem 0 0; }

.sk-customer-portal-review input:not([type="checkbox"]), .sk-customer-portal-review textarea, .sk-customer-portal-review select { min-height: 2.75rem; padding: .65rem .75rem; font: inherit; border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); color: var(--sk-color-ink); }

.sk-customer-portal-review input:focus-visible, .sk-customer-portal-review textarea:focus-visible, .sk-customer-portal-review select:focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: 2px; }

.sk-customer-portal-sidebar :focus-visible { outline-color: var(--sk-color-focus-ring-inverse); }

/* Keep intrinsic form widths inside the existing mobile profile cards. */

.sk-customer-portal-profile form,
.sk-customer-portal-form-grid label { min-width: 0; }

.sk-customer-portal-form-grid input { min-width: 0; box-sizing: border-box; }

@media (max-width: 40rem) {
  .sk-customer-portal-profile form > header,
  .sk-customer-portal-section > header { flex-direction: column; align-items: flex-start; gap: var(--sk-space-2); }
  .sk-customer-portal-profile form > header h2,
  .sk-customer-portal-section > header h2 { min-width: 0; overflow-wrap: anywhere; }
  .sk-customer-portal-bottom-nav button { padding-inline: .125rem; overflow-wrap: anywhere; }
  .sk-customer-portal-bottom-nav button > span { white-space: normal; }
}

.sk-customer-portal-appointment > .sk-customer-portal-alert,
.sk-customer-portal-appointment > p { grid-column: 1 / -1; min-width: 0; }

.sk-customer-portal-confirmation-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1rem; }

.sk-customer-portal-appointment > .sk-customer-portal-alert p { margin: .65rem 0; font-weight: var(--sk-font-weight-body); }

.sk-customer-portal-confirmation-actions > .sk-customer-portal-primary,
.sk-customer-portal-confirmation-actions > .sk-customer-portal-secondary { min-height: 2.75rem; }

.sk-customer-portal-receipt-actions { display: flex; flex-wrap: wrap; gap: .6rem; }

.sk-customer-portal-receipt-actions > button { max-width: 100%; overflow-wrap: anywhere; }

@media (max-width: 680px) {
  .sk-customer-portal-receipt-actions > button { flex: 1 1 100%; }
}

.sk-customer-portal-receipt-actions > button { min-height: 2.75rem; }

.sk-customer-portal-receipt-actions > button[aria-disabled="true"] { opacity: .55; cursor: wait; }

.sk-customer-portal-return-download { flex-direction: column; gap: .2rem; }

.sk-customer-portal-return-download small { font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-body); }

/* Consistent spacing and readable content across customer pages. */

.sk-customer-portal-page-heading + .sk-customer-portal-section { margin-top: 0; }

.sk-customer-portal-section + .sk-customer-portal-feature { margin-top: 1.25rem; }

.sk-customer-portal-privacy > header { padding: 0 0 1rem; min-height: 0; }

.sk-customer-portal-summary-row span { display: grid; }

.sk-customer-portal-summary-row small { display: block; min-width: 0; }

.sk-customer-portal-summary-row strong,
.sk-customer-portal-feature h2,
.sk-customer-portal-feature p,
.sk-customer-portal-appointment h3,
.sk-customer-portal-auth-card > p { overflow-wrap: anywhere; }

.sk-customer-portal-feature a { display: inline-flex; align-items: center; width: fit-content; min-height: 2.75rem; color: var(--sk-color-primary); font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); }

.sk-customer-portal-points-row > span:first-child,
.sk-customer-portal-purchase-detail li span { min-width: 0; overflow-wrap: anywhere; }

.sk-customer-portal-purchase-detail li > strong { flex-shrink: 0; }

.sk-customer-portal-receipt-actions + .sk-customer-portal-alert { margin-top: .75rem; }

.sk-customer-portal-photo-panel { position: relative; }

.sk-customer-portal-appointment-actions > a,
.sk-customer-portal-appointment-actions > button { min-height: 2.75rem; display: inline-flex; align-items: center; }

@media (min-width: 901px) and (max-width: 1100px) {
  .sk-customer-portal-overview-grid { grid-template-columns: 1fr; }
  .sk-customer-portal-shortcuts > div { grid-template-columns: 1fr; }
}

.sk-customer-portal-main > .sk-customer-portal-alert { margin: 1rem clamp(1.25rem, 5vw, 4.5rem); }

.sk-customer-portal-report-footer { padding-inline: clamp(1.25rem, 5vw, 4.5rem); }

.sk-customer-portal-review [role="alert"] { padding: 1rem; border-radius: var(--sk-radius-md); background: var(--sk-color-canvas); }

.sk-customer-portal-privacy-disclosure { min-width: 0; border-top: 1px solid var(--sk-color-border-soft); padding-top: 1rem; }

.sk-customer-portal-privacy-disclosure > summary { padding: .5rem 0; cursor: pointer; font-weight: var(--sk-font-weight-strong); }

.sk-customer-portal-privacy-disclosure[open] > summary { margin-bottom: .75rem; }

/* Complete series preview and recovery controls share portal spacing. */

.sk-customer-series-move { overflow-wrap: anywhere; }

.sk-customer-series-move button { min-height: 2.75rem; margin: .4rem .5rem .4rem 0; max-width: 100%; white-space: normal; }

.sk-customer-series-move input[type="datetime-local"] { display: block; width: 100%; max-width: 24rem; box-sizing: border-box; min-height: 2.75rem; margin-top: .4rem; }

.sk-customer-series-move ul { padding-left: 1.25rem; }

.sk-customer-series-move li { margin-bottom: .75rem; }

.sk-customer-series-move { padding: 1.25rem; }

.sk-customer-portal :is(p, label, input, textarea, select),
.sk-customer-portal-login :is(p, label, input, textarea, select) { font-size: var(--sk-font-size-lg); line-height: 1.5; }

.sk-customer-portal :is(small, time),
.sk-customer-portal-history-message > time { font-size: var(--sk-font-size-sm); }

.sk-customer-portal :where(button, summary),
.sk-customer-portal-login :where(button, summary) { min-height: 2.75rem; }

.sk-customer-portal :where(a) { min-height: 2.75rem; display: inline-flex; align-items: center; }

.sk-customer-portal-privacy-disclosure > summary { display: flex; align-items: center; gap: .5rem; }

.sk-customer-portal-privacy-disclosure > summary::before { content: "+"; }

.sk-customer-portal-privacy-disclosure[open] > summary::before { content: "−"; }

.sk-customer-portal-page > .sk-customer-portal-auth-card { box-sizing: border-box; }

@media (max-width: 900px) {
  .sk-customer-portal { padding-top: env(safe-area-inset-top); padding-bottom: var(--sk-customer-nav-height, calc(8rem + env(safe-area-inset-bottom))); }
  .sk-customer-portal-bottom-nav { display: flex; flex-wrap: wrap; }
  .sk-customer-portal-bottom-nav button { flex: 1 1 auto; min-inline-size: max-content; min-height: 3.5rem; padding-inline: var(--sk-space-2); font-size: var(--sk-font-size-sm); line-height: 1.35; }
  .sk-customer-portal-bottom-nav button > span { max-width: 100%; overflow-wrap: normal; white-space: nowrap; }
}

/* The status and actions use the whole appointment row when text is enlarged. */

@media(max-width:64rem){.sk-customer-portal-appointment-actions{grid-column:1/-1;min-width:0;max-width:100%;align-items:flex-start}.sk-customer-portal-status{max-width:100%;white-space:normal;overflow-wrap:normal}}

.sk-customer-portal-appointment > p > button{display:block;max-inline-size:100%;min-width:44px;min-height:44px;white-space:normal;overflow-wrap:normal;color:var(--sk-color-ink);background:var(--sk-color-surface)}

.sk-customer-portal-section > button{color:var(--sk-color-ink);background:var(--sk-color-surface)}

/* Timekortets innhold stabler etter sin egen plass og faktisk tekststørrelse. */

.sk-customer-portal-main { container: portal-content / inline-size; }

@container portal-content (max-width: 40em) {
  .sk-customer-portal-appointment { grid-template-columns: 3rem minmax(0, 1fr); align-items: start; }
  .sk-customer-portal-appointment > .sk-customer-portal-status { grid-column: 2; }
  .sk-customer-portal-appointment-actions { grid-column: 2; align-items: flex-start; }
}

/* Guest browsing and voluntary account sign-in share the existing portal. */

.customer-login-sheet{width:min(480px,calc(100% - 24px));max-height:90dvh;margin:auto;padding:24px;border:1px solid var(--sk-color-border);border-radius:24px;background:var(--sk-color-surface,#fff);color:var(--sk-color-text,#202420);overflow-y:auto}

.customer-login-sheet::backdrop{background:#18271f88;backdrop-filter:blur(3px)}

.customer-login-close{display:grid;place-items:center;margin-left:auto;width:44px;height:44px;border:0;border-radius:50%;background:#f0f1ed;color:inherit}

.customer-login-sheet .sk-customer-portal-login{min-height:0;padding:0;background:transparent}

.customer-login-sheet .sk-customer-portal-auth-card{border:0;box-shadow:none;padding:12px 0}

@media(max-width:600px){.customer-login-sheet{width:100%;max-width:100%;max-height:90dvh;margin:auto 0 0;padding:24px 24px calc(24px + env(safe-area-inset-bottom,0px));border-radius:28px 28px 0 0;box-sizing:border-box}.booking-page--native .booking-account-dialog{width:100%;max-width:100%;max-height:90dvh;margin:auto 0 0;border-radius:28px 28px 0 0;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}}

.customer-review-invitation{display:flex;align-items:center;gap:16px;padding:20px;margin-bottom:20px;border:1px solid var(--sk-color-border);border-radius:20px;background:var(--sk-color-surface,#fff)}

.customer-review-invitation>div{flex:1}

.customer-review-invitation p{margin:6px 0;font-size:var(--sk-interface-type-4)}

.customer-review-visit{padding:20px;border-radius:16px;background:var(--sk-color-canvas);margin:20px 0}

.customer-review-visit p{margin:8px 0}

.customer-review-stars{border:0;padding:16px 0;margin:0}

.customer-review-stars legend{font-weight:var(--sk-font-weight-strong)}

.customer-review-stars [role=radiogroup]{display:flex;justify-content:space-between;gap:8px;margin:20px 0}

.customer-review-stars label{position:relative;display:grid;place-items:center;min-width:44px;min-height:48px;cursor:pointer;color:var(--sk-color-accent,#82667f)}

.customer-review-stars input{position:absolute;opacity:0;width:100%;height:100%;margin:0}

.customer-review-stars svg{width:34px;height:34px;pointer-events:none}

.customer-review-stars label:focus-within{outline:2px solid currentColor;border-radius:8px}

.customer-review-stars .sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}

.customer-review-sheet textarea{width:100%;box-sizing:border-box;min-height:90px}

@media(max-width:600px){.customer-review-invitation{flex-wrap:wrap}.customer-review-invitation>button{width:100%}}

.customer-review-optional{margin:16px 0}

.customer-review-optional summary{cursor:pointer;font-weight:var(--sk-font-weight-strong);padding:12px 0}

.customer-review-actions{display:flex;gap:12px;padding:16px 0;background:var(--sk-color-surface,#fff)}

.customer-review-actions>button:first-child{flex:1}

.customer-review-sheet .customer-review-actions{position:sticky;bottom:0;margin-bottom:0;border-top:1px solid var(--sk-color-border)}

/* The page already supplies its bottom inset; keep the report link in the same rhythm. */

.sk-customer-portal-report-footer { margin-top: var(--sk-space-4); }

@media (max-width: 900px) {
  .sk-customer-portal-bottom-nav { background: var(--sk-color-surface); }
}

@media (max-width: 64rem) {
 .sk-customer-portal-appointment > .sk-customer-portal-appointment-actions {
   grid-column: 1 / -1;
   align-items: stretch;
 }
 .sk-customer-portal-appointment-actions > :is(a,button) {
   max-inline-size: 100%;
   white-space: normal;
   overflow-wrap: normal;
 }
}

/* Error references and public codes must wrap inside 360 px layouts. */

[role="alert"], .sk-form-error, .sk-terminal-error, .sk-terminal-notice, .sk-customer-portal-alert {
  min-width: 0;
  overflow-wrap: anywhere;
}


/* Skjermer i salongen — signage.
   Bygger på de eksisterende mønstrene: tidslinja arver `sk-field-builder`, og
   redigering ved siden av forhåndsvisning arver `sk-marketing-composer-grid`
   fra markedsføringsstudioet, slik at den som har laget et nyhetsbrev kjenner
   igjen oppsettet. Her ligger bare det som er nytt for signage. */

/* Levende data vs. redigerbar tekst er det viktigste skillet på hele flaten:
   halvparten av lysbildetypene har ingen tekst å skrive inn i det hele tatt. */
.sk-signage-live-note {
  margin: 0;
  padding: var(--sk-space-3);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-info-soft);
  color: var(--sk-color-info);
  display: flex;
  gap: var(--sk-space-2);
  align-items: flex-start;
  font-size: var(--sk-font-size-sm);
  line-height: 1.5;
}
.sk-signage-live-note svg { flex: none; margin-top: .15rem; }
.sk-signage-live-note--kort {
  margin-top: var(--sk-space-2);
  padding: .15rem .55rem;
  border-radius: var(--sk-radius-pill);
  display: inline-flex;
  align-items: center;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
}

.sk-signage-playlists { display: grid; gap: var(--sk-space-3); }
.sk-signage-playlist {
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--sk-space-3);
  align-items: center;
}
.sk-signage-playlist strong { display: block; font-size: var(--sk-font-size-md); }
.sk-signage-playlist p { margin: .2rem 0 0; }

/* `is-utkast` sto her og overstyrte den sentrale regelen i 05-patterns.css,
   slik at «Utkast» var gult på skiltflaten og grått overalt ellers. Den
   kanoniske fargen eies av statussettet der; her blir bare de to statusene
   som ikke finnes andre steder. */
.sk-status-badge.is-frakoblet { background: var(--sk-color-danger-soft, var(--sk-color-surface-hover)); color: var(--sk-color-danger, var(--sk-color-ink-soft)); }
.sk-status-badge.is-lagret { background: var(--sk-color-success-soft); color: var(--sk-color-success); }

/* Redigeringsflaten for presentasjonen trenger plass til skjema OG en 16:9
   forhåndsvisning ved siden av. En vanlig skuff ville presset previewen ned til
   en miniatyr ingen kan lese teksten i. */
.sk-drawer--signage { width: min(94rem, 100vw); }
/* Designeren er en arbeidsflate, ikke et panel.
   Den lå som en skuff som gled inn fra siden — og selv på 110 rem leses den
   da som noe midlertidig man kikker inn i, ikke et sted man jobber. Her
   dekker den hele flaten, uten glidekant, slik at lerretet får plassen og
   verktøyene får stå i ro. */
.sk-drawer--designer {
  width: 100vw;
  max-width: 100vw;
  border-radius: 0;
  box-shadow: none;
}

/* Skjermstudioet bygger på den opprinnelige Invested-designeren, men er lagt
   inn i salongens egen arbeidsflyt: malvalg, lerret og egenskaper er synlige i
   samme flate. Lerretet er alltid 16:9 og bruker container-enheter, så tekst og
   håndtak skalerer sammen med TV-bildet. */
.sk-designer-studio { display: grid; gap: var(--sk-space-4); min-width: 0; }
.sk-designer-arbeidsflate {
  display: grid;
  grid-template-columns: 10rem minmax(28rem, 1fr) 19rem;
  gap: var(--sk-space-3);
  align-items: start;
  min-width: 0;
}
.sk-designer-verktøy,
.sk-designer-egenskaper {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  display: grid;
  gap: var(--sk-space-2);
  align-content: start;
}
.sk-designer-verktøy { position: sticky; top: 0; }
.sk-designer-egenskaper { position: sticky; top: 0; max-height: calc(100vh - 11rem); overflow-y: auto; }
.sk-designer-verktøy > button,
.sk-designer-format > button {
  min-height: 2.75rem;
  padding: .55rem .7rem;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  cursor: pointer;
}
.sk-designer-verktøy > button:hover,
.sk-designer-verktøy > button:focus-visible,
.sk-designer-format > button:hover,
.sk-designer-format > button:focus-visible,
.sk-designer-format > button.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-designer-verktøy svg,
.sk-designer-format svg { width: 1.1rem; height: 1.1rem; }
.sk-designer-scene { min-width: 0; display: grid; gap: var(--sk-space-2); }
.sk-designer-lerret {
  container-type: inline-size;
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border: 1px solid var(--sk-color-border-interactive);
  border-radius: var(--sk-radius-md);
  box-shadow: var(--sk-shadow-card);
  user-select: none;
  touch-action: none;
}
.sk-designer-blokk { cursor: move; }
.sk-designer-lerret.is-kompakt .sk-designer-blokk { cursor: default; }
.sk-designer-blokk.is-valgt {
  outline: 3px solid var(--sk-color-primary);
  outline-offset: 2px;
  z-index: 5;
}
.sk-designer-tekst {
  margin: 0;
  white-space: pre-wrap;
  overflow: hidden;
  display: flex;
  align-items: center;
}
.sk-designer-punktliste {
  margin: 0;
  padding: .2em 0 .2em 1.15em;
  overflow: hidden;
  display: grid;
  align-content: start;
  gap: .35em;
}
.sk-designer-bildeplass {
  border: 2px dashed rgb(39 92 204 / 45%);
  border-radius: 1.2cqw;
  background: rgb(255 255 255 / 52%);
  color: #82667f;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: .5rem;
  font-size: var(--sk-type-signage-preview);
  font-family: var(--sk-font);
}
.sk-designer-bildeplass svg { width: 4cqw; height: 4cqw; }
.sk-designer-blokk img,
.sk-designer-blokk video {
  display: block;
  object-fit: cover;
  border-radius: 1.2cqw;
}
.sk-designer-flate { display: block; border-radius: 1.4cqw; }
.sk-designer-storrelse {
  position: absolute;
  right: .18rem;
  bottom: .18rem;
  width: 1.15rem;
  height: 1.15rem;
  padding: 0;
  border: 2px solid white;
  border-radius: 50%;
  background: var(--sk-color-primary);
  cursor: nwse-resize;
}
.sk-designer-inspektorhode {
  margin-top: var(--sk-space-2);
  padding-top: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-designer-laghandlinger {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-1);
}
.sk-designer-laghandlinger .sk-button {
  min-width: 0;
  padding-inline: .45rem;
}
.sk-designer-lagliste {
  display: grid;
  gap: var(--sk-space-1);
  padding-block: var(--sk-space-2);
  border-block: 1px solid var(--sk-color-border);
}
.sk-designer-lagliste > button {
  min-width: 0;
  padding: .5rem .6rem;
  border: 1px solid transparent;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  color: var(--sk-color-ink);
  text-align: left;
  display: grid;
  gap: .1rem;
  cursor: pointer;
}
.sk-designer-lagliste > button:hover,
.sk-designer-lagliste > button:focus-visible,
.sk-designer-lagliste > button.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-designer-lagliste small {
  overflow: hidden;
  color: var(--sk-color-ink-soft);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-designer-format { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--sk-space-1); }
.sk-designer-geometri { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sk-space-2); }
.sk-designer-geometri .sk-field { gap: .2rem; }
.sk-designer-format > button { justify-content: center; padding: .45rem; }
.sk-designer-tips { display: grid; gap: var(--sk-space-1); color: var(--sk-color-ink-soft); }
.sk-designer-tips strong { color: var(--sk-color-ink); }

.sk-designer-maler {
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface-subtle);
  display: grid;
  gap: var(--sk-space-3);
}
.sk-designer-malgalleri {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
  gap: var(--sk-space-3);
}
.sk-designer-malgalleri > button {
  min-width: 0;
  padding: var(--sk-space-2);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  display: grid;
  gap: var(--sk-space-2);
  text-align: left;
  cursor: pointer;
}
.sk-designer-malgalleri > button:hover,
.sk-designer-malgalleri > button:focus-visible { border-color: var(--sk-color-primary); box-shadow: var(--sk-shadow-card); }
.sk-designer-malgalleri .sk-designer-lerret { pointer-events: none; border-radius: var(--sk-radius-sm); }
.sk-designer-malgalleri strong { font-size: var(--sk-font-size-sm); }
.sk-designer-malgalleri span { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); line-height: 1.4; }
.sk-designer-lerret.is-kompakt .sk-designer-bildeplass { border-width: 1px; }

.sk-signage-timeline {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-signage-timeline li {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: var(--sk-space-3);
  align-items: center;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  cursor: grab;
}
.sk-signage-timeline li.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-surface);
  box-shadow: inset 3px 0 0 var(--sk-color-primary);
}
.sk-signage-timeline__velg {
  border: 0;
  background: transparent;
  text-align: left;
  padding: 0;
  cursor: pointer;
  display: grid;
  gap: .15rem;
  min-width: 0;
}
.sk-signage-timeline__velg strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Previewen skal være en tro miniatyr av en 1920x1080-skjerm, ikke en
   omflytting av innholdet: motoren skalerer selv scenen til rammen den får. */
.sk-signage-preview__ramme {
  aspect-ratio: 16 / 9;
  width: 100%;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-canvas);
  box-shadow: var(--sk-shadow-card);
  overflow: hidden;
  display: grid;
  place-items: center;
  position: relative;
}
.sk-signage-preview__ramme iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.sk-signage-preview__medium img,
.sk-signage-preview__medium video {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  background: #0c0d0f;
}
.sk-signage-preview__laster {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: var(--sk-space-2);
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-signage-preview__handlinger {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-2);
}
/* Previewen står stille mens man skriver i skjemaet under den på små skjermer. */
.sk-signage-preview { position: sticky; top: 0; align-self: start; }

/* Signage er visuelt arbeid. Previewen får mer plass enn feltene, mens
   markedsføringskomponisten beholder sin opprinnelige fordeling. */
.sk-signage-editor-grid {
  grid-template-columns: minmax(24rem, .85fr) minmax(34rem, 1.15fr);
}

.sk-signage-editing-view {
  display: grid;
  gap: var(--sk-space-5);
  min-width: 0;
}
.sk-signage-slide-strip {
  display: grid;
  gap: var(--sk-space-3);
  min-width: 0;
}
.sk-signage-slide-strip__heading {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sk-space-2);
}
.sk-signage-slide-strip__items {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(9rem, 11rem);
  gap: var(--sk-space-2);
  overflow-x: auto;
  padding: 0 0 var(--sk-space-2);
  scroll-snap-type: x proximity;
}
.sk-signage-slide-strip__items > button {
  min-width: 0;
  padding: var(--sk-space-2);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  color: var(--sk-color-ink);
  display: grid;
  gap: var(--sk-space-2);
  text-align: left;
  cursor: pointer;
  scroll-snap-align: start;
}
.sk-signage-slide-strip__items > button:hover,
.sk-signage-slide-strip__items > button:focus-visible {
  border-color: var(--sk-color-primary);
}
.sk-signage-slide-strip__items > button.is-active {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  box-shadow: inset 0 0 0 1px var(--sk-color-primary);
}
.sk-signage-slide-strip__preview {
  aspect-ratio: 16 / 9;
  padding: var(--sk-space-2);
  border-radius: var(--sk-radius-sm);
  background: linear-gradient(145deg, #111722, #243348);
  color: #fff;
  display: grid;
  align-content: space-between;
}
.sk-signage-slide-strip__preview b { font-size: var(--sk-font-size-lg); }
.sk-signage-slide-strip__preview small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: rgba(255, 255, 255, .76);
}
.sk-signage-slide-strip__label {
  min-width: 0;
  display: grid;
  gap: .1rem;
}
.sk-signage-slide-strip__label strong,
.sk-signage-slide-strip__label small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sk-signage-slide-strip__label small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}

.sk-signage-status-line {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
  align-items: center;
}

.sk-field.is-valgt > label { color: var(--sk-color-primary); font-weight: var(--sk-font-weight-strong); }
.sk-field.is-valgt > input,
.sk-field.is-valgt > textarea { border-color: var(--sk-color-primary); }

/* To fargefelt ved siden av hverandre: primær og blekk hører sammen, og settes
   alltid i forhold til hverandre. */
.sk-signage-fargevalg {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  gap: var(--sk-space-3);
}

/* Valget mellom salongens egne data og eksempeldata står rett under ramma, der
   spørsmålet «er dette ekte?» oppstår. */
.sk-signage-preview__valg {
  display: grid;
  gap: var(--sk-space-1);
}

@media (max-width: 60rem) {
  .sk-drawer--signage .sk-drawer__header {
    padding-block: var(--sk-space-3);
    align-items: flex-start;
    flex-wrap: wrap;
    gap: var(--sk-space-2);
  }
  .sk-drawer--signage .sk-drawer__header-actions {
    flex-wrap: wrap;
    justify-content: flex-end;
  }
  .sk-signage-playlist { grid-template-columns: 1fr; }
  .sk-signage-preview { position: static; }
  .sk-signage-fargevalg { grid-template-columns: 1fr; }
  .sk-signage-editor-grid { grid-template-columns: 1fr; }
  .sk-designer-arbeidsflate { grid-template-columns: 1fr; }
  .sk-designer-scene { order: -1; }
  .sk-designer-verktøy {
    position: static;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .sk-designer-verktøy > strong { grid-column: 1 / -1; }
  .sk-designer-egenskaper { position: static; max-height: none; }
}

@media (max-width: 38rem) {
  .sk-drawer--signage .sk-drawer__header-actions { width: 100%; justify-content: flex-start; }
  .sk-designer-verktøy { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sk-designer-malgalleri { grid-template-columns: 1fr; }
}

/* ── Lyd i salongen ──────────────────────────────────────────────────────
   Lydflaten arver skjermflatens mønstre (kort, tabeller, sk-field). Her ligger
   bare det som er nytt: sveipefunnene, den ærlige tomtilstanden, og de korte
   forklaringene som må stå RETT under valget de gjelder — flyttes de ned i en
   hjelpetekst nederst, leser ingen dem før musikken uteblir. */
.sk-lyd { display: grid; gap: var(--sk-space-5); }

.sk-lyd-seksjon {
  margin-top: var(--sk-space-5);
  padding-top: var(--sk-space-4);
  border-top: 1px solid var(--sk-color-border-soft);
  display: grid;
  gap: var(--sk-space-3);
}
.sk-lyd-seksjon > h3 { margin: 0; font-size: var(--sk-type-card-title); }

/* Knappene i en tabellrad og under et skjema er samme sak: en rad som skal
   brekke i stedet for å presse tabellen bredere enn skjermen. */
.sk-lyd-knapperad {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
  align-items: flex-end;
}

.sk-lyd-feilliste { margin: 0; }
.sk-lyd-feilliste p { margin: 0 0 var(--sk-space-1); }
.sk-lyd-feilliste p:last-child { margin-bottom: 0; }

/* Forklaringen av et valg, ikke en feil: samme ro som resten av flaten. */
.sk-lyd-forklaring {
  margin: 0;
  padding: var(--sk-space-3);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: 1.5;
}

/* Tomtilstanden i sveipedialogen forklarer HVORFOR lista er tom. Den er derfor
   en boks med tekst, ikke en grå strek der ingen ser at det står noe. */
.sk-lyd-tomstatus {
  padding: var(--sk-space-4);
  border: 1px dashed var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  display: grid;
  gap: var(--sk-space-2);
}
.sk-lyd-tomstatus p { margin: 0; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); line-height: 1.5; }

.sk-lyd-funnliste,
.sk-lyd-sporliste {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-lyd-funnliste li,
.sk-lyd-sporliste li {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--sk-space-3);
  align-items: center;
}
.sk-lyd-funnliste li > div { display: grid; gap: .1rem; min-width: 0; }
.sk-lyd-sporliste { counter-reset: lydspor; }
.sk-lyd-sporliste li { counter-increment: lydspor; }
.sk-lyd-sporliste li > span:first-child::before {
  content: counter(lydspor) ". ";
  color: var(--sk-color-ink-soft);
}

.sk-lyd-dager {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
  gap: var(--sk-space-1);
}
.sk-lyd-dager label { display: flex; align-items: center; gap: var(--sk-space-2); min-height: 2.5rem; }
.sk-lyd-dager input { width: 1.25rem; height: 1.25rem; accent-color: var(--sk-color-primary); }

/* Kontrollvert og SSH-bruker gjelder én installasjon av hundre. De ligger
   sammenslått så de ikke ser ut som noe alle må fylle ut. */
.sk-lyd-avansert > summary {
  cursor: pointer;
  padding: var(--sk-space-2) 0;
  font-weight: var(--sk-font-weight-strong);
  color: var(--sk-color-ink-soft);
}
.sk-lyd-avansert[open] { display: grid; gap: var(--sk-space-3); }

@media (max-width: 60rem) {
  .sk-lyd-funnliste li,
  .sk-lyd-sporliste li { grid-template-columns: 1fr; }
}

/* Ukeplan, varsler og fjernstyring — flatene som styrer SKJERMENE.
   Alle tre bor i den samme skjermsiden, og de arver knapper, felter og kort
   derfra. Her ligger bare de tre tingene som ikke finnes fra før: dagbrikkene,
   konfliktlista og forhåndsvisningen av et varsel. */

/* Man–søn som brikker framfor sju avkrysningsbokser: uka leses i én linje, og
   «man, tir, ons, tor, fre» er ett blikk i stedet for fem. */
.sk-signage-dagvalg { border: 0; margin: 0; padding: 0; display: grid; gap: var(--sk-space-2); }
.sk-signage-dagvalg legend {
  padding: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-signage-dagvalg > div { display: flex; flex-wrap: wrap; gap: var(--sk-space-2); }
.sk-signage-dagvalg button {
  min-width: 3.25rem;
  min-height: 2.75rem;
  padding: 0 var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink-soft);
  font: inherit;
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-signage-dagvalg button.is-valgt {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
}
.sk-signage-dagvalg label { display: flex; align-items: center; gap: var(--sk-space-2); min-height: 2.5rem; }
.sk-signage-dagvalg input[type="checkbox"] {
  width: 1.25rem;
  height: 1.25rem;
  accent-color: var(--sk-color-primary);
}

.sk-signage-planrad {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: var(--sk-space-3);
}

.sk-signage-konflikter { display: grid; gap: var(--sk-space-3); margin-top: var(--sk-space-4); }
.sk-signage-konflikter h3 { margin: 0; font-size: var(--sk-type-card-title); color: var(--sk-color-ink-soft); }
.sk-signage-konfliktliste,
.sk-signage-varselliste { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sk-space-2); }
.sk-signage-konfliktliste li,
.sk-signage-varselliste li {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: var(--sk-space-3);
  align-items: center;
}
.sk-signage-konfliktliste li { grid-template-columns: minmax(0, 1fr) auto; }
.sk-signage-konfliktliste li > div,
.sk-signage-varselliste li > div { display: grid; gap: .1rem; min-width: 0; }

/* Varseltypene er tre valg med hver sin konsekvens, ikke tre ord i en
   nedtrekksmeny: forskjellen på en tekstlinje og en nødovertakelse må stå å
   lese FØR den som sender trykker. */
.sk-signage-varseltyper { border: 0; margin: 0 0 var(--sk-space-4); padding: 0; display: grid; gap: var(--sk-space-2); }
.sk-signage-varseltyper legend {
  padding: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-signage-varseltyper > div {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: var(--sk-space-2);
}
.sk-signage-varseltyper button {
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  color: inherit;
  font: inherit;
  text-align: left;
  display: grid;
  gap: .2rem;
  cursor: pointer;
}
.sk-signage-varseltyper button.is-valgt {
  border-color: var(--sk-color-primary);
  box-shadow: inset 0 0 0 1px var(--sk-color-primary);
}
.sk-signage-varseltyper small { color: var(--sk-color-ink-soft); line-height: 1.4; }

/* «Slik ser det ut» er ikke en illustrasjon: den står i de samme fargene og
   den samme plasseringen som varselet får på veggen. */
.sk-signage-varselvisning {
  margin-bottom: var(--sk-space-4);
  padding: var(--sk-space-4);
  min-height: 5.5rem;
  border-radius: var(--sk-radius-md);
  background: #111827;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-weight: var(--sk-font-weight-strong);
}
.sk-signage-varselvisning.is-bottom_ticker {
  align-items: flex-end;
  justify-content: flex-start;
  padding: 0;
  background: var(--sk-color-surface-hover);
  color: var(--sk-color-ink);
}
.sk-signage-varselvisning.is-bottom_ticker span {
  width: 100%;
  padding: var(--sk-space-2) var(--sk-space-4);
  background: #111827;
  color: #fff;
  border-radius: 0 0 var(--sk-radius-md) var(--sk-radius-md);
  text-align: left;
}
.sk-signage-varselvisning.is-emergency_takeover { background: var(--sk-color-danger); font-size: var(--sk-font-size-lg); }

.sk-signage-fjernstyring { display: grid; gap: var(--sk-space-2); min-width: 18rem; }
.sk-signage-fjernstyring .sk-hint { margin: 0; }

@media (max-width: 60rem) {
  .sk-signage-varselliste li { grid-template-columns: 1fr; }
  .sk-signage-fjernstyring { min-width: 0; }
}

/* Avspillingslogg (proof-of-play) */
.sk-signage-avspillingslogg { display: grid; gap: var(--sk-space-3); }
.sk-signage-avspillingsliste { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--sk-space-2); }

/* ── Nytt lysbilde: galleriet ─────────────────────────────────────────────
   Alle veiene til et nytt lysbilde samlet på ett sted, gruppert etter hva de
   er: levende data, egen tekst, og de to no-code-måtene (beskriv / design).
   Kortene arver ikke feltbyggeren — de er valg, ikke et skjema. */
.sk-signage-galleri { display: grid; gap: var(--sk-space-5); min-width: 0; }
.sk-signage-galleri__gruppe { display: grid; gap: var(--sk-space-3); }
.sk-signage-galleri__hode { display: grid; gap: .15rem; }
.sk-signage-galleri__hode h3 { margin: 0; font-size: var(--sk-type-card-title); }
.sk-signage-galleri__hode .sk-hint { margin: 0; }
.sk-signage-valgkort {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
  gap: var(--sk-space-3);
}
.sk-signage-valgkort__kort {
  display: grid;
  gap: var(--sk-space-2);
  align-content: start;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
  color: var(--sk-color-ink);
  text-align: left;
  cursor: pointer;
}
.sk-signage-valgkort__kort:hover,
.sk-signage-valgkort__kort:focus-visible { border-color: var(--sk-color-primary); }
.sk-signage-valgkort__kort strong {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  font-size: var(--sk-font-size-md);
}
.sk-signage-valgkort__kort span { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); line-height: 1.4; }
.sk-signage-valgkort__kort .sk-signage-live-note--kort { margin-top: 0; align-self: start; }
.sk-signage-valgkort__kort.is-fremhevet { background: var(--sk-color-primary-soft); border-color: var(--sk-color-primary); }

.sk-signage-ai-panel {
  display: grid;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-primary);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
}

/* Valgt type i skjemaet: erstatter den generiske nedtrekksmenyen når typen
   allerede er valgt i galleriet, med en vei tilbake for å angre valget. */
.sk-signage-valgt-type {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
}
.sk-signage-valgt-type strong { font-size: var(--sk-font-size-md); }
.sk-signage-valgt-type .sk-hint { margin: .1rem 0 0; }

/* Feltgruppene i skjemaet: teksten salongen skriver, og valgene for hvordan
   innholdet vises. Fieldset-rammen gjør skillet synlig uten en tung boks. */
.sk-signage-feltgruppe {
  display: grid;
  gap: var(--sk-space-3);
  margin: 0;
  padding: var(--sk-space-3) var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
}
.sk-signage-feltgruppe > legend {
  padding: 0 var(--sk-space-2);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  color: var(--sk-color-ink-soft);
}

/* Delte layoutregler — én eier.
 *
 * Denne fila finnes fordi den vanligste layoutfeilen i flaten ikke var feil
 * CSS, men *manglende* CSS: en klasse ble skrevet i JSX og aldri definert.
 * Da får containeren ingen `display`, ingen `gap` og ingen luft, og innholdet
 * renner sammen — «09:00–17:00PLANNED», «Berit AasenHead Frisør Oslo»,
 * «0 krukjent i rosteret». Det er samme feil hver gang.
 *
 * Alt her er derfor generelle mønstre, ikke sidepynt. Reglene holdes i sjakk
 * av `styles/undefined-class-contract.test.ts`, som feiler hvis en ny
 * `sk-`-klasse tas i bruk i JSX uten å ha en eier i CSS.
 */

/* ---------------------------------------------------------------------------
 * Filterrad — søk, valg og handlinger over en liste.
 *
 * `sk-table-toolbar` var udefinert; det er derfor «Søk etter rapport»,
 * «Kategori» og «Kun favoritter» lå kant i kant på Rapporter. Begge navnene
 * peker nå på samme eier, og raden brytes i stedet for å klemme seg sammen.
 * ------------------------------------------------------------------------- */
.sk-filter-bar,
.sk-table-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--sk-space-3) var(--sk-space-4);
  margin-bottom: var(--sk-space-6);
}
.sk-filter-bar > *,
.sk-table-toolbar > * {
  min-width: 0;
}
/* Søkefeltet får ta plassen som blir til overs, resten beholder egen bredde. */
.sk-filter-bar > .sk-search-box,
.sk-table-toolbar > .sk-search-box {
  flex: 1 1 18rem;
}
.sk-filter-bar > .sk-field,
.sk-table-toolbar > .sk-field {
  flex: 0 1 14rem;
}
.sk-filter-bar > .sk-button,
.sk-table-toolbar > .sk-button {
  flex: none;
}
.sk-filter-bar__spacer {
  flex: 1;
}
@media (max-width: 44rem) {
  .sk-filter-bar > *,
  .sk-table-toolbar > * {
    flex: 1 1 100%;
  }
}

/* ---------------------------------------------------------------------------
 * Nøkkeltall — ett rutenett for alle KPI-kort.
 *
 * Kravet er at søsken deler bredde og høyde. `auto-fit` + `1fr` gir like
 * spor uansett antall kort, `stretch` gir lik høyde, og ingen posisjon
 * særbehandles — det første kortet er ikke bredere enn de andre.
 * ------------------------------------------------------------------------- */
.sk-kpi-grid,
.sk-pricing-overview,
.sk-stat-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  align-items: stretch;
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-6);
}
.sk-kpi-grid > *,
.sk-pricing-overview > *,
.sk-stat-row > * {
  min-width: 0;
  min-height: 6rem;
  margin: 0;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  display: grid;
  align-content: center;
  justify-items: start;
  gap: var(--sk-space-2);
}
/* Etiketten står alltid på egen linje over verdien. Uten dette renner
   «Varelagerverdi» og beløpet sammen til én streng. */
.sk-kpi-grid small,
.sk-kpi-grid > * > span,
.sk-pricing-overview small,
.sk-pricing-overview strong,
.sk-stat-row small,
.sk-stat-label {
  display: block;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
  line-height: var(--sk-line-copy);
}
.sk-kpi-grid b,
.sk-kpi-grid > * > strong,
.sk-pricing-overview b,
.sk-stat-row strong {
  display: block;
  color: var(--sk-color-ink);
  font-size: var(--sk-font-size-xl);
  font-weight: var(--sk-font-weight-strong);
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.sk-kpi-grid svg,
.sk-pricing-overview svg {
  width: 1.4rem;
  height: 1.4rem;
  color: var(--sk-color-primary);
}
/* Ikon + tekst ved siden av hverandre skal ha luft mellom seg. */
.sk-pricing-overview > * {
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  justify-items: stretch;
  gap: var(--sk-space-4);
}
.sk-stat-row > * {
  justify-items: start;
}

/* ---------------------------------------------------------------------------
 * Meldinger og hjelpetekst.
 * ------------------------------------------------------------------------- */
.sk-alert {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  border: 1px solid var(--sk-color-border);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  line-height: var(--sk-line-copy);
}
.sk-alert > svg {
  flex: none;
  margin-top: 0.15rem;
}
.sk-alert--danger {
  border-color: var(--sk-color-danger);
  background: var(--sk-color-danger-soft);
  color: var(--sk-color-danger);
}
.sk-alert--warning {
  border-color: var(--sk-color-warning);
  background: var(--sk-color-warning-soft);
  color: var(--sk-color-ink);
}
.sk-alert--success {
  border-color: var(--sk-color-success);
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
}

/* Sekundær forklaring under et felt eller ved siden av et navn. Den skal
   leses som metadata, ikke som brødtekst. */
.sk-hint {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  line-height: var(--sk-line-copy);
}
.sk-hint svg {
  flex: none;
  width: 1rem;
  height: 1rem;
}
p.sk-hint {
  display: block;
}

.sk-lead {
  max-width: 70ch;
  margin: 0 0 var(--sk-space-6);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-lg);
  line-height: var(--sk-line-copy);
}

.sk-success-state {
  display: grid;
  justify-items: center;
  align-content: center;
  gap: var(--sk-space-3);
  min-height: 14rem;
  padding: var(--sk-space-8);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
  text-align: center;
}
.sk-success-state strong {
  font-size: var(--sk-font-size-lg);
}
.sk-success-state p {
  margin: 0;
  max-width: 34rem;
  color: var(--sk-color-ink);
}

/* Tekst som bare skal leses av skjermleser. Uten denne regelen ble
   hjelpeteksten stående synlig midt i flaten. */
.sk-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ---------------------------------------------------------------------------
 * Lister og stabler.
 * ------------------------------------------------------------------------- */
.sk-list-stack {
  display: grid;
  gap: var(--sk-space-2);
  margin-block: var(--sk-space-4);
}

/* ---------------------------------------------------------------------------
 * Skjema.
 * ------------------------------------------------------------------------- */
.sk-form-grid--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sk-inline-fields {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--sk-space-3) var(--sk-space-4);
}
.sk-inline-fields > * {
  flex: 1 1 12rem;
  min-width: 0;
}
.sk-field--compact .sk-field,
.sk-field--compact {
  gap: var(--sk-space-1);
}
.sk-field--compact input,
.sk-field--compact select {
  min-height: var(--sk-control-height);
}

/* ---------------------------------------------------------------------------
 * Modal — brukes der en side åpner sin egen dialog uten den delte Drawer-en.
 * Innholdet skal aldri bli bredere enn ruten sin.
 * ------------------------------------------------------------------------- */
.sk-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: var(--sk-z-overlay);
  display: grid;
  place-items: center;
  padding: var(--sk-space-4);
  background: var(--sk-color-overlay);
  overflow-y: auto;
}
.sk-modal-backdrop > * {
  width: min(42rem, 100%);
  max-height: calc(100dvh - 2 * var(--sk-space-4));
  overflow: auto;
  overflow-wrap: anywhere;
}
.sk-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-4);
}
.sk-modal-head h2,
.sk-modal-head h3 {
  margin: 0;
}
.sk-modal-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--sk-space-3);
  margin-top: var(--sk-space-6);
}

/* ---------------------------------------------------------------------------
 * Produktbilder i lister og tabeller.
 * ------------------------------------------------------------------------- */
.sk-product-cell {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  min-width: 0;
}
.sk-product-thumb {
  flex: none;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: var(--sk-radius-sm);
  border: 1px solid var(--sk-color-border-soft);
  background: var(--sk-color-canvas);
  object-fit: cover;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: var(--sk-color-ink-faint);
}
.sk-product-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ---------------------------------------------------------------------------
 * Detaljtopp i en skuff eller studio-flate.
 * ------------------------------------------------------------------------- */
.sk-detail-hero {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-4);
  margin-bottom: var(--sk-space-6);
}
.sk-detail-hero > div {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-1);
}
.sk-drawer-context {
  display: grid;
  gap: var(--sk-space-1);
  margin-bottom: var(--sk-space-5);
  padding: var(--sk-space-4);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink-soft);
}
.sk-drawer-context strong {
  color: var(--sk-color-ink);
}

/* ---------------------------------------------------------------------------
 * Sidebeholdere.
 *
 * Flere sider bruker en egen rotklasse i stedet for `sk-page`. De var uten
 * eier og fikk derfor verken seksjonsavstand eller maksbredde. Alle deler nå
 * samme vertikale rytme som resten av produktet.
 * ------------------------------------------------------------------------- */
.sk-assistant-page,
.sk-availability-page,
.sk-customer-club-page,
.sk-forms-page,
.sk-roster-page,
.sk-my-routine,
.sk-terminal-overview,
.sk-terminal-admin {
  display: grid;
  align-content: start;
  gap: var(--sk-space-6);
  min-width: 0;
}

/* Bounded person selection; long directories do not push the active form down. */
.sk-person-picker { display: grid; align-content: start; gap: var(--sk-space-4); }
.sk-person-picker__list { display: grid; gap: var(--sk-space-2); max-height: 30rem; overflow-y: auto; }
.sk-person-picker__list > button { display: flex; align-items: center; gap: var(--sk-space-2); width: 100%; padding: var(--sk-space-2); border: 0; border-radius: var(--sk-radius-sm); background: transparent; text-align: left; }
.sk-person-picker__list > button.is-active,
.sk-person-picker__list > button:hover { background: var(--sk-color-surface-selected); }
.sk-person-picker__list > button > span { flex: 1; min-width: 0; }
.sk-person-picker__list small { display: block; color: var(--sk-color-ink-soft); }
@media (max-width: 720px) { .sk-person-picker__list { display: none; } }

/* ---------------------------------------------------------------------------
 * Siste skanse: to tekstnoder skal aldri renne sammen.
 *
 * Et `<strong>` fulgt av `<small>` er alltid etikett og verdi, aldri én
 * setning. Der containeren mangler et eget oppsett gir vi dem hver sin linje
 * i stedet for å la dem stå limt inntil hverandre.
 * ------------------------------------------------------------------------- */
:where(span, div, td, li) > strong + small,
:where(span, div, td, li) > small + strong {
  display: block;
}

/* ---------------------------------------------------------------------------
 * Flater som manglet eier.
 * ------------------------------------------------------------------------- */

/* Liste over gjenstående funksjoner i terminalen. Knappene har ikon og en
   etikett med underlinje; uten oppsett sto de tre delene på samme linje. */
/* .sk-terminal-more-grid ligger i terminal/06b-workspace-overview.css. */

/* Kundetreff i drop-in-velgeren. */
.sk-terminal-products-customers {
  margin: var(--sk-space-4) 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: var(--sk-space-2);
}

/* Sperret tid i månedsvisningen skal skille seg fra en avtale, ellers leses
   den som en booking. */
.sk-month-day > div > button.sk-month-blocked-time {
  border-left: 3px solid var(--sk-color-ink-faint);
  background: var(--sk-color-canvas);
  color: var(--sk-color-ink-soft);
  font-style: italic;
}

/* ---------------------------------------------------------------------------
 * Sekundær, teknisk detalj som brukeren selv kan åpne.
 *
 * Rå malvariabler og feltnavn skal være tilgjengelige, men de skal ikke
 * dominere skjermen. De ligger derfor bak en `<details>` i stedet for å
 * være det første — og noen ganger eneste — brukeren ser.
 * ------------------------------------------------------------------------- */
.sk-advanced-details {
  margin-top: var(--sk-space-2);
  padding: var(--sk-space-3) var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-canvas);
}
.sk-advanced-details > summary {
  cursor: pointer;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
  font-weight: var(--sk-font-weight-strong);
}
.sk-advanced-details[open] > summary {
  margin-bottom: var(--sk-space-3);
}
.sk-advanced-details code {
  padding: 0.1rem 0.35rem;
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-surface);
  font-size: var(--sk-font-size-xs);
  overflow-wrap: anywhere;
}

/* ---------------------------------------------------------------------------
 * Knapperader.
 *
 * «Godkjenn» og «Avslå» sto 8 px fra hverandre. Et bomklikk der er ikke en
 * skjønnhetsfeil — det avslår en feriesøknad. En destruktiv knapp får derfor
 * ekstra avstand fra naboen sin, uansett hvilken rad den står i.
 * ------------------------------------------------------------------------- */
:where(.sk-inline-actions, .sk-list-row__actions, .sk-modal-actions, .sk-primary-actions)
  > .sk-button--danger:not(:first-child) {
  margin-left: var(--sk-space-2);
}

/* Table owns horizontal overflow at every width in 02-primitives.css.
   DataTable keeps its existing mobile card layout in 05-patterns.css. */

/* Shared operator-page type scale; module-specific charts and figures keep their own sizing. */
.sk-page > .sk-page-header h1 { font-size: var(--sk-type-page-title); font-weight: var(--sk-font-weight-medium); line-height: var(--sk-line-tight); }
.sk-page > .sk-page-header p:not(.sk-eyebrow) { font-size: var(--sk-font-size-md); line-height: var(--sk-line-copy); margin-bottom: 0; }
.sk-page .sk-card h2, .sk-page .sk-section-heading h2 { font-size: var(--sk-type-section-title); font-weight: var(--sk-font-weight-medium); line-height: var(--sk-line-tight); }
.sk-page .sk-card h3 { font-size: var(--sk-type-card-title); font-weight: var(--sk-font-weight-medium); line-height: var(--sk-line-tight); }
.sk-page > :is(.sk-card, .sk-restored-status-strip, .sk-stat-grid, .sk-kpi-grid, .sk-pill-tabs, .sk-page-toolbar, .sk-card-grid, .sk-loyalty-layout, .sk-operations-registers) { margin-block: 0; min-width: 0; }

/* Keep the three history totals together so the actual history remains visible on phones. */
.sk-kpi-grid.sk-automation-history-totals {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sk-space-2);
  margin-bottom: var(--sk-space-4);
}
.sk-automation-history-totals > * {
  min-height: 0;
  padding: var(--sk-space-3);
  grid-template-rows: 1fr auto;
  gap: var(--sk-space-1);
}

@media (max-width: 360px) {
  .sk-kpi-grid.sk-automation-history-totals { grid-template-columns: minmax(0, 1fr); }
  .sk-automation-history-totals > * {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-rows: auto;
    align-items: center;
  }
}

/* Course availability stays near its action, including employee self-service. */
@media (max-width: 40rem) {
  .sk-kpi-grid.sk-course-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sk-space-2); }
  .sk-kpi-grid.sk-course-summary > * { min-height: 5rem; padding: var(--sk-space-3); gap: var(--sk-space-1); }
  .sk-kpi-grid.sk-course-summary svg { display: none; }
  .sk-kpi-grid.sk-course-summary > * > span { font-size: var(--sk-font-size-xs); }
}

/* Small shared building blocks that components use without a stylesheet of their own
   (guarded by undefined-class-contract.test.ts). */
.sk-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-3); }
.sk-mono { font-family: var(--sk-font-mono); }
.sk-list { display: grid; gap: var(--sk-space-3); margin: 0; padding: 0; list-style: none; }
.sk-list > li { display: grid; gap: var(--sk-space-1); min-width: 0; padding: var(--sk-space-3) 0; border-bottom: 1px solid var(--sk-color-border); }
.sk-list > li:last-child { border-bottom: 0; }
.sk-list > li > p { margin: 0; }
.sk-dpa-banner { display: grid; gap: var(--sk-space-2); padding: var(--sk-space-3) var(--sk-space-4); border: 1px solid var(--sk-color-border); border-radius: var(--sk-card-radius); background: var(--sk-color-surface); }
.sk-dpa-document { display: grid; gap: var(--sk-space-2); max-height: 28rem; padding: var(--sk-space-4); overflow: auto; border: 1px solid var(--sk-color-border); border-radius: var(--sk-card-radius); background: var(--sk-color-surface); overflow-wrap: anywhere; }
.sk-training-embed { width: 100%; max-width: 48rem; }

/* Reusable surfaces own their spacing, including newly composed panels. */
.sk-surface { display: grid; gap: var(--sk-space-3); min-width: 0; padding: var(--sk-space-4); background: var(--sk-color-surface); color: var(--sk-color-ink); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); }
.sk-calm-note { padding: var(--sk-space-3); color: var(--sk-color-ink-soft); background: var(--sk-color-surface-subtle); border-radius: var(--sk-radius-lg); }
.sk-plain-list { display: grid; gap: var(--sk-space-3); padding-inline-start: 0; }
.sk-report-metrics { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,12rem),1fr)); gap: var(--sk-space-4); }
.sk-report-metrics > div { min-width: 0; }
.sk-report-metrics dd { margin-inline-start: 0; }

/* ── Drift → Regnskap og kasse → Dagsoppgjør ────────────────────────────────
   Innstillingene som flyttet fra kasseterminalen. Kortet arver
   `.sk-restored-panel`; her legges bare rutenettet for de tre seksjonene,
   avkrysningsradene og kassapunktene. */

.sk-day-close-admin__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
  gap: var(--sk-space-5);
}

.sk-day-close-admin__grid > section,
.sk-day-close-admin__registers {
  display: grid;
  align-content: start;
  gap: var(--sk-space-3);
}

.sk-day-close-admin h3,
.sk-day-close-admin h4 {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  margin: 0;
}

.sk-day-close-admin h3 svg {
  color: var(--sk-color-primary);
}

.sk-day-close-admin__check {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  min-height: 2.75rem;
  font-weight: var(--sk-font-weight-strong);
}

.sk-day-close-admin__check input {
  width: 1.25rem;
  height: 1.25rem;
}

.sk-day-close-admin__register {
  display: grid;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-lg);
}

.sk-day-close-admin__register > header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
}

.sk-day-close-admin__register > header strong {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
}

.sk-day-close-admin__register p {
  margin: 0;
}

.sk-day-close-admin__float .sk-form-grid {
  grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
}

.sk-day-close-admin__kind {
  display: grid;
  gap: var(--sk-space-2);
  margin: 0;
  padding: 0;
  border: 0;
}

.sk-day-close-admin__kind legend {
  margin-bottom: var(--sk-space-2);
  font-weight: var(--sk-font-weight-strong);
}

/* «Dagens tall» (X-rapport) for leder, under kassapunktet. Flyttet fra
   kasseterminalen 2026-09-22. Samme rader som resten av kortet. */
.sk-kassa-x-report {
  display: grid;
  gap: var(--sk-space-2);
  margin-top: var(--sk-space-3);
}
.sk-kassa-x-report dl {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  gap: var(--sk-space-3);
  margin: 0;
}
.sk-kassa-x-report dl > div {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-kassa-x-report dt {
  color: var(--sk-color-ink-soft);
}
.sk-kassa-x-report dd {
  margin: 0;
  font-weight: var(--sk-font-weight-strong);
  font-variant-numeric: tabular-nums;
}

/* Svarmodus for Nora (Drift → KI-resepsjon) og Spotify (Skjermer → Lyd):
   flyttet fra kasseterminalen, for daglig leder. */
.sk-app-setting {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-app-setting fieldset {
  display: grid;
  gap: var(--sk-space-2);
  margin: 0;
  padding: 0;
  border: 0;
}
.sk-app-setting label {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: var(--sk-space-2);
}
.sk-app-setting label small {
  display: block;
  color: var(--sk-color-ink-soft);
}

/* Utsending til kunder: go-live-sjekkliste og avsender (marketing/MarketingGoLivePanel.tsx). */

.sk-golive {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-golive__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-3);
  flex-wrap: wrap;
}
.sk-golive__header > span {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-golive__lead,
.sk-golive__meta {
  margin: 0;
  color: var(--sk-color-ink-soft);
}
.sk-golive__checks {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-golive__checks li {
  display: flex;
  gap: var(--sk-space-2);
  align-items: flex-start;
}
.sk-golive__checks li > svg {
  flex: none;
  width: 20px;
  height: 20px;
  margin-top: 2px;
}
.sk-golive__checks li.is-ok > svg {
  color: var(--sk-color-success);
}
.sk-golive__checks li.is-missing > svg {
  color: var(--sk-color-warning);
}
.sk-golive__checks li > span {
  display: grid;
  gap: 2px;
}
.sk-golive__checks small,
.sk-golive__hint {
  color: var(--sk-color-ink-soft);
}
.sk-golive__error {
  margin: 0;
  color: var(--sk-color-danger);
}
.sk-golive__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-golive__confirm {
  flex-basis: 100%;
  margin: 0;
}
.sk-golive__sender {
  display: grid;
  gap: var(--sk-space-3);
  padding-top: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border);
}
.sk-golive__sender h3 {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  margin: 0;
}
.sk-golive__form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
  gap: var(--sk-space-3);
  align-items: end;
}
.sk-golive__domain {
  display: grid;
  gap: var(--sk-space-3);
}
.sk-golive__domain > p {
  margin: 0;
}
.sk-golive__records {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-golive__record {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr));
  gap: var(--sk-space-2);
  margin: 0;
  padding: var(--sk-space-3);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-hover);
}
.sk-golive__record dt {
  font-size: var(--sk-font-size-xs);
  color: var(--sk-color-ink-soft);
}
.sk-golive__record dd {
  margin: 0;
  overflow-wrap: anywhere;
}
.sk-golive__record small {
  grid-column: 1 / -1;
  color: var(--sk-color-ink-soft);
}

.sk-status-badge.is-sendes-til-kunder,
.sk-status-badge.is-verifisert {
  background: var(--sk-color-success-soft);
  color: var(--sk-color-success);
}
.sk-status-badge.is-pilotmodus,
.sk-status-badge.is-testmiljo,
.sk-status-badge.is-venter-pa-dns,
.sk-status-badge.is-ikke-klart,
.sk-status-badge.is-fullfort-uten-mottakere {
  background: var(--sk-color-warning-soft);
  color: var(--sk-color-warning);
}

/* Bug hunter: «Rapporter feil»-skuffen, pekemodus, skjermbildemaskering,
   krasjmeldingen og plattformens tavle. */

/* ---------- Typevelger og felt i skuffen ---------- */
.sk-bug-kinds {
  border: 0;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--sk-space-2);
  min-width: 0;
}
.sk-bug-kinds legend {
  font-weight: var(--sk-font-weight-strong);
  margin-bottom: var(--sk-space-2);
}
.sk-bug-kind-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  gap: var(--sk-space-2);
}
.sk-bug-kind {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--sk-space-3);
  align-items: start;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface);
  cursor: pointer;
  min-height: var(--sk-control-height);
}
.sk-bug-kind:hover {
  background: var(--sk-color-surface-hover);
}
.sk-bug-kind input {
  position: absolute;
  opacity: 0;
  inset: 0;
  margin: 0;
  cursor: pointer;
}
.sk-bug-kind:focus-within {
  outline: 2px solid var(--sk-color-primary);
  outline-offset: 2px;
}
.sk-bug-kind.is-selected {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-bug-kind svg {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--sk-color-primary);
  margin-top: 2px;
}
.sk-bug-kind span {
  display: grid;
  gap: 2px;
  min-width: 0;
}
.sk-bug-kind small {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-bug-drawer .sk-form-stack {
  gap: var(--sk-space-4);
}
.sk-bug-field {
  display: grid;
  gap: var(--sk-space-1);
}
.sk-bug-field textarea {
  width: 100%;
}
.sk-bug-error {
  color: var(--sk-color-danger);
  font-size: var(--sk-font-size-sm);
  margin: 0;
}
.sk-bug-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--sk-space-2);
}

/* ---------- Kontekstdelen: pek, skjermbilde, diagnostikk ---------- */
.sk-bug-context {
  display: grid;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle);
}
.sk-bug-context h3 {
  margin: 0;
  font-size: var(--sk-type-card-title);
}
.sk-bug-context-lead {
  margin: 0;
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-sm);
}
.sk-bug-context-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-bug-context-row small {
  color: var(--sk-color-ink-soft);
}
.sk-bug-marker-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-2);
  padding: var(--sk-space-1) var(--sk-space-3);
  border-radius: var(--sk-radius-pill);
  background: var(--sk-color-primary-soft);
  font-size: var(--sk-font-size-sm);
  max-width: 100%;
  overflow-wrap: anywhere;
}
.sk-bug-marker-chip button,
.sk-bug-icon-close {
  display: inline-grid;
  place-items: center;
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
  padding: var(--sk-space-1);
  border-radius: var(--sk-radius-sm);
}
.sk-bug-marker-chip svg,
.sk-bug-icon-close svg {
  width: 1rem;
  height: 1rem;
}
.sk-bug-screenshot {
  margin: 0;
  display: grid;
  gap: var(--sk-space-1);
}
.sk-bug-screenshot img {
  width: 100%;
  max-height: 14rem;
  object-fit: contain;
  object-position: top left;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-sm);
  background: var(--sk-color-canvas);
}
.sk-bug-screenshot figcaption {
  display: inline-flex;
  align-items: center;
  gap: var(--sk-space-1);
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
}
.sk-bug-screenshot figcaption svg {
  width: 0.9rem;
  height: 0.9rem;
}

/* ---------- Pekemodus ---------- */
html[data-bug-hunter-picking] .sk-overlay {
  visibility: hidden;
  pointer-events: none;
}
html[data-bug-hunter-picking],
html[data-bug-hunter-picking] * {
  cursor: crosshair !important;
}
.mr-bug-picker-highlight {
  position: fixed;
  display: none;
  z-index: 2147483000;
  pointer-events: none;
  border: 2px solid var(--sk-color-danger);
  border-radius: 4px;
  background: color-mix(in srgb, var(--sk-color-danger) 12%, transparent);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--sk-color-danger) 20%, transparent);
  transition: all 60ms linear;
}
.sk-bug-picker-banner {
  position: fixed;
  z-index: 2147483001;
  left: 50%;
  bottom: var(--sk-space-6);
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
  padding: var(--sk-space-3) var(--sk-space-4);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-ink);
  color: var(--sk-color-surface);
  box-shadow: 0 12px 32px rgb(0 0 0 / 0.25);
  max-width: calc(100vw - 2rem);
  cursor: default !important;
}
.sk-bug-picker-banner svg {
  width: 1.25rem;
  height: 1.25rem;
  flex: none;
}

/* ---------- Skjermbilde: skjul innhold i felt og personopplysninger ---------- */
html[data-bug-hunter-capturing] input,
html[data-bug-hunter-capturing] textarea,
html[data-bug-hunter-capturing] select,
html[data-bug-hunter-capturing] [contenteditable="true"],
html[data-bug-hunter-capturing] [data-private] {
  color: transparent !important;
  -webkit-text-fill-color: transparent !important;
  text-shadow: none !important;
  background-image: repeating-linear-gradient(
    -45deg,
    rgb(128 128 128 / 0.28) 0 6px,
    rgb(128 128 128 / 0.14) 6px 12px
  ) !important;
}
html[data-bug-hunter-capturing] [data-private] * {
  color: transparent !important;
  -webkit-text-fill-color: transparent !important;
}
html[data-bug-hunter-capturing] [data-private] img {
  visibility: hidden !important;
}

/* ---------- Krasjmeldingen ---------- */
.sk-bug-crash-notice {
  position: fixed;
  z-index: 1200;
  right: var(--sk-space-4);
  bottom: var(--sk-space-4);
  width: min(26rem, calc(100vw - 2rem));
  display: grid;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border);
  border-left: 4px solid var(--sk-color-warning);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface);
  box-shadow: 0 16px 40px rgb(0 0 0 / 0.18);
}
.sk-bug-crash-notice header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-2);
}
.sk-bug-crash-notice p {
  margin: 0;
  font-size: var(--sk-font-size-sm);
}
.sk-bug-crash-done {
  display: flex;
  gap: var(--sk-space-2);
  align-items: flex-start;
}
.sk-bug-crash-done svg {
  flex: none;
  width: 1.1rem;
  height: 1.1rem;
  color: var(--sk-color-success);
}

@media (max-width: 640px) {
  .sk-bug-kind-grid {
    grid-template-columns: 1fr;
  }
  .sk-bug-crash-notice {
    left: var(--sk-space-3);
    right: var(--sk-space-3);
    bottom: var(--sk-space-3);
    width: auto;
  }
}

/* ---------- Plattformens tavle ---------- */
.sk-bug-board-page {
  display: grid;
  gap: var(--sk-space-4);
  min-width: 0;
}
.sk-bug-board-filters {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  gap: var(--sk-space-3);
  align-items: end;
}
.sk-bug-board {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(16rem, 1fr);
  gap: var(--sk-space-3);
  overflow-x: auto;
  padding-bottom: var(--sk-space-3);
  min-width: 0;
}
.sk-bug-board-column {
  display: grid;
  align-content: start;
  gap: var(--sk-space-2);
  padding: var(--sk-space-3);
  border-radius: var(--sk-radius-lg);
  background: var(--sk-color-surface-subtle);
  border: 1px solid var(--sk-color-border-soft);
  min-width: 0;
}
.sk-bug-board-column h2 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0;
  font-size: var(--sk-type-section-title);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--sk-color-ink-soft);
}
.sk-bug-board-column h2 span {
  font-variant-numeric: tabular-nums;
}
.sk-bug-board-column ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-bug-card {
  width: 100%;
  display: grid;
  gap: var(--sk-space-1);
  text-align: left;
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-card-radius);
  background: var(--sk-color-surface);
  color: var(--sk-color-ink);
  cursor: pointer;
  font: inherit;
}
.sk-bug-card:hover {
  border-color: var(--sk-color-border-interactive);
  background: var(--sk-color-surface-hover);
}
.sk-bug-card:focus-visible {
  outline: 2px solid var(--sk-color-primary);
  outline-offset: 2px;
}
.sk-bug-card.is-crash {
  border-left: 3px solid var(--sk-color-danger);
}
.sk-bug-card.is-design {
  border-left: 3px solid var(--sk-color-primary);
}
.sk-bug-card.is-feature_request {
  border-left: 3px solid var(--sk-color-success);
}
.sk-bug-card-top {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-1);
}
.sk-bug-card-meta {
  color: var(--sk-color-ink-soft);
  font-size: var(--sk-font-size-xs);
  overflow-wrap: anywhere;
}
.sk-bug-card-icons {
  display: flex;
  gap: var(--sk-space-2);
  color: var(--sk-color-ink-faint);
  font-size: var(--sk-font-size-xs);
}
.sk-bug-card-icons span {
  display: inline-flex;
  align-items: center;
  gap: 2px;
}
.sk-bug-card-icons svg {
  width: 0.9rem;
  height: 0.9rem;
}
.sk-bug-card-drawer .sk-detail-list dd {
  overflow-wrap: anywhere;
}
.sk-bug-board-message {
  margin: 0;
  color: var(--sk-color-success);
  font-size: var(--sk-font-size-sm);
}
.sk-bug-detail-title {
  margin: 0;
  font-size: var(--sk-font-size-lg);
}
.sk-bug-detail-block {
  display: grid;
  gap: var(--sk-space-2);
  padding-top: var(--sk-space-3);
  border-top: 1px solid var(--sk-color-border-soft);
}
.sk-bug-detail-block h4 {
  margin: 0;
  font-size: var(--sk-font-size-md);
}
.sk-bug-detail-block p,
.sk-bug-detail-block ul,
.sk-bug-detail-block ol {
  margin: 0;
  overflow-wrap: anywhere;
}
.sk-bug-detail-block code {
  font-size: var(--sk-font-size-xs);
  overflow-wrap: anywhere;
}
.sk-bug-similar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sk-space-2);
}
.sk-bug-link {
  border: 0;
  padding: 0;
  background: none;
  color: var(--sk-color-primary);
  text-decoration: underline;
  cursor: pointer;
  font: inherit;
}
.sk-bug-move .sk-form-grid {
  gap: var(--sk-space-3);
}
.sk-bug-merge-row {
  display: flex;
  gap: var(--sk-space-2);
}
.sk-bug-merge-row input {
  flex: 1;
  min-width: 0;
}
.sk-bug-timeline {
  list-style: none;
  padding: 0;
  display: grid;
  gap: var(--sk-space-2);
}
.sk-bug-timeline li {
  display: grid;
  gap: 2px;
}
.sk-bug-timeline small {
  color: var(--sk-color-ink-soft);
}

/* Alvorlighetsvalget: de to kritiske valgene markeres med farge OG tekst
   («Kritisk» står i undertittelen), aldri farge alene. */
.sk-bug-kind.is-critical {
  border-color: var(--sk-color-danger);
}
.sk-bug-kind.is-critical.is-selected {
  background: var(--sk-color-danger-soft);
  box-shadow: inset 0 0 0 1px var(--sk-color-danger);
}
.sk-bug-kind.is-critical svg {
  color: var(--sk-color-danger);
}
.sk-bug-critical-note {
  display: grid;
  gap: var(--sk-space-2);
}
.sk-support-card--critical {
  border-color: var(--sk-color-danger);
}
.sk-bug-severity {
  margin: 0;
}

/* Porteringsguiden (porting/): stegliste, selskaps-/salongblokker og tall. */

.sk-porting-layout {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(13rem, 16rem) minmax(0, 1fr);
  gap: var(--sk-space-6);
  align-items: start;
}

.sk-porting-layout > * { min-width: 0; }
/* Handlingen skifter fra primær til sekundær etter lagring. Bakgrunn og tekst
   må skifte samtidig, slik at mellomfargen ikke får for lav kontrast. */
.sk-porting-layout .sk-button { transition-property: border-color, transform; }

.sk-porting-steps {
  display: grid;
  gap: var(--sk-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}

.sk-porting-step {
  display: flex;
  width: 100%;
  align-items: center;
  gap: var(--sk-space-3);
  min-height: 2.75rem;
  padding: var(--sk-space-2) var(--sk-space-3);
  border: 1px solid transparent;
  border-radius: var(--sk-radius-sm);
  background: transparent;
  color: var(--sk-color-ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.sk-porting-step:hover:not(:disabled) { background: var(--sk-color-surface-hover); }
.sk-porting-step:focus-visible { outline: 2px solid var(--sk-color-focus-ring); outline-offset: 2px; }
.sk-porting-step:disabled { color: var(--sk-color-disabled-text); cursor: not-allowed; }
.sk-porting-step.is-active { border-color: var(--sk-color-border-interactive); background: var(--sk-color-surface-selected); }

.sk-porting-step__number {
  display: inline-grid;
  place-items: center;
  flex: 0 0 1.75rem;
  width: 1.75rem;
  height: 1.75rem;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-pill);
  font-size: var(--sk-font-size-sm);
}
.sk-porting-step.is-done .sk-porting-step__number { border-color: var(--sk-color-success); background: var(--sk-color-success-soft); }
.sk-porting-step.is-current .sk-porting-step__number { border-color: var(--sk-color-primary); background: var(--sk-color-primary-soft); }

.sk-porting-step__hint { display: block; color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }

.sk-porting-block {
  min-width: 0;
  display: grid;
  gap: var(--sk-space-4);
  margin: 0;
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-sm);
}
.sk-porting-block legend { padding: 0 var(--sk-space-2); font-weight: var(--sk-font-weight-strong); }

.sk-porting-counts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr));
  gap: var(--sk-space-3);
  margin: var(--sk-space-4) 0;
}
.sk-porting-counts > div {
  display: grid;
  gap: var(--sk-space-1);
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-sm);
}
.sk-porting-counts dt { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-porting-counts dd { margin: 0; font-size: var(--sk-font-size-lg); font-weight: var(--sk-font-weight-strong); }

.sk-porting-list { display: grid; gap: var(--sk-space-2); margin: var(--sk-space-3) 0; padding: 0; list-style: none; }
.sk-porting-list li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sk-space-2) var(--sk-space-4);
  padding: var(--sk-space-3);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-sm);
}
.sk-porting-list small { display: block; color: var(--sk-color-ink-soft); }

.sk-porting-table { width: 100%; border-collapse: collapse; font-size: var(--sk-font-size-sm); }
.sk-porting-table th,
.sk-porting-table td { padding: var(--sk-space-2); border-bottom: 1px solid var(--sk-color-border-soft); text-align: left; vertical-align: top; }
.sk-porting-table-wrap { overflow-x: auto; }

@media (max-width: 860px) {
  .sk-porting-layout { grid-template-columns: minmax(0, 1fr); }
  .sk-porting-steps { grid-auto-flow: column; grid-auto-columns: minmax(9rem, 1fr); overflow-x: auto; }
}

/* Pakker (PlansPage): de tre abonnementspakkene som kort side ved side.
   Bygger på de samme tokenene som resten av salongkonsollen (sk-*). */

/* Informasjonsvarsel (pakkelinja på modulsiden) — samme form som suksess/feil
   i 14-insurance.css, men i en nøytral, informativ tone. */
.sk-insurance-notice.is-info {
  color: var(--sk-color-accent, #1b6f5c);
  background: var(--sk-color-accent-soft, rgba(27, 111, 92, 0.1));
}

.sk-plan-grid {
  display: grid;
  gap: var(--sk-space-4, 1rem);
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  align-items: stretch;
}

.sk-plan-card {
  display: flex;
  flex-direction: column;
  gap: var(--sk-space-3, 0.75rem);
  /* Registrert som «inset»-layout: kortet eier sin egen luft. */
  padding: var(--sk-card-inset);
}

.sk-plan-card.is-current {
  outline: 2px solid var(--sk-accent, #1b6f5c);
  outline-offset: -2px;
}

.sk-plan-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sk-space-2, 0.5rem);
}

.sk-plan-head h2 {
  margin: 0;
}

.sk-plan-price {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  margin: 0;
}

.sk-plan-price strong {
  font-size: var(--sk-font-size-2xl);
  line-height: 1.1;
}

.sk-plan-price small,
.sk-plan-desc {
  color: var(--sk-muted, #5b6b66);
}

.sk-plan-desc {
  margin: 0;
}

.sk-plan-perk {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin: 0;
  font-weight: var(--sk-font-weight-strong);
  color: var(--sk-accent, #1b6f5c);
}

.sk-plan-perk svg,
.sk-plan-modules svg {
  width: 1rem;
  height: 1rem;
  flex: none;
}

.sk-plan-modules {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.sk-plan-modules li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.sk-plan-modules svg {
  color: var(--sk-accent, #1b6f5c);
}

.sk-plan-action {
  margin-top: auto;
  padding-top: var(--sk-space-2, 0.5rem);
}

.sk-plan-action .sk-button {
  width: 100%;
}

/* Moduler (ModulesPage): høyre kolonne i hver modulrad. Prisen/«Inkludert»
   ligger øverst og pakke-merket eller knappen rett under, så inkluderte og
   betalte moduler får samme, forutsigbare oppstilling. */
.sk-module-status {
  display: grid;
  justify-items: end;
  align-content: start;
  gap: var(--sk-space-2);
  text-align: right;
  flex: none;
}
.sk-module-status > strong {
  white-space: nowrap;
}
/* Metadataen («Aktiv siden …», «Egen tjeneste») skilles tydelig fra
   beskrivelsessetningen over med litt luft og mindre skrift. */
.sk-insurance-list small.sk-module-meta {
  margin-top: var(--sk-space-1);
  font-size: var(--sk-font-size-xs);
}

/* Ansattreise (team-development): egen layout for veiviser, dra-og-slipp og
   sidetopp-luft. Holdt utenfor 10-restored-modules.css slik at den filen holder
   seg under linjegrensen, og utenfor design-system-CSS-en. */

/* Ansattreise: sidetoppen sto klistret inntil første innholdskort. Vi gir
   sidetoppen litt luft ned mot innholdet — kun på denne siden (scopet via
   sidewrapperen), aldri på den globale .sk-page-header. */
.sk-lifecycle-page > .sk-page-header {
  margin-bottom: var(--sk-space-6);
}

/* Dra-og-slipp-sone for signerte dokumenter (i tillegg til «velg fil»-knappen). */
.sk-dropzone {
  display: grid;
  gap: var(--sk-space-2);
  justify-items: center;
  text-align: center;
  padding: var(--sk-space-6);
  border: 2px dashed var(--sk-color-border);
  border-radius: var(--sk-radius-md);
  background: var(--sk-color-surface-subtle, var(--sk-color-surface));
  color: var(--sk-color-ink-soft);
  cursor: pointer;
  transition: border-color 120ms ease, background 120ms ease;
}
.sk-dropzone svg {
  width: 1.75rem;
  height: 1.75rem;
  color: var(--sk-color-primary);
}
.sk-dropzone:hover,
.sk-dropzone:focus-within,
.sk-dropzone.is-dragover {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
}
.sk-dropzone input[type="file"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.sk-dropzone__file {
  font-weight: var(--sk-font-weight-strong);
  color: var(--sk-color-ink, inherit);
  overflow-wrap: anywhere;
}

/* Steg-for-steg-veiviser (onboarding + arbeidsavtale). */
.sk-employee-wizard {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-wizard__progress {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sk-space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}
.sk-wizard__progress li {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2);
  padding: var(--sk-space-2) var(--sk-space-3);
  border-radius: var(--sk-radius-md);
  border: 1px solid var(--sk-color-border-soft);
  font-size: var(--sk-font-size-sm);
  color: var(--sk-color-ink-soft);
}
.sk-wizard__progress li.is-current {
  border-color: var(--sk-color-primary);
  background: var(--sk-color-primary-soft);
  color: var(--sk-color-primary);
  font-weight: var(--sk-font-weight-strong);
}
.sk-wizard__progress li.is-done {
  color: var(--sk-color-primary);
}
.sk-wizard__progress .sk-wizard__index {
  display: inline-grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: var(--sk-color-surface-selected);
  color: inherit;
  font-size: var(--sk-font-size-xs);
  font-weight: var(--sk-font-weight-strong);
  cursor: pointer;
}
.sk-wizard__progress .sk-wizard__index svg {
  width: 0.9rem;
  height: 0.9rem;
}
.sk-wizard__progress li.is-current .sk-wizard__index,
.sk-wizard__progress li.is-done .sk-wizard__index {
  background: var(--sk-color-primary);
  color: var(--sk-color-surface, #fff);
}
.sk-wizard__meter {
  height: 0.4rem;
  border-radius: 999px;
  background: var(--sk-color-border-soft);
  overflow: hidden;
}
.sk-wizard__meter > span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--sk-color-primary);
  transition: width 160ms ease;
}
.sk-wizard__step {
  display: grid;
  gap: var(--sk-space-4);
}
.sk-wizard__step-head h3 {
  margin: 0;
}
.sk-wizard__step-head p {
  margin: 0.25rem 0 0;
  color: var(--sk-color-ink-soft);
}
.sk-wizard__nav {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--sk-space-3);
}
.sk-wizard__nav-end {
  display: flex;
  gap: var(--sk-space-3);
  margin-left: auto;
}
.sk-wizard__task {
  display: grid;
  gap: var(--sk-space-3);
  padding: var(--sk-space-4);
  border: 1px solid var(--sk-color-border-soft);
  border-radius: var(--sk-radius-md);
}
.sk-wizard__task-toggle {
  display: flex;
  align-items: center;
  gap: var(--sk-space-3);
}
.sk-wizard__task-toggle input {
  width: 1.25rem;
  height: 1.25rem;
  accent-color: var(--sk-color-primary);
}

/* Local staff feed uses the existing workspace tokens. */
.sk-staff-content { display: grid; gap: 1rem; min-width: 0; }
.sk-staff-content article { border-top: 1px solid var(--sk-color-border); padding-block: 1rem; min-width: 0; }
.sk-staff-content form { display: grid; gap: .8rem; min-width: 0; }
.sk-staff-content label { display: grid; gap: .4rem; }
.sk-staff-content input:not([type="checkbox"]), .sk-staff-content select, .sk-staff-content textarea {
  box-sizing: border-box; width: 100%; min-width: 0; padding: .7rem; font: inherit; color: var(--sk-color-ink);
  background: var(--sk-color-surface); border: 1px solid var(--sk-color-border-interactive); border-radius: .5rem;
}
.sk-staff-content :is(input,select,textarea):focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: 2px; }
.sk-staff-content label:has(input[type="checkbox"]) { display: flex; align-items: center; gap: .6rem; }
.sk-staff-content .sk-my-routine-hero { display: block; background: var(--sk-color-surface-hover); color: var(--sk-color-ink); border: 1px solid var(--sk-color-border); padding: 1rem; }

.sk-premises-report, .sk-my-absence, .sk-fee-approval, .sk-fee-proposal { display: grid; gap: .8rem; min-width: 0; }
.sk-fee-proposal { padding: var(--sk-space-4); }
.sk-my-absence { grid-template-columns: minmax(0, 1fr); }
.sk-my-absence form, .sk-premises-report form { display: grid; gap: .8rem; min-width: 0; }
:is(.sk-hms-incident-editor,.sk-premises-report,.sk-my-absence,.sk-fee-approval,.sk-fee-proposal) .sk-field { display: grid; grid-template-columns: minmax(0,1fr); gap: .35rem; min-width: 0; }
:is(.sk-hms-incident-editor,.sk-premises-report,.sk-my-absence,.sk-fee-approval,.sk-fee-proposal) .sk-field label { width: auto; }
:is(.sk-hms-incident-editor,.sk-premises-report,.sk-my-absence,.sk-fee-approval,.sk-fee-proposal) :is(input:not([type="checkbox"]),select,textarea) { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; padding: .7rem; font: inherit; color: var(--sk-color-ink); background: var(--sk-color-surface); border: 1px solid var(--sk-color-border-interactive); border-radius: .5rem; }
:is(.sk-hms-incident-editor,.sk-premises-report,.sk-my-absence,.sk-fee-approval,.sk-fee-proposal) :is(input,select,textarea):focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: 2px; }
.sk-fee-approval article { display: grid; gap: .7rem; border-top: 1px solid var(--sk-color-border); padding-block: .8rem; }
.sk-fee-approval blockquote { margin: 0; padding: .8rem; overflow-wrap: anywhere; background: var(--sk-color-surface-hover); }
.sk-my-absence form > label { display: flex; gap: .6rem; align-items: center; }

.sk-premises-report article { border-top: 1px solid var(--sk-color-border); padding-block: .8rem; overflow-wrap: anywhere; }

.sk-hms-incident-editor { display: grid; gap: 1rem; min-width: 0; max-width: 100%; padding: var(--sk-space-4); }
.sk-hms-incident-editor p { overflow-wrap: anywhere; }
.sk-hms-incident-editor > label { display: flex; align-items: center; gap: .6rem; }

/* Existing fee-row actions stay together and use the full mobile card width. */
.sk-fee-row-actions, .sk-fee-recovery-content { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sk-space-3); min-width: 0; }
.sk-fee-row-actions > .sk-fee-proposal { grid-template-columns: minmax(0, 1fr); }
.sk-fee-row-actions .sk-button { max-width: 100%; white-space: normal; text-align: center; }
.sk-fee-recovery { display: block; }
.sk-fee-recovery > summary { min-height: 2.75rem; display: flex; align-items: center; gap: var(--sk-space-2); font-weight: var(--sk-font-weight-strong); cursor: pointer; list-style: none; }
.sk-fee-recovery > summary::-webkit-details-marker { display: none; }
.sk-fee-recovery > summary::before { content: "+" / ""; width: 1.5rem; height: 1.5rem; flex: 0 0 auto; display: grid; place-items: center; border-radius: 50%; background: var(--sk-color-surface-hover); color: var(--sk-color-primary); }
.sk-fee-recovery[open] > summary::before { content: "−" / ""; }
.sk-fee-recovery > summary:focus-visible { outline: 2px solid var(--sk-color-primary); outline-offset: 2px; }
.sk-fee-recovery-content { margin-top: var(--sk-space-3); }
@media (max-width: 44rem) {
 .sk-data-table tbody td.sk-fee-actions-cell > .sk-fee-row-actions { grid-column: 1 / -1; }
 .sk-fee-row-actions > .sk-fee-proposal { padding: var(--sk-space-3); }
}

.sk-fee-preflight { display: grid; gap: var(--sk-space-3); }
.sk-fee-preflight ul { margin: 0; padding-left: var(--sk-space-4); }

.sk-fee-preflight > :is(h4,p) { margin: 0; }

/* The fee drawer is narrow at every viewport; retain the customer and all actions together. */
.sk-appointment-fees-table { min-width: 0; display: block; }
.sk-appointment-fees-table thead { position: absolute; left: 0; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; display: block; }
.sk-appointment-fees-table thead tr { display: block; width: 1px; height: 1px; overflow: hidden; }
.sk-appointment-fees-table thead th { position: static; display: block; width: 1px; height: 1px; min-height: 0; padding: 0; overflow: hidden; }
.sk-appointment-fees-table tbody { display: grid; gap: var(--sk-space-3); }
.sk-appointment-fees-table tbody tr { padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sk-space-2); }
.sk-appointment-fees-table tbody td { min-width: 0; min-height: 2.75rem; padding: var(--sk-space-2); border: 0; display: grid; grid-template-columns: minmax(7rem, 40%) minmax(0, 1fr); align-items: center; gap: var(--sk-space-3); text-align: left; overflow-wrap: anywhere; }
.sk-appointment-fees-table tbody td > * { min-width: 0; overflow-wrap: anywhere; }
.sk-appointment-fees-table tbody td[data-label]::before { content: attr(data-label); color: var(--sk-color-ink-soft); font-size: var(--sk-type-table); font-weight: var(--sk-font-weight-strong); }
.sk-appointment-fees-table tbody td.sk-fee-actions-cell > .sk-fee-row-actions { grid-column: 1 / -1; }

/* Legal invoice review remains readable within the existing narrow fee drawer. */
.sk-fee-recovery-content dl { display: grid; grid-template-columns: minmax(0,1fr); gap: var(--sk-space-1); margin: 0; }
.sk-fee-recovery-content dd { margin: 0 0 var(--sk-space-2); overflow-wrap: anywhere; }
.sk-fee-recovery-content ul { margin: 0; padding-left: var(--sk-space-4); }
.sk-fee-review-confirm { display: flex; align-items: flex-start; gap: .6rem; min-height: 44px; }
.sk-fee-review-confirm input { inline-size: 1.25rem; block-size: 1.25rem; flex: 0 0 auto; margin-top: .15rem; }

/* Fee-report date controls keep the existing field style at a usable touch height. */
:root[data-staff-interface] .sk-app-shell .sk-page .sk-fee-report-period input[type="date"] { min-height: 44px; }

/* Inngangen til nedlagte lokasjoner (Lokasjoner-siden). Kun visning: en
   avgrenset liste over de deaktiverte lokasjonene den innloggede lederen selv
   er tilknyttet. Se ArchivedLocationsPanel.tsx. */
.sk-archived-locations {
  margin-top: var(--sk-space-4, 1rem);
  display: grid;
  gap: var(--sk-space-3, 0.75rem);
}

.sk-archived-locations__head {
  display: flex;
  align-items: flex-start;
  gap: var(--sk-space-2, 0.5rem);
}

.sk-archived-locations__lead {
  margin: 0.15rem 0 0;
  color: var(--sk-color-text-muted, #6b7280);
  font-size: var(--sk-font-size-sm);
}

.sk-archived-locations__hint {
  margin: 0;
  color: var(--sk-color-text-muted, #6b7280);
  font-size: var(--sk-font-size-sm);
}

.sk-archived-locations__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--sk-space-2, 0.5rem);
}

.sk-archived-locations__item {
  display: flex;
  align-items: center;
  gap: var(--sk-space-2, 0.5rem);
  padding: var(--sk-space-2, 0.5rem) var(--sk-space-3, 0.75rem);
  border: 1px solid var(--sk-color-border, #e5e7eb);
  border-radius: var(--sk-radius-md, 0.5rem);
  background: var(--sk-color-surface, #fff);
}

.sk-archived-locations__name {
  font-weight: var(--sk-font-weight-strong);
}

.sk-archived-locations__city {
  color: var(--sk-color-text-muted, #6b7280);
  font-size: var(--sk-font-size-sm);
}

/* Nedlagt-merket skyves til høyre, uansett om byen er med eller ei. */
.sk-archived-locations__item .sk-status-badge {
  margin-left: auto;
}

/* Label, control, hint and error share tracks within each logical form row.
   Hints cannot push an adjacent action down; a wrapped label moves all of the
   row's controls together. Existing form grids retain their column widths. */
.sk-field-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
  column-gap: var(--sk-space-3);
}
:is(.sk-field-grid, .sk-field-row) {
  align-items: start;
  row-gap: 0;
}
:is(.sk-field-grid, .sk-field-row) > :is(.sk-field, .sk-control-cell) {
  min-width: 0;
  grid-row: span 4;
  grid-template-rows: subgrid;
  row-gap: 0;
  align-content: normal;
  margin-bottom: var(--sk-space-4);
}
:is(.sk-field-grid, .sk-field-row) > :is(.sk-field, .sk-control-cell) > :first-child {
  grid-row: 1;
  align-self: end;
  margin-bottom: var(--sk-space-2);
}
:is(.sk-field-grid, .sk-field-row) > :is(.sk-field, .sk-control-cell) > :nth-child(2) {
  grid-row: 2;
  align-self: start;
}
:is(.sk-field-grid, .sk-field-row) > :is(.sk-field, .sk-control-cell) > .sk-field-hint {
  grid-row: 3;
  margin-top: var(--sk-space-2);
}
:is(.sk-field-grid, .sk-field-row) > :is(.sk-field, .sk-control-cell) > .sk-field-error {
  grid-row: 4;
  margin-top: var(--sk-space-2);
}
:is(.sk-field-grid, .sk-field-row) > .sk-field-actions > span:empty {
  margin-bottom: 0;
}
/* Fieldsets and explanatory blocks remain whole items between form rows. */
.sk-field-grid > :not(.sk-field, .sk-control-cell) {
  grid-row: span 4;
  align-self: start;
  margin-bottom: var(--sk-space-4);
}
.sk-field-row > :not(.sk-field, .sk-control-cell) {
  grid-row: span 4;
  align-self: center;
}
.sk-field-row > .sk-search-box {
  grid-row: span 4;
  align-self: start;
}
.sk-field-actions > .sk-inline-actions {
  flex-wrap: wrap;
  align-items: flex-start;
}
.sk-field-actions .sk-button:not(.sk-button--compact) {
  min-height: var(--sk-control-height-lg);
}
@media (max-width: 40rem) {
  .sk-field-grid, .sk-field-row {
    grid-template-columns: minmax(0, 1fr);
  }
  :is(.sk-field-grid, .sk-field-row) > .sk-field-actions > span:empty {
    display: none;
  }
}

/* Search and select filters use the same control height. Hidden labels retain
   their accessible association without reserving a visible label row. */
.sk-page-toolbar .sk-search-box { height: var(--sk-control-height-lg); }
.sk-page-toolbar .sk-search-box input { min-height: 0; height: calc(var(--sk-control-height-lg) - 2px); padding-block: 0; }
.sk-page-toolbar .sk-field > label:has(> :is(.sk-visually-hidden, .sk-sr-only)) { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); margin: -1px; padding: 0; }

/* Shared staff-app and kasse design. Values and typography roles live in
   00-tokens.css. No page zoom and no changes to payment or booking behaviour. */
.sk-app-shell { --sk-control-height: 40px; --sk-control-height-lg: 40px; --sk-rail-width: var(--sk-user-rail-width, 104px); }
.sk-global-topbar { background: var(--sk-color-header); height: var(--sk-topbar-height); }
.sk-wordmark-image { display: block; width: 158px; height: auto; }
:root[data-ui-theme="dark"] .sk-wordmark-image { filter: invert(1); }
.sk-platform-wordmark { display: block; width: 190px; max-width: 100%; height: auto; }
:root[data-ui-theme="dark"] .sk-platform-wordmark { filter: invert(1); }
.sk-customer-portal-auth-card > .sk-platform-wordmark { margin-bottom: 2rem; }
.sk-customer-portal-logo > .sk-platform-wordmark { width: 140px; filter: invert(1); }
.sk-customer-portal-logo > span:last-child { min-width: 0; }
/* Authentication shares the approved light interface and restrained controls. */
.sk-auth-card { padding: clamp(24px, 6vw, 44px); border-color: var(--sk-color-border-soft); box-shadow: none; }
.sk-auth-brand { margin-bottom: 2.5rem; }
.sk-auth-card h1 { font-weight: var(--sk-font-weight-medium); letter-spacing: -.025em; }
.sk-auth-icon { background: var(--sk-color-surface-warm); color: var(--sk-color-ink-soft); }
.sk-auth-card .sk-button--primary { border-radius: var(--sk-radius-pill); }
.sk-customer-portal-auth-card { border-color: var(--sk-color-border-soft); box-shadow: none; }
.sk-customer-portal-auth-card h1 { font-weight: var(--sk-font-weight-medium); }
.sk-interface-theme { flex: none; display: inline-grid; place-items: center; width: 40px; min-height: 40px; padding: 0; border: 1px solid transparent; border-radius: var(--sk-radius-pill); color: var(--sk-color-ink); background: transparent; cursor: pointer; }
.sk-interface-theme:hover { background: var(--sk-color-surface-hover); }
.sk-topbar-actions { gap: var(--sk-space-2); }
.sk-topbar-actions .sk-icon-button { width: 36px; height: 36px; }
.sk-profile-button { width: 40px; height: 40px; background: var(--sk-color-surface); color: var(--sk-color-ink); border: 1px solid var(--sk-color-border); }
.sk-setup-button { min-width: 0; white-space: normal; }
.sk-primary-rail { background: var(--sk-color-rail); justify-content: flex-start; gap: var(--sk-rail-gap); }
.sk-primary-help { margin-top: auto; }
.sk-primary-rail__main { max-height: none; overflow: visible; }
@media (min-width: 44.01rem) {
  /* Keep submenu overflow inside the list and reserve room for the footer controls. */
  .sk-primary-rail__main { flex: 1 1 auto; min-height: 0; align-content: start; overflow-y: auto; overscroll-behavior: contain; }
  .sk-primary-rail > :is(.sk-primary-help, .sk-rail-customize) { flex-shrink: 0; }
}
.sk-primary-rail button { position: relative; color: #cbd0d5; font-weight: var(--sk-font-weight-medium); font-size: var(--sk-font-size-xs); }
.sk-primary-rail button.is-active, .sk-primary-rail button.is-mobile-active { background: transparent; color: white; }
.sk-primary-rail .sk-mobile-more.is-mobile-active { background: transparent; color: white; }
.sk-primary-rail button.is-active::before { content: ""; position: absolute; left: 0; top: 25%; bottom: 25%; width: 3px; border-radius: var(--sk-radius-pill); background: white; }
.sk-primary-rail button:focus-visible { outline: 2px solid var(--sk-color-focus-ring-inverse); outline-offset: -2px; }
.sk-primary-rail button svg { flex: none; width: 24px; height: 24px; }
.sk-primary-rail button.is-drag-target { outline: 2px solid var(--sk-color-focus-ring-inverse); outline-offset: -2px; background: rgb(255 255 255 / 10%); }
.sk-rail-customize { margin-top: var(--sk-space-2); flex: none; }
.sk-primary-rail .sk-rail-resizer { position: absolute; inset: 0 -5px 0 auto; width: 10px; cursor: col-resize; touch-action: none; z-index: 2; }
.sk-rail-resizer::after { content: ""; position: absolute; inset: 0 4px; background: transparent; }
.sk-rail-resizer:hover::after, .sk-rail-resizer:focus-visible::after { background: var(--sk-color-focus-ring-inverse); }
.sk-rail-resizer:focus-visible { outline: 2px solid var(--sk-color-focus-ring-inverse); outline-offset: -2px; }
.sk-app-shell.is-rail-expanded .sk-primary-rail button { display: flex; align-items: center; justify-content: flex-start; gap: var(--sk-space-3); min-height: 44px; padding: var(--sk-space-2) var(--sk-space-4); font-size: var(--sk-type-control); text-align: left; }
.sk-app-shell.is-rail-expanded .sk-primary-rail__label { width: auto; flex: 1; text-align: left; white-space: normal; overflow-wrap: anywhere; }
@media (min-width: 44.01rem) { .sk-app-shell.is-rail-expanded .sk-primary-rail button.is-desktop-overflow, .sk-app-shell .sk-primary-rail button.is-desktop-overflow { display: none; } }
@media (min-width: 80.01rem) { .sk-app-shell.is-rail-expanded .sk-primary-rail .sk-mobile-more.is-desktop-more { display: flex !important; } }
.sk-navigation-customizer { display: grid; gap: var(--sk-space-3); }
.sk-navigation-customizer > p { color: var(--sk-color-ink-soft); }
.sk-navigation-customizer > div { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-2); }
.sk-navigation-customizer > div > span { flex: 1; min-width: 8rem; }
.sk-secondary-nav { background: var(--sk-color-surface-subtle); }
.sk-secondary-nav__title { min-height: 64px; font-size: var(--sk-type-section-title); font-family: var(--sk-font-heading); font-weight: var(--sk-font-weight-body); }
.sk-secondary-nav button { font-weight: var(--sk-font-weight-medium); }
.sk-secondary-nav button.is-active { background: var(--sk-color-surface-hover); color: var(--sk-color-ink); box-shadow: inset 2px 0 var(--sk-color-ink); }
.sk-page { gap: var(--sk-space-6); padding: var(--sk-page-inset-block) var(--sk-page-inset-inline) var(--sk-page-inset-bottom); }
.sk-page-header { gap: var(--sk-space-4); margin-bottom: 0; }
.sk-page-header h1, .sk-card-header h2, .sk-drawer__header h2, .sk-modal__header h2,
.sk-terminal-lock-content h1, .sk-terminal-panel > header h2,
.sk-terminal-workspace-content > .sk-page h1, .sk-terminal-overview-header h1 { font-family: var(--sk-font-heading); font-weight: var(--sk-font-weight-body); letter-spacing: -.015em; }
.sk-page-header h1 { font-size: var(--sk-type-page-title); }
.sk-card-header h2 { font-size: var(--sk-type-section-title); }
.sk-drawer__header h2, .sk-modal__header h2 { font-size: var(--sk-type-drawer-title); }
.sk-field, .sk-field > label { font-weight: var(--sk-font-weight-medium); }
.sk-field :is(input, select):not([type="checkbox"], [type="radio"], [type="range"], [type="color"], [type="file"]) { min-height: var(--sk-control-height-lg); padding-block: 0; }
.sk-button { min-height: var(--sk-control-height); border-radius: var(--sk-radius-pill); padding: var(--sk-space-1) var(--sk-space-4); font-weight: var(--sk-font-weight-medium); }
.sk-button--primary:not(:disabled), .sk-terminal-primary:not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
.sk-button--primary:hover:not(:disabled), .sk-terminal-primary:hover:not(:disabled) { background: var(--sk-color-action-hover); }
.sk-button--secondary:not(:disabled) { border-color: var(--sk-color-border-interactive); background: var(--sk-color-surface); color: var(--sk-color-ink); }
.sk-button--secondary:hover:not(:disabled) { background: var(--sk-color-surface-hover); border-color: var(--sk-color-ink-soft); color: var(--sk-color-ink); }
.sk-search-box { min-height: var(--sk-control-height-lg); border-color: var(--sk-color-border-interactive); border-radius: var(--sk-radius-pill); }
.sk-search-box input { min-height: calc(var(--sk-control-height-lg) - 2px); padding-block: 0; }
.sk-search-box svg { width: 16px; height: 16px; }
.sk-page-toolbar, .sk-filter-bar, .sk-pagination { --sk-control-height: var(--sk-control-height-compact); --sk-control-height-lg: var(--sk-control-height-compact); align-items: end; gap: var(--sk-space-2); }
.sk-page-toolbar > .sk-field, .sk-filter-bar > .sk-field { align-self: end; }
.sk-page-toolbar .sk-field :is(input, select), .sk-filter-bar .sk-field :is(input, select),
.sk-page-toolbar .sk-search-box input, .sk-filter-bar .sk-search-box input { font-size: var(--sk-type-control); }
.sk-page-toolbar > select, .sk-filter-bar > select { min-height: var(--sk-control-height-compact); padding-inline: var(--sk-space-3); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-pill); background: var(--sk-color-surface); color: var(--sk-color-ink); font-size: var(--sk-type-control); }
.sk-pagination__page { min-width: var(--sk-control-height-compact); min-height: var(--sk-control-height-compact); border-radius: var(--sk-radius-pill); font-weight: var(--sk-font-weight-medium); }
.sk-pagination__page[aria-current="page"] { background: var(--sk-color-action); color: var(--sk-color-on-action); border-color: var(--sk-color-action); }
.sk-avatar { flex: none; }
.sk-resource-avatar { flex: none; }
.sk-person-cell > span:last-child { min-width: 0; flex: 1; }
.sk-pill, .sk-chip, .sk-status-pill, .sk-badge { border-radius: var(--sk-radius-pill); font-weight: var(--sk-font-weight-medium); }
.sk-drawer__footer { flex-wrap: wrap; gap: var(--sk-space-2); }
.sk-report-toolbar { display: flex; flex-wrap: wrap; align-items: end; gap: var(--sk-space-2); }
.sk-report-toolbar .sk-field { flex: 1 1 150px; }
.sk-app-shell .sk-button--primary:not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); border-color: var(--sk-color-action); }
.sk-app-shell .sk-button--primary:hover:not(:disabled) { background: var(--sk-color-action-hover); }
.sk-calendar-filter-footer { flex-wrap: wrap; }
.sk-copilot-dock { display: flex; align-items: center; flex: none; }
.sk-copilot.is-docked { bottom: auto; right: var(--sk-space-6); top: calc(var(--sk-topbar-height) + var(--sk-space-3)); }
.sk-copilot.is-docked .sk-copilot__panel { position: fixed; top: calc(var(--sk-topbar-height) + var(--sk-space-3)); bottom: auto; right: var(--sk-space-6); min-height: 0; height: min(720px, calc(100dvh - var(--sk-topbar-height) - 24px)); }
.sk-copilot-dock .sk-copilot__launcher { min-height: 36px; padding: 0 var(--sk-space-3); gap: var(--sk-space-2); border: 1px solid var(--sk-color-assistant); background: var(--sk-color-assistant); color: white; box-shadow: none; border-radius: var(--sk-radius-pill); }
.sk-copilot-dock .sk-copilot__launcher:hover { background: var(--sk-color-assistant-hover); transform: none; }
.sk-copilot-dock .sk-copilot__launcher > span:first-child { width: auto; height: auto; background: transparent; color: inherit; }
.sk-copilot-dock .sk-copilot__launcher svg { width: 18px; height: 18px; }
.sk-copilot-dock .sk-copilot__launcher strong { font-size: var(--sk-type-control); font-weight: var(--sk-font-weight-medium); }
.sk-copilot__quick-prompts button { background: var(--sk-color-surface); color: var(--sk-color-ink); border-color: var(--sk-color-border-interactive); font-weight: var(--sk-font-weight-medium); }
.sk-copilot__quick-prompts button:hover:not(:disabled) { background: var(--sk-color-surface-hover); }
.sk-copilot__tips { background: var(--sk-color-surface-subtle); color: var(--sk-color-ink); }
.sk-copilot__mark { background: var(--sk-color-primary-soft); color: var(--sk-color-primary); }
.sk-copilot__tabs button.is-active { background: var(--sk-color-action); color: var(--sk-color-on-action); }
.sk-copilot__composer textarea { background: var(--sk-color-surface); color: var(--sk-color-ink); }
.sk-terminal-workspace-header, .sk-terminal-lock-header { background: var(--sk-color-header); }
.sk-terminal-wordmark { display: block; width: 148px; height: auto; flex: none; }
:root[data-ui-theme="dark"] .sk-terminal-wordmark { filter: invert(1); }
.sk-terminal-brand > span:last-child strong, .sk-terminal-lock-header > div > strong { display: none; }
.sk-terminal-workspace-nav { background: var(--sk-color-rail); }
.sk-terminal-workspace-nav button { color: #cbd0d5; font-weight: var(--sk-font-weight-medium); }
.sk-terminal-workspace-nav button.is-active:not(.sk-terminal-nav-pay) { background: transparent; color: white; box-shadow: inset 3px 0 white; }
.sk-terminal-workspace-nav button:hover { background: rgb(255 255 255 / 10%); color: white; }
.sk-terminal-workspace-nav button.sk-terminal-nav-pay { background: var(--sk-color-assistant); color: white; box-shadow: none; }
.sk-terminal-primary, .sk-terminal-secondary, .sk-terminal-link, .sk-terminal-danger, .sk-terminal-danger-outline { border-radius: var(--sk-radius-pill); min-height: max(44px, var(--sk-terminal-control-h)); font-weight: var(--sk-font-weight-medium); }
.sk-terminal-workspace, .sk-terminal-lock, .sk-terminal-enrollment { --sk-terminal-control-h: max(44px, var(--sk-terminal-touch-min)); --sk-control-height: max(44px, var(--sk-terminal-touch-min)); --sk-control-height-lg: max(44px, var(--sk-terminal-touch-min)); }
.sk-terminal-workspace .sk-interface-theme, .sk-terminal-lock .sk-interface-theme { min-width: 44px; min-height: 44px; }
.sk-terminal-workspace-nav button:focus-visible { outline-color: white; }
/* Explicit foregrounds for inverse components; QR/receipt surfaces stay white. */
.sk-skip-link { background: var(--sk-color-action); color: var(--sk-color-on-action); }
.sk-search-filters button.is-active { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] .sk-month-day.is-today .sk-month-day__number { background: var(--sk-color-action); color: var(--sk-color-on-action); }
@media (min-width: 44.01rem) and (max-height: 540px) {
  .sk-primary-rail__main > button:nth-child(n+5):not(.sk-mobile-more) { display: none; }
  .sk-primary-rail button { min-height: 40px; gap: var(--sk-space-1); }
}
@media (max-width: 80rem) and (min-width: 44.01rem) {
  .sk-app-shell { --sk-rail-width: 104px; }
  .sk-app-shell.is-rail-expanded .sk-primary-rail button { display: grid; grid-template-rows: auto auto; justify-content: normal; justify-items: center; min-height: var(--sk-rail-button-height); padding: var(--sk-space-1); font-size: var(--sk-font-size-xs); text-align: center; gap: var(--sk-space-1); }
  .sk-primary-rail .sk-rail-resizer { display: none; }
  .sk-secondary-nav, .sk-secondary-nav.is-collapsed { top: var(--sk-topbar-height); left: var(--sk-rail-width); right: 0; bottom: auto; width: auto; height: 56px; display: flex; align-items: center; overflow-x: auto; overflow-y: hidden; border-right: 0; border-bottom: 1px solid var(--sk-color-border); }
  .sk-secondary-nav__title { display: none; }
  .sk-secondary-nav nav, .sk-secondary-nav.is-collapsed nav, .sk-secondary-nav__group { display: flex; align-items: center; flex: none; gap: var(--sk-space-1); }
  .sk-secondary-nav__group + .sk-secondary-nav__group { margin-top: 0; }
  .sk-secondary-nav__group-title { display: none; }
  .sk-secondary-nav button { white-space: nowrap; }
  .sk-main.has-secondary-nav, .sk-main.has-secondary-nav.has-collapsed-secondary { padding-left: var(--sk-rail-width); padding-top: calc(var(--sk-topbar-height) + 56px); }
  .sk-profile-name, .sk-topbar-secondary-action { display: none; }
}
@media (max-width: 44rem) {
  :root { --sk-control-height: 44px; --sk-control-height-lg: 44px; --sk-control-height-compact: 44px; --sk-topbar-height: 112px; }
  .sk-app-shell { --sk-control-height: 44px; --sk-control-height-lg: 44px; --sk-rail-width: 0px; }
  .sk-global-topbar { display: flex; flex-direction: column; justify-content: center; gap: 4px; padding: 8px 12px; }
  .sk-topbar-context, .sk-topbar-actions { width: 100%; min-width: 0; height: 44px; }
  .sk-topbar-context { justify-content: space-between; }
  .sk-wordmark-image { width: 108px; }
  .sk-topbar-actions { gap: 4px; justify-content: flex-end; }
  .sk-copilot-dock { margin-right: auto; }
  .sk-copilot-dock .sk-copilot__launcher { min-height: 44px; }
  .sk-topbar-actions .sk-icon-button, .sk-interface-theme, .sk-profile-button { width: 44px; min-height: 44px; height: 44px; }
  .sk-primary-rail { width: 100%; }
  .sk-app-shell.is-rail-expanded .sk-primary-rail button { display: grid; justify-items: center; justify-content: normal; grid-template-rows: auto auto; padding: var(--sk-space-1); gap: var(--sk-space-1); text-align: center; font-size: var(--sk-font-size-xs); }
  .sk-primary-rail > .sk-rail-customize, .sk-primary-rail .sk-rail-resizer { display: none; }
  .sk-primary-rail__main { flex: 1 0 100%; }
  .sk-app-shell.is-rail-expanded .sk-primary-rail__label { width: 100%; text-align: center; }
  .sk-secondary-nav, .sk-secondary-nav.is-collapsed { left: 0; right: 0; }
  .sk-main, .sk-main.has-secondary-nav, .sk-main.has-secondary-nav.has-collapsed-secondary { padding-left: 0; }
  .sk-page { padding-inline: 16px; gap: var(--sk-space-4); }
  .sk-page-toolbar, .sk-filter-bar { align-items: stretch; }
  .sk-page-toolbar > *, .sk-filter-bar > * { max-width: 100%; min-width: 0; }
  .sk-data-table tbody td[data-label="Kunde"] { grid-template-columns: minmax(0, 1fr); }
  .sk-data-table tbody td[data-label="Kunde"]::before { display: none; }
  .sk-drawer__footer > .sk-button, .sk-calendar-filter-footer > .sk-button { min-width: 0; flex: 1 1 120px; }
  .sk-drawer--segments .sk-drawer__footer > .sk-button { min-width: max-content; }
  .sk-drawer--calendar-filters .sk-drawer__footer > .sk-button { min-width: 0; flex: 1 1 120px; }
  .sk-copilot.is-docked .sk-copilot__panel { inset: 8px 8px auto; width: calc(100vw - 16px); height: calc(100dvh - 16px); max-height: none; z-index: var(--sk-z-copilot); }
  .sk-terminal-wordmark { width: 116px; }
}

.sk-button--danger:not(:disabled), .sk-terminal-danger:not(:disabled), .sk-terminal-danger-button:not(:disabled) { background: var(--sk-color-danger-action); color: var(--sk-color-on-danger-action); }

/* Existing filled variants have an explicit inverse foreground in dark mode. */
:root[data-ui-theme="dark"] :is(.sk-assistant-messages article.is-user > div):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-filter-chips > button.is-active:not(.sk-button)):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-copilot__messages article.is-user > div):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-copilot__composer > .sk-icon-button):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-field-builder__order > span):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-tutorial-popover .driver-popover-next-btn):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-terminal-mark):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(:where(.sk-terminal-language-switch) button.is-active):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(:where(.sk-terminal-segmented) > button.is-selected,
:where(.sk-terminal-segmented) > button.is-active):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-terminal-stylist-chip.is-active):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(:where(.sk-terminal-work-area-tabs) button.is-active):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(:where(.sk-shift-week-tabs) button.is-active):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(:where(.sk-shift-view-tabs) button.is-active):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-terminal-segmented > button.is-selected):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(:where(.sk-terminal-day-status-item.is-attendance) button):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-slide-confirm-knob):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-profile-book):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(:where(.sk-terminal-split-fields) > button):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-month-day.is-today .sk-month-day__number):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-wizard-dots span.is-active i):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-connect-workspace > aside i):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-message-thread article.is-outgoing):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-mini-month__days > button.is-selected):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-onboarding > aside nav button.is-active > span:first-child):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-public-form-submit):not(:disabled) { background: var(--sk-color-assistant); color: white; }
:root[data-ui-theme="dark"] :is(.sk-skip-link):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-tenant-switcher__avatar.is-platform):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-selection-bar):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-pagination__page[aria-current="page"]):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-bug-picker-banner):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-terminal-summary-grid article.is-attendance):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(:where(.sk-terminal-inline-fields) button):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-customer-display):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-terminal-skip-link):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-pill-tabs button.is-active):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-search-filters button.is-active):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }
:root[data-ui-theme="dark"] :is(.sk-wallet-balance):not(:disabled) { background: var(--sk-color-action); color: var(--sk-color-on-action); }

.sk-terminal-lock, .sk-terminal-enrollment { background: var(--sk-color-canvas); }

/* Theme changes must repaint immediately, including Safari. Only movement is animated. */
:root[data-ui-theme] :is(.sk-button, .sk-icon-button, .sk-terminal-primary, .sk-terminal-secondary, .sk-terminal-link, .sk-terminal-danger) { transition: transform var(--sk-motion-fast); }
.sk-terminal-language-switch button { min-height: 44px; min-width: 44px; }

.sk-absence-request-fields { border: 0; padding: 0; margin: 0; min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }


/* Brand kit styles are owned by components/platform-logo.css. */

/* Compact platform identity in the partner topbar; approved blue/white artwork in both themes. */
.sk-global-topbar .sk-wordmark > .sk-platform-app-icon { display:block; width:44px; height:44px; border-radius:12px; object-fit:contain; filter:none; }

/* Age criteria reflow with text size; other rule editors retain their layout. */
.sk-drawer--segments .sk-rule-row--age { grid-template-columns: repeat(auto-fit, minmax(min(100%, 7rem), 1fr)); }
@media (max-width: 640px) { .sk-drawer--segments .sk-rule-row--age { grid-template-columns: 1fr; } }

/* Approved Apple × OpenAI staff interface. Scoped to staff roots; typography belongs to 00-tokens.css. */
:root[data-staff-interface]{--sk-font:var(--sk-interface-font);--sk-color-canvas:#f5f5f7;--sk-color-surface:#fff;--sk-color-header:#f7f7f9;--sk-color-rail:#e9e9ed;--sk-color-ink:#1d1d1f;--sk-color-ink-soft:#6e6e73;--sk-color-ink-faint:#76767b;--sk-color-border:#dcdce0;--sk-color-border-soft:#ededf0;--sk-color-border-interactive:#c9c9ce;--sk-color-surface-subtle:#f5f5f7;--sk-color-surface-hover:#ededf1;--sk-color-primary:#82667f;--sk-color-primary-hover:#6d5469;--sk-color-primary-soft:#eaf3ff;--sk-color-action:#82667f;--sk-color-action-hover:#6d5469;--sk-color-on-action:#fff;--sk-color-assistant:#82667f;--sk-color-assistant-hover:#6d5469;--sk-radius-lg:14px;--sk-radius-md:9px;--sk-radius-pill:8px;--sk-shadow-card:0 1px 3px rgb(0 0 0 / 3%);}
html[data-staff-interface],:root[data-staff-interface] body,:root[data-staff-interface] .sk-app-shell{font-family:var(--sk-interface-type-1);-webkit-font-smoothing:antialiased;}
:root[data-staff-interface] .sk-global-topbar{background:rgb(247 247 249 / 90%);-webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%);border-bottom:1px solid #dcdce0;}
:root[data-staff-interface] .sk-primary-rail{background:rgb(233 233 237 / 94%);border-right:1px solid #d4d4d9;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button{color:#63636a;border-radius:9px;font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button svg{width:21px;height:21px;stroke-width:1.6;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button:hover{background:#dedee4;color:#1d1d1f;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button:is(.is-active,.is-mobile-active){background:#82667f;color:#fff;box-shadow:0 1px 2px #0000000d;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button.is-active .sk-primary-rail__label{color:#fff;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button.is-active::before{display:none;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__label{font-family:var(--sk-font);font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-secondary-nav{background:#f0f0f3;border-color:#dcdce0;}
:root[data-staff-interface] .sk-secondary-nav__title{font-family:var(--sk-font);font-size:var(--sk-interface-type-4);font-weight:var(--sk-interface-type-5);letter-spacing:-.015em;}
:root[data-staff-interface] .sk-secondary-nav button{font-family:var(--sk-font);border-radius:8px;font-size:var(--sk-interface-type-6);}
:root[data-staff-interface] .sk-secondary-nav button.is-active{background:#dedee5;color:#1d1d1f;font-weight:var(--sk-interface-type-5);}
:root[data-staff-interface] .sk-app-shell :is(.sk-page-header h1,.sk-page h1,.sk-card h2,.sk-card h3){font-family:var(--sk-font);letter-spacing:-.035em;}
:root[data-staff-interface] .sk-app-shell .sk-page-header h1{font-size:var(--sk-interface-type-7);font-weight:var(--sk-interface-type-5);line-height:1.15;}
:root[data-staff-interface] .sk-app-shell .sk-page-header p{font-size:var(--sk-interface-type-4);color:#6e6e73;}
:root[data-staff-interface] .sk-kicker{display:none;}
:root[data-staff-interface] .sk-button{font-family:var(--sk-font);font-size:var(--sk-interface-type-6);border-radius:8px;font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-button--secondary:not(:disabled){box-shadow:0 1px 2px #00000008;}
:root[data-staff-interface] .sk-search-box{border-radius:9px;background:#ececf0;border:1px solid transparent;}
:root[data-staff-interface] .sk-search-box:focus-within{outline:3px solid #82667f40;border-color:#82667f;background:white;}
:root[data-staff-interface] .sk-search-box input{background:transparent;font-family:var(--sk-font);font-size:var(--sk-interface-type-6);}
:root[data-staff-interface] .sk-page-toolbar > select,:root[data-staff-interface] .sk-filter-bar > select{border-radius:8px;}
:root[data-staff-interface] .sk-card{border:1px solid var(--sk-color-border);border-radius:var(--sk-card-radius);box-shadow:var(--sk-shadow-card);}
:root[data-staff-interface] .sk-data-table{background:#fff;font-size:var(--sk-interface-type-6);}
:root[data-staff-interface] .sk-data-table thead th{background:#f5f5f7;font-size:var(--sk-interface-type-8);font-weight:var(--sk-interface-type-5);color:#6e6e73;border-bottom:1px solid #e0e0e5;}
:root[data-staff-interface] .sk-data-table tbody td{border-color:#ededf0;}
:root[data-staff-interface] .sk-person-cell strong{font-size:var(--sk-interface-type-4);font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-person-cell .sk-avatar{background:#efe6ee;color:#6b5a66;border-radius:50%;font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-status-pill,:root[data-staff-interface] .sk-chip,:root[data-staff-interface] .sk-badge,:root[data-staff-interface] .sk-pill{border-radius:6px;font-size:var(--sk-interface-type-8);}
:root[data-staff-interface] .sk-icon-button{border-radius:8px;}
:root[data-staff-interface] .sk-copilot-dock .sk-copilot__launcher{border-radius:9px;background:#82667f;border-color:#82667f;}
:root[data-staff-interface] .sk-drawer,:root[data-staff-interface] .sk-modal{font-family:var(--sk-font);}
:root[data-staff-interface][data-ui-theme="dark"]{--sk-color-canvas:#1c1c1e;--sk-color-surface:#2c2c2e;--sk-color-header:#252527;--sk-color-rail:#252527;--sk-color-ink:#f5f5f7;--sk-color-ink-soft:#b0b0b7;--sk-color-ink-faint:#9b9ba3;--sk-color-border:#414145;--sk-color-border-soft:#38383c;--sk-color-surface-subtle:#333336;--sk-color-surface-hover:#3a3a3e;--sk-color-action:#b59bb9;--sk-color-primary:#b59bb9;--sk-color-assistant:#b59bb9;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-global-topbar{background:#252527ed;border-color:#414145;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-primary-rail{background:#252527;border-color:#414145;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-primary-rail button{color:#b0b0b7;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-primary-rail button.is-active{background:#b59bb9;color:white;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-secondary-nav{background:#222225;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-secondary-nav button.is-active{background:#414145;color:#f5f5f7;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-card{border-color:#414145;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-data-table{background:#2c2c2e;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-data-table thead th{background:#333336;color:#b0b0b7;border-color:#414145;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-search-box{background:#39393d;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-search-box:focus-within{background:#2c2c2e;}
@media (max-width:44rem){
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button.is-mobile-overflow,:root[data-staff-interface] .sk-app-shell .sk-primary-rail > .sk-rail-customize,:root[data-staff-interface] .sk-app-shell .sk-primary-rail .sk-primary-help{display:none!important;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__label{font-size:var(--sk-interface-type-9);white-space:nowrap;}
:root[data-staff-interface] .sk-app-shell .sk-page-header h1{font-size:var(--sk-interface-type-10);}
:root[data-staff-interface] .sk-primary-rail{background:#f2f2f7ed;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);}
}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__label{color:inherit;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-primary-rail button:hover{background:#39393d;color:white;}
:root[data-staff-interface]{--sk-color-canvas:#f7efeb;--sk-color-surface:#ffffffc9;--sk-color-header:#ffffff85;--sk-color-rail:#ffffff70;--sk-color-border:#ffffffb8;--sk-color-border-soft:#ecdfd880;--sk-radius-lg:22px;--sk-radius-md:14px;--sk-radius-pill:14px;--sk-shadow-card:0 5px 24px #2e42690a;}
:root[data-staff-interface] body{background:radial-gradient(ellipse at 5% 0%,#f4ddd3 0,transparent 42%),radial-gradient(ellipse at 90% 40%,#e8defa 0,transparent 42%),#f7efeb;background-attachment:fixed;}
:root[data-staff-interface] .sk-app-shell{background:transparent;}
:root[data-staff-interface] .sk-global-topbar{background:#ffffff80;-webkit-backdrop-filter:blur(36px) saturate(170%);backdrop-filter:blur(36px) saturate(170%);border-bottom:1px solid #ffffffc0;box-shadow:0 1px 12px #314c6a05;}
:root[data-staff-interface] .sk-primary-rail{background:#ffffff66;-webkit-backdrop-filter:blur(38px) saturate(150%);backdrop-filter:blur(38px) saturate(150%);border-right:1px solid #ffffffb0;padding-inline:8px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button{border-radius:17px;transition:background .16s,box-shadow .16s;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button:is(.is-active,.is-mobile-active){background:linear-gradient(135deg,#ffffffeb,#ffffff85);color:#82667f;border:1px solid #ffffffee;box-shadow:0 3px 12px #39577912,inset 0 1px 0 #fff;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button.is-active .sk-primary-rail__label{color:#82667f;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button:hover{background:#ffffff80;}
:root[data-staff-interface] .sk-secondary-nav{background:#ffffff35;-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);border-color:#ffffff90;}
:root[data-staff-interface] .sk-secondary-nav button{border-radius:13px;}
:root[data-staff-interface] .sk-secondary-nav button.is-active{background:#ffffffb8;color:#1d1d1f;box-shadow:0 2px 9px #3145660b;border:1px solid #ffffffd0;}
:root[data-staff-interface] .sk-app-shell .sk-page-header h1{font-size:var(--sk-interface-type-11);font-weight:var(--sk-interface-type-5);letter-spacing:-.045em;}
:root[data-staff-interface] .sk-page{gap:24px;}
:root[data-staff-interface] .sk-card,:root[data-staff-interface] .sk-dashboard-card,:root[data-staff-interface] .sk-dashboard-quick-start{background:#ffffffb8;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:1px solid #ffffffd9;border-radius:var(--sk-card-radius);box-shadow:0 5px 24px #2e42690a,inset 0 1px 0 #fff;}
:root[data-staff-interface] .sk-button{border-radius:18px;padding-inline:16px;}
:root[data-staff-interface] .sk-app-shell .sk-button--primary:not(:disabled),:root[data-staff-interface] .sk-copilot-dock .sk-copilot__launcher{background:linear-gradient(180deg,#a58cb0,#82667f);border:1px solid #ffffff55;box-shadow:0 3px 9px #82667f24,inset 0 1px 0 #ffffff50;border-radius:20px;}
:root[data-staff-interface] .sk-button--secondary:not(:disabled){background:#ffffff9c;border-color:#ffffffc9;box-shadow:0 2px 6px #3145660a,inset 0 1px 0 #fff;}
:root[data-staff-interface] .sk-search-box{background:#ffffff70;border:1px solid #ffffffaa;border-radius:20px;box-shadow:inset 0 1px 3px #31456608;}
:root[data-staff-interface] .sk-page-toolbar > select{background:#ffffffb5;border:1px solid #ffffffc9;border-radius:18px;}
:root[data-staff-interface] .sk-icon-button{border-radius:50%;}
:root[data-staff-interface] .sk-data-table{background:#ffffffaa;}
:root[data-staff-interface] .sk-data-table thead th{background:#ffffff70;color:#707785;}
:root[data-staff-interface] .sk-data-table tbody td{border-color:#dce3ed70;padding-block:18px;}
:root[data-staff-interface] .sk-person-cell .sk-avatar{background:linear-gradient(135deg,#e6efff,#ede6f6);}
:root[data-staff-interface] .sk-copilot__panel{border-radius:24px;background:#ffffffde;-webkit-backdrop-filter:blur(40px) saturate(150%);backdrop-filter:blur(40px) saturate(150%);border:1px solid #ffffffec;box-shadow:0 18px 60px #243a5a24;}
:root[data-staff-interface] .sk-copilot__quick-prompts button{border-radius:14px;}
:root[data-staff-interface] .sk-copilot__composer textarea{border-radius:16px;}
@media (max-width:44rem){
:root[data-staff-interface] .sk-app-shell .sk-page-header h1{font-size:var(--sk-interface-type-7);}
:root[data-staff-interface] .sk-primary-rail{background:#ffffffa0;-webkit-backdrop-filter:blur(36px) saturate(180%);backdrop-filter:blur(36px) saturate(180%);}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button:is(.is-active,.is-mobile-active){border-radius:20px;}
}
:root[data-staff-interface][data-ui-theme="dark"] .sk-global-topbar,:root[data-staff-interface][data-ui-theme="dark"] .sk-primary-rail{background:#25252bbd;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-secondary-nav{background:#22222890;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-card,.sk-dashboard-card,.sk-dashboard-quick-start){background:#2c2c33bb;border-color:#ffffff15;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-primary-rail button.is-active{background:#ffffff18;color:#b59bb9;border-color:#ffffff20;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-data-table{background:#2c2c33bb;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-data-table thead th{background:#ffffff08;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot__panel{background:#292930ed;}
@media (min-width:44.01rem){
:root[data-staff-interface] .sk-app-shell .sk-primary-rail .sk-primary-rail__main > button.is-desktop-overflow{display:grid!important;}
:root[data-staff-interface] .sk-app-shell.is-rail-expanded .sk-primary-rail .sk-primary-rail__main > button.is-desktop-overflow{display:flex!important;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail .sk-mobile-more.is-desktop-more{display:none!important;}
:root[data-staff-interface] .sk-primary-rail__main{min-height:0;overflow-y:auto;scrollbar-width:thin;gap:2px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main > button{min-height:46px;padding-block:5px;flex-shrink:0;gap:3px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main > button svg{width:18px;height:18px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main .sk-primary-rail__label{font-size:var(--sk-interface-type-9);}
:root[data-staff-interface] .sk-app-shell.is-rail-expanded .sk-primary-rail__main > button{min-height:38px;}
:root[data-staff-interface] .sk-app-shell.is-rail-expanded .sk-primary-rail__main .sk-primary-rail__label{font-size:var(--sk-interface-type-6);}
}
@media (min-width:44.01rem){
:root[data-staff-interface] .sk-app-shell .sk-primary-rail{padding-block:8px;gap:4px;overflow:hidden;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main{flex:1;min-height:0;overflow:hidden;display:grid;grid-template-rows:repeat(14,minmax(0,1fr));gap:1px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main > button{min-height:0!important;height:100%;padding:2px 4px;gap:2px;border-radius:12px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main > button svg{width:clamp(14px,1.9vh,18px);height:clamp(14px,1.9vh,18px);flex-shrink:0;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main .sk-primary-rail__label{font-size:var(--sk-interface-type-12);line-height:1.1;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail .sk-primary-help,:root[data-staff-interface] .sk-app-shell .sk-primary-rail > .sk-rail-customize{min-height:36px;padding:3px;gap:2px;}
:root[data-staff-interface] .sk-app-shell.is-rail-expanded .sk-primary-rail__main > button{padding-inline:12px;}
:root[data-staff-interface] .sk-app-shell.is-rail-expanded .sk-primary-rail__main .sk-primary-rail__label{font-size:var(--sk-interface-type-3);}
}
:root[data-staff-interface]{--sk-color-canvas:#f9f9f8;--sk-color-ink:#242424;--sk-color-ink-soft:#686868;--sk-color-primary:#242424;--sk-color-primary-hover:#414141;--sk-color-action:#242424;--sk-color-action-hover:#414141;--sk-color-assistant:#242424;--sk-color-assistant-hover:#414141;--sk-color-primary-soft:#efefed;--sk-color-border:#e4e4e1;--sk-color-border-soft:#eeeeeb;--sk-radius-lg:18px;--sk-radius-md:12px;}
:root[data-staff-interface] body{background:radial-gradient(ellipse at 0 0,#f0f2f4,transparent 50%),#fafaf9;}
:root[data-staff-interface] .sk-global-topbar{background:#ffffffb8;border-bottom:1px solid #e8e8e5;box-shadow:none;}
:root[data-staff-interface] .sk-primary-rail{background:#f1f1efb8;border-right:1px solid #e5e5e1;}
:root[data-staff-interface] .sk-secondary-nav{background:#f7f7f5a8;border-color:#e7e7e3;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button{color:#626260;border-radius:12px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button:is(.is-active,.is-mobile-active){background:#e5e5e1;color:#222;box-shadow:none;border:1px solid transparent;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button.is-active .sk-primary-rail__label{color:#222;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button:hover{background:#e9e9e5;}
:root[data-staff-interface] .sk-secondary-nav button.is-active{background:#eaeae6;box-shadow:none;color:#242424;border-color:transparent;}
:root[data-staff-interface] .sk-app-shell .sk-page-header h1{font-size:var(--sk-interface-type-7);font-weight:var(--sk-interface-type-13);letter-spacing:-.035em;}
:root[data-staff-interface] .sk-app-shell .sk-page-header p{font-size:var(--sk-interface-type-6);color:#777;}
:root[data-staff-interface] .sk-card,:root[data-staff-interface] .sk-dashboard-card,:root[data-staff-interface] .sk-dashboard-quick-start{background:#ffffffcf;border:1px solid #e8e8e5;border-radius:var(--sk-card-radius);box-shadow:0 2px 8px #00000003;}
:root[data-staff-interface] .sk-app-shell .sk-button--primary:not(:disabled),:root[data-staff-interface] .sk-copilot-dock .sk-copilot__launcher{background:#242424;border:1px solid #242424;color:white;box-shadow:none;border-radius:24px;}
:root[data-staff-interface] .sk-button--secondary:not(:disabled){background:#ffffffb8;border:1px solid #deded9;box-shadow:none;border-radius:24px;}
:root[data-staff-interface] .sk-search-box{background:#ffffffa8;border:1px solid #e0e0db;box-shadow:none;border-radius:24px;}
:root[data-staff-interface] .sk-search-box:focus-within{outline:2px solid #a6a6a140;border-color:#898983;}
:root[data-staff-interface] .sk-page-toolbar > select{background:#ffffffb8;border-color:#deded9;border-radius:24px;}
:root[data-staff-interface] .sk-data-table{background:#ffffffc9;}
:root[data-staff-interface] .sk-data-table thead th{background:#f9f9f7;font-weight:var(--sk-interface-type-2);color:#777772;}
:root[data-staff-interface] .sk-data-table tbody td{padding-block:16px;border-color:#ecece8;}
:root[data-staff-interface] .sk-person-cell .sk-avatar{background:#efefeb;color:#666660;}
:root[data-staff-interface] .sk-person-cell strong{font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-copilot__panel{background:#fffffff0;border:1px solid #deded9;border-radius:22px;box-shadow:0 16px 55px #00000016;}
:root[data-staff-interface] .sk-copilot__quick-prompts button{background:#f5f5f1;border:1px solid #e4e4df;border-radius:16px;}
:root[data-staff-interface] .sk-copilot__composer textarea{background:#f5f5f1;border-radius:20px;}
:root[data-staff-interface] .sk-status-pill{background:#eff3ee;color:#61705c;}
:root[data-staff-interface][data-ui-theme="dark"]{--sk-color-action:#ecece8;--sk-color-on-action:#222;--sk-color-primary:#ecece8;--sk-color-assistant:#ecece8;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-global-topbar,:root[data-staff-interface][data-ui-theme="dark"] .sk-primary-rail{background:#252525d8;border-color:#ffffff15;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-secondary-nav{background:#24242490;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-primary-rail button.is-active{background:#ffffff15;color:white;border-color:transparent;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-primary-rail button.is-active .sk-primary-rail__label{color:white;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-button--primary:not(:disabled),:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot-dock .sk-copilot__launcher{background:#ecece8;color:#222;border-color:#ecece8;}
@media (min-width:44.01rem){
:root[data-staff-interface] .sk-secondary-nav{display:none;}
:root[data-staff-interface] .sk-app-shell .sk-main.has-secondary-nav,:root[data-staff-interface] .sk-app-shell .sk-main.has-secondary-nav.has-collapsed-secondary{padding-left:var(--sk-rail-width);}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main{display:flex;flex-direction:column;overflow-y:auto;gap:2px;}
:root[data-staff-interface] .hybrid-module-group{flex-shrink:0;}
:root[data-staff-interface] .sk-app-shell .hybrid-module-group>button{display:flex!important;align-items:center;justify-content:flex-start;gap:10px;width:100%;height:34px;min-height:34px!important;padding:5px 10px;border-radius:9px;}
:root[data-staff-interface] .sk-app-shell .hybrid-module-group>button .sk-primary-rail__label{color:inherit;text-align:left;font-size:var(--sk-interface-type-3);width:auto;}
:root[data-staff-interface] .sk-app-shell .hybrid-module-group>button svg{width:17px;height:17px;flex-shrink:0;}
:root[data-staff-interface] .sk-app-shell .hybrid-module-group>button.is-desktop-overflow{display:flex!important;}
:root[data-staff-interface] .hybrid-inline-submenu{margin:3px 4px 8px 18px;border-left:1px solid #dcdcd6;padding-left:8px;}
:root[data-staff-interface] .sk-app-shell .hybrid-inline-submenu button{display:block;width:100%;text-align:left;padding:7px 9px;font-size:var(--sk-interface-type-8);min-height:29px;border-radius:7px;background:transparent;color:#73736d;}
:root[data-staff-interface] .sk-app-shell .hybrid-inline-submenu button.is-active{background:#e7e7e2;color:#242424;box-shadow:none;font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .hybrid-inline-submenu .sk-secondary-nav__group-title{font-size:var(--sk-interface-type-8);margin:8px 8px 4px;color:#888;}
}
:root[data-staff-interface] .sk-page-header .sk-eyebrow,:root[data-staff-interface] .sk-page-header .sk-kicker,:root[data-staff-interface] .sk-page-header>div>p:first-child:not(:last-child){display:none;}
:root[data-staff-interface] .sk-app-shell .sk-page-header h1{font-size:var(--sk-interface-type-10);}
:root[data-staff-interface] .hybrid-editorial{padding:24px;display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:16px;margin:24px 32px;border-top:1px solid #e4e4df;}
:root[data-staff-interface] .hybrid-editorial h2{grid-column:1/-1;font-size:var(--sk-interface-type-14);font-weight:var(--sk-interface-type-2);margin:0 0 4px;}
:root[data-staff-interface] .hybrid-editorial article{background:white;border:1px solid #e7e7e2;border-radius:16px;overflow:hidden;}
:root[data-staff-interface] .hybrid-editorial img{width:100%;height:150px;object-fit:cover;}
:root[data-staff-interface] .hybrid-editorial article>div{padding:16px;}
:root[data-staff-interface] .hybrid-editorial h3{font-size:var(--sk-interface-type-15);font-weight:var(--sk-interface-type-2);margin:0 0 8px;}
:root[data-staff-interface] .hybrid-editorial p{font-size:var(--sk-interface-type-3);color:#777;line-height:1.5;}
:root[data-staff-interface] .hybrid-editorial button{font:inherit;font-size:var(--sk-interface-type-3);background:none;border:0;color:#333;padding:0;cursor:pointer;}
:root[data-staff-interface] .hybrid-footer{padding:18px 32px;border-top:1px solid #e7e7e2;display:flex;gap:20px;font-size:var(--sk-interface-type-8);color:#888;}
:root[data-staff-interface] .hybrid-footer button{font:inherit;background:none;border:0;color:inherit;cursor:pointer;}
@media (max-width:44rem){
:root[data-staff-interface] .hybrid-module-group{display:contents;}
:root[data-staff-interface] .hybrid-inline-submenu{display:none;}
:root[data-staff-interface] .hybrid-editorial{margin:24px 16px;padding:0;grid-template-columns:1fr;}
:root[data-staff-interface] .hybrid-footer{padding:18px 16px;}
:root[data-staff-interface] .hybrid-module-group>button.is-mobile-overflow{display:none!important;}
}
:root[data-staff-interface] .hybrid-tools{position:relative;font-size:var(--sk-interface-type-3);}
:root[data-staff-interface] .hybrid-tools summary{cursor:pointer;list-style:none;padding:8px 12px;border:1px solid #e5e5e0;border-radius:20px;}
:root[data-staff-interface] .hybrid-tools>div{position:absolute;right:0;top:42px;min-width:180px;padding:12px;background:white;border:1px solid #e4e4de;border-radius:16px;box-shadow:0 10px 30px #0001;display:flex;gap:12px;z-index:90;}
:root[data-staff-interface] .hybrid-tools>div .sk-topbar-secondary-action{display:flex!important;}
:root[data-staff-interface] .hybrid-tools>div button{min-width:32px;min-height:32px;}
:root[data-staff-interface] .sk-page-header p{max-width:65ch;}
@media (min-width:44.01rem){
:root[data-staff-interface] .sk-app-shell .hybrid-inline-submenu button{min-height:26px!important;height:auto!important;padding:5px 9px!important;font-size:var(--sk-interface-type-8)!important;line-height:16px;}
:root[data-staff-interface] .sk-app-shell .hybrid-module-group>button{height:32px;min-height:32px!important;}
:root[data-staff-interface] .sk-page-header{display:flex!important;}
:root[data-staff-interface] .sk-page-header h1{display:block!important;}
}
:root[data-staff-interface] .owner-briefing{padding:32px;max-width:1560px;margin:auto;color:var(--sk-color-ink);}
:root[data-staff-interface] .briefing-welcome{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:26px;}
:root[data-staff-interface] .briefing-date{font-size:var(--sk-interface-type-3);color:#81817a;margin:0 0 12px;}
:root[data-staff-interface] .briefing-welcome h1{font-family:var(--sk-font);font-size:var(--sk-interface-type-16);font-weight:var(--sk-interface-type-2);letter-spacing:-.045em;margin:0 0 10px;line-height:1.1;}
:root[data-staff-interface] .briefing-welcome>div>p:last-child{font-size:var(--sk-interface-type-4);color:#71716b;margin:0;}
:root[data-staff-interface] .briefing-actions{display:flex;gap:8px;}
:root[data-staff-interface] .business-pulse{display:grid;grid-template-columns:repeat(4,1fr);padding:22px 0;background:#ffffffb5;border:1px solid #e5e5df;border-radius:18px;margin-bottom:24px;}
:root[data-staff-interface] .business-pulse>div{padding:0 24px;display:flex;flex-direction:column;gap:8px;}
:root[data-staff-interface] .business-pulse>div+div{border-left:1px solid #e6e6df;}
:root[data-staff-interface] .business-pulse span{font-size:var(--sk-interface-type-3);color:#77776f;}
:root[data-staff-interface] .business-pulse strong{font-size:var(--sk-interface-type-17);font-weight:var(--sk-interface-type-2);letter-spacing:-.04em;}
:root[data-staff-interface] .business-pulse small{font-size:var(--sk-interface-type-8);color:#818179;}
:root[data-staff-interface] .briefing-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:20px;}
:root[data-staff-interface] .briefing-panel{background:#ffffffcf;border:1px solid #e6e6df;border-radius:18px;padding:22px;}
:root[data-staff-interface] .briefing-panel>header{display:flex;align-items:center;justify-content:space-between;gap:12px;}
:root[data-staff-interface] .briefing-panel h2{font-size:var(--sk-interface-type-18);font-weight:var(--sk-interface-type-2);letter-spacing:-.025em;margin:0;}
:root[data-staff-interface] .briefing-panel button{font-family:inherit;font-size:var(--sk-interface-type-8);color:#66665e;background:none;border:0;cursor:pointer;}
:root[data-staff-interface] .briefing-count{font-size:var(--sk-interface-type-9);border-radius:20px;background:#eeeae0;color:#796e50;padding:5px 10px;}
:root[data-staff-interface] .briefing-intro{font-size:var(--sk-interface-type-3);color:#898981;margin:9px 0 18px;}
:root[data-staff-interface] .briefing-task{display:flex;align-items:center;gap:14px;padding:17px 0;border-top:1px solid #eee;}
:root[data-staff-interface] .task-number{width:34px;height:34px;border-radius:10px;background:#f3f2ed;display:grid;place-items:center;font-size:var(--sk-interface-type-3);color:#767465;flex-shrink:0;}
:root[data-staff-interface] .briefing-task>div{flex:1;}
:root[data-staff-interface] .briefing-task h3{font-size:var(--sk-interface-type-6);font-weight:var(--sk-interface-type-2);margin:0 0 5px;}
:root[data-staff-interface] .briefing-task p{font-size:var(--sk-interface-type-8);color:#85857d;margin:0;line-height:1.5;}
:root[data-staff-interface] .briefing-task button{white-space:nowrap;}
:root[data-staff-interface] .briefing-confirmation{font-size:var(--sk-interface-type-8);color:#6c7d67;background:#f3f6f1;padding:12px;border-radius:10px;margin-top:5px;}
:root[data-staff-interface] .briefing-team{display:flex;gap:10px;align-items:center;font-size:var(--sk-interface-type-9);color:#818179;padding:18px 0;}
:root[data-staff-interface] .team-dots{display:flex;}
:root[data-staff-interface] .team-dots i{width:27px;height:27px;display:grid;place-items:center;font-size:var(--sk-interface-type-19);font-style:normal;background:#e9eae5;border:2px solid white;border-radius:50%;margin-left:-5px;}
:root[data-staff-interface] .team-dots i:first-child{margin:0;}
:root[data-staff-interface] .briefing-panel .briefing-appointment{display:flex;width:100%;align-items:center;gap:14px;padding:18px 0;text-align:left;border-top:1px solid #eee;}
:root[data-staff-interface] .briefing-appointment time{font-size:var(--sk-interface-type-3);color:#444;}
:root[data-staff-interface] .briefing-appointment>span:nth-child(2){flex:1;}
:root[data-staff-interface] .briefing-appointment strong{display:block;font-size:var(--sk-interface-type-6);color:#333;font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .briefing-appointment small{display:block;font-size:var(--sk-interface-type-9);color:#888;margin-top:5px;}
:root[data-staff-interface] .schedule-space{display:flex;justify-content:space-between;border-radius:10px;background:#f7f7f3;padding:12px;font-size:var(--sk-interface-type-9);color:#888;margin-top:8px;}
:root[data-staff-interface] .schedule-space strong{font-weight:var(--sk-interface-type-2);color:#666;}
:root[data-staff-interface] .performance{grid-column:1/-1;}
:root[data-staff-interface] .performance header p{font-size:var(--sk-interface-type-3);color:#888;margin:8px 0 0;}
:root[data-staff-interface] .performance-body{display:grid;grid-template-columns:220px 1fr;align-items:center;gap:28px;margin-top:26px;}
:root[data-staff-interface] .performance-body>div>strong{font-size:var(--sk-interface-type-11);font-weight:var(--sk-interface-type-2);letter-spacing:-.04em;}
:root[data-staff-interface] .performance-body strong span{font-size:var(--sk-interface-type-20);}
:root[data-staff-interface] .performance-body p{font-size:var(--sk-interface-type-8);color:#888;}
:root[data-staff-interface] .performance-body small{font-size:var(--sk-interface-type-8);color:#888;line-height:1.8;}
:root[data-staff-interface] .briefing-chart svg{width:100%;height:140px;}
:root[data-staff-interface] .briefing-chart>div{display:flex;justify-content:space-between;font-size:var(--sk-interface-type-9);color:#999;}
:root[data-staff-interface] .briefing-demo{font-size:var(--sk-interface-type-9);color:#999;margin:16px 0 0;}
:root[data-staff-interface] .hybrid-editorial{margin-top:0;padding-top:24px;}
:root[data-staff-interface] .owner-briefing button:focus-visible{outline:2px solid #777;outline-offset:4px;border-radius:4px;}
@media (max-width:80rem){
:root[data-staff-interface] .briefing-welcome h1{font-size:var(--sk-interface-type-11);}
:root[data-staff-interface] .briefing-grid{grid-template-columns:1.3fr 1fr;}
:root[data-staff-interface] .business-pulse>div{padding-inline:16px;}
:root[data-staff-interface] .briefing-task{gap:10px;}
:root[data-staff-interface] .briefing-task button{white-space:normal;}
:root[data-staff-interface] .owner-briefing{padding:24px;}
}
@media (max-width:44rem){
:root[data-staff-interface] .owner-briefing{padding:24px 16px;}
:root[data-staff-interface] .briefing-welcome{align-items:flex-start;flex-direction:column;gap:18px;}
:root[data-staff-interface] .briefing-welcome h1{font-size:var(--sk-interface-type-21);}
:root[data-staff-interface] .briefing-welcome>div>p:last-child{font-size:var(--sk-interface-type-6);line-height:1.5;}
:root[data-staff-interface] .business-pulse{grid-template-columns:repeat(2,1fr);gap:22px 0;padding:18px 0;}
:root[data-staff-interface] .business-pulse>div:nth-child(3){border-left:0;}
:root[data-staff-interface] .business-pulse strong{font-size:var(--sk-interface-type-22);}
:root[data-staff-interface] .business-pulse small{font-size:var(--sk-interface-type-9);}
:root[data-staff-interface] .briefing-grid{grid-template-columns:1fr;}
:root[data-staff-interface] .briefing-panel{padding:18px;}
:root[data-staff-interface] .performance-body{grid-template-columns:1fr;gap:12px;}
:root[data-staff-interface] .briefing-task button{max-width:85px;}
:root[data-staff-interface] .briefing-actions .sk-button{min-height:44px;}
:root[data-staff-interface] .briefing-chart svg{height:115px;}
}
:root[data-staff-interface] .owner-briefing{padding-top:30px;}
:root[data-staff-interface] .business-pulse{display:grid;grid-template-columns:1.65fr 1fr 1fr 1fr;background:none;border:0;border-radius:0;padding:0;gap:14px;margin-bottom:20px;}
:root[data-staff-interface] .business-pulse>div{position:relative;min-height:190px;border-radius:22px;padding:22px;justify-content:flex-end;overflow:hidden;background:#f0f0ec;border:1px solid #ffffff9c;box-shadow:0 4px 18px #27302008;}
:root[data-staff-interface] .business-pulse>div+div{border-left:0;}
:root[data-staff-interface] .business-pulse>div:first-child{background:linear-gradient(90deg,#23180b9c,#241a0750),url('/staff-interface/revenue-hair.webp') center 45%/cover;color:white;}
:root[data-staff-interface] .business-pulse>div:first-child span,:root[data-staff-interface] .business-pulse>div:first-child small{color:#ffffffe0;}
:root[data-staff-interface] .business-pulse strong{font-size:var(--sk-interface-type-23);letter-spacing:-.045em;}
:root[data-staff-interface] .business-pulse span{position:absolute;top:22px;left:22px;font-size:var(--sk-interface-type-6);color:#50534c;}
:root[data-staff-interface] .business-pulse small{font-size:var(--sk-interface-type-8);color:#686f62;}
:root[data-staff-interface] .business-pulse>div:nth-child(2){background:radial-gradient(circle at 85% 20%,#f6f8d9,transparent 70%),linear-gradient(135deg,#dce7bd,#bacb9e);color:#34452c;}
:root[data-staff-interface] .business-pulse>div:nth-child(3){background:radial-gradient(circle at 100% 0,#e2eefb,transparent 75%),linear-gradient(135deg,#e6eaf3,#cbd8ea);color:#3d3438;}
:root[data-staff-interface] .business-pulse>div:nth-child(4){background:radial-gradient(circle at 85% 10%,#f3e1d5,transparent 80%),linear-gradient(135deg,#ebe2da,#dfcbbc);color:#674c38;}
:root[data-staff-interface] .briefing-grid{gap:18px;}
:root[data-staff-interface] .briefing-panel{border-radius:22px;}
:root[data-staff-interface] .day-schedule{background:radial-gradient(ellipse at 100% 0,#485a47,transparent 75%),#26372c;color:#f3f5ee;border-color:#334839;box-shadow:0 5px 24px #20332312;}
:root[data-staff-interface] .day-schedule button,:root[data-staff-interface] .day-schedule .briefing-appointment time,:root[data-staff-interface] .day-schedule .briefing-appointment strong{color:#f3f5ee;}
:root[data-staff-interface] .day-schedule .briefing-appointment small,:root[data-staff-interface] .day-schedule .briefing-team{color:#b9c6b7;}
:root[data-staff-interface] .day-schedule .briefing-appointment{border-color:#ffffff18;}
:root[data-staff-interface] .day-schedule .team-dots i{background:#54654d;border-color:#334638;color:#e4ecdc;}
:root[data-staff-interface] .day-schedule .schedule-space{background:#ffffff0c;color:#b9c6b7;}
:root[data-staff-interface] .day-schedule .schedule-space strong{color:#edf1e6;}
:root[data-staff-interface] .attention{background:#fffffff0;}
:root[data-staff-interface] .attention .briefing-count{background:#e9dfc7;color:#806a3b;}
:root[data-staff-interface] .task-number{background:#f0eee5;border-radius:11px;}
:root[data-staff-interface] .briefing-confirmation{background:#ecf1e7;}
:root[data-staff-interface] .performance{background:linear-gradient(120deg,#f0f1ed,#ffffff);border-color:#e3e7df;}
:root[data-staff-interface] .performance-body{grid-template-columns:220px 1fr;}
:root[data-staff-interface] .hybrid-editorial{border-top:0;margin-top:2px;gap:16px;padding:0;}
:root[data-staff-interface] .hybrid-editorial h2{font-size:var(--sk-interface-type-24);margin:8px 0;}
:root[data-staff-interface] .hybrid-editorial article{position:relative;height:280px;border:0;border-radius:22px;box-shadow:0 6px 22px #0000000c;}
:root[data-staff-interface] .hybrid-editorial img{width:100%;height:100%;object-fit:cover;}
:root[data-staff-interface] .hybrid-editorial article::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#111b17dd,#111b1755 40%,transparent 75%);pointer-events:none;}
:root[data-staff-interface] .hybrid-editorial article>div{position:absolute;left:0;right:0;bottom:0;padding:22px;z-index:1;color:white;}
:root[data-staff-interface] .hybrid-editorial h3{font-size:var(--sk-interface-type-24);line-height:1.15;letter-spacing:-.025em;max-width:240px;color:white;}
:root[data-staff-interface] .hybrid-editorial p{color:#ffffffc9;font-size:var(--sk-interface-type-8);max-width:270px;line-height:1.5;}
:root[data-staff-interface] .hybrid-editorial button{background:#fffffff0;border-radius:20px;padding:8px 13px;color:#333;font-size:var(--sk-interface-type-8);}
:root[data-staff-interface] .hybrid-editorial article:first-of-type{height:280px;}
:root[data-staff-interface] .briefing-welcome h1{font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .briefing-demo{margin-bottom:22px;}
@media (max-width:80rem){
:root[data-staff-interface] .business-pulse{grid-template-columns:repeat(2,1fr);}
:root[data-staff-interface] .business-pulse>div{min-height:165px;}
:root[data-staff-interface] .hybrid-editorial article{height:260px;}
:root[data-staff-interface] .hybrid-editorial h3{font-size:var(--sk-interface-type-18);}
}
@media (max-width:44rem){
:root[data-staff-interface] .business-pulse{gap:10px;}
:root[data-staff-interface] .business-pulse>div{padding:16px;min-height:165px;}
:root[data-staff-interface] .business-pulse span{left:16px;top:16px;font-size:var(--sk-interface-type-3);}
:root[data-staff-interface] .business-pulse strong{font-size:var(--sk-interface-type-10);}
:root[data-staff-interface] .business-pulse small{font-size:var(--sk-interface-type-9);line-height:1.5;}
:root[data-staff-interface] .briefing-grid{gap:14px;}
:root[data-staff-interface] .hybrid-editorial{padding:0;margin:18px 16px;}
:root[data-staff-interface] .hybrid-editorial article{height:250px;}
:root[data-staff-interface] .hybrid-editorial article:first-of-type{height:280px;}
:root[data-staff-interface] .briefing-panel{padding:18px;}
:root[data-staff-interface] .hybrid-editorial h3{font-size:var(--sk-interface-type-25);}
}
:root[data-staff-interface] .widget-editor{display:flex;align-items:center;gap:12px;margin:-8px 0 18px;font-size:var(--sk-interface-type-8);color:#888;}
:root[data-staff-interface] .widget-editor .sk-button{font-size:var(--sk-interface-type-8);min-height:30px;padding:5px 12px;}
:root[data-staff-interface] .widget-reset{font:inherit;color:#777;border:0;background:none;cursor:pointer;text-decoration:underline;}
:root[data-staff-interface] .widget-editable{cursor:grab!important;outline:1px dashed #8c9386;outline-offset:3px;animation:widget-breathe 1.8s ease-in-out infinite;}
:root[data-staff-interface] .widget-editable button{pointer-events:none;}
:root[data-staff-interface] .widget-dragging{opacity:.45;cursor:grabbing!important;animation:none;}
:root[data-staff-interface] .widget-drop-target{outline:3px solid #738b79;outline-offset:4px;}
:root[data-staff-interface] .widget-editable::before{content:'⠿';position:absolute;right:10px;top:10px;z-index:3;background:#ffffffe0;color:#666;border-radius:20px;width:23px;height:23px;display:grid;place-items:center;font-size:var(--sk-interface-type-20);}
:root[data-staff-interface] .briefing-panel.widget-editable{position:relative;}
@keyframes widget-breathe{
0%,100%{transform:rotate(-.12deg);}
50%{transform:rotate(.12deg);}
}
@media (prefers-reduced-motion:reduce){
:root[data-staff-interface] .widget-editable{animation:none;}
}
@media (max-width:44rem){
:root[data-staff-interface] .widget-editor{flex-wrap:wrap;}
}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-0"]{background:linear-gradient(0deg,#171b22d9,#171b2230 80%),url('/staff-interface/revenue-hair.webp') center 45%/cover;color:#fff;border-color:#ffffff40;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-0"] span,:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-0"] small{color:#ffffffdf;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"]{background:radial-gradient(ellipse at 100% 0%,#dcdfcd 0%,transparent 75%),linear-gradient(140deg,#cbd0bc,#b6beaa);color:#28352b;border-color:#d9decc;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-2"]{background:radial-gradient(ellipse at 100% 0%,#555e79 0%,transparent 80%),linear-gradient(135deg,#242f48,#3d3438);color:#f3f5fa;border-color:#45506a;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-2"] span,:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-2"] small{color:#d9dfeb;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"]{background:radial-gradient(ellipse at 100% 0%,#eadfd4 0%,transparent 80%),linear-gradient(135deg,#d6c4b5,#c8b1a0);color:#47372e;border-color:#dfd0c2;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"] span,:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"] small{color:#4b5748;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"] span,:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"] small{color:#6b5546;}
:root[data-staff-interface] .business-pulse strong{font-weight:var(--sk-interface-type-2);letter-spacing:-.055em;}
:root[data-staff-interface] .business-pulse span{font-weight:var(--sk-interface-type-2);letter-spacing:-.01em;}
:root[data-staff-interface] .business-pulse>div{box-shadow:0 4px 16px #20282c07;}
:root[data-staff-interface] .day-schedule{background:radial-gradient(ellipse at 100% 0%,#394c42 0%,transparent 80%),linear-gradient(135deg,#1e2d28,#2b3b33);border-color:#38483f;}
:root[data-staff-interface] .briefing-confirmation{background:#f0f2ec;color:#52634d;}
:root[data-staff-interface] .attention .briefing-count{background:#eee6d8;color:#706047;}
:root[data-staff-interface] .performance{background:linear-gradient(115deg,#f0f0eb,#fafaf8 70%);border-color:#e2e3da;}
:root[data-staff-interface] .task-number{background:#eeeee7;color:#63695b;}
:root[data-staff-interface] .hybrid-editorial article::after{background:linear-gradient(0deg,#151b1be8,#151b1b55 48%,transparent 85%);}
:root[data-staff-interface] .hybrid-editorial img{filter:saturate(.7);}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"]{background:radial-gradient(ellipse at 100% 0%,#dde9f7 0%,transparent 75%),linear-gradient(140deg,#c8d8ed,#cbbfc7);color:#33292f;border-color:#d6e2f1;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"] span,:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"] small{color:#6b5a66;}
:root[data-staff-interface] .day-schedule{background:radial-gradient(ellipse at 100% 0%,#3d3438 0%,transparent 80%),linear-gradient(135deg,#2a2227,#263c61);border-color:#354b71;color:#f2f5fb;}
:root[data-staff-interface] .day-schedule .briefing-appointment small,:root[data-staff-interface] .day-schedule .briefing-team{color:#bacbe4;}
:root[data-staff-interface] .day-schedule .team-dots i{background:#425b82;border-color:#2b4269;color:#e5edfa;}
:root[data-staff-interface] .day-schedule .schedule-space{background:#ffffff0b;color:#becde3;}
:root[data-staff-interface] .day-schedule .schedule-space strong{color:#edf3fd;}
:root[data-staff-interface] .briefing-confirmation{background:#edf2f9;color:#526a8c;}
:root[data-staff-interface] .task-number{background:#edf0f6;color:#596b88;}
:root[data-staff-interface] .performance{background:linear-gradient(115deg,#f0f3f8,#fafbfc 70%);border-color:#e1e6f0;}
:root[data-staff-interface] .widget-drop-target{outline-color:#547bb3;}
:root[data-staff-interface] .business-pulse>div{animation:widget-arrive .65s cubic-bezier(.2,.8,.2,1) both;transition:transform .22s ease,box-shadow .22s ease;transform-origin:center;}
:root[data-staff-interface] .business-pulse>div:nth-child(2){animation-delay:.08s;}
:root[data-staff-interface] .business-pulse>div:nth-child(3){animation-delay:.16s;}
:root[data-staff-interface] .business-pulse>div:nth-child(4){animation-delay:.24s;}
:root[data-staff-interface] .business-pulse>div:hover:not(.widget-editable){transform:translateY(-3px);box-shadow:0 10px 26px #23364f12;}
:root[data-staff-interface] .briefing-panel{animation:widget-arrive .7s cubic-bezier(.2,.8,.2,1) .16s both;}
:root[data-staff-interface] .day-schedule{animation-delay:.24s;}
:root[data-staff-interface] .briefing-chart svg>path:last-child{stroke-dasharray:900;stroke-dashoffset:900;animation:chart-reveal 1.8s ease .4s forwards;}
:root[data-staff-interface] .briefing-chart svg>path:nth-last-child(2){animation:chart-area 1.4s ease .4s both;}
:root[data-staff-interface] .briefing-task,:root[data-staff-interface] .briefing-appointment{transition:background .2s ease,transform .2s ease;}
:root[data-staff-interface] .briefing-task:hover{background:#f7f8fa;}
:root[data-staff-interface] .day-schedule .briefing-appointment:hover{background:#ffffff08;transform:translateX(2px);}
:root[data-staff-interface] .hybrid-editorial article img{transition:transform .7s cubic-bezier(.2,.8,.2,1);}
:root[data-staff-interface] .hybrid-editorial article:hover img{transform:scale(1.035);}
:root[data-staff-interface] .business-pulse .widget-editable{animation:none;}
:root[data-staff-interface] .widget-editable{animation:widget-breathe 1.8s ease-in-out infinite!important;}
:root[data-staff-interface] .widget-dragging{animation:none!important;}
:root[data-staff-interface] .business-pulse strong{font-variant-numeric:tabular-nums;}
@keyframes widget-arrive{
from{opacity:0;transform:translateY(10px);}
to{opacity:1;transform:translateY(0);}
}
@keyframes chart-reveal{
to{stroke-dashoffset:0;}
}
@keyframes chart-area{
from{opacity:0;}
to{opacity:1;}
}
@media (prefers-reduced-motion:reduce){
:root[data-staff-interface] .business-pulse>div,:root[data-staff-interface] .briefing-panel,:root[data-staff-interface] .briefing-chart svg>path,:root[data-staff-interface] .widget-editable{animation:none!important;opacity:1;stroke-dashoffset:0;}
:root[data-staff-interface] .business-pulse>div,:root[data-staff-interface] .briefing-task,:root[data-staff-interface] .briefing-appointment,:root[data-staff-interface] .hybrid-editorial article img{transition:none!important;}
:root[data-staff-interface] .business-pulse>div:hover:not(.widget-editable),:root[data-staff-interface] .day-schedule .briefing-appointment:hover,:root[data-staff-interface] .hybrid-editorial article:hover img{transform:none;}
}
:root[data-staff-interface] .business-pulse{grid-template-columns:1.35fr 1fr 1fr 1fr;gap:20px;}
:root[data-staff-interface] .business-pulse>div[data-widget-id]{min-height:244px;padding:25px 24px 32px;background:linear-gradient(150deg,#fff,#f8f8f7)!important;border:1px solid #fff!important;border-radius:30px;box-shadow:0 15px 28px -17px #222f4259,0 3px 7px #24344908,inset 0 2px 0 white;isolation:isolate;overflow:hidden;}
:root[data-staff-interface] .business-pulse>div[data-widget-id]::after{content:'';position:absolute;inset:64px 10px 10px;z-index:-1;border-radius:22px;box-shadow:inset 0 1px 1px #ffffff75,0 5px 12px #1c304715;background:linear-gradient(135deg,#d7e5f8,#a7bddb);}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-0"]::after{background:linear-gradient(0deg,#111d36c9,#111d3610 90%),url('/staff-interface/revenue-hair.webp') center 45%/cover;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"]::after{background:radial-gradient(ellipse at 100% 0,#f0f6ff,transparent 70%),linear-gradient(135deg,#c6d9f3,#96b3da);}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-2"]::after{background:radial-gradient(ellipse at 95% 0,#536b97,transparent 80%),linear-gradient(135deg,#1b2c4b,#354d78);}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"]::after{background:radial-gradient(ellipse at 90% 0,#efe6dc,transparent 70%),linear-gradient(135deg,#dccbbb,#bca794);}
:root[data-staff-interface] .business-pulse>div[data-widget-id] span{position:absolute;top:24px;left:24px;color:#474b54!important;font-size:var(--sk-interface-type-6);font-weight:var(--sk-interface-type-2);z-index:1;}
:root[data-staff-interface] .business-pulse>div[data-widget-id] strong{position:relative;font-size:var(--sk-interface-type-26);line-height:1;z-index:1;font-weight:var(--sk-interface-type-27);margin-bottom:2px;}
:root[data-staff-interface] .business-pulse>div[data-widget-id] small{position:relative;z-index:1;line-height:1.5;max-width:180px;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-0"] strong,:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-2"] strong{color:white;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-0"] small,:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-2"] small{color:#e1e9f8!important;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"] strong{color:#203a63;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-1"] small{color:#445d81!important;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"] strong{color:#473c33;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"] small{color:#625446!important;}
:root[data-staff-interface] .business-pulse>div:hover:not(.widget-editable){box-shadow:0 20px 33px -18px #222f4265,0 4px 12px #2434490c;transform:translateY(-3px);}
:root[data-staff-interface] .briefing-panel{border-radius:28px;border-color:#fff;box-shadow:0 12px 26px -22px #2434494d,inset 0 1px 0 #fff;}
:root[data-staff-interface] .day-schedule{border:8px solid white;border-radius:30px;box-shadow:0 15px 28px -17px #222f4259,inset 0 1px 2px #ffffff26;}
:root[data-staff-interface] .attention{padding:26px;}
:root[data-staff-interface] .briefing-task{padding-block:19px;}
:root[data-staff-interface] .performance{background:linear-gradient(150deg,#fff,#f5f6f9);padding:26px;}
:root[data-staff-interface] .hybrid-editorial{gap:20px;}
:root[data-staff-interface] .hybrid-editorial article,:root[data-staff-interface] .hybrid-editorial article:first-of-type{height:350px;background:linear-gradient(150deg,#fff,#f7f7f6);border:1px solid white;border-radius:30px;box-shadow:0 15px 28px -17px #222f4259;overflow:hidden;}
:root[data-staff-interface] .hybrid-editorial article::after{display:none;}
:root[data-staff-interface] .hybrid-editorial img{position:absolute;left:10px;bottom:10px;width:calc(100% - 20px);height:180px;border-radius:22px;object-fit:cover;filter:saturate(.65);box-shadow:0 5px 12px #1c304718;}
:root[data-staff-interface] .hybrid-editorial article>div{position:static;padding:24px;color:#333;}
:root[data-staff-interface] .hybrid-editorial h3{font-size:var(--sk-interface-type-24);font-weight:var(--sk-interface-type-27);letter-spacing:-.035em;color:#383c42;max-width:none;margin:0 0 8px;}
:root[data-staff-interface] .hybrid-editorial p{font-size:var(--sk-interface-type-8);color:#8b8d91;max-width:none;line-height:1.6;margin:0 0 8px;}
:root[data-staff-interface] .hybrid-editorial button{font-size:var(--sk-interface-type-9);padding:0;background:none;color:#555;}
:root[data-staff-interface] .hybrid-editorial article:hover img{transform:scale(1.01);}
:root[data-staff-interface] .owner-briefing{padding-top:34px;}
:root[data-staff-interface] .widget-editable::before{right:15px;top:20px;}
:root[data-staff-interface] .widget-editable{outline-offset:5px;}
@media (max-width:80rem){
:root[data-staff-interface] .business-pulse{grid-template-columns:repeat(2,1fr);}
:root[data-staff-interface] .hybrid-editorial article,:root[data-staff-interface] .hybrid-editorial article:first-of-type{height:370px;}
:root[data-staff-interface] .hybrid-editorial img{height:175px;}
}
@media (max-width:44rem){
:root[data-staff-interface] .business-pulse{gap:14px;}
:root[data-staff-interface] .business-pulse>div[data-widget-id]{min-height:220px;padding:20px 20px 28px;border-radius:26px;}
:root[data-staff-interface] .business-pulse>div[data-widget-id]::after{inset:58px 8px 8px;border-radius:20px;}
:root[data-staff-interface] .business-pulse>div[data-widget-id] span{top:21px;left:20px;font-size:var(--sk-interface-type-8);}
:root[data-staff-interface] .business-pulse>div[data-widget-id] strong{font-size:var(--sk-interface-type-28);}
:root[data-staff-interface] .business-pulse>div[data-widget-id] small{font-size:var(--sk-interface-type-9);max-width:125px;}
:root[data-staff-interface] .briefing-panel{border-radius:24px;padding:20px;}
:root[data-staff-interface] .day-schedule{border-width:6px;}
:root[data-staff-interface] .hybrid-editorial article,:root[data-staff-interface] .hybrid-editorial article:first-of-type{height:350px;}
:root[data-staff-interface] .hybrid-editorial img{height:190px;}
:root[data-staff-interface] .hybrid-editorial h3{font-size:var(--sk-interface-type-29);}
}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-0"]::after{background:linear-gradient(0deg,#10223b65,transparent 80%),url('/staff-interface/revenue-hair.webp') center/cover;}
:root[data-staff-interface]{--sk-topbar-height:60px;}
:root[data-staff-interface] .sk-global-topbar{padding-inline:22px;background:#ffffffc4;box-shadow:none;border-bottom:1px solid #e9e9e4;}
:root[data-staff-interface] .sk-wordmark-image{width:118px!important;}
:root[data-staff-interface] .sk-wordmark{padding-right:16px!important;min-width:0!important;}
:root[data-staff-interface] .sk-topbar-actions{gap:14px;}
:root[data-staff-interface] .sk-profile-name{display:none;}
:root[data-staff-interface] .sk-profile-button{width:30px;height:30px;min-width:30px;min-height:30px;font-size:var(--sk-interface-type-8);background:#eeeee9;border:0;}
:root[data-staff-interface] .hybrid-ecosystem{display:flex;align-items:center;gap:6px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button{display:flex;flex-direction:column;justify-content:center;gap:4px;min-width:47px;min-height:44px;width:auto;height:auto;border:0;border-radius:10px;background:transparent;color:#555650;padding:5px 7px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button:hover{background:#f0f0eb;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button svg{width:18px;height:18px;stroke-width:1.5;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button::after{font-size:var(--sk-interface-type-30);line-height:1;letter-spacing:.01em;color:#71726b;}
:root[data-staff-interface] .hybrid-search::after{content:'Søk';}
:root[data-staff-interface] .hybrid-chat::after{content:'Chat';}
:root[data-staff-interface] .hybrid-wallet::after{content:'Lommebok';}
:root[data-staff-interface] .hybrid-insights::after{content:'Innsikt';}
:root[data-staff-interface] .hybrid-notifications::after{content:'Varsler';}
:root[data-staff-interface] .hybrid-support::after{content:'Rapporter';}
:root[data-staff-interface] .hybrid-toolbar-divider{width:1px;height:24px;background:#e3e3de;margin:0 8px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher{background:#eeeee9!important;color:#333!important;border:1px solid #e2e2da!important;box-shadow:none!important;min-height:34px;border-radius:20px;padding-inline:12px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher strong{font-size:var(--sk-interface-type-8);}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher svg{width:16px;height:16px;}
:root[data-staff-interface] .hybrid-appearance{display:flex;justify-content:space-between;align-items:center;font-size:var(--sk-interface-type-8);padding:8px;}
:root[data-staff-interface] .sk-topbar-context{gap:12px;}
:root[data-staff-interface] .sk-business-switcher__label{display:none;}
@media (max-width:80rem){
:root[data-staff-interface] .hybrid-ecosystem{gap:2px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button{min-width:39px;padding-inline:4px;}
:root[data-staff-interface] .hybrid-toolbar-divider{margin-inline:4px;}
:root[data-staff-interface] .sk-global-topbar{padding-inline:16px;}
}
@media (max-width:44rem){
:root[data-staff-interface]{--sk-topbar-height:112px;}
:root[data-staff-interface] .sk-global-topbar{padding:8px 12px;}
:root[data-staff-interface] .sk-wordmark-image{width:102px!important;}
:root[data-staff-interface] .hybrid-ecosystem{width:100%;justify-content:space-between;gap:0;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button{min-width:32px;min-height:44px;padding:4px 2px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button::after{font-size:var(--sk-interface-type-19);}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher{padding-inline:7px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher strong{font-size:var(--sk-interface-type-9);}
:root[data-staff-interface] .hybrid-toolbar-divider{display:none;}
:root[data-staff-interface] .sk-topbar-actions{gap:6px;}
:root[data-staff-interface] .sk-profile-button{width:27px;min-width:27px;}
:root[data-staff-interface] .hybrid-ecosystem .hybrid-insights{display:flex!important;}
}
:root[data-staff-interface] .sk-copilot.is-docked .sk-copilot__panel{width:min(440px,calc(100vw - 32px));height:min(780px,calc(100dvh - var(--sk-topbar-height) - 24px));border-radius:24px;border:1px solid #deded9;background:#fcfcfaf5;box-shadow:0 18px 65px #222f421c;overflow:hidden;-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);}
:root[data-staff-interface] .sk-copilot__header{padding:18px 20px;border-bottom:0;background:transparent;gap:10px;}
:root[data-staff-interface] .sk-copilot__mark{width:32px;height:32px;border-radius:12px;background:#eeeee8;color:#404039;}
:root[data-staff-interface] .sk-copilot__header strong{font-size:var(--sk-interface-type-15);font-weight:var(--sk-interface-type-13);letter-spacing:-.02em;}
:root[data-staff-interface] .sk-copilot__status{font-size:var(--sk-interface-type-9);color:#909088;}
:root[data-staff-interface] .sk-copilot__header .sk-icon-button{width:28px;height:28px;min-width:28px;min-height:28px;background:transparent;}
:root[data-staff-interface] .sk-copilot__tabs{margin:0 20px 8px;padding:4px;border:0;border-radius:12px;background:#eeeee8;gap:3px;}
:root[data-staff-interface] .sk-copilot__tabs button{min-height:34px;border-radius:9px;font-size:var(--sk-interface-type-3);background:transparent;border:0;color:#77776d;font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-copilot__tabs button[aria-selected="true"]{background:#fff!important;color:#242424!important;box-shadow:0 1px 4px #00000009;}
:root[data-staff-interface] .sk-copilot__tabs svg{width:15px;height:15px;}
:root[data-staff-interface] .sk-copilot__tabs button span{font-size:var(--sk-interface-type-30);background:#f0f0eb;}
:root[data-staff-interface] .sk-copilot__chat-view{min-height:0;display:flex;flex-direction:column;}
:root[data-staff-interface] .sk-copilot__tips{margin:16px 20px 8px;padding:18px 0 8px;background:none;border:0;}
:root[data-staff-interface] .sk-copilot__tips>div:first-child>svg{display:none;}
:root[data-staff-interface] .sk-copilot__tips strong{font-size:var(--sk-interface-type-31);font-weight:var(--sk-interface-type-2);letter-spacing:-.035em;line-height:1.2;}
:root[data-staff-interface] .sk-copilot__tips small{font-size:var(--sk-interface-type-3);line-height:1.6;color:#8a8a80;margin-top:8px;}
:root[data-staff-interface] .sk-copilot__quick-prompts{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
:root[data-staff-interface] .sk-copilot__quick-prompts button{padding:9px 12px;font-size:var(--sk-interface-type-8);min-height:34px;border:1px solid #e1e1d9;background:#fff;border-radius:20px;color:#66665d;box-shadow:none;}
:root[data-staff-interface] .sk-copilot__quick-prompts button:hover{background:#f1f1ec;}
:root[data-staff-interface] .sk-copilot__tips>p{font-size:var(--sk-interface-type-9);color:#939389;line-height:1.5;margin-top:14px;}
:root[data-staff-interface] .sk-copilot__messages{padding:12px 20px;flex:1;min-height:100px;}
:root[data-staff-interface] .sk-copilot__messages article{font-size:var(--sk-interface-type-6);line-height:1.7;gap:8px;margin-bottom:18px;}
:root[data-staff-interface] .sk-copilot__messages article.is-user>div{background:#eeeee8!important;color:#333!important;border-radius:18px 18px 5px 18px;padding:12px 15px;}
:root[data-staff-interface] .sk-copilot__messages article.is-assistant>div{background:none;border:0;padding:8px 0;}
:root[data-staff-interface] .sk-copilot__composer{position:relative;margin:8px 16px 16px;padding:12px 12px 30px;border:1px solid #deded5;border-radius:22px;background:white;box-shadow:0 2px 10px #00000004;gap:8px;}
:root[data-staff-interface] .sk-copilot__composer label{flex:1;min-width:0;}
:root[data-staff-interface] .sk-copilot__composer textarea{border:0!important;background:transparent!important;box-shadow:none!important;border-radius:0;padding:4px 0;font-size:var(--sk-interface-type-6);min-height:52px;resize:none;}
:root[data-staff-interface] .sk-copilot__composer textarea:focus{outline:none;}
:root[data-staff-interface] .sk-copilot__composer:focus-within{border-color:#92928a;box-shadow:0 0 0 2px #92928a15;}
:root[data-staff-interface] .sk-copilot__composer>.sk-icon-button{border-radius:50%;min-width:32px;min-height:32px;width:32px;height:32px;background:#242424;color:white;align-self:end;}
:root[data-staff-interface] .sk-copilot__composer>.sk-icon-button:disabled{background:#ecece5;color:#aaa;}
:root[data-staff-interface] .sk-copilot__composer>small{position:absolute;bottom:10px;left:14px;font-size:var(--sk-interface-type-30);color:#aaa99f;}
:root[data-staff-interface] .sk-copilot__guide-view{padding:18px 20px;}
:root[data-staff-interface] .sk-copilot__guide-view>header>small{display:none;}
:root[data-staff-interface] .sk-copilot__guide-view h2{font-family:var(--sk-font);font-size:var(--sk-interface-type-25);font-weight:var(--sk-interface-type-2);letter-spacing:-.03em;}
:root[data-staff-interface] .sk-copilot__guide-list>button{border-radius:16px;background:white;border:1px solid #e4e4dc;box-shadow:none;padding:14px;margin-top:10px;}
:root[data-staff-interface] .sk-copilot__guide-outcome{color:#999;font-size:var(--sk-interface-type-9);}
:root[data-staff-interface] .sk-copilot__page-tips{border-radius:14px;background:#f0f0eb;font-size:var(--sk-interface-type-8);}
@media (max-width:44rem){
:root[data-staff-interface] .sk-copilot.is-docked .sk-copilot__panel{inset:8px;width:calc(100vw - 16px);height:calc(100dvh - 16px);border-radius:24px;}
:root[data-staff-interface] .sk-copilot__composer>.sk-icon-button{min-width:44px;min-height:44px;}
:root[data-staff-interface] .sk-copilot__quick-prompts button{min-height:40px;}
}
@media (min-width:70rem){
:root[data-staff-interface] body:has(.sk-copilot.is-open) .sk-main{padding-right:420px;transition:padding-right .22s ease;}
:root[data-staff-interface] .sk-copilot.is-docked.is-open .sk-copilot__panel{position:fixed;top:var(--sk-topbar-height);right:0;bottom:0;width:400px;height:calc(100dvh - var(--sk-topbar-height));max-height:none;border-radius:0;border:0;border-left:1px solid #deded9;box-shadow:none;background:#f7f7f5;-webkit-backdrop-filter:none;backdrop-filter:none;}
}
:root[data-staff-interface] .sk-copilot__chat-view{flex:1;overflow:hidden;}
:root[data-staff-interface] .sk-copilot__messages{overflow-y:auto;}
:root[data-staff-interface] .sk-copilot__composer{flex-shrink:0;}
@media (prefers-reduced-motion:reduce){
:root[data-staff-interface] body:has(.sk-copilot.is-open) .sk-main{transition:none;}
}
:root[data-staff-interface] .hybrid-account-drawer{width:min(480px,100vw);background:#f7f7f5;border-left:1px solid #deded9;box-shadow:-12px 0 60px #0000000d;}
:root[data-staff-interface] .hybrid-account-drawer .sk-drawer__header{padding:22px 24px;background:transparent;border-bottom:1px solid #e8e8e3;}
:root[data-staff-interface] .hybrid-account-drawer .sk-drawer__header h2{font-size:var(--sk-interface-type-32);font-weight:var(--sk-interface-type-13);letter-spacing:-.025em;}
:root[data-staff-interface] .hybrid-account-drawer .sk-drawer__body{padding:24px;}
:root[data-staff-interface] .sk-account-panel{display:flex;flex-direction:column;gap:22px;}
:root[data-staff-interface] .sk-account-hero{display:flex;align-items:center;gap:14px;padding:4px 0 0;background:none;border:0;box-shadow:none;}
:root[data-staff-interface] .sk-account-hero .sk-avatar{width:52px;height:52px;border-radius:18px;background:linear-gradient(145deg,#dce5f3,#b7c7e0);color:#384d70;font-size:var(--sk-interface-type-32);font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-account-hero>div{flex:1;min-width:0;}
:root[data-staff-interface] .sk-account-hero strong{font-size:var(--sk-interface-type-18);font-weight:var(--sk-interface-type-13);}
:root[data-staff-interface] .sk-account-hero small{display:block;font-size:var(--sk-interface-type-3);color:#858580;margin-top:5px;}
:root[data-staff-interface] .sk-account-hero .sk-status-badge{font-size:var(--sk-interface-type-9);background:#eeeee9;color:#72726c;}
:root[data-staff-interface] .sk-account-panel>.sk-tabs{display:flex;gap:3px;background:#eaeae5;padding:4px;border:0;border-radius:12px;}
:root[data-staff-interface] .sk-account-panel>.sk-tabs button{display:flex;justify-content:center;align-items:center;gap:7px;flex:1;min-height:36px;font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-2);border:0;border-radius:9px;color:#77776f;background:transparent;}
:root[data-staff-interface] .sk-account-panel>.sk-tabs button.is-active{background:white;color:#242424;box-shadow:0 1px 4px #00000009;}
:root[data-staff-interface] .sk-account-panel .sk-inset-form,:root[data-staff-interface] .sk-account-panel .sk-settings-sections>section{background:white;border:1px solid #e4e4de;border-radius:18px;padding:18px;box-shadow:none;}
:root[data-staff-interface] .sk-account-panel h3{font-size:var(--sk-interface-type-6);font-weight:var(--sk-interface-type-13);margin:0 0 16px;letter-spacing:-.01em;}
:root[data-staff-interface] .sk-account-panel .sk-form-stack,:root[data-staff-interface] .sk-account-panel .sk-settings-sections{display:flex;flex-direction:column;gap:16px;}
:root[data-staff-interface] .sk-account-panel .sk-field{margin-bottom:12px;}
:root[data-staff-interface] .sk-account-panel .sk-field>span{font-size:var(--sk-interface-type-8);color:#85857c;font-weight:var(--sk-interface-type-33);}
:root[data-staff-interface] .sk-account-panel input:not([type=checkbox]),:root[data-staff-interface] .sk-account-panel select{height:38px;min-height:38px;background:#f6f6f3;border:1px solid #ebebe5;border-radius:10px;font-size:var(--sk-interface-type-3);padding:8px 10px;}
:root[data-staff-interface] .sk-account-panel .sk-inset-form>small{font-size:var(--sk-interface-type-9);line-height:1.6;color:#929288;}
:root[data-staff-interface] .sk-account-panel .sk-switch-row{padding:12px 0;border-bottom:1px solid #efefea;}
:root[data-staff-interface] .sk-account-panel .sk-switch-row strong{font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-33);}
:root[data-staff-interface] .sk-account-panel input[type=checkbox]{appearance:none;width:34px;height:21px;min-height:21px;border:0;border-radius:20px;background:#d6d6d0;position:relative;cursor:pointer;flex-shrink:0;}
:root[data-staff-interface] .sk-account-panel input[type=checkbox]:before{content:'';position:absolute;top:3px;left:3px;width:15px;height:15px;background:white;border-radius:50%;box-shadow:0 1px 3px #0002;transition:transform .15s;}
:root[data-staff-interface] .sk-account-panel input[type=checkbox]:checked{background:#6d5469;}
:root[data-staff-interface] .sk-account-panel input[type=checkbox]:checked:before{transform:translateX(13px);}
:root[data-staff-interface] .sk-account-panel input[type=checkbox]:focus-visible{outline:2px solid #6d5469;outline-offset:3px;}
:root[data-staff-interface] .sk-account-panel .sk-button{min-height:36px;font-size:var(--sk-interface-type-3);border-radius:12px;}
:root[data-staff-interface] .sk-account-panel>.sk-button{align-self:flex-start;background:transparent;border:0;color:#87635f;}
:root[data-staff-interface] .sk-account-panel .sk-list-row{padding:13px 0;}
:root[data-staff-interface] .sk-account-panel .sk-list-row strong{font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-account-panel .sk-list-row small,:root[data-staff-interface] .sk-account-panel .sk-muted-copy{font-size:var(--sk-interface-type-8);color:#8b8b82;line-height:1.6;}
:root[data-staff-interface] .sk-account-panel .sk-account-scopes code{font-size:var(--sk-interface-type-8);border-radius:8px;padding:6px 9px;background:#f0f0eb;}
:root[data-staff-interface] .sk-account-panel .sk-readiness-banner{background:#eeeee9;border:0;border-radius:14px;font-size:var(--sk-interface-type-8);padding:14px;}
@media (max-width:44rem){
:root[data-staff-interface] .hybrid-account-drawer .sk-drawer__body{padding:18px;}
:root[data-staff-interface] .sk-account-panel>.sk-tabs button{min-height:44px;}
:root[data-staff-interface] .sk-account-panel .sk-switch-row{min-height:48px;}
}
:root[data-staff-interface] .hybrid-account-drawer .sk-drawer__header h2{font-family:var(--sk-font);font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-account-panel .sk-inset-form{gap:12px;}
:root[data-staff-interface] .sk-account-panel .sk-field{margin:0;gap:6px;}
:root[data-staff-interface] .sk-account-panel .sk-field label{font-size:var(--sk-interface-type-8);color:#77776f;font-weight:var(--sk-interface-type-33);}
:root[data-staff-interface] .sk-account-panel .sk-inset-form h3{margin:0 0 4px;}
:root[data-staff-interface] .sk-account-panel .sk-switch-row{padding:10px 0;min-height:42px;}
:root[data-staff-interface] .sk-account-panel .sk-inset-form>small{color:#77776f;}
@media (min-width:44.01rem){
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main{flex:0 0 auto;overflow:visible;gap:2px;}
:root[data-staff-interface] .sk-app-shell .hybrid-module-group>button{box-sizing:border-box;border:1px solid transparent;transform:none;white-space:nowrap;}
:root[data-staff-interface] .hybrid-sidebar-context{flex:1;min-height:0;overflow-y:auto;overflow-anchor:none;scrollbar-width:thin;margin-top:8px;border-top:1px solid #deded8;padding-top:10px;}
:root[data-staff-interface] .hybrid-sidebar-context__title{display:block;padding:0 11px 6px;font-size:var(--sk-interface-type-9);font-weight:var(--sk-interface-type-2);color:#888880;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
:root[data-staff-interface] .hybrid-sidebar-context .hybrid-inline-submenu{margin:0 4px 8px 8px;padding-left:0;border-left:0;}
:root[data-staff-interface] .hybrid-sidebar-context .hybrid-inline-submenu button{box-sizing:border-box;border:1px solid transparent;min-height:28px!important;padding:5px 10px!important;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail .sk-primary-help,:root[data-staff-interface] .sk-app-shell .sk-primary-rail>.sk-rail-customize{flex-shrink:0;}
}
@media (max-width:44rem){
:root[data-staff-interface] .hybrid-sidebar-context{display:none;}
}
@media (min-width:44.01rem) and (max-height:760px){
:root[data-staff-interface] .sk-app-shell .hybrid-module-group>button{height:28px;min-height:28px!important;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main{gap:1px;}
}
@media (min-width:44.01rem){
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main>.sk-mobile-more{display:none!important;}
:root[data-staff-interface] .hybrid-sidebar-context{width:100%;align-self:stretch;box-sizing:border-box;}
}
@media (min-width:44.01rem){
:root[data-staff-interface] .sk-app-shell.is-rail-expanded .sk-primary-rail .sk-primary-rail__main>button.sk-mobile-more,:root[data-staff-interface] .sk-app-shell .sk-primary-rail .sk-primary-rail__main>button.sk-mobile-more{display:none!important;}
}
:root[data-staff-interface] .dashboard-widgets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;align-items:stretch;}
:root[data-staff-interface] .dashboard-widget{position:relative;min-width:0;grid-column:span 1;}
:root[data-staff-interface] .dashboard-widget.size-medium{grid-column:span 2;}
:root[data-staff-interface] .dashboard-widget.size-wide{grid-column:1/-1;}
:root[data-staff-interface] .widget-content{height:100%;}
:root[data-staff-interface] .widget-content>.briefing-panel{height:100%;box-sizing:border-box;}
:root[data-staff-interface] .widget-metric.business-pulse{display:block;background:none;border:0;padding:0;margin:0;height:100%;animation:none;}
:root[data-staff-interface] .widget-metric.business-pulse>div[data-widget-id]{height:100%;min-height:244px;box-sizing:border-box;margin:0;}
:root[data-staff-interface] .widget-metric.business-pulse>div[data-widget-id]+div{border:0;}
:root[data-staff-interface] .widget-content .performance-body{grid-template-columns:minmax(0,1fr);gap:16px;}
:root[data-staff-interface] .size-wide .performance-body{grid-template-columns:220px 1fr;}
:root[data-staff-interface] .dashboard-widget.size-small .briefing-task{flex-wrap:wrap;}
:root[data-staff-interface] .dashboard-widget.size-small .briefing-task button{margin-left:48px;}
:root[data-staff-interface] .dashboard-widget.size-small .briefing-panel h2{font-size:var(--sk-interface-type-15);}
:root[data-staff-interface] .dashboard-widget.size-small .briefing-team{flex-wrap:wrap;}
:root[data-staff-interface] .shortcut-widget{min-height:244px;display:flex;flex-direction:column;justify-content:flex-end;background:linear-gradient(145deg,#fff,#e9eef6);gap:12px;}
:root[data-staff-interface] .shortcut-glyph{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:#dce5f2;color:#41618e;font-size:var(--sk-interface-type-22);margin-bottom:auto;}
:root[data-staff-interface] .shortcut-widget p{font-size:var(--sk-interface-type-3);line-height:1.6;color:#81868e;margin:0;}
:root[data-staff-interface] .shortcut-widget button{text-align:left;min-height:36px;color:#405d89;}
:root[data-staff-interface] .widget-editor-v2{flex-wrap:wrap;}
:root[data-staff-interface] .widget-editor-v2>span{font-size:var(--sk-interface-type-8);}
:root[data-staff-interface] .widget-feedback{font-size:var(--sk-interface-type-8);color:#70756e;min-height:0;margin:0 0 12px;}
:root[data-staff-interface] .widget-feedback:empty{display:none;}
:root[data-staff-interface] .widget-controls{display:flex;align-items:center;gap:5px;padding:7px 8px;margin-bottom:8px;background:#e9ecef;border-radius:12px;}
:root[data-staff-interface] .widget-controls button{border:0;border-radius:8px;background:white;color:#44505e;height:30px;font-size:var(--sk-interface-type-8);cursor:pointer;}
:root[data-staff-interface] .widget-remove{width:30px;font-size:var(--sk-interface-type-24)!important;}
:root[data-staff-interface] .widget-drag-handle{touch-action:none;user-select:none;cursor:grab!important;flex:1;white-space:nowrap;}
:root[data-staff-interface] .widget-drag-handle:active{cursor:grabbing!important;}
:root[data-staff-interface] .widget-controls select{width:72px;min-height:30px;height:30px;padding:4px;font-size:var(--sk-interface-type-9);border:0;border-radius:8px;background:white;}
:root[data-staff-interface] .is-editing .dashboard-widget{outline:1px dashed #afb8c7;outline-offset:5px;border-radius:30px;}
:root[data-staff-interface] .dashboard-widget.is-dragging{opacity:.55;}
:root[data-staff-interface] .dashboard-widget.is-drop-target{outline:3px solid #82667f;outline-offset:6px;}
:root[data-staff-interface] .is-editing .widget-content{pointer-events:none;user-select:none;}
:root[data-staff-interface] .widget-gallery-search{display:flex;flex-direction:column;gap:8px;margin-bottom:20px;}
:root[data-staff-interface] .widget-gallery-search>span{font-size:var(--sk-interface-type-3);color:#757b84;}
:root[data-staff-interface] .widget-gallery-search input{border:1px solid #dcdfe3;border-radius:14px;height:42px;padding:10px 14px;font-size:var(--sk-interface-type-6);background:#f6f7f8;}
:root[data-staff-interface] .widget-gallery-list{display:grid;gap:10px;}
:root[data-staff-interface] .widget-gallery-card{display:flex;align-items:center;gap:14px;padding:var(--sk-card-inset-compact);background:#f8f9fb;border:1px solid #e5e7ec;border-radius:var(--sk-card-radius);}
:root[data-staff-interface] .widget-gallery-swatch{width:70px;height:70px;flex-shrink:0;display:grid;place-items:center;border-radius:15px;background:linear-gradient(145deg,#dce8fc,#7593c3);color:#213753;font-size:var(--sk-interface-type-31);font-weight:var(--sk-interface-type-2);letter-spacing:-.04em;}
:root[data-staff-interface] .widget-gallery-swatch.has-image{background:url('/staff-interface/revenue-hair.webp') center/cover;color:white;}
:root[data-staff-interface] .widget-gallery-card>div:nth-child(2){flex:1;min-width:0;}
:root[data-staff-interface] .widget-gallery-card small{font-size:var(--sk-interface-type-9);color:#8a8d94;}
:root[data-staff-interface] .widget-gallery-card h3{font-family:var(--sk-font);font-size:var(--sk-interface-type-4);font-weight:var(--sk-interface-type-2);margin:4px 0;}
:root[data-staff-interface] .widget-gallery-card p{font-size:var(--sk-interface-type-8);color:#8a8d94;line-height:1.5;margin:0;}
:root[data-staff-interface] .widget-gallery-card button{font-size:var(--sk-interface-type-8);min-height:36px;white-space:nowrap;padding:8px 12px;}
:root[data-staff-interface] .widget-gallery-note{font-size:var(--sk-interface-type-8);color:#838993;line-height:1.6;margin-top:18px;}
:root[data-staff-interface] .widget-empty{padding:44px;border:1px dashed #bbc5d3;border-radius:26px;text-align:center;}
:root[data-staff-interface] .widget-empty h2{font-size:var(--sk-interface-type-24);}
:root[data-staff-interface] .widget-empty p{font-size:var(--sk-interface-type-6);color:#7a818b;}
@media (max-width:80rem){
:root[data-staff-interface] .dashboard-widgets{grid-template-columns:repeat(2,minmax(0,1fr));}
:root[data-staff-interface] .dashboard-widget.size-medium{grid-column:span 2;}
:root[data-staff-interface] .size-wide .performance-body{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:44rem){
:root[data-staff-interface] .dashboard-widgets{gap:14px;}
:root[data-staff-interface] .widget-controls{flex-wrap:wrap;padding:5px;}
:root[data-staff-interface] .widget-drag-handle span{display:none;}
:root[data-staff-interface] .widget-controls select{width:62px;}
:root[data-staff-interface] .widget-gallery-card{gap:9px;flex-wrap:wrap;}
:root[data-staff-interface] .widget-gallery-swatch{width:52px;height:52px;font-size:var(--sk-interface-type-32);}
:root[data-staff-interface] .widget-gallery-card button{min-height:44px;margin-left:auto;}
:root[data-staff-interface] .widget-metric.business-pulse>div[data-widget-id]{min-height:220px;}
:root[data-staff-interface] .dashboard-widget.size-small .briefing-panel{padding:16px;}
:root[data-staff-interface] .widget-remove,:root[data-staff-interface] .widget-drag-handle{min-height:40px;}
}
@media (prefers-reduced-motion:reduce){
:root[data-staff-interface] .dashboard-widget *{animation:none!important;transition:none!important;}
}
:root[data-staff-interface] .dashboard-widget{display:flex;flex-direction:column;}
:root[data-staff-interface] .widget-content{height:auto;flex:1;min-height:0;}
:root[data-staff-interface] .widget-controls{flex-shrink:0;}
:root[data-staff-interface] .widget-metric.business-pulse{min-height:244px;}
:root[data-staff-interface] .widget-metric.business-pulse>div[data-widget-id]{height:244px;}
:root[data-staff-interface] .dashboard-widget.size-medium .widget-metric.business-pulse>div[data-widget-id],:root[data-staff-interface] .dashboard-widget.size-wide .widget-metric.business-pulse>div[data-widget-id]{height:280px;}
:root[data-staff-interface] .widget-gallery-category{display:flex;align-items:center;gap:12px;margin-bottom:16px;font-size:var(--sk-interface-type-3);color:#777e89;}
:root[data-staff-interface] .widget-gallery-category select{min-height:36px;font-size:var(--sk-interface-type-3);padding:6px 12px;background:#f5f7fa;border:1px solid #dce1e8;border-radius:12px;}
:root[data-staff-interface] .widget-gallery-search{margin-bottom:12px;}
:root[data-staff-interface] .widget-gallery-card>div:nth-child(2){overflow-wrap:anywhere;}
:root[data-staff-interface] .sk-modal:has(.widget-gallery){width:min(680px,calc(100vw - 32px));background:#fcfcfa!important;-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid #e2e4e8;border-radius:26px;overflow:hidden;}
:root[data-staff-interface] .sk-modal:has(.widget-gallery) .sk-modal__header{background:#fcfcfa;}
:root[data-staff-interface] .sk-modal:has(.widget-gallery) .sk-modal__header h2{font-family:var(--sk-font);font-size:var(--sk-interface-type-29);font-weight:var(--sk-interface-type-2);letter-spacing:-.03em;}
:root[data-staff-interface] .sk-modal:has(.widget-gallery) .sk-modal__header p{font-size:var(--sk-interface-type-3);line-height:1.6;color:#818790;}
:root[data-staff-interface] .sk-modal:has(.widget-gallery) .sk-modal__footer:empty{display:none;}
:root[data-staff-interface] .sk-copilot__header .nora-subtitle{display:block!important;font-size:var(--sk-interface-type-9);color:#888c94;margin-top:3px;font-weight:var(--sk-interface-type-33);}
:root[data-staff-interface] .nora-mode-action{padding:2px 20px 12px;}
:root[data-staff-interface] .nora-mode-action button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:38px;font-family:inherit;font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-2);border:1px solid #d8e1ef;border-radius:12px;background:#edf2fa;color:#3e5e91;cursor:pointer;}
:root[data-staff-interface] .nora-mode-action button:hover{background:#e2eaf7;}
:root[data-staff-interface] .nora-mode-action button:focus-visible{outline:2px solid #82667f;outline-offset:3px;}
:root[data-staff-interface] .nora-voice-view{display:flex;flex:1;min-height:0;overflow:auto;align-items:center;flex-direction:column;padding:40px 28px 24px;text-align:center;}
:root[data-staff-interface] .nora-voice-orb{width:136px;height:136px;min-height:136px;display:grid;place-items:center;border-radius:50%;color:white;background:radial-gradient(circle at 28% 20%,#b3cef7,transparent 55%),linear-gradient(140deg,#7a9bcf,#284d8b);box-shadow:inset 0 1px 8px #ffffff73,0 18px 48px -20px #31548469;margin:0 0 28px;}
:root[data-staff-interface] .nora-voice-view h2{font-family:var(--sk-font);font-size:var(--sk-interface-type-34);letter-spacing:-.03em;font-weight:var(--sk-interface-type-2);margin:0 0 12px;}
:root[data-staff-interface] .nora-voice-view>p{font-size:var(--sk-interface-type-3);line-height:1.7;color:#858990;margin:0;}
:root[data-staff-interface] .nora-voice-note{margin:32px 0 20px;padding:14px 16px;background:#eeeee9;border-radius:14px;text-align:left;}
:root[data-staff-interface] .nora-voice-note strong{font-size:var(--sk-interface-type-8);font-weight:var(--sk-interface-type-2);color:#70767f;}
:root[data-staff-interface] .nora-voice-note p{font-size:var(--sk-interface-type-8);line-height:1.6;color:#858990;margin:6px 0 0;}
:root[data-staff-interface] .nora-voice-view>.sk-button{min-height:42px;border-radius:22px;}
:root[data-staff-interface] .nora-return-text{border:0;background:none;color:#626c7b;font-size:var(--sk-interface-type-3);font-family:inherit;padding:16px;cursor:pointer;margin-top:4px;}
@media (max-width:44rem){
:root[data-staff-interface] .nora-mode-action button{min-height:44px;}
:root[data-staff-interface] .nora-voice-view{padding-top:24px;}
}
:root[data-staff-interface] .nora-launcher-group{display:flex;align-items:center;gap:var(--sk-space-2);}
:root[data-staff-interface] .nora-voice-shortcut{width:32px;height:32px;min-width:32px;border:0;background:#e9eff8;border-radius:50%;display:grid;place-items:center;color:#45628d;cursor:pointer;}
:root[data-staff-interface] .nora-voice-shortcut:hover{background:#dce6f5;}
:root[data-staff-interface] .nora-voice-shortcut:focus-visible{outline:2px solid #82667f;outline-offset:3px;}
:root[data-staff-interface] .sk-copilot__header .nora-subtitle{text-transform:none;letter-spacing:0;}
@media (max-width:44rem){
:root[data-staff-interface] .nora-voice-shortcut{width:30px;min-width:30px;height:32px;}
:root[data-staff-interface] .nora-launcher-group{gap:var(--sk-space-1);}
:root[data-staff-interface] .hybrid-ecosystem{gap:2px;}
}
:root[data-staff-interface] .sk-copilot.is-docked .sk-copilot__panel{display:flex;flex-direction:column;}
:root[data-staff-interface] .sk-copilot__header,:root[data-staff-interface] .sk-copilot__tabs,:root[data-staff-interface] .nora-mode-action{flex-shrink:0;}
:root[data-staff-interface] .sk-copilot__guide-view{flex:1;min-height:0;overflow:auto;}
:root[data-staff-interface] .nora-voice-view{justify-content:center;}
:root[data-staff-interface] .dashboard-widget .widget-metric strong{font-size:var(--sk-interface-type-35)!important;}
:root[data-staff-interface] .hybrid-workspace-selector{gap:0;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__trigger{display:flex;align-items:center;gap:7px;min-height:34px;padding:6px 9px;border:1px solid transparent;border-radius:10px;background:none;box-shadow:none;max-width:260px;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__trigger:hover,:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__trigger[aria-expanded=true]{background:#eceeea;border-color:#e4e6e1;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__avatar{width:18px;height:18px;min-width:18px;border-radius:0;background:none;color:#82877e;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__avatar svg{width:16px;height:16px;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__label strong{font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-33);color:#73786f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__label small{display:none;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__chevron{width:12px;height:12px;color:#959a92;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__menu{width:300px;max-width:calc(100vw - 32px);padding:10px;background:#fcfcfa;border:1px solid #e0e3dc;border-radius:18px;box-shadow:0 16px 45px #18202e1a;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__heading{font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-2);padding:7px 10px;color:#51584d;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__section-label{font-size:var(--sk-interface-type-9);font-weight:var(--sk-interface-type-33);text-transform:none;letter-spacing:0;color:#949a90;padding:12px 10px 6px;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__item{min-height:42px;padding:9px 10px;border:1px solid transparent;border-radius:10px;gap:10px;background:none;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__item.is-active{background:#f0f2ed;color:#40483a;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__item strong{font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-33);}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__item small{font-size:var(--sk-interface-type-9);color:#93988e;}
:root[data-staff-interface] .hybrid-workspace-locations{border-top:1px solid #e7e9e3;margin-top:10px;}
:root[data-staff-interface] .hybrid-workspace-locations>.sk-tenant-switcher__item>svg:first-child{color:#93998c;flex-shrink:0;}
@media (max-width:44rem){
:root[data-staff-interface] .sk-app-shell .hybrid-workspace-selector{display:flex!important;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__trigger{max-width:190px;min-height:36px;padding:5px;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__label{display:block!important;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__label strong{font-size:var(--sk-interface-type-8);}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__menu{position:fixed;top:55px;left:16px;right:16px;width:auto;max-width:none;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__item{min-height:44px;}
}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-0"]::after{background:linear-gradient(0deg,rgba(37,27,19,.72),rgba(47,34,24,.13) 72%),url('/staff-interface/revenue-hair.webp') 60% center/cover;}
:root[data-staff-interface] .widget-gallery-swatch.has-image{background:linear-gradient(0deg,#30241980,transparent),url('/staff-interface/revenue-hair.webp') center/cover;color:white;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__trigger:hover,:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__trigger[aria-expanded=true]{background:#ededed;border-color:#e3e3e3;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__avatar{color:#808080;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__label strong{color:#707070;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__chevron{color:#969696;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__menu{background:#fcfcfc;border-color:#e1e1e1;box-shadow:0 16px 45px #00000018;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__heading{color:#505050;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__section-label{color:#929292;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__item.is-active{background:#efefef;color:#404040;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__item:hover{background:#e9e9e9;color:#303030;}
:root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__item small{color:#919191;}
:root[data-staff-interface] .hybrid-workspace-locations{border-color:#e6e6e6;}
:root[data-staff-interface] .hybrid-workspace-locations>.sk-tenant-switcher__item>svg:first-child{color:#929292;}
:root[data-staff-interface]:not([data-ui-theme="dark"]){--sk-color-ink:#26282b;--sk-color-ink-soft:#62666c;--sk-color-ink-faint:#686d74;--sk-color-canvas:#f8f9fa;--sk-color-surface:#fff;--sk-color-surface-warm:#f1f2f3;--sk-color-surface-hover:#f0f1f3;--sk-color-surface-selected:#eceff4;--sk-color-border:#e2e4e7;--sk-color-border-soft:#eceef0;--sk-color-primary-soft:#eef2f9;--sk-color-signal:#e9edf3;--sk-color-signal-soft:#f1f3f7;--sk-font-heading:var(--sk-font);--sk-type-page-title:28px;--sk-control-height:36px;--sk-control-height-compact:36px;}
:root[data-staff-interface] .sk-app-shell .sk-page{padding:var(--sk-page-inset-block) var(--sk-page-inset-inline) var(--sk-page-inset-bottom);gap:20px;}
:root[data-staff-interface] .sk-app-shell .sk-page-header{min-height:0;gap:16px;align-items:center;margin-bottom:0;padding-bottom:0;}
:root[data-staff-interface] .sk-app-shell .sk-page-header h1{font-family:var(--sk-font);font-size:var(--sk-interface-type-10);line-height:1.2;font-weight:var(--sk-interface-type-2);letter-spacing:-.035em;margin:0;}
:root[data-staff-interface] .sk-app-shell .sk-page-header p{font-size:var(--sk-interface-type-3);line-height:1.6;margin:6px 0 0;color:var(--sk-color-ink-soft);}
:root[data-staff-interface] .sk-app-shell .sk-page-header .sk-eyebrow{display:none;}
:root[data-staff-interface] .sk-app-shell .sk-page-actions{gap:8px;}
:root[data-staff-interface] .sk-app-shell .sk-page-toolbar{min-height:0;padding:0;align-items:center;gap:8px;flex-wrap:wrap;}
:root[data-staff-interface] .sk-app-shell .sk-page :is(.sk-button,.sk-toolbar-select,.sk-toolbar-date){min-height:36px;height:36px;font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-27);border-radius:18px;padding:7px 14px;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-button svg{width:16px;height:16px;stroke-width:1.6;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-search-field{min-height:36px;height:36px;border:1px solid var(--sk-color-border);border-radius:18px;background:var(--sk-color-surface);box-shadow:none;min-width:0;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-search-field input{min-height:34px;height:34px;font-size:var(--sk-interface-type-3);background:transparent;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-search-field svg{width:16px;height:16px;color:#898d94;}
:root[data-staff-interface] .sk-app-shell .sk-page :is(.sk-card,.sk-data-table-wrap){border:1px solid var(--sk-color-border-soft);border-radius:var(--sk-card-radius);box-shadow:0 8px 24px -20px #26344930;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-card-header{min-height:0;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-card-header h2{font-family:var(--sk-font);font-size:var(--sk-interface-type-18);font-weight:var(--sk-interface-type-2);letter-spacing:-.02em;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-card-header p{font-size:var(--sk-interface-type-3);line-height:1.6;}
:root[data-staff-interface] .sk-app-shell .sk-page table th{font-size:var(--sk-interface-type-8);font-weight:var(--sk-interface-type-2);color:#858a92;letter-spacing:0;text-transform:none;background:#fafbfc;padding:14px 18px;}
:root[data-staff-interface] .sk-app-shell .sk-page table td{font-size:var(--sk-interface-type-3);padding:15px 18px;border-color:var(--sk-color-border-soft);}
:root[data-staff-interface] .sk-app-shell .sk-page table td strong{font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-app-shell .sk-page table td small{font-size:var(--sk-interface-type-9);color:#8a8f96;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-avatar{background:#eef0f3;color:#717b89;border-color:#fff;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-status-badge{font-size:var(--sk-interface-type-9);font-weight:var(--sk-interface-type-27);padding:4px 8px;border-radius:20px;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-tabs{gap:4px;border-bottom:1px solid var(--sk-color-border-soft);}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-tabs button{font-size:var(--sk-interface-type-3);min-height:36px;font-weight:var(--sk-interface-type-27);padding:8px 13px;border-radius:12px 12px 0 0;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-pagination button{min-height:32px;font-size:var(--sk-interface-type-8);border-radius:16px;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-empty-state{padding:32px;font-size:var(--sk-interface-type-3);}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-empty-state h3{font-family:var(--sk-font);font-size:var(--sk-interface-type-18);font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-app-shell .sk-page :is(input,select,textarea):focus-visible{outline:2px solid #9a7f97;outline-offset:2px;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-metric strong{font-weight:var(--sk-interface-type-27);letter-spacing:-.035em;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-metric small{font-size:var(--sk-interface-type-8);}
@media (max-width:44rem){
:root[data-staff-interface] .sk-app-shell .sk-page{padding:var(--sk-page-inset-block) var(--sk-page-inset-inline) var(--sk-page-inset-bottom);gap:18px;}
:root[data-staff-interface] .sk-app-shell .sk-page-header h1{font-size:var(--sk-interface-type-34);}
:root[data-staff-interface] .sk-app-shell .sk-page-actions{width:100%;}
:root[data-staff-interface] .sk-app-shell .sk-page :is(.sk-button,.sk-toolbar-select,.sk-toolbar-date){min-height:40px;height:auto;}
:root[data-staff-interface] .sk-app-shell .sk-page-toolbar .sk-search-field{flex:1 1 100%;height:40px;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-search-field input{height:38px;}
:root[data-staff-interface] .sk-app-shell .sk-page table td{padding:13px 12px;}
:root[data-staff-interface] .sk-app-shell .sk-page table th{padding:12px;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-card{border-radius:var(--sk-card-radius);}
}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar{padding:12px 16px;gap:8px;background:var(--sk-color-surface);border-color:var(--sk-color-border-soft);}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar :is(.sk-button,.sk-calendar-team-button,.sk-calendar-date-button){height:36px;min-height:36px;font-size:var(--sk-interface-type-3);font-weight:var(--sk-interface-type-27);border-radius:18px;padding:7px 12px;}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-icon-button{height:36px;min-height:36px;width:36px;min-width:36px;border-radius:12px;}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar svg{width:17px;height:17px;stroke-width:1.6;}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-segmented{border-radius:18px;border-color:var(--sk-color-border);overflow:hidden;}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-segmented .sk-calendar-date-button{border-radius:0;}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar__group{gap:8px;}
:root[data-staff-interface] .sk-app-shell .sk-page table th .sk-button{font-size:var(--sk-interface-type-9);font-weight:var(--sk-interface-type-2);padding:0;height:auto;min-height:24px;background:none;border:0;}
:root[data-staff-interface] .sk-drawer:not(.hybrid-account-drawer){background:var(--sk-color-surface);border-color:var(--sk-color-border);}
:root[data-staff-interface] .sk-drawer__header h2,:root[data-staff-interface] .sk-modal__header h2{font-family:var(--sk-font);font-weight:var(--sk-interface-type-2);letter-spacing:-.025em;}
:root[data-staff-interface] .sk-drawer__body .sk-inset-form,:root[data-staff-interface] .sk-modal__body .sk-inset-form{border-radius:18px;border-color:var(--sk-color-border-soft);}
:root[data-staff-interface] .sk-drawer__body .sk-button,:root[data-staff-interface] .sk-modal__body .sk-button{border-radius:18px;font-size:var(--sk-interface-type-3);min-height:36px;}
@media (max-width:44rem){
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar{padding:10px;flex-wrap:wrap;}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar :is(.sk-button,.sk-calendar-team-button,.sk-calendar-date-button,.sk-icon-button){min-height:40px;height:40px;}
}
:root[data-staff-interface] .sk-mobile-secondary-nav{background:var(--sk-color-surface);border-color:var(--sk-color-border-soft);gap:10px;}
:root[data-staff-interface] .sk-mobile-secondary-nav select{min-height:40px;border:1px solid var(--sk-color-border);border-radius:14px;background:var(--sk-color-surface);font-size:var(--sk-interface-type-3);padding:8px 12px;}
:root[data-staff-interface] .sk-mobile-secondary-nav .sk-button{min-height:40px;border-radius:20px;font-size:var(--sk-interface-type-3);}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"]::after{background:linear-gradient(0deg,rgba(36,27,22,.76),rgba(40,30,24,.05) 85%),url('/staff-interface/new-clients-image.webp') 65% center/cover;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"] strong{color:#fff;}
:root[data-staff-interface] .business-pulse>div[data-widget-id="widget-3"] small{color:#f4ece5!important;}
:root[data-staff-interface] .sk-app-shell{--hybrid-control-height:36px;--hybrid-control-radius:18px;--sk-interface-control-size:12px;}
:root[data-staff-interface] .sk-app-shell :is(.sk-toolbar-select,.sk-toolbar-date){box-sizing:border-box;height:var(--hybrid-control-height);min-height:var(--hybrid-control-height);border:1px solid var(--sk-color-border);border-radius:var(--hybrid-control-radius);padding:7px 14px;font-size:var(--sk-interface-control-size);font-weight:var(--sk-interface-type-27);line-height:20px;background-color:var(--sk-color-surface);color:var(--sk-color-ink);box-shadow:none;}
:root[data-staff-interface] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs){display:flex;align-items:center;gap:4px;padding:0;border:0;border-radius:0;background:transparent;overflow-x:auto;max-width:100%;}
:root[data-staff-interface] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs)>button,:root[data-staff-interface] .sk-app-shell .sk-filter-chips>button:not(.sk-button){box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--hybrid-control-height);min-height:var(--hybrid-control-height);padding:7px 14px;border:1px solid var(--sk-color-border);border-radius:var(--hybrid-control-radius);font-family:var(--sk-font);font-size:var(--sk-interface-control-size);font-weight:var(--sk-interface-type-27);line-height:20px;white-space:nowrap;background:var(--sk-color-surface);color:var(--sk-color-ink-soft);box-shadow:none;flex-shrink:0;}
:root[data-staff-interface] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs)>button:is(.is-active,[aria-selected="true"]),:root[data-staff-interface] .sk-app-shell .sk-filter-chips>button.is-active:not(.sk-button){background:#e9edf3!important;border-color:#cbd3df!important;color:#27364e!important;font-weight:var(--sk-interface-type-2);box-shadow:none!important;}
:root[data-staff-interface] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs)>button:hover:not(:disabled),:root[data-staff-interface] .sk-app-shell .sk-filter-chips>button:not(.sk-button):hover{background:#f0f2f5;border-color:#cbd3df;}
:root[data-staff-interface] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs,.sk-filter-chips)>button:focus-visible{outline:2px solid #9a7f97;outline-offset:2px;}
:root[data-staff-interface] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs)>button svg{width:16px;height:16px;stroke-width:1.6;}
:root[data-staff-interface] .sk-app-shell .sk-account-panel>.sk-tabs{background:transparent;padding:0;border-radius:0;gap:4px;}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-segmented{display:flex;gap:4px;background:transparent;border:0;border-radius:0;overflow:visible;}
:root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-segmented :is(.sk-icon-button,.sk-calendar-date-button){height:var(--hybrid-control-height);min-height:var(--hybrid-control-height);border:1px solid var(--sk-color-border);border-radius:var(--hybrid-control-radius);background:var(--sk-color-surface);box-shadow:none;}
@media (max-width:44rem){
:root[data-staff-interface] .sk-app-shell{--hybrid-control-height:40px;--hybrid-control-radius:20px;}
:root[data-staff-interface] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs)>button,:root[data-staff-interface] .sk-app-shell .sk-filter-chips>button:not(.sk-button){padding:9px 14px;}
}
:root[data-staff-interface] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs)>button{height:var(--hybrid-control-height)!important;min-height:var(--hybrid-control-height)!important;border-radius:var(--hybrid-control-radius)!important;padding:7px 14px!important;border-bottom-width:1px!important;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-tabs{border-bottom:0!important;gap:4px;}
:root[data-staff-interface] .sk-app-shell .sk-page .sk-pagination button{height:var(--hybrid-control-height);min-height:var(--hybrid-control-height);border-radius:var(--hybrid-control-radius);font-size:var(--sk-interface-control-size);padding:7px 14px;}
@media (min-width:44.01rem){
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__main{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;overflow-anchor:none;}
:root[data-staff-interface] .sk-app-shell .hybrid-module-group{width:100%;flex-shrink:0;}
:root[data-staff-interface] .sk-app-shell .hybrid-module-group>.hybrid-inline-submenu{margin:4px 6px 8px 18px;padding-left:8px;border-left:1px solid #d9dde3;}
:root[data-staff-interface] .sk-app-shell .hybrid-inline-submenu button{box-sizing:border-box;transform:none;border:1px solid transparent;}
:root[data-staff-interface] .sk-app-shell .hybrid-inline-submenu button.is-active{background:#e9edf3;color:#27364e;}
:root[data-staff-interface] .sk-app-shell .hybrid-inline-submenu button:focus-visible{outline:2px solid #9a7f97;outline-offset:-2px;}
}
:root[data-staff-interface] .hybrid-customizer-appearance{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 0 16px!important;border-bottom:1px solid var(--sk-color-border);}
:root[data-staff-interface] .hybrid-customizer-appearance label{font-size:var(--sk-interface-type-6);font-weight:var(--sk-interface-type-2);}
:root[data-staff-interface] .sk-navigation-customizer>div{gap:8px;}
:root[data-staff-interface] .sk-navigation-customizer>div>span{flex:1;}
:root[data-staff-interface] .sk-navigation-customizer>div>small{font-size:var(--sk-interface-type-8);color:var(--sk-color-ink-soft);}
:root[data-staff-interface][data-ui-theme="dark"]{color-scheme:dark;--sk-color-canvas:#181a1e;--sk-color-surface:#24272c;--sk-color-header:#202227;--sk-color-rail:#202227;--sk-color-ink:#f0f1f4;--sk-color-ink-soft:#b5bac4;--sk-color-ink-faint:#9299a5;--sk-color-border:#434750;--sk-color-border-soft:#343840;--sk-color-surface-subtle:#202329;--sk-color-surface-hover:#30343d;--sk-color-surface-selected:#343d4d;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell{background:var(--sk-color-canvas);color:var(--sk-color-ink);}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-global-topbar,.sk-primary-rail,.hybrid-account-drawer,.sk-modal,.sk-modal__header,.sk-modal__body,.sk-modal__footer){background:var(--sk-color-header)!important;color:var(--sk-color-ink);border-color:var(--sk-color-border)!important;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-global-topbar .sk-topbar-brand img{filter:invert(1);}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-primary-rail button{color:var(--sk-color-ink-soft);}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-primary-rail button:is(.is-active,:hover){background:#343b47!important;color:#f0f1f4!important;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-primary-rail__label{color:inherit!important;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.business-pulse>div,.owner-attention,.owner-performance,.hybrid-editorial article,.sk-account-panel .sk-inset-form,.sk-account-panel .sk-settings-sections>section){background:var(--sk-color-surface)!important;color:var(--sk-color-ink);border-color:var(--sk-color-border);}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs)>button:is(.is-active,[aria-selected="true"]){background:#374459!important;color:#e9effb!important;border-color:#61728e!important;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-page table th{background:#202329;color:#b5bac4;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-navigation-customizer .sk-button{background:#30343d;color:#e1e5ed;border-color:#434750;}
:root[data-staff-interface] .sk-navigation-customizer>div:not(.hybrid-customizer-appearance){min-height:40px;padding:2px 0;}
:root[data-staff-interface] .sk-navigation-customizer>div .sk-button{height:36px;min-height:36px;padding:7px 12px;font-size:var(--sk-interface-type-3);}
:root[data-staff-interface] .sk-navigation-customizer>p{font-size:var(--sk-interface-type-3);line-height:1.6;margin:12px 0 16px;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-button:not(.sk-button--primary){background:#30343d;color:#e1e5ed;border-color:#434750;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-button--primary{background:#e1e5ed;color:#202329;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-topbar-brand img{filter:invert(1);}
:root[data-staff-interface] .sk-modal:has(.sk-navigation-customizer){display:flex;flex-direction:column;max-height:calc(100dvh - 40px);}
:root[data-staff-interface] .sk-modal:has(.sk-navigation-customizer)>.sk-modal__header,:root[data-staff-interface] .sk-modal:has(.sk-navigation-customizer)>.sk-modal__footer{flex-shrink:0;}
:root[data-staff-interface] .sk-modal:has(.sk-navigation-customizer)>.sk-modal__body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;}
:root[data-staff-interface] .sk-navigation-customizer{gap:4px!important;}
:root[data-staff-interface][data-ui-theme="dark"]{--sk-color-canvas:#17181a;--sk-color-surface:#252629;--sk-color-header:#202123;--sk-color-rail:#202123;--sk-color-surface-subtle:#202123;--sk-color-surface-warm:#292a2d;--sk-color-surface-hover:#303236;--sk-color-surface-selected:#333944;--sk-color-ink:#eceef2;--sk-color-ink-soft:#b0b4bd;--sk-color-ink-faint:#9499a4;--sk-color-border:#414349;--sk-color-border-soft:#34363b;--sk-color-border-interactive:#53565e;--sk-color-primary:#d0bcd3;--sk-color-primary-hover:#ddcfe0;--sk-color-primary-soft:#2d3749;--sk-color-assistant:#d0bcd3;--sk-color-signal:#333944;--sk-color-signal-soft:#292e37;--sk-color-action:#d0bcd3;--sk-color-action-hover:#ddcfe0;--sk-color-on-action:#161c28;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-main,.sk-page,.owner-briefing){background:var(--sk-color-canvas);color:var(--sk-color-ink);}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-wordmark-image){filter:invert(1);mix-blend-mode:screen;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.hybrid-ecosystem .sk-icon-button,.hybrid-ecosystem .sk-icon-button::after,.hybrid-workspace-selector .sk-tenant-switcher__label strong,.hybrid-workspace-selector .sk-tenant-switcher__avatar){color:var(--sk-color-ink-soft);}
:root[data-staff-interface][data-ui-theme="dark"] :is(.hybrid-ecosystem .sk-icon-button:hover,.hybrid-workspace-selector .sk-tenant-switcher__trigger:hover,.hybrid-workspace-selector .sk-tenant-switcher__trigger[aria-expanded=true]){background:#303236;border-color:#414349;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-profile-button,.sk-copilot__launcher){background:#34363b!important;color:#eceef2!important;border-color:#414349!important;}
:root[data-staff-interface][data-ui-theme="dark"] .nora-voice-shortcut{background:#303d55;color:#abc4f4;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-tenant-switcher__menu,.sk-tenant-switcher__item,.sk-tenant-switcher__heading){background:var(--sk-color-surface);color:var(--sk-color-ink);border-color:var(--sk-color-border);}
:root[data-staff-interface][data-ui-theme="dark"] .hybrid-workspace-selector .sk-tenant-switcher__item:is(.is-active,:hover){background:#34363b;color:#eceef2;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.briefing-panel,.hybrid-editorial article,.business-pulse>div[data-widget-id]){background:#252629!important;border-color:#414349!important;color:#eceef2;box-shadow:0 12px 28px -16px #0008,inset 0 1px 0 #ffffff05;}
:root[data-staff-interface][data-ui-theme="dark"] .business-pulse>div[data-widget-id] span{color:#e1e3e9!important;}
:root[data-staff-interface][data-ui-theme="dark"] .business-pulse>div[data-widget-id]::after{box-shadow:inset 0 1px 1px #ffffff15;}
:root[data-staff-interface][data-ui-theme="dark"] .business-pulse>div[data-widget-id="widget-1"]::after{background:radial-gradient(ellipse at 100% 0,#526989,transparent 80%),linear-gradient(135deg,#283b59,#3d5274);}
:root[data-staff-interface][data-ui-theme="dark"] .business-pulse>div[data-widget-id="widget-1"] strong{color:#f2f5fc;}
:root[data-staff-interface][data-ui-theme="dark"] .business-pulse>div[data-widget-id="widget-1"] small{color:#d1def0!important;}
:root[data-staff-interface][data-ui-theme="dark"] .day-schedule{background:radial-gradient(ellipse at 100% 0,#3a3236,transparent 80%),#222e43!important;border-color:#343b48!important;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.briefing-panel h2,.briefing-task h3,.briefing-welcome h1,.performance-body strong,.hybrid-editorial h2,.hybrid-editorial h3,.shortcut-widget h2){color:#eceef2;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.briefing-date,.briefing-welcome p,.briefing-intro,.briefing-task p,.performance p,.performance small,.hybrid-editorial p,.briefing-demo,.hybrid-footer,.shortcut-widget p){color:#a7acb6;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.briefing-task,.briefing-panel header){border-color:#3b3d43;}
:root[data-staff-interface][data-ui-theme="dark"] .briefing-task:hover{background:#2b2d31;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.task-number,.briefing-count,.briefing-confirmation){background:#303743;color:#b9c8e2;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.briefing-task button,.performance header button,.hybrid-editorial button,.shortcut-widget button){color:#b3c9f1;}
:root[data-staff-interface][data-ui-theme="dark"] .briefing-chart svg>path:first-of-type{stroke:#3b3e45;}
:root[data-staff-interface][data-ui-theme="dark"] .briefing-chart svg>path:last-child{stroke:#d0bcd3;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.widget-controls,.widget-gallery-card,.sk-account-panel input:not([type=checkbox]),.sk-account-panel select){background:#303236;border-color:#414349;color:#eceef2;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.widget-controls button,.widget-controls select,.widget-gallery-search input){background:#252629;color:#eceef2;border-color:#414349;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot.is-docked .sk-copilot__panel{background:#202123!important;color:#eceef2;border-color:#414349;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-copilot__composer,.sk-copilot__quick-prompts button,.sk-copilot__guide-list>button){background:#2b2d31;color:#e1e3e9;border-color:#464951;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot__composer textarea{color:#eceef2;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot__messages article.is-user>div{background:#34363b!important;color:#eceef2!important;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-copilot__mark,.sk-copilot__page-tips){background:#303743;color:#c0cdea;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-copilot__tips small,.sk-copilot__tips>p,.sk-copilot__status,.sk-copilot__composer>small){color:#a7acb6;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot__composer>.sk-icon-button{background:#d7e4fb;color:#1b2538;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot__composer>.sk-icon-button:disabled{background:#383b42;color:#9299a4;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell :is(.sk-tabs,.sk-copilot__tabs)>button:hover:not(:disabled){background:#34363b;border-color:#555a64;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-page :is(.sk-card,.sk-data-table-wrap,.sk-directory-table){background:#252629;border-color:#414349;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-page .sk-avatar{background:#373b44;color:#d0d6e3;border-color:#414349;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell :is(input,select,textarea,button):focus-visible{outline-color:#d6c6d9;}
:root[data-staff-interface][data-ui-theme="dark"] .briefing-panel.day-schedule{background:radial-gradient(ellipse at 100% 0,#3a3236,transparent 80%),#222e43!important;border:2px solid #3d4759!important;padding:26px;box-shadow:0 12px 28px -16px #0008,inset 0 1px 0 #ffffff06;}
:root[data-staff-interface][data-ui-theme="dark"] .hybrid-ecosystem .sk-icon-button span{color:#b0b4bd;}
:root[data-staff-interface][data-ui-theme="dark"] .nora-mode-action{background:#2e3c54;color:#c7d8f6;border-color:#435776;}
:root[data-staff-interface][data-ui-theme="dark"] .nora-voice-view{color:#eceef2;}
:root[data-staff-interface][data-ui-theme="dark"] .nora-voice-view :is(p,small){color:#b0b4bd;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot__tabs button span{background:#41444c;color:#e1e3e9;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-copilot__messages{background:transparent;}
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-copilot__composer textarea,.sk-search-field input)::placeholder{color:#a1a7b1;opacity:1;}
:root[data-staff-interface][data-ui-theme="dark"] .hybrid-ecosystem .sk-icon-button :is(span,small){color:#b0b4bd!important;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .hybrid-inline-submenu{border-left-color:#414349;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-page :is(.sk-search-box,.sk-search-field){background:#252629;border-color:#53565e;color:#eceef2;}
:root[data-staff-interface][data-ui-theme="dark"] .sk-app-shell .sk-page :is(.sk-search-box,.sk-search-field) input{color:#eceef2;background:transparent;}
:root[data-staff-interface] .hybrid-mobile-tools,:root[data-staff-interface] .hybrid-mobile-tools>div{display:contents;}
:root[data-staff-interface] .hybrid-mobile-tools>summary{display:none;}
@media (max-width:44rem){
:root[data-staff-interface]{--sk-topbar-height:120px;}
:root[data-staff-interface] .sk-app-shell .sk-global-topbar{padding:10px 16px;gap:8px;}
:root[data-staff-interface] .sk-topbar-actions{width:100%;gap:8px;justify-content:space-between;}
:root[data-staff-interface] .hybrid-ecosystem{width:auto;flex:1;justify-content:flex-start;gap:12px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button{min-width:44px;min-height:44px;padding:6px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button svg{width:21px;height:21px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button::after,:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button>span{display:none;}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher{min-height:44px;border-radius:22px;padding:9px 15px;}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher strong{font-size:var(--sk-interface-type-4);}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher svg{width:19px;height:19px;}
:root[data-staff-interface] .nora-voice-shortcut{display:none;}
:root[data-staff-interface] .sk-app-shell .sk-profile-button{width:44px;height:44px;min-width:44px;font-size:var(--sk-interface-type-3);}
:root[data-staff-interface] .hybrid-mobile-tools{display:block;position:relative;margin-left:auto;}
:root[data-staff-interface] .hybrid-mobile-tools>summary{display:grid;place-items:center;list-style:none;cursor:pointer;width:44px;height:44px;border:1px solid var(--sk-color-border);border-radius:50%;font-size:var(--sk-interface-type-32);color:var(--sk-color-ink-soft);}
:root[data-staff-interface] .hybrid-mobile-tools>summary::-webkit-details-marker{display:none;}
:root[data-staff-interface] .hybrid-mobile-tools>div{display:none;}
:root[data-staff-interface] .hybrid-mobile-tools[open]>div{display:flex;position:absolute;right:0;top:52px;width:220px;flex-direction:column;padding:8px;gap:4px;border:1px solid var(--sk-color-border);border-radius:18px;background:var(--sk-color-surface);box-shadow:0 15px 35px #0002;z-index:100;}
:root[data-staff-interface] .hybrid-mobile-tools[open] .sk-icon-button{display:flex!important;flex-direction:row;justify-content:flex-start;gap:12px;padding:10px 12px;width:100%;min-height:46px;}
:root[data-staff-interface] .hybrid-mobile-tools[open] .sk-icon-button::after{display:block;font-size:var(--sk-interface-type-4);color:var(--sk-color-ink);}
:root[data-staff-interface] .owner-briefing{padding:24px 16px 16px;}
:root[data-staff-interface] .briefing-welcome{gap:18px;margin-bottom:22px;}
:root[data-staff-interface] .briefing-date{font-size:var(--sk-interface-type-3)!important;line-height:1.5;}
:root[data-staff-interface] .briefing-welcome h1{font-size:var(--sk-interface-type-7);line-height:1.15;}
:root[data-staff-interface] .briefing-welcome>div>p:last-child{font-size:var(--sk-interface-type-4);line-height:1.6;max-width:30ch;}
:root[data-staff-interface] .briefing-actions{width:100%;display:flex;gap:8px;}
:root[data-staff-interface] .briefing-actions .sk-button{flex:1;min-height:46px;font-size:var(--sk-interface-type-4);padding:10px 14px;border-radius:24px;}
:root[data-staff-interface] .widget-editor-v2{gap:8px;margin-bottom:18px;}
:root[data-staff-interface] .widget-editor-v2>.sk-button{height:44px;min-height:44px;font-size:var(--sk-interface-type-6);padding:9px 13px;border-radius:22px;}
:root[data-staff-interface] .widget-editor-v2>span{font-size:var(--sk-interface-type-3);line-height:1.6;}
:root[data-staff-interface] .dashboard-widgets{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
:root[data-staff-interface] .dashboard-widget.size-small{grid-column:span 1;}
:root[data-staff-interface] .dashboard-widget.size-medium,:root[data-staff-interface] .dashboard-widget.size-wide{grid-column:1/-1;}
:root[data-staff-interface] .dashboard-widget .widget-metric.business-pulse{min-height:190px;margin:0;}
:root[data-staff-interface] .dashboard-widget .widget-metric.business-pulse>div[data-widget-id]{height:190px;min-height:190px;border-radius:24px;padding:20px 16px 22px;}
:root[data-staff-interface] .dashboard-widget .widget-metric.business-pulse>div[data-widget-id]::after{inset:52px 7px 7px;border-radius:18px;}
:root[data-staff-interface] .dashboard-widget .widget-metric.business-pulse>div[data-widget-id] span{font-size:var(--sk-interface-type-6);left:16px;top:18px;line-height:1.3;}
:root[data-staff-interface] .dashboard-widget .widget-metric strong{font-size:var(--sk-interface-type-28)!important;line-height:1.05;}
:root[data-staff-interface] .dashboard-widget .widget-metric small{font-size:var(--sk-interface-type-3)!important;line-height:1.4;}
:root[data-staff-interface] .dashboard-widget .briefing-panel{padding:22px 18px;border-radius:24px;}
:root[data-staff-interface] .briefing-panel header h2{font-size:var(--sk-interface-type-14);line-height:1.25;}
:root[data-staff-interface] .briefing-panel header>button{min-height:44px;font-size:var(--sk-interface-type-6);}
:root[data-staff-interface] .briefing-intro,:root[data-staff-interface] .briefing-panel p,:root[data-staff-interface] .briefing-task p{font-size:var(--sk-interface-type-4);line-height:1.6;}
:root[data-staff-interface] .briefing-task{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;padding:18px 0;}
:root[data-staff-interface] .briefing-task h3{font-size:var(--sk-interface-type-15);line-height:1.4;}
:root[data-staff-interface] .briefing-task button{grid-column:2;justify-self:start;max-width:none;min-height:44px;text-align:left;font-size:var(--sk-interface-type-6);}
:root[data-staff-interface] .task-number{font-size:var(--sk-interface-type-6);min-width:32px;min-height:32px;}
:root[data-staff-interface] .briefing-confirmation{font-size:var(--sk-interface-type-3);line-height:1.6;padding:14px;}
:root[data-staff-interface] .briefing-team{font-size:var(--sk-interface-type-6);}
:root[data-staff-interface] .briefing-appointment{min-height:76px;gap:12px;}
:root[data-staff-interface] .briefing-appointment time{font-size:var(--sk-interface-type-4);}
:root[data-staff-interface] .briefing-appointment strong{font-size:var(--sk-interface-type-15);}
:root[data-staff-interface] .briefing-appointment small{font-size:var(--sk-interface-type-6);line-height:1.5;}
:root[data-staff-interface] .schedule-space{font-size:var(--sk-interface-type-6);line-height:1.6;}
:root[data-staff-interface] .performance-body strong{font-size:var(--sk-interface-type-11);}
:root[data-staff-interface] .performance-body p,:root[data-staff-interface] .performance-body small{font-size:var(--sk-interface-type-4);line-height:1.7;}
:root[data-staff-interface] .briefing-chart>div{font-size:var(--sk-interface-type-8);}
:root[data-staff-interface] .briefing-demo{font-size:var(--sk-interface-type-3);line-height:1.6;margin:20px 0;}
:root[data-staff-interface] .hybrid-editorial{margin:8px 16px 24px;gap:16px;}
:root[data-staff-interface] .hybrid-editorial h2{font-size:var(--sk-interface-type-25);}
:root[data-staff-interface] .hybrid-editorial article,:root[data-staff-interface] .hybrid-editorial article:first-of-type{height:390px;border-radius:24px;}
:root[data-staff-interface] .hybrid-editorial article>div{padding:22px;}
:root[data-staff-interface] .hybrid-editorial h3{font-size:var(--sk-interface-type-25);}
:root[data-staff-interface] .hybrid-editorial p{font-size:var(--sk-interface-type-4);line-height:1.6;}
:root[data-staff-interface] .hybrid-editorial button{min-height:44px;font-size:var(--sk-interface-type-4);}
:root[data-staff-interface] .hybrid-editorial img{height:180px;}
:root[data-staff-interface] .hybrid-footer{font-size:var(--sk-interface-type-3);line-height:1.6;flex-wrap:wrap;margin-bottom:24px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button{min-height:52px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button svg{width:23px;height:23px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail__label{font-size:var(--sk-interface-type-8)!important;}
:root[data-staff-interface] .widget-controls{padding:8px;gap:6px;}
:root[data-staff-interface] .widget-controls :is(button,select){min-height:44px;height:44px;font-size:var(--sk-interface-type-3);}
:root[data-staff-interface] .widget-remove{width:44px;}
:root[data-staff-interface] .widget-controls select{width:100%;}
:root[data-staff-interface] .widget-drag-handle span{display:inline;}
}
@media (max-width:44rem){
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher strong{display:inline!important;}
:root[data-staff-interface] .widget-editor-v2:not(.is-editing) .widget-add-trigger{display:none;}
:root[data-staff-interface] .owner-briefing .widget-editor-v2{margin-bottom:16px;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail{padding-bottom:env(safe-area-inset-bottom);}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher{gap:8px;}
:root[data-staff-interface] .hybrid-mobile-tools summary:focus-visible{outline:2px solid #9a7f97;outline-offset:2px;}
}
@media (max-width:44rem){
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher>span:last-child{display:block!important;}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher>span:last-child strong{display:inline!important;font-size:var(--sk-interface-type-4);}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher{display:flex!important;align-items:center;justify-content:center;}
:root[data-staff-interface] .hybrid-ecosystem{gap:8px;}
}
@media (min-width:44.01rem){
:root[data-staff-interface] .hybrid-mobile-tools::details-content{content-visibility:visible;display:contents;}
:root[data-staff-interface] .hybrid-mobile-tools>div{display:contents!important;}
}
@media (max-width:44rem){
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher{width:auto!important;min-width:94px!important;height:44px!important;padding:8px 12px!important;overflow:visible;gap:8px!important;}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher>span:first-child{display:grid!important;place-items:center;width:20px!important;height:20px!important;min-width:20px!important;flex:0 0 20px;background:none;border:0;padding:0;border-radius:0;}
:root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher>span:first-child svg{display:block;width:20px!important;height:20px!important;flex:none;}
:root[data-staff-interface] .hybrid-ecosystem .sk-icon-button svg,:root[data-staff-interface] .hybrid-mobile-tools summary svg{display:block;width:22px;height:22px;stroke-width:1.7;flex-shrink:0;}
:root[data-staff-interface] .sk-app-shell .sk-primary-rail button svg{width:23px!important;height:23px!important;stroke-width:1.7;}
:root[data-staff-interface] .hybrid-mobile-tools[open] .hybrid-support::after{content:'Rapporter feil';}
:root[data-staff-interface] .hybrid-mobile-tools[open] .hybrid-chat::after{content:'Meldinger';}
}

/* Widget catalogue scrolling applies at every viewport width. */
:root[data-staff-interface] .sk-modal:has(.widget-gallery) .sk-modal__body{flex:1 1 0;overflow-y:auto;min-height:0;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;}
:root[data-staff-interface] .sk-modal:has(.widget-gallery){display:flex;flex-direction:column;height:min(760px,calc(100dvh - 48px));max-height:calc(100dvh - 48px);}
:root[data-staff-interface] .sk-modal:has(.widget-gallery)>.sk-modal__header{flex:0 0 auto;}

/* Approved widget family, 2026-10-23. Sources, access and saved board layout remain owned by the existing board. */
:root[data-staff-interface] .dashboard-visual-system{--widget-accent:#82667f;--widget-line:color-mix(in srgb,var(--widget-accent) 14%,var(--sk-color-border));}
:root[data-staff-interface] .dashboard-visual-system :is(.sk-dashboard-card,.sk-table-card,.shortcut-widget,[data-widget-id="manager-kpis"]){border:1px solid var(--widget-line);border-radius:var(--sk-card-radius);background:var(--sk-color-surface);color:var(--sk-color-ink);box-shadow:0 9px 24px -18px #142a5459,inset 0 1px 0 #ffffff30;overflow:hidden;}
:root[data-staff-interface] .dashboard-visual-title{display:flex;align-items:center;gap:10px;line-height:1.25;}
:root[data-staff-interface] .dashboard-function-icon{position:static;display:inline-flex;flex:0 0 36px;width:36px;height:36px;align-items:center;justify-content:center;}
:root[data-staff-interface] .dashboard-function-icon .mr-app-icon{display:block;width:36px;height:36px;margin:0;position:static;}
:root[data-staff-interface] .dashboard-function-icon>.mr-app-icon>svg{display:block;width:100%;height:100%;}
:root[data-staff-interface] .dashboard-signal{position:relative;display:flex;flex-direction:column;min-height:244px;height:100%;padding:22px;box-sizing:border-box;border-radius:26px;background:var(--sk-color-surface);color:var(--sk-color-ink);border:1px solid var(--widget-line);box-shadow:0 10px 24px -17px #142a5459;isolation:isolate;overflow:hidden;}
:root[data-staff-interface] .dashboard-signal::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 90% 100%,color-mix(in srgb,var(--widget-accent) 12%,transparent),transparent 75%);}
:root[data-staff-interface] .dashboard-signal[data-signal="summary-revenue"]{background:var(--widget-accent);color:white;border-color:transparent;}
:root[data-staff-interface] .dashboard-signal-heading{display:flex;align-items:center;gap:10px;font-size:var(--sk-interface-type-4);font-weight:var(--sk-font-weight-strong);}
:root[data-staff-interface] .dashboard-signal-action{position:relative;display:flex;flex:1;flex-direction:column;justify-content:center;align-items:flex-start;gap:9px;min-width:0;padding:20px 24px 16px 0;text-align:left;color:inherit;background:none;border:0;cursor:pointer;min-height:120px;}
:root[data-staff-interface] .dashboard-signal-action strong{font-size:var(--sk-type-widget-signal-value);line-height:1.1;letter-spacing:-.04em;overflow-wrap:anywhere;}
:root[data-staff-interface] .dashboard-signal-action small{font-size:var(--sk-interface-type-6);line-height:1.45;opacity:.86;}
:root[data-staff-interface] .dashboard-signal-action>svg{position:absolute;right:0;bottom:16px;}
:root[data-staff-interface] .dashboard-signal-date{font-size:var(--sk-interface-type-8);opacity:.8;}
:root[data-staff-interface] .dashboard-table-legacy-icon{display:none;}
:root[data-staff-interface] .dashboard-ranking-track{display:block;width:100%;height:7px;margin-top:8px;border-radius:8px;background:color-mix(in srgb,var(--widget-accent) 10%,transparent);overflow:hidden;}
:root[data-staff-interface] .dashboard-ranking-track i{display:block;width:var(--widget-bar);height:100%;border-radius:inherit;background:var(--widget-accent);transform-origin:left;}
:root[data-staff-interface] .dashboard-visual-system .sk-upcoming-list{display:grid;gap:10px;}
:root[data-staff-interface] .dashboard-visual-system .sk-appointment-row{border-left:3px solid var(--widget-accent);border-radius:14px;background:color-mix(in srgb,var(--widget-accent) 5%,var(--sk-color-surface));}
:root[data-staff-interface] .dashboard-visual-system .sk-chart svg>g.dashboard-chart-rise>polyline{stroke:var(--widget-accent);stroke-width:3;stroke-linejoin:round;}
:root[data-staff-interface] .dashboard-chart-area{fill:color-mix(in srgb,var(--widget-accent) 10%,transparent);stroke:none;}
:root[data-staff-interface] .dashboard-chart-rise{transform-origin:0 var(--widget-baseline,224px);}
:root[data-staff-interface] .dashboard-visual-system .sk-chart svg circle{fill:var(--widget-accent);}
:root[data-staff-interface] .dashboard-visual-system .sk-chart__legend i{background:var(--widget-accent);}
:root[data-staff-interface] .dashboard-kpi-visual{position:relative;padding:18px;border:1px solid var(--widget-line);border-radius:20px;background:color-mix(in srgb,var(--widget-accent) 4%,var(--sk-color-surface));min-width:0;}
:root[data-staff-interface] .dashboard-kpi-visual strong{font-size:var(--sk-interface-type-22);letter-spacing:-.03em;}
:root[data-staff-interface] .dashboard-ratio{display:flex;justify-content:flex-start;margin-bottom:14px;}
:root[data-staff-interface] .dashboard-ratio-ring{width:84px;height:84px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--widget-accent) var(--widget-ratio),color-mix(in srgb,var(--widget-accent) 12%,var(--sk-color-surface)) 0);position:relative;}
:root[data-staff-interface] .dashboard-ratio-ring::before{content:"";position:absolute;inset:7px;border-radius:50%;background:var(--sk-color-surface);}
:root[data-staff-interface] .dashboard-ratio-ring span{position:relative;font-size:var(--sk-interface-type-22);font-weight:var(--sk-font-weight-strong);font-variant-numeric:tabular-nums;}
:root[data-staff-interface] .dashboard-ratio-ring small{font-size:var(--sk-interface-type-3);margin-left:2px;}
:root[data-staff-interface] .widget-accent-control{display:flex;align-items:center;gap:8px;font-size:var(--sk-interface-type-6);}
:root[data-staff-interface] .widget-accent-control select{min-height:44px;max-width:150px;}
:root[data-staff-interface] .dashboard-visual-system .widget-controls :is(button,select){min-height:44px;height:44px;}
:root[data-staff-interface] .dashboard-visual-system .widget-controls{flex-wrap:wrap;}
:root[data-staff-interface] .dashboard-visual-system .widget-gallery-card>.dashboard-function-icon{flex-basis:48px;width:48px;height:48px;}
:root[data-staff-interface][data-ui-theme="dark"] .dashboard-signal:not([data-signal="summary-revenue"]){background:var(--sk-color-surface);color:var(--sk-color-ink);}
:root[data-staff-interface][data-ui-theme="dark"] .dashboard-visual-system{--widget-line:color-mix(in srgb,var(--widget-accent) 28%,var(--sk-color-border));}
@media(max-width:600px){
 :root[data-staff-interface] .dashboard-visual-system .dashboard-widgets{grid-template-columns:minmax(0,1fr);}
 :root[data-staff-interface] .dashboard-visual-system .dashboard-widget:is(.size-small,.size-medium,.size-wide){grid-column:1/-1;}
 :root[data-staff-interface] .dashboard-signal{min-height:220px;}
 :root[data-staff-interface] .dashboard-visual-title{font-size:var(--sk-interface-type-32);}
 :root[data-staff-interface] .dashboard-visual-system .sk-table-card{overflow-x:auto;}
}

:root[data-staff-interface] .dashboard-function-icon>.mr-app-icon>svg>svg{width:30px;height:30px;}
:root[data-staff-interface] .dashboard-upcoming-visual{margin-bottom:20px;}
:root[data-staff-interface] .dashboard-upcoming-visual>p{display:flex;flex-direction:column;gap:4px;font-weight:var(--sk-font-weight-strong);}
:root[data-staff-interface] .dashboard-upcoming-visual>p small{font-weight:var(--sk-font-weight-body);font-size:var(--sk-interface-type-3);color:var(--sk-color-ink-soft);}
:root[data-staff-interface] .dashboard-upcoming-rail{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;}
:root[data-staff-interface] .dashboard-upcoming-rail>button{flex:1 0 112px;display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:0;max-width:180px;padding:12px;text-align:left;color:var(--sk-color-ink);background:color-mix(in srgb,var(--widget-accent) 6%,var(--sk-color-surface));border:1px solid var(--widget-line);border-radius:16px;}
:root[data-staff-interface] .dashboard-upcoming-rail time{color:var(--widget-accent);font-size:var(--sk-interface-type-24);font-weight:var(--sk-font-weight-strong);}
:root[data-staff-interface] .dashboard-upcoming-rail strong{overflow-wrap:anywhere;font-size:var(--sk-interface-type-6);}
:root[data-staff-interface] .dashboard-upcoming-rail small{font-size:var(--sk-interface-type-3);}
:root[data-staff-interface] .dashboard-visual-system [data-widget-id="manager-kpis"]>.sk-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:start;}
:root[data-staff-interface] .dashboard-visual-system .sk-chart{min-height:0;margin-top:12px;gap:10px;}
:root[data-staff-interface] .dashboard-visual-system .sk-chart svg{display:block;flex:none;min-height:0;height:auto;aspect-ratio:760/268;}
@media(max-width:1000px){:root[data-staff-interface] .dashboard-visual-system [data-widget-id="manager-kpis"]>.sk-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:600px){:root[data-staff-interface] .dashboard-visual-system [data-widget-id="manager-kpis"]>.sk-card-grid{grid-template-columns:minmax(0,1fr);}}
:root[data-staff-interface] .dashboard-visual-system .widget-editor-v2 .widget-add-trigger{display:inline-flex;min-height:44px;}
:root[data-staff-interface] .dashboard-visual-system .widget-editor-v2>button,:root[data-staff-interface] .widget-gallery-card button{min-height:44px;}

/* The gallery is portaled outside the board; keep its touch targets independent. */
:root[data-staff-interface] .widget-gallery .widget-gallery-card button{box-sizing:border-box;min-height:46px;height:auto;padding-block:12px;}

/* Live workflow adaptations. Use the established card, field and terminal control contracts. */
:root[data-staff-interface] {
  --sk-type-page-title: 1.75rem;
  --sk-font-heading: var(--sk-interface-font);
  --sk-color-action: #82667f;
  --sk-color-primary: #82667f;
  --sk-color-assistant: #82667f;
  --sk-color-surface-warm: var(--sk-color-surface-subtle);
  --sk-color-surface-raised: var(--sk-color-surface);
  --sk-color-primary-soft: #e9edf8;
  --sk-color-on-primary: #fff;
  --sk-radius-lg: 1.5rem;
  --sk-radius-md: 0.875rem;
  --sk-control-height: 2.25rem;
}
:root[data-staff-interface][data-ui-theme="dark"] {
  --sk-color-primary: #d6c6d9;
  --sk-color-action: #d6c6d9;
  --sk-color-assistant: #d6c6d9;
  --sk-color-primary-soft: #303743;
  --sk-color-on-primary: #182335;
}
:root[data-staff-interface] .dashboard-summary-action {
  display: flex; position: relative; flex-direction: column; justify-content: flex-end;
  align-items: flex-start; width: 100%; min-height: 9rem; margin-top: var(--sk-space-4);
  padding: var(--sk-space-4); gap: var(--sk-space-2); border: 0; border-radius: 1.25rem;
  background: linear-gradient(145deg,#2a436b,#7288b0); background-size: cover; background-position: 65% center;
  color: #fff; text-align: left; cursor: pointer;
}
:root[data-staff-interface] .dashboard-summary-action strong { font-size: var(--sk-font-size-display); color: inherit; line-height: 1.1; }
:root[data-staff-interface] .dashboard-summary-action small { font-size: var(--sk-font-size-xs); color: inherit !important; line-height: 1.5; }
:root[data-staff-interface] .dashboard-summary-action svg { position: absolute; top: var(--sk-space-3); right: var(--sk-space-3); }
:root[data-staff-interface] .widget-metric.business-pulse > div[data-widget-id] { display: flex; flex-direction: column; height: auto; min-height: 15rem; }
:root[data-staff-interface] .widget-metric.business-pulse > div[data-widget-id]::after { display: none; }
:root[data-staff-interface] .widget-metric.business-pulse > div[data-widget-id] > span { position: static; margin: 0; color: var(--sk-color-ink); }
:root[data-staff-interface] .widget-metric.business-pulse { height: 100%; }
:root[data-staff-interface] .widget-metric.business-pulse > div[data-widget-id] { height: 100%; }
:root[data-staff-interface] .widget-content > .sk-card { height: 100%; min-width: 0; }
:root[data-staff-interface] .dashboard-required-widget { margin-block: var(--sk-space-4); }
:root[data-staff-interface] .dashboard-required-widget > .sk-card { padding: var(--sk-card-inset); }
:root[data-staff-interface] .widget-content .sk-dashboard-card__body { padding: var(--sk-space-4); }
:root[data-staff-interface] .widget-content .sk-card:not(.sk-card--inset) > .sk-card-header { padding: var(--sk-card-inset); gap: var(--sk-space-3); }
:root[data-staff-interface] .widget-controls button { display: inline-flex; align-items: center; justify-content: center; gap: var(--sk-space-2); }
:root[data-staff-interface] .widget-editor-v2 { display: flex; gap: var(--sk-space-3); align-items: center; }
:root[data-staff-interface] .sk-dashboard-quick-start { padding: var(--sk-space-4); }
:root[data-staff-interface] .sk-dashboard-quick-start > header { margin-bottom: var(--sk-space-3); }
:root[data-staff-interface] .sk-dashboard-quick-start > header h2 { font-size: var(--sk-type-card-title); }
:root[data-staff-interface] .sk-dashboard-quick-start > header p { display: none; }
:root[data-staff-interface] .sk-dashboard-tour { border-radius: var(--sk-radius-lg); background: var(--sk-color-surface); border: 1px solid var(--sk-color-border); }
:root[data-staff-interface] .sk-app-shell .sk-page .sk-pill-tabs { display:flex; max-width:100%; overflow-x:auto; gap:var(--sk-space-2); background:transparent; border:0; padding:0; }
:root[data-staff-interface] .sk-app-shell .sk-page .sk-pill-tabs > button { min-height:var(--sk-control-height); flex-shrink:0; border:1px solid var(--sk-color-border); border-radius:2rem; background:var(--sk-color-surface); color:var(--sk-color-ink-soft); padding:var(--sk-space-2) var(--sk-space-4); }
:root[data-staff-interface] .sk-app-shell .sk-page .sk-pill-tabs > button.is-active { background:var(--sk-color-surface-selected); color:var(--sk-color-ink); }
/* Calendar and all directory forms retain readable mobile fields, regardless of visual density. */
:root[data-staff-interface] :is(input,textarea,select) { color:var(--sk-color-ink); }
:root[data-staff-interface] :is(button,a,input,textarea,select):focus-visible { outline:2px solid var(--sk-color-primary); outline-offset:3px; }
/* Kassen: shared palette and rounded geometry, with its larger touch/control contract preserved. */
:root[data-staff-interface] :is(.sk-terminal-workspace,.sk-terminal-lock,.sk-terminal-enrollment) {
  --sk-terminal-control-h: max(3rem,var(--sk-terminal-touch-min,3rem));
  --sk-terminal-radius: 1.5rem;
  background:var(--sk-color-canvas); color:var(--sk-color-ink); font-family:var(--sk-font);
}
:root[data-staff-interface] :is(.sk-terminal-workspace-header,.sk-terminal-lock-header) { background:var(--sk-color-header); border-color:var(--sk-color-border); }
:root[data-staff-interface] :is(.sk-terminal-card,.sk-terminal-cart-editor,.sk-nora-side-card,.sk-terminal-overview-today,.sk-terminal-customer-card,.sk-profile-card,.sk-terminal-sheet) { background:var(--sk-color-surface); color:var(--sk-color-ink); border-color:var(--sk-color-border); border-radius:var(--sk-card-radius); box-shadow:var(--sk-shadow-card); }
:root[data-staff-interface] :is(.sk-terminal-primary,.sk-terminal-secondary,.sk-terminal-icon-button,.sk-terminal-search,.sk-terminal-search-control,.sk-terminal-language-switch) { border-radius:var(--sk-terminal-radius); }
:root[data-staff-interface] .sk-terminal-primary { background:var(--sk-color-primary); color:var(--sk-color-on-primary); border-color:var(--sk-color-primary); }
:root[data-staff-interface] :is(.sk-terminal-secondary,.sk-terminal-icon-button,.sk-terminal-search-control,.sk-terminal-search) { background:var(--sk-color-surface); color:var(--sk-color-ink); border-color:var(--sk-color-border); }
:root[data-staff-interface] .sk-terminal-wordmark { width:8rem; height:auto; object-fit:contain; }
:root[data-staff-interface] .sk-terminal-brand > span > strong { display:none; }
:root[data-staff-interface] .sk-terminal-lock-header > div > strong { display:none; }
:root[data-staff-interface] :is(.sk-terminal-workspace-nav,.sk-terminal-mobile-nav) { background:var(--sk-color-header); border-color:var(--sk-color-border); }
:root[data-staff-interface] :is(.sk-terminal-workspace-nav,.sk-terminal-mobile-nav) button { color:var(--sk-color-ink-soft); }
:root[data-staff-interface] :is(.sk-terminal-workspace-nav,.sk-terminal-mobile-nav) button.is-active { background:var(--sk-color-surface-selected); color:var(--sk-color-ink); }
:root[data-staff-interface][data-ui-theme="dark"] .sk-terminal-wordmark { filter:invert(1); mix-blend-mode:screen; }
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-terminal-empty-card,.sk-terminal-summary-grid > article,.sk-profile-stats > div,.sk-terminal-my-day > div,.sk-terminal-cart-lines > li,.sk-terminal-customer-card,.sk-terminal-section-heading,.sk-terminal-day-toolbar) { background:var(--sk-color-surface); color:var(--sk-color-ink); border-color:var(--sk-color-border); }
:root[data-staff-interface][data-ui-theme="dark"] :is(.sk-terminal-workspace,.sk-terminal-lock) :is(input,select,textarea) { background:var(--sk-color-surface); color:var(--sk-color-ink); border-color:var(--sk-color-border); }
:root[data-staff-interface][data-ui-theme="dark"] .sk-terminal-workspace-nav button.is-active { color:var(--sk-color-ink); }
@media(max-width:44rem) {
  :root[data-staff-interface] :is(input,textarea,select) { font-size:var(--sk-type-input) !important; }
  :root[data-staff-interface] .sk-app-shell :is(.sk-button,.sk-icon-button,.sk-tabs > button,.sk-pill-tabs > button,.sk-pagination button) { min-height:2.75rem; }
  :root[data-staff-interface] .dashboard-summary-action { min-height:8rem; padding:var(--sk-space-3); }
  :root[data-staff-interface] .dashboard-summary-action strong { font-size:var(--sk-font-size-2xl); overflow-wrap:anywhere; }
  :root[data-staff-interface] .widget-metric.business-pulse > div[data-widget-id] { padding:var(--sk-space-3); }
  :root[data-staff-interface] .dashboard-widgets .dashboard-widget:has(.sk-dashboard-card,.sk-table-card,.shortcut-widget) { grid-column:1/-1; }
  :root[data-staff-interface] .dashboard-widgets .size-small:has(.widget-metric) { grid-column:span 1; }
  :root[data-staff-interface] .widget-content .sk-dashboard-card__body { padding:var(--sk-space-4); }
  :root[data-staff-interface] .sk-terminal-workspace-header { gap:var(--sk-space-3); flex-wrap:wrap; }
  :root[data-staff-interface] .sk-terminal-workspace-header .sk-terminal-brand { min-width:0; }
}
@media(prefers-reduced-motion:reduce) { :root[data-staff-interface] *, :root[data-staff-interface] *::before, :root[data-staff-interface] *::after { animation:none!important; scroll-behavior:auto!important; transition:none!important; } }
@media (min-width:44.01rem) {
  :root[data-staff-interface] .sk-app-shell { --sk-rail-width:var(--sk-user-rail-width,248px); }
  :root[data-staff-interface] .sk-app-shell:not(.is-rail-expanded) .hybrid-module-group>button { justify-content:center; }
  :root[data-staff-interface] .sk-app-shell:not(.is-rail-expanded) .hybrid-module-group>button .sk-primary-rail__label { display:none; }
  :root[data-staff-interface] .sk-app-shell .hybrid-module-group>button .sk-primary-rail__label { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
}
:root[data-staff-interface][data-ui-theme="dark"] .sk-terminal-workspace .sk-terminal-day-status .sk-terminal-secondary,
:root[data-staff-interface][data-ui-theme="dark"] .sk-terminal-language-switch button.is-active,
:root[data-staff-interface][data-ui-theme="dark"] .sk-terminal-workspace-nav button.sk-terminal-pay,
:root[data-staff-interface][data-ui-theme="dark"] .sk-terminal-mobile-nav button.sk-terminal-pay { color:var(--sk-color-on-primary); }
:root[data-staff-interface][data-ui-theme="dark"] .sk-terminal-workspace .sk-terminal-roster-toggle { color:var(--sk-color-ink); }


/* Shared status geometry: never stretch a label into a card-wide control. */
:root[data-staff-interface] .sk-status-badge,
:root[data-staff-interface] .sk-app-shell .sk-page .sk-status-badge {
  display:inline-flex; align-items:center; justify-content:center; align-self:start; justify-self:start;
  flex:0 0 auto; width:max-content; max-width:100%; min-height:1.625rem; height:1.625rem;
  box-sizing:border-box; padding:0 var(--sk-space-3); border-radius:2rem;
  font-family:var(--sk-font); font-size:var(--sk-font-size-xs); font-weight:var(--sk-font-weight-medium);
  line-height:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
:root[data-staff-interface] .sk-trophy-entry { display:grid; grid-template-columns:3rem minmax(0,1fr) auto; align-items:center; gap:var(--sk-space-4); padding-block:var(--sk-space-4); }
:root[data-staff-interface] .sk-trophy-emblem { width:3rem; height:3rem; display:grid; place-items:center; border-radius:1rem; color:var(--sk-color-ink); background:linear-gradient(145deg,#fbfaf6,#e5e2d9); border:1px solid #dcd8ce; box-shadow:inset 0 1px 0 #fff; }
:root[data-staff-interface][data-ui-theme="dark"] .sk-trophy-emblem { background:linear-gradient(145deg,#37383d,#26272c); border-color:#4a4a50; color:#e7e4dc; box-shadow:inset 0 1px 0 #ffffff0d; }
:root[data-staff-interface] .sk-brand-identity { width:100%; height:100%; display:grid; place-items:center; overflow:hidden; background:#fff; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-sm); color:#393a40; }
:root[data-staff-interface] .sk-brand-identity img { width:100%; height:100%; object-fit:contain; padding:.375rem; }
:root[data-staff-interface] .sk-brand-identity > span { font-weight:var(--sk-font-weight-medium); font-size:var(--sk-font-size-sm); }
:root[data-staff-interface] .sk-store-hero { background:linear-gradient(90deg,#111318de,#11131870),url('/staff-interface/shop-hero-products.webp') center/cover; color:#fff; }
:root[data-staff-interface] .sk-store-hero > div:first-child > svg { color:#fff; }
:root[data-staff-interface] .sk-store-grid > span { background:#fffffff2; color:#24262b; }
:root[data-staff-interface] .sk-store-hero .sk-button--primary { background:#fff; color:#24262b; border-color:#fff; }
@media (max-width:44rem) { :root[data-staff-interface] .sk-trophy-entry { grid-template-columns:3rem minmax(0,1fr); gap:var(--sk-space-3); } :root[data-staff-interface] .sk-trophy-entry > .sk-status-badge { grid-column:2; } }
:root[data-staff-interface] .sk-promotion-preview-actions { display:flex; flex-wrap:wrap; gap:var(--sk-space-3); }
:root[data-staff-interface] .sk-promotion-preview { padding:var(--sk-space-4); background:var(--sk-color-canvas); border-radius:var(--sk-radius-lg); }
:root[data-staff-interface] .sk-promotion-preview article { overflow:hidden; border-radius:var(--sk-radius-md); background:#fff; color:#24262b; box-shadow:var(--sk-shadow-card); }
:root[data-staff-interface] .sk-promotion-preview img { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; }
:root[data-staff-interface] .sk-promotion-preview article > div { padding:var(--sk-space-5); }
:root[data-staff-interface] .sk-promotion-preview h2 { margin:0 0 var(--sk-space-3); font-size:var(--sk-type-section-title); color:inherit; }
:root[data-staff-interface] .sk-promotion-preview p { margin-top:var(--sk-space-3); white-space:pre-wrap; line-height:1.6; color:inherit; }
:root[data-staff-interface] .sk-promotion-highlight { display:inline-flex; border-radius:2rem; padding:var(--sk-space-2) var(--sk-space-3); background:#edf1fc; color:#2246b0; font-size:var(--sk-font-size-sm); }
:root[data-staff-interface] .sk-promotion-preview.is-screen article { width:100%; min-width:0; position:relative; min-height:16rem; aspect-ratio:16/9; display:flex; align-items:flex-end; background:#1c2336; color:#fff; }
:root[data-staff-interface] .sk-promotion-preview.is-screen img { position:absolute; inset:0; height:100%; }
:root[data-staff-interface] .sk-promotion-preview.is-screen article > div { position:relative; width:100%; background:linear-gradient(0deg,#101728ef,#10172880,transparent); }
:root[data-staff-interface] .sk-segment-card { grid-template-rows:minmax(0,1fr) auto auto; align-content:stretch; }
:root[data-staff-interface] .sk-client-hero .sk-avatar:has(.sk-brand-identity) { width:6rem; height:3.5rem; flex:0 0 6rem; border-radius:var(--sk-radius-sm); background:transparent; }
:root[data-staff-interface] .hybrid-inline-submenu .sk-secondary-nav__group { display:block; }
:root[data-staff-interface] .sk-brand-identity img[src$="/beauty-works.png"] { filter:brightness(0); }
@media (max-width:44rem) { :root[data-staff-interface] .sk-promotion-preview.is-screen article { aspect-ratio:auto; } }

/* Personal dashboard accents: token bridge, isolated from public pages and brand assets. */
:root[data-staff-interface][data-personal-accent] {
  --sk-color-primary: var(--sk-user-accent-text);
  --sk-color-primary-hover: var(--sk-user-accent-text);
  --sk-color-primary-active: var(--sk-user-accent-text);
  --sk-color-primary-soft: var(--sk-user-accent-soft);
  --sk-color-action: var(--sk-user-accent);
  --sk-color-action-hover: var(--sk-user-accent-hover);
  --sk-color-on-action: var(--sk-user-accent-on);
  --sk-color-on-primary: var(--sk-user-accent-on);
  --sk-color-assistant: var(--sk-user-accent);
  --sk-color-assistant-hover: var(--sk-user-accent-hover);
  --sk-color-focus-ring: var(--sk-user-accent-text);
  /* Information and booking statuses retain their existing semantic blue. */
  --sk-color-info: #82667f;
  --sk-color-info-soft: #e9edf8;
  --sk-appointment-booked: #82667f;
}
:root[data-staff-interface][data-personal-accent][data-ui-theme="dark"] {
  --sk-color-info: #d6c6d9;
  --sk-color-info-soft: #303743;
  --sk-appointment-booked: #d6c6d9;
}
:root[data-staff-interface][data-personal-accent] .sk-app-shell .mr-blue-line-icon {
  --mr-blue-stroke: var(--sk-user-accent-text);
  --mr-blue-tile: var(--sk-user-accent-soft);
}
:root[data-staff-interface][data-personal-accent] .sk-app-shell :is(.sk-button--primary:not(:disabled),.sk-copilot__launcher) {
  background:var(--sk-user-accent); color:var(--sk-user-accent-on); border-color:transparent;
}
:root[data-staff-interface][data-personal-accent] .sk-app-shell :is(.sk-button--primary:not(:disabled),.sk-copilot__launcher):hover {
  background:var(--sk-user-accent-hover); color:var(--sk-user-accent-on-hover);
}
:root[data-staff-interface][data-personal-accent] .sk-app-shell .sk-primary-rail button:is(.is-active,.is-mobile-active) {
  background:var(--sk-user-accent-soft); color:var(--sk-user-accent-text);
}
:root[data-staff-interface][data-personal-accent] .sk-app-shell .sk-primary-rail button.is-active .sk-primary-rail__label {
  background:transparent; color:var(--sk-user-accent-text);
}
:root[data-staff-interface][data-personal-accent] .sk-app-shell .sk-search-box:focus-within {
  outline-color:var(--sk-user-accent-text); border-color:var(--sk-user-accent-text);
}
.sk-appearance-tabs { display:flex; gap:var(--sk-space-2); margin-bottom:var(--sk-space-5); padding:var(--sk-space-1); border-radius:var(--sk-radius-md); background:var(--sk-color-surface-subtle); }
.sk-appearance-tabs > button { flex:1; min-height:44px; border:0; border-radius:var(--sk-radius-sm); background:transparent; color:var(--sk-color-ink-soft); font:inherit; cursor:pointer; }
.sk-appearance-tabs > button[aria-selected="true"] { background:var(--sk-color-surface); color:var(--sk-color-ink); box-shadow:var(--sk-shadow-card); }
.sk-appearance-settings { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.85fr); gap:var(--sk-space-5); }
.sk-appearance-controls { min-width:0; }
.sk-appearance-fieldset { min-width:0; padding:0; border:0; margin:0 0 var(--sk-space-5); }
.sk-appearance-fieldset legend { font-weight:var(--sk-font-weight-strong); margin-bottom:var(--sk-space-3); }
.sk-appearance-fieldset p { color:var(--sk-color-ink-soft); margin:0; }
.sk-appearance-modes { display:flex; flex-wrap:wrap; gap:var(--sk-space-2); }
.sk-appearance-modes > button { flex:1; min-height:44px; padding:var(--sk-space-2); border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-md); background:var(--sk-color-surface); color:var(--sk-color-ink); font:inherit; cursor:pointer; }
.sk-appearance-modes > button[aria-pressed="true"] { border-color:var(--sk-user-accent-text); background:var(--sk-user-accent-soft); color:var(--sk-user-accent-text); box-shadow:inset 0 0 0 1px var(--sk-user-accent-text); }
.sk-accent-presets { display:flex; flex-wrap:wrap; gap:var(--sk-space-1); margin-block:var(--sk-space-3); }
.sk-accent-option { position:relative; display:grid; place-items:center; width:44px; height:44px; flex:0 0 44px; }
.sk-accent-option input { position:absolute; inset:0; margin:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.sk-accent-option > span { display:grid; place-items:center; width:28px; height:28px; border:1px solid color-mix(in srgb,var(--sk-swatch) 75%,var(--sk-color-ink)); border-radius:50%; background:var(--sk-swatch); color:var(--sk-swatch-on); pointer-events:none; }
.sk-accent-option input:checked + span { outline:2px solid var(--sk-user-accent-text); outline-offset:3px; }
.sk-accent-option input:focus-visible + span { outline:3px solid var(--sk-color-ink); outline-offset:5px; }
.sk-accent-name { min-height:1.5em; }
.sk-accent-custom { display:flex; align-items:center; flex-wrap:wrap; gap:var(--sk-space-3); margin-top:var(--sk-space-4); }
.sk-accent-spectrum { display:block; position:relative; width:44px; height:44px; flex:0 0 44px; border-radius:50%; background:conic-gradient(#f44,#ff0,#0e4,#0df,#44f,#e0f,#f44); }
.sk-accent-spectrum input { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.sk-accent-spectrum:focus-within { outline:2px solid var(--sk-color-ink); outline-offset:3px; }
.sk-accent-hex { width:7.5rem; min-height:44px; font-family:var(--sk-font-mono); }
.sk-appearance-note { color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); margin:var(--sk-space-3) 0; }
.sk-accent-error { color:var(--sk-color-danger); margin-top:var(--sk-space-2); }
.sk-appearance-preview { min-width:0; padding:var(--sk-space-4); border-radius:var(--sk-radius-md); background:var(--sk-color-surface-subtle); }
.sk-appearance-preview-label { display:block; margin-bottom:var(--sk-space-3); color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); }
.sk-appearance-preview-app { border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-md); overflow:hidden; background:var(--sk-color-surface); }
.sk-appearance-preview-brand { padding:var(--sk-space-4); border-bottom:1px solid var(--sk-color-border); }
.sk-appearance-preview-brand .sk-minrutine-logo { width:2rem; max-width:100%; }
.sk-appearance-preview-body { display:grid; grid-template-columns:40px minmax(0,1fr); }
.sk-appearance-preview-rail { display:flex; flex-direction:column; align-items:center; gap:var(--sk-space-5); padding-block:var(--sk-space-4); border-right:1px solid var(--sk-color-border); color:var(--sk-user-accent-text); }
.sk-appearance-preview-content { display:grid; gap:var(--sk-space-3); padding:var(--sk-space-3); min-width:0; }
.sk-appearance-preview-widget { display:grid; gap:var(--sk-space-2); background:var(--sk-user-accent-soft); padding:var(--sk-space-3); border-radius:var(--sk-radius-sm); }
.sk-appearance-preview-widget strong { color:var(--sk-user-accent-text); font-size:var(--sk-font-size-xl); }
.sk-appearance-preview-widget > span { font-size:var(--sk-font-size-xs); }
.sk-appearance-preview-bars { height:40px; display:flex; align-items:flex-end; gap:var(--sk-space-2); }
.sk-appearance-preview-bars > span { flex:1; height:45%; background:var(--sk-user-accent-text); border-radius:3px 3px 0 0; }
.sk-appearance-preview-bars > span:nth-child(2) { height:65%; }.sk-appearance-preview-bars > span:nth-child(3) { height:55%; }.sk-appearance-preview-bars > span:nth-child(4) { height:85%; }.sk-appearance-preview-bars > span:nth-child(5) { height:100%; }
.sk-appearance-preview-button { background:var(--sk-user-accent); color:var(--sk-user-accent-on); padding:var(--sk-space-2); border-radius:var(--sk-radius-sm); text-align:center; }
.sk-appearance-preview-link { color:var(--sk-user-accent-text); font-size:var(--sk-font-size-xs); }
@media(max-width:44rem) { .sk-appearance-settings { grid-template-columns:minmax(0,1fr); }.sk-appearance-preview { padding:var(--sk-space-3); } }
:root[data-staff-interface][data-personal-accent] .dashboard-signal[data-signal="summary-revenue"] {
  background:var(--sk-user-accent); color:var(--sk-user-accent-on);
}
:root[data-staff-interface][data-personal-accent] .sk-app-shell :is(.sk-assistant-messages article.is-user > div,.sk-copilot__messages article.is-user > div,.sk-copilot__composer > .sk-icon-button,.sk-filter-chips > button.is-active:not(.sk-button),.sk-message-thread article.is-outgoing) {
  color:var(--sk-user-accent-on);
}
/* The dialog remains within the existing overlay sizing and central style layer. */
:root[data-staff-interface] .sk-modal:has(.sk-appearance-settings) { width:min(820px,calc(100vw - 32px)); }

/* Personal accent intentionally wins the legacy launcher paint overrides. */
:root[data-staff-interface][data-personal-accent] .hybrid-ecosystem .sk-copilot__launcher {
  background:var(--sk-user-accent)!important; color:var(--sk-user-accent-on)!important; border-color:var(--sk-user-accent)!important;
}
:root[data-staff-interface][data-personal-accent] .hybrid-ecosystem .sk-copilot__launcher:hover {
  background:var(--sk-user-accent-hover)!important; color:var(--sk-user-accent-on-hover)!important;
}

/* Foreground is calculated for the exact solid fill; decoration and muted text must not reduce it. */
:root[data-staff-interface][data-personal-accent] .dashboard-signal[data-signal="summary-revenue"]::before { background:none; }
:root[data-staff-interface][data-personal-accent] .dashboard-signal[data-signal="summary-revenue"] :is(.dashboard-signal-heading,.dashboard-signal-action,.dashboard-signal-action strong,.dashboard-signal-action small,.dashboard-signal-date) {
  color:var(--sk-user-accent-on); opacity:1;
}

:root[data-staff-interface][data-personal-accent] .sk-app-shell .sk-button--primary:not(:disabled):active {
  background:var(--sk-user-accent-active); color:var(--sk-user-accent-on-active);
}
:root[data-staff-interface][data-personal-accent] .hybrid-ecosystem .sk-copilot__launcher:active {
  background:var(--sk-user-accent-active)!important; color:var(--sk-user-accent-on-active)!important;
}

.sk-appearance-fieldset .sk-appearance-mode-help { margin-top:var(--sk-space-3); font-size:var(--sk-font-size-xs); }
.sk-appearance-auto-details { margin-top:var(--sk-space-2); color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); }
.sk-appearance-auto-details summary { cursor:pointer; color:var(--sk-color-ink); min-height:44px; display:list-item; align-content:center; }
.sk-appearance-auto-details p { margin-top:var(--sk-space-2); }

/* Personal desktop navigation sizing. Medium retains all existing dimensions. */
@media (width > 80rem) {
 .sk-app-shell[data-navigation-size="small"] { --sk-nav-size-icon:22px; --sk-nav-size-inner:24px; --sk-nav-size-text:11px; --sk-nav-size-row:26px; }
 .sk-app-shell[data-navigation-size="large"] { --sk-nav-size-icon:34px; --sk-nav-size-inner:36px; --sk-nav-size-text:16px; --sk-nav-size-row:46px; }
 :root .sk-app-shell:is([data-navigation-size="small"],[data-navigation-size="large"]) .sk-primary-rail .sk-primary-rail__label { font-size:var(--sk-nav-size-text)!important; }
 :root .sk-app-shell:is([data-navigation-size="small"],[data-navigation-size="large"]) .sk-primary-rail .hybrid-module-group>button { min-height:var(--sk-nav-size-row)!important; height:var(--sk-nav-size-row)!important; }
 :root .sk-app-shell:is([data-navigation-size="small"],[data-navigation-size="large"]) .sk-primary-rail .mr-blue-line-icon { width:var(--sk-nav-size-icon); height:var(--sk-nav-size-icon); flex-basis:var(--sk-nav-size-icon); }
 :root .sk-app-shell:is([data-navigation-size="small"],[data-navigation-size="large"]) .sk-primary-rail .hybrid-module-group>button .mr-blue-line-icon>svg { width:var(--sk-nav-size-icon)!important; height:var(--sk-nav-size-icon)!important; }
 :root .sk-app-shell:is([data-navigation-size="small"],[data-navigation-size="large"]) .sk-primary-rail .hybrid-module-group>button .mr-blue-line-icon>svg>svg { width:var(--sk-nav-size-inner)!important; height:var(--sk-nav-size-inner)!important; }
 :root .sk-app-shell:is([data-navigation-size="small"],[data-navigation-size="large"]) .sk-primary-rail>button>svg { width:var(--sk-nav-size-icon)!important; height:var(--sk-nav-size-icon)!important; }
}

/* Menu controls share the dashboard's grouped settings language. */
.sk-menu-editor-width { padding:var(--sk-space-4); background:var(--sk-color-surface); border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-md); }
.sk-menu-editor-width label,.sk-menu-editor-heading h3 { font-weight:var(--sk-font-weight-strong); font-size:var(--sk-type-control); }
.sk-menu-editor-width p,.sk-menu-editor-heading p { color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); margin:.4rem 0 .8rem; }
.sk-menu-editor-width input { width:100%; accent-color:var(--sk-color-accent); cursor:pointer; }
.sk-menu-editor-scale { display:flex; justify-content:space-between; font-size:var(--sk-font-size-xs); color:var(--sk-color-ink-soft); }
.sk-menu-editor-heading { margin-top:var(--sk-space-5); }
.sk-menu-editor-heading h3 { margin:0; }
.sk-menu-editor-list { list-style:none; margin:0; padding:0; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-md); overflow:hidden; }
.sk-menu-editor-list li { display:flex; align-items:center; gap:var(--sk-space-2); padding:.4rem .65rem; min-height:48px; background:var(--sk-color-surface); }
.sk-menu-editor-list li+li { border-top:1px solid var(--sk-color-border); }
.sk-menu-editor-list li.is-drop-target { box-shadow:inset 0 3px var(--sk-color-accent); background:var(--sk-color-accent-soft); }
.sk-menu-editor-label { flex:1; min-width:0; overflow-wrap:anywhere; }
.sk-menu-editor button { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; padding:0; flex-shrink:0; border:1px solid transparent; border-radius:var(--sk-radius-sm); background:transparent; color:var(--sk-color-ink-soft); cursor:pointer; }
.sk-menu-editor button:hover:not(:disabled) { background:var(--sk-color-accent-soft); color:var(--sk-color-accent); }
.sk-menu-editor button:focus-visible { outline:2px solid var(--sk-color-accent); outline-offset:2px; }
.sk-menu-editor button:disabled { opacity:.3; cursor:default; }
.sk-menu-editor .sk-menu-editor-grip { cursor:grab; touch-action:none; user-select:none; }
.sk-menu-editor .sk-menu-editor-grip:active { cursor:grabbing; }
.sk-menu-editor-arrows { display:flex; gap:.15rem; }
.sk-menu-editor-fixed { display:flex; align-items:center; gap:var(--sk-space-2); padding:var(--sk-space-3); color:var(--sk-color-ink-soft); }
.sk-menu-editor-fixed small { margin-left:auto; }

.sk-menu-editor-list li.is-drop-after { box-shadow:inset 0 -3px var(--sk-color-accent); }

/* Visual widget browser: static examples, existing dashboard surfaces and accents. */
:root[data-staff-interface] .sk-modal:has(.widget-gallery-v3) { width:min(1180px,calc(100vw - 32px)); height:min(850px,calc(100dvh - 48px)); display:flex; flex-direction:column; }
:root[data-staff-interface] .sk-modal:has(.widget-gallery-v3) .sk-modal__body { padding:0; flex:1; min-height:0; overflow:auto; }
.widget-gallery-v3 { --sk-color-accent:var(--sk-user-accent-text,var(--sk-color-primary)); --sk-color-accent-soft:var(--sk-user-accent-soft,var(--sk-color-primary-soft)); display:grid; grid-template-columns:210px minmax(0,1fr); min-height:100%; background:var(--sk-color-surface); color:var(--sk-color-ink); }
.widget-browser-sidebar { min-width:0; padding:var(--sk-space-4); background:var(--sk-color-canvas); border-right:1px solid var(--sk-color-border); }
.widget-browser-sidebar label { display:block; font-weight:var(--sk-font-weight-strong); font-size:var(--sk-font-size-xs); margin-bottom:.5rem; }
.widget-browser-sidebar input { box-sizing:border-box; width:100%; min-width:0; min-height:40px; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-sm); background:var(--sk-color-surface); color:var(--sk-color-ink); padding:.6rem; }
.widget-browser-sidebar nav { display:grid; gap:.3rem; margin-top:var(--sk-space-4); }
.widget-browser-sidebar nav button { display:flex; justify-content:space-between; gap:.5rem; text-align:left; border:0; border-radius:var(--sk-radius-sm); padding:.65rem; background:transparent; color:inherit; cursor:pointer; }
.widget-browser-sidebar nav button[aria-pressed="true"] { background:var(--sk-color-accent-soft); color:var(--sk-color-accent); font-weight:var(--sk-font-weight-strong); }
.widget-browser-sidebar nav button span { color:var(--sk-color-ink-soft); }
.widget-browser-content { min-width:0; padding:var(--sk-space-5); }
.widget-browser-content header h3 { margin:0 0 .4rem; font-size:var(--sk-font-size-lg); }
.widget-browser-content header p,.widget-browser-content header small { color:var(--sk-color-ink-soft); margin:0 0 .5rem; }
.widget-browser-content header small { display:block; font-size:var(--sk-font-size-xs); }
.widget-browser-notice { min-height:1.3rem; color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); margin:.5rem 0; }
.widget-browser-grid { min-width:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); align-items:start; gap:var(--sk-space-5); }
.widget-browser-card { min-width:0; display:grid; gap:.75rem; }
.widget-browser-caption h4 { margin:.2rem 0; font-size:var(--sk-type-control); }
.widget-browser-caption p { margin:0; min-height:2.8em; color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); }
.widget-browser-caption>small { color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); }
.widget-demo { box-sizing:border-box; position:relative; width:100%; height:200px; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-lg); background:var(--sk-color-canvas); padding:1rem; overflow:hidden; color:var(--sk-color-ink); }
.widget-demo.size-small { width:70%; min-width:170px; }
.widget-demo.size-wide { height:150px; margin-top:25px; margin-bottom:25px; }
.widget-demo-heading { display:flex; align-items:center; gap:.5rem; font-size:var(--sk-interface-type-3); font-weight:var(--sk-font-weight-strong); }
.widget-demo-heading .dashboard-function-icon { flex-shrink:0; }
.widget-demo-value { display:block; font-size:var(--sk-interface-type-10); margin:1rem 0 .25rem; color:var(--sk-color-accent); line-height:1.15; }
.widget-demo-value small { font-size:var(--sk-interface-type-20); }
.widget-demo-caption { display:block; color:var(--sk-color-ink-soft); font-size:var(--sk-interface-type-8); }
.widget-demo-bars { position:absolute; bottom:1rem; left:1rem; right:1rem; display:flex; align-items:flex-end; gap:6px; height:48px; }
.widget-demo-bars i { flex:1; background:var(--sk-color-accent); border-radius:3px 3px 0 0; }
.widget-demo.size-wide .widget-demo-bars { position:absolute; left:auto; right:1rem; bottom:1rem; width:40%; height:48px; }
.widget-demo.size-wide .widget-demo-value { max-width:50%; }
.widget-demo-month { display:flex; justify-content:space-between; margin:.75rem 0 .4rem; font-size:var(--sk-interface-type-3); }
.widget-demo-calendar { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; font-size:var(--sk-interface-type-8); text-align:center; }
.widget-demo-calendar span { padding:3px; }
.widget-demo-calendar .is-today { background:var(--sk-color-accent-soft); color:var(--sk-color-accent); border-radius:50%; }
.widget-demo-rows { display:grid; gap:12px; margin-top:1rem; }
.widget-demo-rows>div { display:flex; align-items:center; gap:8px; }
.widget-demo-dot { width:7px; height:7px; background:var(--sk-color-accent); border-radius:50%; }
.widget-demo-rows>div>span:nth-child(2) { flex:1; display:grid; gap:5px; }
.widget-demo-rows i { display:block; height:5px; width:90%; border-radius:3px; background:var(--sk-color-border); }
.widget-demo-rows i+i { width:60%; }
.widget-demo-time { color:var(--sk-color-ink-soft); font-size:var(--sk-interface-type-8); }
.widget-demo-arrow { position:absolute; bottom:1rem; right:1rem; }
.widget-size-options { display:flex; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-sm); overflow:hidden; }
:root[data-staff-interface] .widget-size-options button { flex:1; min-width:0; min-height:34px; height:auto; padding:.45rem .5rem; border:0; border-radius:0; background:var(--sk-color-canvas); color:var(--sk-color-ink-soft); font-size:var(--sk-interface-type-3); cursor:pointer; }
:root[data-staff-interface] .widget-size-options button[aria-pressed="true"] { background:var(--sk-color-accent-soft); color:var(--sk-color-accent); box-shadow:inset 0 0 0 1px var(--sk-color-accent); }
.widget-browser-actions { display:flex; align-items:center; justify-content:space-between; min-height:40px; gap:.5rem; }
:root[data-staff-interface] .widget-browser-actions > .sk-button { min-height:var(--sk-touch-min); }
.widget-browser-added { display:flex; align-items:center; gap:.35rem; color:var(--sk-color-ink-soft); font-size:var(--sk-interface-type-3); }
.widget-browser-empty { padding:var(--sk-space-5); text-align:center; }
.widget-controls .widget-size-options { margin-left:auto; }
@media(max-width:700px) {
 .widget-gallery-v3 { grid-template-columns:1fr; }
 .widget-browser-sidebar { border-right:0; border-bottom:1px solid var(--sk-color-border); }
 .widget-browser-sidebar nav { display:flex; overflow-x:auto; margin-top:.7rem; }
 .widget-browser-sidebar nav button { flex-shrink:0; }
 .widget-browser-content { padding:var(--sk-space-4); }
 .widget-browser-grid { grid-template-columns:1fr; }
 .widget-demo { max-width:340px; }
}

.widget-demo.size-wide .widget-demo-calendar { gap:1px; }
.widget-demo.size-wide .widget-demo-month { margin:.4rem 0 .2rem; }

/* Designed operational family: shared by live cards and labelled gallery examples. */
.operational-widget-card { height:100%; min-width:0; }
.operational-widget { position:relative; min-width:0; display:flex; flex-direction:column; gap:var(--sk-space-3); --op-accent:var(--sk-user-accent-text,var(--sk-color-primary)); --op-soft:var(--sk-user-accent-soft,var(--sk-color-primary-soft)); }
.operational-heading { display:flex; align-items:center; gap:var(--sk-space-2); }
.operational-heading h3 { flex:1; min-width:0; margin:0; font-size:var(--sk-type-card-title); line-height:1.35; }
.operational-heading button { border:0; background:transparent; color:var(--sk-color-ink-soft); min-width:36px; min-height:36px; border-radius:var(--sk-radius-sm); cursor:pointer; }
.operational-metric { display:flex; flex-direction:column; gap:.35rem; }
.operational-metric>strong { font-size:var(--sk-font-size-display); font-weight:var(--sk-font-weight-strong); line-height:1.1; color:var(--op-accent); overflow-wrap:anywhere; }
.operational-metric>span { color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-sm); }
.operational-rows { display:grid; gap:.4rem; }
.operational-row { width:100%; min-width:0; display:flex; align-items:center; gap:.65rem; padding:.65rem; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-sm); background:var(--sk-color-surface); color:var(--sk-color-ink); text-align:left; }
button.operational-row { cursor:pointer; }
.operational-row-marker { width:26px; height:26px; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; border-radius:50%; background:var(--op-soft); color:var(--op-accent); font-size:var(--sk-font-size-xs); }
.operational-row-copy { display:flex; flex-direction:column; min-width:0; flex:1; gap:.2rem; overflow-wrap:anywhere; }
.operational-row-copy strong { font-size:var(--sk-font-size-sm); font-weight:var(--sk-font-weight-medium); }
.operational-row-copy small,.operational-row-value { color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); }
.operational-row-value { flex-shrink:0; max-width:35%; overflow-wrap:anywhere; }
.operational-detail,.operational-partial { margin:0; font-size:var(--sk-font-size-xs); color:var(--sk-color-ink-soft); line-height:1.5; }
.operational-partial { padding:.6rem; border-left:2px solid var(--op-accent); background:var(--op-soft); }
.operational-updated { color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-xs); }
.operational-open { margin-top:auto; border:0; background:transparent; color:var(--op-accent); display:flex; align-items:center; justify-content:space-between; min-height:40px; padding:.5rem 0; cursor:pointer; font-size:var(--sk-type-control); }
.operational-filters { display:flex; flex-wrap:wrap; gap:.65rem; margin-bottom:var(--sk-space-3); }
.operational-filters label { flex:1; min-width:130px; display:flex; flex-direction:column; gap:.4rem; font-size:var(--sk-font-size-xs); }
.operational-filters :is(select,input) { width:100%; min-width:0; min-height:40px; background:var(--sk-color-surface); color:var(--sk-color-ink); border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-sm); padding:.5rem; }
.operational-target { align-self:center; width:min(100%,220px); color:var(--op-accent); }
.operational-target svg { display:block; width:100%; height:auto; }
.operational-task-grid { display:flex; gap:.6rem; }
.operational-task-grid i { display:flex; align-items:center; justify-content:center; width:40px; height:40px; background:var(--op-soft); color:var(--op-accent); border-radius:var(--sk-radius-sm); }
.operational-availability .operational-row-marker { display:none; }
.operational-availability .operational-row-copy strong { color:var(--op-accent); font-size:var(--sk-font-size-xl); }
.operational-routines .operational-row { border-left:3px solid var(--op-accent); }
.operational-closing .operational-row-marker { background:transparent; border:1px dashed var(--op-accent); }
.operational-closing .operational-row-marker svg { visibility:hidden; }
.operational-stock .operational-row-marker { border-radius:var(--sk-radius-sm); }
.operational-approvals .operational-row-value { color:var(--op-accent); font-size:var(--sk-font-size-xl); font-weight:var(--sk-font-weight-strong); }
.widget-operational-demo { box-sizing:border-box; padding:1rem; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-lg); background:var(--sk-color-canvas); color:var(--sk-color-ink); }
.widget-operational-demo .operational-widget { gap:.65rem; }
.widget-operational-demo .operational-heading h3 { font-size:var(--sk-font-size-xs); }
.widget-operational-demo .operational-metric>strong { font-size:var(--sk-font-size-2xl); }
.widget-operational-demo .operational-row { padding:.45rem; }
.widget-operational-demo .operational-row-copy strong { font-size:var(--sk-font-size-xs); }
.widget-operational-demo .operational-detail { display:none; }
.widget-operational-demo.size-small { max-width:240px; }
.widget-operational-demo.size-small .operational-row:nth-child(n+3) { display:none; }
.widget-operational-demo.size-wide .operational-rows { grid-template-columns:repeat(2,minmax(0,1fr)); }
.widget-operational-demo.size-wide .operational-row { align-items:start; }
.dashboard-widget.size-small .operational-row-copy small { display:none; }
:root[data-staff-interface] :is(.operational-widget,.operational-filters) button:focus-visible { outline:2px solid var(--op-accent,var(--sk-color-primary)); outline-offset:2px; }
@media(max-width:600px) { .widget-operational-demo.size-wide .operational-rows { grid-template-columns:1fr; } }

.operational-target svg { animation:sk-widget-rise 650ms var(--sk-ease-emphasized) both; transform-origin:center bottom; }
.operational-staffing .operational-metric,.operational-routines .operational-metric { padding:var(--sk-space-3); border-radius:var(--sk-radius-sm); background:var(--op-soft); }
@media(prefers-reduced-motion:reduce) { .operational-target svg { animation:none; transform:none; } }

/* Gallery uses the real presentation components, made inert and compact for examples. */
.widget-faithful-demo { --widget-accent:var(--sk-user-accent-text,var(--sk-color-primary)); box-sizing:border-box; overflow:hidden; min-width:0; padding:.75rem; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-lg); background:var(--sk-color-canvas); }
.widget-faithful-demo.size-small { max-width:240px; }
.widget-faithful-demo>div { min-width:0; }
:root[data-staff-interface] .widget-faithful-demo :is(.sk-card,.dashboard-signal) { margin:0; min-height:180px; border:0; box-shadow:none; }
:root[data-staff-interface] .widget-faithful-demo :is(h2,h3) { font-size:var(--sk-font-size-xs)!important; }
:root[data-staff-interface] .widget-faithful-demo .dashboard-signal { padding:1rem; }
:root[data-staff-interface] .widget-faithful-demo .dashboard-signal-action>strong { font-size:var(--sk-font-size-2xl)!important; }
:root[data-staff-interface] .widget-faithful-demo .sk-card-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.6rem; }
.widget-faithful-demo :is(details,.sk-hint) { display:none; }
.widget-faithful-demo .dashboard-kpi-visual strong { font-size:var(--sk-font-size-lg); }
.widget-faithful-demo :is(.dashboard-ratio-ring) { width:44px; height:44px; }
.widget-faithful-demo .dashboard-upcoming-visual { margin:0; }

:root[data-staff-interface] .widget-faithful-demo [data-widget-id="manager-kpis"]>.sk-card-grid { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:.5rem!important; }
:root[data-staff-interface] .widget-faithful-demo .dashboard-kpi-visual { min-width:0!important; min-height:0!important; padding:.5rem!important; }
:root[data-staff-interface] .widget-faithful-demo .dashboard-kpi-visual strong { font-size:var(--sk-font-size-lg)!important; overflow-wrap:anywhere; }
:root[data-staff-interface] .widget-faithful-demo .dashboard-ratio-ring { width:44px!important; height:44px!important; }
:root[data-staff-interface] .widget-faithful-demo .dashboard-ratio-ring span { font-size:var(--sk-font-size-xs)!important; }
:root[data-staff-interface] .widget-faithful-demo .dashboard-upcoming-rail { display:grid!important; grid-template-columns:1fr!important; gap:.5rem; }
:root[data-staff-interface] .widget-faithful-demo .dashboard-upcoming-rail button { min-width:0!important; }

/* Preserve the existing compact rail through 80rem. */
@media (width > 80rem) {
 :root[data-staff-interface] .sk-app-shell[data-navigation-size] { --sk-rail-width:calc(var(--sk-user-rail-width) * var(--sk-navigation-scale,1)); }
}

/* Privacy controls retain the shared touch floor in the compact desktop shell. */
:root[data-staff-interface] .sk-app-shell :is(.sk-employee-protection,.sk-minutes-corrections) :is(button,input,select,summary) {
  min-height: var(--sk-control-height);
  height: auto;
}


:root[data-staff-interface] .sk-template-toolbar { display:flex; flex-wrap:wrap; gap:var(--sk-space-3); align-items:center; }
:root[data-staff-interface] .sk-template-toolbar > label { font-size:var(--sk-font-size-sm); font-weight:var(--sk-font-weight-medium); }
:root[data-staff-interface] .sk-template-toolbar > select { width:auto; min-width:12rem; min-height:2.75rem; border-radius:var(--sk-radius-sm); padding:var(--sk-space-2) var(--sk-space-3); border:1px solid var(--sk-color-border); background:var(--sk-color-surface); color:var(--sk-color-ink); font-size:var(--sk-type-input); }
:root[data-staff-interface] .sk-template-toolbar > button { padding:var(--sk-space-3); border:0; background:transparent; color:var(--sk-color-ink-soft); font-size:var(--sk-font-size-sm); cursor:pointer; }
:root[data-staff-interface] .sk-template-gallery > div[role=list] { grid-template-columns:repeat(3,minmax(0,1fr)); align-items:stretch; }
:root[data-staff-interface] .sk-template-gallery > div[role=list] button { height:100%; min-height:5rem; }
:root[data-staff-interface] .sk-signage-media-picker { display:grid; gap:var(--sk-space-3); margin-block:var(--sk-space-3); }
@media (max-width:64rem) { :root[data-staff-interface] .sk-template-gallery > div[role=list] {grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:44rem) { :root[data-staff-interface] .sk-template-gallery > div[role=list] {grid-template-columns:1fr;} :root[data-staff-interface] .sk-template-toolbar > select {width:100%;} }

:root[data-staff-interface] .hybrid-appearance { display:grid; gap:var(--sk-space-2); align-items:stretch; padding:var(--sk-space-3); margin-block-start:var(--sk-space-2); font-size:var(--sk-font-size-xs); color:var(--sk-color-ink-soft); }
:root[data-staff-interface] .hybrid-appearance-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2px; padding:3px; border:1px solid var(--sk-color-border); border-radius:var(--sk-radius-sm); background:var(--sk-color-surface); }
:root[data-staff-interface] .hybrid-appearance-options button { min-width:0; min-height:2.25rem; padding:var(--sk-space-1); border:0; border-radius:var(--sk-radius-sm); background:transparent; color:var(--sk-color-ink-soft); font-family:inherit; font-size:var(--sk-font-size-xs); font-weight:var(--sk-font-weight-medium); cursor:pointer; }
:root[data-staff-interface] .hybrid-appearance-options button[aria-pressed=true] { background:var(--sk-color-border); color:var(--sk-color-ink); }
:root[data-staff-interface] .hybrid-appearance-options button:focus-visible { outline:2px solid var(--sk-color-accent); outline-offset:2px; }

:root[data-staff-interface] .sk-salon-brand-summary {display:flex;flex-wrap:wrap;align-items:center;gap:var(--sk-space-2);padding:var(--sk-space-3);margin-block:var(--sk-space-3);border:1px solid var(--sk-color-border);border-radius:var(--sk-radius-sm);font-size:var(--sk-font-size-xs);color:var(--sk-color-ink-soft);}
:root[data-staff-interface] .sk-salon-brand-colours {display:flex;gap:var(--sk-space-1);}
:root[data-staff-interface] .sk-salon-brand-colours i {width:1rem;height:1rem;border:1px solid var(--sk-color-border);border-radius:50%;}
:root[data-staff-interface] .sk-content-channel-choices {display:flex;flex-wrap:wrap;gap:var(--sk-space-3);}

:root[data-staff-interface] .sk-solution-layout {display:grid;grid-template-columns:minmax(0,2fr) minmax(16rem,1fr);gap:var(--sk-space-4);align-items:start;margin-block:var(--sk-space-4);}
@media(max-width:44rem){:root[data-staff-interface] .sk-solution-layout{grid-template-columns:1fr;}}


.sa-page{background:#fff;color:#202124;min-width:0}.sa-page button{font:inherit;cursor:pointer}.sa-platform{background:#82667f;color:#fff;display:flex;gap:24px;align-items:center;padding:20px 24px}.sa-platform strong{font-size:var(--sk-type-salongavisen-brand);letter-spacing:-1px}.sa-platform button{flex:1;background:none;border:0;text-align:left;color:inherit}.sa-platform a{color:inherit}.sa-masthead{padding:24px 24px 0;text-align:center}.sa-masthead h1{font:var(--sk-type-salongavisen-masthead);letter-spacing:-2px;margin:12px 0 24px}.sa-masthead nav{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;border-block:1px solid #202124;padding:12px}.sa-masthead nav button{border:0;background:none}.sa-page [aria-pressed=true]{color:#82667f;font-weight:var(--sk-type-salongavisen-weight)}.sa-layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:24px;padding:24px}.sa-stories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.sa-story{min-width:0;border-bottom:1px solid #d9dce2;padding-bottom:20px}.sa-story button{width:100%;padding:0;border:0;background:none;text-align:left;color:inherit}.sa-story img{width:100%;aspect-ratio:1.6;object-fit:cover;margin-bottom:12px}.sa-story :is(h2,h3){font:var(--sk-type-salongavisen-story);letter-spacing:-.5px;margin:12px 0;overflow-wrap:anywhere}.sa-story small,.sa-reader small{color:#5f6672;font-size:var(--sk-type-salongavisen-caption)}.sa-story p{line-height:1.5}.sa-lead,.sa-campaign{grid-column:1/-1}.sa-lead h2{font-size:var(--sk-type-salongavisen-lead)}.sa-campaign{background:#edf2ff;padding:20px;border-top:4px solid #82667f}.sa-sidebar{border-left:1px solid #d9dce2;padding-left:20px}.sa-sidebar h2{font:var(--sk-type-salongavisen-sidebar)}.sa-sidebar button{display:block;width:100%;padding:15px 0;border:0;border-bottom:1px solid #d9dce2;background:none;text-align:left;color:#82667f}.sa-reader{max-width:860px;margin:auto;padding:30px 24px}.sa-reader h1{font:var(--sk-type-salongavisen-reader)}.sa-reader>img{width:100%}.sa-text{overflow-wrap:anywhere;line-height:1.65}.sa-text p{white-space:pre-wrap}.sa-resources{padding:24px}.sa-resources>article{border-bottom:1px solid #d9dce2;padding:20px 0}.sa-resources article>a{display:block;margin-top:12px}.sa-forum{display:grid;grid-template-columns:190px minmax(0,1fr);gap:24px;padding:24px}.sa-forum aside{background:#f2f4f7;padding:16px}.sa-forum aside button,.sa-thread-list button{display:block;width:100%;border:0;background:none;text-align:left;padding:12px}.sa-thread-list{border-bottom:1px solid #d9dce2;margin-bottom:24px}.sa-forum form{display:grid;gap:12px;margin-top:24px}.sa-forum label{display:grid;gap:6px}.sa-forum input,.sa-forum textarea{width:100%;font:inherit;padding:12px;border:1px solid #d9dce2}.sa-forum article{overflow-wrap:anywhere}.sa-forum section[aria-label=Kommentarer]>article{padding:14px 0;border-bottom:1px solid #d9dce2}.sa-management>header{display:flex;align-items:center;gap:24px;justify-content:space-between;flex-wrap:wrap}.sa-library{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}.sa-library>article{background:var(--sk-color-surface);border:1px solid var(--sk-color-border);padding:20px}.sa-library a{display:block;margin-top:12px}.sa-terminal-link{width:100%;border:0;font:inherit;text-align:left;cursor:pointer;display:flex;gap:24px;align-items:center;min-height:44px;padding:8px 24px;background:#82667f;color:#fff;text-decoration:none}.sa-terminal-link strong{font:var(--sk-type-salongavisen-terminal)}.sa-terminal-link span:last-child{margin-left:auto}.sa-page a{overflow-wrap:anywhere}@media(max-width:720px){.sa-layout,.sa-forum{grid-template-columns:1fr;padding:16px}.sa-sidebar{border-left:0;padding:0}.sa-stories{grid-template-columns:1fr}.sa-lead h2{font-size:var(--sk-type-salongavisen-compact-title)}.sa-platform{flex-wrap:wrap;gap:14px;padding:16px}.sa-reader h1{font-size:var(--sk-type-salongavisen-compact-title)}.sa-masthead nav{gap:16px}.sa-terminal-link{flex-wrap:wrap;gap:8px;padding:12px 16px}.sa-terminal-link span{font-size:var(--sk-type-salongavisen-caption)}.sa-forum aside{display:flex;flex-wrap:wrap;gap:8px}.sa-forum aside h2{width:100%}.sa-forum aside button{width:auto}}
.sa-terminal-layer{position:fixed;inset:0;z-index:100;overflow-y:auto;background:var(--sk-color-overlay);padding:1rem}.sa-terminal-sheet{max-width:60rem;margin:0 auto;min-height:60vh;border-radius:1rem;overflow:hidden}.sa-terminal-stories{padding:24px}.sa-terminal-sheet>p{padding:16px 24px}
/* Salongavisen i terminalen: «Lukk» ytterst til høyre med fingermål, og én kolonne så sakene står likt. */
.sa-terminal-sheet .sa-platform button{flex:0 0 auto;margin-left:auto;min-height:44px;padding:0 16px;text-align:right}
.sa-terminal-stories{grid-template-columns:1fr}

/* Salon identity and responsive editorial layout. Scoped to the staff reader. */
.sa-salon-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 24px;padding:24px 0;border-bottom:1px solid #d9dce2}
.sa-salon-header>div{display:grid;gap:5px;min-width:0}
.sa-salon-kicker,.sa-edition{font-size:var(--sk-type-salongavisen-caption);line-height:1.5;letter-spacing:.12em;text-transform:uppercase;color:#5f6672}
.sa-salon-header strong{font-size:var(--sk-type-salongavisen-salon-name);line-height:1.15;letter-spacing:-.7px;overflow-wrap:anywhere}
.sa-salon-location{font-size:var(--sk-type-salongavisen-meta);color:#5f6672;text-align:right;overflow-wrap:anywhere}
.sa-edition{margin:0}
.sa-page>.sa-platform{flex-wrap:wrap}
.sa-page>.sa-platform button,.sa-page>.sa-platform a{min-height:44px;display:flex;align-items:center}
.sa-masthead h1{font-size:var(--sk-type-salongavisen-masthead-size);line-height:1.08;letter-spacing:-.045em;overflow-wrap:anywhere}
.sa-masthead nav{gap:6px 16px;padding:6px 0}
.sa-masthead nav button,.sa-masthead nav a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 12px;box-sizing:border-box;color:inherit;text-decoration:none}
.sa-masthead nav [aria-pressed=true]{box-shadow:inset 0 -3px #82667f}
.sa-page :is(button,a,input,textarea):focus-visible{outline:3px solid #82667f;outline-offset:4px}
.sa-page>.sa-platform :is(button,a):focus-visible{outline-color:#fff}
.sa-layout>main,.sa-forum>section,.sa-reader,.sa-resources{min-width:0}
.sa-reader{box-sizing:border-box;width:100%}
.sa-reader h1{overflow-wrap:anywhere;line-height:1.16}
.sa-reader>small{display:block;margin-top:24px}
.sa-story img,.sa-reader img{max-width:100%;height:auto;display:block}
.sa-forum :is(input,textarea){box-sizing:border-box;min-width:0;font-size:var(--sk-type-salongavisen-body)}
@media(max-width:720px){
 .sa-page>.sa-platform{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;padding:8px 16px}
 .sa-page>.sa-platform button{grid-row:2;grid-column:1/-1;padding:4px 0;border-top:1px solid #ffffff45;font-size:var(--sk-type-salongavisen-meta)}
 .sa-page>.sa-platform a{grid-column:2;grid-row:1;font-size:var(--sk-type-salongavisen-meta)}
 .sa-salon-header{margin:0 16px;padding:20px 0;align-items:flex-start;gap:12px;flex-wrap:wrap}
 .sa-salon-header strong{font-size:var(--sk-type-salongavisen-brand)}
 .sa-salon-location{text-align:left;max-width:100%}
 .sa-masthead{padding:24px 16px 0}
 .sa-masthead h1{margin:10px 0 20px}
 .sa-masthead nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
 .sa-masthead nav button{padding:8px 2px;font-size:var(--sk-type-salongavisen-nav)}
 .sa-masthead nav a{grid-column:1/-1;font-size:var(--sk-type-salongavisen-nav);border-top:1px solid #d9dce2}
 .sa-layout{gap:24px}
 .sa-layout>.sa-sidebar{display:contents}
 .sa-layout>main{grid-row:2}
 .sa-shortcuts{grid-row:1;background:#f4f6fa;padding:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
 .sa-shortcuts h2{grid-column:1/-1;margin:0 0 6px;font-size:var(--sk-type-salongavisen-shortcut-title)}
 .sa-shortcuts button{min-height:44px;padding:12px 0;font-size:var(--sk-type-salongavisen-meta);overflow-wrap:anywhere}
 .sa-latest{grid-row:3;border-top:1px solid #d9dce2;padding-top:12px}
 .sa-stories{gap:24px}
 .sa-story :is(h2,h3),.sa-lead h2{font-size:var(--sk-type-salongavisen-mobile-story);line-height:1.2}
 .sa-story p{font-size:var(--sk-type-salongavisen-body);line-height:1.6}
 .sa-reader,.sa-resources{padding:24px 16px}
 .sa-reader h1{font-size:var(--sk-type-salongavisen-mobile-reader)}
 .sa-text{font-size:var(--sk-type-salongavisen-body);line-height:1.75}
 .sa-forum aside button{min-height:44px}
}
/* A complete editorial edition, with practical guides kept distinct from features. */
.sa-layout{max-width:1440px;margin-inline:auto}
.sa-news-section+.sa-news-section,.sa-guide-section{margin-top:40px}
.sa-section-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;border-top:1px solid #202124;padding-top:20px;margin-bottom:14px}
.sa-section-heading h2{font:var(--sk-type-salongavisen-story);font-size:var(--sk-type-salongavisen-section-title);letter-spacing:-.035em;margin:6px 0 0}
.sa-section-heading>span{flex-shrink:0;color:#5f6672;font-size:var(--sk-type-salongavisen-meta);padding-bottom:4px}
.sa-section-intro{max-width:64ch;color:#5f6672;line-height:1.65;margin:0 0 20px}
.sa-topics{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}
.sa-topics button{min-height:44px;border:1px solid #d9dce2;background:#fff;color:#5f6672;padding:10px 14px;font-size:var(--sk-type-salongavisen-meta)}
.sa-topics [aria-pressed=true]{background:#edf2ff;border-color:#82667f}
.sa-editorial-stories .sa-story p{color:#5f6672;margin:10px 0 16px}
.sa-editorial-stories .sa-story :is(h2,h3){line-height:1.17}
.sa-read-link{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#82667f;font-size:var(--sk-type-salongavisen-meta);min-height:28px}
.sa-editorial-stories .sa-story button:hover .sa-read-link{text-decoration:underline}
.sa-editorial-stories .sa-featured{grid-column:1/-1;border-bottom:0;background:#f4f3ef;padding:0;margin-bottom:8px}
.sa-featured>button{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;height:100%}
.sa-featured img{height:100%;min-height:300px;aspect-ratio:auto;margin:0}
.sa-featured .sa-story-copy{padding:28px}
.sa-featured :is(h2,h3){font-size:var(--sk-type-salongavisen-feature-title)}
.sa-guide-section{background:#f4f6fa;padding:24px}
.sa-guide-section .sa-section-heading{border-top:0;padding-top:0}
.sa-guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}
.sa-guide-grid>button{min-width:0;display:flex;align-items:start;gap:14px;text-align:left;background:none;border:0;border-top:1px solid #d9dce2;padding:22px 0;color:inherit}
.sa-guide-number{font-size:var(--sk-type-salongavisen-brand);line-height:1.1;color:#82667f}
.sa-guide-grid>button>span:nth-child(2){display:grid;gap:8px;flex:1;min-width:0}
.sa-guide-grid small{font-size:var(--sk-type-salongavisen-caption);color:#5f6672}
.sa-guide-grid strong{font-size:var(--sk-type-salongavisen-shortcut-title);line-height:1.3}
.sa-guide-grid>button>span:nth-child(2)>span{font-size:var(--sk-type-salongavisen-meta);line-height:1.55;color:#5f6672}
.sa-guide-grid>button>span:last-child{color:#82667f}
.sa-latest>p,.sa-editor-note p{font-size:var(--sk-type-salongavisen-meta);line-height:1.6;color:#5f6672}
.sa-editor-note{border-top:1px solid #d9dce2;margin-top:28px;padding-top:16px}
.sa-reader:focus{outline:none}
.sa-reader h1{letter-spacing:-.035em}
.sa-reader-ingress{font-size:var(--sk-type-salongavisen-shortcut-title);line-height:1.65;color:#5f6672;margin-bottom:28px}
.sa-reader-image{margin:0 0 28px}
.sa-reader-image img{width:100%;max-height:540px;object-fit:cover}
.sa-reader-image figcaption{font-size:var(--sk-type-salongavisen-caption);color:#5f6672;line-height:1.5;margin-top:8px}
.sa-audience-note{background:#f4f6fa;border-left:3px solid #82667f;padding:16px;font-size:var(--sk-type-salongavisen-meta);line-height:1.6;margin:24px 0}
.sa-prose{font-size:var(--sk-type-salongavisen-body);line-height:1.85;max-width:68ch;margin-inline:auto;overflow-wrap:anywhere}
.sa-prose p{margin:0 0 1.35em}
.sa-prose h2{font:var(--sk-type-salongavisen-story);font-size:var(--sk-type-salongavisen-brand);line-height:1.25;letter-spacing:-.02em;margin:1.8em 0 .7em}
.sa-prose h3{font-size:var(--sk-type-salongavisen-shortcut-title);line-height:1.4;margin:1.6em 0 .6em}
.sa-prose blockquote{border-left:3px solid #82667f;margin:24px 0;padding:16px 20px;background:#f4f6fa}
.sa-prose blockquote p{margin:0}
.sa-prose :is(ul,ol){padding-left:24px;margin:0 0 24px}
.sa-prose li+li{margin-top:8px}
.sa-related{margin-top:36px;border-top:1px solid #202124;padding-top:20px}
.sa-related h2{font:var(--sk-type-salongavisen-sidebar)}
.sa-related button{display:grid;gap:8px;width:100%;padding:18px 0;border:0;border-bottom:1px solid #d9dce2;background:none;text-align:left;color:inherit;min-height:44px}
.sa-related button>span{font-size:var(--sk-type-salongavisen-shortcut-title)}
@media(max-width:1000px){.sa-featured>button{grid-template-columns:1fr}.sa-featured img{aspect-ratio:1.6;min-height:0;max-height:400px}.sa-featured .sa-story-copy{padding:24px}}
@media(max-width:720px){
 .sa-section-heading{align-items:start;flex-wrap:wrap;gap:8px}
 .sa-section-heading>span{font-size:var(--sk-type-salongavisen-caption)}
 .sa-section-heading h2{font-size:var(--sk-type-salongavisen-mobile-story)}
 .sa-section-intro{font-size:var(--sk-type-salongavisen-meta)}
 .sa-topics{gap:6px}
 .sa-topics button{padding:8px 12px;font-size:var(--sk-type-salongavisen-nav)}
 .sa-featured .sa-story-copy{padding:20px}
 .sa-editorial-stories .sa-featured :is(h2,h3){font-size:var(--sk-type-salongavisen-mobile-reader)}
 .sa-guide-section{padding:20px 16px;margin-top:32px}
 .sa-guide-grid{grid-template-columns:1fr}
 .sa-news-section+.sa-news-section{margin-top:32px}
 .sa-reader-ingress{font-size:var(--sk-type-salongavisen-body)}
 .sa-reader-image img{max-height:360px}
 .sa-prose blockquote{padding:14px 16px}
}

.sa-page>.sa-platform{justify-content:space-between;padding:12px 24px}
@media(max-width:720px){
 .sa-page>.sa-platform{padding:8px 16px}
 .sa-topics{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;max-width:100%}
 .sa-topics button{flex:0 0 auto;white-space:nowrap}
 .sa-layout--no-receipts .sa-shortcuts{display:none}
 .sa-layout--no-receipts>main{grid-row:1}
 .sa-layout--no-receipts .sa-latest{grid-row:2}
}

.sa-page>.sa-platform .sa-brand{display:flex;align-items:center;grid-column:1;grid-row:1;justify-self:start;flex:0 0 auto}
.sa-brand img{display:block;width:132px;max-width:100%;height:auto;filter:brightness(0) invert(1)}

.sa-guide-grid .sa-guide-cover{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;margin-bottom:8px}

/* Shared campaign previews: readable offer and image in one compact composition. */
.sa-campaign-detail{max-width:1200px;margin:var(--sk-space-6,24px) auto;scroll-margin-top:120px;outline:none;padding-inline:var(--sk-space-4,16px)}
.sa-campaign-detail-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.sa-campaign-detail-toolbar .sa-edition{margin:0}
.sa-campaign-preview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);overflow:hidden;border:1px solid var(--sk-color-border,#e5e5e5);border-radius:24px;background:var(--sk-color-surface,#fff);color:var(--sk-color-ink,#242424);margin-block:20px;min-width:0}
.sa-campaign-preview-copy{padding:clamp(24px,3vw,44px);display:flex;flex-direction:column;align-items:flex-start;gap:20px;min-width:0}
.sa-campaign-preview-copy p{margin:0;overflow-wrap:anywhere}
.sa-campaign-preview-kicker{font-size:var(--sk-font-size-xs,12px);color:var(--sk-color-ink-soft,#757575);letter-spacing:.06em;text-transform:uppercase}
.sa-campaign-preview-copy h2{font-family:inherit;font-size:var(--sk-type-salongavisen-hero-title);font-weight:var(--sk-font-weight-medium,500);line-height:1.1;letter-spacing:-.04em;margin:0;overflow-wrap:anywhere}
.sa-campaign-preview-offer{font-size:var(--sk-font-size-xl,22px);line-height:1.35;font-weight:var(--sk-font-weight-medium,500)}
.sa-campaign-preview-body,.sa-campaign-preview-deadline{font-size:var(--sk-font-size-md,16px);line-height:1.65;max-width:46ch}
.sa-campaign-preview-action{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:4px}
.sa-campaign-preview-action .sk-button:disabled{opacity:1;background:var(--sk-color-ink,#242424);color:var(--sk-color-surface,#fff);border-color:transparent;cursor:default}
.sa-campaign-preview-action small,.sa-campaign-preview footer{font-size:var(--sk-font-size-xs,12px);line-height:1.55;color:var(--sk-color-ink-soft,#757575)}
.sa-campaign-preview footer{border-top:1px solid var(--sk-color-border,#e5e5e5);padding-top:18px;margin-top:auto}
.sa-campaign-preview-image{margin:0;min-width:0;background:var(--sk-color-surface-warm,#f2f1ef)}
.sa-campaign-preview-image img{display:block;width:100%;height:100%;min-height:460px;object-fit:cover;object-position:70% center}
@media(max-width:900px){.sa-campaign-preview{grid-template-columns:minmax(0,1fr)}.sa-campaign-preview-image{grid-row:1}.sa-campaign-preview-image img{height:auto;min-height:0;aspect-ratio:16/9;object-position:center}.sa-campaign-preview-copy{padding:24px;gap:18px}.sa-campaign-preview-copy h2{font-size:var(--sk-type-salongavisen-hero-title-mobile)}.sa-campaign-detail-toolbar{align-items:flex-start;gap:12px}.sa-campaign-detail{scroll-margin-top:100px}}


/* Plattform > Kundeoversikt og kundedetalj (frontend/src/platform-admin).
   Ett kortmønster for alle kort i detaljen: samme radius, kant, polstring, overskriftsnivå og avstand.
   All typografi går via tokens (typography-contract.test.ts). */

/* ---- Kundeoversikten ---------------------------------------------------- */
.sk-pa-page { max-width: 80rem; }
.sk-pa-page .sk-data-table td .sk-hint { font-size: var(--sk-font-size-xs); color: var(--sk-color-ink-soft); }
.sk-pa-page .sk-data-table td strong { font-size: var(--sk-type-table); }
.sk-pa-page .sk-data-table tbody tr.is-active td:first-child strong { color: var(--sk-color-primary); }

/* Statusmerker skal kunne leses på et blikk: grønt = ok, gult = venter/under arbeid, rødt = stengt, grått = av. */
:is(.sk-pa-page, .sk-pa-drawer) .sk-status-badge:is(.is-suspendert, .is-avsluttet) { background: var(--sk-color-danger-soft); color: var(--sk-color-danger); }
:is(.sk-pa-page, .sk-pa-drawer) .sk-status-badge:is(.is-under-etablering, .is-invitert) { background: var(--sk-color-warning-soft); color: var(--sk-color-warning); }
:is(.sk-pa-page, .sk-pa-drawer) .sk-status-badge:is(.is-publisert) { background: var(--sk-color-success-soft); color: var(--sk-color-success); }
:is(.sk-pa-page, .sk-pa-drawer) .sk-status-badge:is(.is-skjult, .is-ingen-aktiv, .is-ikke-aktiv) { background: var(--sk-color-surface-hover); color: var(--sk-color-ink-soft); }

/* ---- Kundedetaljen ------------------------------------------------------ */
.sk-pa-drawer .sk-drawer__body { gap: var(--sk-space-5); padding-top: 0; background: var(--sk-color-canvas); }

/* Festet kundehode: følger med når detaljen rulles. */
.sk-pa-head {
  position: sticky; top: 0; z-index: 2;
  margin-inline: calc(var(--sk-space-6) * -1);
  padding: var(--sk-space-3) var(--sk-space-6);
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-2) var(--sk-space-4);
  background: var(--sk-color-surface); border-bottom: 1px solid var(--sk-color-border);
  color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm);
}
.sk-pa-head strong { color: var(--sk-color-ink); }

.sk-pa-card { padding: var(--sk-card-inset); display: grid; align-content: start; gap: var(--sk-space-4); }
.sk-pa-card > * { margin: 0; min-width: 0; }
.sk-pa-card > .sk-card-header,
:root[data-staff-interface] .sk-app-shell .sk-page .sk-pa-card > .sk-card-header { min-height: 0; padding: 0; align-items: center; }
.sk-pa-card > .sk-card-header h2 { margin: 0; font-size: var(--sk-type-section-title); }
.sk-pa-card .sk-hint { max-width: 62ch; color: var(--sk-color-ink-soft); }
.sk-pa-count { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }

/* Én primærhandling per kort, justert til venstre med en rolig sekundærlenke ved siden av. */
.sk-pa-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-3) var(--sk-space-5); }
.sk-pa-link { display: inline-flex; align-items: center; gap: var(--sk-space-1); min-height: 2.75rem; color: var(--sk-color-primary); font-weight: var(--sk-font-weight-strong); }

.sk-pa-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: var(--sk-space-4); }
.sk-pa-facts > div { display: grid; gap: var(--sk-space-1); }
.sk-pa-facts dt { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }
.sk-pa-facts dd { margin: 0; font-weight: var(--sk-font-weight-strong); }

/* Skjema på rutenett: to kolonner når det er plass, ett felt per rad ellers. */
.sk-pa-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: var(--sk-space-4); align-items: start; }
.sk-pa-form-grid > .sk-field { margin: 0; min-width: 0; }
.sk-pa-form-grid > .sk-field--wide { grid-column: 1 / -1; }
.sk-pa-card > .sk-field textarea { min-height: 4.5rem; }
.sk-pa-empty { padding: var(--sk-space-3) var(--sk-space-4); border: 1px dashed var(--sk-color-border); border-radius: var(--sk-radius-md); color: var(--sk-color-ink-soft); }
.sk-pa-promos { display: grid; gap: var(--sk-space-2); margin: 0; padding: 0; list-style: none; }
.sk-pa-promos > li { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-2) var(--sk-space-3); padding: var(--sk-space-3); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); }

.sk-pa-switch { padding-block: var(--sk-space-3); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); padding-inline: var(--sk-space-4); }

/* Faresone: tydelig skilt fra resten, med rød kant og én rad per destruktiv handling. */
.sk-card.sk-card--danger { border-color: var(--sk-color-danger); }
.sk-danger-list { display: grid; border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); }
.sk-danger-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sk-space-3) var(--sk-space-5); padding: var(--sk-space-4); }
.sk-danger-row + .sk-danger-row { border-top: 1px solid var(--sk-color-border-soft); }
.sk-danger-row > p { display: grid; gap: var(--sk-space-1); margin: 0; flex: 1 1 16rem; min-width: 0; }
.sk-danger-row small { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-sm); }
.sk-danger-row > .sk-button { flex: 0 0 auto; }
.sk-button.sk-button--danger-outline:not(:disabled) { background: transparent; border-color: var(--sk-color-danger); color: var(--sk-color-danger); }
.sk-button.sk-button--danger-outline:hover:not(:disabled) { background: var(--sk-color-danger-soft); }

/* Modulene som skannbar liste: navn | pris | tilstand | bryter, prisspalten justert på tvers av rader. */
.sk-module-list { display: grid; border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); overflow: hidden; }
.sk-module-list ul { margin: 0; padding: 0; list-style: none; }
.sk-module-list__head, .sk-module-row {
  display: grid; align-items: center; column-gap: var(--sk-space-4);
  grid-template-columns: minmax(0, 1fr) 7.5rem 6rem 2.75rem;
  padding-inline: var(--sk-space-4);
}
.sk-module-list__head { min-height: 2.5rem; background: var(--sk-color-surface-subtle); color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); border-bottom: 1px solid var(--sk-color-border-soft); }
.sk-module-list__head > :nth-child(2), .sk-module-row__price { text-align: right; font-variant-numeric: tabular-nums; }
.sk-module-list__head > :nth-child(3) { text-align: center; }
.sk-module-list li + li { border-top: 1px solid var(--sk-color-border-soft); }
.sk-module-row { min-height: 3.5rem; padding-block: var(--sk-space-2); cursor: pointer; }
.sk-module-row:hover { background: var(--sk-color-surface-hover); }
.sk-module-row__name { display: grid; min-width: 0; gap: var(--sk-space-1); }
.sk-module-row__name small { color: var(--sk-color-ink-soft); font-size: var(--sk-font-size-xs); }
.sk-module-row__price { font-size: var(--sk-font-size-sm); }
.sk-module-row[data-state="off"] .sk-module-row__price, .sk-module-row[data-state="off"] strong { color: var(--sk-color-ink-soft); }
.sk-module-row > input { width: 2.75rem; height: 1.5rem; justify-self: end; accent-color: var(--sk-color-primary); }
.sk-pa-chip { justify-self: center; min-height: 1.65rem; padding: .15rem .65rem; border-radius: var(--sk-radius-pill); display: inline-flex; align-items: center; font-size: var(--sk-font-size-xs); font-weight: var(--sk-font-weight-strong); }
.sk-pa-chip.is-on { background: var(--sk-color-success-soft); color: var(--sk-color-success); }
.sk-pa-chip.is-base { background: var(--sk-color-info-soft); color: var(--sk-color-info); }
.sk-pa-chip.is-off { background: var(--sk-color-surface-hover); color: var(--sk-color-ink-soft); }

.sk-module-row[data-state="base"] .sk-module-row__price { visibility: hidden; }

/* Smal flate (iPad stående og mindre): pris og tilstand flyttes under navnet i stedet for å presses. */
@media (max-width: 52rem) {
  .sk-module-list__head { display: none; }
  .sk-module-row { grid-template-columns: minmax(0, 1fr) auto 2.75rem; grid-template-areas: "name chip toggle" "price price price"; row-gap: 0; }
  .sk-module-row__name { grid-area: name; }
  .sk-module-row .sk-pa-chip { grid-area: chip; }
  .sk-module-row > input { grid-area: toggle; }
  .sk-module-row__price { grid-area: price; text-align: left; }
  .sk-module-row[data-state="base"] .sk-module-row__price { display: none; }
}

/* Trykkflater på touch: minst 44 px. Personalgrensesnittet setter høyde 36 px på alle knapper i .sk-page
   (34-staff-interface.css), så reglene her må ha høyere spesifisitet. */
:root[data-staff-interface][data-touch="1"] .sk-app-shell .sk-page :is(.sk-pa-drawer, .sk-pa-page) :is(.sk-button, .sk-pa-link, .sk-icon-button) { height: auto; min-height: 2.75rem; min-width: 2.75rem; }
html[data-touch="1"] .sk-pa-drawer .sk-drawer__header button { min-height: 2.75rem; min-width: 2.75rem; }


/*
 * Felles enhetslag for alle innganger (terminal, kundeskjerm, appen, portalen).
 * Nøkkelen er attributtene fra src/screen/screenClass.ts på <html>:
 *   data-device   skjermklassen (alle flater)
 *   data-touch    1 når primærpekeren er en finger
 *   data-surface  terminal | display | app
 * Importeres sist og skriver bare tillegg: ingen eksisterende regel byttes ut.
 * `:where()` gir 0 i spesifisitet, så tidligere regler (f.eks. `touch-action: none`
 * på slider og kalender) vinner alltid.
 */
:root {
  --sk-touch-min: 44px;
  --sk-safe-top: env(safe-area-inset-top, 0px);
  --sk-safe-right: env(safe-area-inset-right, 0px);
  --sk-safe-bottom: env(safe-area-inset-bottom, 0px);
  --sk-safe-left: env(safe-area-inset-left, 0px);
}

html[data-touch="0"] {
  --sk-touch-min: 36px;
}

/* To raske trykk på samme flate (PIN: «11», «00») er dobbelttrykk-zoom i Safari.
   Zoomen er dokument-global, og fixed lag treffer da ikke der fingeren er. */
:where(html[data-touch="1"]) :where(button, a, [role="button"], label, summary, input, select, textarea) {
  touch-action: manipulation;
}

/* iOS zoomer inn når et felt under 16 px får fokus og zoomer ikke ut igjen.
   Denne må slå eksisterende `font-size` på felt (`.sk-field input`, personalgrensesnittet m.fl.)
   og bruker derfor !important, bare på touch. Verdien er et token (typografikontrakten). */
html[data-touch="1"] :is(input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"], [type="color"]), select, textarea) {
  font-size: var(--sk-type-touch-field-min) !important;
}

/* Terminalen eier hele skjermen. Uten dette kan dokumentet rulle med nettleserens
   verktøylinje, og fixed lag henger etter. */
html[data-surface="terminal"] body,
html[data-surface="display"] body {
  min-height: 100dvh;
  overscroll-behavior: none;
}

/* Terminalens og kundeskjermens minste tekst skal ikke bli under 11 px. På kasse-PC er
   roten 12,5 px, så 0,75 rem ga 9,4 px i topplinjen, menyetikettene og hjelpetekstene.
   Overstyrer bare tokenet innenfor disse flatene; resten av appen er uendret. */
.sk-terminal-workspace,
.sk-terminal-lock,
.sk-terminal-enrollment,
.sk-customer-display {
  --sk-font-size-xs: max(11px, 0.75rem);
}

/* Rader som er hele knappen (venteliste, salgsliste i Oppgjør) skal ha fingermål på touch.
   Reglene deres setter `min-height: 0` med lav spesifisitet, så dette legges som tillegg. */
html[data-touch="1"] :where(.sk-terminal-waitlist-list > li) > button,
html[data-touch="1"] .sk-terminal-cart-lines > li > button[aria-expanded] {
  min-height: var(--sk-terminal-touch-min, 44px);
}
/* Terminalens mellomstore tekst: samme gulv som den minste, ellers ble 0,875 rem 10,9 px på
   kasse-PC (rot 12,5 px). */
.sk-terminal-workspace,
.sk-terminal-lock,
.sk-terminal-enrollment,
.sk-customer-display {
  --sk-font-size-sm: max(11px, 0.875rem);
}

/* N-02: kundeavisen på kundeskjermen i hvile. Ren tekst, ingen interaksjon. */
.sk-customer-newspaper { margin: var(--sk-space-4, 16px) auto 0; max-width: min(40rem, 100%); padding: var(--sk-space-4, 16px); border: 1px solid var(--sk-color-line, #d9d9d9); border-radius: 12px; background: var(--sk-color-surface, #fff); color: var(--sk-color-ink, #171717); overflow-wrap: anywhere; }
.sk-customer-newspaper h2 { margin: 0 0 var(--sk-space-2, 8px); font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); letter-spacing: 0.04em; text-transform: uppercase; color: var(--sk-color-ink-soft, #686868); }
.sk-customer-newspaper article + article { margin-top: var(--sk-space-3, 12px); }
.sk-customer-newspaper h3 { margin: 0; font-size: var(--sk-font-size-xl); line-height: 1.3; }
.sk-customer-newspaper p { margin: var(--sk-space-1, 4px) 0 0; font-size: var(--sk-font-size-lg); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }


/* Avslutt flere timer (leder). Typografi arves fra tokens/primitiver. */
.sk-bulk-completion { display: grid; gap: var(--sk-space-4); min-width: 0; }
.sk-bulk-completion p { margin: 0; }
.sk-bulk-completion__status { display: grid; gap: var(--sk-space-2); }
.sk-bulk-completion__status:empty { display: none; }
.sk-bulk-completion__results { display: grid; gap: var(--sk-space-2); margin: 0; padding: 0; list-style: none; }
.sk-bulk-completion__results > li { padding: var(--sk-space-2) var(--sk-space-3); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-sm); }
.sk-bulk-completion__results > li[data-outcome="failed"] { border-color: var(--sk-color-danger); color: var(--sk-color-danger); }
.sk-bulk-completion__confirm { display: grid; gap: var(--sk-space-3); }
.sk-bulk-completion__summary { font-weight: var(--sk-font-weight-strong); }
.sk-bulk-completion__check, .sk-bulk-completion__capture { display: inline-flex; align-items: center; gap: var(--sk-space-2); min-height: 2.75rem; min-width: 2.75rem; cursor: pointer; }
.sk-bulk-completion input[type="checkbox"] { inline-size: 1.25rem; block-size: 1.25rem; }
.sk-bulk-completion .sk-button, .sk-followup-stack .sk-bulk-completion-open { min-height: 2.75rem; }
.sk-bulk-completion__note { color: var(--sk-color-ink-soft); }
/* Footer og lukkeknapp ligger utenfor .sk-bulk-completion; hele dialogen får 44 px trykkflater. */
.sk-modal:has(.sk-bulk-completion) :is(.sk-button, .sk-icon-button) { min-height: 2.75rem; min-width: 2.75rem; }
/* Personalgrensesnittet (34-staff-interface.css) setter min-height:36px på knapper i modalkroppen; 44 px må vinne på touch. */
:root .sk-modal:has(.sk-bulk-completion) .sk-modal__body .sk-button { min-height: 2.75rem; }
/* Sju kolonner trenger bredde; smale skjermer ruller tabellen i sin egen region. */
.sk-modal:has(.sk-bulk-completion) { width: min(100%, 60rem); }
.sk-bulk-completion__results > li > :is(.sk-form-error, .sk-form-warning) { margin-top: var(--sk-space-2); }

/* Oppfølgingsvisninger under «Avslutt flere …» */
.sk-bulk-followup { display: grid; gap: var(--sk-space-3); min-width: 0; padding-top: var(--sk-space-3); border-top: 1px solid var(--sk-color-border-soft); }
.sk-bulk-followup > h3 { margin: 0; display: flex; align-items: center; gap: var(--sk-space-2); }
.sk-bulk-followup__body { display: grid; gap: var(--sk-space-3); }
.sk-bulk-followup__body p { margin: 0; }
.sk-bulk-followup__list { display: grid; gap: var(--sk-space-3); margin: 0; padding: 0; list-style: none; }
.sk-bulk-followup__item { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sk-space-3); padding: var(--sk-space-3); border: 1px solid var(--sk-color-border-soft); border-radius: var(--sk-radius-md); }
.sk-bulk-followup__item > div:first-child { display: grid; gap: var(--sk-space-1); min-width: 0; flex: 1 1 16rem; }
.sk-bulk-followup .sk-button, .sk-bulk-followup__item .sk-button { min-height: 2.75rem; }
.sk-bulk-followup__note { display: grid; gap: var(--sk-space-2); }
.sk-bulk-followup__note textarea { inline-size: 100%; min-block-size: 6rem; padding: var(--sk-space-3); border: 1px solid var(--sk-color-border-interactive); border-radius: var(--sk-radius-sm); font: inherit; font-size: var(--sk-type-input); }
.sk-bulk-badge { display: inline-flex; align-items: center; justify-content: center; min-inline-size: 1.5rem; padding: 0 var(--sk-space-2); border-radius: var(--sk-radius-pill); background: var(--sk-color-danger); color: white; font-size: var(--sk-font-size-sm); font-weight: var(--sk-font-weight-strong); }
/* Personalgrensesnittet setter lavere knapper i app-skallet; 44 px må vinne på touch. */
:root .sk-app-shell .sk-bulk-followup .sk-button.sk-button { min-height: 2.75rem; }


/* A single, stationary light lives on the navbar's lower edge. No layout shifts,
 * travelling colour field, or artificial delay before usable content appears. */
.sk-page-loading { position:relative; isolation:isolate; }
.sk-activity-light {
  position:absolute; inset:0 0 auto; height:24px;
  border-radius:inherit; overflow:hidden; pointer-events:none; z-index:1;
  opacity:0;
  animation:sk-activity-reveal var(--sk-motion-activity-fade) var(--sk-ease-standard) var(--sk-motion-activity-grace) both;
}
.sk-activity-light > i {
  position:absolute; inset:0; background:var(--sk-gradient-loading);
  mask-image:linear-gradient(#000,transparent);
  opacity:.24;
  animation:sk-activity-breathe var(--sk-motion-activity-breathe) ease-in-out infinite alternate;
}
.sk-activity-light::after {
  content:""; position:absolute; inset:0 0 auto; height:1px;
  background:var(--sk-gradient-loading); opacity:.8;
}
.sk-activity-light[data-paused] > i { animation-play-state:paused; }
/* The fixed navbar owns this element, so scrolling content cannot move it.
 * :has follows actual loading states without a timer, observer or extra fetch. */
.sk-global-topbar > .sk-shell-activity {
  inset:calc(100% + 1px) 0 auto; border-radius:0;
  animation:none; opacity:0;
  transition:opacity var(--sk-motion-activity-fade) var(--sk-ease-standard);
}
.sk-shell-activity > i { animation-play-state:paused; }
.sk-app-shell:has(.sk-main :is(.sk-page-loading[aria-busy="true"],.sk-dashboard-loading:not(.is-error))) .sk-global-topbar > .sk-shell-activity {
  opacity:1; transition-delay:var(--sk-motion-activity-grace);
}
.sk-app-shell:has(.sk-main :is(.sk-page-loading[aria-busy="true"],.sk-dashboard-loading:not(.is-error))) .sk-shell-activity:not([data-paused]) > i {
  animation-play-state:running;
}
/* Also honour the grace period on the shell's very first paint. */
@starting-style {
  .sk-app-shell:has(.sk-main :is(.sk-page-loading[aria-busy="true"],.sk-dashboard-loading:not(.is-error))) .sk-global-topbar > .sk-shell-activity { opacity:0; }
}
/* Nested page/card skeletons share the same header light. Drawers outside the
 * main workspace keep a local indicator, and busy buttons stay local. */
.sk-app-shell .sk-main .sk-page-loading > .sk-activity-light { display:none; }
.sk-button[aria-busy="true"] { position:relative; overflow:hidden; }
.sk-button > .sk-activity-light { height:100%; }
.sk-button > .sk-activity-light > i { mask-image:none; opacity:.12; animation:none; }
.sk-button > .sk-activity-light::after { inset:auto 0 0; }
/* Scope to navigation choices. Appointment/status colours keep their meaning. */
:root[data-staff-interface] .sk-app-shell .sk-page :is(.sk-tabs,.sk-copilot__tabs)>button:is(.is-active,[aria-selected="true"]),
:root[data-staff-interface] .sk-app-shell .sk-page .sk-filter-chips>button.is-active:not(.sk-button) {
  background:linear-gradient(var(--sk-color-activity-selected),var(--sk-color-activity-selected)) padding-box,var(--sk-gradient-activity) border-box!important;
  border-color:transparent!important; color:var(--sk-color-ink)!important;
  box-shadow:inset 0 -2px var(--sk-color-activity-edge)!important;
}
@media (max-width:44rem) {
  .sk-global-topbar > .sk-shell-activity { height:20px; }
}
@media (prefers-reduced-motion:reduce) {
  .sk-activity-light { animation:none; }
  .sk-activity-light:not(.sk-shell-activity) { opacity:.45; }
  .sk-shell-activity { transition:none!important; }
  .sk-activity-light > i { animation:none; opacity:.28; }
}
@media (forced-colors:active) {
  .sk-activity-light { display:none; }
  :root[data-staff-interface] .sk-app-shell .sk-page :is(.sk-tabs,.sk-copilot__tabs)>button:is(.is-active,[aria-selected="true"]),
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-filter-chips>button.is-active:not(.sk-button) {
    border-color:Highlight!important; outline:1px solid Highlight; box-shadow:none!important;
  }
}



/* Salon-scoped newspaper administration reuses portal controls and surfaces. */
.sa-admin{display:grid;gap:var(--sk-space-5);min-width:0}
.sa-admin-heading,.sa-admin-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sk-space-5);flex-wrap:wrap}
.sa-admin-heading h1{margin:0;font-size:var(--sk-type-page-title)}
.sa-admin-heading p,.sa-admin-toolbar p{max-width:65ch;color:var(--sk-color-ink-soft)}
.sa-admin-eyebrow{font-size:var(--sk-font-size-sm);margin:0 0 var(--sk-space-2)}
.sa-admin-tabs,.sa-admin-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sk-space-3)}
.sa-admin-tabs [aria-pressed=true]{background:var(--sk-color-activity-selected);box-shadow:inset 0 0 0 1px var(--sk-color-activity-edge)}
.sa-admin-actions .sk-field{min-width:180px}
.sa-admin-notice:empty{display:none}
.sa-admin-workspace{display:grid;grid-template-columns:minmax(240px,1fr) minmax(0,2.2fr);gap:var(--sk-space-5);align-items:start}
.sa-admin-library{display:grid;gap:var(--sk-space-3)}
.sa-admin-library>label,.sa-admin-library>div{display:flex;align-items:flex-start;gap:var(--sk-space-3);padding:var(--sk-space-3) 0;border-bottom:1px solid var(--sk-color-border);min-width:0}
.sa-admin-library input[type=checkbox]{width:20px;height:20px;flex:none;margin-top:3px;accent-color:var(--sk-color-ink)}
.sa-admin-library strong,.sa-admin-library small{display:block;overflow-wrap:anywhere}
.sa-admin-library small{margin-top:4px;color:var(--sk-color-ink-soft)}
.sa-admin-preview{padding:var(--sk-space-5);border:1px solid var(--sk-color-border);border-radius:var(--sk-radius-lg);background:var(--sk-color-surface);min-width:0}
.sa-admin-preview-heading{display:flex;gap:var(--sk-space-3);padding-bottom:var(--sk-space-4);border-bottom:1px solid var(--sk-color-border)}
.sa-admin-preview-heading span{display:block;font-size:var(--sk-font-size-sm);color:var(--sk-color-ink-soft)}
.sa-admin-preview>h2{font-family:var(--sk-font-heading);font-weight:var(--sk-font-weight-body);font-size:var(--sk-type-salongavisen-mobile-reader);letter-spacing:-.04em;margin:var(--sk-space-5) 0}
.sa-admin-feed{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sk-space-4)}
.sa-admin-feed--editorial>.sa-admin-feed-card:first-child{grid-column:1/-1}
.sa-admin-feed-card{border:1px solid var(--sk-color-border);border-radius:var(--sk-card-radius);overflow:hidden;min-width:0;display:flex;flex-direction:column;background:var(--sk-color-surface)}
.sa-admin-feed-card>img{width:100%;aspect-ratio:16/9;object-fit:cover}
.sa-admin-feed-art{min-height:96px;display:grid;place-items:center;background:var(--sk-color-surface-subtle);color:var(--sk-color-ink-soft)}
.sa-admin-feed-copy{padding:var(--sk-space-4);flex:1;overflow-wrap:anywhere}
.sa-admin-feed-copy small{color:var(--sk-color-ink-soft)}
.sa-admin-feed-copy h3{font-family:var(--sk-font-heading);font-weight:var(--sk-font-weight-body);line-height:1.2;font-size:var(--sk-type-salongavisen-brand);letter-spacing:-.025em;margin:12px 0}
.sa-admin-feed-copy p{line-height:1.6;margin-bottom:0}
.sa-admin-feed-controls{border-top:1px solid var(--sk-color-border);padding:var(--sk-space-3);display:flex;align-items:center;flex-wrap:wrap;gap:var(--sk-space-2)}
.sa-admin-feed-controls>svg{cursor:grab;color:var(--sk-color-ink-soft)}
.sa-admin-feed-controls .sk-button{padding-inline:12px}
.sa-admin-posts>article{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sk-space-3);padding:var(--sk-space-4) 0;border-bottom:1px solid var(--sk-color-border)}
.sa-admin-posts>article>div{flex:1;min-width:180px}
.sa-admin-posts p{color:var(--sk-color-ink-soft);font-size:var(--sk-font-size-sm)}
.sa-admin details>summary{cursor:pointer;min-height:44px;padding:var(--sk-space-3);font-weight:var(--sk-font-weight-strong)}
.sa-admin .sk-staff-content form{display:grid;gap:var(--sk-space-4)}
.sa-admin :is(input:not([type=checkbox]),select,textarea){box-sizing:border-box;width:100%;min-height:44px;border:1px solid var(--sk-color-border);border-radius:var(--sk-radius-md);background:var(--sk-color-surface);color:var(--sk-color-ink);font:inherit;padding:10px 12px}
.sa-admin .sk-staff-content label{display:grid;gap:8px}
.sa-admin-thread{margin-top:var(--sk-space-5)}
.sa-admin-comment-hidden{opacity:.7;border-inline-start:3px solid var(--sk-color-border);padding-inline-start:var(--sk-space-3)}
.sa-stories--grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.sa-stories--grid>.sa-story{grid-column:auto}
.sa-terminal-paper-nav{display:flex;gap:12px;padding:16px 24px;border-bottom:1px solid #d9dce2}
.sa-terminal-paper-nav button{padding:10px 16px;min-height:44px;border:1px solid currentColor;border-radius:24px}
.sa-terminal-paper-nav [aria-pressed=true]{background:#82667f;color:white;border-color:#82667f}
.sa-terminal-forum{padding:24px;max-width:850px;margin:auto}
.sa-terminal-forum form{display:grid;gap:16px;margin:24px 0}
.sa-terminal-forum label{display:grid;gap:8px}
.sa-terminal-forum :is(input,select,textarea){box-sizing:border-box;width:100%;font:inherit;min-height:48px;padding:12px;border:1px solid #bcc2cc;border-radius:12px;background:white;color:#202126}
.sa-terminal-forum button{min-height:44px;border:1px solid #bcc2cc;border-radius:24px;padding:10px 20px}
.sa-terminal-forum :is(p,h3){overflow-wrap:anywhere}
@media(max-width:900px){.sa-admin-workspace{grid-template-columns:minmax(0,1fr)}.sa-admin-library{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:540px){.sa-admin-feed,.sa-admin-library,.sa-stories--grid{grid-template-columns:minmax(0,1fr)}.sa-admin-preview{padding:var(--sk-space-4)}.sa-admin-actions{align-items:stretch}.sa-admin-actions>*{flex:1}.sa-admin-tabs .sk-button{flex:1}.sa-admin-feed-controls>svg{display:none}}

.sa-admin .sk-staff-content label:has(input[type=checkbox]){display:flex;align-items:center;gap:var(--sk-space-3)}
@media(max-width:540px){.sa-admin :is(input:not([type=checkbox]),select,textarea){font-size:var(--sk-type-touch-field-min)}}


/* Mobile workspace owns touch density. Desktop's compact controls must not win
 * through a more specific selector. Business logic and desktop geometry stay put. */
.sk-period-label-short { display:none; }
.sk-calendar-secondary-tools,.sk-calendar-tools-items { display:contents; }
:root[data-staff-interface] .sk-calendar-tools-toggle { display:none; }
:root[data-staff-interface] .hybrid-setup { display:none; }
@media (max-width:62rem) {
  :root[data-staff-interface] .sk-app-shell { --sk-control-height:44px; --sk-control-height-lg:44px; }
  :root[data-staff-interface] .sk-app-shell .sk-page :is(.sk-button,.sk-toolbar-select,.sk-toolbar-date) { min-height:44px; height:auto; font-size:var(--sk-font-size-sm); line-height:1.4; padding:10px 16px; white-space:normal; }
  :root[data-staff-interface] .nora-voice-shortcut { width:44px; height:44px; min-width:44px; min-height:44px; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-toolbar { display:flex; flex-direction:row; flex-wrap:nowrap; align-items:center; gap:8px; margin:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-toolbar > .sk-pill-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); flex:1; min-width:0; gap:4px; overflow:visible; margin:0; padding:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-toolbar .sk-pill-tabs > button { min-width:0; min-height:44px; padding:8px 4px; font-size:var(--sk-font-size-sm); white-space:nowrap; }
  :root[data-staff-interface] .sk-dashboard-toolbar .sk-period-label-long,
  :root[data-staff-interface] .sk-dashboard-refresh-label { display:none; }
  :root[data-staff-interface] .sk-period-label-short { display:inline; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-toolbar > .sk-button { width:44px; min-width:44px; flex:0 0 44px; padding:10px; }
  :root[data-staff-interface] .sk-app-shell .sk-global-topbar .sk-wordmark { min-height:44px; display:flex; align-items:center; }
  :root[data-staff-interface] .hybrid-workspace-selector { min-width:0; }
  :root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__trigger { min-height:44px; }
  :root[data-staff-interface] .hybrid-ecosystem .sk-icon-button,
  :root[data-staff-interface] .sk-app-shell .sk-profile-button { width:44px; height:44px; min-width:44px; min-height:44px; flex-shrink:0; }
  :root[data-staff-interface] .sk-topbar-actions > .sk-setup-button { display:none; }
  :root[data-staff-interface] .hybrid-mobile-tools { display:block; position:relative; margin-left:auto; }
  :root[data-staff-interface] .hybrid-mobile-tools > summary { display:grid; place-items:center; list-style:none; cursor:pointer; width:44px; height:44px; border:1px solid var(--sk-color-border); border-radius:50%; color:var(--sk-color-ink-soft); }
  :root[data-staff-interface] .hybrid-mobile-tools > summary::-webkit-details-marker { display:none; }
  :root[data-staff-interface] .hybrid-mobile-tools::details-content { content-visibility:hidden; display:block; }
  :root[data-staff-interface] .hybrid-mobile-tools[open]::details-content { content-visibility:visible; }
  :root[data-staff-interface] .hybrid-mobile-tools > div { display:none!important; }
  :root[data-staff-interface] .hybrid-mobile-tools[open] > div { display:flex!important; position:absolute; right:0; top:52px; width:220px; flex-direction:column; padding:8px; gap:4px; border:1px solid var(--sk-color-border); border-radius:18px; background:var(--sk-color-surface); box-shadow:var(--sk-shadow-popover); z-index:100; }
  :root[data-staff-interface] .hybrid-mobile-tools[open] .sk-icon-button { display:flex!important; flex-direction:row; justify-content:flex-start; gap:12px; padding:10px 12px; width:100%; min-height:46px; }
  :root[data-staff-interface] .hybrid-mobile-tools[open] .sk-icon-button::after { display:block; font-size:var(--sk-font-size-sm); color:var(--sk-color-ink); }
  :root[data-staff-interface] .hybrid-mobile-tools[open] .hybrid-setup::after { content:attr(aria-label); }
  :root[data-staff-interface] .sk-dashboard-campaign { grid-template-columns:1fr; border-radius:22px; }
  :root[data-staff-interface] .sk-dashboard-campaign-image { grid-row:1; min-height:190px; }
  :root[data-staff-interface] .sk-dashboard-campaign-image figure { min-height:190px; }
  :root[data-staff-interface] .sk-dashboard-campaign-image figure img { max-height:230px!important; }
  :root[data-staff-interface] .sk-dashboard-campaign h2 { font-size:var(--sk-font-size-2xl); }
  :root[data-staff-interface] .sk-app-shell .sk-main,
  :root[data-staff-interface] .sk-app-shell .sk-main.has-secondary-nav { min-width:0; }
}
@media (max-width:44rem) {
  :root[data-staff-interface] :is(.sk-drawer,.sk-modal) .sk-field { min-width:0; }
  :root[data-staff-interface] :is(.sk-drawer,.sk-modal) .sk-field :is(input:not([type=checkbox]):not([type=radio]),select,textarea) { min-width:0; max-width:100%; width:100%; }
  :root[data-staff-interface] .sk-calendar-page { min-height:0; height:calc(100dvh - var(--sk-topbar-height) - 5.25rem - env(safe-area-inset-bottom)); display:flex; flex-direction:column; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar { flex:0 0 auto; }
  :root[data-staff-interface] .sk-calendar-workspace,
  :root[data-staff-interface] .sk-calendar-page .sk-month-view { flex:1 1 auto; min-height:0; height:auto; overscroll-behavior:contain; }
  :root[data-staff-interface] .sk-calendar-resource-header,
  :root[data-staff-interface] .sk-calendar-grid { min-width:calc(4.5rem + var(--sk-calendar-columns) * var(--sk-calendar-column-min,12rem)); }
  :root[data-staff-interface] .sk-calendar-resource-header { height:72px; }
  :root[data-staff-interface] .sk-resource-heading__trigger { min-width:0; justify-content:flex-start; gap:8px; padding:12px; }
  :root[data-staff-interface] .sk-resource-heading__trigger strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  :root[data-staff-interface] .sk-resource-heading__trigger .sk-resource-avatar { width:40px; height:40px; min-width:40px; }
  :root[data-staff-interface] .sk-app-shell { --sk-control-height:44px; --sk-control-height-lg:44px; }
  :root[data-staff-interface] .sk-app-shell .sk-page { padding:var(--sk-page-inset-block) var(--sk-page-inset-inline) var(--sk-page-inset-bottom); gap:16px; }
  :root[data-staff-interface] .sk-app-shell .sk-page :is(.sk-button,.sk-toolbar-select,.sk-toolbar-date),
  :root[data-staff-interface] :is(.sk-drawer,.sk-modal) .sk-button { min-height:44px; height:auto; font-size:var(--sk-font-size-sm); line-height:1.4; padding:10px 16px; white-space:normal; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-icon-button { min-width:44px; min-height:44px; width:44px; height:44px; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-search-field { min-height:44px; height:auto; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-search-field input { min-height:42px; font-size:var(--sk-type-touch-field-min); }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-button svg { width:19px; height:19px; flex-shrink:0; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar { overflow:visible; padding:10px 12px; gap:8px; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar__group { width:100%; min-width:0; flex-wrap:wrap; gap:6px; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar :is(.sk-button,.sk-calendar-team-button,.sk-calendar-date-button,.sk-toolbar-select) { min-height:44px; height:auto; font-size:var(--sk-font-size-sm); white-space:nowrap; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-icon-button { width:44px; min-width:44px; height:44px; min-height:44px; flex-shrink:0; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar__group:first-child > .sk-button { flex:0 0 auto; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-segmented { flex:1; min-width:0; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-segmented > .sk-add-menu { flex:1; min-width:0; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-calendar-date-button { width:100%; min-width:0; padding-inline:6px; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-team-button { flex:1 0 calc(100% - 50px); justify-content:flex-start; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-popover { position:fixed; min-width:0; left:12px; right:12px; top:calc(var(--sk-topbar-height) + 8px); width:auto; max-width:none; max-height:calc(100dvh - var(--sk-topbar-height) - 108px); overflow-y:auto; overscroll-behavior:contain; }
  :root[data-staff-interface] .sk-calendar-secondary-tools { display:block; position:relative; }
  :root[data-staff-interface] .sk-calendar-secondary-tools .sk-calendar-tools-toggle { display:flex; }
  :root[data-staff-interface] .sk-calendar-tools-items { display:none; }
  :root[data-staff-interface] .sk-calendar-secondary-tools.is-open .sk-calendar-tools-items { display:flex; position:absolute; top:50px; left:0; width:260px; max-width:calc(100vw - 24px); flex-direction:column; gap:4px; padding:8px; background:var(--sk-color-surface); border:1px solid var(--sk-color-border); border-radius:16px; box-shadow:var(--sk-shadow-popover); z-index:50; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-secondary-tools.is-open .sk-calendar-tools-items .sk-icon-button { width:100%; justify-content:flex-start; padding:10px; gap:10px; }
  :root[data-staff-interface] .sk-calendar-tools-items .sk-icon-button::after { content:attr(aria-label); font-size:var(--sk-font-size-sm); text-align:left; white-space:normal; }
  :root[data-staff-interface] .sk-calendar-team-button__label { min-width:0; text-align:left; }
  :root[data-staff-interface] .sk-calendar-team-button__label > span { white-space:nowrap; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-search-box { min-height:44px; height:auto; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-search-box input { min-height:42px; font-size:var(--sk-type-touch-field-min); }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-page-header p { font-size:var(--sk-font-size-sm); line-height:1.5; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-client-directory .sk-data-table tbody tr { padding:12px; gap:4px; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-client-directory .sk-data-table tbody td { padding:8px; min-height:40px; font-size:var(--sk-font-size-sm); }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-client-directory .sk-data-table tbody tr { position:relative; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-client-directory .sk-data-table tbody td.sk-data-table__check { position:absolute; top:8px; right:8px; width:44px; height:44px; display:grid; place-items:center; padding:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-client-directory .sk-data-table tbody td:has(.sk-person-cell) { padding-right:44px; }
  :root[data-staff-interface] .sk-topbar-context { width:100%; min-width:0; gap:12px; }
  :root[data-staff-interface] .sk-topbar-context .hybrid-workspace-selector { flex:1; min-width:0; }
  :root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher { min-width:0; width:100%; }
  :root[data-staff-interface] .hybrid-workspace-selector .sk-tenant-switcher__trigger { width:100%; max-width:none; min-width:0; }
  :root[data-staff-interface] .sk-app-shell.has-impersonation .sk-global-topbar { padding-top:calc(var(--sk-support-banner-height,0px) + 10px); }
  :root[data-staff-interface] .sk-app-shell .sk-page.owner-briefing { gap:16px; }
  :root[data-staff-interface] .briefing-welcome { margin-bottom:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-toolbar { display:flex; flex-direction:row; flex-wrap:nowrap; align-items:center; gap:8px; margin:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-toolbar > .sk-pill-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); flex:1; min-width:0; gap:4px; overflow:visible; margin:0; padding:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-toolbar .sk-pill-tabs > button { min-width:0; min-height:44px; padding:8px 4px; font-size:var(--sk-font-size-sm); white-space:nowrap; }
  :root[data-staff-interface] .sk-dashboard-toolbar .sk-period-label-long,
  :root[data-staff-interface] .sk-dashboard-refresh-label { display:none; }
  :root[data-staff-interface] .sk-period-label-short { display:inline; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-toolbar > .sk-button { width:44px; min-width:44px; flex:0 0 44px; padding:10px; }
  :root[data-staff-interface] .sk-dashboard-campaign { margin:0; }
  :root[data-staff-interface] .sk-dashboard-campaign-image,
  :root[data-staff-interface] .sk-dashboard-campaign-image figure { min-height:150px; height:auto; }
  :root[data-staff-interface] .sk-dashboard-campaign-image figure:has(img) { min-height:0; height:150px; }
  :root[data-staff-interface] .sk-dashboard-campaign-image figure img { height:150px!important; max-height:150px!important; object-fit:cover!important; }
  :root[data-staff-interface] .sk-dashboard-campaign-copy { padding:18px; gap:10px; }
  :root[data-staff-interface] .sk-dashboard-campaign-copy > p { font-size:var(--sk-font-size-sm); line-height:1.5; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; }
  :root[data-staff-interface] .sk-dashboard-campaign-label { font-size:var(--sk-font-size-xs); line-height:1.5; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-dashboard-card { min-height:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-card-header { flex-wrap:wrap; gap:12px; align-items:flex-start; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-card-header:not(:has(.sk-inline-actions,select,.sk-button)) { flex-wrap:nowrap; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-card-header > div:first-child:not(.sk-inline-actions) { flex:1 1 auto; min-width:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-card-header > :is(svg,button) { flex-shrink:0; }
  :root[data-staff-interface] .sk-app-shell .sk-page .sk-card-header h2 { overflow-wrap:anywhere; }
  :root[data-staff-interface] .dashboard-widgets .dashboard-widget:not(:has(.widget-metric)) { grid-column:1/-1; }
  :root[data-staff-interface] .dashboard-widget .widget-metric strong { font-size:var(--sk-font-size-2xl)!important; overflow-wrap:anywhere; max-width:100%; }
  :root[data-staff-interface] .dashboard-widget .widget-metric.business-pulse > div[data-widget-id] { padding:12px 8px 8px; height:100%; min-height:190px; justify-content:flex-start; }
  :root[data-staff-interface] .dashboard-widget .widget-metric.business-pulse > div[data-widget-id] > span { left:auto; right:auto; padding-inline:4px; }
  :root[data-staff-interface] .dashboard-summary-action { min-width:0; flex:1; margin-top:0; padding:36px 10px 12px; }
  :root[data-staff-interface] .dashboard-summary-action svg { top:10px; right:10px; }
  :root[data-staff-interface] .widget-gallery-card > div:nth-child(2) { flex:1 1 9rem; }
  :root[data-staff-interface] .widget-gallery-card > button { min-height:44px; }
  :root[data-staff-interface] .widget-gallery-category { align-items:stretch; flex-direction:column; gap:6px; }
  :root[data-staff-interface] .widget-gallery-category select { min-height:44px; width:100%; }
  :root[data-staff-interface] .sk-overlay--center { padding:12px; }
  :root[data-staff-interface] .sk-modal { max-height:calc(100dvh - 24px); }
  :root[data-staff-interface] .sk-modal__header,
  :root[data-staff-interface] .sk-modal__body { padding:16px; }
  :root[data-staff-interface] .sk-modal__header h2,
  :root[data-staff-interface] .sk-drawer__header h2 { min-width:0; overflow-wrap:anywhere; }
  :root[data-staff-interface] .sk-modal__footer { padding:12px 16px; }
  :root[data-staff-interface] .sk-modal__footer > .sk-button { flex:1 1 8rem; }
}
@media (max-width:22.5rem) {
  :root[data-staff-interface] .dashboard-widget .widget-metric strong { font-size:var(--sk-font-size-xl)!important; }
  :root[data-staff-interface] .hybrid-ecosystem { gap:4px; }
  :root[data-staff-interface] .hybrid-ecosystem .sk-copilot__launcher { min-width:80px!important; padding-inline:8px!important; }
  /* Keep Nora visible and retain its 44px target in the 320px shell. */
  :root[data-staff-interface] .sk-app-shell:not(.employee-entry) .sk-global-topbar .hybrid-ecosystem .sk-copilot__launcher { width:auto!important; min-width:44px!important; padding-inline:4px!important; gap:0!important; }
  :root[data-staff-interface] .sk-app-shell:not(.employee-entry) .sk-global-topbar .hybrid-ecosystem .sk-copilot__launcher > span[aria-hidden="true"]:first-child { display:none!important; }
}
@media (min-width:44.01rem) and (max-width:62rem) {
  :root[data-staff-interface] .sk-calendar-page { min-height:0; height:calc(100dvh - var(--sk-topbar-height)); display:flex; flex-direction:column; }
  :root[data-staff-interface] .sk-calendar-workspace,
  :root[data-staff-interface] .sk-calendar-page .sk-month-view { flex:1 1 auto; min-height:0; height:auto; overscroll-behavior:contain; }
  :root[data-staff-interface] .sk-calendar-resource-header,
  :root[data-staff-interface] .sk-calendar-grid { min-width:calc(4.5rem + var(--sk-calendar-columns) * var(--sk-calendar-column-min,12rem)); }
  :root[data-staff-interface] .sk-calendar-resource-header { height:72px; }
  :root[data-staff-interface] .sk-resource-heading__trigger { min-width:0; justify-content:flex-start; gap:8px; padding:12px; }
  :root[data-staff-interface] .sk-resource-heading__trigger strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  :root[data-staff-interface] .sk-resource-heading__trigger .sk-resource-avatar { width:40px; height:40px; min-width:40px; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar { display:grid; grid-template-columns:minmax(100px,1fr) 44px 44px 80px 124px; padding:10px 12px; gap:6px; overflow:visible; flex:0 0 auto; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar__group { display:contents; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar :is(.sk-button,.sk-calendar-team-button,.sk-calendar-date-button,.sk-toolbar-select) { min-height:44px; height:auto; font-size:var(--sk-font-size-sm); white-space:nowrap; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-icon-button { width:44px; min-width:44px; height:44px; min-height:44px; }
  :root[data-staff-interface] .sk-calendar-toolbar__group:first-child > .sk-button { grid-column:1; grid-row:1; justify-self:start; }
  :root[data-staff-interface] .sk-calendar-toolbar .sk-segmented { grid-column:2/-1; grid-row:1; min-width:0; }
  :root[data-staff-interface] .sk-calendar-toolbar .sk-segmented > .sk-add-menu { flex:1; min-width:0; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-calendar-date-button { width:100%; min-width:0; }
  :root[data-staff-interface] .sk-calendar-team-button { grid-column:1; grid-row:2; min-width:0; }
  :root[data-staff-interface] .sk-calendar-team-button__label > span { white-space:nowrap; }
  :root[data-staff-interface] .sk-calendar-toolbar__group:first-child > .sk-icon-button { grid-column:2; grid-row:2; }
  :root[data-staff-interface] .sk-calendar-secondary-tools { display:block; position:relative; grid-column:3; grid-row:2; }
  :root[data-staff-interface] .sk-calendar-secondary-tools .sk-calendar-tools-toggle { display:flex; }
  :root[data-staff-interface] .sk-calendar-toolbar [data-tutorial="calendar-view"] { grid-column:4; grid-row:2; }
  :root[data-staff-interface] .sk-calendar-toolbar [data-tutorial="calendar-add"] { grid-column:5; grid-row:2; }
  :root[data-staff-interface] .sk-calendar-tools-items { display:none; }
  :root[data-staff-interface] .sk-calendar-secondary-tools.is-open .sk-calendar-tools-items { display:flex; position:absolute; top:50px; right:0; width:260px; flex-direction:column; gap:4px; padding:8px; background:var(--sk-color-surface); border:1px solid var(--sk-color-border); border-radius:16px; box-shadow:var(--sk-shadow-popover); z-index:50; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-secondary-tools.is-open .sk-calendar-tools-items .sk-icon-button { width:100%; height:auto; justify-content:flex-start; padding:10px; gap:10px; }
  :root[data-staff-interface] .sk-calendar-tools-items .sk-icon-button::after { content:attr(aria-label); font-size:var(--sk-font-size-sm); text-align:left; white-space:normal; }
  :root[data-staff-interface] .sk-app-shell .sk-calendar-toolbar .sk-popover { position:fixed; left:calc(var(--sk-rail-width) + 12px); right:12px; top:calc(var(--sk-topbar-height) + 8px); width:auto; min-width:0; max-width:none; max-height:calc(100dvh - var(--sk-topbar-height) - 24px); overflow-y:auto; overscroll-behavior:contain; }
  :root[data-staff-interface] .sk-date-popover > div { grid-template-columns:1fr; }
  :root[data-staff-interface] .sk-date-popover .sk-mini-month:nth-child(2) { display:none; }
  :root[data-staff-interface] .sk-app-shell { --sk-rail-width:min(var(--sk-user-rail-width,248px),200px); }
  :root[data-staff-interface] .sk-app-shell .sk-main.has-secondary-nav,
  :root[data-staff-interface] .sk-app-shell .sk-main.has-secondary-nav.has-collapsed-secondary { padding-top:var(--sk-topbar-height); }
  :root[data-staff-interface] .sk-app-shell .sk-primary-rail__main { flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; }
  :root[data-staff-interface] .sk-app-shell .sk-primary-rail :is(.sk-primary-help,.sk-rail-customize) { flex-shrink:0; }
  :root[data-staff-interface] .hybrid-ecosystem .sk-icon-button::after { display:none; }
}
@media (min-width:44.01rem) and (max-width:62rem) and (pointer:coarse) {
  :root[data-staff-interface] .sk-app-shell .sk-primary-rail button { min-height:44px; height:auto; }
}

/* Nora retains the same minimum target on pointer and touch topbars. */
:root[data-staff-interface] .sk-app-shell:not(.employee-entry) .sk-global-topbar .hybrid-ecosystem .sk-copilot__launcher { min-height:max(44px,var(--sk-touch-min,44px)); }

/* Enlarge account/setup hit areas without changing their glyphs or visibility. */
:root[data-staff-interface] .sk-app-shell:not(.employee-entry) .sk-global-topbar :is(.sk-profile-button,.sk-setup-button) { min-height:max(44px,var(--sk-touch-min,44px)); }
:root[data-staff-interface] .sk-app-shell:not(.employee-entry) .sk-global-topbar .sk-profile-button { min-width:max(44px,var(--sk-touch-min,44px)); }


/* Shared navigation icons for web and both native app entries. */
/* Shared navigation artwork; layout, labels and selection remain owned by the shell. */
:is(.sk-app-shell,.sk-customer-portal) .mr-blue-line-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 28px;line-height:0;--mr-blue-tile:#fff;--mr-blue-stroke:#82667f;}
:root :is(.sk-app-shell,.sk-customer-portal) .mr-blue-line-icon>svg{display:block;width:28px!important;height:28px!important;flex-shrink:0;padding:0;stroke-width:initial;}
:root :is(.sk-app-shell,.sk-customer-portal) .mr-blue-line-icon>svg>svg{width:30px!important;height:30px!important;stroke-width:1.65!important;}
:root[data-ui-theme="dark"] :is(.sk-app-shell,.sk-customer-portal) .mr-blue-line-icon{--mr-blue-tile:#283140;--mr-blue-stroke:#87aaff;}
@media(max-width:1023px){:is(.sk-app-shell,.sk-customer-portal) .mr-blue-line-icon{width:24px;height:24px;flex-basis:24px}:root :is(.sk-app-shell,.sk-customer-portal) .mr-blue-line-icon>svg{width:24px!important;height:24px!important}}

/* Override staff-interface rail sizing at both SVG levels. */
:root .sk-app-shell .sk-primary-rail .hybrid-module-group>button .mr-blue-line-icon>svg{width:28px!important;height:28px!important;}
:root .sk-app-shell .sk-primary-rail .hybrid-module-group>button .mr-blue-line-icon>svg>svg{width:30px!important;height:30px!important;}
@media(max-width:1023px){:root .sk-app-shell .sk-primary-rail .hybrid-module-group>button .mr-blue-line-icon>svg{width:24px!important;height:24px!important}}

/* Customer navigation spans otherwise inherit unread-badge treatment. */
.sk-customer-portal .mr-blue-line-icon{margin:0;padding:0;min-width:0;background:transparent;color:inherit;border-radius:0;}
:root .sk-customer-portal .mr-blue-line-icon>svg{width:28px!important;height:28px!important;}
:root .sk-customer-portal .mr-blue-line-icon>svg>svg{width:30px!important;height:30px!important;}
@media(max-width:1023px){:root .sk-customer-portal .mr-blue-line-icon>svg{width:24px!important;height:24px!important}}


/* Existing JSX hooks: actual layout owners, without allowlist exclusions. */
.sk-actions,
.sk-filter-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}
.sk-dpa-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 12px;
  padding: 16px;
  border: 1px solid currentColor;
  border-radius: 8px;
}
.sk-dpa-document {
  min-width: 0;
  max-width: 100%;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.sk-list {
  display: grid;
  gap: 12px;
  padding-inline-start: 24px;
}
.sk-mono { font-family:var(--sk-font-code-stack); }
.sk-mirror-stage,
.sk-mirror-camera-off,
.sk-mirror-suggest {
  display: grid;
  gap: 16px;
  min-width: 0;
}
.sk-mirror-note { padding: 12px; overflow-wrap: anywhere; }
.sk-training-embed { min-width: 0; max-width: 100%; }
.sk-training-embed iframe {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border: 0;
}
/* Terminal root used by the isolated fee preview harness. */
.sk-terminal { min-width: 0; overflow-wrap: anywhere; }

/* Narrow screens need deliberate rows, with room for every label. */
@media (max-width: 45rem) {
  .sk-terminal-workspace > .sa-terminal-link {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: var(--sk-space-2);
    row-gap: var(--sk-space-1);
    height: auto;
    flex: 0 0 auto;
  }
  .sk-terminal-workspace > .sa-terminal-link > strong {
    grid-column: 1;
    grid-row: 1;
    min-width: 0;
  }
  .sk-terminal-workspace > .sa-terminal-link > span:first-of-type {
    grid-column: 1;
    grid-row: 2;
    min-width: 0;
  }
  .sk-terminal-workspace > .sa-terminal-link > span:last-child {
    grid-column: 2;
    grid-row: 1 / 3;
    align-self: center;
    margin-left: 0;
    white-space: nowrap;
  }
}
@media (max-width: 380px) {
  .sk-app-shell.employee-entry .employee-clock-main {
    flex-direction: column;
    align-items: stretch;
    flex-wrap: nowrap;
  }
}
/* All desktop rails use the same spacing contract, including small laptops. */
@media (min-width: 64rem) {
  html[data-surface="terminal"] .sk-terminal-workspace .sk-terminal-workspace-nav {
    padding-block: var(--sk-space-3);
  }
}

/* The correction panel also lives inside narrow receipt drawers. */
.sk-line-correction {
  min-width: 0;
  overflow-wrap: anywhere;
}
.sk-line-correction > summary,
.sk-line-correction details > summary {
  cursor: pointer;
  min-height: 44px;
  padding-block: 12px;
  font-weight: var(--sk-font-weight-medium);
}
.sk-line-correction fieldset {
  display: grid;
  gap: 12px;
  min-width: 0;
  margin: 16px 0;
  padding: 16px;
  border: 1px solid var(--sk-color-border);
  border-radius: var(--sk-radius-md, 8px);
}
.sk-line-correction label {
  display: grid;
  gap: 6px;
  min-width: 0;
  margin-block: 8px;
}
.sk-line-correction label:has(input[type="checkbox"]) {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  min-height: 44px;
}
.sk-line-correction :is(input:not([type="checkbox"]), select) {
  display: block;
  width: 100%;
  min-width: 0;
  min-height: 44px;
  border: 1px solid var(--sk-color-border);
  border-radius: 6px;
  padding: 8px;
  color: var(--sk-color-ink);
  background: var(--sk-color-surface);
}
.sk-line-correction input[type="checkbox"] {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  margin-top: 2px;
}
.sk-line-correction .sk-terminal-secondary {
  min-height: 44px;
  max-width: 100%;
  white-space: normal;
  margin-block: 4px;
}
.sk-line-correction ul { padding-left: 24px; }

/* Preserve the HTML hidden contract against terminal navigation layout rules. */
.sk-terminal-workspace [hidden] { display: none !important; }

/* Shared layout for restored workflow surfaces. Type remains centrally owned. */
.sk-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-2); }
.sk-dpa-banner { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sk-space-3); padding: var(--sk-space-4); border: 1px solid var(--sk-color-warning); border-radius: var(--sk-radius-md); background: var(--sk-color-warning-soft); color: var(--sk-color-ink); overflow-wrap: anywhere; }
.sk-dpa-banner button { min-height: 44px; }
.sk-dpa-document { min-width: 0; max-width: 100%; padding: var(--sk-space-3); border: 1px solid var(--sk-color-border); border-radius: var(--sk-radius-md); background: var(--sk-color-surface); overflow-wrap: anywhere; }
.sk-list { display: grid; gap: var(--sk-space-3); margin: 0; padding: 0; list-style: none; }
.sk-list > li { min-width: 0; padding-block: var(--sk-space-2); border-bottom: 1px solid var(--sk-color-border-soft); overflow-wrap: anywhere; }
.sk-list > li:last-child { border-bottom: 0; }
.sk-training-embed { box-sizing: border-box; width: 100%; max-width: 100%; }

.sk-filter-row {display:flex;flex-wrap:wrap;gap:var(--sk-space-3);align-items:end;}
.sk-mono {font-family:var(--sk-font-mono);}
.sk-people-overview {display:grid;gap:var(--sk-space-4);min-width:0;}
.sk-mirror-stage {position:relative;min-width:0;max-width:100%;overflow:hidden;}
.sk-mirror-stage video {display:block;width:100%;max-height:70dvh;object-fit:contain;}
.sk-mirror-camera-off {display:grid;place-items:center;min-height:10rem;padding:var(--sk-space-4);border:1px solid currentColor;}
.sk-mirror-note {max-width:65ch;overflow-wrap:anywhere;}
.sk-mirror-suggest {display:flex;flex-wrap:wrap;gap:var(--sk-space-3);align-items:center;}

/* Neutral marks share the tile; opening a customer and reading a mark are separate controls. */
.sk-terminal-tile-marks { display: contents; }
.sk-timebook-block .sk-timebook-block__open {
  display: block;
  width: 100%;
  min-height: 24px;
  height: auto;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  line-height: 1.5;
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
}
.sk-timebook-block__open:focus-visible { outline: 2px solid var(--sk-color-focus-ring, #2446df); outline-offset: -2px; }
.sk-timebook-block.is-short:has(.sk-calendar-marks) {
  grid-auto-flow: row;
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
  align-items: stretch;
  gap: 0;
  padding-top: 3px;
}
.sk-timebook-block.is-short:has(.sk-calendar-marks) > .sk-timebook-block-time { grid-column: 1; grid-row: 1; min-height: 24px; padding-inline-end: 4rem; }
.sk-timebook-block.is-short:has(.sk-calendar-marks) > strong { grid-column: 1; grid-row: 2; }
.sk-timebook-block.is-tiny:has(.sk-calendar-marks) { grid-auto-flow: column; grid-template-columns: auto minmax(0, 1fr); align-content: center; gap: 4px; }
.sk-timebook-block.is-tiny:has(.sk-calendar-marks) > .sk-timebook-block-time { grid-column: 1; grid-row: 1; min-height: 20px; padding-inline-end: 0; }
.sk-timebook-block.is-tiny:has(.sk-calendar-marks) > strong { grid-column: 2; grid-row: 1; padding-inline-end: 4rem; }
.sk-timebook-week { --sk-timebook-column-min: 9rem; }
.sk-timebook-list > li { position: relative; }
.sk-timebook-list > li:has(.sk-calendar-marks) { padding-top: 28px; }
/* Split-day fragments retain their continuation row; the customer remains the primary line. */
.sk-timebook-block.is-short.is-fragment:has(.sk-calendar-marks) { grid-auto-flow: row; grid-template-columns: auto minmax(0, 1fr); }
.sk-timebook-block.is-short.is-fragment:has(.sk-calendar-marks) > .sk-timebook-block-time { grid-column: 1; grid-row: 1; padding-inline-end: 0; }
.sk-timebook-block.is-short.is-fragment:has(.sk-calendar-marks) > strong { grid-column: 2; grid-row: 1; padding-inline-end: 4rem; }
.sk-timebook-block.is-short.is-fragment:has(.sk-calendar-marks) > .sk-timebook-continuation { grid-column: 1 / -1; grid-row: 2; }

/* Date and navigation retain separate rows when text grows on a narrow screen. */
@media (max-width: 36rem) {
  .sk-timebook-date-nav { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .sk-timebook-date-nav h1 { grid-column: 1 / -1; grid-row: 1; overflow-wrap: anywhere; }
  .sk-timebook-date-nav > button { grid-row: 2; justify-self: start; }
  .sk-timebook-date-nav > button:last-child { justify-self: end; }
  .sk-timebook-controls > .sk-shift-view-tabs { grid-auto-columns: max-content; max-width: 100%; }
  .sk-timebook-controls > .sk-shift-view-tabs > button { padding-inline: 0.5rem; white-space: normal; }
}




.sk-dashboard-campaign{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);overflow:hidden;border:1px solid var(--sk-color-border,#e5e5e5);border-radius:28px;background:var(--sk-color-surface,#fff);color:var(--sk-color-ink,#242424);margin-block:0 24px;min-height:280px}
.sk-dashboard-campaign--text-only{grid-template-columns:minmax(0,1fr)}
.sk-dashboard-campaign-copy{padding:clamp(24px,3vw,44px);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:14px;min-width:0}
.sk-dashboard-campaign-label{font-size:var(--sk-font-size-xs);letter-spacing:.04em;color:var(--sk-color-ink-soft,#757575)}
.sk-dashboard-campaign h2{font-size:var(--sk-type-display-heading);font-weight:var(--sk-font-weight-medium);line-height:1.13;letter-spacing:-.035em;margin:0;overflow-wrap:anywhere}
.sk-dashboard-campaign-copy p{font-size:var(--sk-font-size-md);line-height:1.6;color:var(--sk-color-ink-soft,#757575);margin:0;max-width:45ch;white-space:pre-line;overflow-wrap:anywhere}
.sk-dashboard-campaign-copy>a{display:inline-flex;align-items:center;gap:12px;min-height:44px;font-size:var(--sk-font-size-sm);color:inherit;text-decoration:none;border-bottom:1px solid currentColor;margin-top:4px}
.sk-dashboard-campaign a:focus-visible{outline:2px solid var(--sk-focus,#6685b5);outline-offset:-4px}
.sk-dashboard-campaign-image{min-width:0;display:block;background:var(--sk-color-surface-warm,#f2f1ef);color:inherit;position:relative;min-height:280px}
.sk-dashboard-campaign-image figure{margin:0!important;height:100%;min-height:280px;display:grid;place-items:center}
.sk-dashboard-campaign-image figure img{width:100%!important;height:100%!important;max-height:440px!important;object-fit:cover!important}
.sk-dashboard-campaign-image figure p{padding:24px;font-size:var(--sk-font-size-sm)}
@media(max-width:640px){.sk-dashboard-campaign{grid-template-columns:1fr;border-radius:22px}.sk-dashboard-campaign-image{grid-row:1;min-height:190px}.sk-dashboard-campaign-image figure{min-height:190px}.sk-dashboard-campaign-image figure img{max-height:230px!important}.sk-dashboard-campaign-copy{padding:24px;gap:12px}.sk-dashboard-campaign h2{font-size:var(--sk-font-size-2xl)}}

/* Keep the dashboard header focused on its primary actions. */
.sk-location-status{display:none!important}

.sk-followup-expand{display:flex;justify-content:center;padding:12px 0}
