/* Passite 20941. Original component order and priorities preserved. */

/*
 * Passite Design System 3.0 — production tokens.
 * Approved typography, palette and motion are frozen here. The compatibility
 * aliases below preserve established markup without changing JS/API contracts.
 */
:root{
  --ds3-font:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --ds3-mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;

  --ds3-radius-xs:5px;
  --ds3-radius-sm:8px;
  --ds3-radius-md:12px;
  --ds3-radius-lg:16px;
  --ds3-radius-xl:20px;
  --ds3-radius-pill:999px;
  --ds3-fast:160ms;
  --ds3-normal:280ms;
  --ds3-slow:520ms;
  --ds3-ease:cubic-bezier(.2,.8,.2,1);
  --ds3-spring:cubic-bezier(.22,1,.36,1);
  --ds3-blur:0px;
  --ds3-breathe:6.8s;
  --ds3-orbit:9s;
  --ds3-chart-loop:5.8s;
  --ds3-ease-emphasized:cubic-bezier(.16,1,.3,1);
  --ds3-ease-soft:cubic-bezier(.22,.61,.36,1);
  --ds3-type-display:clamp(36px,5vw,64px);
  --ds3-type-page:clamp(26px,3vw,38px);
  --ds3-type-section:clamp(18px,2vw,24px);
  --ds3-type-body:15px;
  --ds3-type-caption:12px;
  --ds3-touch-min:44px;
  --ds3-content-max:1500px;
  --ds3-break-mobile:390px;
  --ds3-break-tablet:768px;
  --ds3-break-desktop:1024px;

}

:root:not([data-ds-reference]){
  color-scheme:light;
  /* Primitive — neutral */

  /* Primitive — Passite brand */

  /* Primitive — semantic palettes */

  /* Primitive — typography */
  --ds-font-sans:var(--ds3-font);
  --ds-font-mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;
  --ds-font-size-100:10px;--ds-font-size-150:11px;--ds-font-size-200:12px;--ds-font-size-300:13px;--ds-font-size-400:15px;--ds-font-size-500:17px;--ds-font-size-600:20px;--ds-font-size-700:24px;--ds-font-size-800:30px;--ds-font-size-900:38px;--ds-font-size-1000:52px;
  --ds-line-tight:1.15;--ds-line-snug:1.3;--ds-line-body:1.5;--ds-line-relaxed:1.65;
  --ds-weight-regular:400;--ds-weight-medium:560;--ds-weight-semibold:650;--ds-weight-bold:740;--ds-weight-black:820;
  --ds-letter-tight:-.035em;--ds-letter-display:-.055em;--ds-letter-label:.055em;--ds-letter-overline:.12em;

  /* Primitive — spacing */
  --ds-space-0:0;--ds-space-1:4px;--ds-space-2:8px;--ds-space-3:12px;--ds-space-4:16px;--ds-space-5:20px;--ds-space-6:24px;--ds-space-7:32px;--ds-space-8:40px;--ds-space-9:48px;--ds-space-10:64px;--ds-space-11:80px;

  /* Primitive — radii */
  --ds-radius-xs:var(--ds3-radius-xs);--ds-radius-sm:var(--ds3-radius-sm);--ds-radius-md:var(--ds3-radius-md);--ds-radius-lg:var(--ds3-radius-lg);--ds-radius-xl:var(--ds3-radius-xl);--ds-radius-pill:var(--ds3-radius-pill);

  /* Primitive — shadows */
  --ds-shadow-none:none;
  --ds-shadow-xs:var(--ds3-shadow-xs);
  --ds-shadow-sm:var(--ds3-shadow-sm);
  --ds-shadow-md:var(--ds3-shadow-md);
  --ds-shadow-lg:var(--ds3-shadow-float);

  /* Primitive — opacity */
  --ds-opacity-disabled:.46;--ds-opacity-muted:.72;--ds-opacity-overlay:.58;

  /* Primitive — motion */
  --ds-motion-fast:var(--ds3-fast);--ds-motion-normal:var(--ds3-normal);--ds-motion-slow:var(--ds3-slow);
  --ds-ease-standard:var(--ds3-ease);
  --ds-ease-enter:cubic-bezier(.16,1,.3,1);
  --ds-ease-exit:cubic-bezier(.7,0,.84,0);

  /* Primitive — z layers */
  --ds-z-base:0;--ds-z-sticky:40;--ds-z-dropdown:80;--ds-z-popover:100;--ds-z-toast:160;--ds-z-modal:200;--ds-z-critical:240;

  /* Semantic — light theme */

  --ds-action-secondary:var(--ds-bg-surface);
  --ds-action-ghost-hover:var(--ds-bg-hover);

  /* Semantic — application chrome */

  /* Component tokens */
  --ds-layout-sidebar-width:248px;
  --ds-layout-topbar-height:88px;
  --ds-layout-content-max:var(--ds3-content-max);
  --ds-layout-page-gutter:clamp(16px,2.7vw,40px);
  --ds-layout-section-gap:24px;
  --ds-card-padding-sm:16px;--ds-card-padding-md:20px;--ds-card-padding-lg:24px;
  --ds-card-radius:var(--ds3-radius-md);
  --ds-button-height-sm:40px;--ds-button-height-md:44px;--ds-button-height-lg:48px;
  --ds-input-height-sm:40px;--ds-input-height-md:44px;--ds-input-height-lg:48px;
  --ds-control-touch-min:var(--ds3-touch-min);
  --ds-icon-sm:16px;--ds-icon-md:18px;--ds-icon-lg:20px;--ds-icon-xl:24px;
  --ds-avatar-sm:28px;--ds-avatar-md:36px;--ds-avatar-lg:46px;
  --ds-modal-sm:420px;--ds-modal-md:560px;--ds-modal-lg:760px;
  --ds-table-row-compact:42px;--ds-table-row-default:48px;--ds-table-row-comfortable:56px;
  --ds-focus-ring:0 0 0 3px color-mix(in srgb,var(--ds-border-focus) 24%,transparent);

  /* Established markup aliases — all product UI resolves through DS3. */
  --bg-subtle:var(--ds-bg-subtle);

  --shadow-xs:var(--ds-shadow-xs);--shadow-sm:var(--ds-shadow-sm);--shadow-lg:var(--ds-shadow-lg);
  --sp-1:var(--ds-space-1);--sp-2:var(--ds-space-2);--sp-3:var(--ds-space-3);--sp-4:var(--ds-space-4);--sp-5:var(--ds-space-5);--sp-6:var(--ds-space-6);--sp-7:var(--ds-space-7);--sp-8:var(--ds-space-8);--sp-9:var(--ds-space-10);
  --radius-xs:var(--ds-radius-xs);--radius-sm:var(--ds-radius-sm);--radius-md:var(--ds-radius-md);--radius-lg:var(--ds-radius-lg);
  --sidebar-w:var(--ds-layout-sidebar-width);--topbar-h:var(--ds-layout-topbar-height);--content-max:var(--ds-layout-content-max);
  --control-sm:var(--ds-button-height-sm);--control-md:var(--ds-button-height-md);--control-lg:var(--ds-button-height-lg);--icon-sm:var(--ds-icon-sm);--icon-md:var(--ds-icon-md);--icon-lg:var(--ds-icon-lg);
  --fs-body:var(--ds-font-size-300);--fs-lead:var(--ds-font-size-400);--fs-title:var(--ds-font-size-500);--fs-h3:var(--ds-font-size-600);--fs-h2:var(--ds-font-size-700);--fs-display:var(--ds-font-size-800);--fs-meta:var(--ds-font-size-150);--fs-small:var(--ds-font-size-200);--fs-micro:var(--ds-font-size-100);
  --font:var(--ds-font-sans);--mono:var(--ds-font-mono);--ease:var(--ds-ease-standard);
  --z-sticky:var(--ds-z-sticky);--z-popover:var(--ds-z-popover);--z-toast:var(--ds-z-toast);--z-modal:var(--ds-z-modal);--z-critical:var(--ds-z-critical);

  /* Application aliases preserve established markup while DS3 owns every value. */
  --sidebar:var(--ds-sidebar-bg);--sidebar-text:var(--ds-sidebar-text);--sidebar-muted:var(--ds-sidebar-muted);--sidebar-hover:var(--ds-sidebar-hover);--sidebar-active:var(--ds-sidebar-active);
  --border-soft:var(--ds-border-subtle);
  --lh-tight:var(--ds-line-tight);--lh-body:var(--ds-line-body);
  --modal-sm:var(--ds-modal-sm);--modal-md:var(--ds-modal-md);--modal-lg:var(--ds-modal-lg);--container:var(--ds-layout-content-max);
  --state-ok:var(--ds-status-success-text);--state-ok-soft:var(--ds-status-success-bg);--state-warn:var(--ds-status-warning-text);--state-warn-soft:var(--ds-status-warning-bg);--state-error:var(--ds-status-danger-text);--state-error-soft:var(--ds-status-danger-bg);--state-info:var(--ds-status-info-text);--state-info-soft:var(--ds-status-info-bg);
  --color-bg:var(--ds-bg-canvas);--color-bg-secondary:var(--ds-bg-subtle);--color-surface:var(--ds-bg-surface);--color-surface-raised:var(--ds-bg-surface-raised);--color-surface-hover:var(--ds-bg-hover);
  --color-text:var(--ds-text-primary);--color-text-secondary:var(--ds-text-secondary);--color-text-muted:var(--ds-text-tertiary);--color-text-inverse:var(--ds-text-inverse);
  --color-border:var(--ds-border-default);--color-border-strong:var(--ds-border-strong);--color-divider:var(--ds-border-subtle);
  --color-primary:var(--ds-action-primary);--color-primary-hover:var(--ds-action-primary-hover);--color-primary-active:var(--ds-action-primary-active);--color-primary-soft:var(--ds-bg-selected);
  --color-success:var(--ds-color-green-500);--color-success-soft:var(--ds-status-success-bg);--color-warning:var(--ds-color-orange-500);--color-warning-soft:var(--ds-status-warning-bg);--color-danger:var(--ds-color-red-500);--color-danger-soft:var(--ds-status-danger-bg);--color-info:var(--ds-color-blue-500);--color-info-soft:var(--ds-status-info-bg);
  --color-input-bg:var(--ds-bg-surface);--color-input-border:var(--ds-border-strong);--color-input-focus:var(--ds-border-focus);--color-overlay:var(--ds-bg-overlay);--color-shadow:rgba(18,24,31,.18);
}

html[data-theme="dark"]:not([data-ds-reference]){
  color-scheme:dark;

  --ds-action-secondary:var(--ds-bg-surface);
  --ds-action-ghost-hover:var(--ds-bg-hover);

  --ds-shadow-xs:var(--ds3-shadow-xs);
  --ds-shadow-sm:var(--ds3-shadow-sm);
  --ds-shadow-md:var(--ds3-shadow-md);
  --ds-shadow-lg:var(--ds3-shadow-float);

}

@media(prefers-reduced-motion:reduce){
  :root{--ds-motion-fast:1ms;--ds-motion-normal:1ms;--ds-motion-slow:1ms}
}

/* Netlify-inspired 20936: shared by every Passite-owned surface. */
:root{
 --ps-paper:#F6F7F9;
 --ps-panel:#FFFFFF;
 --ps-raised:#FFFFFF;
 --ps-ink:#12181F;
 --ps-secondary:#586570;
 --ps-subtle:#EAF0F4;
 --ps-selected:#DAF7F5;
 --ps-selected-ink:#065E62;
 --ps-line:#D8E0E6;
 --ps-field-line:#7C8B97;
 --ps-accent:#32E6E2;
 --ps-accent-hover:#5DEEEB;
 --ps-accent-active:#05BDBA;
 --ps-accent-ink:#08797D;
 --ps-focus:#08797D;
 --ps-deep:#12181F;
 --ps-on-dark:#E6ECF2;
 --ps-on-dark-muted:#AFBDC8;
 --ps-danger-on-dark:#FF9EB0;
 --ps-success-on-dark:#74DCC0;
 --ps-on-accent:#12181F;
 --ps-light:#FFFFFF;
 --ps-success:#08765F;
 --ps-success-soft:#E2F5EE;
 --ps-warning:#946000;
 --ps-warning-soft:#FFF4DA;
 --ps-danger:#B4233A;
 --ps-danger-soft:#FCE9ED;
 --ps-info:#2E51CE;
 --ps-info-soft:#E9EFFF;
 --ps-scrim:rgba(18,24,31,.56);
 --ps-shadow:rgba(18,24,31,.14);
 --ds3-canvas:var(--ps-paper);
 --ds3-canvas-2:var(--ps-paper);
 --ds-bg-canvas:var(--ps-paper);
 --ds-bg-surface-sunken:var(--ps-paper);
 --bg:var(--ps-paper);
 --paper:var(--ps-paper);
 --owner-canvas:var(--ps-paper);
 --owner-sunken:var(--ps-paper);
 --landing-paper:var(--ps-paper);
 --ds3-surface:var(--ps-panel);
 --ds3-surface-solid:var(--ps-panel);
 --ds-bg-surface:var(--ps-panel);
 --surface:var(--ps-panel);
 --card:var(--ps-panel);
 --owner-surface:var(--ps-panel);
 --landing-surface:var(--ps-panel);
 --ds-sidebar-bg:var(--ps-panel);
 --input-bg:var(--ps-panel);
 --ds3-surface-strong:var(--ps-raised);
 --ds-bg-surface-raised:var(--ps-raised);
 --surface-raised:var(--ps-raised);
 --ds3-surface-soft:var(--ps-subtle);
 --ds-bg-subtle:var(--ps-subtle);
 --ds-bg-hover:var(--ps-subtle);
 --ds-bg-active:var(--ps-subtle);
 --surface-muted:var(--ps-subtle);
 --landing-surface-soft:var(--ps-subtle);
 --ds-sidebar-hover:var(--ps-subtle);
 --ds3-ink:var(--ps-ink);
 --ds-text-primary:var(--ps-ink);
 --text:var(--ps-ink);
 --ink:var(--ps-ink);
 --owner-ink:var(--ps-ink);
 --landing-ink:var(--ps-ink);
 --landing-copy:var(--ps-ink);
 --ds-sidebar-text:var(--ps-ink);
 --ds3-ink-2:var(--ps-secondary);
 --ds3-ink-3:var(--ps-secondary);
 --ds-text-secondary:var(--ps-secondary);
 --ds-text-tertiary:var(--ps-secondary);
 --ds-text-disabled:var(--ps-secondary);
 --text-secondary:var(--ps-secondary);
 --text-muted:var(--ps-secondary);
 --muted:var(--ps-secondary);
 --owner-muted:var(--ps-secondary);
 --client-muted:var(--ps-secondary);
 --landing-muted:var(--ps-secondary);
 --ds-sidebar-muted:var(--ps-secondary);
 --ds3-line:var(--ps-line);
 --ds-border-default:var(--ps-line);
 --ds-border-subtle:var(--ps-line);
 --border:var(--ps-line);
 --divider:var(--ps-line);
 --owner-line:var(--ps-line);
 --client-line:var(--ps-line);
 --landing-line:var(--ps-line);
 --ds3-line-strong:var(--ps-field-line);
 --ds-border-strong:var(--ps-field-line);
 --border-strong:var(--ps-field-line);
 --input-border:var(--ps-field-line);
 --owner-field-line:var(--ps-field-line);
 --client-field-line:var(--ps-field-line);
 --ds3-accent:var(--ps-accent);
 --ds3-cyan:var(--ps-accent);
 --ds-action-primary:var(--ps-accent);
 --primary:var(--ps-accent);
 --owner-accent:var(--ps-accent);
 --client-ui-accent:var(--ps-accent);
 --landing-cyan:var(--ps-accent);
 --passite-brand-cyan:var(--ps-accent);
 --passite-brand-accent:var(--ps-accent);
 --ds3-accent-2:var(--ps-accent-hover);
 --ds-action-primary-hover:var(--ps-accent-hover);
 --primary-hover:var(--ps-accent-hover);
 --landing-cyan-hover:var(--ps-accent-hover);
 --ds-action-primary-active:var(--ps-accent-active);
 --primary-active:var(--ps-accent-active);
 --ds-text-link:var(--ps-accent-ink);
 --ds-text-accent:var(--ps-accent-ink);
 --primary-text:var(--ps-accent-ink);
 --owner-accent-ink:var(--ps-accent-ink);
 --landing-accent-ink:var(--ps-accent-ink);
 --ds-action-primary-text:var(--ps-on-accent);
 --on-primary:var(--ps-on-accent);
 --primary-ink:var(--ps-on-accent);
 --landing-cyan-ink:var(--ps-on-accent);
 --ds-text-inverse:var(--ps-on-dark);
 --ds3-accent-soft:var(--ps-selected);
 --ds-bg-selected:var(--ps-selected);
 --primary-soft:var(--ps-selected);
 --surface-selected:var(--ps-selected);
 --owner-accent-soft:var(--ps-selected);
 --ds-sidebar-active:var(--ps-selected);
 --ds-border-focus:var(--ps-focus);
 --ds-border-selected:var(--ps-focus);
 --focus:var(--ps-focus);
 --input-focus:var(--ps-focus);
 --owner-focus:var(--ps-focus);
 --landing-dark:var(--ps-deep);
 --landing-dark-2:var(--ps-deep);
 --landing-dark-3:var(--ps-deep);
 --passite-brand-ink:var(--ps-deep);
 --ds-bg-overlay:var(--ps-scrim);
 --overlay:var(--ps-scrim);
 --success:var(--ps-success);
 --success-text:var(--ps-success);
 --ds-text-success:var(--ps-success);
 --ds3-green:var(--ps-success);
 --ds-status-success-text:var(--ps-success);
 --ds-status-success-icon:var(--ps-success);
 --ds-status-success-border:var(--ps-success);
 --success-soft:var(--ps-success-soft);
 --ds3-green-soft:var(--ps-success-soft);
 --ds-status-success-bg:var(--ps-success-soft);
 --warning:var(--ps-warning);
 --warning-text:var(--ps-warning);
 --ds-text-warning:var(--ps-warning);
 --ds3-amber:var(--ps-warning);
 --ds-status-warning-text:var(--ps-warning);
 --ds-status-warning-icon:var(--ps-warning);
 --ds-status-warning-border:var(--ps-warning);
 --warning-soft:var(--ps-warning-soft);
 --ds3-amber-soft:var(--ps-warning-soft);
 --ds-status-warning-bg:var(--ps-warning-soft);
 --danger:var(--ps-danger);
 --danger-text:var(--ps-danger);
 --ds-text-danger:var(--ps-danger);
 --ds3-red:var(--ps-danger);
 --ds-status-danger-text:var(--ps-danger);
 --ds-status-danger-icon:var(--ps-danger);
 --ds-status-danger-border:var(--ps-danger);
 --danger-soft:var(--ps-danger-soft);
 --ds3-red-soft:var(--ps-danger-soft);
 --ds-status-danger-bg:var(--ps-danger-soft);
 --info:var(--ps-info);
 --info-text:var(--ps-info);
 --ds-text-info:var(--ps-info);
 --ds-status-info-text:var(--ps-info);
 --ds-status-info-icon:var(--ps-info);
 --ds-status-info-border:var(--ps-info);
 --info-soft:var(--ps-info-soft);
 --ds3-cyan-soft:var(--ps-selected);
 --ds-status-info-bg:var(--ps-info-soft);
 --ds3-purple:var(--ps-info);
 --ds-border-danger:var(--ps-danger);
 --danger-hover:var(--ps-danger);
 --on-danger:var(--ps-light);
 --ds-action-disabled:var(--ps-subtle);
 --ds-status-neutral-bg:var(--ps-subtle);
 --ds-status-neutral-text:var(--ps-secondary);
 --ds-status-neutral-border:var(--ps-line);
 --ds-status-neutral-icon:var(--ps-secondary);
 --neutral:var(--ps-secondary);
 --neutral-text:var(--ps-secondary);
 --neutral-soft:var(--ps-subtle);
 --ds-text-neutral:var(--ps-secondary);
 --ps-gradient:linear-gradient(115deg,var(--ps-deep),#014847 55%,var(--ps-accent));
 --ds3-data-1:var(--ps-accent-active);
 --ds3-data-2:var(--ps-info);
 --ds3-data-3:var(--ps-success);
 --ds3-data-4:var(--ps-warning);
 --ds3-data-5:var(--ps-secondary);
 --ds3-data-6:var(--ps-danger);
 --ds-color-neutral-0:#FFFFFF;
 --ds-color-neutral-25:#FAFBFC;
 --ds-color-neutral-50:#F6F7F9;
 --ds-color-neutral-100:#EAF0F4;
 --ds-color-neutral-200:#D8E0E6;
 --ds-color-neutral-300:#BAC6CF;
 --ds-color-neutral-400:#8797A5;
 --ds-color-neutral-500:#647582;
 --ds-color-neutral-600:#586570;
 --ds-color-neutral-700:#364451;
 --ds-color-neutral-800:#25313D;
 --ds-color-neutral-900:#1B242D;
 --ds-color-neutral-950:#12181F;
 --ds-color-brand-50:#EDFCFB;
 --ds-color-brand-100:#DAF7F5;
 --ds-color-brand-200:#AFF8F5;
 --ds-color-brand-300:#76F1ED;
 --ds-color-brand-400:#32E6E2;
 --ds-color-brand-500:#05BDBA;
 --ds-color-brand-600:#079C99;
 --ds-color-brand-700:#087F83;
 --ds-color-brand-800:#065E62;
 --ds-color-brand-900:#014847;
 --ds-color-brand-950:#12181F;
 --ds-color-green-50:var(--ps-success-soft);
 --ds-color-green-100:var(--ps-success-soft);
 --ds-color-green-500:var(--ps-success);
 --ds-color-green-700:var(--ps-success);
 --ds-color-green-900:var(--ps-success);
 --ds-color-orange-50:var(--ps-warning-soft);
 --ds-color-orange-100:var(--ps-warning-soft);
 --ds-color-orange-500:var(--ps-warning);
 --ds-color-orange-700:var(--ps-warning);
 --ds-color-orange-900:var(--ps-warning);
 --ds-color-red-50:var(--ps-danger-soft);
 --ds-color-red-100:var(--ps-danger-soft);
 --ds-color-red-500:var(--ps-danger);
 --ds-color-red-700:var(--ps-danger);
 --ds-color-red-900:var(--ps-danger);
 --ds-color-blue-50:var(--ps-info-soft);
 --ds-color-blue-100:var(--ps-info-soft);
 --ds-color-blue-500:var(--ps-info);
 --ds-color-blue-700:var(--ps-info);
 --ds-color-blue-900:var(--ps-info);
 --ds-color-purple-50:var(--ps-info-soft);
 --ds-color-purple-100:var(--ps-info-soft);
 --ds-color-purple-500:var(--ps-info);
 --ds-color-purple-700:var(--ps-info);
 --ds-color-purple-900:var(--ps-info);
 --ds3-shadow-xs:0 1px 3px rgba(18,24,31,.04);
 --ds3-shadow-sm:0 4px 18px rgba(18,24,31,.06);
 --ds3-shadow-md:0 16px 44px var(--ps-shadow);
 --ds3-shadow-float:0 24px 80px var(--ps-shadow);
 --owner-shadow:none;
 --landing-shadow:0 20px 60px var(--ps-shadow);
 --passite-mark-url:url('/assets/brand/passite-mark.svg?v=20941');
}
html[data-theme="dark"]{
 --ps-paper:#12181F;
 --ps-panel:#1B242D;
 --ps-raised:#25313D;
 --ps-ink:#E6ECF2;
 --ps-secondary:#AFBDC8;
 --ps-subtle:#202D38;
 --ps-selected:#123C40;
 --ps-selected-ink:#AFF8F5;
 --ps-line:#364451;
 --ps-field-line:#718596;
 --ps-accent-ink:#32E6E2;
 --ps-focus:#32E6E2;
 --ps-success:#74DCC0;
 --ps-success-soft:#173B34;
 --ps-warning:#F4CA75;
 --ps-warning-soft:#3B301A;
 --ps-danger:#FF9EB0;
 --ps-danger-soft:#432530;
 --ps-info:#AEC4FF;
 --ps-info-soft:#24344E;
 --ps-scrim:rgba(6,12,18,.76);
 --ps-shadow:rgba(0,0,0,.36);
}


/* assets/design-system-v3/foundations.css */

/* Passite DS3 — reset and shared product foundations. */
*,*::before,*::after{box-sizing:border-box}
html{min-height:100%;font-family:var(--ds3-font);font-size:16px;background:var(--ds3-canvas);color:var(--ds3-ink);scroll-behavior:smooth}
body{min-width:0;min-height:100vh;min-height:100dvh;margin:0;background:var(--ds3-canvas);color:var(--ds3-ink);font-family:var(--ds3-font);font-size:var(--ds3-type-body);font-weight:400;line-height:1.5;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;overflow-x:clip}
button,input,select,textarea{font-family:inherit}
button,a,label,summary,select,input[type="checkbox"],input[type="radio"]{-webkit-tap-highlight-color:transparent}
button,a{touch-action:manipulation}
a{color:inherit;text-decoration:none}
img,video,canvas,svg{max-width:100%}
svg{display:block}
.hidden,[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;z-index:10000;left:12px;top:12px;translate:0 -160%;padding:10px 14px;border-radius:var(--ds3-radius-sm);background:var(--ds3-surface-solid);color:var(--ds3-ink);box-shadow:var(--ds3-shadow-md)}
.skip-link:focus{translate:0}
:focus{outline:none}
:focus-visible{outline:2px solid color-mix(in srgb,var(--ds3-accent) 72%,transparent);outline-offset:3px}
::selection{background:var(--ds3-accent-soft);color:var(--ds3-ink)}

h1,h2,h3,h4,p{overflow-wrap:break-word;word-break:normal}
h1,h2,h3,h4{font-weight:740;letter-spacing:-.035em}
.ds3-type-display{font-size:var(--ds3-type-display);font-weight:740;line-height:.98;letter-spacing:-.055em}
.ds3-type-page{font-size:var(--ds3-type-page);font-weight:740;line-height:1.05;letter-spacing:-.045em}
.ds3-type-section{font-size:var(--ds3-type-section);font-weight:700;line-height:1.12;letter-spacing:-.03em}
.ds3-type-body{font-size:var(--ds3-type-body);font-weight:400;line-height:1.5}
.ds3-type-caption{font-size:var(--ds3-type-caption);font-weight:450;line-height:1.45;color:var(--ds3-ink-3)}
.ds3-numeric,[data-ui="MetricValue"],.metric strong,.stats strong,.cc-kpi strong,.analytics-kpi strong{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

:where(.app,.workspace,.content,.view,.panel,.surface,.glass,.modal,.dialog,.list,.table-wrap,.analytics-shell,.commerce-panel,.account-content-v9,.contact-layout,.contact-list,.contact-card)>*{min-width:0}
:where(.app,.workspace,.content,.view,.panel,.surface,.glass,.modal,.dialog,.list,.table-wrap,.analytics-shell,.commerce-panel,.account-content-v9,.contact-layout,.contact-list,.contact-card){min-width:0;max-width:100%}
:where(input,select,textarea){min-width:0;max-width:100%}

.ambient{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:radial-gradient(circle at 12% 8%,rgba(50,230,226,.08),transparent 34%),radial-gradient(circle at 88% 82%,rgba(18,24,31,.06),transparent 32%)}
.ambient i{position:absolute;border-radius:50%;filter:blur(44px);opacity:.45}
.ambient i:nth-child(1){width:280px;height:280px;left:-100px;top:8%;background:rgba(50,230,226,.18)}
.ambient i:nth-child(2){width:240px;height:240px;right:-90px;bottom:8%;background:rgba(18,24,31,.12)}
.ambient i:nth-child(3){width:180px;height:180px;left:48%;top:42%;background:rgba(50,230,226,.08)}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.ambient i{animation:none}}

/* assets/design-system-v3/app-shell.css */

/* Passite Design System 3.0 — Application shell and product primitives.
 * Canonical shared application CSS. All visual values resolve through DS3 tokens.
 */
*,*::before,*::after{box-sizing:border-box}
html{min-height:100%;font-family:var(--font);font-size:16px;background:var(--bg);color:var(--text);scroll-behavior:smooth}
body{margin:0;min-height:100vh;min-width:320px;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body.modal-open,body.nav-open{overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit}
/* `small` must never fall below the readable floor, even nested in small parents. */
small{font-size:max(var(--fs-meta),.85em)}
button,a,label,summary,select,input[type="checkbox"],input[type="radio"]{-webkit-tap-highlight-color:transparent}
button{letter-spacing:inherit}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
p,h1,h2,h3,h4,h5,h6,li,dd,dt,figcaption,blockquote{overflow-wrap:break-word;word-break:normal}
b,strong,em,small,span,label,summary,td,th{overflow-wrap:normal;word-break:normal}
code{overflow-wrap:anywhere;word-break:break-word}
h1,h2,h3,h4,h5,h6{color:var(--text)}
.hidden{display:none}
.ambient{display:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;z-index:1000;top:10px;left:12px;transform:translateY(-160%);padding:10px 14px;border-radius:var(--radius-sm);background:var(--surface);color:var(--primary-text);box-shadow:var(--shadow-lg);font-weight:750;transition:transform .15s var(--ease)}
.skip-link:focus{transform:translateY(0)}
.glass,.surface{background:var(--surface);box-shadow:none;backdrop-filter:none}
.muted-text,.panel-note,.subline{color:var(--text-muted)}

/* Accessible focus */
:where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--focus);outline-offset:2px}
:where(button,a,input,select,textarea,summary,[tabindex]):focus:not(:focus-visible){outline:none}
::selection{background:var(--primary-soft);color:var(--primary-ink)}

/* Authentication */
.auth{min-height:100vh;display:grid;place-items:center;padding:clamp(20px,5vw,56px);background:
  radial-gradient(circle at 18% 10%,rgba(50,230,226,.11),transparent 34%),
  radial-gradient(circle at 90% 92%,rgba(18,24,31,.08),transparent 30%),var(--bg)}
.auth-card{width:min(460px,100%);padding:clamp(24px,5vw,38px);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-lg)}
.auth-card .brand,.sidebar-head .brand{display:inline-flex;align-items:center;font-size:27px;font-weight:850;letter-spacing:-.055em;line-height:1;color:inherit}
.auth-card .brand::after,.sidebar-head .brand::after{content:"";width:7px;height:7px;margin:2px 0 0 5px;border-radius:50%;background:var(--primary)}
.auth-card .micro{display:block;margin:7px 0 30px;color:var(--text-muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.15em}
.auth-copy{margin:30px 0 24px}
.auth-copy>span{display:block;margin-bottom:7px;color:var(--primary-text);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.09em}
.auth-card h1{margin:0 0 9px;font-size:clamp(28px,5vw,36px);line-height:1.12;letter-spacing:-.04em}
.auth-card h2{margin:0 0 8px;font-size:21px;letter-spacing:-.025em}
.auth-card p{margin:0;color:var(--text-secondary);line-height:1.65}
.auth-card form{display:grid;gap:18px}
.security-auth-card>div>h1{margin:30px 0 22px}
.security-copy{color:var(--text-secondary);line-height:1.65}
.security-setup-pane{display:grid;gap:16px}
.security-success-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:var(--success-soft);color:var(--success-text);font-size:25px;font-weight:900}
.totp-qr,.qr-box{display:grid;place-items:center;justify-self:center;padding:18px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--ps-panel)}
.totp-qr svg,.qr-box svg{width:min(260px,100%);height:auto}
.secret-line{display:grid;gap:7px}
.secret-line code,.recovery-code,.secret-box{padding:11px 13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted);font-family:var(--mono);font-size:13px;overflow-wrap:anywhere}
.recovery-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}

/* App shell */
.app{min-height:100vh;display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);background:var(--bg)}
.sidebar{position:sticky;top:0;z-index:var(--z-sticky);height:100vh;height:100dvh;min-width:0;display:flex;flex-direction:column;padding:18px 14px max(14px,env(safe-area-inset-bottom));background:var(--sidebar);color:var(--sidebar-text);border-right:1px solid rgba(230,236,242,.05);overflow:hidden}
.sidebar-head{display:flex;align-items:center;gap:10px;min-height:50px;padding:3px 10px 18px;border-bottom:1px solid rgba(230,236,242,.08)}
.sidebar-head .brand{font-size:24px;color:#E6ECF2}
.sidebar-head .brand::after{background:#32E6E2}
.sidebar-head>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sidebar-muted);font-size:var(--fs-meta);font-weight:800;text-transform:uppercase;letter-spacing:.12em}
.sidebar nav{flex:1 1 auto;display:grid;align-content:start;gap:3px;min-height:0;margin:12px -3px 0;padding:0 3px 16px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--ps-ink) transparent;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.nav-section-label{display:block;padding:15px 10px 5px;color:var(--sidebar-muted);font-size:var(--fs-meta);font-weight:800;text-transform:uppercase;letter-spacing:.13em}
.nav-section-label:first-child{padding-top:4px}
.nav-item{appearance:none;width:100%;min-height:42px;display:flex;align-items:center;gap:11px;padding:0 11px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--sidebar-text);font-size:13.5px;font-weight:650;text-align:left;cursor:pointer;transition:background .16s var(--ease),color .16s var(--ease),border-color .16s var(--ease),transform .16s var(--ease)}
.nav-item svg{width:18px;height:18px;flex:0 0 18px;color:var(--sidebar-muted)}
.nav-item:hover{background:var(--sidebar-hover);color:#E6ECF2}
.nav-item:hover svg{color:var(--ps-accent-ink,#12181F)}
.nav-item.active{background:var(--sidebar-active);border-color:rgba(50,230,226,.18);color:#E6ECF2;box-shadow:inset 3px 0 0 #32E6E2}
.nav-item.active svg{color:var(--ps-accent-ink,#12181F)}
.nav-item:active{transform:translateY(1px)}
.nav-item .badge{margin-left:auto;min-width:21px;height:21px;display:grid;place-items:center;padding:0 6px;border-radius:999px;background:#12181F;color:#E6ECF2;font-size:var(--fs-meta);font-weight:850}
.nav-item.dangerish:hover{background:rgba(18,24,31,.16);color:var(--ps-ink)}
.sidebar-foot{flex:0 0 auto;margin-top:auto;display:grid;gap:4px;padding-top:12px;border-top:1px solid rgba(230,236,242,.08)}
.theme-control{min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 11px;color:var(--sidebar-muted);font-size:12px;font-weight:650}
.sidebar-close{display:none}
.sidebar-scrim{display:none}
.workspace{min-width:0;min-height:100vh;background:var(--bg)}
.topbar{position:sticky;top:0;z-index:calc(var(--z-sticky) - 10);min-height:var(--topbar-h);display:grid;grid-template-columns:minmax(210px,1fr) minmax(260px,520px) auto;align-items:center;gap:20px;padding:12px clamp(20px,2.5vw,36px);border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 91%,transparent);backdrop-filter:blur(18px)}
.page-title{min-width:0}
.page-context{display:block;margin-bottom:2px;color:var(--primary-text);font-size:var(--fs-meta);font-weight:850;text-transform:uppercase;letter-spacing:.12em}
.page-title h1,.topbar h1{margin:0;font-size:clamp(20px,2vw,24px);line-height:1.2;letter-spacing:-.035em}
.page-title p,.topbar p{max-width:640px;margin:3px 0 0;color:var(--text-muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}
.open-site{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 13px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px;font-weight:750;white-space:nowrap;box-shadow:var(--shadow-xs);transition:.15s var(--ease)}
.open-site svg{width:16px;height:16px;color:var(--text-muted)}
.open-site:hover{border-color:var(--primary-text);color:var(--primary-text);background:var(--primary-soft)}
.global-search{position:relative;min-width:0}
.global-search::before,.search-field::before{content:"";position:absolute;z-index:1;left:14px;top:50%;width:15px;height:15px;transform:translateY(-50%);border:2px solid var(--text-muted);border-radius:50%;pointer-events:none}
.global-search::after,.search-field::after{content:"";position:absolute;z-index:1;left:26px;top:56%;width:6px;height:2px;transform:rotate(45deg);border-radius:99px;background:var(--text-muted);pointer-events:none}
.global-search input,.search-field input{padding-left:42px}
.search-results{position:absolute;z-index:var(--z-popover);top:calc(100% + 8px);right:0;left:0;max-height:min(420px,70vh);overflow:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-lg)}
.search-hit{appearance:none;width:100%;display:grid;gap:2px;padding:12px 14px;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer}
.search-hit:last-child{border-bottom:0}
.search-hit:hover{background:var(--surface-muted)}
.search-hit b{font-size:13px}
.search-hit span{color:var(--text-muted);font-size:11px}
.mobile-menu{display:none}
.content{width:100%;max-width:var(--content-max);margin:0 auto;padding:clamp(20px,2.7vw,36px)}
.view{display:grid;gap:20px;animation:view-in .2s var(--ease)}
@keyframes view-in{from{opacity:.35;transform:translateY(3px)}to{opacity:1;transform:none}}

/* Controls */
.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,button:not([class]){
  appearance:none;min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px;font-weight:750;line-height:1.2;cursor:pointer;white-space:nowrap;transition:background .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease),box-shadow .15s var(--ease),transform .15s var(--ease)}
.btn svg,.icon-btn svg,.ghost-icon svg,.icon-action svg{width:17px;height:17px;flex:none}
.btn:hover,.icon-btn:hover,.ghost-icon:hover,.mini:hover,.icon-action:hover,button:not([class]):hover{border-color:var(--primary-text);background:var(--primary-soft);color:var(--primary-text)}
.btn:active,.icon-btn:active,.mini:active,.icon-action:active{transform:translateY(1px)}
.btn.primary{border-color:var(--primary-text);background:var(--primary);color:var(--on-primary);box-shadow:0 3px 10px color-mix(in srgb,var(--primary) 20%,transparent)}
.btn.primary:hover{border-color:var(--primary-hover);background:var(--primary-hover);color:var(--on-primary)}
.btn.primary:active{border-color:var(--primary-active);background:var(--primary-active)}
.btn.ghost{background:var(--surface)}
.btn.danger{border-color:var(--danger-text);background:var(--danger);color:var(--on-danger)}
.btn.danger:hover{border-color:var(--danger-hover);background:var(--danger-hover);color:#E6ECF2}
.btn.danger-outline,.danger-outline{border-color:color-mix(in srgb,var(--danger) 45%,var(--border));background:var(--danger-soft);color:var(--danger-text)}
.btn.compact{min-height:36px;padding:0 12px;font-size:12px}
.btn.large{min-height:46px;padding:0 18px;font-size:14px}
.btn:disabled,.icon-btn:disabled,.mini:disabled,button:disabled,input:disabled,select:disabled,textarea:disabled{opacity:.48;cursor:not-allowed;transform:none}
.btn.busy,.btn.is-loading{position:relative;pointer-events:none;color:transparent}
.btn.busy::after,.btn.is-loading::after{content:"";position:absolute;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;color:#E6ECF2;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.icon-btn,.icon-action,.ghost-icon{width:40px;padding:0}
.mini{min-height:32px;padding:0 9px;border-color:var(--border);font-size:11px}
.mini.danger,.danger{color:var(--danger-text)}
.text-btn,.text-action{min-height:32px;padding:0;border-color:transparent;background:transparent;color:var(--primary-text);box-shadow:none}
.text-btn:hover,.text-action:hover{background:var(--primary-soft)}

label{min-width:0;display:grid;gap:7px;color:var(--text);font-size:12px;font-weight:700}
label>span,.field>label{color:var(--text-secondary);font-size:12px;font-weight:750}
label small{color:var(--text-muted);font-size:11px;font-weight:500;line-height:1.45}
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea{
  appearance:none;width:100%;min-width:0;min-height:42px;padding:9px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px;line-height:1.4;box-shadow:var(--shadow-xs);transition:border-color .15s var(--ease),box-shadow .15s var(--ease),background .15s var(--ease)}
input::placeholder,textarea::placeholder{color:var(--text-muted);opacity:.9}
input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:color-mix(in srgb,var(--primary) 42%,var(--border-strong))}
input:focus,select:focus,textarea:focus{border-color:var(--primary-text);box-shadow:0 0 0 3px var(--focus)}
input[readonly],textarea[readonly]{background:var(--surface-muted)}
input:user-invalid:not(:focus){border-color:color-mix(in srgb,var(--danger) 62%,var(--border))}
textarea{min-height:112px;resize:vertical}
select{padding-right:38px;background-image:linear-gradient(45deg,transparent 50%,var(--text-muted) 50%),linear-gradient(135deg,var(--text-muted) 50%,transparent 50%);background-position:calc(100% - 17px) 18px,calc(100% - 12px) 18px;background-size:5px 5px;background-repeat:no-repeat}
input[type="search"]::-webkit-search-cancel-button{cursor:pointer}
input[type="checkbox"],input[type="radio"]{appearance:none;width:18px;height:18px;min-width:18px;display:inline-grid;place-content:center;margin:0;border:1.5px solid var(--border-strong);background:var(--surface);cursor:pointer;transition:.15s var(--ease)}
input[type="checkbox"]{border-radius:5px}
input[type="radio"]{border-radius:50%}
input[type="checkbox"]::after{content:"";width:9px;height:5px;border:0 solid #E6ECF2;border-width:0 0 2px 2px;transform:rotate(-45deg) scale(0);transition:transform .12s var(--ease)}
input[type="radio"]::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--ps-panel);transform:scale(0);transition:transform .12s var(--ease)}
input[type="checkbox"]:checked,input[type="radio"]:checked{border-color:var(--primary-text);background:var(--primary)}
input[type="checkbox"]:checked::after{transform:rotate(-45deg) scale(1)}
input[type="radio"]:checked::after{transform:scale(1)}
input[type="checkbox"]:indeterminate{border-color:var(--primary-text);background:var(--primary)}
input[type="checkbox"]:indeterminate::after{width:9px;height:2px;border:0;background:var(--ps-panel);transform:none}
input[type="file"][hidden],.hidden-file,.c75-native-file,.p75-native-file{display:none}
.password-field,.slug-input,.slug-field{position:relative;display:flex;align-items:stretch;min-width:0}
.password-field input{padding-right:48px}
.password-toggle{position:absolute;right:1px;top:1px;bottom:1px;width:40px;height:auto;min-height:40px;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);display:grid;place-items:center;cursor:pointer}
.password-toggle:hover{background:var(--surface-muted);color:var(--primary-text)}
.password-toggle svg{width:18px;height:18px}
.slug-input input,.slug-field input{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}
.slug-input em,.slug-field em{display:flex;align-items:center;padding:0 12px;border:1px solid var(--border-strong);border-left:0;border-radius:0 var(--radius-sm) var(--radius-sm);background:var(--surface-muted);color:var(--text-muted);font-size:12px;font-style:normal;white-space:nowrap}
.otp-input,.security-code-input{font-family:var(--mono);font-size:22px;letter-spacing:.22em;text-align:center}
.form-status{min-height:20px;color:var(--text-muted);font-size:12px;font-weight:650;line-height:1.5}
.form-status.err{padding:10px 12px;border:1px solid color-mix(in srgb,var(--danger) 32%,var(--border));border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--danger-text)}
.form-status.ok{padding:10px 12px;border:1px solid color-mix(in srgb,var(--success) 30%,var(--border));border-radius:var(--radius-sm);background:var(--success-soft);color:var(--success-text)}
.caps-hint{color:var(--warning-text)}
.password-progress,.meter{height:7px;overflow:hidden;border-radius:999px;background:var(--bg-subtle)}
.password-progress i,.meter i{display:block;width:0;height:100%;border-radius:inherit;background:var(--primary);transition:width .25s var(--ease)}
.meter.large{height:8px}
.password-rules{display:flex;gap:7px;flex-wrap:wrap}
.password-rules span{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta)}
.password-rules span::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
.password-rules span.ok{background:var(--success-soft);color:var(--success-text)}
.switch{position:relative;width:42px;height:24px;display:inline-block;flex:none}
.switch input{position:absolute;opacity:0;pointer-events:none}
.switch i{position:absolute;inset:0;border:1px solid rgba(230,236,242,.18);border-radius:999px;background:#12181F;transition:.18s var(--ease)}
.switch i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--ps-panel);box-shadow:0 1px 4px rgba(18,24,31,.25);transition:transform .18s var(--ease)}
.switch input:checked+i{border-color:var(--ps-accent-ink);background:#32E6E2}
.switch input:checked+i::after{transform:translateX(18px)}
.compact-field{display:flex;align-items:center;gap:9px}
.compact-field select{width:auto;min-width:140px}

/* Cards, surfaces and hierarchy */
.panel,.hero-panel,.progress-card,.version-card,.client-ticket-shell,.ticket-shell,.owner-hero,.stats article,.overview-metrics .metric{
  border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-xs)}
.panel{min-width:0;overflow:hidden}
.panel.popover-open,.c75-transaction.popover-open,.p75-transaction.popover-open,.p75-client-card.popover-open{position:relative;z-index:2;overflow:visible}
.panel-head{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px 18px;border-bottom:1px solid var(--border);background:var(--surface)}
.panel-head>div{min-width:0}
.panel-head h3{margin:2px 0 0;font-size:18px;line-height:1.25;letter-spacing:-.025em}
.panel-head p{margin:4px 0 0;font-size:11px}
.panel-head.tools{align-items:center}
.kicker{display:block;color:var(--text-muted);font-size:var(--fs-meta);font-weight:850;text-transform:uppercase;letter-spacing:.105em}
.tool-row,.view-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.tool-row select,.tool-row input{width:auto;min-width:min(145px,100%)}
.view-tools{min-height:42px}
.stats,.overview-metrics,.commerce-metrics,.owner-commerce-metrics{display:grid;gap:12px}
.stats.six{grid-template-columns:repeat(6,minmax(0,1fr))}
.stats.four,.commerce-metrics,.owner-commerce-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
.stats:not(.six):not(.four),.analytic-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.overview-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1100px){.overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stats article,.overview-metrics .metric,.commerce-metrics article,.owner-commerce-metrics article{min-width:0;padding:17px 18px}
.stats article>span,.metric>span,.commerce-metrics article>span,.owner-commerce-metrics article>span{display:block;margin-bottom:9px;color:var(--text-muted);font-size:11px;font-weight:750}
.stats article strong,.metric strong,.commerce-metrics strong,.owner-commerce-metrics strong{font-size:clamp(26px,3vw,34px);line-height:1;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.metric>div{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}
.metric small,.stats article small{color:var(--text-muted);font-size:var(--fs-meta);line-height:1.35;text-align:right}
.metric small.up,.stats small.up{color:var(--success-text)}
.metric small.down,.stats small.down{color:var(--danger-text)}
.hero-panel,.owner-hero{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:24px}
.hero-panel h2,.owner-hero h2{margin:5px 0 3px;font-size:clamp(25px,3vw,34px);line-height:1.1;letter-spacing:-.045em}
.hero-panel p,.owner-hero p{margin:0;color:var(--text-secondary)}
.hero-side{display:grid;justify-items:end;gap:14px}
.site-state,.system-state,.security-state,.payment-badge,.health-pill{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid color-mix(in srgb,var(--success) 24%,var(--border));border-radius:999px;background:var(--success-soft);color:var(--success-text);font-size:11px;font-weight:800;white-space:nowrap}
.site-state i,.system-state i{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px color-mix(in srgb,currentColor 13%,transparent)}
.security-state:not(.ok){border-color:var(--border);background:var(--surface-muted);color:var(--text-muted)}
.site-link-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.progress-grid,.account-grid,.payment-client-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.progress-card{padding:18px}
.progress-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:13px}
.progress-head span{display:block;color:var(--text-muted);font-size:11px}
.progress-head strong{display:block;margin-top:4px;font-size:16px}
.progress-head>b{color:var(--text-muted);font-size:11px;font-variant-numeric:tabular-nums}
.progress-card>small{display:block;margin-top:10px;color:var(--text-muted);font-size:var(--fs-meta)}
.health-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
.health-item{min-width:0;padding:17px 18px;border-right:1px solid var(--border)}
.health-item:last-child{border-right:0}
.health-item span{display:block;margin-bottom:5px;color:var(--text-muted);font-size:var(--fs-meta)}
.health-item b{font-size:12px}
.health-item.warn b{color:var(--warning-text)}
.health-item.good b{color:var(--success-text)}
.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:16px}
.quick-action,.quick-grid>a{appearance:none;min-width:0;display:grid;grid-template-columns:38px minmax(0,1fr);column-gap:11px;align-items:center;padding:14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);text-align:left;cursor:pointer;transition:.15s var(--ease)}
.quick-action:hover,.quick-grid>a:hover{border-color:var(--primary-text);background:var(--primary-soft);transform:none}
.quick-action svg,.quick-grid>a svg{grid-row:1/3;width:36px;height:36px;padding:8px;border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--primary-text)}
.quick-action b,.quick-grid>a b{font-size:12px}
.quick-action span,.quick-grid>a span{color:var(--text-muted);font-size:var(--fs-meta)}
.weekly-summary{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr);align-items:stretch}
.weekly-copy{padding:20px;border-right:1px solid var(--border)}
.weekly-copy strong{display:block;font-size:36px;letter-spacing:-.05em}
.weekly-copy span{font-size:12px;font-weight:750}
.weekly-copy p{margin:6px 0 0;color:var(--text-muted);font-size:11px}
.weekly-events{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}
.weekly-events>span{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:18px;border-right:1px solid var(--border);color:var(--text-muted);font-size:var(--fs-meta)}
.weekly-events>span:last-child{border-right:0}
.weekly-events b{color:var(--text);font-size:20px}
.activity-list,.attention-list,.list{display:grid}
.activity-item,.activity-row,.attention-item,.simple-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0;padding:13px 18px;border-bottom:1px solid var(--border)}
.activity-item:last-child,.activity-row:last-child,.attention-item:last-child,.simple-row:last-child{border-bottom:0}
.activity-item time{flex:0 0 58px;color:var(--text-muted);font-size:var(--fs-meta);font-variant-numeric:tabular-nums}
.activity-item p{flex:1;margin:0;font-size:12px}
.empty,.compact-empty,.attention-empty,.kanban-empty,.ticket-empty,.client-ticket-empty{min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:28px 18px;color:var(--text-muted);text-align:center}
.empty::before,.attention-empty::before,.ticket-empty::before,.client-ticket-empty::before{content:"";width:34px;height:34px;border:1px dashed var(--border-strong);border-radius:50%;background:var(--surface-muted)}
.empty strong,.ticket-empty b,.client-ticket-empty b{color:var(--text-secondary);font-size:13px}
.empty span,.ticket-empty span,.client-ticket-empty span{max-width:460px;font-size:11px}
.segmented{display:inline-flex;padding:3px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.segmented button,.ui-tab{appearance:none;min-height:32px;padding:0 11px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-muted);font-size:11px;font-weight:750;white-space:nowrap;cursor:pointer;transition:.15s var(--ease)}
.segmented button:hover,.ui-tab:hover{background:var(--surface);color:var(--text)}
.segmented button.active,.ui-tab.active{background:var(--surface);color:var(--primary-text);box-shadow:var(--shadow-xs)}

/* Analytics */
.three-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.chart{min-height:260px;display:flex;align-items:flex-end;gap:clamp(3px,.55vw,8px);padding:20px;overflow:hidden}
.chart-col{height:210px;flex:1 1 0;display:flex;align-items:flex-end;min-width:3px;max-width:32px}
.chart-col i,.chart .bar{width:100%;height:var(--h);min-height:3px;border-radius:5px 5px 2px 2px;background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 72%,#E6ECF2),var(--primary));transition:height .25s var(--ease)}
.chart-col:hover i,.chart .bar:hover{filter:brightness(1.08)}
.rank{display:grid;min-height:130px}
.rank-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:10px 18px;border-bottom:1px solid var(--border);font-size:11px}
.rank-row:last-child{border-bottom:0}
.rank-row span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}
.rank-row span:last-child{font-weight:800;font-variant-numeric:tabular-nums}
.analytics-health{display:flex;gap:7px;flex-wrap:wrap;padding:13px 16px;border-bottom:1px solid var(--border)}
.health-pill{border-color:var(--border);background:var(--surface-muted);color:var(--text-muted)}
.health-pill.good{border-color:color-mix(in srgb,var(--success) 28%,var(--border));background:var(--success-soft);color:var(--success-text)}
.health-pill.warn{border-color:color-mix(in srgb,var(--warning) 28%,var(--border));background:var(--warning-soft);color:var(--warning-text)}
.analytics-body{display:grid;gap:14px;padding:16px}
.analytics-body>.stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.analytics-body>.chart{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.analytics-body>.four{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.rank-box{min-width:0;padding:15px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}
.rank-box h4{margin:0 0 10px;font-size:13px}
.rank-box .rank-row{padding:8px 0}

/* Files and uploads */
.files-storage{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--border);background:var(--surface-muted)}
.files-storage>span{color:var(--text-muted);font-size:var(--fs-meta);font-weight:800}
.file-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 14px;border-bottom:1px solid var(--border)}
.folder-nav,.file-tools,.breadcrumbs{min-width:0;display:flex;align-items:center;gap:7px}
.breadcrumbs{overflow-x:auto;scrollbar-width:none}
.breadcrumbs::-webkit-scrollbar{display:none}
.crumb{appearance:none;min-height:32px;padding:0 7px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--primary-text);font-size:11px;font-weight:750;white-space:nowrap;cursor:pointer}
.crumb::after{content:"/";margin-left:10px;color:var(--text-muted)}
.crumb:last-child::after{display:none}
.crumb.current{color:var(--text)}
.search-file{position:relative;display:flex;align-items:center}
.search-file svg{position:absolute;left:11px;width:15px;height:15px;color:var(--text-muted);pointer-events:none}
.search-file input{width:210px;padding-left:34px}
.selection-bar{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid color-mix(in srgb,var(--primary) 23%,var(--border));background:var(--primary-soft)}
.selection-bar>span{margin-right:auto;color:var(--primary-ink);font-size:11px;font-weight:800}
.file-dropzone,.dropzone,.v74-file-picker{display:flex;align-items:center;justify-content:center;gap:9px;margin:14px;padding:18px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--text-secondary);text-align:center;cursor:pointer;transition:.15s var(--ease)}
.file-dropzone:hover,.file-dropzone.drag,.dropzone:hover,.v74-file-picker:hover{border-color:var(--primary-text);background:var(--primary-soft);color:var(--primary-text)}
.file-dropzone svg{width:20px;height:20px}
.file-dropzone b,.dropzone b{font-size:12px}
.file-dropzone span,.dropzone span{color:var(--text-muted);font-size:var(--fs-meta)}
.dropzone{min-height:130px;flex-direction:column;margin:0}
.upload-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:var(--primary-soft);color:var(--primary-text);font-size:22px;font-weight:800}
.upload-queue{display:grid;gap:8px;padding:0 14px 14px}
.upload-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;font-size:var(--fs-meta)}
.upload-item .meter{grid-column:1/-1}
.file-table-head,.file-row{display:grid;grid-template-columns:32px minmax(210px,1.5fr) minmax(80px,.45fr) minmax(120px,.65fr) minmax(210px,auto);align-items:center;gap:12px}
.file-table-head{min-height:38px;padding:0 14px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta);font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.file-row{min-height:62px;padding:8px 14px;border-bottom:1px solid var(--border);font-size:11px;transition:background .12s var(--ease)}
.file-row:last-child{border-bottom:0}
.file-row:hover{background:var(--surface-muted)}
.file-name{min-width:0;display:flex;align-items:center;gap:11px;font-weight:750}
.file-name.clickable{cursor:pointer}
.file-name>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-name small{display:block;overflow:hidden;text-overflow:ellipsis;color:var(--text-muted);font-size:var(--fs-meta);font-weight:500}
.file-type,.fs-name>i{width:40px;height:32px;display:grid;place-items:center;flex:none;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-micro);font-style:normal;font-weight:850;letter-spacing:.04em}
.file-cell{color:var(--text-secondary);font-variant-numeric:tabular-nums}
.file-actions,.fs-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap}
.file-preview{display:grid;gap:16px}
.preview-image{width:100%;max-height:54vh;object-fit:contain;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.preview-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.preview-meta>div{padding:11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.preview-meta span{display:block;color:var(--text-muted);font-size:var(--fs-meta)}
.preview-meta b{font-size:12px}
.replace-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.replace-card{padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm)}
.replace-card>b{display:block;margin-bottom:9px;font-size:12px}
.replace-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.replace-compare>div{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-muted)}
.replace-compare span{display:block;padding:6px;color:var(--text-muted);font-size:var(--fs-meta)}
.replace-compare img,.replace-compare i{width:100%;height:85px;display:grid;place-items:center;object-fit:cover;color:var(--text-muted);font-size:var(--fs-meta);font-style:normal}
.version-card{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:18px;padding:20px}
.version-icon{width:46px;height:46px;display:grid;place-items:center;border-radius:var(--radius-sm);background:var(--primary-soft);color:var(--primary-text)}
.version-icon svg{width:20px;height:20px}
.version-card h3{margin:4px 0;font-size:17px}
.version-card p{margin:0;color:var(--text-secondary);font-size:11px}
.version-meta{margin-top:9px;color:var(--text-muted);font-size:var(--fs-meta)}
.version-progress{grid-column:2/-1;display:grid;grid-template-columns:auto minmax(120px,1fr) auto;align-items:center;gap:10px;color:var(--text-muted);font-size:var(--fs-meta)}

/* Conversations */
.client-ticket-shell,.ticket-shell{min-height:620px;display:grid;grid-template-columns:minmax(290px,360px) minmax(0,1fr);overflow:hidden}
.client-ticket-sidebar,.ticket-sidebar{min-width:0;border-right:1px solid var(--border);background:var(--surface)}
.client-ticket-head,.ticket-filter-head{min-height:72px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;min-width:0;padding:14px;border-bottom:1px solid var(--border)}
.client-ticket-head h3,.ticket-filter-head h3{margin:2px 0 0;font-size:17px}
.client-ticket-create{display:flex;gap:6px}
.client-ticket-filters,.ticket-filters,.commerce-tabs,.owner-commerce-tabs{display:flex;gap:3px;padding:9px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}
.client-ticket-filters::-webkit-scrollbar,.ticket-filters::-webkit-scrollbar,.commerce-tabs::-webkit-scrollbar,.owner-commerce-tabs::-webkit-scrollbar{display:none}
.client-ticket-list,.ticket-list{max-height:calc(100vh - 250px);min-height:350px;overflow-y:auto}
.client-ticket-item,.ticket-item{padding:13px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s var(--ease),box-shadow .12s var(--ease)}
.client-ticket-item:hover,.ticket-item:hover{background:var(--surface-muted)}
.client-ticket-item.active,.ticket-item.active{background:var(--surface-selected);box-shadow:inset 3px 0 0 var(--primary)}
.client-ticket-item.unread,.ticket-item.unread{background:color-mix(in srgb,var(--primary-soft) 64%,var(--surface))}
.client-ticket-title,.ticket-title-line{min-width:0;display:grid;gap:3px}
.client-ticket-title>span,.ticket-category{color:var(--primary-text);font-size:var(--fs-meta);font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.client-ticket-title b,.ticket-title-line b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.client-ticket-item p,.ticket-item p{margin:5px 0;color:var(--text-muted);font-size:var(--fs-meta);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.client-ticket-item footer,.ticket-item footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 8px;min-width:0;color:var(--text-muted);font-size:var(--fs-meta)}
.client-ticket-item footer>*,.ticket-item footer>*{min-width:0}
.client-ticket-conversation,.ticket-conversation{min-width:0;min-height:0;background:var(--surface-muted)}
.client-conversation-head,.conversation-head{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 16px;border-bottom:1px solid var(--border);background:var(--surface)}
.client-conversation-head h3,.conversation-head h3{margin:2px 0;font-size:15px}
.client-conversation-head p,.conversation-head p{margin:0;color:var(--text-muted);font-size:var(--fs-meta)}
.conversation-actions,.client-compose-actions,.reply-actions{display:flex;gap:7px;flex-wrap:wrap}
.message-list,.client-message-list{height:440px;display:flex;flex-direction:column;gap:10px;padding:18px;overflow-y:auto;overscroll-behavior:contain}
.message,.client-message{max-width:min(76%,720px);align-self:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-md) var(--radius-md) var(--radius-md) 3px;background:var(--surface);box-shadow:var(--shadow-xs)}
.message.owner,.client-message.client{align-self:flex-end;border-color:color-mix(in srgb,var(--primary) 22%,var(--border));border-radius:var(--radius-md) var(--radius-md) 3px var(--radius-md);background:var(--primary-soft)}
.message p,.client-message p{margin:0;font-size:11px;white-space:pre-wrap}
.message footer,.client-message footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:4px 8px;min-width:0;margin-top:5px;color:var(--text-muted);font-size:var(--fs-meta)}
.attachments{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.attachments a{padding:4px 7px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--primary-text);font-size:var(--fs-meta)}
.reply-box,.client-reply-box,.client-new-ticket{display:grid;gap:9px;padding:13px 16px;border-top:1px solid var(--border);background:var(--surface)}
.reply-box textarea,.client-reply-box textarea{min-height:82px}
.attachment-picker,.client-attachment-picker{display:flex;align-items:center;gap:8px;min-width:0}
.attachment-picker span,.client-attachment-picker span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:var(--fs-meta)}
.client-ticket-back{display:none}
.client-closed-note{padding:12px 16px;border-top:1px solid var(--border);background:var(--warning-soft);color:var(--warning-text);font-size:var(--fs-meta);text-align:center}

/* Commerce */
.commerce-metrics,.owner-commerce-metrics{gap:0;border-bottom:1px solid var(--border)}
.commerce-metrics article,.owner-commerce-metrics article{border-right:1px solid var(--border);border-radius:0;box-shadow:none}
.commerce-metrics article:last-child,.owner-commerce-metrics article:last-child{border-right:0}
.commerce-content,.owner-commerce-content{min-height:260px}
.c75-catalog-list,.p75-catalog-list,.c75-transaction-list,.p75-transaction-list,.client-payment-list,.payment-list{display:grid}
.c75-catalog-row,.p75-catalog-row{display:grid;grid-template-columns:76px minmax(0,1fr) 120px auto;gap:14px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}
.c75-catalog-row:last-child,.p75-catalog-row:last-child{border-bottom:0}
.c75-catalog-row:hover,.p75-catalog-row:hover{background:var(--surface-muted)}
.c75-catalog-media,.p75-catalog-media{width:72px;height:54px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-muted)}
.c75-catalog-media img,.p75-catalog-media img{width:100%;height:100%;object-fit:cover}
.c75-image-fallback,.p75-image-fallback{width:100%;height:100%;display:grid;place-items:center;color:var(--text-muted);font-size:var(--fs-meta)}
.c75-catalog-copy,.p75-catalog-copy{min-width:0}
.c75-catalog-copy b,.p75-catalog-copy b{display:block;min-width:0;font-size:var(--fs-small);overflow-wrap:anywhere}
.c75-catalog-copy p,.p75-catalog-copy p{margin:3px 0;color:var(--text-muted);font-size:var(--fs-meta);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c75-catalog-price,.p75-catalog-price{font-size:12px;font-weight:850;text-align:right;white-space:nowrap}
.c75-row-actions,.p75-row-actions{display:flex;gap:5px;justify-content:flex-end}
.c75-transaction,.p75-transaction{display:grid;grid-template-columns:minmax(108px,.42fr) minmax(0,1.55fr) minmax(150px,auto);gap:16px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--border)}
.client-payment-row,.payment-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--border)}
.c75-transaction:last-child,.p75-transaction:last-child,.client-payment-row:last-child,.payment-row:last-child{border-bottom:0}
.c75-transaction-main,.p75-transaction-main{min-width:0}
.c75-transaction-main b,.p75-transaction-main b{display:block;font-size:12px}
.c75-transaction-main span,.p75-transaction-main span,.c75-transaction-id,.p75-transaction-id{display:block;color:var(--text-muted);font-size:var(--fs-meta);overflow-wrap:anywhere}
.c75-transaction-id,.p75-transaction-id,.c75-transaction-side,.p75-transaction-side{min-width:0}
.c75-transaction-side,.p75-transaction-side{display:grid;justify-items:end;gap:6px;text-align:right}
.c75-status-picker,.p75-status-picker{position:relative}
.c75-status-picker summary,.p75-status-picker summary{list-style:none;cursor:pointer}
.c75-status-picker summary::-webkit-details-marker,.p75-status-picker summary::-webkit-details-marker{display:none}
.c75-status,.p75-status{display:inline-flex;align-items:center;gap:7px;padding:5px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text-secondary);font-size:var(--fs-meta);font-weight:800;white-space:nowrap}
.c75-status::before,.p75-status::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--text-muted)}
.c75-status[class*="new"]::before,.p75-status[data-status="new"]::before{background:var(--info)}
.c75-status[class*="paid"]::before,.c75-status[class*="confirmed"]::before,.p75-status[data-status="paid"]::before,.p75-status[data-status="confirmed"]::before{background:var(--success)}
.c75-status[class*="cancel"]::before,.p75-status[data-status="cancelled"]::before{background:var(--danger)}
.c75-status-menu,.p75-status-menu{position:absolute;z-index:var(--z-popover);top:calc(100% + 6px);right:0;width:max-content;min-width:165px;max-width:min(240px,calc(100vw - 24px));padding:4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-raised);box-shadow:var(--shadow-lg)}
.c75-status-menu button,.p75-status-menu button{appearance:none;width:100%;min-height:32px;padding:0 8px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text);font-size:var(--fs-meta);text-align:left;cursor:pointer}
.c75-status-menu button:hover,.p75-status-menu button:hover,.c75-status-menu button.active,.p75-status-menu button.active{background:var(--surface-selected);color:var(--primary-text)}
.c75-commerce-settings,.p75-commerce-settings{display:grid;gap:14px;padding:16px}
.c75-settings-block,.p75-settings-block{padding:16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}
.c75-settings-head,.p75-settings-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:13px}
.c75-settings-head h4,.p75-settings-head h4{margin:0;font-size:14px}
.c75-settings-head p,.p75-settings-head p{margin:3px 0 0;color:var(--text-muted);font-size:var(--fs-meta)}
.c75-form-grid,.p75-form-grid,.payment-client-fields,.payment-config-grid,.modal-grid,.field-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.c75-form-grid.two,.p75-form-grid.two,.field-grid.two,.modal-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.c75-form-grid.four,.p75-form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.span-2{grid-column:span 2}
.c75-module-grid,.p75-module-grid,.p75-check-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.c75-module-grid.two,.p75-module-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.c75-switch-row,.p75-switch-row,.c75-check-tile,.p75-check-tile{min-height:62px;display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer}
.c75-switch-row>span,.p75-switch-row>span{min-width:0;display:grid;gap:2px}
.c75-switch-row b,.p75-switch-row b{font-size:11px}
.c75-switch-row small,.p75-switch-row small{color:var(--text-muted);font-size:var(--fs-meta);font-weight:500}
.c75-switch-row>input,.p75-switch-row>input{position:absolute;opacity:0;pointer-events:none}
.c75-switch-row>i,.p75-switch-row>i{position:relative;width:40px;height:22px;flex:none;margin-left:auto;border:1px solid var(--border-strong);border-radius:999px;background:var(--bg-subtle);transition:.18s var(--ease)}
.c75-switch-row>i::after,.p75-switch-row>i::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:0 1px 4px rgba(18,24,31,.22);transition:transform .18s var(--ease)}
.c75-switch-row>input:checked+i,.p75-switch-row>input:checked+i{border-color:var(--primary-text);background:var(--primary)}
.c75-switch-row>input:checked+i::after,.p75-switch-row>input:checked+i::after{transform:translateX(18px);background:var(--ps-panel)}
.c75-danger-switch:has(input:checked){border-color:color-mix(in srgb,var(--danger) 45%,var(--border));background:var(--danger-soft)}
.c75-settings-save,.p75-settings-save,.c75-editor-actions,.p75-editor-actions,.c75-form-actions,.p75-form-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:9px}
.c75-catalog-editor,.p75-catalog-editor{display:grid;grid-template-columns:220px minmax(0,1fr);gap:20px}
.c75-editor-preview,.p75-editor-preview{display:grid;align-content:start;gap:10px;padding-right:20px;border-right:1px solid var(--border)}
.c75-editor-image,.p75-editor-image{aspect-ratio:4/3;display:grid;place-items:center;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta)}
.c75-editor-image img,.p75-editor-image img{width:100%;height:100%;object-fit:cover}
.c75-editor-fields,.p75-editor-fields{display:grid;gap:16px}
.c75-editor-title,.p75-editor-section-title{display:grid;grid-template-columns:28px minmax(0,1fr);gap:9px;align-items:start;margin-bottom:11px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.c75-editor-title>span,.p75-editor-section-title>span{color:var(--primary-text);font-family:var(--mono);font-size:var(--fs-meta);font-weight:800}
.c75-editor-title b,.p75-editor-section-title b{display:block;font-size:12px}
.c75-editor-title small,.p75-editor-section-title small{display:block;color:var(--text-muted);font-size:var(--fs-meta)}
.p75-pill{display:inline-flex;margin:4px 4px 0 0;padding:3px 7px;border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta)}

/* Account, settings and long forms */
.account-form,.security-body{display:grid;gap:14px;padding:18px}
.security-body p,.payment-client-help{margin:0;color:var(--text-secondary);font-size:11px;line-height:1.6}
.security-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--border);font-size:11px}
.mfa-options{display:grid;gap:8px}
.mfa-option{appearance:none;min-height:68px;display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:11px;padding:11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);text-align:left;cursor:pointer}
.mfa-option:hover{border-color:var(--primary-text);background:var(--primary-soft)}
.mfa-option svg{width:36px;height:36px;padding:8px;border-radius:var(--radius-xs);background:var(--surface-muted);color:var(--primary-text)}
.mfa-option span{display:grid;gap:2px}
.mfa-option b{font-size:11px}
.mfa-option small{color:var(--text-muted);font-size:var(--fs-meta);font-weight:500}
.payment-client-grid{align-items:start}
.payment-client-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
.payment-client-actions{display:flex;gap:8px;flex-wrap:wrap}
.payment-client-help,.brief-note,.brief-industry-note,.modal-note{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--text-secondary);font-size:var(--fs-meta);line-height:1.55}
.payment-client-help{margin:0}
.create-site-form,.brief-form{display:grid;gap:16px;padding:18px}
.create-site-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.form-section{min-width:0;display:grid;gap:13px;padding:17px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}
.section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:2px;padding-bottom:11px;border-bottom:1px solid var(--border)}
.section-title b{font-size:13px}
.section-title>span{max-width:430px;color:var(--text-muted);font-size:var(--fs-meta);font-weight:500;text-align:right;line-height:1.4}
.toggle-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.check-card{position:relative;min-height:66px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 58px 12px 13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer;transition:.15s var(--ease)}
.check-card>span{display:grid;gap:2px}
.check-card>span b{font-size:11px}
.check-card>span small{color:var(--text-muted);font-size:var(--fs-meta);font-weight:500;line-height:1.4}
.check-card>input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.check-card::after{content:"";position:absolute;right:13px;top:50%;width:38px;height:22px;transform:translateY(-50%);border:1px solid var(--border-strong);border-radius:999px;background:var(--bg-subtle);transition:.18s var(--ease)}
.check-card::before{content:"";position:absolute;z-index:1;right:32px;top:50%;width:16px;height:16px;transform:translateY(-50%);border-radius:50%;background:var(--surface);box-shadow:0 1px 4px rgba(18,24,31,.2);transition:.18s var(--ease)}
.check-card:has(input:checked){border-color:color-mix(in srgb,var(--primary) 48%,var(--border));background:var(--primary-soft)}
.check-card:has(input:checked)::after{border-color:var(--primary-text);background:var(--primary)}
.check-card:has(input:checked)::before{transform:translate(16px,-50%);background:var(--ps-panel)}
.check-card.warning:has(input:checked){border-color:color-mix(in srgb,var(--warning) 46%,var(--border));background:var(--warning-soft)}
.check-card:has(input[type="radio"]){grid-template-columns:1fr;padding-right:13px}
.check-card:has(input[type="radio"])::before,.check-card:has(input[type="radio"])::after{display:none}
.check-card:has(input[type="radio"]:checked){box-shadow:inset 3px 0 0 var(--primary)}
.brief-main-grid,.brief-choice-row,.brief-industry-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.brief-module-grid,.brief-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.brief-services{display:grid;gap:9px}
.brief-service-row{display:grid;grid-template-columns:minmax(170px,1fr) minmax(120px,.45fr) minmax(120px,.45fr) minmax(210px,1.15fr) auto;gap:8px;align-items:center}
.brief-payment-types{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.brief-payment-types label{position:relative;min-height:52px;display:flex;align-items:center;justify-content:center;padding:9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:var(--fs-meta);text-align:center;cursor:pointer}
.brief-payment-types input{position:absolute;width:1px;height:1px;opacity:0}
.brief-payment-types label:has(input:checked){border-color:var(--primary-text);background:var(--primary-soft);color:var(--primary-text);box-shadow:inset 3px 0 0 var(--primary)}
.brief-actions,.publish-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.brief-actions .form-status,.publish-footer>div{margin-right:auto}
.brief-preview{padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.brief-preview summary{cursor:pointer;font-size:11px;font-weight:750}
.brief-output,.code-editor{min-height:420px;margin-top:12px;font-family:var(--mono);font-size:11px;line-height:1.55;tab-size:2}
.client-section,.site-section{height:100%}
.payment-publish-section,.dropzone.full,.publish-footer{grid-column:1/-1}

/* Owner CRM and tabular data */
.owner-hero{padding:24px}
.attention-item{align-items:flex-start;width:100%;background:transparent;border:0;border-bottom:1px solid var(--border);color:inherit;text-align:left;cursor:pointer;font:inherit}
.attention-item:hover{background:var(--surface-muted)}
.attention-item:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
.attention-item>div{min-width:0}
.attention-item b{display:block;font-size:12px}
.attention-item span{color:var(--text-muted);font-size:var(--fs-meta)}
.lead-head,.site-head,.client-head{display:grid;align-items:center;gap:12px;min-height:38px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta);font-weight:850;text-transform:uppercase;letter-spacing:.05em}
.lead-head{grid-template-columns:1.1fr .95fr .7fr 1.4fr .8fr}
.site-head{grid-template-columns:1.2fr 1fr .8fr .8fr .8fr 70px}
.client-head{grid-template-columns:1.1fr 1fr 1fr .8fr .8fr minmax(90px,auto)}
.lead-row,.site-row{display:grid;align-items:center;gap:12px;min-height:60px;padding:10px 16px;border-bottom:1px solid var(--border);font-size:11px;transition:background .12s var(--ease)}
.lead-row:last-child,.site-row:last-child{border-bottom:0}
.lead-row:hover,.site-row:hover{background:var(--surface-muted)}
.lead-row{grid-template-columns:1.1fr .95fr .7fr 1.4fr .8fr}
.site-row{grid-template-columns:1.2fr 1fr .8fr .8fr .8fr 70px}
.lead-name,.site-name{min-width:0;font-weight:800}
.lead-desc{color:var(--text-muted)}
.lead-row>*:not(.lead-row-actions),.site-row>*:not(.site-actions){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lead-row-actions,.site-actions{display:flex;gap:5px;justify-content:flex-end}
.status-select{min-height:34px;padding-top:5px;padding-bottom:5px;font-size:var(--fs-meta)}
.lead-board{display:grid;grid-template-columns:repeat(4,minmax(230px,1fr));gap:10px;padding:14px;overflow-x:auto}
.kanban-col{min-height:220px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.kanban-col>header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 11px;border-bottom:1px solid var(--border);font-size:var(--fs-meta);font-weight:850}
.kanban-stack{display:grid;gap:7px;padding:7px}
.kanban-card{padding:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-xs)}
.kanban-card b{display:block;font-size:11px}
.kanban-card p{margin:4px 0;color:var(--text-muted);font-size:var(--fs-meta)}
.p75-client-list{display:grid}
.p75-client-card{display:grid;grid-template-columns:1.15fr 1fr .75fr auto;gap:14px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}
.p75-client-card:last-child{border-bottom:0}
.p75-client-card:hover{background:var(--surface-muted)}
.p75-client-site,.p75-client-person{min-width:0}
.p75-client-site b,.p75-client-person b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
.p75-client-site span,.p75-client-person span,.p75-client-meta{display:block;overflow:hidden;text-overflow:ellipsis;color:var(--text-muted);font-size:var(--fs-meta)}
.p75-client-actions{display:flex;gap:5px;justify-content:flex-end;flex-wrap:wrap}
.p75-activation{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:var(--fs-meta)}
.p75-activation-icon{width:7px;height:7px;border-radius:50%;background:var(--success)}
.p75-avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--primary-soft);color:var(--primary-text);font-weight:850}
.client-card-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.client-card-summary>div{min-width:0;display:grid;align-content:start;gap:4px;padding:4px}
.client-card-summary>div>span,.client-card-summary>div>small{display:block;color:var(--text-muted);font-size:11px;line-height:1.4}
.client-card-summary>div>b{display:block;font-size:14px;line-height:1.3;overflow-wrap:break-word;word-break:normal}
.client-card-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.client-card-actions{display:flex;gap:7px;flex-wrap:wrap}
.client-card-tickets{display:grid;gap:7px}
.client-card-ticket{padding:10px;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface)}
.trash-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}
.trash-row:last-child{border-bottom:0}
.trash-main{min-width:0}
.trash-main b{display:block;font-size:12px}
.trash-main span{color:var(--text-muted);font-size:var(--fs-meta)}
.trash-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}

/* Server filesystem */
.fs-layout{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:560px}
.fs-roots{padding:10px;border-right:1px solid var(--border);background:var(--surface-muted)}
.fs-root{appearance:none;width:100%;display:grid;gap:2px;padding:9px 10px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-secondary);text-align:left;cursor:pointer}
.fs-root:hover,.fs-root.active{background:var(--surface);color:var(--primary-text);box-shadow:var(--shadow-xs)}
.fs-root span{font-size:11px;font-weight:750}
.fs-root small{color:var(--text-muted);font-size:var(--fs-meta)}
.fs-main{min-width:0;overflow:hidden}
.fs-breadcrumbs{min-height:48px;display:flex;align-items:center;gap:3px;padding:9px 12px;border-bottom:1px solid var(--border);overflow-x:auto}
.fs-breadcrumbs>span{color:var(--text-muted);font-size:var(--fs-meta)}
.fs-list{min-width:0}
.fs-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;min-height:62px;padding:10px 13px;border-bottom:1px solid var(--border)}
.fs-row:last-child{border-bottom:0}
.fs-row:hover{background:var(--surface-muted)}
.fs-name{appearance:none;min-width:0;display:flex;align-items:center;gap:10px;padding:0;border:0;background:transparent;color:var(--text);text-align:left;cursor:pointer}
.fs-name>span{min-width:0;display:grid;gap:2px}
.fs-name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
.fs-name small{color:var(--text-muted);font-size:var(--fs-meta)}

/* Security centre */
.security-modal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px}
.security-block{min-width:0;padding:16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}
.security-block.security-mail,.security-block.security-events{grid-column:1/-1}
.security-block-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.security-block-head>div{min-width:0;display:grid;gap:3px}
.security-block-head b{font-size:12px}
.security-block-head span:not(.security-state){color:var(--text-muted);font-size:var(--fs-meta);line-height:1.45}
.mail-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}
.mail-account-card{min-width:0;display:grid;grid-template-columns:8px minmax(0,1fr);gap:8px;align-items:center;padding:10px;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-muted)}
.mail-account-card>i{width:7px;height:7px;border-radius:50%;background:var(--text-muted)}
.mail-account-card.ok>i{background:var(--success)}
.mail-account-card b{display:block;font-size:var(--fs-meta)}
.mail-account-card span{display:block;overflow-wrap:anywhere;color:var(--text-muted);font-size:var(--fs-meta)}
.mail-settings-form{display:grid;gap:10px}
.mail-test-form{display:grid;grid-template-columns:minmax(220px,1fr) 170px auto;gap:8px;align-items:end;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.security-log{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:260px;overflow:auto}
.security-log-row{display:grid;grid-template-columns:110px minmax(0,1fr) 20px;gap:8px;align-items:center;padding:8px;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-muted);font-size:var(--fs-meta)}
.security-log-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.security-log-row span{color:var(--text-muted)}
.security-log-row em{color:var(--success-text);font-style:normal;text-align:center}
.p75-copy-box{padding:11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted);font-family:var(--mono);font-size:var(--fs-meta);overflow-wrap:anywhere}
.totp-center{display:grid;justify-items:center;gap:13px;text-align:center}
.totp-center p{margin:0;color:var(--text-secondary);font-size:11px}
.v74-file-picker{justify-content:flex-start;margin:0}
.v74-file-label{font-size:var(--fs-meta);font-weight:800}
.v74-file-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:var(--fs-meta)}
.trash-check{display:flex;align-items:center;justify-content:center}
.account-rules{margin-top:-4px}
.p75-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:9px;border-bottom:1px solid var(--border);font-size:12px;font-weight:800}
.p75-payment-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:14px}
.p75-payment-summary>div{padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.p75-payment-summary span{display:block;color:var(--text-muted);font-size:var(--fs-meta)}
.p75-payment-summary strong{display:block;margin-top:4px;font-size:18px}
.p75-payment-form,.p75-payment-history{display:grid;gap:12px}
.p75-payment-modal{width:min(980px,100%)}
.security-back{justify-self:start}

/* Persistent notifications */
.notification-list{display:grid}
.notification-item{appearance:none;width:100%;min-width:0;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px 14px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);text-align:left;cursor:pointer}
.notification-item:last-child{border-bottom:0}
.notification-item:hover{background:var(--surface-muted)}
.notification-item.is-unread{background:color-mix(in srgb,var(--primary-soft) 55%,var(--surface))}
.notification-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:var(--primary-soft);color:var(--primary-text)}
.notification-icon svg{width:17px;height:17px}
.notification-copy{min-width:0;display:grid;gap:2px}
.notification-copy b,.notification-copy small,.notification-copy em{min-width:0;overflow-wrap:anywhere}
.notification-copy b{font-size:11px}
.notification-copy small{color:var(--text-secondary);font-size:var(--fs-meta)}
.notification-copy em{color:var(--text-muted);font-size:var(--fs-meta);font-style:normal}
.notification-state{padding:4px 7px;border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta);font-weight:750;white-space:nowrap}
.notification-item.is-unread .notification-state{background:var(--primary-soft);color:var(--primary-text)}
.lead-row.is-highlight{animation:lead-highlight 1.8s var(--ease)}
@keyframes lead-highlight{0%,35%{box-shadow:inset 0 0 0 2px var(--primary);background:var(--primary-soft)}100%{box-shadow:inset 0 0 0 0 transparent;background:transparent}}

.password-policy-auto{display:grid;gap:7px;margin-top:-4px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted)}
.password-policy-auto .password-progress{height:5px;overflow:hidden;border-radius:999px;background:var(--border)}
.password-policy-auto .password-progress>i{display:block;width:0;height:100%;border-radius:inherit;background:var(--primary);transition:width .18s var(--ease)}
.password-policy-auto .password-rules{display:flex;gap:5px 8px;flex-wrap:wrap;color:var(--text-muted);font-size:var(--fs-meta)}
.password-policy-auto .password-rules span{display:inline-flex;align-items:center;gap:4px}
.password-policy-auto .password-rules span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--border-strong)}
.password-policy-auto .password-rules span.ok{color:var(--success-text)}
.password-policy-auto .password-rules span.ok::before{background:var(--success)}

/* Modal, confirm and notifications */
.modal-wrap{position:fixed;z-index:var(--z-modal);inset:0;display:grid;place-items:center;padding:clamp(8px,3vw,28px);background:var(--overlay);animation:overlay-in .16s var(--ease)}
@keyframes overlay-in{from{opacity:0}to{opacity:1}}
.modal{width:min(720px,100%);max-height:min(88vh,920px);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow-lg);animation:modal-in .18s var(--ease)}
@keyframes modal-in{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
.modal.p75-modal,.modal.c75-modal{width:min(980px,100%)}
.modal.p75-security-modal{width:min(1120px,100%)}
.modal-head{min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 16px;border-bottom:1px solid var(--border);background:var(--surface-raised)}
.modal-head h3{margin:0;font-size:17px;letter-spacing:-.025em}
.modal-head .close{position:relative;width:36px;height:36px;min-height:36px;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:transparent;font-size:0;cursor:pointer}
.modal-head .close::before,.modal-head .close::after{content:"";position:absolute;top:50%;left:50%;width:15px;height:1.5px;border-radius:99px;background:var(--text-muted)}
.modal-head .close::before{transform:translate(-50%,-50%) rotate(45deg)}
.modal-head .close::after{transform:translate(-50%,-50%) rotate(-45deg)}
.modal-head .close:hover{border-color:var(--primary-text);background:var(--primary-soft)}
.modal-head .close:hover::before,.modal-head .close:hover::after{background:var(--primary)}
.modal-body{min-height:0;padding:18px;overflow:auto;overscroll-behavior:contain}
.modal-body>form{display:grid;gap:14px}
.modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin:18px -18px -18px;padding:13px 18px;border-top:1px solid var(--border);background:var(--surface-muted)}
.confirm-ui>p{margin:0;color:var(--text-secondary);font-size:12px;line-height:1.6}
.confirm-ui .modal-actions{margin-top:18px}
.qr-modal-content{display:grid;justify-items:center;gap:12px;text-align:center}
.qr-modal-content p{max-width:440px;margin:0;color:var(--text-muted);font-size:11px}
.toasts{position:fixed;z-index:var(--z-toast);right:18px;bottom:18px;width:min(390px,calc(100% - 36px));display:grid;gap:8px;pointer-events:none}
.toast{position:relative;min-height:52px;display:grid;grid-template-columns:28px minmax(0,1fr) 36px;align-items:center;gap:8px;padding:8px 8px 8px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised);color:var(--text);box-shadow:var(--shadow-lg);font-size:11px;font-weight:650;line-height:1.45;animation:toast-in .22s var(--ease);pointer-events:auto}
.toast-icon{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--success-soft);color:var(--success-text)}
.toast-icon svg{width:16px;height:16px}
.toast.info .toast-icon{background:var(--info-soft);color:var(--info-text)}
.toast.warning .toast-icon{background:var(--warning-soft);color:var(--warning-text)}
.toast.error .toast-icon,.toast.err .toast-icon{background:var(--danger-soft);color:var(--danger-text)}
.toast.error,.toast.err{border-color:color-mix(in srgb,var(--danger) 28%,var(--border))}
.toast-copy{min-width:0;overflow-wrap:break-word;word-break:normal}
.toast-close{width:36px;height:36px;min-height:36px;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);display:grid;place-items:center;cursor:pointer}
.toast-close:hover{background:var(--surface-muted);color:var(--text)}
.toast-close svg{width:17px;height:17px}
@keyframes toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* Tablet and responsive behaviour */
@media(max-width:1280px){
  .stats.six{grid-template-columns:repeat(3,minmax(0,1fr))}
  .stats article{min-height:94px}
  .health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .health-item:nth-child(2){border-right:0}
  .health-item:nth-child(-n+2){border-bottom:1px solid var(--border)}
  .analytics-body>.four{grid-template-columns:repeat(2,minmax(0,1fr))}
  .c75-form-grid.four,.p75-form-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mail-settings-form .modal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .security-log{grid-template-columns:1fr}
}

@media(max-width:1100px){
  :root{--topbar-h:78px}
  .app{grid-template-columns:minmax(0,1fr)}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:min(var(--sidebar-w),86%);height:100vh;height:100dvh;max-height:100dvh;transform:translateX(-104%);box-shadow:var(--shadow-lg);transition:transform .22s var(--ease)}
  .sidebar.open{transform:translateX(0)}
  .sidebar-close{position:absolute;top:15px;right:13px;width:36px;height:36px;display:grid;place-items:center;padding:0;border:1px solid rgba(230,236,242,.1);border-radius:var(--radius-sm);background:rgba(230,236,242,.05);color:#E6ECF2;cursor:pointer}
  .sidebar-close svg{width:18px;height:18px}
  .sidebar-head{padding-right:44px}
  .sidebar-scrim{position:fixed;z-index:35;inset:0;display:block;border:0;background:var(--overlay);opacity:0;visibility:hidden;transition:.2s var(--ease)}
  .sidebar-scrim.open{opacity:1;visibility:visible}
  .mobile-menu{display:inline-flex}
  .topbar{grid-template-columns:auto minmax(180px,1fr) minmax(240px,420px) auto;padding-inline:20px}
  .content{padding:24px 20px}
  .three-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .three-grid>.panel:last-child{grid-column:1/-1}
  .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .client-ticket-shell,.ticket-shell{grid-template-columns:minmax(270px,330px) minmax(0,1fr)}
  .create-site-form{grid-template-columns:1fr}
  .payment-publish-section,.dropzone.full,.publish-footer{grid-column:auto}
  .brief-module-grid,.brief-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mail-test-form{grid-template-columns:1fr 1fr}
  .mail-test-form .btn{grid-column:1/-1;justify-self:end}
}

@media(max-width:900px){
  .progress-grid,.account-grid,.payment-client-grid{grid-template-columns:1fr}
  .stats.four,.commerce-metrics,.owner-commerce-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .commerce-metrics article:nth-child(2),.owner-commerce-metrics article:nth-child(2){border-right:0}
  .commerce-metrics article:nth-child(-n+2),.owner-commerce-metrics article:nth-child(-n+2){border-bottom:1px solid var(--border)}
  .weekly-summary{grid-template-columns:1fr}
  .weekly-copy{border-right:0;border-bottom:1px solid var(--border)}
  .file-toolbar{align-items:flex-start;flex-direction:column}
  .file-tools{width:100%;flex-wrap:wrap}
  .search-file{flex:1}
  .search-file input{width:100%}
  .file-table-head,.file-row{grid-template-columns:32px minmax(180px,1fr) 80px 110px}
  .file-table-head>span:last-child{display:none}
  .file-actions{grid-column:2/-1;justify-content:flex-start}
  .client-ticket-shell,.ticket-shell{min-height:600px;grid-template-columns:minmax(240px,300px) minmax(0,1fr)}
  .security-modal-grid{grid-template-columns:1fr}
  .security-block.security-mail,.security-block.security-events{grid-column:auto}
  .mail-status-grid,.mail-settings-form .modal-grid{grid-template-columns:1fr}
  .p75-client-card{grid-template-columns:1fr 1fr}
  .p75-client-actions{grid-column:1/-1;justify-content:flex-start}
  .fs-layout{grid-template-columns:1fr;min-height:0}
  .fs-roots{display:flex;gap:5px;overflow-x:auto;border-right:0;border-bottom:1px solid var(--border)}
  .fs-root{width:auto;min-width:145px}
  .c75-catalog-editor,.p75-catalog-editor{grid-template-columns:1fr}
  .c75-editor-preview,.p75-editor-preview{grid-template-columns:170px minmax(0,1fr);align-items:start;padding:0 0 18px;border-right:0;border-bottom:1px solid var(--border)}
  .c75-editor-image,.p75-editor-image{grid-row:1/4}
  .c75-module-grid,.p75-module-grid,.p75-check-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:760px){
  :root{--topbar-h:72px}
  .topbar{grid-template-columns:auto minmax(0,1fr) auto;gap:10px;min-height:var(--topbar-h);padding:9px 14px}
  .topbar .global-search{grid-column:1/-1;grid-row:2;display:none}
  .page-context{font-size:var(--fs-meta)}
  .page-title h1,.topbar h1{font-size:19px}
  .page-title p,.topbar p{display:none}
  .content{padding:16px 14px 24px}
  .view{gap:14px}
  .panel-head{min-height:62px;padding:13px 14px}
  .panel-head h3{font-size:16px}
  .hero-panel,.owner-hero{align-items:flex-start;padding:18px}
  .hero-panel h2,.owner-hero h2{font-size:25px}
  .overview-metrics,.analytic-stats,.analytics-body>.stats{grid-template-columns:1fr}
  .overview-metrics .metric,.stats article{min-height:88px}
  .three-grid{grid-template-columns:1fr}
  .three-grid>.panel:last-child{grid-column:auto}
  .chart{min-height:220px;padding:14px}
  .chart-col{height:176px}
  .health-grid{grid-template-columns:1fr}
  .health-item{border-right:0;border-bottom:1px solid var(--border)}
  .health-item:nth-child(3){border-bottom:1px solid var(--border)}
  .health-item:last-child{border-bottom:0}
  .weekly-events{grid-template-columns:1fr}
  .weekly-events>span{border-right:0;border-bottom:1px solid var(--border)}
  .weekly-events>span:last-child{border-bottom:0}
  .version-card{grid-template-columns:42px minmax(0,1fr)}
  .version-card>.btn,.version-card>label.btn{grid-column:1/-1;width:100%}
  .version-progress{grid-column:1/-1}
  .client-ticket-shell,.ticket-shell{position:relative;display:block;min-height:calc(100dvh - 122px)}
  .client-ticket-sidebar,.ticket-sidebar{border-right:0}
  .client-ticket-list,.ticket-list{max-height:none;min-height:420px}
  .client-ticket-conversation,.ticket-conversation{position:absolute;z-index:2;inset:0;display:none;background:var(--surface-muted)}
  .client-ticket-shell.conversation-open .client-ticket-conversation,.ticket-shell.conversation-open .ticket-conversation{display:block}
  .client-ticket-back{display:inline-flex}
  .message-list,.client-message-list{height:calc(100dvh - 330px);min-height:280px}
  .message,.client-message{max-width:88%}
  .c75-catalog-row,.p75-catalog-row{grid-template-columns:64px minmax(0,1fr);gap:10px}
  .c75-catalog-media,.p75-catalog-media{width:62px;height:48px}
  .c75-catalog-price,.p75-catalog-price{grid-column:2;text-align:left}
  .c75-row-actions,.p75-row-actions{grid-column:1/-1;justify-content:flex-start}
  .c75-transaction,.p75-transaction{grid-template-columns:minmax(105px,.42fr) minmax(0,1fr);align-items:start}
  .c75-transaction-side,.p75-transaction-side{grid-column:1/-1;grid-template-columns:1fr auto;align-items:center;justify-items:stretch;text-align:left}
  .c75-transaction-side .c75-status-picker,.p75-transaction-side .p75-status-picker{justify-self:end}
  .client-payment-row,.payment-row{align-items:start}
  .c75-form-grid,.p75-form-grid,.payment-client-fields,.payment-config-grid,.modal-grid,.field-grid,.c75-form-grid.two,.p75-form-grid.two,.field-grid.two{grid-template-columns:1fr}
  .span-2{grid-column:auto}
  .create-site-form,.brief-form{padding:12px}
  .form-section{padding:14px}
  .section-title{display:grid}
  .section-title>span{text-align:left}
  .toggle-stack,.brief-main-grid,.brief-choice-row,.brief-industry-grid,.brief-module-grid,.brief-feature-grid,.brief-payment-types{grid-template-columns:1fr}
  .brief-service-row{grid-template-columns:1fr auto}
  .brief-service-row input,.brief-service-row select{grid-column:1}
  .brief-service-row button{grid-column:2;grid-row:1/5}
  .lead-head,.site-head,.client-head{display:none}
  .lead-row,.site-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:13px 14px}
  .lead-row>*:not(.lead-row-actions),.site-row>*:not(.site-actions){white-space:normal;overflow-wrap:break-word;word-break:normal}
  .lead-row-actions,.site-actions{grid-column:1/-1;justify-content:flex-start}
  .p75-client-card{grid-template-columns:1fr;padding:13px 14px}
  .p75-client-actions{grid-column:auto}
  .client-card-summary,.client-card-columns{grid-template-columns:1fr}
  .lead-board{grid-template-columns:repeat(4,260px)}
  .analytics-body>.four{grid-template-columns:1fr}
  .fs-row{grid-template-columns:1fr}
  .fs-actions{justify-content:flex-start;padding-left:50px}
  .security-block{padding:14px}
  .mail-test-form{grid-template-columns:1fr}
  .mail-test-form .btn{grid-column:auto;justify-self:stretch}
  .security-log-row{grid-template-columns:94px minmax(0,1fr) 18px}
  .p75-payment-summary{grid-template-columns:1fr}
  .notification-item{grid-template-columns:34px minmax(0,1fr);padding:11px 12px}
  .notification-state{grid-column:2;justify-self:start}
  .modal-wrap{padding:8px}
  .modal{max-height:calc(100dvh - 16px);border-radius:var(--radius-md)}
  .modal-head{min-height:56px;padding:10px 12px}
  .modal-head h3{font-size:15px}
  .modal-body{padding:14px}
  .modal-actions{margin:16px -14px -14px;padding:11px 14px}
  .c75-editor-preview,.p75-editor-preview{grid-template-columns:120px minmax(0,1fr)}
  .c75-module-grid,.p75-module-grid,.p75-check-grid{grid-template-columns:1fr}
}

/* Touch comfort: on coarse pointers every control keeps a finger-sized hit area. */
@media(max-width:600px){
  input[type="checkbox"],input[type="radio"]{width:20px;height:20px;min-width:20px}
  .file-select,.trash-check,.file-row label,.file-table-head label{display:inline-grid;place-items:center;min-width:36px;min-height:36px}
  .file-select input,.trash-check input{position:relative;cursor:pointer}
  .file-select input::before,.trash-check input::before{content:"";position:absolute;inset:-8px;border-radius:var(--radius-sm)}
  .brief-preview summary,.c75-status-picker summary,.p75-status-picker summary{min-height:34px;display:flex;align-items:center}
  .sidebar-head .brand,.auth-card .brand{min-height:34px;align-items:center}
  .site-card-link,.p75-client-card a[href^="http"],.site-row a[href^="http"]{display:inline-flex;align-items:center;min-height:32px}
}

@media(max-width:560px){
  .sidebar{width:min(280px,88%)}
  .topbar{padding-inline:10px}
  .topbar-actions .open-site{width:40px;padding:0;font-size:0}
  .topbar-actions .open-site svg{width:17px;height:17px}
  .content{padding:13px 10px 22px}
  .auth{padding:12px}
  .auth-card{padding:22px 18px}
  .recovery-codes{grid-template-columns:1fr}
  .hero-panel,.owner-hero{display:grid;gap:14px;padding:16px}
  .hero-side{justify-items:start}
  .site-link-actions{justify-content:flex-start}
  .quick-grid{grid-template-columns:1fr;padding:12px}
  .client-ticket-head{align-items:flex-start;flex-direction:column}
  .client-ticket-create{width:100%;flex-wrap:wrap}
  .stats.six{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stats.four,.commerce-metrics,.owner-commerce-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .panel-head.tools{align-items:flex-start;flex-direction:column}
  .panel-head.tools .tool-row{width:100%;justify-content:flex-start}
  .panel-head.tools .tool-row>select,.panel-head.tools .tool-row>input,.panel-head.tools .search-field{width:100%}
  .view-tools{justify-content:flex-start}
  .compact-field{width:100%;justify-content:space-between}
  .compact-field select{flex:1}
  .file-toolbar{padding:10px}
  .file-tools{display:grid;grid-template-columns:1fr auto}
  .file-mode{grid-column:1/-1}
  .search-file{min-width:0}
  .selection-bar{align-items:flex-start;flex-wrap:wrap}
  .selection-bar>span{width:100%;margin-right:0}
  .file-dropzone{flex-direction:column;margin:10px;padding:14px}
  .file-table-head{display:none}
  .file-row{display:grid;grid-template-columns:26px minmax(0,1fr);gap:9px;padding:12px 10px}
  .file-cell{grid-column:2;font-size:var(--fs-meta)}
  .file-row>.file-cell:nth-child(3)::before{content:"Размер: ";color:var(--text-muted)}
  .file-row>.file-cell:nth-child(4)::before{content:"Изменён: ";color:var(--text-muted)}
  .file-actions{grid-column:1/-1;padding-left:35px}
  .c75-transaction,.p75-transaction,.client-payment-row,.payment-row{grid-template-columns:1fr}
  .c75-transaction-side,.p75-transaction-side{grid-column:auto;grid-template-columns:1fr;justify-items:start;text-align:left}
  .c75-transaction-side .c75-status-picker,.p75-transaction-side .p75-status-picker{justify-self:start}
  .c75-editor-preview,.p75-editor-preview{grid-template-columns:1fr;padding-bottom:14px}
  .c75-editor-image,.p75-editor-image{grid-row:auto;max-width:220px}
  .payment-client-actions,.brief-actions,.publish-footer{align-items:stretch;flex-direction:column}
  .payment-client-actions .btn,.brief-actions .btn,.publish-footer .btn{width:100%}
  .brief-actions .form-status,.publish-footer>div{margin-right:0}
  .trash-row{grid-template-columns:28px minmax(0,1fr)}
  .trash-actions{grid-column:1/-1;justify-content:flex-start;padding-left:40px}
  .toasts{right:10px;bottom:10px;width:calc(100% - 20px)}
  .modal-actions{align-items:stretch;flex-direction:column-reverse}
  .modal-actions .btn,.modal-actions a.btn{width:100%}
  .preview-meta,.replace-grid{grid-template-columns:1fr}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto;animation-duration:.01ms;animation-iteration-count:1;transition-duration:.01ms}
}

@media print{
  .sidebar,.topbar,.toasts,.modal-wrap{display:none}
  .app{display:block}
  .content{max-width:none;padding:0}
  .panel,.hero-panel,.progress-card,.version-card{box-shadow:none;break-inside:avoid}
}

/* Compatibility geometry for established production markup. */
.workspace{width:100%;max-width:100vw;overflow-x:clip}
.topbar>*,.panel-head>*,.tool-row>*,.view-tools>*,.lead-row>*,.site-row>*,.p75-client-card>*,.c75-transaction>*,.p75-transaction>*{min-width:0}
.panel-head.tools,.tool-row,.view-tools,.topbar-actions,.lead-row-actions,.site-actions,.file-actions,.fs-actions{min-width:0}
.simple-row>div,.attention-item>span,.notification-copy{min-width:0}
.simple-row b,.simple-row p,.attention-item b,.attention-item small,.notification-copy b,.notification-copy small{overflow-wrap:break-word;word-break:normal}

/* Sidebar: preserve the burger fix and make long customer slugs readable. */
.sidebar{height:100vh;height:100dvh;max-height:100dvh}
.sidebar nav{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}
.sidebar-foot{flex:0 0 auto}
#siteSlugSmall{font-size:var(--fs-meta);letter-spacing:.045em;text-transform:none;line-height:1.25;white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

/* Operational text keeps a readable floor. */
.lead-row,.site-row,.file-row,.c75-transaction,.p75-transaction{font-size:12px}
.lead-name span,.site-name a,.c75-transaction-main span,.p75-transaction-main span,.c75-transaction-id,.p75-transaction-id,.p75-client-person small,.p75-client-meta small{font-size:11px;line-height:1.45}
.c75-transaction-main b,.p75-transaction-main b{font-size:13px}
.c75-transaction-main p,.p75-transaction-main p{margin:4px 0 0;color:var(--text-secondary);font-size:11px;line-height:1.45;overflow-wrap:anywhere}
.c75-transaction-id b,.p75-transaction-id b{display:block;margin:2px 0;font-size:12px;color:var(--text)}

/* File inputs are always custom controls. Browser-native filename text must never overlap buttons. */
input[type="file"][hidden],input[type="file"].hidden-file,.c75-native-file,.p75-native-file{display:none;width:0;height:0;position:absolute;opacity:0;pointer-events:none}
.file-control{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.file-control>.btn{flex:0 0 auto}
.file-control-state{min-width:0;max-width:min(320px,100%);color:var(--text-muted);font-size:var(--fs-meta);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-control-state.has-file{color:var(--text-secondary)}
.c74-file-name{display:none}

/* Filters and tabs never hide options. */
.client-ticket-filters,.ticket-filters,.commerce-tabs,.owner-commerce-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:9px;border-bottom:1px solid var(--border);overflow:visible}
.client-ticket-filters .ui-tab,.ticket-filters .ui-tab,.commerce-tabs .ui-tab,.owner-commerce-tabs .ui-tab{flex:0 1 auto;min-width:max-content}
.segmented{max-width:100%;flex-wrap:wrap}

/* Dropdowns use viewport-fixed coordinates supplied by ui-runtime.v816.js. */
.c75-status-menu.is-floating,.p75-status-menu.is-floating,.p75-more>div.is-floating,.term-menu>div.is-floating,.site-more>div.is-floating{
  position:fixed;z-index:var(--z-popover);top:var(--popover-top);left:var(--popover-left);right:auto;bottom:auto;
  width:var(--popover-width,auto);max-width:calc(100vw - 20px);max-height:min(360px,calc(100dvh - 20px));overflow:auto
}
.panel.popover-open,.c75-transaction.popover-open,.p75-transaction.popover-open,.p75-client-card.popover-open,.site-row.popover-open{overflow:visible}

/* Commerce transactions / bookings: clear hierarchy instead of compressed columns. */
.c75-transaction,.p75-transaction{grid-template-columns:minmax(150px,.55fr) minmax(260px,1.5fr) minmax(170px,.55fr);gap:18px;padding:16px 18px;align-items:start}
.c75-transaction-id,.p75-transaction-id{display:grid;gap:4px;color:var(--text-muted)}
.c75-transaction-id::before,.p75-transaction-id::before{content:attr(data-label);color:var(--text-muted);font-size:var(--fs-meta);font-weight:850;text-transform:uppercase;letter-spacing:.07em}
.c75-transaction-main,.p75-transaction-main{display:grid;gap:3px}
.c75-transaction-side,.p75-transaction-side{align-self:center;justify-items:end;gap:8px}
.c75-payment-label,.p75-payment-label{color:var(--text);font-size:12px;font-weight:800}
.c75-status,.p75-status{min-height:36px;padding:7px 10px}
.c75-status-menu,.p75-status-menu{min-width:190px;padding:6px}
.c75-status-menu button,.p75-status-menu button{min-height:38px;padding:0 10px;font-size:11px}

/* Owner clients: stable identity block, actual favicon when available, and a visible actions menu. */
.p75-client-card{grid-template-columns:minmax(230px,1.05fr) minmax(260px,1.1fr) minmax(185px,.7fr) minmax(250px,auto);gap:18px;padding:14px 18px;overflow:visible}
.p75-client-site{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center}
.p75-avatar{position:relative;width:42px;height:42px;overflow:hidden}
.p75-avatar-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:7px;background:var(--surface);opacity:0;transition:opacity .15s var(--ease)}
.p75-avatar.has-image .p75-avatar-img{opacity:1}
.p75-avatar-fallback{display:grid;place-items:center;width:100%;height:100%}
.p75-client-site a{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--primary-text);font-size:11px}
.p75-client-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:nowrap}
.p75-more{position:relative;flex:0 0 auto}
.p75-more>summary{width:40px;height:40px;min-height:40px}
.p75-more>div{min-width:205px;padding:6px}
.p75-more button{min-height:38px;padding:0 10px}

/* Owner sites: expiry and actions are grouped instead of a grid of tiny buttons. */
.site-head,.site-row{grid-template-columns:minmax(170px,1.1fr) minmax(170px,1fr) 105px 120px minmax(170px,.72fr) minmax(190px,.72fr)}
.expiry-card{display:grid;gap:5px;align-content:center}
.expiry-card>span{color:var(--text-muted);font-size:var(--fs-meta)}
.expiry-card>b{font-size:12px;color:var(--text)}
.term-menu,.site-more{position:relative}
.term-menu>summary,.site-more>summary{list-style:none;cursor:pointer}
.term-menu>summary::-webkit-details-marker,.site-more>summary::-webkit-details-marker{display:none}
.term-menu>div,.site-more>div{position:absolute;z-index:var(--z-popover);top:calc(100% + 6px);right:0;min-width:190px;display:grid;gap:3px;padding:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-raised);box-shadow:var(--shadow-lg)}
.term-menu button,.site-more button,.site-more a{appearance:none;width:100%;min-height:38px;display:flex;align-items:center;padding:0 10px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text);font-size:11px;font-weight:650;text-align:left;cursor:pointer}
.term-menu button:hover,.site-more button:hover,.site-more a:hover{background:var(--surface-muted)}
.site-more button.danger{color:var(--danger-text)}
.site-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:nowrap}
.site-actions>.mini{min-height:38px;padding-inline:12px}
.site-actions .site-more>summary{width:40px;height:38px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);font-weight:900}
.site-actions .site-more>summary svg{width:18px;height:18px}

/* Lead status/delete never fight for the same width. */
.lead-head,.lead-row{grid-template-columns:minmax(180px,1.05fr) minmax(190px,.9fr) 120px minmax(230px,1.3fr) minmax(205px,.72fr)}
.lead-row-actions{display:grid;grid-template-columns:minmax(150px,1fr) auto;align-items:center;gap:7px;justify-content:stretch}
.lead-row-actions .status-select{width:100%;min-width:0;min-height:38px}
.lead-row-actions .mini{min-height:38px}

/* Modal contents and actions cannot be clipped by short screens. */
.modal{max-height:calc(100dvh - 24px)}
.modal-body{min-height:0;overflow:auto}
.modal-head>div,.modal-head>h3{min-width:0}
.modal-head h3{overflow-wrap:break-word;word-break:normal}
.modal-head .close{flex:0 0 36px}
.modal-body form>*{min-width:0}

/* File manager row actions stay inside the surface. */
.file-actions,.fs-actions{min-width:0;flex-wrap:wrap}
.file-actions .mini,.fs-actions .mini{min-height:36px}

@media(max-width:1320px){
  .lead-head,.site-head{display:none}
  .lead-row,.site-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;padding:16px;align-items:start}
  .lead-row>*,.site-row>*{position:relative;padding-top:18px;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word;word-break:normal}
  .lead-row>*::before,.site-row>*::before{content:attr(data-label);position:absolute;top:0;left:0;color:var(--text-muted);font-size:var(--fs-meta);font-weight:850;line-height:1;text-transform:uppercase;letter-spacing:.07em}
  .lead-row-actions,.site-actions{grid-column:1/-1;padding-top:20px}
  .site-actions{justify-content:flex-start}
  .p75-client-card{grid-template-columns:repeat(2,minmax(0,1fr))}
  .p75-client-actions{grid-column:1/-1;justify-content:flex-start}
}

@media(max-width:900px){
  .topbar{grid-template-columns:auto minmax(0,1fr) auto;gap:12px}
  .content{padding:20px 16px 28px}
  .panel-head{flex-wrap:wrap}
  .c75-transaction,.p75-transaction{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
  .c75-transaction-main,.p75-transaction-main{grid-column:2}
  .c75-transaction-side,.p75-transaction-side{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left}
  .c75-transaction-side .c75-status-picker,.p75-transaction-side .p75-status-picker{margin-left:auto}
  .file-table-head,.file-row{grid-template-columns:32px minmax(180px,1fr) 85px 115px}
  .file-table-head>span:last-child{display:none}
  .file-actions{grid-column:2/-1;justify-content:flex-start}
}

@media(max-width:760px){
  :root{--topbar-h:64px}
  .topbar{min-height:var(--topbar-h);padding:8px 12px}
  .topbar .global-search{display:none}
  .content{padding:14px 12px 24px}
  .view{gap:16px}
  .panel-head{min-height:unset;gap:12px;padding:14px}
  .panel-head.tools{align-items:stretch}
  .panel-head.tools .tool-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .panel-head.tools .tool-row>*{width:100%;min-width:0}
  .file-control{display:grid;grid-template-columns:minmax(0,1fr)}
  .file-control>.btn{width:100%}
  .file-control-state{max-width:100%;white-space:normal}
  .client-ticket-filters,.ticket-filters,.commerce-tabs,.owner-commerce-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;width:100%}
  .client-ticket-filters .ui-tab,.ticket-filters .ui-tab,.commerce-tabs .ui-tab,.owner-commerce-tabs .ui-tab{width:100%;min-width:0;min-height:40px;padding:7px 8px;white-space:normal;line-height:1.2;text-align:center}
  .c75-transaction,.p75-transaction{grid-template-columns:1fr;padding:14px 12px;gap:11px}
  .c75-transaction-main,.p75-transaction-main,.c75-transaction-side,.p75-transaction-side{grid-column:auto}
  .c75-transaction-side,.p75-transaction-side{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}
  .c75-transaction-side .c75-status-picker,.p75-transaction-side .p75-status-picker{justify-self:end;margin-left:0}
  .modal-wrap{align-items:end;padding:6px}
  .modal{width:100%;max-height:calc(100dvh - 12px);border-radius:14px}
  .modal-head{position:sticky;top:0;z-index:1}
  .modal-actions{position:sticky;bottom:0;z-index:1}
}

@media(max-width:560px){
  .sidebar{width:min(290px,90%)}
  .topbar{gap:8px;padding-inline:10px}
  .page-title h1,.topbar h1{font-size:18px}
  .content{padding:13px 10px 22px}
  .panel-head.tools{align-items:flex-start;flex-direction:column}
  .panel-head.tools .tool-row{grid-template-columns:1fr}
  .lead-row,.site-row{grid-template-columns:1fr;gap:11px;padding:14px 12px}
  .lead-row-actions,.site-actions{grid-column:auto;width:100%;padding-top:20px}
  .lead-row-actions{grid-template-columns:1fr}
  .lead-row-actions .mini{width:100%}
  .site-actions{display:grid;grid-template-columns:minmax(0,1fr) 44px;justify-content:stretch}
  .site-actions>.mini{width:100%}
  .site-actions .site-more{justify-self:end}
  .p75-client-card{grid-template-columns:1fr;padding:14px 12px;gap:13px}
  .p75-client-actions{grid-column:auto;display:grid;grid-template-columns:1fr 1fr 42px;width:100%;justify-content:stretch}
  .p75-client-actions>.btn{width:100%;min-width:0;padding-inline:8px}
  .p75-more{justify-self:end}
  .file-table-head{display:none}
  .file-row{display:grid;grid-template-columns:26px minmax(0,1fr);gap:9px;padding:12px 10px}
  .file-cell{grid-column:2;font-size:var(--fs-meta)}
  .file-row>.file-cell:nth-child(3)::before{content:"Размер: ";color:var(--text-muted)}
  .file-row>.file-cell:nth-child(4)::before{content:"Изменён: ";color:var(--text-muted)}
  .file-actions{grid-column:1/-1;padding-left:35px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;justify-content:stretch}
  .file-actions .mini{width:100%;justify-content:center}
  .client-ticket-filters,.ticket-filters,.commerce-tabs,.owner-commerce-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .modal-body{padding:12px}
  .modal-actions{margin:14px -12px -12px;padding:10px 12px}
}

@media(max-width:390px){
  .client-ticket-filters,.ticket-filters,.commerce-tabs,.owner-commerce-tabs{grid-template-columns:1fr}
  .p75-client-actions{grid-template-columns:1fr 42px}
  .p75-client-actions>.btn:first-child{grid-column:1/-1}
  .file-actions{grid-template-columns:1fr}
  .site-actions{grid-template-columns:1fr 44px}
  .password-rules{gap:5px}
  .password-rules span{font-size:var(--fs-meta)}
}
.version-file-control{justify-content:flex-end;align-items:center}
.version-file-control .file-control-state{max-width:210px}
@media(max-width:760px){.version-card>.version-file-control{grid-column:1/-1;width:100%;justify-content:stretch}.version-file-control .file-control-state{max-width:100%}}

/* Production: structured commerce bookings === */
.booking-list{display:grid;gap:12px;padding:14px;background:var(--surface-muted)}
.booking-card{min-width:0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-xs);overflow:visible}
.booking-card-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:15px 16px;border-bottom:1px solid var(--border)}
.booking-reference{min-width:0;display:grid;gap:3px}
.booking-reference>span,.booking-status-block>span,.booking-info>span{color:var(--text-muted);font-size:var(--fs-meta);line-height:1.2;font-weight:850;text-transform:uppercase;letter-spacing:.08em}
.booking-reference>b{min-width:0;color:var(--text);font-size:12px;line-height:1.35;font-weight:800;overflow-wrap:break-word;word-break:normal}
.booking-reference>small{color:var(--text-secondary);font-size:11px;font-weight:600}
.booking-status-block{display:grid;gap:6px;justify-items:end;min-width:150px}
.booking-card-body{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(150px,.6fr);gap:0}
.booking-info{min-width:0;display:grid;align-content:start;gap:5px;padding:16px;border-right:1px solid var(--border)}
.booking-info:last-child{border-right:0}
.booking-info>strong{min-width:0;color:var(--text);font-size:14px;line-height:1.35;overflow-wrap:break-word;word-break:normal}
.booking-info>small{color:var(--text-secondary);font-size:11px;line-height:1.45;overflow-wrap:break-word;word-break:normal}
.booking-payment strong{font-size:13px}
.booking-card .c75-status-picker,.booking-card .p75-status-picker{position:relative;min-width:150px}
.booking-card .c75-status,.booking-card .p75-status{width:100%;justify-content:space-between;min-height:38px}
.booking-card .c75-status-menu,.booking-card .p75-status-menu{min-width:210px}

/* Production: analytics information architecture === */
.analytics-shell{display:grid;gap:14px}
.analytics-toolbar{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:18px 20px;border:1px solid var(--border);border-radius:var(--radius-md)}
.analytics-toolbar>div:first-child{min-width:0}
.analytics-toolbar h3{margin:3px 0 4px;font-size:20px;letter-spacing:-.025em}
.analytics-toolbar p{margin:0;color:var(--text-secondary);font-size:12px;line-height:1.45}
.analytics-period{flex:0 0 170px}
.analytics-owner-controls{display:flex;align-items:end;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.analytics-owner-controls .compact-field:first-child{min-width:190px}
.analytics-owner-controls .compact-field{min-width:130px}
.analytics-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.analytics-kpi{min-width:0;min-height:126px;display:flex;flex-direction:column;justify-content:space-between;gap:12px;padding:17px 18px;border:1px solid var(--border);border-radius:var(--radius-md)}
.analytics-kpi>div{display:grid;gap:8px}
.analytics-kpi span{color:var(--text-muted);font-size:11px;font-weight:800}
.analytics-kpi strong{color:var(--text);font-size:34px;line-height:1;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.analytics-kpi strong.analytics-time{font-size:clamp(20px,2.2vw,29px);line-height:1.12;letter-spacing:-.035em;white-space:normal}
.analytics-kpi>small{min-height:20px;display:inline-flex;align-items:center;align-self:flex-start;padding:4px 7px;border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta);font-weight:750;line-height:1.25}
.analytics-kpi>small.up{background:var(--success-soft);color:var(--success-text)}
.analytics-kpi>small.down{background:var(--danger-soft);color:var(--danger-text)}
.analytics-chart-panel,.analytics-breakdown{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}
.analytics-section-head{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 17px;border-bottom:1px solid var(--border)}
.analytics-section-head h3{margin:2px 0 0;font-size:14px;letter-spacing:-.015em}
.analytics-caption{color:var(--text-muted);font-size:var(--fs-meta);font-weight:650;text-align:right}
.analytics-chart{min-height:250px;padding:20px 18px 16px;background:linear-gradient(180deg,var(--surface-muted),var(--surface))}
.analytics-breakdown-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.analytics-breakdown .rank,.analytics-breakdown>div:last-child{padding:8px 16px 14px}
.analytics-breakdown .rank-row{min-height:40px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border-soft,var(--border))}
.analytics-breakdown .rank-row:last-child{border-bottom:0}
.analytics-breakdown .rank-row span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary);font-size:11px}
.analytics-breakdown .rank-row span:last-child{min-width:34px;text-align:right;color:var(--text);font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}
.analytics-health-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.analytics-health-card{position:relative;min-width:0;display:grid;gap:5px;padding:12px 14px 12px 18px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}
.analytics-health-card>i{position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--success)}
.analytics-health-card.warn>i{background:var(--warning)}
.analytics-health-card>span{color:var(--text-muted);font-size:var(--fs-meta);font-weight:750}
.analytics-health-card>b{min-width:0;color:var(--text);font-size:11px;line-height:1.35;overflow-wrap:anywhere}

@media(max-width:1100px){
  .analytics-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .analytics-health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .booking-card-body{grid-template-columns:repeat(2,minmax(0,1fr))}
  .booking-payment{grid-column:1/-1;border-top:1px solid var(--border);border-right:0}
}
@media(max-width:760px){
  .booking-list{padding:9px;gap:9px}
  .booking-card-head{grid-template-columns:1fr;gap:12px;padding:13px}
  .booking-status-block{justify-items:stretch;min-width:0}
  .booking-status-block>span{text-align:left}
  .booking-card .c75-status-picker,.booking-card .p75-status-picker{width:100%;min-width:0}
  .booking-card-body{grid-template-columns:1fr}
  .booking-info,.booking-payment{grid-column:auto;border-right:0;border-top:1px solid var(--border);padding:13px}
  .booking-info:first-child{border-top:0}
  .analytics-toolbar{align-items:stretch;flex-direction:column;padding:15px}
  .analytics-toolbar .analytics-period{flex-basis:auto;width:100%}
  .analytics-owner-controls{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .analytics-owner-controls .compact-field:first-child,.analytics-owner-controls .compact-field{min-width:0;width:100%}
  .analytics-owner-controls .btn{grid-column:1/-1;width:100%}
  .analytics-breakdown-grid{grid-template-columns:1fr}
  .analytics-chart{min-height:220px;padding:16px 12px 12px}
}
@media(max-width:520px){
  .analytics-kpis,.analytics-health-grid{grid-template-columns:1fr}
  .analytics-kpi{min-height:106px;padding:14px}
  .analytics-kpi strong{font-size:30px}
  .analytics-owner-controls{grid-template-columns:1fr}
  .analytics-owner-controls .btn{grid-column:auto}
  .analytics-section-head{align-items:flex-start;flex-direction:column;gap:5px}
  .analytics-caption{text-align:left}
}

/* ---- CRM: клиентская база ---- */
.contact-toolbar{padding:0 16px 12px}
.field-search input{width:100%;min-height:42px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}
.field-search input:focus{outline:none;border-color:var(--primary-text);box-shadow:0 0 0 3px var(--primary-soft)}
.contact-layout{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:0;border-top:1px solid var(--border);min-height:420px}
.contact-list{border-right:1px solid var(--border);overflow-y:auto;max-height:640px}
.contact-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;width:100%;padding:12px 16px;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer}
.contact-row:hover{background:var(--surface-muted)}
.contact-row.active{background:var(--primary-soft)}
.contact-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary-text);font-weight:800}
.contact-row-copy{min-width:0;display:grid;gap:2px}
.contact-row-copy b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-row-copy small{color:var(--text-muted);font-size:var(--fs-meta,11px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-row-sum{color:var(--text-muted);font-size:var(--fs-meta,11px);white-space:nowrap}
.contact-card{padding:18px;min-width:0;overflow-y:auto;max-height:640px}
.contact-card-head{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;min-width:0}
.contact-card-head h3{margin:0 0 4px;font-size:19px}
.contact-card-meta{margin:0;color:var(--text-muted);font-size:13px;overflow-wrap:break-word;word-break:normal}
.contact-card-actions{display:flex;flex-wrap:wrap;gap:8px}
.contact-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.contact-tag{padding:3px 8px;border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta,11px)}
.contact-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}
.contact-stats article{padding:11px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);min-width:0}
.contact-stats span{display:block;color:var(--text-muted);font-size:var(--fs-meta,11px)}
.contact-stats strong{font-size:16px;overflow-wrap:break-word;word-break:normal}
.contact-note{margin:0 0 14px;padding:11px 13px;border-left:3px solid var(--primary);background:var(--surface-muted);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:14px}
.contact-dupes{margin-bottom:14px;padding:12px 14px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm)}
.contact-dupes b{display:block;margin-bottom:8px;font-size:13px}
.contact-dupes small{display:block;margin-top:8px;color:var(--text-muted);font-size:var(--fs-meta,11px)}
.contact-dupe{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;min-width:0;padding:5px 0;font-size:13px}
.contact-note-form{display:grid;gap:8px;margin-bottom:16px}
.contact-note-form textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);resize:vertical}
.contact-note-form textarea:focus{outline:none;border-color:var(--primary-text);box-shadow:0 0 0 3px var(--primary-soft)}
.contact-note-form .btn{justify-self:start}
.contact-timeline{display:grid;gap:10px}
.contact-event{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:flex-start;gap:11px;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm)}
.contact-event-icon{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--surface-muted);color:var(--text-muted)}
.contact-event-icon svg{width:15px;height:15px}
.contact-event-order .contact-event-icon{background:var(--primary-soft);color:var(--primary-text)}
.contact-event-copy{min-width:0;display:grid;gap:3px}
.contact-event-copy b{font-size:14px;overflow-wrap:break-word;word-break:normal}
.contact-event-copy p{margin:0;color:var(--text-muted);font-size:13px;overflow-wrap:break-word;word-break:normal}
.contact-event-copy small{color:var(--text-muted);font-size:var(--fs-meta,11px)}
@media(max-width:900px){
  .contact-layout{grid-template-columns:minmax(0,1fr)}
  .contact-list{border-right:0;border-bottom:1px solid var(--border);max-height:280px}
  .contact-card{max-height:none}
  .contact-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  .contact-card-actions{width:100%}
  .contact-card-actions .btn{flex:1 1 auto;justify-content:center}
}

/* Метрика-ссылка: ведёт в раздел, из которого посчитана */
.metric-action{cursor:pointer;transition:border-color .2s,transform .2s}
.metric-action:hover{border-color:var(--primary-text)}
.metric-action:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.contact-link{color:var(--primary-text);text-decoration:none;border-bottom:1px solid transparent;overflow-wrap:anywhere}
.contact-link:hover{border-bottom-color:currentColor}
.contact-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:3px}

/* ---- CRM: журнал записи ---- */
.journal-bar{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:0 16px 12px}
.journal-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.journal-nav input[type=date]{min-height:40px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}
.journal-next svg{transform:rotate(180deg)}
.journal-filter-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding-top:12px;border-top:1px solid var(--border)}
.journal-filter-group{min-width:0;display:grid;gap:7px}
.journal-filter-group>span{color:var(--text-muted);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.journal-resource-switch,.journal-category-switch{display:flex;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:none}
.journal-resource-switch::-webkit-scrollbar,.journal-category-switch::-webkit-scrollbar{display:none}
.journal-chip{min-height:34px;padding:0 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font-size:13px;cursor:pointer}
.journal-chip.active{border-color:var(--primary-text);background:var(--primary-soft);color:var(--primary-text)}
.journal-category-chip{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.journal-category-chip>i{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--journal-category)}
.journal-unassigned{margin:0 16px 12px;padding:12px 14px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm)}
.journal-unassigned b{display:block;margin-bottom:8px;font-size:13px}
.journal-unassigned small{display:block;margin-top:8px;color:var(--text-muted);font-size:var(--fs-meta,11px)}
.journal-unassigned-list{display:flex;flex-wrap:wrap;gap:6px}
.journal-body{padding:0 16px 18px;overflow-x:auto}
.journal-grid{display:flex;gap:0;min-width:min-content;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}
.journal-axis{position:relative;flex:none;width:54px;height:calc(var(--journal-height) + 44px);border-right:1px solid var(--border);background:var(--surface-muted)}
.journal-axis span{position:absolute;left:0;right:6px;margin-top:44px;text-align:right;color:var(--text-muted);font-size:var(--fs-meta,11px);transform:translateY(-6px)}
.journal-column{flex:1 1 190px;min-width:190px;border-right:1px solid var(--border)}
.journal-column:last-child{border-right:0}
.journal-column-head{height:44px;display:grid;align-content:center;gap:1px;padding:0 10px;border-bottom:1px solid var(--border);background:var(--surface-muted)}
.journal-column-head b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.journal-column-head small{color:var(--text-muted);font-size:var(--fs-meta,11px)}
.journal-slot{position:relative;height:var(--journal-height);cursor:crosshair}
.journal-slot.is-closed{background:repeating-linear-gradient(135deg,var(--surface-muted),var(--surface-muted) 7px,transparent 7px,transparent 14px);cursor:not-allowed}
.journal-line{position:absolute;left:0;right:0;height:1px;background:var(--border);opacity:.7}
.journal-window{position:absolute;left:0;right:0;background:color-mix(in srgb,var(--primary-soft) 45%,transparent)}
.journal-booking{position:absolute;left:5px;right:5px;display:grid;align-content:start;gap:1px;padding:5px 8px;border:1px solid var(--primary);border-left:3px solid var(--primary);border-radius:7px;background:var(--surface-raised);color:var(--text);text-align:left;cursor:pointer;overflow:hidden}
.journal-booking b{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.journal-booking small{color:var(--text-muted);font-size:var(--fs-meta,11px)}
.journal-booking:hover{box-shadow:0 6px 18px rgba(18,24,31,.12)}
.journal-booking.att-came{border-color:var(--ps-accent-ink);border-left-color:var(--ps-accent-ink)}
.journal-booking.att-no_show{border-color:var(--danger,#12181F);border-left-color:var(--danger,#12181F);opacity:.75}
.journal-booking[style]{border-left-color:var(--journal-category);box-shadow:inset 3px 0 var(--journal-category)}
.journal-detail{display:grid;gap:12px}
.journal-detail-name{margin:0;font-size:17px;font-weight:750}
.journal-detail-meta{margin:0;color:var(--text-muted);font-size:13px;overflow-wrap:break-word;word-break:normal}
.journal-detail-comment{margin:0;padding:9px 11px;border-left:3px solid var(--border-strong);background:var(--surface-muted);font-size:13px}
.journal-detail-actions{display:flex;flex-wrap:wrap;gap:8px}
.journal-detail-hint{color:var(--text-muted);font-size:var(--fs-meta,11px)}
.resource-manager{display:grid;gap:14px}
.resource-list{display:grid;gap:8px}
.resource-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm)}
.resource-row.is-archived{opacity:.6}
.resource-row b{display:block;font-size:14px}
.resource-row small{color:var(--text-muted);font-size:var(--fs-meta,11px)}
.resource-row-actions{display:flex;gap:6px;flex-wrap:wrap}
.schedule-grid{display:grid;gap:8px;margin:0;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm)}
.schedule-grid legend{padding:0 6px;color:var(--text-muted);font-size:var(--fs-meta,11px)}
.schedule-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px}
.schedule-day{display:flex;align-items:center;gap:7px;min-width:0}
.schedule-row input[type=time]{min-height:36px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}
@media(max-width:900px){
  .journal-column{flex:1 1 auto;min-width:0}
  .journal-body{padding-inline:12px}
}
.switch-row{display:flex;align-items:center;gap:10px;min-height:38px}
.switch-row input[type=checkbox]{flex:none;width:18px;height:18px}
.switch-row span{font-size:14px}

/* ---- CRM: отчёт ---- */
.crm-report{margin-top:16px}
.crm-report-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:0 16px 4px}
.crm-report-kpis article{padding:13px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);min-width:0}
.crm-report-kpis span{display:block;color:var(--text-muted);font-size:var(--fs-meta,11px)}
.crm-report-kpis strong{display:block;font-size:20px;letter-spacing:-.02em}
.crm-report-kpis small{color:var(--text-muted);font-size:var(--fs-meta,11px);overflow-wrap:break-word;word-break:normal}
.crm-report-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding:14px 16px 18px}
.crm-report-block h4{margin:0 0 12px;font-size:14px}
.crm-report-empty{margin:0;color:var(--text-muted);font-size:13px}
.crm-bar-row{margin-bottom:12px;min-width:0}
.crm-bar-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px;margin-bottom:5px;min-width:0}
.crm-bar-head b{font-size:13.5px;overflow-wrap:break-word;word-break:normal}
.crm-bar-head small{color:var(--text-muted);font-size:var(--fs-meta,11px);white-space:nowrap}
.crm-bar{height:8px;border-radius:999px;background:var(--surface-muted);overflow:hidden}
.crm-bar i{display:block;height:100%;border-radius:999px;background:var(--primary)}
.crm-bar i.alt{background:color-mix(in srgb,var(--primary) 55%,var(--text-muted))}
@media(max-width:900px){
  .crm-report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .crm-report-body{grid-template-columns:minmax(0,1fr)}
}
.resource-manager-actions{display:flex;flex-wrap:wrap;gap:8px}
.resource-manager-actions .btn{flex:1 1 auto;justify-content:center}

/* ---- CRM: перетаскивание, неделя, особые дни ---- */
.journal-booking{touch-action:none;user-select:none}
.journal-booking.is-dragging{z-index:5;opacity:.92;box-shadow:0 14px 32px rgba(18,24,31,.24);cursor:grabbing}
.journal-mode-switch{display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden}
.journal-mode{min-height:34px;padding:0 14px;border:0;background:transparent;color:var(--text-muted);font-size:13px;font-weight:700;cursor:pointer}
.journal-mode.active{background:var(--primary-soft);color:var(--primary-text)}
.journal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.journal-week-day{border:1px solid var(--border);border-radius:var(--radius-sm);min-width:0;overflow:hidden}
.journal-week-day.is-today{border-color:var(--primary-text)}
.journal-week-day header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border);background:var(--surface-muted)}
.journal-week-head{display:grid;gap:1px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;min-width:0;padding:0}
.journal-week-head b{font-size:13px}
.journal-week-head small{color:var(--text-muted);font-size:var(--fs-meta,11px)}
.journal-week-load{color:var(--text-muted);font-size:var(--fs-meta,11px);white-space:nowrap}
.journal-week-list{display:grid;gap:5px;padding:8px;min-height:90px}
.journal-week-item{display:grid;gap:1px;padding:6px 8px;border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:7px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer;min-width:0}
.journal-week-item b{font-size:12px}
.journal-week-item span{color:var(--text-muted);font-size:var(--fs-meta,11px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.journal-week-item.att-came{border-left-color:var(--ps-accent-ink)}
.journal-week-item.att-no_show{border-left-color:var(--danger,#12181F);opacity:.75}
.journal-week-item[style]{border-left-color:var(--journal-category);box-shadow:inset 3px 0 var(--journal-category)}
.journal-week-empty{margin:0;color:var(--text-muted);font-size:var(--fs-meta,11px)}
.exception-manager{display:grid;gap:14px}
.exception-list{display:grid;gap:8px}
.exception-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;min-width:0;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm)}
.exception-row b{display:block;font-size:13.5px}
.exception-row small{color:var(--text-muted);font-size:var(--fs-meta,11px)}
.exception-form{display:grid;gap:10px;padding-top:12px;border-top:1px solid var(--border)}
.exception-hours{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:900px){
  .journal-week{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  .journal-week{grid-template-columns:minmax(0,1fr)}
  .journal-mode-switch{width:100%}
  .journal-mode{flex:1 1 auto}
}

/* Production Control Center ---- */
.cc-status{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-4);
  padding:var(--sp-5) var(--sp-6);margin-bottom:var(--sp-4);border:1px solid var(--border);
  border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow-xs)}
.cc-status-main{display:flex;align-items:center;gap:var(--sp-4);min-width:0}
.cc-status-dot{flex:none;width:12px;height:12px;border-radius:50%;background:var(--state-ok);
  box-shadow:0 0 0 5px var(--state-ok-soft)}
.cc-status h2{margin:0 0 2px;font-size:var(--fs-h3);line-height:var(--lh-tight);letter-spacing:-.02em}
.cc-status p{margin:0;color:var(--text-secondary);font-size:var(--fs-body);overflow-wrap:break-word;word-break:normal}
.cc-status[data-state="warning"]{border-color:color-mix(in srgb,var(--state-warn) 40%,var(--border))}
.cc-status[data-state="warning"] .cc-status-dot{background:var(--state-warn);box-shadow:0 0 0 5px var(--state-warn-soft)}
.cc-status[data-state="error"]{border-color:color-mix(in srgb,var(--state-error) 45%,var(--border))}
.cc-status[data-state="error"] .cc-status-dot{background:var(--state-error);box-shadow:0 0 0 5px var(--state-error-soft)}
.cc-status-meta{display:flex;flex-wrap:wrap;gap:var(--sp-5)}
.cc-status-meta span{display:grid;gap:2px;color:var(--text-muted);font-size:var(--fs-meta)}
.cc-status-meta b{font-size:var(--fs-lead);color:var(--text);font-variant-numeric:tabular-nums}

.cc-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4)}
.cc-kpi{padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);
  background:var(--surface);min-width:0;cursor:pointer;transition:border-color .2s,transform .2s}
.cc-kpi:hover{border-color:var(--primary-text);transform:none}
.cc-kpi span{display:block;color:var(--text-muted);font-size:var(--fs-meta);margin-bottom:var(--sp-1)}
.cc-kpi strong{font-size:var(--fs-h2);letter-spacing:-.03em;font-variant-numeric:tabular-nums}

.cc-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:var(--sp-4);margin-bottom:var(--sp-4)}
.cc-health-list{display:grid;gap:var(--sp-1);padding:var(--sp-2) var(--sp-4) var(--sp-4)}
.cc-health-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);
  padding:var(--sp-3) 0;border-bottom:1px solid var(--divider)}
.cc-health-row:last-child{border-bottom:0}
.cc-health-dot{width:9px;height:9px;border-radius:50%;background:var(--state-ok)}
.cc-health-row[data-state="warning"] .cc-health-dot{background:var(--state-warn)}
.cc-health-row[data-state="error"] .cc-health-dot{background:var(--state-error)}
.cc-health-copy{min-width:0;display:grid;gap:2px}
.cc-health-copy b{font-size:var(--fs-body)}
.cc-health-copy small{color:var(--text-muted);font-size:var(--fs-meta);overflow-wrap:break-word;word-break:normal}
.cc-health-state{color:var(--text-muted);font-size:var(--fs-meta);white-space:nowrap}
.cc-health-row[data-state="warning"] .cc-health-state{color:var(--state-warn)}
.cc-health-row[data-state="error"] .cc-health-state{color:var(--state-error)}
.cc-block-error{margin:0;padding:var(--sp-4);color:var(--text-muted);font-size:var(--fs-body)}
.skeleton-row{display:grid;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4)}
.skeleton-row i{display:block;height:10px;border-radius:999px;background:var(--surface-muted);
  animation:passite-skeleton 1.3s ease-in-out infinite}
.skeleton-row i:last-child{width:60%}
@keyframes passite-skeleton{50%{opacity:.45}}

/* Production Журнал ошибок ---- */
.log-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-3);padding:0 var(--sp-4) var(--sp-3)}
.log-kpi{padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);min-width:0}
.log-kpi span{display:block;color:var(--text-muted);font-size:var(--fs-meta)}
.log-kpi strong{font-size:var(--fs-h3);font-variant-numeric:tabular-nums}
.log-kpi[data-tone="error"]{border-color:color-mix(in srgb,var(--state-error) 35%,var(--border))}
.log-kpi[data-tone="warning"]{border-color:color-mix(in srgb,var(--state-warn) 35%,var(--border))}
.log-filters{display:grid;grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-3)}
.log-filters input,.log-filters select{min-height:var(--control-md);padding:0 var(--sp-3);border:1px solid var(--border);
  border-radius:var(--radius-sm);background:var(--input-bg);color:var(--text);font:inherit;min-width:0}
.log-filters input:focus,.log-filters select:focus{outline:none;border-color:var(--primary-text);box-shadow:0 0 0 3px var(--focus)}
.log-list{display:grid;border-top:1px solid var(--divider)}
.log-group{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);
  padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--divider);min-width:0}
.log-group-main{display:flex;align-items:flex-start;gap:var(--sp-3);flex:1 1 auto;min-width:0;
  border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;padding:0}
.log-level{flex:none;padding:2px var(--sp-2);border-radius:999px;background:var(--surface-muted);
  color:var(--text-muted);font-size:var(--fs-meta);font-weight:700;white-space:nowrap}
.log-group[data-level="critical"] .log-level{background:var(--state-error-soft);color:var(--state-error)}
.log-group[data-level="error"] .log-level{background:var(--state-error-soft);color:var(--state-error)}
.log-group[data-level="warning"] .log-level{background:var(--state-warn-soft);color:var(--state-warn)}
.log-group-copy{min-width:0;display:grid;gap:2px}
.log-group-copy b{font-size:var(--fs-body);overflow-wrap:break-word;word-break:normal}
.log-group-copy small{color:var(--text-secondary);font-size:var(--fs-meta);overflow-wrap:break-word;word-break:normal}
.log-group-copy em{color:var(--text-muted);font-size:var(--fs-meta);font-style:normal}
.log-status{flex:none;padding:3px var(--sp-2);border-radius:999px;font-size:var(--fs-meta);
  background:var(--surface-muted);color:var(--text-muted);white-space:nowrap}
.log-status[data-status="resolved"]{background:var(--state-ok-soft);color:var(--state-ok)}
.log-status[data-status="in_progress"]{background:var(--state-info-soft);color:var(--state-info)}
.log-detail{display:grid;gap:var(--sp-3)}
.log-detail-message{margin:0;font-size:var(--fs-lead);line-height:var(--lh-body)}
.log-detail-technical{margin:0;padding:var(--sp-3);border-radius:var(--radius-sm);background:var(--surface-muted);
  color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-small);overflow-wrap:anywhere}
.log-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2) var(--sp-4);margin:0}
.log-detail-grid div{min-width:0}
.log-detail-grid dt{color:var(--text-muted);font-size:var(--fs-meta)}
.log-detail-grid dd{margin:0;font-size:var(--fs-body);overflow-wrap:anywhere}
.log-context{margin:0;padding:var(--sp-3);border-radius:var(--radius-sm);background:var(--surface-muted);
  font-size:var(--fs-small);max-height:200px;overflow:auto}
.log-detail-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.log-history summary{cursor:pointer;color:var(--text-secondary);font-size:var(--fs-body);min-height:var(--control-sm);display:flex;align-items:center}
.log-history-list{display:grid;gap:var(--sp-1);margin-top:var(--sp-2)}
.log-history-row{display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr) minmax(0,auto);gap:var(--sp-3);
  font-size:var(--fs-meta);color:var(--text-muted)}
.log-history-row b{color:var(--text);font-weight:600}
.log-history-row em{font-style:normal;overflow-wrap:break-word;word-break:normal}

@media(max-width:1100px){
  .cc-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cc-grid{grid-template-columns:minmax(0,1fr)}
  .log-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .log-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:640px){
  .cc-status{padding:var(--sp-4)}
  .cc-status-meta{gap:var(--sp-4)}
  .cc-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .log-filters{grid-template-columns:minmax(0,1fr)}
  .log-group{flex-wrap:wrap}
  .log-detail-grid{grid-template-columns:minmax(0,1fr)}
}

/* Production Site 360 и инспектор ---- */
.site360{display:grid;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-muted)}
.site360-today{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-2)}
.site360-today article{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);background:var(--surface);min-width:0}
.site360-today span{display:block;color:var(--text-muted);font-size:var(--fs-meta)}
.site360-today strong{font-size:var(--fs-h3);font-variant-numeric:tabular-nums}
.site360-errors{display:grid;gap:var(--sp-2)}
.site360-errors b{font-size:var(--fs-body)}
.site360-error{display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr) minmax(0,auto);gap:var(--sp-2);
  align-items:baseline;font-size:var(--fs-meta);color:var(--text-muted)}
.site360-error span{padding:1px var(--sp-2);border-radius:999px;background:var(--state-error-soft);color:var(--state-error);font-weight:700}
.site360-error small{color:var(--text-secondary);overflow-wrap:anywhere}
.site360-error em{font-style:normal;white-space:nowrap}
.site360-clean{margin:0;color:var(--text-muted);font-size:var(--fs-body)}
.inspector{display:grid;gap:var(--sp-4)}
.inspector-note{margin:0;color:var(--text-muted);font-size:var(--fs-body)}
.inspector-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2) var(--sp-4);margin:0}
.inspector-grid div{min-width:0;padding-bottom:var(--sp-2);border-bottom:1px solid var(--divider)}
.inspector-grid dt{color:var(--text-muted);font-size:var(--fs-meta)}
.inspector-grid dd{margin:0;font-size:var(--fs-body);overflow-wrap:anywhere}
.release-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3);padding:0 var(--sp-4) var(--sp-4)}
.release-cell{padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);min-width:0}
.release-cell span{display:block;color:var(--text-muted);font-size:var(--fs-meta)}
.release-cell strong{font-size:var(--fs-lead);overflow-wrap:anywhere}
.release-verdict{margin:0 var(--sp-4) var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);
  background:var(--state-ok-soft);color:var(--state-ok);font-size:var(--fs-body);font-weight:600}
.release-verdict[data-state="error"]{background:var(--state-error-soft);color:var(--state-error)}
@media(max-width:900px){
  .site360-today{grid-template-columns:repeat(2,minmax(0,1fr))}
  .inspector-grid{grid-template-columns:minmax(0,1fr)}
  .release-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  .release-grid{grid-template-columns:minmax(0,1fr)}
  .site360-error{grid-template-columns:minmax(0,1fr)}
}

/* Production Главный экран клиента «Сегодня» ---- */
.today-hero{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-4);
  padding:var(--sp-6);margin-bottom:var(--sp-4);border-radius:var(--radius-lg);
  background:linear-gradient(135deg,color-mix(in srgb,var(--primary-soft) 70%,var(--surface)),var(--surface));
  border:1px solid var(--border)}
.today-hero-copy{min-width:0}
.today-greeting{display:block;color:var(--primary-ink);font-size:var(--fs-body);font-weight:600;margin-bottom:var(--sp-1)}
.today-hero h2{margin:0 0 var(--sp-1);font-size:var(--fs-display);line-height:var(--lh-tight);letter-spacing:-.03em}
.today-hero p{margin:0;color:var(--text-secondary);font-size:var(--fs-lead)}
.today-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.today-action{min-height:var(--control-md);padding:0 var(--sp-4);border:1px solid var(--border-strong);
  border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-body);
  font-weight:650;cursor:pointer;transition:border-color .2s,transform .2s,background .2s}
.today-action:hover{border-color:var(--primary-text);background:var(--primary-soft);transform:none}
.today-action:focus-visible{outline:2px solid var(--primary);outline-offset:2px}

.today-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4)}
.today-kpi{padding:var(--sp-4) var(--sp-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);min-width:0}
.today-kpi span{display:block;color:var(--text-muted);font-size:var(--fs-meta);margin-bottom:var(--sp-1)}
.today-kpi strong{font-size:var(--fs-h2);letter-spacing:-.03em;font-variant-numeric:tabular-nums;overflow-wrap:normal;word-break:normal}
.today-kpi.is-skeleton i{display:block;height:12px;border-radius:999px;background:var(--surface-muted);
  animation:passite-skeleton 1.3s ease-in-out infinite}
.today-kpi.is-skeleton i:first-child{width:55%;margin-bottom:var(--sp-2);height:9px}

.today-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-4);margin-bottom:var(--sp-4)}
.today-block-error{margin:0;padding:var(--sp-4);color:var(--text-muted);font-size:var(--fs-body)}
.today-clear{display:grid;gap:var(--sp-1);padding:var(--sp-5) var(--sp-4);text-align:center;justify-items:center}
.today-clear b{font-size:var(--fs-lead)}
.today-clear span{color:var(--text-muted);font-size:var(--fs-body)}
.today-clear .btn{margin-top:var(--sp-2)}

.today-attention-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);
  width:100%;padding:var(--sp-3) var(--sp-4);border:0;border-bottom:1px solid var(--divider);
  background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}
.today-attention-row:last-child{border-bottom:0}
.today-attention-row:hover{background:var(--surface-muted)}
.today-attention-dot{width:9px;height:9px;border-radius:50%;background:var(--state-info)}
.today-attention-row[data-level="high"] .today-attention-dot{background:var(--state-error)}
.today-attention-row[data-level="medium"] .today-attention-dot{background:var(--state-warn)}
.today-attention-text{font-size:var(--fs-body);overflow-wrap:break-word;word-break:normal}
.today-attention-tag{padding:2px var(--sp-2);border-radius:999px;background:var(--surface-muted);
  color:var(--text-muted);font-size:var(--fs-meta);white-space:nowrap}

.today-upcoming-list{display:grid}
.today-upcoming-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);
  padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--divider)}
.today-upcoming-row:last-child{border-bottom:0}
.today-upcoming-row>b{font-variant-numeric:tabular-nums;font-size:var(--fs-body)}
.today-upcoming-copy{display:grid;gap:1px;min-width:0}
.today-upcoming-copy em{font-style:normal;font-size:var(--fs-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.today-upcoming-copy small{color:var(--text-muted);font-size:var(--fs-meta);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.today-badge{padding:2px var(--sp-2);border-radius:999px;background:var(--state-warn-soft);color:var(--state-warn);
  font-size:var(--fs-meta);white-space:nowrap}

.today-load{display:grid;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4) var(--sp-4)}
.today-load-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-1)}
.today-load-head b{font-size:var(--fs-body);overflow-wrap:break-word;word-break:normal}
.today-load-head small{color:var(--text-muted);font-size:var(--fs-meta);font-variant-numeric:tabular-nums}
.today-load-bar{height:8px;border-radius:999px;background:var(--surface-muted);overflow:hidden}
.today-load-bar i{display:block;height:100%;border-radius:999px;background:var(--primary)}
.today-load-bar i[data-level="high"]{background:var(--state-warn)}
.today-load-bar i[data-level="low"]{background:color-mix(in srgb,var(--primary) 55%,var(--surface-muted))}
.today-activity{display:grid;padding:var(--sp-2) var(--sp-4) var(--sp-4)}
.today-activity-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3);padding:var(--sp-2) 0;
  border-bottom:1px solid var(--divider);font-size:var(--fs-body)}
.today-activity-row:last-child{border-bottom:0}
.today-activity-row b{color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:600;font-size:var(--fs-meta)}
.today-activity-row span{overflow-wrap:break-word;word-break:normal;color:var(--text-secondary)}

@media(max-width:900px){
  .today-grid{grid-template-columns:minmax(0,1fr)}
  .today-hero{padding:var(--sp-5) var(--sp-4)}
  .today-hero h2{font-size:var(--fs-h2)}
}
@media(max-width:560px){
  .today-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .today-actions{width:100%}
  .today-action{flex:1 1 auto;text-align:center}
}

/* Production Режим поддержки ---- */
.support-banner{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;
  padding:var(--sp-3) var(--sp-5);background:var(--state-warn-soft);color:var(--state-warn);
  border-bottom:1px solid color-mix(in srgb,var(--state-warn) 35%,transparent)}
.support-banner b{font-size:var(--fs-body)}
.support-banner span{font-size:var(--fs-body);color:var(--text-secondary)}
.support-issue{display:grid;gap:var(--sp-3)}
.support-issue p{margin:0;color:var(--text-secondary);font-size:var(--fs-body)}
.support-link{display:block;padding:var(--sp-3);border-radius:var(--radius-sm);background:var(--surface-muted);
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-small);overflow-wrap:anywhere}

/* Passite DS3 — canonical product composition. Palette and sizing live in tokens.css. */

/* Text never collapses into vertical columns. Long machine values opt in below. */
:where(p,li,dd,figcaption,blockquote,.panel-note,.form-status,.modal-note,.security-copy,.cc-block-error,.today-block-error){overflow-wrap:break-word;word-break:normal}
:where(span,b,strong,em,small,label,summary,td,th){overflow-wrap:normal;word-break:normal}
:where(code,pre,.secret-box,.log-detail-technical,.log-context,.support-link,.inspector-grid dd,.site360-error small){overflow-wrap:anywhere;word-break:break-word}

.app{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}
.sidebar{padding:17px 12px 14px;background:var(--sidebar)}
.sidebar-head{min-height:49px;padding:0 10px 15px;border-color:rgba(230,236,242,.075)}
.sidebar-head .brand{display:flex;align-items:center;gap:10px;font-size:20px;letter-spacing:-.035em}
.sidebar-head .brand::after{display:none}
.brand-mark{width:26px;height:26px;flex:0 0 26px;border-radius:7px;display:grid;place-items:center;background:linear-gradient(145deg,#32E6E2,#32E6E2);color:var(--ps-ink);font-size:11px;font-weight:900;box-shadow:inset 0 0 0 1px rgba(230,236,242,.16)}
.workspace-tag{display:block;min-width:0;margin:5px 10px 7px;color:var(--sidebar-muted);font-size:9px;letter-spacing:.13em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar nav{margin-top:9px;gap:2px}
.nav-section-label{padding:16px 10px 6px;color:var(--ps-ink);font-size:9px;letter-spacing:.12em}
.nav-item{min-height:40px;gap:10px;padding:0 10px;border-radius:8px;font-size:12.5px;font-weight:680}
.nav-item>span:not(.badge){min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-item svg{width:16px;height:16px;flex-basis:16px}
.nav-item.active{background:#12181F;border-color:transparent;box-shadow:inset 2px 0 #32E6E2}
.nav-item .badge{min-width:19px;height:19px;font-size:9px}
.sidebar-foot{padding-top:10px}.theme-control{min-height:38px;padding:0 10px;font-size:11px}

.workspace{background:var(--bg)}
.topbar{min-height:72px;grid-template-columns:minmax(210px,.8fr) minmax(280px,420px) auto;gap:16px;padding:10px 30px;border-color:var(--border);background:color-mix(in srgb,var(--bg) 94%,transparent)}
.page-context{margin:0 0 1px;font-size:9px;letter-spacing:.12em;color:var(--primary-text)}
.page-title h1,.topbar h1{font-size:20px;letter-spacing:-.035em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.page-title p,.topbar p{font-size:10.5px;margin-top:1px}
.topbar-actions{gap:8px;white-space:nowrap}
.profile-chip{appearance:none;width:36px;height:36px;display:grid;place-items:center;padding:0;border:1px solid var(--border-strong);border-radius:10px;background:#12181F;color:#E6ECF2;font-size:10px;font-weight:850;cursor:pointer}
html[data-theme="dark"] .profile-chip{background:#12181F;border-color:var(--ps-ink)}
.topbar-client-search{position:relative;min-width:0}.topbar-client-search svg{position:absolute;left:13px;top:50%;width:16px;height:16px;transform:translateY(-50%);color:var(--text-muted)}
.topbar-client-search input{height:38px;min-height:38px;padding:0 12px 0 39px;border-radius:10px;background:var(--surface);box-shadow:var(--shadow-sm);font-size:11px}
.global-search input{min-height:38px;height:38px;padding-block:0;border-radius:10px;background:var(--surface);box-shadow:var(--shadow-sm);font-size:11px}
.open-site{min-height:36px;height:36px;padding:0 12px;border-radius:9px;font-size:11px}
.content{max-width:var(--content-max);padding:26px 30px 44px}
.view{gap:14px}

.panel,.hero-panel,.progress-card,.version-card,.client-ticket-shell,.ticket-shell,.owner-hero,.stats article,.overview-metrics .metric,.surface{
  border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-xs)
}
.panel-head{min-height:58px;padding:13px 16px;border-bottom:1px solid var(--border);gap:12px}
.panel-head h3{margin:2px 0 0;font-size:14px;letter-spacing:-.018em}
.panel-head .kicker,.kicker{font-size:8.5px;letter-spacing:.1em;color:var(--text-muted)}
.panel-note{font-size:10.5px;line-height:1.45}

.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,button:not([class]){min-height:36px;height:auto;padding:0 12px;border-radius:9px;font-size:11px;font-weight:750;white-space:nowrap}
.btn.compact{min-height:34px;padding:0 11px;font-size:10.5px}.icon-btn,.icon-action,.ghost-icon{width:36px;padding:0}.mini{min-height:32px;font-size:10px}
.btn.primary{border-color:var(--primary);background:var(--primary);color:var(--ps-ink);box-shadow:none}.btn.primary:hover{border-color:var(--primary-hover);background:var(--primary-hover)}
.text-btn,.text-action{min-height:30px;font-size:10.5px;color:var(--primary-text)}
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea{min-height:40px;padding:8px 11px;border-radius:9px;font-size:12px;background:var(--surface)}
label{gap:6px;font-size:11px}label>span,.field>label{font-size:10.5px}label small{font-size:10px}
.switch{flex:none}.form-status{font-size:11px;line-height:1.45}

/* Universal dense data pages */
.tool-row,.view-tools,.topbar-actions,.file-tools,.site-actions,.lead-row-actions,.contact-card-actions{gap:7px}
.ui-tab{min-height:34px;padding:0 11px;border-radius:7px;font-size:10.5px;white-space:nowrap}
.commerce-tabs,.owner-commerce-tabs,.client-ticket-filters,.ticket-filters{padding:7px 10px;gap:4px;background:var(--surface-muted)}
.stats,.commerce-metrics,.overview-metrics{gap:10px}
.stats article,.commerce-metrics article,.overview-metrics .metric{padding:14px 15px;min-height:92px}
.stats article span,.commerce-metrics article span,.metric>span{font-size:10px;color:var(--text-muted)}
.stats article strong,.commerce-metrics article strong,.metric strong{font-size:22px;letter-spacing:-.04em}
.simple-row,.activity-item,.notification-item{padding:11px 15px;border-bottom:1px solid var(--border)}
.simple-row b,.activity-item b,.notification-item b{font-size:11px}.simple-row p,.activity-item p,.notification-item p{font-size:10px;line-height:1.45}

/* Client — Today: match approved reference proportions. */
#view-overview{gap:14px}.ds-today-welcome{padding:2px 0 3px;margin:0;border:0;background:transparent;box-shadow:none;align-items:center}
.ds-today-welcome .today-greeting{color:var(--primary-text);font-size:9px;font-weight:850;letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px}
.ds-today-welcome h2{font-size:31px;letter-spacing:-.055em;margin:0 0 3px}.ds-today-welcome p{font-size:12px;color:var(--text-muted)}
.today-actions{justify-content:flex-end}.today-action{min-height:34px;padding:0 11px;font-size:10.5px;border-radius:9px}
.today-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0}
.today-kpi{min-height:114px;padding:15px 17px;border-radius:14px;display:flex;flex-direction:column;justify-content:space-between}
.today-kpi span{font-size:10px;margin:0;color:var(--text-muted)}.today-kpi strong{font-size:29px;letter-spacing:-.05em;line-height:1.05;overflow-wrap:normal}
.ds-today-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(285px,.65fr);gap:12px;align-items:start}
.ds-today-primary{min-height:500px;overflow:hidden}.today-upcoming-head{display:grid;grid-template-columns:70px minmax(0,1fr) 120px;gap:12px;align-items:center;height:37px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--surface-muted);color:var(--text-muted);font-size:8.5px;font-weight:850;text-transform:uppercase;letter-spacing:.06em}
.today-upcoming-row{grid-template-columns:70px minmax(0,1fr) 120px;gap:12px;min-height:54px;padding:8px 16px}.today-upcoming-row>b{font-size:11px}.today-upcoming-copy em{font-size:11px;font-weight:750}.today-upcoming-copy small{font-size:9.5px}.today-badge{justify-self:start;font-size:9px}
.ds-today-side{display:grid;gap:12px}.today-attention{overflow:hidden}.today-attention-row{grid-template-columns:28px minmax(0,1fr) auto;min-height:60px;padding:9px 13px;gap:9px}.today-attention-dot{width:24px;height:24px;display:grid;place-items:center;background:color-mix(in srgb,var(--warning) 22%,transparent);border-radius:8px}.today-attention-dot::after{content:"!";font-size:10px;color:var(--warning-text);font-weight:850}.today-attention-text{font-size:10px;line-height:1.35}.today-attention-tag{font-size:8px}
.ds-site-card{padding-bottom:12px}.ds-site-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:14px 15px;border-bottom:1px solid var(--border)}.ds-site-card-head h3{margin:2px 0 1px;font-size:13px}.ds-site-card-head p{margin:0;color:var(--text-muted);font-size:9px}.site-state{padding:5px 8px;font-size:9px}.ds-site-storage{padding:13px 15px}.ds-site-storage .progress-head{margin-bottom:7px;font-size:9px}.ds-site-storage small{display:block;margin-top:5px;font-size:8.5px;color:var(--text-muted)}.ds-site-quick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:0 15px 11px}.ds-site-quick .quick-action{min-height:82px;padding:10px;border:1px solid var(--border);border-radius:10px;background:var(--surface-muted);display:grid;align-content:start;justify-items:start;gap:4px}.ds-site-quick .quick-action svg{width:17px;height:17px;color:var(--primary-text)}.ds-site-quick .quick-action b{font-size:9.5px}.ds-site-quick .quick-action span{font-size:8px;color:var(--text-muted)}.ds-site-card .site-link-actions{padding:0 15px;justify-content:flex-start}
.ds-secondary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ds-site-details{display:grid;gap:12px;margin-top:2px;padding-top:14px;border-top:1px solid var(--border)}

/* CRM master/detail */
#view-contacts>.panel{overflow:hidden}.contact-toolbar{padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface-muted)}.contact-toolbar input{max-width:320px}.contact-layout{display:grid;grid-template-columns:minmax(560px,1.55fr) minmax(330px,.72fr);min-height:520px}.contact-list{border-right:1px solid var(--border);background:var(--surface)}
.contact-list::before{content:"КЛИЕНТ                 ПОСЛЕДНИЙ КОНТАКТ        АКТИВНОСТЬ        СТАТУС";display:block;height:36px;padding:0 15px;border-bottom:1px solid var(--border);background:var(--surface-muted);color:var(--text-muted);font-size:8px;font-weight:850;letter-spacing:.055em;line-height:36px;white-space:pre;overflow:hidden}
.contact-row{appearance:none;width:100%;min-height:60px;display:grid;grid-template-columns:minmax(210px,1.2fr) minmax(112px,.65fr) minmax(145px,.75fr) 86px 30px;gap:10px;align-items:center;padding:8px 14px;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;color:var(--text);text-align:left;box-shadow:none}
.contact-row:hover{background:var(--surface-muted)}.contact-row.active{background:var(--primary-soft);box-shadow:inset 2px 0 var(--primary)}.contact-person{min-width:0;display:flex;align-items:center;gap:10px}.contact-avatar{width:30px;height:30px;flex:0 0 30px;border-radius:9px;background:var(--ps-panel);color:var(--ps-ink);display:grid;place-items:center;font-size:9px;font-weight:850}.contact-row-copy{min-width:0}.contact-row-copy b,.contact-row-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-row-copy b{font-size:10.5px}.contact-row-copy small{font-size:8.5px;color:var(--text-muted);margin-top:1px}.contact-last,.contact-activity{min-width:0}.contact-last b,.contact-last small,.contact-activity b,.contact-activity small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-last b,.contact-activity b{font-size:9.5px;font-weight:600}.contact-last small,.contact-activity small{font-size:8px;color:var(--text-muted);margin-top:2px}.contact-list-status{justify-self:start;padding:5px 8px;border-radius:999px;font-size:8.5px;font-weight:800;white-space:nowrap}.contact-list-status.is-active{background:var(--success-soft);color:var(--success-text)}.contact-list-status.is-archived{background:var(--surface-muted);color:var(--text-muted)}.contact-row-more{font-size:13px;color:var(--text-muted);white-space:nowrap}.contact-card{min-width:0;background:var(--surface);overflow:auto}.contact-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:15px 16px;border-bottom:1px solid var(--border)}.contact-card-identity{display:flex;align-items:center;gap:10px;min-width:0}.contact-card-avatar{width:38px;height:38px;flex:0 0 38px;border-radius:11px;background:var(--ps-panel);color:var(--ps-ink);display:grid;place-items:center;font-size:11px;font-weight:850}.contact-card-head h3{margin:0;font-size:13px}.contact-card-meta{margin:2px 0 0;font-size:8.5px;color:var(--text-muted)}.contact-card-actions{display:flex;flex-wrap:wrap;justify-content:flex-end}.contact-card-actions .btn{min-height:31px;padding:0 8px;font-size:9px}.contact-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:0;border-bottom:1px solid var(--border)}.contact-stats article{padding:11px;border-right:1px solid var(--border)}.contact-stats article:last-child{border-right:0}.contact-stats span{font-size:8px}.contact-stats strong{font-size:13px}.contact-note,.contact-dupes,.contact-note-form{margin:12px 14px}.contact-note-form textarea{min-height:64px}.contact-timeline{padding:4px 14px 16px}.contact-event{padding:10px 0;gap:9px}.contact-event-copy b{font-size:10px}.contact-event-copy p,.contact-event-copy small{font-size:8.5px;line-height:1.4}

/* Journal */
.journal-toolbar{gap:10px}.journal-shell,.journal-board,.journal-week{border-radius:14px}.journal-resources,.journal-grid{min-width:0}.journal-time{font-size:9px}.journal-card,.journal-booking{border-radius:9px}.journal-card b,.journal-booking b{font-size:10px}.journal-card small,.journal-booking small{font-size:8.5px}.journal-day-head,.journal-resource-head{font-size:9px}.journal-floating-tools{gap:6px}

/* Commerce, payments, files and conversations */
.c75-catalog-row,.p75-catalog-row{grid-template-columns:62px minmax(0,1fr) 110px auto;gap:12px;padding:11px 14px}.c75-catalog-media,.p75-catalog-media{width:58px;height:44px}.c75-catalog-copy b,.p75-catalog-copy b{font-size:11px;overflow-wrap:normal}.c75-catalog-copy p,.p75-catalog-copy p{font-size:9px}.c75-transaction,.p75-transaction{grid-template-columns:minmax(128px,.48fr) minmax(220px,1.5fr) minmax(160px,.55fr);gap:15px;padding:13px 15px}.c75-transaction-main b,.p75-transaction-main b{font-size:11px}.c75-transaction-main p,.p75-transaction-main p,.c75-transaction-main span,.p75-transaction-main span{font-size:9px;line-height:1.4;overflow-wrap:break-word}.c75-status,.p75-status{min-height:31px;padding:5px 8px;font-size:9px}.client-ticket-shell,.ticket-shell{min-height:570px;grid-template-columns:minmax(275px,330px) minmax(0,1fr)}.client-ticket-item,.ticket-item{padding:11px 13px}.message,.client-message{max-width:min(620px,86%);font-size:11px}.file-row{min-height:56px;font-size:10.5px}.file-table-head{font-size:8.5px}.file-name small,.file-cell{font-size:9px}

/* Owner overview */
.ds-owner-health{display:flex;align-items:center;gap:14px;padding:18px 20px;border:1px solid color-mix(in srgb,var(--success) 30%,var(--border));border-radius:15px;background:linear-gradient(135deg,var(--success-soft),var(--surface));box-shadow:none}.cc-status-main{display:flex;align-items:center;gap:14px;min-width:0}.cc-status-icon{width:42px;height:42px;flex:0 0 42px;border-radius:12px;background:var(--success);color:#E6ECF2;display:grid;place-items:center}.cc-status-icon svg{width:18px;height:18px}.ds-owner-health[data-state="warning"]{border-color:color-mix(in srgb,var(--warning) 30%,var(--border));background:linear-gradient(135deg,var(--warning-soft),var(--surface))}.ds-owner-health[data-state="warning"] .cc-status-icon{background:var(--warning)}.ds-owner-health[data-state="error"]{border-color:color-mix(in srgb,var(--danger) 30%,var(--border));background:linear-gradient(135deg,var(--danger-soft),var(--surface))}.ds-owner-health[data-state="error"] .cc-status-icon{background:var(--danger)}.cc-status-main h2{margin:0;font-size:17px}.cc-status-main p{margin:3px 0 0;color:var(--text-muted);font-size:10px}.ds-owner-health>.btn{margin-left:auto}.ds-hidden-meta{display:none}.ds-owner-kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0}.ds-owner-kpis .cc-kpi{min-height:116px;padding:15px;border-radius:14px;cursor:pointer}.ds-owner-kpis .cc-kpi span{font-size:10px}.ds-owner-kpis .cc-kpi strong{display:block;margin-top:20px;font-size:24px}.ds-owner-kpis .cc-kpi small{display:block;margin-top:2px;color:var(--text-muted);font-size:8.5px}.ds-kpi-hidden{display:none}.ds-owner-main-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(310px,.75fr);gap:12px}.ds-events-panel,.ds-services-panel{overflow:hidden;min-height:285px}.ds-attention-events:empty{display:none}.ds-attention-events .attention-item{min-height:48px}.ds-event-list .notification-item{min-height:45px}.ds-services-panel .cc-health-list{padding:4px 15px 12px}.ds-services-panel .cc-health-row{grid-template-columns:8px minmax(0,1fr) auto;min-height:42px;padding:8px 0}.ds-services-panel .cc-health-copy b{font-size:10px}.ds-services-panel .cc-health-copy small{font-size:8.5px;line-height:1.35}.ds-services-panel .cc-health-state{font-size:8.5px}.ds-database-panel,.ds-recent-leads{margin-top:0}

/* Owner tables and operational screens */
.lead-head,.lead-row,.site-head,.site-row,.client-head{font-size:9px}.lead-row,.site-row{padding:11px 14px;min-height:58px}.lead-name b,.site-name b,.site-name a{font-size:10.5px}.lead-name span,.site-name small,.site-meta,.expiry,.stage,.contacts{font-size:9px}.state,.status-select{font-size:9.5px}.p75-client-card{padding:12px 14px}.p75-client-person b,.p75-client-meta b{font-size:10.5px}.p75-client-person small,.p75-client-meta small{font-size:9px;overflow-wrap:normal}.release-grid{gap:10px;padding:0 15px 15px}.release-cell{padding:12px 14px}.release-cell span{font-size:9px}.release-cell strong{font-size:12px;overflow-wrap:break-word}.cc-health-copy small{font-size:9px;line-height:1.4;overflow-wrap:break-word}.log-summary{gap:10px;padding:0 15px 12px}.log-kpi{padding:11px 13px}.log-kpi span{font-size:9px}.log-kpi strong{font-size:17px}.log-filters{gap:7px;padding:0 15px 12px}.log-group{padding:11px 15px}.log-group-copy b{font-size:10.5px;overflow-wrap:break-word}.log-group-copy small,.log-group-copy em{font-size:9px;overflow-wrap:break-word}.log-level,.log-status{font-size:8.5px}.fs-row,.trash-row{padding:11px 14px}.brief-section,.publish-section{gap:12px}

/* Modals / popovers / toasts */
.modal-wrap{padding:20px;background:rgba(18,24,31,.62);backdrop-filter:blur(4px)}.modal{border-radius:16px;border-color:var(--border);box-shadow:var(--shadow-lg)}.modal-head{min-height:58px;padding:14px 16px}.modal-head h3{font-size:14px}.modal-body{padding:16px}.modal-actions{padding:11px 16px;background:var(--surface-muted)}.toast{border-radius:11px;box-shadow:var(--shadow-lg);font-size:11px}.c75-switch-row,.p75-switch-row,.switch-row{min-height:58px;padding:10px 12px;border-radius:10px}.c75-switch-row b,.p75-switch-row b,.switch-row span{font-size:11px}.c75-switch-row small,.p75-switch-row small{font-size:9px;line-height:1.4}.c75-status-menu,.p75-status-menu,.p75-more>div,.term-menu>div,.site-more>div{border-radius:10px;box-shadow:var(--shadow-lg)}

/* Auth + emails visually belong to the same product. */
.auth{background:radial-gradient(circle at 20% 5%,rgba(50,230,226,.08),transparent 30%),var(--bg)}.auth-card{border-radius:16px;box-shadow:var(--shadow-sm);max-width:440px}.auth-card .brand{gap:8px}.auth-card .brand::before{content:none;display:none}.auth-card .brand::after{display:none}

@media(max-width:1180px){
  .topbar{grid-template-columns:minmax(190px,.8fr) minmax(220px,360px) auto;padding-inline:22px}.content{padding-inline:22px}.ds-today-layout{grid-template-columns:minmax(0,1.4fr) minmax(270px,.7fr)}.contact-layout{grid-template-columns:minmax(0,1fr) 360px}.contact-row{grid-template-columns:minmax(190px,1.15fr) 105px minmax(130px,.7fr) 78px 24px}.ds-owner-main-grid{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:980px){
  .app{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;bottom:0;width:min(292px,86vw);transform:translateX(-105%);transition:transform .2s var(--ease);box-shadow:var(--shadow-lg)}.sidebar.open{transform:none}.sidebar-scrim.open{display:block;position:fixed;z-index:35;inset:0;border:0;background:rgba(18,24,31,.54)}.mobile-menu{display:inline-flex}.topbar{grid-template-columns:auto minmax(0,1fr) auto}.topbar-client-search,.global-search{display:none}.content{max-width:none}.ds-today-layout,.ds-owner-main-grid{grid-template-columns:1fr}.ds-today-side{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-layout{grid-template-columns:1fr}.contact-list{border-right:0;border-bottom:1px solid var(--border)}.contact-card{min-height:380px}.contact-row{grid-template-columns:minmax(200px,1.3fr) 110px minmax(140px,.8fr) 82px 24px}
}
@media(max-width:720px){
  .topbar{min-height:62px;padding:8px 13px;gap:8px}.page-title{min-width:0}.page-context{font-size:8px}.page-title h1{font-size:17px}.page-title p{display:none}.topbar-actions .open-site,.topbar-actions>.btn{display:none}.profile-chip{width:34px;height:34px}.content{padding:18px 13px 76px}.view{gap:11px}.panel-head{padding:11px 12px;min-height:54px}.panel-head.tools{align-items:flex-start}.tool-row{width:100%;overflow-x:auto;justify-content:flex-start;padding-bottom:2px}.ds-today-welcome{align-items:flex-start}.ds-today-welcome h2{font-size:26px}.ds-today-welcome .today-actions{width:100%;justify-content:flex-start}.today-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.today-kpi{min-height:102px;padding:13px}.today-kpi strong{font-size:24px}.ds-today-side,.ds-secondary-grid{grid-template-columns:1fr}.ds-today-primary{min-height:auto}.today-upcoming-head{grid-template-columns:52px minmax(0,1fr);padding:0 12px}.today-upcoming-head span:last-child{display:none}.today-upcoming-row{grid-template-columns:52px minmax(0,1fr);padding:9px 12px}.today-upcoming-row>.today-badge{grid-column:2;justify-self:start}.ds-site-quick{grid-template-columns:repeat(3,minmax(0,1fr))}.ds-site-details{display:none}.stats,.commerce-metrics,.overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-layout{display:block}.contact-list::before{display:none}.contact-row{grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 12px}.contact-last,.contact-activity,.contact-list-status{display:none}.contact-row-more{display:block}.contact-card-head{flex-direction:column}.contact-card-actions{justify-content:flex-start}.contact-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-stats article:nth-child(2){border-right:0}.contact-stats article:nth-child(-n+2){border-bottom:1px solid var(--border)}.client-ticket-shell,.ticket-shell{grid-template-columns:1fr;min-height:0}.client-ticket-sidebar,.ticket-sidebar{border-right:0;border-bottom:1px solid var(--border)}.client-ticket-list,.ticket-list{max-height:320px;min-height:0}.c75-catalog-row,.p75-catalog-row{grid-template-columns:52px minmax(0,1fr) auto;padding:10px}.c75-catalog-media,.p75-catalog-media{width:50px;height:42px}.c75-catalog-price,.p75-catalog-price{grid-column:2;text-align:left}.c75-row-actions,.p75-row-actions{grid-column:3;grid-row:1/3}.c75-transaction,.p75-transaction{grid-template-columns:1fr;padding:12px}.c75-transaction-main,.p75-transaction-main{grid-column:auto}.c75-transaction-side,.p75-transaction-side{display:flex;justify-content:space-between;align-items:center}.file-toolbar{align-items:stretch}.file-tools,.folder-nav{flex-wrap:wrap}.ds-owner-kpis{grid-template-columns:1fr}.ds-owner-kpis .cc-kpi{min-height:96px}.ds-owner-health{align-items:flex-start;flex-wrap:wrap}.ds-owner-health>.btn{margin-left:56px}.log-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.log-filters{grid-template-columns:1fr}.release-grid{grid-template-columns:1fr}.lead-row,.site-row{grid-template-columns:1fr;padding:12px}.lead-row>*,.site-row>*{padding-top:0}.lead-row>*::before,.site-row>*::before{display:none}.lead-row-actions,.site-actions{grid-column:auto;padding-top:4px;justify-content:flex-start}.site-head,.lead-head,.client-head{display:none}.modal-backdrop{padding:8px}.modal{max-height:calc(100dvh - 16px);border-radius:14px}.modal-body{padding:13px}.c75-form-grid,.p75-form-grid,.modal-grid{grid-template-columns:1fr}.mfa-setup-grid{grid-template-columns:1fr}
}
@media(max-width:420px){
  .today-kpis{grid-template-columns:1fr 1fr}.ds-site-quick{grid-template-columns:1fr 1fr}.ds-site-quick .quick-action:last-child{grid-column:1/-1}.stats,.commerce-metrics,.overview-metrics{grid-template-columns:1fr}.topbar-actions .icon-btn{display:none}.panel-head .btn.primary{max-width:100%;overflow:visible;text-overflow:clip}.contact-card-actions .btn{flex:1 1 auto}.log-summary{grid-template-columns:1fr 1fr}
}

/* DS3 precision rules — reference fidelity + text geometry */
.ds-site-quick .quick-action{grid-template-columns:1fr;grid-template-rows:auto auto auto;min-width:0;justify-items:start;align-items:start;overflow:hidden}
.ds-site-quick .quick-action svg{grid-row:auto;padding:0;background:transparent}
.ds-site-quick .quick-action b,.ds-site-quick .quick-action span{max-width:100%;white-space:normal;overflow-wrap:normal;word-break:normal;hyphens:none}
.ds-site-quick .quick-action b{line-height:1.25}.ds-site-quick .quick-action span{line-height:1.25}
.ds-owner-kpi{display:flex;flex-direction:column;justify-content:space-between;gap:10px}
.ds-kpi-top{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.ds-kpi-top>span:first-child{font-size:11px;font-weight:760;color:var(--text)}
.ds-kpi-state{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:0 9px;border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:9px;font-weight:800}
.ds-kpi-state::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.ds-kpi-state.is-ok{background:var(--success-soft);color:var(--success-text)}.ds-kpi-state.is-warn{background:var(--warning-soft);color:var(--warning-text)}
.ds-owner-kpis .ds-owner-kpi strong{margin:0;font-size:27px;line-height:1;letter-spacing:-.045em}.ds-owner-kpis .ds-owner-kpi small{margin:0;min-height:15px;font-size:9.5px;line-height:1.4;white-space:normal}
.ds-metric-storage{display:none}
.ds-owner-main-grid .panel-head h3{font-size:15px}.ds-owner-main-grid .panel-head .kicker{font-size:9px}
.ds-events-panel .simple-row,.ds-events-panel .attention-item{min-height:52px;padding-inline:16px}.ds-events-panel .simple-row b,.ds-events-panel .attention-item b{font-size:11px}.ds-events-panel .simple-row p,.ds-events-panel .attention-item small{font-size:9.5px}
.ds-services-panel .cc-health-copy b{font-size:11px}.ds-services-panel .cc-health-copy small{font-size:9.5px}.ds-services-panel .cc-health-state{font-size:9px}
/* Dense owner screens remain compact but never tiny. */
.lead-head,.site-head,.client-head{font-size:9.5px}.lead-row,.site-row{font-size:10.5px}.lead-name b,.site-name b,.site-name a{font-size:11.5px}.lead-name span,.site-name small,.site-meta,.expiry,.stage,.contacts{font-size:9.5px}.state,.status-select{font-size:10px}
.release-cell span,.log-kpi span{font-size:9.5px}.release-cell strong{font-size:13px}.cc-health-copy small{font-size:9.5px}.log-group-copy b{font-size:11.5px}.log-group-copy small,.log-group-copy em{font-size:9.5px}
@media(max-width:720px){.ds-site-quick .quick-action{min-height:72px}.ds-owner-kpis .ds-owner-kpi{min-height:110px}}
.ds-owner-kpis .ds-owner-kpi strong>span,.ds-owner-kpis .ds-owner-kpi small>span,.ds-kpi-top>span{display:inline;margin:0}
.ds-owner-kpis .ds-owner-kpi .ds-kpi-state{display:inline-flex}
/* DS3 mobile density: keep business information compact instead of one giant column. */
@media(max-width:720px){
  #view-contacts .commerce-metrics,#view-commerce .commerce-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  #view-contacts .commerce-metrics article,#view-commerce .commerce-metrics article{min-height:82px;padding:12px 13px}
  #view-contacts .commerce-metrics strong,#view-commerce .commerce-metrics strong{font-size:21px}
  #view-commerce .commerce-tabs{display:flex;overflow-x:auto;scrollbar-width:none;gap:5px;padding:7px;white-space:nowrap}
  #view-commerce .commerce-tabs::-webkit-scrollbar{display:none}
  #view-commerce .commerce-tabs .ui-tab{flex:0 0 auto;min-width:auto}
  #view-journal .panel-head.tools{display:block}
  #view-journal .panel-head.tools>.tool-row{display:flex;flex-wrap:nowrap;width:100%;overflow-x:auto;gap:6px;padding:10px 0 1px;scrollbar-width:none}
  #view-journal .panel-head.tools>.tool-row::-webkit-scrollbar{display:none}
  #view-journal .panel-head.tools>.tool-row .btn{flex:0 0 auto;width:auto;min-height:34px}
  #view-journal .journal-bar{padding:10px 12px 12px;gap:8px}
  #view-journal .journal-nav{display:grid;grid-template-columns:36px minmax(132px,1fr) 36px auto;gap:6px;width:100%}
  #view-journal .journal-nav .journal-mode-switch{grid-column:1/-1;width:100%}
  #view-journal #journalToday{width:auto}
  #view-journal .journal-resource-switch{width:100%;display:flex;overflow-x:auto;gap:6px;scrollbar-width:none}
}
@media(max-width:420px){
  #view-contacts .commerce-metrics,#view-commerce .commerce-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* Human-readable copy wraps by words. Only explicit machine/token fields may break anywhere. */
.simple-row b,.simple-row p,.attention-item b,.attention-item small,.notification-copy b,.notification-copy small,
.contact-card-meta,.contact-stats strong,.contact-event-copy b,.contact-event-copy p,.journal-detail-meta,
.crm-report-kpis small,.crm-bar-head b,.cc-status p,.cc-health-copy small,.log-group-copy b,.log-group-copy small,
.log-group-copy em,.log-history-row em,.release-cell strong,.today-attention-text,.today-load-head b,.today-activity-row span,
.c75-catalog-copy b,.p75-catalog-copy b,.c75-transaction-main span,.p75-transaction-main span{
  overflow-wrap:break-word;word-break:normal;hyphens:none
}
.modal-head h3{overflow-wrap:break-word;word-break:normal}
/* DS3 modal/component precision */
.modal-body{overflow-y:auto;overflow-x:hidden}
.modal-actions{margin:16px -16px -16px;padding:11px 16px}
.switch-row{justify-content:space-between;border:1px solid var(--border);background:var(--surface-muted)}
.switch-row>span{min-width:0;flex:1}.switch-row>.switch{margin-left:auto}
@media(max-width:720px){.modal-wrap{padding:8px}.modal-actions{margin:13px -13px -13px;padding:10px 13px}}

/* DS3 readability — keep operational labels legible on real screens. */
.page-context{font-size:9.5px}
.today-upcoming-head{font-size:9.5px}
.ds-site-quick .quick-action span{font-size:9.5px}
.ds-site-quick .quick-action b{font-size:11px}
#overviewUrl,#siteSlugSmall{font-size:10px}
.storage-hint,.today-site-card small{font-size:9.5px}
@media(max-width:720px){
  .page-context{font-size:9px}
  .today-upcoming-head{font-size:9px}
  .ds-site-quick .quick-action span{font-size:9.5px}
}
/* DS3 readability — never microscopic. */
.nav-item{font-size:13px}.workspace-tag{font-size:9.5px}.panel-note{font-size:11px}
.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,button:not([class]){font-size:11.5px}.mini{font-size:10.5px}.ui-tab{font-size:11px}
.contact-row-copy b{font-size:12px}.contact-row-copy small{font-size:9.5px}.contact-last b,.contact-activity b{font-size:10.5px}.contact-last small,.contact-activity small{font-size:9px}.contact-list-status{font-size:9.5px}.contact-card-head h3{font-size:15px}.contact-card-meta{font-size:9.5px}.contact-card-actions .btn{font-size:9.5px}.contact-stats span{font-size:8.8px}.contact-stats strong{font-size:14px}.contact-event-copy b{font-size:11px}.contact-event-copy p,.contact-event-copy small{font-size:9.5px}
.lead-head,.site-head,.client-head{font-size:11px}.lead-row,.site-row{font-size:13px;line-height:1.4}.lead-row,.site-row{min-height:72px;padding-block:14px}.lead-name b,.site-name b,.site-name a{display:block;font-size:13.5px;line-height:1.35}.lead-name span,.site-name small,.site-meta,.expiry,.stage,.contacts,.site-row .muted-text{font-size:11.5px;line-height:1.4}.state,.status-select,.health-pill{font-size:11.5px}.expiry-card>b{font-size:13px}
.log-group{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start}
.log-group-main{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start}
.log-status{justify-self:end}
.simple-row b,.activity-item b,.notification-item b{font-size:11.5px}.simple-row p,.activity-item p,.notification-item p{font-size:10.5px}
@media(max-width:720px){.nav-item{font-size:13.5px}.contact-row-copy b{font-size:12px}.contact-row-copy small{font-size:9.5px}}
.contact-stats article{padding:10px 8px}.contact-stats strong{font-size:13px;white-space:nowrap;overflow-wrap:normal;word-break:normal}
/* DS3 wordmark: canonical passite• with the Passite accent dot. */
.brand::before,.brand::after{content:none;display:none}
.brand-mark{display:none}
.brand-word{display:inline-flex;align-items:baseline;gap:0;white-space:nowrap}
.brand-dot{display:inline;width:auto;height:auto;margin:0;padding:0;background:none;border:0;border-radius:0;color:var(--primary);font:inherit;line-height:1;box-shadow:none}
.sidebar-head .brand-dot{color:var(--ps-accent-ink,#12181F)}

/* R20.3.3 — stability / user-facing state polish */
.view{position:relative}
.view.is-loading::before{content:"";position:sticky;z-index:20;top:var(--topbar-h);display:block;width:100%;height:2px;margin-bottom:-2px;background:linear-gradient(90deg,transparent 0,var(--primary) 42%,var(--primary) 58%,transparent 100%);background-size:220% 100%;animation:passite-view-loading 1.05s linear infinite;pointer-events:none}
@keyframes passite-view-loading{from{background-position:100% 0}to{background-position:-120% 0}}
.empty,.compact-empty,.attention-empty,.kanban-empty,.ticket-empty,.client-ticket-empty{border-radius:var(--radius-md)}
.cc-block-error,.today-block-error{margin:0;padding:13px 14px;border:1px solid color-mix(in srgb,var(--danger) 26%,var(--border));border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--danger-text);font-size:12px;line-height:1.5}
.draft-toast{max-width:min(520px,calc(100vw - 24px));align-items:center;gap:10px}
.draft-toast .toast-copy{display:grid;gap:1px;min-width:0;flex:1}
.draft-toast .toast-copy b{font-size:12px;color:var(--text)}
.draft-toast .toast-copy small{font-size:10px;color:var(--text-muted)}
.draft-toast-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.draft-toast-actions button{min-height:32px;padding:0 9px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:10px;font-weight:800;cursor:pointer}
.draft-toast-actions button:first-child{border-color:var(--primary);background:var(--primary);color:var(--primary-ink)}
:where(.workspace-tag,.page-title h1,.page-title p,.site-name a,.p75-client-site b,.p75-client-site a,.p75-client-person b,.p75-client-person small,.contact-row-copy b,.contact-row-copy small,.profile-grid-v9 strong,.account-identity-copy-v11 h3,.account-identity-copy-v11 p,.journal-column-head b,.journal-booking b){min-width:0}
@media(prefers-reduced-motion:reduce){.view.is-loading::before{animation:none;background:var(--primary)}}
/* R20.3.3 — long real data must not break the shell. */
.workspace-tag,.page-title h1,.site-name a,.p75-client-site b,.p75-client-site a,.p75-client-person b,.p75-client-person small,.contact-row-copy b,.contact-row-copy small,.account-identity-copy-v11 h3,.account-identity-copy-v11 p,.journal-column-head b,.journal-booking b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-grid-v9 strong,.booking-info strong,.booking-info small,.c75-catalog-copy b,.c75-catalog-copy p,.p75-catalog-copy b,.p75-catalog-copy p,.lead-name b,.lead-name span,.lead-desc,.client-ticket-title b,.ticket-title-line b{overflow-wrap:anywhere;word-break:normal;min-width:0}
.page-title{min-width:0}.page-title h1{max-width:100%}

/* R20.3.6 — mobile detail card, modal footer and today KPI refinements */
@media(max-width:760px){
  #view-contacts .contact-card{overflow:visible}
  #view-contacts .contact-card-head{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:16px 16px 14px}
  #view-contacts .contact-card-identity{align-items:flex-start}
  #view-contacts .contact-card-identity>div{min-width:0}
  #view-contacts .contact-card-head h3{font-size:15px;line-height:1.14;word-break:break-word}
  #view-contacts .contact-card-meta{margin-top:4px;font-size:9px;line-height:1.45;word-break:break-word}
  #view-contacts .contact-card-segment{margin-top:10px}
  #view-contacts .contact-card-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%}
  #view-contacts .contact-card-actions .btn{width:100%;min-height:38px;padding:0 8px;justify-content:center;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #view-contacts .contact-stats{gap:8px;padding:12px 16px;border-bottom:0;background:var(--surface-muted);grid-template-columns:repeat(2,minmax(0,1fr))}
  #view-contacts .contact-stats article{min-height:92px;display:flex;flex-direction:column;justify-content:space-between;padding:12px 11px;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-xs)}
  #view-contacts .contact-stats article:nth-child(2){border-right:1px solid var(--border)}
  #view-contacts .contact-stats article:nth-child(-n+2){border-bottom:1px solid var(--border)}
  #view-contacts .contact-stats span{font-size:9px;line-height:1.35}
  #view-contacts .contact-stats strong{font-size:18px;line-height:1.1}

  .modal-actions,.confirm-ui .modal-actions{margin:16px 0 0!important;padding:0!important;border-top:0!important;background:transparent!important;display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px;width:100%;box-sizing:border-box}
  .modal-actions .btn,.modal-actions a.btn,.confirm-ui .modal-actions .btn{width:100%;min-height:42px}
}

/* R20.3.8.2 — global branded scrollbars */
html{scrollbar-gutter:stable}
*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--primary) 34%,rgba(18,24,31,.88)) transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--primary) 30%,rgba(18,24,31,.78));border:2px solid transparent;border-radius:999px;background-clip:padding-box}
*::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--primary) 46%,rgba(18,24,31,.95));border:2px solid transparent;background-clip:padding-box}
*::-webkit-scrollbar-corner{background:transparent}

/* assets/design-system-v3/layouts.css */

/* Passite Design System 3.0 — Product layouts.
 * Consolidated layout/polish rules; no release-specific CSS layer is loaded at runtime.
 */

:root{
  --content-max:1640px;
  
  --bg-subtle:#E6ECF2;

  --shadow-xs:0 1px 2px rgba(18,24,31,.045),0 8px 26px -24px rgba(18,24,31,.28);
  --shadow-sm:0 1px 2px rgba(18,24,31,.055),0 14px 38px -28px rgba(18,24,31,.32);
  --shadow-card:0 1px 2px rgba(18,24,31,.05),0 18px 45px -34px rgba(18,24,31,.34);
}
html[data-theme="dark"]{
  
  --bg-subtle:#12181F;

  --shadow-xs:0 1px 2px rgba(18,24,31,.22),0 12px 28px -22px rgba(18,24,31,.72);
  --shadow-sm:0 1px 2px rgba(18,24,31,.22),0 18px 44px -28px rgba(18,24,31,.82);
  --shadow-card:0 1px 2px rgba(18,24,31,.24),0 24px 60px -36px rgba(18,24,31,.9);
}

/* ---- product shell: use the viewport instead of floating in a narrow island ---- */
.workspace{background:
  radial-gradient(circle at 86% -10%,color-mix(in srgb,var(--primary) 7%,transparent),transparent 26rem),
  linear-gradient(180deg,var(--bg) 0%,color-mix(in srgb,var(--bg-subtle) 58%,var(--bg)) 100%)}
.content{width:min(100%,var(--content-max));max-width:var(--content-max);margin:0 auto;padding:30px clamp(22px,2.4vw,42px) 64px}
.view{gap:18px;min-width:0}
.topbar{padding-inline:clamp(22px,2.4vw,42px);background:color-mix(in srgb,var(--bg) 90%,transparent);box-shadow:0 1px 0 var(--border);backdrop-filter:blur(20px) saturate(135%)}
.page-title h1,.topbar h1{font-size:21px}.page-title p,.topbar p{font-size:11.5px}
.topbar-client-search input,.global-search input{box-shadow:0 1px 0 rgba(18,24,31,.03),0 8px 24px -18px rgba(18,24,31,.3);border-color:var(--border)}

/* ---- surface hierarchy: less flat, still Netlify-like ---- */
.panel,.hero-panel,.progress-card,.version-card,.client-ticket-shell,.ticket-shell,.owner-hero,
.stats article,.overview-metrics .metric,.surface,.subscription-kpis-v9 article,.subscription-detail-v9{
  border-color:var(--border);
  box-shadow:var(--shadow-card);
}
.panel,.surface,.progress-card,.version-card,.subscription-kpis-v9 article{position:relative}
.panel::after,.surface::after,.progress-card::after,.version-card::after,.subscription-kpis-v9 article::after{
  content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  box-shadow:inset 0 1px 0 color-mix(in srgb,#E6ECF2 56%,transparent)
}
html[data-theme="dark"] .panel::after,html[data-theme="dark"] .surface::after,html[data-theme="dark"] .progress-card::after,
html[data-theme="dark"] .version-card::after,html[data-theme="dark"] .subscription-kpis-v9 article::after{box-shadow:inset 0 1px 0 rgba(230,236,242,.035)}
.panel-head{min-height:66px;padding:15px 18px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%,#E6ECF2),var(--surface))}
.panel-head h3{font-size:16px}.panel-head .kicker,.kicker{font-size:9.5px}.panel-note{font-size:11.5px;max-width:720px;line-height:1.5}

/* Controls: larger visual rhythm and real hierarchy */
.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,button:not([class]){font-size:12px}
.btn:not(.primary):not(.danger),.icon-btn,.icon-action,.ghost-icon{background:color-mix(in srgb,var(--surface) 94%,var(--bg-subtle));box-shadow:0 1px 1px rgba(18,24,31,.025)}
.btn:not(.primary):not(.danger):hover,.icon-btn:hover,.icon-action:hover,.ghost-icon:hover{background:var(--surface-raised);border-color:var(--border-strong);box-shadow:var(--shadow-xs);transform:none}
.btn.primary{background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 92%,#E6ECF2),var(--primary));box-shadow:0 8px 22px -15px color-mix(in srgb,var(--primary) 72%,#12181F)}
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea{font-size:12.5px;border-color:var(--border);background:var(--surface)}

/* ---- typography/readability floor ---- */
.nav-item{font-size:13px}.workspace-tag{font-size:10px}.page-context{font-size:10px}
.stats article>span,.metric>span,.commerce-metrics article>span,.owner-commerce-metrics article>span,
.crm-report-kpis span,.subscription-kpis-v9 small{font-size:11px}
.stats article strong,.metric strong,.commerce-metrics strong,.owner-commerce-metrics strong{font-size:26px}
.simple-row b,.activity-item b,.notification-item b,.cc-health-copy b{font-size:12px}
.simple-row p,.activity-item p,.notification-item p,.cc-health-copy small{font-size:10.5px}

/* ---- all KPI rows: avoid giant empty white boxes while adding depth ---- */
.today-kpis,.commerce-metrics,.owner-commerce-metrics,.overview-metrics,.stats,.crm-report-kpis,.subscription-kpis-v9{gap:12px}
.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article{
  overflow:hidden;min-height:104px;padding:16px 17px;background:
    radial-gradient(circle at 100% 0%,color-mix(in srgb,var(--primary) 7%,transparent),transparent 68px),var(--surface);
  border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow-xs)
}
.today-kpi::before,.commerce-metrics article::before,.owner-commerce-metrics article::before,.overview-metrics .metric::before,.stats article::before,.crm-report-kpis article::before,.subscription-kpis-v9 article::before{
  content:"";position:absolute;left:0;top:16px;bottom:16px;width:2px;border-radius:3px;background:color-mix(in srgb,var(--primary) 64%,transparent);opacity:.72
}
.commerce-metrics,.owner-commerce-metrics{padding:14px 16px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface-muted) 66%,transparent)}
.commerce-metrics article,.owner-commerce-metrics article{border-right:1px solid var(--border)}

/* ---- client today: use width, make empty state intentional, keep side column balanced ---- */
#view-overview{gap:16px}
.ds-today-welcome{padding:8px 0 2px}.ds-today-welcome h2{font-size:34px}.ds-today-welcome p{font-size:12.5px}
.today-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.today-kpi{min-height:116px}.today-kpi strong{font-size:30px}
.ds-today-layout{grid-template-columns:minmax(0,1.72fr) minmax(330px,.72fr);gap:16px;align-items:start}
.ds-today-primary{min-height:390px}
.ds-today-primary:has(.today-clear){min-height:360px}
.ds-today-primary .today-clear{min-height:260px;padding:42px 24px;background:
  radial-gradient(circle at 50% 44%,color-mix(in srgb,var(--primary) 8%,transparent),transparent 110px)}
.ds-today-primary .today-clear::before{content:"";width:48px;height:48px;border-radius:14px;border:1px solid color-mix(in srgb,var(--primary) 28%,var(--border));background:linear-gradient(145deg,var(--primary-soft),var(--surface));box-shadow:var(--shadow-xs)}
.ds-today-primary .today-clear b{font-size:15px}.ds-today-primary .today-clear span{font-size:12px}
.ds-today-side{gap:16px}.today-attention,.ds-site-card{min-width:0}
.ds-site-card{padding-bottom:14px}.ds-site-card-head{padding:16px 17px}.ds-site-card-head h3{font-size:15px}.ds-site-card-head p{font-size:10.5px}.site-state{font-size:10px}
.ds-site-storage{padding:15px 17px}.ds-site-storage .progress-head{font-size:10.5px}.ds-site-storage small{font-size:10px}
.ds-site-quick{gap:9px;padding:0 17px 13px}.ds-site-quick .quick-action{min-height:92px;padding:12px;background:linear-gradient(180deg,var(--surface-muted),color-mix(in srgb,var(--surface) 92%,var(--surface-muted)))}.ds-site-quick .quick-action b{font-size:11.5px}.ds-site-quick .quick-action span{font-size:10px}
.ds-site-card .site-link-actions{padding:0 17px;gap:8px}
.ds-secondary-grid{gap:16px}.ds-site-details{gap:16px}

/* ---- CRM: full-width operational workspace, not a thin centered form ---- */
#view-contacts>.panel{overflow:hidden}.contact-toolbar{padding:14px 16px;background:var(--surface-muted);border-bottom:1px solid var(--border)}
.field-search{max-width:500px}.contact-layout{grid-template-columns:minmax(0,1.42fr) minmax(390px,.78fr);min-height:500px}
.contact-list{background:var(--surface)}.contact-card{background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--surface-muted) 45%,var(--surface)))}
.contact-row{min-height:64px}.contact-row:hover{background:var(--surface-muted)}
.contact-row.active{background:linear-gradient(90deg,var(--primary-soft),color-mix(in srgb,var(--primary-soft) 35%,var(--surface)));box-shadow:inset 3px 0 var(--primary)}
.contact-row-copy b{font-size:12.5px}.contact-row-copy small{font-size:10px}.contact-card-head{padding:20px}.contact-card-head h3{font-size:17px}.contact-card-meta{font-size:10.5px}
.contact-stats article{min-height:86px;padding:12px 10px;background:var(--surface-muted)}.contact-stats strong{font-size:15px}

/* ---- journal: no giant empty white ocean; week cards compact and responsive ---- */
#view-journal>.panel{overflow:hidden}.journal-bar{padding:14px 16px;background:linear-gradient(180deg,var(--surface-muted),color-mix(in srgb,var(--surface) 82%,var(--surface-muted)));border-bottom:1px solid var(--border)}
.journal-body{padding:16px;min-height:0}.journal-week{gap:10px;min-width:0;border-radius:0;overflow:visible}
.journal-week-day{min-height:172px;border-radius:12px;background:var(--surface);box-shadow:var(--shadow-xs)}
.journal-week-day.is-today{box-shadow:0 0 0 1px var(--primary),var(--shadow-xs);background:linear-gradient(180deg,color-mix(in srgb,var(--primary-soft) 58%,var(--surface)),var(--surface))}
.journal-week-day header{padding:10px 11px}.journal-week-head b{font-size:13px}.journal-week-head small,.journal-week-load{font-size:10px}
.journal-week-list{min-height:112px;padding:10px;align-content:start}.journal-week-empty{display:flex;align-items:center;gap:7px;margin:0;padding:9px 10px;border-radius:8px;background:var(--surface-muted);font-size:10.5px}.journal-week-empty::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--success);opacity:.7}
.journal-week-item{padding:8px 9px;box-shadow:0 1px 0 rgba(18,24,31,.03)}

/* ---- analytics / CRM report: information density without empty expanses ---- */
.crm-report{margin-top:18px}.crm-report-kpis{padding:16px;background:color-mix(in srgb,var(--surface-muted) 58%,transparent)}
.crm-report-kpis article{min-height:108px}.crm-report-kpis strong{font-size:25px;margin-top:8px}.crm-report-kpis small{font-size:10.5px}
.crm-report-body{gap:20px;padding:18px}.crm-report-block{min-height:150px;padding:16px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(180deg,var(--surface),var(--surface-muted));box-shadow:var(--shadow-xs)}
.analytics-kpis,.analytics-health-grid,.analytics-breakdown-grid{gap:14px}.analytics-chart-panel{min-height:360px}.chart{min-height:300px}

/* ---- files: make toolbar intentional and search useful ---- */
.file-panel{overflow:hidden}.files-storage{padding:14px 18px;background:linear-gradient(180deg,var(--surface-muted),color-mix(in srgb,var(--surface) 72%,var(--surface-muted)))}
.file-toolbar{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(420px,1.3fr);gap:16px;padding:14px 18px;background:var(--surface);align-items:center}
.folder-nav{min-width:0}.breadcrumbs{overflow-x:auto;white-space:nowrap}.file-tools{display:grid;grid-template-columns:auto minmax(230px,1fr) minmax(140px,180px);gap:9px;width:100%;align-items:center}.search-file{width:100%;min-width:0}.search-file input{width:100%;min-width:0}.file-tools select{width:100%;min-width:0}
.file-dropzone{min-height:110px;margin:16px 18px;padding:22px;border-radius:12px;border-width:1px;background:
  radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--primary) 8%,transparent),transparent 120px),var(--surface-muted)}
.file-dropzone svg{width:24px;height:24px}.file-dropzone b{font-size:12.5px}.file-dropzone span{font-size:10.5px}
.file-table-head,.file-row{grid-template-columns:32px minmax(240px,1.6fr) minmax(90px,.4fr) minmax(130px,.55fr) minmax(190px,auto);padding-inline:18px}.file-row{min-height:66px}

/* ---- settings: avoid huge empty right/bottom area and make sections substantial ---- */
.account-page-head{margin-bottom:22px}.account-page-head h2{font-size:32px}.account-page-head p{font-size:12.5px}
.account-layout-v9{grid-template-columns:250px minmax(0,1fr);gap:22px;align-items:start}.account-nav-v9{box-shadow:var(--shadow-xs);padding:11px}.account-nav-v9 button{font-size:12.5px;min-height:44px}.account-content-v9{max-width:none}
.profile-summary-v9{min-height:280px}.profile-grid-v9>div{padding:22px}.profile-grid-v9 small{font-size:10.5px}.profile-grid-v9 strong{font-size:14.5px}
#accountPaneSecurity .account-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.security-panel{grid-column:1/-1}

/* ---- owner overview: eliminate overlap and fix 0 / 5 typography ---- */
.ds-owner-health{box-shadow:var(--shadow-xs);padding:20px 22px}.cc-status-main h2{font-size:19px}.cc-status-main p{font-size:11px}
.ds-owner-kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.ds-owner-kpis .ds-owner-kpi{min-height:126px;padding:17px;overflow:hidden;background:radial-gradient(circle at 100% 0%,color-mix(in srgb,var(--primary) 7%,transparent),transparent 76px),var(--surface);box-shadow:var(--shadow-xs)}
.ds-owner-kpis .ds-owner-kpi strong{font-size:29px}.ds-owner-kpis .ds-owner-kpi small{font-size:10px;line-height:1.45}.ds-kpi-state{font-size:9.5px}
.ds-owner-kpis .ds-owner-kpi:nth-child(2)>strong{display:flex;align-items:baseline;gap:8px;font-size:0}.ds-owner-kpis .ds-owner-kpi:nth-child(2)>strong span{font-size:29px}.ds-owner-kpis .ds-owner-kpi:nth-child(2)>strong span+span::before{content:"/";margin-right:8px;color:var(--text-muted);font-size:13px;font-weight:600}
.ds-owner-main-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(360px,.72fr);gap:16px;align-items:stretch;isolation:isolate}.ds-owner-main-grid>*{min-width:0;margin:0;position:relative;inset:auto;transform:none}.ds-events-panel,.ds-services-panel{min-height:320px;height:auto;overflow:hidden}.ds-services-panel{z-index:0}.ds-events-panel{z-index:0}
.ds-services-panel .cc-health-list{padding:6px 17px 14px}.ds-services-panel .cc-health-row{min-height:48px}.ds-owner-main-grid .panel-head h3{font-size:16px}.ds-owner-main-grid .panel-head .kicker{font-size:9.5px}

/* ---- owner data screens + prompt builder: readable, layered, not a long blank panel ---- */
.lead-row,.site-row{min-height:68px}.lead-name b,.site-name b,.site-name a{font-size:13.5px}.lead-name span,.site-name small,.site-meta,.expiry,.stage,.contacts{font-size:11.5px}
.release-cell,.log-kpi{background:linear-gradient(180deg,var(--surface),var(--surface-muted));box-shadow:var(--shadow-xs)}
.brief-form{background:transparent}.form-section{border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-xs);padding:20px;margin-bottom:16px}.section-title{padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid var(--border)}
.brief-result,.prompt-result,.brief-output{border-radius:14px;box-shadow:var(--shadow-xs)}.brief-actions,.prompt-actions{gap:9px}.brief-actions .btn.primary,.prompt-actions .btn.primary{min-width:160px}

/* ---- generic empty states: not dead whitespace ---- */
.empty,.compact-empty,.attention-empty,.kanban-empty,.ticket-empty,.client-ticket-empty{min-height:150px;padding:34px 24px;background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--primary) 6%,transparent),transparent 90px)}
.empty::before,.attention-empty::before,.ticket-empty::before,.client-ticket-empty::before{width:42px;height:42px;border-radius:13px;border-style:solid;background:linear-gradient(145deg,var(--primary-soft),var(--surface));border-color:color-mix(in srgb,var(--primary) 24%,var(--border))}
.empty strong,.ticket-empty b,.client-ticket-empty b{font-size:14px}.empty span,.ticket-empty span,.client-ticket-empty span{font-size:11.5px;line-height:1.5}

/* ---- keep approved subscription center strong ---- */
.subscription-page-head-v9 h2{font-size:32px}.subscription-page-head-v9 p{font-size:12.5px}.subscription-owner-grid-v9{grid-template-columns:minmax(0,1.6fr) minmax(390px,.75fr);gap:16px}.subscription-detail-v9{box-shadow:var(--shadow-card)}.client-sub-meta-v9 article,.client-sub-history-v9{box-shadow:var(--shadow-xs)}

/* ---- breakpoint pass: 2560 -> 360 ---- */
@media(min-width:1921px){:root{--content-max:1760px}.content{padding-inline:52px}.ds-today-layout{grid-template-columns:minmax(0,1.85fr) minmax(380px,.65fr)}.contact-layout{grid-template-columns:minmax(0,1.55fr) minmax(430px,.7fr)}}
@media(max-width:1440px){:root{--content-max:1500px}.content{padding-inline:26px}.ds-today-layout{grid-template-columns:minmax(0,1.55fr) minmax(310px,.72fr)}.ds-owner-main-grid{grid-template-columns:minmax(0,1.35fr) minmax(330px,.72fr)}.contact-layout{grid-template-columns:minmax(0,1.3fr) minmax(360px,.8fr)}}
@media(max-width:1180px){
  .content{padding-inline:22px}.ds-today-layout,.ds-owner-main-grid{grid-template-columns:1fr}.ds-today-side{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-services-panel,.ds-events-panel{min-height:260px}.contact-layout{grid-template-columns:1fr}.contact-card{min-height:420px}.file-toolbar{grid-template-columns:1fr}.file-tools{grid-template-columns:auto minmax(180px,1fr) minmax(130px,170px)}.subscription-owner-grid-v9{grid-template-columns:1fr}
}
@media(max-width:980px){
  .content{padding-inline:18px}.today-kpis,.ds-owner-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-today-side{grid-template-columns:1fr 1fr}.journal-week{grid-template-columns:repeat(4,minmax(0,1fr))}.journal-week-day{min-height:155px}.crm-report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.account-layout-v9{grid-template-columns:1fr}.account-nav-v9{position:static;display:flex;overflow-x:auto}.account-nav-v9 button{width:auto;white-space:nowrap}.subscription-kpis-v9{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:768px){
  .content{padding:18px 14px 78px}.panel-head{padding:13px 14px}.panel-head.tools{display:grid;grid-template-columns:1fr;align-items:start}.panel-head.tools .tool-row{width:100%;justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap;padding-bottom:3px}.panel-head.tools .tool-row>*{flex:0 0 auto}
  .today-kpis,.ds-owner-kpis,.commerce-metrics,.owner-commerce-metrics,.overview-metrics,.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article{min-height:96px}.ds-today-welcome h2{font-size:28px}.ds-today-side{grid-template-columns:1fr}.ds-today-primary{min-height:0}.ds-today-primary:has(.today-clear){min-height:0}.ds-today-primary .today-clear{min-height:220px}
  .file-toolbar{grid-template-columns:1fr;padding:12px 14px}.folder-nav{overflow-x:auto}.file-tools{grid-template-columns:1fr 1fr}.file-mode{grid-column:1/-1;width:max-content}.search-file{grid-column:1/2}.file-tools select{grid-column:2/3}.file-dropzone{margin:13px 14px;min-height:120px}.file-table-head{display:none}.file-row{grid-template-columns:32px minmax(0,1fr) auto;padding-inline:14px}.file-row>.file-cell:not(:last-child){display:none}
  .journal-week{grid-template-columns:repeat(2,minmax(0,1fr))}.journal-week-day{min-height:148px}.journal-body{padding:12px}.journal-bar{padding:12px}
  #accountPaneSecurity .account-grid{grid-template-columns:1fr}.security-panel{grid-column:auto}.profile-summary-v9{min-height:0}.subscription-owner-grid-v9{grid-template-columns:1fr}
}
@media(max-width:480px){
  .content{padding-inline:12px}.topbar{padding-inline:12px}.page-title h1{font-size:18px}.today-kpis,.ds-owner-kpis,.commerce-metrics,.owner-commerce-metrics,.overview-metrics,.stats,.crm-report-kpis,.subscription-kpis-v9{grid-template-columns:1fr 1fr;gap:8px}.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article{min-height:90px;padding:13px}.today-kpi strong,.stats article strong,.commerce-metrics article strong,.metric strong{font-size:23px}
  .ds-site-quick{grid-template-columns:1fr 1fr}.ds-site-quick .quick-action:last-child{grid-column:1/-1}.journal-week{grid-template-columns:1fr}.journal-week-day{min-height:126px}.journal-week-list{min-height:74px}.file-tools{grid-template-columns:1fr}.file-mode,.search-file,.file-tools select{grid-column:auto;width:100%}.file-mode{display:grid;grid-template-columns:1fr 1fr;width:100%}.file-mode button{width:100%}.file-dropzone{flex-direction:column;text-align:center}.account-page-head h2,.subscription-page-head-v9 h2{font-size:27px}
}
@media(max-width:375px){
  .content{padding-inline:10px}.today-kpis,.ds-owner-kpis,.commerce-metrics,.owner-commerce-metrics,.overview-metrics,.stats,.crm-report-kpis,.subscription-kpis-v9{grid-template-columns:1fr}.topbar-actions{gap:5px}.profile-chip{width:32px;height:32px}.panel-head{padding-inline:12px}
}
/* DS3 mobile action bars: no important button is hidden off-canvas. */
@media(max-width:768px){
  .panel-head.tools .tool-row{display:flex;flex-wrap:wrap;overflow:visible;gap:7px}
  .panel-head.tools .tool-row>*{flex:0 0 auto;max-width:100%}
  #view-journal .panel-head.tools .tool-row .btn{flex:1 1 calc(50% - 7px);min-width:140px;justify-content:center}
}
@media(max-width:390px){#view-journal .panel-head.tools .tool-row .btn{flex:1 1 100%;width:100%}}
/* Critical DS3 tablet breakpoint repair: prevent desktop grid restoration
   after the original <=1100 off-canvas rule, leaving workspace only sidebar-wide. */
@media(max-width:1100px){
  .app{grid-template-columns:minmax(0,1fr)}
  .workspace{width:100%;max-width:100vw;grid-column:1}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:min(var(--sidebar-w),86vw);transform:translateX(-105%);box-shadow:var(--shadow-lg)}
  .sidebar.open{transform:translateX(0)}
  .mobile-menu{display:inline-flex}
  .topbar{grid-template-columns:auto minmax(180px,1fr) minmax(220px,380px) auto}
}
@media(max-width:760px){.topbar{grid-template-columns:auto minmax(0,1fr) auto}}

/* ---- DS3 depth pass: make the product feel like a real SaaS workspace, not flat admin HTML ---- */
.sidebar{
  background:
    radial-gradient(circle at 18% 0%,rgba(50,230,226,.065),transparent 18rem),
    linear-gradient(180deg,#12181F 0%,#12181F 55%,#12181F 100%);
  border-right:1px solid rgba(18,24,31,.12);
  box-shadow:10px 0 40px -34px rgba(18,24,31,.75)
}
.nav-item{border:1px solid transparent;transition:background .16s ease,border-color .16s ease,transform .16s ease,color .16s ease}
.nav-item:hover{background:rgba(230,236,242,.045);border-color:rgba(230,236,242,.035);transform:none}
.nav-item.active{background:linear-gradient(90deg,rgba(50,230,226,.18),rgba(50,230,226,.09));border-color:rgba(50,230,226,.12);box-shadow:inset 3px 0 #32E6E2,0 12px 28px -24px rgba(50,230,226,.7)}
.sidebar-bottom{background:linear-gradient(180deg,transparent,rgba(18,24,31,.12))}

.content{position:relative}
.content::before{content:"";position:fixed;z-index:-1;pointer-events:none;right:-160px;top:84px;width:460px;height:460px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--primary) 6%,transparent),transparent 68%);filter:blur(4px)}
.panel,.surface,.progress-card,.version-card,.client-ticket-shell,.ticket-shell,.subscription-detail-v9{
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%,#E6ECF2) 0%,var(--surface) 100%);
  border-radius:15px
}
.panel-head{position:relative;overflow:hidden}
.panel-head::after{content:"";position:absolute;right:-40px;top:-70px;width:180px;height:150px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--primary) 6%,transparent),transparent 70%);pointer-events:none}
.panel-head .kicker,.kicker{color:color-mix(in srgb,var(--primary) 78%,#12181F);font-weight:850;letter-spacing:.105em}
html[data-theme="dark"] .panel-head .kicker,html[data-theme="dark"] .kicker{color:color-mix(in srgb,var(--primary) 82%,#E6ECF2)}

/* KPI cards gain a quiet product signature and clearer interaction hierarchy. */
.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.ds-owner-kpi{
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease
}
.today-kpi:hover,.commerce-metrics article:hover,.owner-commerce-metrics article:hover,.overview-metrics .metric:hover,.stats article:hover,.crm-report-kpis article:hover,.subscription-kpis-v9 article:hover,.ds-owner-kpi:hover{
  transform:none;border-color:color-mix(in srgb,var(--primary) 23%,var(--border));box-shadow:0 2px 3px rgba(18,24,31,.04),0 20px 44px -30px rgba(18,24,31,.4)
}
.today-kpi>span,.commerce-metrics article>span,.owner-commerce-metrics article>span,.stats article>span,.crm-report-kpis article>span{font-weight:650;color:var(--text-muted)}

/* Week schedule becomes a real planning surface, not seven empty rectangles. */
.journal-week-day{background:linear-gradient(180deg,var(--surface) 0%,color-mix(in srgb,var(--surface-muted) 58%,var(--surface)) 100%);box-shadow:var(--shadow-xs);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.journal-week-day:hover{transform:none;border-color:color-mix(in srgb,var(--primary) 25%,var(--border));box-shadow:var(--shadow-sm)}
.journal-week-day.is-today{background:linear-gradient(180deg,color-mix(in srgb,var(--primary-soft) 70%,var(--surface)),var(--surface));box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 18%,transparent),var(--shadow-sm)}
.journal-week-empty{border:1px dashed color-mix(in srgb,var(--primary) 18%,var(--border));background:color-mix(in srgb,var(--primary-soft) 44%,var(--surface-muted))}

/* File manager: stronger drop zone and tool grouping. */
.file-toolbar{background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--surface-muted) 72%,var(--surface)))}
.file-dropzone{position:relative;overflow:hidden;border:1px dashed color-mix(in srgb,var(--primary) 32%,var(--border-strong));background:
  radial-gradient(circle at 50% 10%,color-mix(in srgb,var(--primary) 8%,transparent),transparent 140px),
  linear-gradient(180deg,color-mix(in srgb,var(--surface-muted) 66%,var(--surface)),var(--surface));
  box-shadow:inset 0 1px 0 rgba(230,236,242,.55)
}
.file-dropzone::before{content:"↑";display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px;border-radius:12px;background:var(--primary-soft);color:var(--primary);font-size:20px;font-weight:850;border:1px solid color-mix(in srgb,var(--primary) 18%,var(--border))}
.file-dropzone svg{display:none}

/* CRM: make the master/detail boundary and selected customer more tangible. */
.contact-layout{background:var(--surface)}
.contact-list{border-right:1px solid var(--border)}
.contact-card{box-shadow:inset 1px 0 0 color-mix(in srgb,#E6ECF2 58%,transparent)}
.contact-card-head{background:linear-gradient(180deg,color-mix(in srgb,var(--primary-soft) 28%,var(--surface)),var(--surface));border-bottom:1px solid var(--border)}
.contact-stats article{border:1px solid color-mix(in srgb,var(--border) 88%,transparent);border-radius:10px}

/* Settings: avoid one huge blank rectangle, give each profile value a real information card. */
.profile-grid-v9{padding:16px;gap:10px;background:color-mix(in srgb,var(--surface-muted) 56%,var(--surface))}
.profile-grid-v9>div{padding:16px;border:1px solid var(--border);border-radius:11px;background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--surface-muted) 38%,var(--surface)));min-height:88px;box-shadow:var(--shadow-xs)}
.profile-grid-v9 small{font-size:10.5px}.profile-grid-v9 strong{font-size:14px;margin-top:8px}
.account-nav-v9{padding:8px;background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--surface-muted) 55%,var(--surface)))}
.account-nav-v9 button{border:1px solid transparent;border-radius:9px;transition:.16s ease}
.account-nav-v9 button:hover{background:var(--surface-muted)}
.account-nav-v9 button.active{background:linear-gradient(90deg,var(--primary-soft),color-mix(in srgb,var(--primary-soft) 42%,var(--surface)));border-color:color-mix(in srgb,var(--primary) 15%,var(--border));box-shadow:inset 2px 0 var(--primary)}

/* Owner overview: stronger hierarchy, no visual collisions. */
.ds-owner-hero{background:
  radial-gradient(circle at 82% 10%,color-mix(in srgb,var(--primary) 8%,transparent),transparent 180px),
  linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%,#E6ECF2),var(--surface));
  box-shadow:var(--shadow-card)
}
.ds-owner-kpis .ds-owner-kpi{background:
  radial-gradient(circle at 100% 0%,color-mix(in srgb,var(--primary) 8%,transparent),transparent 80px),
  linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--surface-muted) 36%,var(--surface)));
  border:1px solid var(--border);box-shadow:var(--shadow-xs);border-radius:14px
}
.ds-owner-kpis .ds-owner-kpi::after{content:"";position:absolute;left:16px;right:16px;bottom:0;height:2px;border-radius:4px;background:linear-gradient(90deg,color-mix(in srgb,var(--primary) 58%,transparent),transparent);opacity:.7}
.cc-health-row{border-radius:9px;transition:background .15s ease}.cc-health-row:hover{background:var(--surface-muted)}

/* Empty states become intentional destinations instead of blank space. */
.today-clear,.empty,.compact-empty,.attention-empty,.kanban-empty,.ticket-empty,.client-ticket-empty{
  position:relative;overflow:hidden
}
.today-clear::after,.empty::after,.compact-empty::after,.attention-empty::after,.ticket-empty::after,.client-ticket-empty::after{
  content:"";position:absolute;width:180px;height:180px;right:-70px;bottom:-95px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--primary) 7%,transparent),transparent 68%);pointer-events:none
}

/* Visible focus is part of the product, not a browser afterthought. */
:where(button,a,input,select,textarea):focus-visible{outline:2px solid color-mix(in srgb,var(--primary) 76%,#E6ECF2);outline-offset:2px}

@media(prefers-reduced-motion:reduce){.nav-item,.btn,.icon-btn,.journal-week-day,.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.ds-owner-kpi{transition:none;transform:none}}
/* DS3 empty-data density: blank accounts should still look complete rather than stretched. */
.ds-today-primary:has(.today-clear){min-height:300px}.ds-today-primary .today-clear{min-height:205px;padding-block:30px}
.ds-events-panel,.ds-services-panel{min-height:275px}
@media(max-width:1180px){.ds-events-panel,.ds-services-panel{min-height:230px}}
@media(max-width:768px){.ds-today-primary:has(.today-clear){min-height:0}.ds-today-primary .today-clear{min-height:190px}}

/* 1. Accent markers must belong to their own cards. Without positioning context
   the absolute ::before marker could anchor to the page and become a long cyan stripe. */
.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,
.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.ds-owner-kpi{
  position:relative;
}
.today-kpi::before,.commerce-metrics article::before,.owner-commerce-metrics article::before,
.overview-metrics .metric::before,.stats article::before,.crm-report-kpis article::before,
.subscription-kpis-v9 article::before{
  top:18px;bottom:18px;height:auto;opacity:.42;
}

/* 2. Action-control geometry: text and icons are always optically centred.
   Navigation stays left-aligned intentionally; all action controls are centred. */
.btn,.icon-btn,.icon-action,.ghost-icon,.mini,.open-site,.profile-chip,.password-toggle,
.sidebar-close,.mobile-menu,.menu-btn,.theme-btn,.ui-tab,.segmented button,
.modal-actions button,.modal-actions a,.tool-row .btn,.tool-row a.btn,
.site-link-actions .btn,.site-link-actions a.btn,.brief-actions .btn,.prompt-actions .btn,
.payment-client-actions .btn,.publish-footer .btn,.subscription-actions-v9 .btn,
.client-sub-actions-v9 .btn,.client-ticket-create .btn,.contact-card-actions .btn{
  align-items:center;
  justify-content:center;
  text-align:center;
  vertical-align:middle;
  line-height:1.15;
}
.btn svg,.icon-btn svg,.icon-action svg,.ghost-icon svg,.open-site svg,.password-toggle svg,
.sidebar-close svg,.mobile-menu svg,.site-link-actions svg,.tool-row .btn svg{
  display:block;flex:0 0 auto;align-self:center;
}
.btn,.open-site,.ui-tab,.segmented button{padding-top:0;padding-bottom:0}
.icon-btn,.icon-action,.ghost-icon,.profile-chip,.password-toggle,.sidebar-close,.mobile-menu{padding:0}
.nav-item{align-items:center}
.nav-item svg{align-self:center;flex:none}

/* 3. Today: both columns finish on one baseline. The schedule uses all vertical space
   instead of ending early while the site card continues below it. */
.ds-today-layout{align-items:stretch}
.ds-today-primary{align-self:stretch;height:100%;display:flex;flex-direction:column}
.ds-today-primary .today-upcoming-list{flex:1 1 auto;display:flex;flex-direction:column}
.ds-today-primary .today-upcoming-list>.today-clear{flex:1 1 auto;min-height:300px;align-content:center;justify-content:center}
.ds-today-primary .today-upcoming-list>.today-upcoming-row{flex:0 0 auto}
.ds-today-side{height:100%;align-content:start}

/* Site link / QR controls: exactly two proportional buttons, centred content. */
.ds-site-card .site-link-actions{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;padding:0 17px 2px;width:100%;
}
.ds-site-card .site-link-actions .btn{
  width:100%;min-width:0;min-height:38px;margin:0;
  gap:7px;white-space:nowrap;
}
.ds-site-card .site-link-actions .btn svg{width:15px;height:15px}

/* 4. Account: no detached tiny menu. One full-width account hub + integrated tabs. */
.account-layout-v9.account-layout-v11{grid-template-columns:1fr;gap:16px;align-items:stretch}
.panel.account-hub-v11{padding:0;overflow:hidden;box-shadow:var(--shadow-sm)}
.account-identity-v11{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;
  padding:20px 22px;background:linear-gradient(135deg,color-mix(in srgb,var(--primary-soft) 55%,var(--surface)),var(--surface));
}
.account-avatar-v11{
  width:48px;height:48px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(145deg,var(--primary),color-mix(in srgb,var(--primary) 72%,#32E6E2));
  color:var(--ps-ink);font-size:14px;font-weight:900;letter-spacing:.02em;box-shadow:0 10px 26px -18px color-mix(in srgb,var(--primary) 80%,#12181F);
}
.account-identity-copy-v11{min-width:0}.account-identity-copy-v11 h3{margin:4px 0 2px;font-size:20px;letter-spacing:-.025em}
.account-identity-copy-v11 p{margin:0;color:var(--text-muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-identity-status-v11{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:30px;padding:0 11px;border:1px solid color-mix(in srgb,var(--success) 28%,var(--border));border-radius:999px;background:var(--success-soft);color:var(--success-text);font-size:10.5px;font-weight:800;white-space:nowrap}
.account-identity-status-v11 i{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px color-mix(in srgb,currentColor 10%,transparent)}
.account-nav-v9.account-tabs-v11{
  position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;padding:0;border:0;border-top:1px solid var(--border);
  border-radius:0;background:var(--surface);box-shadow:none;overflow:visible;
}
.account-nav-v9.account-tabs-v11 button{
  width:100%;min-height:50px;border:0;border-right:1px solid var(--border);
  border-radius:0;background:transparent;color:var(--text-secondary);
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:0 14px;text-align:center;font-size:12px;font-weight:780;white-space:nowrap;
}
.account-nav-v9.account-tabs-v11 button:last-child{border-right:0}
.account-nav-v9.account-tabs-v11 button svg{width:16px;height:16px;flex:none;color:var(--text-muted)}
.account-nav-v9.account-tabs-v11 button:hover{background:var(--surface-muted);color:var(--text)}
.account-nav-v9.account-tabs-v11 button.active{
  background:linear-gradient(180deg,var(--primary-soft),color-mix(in srgb,var(--primary-soft) 45%,var(--surface)));
  color:var(--primary-text);box-shadow:inset 0 -2px var(--primary);
}
.account-nav-v9.account-tabs-v11 button.active svg{color:var(--primary-text)}
.account-content-v9{width:100%;max-width:none}
.profile-summary-v9.profile-summary-v11{min-height:0;overflow:hidden}
.profile-summary-v9.profile-summary-v11 .panel-head{align-items:center}
.profile-summary-v9.profile-summary-v11 .panel-head>.btn{margin-left:auto}
.profile-grid-v9.profile-grid-v11{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;
  padding:16px;background:color-mix(in srgb,var(--surface-muted) 52%,var(--surface));
}
.profile-grid-v9.profile-grid-v11>div{
  min-height:96px;padding:16px;border:1px solid var(--border);border-radius:12px;
  background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--surface-muted) 36%,var(--surface)));
  box-shadow:var(--shadow-xs);display:flex;flex-direction:column;justify-content:center;
}
.profile-grid-v11 small{font-size:10.5px;margin:0 0 8px}
.profile-grid-v11 strong{font-size:13.5px;line-height:1.35;margin:0;overflow-wrap:anywhere}

/* 5. Empty states should occupy available card space cleanly, without floating at the top. */
.today-clear,.empty,.attention-empty,.compact-empty{box-sizing:border-box}

/* 6. Avoid accidental pseudo-decoration escaping its component anywhere. */
.panel,.surface,.progress-card,.version-card,.subscription-kpis-v9 article{isolation:isolate}

@media(max-width:1180px){
  .profile-grid-v9.profile-grid-v11{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:980px){
  .ds-today-primary{height:auto}.ds-today-primary .today-upcoming-list>.today-clear{min-height:240px}
  .account-identity-v11{padding:18px}
}
@media(max-width:720px){
  .ds-site-card .site-link-actions{padding-inline:14px}
  .account-identity-v11{grid-template-columns:auto minmax(0,1fr);gap:11px;padding:16px}
  .account-identity-status-v11{grid-column:1/-1;justify-self:start}
  .account-nav-v9.account-tabs-v11{display:flex;overflow-x:auto;overflow-y:hidden}
  .account-nav-v9.account-tabs-v11 button{flex:0 0 auto;width:auto;min-width:max-content;min-height:47px;padding-inline:12px;font-size:11px;gap:6px}
  .account-nav-v9.account-tabs-v11 button svg{width:15px;height:15px}
  .profile-grid-v9.profile-grid-v11{grid-template-columns:1fr 1fr;padding:12px;gap:8px}
  .profile-grid-v9.profile-grid-v11>div{min-height:88px;padding:13px}
  .profile-summary-v9.profile-summary-v11 .panel-head{align-items:flex-start}
}
@media(max-width:480px){
  .account-nav-v9.account-tabs-v11 button{font-size:10.5px;letter-spacing:-.01em}
  .profile-grid-v9.profile-grid-v11{grid-template-columns:1fr}
  .profile-grid-v9.profile-grid-v11>div{min-height:78px}
  .ds-site-card .site-link-actions{grid-template-columns:1fr 1fr;gap:8px}
  .ds-site-card .site-link-actions .btn{font-size:10.5px;padding-inline:8px}
}

/* Explicitly centre custom button families that predate the shared .btn component. */
.today-action,.journal-mode{
  display:inline-flex;align-items:center;justify-content:center;text-align:center;line-height:1.15;
}
.ds-site-quick .quick-action{
  display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto;
  align-content:center;justify-content:center;justify-items:center;text-align:center;
}
.ds-site-quick .quick-action svg{justify-self:center}
.ds-site-quick .quick-action b,.ds-site-quick .quick-action span{text-align:center;width:100%}

/* The obsolete Today activity card was removed from markup. If old cached markup
   is ever present, hide it rather than leaving a half-width orphan card. */
#todayActivity{display:none}
.ds-secondary-grid:has(#todayActivity){display:none}
.today-load-full{width:100%;grid-column:1/-1}
.today-load-full.hidden{display:none}

/* Shared control geometry guard: labels and icons must remain inside the control. */
.btn,.icon-btn,.open-site,.today-action,.journal-mode,.site-link-actions .btn{
  box-sizing:border-box;
  min-width:0;
  max-width:none;
}
.btn>svg,.icon-btn>svg,.today-action>svg,.journal-mode>svg,.site-link-actions .btn>svg{
  flex:0 0 auto;
}

/* Today header action has its own robust mobile geometry. */
.today-upcoming>.panel-head>.btn{
  flex:0 0 auto;
  max-width:none;
  min-height:40px;
  height:auto;
  padding:10px 14px;
  gap:8px;
  line-height:1.2;
  white-space:nowrap;
  overflow:visible;
}
.today-upcoming>.panel-head>.btn svg{
  width:16px;
  height:16px;
}

@media(max-width:560px){
  .today-upcoming>.panel-head{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    align-items:start;
    gap:12px;
  }
  .today-upcoming>.panel-head>.btn{
    width:100%;
    min-height:44px;
    padding:0 14px;
    font-size:12px;
    justify-self:stretch;
  }
  .today-upcoming>.panel-head>.btn svg{
    width:16px;
    height:16px;
  }
}

/* ---- R17 Calendar 4.0: month remains the primary planning surface ---- */
.journal-filter-label{display:flex;align-items:center;justify-content:space-between;gap:10px}
.journal-filter-action{padding:0;border:0;background:transparent;color:var(--primary-text);font:inherit;font-size:10px;font-weight:800;letter-spacing:0;text-transform:none;cursor:pointer}
.journal-month-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}
.journal-month{min-width:860px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface)}
.journal-month-weekdays,.journal-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.journal-month-weekdays{background:var(--surface-muted);border-bottom:1px solid var(--border)}
.journal-month-weekdays span{padding:9px 10px;text-align:center;color:var(--text-muted);font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-right:1px solid var(--border)}
.journal-month-weekdays span:last-child{border-right:0}
.journal-month-day{min-height:142px;min-width:0;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface)}
.journal-month-day:nth-child(7n){border-right:0}.journal-month-day:nth-last-child(-n+7){border-bottom:0}
.journal-month-day.is-outside{background:color-mix(in srgb,var(--surface-muted) 72%,var(--surface));opacity:.62}
.journal-month-day.is-today{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--primary) 72%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--primary-soft) 46%,var(--surface)),var(--surface))}
.journal-month-day>header{padding:7px 8px 3px}.journal-month-day>header button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:2px 3px;border:0;background:transparent;color:var(--text);cursor:pointer}
.journal-month-day>header b{font-size:12px;font-variant-numeric:tabular-nums}.journal-month-day>header span{min-width:18px;color:var(--text-muted);font-size:9px;text-align:right}
.journal-month-list{display:grid;gap:4px;padding:3px 7px 8px}
.journal-month-item{display:grid;grid-template-columns:33px minmax(0,1fr);gap:0 5px;min-width:0;padding:5px 6px;border:1px solid var(--border);border-left:3px solid var(--journal-category);border-radius:7px;background:var(--surface-raised);color:var(--text);text-align:left;cursor:pointer;box-shadow:0 1px 0 rgba(18,24,31,.025)}
.journal-month-item b{grid-row:1/3;font-size:10px;line-height:1.35}.journal-month-item span,.journal-month-item small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-month-item span{font-size:10px;font-weight:700}.journal-month-item small{font-size:9px;color:var(--text-muted)}
.journal-month-item.att-no_show{opacity:.66}.journal-month-more{padding:3px 5px;border:0;background:transparent;color:var(--primary-text);font-size:9.5px;font-weight:700;text-align:left;cursor:pointer}
.crm-priority-metric{appearance:none;text-align:left;font:inherit;color:inherit;cursor:pointer;border:0;border-right:1px solid var(--border);border-radius:0;box-shadow:none}
.crm-priority-metric>span{display:block;margin-bottom:9px;color:var(--text-muted);font-size:11px;font-weight:750}.crm-priority-metric.active{background:color-mix(in srgb,var(--primary-soft) 66%,var(--surface))}.crm-priority-metric:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
#view-contacts .commerce-metrics{grid-template-columns:repeat(6,minmax(0,1fr))}
#view-contacts .commerce-metrics>.surface{min-width:0;padding:17px 18px}

/* Calendar 4.0 — quarter / year / arbitrary period */
.journal-range-picker{display:flex;align-items:end;gap:8px;margin-left:auto}.journal-range-picker.hidden{display:none}.journal-range-picker label{display:grid;gap:4px}.journal-range-picker label>span{font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.journal-range-picker input[type=date]{min-height:36px;padding:0 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text)}
.journal-period-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.journal-period-kpis article{display:grid;gap:3px;min-width:0;padding:13px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface-raised);box-shadow:var(--shadow-xs)}.journal-period-kpis span{font-size:10px;font-weight:750;color:var(--text-muted)}.journal-period-kpis strong{font-size:19px;line-height:1.1;color:var(--text)}.journal-period-kpis small{font-size:9.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.journal-quarter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.journal-year-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.journal-period-month{min-width:0;padding:12px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-xs)}.journal-period-month>header{display:grid;gap:4px;margin-bottom:9px}.journal-period-month>header>button{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0;border:0;background:transparent;color:var(--text);text-align:left;cursor:pointer}.journal-period-month>header>button span{font-size:13px;font-weight:800}.journal-period-month>header>button b{font-size:10px;color:var(--primary-text)}.journal-period-month>header>small{font-size:9px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.journal-mini-weekdays,.journal-period-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.journal-mini-weekdays{margin-bottom:3px}.journal-mini-weekdays span{font-size:8px;font-weight:800;text-align:center;color:var(--text-muted)}.journal-period-days>i{aspect-ratio:1}.journal-period-day{position:relative;display:grid;place-items:center;aspect-ratio:1;min-width:0;padding:0;border:1px solid transparent;border-radius:7px;background:var(--surface-muted);color:var(--text-muted);cursor:pointer}.journal-period-day b{font-size:9px;line-height:1}.journal-period-day span{position:absolute;right:2px;bottom:1px;min-width:12px;font-size:7px;font-weight:850;text-align:center;color:var(--primary-text)}.journal-period-day.has-bookings{border-color:color-mix(in srgb,var(--primary) 30%,var(--border));background:color-mix(in srgb,var(--primary-soft) 55%,var(--surface))}.journal-period-day.is-today{box-shadow:inset 0 0 0 1px var(--primary);color:var(--text)}
.journal-period-month.is-year{padding:10px}.journal-period-month.is-year .journal-period-days{gap:2px}.journal-period-month.is-year .journal-period-day{border-radius:5px}.journal-period-month.is-year .journal-period-day b{font-size:8px}.journal-period-month.is-year .journal-period-day span{display:none}
.journal-range-list{display:grid;gap:7px}.journal-range-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 18px;align-items:center;gap:12px;width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.journal-range-row>span{display:grid;gap:2px;min-width:0}.journal-range-row b{font-size:11px}.journal-range-row small{font-size:9.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.journal-range-row svg{width:16px;height:16px;color:var(--text-muted)}.journal-range-row.is-today{border-color:color-mix(in srgb,var(--primary) 42%,var(--border));background:color-mix(in srgb,var(--primary-soft) 36%,var(--surface))}
.journal-range-months{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.journal-range-month{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.journal-range-month>span{display:grid;gap:2px;min-width:0}.journal-range-month>span:last-child{text-align:right}.journal-range-month b{font-size:11px}.journal-range-month small{font-size:9px;color:var(--text-muted)}

/* assets/design-system-v3/components.css */

/* Passite DS3 — canonical production components. */

/* Surfaces */
:is(.panel,.card,.surface,.cc-kpi,.analytics-kpi,.today-kpi,.progress-card,[data-ui="Card"],[data-ui="MetricCard"]),.subscription-kpis-v9 article{border:1px solid var(--ds3-line);border-radius:var(--ds3-radius-md);background:var(--ds3-surface);box-shadow:var(--ds3-shadow-xs);backdrop-filter:blur(14px)}
:is(.panel,.card,.surface,.cc-kpi,.analytics-kpi,.today-kpi,.progress-card):hover,.subscription-kpis-v9 article:hover{box-shadow:var(--ds3-shadow-sm);transform:none}
:is(.panel,.card,.surface){align-self:start;height:auto}
.panel-head{min-width:0;align-items:center}
.panel-head>*{min-width:0}

/* Actions */
:is(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action,button[data-ui="Button"]){appearance:none;box-sizing:border-box;min-width:0;min-height:44px;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;border:1px solid var(--ds3-line-strong);border-radius:var(--ds3-radius-sm);background:var(--ds3-surface-solid);color:var(--ds3-ink);font-size:13px;font-weight:650;line-height:1.15;text-align:center;white-space:nowrap;overflow-wrap:break-word;cursor:pointer;transition:background var(--ds3-fast) var(--ds3-ease),border-color var(--ds3-fast) var(--ds3-ease),color var(--ds3-fast) var(--ds3-ease),box-shadow var(--ds3-fast) var(--ds3-ease),transform var(--ds3-fast) var(--ds3-ease)}
:is(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action):hover{border-color:color-mix(in srgb,var(--ds3-accent) 32%,var(--ds3-line-strong));background:var(--ds3-accent-soft);color:var(--ds3-ink);transform:none}
:is(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action):active{transform:scale(.98)}
:is(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action):focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--ds3-accent) 24%,transparent)}
:is(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action):disabled{opacity:.46;cursor:not-allowed;transform:none}
:is(.btn.primary){border-color:transparent;background:linear-gradient(135deg,var(--ds3-accent),var(--ds3-accent-2));color:var(--ps-ink);box-shadow:0 7px 20px rgba(50,230,226,.16)}
:is(.btn.primary):hover{background:linear-gradient(135deg,#32E6E2,var(--ds3-accent));color:var(--ps-ink);box-shadow:0 9px 26px rgba(50,230,226,.2)}
:is(.btn.ghost,.btn.secondary,.open-site){background:var(--ds3-surface-soft)}
:is(.btn.danger){border-color:transparent;background:var(--ds3-red);color:#E6ECF2}
:is(.btn.compact,.mini){min-height:44px;padding-inline:12px;font-size:12px}
:is(.btn.large){min-height:48px;padding-inline:18px;font-size:14px}
:is(.icon-btn,.icon-action,.ghost-icon,.password-toggle,[data-ui="IconButton"]){flex:0 0 44px;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;display:inline-grid;place-items:center;border-radius:var(--ds3-radius-sm);line-height:1}
:is(.icon-btn,.icon-action,.ghost-icon,.password-toggle,[data-ui="IconButton"]) svg{width:18px;height:18px;margin:auto}
.mobile-menu.icon-btn,.sidebar-close{display:none}

/* Fields */
label{min-width:0;color:var(--ds3-ink);font-size:12px;font-weight:600}
label>span,.field>label{color:var(--ds3-ink-2);font-size:12px;font-weight:650}
label small{color:var(--ds3-ink-3);font-size:11px;font-weight:400;line-height:1.45}
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea,[data-ui="TextInput"],[data-ui="Select"],[data-ui="Textarea"]){appearance:none;box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:9px 13px;border:1px solid var(--ds3-line-strong);border-radius:var(--ds3-radius-sm);background:var(--ds3-surface-solid);color:var(--ds3-ink);font-size:13px;font-weight:400;line-height:1.4;box-shadow:none;transition:border-color var(--ds3-fast) var(--ds3-ease),box-shadow var(--ds3-fast) var(--ds3-ease),background var(--ds3-fast) var(--ds3-ease)}
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea):hover:not(:disabled){border-color:color-mix(in srgb,var(--ds3-accent) 30%,var(--ds3-line-strong))}
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea):focus{outline:none;border-color:color-mix(in srgb,var(--ds3-accent) 76%,var(--ds3-line-strong));box-shadow:0 0 0 3px color-mix(in srgb,var(--ds3-accent) 16%,transparent)}
:is(input,textarea)::placeholder{color:var(--ds3-ink-3);font-weight:400}
textarea{min-height:112px;resize:vertical}
input[type="date"],input[type="time"]{max-width:100%;overflow:hidden}
input[type="date"]::-webkit-calendar-picker-indicator,input[type="time"]::-webkit-calendar-picker-indicator{width:18px;height:18px;margin:0;padding:2px;opacity:.66}
.global-search,.topbar-client-search,.search-field{min-width:0;min-height:44px;max-height:48px}
.global-search input,.topbar-client-search input,.search-field input{height:44px;min-height:44px;font-size:13px}
#globalSearch,#globalClientSearch,#siteSearch{padding-left:42px}

/* Checkbox, radio and switch */
:is(label:has(>input[type="checkbox"]),label:has(>input[type="radio"]),.check-card,.switch-row,.c75-switch-row,.p75-switch-row){min-height:44px}
input[type="checkbox"],input[type="radio"]{appearance:none;box-sizing:border-box;flex:0 0 19px;width:19px;height:19px;min-width:19px;min-height:19px;margin:0;display:inline-grid;place-content:center;background:var(--ds3-surface-soft);cursor:pointer;transition:background var(--ds3-fast) var(--ds3-ease),border-color var(--ds3-fast) var(--ds3-ease),box-shadow var(--ds3-fast) var(--ds3-ease)}
input[type="checkbox"]{border:1px solid var(--ds3-line-strong);border-radius:6px}
input[type="checkbox"]::after{content:"";width:9px;height:5px;border:solid #12181F;border-width:0 0 1.7px 1.7px;transform:translateY(-1px) rotate(-45deg) scale(0);transition:transform var(--ds3-fast) var(--ds3-ease)}
input[type="checkbox"]:checked{border-color:transparent;background:var(--ds3-accent)}
input[type="checkbox"]:checked::after{transform:translateY(-1px) rotate(-45deg) scale(1)}
input[type="checkbox"]:indeterminate{border-color:transparent;background:var(--ds3-accent)}
input[type="checkbox"]:indeterminate::after{width:9px;height:1.7px;border:0;border-radius:99px;background:#12181F;transform:none}
input[type="radio"]{border:1px solid var(--ds3-line-strong);border-radius:50%}
input[type="radio"]::after{content:"";width:9px;height:9px;border-radius:50%;background:var(--ds3-accent);transform:scale(0);transition:transform var(--ds3-fast) var(--ds3-ease)}
input[type="radio"]:checked{border-color:var(--ds3-line-strong);background:var(--ds3-surface-solid)}
input[type="radio"]:checked::after{transform:scale(1)}
input[type="checkbox"]:focus-visible,input[type="radio"]:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--ds3-accent) 20%,transparent)}
.switch{position:relative;flex:0 0 44px;width:44px;height:44px;min-height:44px;display:inline-block}
.switch input{position:absolute;opacity:0;pointer-events:none}
.switch i{position:absolute;inset:9px 0;border:0;border-radius:999px;background:color-mix(in srgb,var(--ds3-ink-3) 34%,var(--ds3-surface-soft));box-shadow:none;transition:background var(--ds3-normal) var(--ds3-ease)}
.switch i::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:var(--ps-panel);box-shadow:0 2px 7px rgba(18,24,31,.2);transition:transform var(--ds3-normal) var(--ds3-spring)}
.switch input:checked+i{border:0;background:var(--ds3-accent)}
.switch input:checked+i::after{transform:translateX(18px)}
.switch input:focus-visible+i{box-shadow:0 0 0 3px color-mix(in srgb,var(--ds3-accent) 20%,transparent)}

/* Status, chips and tabs */
:is(.status-badge,.subscription-badge-v9,.client-ticket-state,.contact-segment,.contact-list-status,.state,[data-ui="StatusBadge"]){box-sizing:border-box;min-width:max-content;max-width:100%;min-height:32px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 11px;border:1px solid transparent;border-radius:var(--ds3-radius-pill);font-size:11px;font-weight:650;line-height:1;text-align:center;white-space:nowrap}
:is(.badge,.count-pill){box-sizing:border-box;min-width:22px;min-height:22px;display:inline-grid;place-items:center;padding:0 6px;border-radius:var(--ds3-radius-pill);font-size:10px;font-weight:700;line-height:1;white-space:nowrap}
.segmented,.commerce-tabs,.journal-mode-switch{position:relative;isolation:isolate;max-width:100%;display:inline-flex;gap:2px;padding:3px;border:0;border-radius:var(--ds3-radius-sm);background:var(--ds3-surface-soft);overflow:hidden}
.segmented button,.commerce-tabs .ui-tab,.journal-mode-switch button,.ui-tab{position:relative;z-index:1;flex:0 0 auto;min-height:38px;padding:0 12px;border:0;border-radius:11px;background:transparent;color:var(--ds3-ink-3);font-size:11px;font-weight:650;line-height:1.1;white-space:nowrap;cursor:pointer;transition:color var(--ds3-normal) var(--ds3-ease),background var(--ds3-normal) var(--ds3-ease),box-shadow var(--ds3-normal) var(--ds3-ease)}
.segmented button.active,.commerce-tabs .ui-tab.active,.journal-mode-switch button.active,.ui-tab.active{background:var(--ds3-surface-solid);color:var(--ds3-ink);box-shadow:var(--ds3-shadow-xs)}
.ds3-segment-indicator{position:absolute;z-index:0;left:3px;top:3px;height:calc(100% - 6px);border-radius:11px;background:var(--ds3-surface-solid);box-shadow:var(--ds3-shadow-xs);pointer-events:none;transition:transform var(--ds3-normal) var(--ds3-ease),width var(--ds3-normal) var(--ds3-ease)}

/* Lists, cards and overlays */
:is(.quick-action,.quick-grid>a,.cc-kpi,.today-action,.journal-week-day,.contact-row,.subscription-row-v9):hover{transform:none}
.subscription-row-v9{align-items:center}
.subscription-row-v9 .subscription-badge-v9{justify-self:start;min-width:104px}
.modal-wrap,.modal-backdrop,.modal-overlay{box-sizing:border-box;max-width:100vw;max-height:100dvh;padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));overflow:auto;overscroll-behavior:contain}
.modal,.dialog,.modal-card{width:min(100%,760px);max-width:100%;max-height:calc(100dvh - 20px);display:flex;flex-direction:column;border:1px solid var(--ds3-line);border-radius:var(--ds3-radius-lg);background:var(--ds3-surface-strong);box-shadow:var(--ds3-shadow-float);overflow:hidden}
.modal-body{min-height:0;overflow:auto;overscroll-behavior:contain}
.modal-actions{position:static;z-index:auto;flex:0 0 auto;align-items:center;background:var(--ds3-surface-strong)}
.modal-close,.dialog-close{flex:0 0 44px;width:44px;height:44px;display:grid;place-items:center;padding:0}
.search-results,.c75-status-menu,.p75-status-menu,.term-menu>div,.site-more>div,.p75-more>div{max-width:min(420px,calc(100vw - 20px));max-height:min(420px,calc(100dvh - 20px));overflow:auto;border-radius:var(--ds3-radius-sm);background:var(--ds3-surface-strong);box-shadow:var(--ds3-shadow-float)}
.site-settings-save{display:grid;grid-template-columns:minmax(190px,.7fr) minmax(220px,1fr);align-items:start}
.site-settings-save>.btn{width:100%}
.site-settings-secondary{position:relative;min-width:0}
.site-settings-secondary>summary{box-sizing:border-box;min-height:44px;display:flex;align-items:center;justify-content:center;padding:0 14px;list-style:none;border:1px solid var(--ds3-line-strong);border-radius:var(--ds3-radius-sm);background:var(--ds3-surface-solid);color:var(--ds3-ink);font-size:13px;font-weight:650;cursor:pointer}
.site-settings-secondary>summary::-webkit-details-marker{display:none}
.site-settings-secondary[open]>summary{border-color:color-mix(in srgb,var(--ds3-accent) 38%,var(--ds3-line-strong));background:var(--ds3-accent-soft)}
.site-settings-secondary>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.site-settings-secondary>div .btn{width:100%;white-space:normal}
@media(max-width:560px){.site-settings-save{grid-template-columns:minmax(0,1fr)}.site-settings-secondary>div{grid-template-columns:minmax(0,1fr)}}

/* Authentication is a first-class product screen, balanced at real desktop sizes. */
.auth{position:relative;box-sizing:border-box;min-height:100vh;min-height:100dvh;max-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr) minmax(440px,500px);align-items:center;gap:clamp(48px,8vw,150px);padding:max(32px,env(safe-area-inset-top)) clamp(40px,7vw,120px) max(32px,env(safe-area-inset-bottom));overflow:hidden;background:radial-gradient(circle at 14% 12%,rgba(50,230,226,.17),transparent 32%),radial-gradient(circle at 58% 92%,rgba(18,24,31,.09),transparent 30%),linear-gradient(145deg,var(--ds3-canvas),var(--ds3-canvas-2))}
.auth::before{content:"";position:absolute;z-index:0;left:-8vw;bottom:-28vw;width:min(68vw,920px);aspect-ratio:1;border-radius:50%;border:1px solid color-mix(in srgb,var(--ds3-accent) 16%,transparent);background:radial-gradient(circle at 52% 38%,rgba(230,236,242,.72),transparent 18%),radial-gradient(circle,rgba(50,230,226,.16),rgba(50,230,226,.035) 48%,transparent 69%);filter:blur(.2px);pointer-events:none}
.auth::after{content:"";position:absolute;z-index:0;inset:0;background:linear-gradient(90deg,transparent 0 56%,color-mix(in srgb,var(--ds3-surface-strong) 20%,transparent));pointer-events:none}
.auth-intro{position:relative;z-index:1;width:min(100%,690px);display:grid;align-content:center;gap:18px}
.auth-intro-label{color:var(--ds3-accent-2);font-family:var(--ds3-mono);font-size:11px;font-weight:750;letter-spacing:.15em}
.auth-intro h2{max-width:680px;margin:0;color:var(--ds3-ink);font-size:clamp(44px,5vw,76px);font-weight:720;line-height:.98;letter-spacing:-.065em;text-wrap:balance}
.auth-intro p{max-width:570px;margin:0;color:var(--ds3-ink-2);font-size:clamp(15px,1.25vw,18px);line-height:1.65}
.auth-intro-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.auth-intro-list span{min-height:34px;display:inline-flex;align-items:center;padding:0 12px;border:1px solid color-mix(in srgb,var(--ds3-accent) 18%,var(--ds3-line));border-radius:999px;background:color-mix(in srgb,var(--ds3-surface-strong) 62%,transparent);color:var(--ds3-ink-2);font-size:11px;font-weight:650;backdrop-filter:blur(12px)}
.auth-card{position:relative;z-index:1;box-sizing:border-box;width:100%;max-width:500px;min-height:min(560px,calc(100dvh - 64px));max-height:calc(100dvh - 64px);display:grid;align-content:center;padding:clamp(34px,4vw,48px);border:1px solid color-mix(in srgb,var(--ds3-line-strong) 76%,transparent);border-radius:28px;background:color-mix(in srgb,var(--ds3-surface-strong) 96%,transparent);box-shadow:0 32px 90px rgba(18,24,31,.16),inset 0 1px rgba(230,236,242,.68);backdrop-filter:blur(26px);overflow:auto;overscroll-behavior:contain}
.auth-card .brand{margin-bottom:clamp(24px,4vh,38px)}
.auth-card h1{margin:8px 0 12px;font-size:clamp(34px,3.4vw,46px);font-weight:740;line-height:1;letter-spacing:-.055em}
.auth-card form{display:grid;gap:16px}
.auth-card :is(input:not([type=checkbox]):not([type=radio]),select,.btn){min-height:48px}
.auth-copy p,.security-copy{color:var(--ds3-ink-2);font-size:13px;line-height:1.6}
.security-success-mark{width:40px;height:40px;border-radius:12px;background:var(--ds3-green-soft);color:var(--ds3-green);font-size:17px;font-weight:650}

@media(max-width:980px){.auth{grid-template-columns:minmax(0,1fr) minmax(400px,460px);gap:36px;padding-inline:32px}.auth-intro h2{font-size:clamp(38px,6vw,58px)}}
@media(max-width:819px){
  .auth{display:block;min-height:100dvh;max-height:none;padding:0;overflow:auto;background:var(--ds3-surface-strong)}
  .auth::before,.auth::after,.auth-intro{display:none}
  .auth-card{width:100%;max-width:none;min-height:100dvh;max-height:none;align-content:center;padding:max(38px,calc(env(safe-area-inset-top) + 28px)) max(22px,env(safe-area-inset-right)) max(36px,calc(env(safe-area-inset-bottom) + 28px)) max(22px,env(safe-area-inset-left));border:0;border-radius:0;background:var(--ds3-surface-strong);box-shadow:none;backdrop-filter:none;overflow:visible}
  .auth-card .brand{margin-bottom:28px}.auth-card h1{font-size:36px}.security-success-mark{width:38px;height:38px}
}
@media(max-height:700px){.auth-card{align-content:start;padding-block:max(22px,env(safe-area-inset-top))}.auth-card .brand{margin-bottom:16px}.auth-card h1{font-size:31px}.auth-card form{gap:12px}}
@media(prefers-reduced-motion:reduce){.ds3-segment-indicator{transition:none}}

/* R20.3.2 — authentication and sidebar polish.
   Motion is translation/rotation only: no breathing or scale animation. */
.auth{background:
  linear-gradient(145deg,color-mix(in srgb,var(--ds3-canvas) 96%,#E6ECF2),var(--ds3-canvas-2));
  isolation:isolate}
.auth::before{content:"";position:absolute;z-index:0;inset:0;border:0;border-radius:0;background:
  linear-gradient(color-mix(in srgb,var(--ds3-line) 32%,transparent) 1px,transparent 1px),
  linear-gradient(90deg,color-mix(in srgb,var(--ds3-line) 32%,transparent) 1px,transparent 1px);
  background-size:72px 72px;mask-image:linear-gradient(90deg,rgba(18,24,31,.56),rgba(18,24,31,.12) 58%,transparent 76%);opacity:.42;pointer-events:none}
.auth::after{content:"";position:absolute;z-index:0;inset:0;background:
  radial-gradient(circle at 10% 18%,color-mix(in srgb,var(--ds3-accent) 12%,transparent),transparent 25%),
  radial-gradient(circle at 54% 82%,rgba(18,24,31,.07),transparent 25%),
  linear-gradient(90deg,transparent 0 58%,color-mix(in srgb,var(--ds3-surface-strong) 18%,transparent));pointer-events:none}
.auth-card .brand::before{content:none!important;display:none!important}
.auth-visuals{position:absolute;z-index:0;inset:0;overflow:hidden;pointer-events:none}
.auth-symbol{position:absolute;width:58px;height:58px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--ds3-accent) 20%,var(--ds3-line));border-radius:17px;background:color-mix(in srgb,var(--ds3-surface-strong) 34%,transparent);color:color-mix(in srgb,var(--ds3-accent-2) 62%,var(--ds3-ink-3));box-shadow:inset 0 1px color-mix(in srgb,#E6ECF2 35%,transparent);opacity:.23;backdrop-filter:blur(6px);will-change:transform}
.auth-symbol svg{width:24px;height:24px}
.auth-symbol:nth-child(1){left:5.5%;top:12%;transform:rotate(-8deg);animation:auth-drift-a 18s ease-in-out infinite alternate}
.auth-symbol:nth-child(2){left:35%;top:7%;transform:rotate(7deg);animation:auth-drift-b 22s ease-in-out infinite alternate}
.auth-symbol:nth-child(3){left:3.5%;top:69%;transform:rotate(5deg);animation:auth-drift-c 20s ease-in-out infinite alternate}
.auth-symbol:nth-child(4){left:43%;top:78%;transform:rotate(-6deg);animation:auth-drift-a 24s ease-in-out infinite alternate-reverse}
.auth-symbol:nth-child(5){left:42%;top:25%;transform:rotate(8deg);animation:auth-drift-c 26s ease-in-out infinite alternate}
.auth-symbol:nth-child(6){left:40%;top:58%;transform:rotate(-4deg);animation:auth-drift-b 19s ease-in-out infinite alternate-reverse}
@keyframes auth-drift-a{from{transform:translate3d(0,0,0) rotate(-7deg)}to{transform:translate3d(12px,-9px,0) rotate(-3deg)}}
@keyframes auth-drift-b{from{transform:translate3d(0,0,0) rotate(6deg)}to{transform:translate3d(-10px,11px,0) rotate(2deg)}}
@keyframes auth-drift-c{from{transform:translate3d(0,0,0) rotate(4deg)}to{transform:translate3d(9px,8px,0) rotate(8deg)}}
html[data-theme="dark"] .auth-symbol{opacity:.19;background:color-mix(in srgb,var(--ds3-surface-strong) 22%,transparent);border-color:color-mix(in srgb,var(--ds3-accent) 18%,var(--ds3-line))}
.auth-card-toolbar{width:100%;min-height:34px;display:flex;align-items:center;justify-content:space-between;gap:18px}
.auth-card-toolbar .brand{min-width:0;margin:0!important}
.auth-theme-toggle{position:relative;z-index:2;flex:0 0 auto;width:44px;height:44px;display:grid;place-items:center;padding:0;border:1px solid color-mix(in srgb,var(--ds3-line-strong) 82%,transparent);border-radius:13px;background:color-mix(in srgb,var(--ds3-surface-strong) 90%,transparent);color:var(--ds3-ink-2);box-shadow:var(--ds3-shadow-sm);backdrop-filter:blur(18px);cursor:pointer;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}
.auth-theme-toggle.hidden{display:none}
.auth-theme-toggle:hover{background:var(--ds3-surface-strong);border-color:color-mix(in srgb,var(--ds3-accent) 38%,var(--ds3-line-strong));color:var(--ds3-accent-2);transform:translateY(-1px)}
.auth-theme-toggle svg{width:19px;height:19px}
.workspace-tag{position:relative;z-index:2;flex:0 0 auto;box-sizing:border-box;min-height:26px;height:auto;margin:5px 10px 5px;padding:5px 0 4px;line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(min-width:820px) and (max-width:1100px){.auth-symbol:nth-child(2){left:29%}.auth-symbol:nth-child(4){left:34%}.auth-symbol:nth-child(5),.auth-symbol:nth-child(6){display:none}}
@media(max-width:819px){
  .auth{min-height:100svh;min-height:100dvh;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;background:var(--ds3-surface-strong)}
  .auth::before,.auth::after,.auth-intro,.auth-visuals{display:none}
  .auth-card{min-height:100svh;min-height:100dvh;align-content:start;justify-content:stretch;padding-top:max(24px,calc(env(safe-area-inset-top) + 18px));padding-bottom:max(30px,calc(env(safe-area-inset-bottom) + 22px))}
  .auth-card .brand{margin-top:0;margin-bottom:24px}
  .auth-card-toolbar{align-items:center}.auth-theme-toggle{box-shadow:none}
}
@media(prefers-reduced-motion:reduce){.auth-symbol{animation:none!important;transform:none!important}.auth-theme-toggle{transition:none}}

/* assets/design-system-v3/crm.css */

/* Passite Design System 3.0 — CRM, contacts, appointments, loyalty and demo UI. */
.demo-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-4);margin:var(--ds-space-3) var(--ds-layout-page-gutter) 0;padding:var(--ds-space-3) var(--ds-space-4);border:1px solid var(--ds-status-info-border);border-radius:var(--ds-radius-md);background:var(--ds-status-info-bg);color:var(--ds-status-info-text)}
.demo-banner>div:first-child{display:grid;gap:var(--ds-space-1)}.demo-banner b{font-size:var(--ds-font-size-300)}.demo-banner span{font-size:var(--ds-font-size-200)}.demo-banner-actions{display:flex;align-items:center;gap:var(--ds-space-2);flex-wrap:wrap}
.demo-mode .nav-item[data-view="files"],.demo-mode .nav-item[data-view="versions"],.demo-mode .nav-item[data-view="payments"],.demo-mode .nav-item[data-view="tickets"],.demo-mode .nav-item[data-view="account"],.demo-mode .nav-item[data-view="website"],.demo-mode .nav-item[data-view="analytics"],.demo-mode .topbar-actions,.demo-mode .ds-site-card,.demo-mode .ds-site-details{display:none}
.demo-mode .workspace-tag{border-color:var(--ds-status-info-border);background:var(--ds-status-info-bg);color:var(--ds-status-info-text)}

.contact-toolbar{align-items:end}.contact-toolbar>.compact-field>span{display:block;margin-bottom:var(--ds-space-1);color:var(--ds-text-tertiary);font-size:var(--ds-font-size-150);font-weight:var(--ds-weight-semibold)}
.contact-segment{display:inline-flex;align-items:center;width:max-content;padding:var(--ds-space-1) var(--ds-space-2);border:1px solid var(--ds-status-neutral-border);border-radius:var(--ds-radius-pill);background:var(--ds-status-neutral-bg);color:var(--ds-status-neutral-text);font-size:var(--ds-font-size-100);font-weight:var(--ds-weight-bold);letter-spacing:var(--ds-letter-label)}
.contact-segment.segment-VIP{border-color:var(--ds-status-warning-border);background:var(--ds-status-warning-bg);color:var(--ds-status-warning-text)}
.contact-segment.segment-AT_RISK,.contact-segment.segment-LOST{border-color:var(--ds-status-danger-border);background:var(--ds-status-danger-bg);color:var(--ds-status-danger-text)}
.contact-segment.segment-LOYAL{border-color:var(--ds-status-success-border);background:var(--ds-status-success-bg);color:var(--ds-status-success-text)}
.contact-segment.segment-REGULAR{border-color:var(--ds-status-info-border);background:var(--ds-status-info-bg);color:var(--ds-status-info-text)}
.contact-row-segment{display:grid;gap:var(--ds-space-1)}.contact-card-segment{display:flex;align-items:center;gap:var(--ds-space-2);flex-wrap:wrap;margin-top:var(--ds-space-2)}.contact-card-segment small{color:var(--ds-text-tertiary)}
.contact-profile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ds-space-2);padding:var(--ds-space-4);border-bottom:1px solid var(--ds-border-subtle)}.contact-profile-grid article{display:grid;gap:var(--ds-space-1);padding:var(--ds-space-3);border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-sm);background:var(--ds-bg-subtle)}.contact-profile-grid span{color:var(--ds-text-tertiary);font-size:var(--ds-font-size-150)}.contact-profile-grid strong{color:var(--ds-text-primary);font-size:var(--ds-font-size-500)}
.loyalty-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--ds-space-3);align-items:center;margin:var(--ds-space-4);padding:var(--ds-space-4);border:1px solid var(--ds-status-success-border);border-radius:var(--ds-radius-md);background:var(--ds-status-success-bg)}.loyalty-card-copy{display:grid;gap:var(--ds-space-1)}.loyalty-card-copy span,.loyalty-card-copy small{color:var(--ds-status-success-text)}.loyalty-card-copy strong{font-size:var(--ds-font-size-700);color:var(--ds-text-primary)}.loyalty-card.is-debt{border-color:var(--ds-status-warning-border);background:var(--ds-status-warning-bg)}.loyalty-card.is-debt .loyalty-card-copy span,.loyalty-card.is-debt .loyalty-card-copy small{color:var(--ds-status-warning-text)}.loyalty-card.is-debt .loyalty-progress-track i{background:var(--ds-status-warning-text)}
.loyalty-progress{display:grid;gap:var(--ds-space-1);grid-column:1/-1}.loyalty-progress-track{height:var(--ds-space-2);overflow:hidden;border-radius:var(--ds-radius-pill);background:var(--ds-bg-surface-sunken)}.loyalty-progress-track i{display:block;height:100%;border-radius:inherit;background:var(--ds-status-success-text)}.loyalty-progress small{color:var(--ds-text-secondary)}.loyalty-rules{display:grid;gap:var(--ds-space-2);margin-top:var(--ds-space-3)}.loyalty-tier-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--ds-space-2)}
.loyalty-ledger{display:grid;grid-column:1/-1;gap:var(--ds-space-2);margin-top:var(--ds-space-3)}.loyalty-ledger-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--ds-space-3);padding:var(--ds-space-2) 0;border-bottom:1px solid var(--ds-border-subtle)}.loyalty-ledger-row small{display:block;color:var(--ds-text-tertiary)}.loyalty-ledger-row strong[data-positive="true"]{color:var(--ds-text-success)}.loyalty-ledger-row strong[data-positive="false"]{color:var(--ds-text-danger)}

.appointment-modal{width:min(var(--ds-modal-lg),100%)}.appointment-panel{display:grid;gap:var(--ds-space-4)}.appointment-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--ds-space-4);padding:var(--ds-space-4);border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-md);background:var(--ds-bg-subtle)}.appointment-summary h4{margin:0;color:var(--ds-text-primary);font-size:var(--ds-font-size-600)}.appointment-summary p{margin:var(--ds-space-1) 0 0;color:var(--ds-text-secondary)}.appointment-status{padding:var(--ds-space-1) var(--ds-space-2);border:1px solid var(--ds-status-info-border);border-radius:var(--ds-radius-pill);background:var(--ds-status-info-bg);color:var(--ds-status-info-text);font-size:var(--ds-font-size-150);font-weight:var(--ds-weight-bold)}
.appointment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ds-space-3)}.appointment-field{display:grid;gap:var(--ds-space-1);padding:var(--ds-space-3);border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-sm)}.appointment-field span{color:var(--ds-text-tertiary);font-size:var(--ds-font-size-150)}.appointment-field b{color:var(--ds-text-primary)}.appointment-actions{display:flex;gap:var(--ds-space-2);flex-wrap:wrap}.appointment-edit{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ds-space-3)}.appointment-comment{display:grid;gap:var(--ds-space-2)}.appointment-history{display:grid;gap:var(--ds-space-2)}.appointment-history-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--ds-space-3);padding:var(--ds-space-2) 0;border-bottom:1px solid var(--ds-border-subtle)}.appointment-history-row time{color:var(--ds-text-tertiary);font-size:var(--ds-font-size-150)}
.today-upcoming-row[data-appointment]{width:100%;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.today-upcoming-row[data-appointment]:hover{background:var(--ds-bg-hover)}.today-upcoming-row[data-appointment]:focus-visible{outline:0;box-shadow:var(--ds-focus-ring)}
.crm-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ds-space-3)}.crm-settings-group{display:grid;gap:var(--ds-space-3);padding:var(--ds-space-4);border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-md)}.crm-settings-group h4{margin:0;color:var(--ds-text-primary)}

@media(max-width:900px){.contact-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.appointment-edit{grid-template-columns:1fr}.demo-banner{align-items:flex-start;flex-direction:column}.demo-banner-actions{width:100%}}
@media(max-width:819px){.contact-toolbar{display:grid;grid-template-columns:1fr 1fr}.contact-toolbar>.field-search{grid-column:1/-1}.contact-profile-grid,.appointment-grid,.crm-settings-grid{grid-template-columns:1fr}.loyalty-card{grid-template-columns:1fr}.loyalty-tier-row{grid-template-columns:1fr}.appointment-modal{height:calc(100dvh - var(--ds-space-3));max-height:calc(100dvh - var(--ds-space-3))}.demo-banner-actions .btn{flex:1}.demo-banner{margin-inline:var(--ds-space-3)}.contact-row-segment{display:none}}

/* Client master/detail is a true mobile entity view, not a card below the list. */
.contact-mobile-back{display:none}
@media(max-width:819px){
  #view-contacts .contact-layout{display:block}
  #view-contacts .contact-list{border-right:0;border-bottom:0}
  #view-contacts .contact-card{
    position:fixed;
    z-index:var(--ds-z-modal);
    inset:0;
    width:100%;
    max-width:none;
    min-height:100dvh;
    height:100dvh;
    padding-top:0;
    padding-bottom:env(safe-area-inset-bottom);
    overflow:auto;
    overscroll-behavior:contain;
    background:var(--ds-bg-canvas);
    transform:translateY(102%);
    visibility:hidden;
    pointer-events:none;
    transition:transform var(--ds-motion-normal) var(--ds-ease-standard),visibility 0s linear var(--ds-motion-normal);
  }
  #view-contacts .contact-card.mobile-open{
    transform:none;
    visibility:visible;
    pointer-events:auto;
    transition:transform var(--ds-motion-normal) var(--ds-ease-standard);
  }
  body.contact-detail-open{overflow:hidden}
  #view-contacts .contact-card-head{
    position:sticky;
    top:0;
    z-index:2;
    padding:calc(var(--ds-space-3) + env(safe-area-inset-top)) var(--ds-space-3) var(--ds-space-3);
    background:color-mix(in srgb,var(--ds-bg-surface-raised) 94%,transparent);
    backdrop-filter:blur(14px);
  }
  .contact-mobile-back{
    display:inline-grid;
    place-items:center;
    width:44px;
    height:44px;
    min-width:44px;
    padding:0;
    border:1px solid var(--ds-border-default);
    border-radius:var(--ds-radius-sm);
    background:var(--ds-bg-surface);
    color:var(--ds-text-primary);
    cursor:pointer;
  }
  .contact-mobile-back svg{width:var(--ds-icon-md);height:var(--ds-icon-md)}
  #view-contacts .contact-card-identity{align-items:flex-start}
  #view-contacts .contact-card-actions{width:100%}
  #view-contacts .contact-card-actions .btn{min-height:44px;font-size:var(--ds-font-size-200)}
  #view-contacts .contact-profile-grid{padding:var(--ds-space-3)}
  #view-contacts .loyalty-card{margin:var(--ds-space-3)}
  #view-contacts .contact-note,#view-contacts .contact-dupes,#view-contacts .contact-note-form{margin-inline:var(--ds-space-3)}
  #view-contacts .contact-timeline{padding-inline:var(--ds-space-3)}
  #view-contacts .contact-row-more{font-size:0;width:32px;height:32px;display:grid;place-items:center;border-radius:var(--ds-radius-sm);background:var(--ds-bg-subtle);color:var(--ds-text-secondary)}
  #view-contacts .contact-row-more::before{content:"›";font-size:22px;line-height:1}
}
@media(prefers-reduced-motion:reduce){#view-contacts .contact-card{transition:none}}

/* Client 360 geometry: avatar, identity, statuses and actions share one grid. */
.contact-card-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start}
.contact-card-identity{display:grid;grid-template-columns:52px minmax(0,1fr);gap:13px;align-items:start;min-width:0}
.contact-card-avatar{width:52px;height:52px;min-width:52px;border-radius:17px;background:var(--ds3-accent-soft);color:var(--ds3-accent-2);font-size:15px;font-weight:700}
.contact-card-identity>div{min-width:0;display:grid;gap:5px}
.contact-card-head h3{margin:0;font-size:20px;font-weight:740;line-height:1.08}
.contact-card-meta{margin:0;color:var(--ds3-ink-2);font-size:11px;line-height:1.45;overflow-wrap:anywhere}
.contact-card-segment{margin-top:3px;align-items:center}
.contact-card-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px}
.contact-card-actions .btn{min-height:40px;font-size:11px}

@media(max-width:720px){
  #view-contacts .contact-card-head{grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:start}
  #view-contacts .contact-card-identity{grid-template-columns:52px minmax(0,1fr);gap:11px}
  #view-contacts .contact-card-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  #view-contacts .contact-card-actions .btn:last-child:nth-child(odd){grid-column:1/-1}
  #view-contacts .contact-card-actions .btn{width:100%;min-height:44px}
  #view-contacts .contact-card-avatar{width:52px;height:52px;min-width:52px}
}

/* R16 Loyalty Studio */
.loyalty-tier-row{grid-template-columns:minmax(0,1fr) minmax(0,.8fr) minmax(0,.7fr);align-items:end}
.loyalty-program-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--ds-space-2);padding:var(--ds-space-3);border-radius:var(--ds-radius-md);background:var(--ds-bg-surface-sunken)}
.loyalty-program-stats span{display:grid;gap:2px;min-width:0}.loyalty-program-stats small{color:var(--ds-text-secondary);font-size:10px}.loyalty-program-stats b{font-size:15px;overflow-wrap:anywhere}
.loyalty-operation-fields{display:grid;gap:var(--ds-space-3)}
.journal-color-manager{display:grid;gap:var(--ds-space-3)}.journal-color-list{display:grid;gap:8px}.journal-color-row{display:grid;grid-template-columns:18px minmax(0,1fr) 48px auto;gap:10px;align-items:center;padding:9px 10px;border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-sm)}
.journal-color-preview{width:12px;height:12px;border-radius:50%;background:var(--journal-category);box-shadow:0 0 0 3px color-mix(in srgb,var(--journal-category) 18%,transparent)}.journal-color-row b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-color-row input[type=color]{width:44px;height:34px;padding:3px;border:1px solid var(--ds-border-subtle);border-radius:8px;background:var(--ds-bg-surface);cursor:pointer}
@media(max-width:819px){.loyalty-tier-row{grid-template-columns:1fr}.loyalty-program-stats{grid-template-columns:1fr 1fr}.journal-color-row{grid-template-columns:18px minmax(0,1fr) 44px}.journal-color-row .btn{grid-column:2/-1;justify-self:start}}

/* Industry CRM presets */
.crm-preset-quick{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 var(--ds-space-3);padding:10px 12px;border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-md);background:var(--ds-surface-soft)}.crm-preset-quick.hidden{display:none}.crm-preset-quick-label{margin-right:3px;font-size:10px;font-weight:800;color:var(--ds-text-muted);text-transform:uppercase;letter-spacing:.05em}
.crm-preset-manager{display:grid;gap:var(--ds-space-4)}.crm-preset-preview{display:grid;gap:12px;padding:14px;border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-md);background:var(--ds-surface-soft)}.crm-preset-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.crm-preset-preview-head h4{margin:3px 0 0;font-size:13px;line-height:1.45;font-weight:650;color:var(--ds-text-primary)}.crm-preset-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.crm-preset-stats>span{display:grid;gap:2px;min-width:0;padding:9px 10px;border:1px solid var(--ds-border-subtle);border-radius:11px;background:var(--ds-surface-solid)}.crm-preset-stats small{font-size:9px;color:var(--ds-text-muted)}.crm-preset-stats b{font-size:11px;color:var(--ds-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crm-preset-loyalty{display:grid;gap:5px}.crm-preset-loyalty>b{font-size:11px}.crm-preset-loyalty>span{font-size:10px;color:var(--ds-text-muted)}.crm-preset-loyalty>div{display:flex;gap:5px;flex-wrap:wrap;margin-top:3px}.crm-preset-tier{padding:5px 7px;border-radius:999px;background:var(--ds-surface-solid);border:1px solid var(--ds-border-subtle);font-size:9px;font-weight:700;color:var(--ds-text-secondary)}

/* R18 CRM Scale + Industry Extensions */
.contact-list-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-top:1px solid var(--ds-border-subtle);color:var(--ds-text-muted);font-size:10px;background:var(--ds-surface-soft)}
.industry-extension-card{display:grid;gap:12px;margin:var(--ds-space-3);padding:14px;border:1px solid var(--ds-border-subtle);border-radius:var(--ds-radius-md);background:var(--ds-surface-soft)}
.industry-extension-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.industry-extension-head h4{margin:3px 0 0;font-size:13px}.industry-extension-add{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.industry-signals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.industry-signal{display:grid;gap:2px;padding:9px 10px;border:1px solid var(--ds-border-subtle);border-radius:11px;background:var(--ds-surface-solid)}.industry-signal b{font-size:10px}.industry-signal small{font-size:9px;color:var(--ds-text-muted)}.industry-signal.is-due{border-color:color-mix(in srgb,var(--danger) 34%,var(--ds-border-subtle));background:color-mix(in srgb,var(--danger) 5%,var(--ds-surface-solid))}
.industry-entity-list{display:grid;gap:8px}.industry-entity{display:grid;gap:10px;padding:12px;border:1px solid var(--ds-border-subtle);border-radius:12px;background:var(--ds-surface-solid)}.industry-entity.is-due{border-color:color-mix(in srgb,var(--warning) 35%,var(--ds-border-subtle))}.industry-entity-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.industry-entity-head>div:first-child{display:grid;gap:2px}.industry-entity-head span{font-size:9px;color:var(--ds-text-muted)}.industry-entity-head strong{font-size:12px;color:var(--ds-text-primary)}.industry-entity-actions{display:flex;gap:5px;flex-wrap:wrap}.industry-entity-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.industry-entity-fields>span{display:grid;gap:2px;min-width:0;padding:7px 8px;border-radius:9px;background:var(--ds-surface-soft)}.industry-entity-fields small{font-size:8.5px;color:var(--ds-text-muted)}.industry-entity-fields b{font-size:10px;overflow-wrap:anywhere}.industry-entity-alert{padding:7px 9px;border-radius:9px;background:color-mix(in srgb,var(--warning) 8%,var(--ds-surface-soft));font-size:9px;font-weight:700;color:var(--ds-text-primary)}.industry-empty{padding:12px;border:1px dashed var(--ds-border-subtle);border-radius:11px;color:var(--ds-text-muted);font-size:10px;line-height:1.5}.crm-preset-extension{display:grid;gap:4px;padding-top:8px;border-top:1px solid var(--ds-border-subtle)}.crm-preset-extension>b{font-size:10px}.crm-preset-extension>span{font-size:9px;color:var(--ds-text-muted)}
@media(max-width:700px){.industry-extension-card{margin:var(--ds-space-3)}.industry-extension-head{display:grid}.industry-extension-add{justify-content:flex-start}.industry-signals,.industry-entity-fields{grid-template-columns:1fr}.industry-entity-head{display:grid}.industry-entity-actions{justify-content:flex-start}.contact-list-footer{position:sticky;bottom:0;z-index:2}}
.appointment-industry-link{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.appointment-industry-link label{min-width:0}.appointment-industry-link .btn{white-space:nowrap}
@media(max-width:700px){.appointment-industry-link{grid-template-columns:1fr}.appointment-industry-link .btn{width:100%}}

/* R20.3.7 — demo is a curated product mode, not a partially disabled production tenant. */
.demo-mode .topbar{grid-template-columns:minmax(220px,1fr) minmax(280px,420px);gap:18px}
.demo-mode .topbar-client-search{justify-self:end;width:100%;max-width:420px}
.demo-mode .workspace-tag{min-height:30px;display:flex;align-items:center;padding:0 10px;border:1px solid var(--ds-status-info-border);border-radius:9px;background:var(--ds-status-info-bg);color:var(--ds-status-info-text);font-size:10px;font-weight:800;letter-spacing:.025em;text-transform:none}
.demo-mode+.sidebar-scrim{display:none}
.demo-mode .nav-section-label.hidden+*{margin-top:0}
@media(max-width:819px){
  .demo-mode .topbar{grid-template-columns:auto minmax(0,1fr) auto}
  .demo-banner{margin:8px 12px 0;padding:10px 12px;border-radius:12px;align-items:flex-start;flex-direction:column}
  .demo-banner>div:first-child{gap:3px}
  .demo-banner span{font-size:10px;line-height:1.4}
  .demo-banner-actions{width:100%}
  .demo-banner-actions .btn{flex:1 1 auto;justify-content:center}
}

/* R20.3.8.1 — desktop client card header stability */
@media(min-width:721px) and (max-width:1380px){
  #view-contacts .contact-card-head{grid-template-columns:minmax(0,1fr);gap:14px}
  #view-contacts .contact-card-actions{grid-column:1/-1;justify-content:flex-start;flex-wrap:wrap}
}
@media(min-width:721px){
  #view-contacts .contact-card-actions .btn{flex:0 0 auto}
  #view-contacts .contact-card-identity{min-width:0}
  #view-contacts .contact-card-head h3{overflow-wrap:anywhere;word-break:normal}
}

/* R20.3.8.2 — client card final release polish */
#view-contacts .contact-card-head{grid-template-columns:minmax(0,1fr)!important;gap:14px;align-items:start}
#view-contacts .contact-card-identity{display:grid;grid-template-columns:52px minmax(0,1fr);gap:14px;align-items:start;min-width:0}
#view-contacts .contact-card-identity>div{min-width:0;display:grid;gap:6px}
#view-contacts .contact-card-titlebar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}
#view-contacts .contact-card-titlebar h3{flex:1 1 auto;min-width:0;margin:0;font-size:clamp(18px,1.5vw,22px);line-height:1.12;overflow-wrap:anywhere}
#view-contacts .contact-card-actions{flex:0 0 auto;display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap;min-width:max-content}
#view-contacts .contact-action-icon{min-width:40px;width:40px;height:40px;min-height:40px;border-radius:12px}
#view-contacts .contact-action-icon svg{width:17px;height:17px}
#view-contacts .contact-edit-btn{min-height:40px;padding-inline:16px}
#view-contacts .contact-card-meta{font-size:13px;line-height:1.5;overflow-wrap:anywhere}
#view-contacts .contact-card-segment{margin-top:6px}
@media(max-width:1100px){
  #view-contacts .contact-card-titlebar{flex-wrap:wrap}
  #view-contacts .contact-card-actions{justify-content:flex-start;min-width:0;flex-wrap:wrap}
}
@media(max-width:760px){
  #view-contacts .contact-card-identity{grid-template-columns:48px minmax(0,1fr);gap:12px}
  #view-contacts .contact-card-titlebar{gap:10px;flex-wrap:wrap}
  #view-contacts .contact-card-titlebar h3{font-size:18px}
  #view-contacts .contact-card-actions{width:100%;justify-content:flex-start;gap:8px;min-width:0}
  #view-contacts .contact-action-icon{min-width:38px;width:38px;height:38px;min-height:38px}
  #view-contacts .contact-edit-btn{min-height:38px;padding-inline:14px}
  #view-contacts .contact-card-meta{font-size:12px}
}

/* assets/design-system-v3/charts.css */

/* Passite DS3 — data visualisation geometry and motion contracts. */
.chart,.bar-chart,.analytics-chart{position:relative;min-width:0;min-height:260px;display:flex;align-items:flex-end;gap:clamp(3px,.55vw,8px);padding:20px;overflow:hidden;transform:none}
.chart::after,.bar-chart::after{content:"";position:absolute;left:20px;right:20px;bottom:19px;height:1px;background:var(--ds3-line);pointer-events:none}
.chart-col{position:relative;z-index:1;height:210px;flex:1 1 0;display:flex;align-items:flex-end;min-width:3px;max-width:32px;transform:none}
.chart-col i,.chart .bar,.bar-chart .bar{display:block;width:100%;height:var(--h);min-height:3px;border-radius:7px 7px 2px 2px;background:linear-gradient(180deg,color-mix(in srgb,var(--ds3-accent) 70%,#E6ECF2),var(--ds3-accent));box-shadow:0 8px 18px rgba(50,230,226,.1);transform-origin:bottom center;animation:ds3-bar-enter var(--ds3-slow) var(--ds3-ease) both;transition:height var(--ds3-normal) var(--ds3-ease),filter var(--ds3-fast) var(--ds3-ease);will-change:transform}
.chart-col:hover i,.chart .bar:hover,.bar-chart .bar:hover{filter:brightness(1.04)}
.line-chart,.area-chart,.sparkline{transform:none;overflow:visible}
.line-chart path,.area-chart path,.sparkline path{vector-effect:non-scaling-stroke}
.line-chart .line,.area-chart .line,.sparkline .line{fill:none;stroke:var(--ds3-accent);stroke-linecap:round;stroke-linejoin:round}
.area-chart .area{fill:url(#ds3-area-gradient);opacity:.22}
.radial-chart,.donut-chart{position:relative;display:grid;place-items:center;transform:none}
.radial-chart>svg,.donut-chart>svg{grid-area:1/1;rotate:-90deg;transform:none}
.radial-chart>.radial-copy,.donut-chart>.donut-copy{grid-area:1/1;z-index:1;display:grid;place-items:center;text-align:center;transform:none}
.radial-chart .progress,.donut-chart .progress{transform-origin:center;animation:ds3-arc-enter var(--ds3-slow) var(--ds3-ease) both}

@keyframes ds3-bar-enter{from{opacity:.42;transform:scaleY(.06)}to{opacity:1;transform:scaleY(1)}}
@keyframes ds3-arc-enter{from{stroke-dashoffset:var(--ds3-arc-length,314)}to{stroke-dashoffset:var(--ds3-arc-offset,88)}}
@media(max-width:820px){.chart,.bar-chart,.analytics-chart{min-height:220px;padding:16px 12px}.chart::after,.bar-chart::after{left:12px;right:12px;bottom:15px}.chart-col{height:176px}}
@media(prefers-reduced-motion:reduce){.chart-col i,.chart .bar,.bar-chart .bar,.radial-chart .progress,.donut-chart .progress{animation:none}}

/* assets/design-system-v3/motion.css */

/* Passite DS3 — canonical motion language. */
.view{animation:ds3-view-in var(--ds3-normal) var(--ds3-ease) both}
.modal-wrap,.modal-backdrop,.modal-overlay{animation:ds3-overlay-in var(--ds3-fast) var(--ds3-ease) both}
.modal,.dialog,.modal-card{animation:ds3-dialog-in var(--ds3-normal) var(--ds3-ease) both}
.toast{animation:ds3-toast-in var(--ds3-normal) var(--ds3-spring) both}
.ambient i:nth-child(1){animation:ds3-ambient-a 18s ease-in-out infinite alternate}
.ambient i:nth-child(2){animation:ds3-ambient-b 24s ease-in-out infinite alternate}
.ambient i:nth-child(3){animation:ds3-ambient-a 28s ease-in-out infinite alternate-reverse}

:where(.panel,.card,.surface,.glass,.cc-kpi,.today-kpi,.quick-action,.nav-item,.btn,.icon-btn,.subscription-row-v9,.contact-row):hover{translate:none}

@keyframes ds3-view-in{from{opacity:.35}to{opacity:1}}
@keyframes ds3-overlay-in{from{opacity:0}to{opacity:1}}
@keyframes ds3-dialog-in{from{opacity:0;translate:0 8px}to{opacity:1;translate:0}}
@keyframes ds3-toast-in{from{opacity:0;translate:12px 0}to{opacity:1;translate:0}}
@keyframes ds3-ambient-a{to{translate:22px 14px;scale:1.05}}
@keyframes ds3-ambient-b{to{translate:-20px -12px;scale:.96}}

@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}.ambient i{transform:none;translate:none;scale:none}}

/* cabinet/assets/cabinet.ds3.css */

/* Passite Design System 3.0 — cabinet application-specific composition. */
/* Client cabinet: calmer density and friendly dashboard proportions. */
:root{--content-max:1440px}
html[data-theme="dark"]{color-scheme:dark}
select{appearance:none}
input[type=file][hidden]{display:none}

.topbar{grid-template-columns:minmax(220px,1fr) auto}
.account-panel,.mfa-panel,.security-panel{min-width:0}
.mfa-setup,.security-action-form{display:grid;gap:14px}
.mfa-setup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.secret-box{display:block}
.client-ticket-state{display:inline-flex;padding:5px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface-muted);color:var(--text-muted);font-size:var(--fs-meta);font-weight:800;white-space:nowrap}
.client-message small,.message small{display:block;margin-top:6px;color:var(--text-muted);font-size:var(--fs-meta);text-align:right}
.payment-client-history{min-height:280px}
.c75-modal-catalog{width:min(980px,100%)}

@media(max-width:1100px){.topbar{grid-template-columns:auto minmax(0,1fr) auto}}
@media(max-width:760px){.mfa-setup-grid{grid-template-columns:1fr}}
/* DS3 application shell owns the full topbar grid. */
:root{--content-max:1280px}
.topbar{grid-template-columns:minmax(210px,.8fr) minmax(280px,420px) auto}
@media(max-width:980px){.topbar{grid-template-columns:auto minmax(0,1fr) auto}}

/* Passite subscription/account — approved v9 concept */
.account-page-head{margin:0 0 20px}.account-page-head .kicker{display:block;margin-bottom:4px}.account-page-head h2{margin:0;font-size:30px;line-height:1.15;letter-spacing:-.045em}.account-page-head p{margin:5px 0 0;color:var(--text-muted);font-size:13px}
.account-layout-v9{display:grid;grid-template-columns:230px minmax(0,1fr);gap:20px;align-items:start}.account-nav-v9{padding:10px;position:sticky;top:calc(var(--topbar-h) + 18px)}.account-nav-v9 button{appearance:none;width:100%;min-height:42px;border:0;border-radius:9px;background:transparent;color:var(--text-secondary);font-weight:760;font-size:13px;text-align:left;padding:0 12px;cursor:pointer}.account-nav-v9 button:hover{background:var(--surface-muted);color:var(--text)}.account-nav-v9 button.active{background:var(--primary-soft);color:var(--primary-text)}.account-content-v9{min-width:0}.account-pane-v9{min-width:0}
.profile-summary-v9{overflow:hidden}.profile-grid-v9{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.profile-grid-v9>div{padding:18px 20px;border-top:1px solid var(--border)}.profile-grid-v9>div:nth-child(odd){border-right:1px solid var(--border)}.profile-grid-v9 small{display:block;color:var(--text-muted);font-size:11px;margin-bottom:6px}.profile-grid-v9 strong{font-size:14px;overflow-wrap:anywhere}
.subscription-loading-v9{padding:28px;color:var(--text-muted)}
.client-sub-hero-v9{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(250px,.6fr);gap:20px;padding:26px;border-radius:16px;background:linear-gradient(120deg,#12181F 0%,#12181F 70%,#12181F);color:#E6ECF2}.client-sub-hero-v9:after{content:"";position:absolute;width:280px;height:280px;border-radius:50%;right:-105px;top:-140px;background:rgba(50,230,226,.12)}.client-sub-copy-v9,.client-sub-period-v9{position:relative;z-index:1}.client-sub-kicker-v9{font-size:10px;letter-spacing:.13em;font-weight:900;color:var(--ps-accent-ink,#12181F)}.client-sub-hero-v9 h3{margin:8px 0 6px;color:#E6ECF2;font-size:28px;line-height:1.08;letter-spacing:-.04em}.client-sub-hero-v9 p{margin:0;max-width:650px;color:#E6ECF2;font-size:13px;line-height:1.55}.client-sub-actions-v9{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}.client-sub-period-v9{align-self:center;text-align:right}.client-sub-period-v9 span{display:block;color:#E6ECF2;font-size:11px}.client-sub-period-v9 strong{display:block;margin:5px 0 3px;color:#E6ECF2;font-size:30px;letter-spacing:-.05em}.client-sub-period-v9 em{font-style:normal;color:var(--ps-accent-ink,#12181F);font-size:11px}
.client-sub-meta-v9{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.client-sub-meta-v9 article{padding:17px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.client-sub-meta-v9 small{display:block;color:var(--text-muted);font-size:11px;margin-bottom:7px}.client-sub-meta-v9 strong{font-size:14px}.sub-state-v9{display:inline-flex;align-items:center;gap:7px}.sub-state-v9:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.sub-state-v9.active{color:var(--success-text)}.sub-state-v9.expiring{color:var(--warning-text)}.sub-state-v9.expired,.sub-state-v9.paused{color:var(--danger-text)}
.client-sub-history-v9{margin-top:14px;overflow:hidden}.client-sub-history-head-v9{padding:18px 20px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.client-sub-history-head-v9 h3{margin:0;font-size:16px}.client-sub-history-head-v9 p{margin:3px 0 0;color:var(--text-muted);font-size:12px}.client-sub-history-row-v9{display:grid;grid-template-columns:minmax(0,1fr) 150px 120px 110px;gap:16px;align-items:center;padding:15px 20px;border-top:1px solid var(--border);font-size:12px}.client-sub-history-row-v9:first-of-type{border-top:0}.client-sub-history-row-v9 strong{display:block;font-size:13px}.client-sub-history-row-v9 small{display:block;margin-top:2px;color:var(--text-muted)}.client-sub-empty-v9{padding:28px 20px;color:var(--text-muted);font-size:13px}
.client-sub-dev-v9{display:flex;gap:10px;align-items:flex-start;margin-top:14px;padding:15px 17px;border:1px dashed color-mix(in srgb,var(--primary) 45%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--primary-soft) 70%,var(--surface));color:var(--text-secondary);font-size:12px;line-height:1.5}.client-sub-dev-v9 i{flex:0 0 26px;width:26px;height:26px;display:grid;place-items:center;border-radius:8px;background:var(--primary-soft);color:var(--primary-text);font-style:normal;font-weight:900}
.renew-plans-v9{display:grid;grid-template-columns:1fr 1fr;gap:12px}.renew-plan-v9{position:relative;padding:18px;border:1px solid var(--border);border-radius:14px;background:var(--surface);cursor:pointer}.renew-plan-v9.active{border:2px solid var(--primary);background:var(--primary-soft)}.renew-plan-v9 input{position:absolute;opacity:0;pointer-events:none}.renew-plan-radio-v9{position:absolute;right:15px;top:15px;width:18px;height:18px;border:2px solid var(--border-strong);border-radius:50%}.renew-plan-v9.active .renew-plan-radio-v9{border-color:var(--primary);background:var(--primary);box-shadow:inset 0 0 0 4px var(--surface)}.renew-plan-v9 small{display:block;color:var(--text-muted);font-size:11px;margin-bottom:7px}.renew-plan-v9 strong{display:block;font-size:24px;letter-spacing:-.04em}.renew-plan-v9 span{color:var(--text-muted);font-size:12px}.renew-dev-v9{margin-top:17px;padding:14px;border:1px solid color-mix(in srgb,var(--warning) 35%,var(--border));border-radius:12px;background:var(--warning-soft);color:var(--warning-text);font-size:12px;line-height:1.5}.renew-final-v9{text-align:center;padding:8px 0 4px}.renew-final-v9 .renew-icon-v9{width:48px;height:48px;display:grid;place-items:center;margin:0 auto 14px;border-radius:14px;background:var(--primary-soft);color:var(--primary-text);font-size:20px;font-weight:900}.renew-final-v9 h4{margin:0 0 8px;font-size:18px}.renew-final-v9 p{margin:0;color:var(--text-muted);font-size:13px;line-height:1.55}
html[data-theme="dark"] .client-sub-hero-v9{background:linear-gradient(120deg,#12181F,#12181F 72%,#12181F)}
@media(max-width:980px){.account-layout-v9{grid-template-columns:1fr}.account-nav-v9{position:static;display:flex;gap:4px;overflow:auto}.account-nav-v9 button{width:auto;white-space:nowrap}.client-sub-hero-v9{grid-template-columns:1fr}.client-sub-period-v9{text-align:left}.client-sub-meta-v9{grid-template-columns:1fr 1fr}.client-sub-history-row-v9{grid-template-columns:minmax(0,1fr) 120px 100px}.client-sub-history-row-v9>*:nth-child(4){display:none}}
@media(max-width:640px){.account-page-head h2{font-size:26px}.profile-grid-v9{grid-template-columns:1fr}.profile-grid-v9>div:nth-child(odd){border-right:0}.client-sub-hero-v9{padding:20px}.client-sub-hero-v9 h3{font-size:25px}.client-sub-period-v9 strong{font-size:26px}.client-sub-meta-v9{grid-template-columns:1fr}.client-sub-actions-v9{display:grid}.client-sub-actions-v9 .btn{width:100%}.client-sub-history-row-v9{grid-template-columns:minmax(0,1fr) 98px;padding:14px 16px}.client-sub-history-row-v9>*:nth-child(3),.client-sub-history-row-v9>*:nth-child(4){display:none}.renew-plans-v9{grid-template-columns:1fr}}

/* DS3 client subscription: compact active state, content-driven cards. */
.client-sub-hero-v9{align-items:start;border-color:color-mix(in srgb,var(--ds3-accent) 20%,var(--ds3-line));background:linear-gradient(145deg,var(--ds3-surface-strong),var(--ds3-accent-soft));color:var(--ds3-ink);box-shadow:var(--ds3-shadow-sm)}
.client-sub-copy-v9 h3{color:var(--ds3-ink);font-weight:740}.client-sub-copy-v9 p{color:var(--ds3-ink-2)}.client-sub-kicker-v9,.client-sub-period-v9 em{color:var(--ds3-accent-2)}.client-sub-period-v9 span{color:var(--ds3-ink-2)}.client-sub-period-v9 strong{color:var(--ds3-ink)}
.client-sub-period-v9{align-self:start;border:1px solid var(--ds3-line);border-radius:var(--ds3-radius-md);background:var(--ds3-surface-soft)}
.client-sub-meta-v9 article{height:auto;min-height:96px;align-content:start}
.client-sub-dev-v9>i{width:32px;height:32px;min-width:32px;border-radius:10px;font-size:13px}

@media(max-width:640px){
  .client-sub-hero-v9{padding:17px;border-radius:20px}
  .client-sub-hero-v9 h3{font-size:23px}
  .client-sub-period-v9{padding:14px;text-align:left}
  .client-sub-period-v9 strong{font-size:23px}
  .client-sub-meta-v9 article{min-height:78px}
}

/* R20 Website Platform 2.0 — live website content + Help Center */
.website-page-head,.help-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}.website-page-head h2,.help-page-head h2{margin:4px 0 5px;font-size:30px;letter-spacing:-.045em}.website-page-head p,.help-page-head p{max-width:760px;margin:0;color:var(--text-muted);font-size:13px;line-height:1.55}.website-content-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.65fr);gap:16px;align-items:start}.website-profile-panel,.website-promotions-panel{overflow:hidden}.website-profile-form{display:grid;gap:14px;padding:0 20px 20px}.website-profile-form label,.website-promotion-form label{display:grid;gap:7px;min-width:0}.website-profile-form label>span,.website-promotion-form label>span{color:var(--text-secondary);font-size:11px;font-weight:800}.website-profile-form textarea,.website-promotion-form textarea{min-height:82px;resize:vertical}.website-form-grid{display:grid;gap:12px;min-width:0}.website-form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.website-form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.website-form-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:4px}.website-side-stack{display:grid;gap:16px}.website-live-card,.website-loyalty-card{padding:20px}.website-live-card h3,.website-loyalty-state h3{margin:5px 0 7px;font-size:20px;letter-spacing:-.025em}.website-live-card p,.website-loyalty-state p{margin:0;color:var(--text-muted);font-size:12px;line-height:1.55}.website-live-list{display:grid;gap:0;margin-top:16px;border-top:1px solid var(--border)}.website-live-list span{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);color:var(--text-secondary);font-size:12px}.website-live-list b{color:var(--success-text);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.website-loyalty-state small{display:block;margin:12px 0;color:var(--text-muted)}.website-loyalty-state .btn{margin-top:14px}.website-promotions-panel{margin-top:16px}.website-promotion-list{display:grid}.website-promotion-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:17px 20px;border-top:1px solid var(--border)}.website-promotion-row:first-child{border-top:0}.website-promotion-main>div{display:flex;gap:7px;align-items:center;margin-bottom:7px}.website-promotion-main strong{display:block;font-size:14px}.website-promotion-main p{margin:4px 0;color:var(--text-muted);font-size:12px;line-height:1.45}.website-promotion-main small{color:var(--text-muted);font-size:10px}.website-promotion-main em{font-style:normal;padding:4px 7px;border-radius:999px;background:var(--primary-soft);color:var(--primary-text);font-size:9px;font-weight:900;letter-spacing:.04em}.website-promo-state{display:inline-flex;align-items:center;gap:5px;font-size:9px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.website-promo-state:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.website-promo-state.active{color:var(--success-text)}.website-promo-state.inactive{color:var(--text-muted)}.website-promotion-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.website-promotion-form{display:grid;gap:13px}.website-active-check{grid-template-columns:auto 1fr!important;align-items:center;padding:12px;border:1px solid var(--border);border-radius:12px}.website-active-check span{display:block!important}.website-active-check b{display:block;color:var(--text);font-size:12px}.website-active-check small{display:block;margin-top:2px;color:var(--text-muted);font-size:10px}
.help-search{display:flex;align-items:center;gap:8px;width:min(380px,100%);height:42px;padding:0 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.help-search svg{width:16px;height:16px;color:var(--text-muted)}.help-search input{width:100%;border:0;background:transparent;outline:0;color:var(--text);font:inherit}.help-layout{display:grid;grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:16px;align-items:start}.help-nav{position:sticky;top:calc(var(--topbar-h) + 18px);max-height:calc(100svh - var(--topbar-h) - 42px);overflow:auto;padding:10px}.help-category{padding:6px 0}.help-category>strong{display:block;padding:8px 10px 6px;color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:.09em}.help-link{appearance:none;display:block;width:100%;padding:11px 10px;border:0;border-radius:10px;background:transparent;color:var(--text);text-align:left;cursor:pointer}.help-link:hover{background:var(--surface-muted)}.help-link.active{background:var(--primary-soft);color:var(--primary-text)}.help-link span{display:block;font-size:12px;font-weight:800;line-height:1.3}.help-link small{display:block;margin-top:3px;color:var(--text-muted);font-size:10px;line-height:1.35}.help-link.active small{color:color-mix(in srgb,var(--primary-text) 68%,var(--text-muted))}.help-article{overflow:hidden}.help-article-head{padding:26px 28px 20px}.help-article-head h2{max-width:760px;margin:5px 0 8px;font-size:28px;line-height:1.12;letter-spacing:-.04em}.help-article-head p{max-width:720px;margin:0;color:var(--text-muted);font-size:13px;line-height:1.55}.help-shot{margin:0 28px 24px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface-muted);box-shadow:var(--shadow-sm)}.help-shot img{display:block;width:100%;height:auto}.help-steps{list-style:none;counter-reset:none;display:grid;gap:0;margin:0;padding:0 28px 20px}.help-steps li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:12px;padding:15px 0;border-top:1px solid var(--border);color:var(--text-secondary);font-size:13px;line-height:1.55}.help-steps i{width:26px;height:26px;display:grid;place-items:center;border-radius:8px;background:var(--primary-soft);color:var(--primary-text);font-style:normal;font-weight:900;font-size:11px}.help-article-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 28px;border-top:1px solid var(--border);background:var(--surface-muted);color:var(--text-muted);font-size:12px}
@media(max-width:1050px){.website-content-grid{grid-template-columns:1fr}.website-side-stack{grid-template-columns:1fr 1fr}.help-layout{grid-template-columns:260px minmax(0,1fr)}}
@media(max-width:760px){.website-page-head,.help-page-head{align-items:stretch;flex-direction:column}.help-search{width:100%}.website-form-grid.two,.website-form-grid.three,.website-side-stack{grid-template-columns:1fr}.website-promotion-row{grid-template-columns:1fr}.website-promotion-actions{justify-content:flex-start}.help-layout{grid-template-columns:1fr}.help-nav{position:static;max-height:none}.help-article-head{padding:21px 18px 16px}.help-article-head h2{font-size:24px}.help-shot{margin:0 18px 18px}.help-steps{padding:0 18px 16px}.help-article-footer{padding:14px 18px;align-items:flex-start;flex-direction:column}.website-profile-form{padding:0 16px 16px}.website-form-footer{align-items:stretch;flex-direction:column}.website-form-footer .btn{width:100%}}

/* R20.4 isolated demo onboarding */
.demo-picker-card{max-width:560px}.demo-industry-grid{display:grid;gap:9px}.demo-industry-grid button{width:100%;min-height:64px;display:grid;grid-template-columns:38px minmax(0,1fr) 18px;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--ds3-line);border-radius:14px;background:var(--ds3-surface);color:var(--ds3-ink);text-align:left;cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}.demo-industry-grid button:hover{border-color:color-mix(in srgb,var(--ds3-accent) 55%,var(--ds3-line));background:color-mix(in srgb,var(--ds3-accent) 5%,var(--ds3-surface));transform:translateY(-1px)}.demo-industry-grid button:focus-visible{outline:0;box-shadow:0 0 0 3px color-mix(in srgb,var(--ds3-accent) 22%,transparent)}.demo-industry-grid button>svg:first-child{width:20px;height:20px;padding:8px;box-sizing:content-box;border-radius:10px;background:var(--ds3-accent-soft);color:var(--ds3-accent-2)}.demo-industry-grid button>svg:last-child{width:17px;height:17px;color:var(--ds3-ink-3)}.demo-industry-grid span{min-width:0;display:grid;gap:3px}.demo-industry-grid b{font-size:13px}.demo-industry-grid small{color:var(--ds3-ink-2);font-size:11px;line-height:1.35}.demo-industry-grid button.is-loading{pointer-events:none;opacity:.62}.demo-picker-note{display:flex;align-items:flex-start;gap:8px;margin:16px 0 0!important;color:var(--ds3-ink-3)!important;font-size:11px!important;line-height:1.5!important}.demo-picker-note svg{flex:0 0 16px;width:16px;height:16px;margin-top:1px;color:var(--ds3-accent-2)}@media(max-width:760px){.demo-onboarding .auth-card{align-content:start}.demo-onboarding .auth-copy{margin-top:4px}.demo-industry-grid button{min-height:68px}}

/* R20.3.5 desktop interface polish ------------------------------------------------ */
.theme-control{display:flex;align-items:center;justify-content:space-between;gap:10px}
.theme-icon-btn{appearance:none;width:36px;height:36px;min-width:36px;display:grid;place-items:center;padding:0;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs);cursor:pointer;transition:border-color .16s var(--ease),background .16s var(--ease),color .16s var(--ease)}
.theme-icon-btn:hover{border-color:color-mix(in srgb,var(--primary) 50%,var(--border-strong));background:var(--primary-soft);color:var(--primary-text)}
.theme-icon-btn svg{width:17px;height:17px}
.ds-today-main{display:grid;gap:12px;min-width:0;align-content:start}
.ds-today-main>.today-kpis{margin:0}
.journal-date-nav{display:flex;align-items:center;gap:8px;min-width:0}
.journal-date-field{display:block;min-width:0}

@media(min-width:820px){
  /* Header: search belongs with the actions instead of floating in the middle. */
  .topbar{grid-template-columns:minmax(260px,1fr) minmax(280px,350px) auto;column-gap:12px;padding-inline:24px}
  .topbar-client-search{justify-self:end;width:100%;max-width:350px}
  .topbar-client-search input{height:40px;min-height:40px;border-radius:11px;font-size:12px}
  .topbar-actions{gap:8px}
  .topbar-actions>.icon-btn,.topbar-actions>.open-site,.topbar-actions>.profile-chip{height:40px;min-height:40px}
  .topbar-actions>.icon-btn,.topbar-actions>.profile-chip{width:40px;min-width:40px}
  .topbar-actions>.profile-chip{border-radius:11px}

  /* Calendar: one compact control row, more room for categories and a month that fits a desktop viewport. */
  #view-journal>.panel>.panel-head{min-height:76px;padding:13px 18px}
  #view-journal>.panel>.panel-head .tool-row{gap:7px}
  #view-journal>.panel>.panel-head .btn{min-height:36px;padding-inline:12px;font-size:11px}
  #view-journal .journal-bar{padding:11px 14px 10px;gap:10px}
  #view-journal .journal-nav{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;min-width:0}
  #view-journal .journal-date-nav{white-space:nowrap}
  #view-journal .journal-date-field input{width:150px;min-height:36px;height:36px;padding-inline:10px}
  #view-journal .journal-date-nav>.icon-btn{width:36px;height:36px;min-width:36px}
  #view-journal .journal-date-nav>.btn{min-height:36px;height:36px;padding-inline:11px}
  #view-journal .journal-mode-switch{justify-self:end;min-width:0;max-width:100%}
  #view-journal .journal-mode{min-height:34px;padding-inline:11px;font-size:11px}
  #view-journal .journal-range-picker{grid-column:1/-1}
  #view-journal .journal-filter-groups{grid-template-columns:minmax(150px,190px) minmax(0,1fr);gap:12px;padding-top:9px}
  #view-journal .journal-filter-group{overflow:visible}
  #view-journal .journal-resource-switch,#view-journal .journal-category-switch{overflow:visible;flex-wrap:wrap;align-content:flex-start}
  #view-journal .journal-chip{min-height:31px;padding-inline:10px;font-size:11px}
  #view-journal .journal-filter-label{display:flex;align-items:center;justify-content:space-between;gap:10px}
  #view-journal .journal-body{padding:10px 14px 14px;overflow:visible}
  #view-journal[data-journal-view="month"] .journal-month-scroll{overflow:visible}
  #view-journal[data-journal-view="month"] .journal-month{width:100%;min-width:0;border-radius:12px}
  #view-journal[data-journal-view="month"] .journal-month-weekdays span{padding:6px 4px;font-size:9px}
  #view-journal[data-journal-view="month"] .journal-month-day{height:clamp(62px,calc((100dvh - 500px)/6),84px);min-height:62px;overflow:hidden}
  #view-journal[data-journal-view="month"] .journal-month-day>header{padding:4px 6px 1px}
  #view-journal[data-journal-view="month"] .journal-month-day>header b{font-size:11px}
  #view-journal[data-journal-view="month"] .journal-month-list{gap:2px;padding:1px 5px 4px;overflow:hidden}
  #view-journal[data-journal-view="month"] .journal-month-item{grid-template-columns:25px minmax(0,1fr);gap:0 4px;padding:3px 4px;border-radius:6px}
  #view-journal[data-journal-view="month"] .journal-month-item b{font-size:8.5px}
  #view-journal[data-journal-view="month"] .journal-month-item span{font-size:8.8px}
  #view-journal[data-journal-view="month"] .journal-month-item small{display:none}
  #view-journal[data-journal-view="month"] .journal-month-more{padding:1px 4px;font-size:8.5px}

  /* Clients: six metrics are one consistent row, and search/filters read as one toolbar. */
  #view-contacts .commerce-metrics{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;padding:14px;border-bottom:1px solid var(--border)}
  #view-contacts .commerce-metrics>*{align-self:stretch;height:124px;min-height:124px;display:flex;flex-direction:column;justify-content:space-between;padding:15px 17px!important;border:1px solid var(--border)!important;border-radius:13px!important;background:var(--surface)!important;box-shadow:var(--shadow-xs)!important;text-align:left}
  #view-contacts .commerce-metrics>*:nth-child(4),#view-contacts .commerce-metrics>*:nth-child(5){background:linear-gradient(145deg,var(--surface),var(--primary-soft))!important}
  #view-contacts .commerce-metrics strong{font-size:24px}
  .crm-preset-quick{margin:0;padding:9px 14px;border:0;border-bottom:1px solid var(--border);border-radius:0;background:var(--surface-muted);gap:7px}
  .crm-preset-quick-label{margin-right:3px}
  .crm-preset-quick .btn{min-height:34px;height:34px;padding:0 12px;border-radius:9px;font-size:10.5px}
  .contact-toolbar{display:grid;grid-template-columns:minmax(300px,1.35fr) repeat(2,minmax(190px,.78fr));gap:10px;align-items:center;padding:11px 14px}
  .contact-toolbar .field-search{max-width:none;width:100%}
  .contact-toolbar .field-search input{width:100%;max-width:none;height:40px;min-height:40px}
  .contact-toolbar .compact-field{display:block;width:100%}
  .contact-toolbar .compact-field>span{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .contact-toolbar .compact-field select{width:100%;min-width:0;height:40px;min-height:40px}

  /* Sales metrics are informational, not hero cards. */
  #view-commerce .commerce-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
  #view-commerce .commerce-metrics article{min-height:92px;height:92px;padding:13px 16px}
  #view-commerce .commerce-metrics article>span{margin-bottom:6px}
  #view-commerce .commerce-metrics strong{font-size:21px}

  /* Website: side cards use the full height of the left editor; loyalty sits on its baseline. */
  .website-content-grid{grid-template-columns:minmax(0,1.68fr) minmax(300px,.72fr);align-items:stretch}
  .website-profile-panel{height:100%;align-self:stretch}
  .website-side-stack{height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:16px}
  .website-side-stack>.panel{width:100%;align-self:stretch}
  .website-loyalty-card{margin-top:auto}

  /* Help search is the same single-field composition as the header search. */
  .help-page-head{align-items:center}
  .help-search{position:relative;display:block;width:min(350px,100%);height:auto;padding:0;border:0;border-radius:0;background:transparent}
  .help-search svg{position:absolute;z-index:1;left:13px;top:50%;width:16px;height:16px;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}
  .help-search input{width:100%;height:40px;min-height:40px;padding:0 13px 0 40px;border:1px solid var(--border);border-radius:11px;background:var(--surface);box-shadow:var(--shadow-sm);font-size:12px}

  /* Today: KPI row is literally part of the same left column as the schedule. */
  #view-overview .today-hero{padding:24px 28px;margin-bottom:12px}
  #view-overview .today-hero h2{font-size:38px}
  #view-overview .today-action{min-height:40px;padding-inline:16px;font-size:12px}
  #view-overview .ds-today-layout{grid-template-columns:minmax(0,1.65fr) minmax(300px,.65fr);gap:12px;align-items:stretch}
  #view-overview .ds-today-main{height:100%}
  #view-overview .today-kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
  #view-overview .today-kpi{min-height:92px;height:92px;padding:14px 16px}
  #view-overview .today-kpi span{margin-bottom:3px;font-size:10px}
  #view-overview .today-kpi strong{font-size:23px}
  #view-overview .ds-today-primary{min-height:0;height:auto}
  #view-overview .today-upcoming-head{height:34px}
  #view-overview .today-upcoming-row{padding-block:9px}
  #view-overview .ds-today-side{height:100%;display:grid;grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:12px;align-content:stretch}
  #view-overview .today-attention,#view-overview .ds-site-card{height:100%;align-self:stretch}
  #view-overview .ds-site-quick .quick-action{min-height:68px;padding:8px}
  #view-overview .ds-site-storage{padding-block:11px}
}

@media(max-width:819px){
  .journal-date-nav{width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) 40px auto;gap:7px}
  .journal-date-field input{width:100%}
  #view-journal .journal-nav{display:grid;grid-template-columns:1fr;gap:8px}
  .ds-today-main{gap:10px}
}

/* R20.3.5 alignment correction: schedule and right-side stack finish on the same baseline. */
@media(min-width:820px){
  #view-overview .ds-today-main{grid-template-rows:auto minmax(0,1fr)}
  #view-overview .ds-today-primary{height:100%;align-self:stretch}
  #view-overview .ds-today-side{grid-template-rows:auto minmax(0,1fr)}
}
.sidebar .theme-icon-btn{background:#12181F;border-color:var(--ps-ink);color:#E6ECF2;box-shadow:none}
.sidebar .theme-icon-btn:hover{background:#12181F;border-color:var(--ps-ink);color:#E6ECF2}

/* R20.3.6 — client cabinet polish follow-up */
.theme-control{min-height:34px;padding:0 6px;font-size:10px;letter-spacing:.02em}
.theme-icon-btn{position:relative;width:50px;height:28px;min-width:50px;padding:0;border-radius:999px;border:1px solid var(--border-strong);background:color-mix(in srgb,var(--surface) 94%,var(--primary-soft));box-shadow:none;overflow:hidden}
.theme-icon-btn::before,.theme-icon-btn::after{position:absolute;top:50%;transform:translateY(-50%);font-size:10px;line-height:1;color:var(--text-muted);pointer-events:none}
.theme-icon-btn::before{content:"☀";left:7px}
.theme-icon-btn::after{content:"☾";right:7px}
.theme-icon-btn svg{position:absolute;top:50%;left:4px;width:18px;height:18px;padding:3px;transform:translateY(-50%);border-radius:50%;background:var(--surface);box-shadow:0 1px 5px rgba(18,24,31,.18);transition:left .18s var(--ease),background .18s var(--ease),color .18s var(--ease)}
html[data-theme="dark"] .theme-icon-btn svg{left:24px}
html[data-theme="dark"] .theme-icon-btn{background:rgba(18,24,31,.72);border-color:var(--ps-ink)}
.sidebar .theme-icon-btn{background:rgba(18,24,31,.9);border-color:var(--ps-ink);color:#E6ECF2}
.sidebar .theme-icon-btn::before,.sidebar .theme-icon-btn::after{color:var(--ps-ink)}
.sidebar .theme-icon-btn svg{background:#12181F;box-shadow:0 1px 4px rgba(18,24,31,.32)}

#view-overview .today-hero{padding:20px 28px 10px;margin-bottom:6px;align-items:end}
#view-overview .today-hero-copy{display:grid;gap:4px}
#view-overview #todaySummary{max-width:620px}
#view-overview .today-actions{align-self:end}
#view-overview .today-kpi{position:relative;overflow:hidden;border-color:color-mix(in srgb,var(--border) 88%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 92%,var(--primary-soft)),var(--surface));box-shadow:var(--shadow-xs)}
#view-overview .today-kpi::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(180deg,var(--primary),color-mix(in srgb,var(--primary) 28%,transparent))}
#view-overview .today-kpi::after{content:"";position:absolute;right:-18px;top:-20px;width:72px;height:72px;border-radius:50%;background:radial-gradient(circle,rgba(50,230,226,.12),transparent 68%);pointer-events:none}
#view-overview .today-kpi span{font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}
#view-overview .today-kpi strong{font-size:26px;line-height:1.02}
#view-overview .today-kpi strong::after{content:"";display:block;width:34px;height:3px;margin-top:8px;border-radius:999px;background:color-mix(in srgb,var(--primary) 42%,transparent)}
#view-overview .ds-today-layout{gap:10px}
#view-overview .ds-today-main{gap:10px}
#view-overview .ds-today-side{gap:10px}

.demo-onboarding{align-items:center;gap:40px}
.demo-picker-card{width:min(560px,100%);max-width:560px;padding:28px 28px 20px}
.demo-picker-card .brand{display:inline-flex;align-items:center;min-height:34px;margin-bottom:8px;line-height:1;text-decoration:none}
.demo-picker-card .brand-word{display:inline-flex;align-items:center;gap:2px}
.demo-picker-card .brand-dot{color:var(--primary)}
.demo-onboarding .auth-copy{margin:8px 0 18px}
.demo-onboarding .auth-copy p{max-width:44ch}
.demo-industry-grid{gap:10px}
.demo-industry-grid button{min-height:68px;padding:12px 14px;border-radius:15px}
.demo-picker-note{margin-top:14px!important}

@media(max-width:819px){
  .theme-control{min-height:30px;padding:0 4px;font-size:9.5px}
  .theme-icon-btn{width:46px;height:26px;min-width:46px}
  html[data-theme="dark"] .theme-icon-btn svg{left:21px}
  #view-overview .today-hero{padding:16px 0 6px;margin-bottom:0}
  #view-overview .today-hero-copy{gap:3px}
  #view-overview .today-kpi strong{font-size:24px}
  #view-overview .today-kpi strong::after{margin-top:6px}
}
@media(max-width:760px){
  .demo-onboarding{display:block;padding:16px 12px}
  .demo-onboarding .auth-card{width:100%;max-width:none;padding:22px 16px 18px;border-radius:18px}
  .demo-onboarding .auth-copy{margin:4px 0 14px}
  .demo-onboarding .auth-copy h1{font-size:clamp(30px,10vw,52px);line-height:1.02}
  .demo-onboarding .auth-copy p{font-size:14px;line-height:1.58}
  .demo-industry-grid button{grid-template-columns:42px minmax(0,1fr) 16px;min-height:70px;padding:13px 14px}
}

/* R20.3.7 — internal demo cabinets */
.demo-mode .content{padding-top:18px}
.demo-mode #view-overview .today-hero{border:0;background:transparent;padding-top:8px}
.demo-mode #view-overview .today-hero-copy::before{content:"Интерактивное демо";display:inline-flex;width:max-content;align-items:center;min-height:25px;padding:0 9px;margin-bottom:3px;border:1px solid color-mix(in srgb,var(--primary) 24%,var(--border));border-radius:999px;background:var(--primary-soft);color:var(--primary-text);font-size:9px;font-weight:850;letter-spacing:.07em;text-transform:uppercase}
.demo-mode #view-overview .ds-today-layout{grid-template-columns:minmax(0,1.62fr) minmax(300px,.68fr);align-items:stretch}
.demo-mode #view-overview .ds-today-side{display:grid;grid-template-rows:auto minmax(0,1fr);height:100%;gap:10px}
.demo-mode #view-overview .today-attention{height:auto;min-height:0}
.demo-guide-card{min-height:0;display:flex;flex-direction:column;padding:17px;border:1px solid color-mix(in srgb,var(--primary) 20%,var(--border));background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--primary-soft) 45%,var(--surface)));overflow:hidden}
.demo-guide-head{display:flex;align-items:center;gap:11px;margin-bottom:10px}
.demo-guide-icon{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:11px;background:var(--primary-soft);color:var(--primary-text)}
.demo-guide-icon svg{width:19px;height:19px}
.demo-guide-head h3{margin:2px 0 0;font-size:15px}
.demo-guide-card>p{margin:0 0 13px;color:var(--text-secondary);font-size:10.5px;line-height:1.5}
.demo-guide-list{display:grid;gap:8px;margin-top:auto}
.demo-guide-list span{display:grid;grid-template-columns:24px minmax(0,1fr);align-items:start;gap:8px;padding:8px 9px;border:1px solid color-mix(in srgb,var(--border) 88%,transparent);border-radius:10px;background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--text-secondary);font-size:10px;line-height:1.4}
.demo-guide-list b{width:24px;height:24px;display:grid;place-items:center;border-radius:8px;background:var(--primary-soft);color:var(--primary-text);font-size:9px}
.demo-mode .commerce-metrics,.demo-mode #view-contacts .commerce-metrics{background:linear-gradient(180deg,color-mix(in srgb,var(--primary-soft) 20%,var(--surface-muted)),var(--surface-muted))}
.demo-mode .contact-card,.demo-mode .commerce-content,.demo-mode #view-journal>.panel{box-shadow:0 10px 30px rgba(18,24,31,.045)}
.demo-mode .demo-banner{box-shadow:var(--shadow-xs)}
.demo-mode .page-context{color:var(--primary-text)}

@media(max-width:1100px) and (min-width:820px){
  .demo-mode #view-overview .ds-today-layout{grid-template-columns:1fr}
  .demo-mode #view-overview .ds-today-side{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none}
}
@media(max-width:819px){
  .demo-mode .content{padding-top:12px}
  .demo-mode #view-overview .today-hero-copy::before{min-height:23px;font-size:8.5px}
  .demo-mode #view-overview .ds-today-layout{grid-template-columns:1fr}
  .demo-mode #view-overview .ds-today-side{grid-template-columns:1fr;grid-template-rows:none}
  .demo-guide-card{padding:14px}
  .demo-guide-list{margin-top:0}
  .demo-mode .today-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .demo-mode .today-action{width:100%;justify-content:center}
}

/* R20.3.8 — screenshot-driven client polish */
.theme-control{min-height:32px;padding:0 7px;font-size:10px}

/* Demo chooser: page scrolls naturally; the card itself never becomes a crooked inner-scroll container. */
.demo-onboarding{box-sizing:border-box;min-height:100dvh;max-height:none!important;overflow-y:auto!important;align-items:center;gap:clamp(32px,5vw,72px);padding-block:max(28px,env(safe-area-inset-top)) max(28px,env(safe-area-inset-bottom))}
.demo-onboarding .auth-card.demo-picker-card{width:min(620px,100%);max-width:620px;min-height:0!important;max-height:none!important;overflow:visible!important;align-content:start;padding:28px;border-radius:22px}
.demo-brand-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 16px}
.demo-brand-actions{display:flex;align-items:center;gap:12px}
.demo-brand-row .brand{display:inline-flex;align-items:center;min-height:32px;margin:0!important;font-size:30px;line-height:1;text-decoration:none}
.demo-brand-row .brand-word{display:inline-flex;align-items:baseline;line-height:1}
.demo-brand-row .brand-dot{font-size:.72em;line-height:1;transform:translateY(-.03em)}
.demo-brand-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 9px;border:1px solid color-mix(in srgb,var(--primary) 24%,var(--border));border-radius:999px;background:var(--primary-soft);color:var(--primary-text);font-size:9px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.demo-onboarding .auth-copy{margin:0 0 18px}
.demo-onboarding .auth-copy>span{margin-bottom:8px}
.demo-onboarding .auth-copy h1{margin:0 0 10px;font-size:clamp(34px,4vw,46px)}
.demo-onboarding .auth-copy p{max-width:52ch;font-size:13px;line-height:1.55}
.demo-industry-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.demo-industry-grid button{min-height:78px;padding:13px;border-radius:14px;box-shadow:none}
.demo-industry-grid button:last-child{grid-column:1/-1}
.demo-industry-grid b{font-size:12.5px}.demo-industry-grid small{font-size:10px}
.demo-picker-note{margin:14px 0 0!important;padding-top:13px;border-top:1px solid var(--border)}

/* Today: make the title/actions a real header surface, not text floating in empty canvas. */
#view-overview{gap:10px}
#view-overview .today-hero{box-sizing:border-box;margin:0!important;padding:16px 18px!important;border:1px solid var(--border)!important;border-radius:16px!important;background:linear-gradient(135deg,color-mix(in srgb,var(--primary-soft) 34%,var(--surface)),var(--surface))!important;box-shadow:var(--shadow-xs)!important;align-items:center!important}
#view-overview .today-hero-copy{gap:2px}
#view-overview .today-greeting{margin-bottom:2px}
#view-overview .today-actions{align-self:center;gap:7px}
#view-overview .today-action{min-height:38px;padding-inline:14px}
#view-overview .ds-today-layout{gap:10px}
#view-overview .today-kpi{border:1px solid color-mix(in srgb,var(--primary) 14%,var(--border));background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--primary-soft) 34%,var(--surface)));box-shadow:0 8px 22px rgba(18,24,31,.055)}
#view-overview .today-kpi::before{width:3px;background:var(--primary)}
#view-overview .today-kpi::after{right:-24px;top:-28px;width:92px;height:92px;background:radial-gradient(circle,color-mix(in srgb,var(--primary) 13%,transparent),transparent 68%)}
#view-overview .today-kpi span{display:inline-flex;width:max-content;max-width:100%;align-items:center;min-height:23px;margin:0;padding:0 7px;border-radius:999px;background:var(--primary-soft);color:var(--primary-text);font-size:9px;font-weight:800;letter-spacing:.035em;text-transform:none}
#view-overview .today-kpi strong{position:relative;z-index:1;margin-top:8px;font-size:26px;line-height:1;letter-spacing:-.045em}
#view-overview .today-kpi strong::after{display:none}

@media(max-width:819px){
  .theme-control{min-height:30px;padding-inline:5px}
  .demo-onboarding{padding:14px 12px 24px;background:var(--surface-muted)!important}
  .demo-onboarding .auth-card.demo-picker-card{width:100%;max-width:720px;min-height:0!important;padding:22px 18px;border:1px solid var(--border)!important;border-radius:20px!important;background:var(--surface)!important;box-shadow:var(--shadow-sm)!important}
  .demo-brand-row{margin-bottom:14px}.demo-brand-row .brand{font-size:28px}
  #view-overview .today-hero{padding:14px!important;border-radius:14px!important}
}
@media(max-width:559px){
  .demo-industry-grid{grid-template-columns:1fr}
  .demo-industry-grid button:last-child{grid-column:auto}
  .demo-onboarding .auth-copy h1{font-size:34px}
  .demo-industry-grid button{min-height:68px}
}

/* R20.3.8 — demo workspace uses the same anchored header quality as the real cabinet. */
.demo-mode #view-overview .today-hero{padding:14px 16px!important;border:1px solid color-mix(in srgb,var(--primary) 18%,var(--border))!important;border-radius:15px!important;background:linear-gradient(135deg,color-mix(in srgb,var(--primary-soft) 44%,var(--surface)),var(--surface))!important;box-shadow:var(--shadow-xs)!important}
.demo-mode #view-overview .today-hero-copy::before{margin-bottom:4px}
.demo-mode .demo-banner{margin:0;border-bottom-color:color-mix(in srgb,var(--primary) 18%,var(--border));background:linear-gradient(90deg,var(--primary-soft),color-mix(in srgb,var(--primary-soft) 30%,var(--surface)))}

/* R20.3.9 PWA + Push Foundation */
.pwa-topbar-bell{position:relative}.pwa-topbar-bell .badge{position:absolute;top:-4px;right:-5px;min-width:18px;height:18px;padding:0 5px;border:2px solid var(--surface);border-radius:999px;display:grid;place-items:center;background:var(--danger);color:#E6ECF2;font-size:8px;font-weight:800;line-height:1}.pwa-topbar-bell .badge.hidden{display:none}
.pwa-drawer-backdrop{position:fixed;inset:0;z-index:1390;background:rgba(18,24,31,.28);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .18s ease}.pwa-drawer-backdrop.open{opacity:1;pointer-events:auto}.pwa-notification-drawer{position:fixed;z-index:1400;top:12px;right:12px;bottom:12px;width:min(410px,calc(100vw - 24px));display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border);border-radius:20px;background:var(--surface-raised);box-shadow:0 26px 90px rgba(18,24,31,.2);transform:translateX(calc(100% + 32px));transition:transform .22s cubic-bezier(.2,.8,.2,1)}.pwa-notification-drawer.open{transform:none}.pwa-notification-drawer>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 18px 14px;border-bottom:1px solid var(--border)}.pwa-notification-drawer h2{margin:2px 0 0;font-size:20px}.pwa-drawer-tools{display:flex;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border)}.pwa-drawer-tools .text-btn{min-height:34px}.pwa-notification-list{min-height:0;overflow:auto;overscroll-behavior:contain}.pwa-notification{appearance:none;width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) 8px;gap:11px;align-items:start;padding:14px 16px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);text-align:left;cursor:pointer}.pwa-notification:hover{background:var(--surface-muted)}.pwa-notification.is-unread{background:color-mix(in srgb,var(--primary-soft) 44%,var(--surface))}.pwa-notification-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary-text)}.pwa-notification-icon svg{width:17px;height:17px}.pwa-notification-copy{min-width:0;display:grid;gap:3px}.pwa-notification-copy b{font-size:12px;line-height:1.35}.pwa-notification-copy small{font-size:10.5px;line-height:1.45;color:var(--text-secondary)}.pwa-notification-copy em{margin-top:2px;font-size:9px;font-style:normal;color:var(--text-muted)}.pwa-notification>i{align-self:center;width:7px;height:7px;border-radius:50%;background:var(--primary)}.pwa-notification-empty{min-height:310px;display:grid;place-items:center;align-content:center;gap:7px;padding:28px;text-align:center;color:var(--text-muted)}.pwa-notification-empty svg{width:28px;height:28px;margin-bottom:4px}.pwa-notification-empty b{color:var(--text);font-size:14px}.pwa-notification-empty span{max-width:260px;font-size:11px;line-height:1.5}
.pwa-install-overlay{position:fixed;inset:0;z-index:1800;display:grid;place-items:center;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));box-sizing:border-box;background:rgba(18,24,31,.66);backdrop-filter:blur(12px);opacity:0;transition:opacity .2s ease}.pwa-install-overlay.show{opacity:1}.pwa-install-card{position:relative;width:min(500px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:30px;border:1px solid color-mix(in srgb,var(--primary) 18%,var(--border));border-radius:26px;background:var(--surface-raised);box-shadow:0 32px 100px rgba(18,24,31,.28);text-align:center}.pwa-install-close{position:absolute;top:14px;right:14px;width:40px;height:40px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);display:grid;place-items:center;cursor:pointer}.pwa-install-close svg{width:17px;height:17px}.pwa-install-brand{font-size:20px;font-weight:800;letter-spacing:-.04em;text-align:left}.pwa-install-brand span{color:var(--primary)}.pwa-install-icon{width:92px;height:92px;margin:28px auto 18px;padding:8px;border-radius:24px;background:var(--surface-muted);box-shadow:0 12px 34px rgba(18,24,31,.12)}.pwa-install-icon img{display:block;width:100%;height:100%;border-radius:19px}.pwa-install-kicker{display:inline-flex;padding:6px 9px;border-radius:999px;background:var(--primary-soft);color:var(--primary-text);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.pwa-install-card h2{margin:11px 0 7px;font-size:30px;letter-spacing:-.045em}.pwa-install-card>p{max-width:410px;margin:0 auto;color:var(--text-secondary);font-size:12px;line-height:1.65}.pwa-install-benefits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:22px 0}.pwa-install-benefits span{min-height:78px;display:grid;place-items:center;align-content:center;gap:7px;padding:10px;border:1px solid var(--border);border-radius:14px;background:var(--surface-muted);font-size:9.5px;font-weight:700;line-height:1.3}.pwa-install-benefits svg{width:18px;height:18px;color:var(--primary-text)}.pwa-ios-help{display:grid;gap:4px;margin:0 0 16px;padding:12px 14px;border:1px solid var(--border);border-radius:13px;background:var(--surface-muted);text-align:left}.pwa-ios-help b{font-size:11px}.pwa-ios-help span{font-size:10px;line-height:1.5;color:var(--text-secondary)}.pwa-install-actions{display:grid;grid-template-columns:1.5fr 1fr;gap:9px}.pwa-install-actions .btn{width:100%}
.pwa-settings-shell{display:grid;gap:12px}.pwa-app-card{display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:16px;align-items:center;padding:18px 20px;border:1px solid var(--border);border-radius:16px;background:linear-gradient(135deg,color-mix(in srgb,var(--primary-soft) 60%,var(--surface)),var(--surface))}.pwa-app-card-icon{width:64px;height:64px;padding:5px;border-radius:18px;background:var(--surface)}.pwa-app-card-icon img{width:100%;height:100%;border-radius:14px}.pwa-app-card h3{margin:3px 0 4px;font-size:17px}.pwa-app-card p{margin:0;color:var(--text-secondary);font-size:10.5px;line-height:1.5}.pwa-push-card,.pwa-preferences{overflow:hidden}.pwa-push-body{padding:16px}.pwa-push-actions{display:flex;gap:8px;flex-wrap:wrap}.pwa-permission-note{margin-top:12px;padding:10px 12px;border-radius:11px;background:var(--warning-soft);color:var(--warning-text);font-size:10px;line-height:1.5}.pwa-preferences form{display:grid}.pwa-preferences .c75-switch-row{margin:0;border-radius:0;border-width:0 0 1px}.pwa-preferences .c75-switch-row:last-of-type{border-bottom:0}.pwa-preference-save{padding:14px 16px}.pwa-target-record{outline:3px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:3px;animation:pwaTargetPulse .7s ease 2}@keyframes pwaTargetPulse{50%{transform:translateY(-2px);box-shadow:0 14px 34px rgba(18,24,31,.15)}}
@media(max-width:819px){.pwa-notification-drawer{top:0;right:0;bottom:0;width:100%;max-width:none;border-radius:0;border-block:0;border-right:0;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.pwa-install-card{padding:24px 18px 18px;border-radius:22px}.pwa-install-brand{font-size:18px}.pwa-install-icon{width:78px;height:78px;margin-top:22px}.pwa-install-card h2{font-size:26px}.pwa-install-benefits{grid-template-columns:1fr;gap:7px}.pwa-install-benefits span{min-height:48px;display:flex;justify-content:flex-start;padding-inline:14px;text-align:left}.pwa-install-actions{grid-template-columns:1fr}.pwa-app-card{grid-template-columns:58px minmax(0,1fr);padding:16px}.pwa-app-card-icon{width:54px;height:54px}.pwa-app-actions{grid-column:1/-1}.pwa-app-actions .btn{width:100%}.pwa-push-actions{display:grid;grid-template-columns:1fr}.pwa-push-actions .btn{width:100%}}
@media(prefers-reduced-motion:reduce){.pwa-notification-drawer,.pwa-drawer-backdrop,.pwa-install-overlay{transition:none}.pwa-target-record{animation:none}}

/* R20.3.9 — PWA device state polish */
.pwa-device-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--border);border-radius:11px;background:var(--surface-muted);font-size:10px;color:var(--text-secondary)}
.pwa-device-meta b{font-size:12px;color:var(--text)}
.demo-mode #pwaNotificationBtn{display:none!important}

.pwa-push-onboarding-icon{display:grid;place-items:center;background:var(--primary-soft);color:var(--primary-text)}.pwa-push-onboarding-icon svg{width:38px;height:38px}
.subscription-provider-note{display:block;margin-top:10px;color:var(--muted);font-size:12px}.client-sub-meta-v9 .text-btn{display:block;margin-top:6px}.renew-autorenew{margin:16px 0;padding:14px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--card) 80%,transparent)}.client-payment-row [data-client-refund]{justify-self:end}.payment-client-help a{font-weight:750;color:var(--accent)}

/* R20.6.1 — durable subscription-payment progress. */
.subscription-payment-progress-v9{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;margin:0 0 14px;padding:14px 15px;border:1px solid color-mix(in srgb,var(--primary) 32%,var(--border));border-radius:16px;background:color-mix(in srgb,var(--primary-soft) 72%,var(--surface));box-shadow:var(--shadow-xs)}
.subscription-payment-progress-v9 div{min-width:0;display:grid;gap:3px}.subscription-payment-progress-v9 b{font-size:13px;color:var(--text)}.subscription-payment-progress-v9 small{color:var(--text-muted);font-size:11.5px;line-height:1.45}
.subscription-payment-spinner-v9{width:18px;height:18px;border:2px solid color-mix(in srgb,var(--primary) 22%,transparent);border-top-color:var(--primary);border-radius:50%;animation:subscription-payment-spin .8s linear infinite}
@keyframes subscription-payment-spin{to{transform:rotate(360deg)}}
@media(max-width:620px){.subscription-payment-progress-v9{grid-template-columns:auto minmax(0,1fr)}.subscription-payment-progress-v9 .btn{grid-column:1/-1;width:100%}}
@media(prefers-reduced-motion:reduce){.subscription-payment-spinner-v9{animation:none;border-color:var(--primary)}}
@media(max-width:819px){.client-payment-row{grid-template-columns:minmax(0,1fr) auto!important}.client-payment-row time,.client-payment-row em,.client-payment-row [data-client-refund]{grid-column:auto}}

/* assets/design-system-v3/responsive.css */

/*
 * Passite Design System 3.0 — Canonical responsive contract.
 * This is the final product-UI geometry layer and is intentionally loaded last.
 * Mobile is a separate composition, not a scaled desktop.
 */

html,body{max-width:100%;overflow-x:clip}
body{min-width:0}
:where(.app,.workspace,.content,.view,.panel,.surface,.glass,.modal,.modal-card,.dialog,.list,.table-wrap,.analytics-shell,.commerce-panel,.account-content-v9,.contact-layout,.contact-list,.contact-card){min-width:0;max-width:100%}
:where(img,video,canvas,svg){max-width:100%}
:where(input,select,textarea){max-width:100%;min-width:0}
:where(.btn,.open-site,.today-action,.journal-mode,.text-btn,.text-action,.mini,button[data-ui="Button"]){box-sizing:border-box;min-width:0;max-width:100%;height:auto}
:where(.btn,.open-site,.today-action,button[data-ui="Button"]){align-items:center;justify-content:center;text-align:center}
:where(.btn svg,.open-site svg,.today-action svg,button[data-ui="Button"] svg){flex:0 0 auto}
:where(.icon-btn,.icon-action,.ghost-icon,.password-toggle,.sidebar-close,.mobile-menu){box-sizing:border-box;display:inline-grid;place-items:center;line-height:1;padding:0}
:where(.icon-btn svg,.icon-action svg,.ghost-icon svg,.password-toggle svg,.sidebar-close svg,.mobile-menu svg){margin:auto}

/* Tablet / compact desktop */
@media(max-width:1023px){
  :root{--ds-layout-page-gutter:20px;--ds-layout-section-gap:18px}
  .content{max-width:none;padding-inline:var(--ds-layout-page-gutter)}
  .ds-today-layout,.ds-owner-main-grid,.subscription-owner-grid-v9,.account-layout-v9{grid-template-columns:minmax(0,1fr)}
  .ds-today-side{grid-template-columns:repeat(2,minmax(0,1fr))}
  .contact-layout{grid-template-columns:minmax(0,1fr)}
  .contact-list{max-height:none}
  .contact-card{max-height:none}
  .analytics-breakdown-grid,.progress-grid,.payment-client-grid,.account-grid{grid-template-columns:minmax(0,1fr)}
  .file-toolbar{grid-template-columns:minmax(0,1fr)}
  .subscription-detail-v9{position:static}
}

@media(max-width:1100px){
  .mobile-menu.icon-btn,.sidebar-close{display:inline-grid}
}

/* Mobile / tablet portrait */
@media(max-width:819px){
  :root{--ds-layout-page-gutter:16px;--ds-layout-section-gap:16px;--ds-layout-topbar-height:64px}
  body{font-size:var(--ds-font-size-300)}
  .content{padding:16px max(16px,env(safe-area-inset-right)) calc(28px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
  .view{gap:16px}

  /* Header and navigation */
  .topbar{min-height:64px;grid-template-columns:44px minmax(0,1fr) auto;gap:8px;padding:8px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left))}
  .mobile-menu,.topbar .icon-btn,.profile-chip{width:44px;height:44px;min-width:44px;min-height:44px}
  .topbar-client-search,.global-search{display:none}
  .topbar-actions{min-width:0;gap:6px}
  .topbar-actions .open-site,.topbar-actions>.btn{display:none}
  .page-title{min-width:0}
  .page-title h1{font-size:18px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .page-title p{display:none}
  .page-context{font-size:9px}
  .sidebar{inset:0;width:100vw;max-width:none;height:100dvh;max-height:100dvh;padding:max(14px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));border-right:0;transform:translateX(-101%);box-shadow:none}
  .sidebar.open{transform:translateX(0)}
  .sidebar-scrim,.sidebar-scrim.open{display:none}
  .sidebar-close{top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));width:44px;height:44px;min-width:44px;min-height:44px}
  .sidebar-head{min-height:52px;padding-right:54px}
  .nav-item{min-height:44px;font-size:13px}

  /* Cards / panel headers */
  .panel,.surface,.glass{max-width:100%}
  .panel-head{min-height:0;padding:14px;gap:12px;flex-wrap:wrap}
  .panel-head>div{min-width:0;max-width:100%}
  .panel-head h3{font-size:16px;line-height:1.25}
  .panel-head p,.panel-note{white-space:normal;overflow:visible;text-overflow:clip}
  .panel-head.tools{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}
  .panel-head.tools .tool-row{display:flex;width:100%;max-width:100%;gap:8px;overflow:visible;flex-wrap:wrap;padding:2px 0}
  .panel-head.tools .tool-row>*{flex:1 1 160px;width:auto;min-width:0;max-width:100%;white-space:normal}
  .panel-head.tools .tool-row>:where(.icon-btn,.ghost-icon,.icon-action){flex:0 0 44px;width:44px;min-width:44px;max-width:44px}

  /* Buttons: text must stay inside its own frame. */
  :where(.btn,.open-site,.today-action,.text-btn,.text-action,.mini,button[data-ui="Button"],button:not([class])){
    min-height:44px;height:auto;max-width:100%;padding:8px 13px;line-height:1.2;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word;word-break:normal
  }
  :where(.btn,.open-site,.today-action,button[data-ui="Button"],button:not([class])){display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;text-align:center}
  :where(.btn.compact,.mini){min-height:40px}
  :where(.tool-row,.commerce-tabs,.account-nav-v9,.journal-resource-switch,.journal-mode-switch) :where(.btn,.ui-tab,button){white-space:nowrap;overflow-wrap:normal;word-break:normal;max-width:none}
  :where(.modal-actions,.contact-card-actions,.demo-banner-actions,.today-actions,.site-link-actions,.brief-actions,.prompt-actions,.payment-client-actions,.publish-footer,.client-sub-actions-v9,.subscription-detail-actions-v9){min-width:0;max-width:100%;flex-wrap:wrap}

  /* KPI/data grids */
  .today-kpis,.ds-owner-kpis,.commerce-metrics,.owner-commerce-metrics,.overview-metrics,.stats,.crm-report-kpis,.subscription-kpis-v9,.analytics-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .today-kpi,.ds-owner-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi{min-width:0;min-height:92px;padding:13px}
  :where(.today-kpi,.ds-owner-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi) strong{overflow-wrap:anywhere;word-break:normal;white-space:normal}
  #view-contacts .commerce-metrics #contactMetricRevenue{font-size:clamp(12px,3.8vw,21px);letter-spacing:-.045em;white-space:nowrap;overflow-wrap:normal;word-break:normal}

  /* Today */
  .ds-today-welcome{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:12px}
  .ds-today-welcome h2{font-size:27px}
  .ds-today-welcome .today-actions{width:100%;justify-content:flex-start}
  .ds-today-layout{grid-template-columns:minmax(0,1fr);gap:12px}
  .ds-today-side{grid-template-columns:minmax(0,1fr);height:auto}
  .ds-today-primary{height:auto;min-height:0}
  .today-upcoming-head{grid-template-columns:54px minmax(0,1fr);padding-inline:12px}
  .today-upcoming-head>span:last-child{display:none}
  .today-upcoming-row{grid-template-columns:54px minmax(0,1fr);padding:10px 12px;gap:8px}
  .today-upcoming-row>.today-badge{grid-column:2;justify-self:start}
  .ds-site-quick{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ds-site-quick .quick-action{min-height:84px;min-width:0}
  .ds-site-quick .quick-action:last-child{grid-column:1/-1}
  .ds-site-card .site-link-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .ds-site-card .site-link-actions .btn{width:100%;max-width:none;min-height:44px}

  /* Contacts */
  .contact-toolbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;padding:0 14px 14px}
  .contact-toolbar>.field-search{grid-column:1/-1}
  .contact-toolbar :where(input,select){width:100%}
  .contact-layout{display:block;min-height:0}
  .contact-list{min-height:0;border-right:0;border-bottom:0;max-height:none;overflow:visible}
  .contact-row{grid-template-columns:minmax(0,1fr) 36px;gap:10px;padding:12px 14px}
  .contact-person{width:100%;display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:10px}
  .contact-avatar{width:40px;height:40px;min-width:40px}
  .contact-row-copy{display:block;min-width:0}
  .contact-row-copy b,.contact-row-copy small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .contact-stats,.contact-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}

  /* Journal */
  #view-journal .panel-head.tools .tool-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;overflow:visible}
  #view-journal .panel-head.tools .tool-row>*{width:100%;min-width:0;max-width:none;white-space:normal}
  #view-journal .journal-bar{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:12px 14px}
  #view-journal .journal-nav{display:grid;grid-template-columns:minmax(0,1fr) 44px 44px auto;gap:7px;width:100%}
  #view-journal .journal-nav input[type=date]{width:100%;min-width:0}
  #view-journal .journal-nav #journalToday{width:auto;max-width:none;white-space:nowrap}
  #view-journal .journal-mode-switch{grid-column:1/-1;width:100%;display:grid;grid-template-columns:1fr 1fr}
  #view-journal .journal-mode{width:100%;min-height:40px}
  #view-journal .journal-resource-switch{width:100%;display:flex;gap:6px;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;padding-bottom:2px}
  #view-journal .journal-category-switch{width:100%;display:flex;gap:6px;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;padding-bottom:2px}
  #view-journal .journal-resource-switch::-webkit-scrollbar,#view-journal .journal-category-switch::-webkit-scrollbar{display:none}
  #view-journal .journal-filter-groups{grid-template-columns:minmax(0,1fr);gap:10px}
  #view-journal .journal-chip{flex:0 0 auto;min-height:40px;white-space:nowrap}
  #view-journal .journal-body{padding:0 14px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch}
  #view-journal .journal-grid{min-width:max-content;max-width:none}
  #view-journal .journal-column{min-width:min(74vw,260px);flex:0 0 min(74vw,260px)}
  #view-journal .journal-axis{width:50px}
  #view-journal .journal-week{grid-template-columns:minmax(0,1fr);gap:8px}
  #view-journal .journal-week-day{min-height:120px}

  /* Commerce / tabs */
  .commerce-tabs,.account-nav-v9{display:flex;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .commerce-tabs::-webkit-scrollbar,.account-nav-v9::-webkit-scrollbar{display:none}
  .commerce-tabs .ui-tab,.account-nav-v9 button{flex:0 0 auto;width:auto;min-height:44px;white-space:nowrap}
  .c75-catalog-row,.p75-catalog-row{grid-template-columns:56px minmax(0,1fr);gap:10px;padding:12px}
  .c75-catalog-price,.p75-catalog-price{grid-column:2;text-align:left}
  .c75-row-actions,.p75-row-actions{grid-column:1/-1;justify-content:flex-start;flex-wrap:wrap}
  .c75-transaction,.p75-transaction{grid-template-columns:minmax(0,1fr);padding:12px}
  .c75-transaction-side,.p75-transaction-side{grid-column:auto;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;text-align:left}

  /* Files */
  .file-toolbar{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;padding:12px 14px}
  .folder-nav{width:100%;overflow-x:auto;flex-wrap:nowrap}
  .file-tools{display:grid;grid-template-columns:minmax(0,1fr);width:100%;gap:8px}
  .file-mode,.search-file,.file-tools select{grid-column:auto;width:100%;max-width:none}
  .file-mode{display:grid;grid-template-columns:1fr 1fr}
  .file-mode button{width:100%}
  .file-table-head{display:none}
  .file-row{grid-template-columns:32px minmax(0,1fr);gap:8px;padding:12px 14px}
  .file-row>.file-cell{min-width:0}
  .file-actions{grid-column:1/-1;justify-content:flex-start;flex-wrap:wrap}

  /* Forms */
  .field-grid,.field-grid.two,.modal-grid,.c75-form-grid,.c75-form-grid.two,.c75-form-grid.four,.p75-form-grid,.p75-form-grid.two,.p75-form-grid.four,.payment-client-fields,.payment-config-grid,.crm-settings-grid,.appointment-grid,.appointment-edit,.mfa-setup-grid,.mail-settings-form .modal-grid,.renew-plans-v9{grid-template-columns:minmax(0,1fr)}
  .span-2{grid-column:auto}
  .section-title{display:grid;grid-template-columns:minmax(0,1fr);gap:4px}
  .section-title>span{text-align:left;max-width:none}
  .brief-main-grid,.brief-choice-row,.brief-industry-grid,.brief-module-grid,.brief-feature-grid,.brief-payment-types,.toggle-stack{grid-template-columns:minmax(0,1fr)}

  /* Owner lists */
  .lead-head,.site-head,.client-head,.subscription-head-row-v9{display:none}
  .lead-row,.site-row,.p75-client-card{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:13px 14px}
  .lead-row>*,.site-row>*,.p75-client-card>*{min-width:0;white-space:normal;overflow:visible;text-overflow:clip}
  .lead-row-actions,.site-actions,.p75-client-actions{grid-column:auto;justify-content:flex-start;flex-wrap:wrap}
  .subscription-row-v9{grid-template-columns:minmax(0,1fr) auto 32px;gap:8px;padding:13px 14px}
  .subscription-row-v9>*:nth-child(3),.subscription-row-v9>*:nth-child(4){display:none}
  .subscription-detail-actions-v9{grid-template-columns:minmax(0,1fr)}
  .log-group{grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:14px}
  .log-group-main{grid-template-columns:auto minmax(0,1fr);gap:10px}
  .log-status{align-self:start;justify-self:end}

  /* Overlays */
  .modal-wrap,.modal-backdrop{padding:0;place-items:stretch}
  :where(.modal,.modal-card,.dialog,.appointment-modal){width:100%;max-width:none;max-height:100dvh;min-height:0;border-radius:0;margin:0}
  :where(.modal-body,.modal-content){max-height:none;overflow:auto;overscroll-behavior:contain;padding-bottom:max(16px,env(safe-area-inset-bottom))}
  .modal-close,.dialog-close{width:44px;height:44px;min-width:44px;min-height:44px}
  .toasts{left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));width:auto}
}

/* Compact phones */
@media(max-width:479px){
  :root{--ds-layout-page-gutter:12px;--ds-layout-section-gap:14px}
  .content{padding-inline:max(12px,env(safe-area-inset-left)) max(12px,env(safe-area-inset-right))}
  .topbar{padding-inline:max(10px,env(safe-area-inset-left)) max(10px,env(safe-area-inset-right))}
  .page-title h1{font-size:17px}
  .panel-head{padding:12px}
  .panel-head h3{font-size:15px}
  .today-kpis,.ds-owner-kpis,.commerce-metrics,.owner-commerce-metrics,.overview-metrics,.stats,.crm-report-kpis,.subscription-kpis-v9,.analytics-kpis{grid-template-columns:minmax(0,1fr)}
  .today-kpi,.ds-owner-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi{min-height:82px}
  .contact-toolbar{grid-template-columns:minmax(0,1fr)}
  .contact-toolbar>.field-search{grid-column:auto}
  .contact-stats,.contact-profile-grid{grid-template-columns:minmax(0,1fr)}
  .ds-site-card .site-link-actions{grid-template-columns:minmax(0,1fr)}
  .demo-banner-actions,.contact-card-actions,.modal-actions,.payment-client-actions,.client-sub-actions-v9,.brief-actions,.prompt-actions,.publish-footer{display:grid;grid-template-columns:minmax(0,1fr);width:100%}
  .demo-banner-actions>:where(.btn,a.btn,button),.contact-card-actions>:where(.btn,a.btn,button),.modal-actions>:where(.btn,a.btn,button),.payment-client-actions>:where(.btn,a.btn,button),.client-sub-actions-v9>:where(.btn,a.btn,button),.brief-actions>:where(.btn,a.btn,button),.prompt-actions>:where(.btn,a.btn,button),.publish-footer>:where(.btn,a.btn,button){width:100%;max-width:none}
  .panel-head.tools .tool-row{display:grid;grid-template-columns:minmax(0,1fr);overflow:visible}
  .panel-head.tools .tool-row>*{width:100%;min-width:0;max-width:100%;white-space:normal}
  .panel-head.tools .tool-row>:where(.icon-btn,.ghost-icon,.icon-action){width:44px;max-width:44px;justify-self:start}
  #view-journal .panel-head.tools .tool-row .btn{width:100%;max-width:none;white-space:normal}
  .account-tabs-v11 button{min-width:max-content;padding-inline:12px}
}

/* Very small screens must still be usable. */
@media(max-width:359px){
  .content{padding-inline:10px}
  .topbar{grid-template-columns:40px minmax(0,1fr) 40px;padding-inline:8px}
  .mobile-menu,.profile-chip{width:40px;height:40px;min-width:40px;min-height:40px}
  .page-context{display:none}
}

@media(orientation:landscape) and (max-height:520px) and (max-width:1023px){
  .sidebar{overflow-y:auto}
  :where(.modal,.modal-card,.dialog,.appointment-modal){min-height:100dvh}
}

@media(prefers-reduced-motion:reduce){
  .sidebar,.contact-card,.modal,.modal-card,.dialog{transition:none;animation:none}
}

/* DS3 mobile application shell: one full-screen menu opened from the top bar. */
@media(max-width:819px){
  body.nav-open,body.modal-open,body.subscription-detail-open,body.contact-detail-open{overflow:hidden}
  body.contact-detail-open #view-contacts{position:fixed;z-index:var(--ds-z-modal);inset:0;width:100vw;height:100dvh;margin:0;padding:0;overflow:hidden;animation:none;transform:none}
  body.contact-detail-open #view-contacts>.panel{position:absolute;inset:0;width:100%;height:100%;margin:0;border:0;border-radius:0;background:var(--ds3-canvas);box-shadow:none;backdrop-filter:none;overflow:hidden}
  body.contact-detail-open #view-contacts .contact-card.mobile-open{position:absolute;inset:0;width:100%;max-width:none;min-height:100%;height:100%;max-height:none;border:0;border-radius:0}

  .segmented,.commerce-tabs,.journal-mode-switch,.account-nav-v9{display:flex;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:none;white-space:nowrap;flex-wrap:nowrap}
  .segmented::-webkit-scrollbar,.commerce-tabs::-webkit-scrollbar,.journal-mode-switch::-webkit-scrollbar,.account-nav-v9::-webkit-scrollbar{display:none}
  .segmented button,.commerce-tabs .ui-tab,.journal-mode-switch button,.account-nav-v9 button{flex:0 0 auto;width:auto;min-width:max-content;max-width:none;white-space:nowrap;scroll-snap-align:start}
  .modal,.dialog,.modal-card{max-height:calc(100dvh - 16px)}
  .modal-actions{padding-bottom:max(12px,env(safe-area-inset-bottom))}
  :where(.modal-grid,.c75-form-grid,.p75-form-grid,.appointment-edit,.profile-grid-v9,.subscription-tools-v9){grid-template-columns:minmax(0,1fr)}

  .panel.subscription-detail-v9{position:fixed;z-index:calc(var(--ds-z-modal) - 2);inset:0;display:block;width:100%;max-width:none;height:100dvh;min-height:100dvh;max-height:100dvh;align-self:stretch;padding:0;border:0;border-radius:0;background:var(--ds3-canvas);box-shadow:none;overflow:auto;overscroll-behavior:contain;translate:100% 0;visibility:hidden;transition:translate var(--ds3-normal) var(--ds3-ease),visibility 0s linear var(--ds3-normal)}
  body.subscription-detail-open #view-subscriptions{position:relative;z-index:calc(var(--ds-z-modal) - 3);animation:none}
  body.subscription-detail-open .topbar{visibility:hidden;pointer-events:none}
  body.subscription-detail-open .panel.subscription-detail-v9{translate:0;visibility:visible;transition:translate var(--ds3-normal) var(--ds3-ease)}
  .subscription-mobile-back{position:sticky;z-index:2;top:0;width:100%;min-height:56px;display:flex;align-items:center;gap:10px;padding:max(8px,env(safe-area-inset-top)) 16px 8px;border:0;border-bottom:1px solid var(--ds3-line);background:color-mix(in srgb,var(--ds3-surface-strong) 94%,transparent);color:var(--ds3-ink);font-size:13px;font-weight:650;backdrop-filter:blur(18px)}
  .subscription-mobile-back svg{width:18px;height:18px}
  .subscription-detail-top-v9,.subscription-detail-actions-v9,.subscription-detail-history-v9{margin-inline:14px}
  .subscription-detail-history-v9{padding-bottom:calc(24px + env(safe-area-inset-bottom))}
}

@media(min-width:820px){.subscription-mobile-back{display:none}}

@media(max-width:389px){.content{padding-inline:max(12px,env(safe-area-inset-left)) max(12px,env(safe-area-inset-right))}}

/* R16 CRM responsive refinements */
@media(max-width:1100px){#view-contacts .commerce-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:819px){
  #view-journal .journal-mode-switch{grid-template-columns:repeat(3,minmax(0,1fr))}
  #view-journal .journal-month{min-width:720px}
  #view-journal .journal-month-day{min-height:126px}
  #view-contacts .commerce-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  #view-contacts .commerce-metrics>.surface{min-height:82px;padding:12px 13px}
}
@media(max-width:420px){#view-journal .journal-month{min-width:660px}}

/* R17 calendar and CRM preset responsive rules */
@media(max-width:1199px){#view-journal .journal-year-grid{grid-template-columns:repeat(3,minmax(0,1fr))}#view-journal .journal-quarter-grid{grid-template-columns:minmax(0,1fr)}#view-journal .journal-range-months{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:819px){#view-journal .journal-range-picker{grid-column:1/-1;width:100%;display:grid;grid-template-columns:1fr 1fr auto;margin-left:0}#view-journal .journal-range-picker.hidden{display:none}#view-journal .journal-range-picker label{min-width:0}#view-journal .journal-range-picker input[type=date]{width:100%;min-width:0}#view-journal .journal-period-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}#view-journal .journal-year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.crm-preset-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:479px){#view-journal .journal-range-picker{grid-template-columns:1fr 1fr}#view-journal .journal-range-picker .btn{grid-column:1/-1;width:100%}#view-journal .journal-period-kpis{grid-template-columns:1fr 1fr;gap:7px}#view-journal .journal-period-kpis article{padding:10px}#view-journal .journal-period-kpis strong{font-size:16px}#view-journal .journal-year-grid,#view-journal .journal-range-months{grid-template-columns:1fr}#view-journal .journal-range-row{grid-template-columns:minmax(0,1fr) auto 16px;gap:7px}.crm-preset-preview-head{display:grid}.crm-preset-stats{grid-template-columns:1fr 1fr}.crm-preset-quick{overflow-x:auto;flex-wrap:nowrap}.crm-preset-quick .btn{flex:0 0 auto}}

/* R20.3 mobile calendar polish: month becomes a compact overview; day is a
   deliberate touch-scroll viewport instead of a desktop canvas clipped by the browser UI. */
@media(max-width:819px){
  #view-journal[data-journal-view="month"] .journal-body{overflow:visible;padding:0 12px 14px}
  #view-journal[data-journal-view="month"] .journal-month-scroll{max-width:none;overflow:visible}
  #view-journal[data-journal-view="month"] .journal-month{width:100%;min-width:0;border-radius:13px}
  #view-journal[data-journal-view="month"] .journal-month-weekdays span{padding:7px 1px;font-size:9px;letter-spacing:.02em}
  #view-journal[data-journal-view="month"] .journal-month-day{min-height:54px}
  #view-journal[data-journal-view="month"] .journal-month-day>header{height:100%;padding:0}
  #view-journal[data-journal-view="month"] .journal-month-day>header button{position:relative;display:grid;place-items:center;width:100%;min-height:54px;padding:5px 2px}
  #view-journal[data-journal-view="month"] .journal-month-day>header b{font-size:13px;line-height:1}
  #view-journal[data-journal-view="month"] .journal-month-day>header span{position:absolute;right:4px;top:4px;display:grid;place-items:center;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--primary-soft);color:var(--primary-text);font-size:8px;font-weight:850;line-height:1}
  #view-journal[data-journal-view="month"] .journal-month-list{display:none}
  #view-journal[data-journal-view="month"] .journal-month-day.is-today{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--primary) 68%,transparent)}

  #view-journal[data-journal-view="day"] .journal-body{max-height:min(64dvh,650px);min-height:390px;overflow:auto;padding:0 12px max(18px,env(safe-area-inset-bottom));overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;scrollbar-gutter:stable}
  #view-journal[data-journal-view="day"] .journal-grid{overflow:visible}
  #view-journal[data-journal-view="day"] .journal-axis{position:sticky;left:0;z-index:6;background:var(--surface-muted);box-shadow:1px 0 0 var(--border)}
  #view-journal[data-journal-view="day"] .journal-column-head{position:sticky;top:0;z-index:5;background:var(--surface-muted);box-shadow:0 1px 0 var(--border)}
  #view-journal[data-journal-view="day"] .journal-booking{touch-action:pan-y}
}
@media(max-width:420px){
  #view-journal[data-journal-view="month"] .journal-month{min-width:0}
  #view-journal[data-journal-view="month"] .journal-month-day{min-height:50px}
  #view-journal[data-journal-view="month"] .journal-month-day>header button{min-height:50px}
  #view-journal[data-journal-view="day"] .journal-body{max-height:62dvh;min-height:360px;padding-inline:8px}
  #view-journal[data-journal-view="day"] .journal-column{min-width:min(78vw,280px);flex-basis:min(78vw,280px)}
}

/* R20.3.2 — iOS/phone input zoom guard.
   Keep editable text at the Safari 16px threshold instead of disabling user zoom. */
@media(max-width:819px){
  :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea,[contenteditable="true"]){font-size:16px!important}
}

/* R20.3.3 — mobile keyboard / navigation stability */
@media(max-width:819px){
  :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select,[contenteditable="true"]){scroll-margin-top:84px;scroll-margin-bottom:calc(92px + env(safe-area-inset-bottom))}
  body.keyboard-open :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select,[contenteditable="true"]){scroll-margin-bottom:124px}
  body.keyboard-open .modal-wrap{top:var(--passite-visual-top,0);right:0;bottom:auto;left:0;height:var(--passite-visual-height,100dvh);min-height:0;overflow:hidden}
  body.keyboard-open :where(.modal,.modal-card,.dialog,.appointment-modal){max-height:var(--passite-visual-height,100dvh);min-height:0}
  body.keyboard-open :where(.modal-body,.modal-content){max-height:calc(var(--passite-visual-height,100dvh) - 58px);overflow:auto;-webkit-overflow-scrolling:touch}
  body.keyboard-open .modal-actions{position:sticky;z-index:3;bottom:0;background:var(--surface-muted);padding-bottom:max(12px,env(safe-area-inset-bottom))}
  body.keyboard-open .auth{min-height:var(--passite-visual-height,100dvh)}
  .draft-toast{align-items:flex-start;flex-wrap:wrap}
  .draft-toast-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}
  .draft-toast-actions button{min-height:40px}
}

/* R20.3.4 — compact mobile section/filter switcher.
   Multi-choice tab/filter rows stay visible on desktop and collapse to one
   native mobile control. Existing source buttons remain the single logic path. */
.mobile-section-switcher{display:none;min-width:0}
@media(max-width:819px){
  [data-mobile-switcher][data-mobile-switcher-ready="1"]{display:none!important}
  .mobile-section-switcher{display:grid;width:100%;min-width:0;gap:6px;margin:0;padding:9px 11px;border-bottom:1px solid var(--border);background:var(--surface-muted)}
  .mobile-section-switcher[hidden]{display:none!important}
  .mobile-section-switcher-label{display:block;color:var(--text-muted);font-size:10px;font-weight:800;line-height:1.2;letter-spacing:.055em;text-transform:uppercase}
  .mobile-section-switcher-field{position:relative;display:flex;align-items:center;width:100%;min-width:0}
  .mobile-section-switcher-field select{appearance:none;-webkit-appearance:none;width:100%;min-width:0;min-height:46px;margin:0;padding:0 44px 0 42px;border:1px solid var(--border);border-radius:13px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs);font-size:16px!important;font-weight:750;line-height:1.2;letter-spacing:-.012em;outline:none;cursor:pointer}
  .mobile-section-switcher-field select:focus-visible{border-color:color-mix(in srgb,var(--primary) 50%,var(--border));box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent),var(--shadow-xs)}
  .mobile-section-switcher-field>svg{position:absolute;top:50%;translate:0 -50%;width:17px;height:17px;pointer-events:none}
  .mobile-section-switcher-icon{left:14px;color:var(--primary-text)}
  .mobile-section-switcher-chevron{right:14px;color:var(--text-muted)}

  /* Calendar controls already live inside padded filter groups; avoid a second card frame. */
  #view-journal .journal-nav>.mobile-section-switcher{grid-column:1/-1;padding:0;border:0;background:transparent}
  #view-journal .journal-filter-group>.mobile-section-switcher{padding:0;border:0;background:transparent}
  #view-journal .journal-filter-group>.mobile-section-switcher .mobile-section-switcher-label{display:none}

  /* Account hub keeps its compact card geometry while replacing the horizontal tabs. */
  .account-hub-v11>.mobile-section-switcher{padding:10px;border-top:1px solid var(--border);border-bottom:0;background:transparent}

  /* Ticket and commerce shells use one clean separator instead of a multi-row tab grid. */
  .client-ticket-sidebar>.mobile-section-switcher,.ticket-sidebar>.mobile-section-switcher,
  .commerce-panel>.mobile-section-switcher,#view-commerce>.panel>.mobile-section-switcher{padding:9px 11px}
}

/* R20.3.6 — mobile switcher spacing and calendar controls cleanup */
@media(max-width:819px){
  .mobile-section-switcher-field select{min-height:48px;padding:0 48px 0 50px;font-size:15px!important;font-weight:700;line-height:1.25}
  .mobile-section-switcher-field>svg{width:16px;height:16px}
  .mobile-section-switcher-icon{left:17px}
  .mobile-section-switcher-chevron{right:16px}
  #view-journal .journal-date-nav{display:grid;grid-template-columns:40px minmax(0,1fr) 40px;grid-template-areas:"prev date next" "today today today";gap:8px;align-items:center}
  #view-journal #journalPrev{grid-area:prev}
  #view-journal .journal-date-field{grid-area:date;min-width:0}
  #view-journal #journalNext{grid-area:next}
  #view-journal #journalToday{grid-area:today;width:100%;justify-content:center}
}

/* R20.3.8 — screenshot-driven mobile corrections. This is intentionally the final cascade layer. */
@media(max-width:819px){
  /* Mobile section/filter selects: no decorative icon under the text. One clear chevron only. */
  [data-mobile-switcher][data-mobile-switcher-ready="1"]{display:none!important}
  [data-mobile-switcher][data-mobile-switcher-ready="1"][data-mobile-switcher-single="1"]{display:flex!important}
  .mobile-section-switcher-field{position:relative;min-width:0}
  .mobile-section-switcher-icon{display:none!important}
  .mobile-section-switcher-field select{box-sizing:border-box;width:100%;min-width:0;min-height:46px;padding:0 42px 0 14px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px!important;font-weight:650;line-height:1.25}
  .mobile-section-switcher-chevron{right:14px!important;width:16px!important;height:16px!important}

  /* Calendar navigation is two deliberate rows, never four controls fighting for one line. */
  #view-journal .journal-date-nav{width:100%;display:grid!important;grid-template-columns:42px minmax(0,1fr) 42px!important;grid-template-areas:"prev date next" "today today today"!important;gap:8px!important;align-items:center}
  #view-journal #journalPrev{grid-area:prev;width:42px;height:42px}
  #view-journal .journal-date-field{grid-area:date;position:relative;display:block;min-width:0;width:100%}
  #view-journal .journal-date-field input{box-sizing:border-box;width:100%!important;height:42px;min-height:42px;padding:0 42px 0 12px!important;text-align:left}
  #view-journal .journal-date-field input::-webkit-calendar-picker-indicator{position:absolute;right:10px;width:18px;height:18px;margin:0;opacity:.7}
  #view-journal #journalNext{grid-area:next;width:42px;height:42px}
  #view-journal #journalToday{grid-area:today;width:100%!important;min-height:40px;justify-content:center}
  #view-journal .journal-nav{grid-template-columns:1fr!important;gap:9px!important}
  #view-journal .journal-filter-groups{gap:10px}
  #view-journal .journal-filter-group{min-width:0}

  /* Client 360: identity first, actions below, metrics are readable 2x2 cards. */
  #view-contacts .contact-card{overflow:visible}
  #view-contacts .contact-card-head{position:sticky;top:0;z-index:3;display:grid!important;grid-template-columns:44px minmax(0,1fr)!important;grid-template-rows:auto auto;gap:10px 12px!important;padding:calc(12px + env(safe-area-inset-top)) 14px 14px!important;background:color-mix(in srgb,var(--surface) 96%,transparent)}
  #view-contacts .contact-mobile-back{grid-column:1;grid-row:1;align-self:start}
  #view-contacts .contact-card-identity{grid-column:2;grid-row:1;display:grid!important;grid-template-columns:48px minmax(0,1fr)!important;gap:10px!important;align-items:start;min-width:0}
  #view-contacts .contact-card-avatar{width:48px;height:48px;min-width:48px;border-radius:14px}
  #view-contacts .contact-card-identity>div{min-width:0}
  #view-contacts .contact-card-head h3{margin:0;font-size:18px!important;line-height:1.08!important;overflow-wrap:anywhere;white-space:normal}
  #view-contacts .contact-card-meta{margin:4px 0 0;font-size:10px!important;line-height:1.45!important;overflow-wrap:anywhere;white-space:normal}
  #view-contacts .contact-card-segment{margin-top:8px}
  #view-contacts .contact-card-actions{grid-column:1/-1;grid-row:2;display:grid!important;grid-template-columns:repeat(auto-fit,minmax(92px,1fr))!important;gap:8px!important;width:100%;margin:0}
  #view-contacts .contact-card-actions .btn{box-sizing:border-box;width:100%!important;min-width:0;min-height:40px!important;padding:0 10px!important;justify-content:center;font-size:10.5px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #view-contacts .contact-stats{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;padding:12px 14px!important;border:0!important;background:var(--surface-muted)}
  #view-contacts .contact-stats article{box-sizing:border-box;min-width:0;min-height:88px!important;display:flex!important;flex-direction:column;justify-content:space-between;padding:12px!important;border:1px solid var(--border)!important;border-radius:12px!important;background:var(--surface)!important;box-shadow:var(--shadow-xs)}
  #view-contacts .contact-stats article:nth-child(n){border-right:1px solid var(--border)!important;border-bottom:1px solid var(--border)!important}
  #view-contacts .contact-stats span{font-size:9.5px!important;line-height:1.35;color:var(--text-muted)}
  #view-contacts .contact-stats strong{font-size:19px!important;line-height:1.05;white-space:normal!important}

  /* Modal actions belong to the modal; no negative-margin footer that drifts left. */
  .modal-wrap{box-sizing:border-box;padding:10px!important;display:grid;place-items:center}
  .modal{box-sizing:border-box;width:min(430px,100%)!important;max-width:100%;margin:auto;overflow:hidden}
  .modal-body{box-sizing:border-box;width:100%;padding:14px!important}
  .confirm-ui{box-sizing:border-box;width:100%;display:grid;gap:0}
  .modal-actions,.confirm-ui .modal-actions{box-sizing:border-box;position:static;margin:14px 0 0!important;padding:0!important;border:0!important;background:transparent!important;width:100%!important;display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:9px!important}
  .modal-actions>:where(.btn,a.btn,button),.confirm-ui .modal-actions>:where(.btn,a.btn,button){box-sizing:border-box;width:100%!important;max-width:none;min-height:42px;margin:0!important}
}

@media(max-width:560px){
  #view-contacts .contact-card-head{grid-template-columns:40px minmax(0,1fr)!important;gap:9px 10px!important;padding-inline:12px!important}
  #view-contacts .contact-mobile-back{width:40px;height:40px;min-width:40px}
  #view-contacts .contact-card-identity{grid-template-columns:44px minmax(0,1fr)!important}
  #view-contacts .contact-card-avatar{width:44px;height:44px;min-width:44px}
  #view-contacts .contact-card-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  #view-contacts .contact-card-actions .btn{padding-inline:6px!important;font-size:10px!important}
}

/* R20.3.8.3 — client card action row final layout */
#view-contacts .contact-card-avatar{display:none!important}
#view-contacts .contact-card-identity{grid-template-columns:minmax(0,1fr)!important;gap:0!important}
#view-contacts .contact-card-titlebar{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:12px!important;align-items:start}
#view-contacts .contact-card-titlebar h3{min-width:0;overflow-wrap:anywhere;word-break:normal}
#view-contacts .contact-card-actions{display:flex!important;align-items:center;justify-content:flex-end;gap:8px!important;min-width:max-content;width:auto;flex-wrap:nowrap!important}
#view-contacts .contact-card-actions > *{flex:0 0 auto}
#view-contacts .contact-card-actions .contact-action-icon{width:40px!important;min-width:40px!important;height:40px!important;min-height:40px!important}
#view-contacts .contact-card-actions .contact-edit-btn{min-width:120px;min-height:40px!important;padding-inline:16px!important}
@media(max-width:760px){
  #view-contacts .contact-card-head{padding:14px 14px 12px!important}
  #view-contacts .contact-card-titlebar{grid-template-columns:minmax(0,1fr)!important;gap:10px!important}
  #view-contacts .contact-card-actions{display:grid!important;grid-template-columns:40px 40px minmax(0,1fr)!important;justify-content:stretch!important;align-items:center;width:100%!important;min-width:0;gap:8px!important}
  #view-contacts .contact-card-actions > *{width:100%!important}
  #view-contacts .contact-card-actions .contact-action-icon{width:40px!important;min-width:40px!important;height:40px!important;min-height:40px!important}
  #view-contacts .contact-card-actions .contact-edit-btn{min-width:0;min-height:40px!important;padding-inline:12px!important}
  #view-contacts .contact-card-meta{margin-top:2px}
}

/* R20.3.8.4 — client card no-avatar single action row */
@media(max-width:760px){
  #view-contacts .contact-card-avatar{display:none!important}
  #view-contacts .contact-card-identity{display:block!important}
  #view-contacts .contact-card-identity>div{display:grid;gap:8px;min-width:0}
  #view-contacts .contact-card-titlebar{display:block!important}
  #view-contacts .contact-card-titlebar h3{display:block;margin:0 0 8px!important;font-size:18px!important;line-height:1.14!important;overflow-wrap:anywhere}
  #view-contacts .contact-card-actions{display:grid!important;grid-template-columns:40px 40px minmax(0,1fr)!important;grid-auto-rows:40px!important;align-items:center!important;justify-content:stretch!important;gap:8px!important;width:100%!important;min-width:0!important;max-width:100%!important;flex-wrap:nowrap!important;margin:0!important}
  #view-contacts .contact-card-actions > *{width:100%!important;min-width:0!important}
  #view-contacts .contact-card-actions .contact-action-icon{display:grid!important;place-items:center;width:40px!important;min-width:40px!important;height:40px!important;min-height:40px!important;padding:0!important}
  #view-contacts .contact-card-actions .contact-edit-btn{display:inline-flex!important;align-items:center;justify-content:center;min-width:0!important;height:40px!important;min-height:40px!important;padding:0 12px!important;white-space:nowrap}
}
@media(min-width:761px){
  #view-contacts .contact-card-avatar{display:none!important}
  #view-contacts .contact-card-identity{grid-template-columns:minmax(0,1fr)!important}
  #view-contacts .contact-card-titlebar{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:start!important;gap:14px!important}
  #view-contacts .contact-card-titlebar h3{margin:0!important;min-width:0;overflow-wrap:anywhere}
  #view-contacts .contact-card-actions{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:8px!important;flex-wrap:nowrap!important;min-width:max-content!important;width:auto!important}
  #view-contacts .contact-card-actions .contact-action-icon{display:grid!important;place-items:center;width:40px!important;min-width:40px!important;height:40px!important;min-height:40px!important;padding:0!important}
  #view-contacts .contact-card-actions .contact-edit-btn{height:40px!important;min-height:40px!important;padding:0 16px!important;white-space:nowrap}
}

/* R20.3.9 PWA: notification center remains reachable on every phone width. */
@media(max-width:420px){.topbar-actions .pwa-topbar-bell{display:inline-grid!important}}

/* R20.3.9 — keep the notification center reachable on phone layouts. */
@media(max-width:819px){.topbar-actions #pwaNotificationBtn{display:inline-grid!important}}
.demo-mode .topbar-actions #pwaNotificationBtn{display:none!important}

/* assets/passite-ux.v1.css */

/* Passite R20.5.0 — shared interaction and PWA feedback layer. */
:where(button,.btn,.text-btn,.ghost-icon,[role="button"],a.nav-item,a.search-hit){
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
  transition:transform .12s ease,opacity .16s ease,filter .16s ease,box-shadow .16s ease;
}
:where(button,.btn,.text-btn,.ghost-icon,[role="button"],a.nav-item,a.search-hit):not(.theme-switch-btn):not(:disabled):active,
:where(button,.btn,.text-btn,.ghost-icon,[role="button"],a.nav-item,a.search-hit):not(.theme-switch-btn).passite-ux-pressed{transform:scale(.975)}
:where(button,.btn,.text-btn,.ghost-icon,[role="button"],a.nav-item,a.search-hit):focus-visible,
:where(input,select,textarea,a):focus-visible{outline:3px solid color-mix(in srgb,#32E6E2 68%,transparent);outline-offset:3px}
:where(button,.btn,.text-btn,.ghost-icon,[role="button"],a.nav-item,a.search-hit):not(:disabled):hover{filter:brightness(1.025)}
:where(input,select,textarea){transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}
:where(input,select,textarea):focus{box-shadow:0 0 0 4px color-mix(in srgb,#32E6E2 14%,transparent)}
:where(button,.btn,[role="button"]):disabled,:where(button,.btn,[role="button"])[aria-disabled="true"]{cursor:not-allowed;opacity:.56}
:where(button,.btn,.text-btn,.ghost-icon,[role="button"])[aria-busy="true"]{cursor:progress;opacity:.72;pointer-events:none}
:where(button,.btn,.text-btn,.ghost-icon,[role="button"])[aria-busy="true"]>*{pointer-events:none}
.passite-ux-banner{position:fixed;left:50%;bottom:max(16px,env(safe-area-inset-bottom));z-index:2147483000;display:flex;align-items:center;gap:10px;max-width:min(92vw,560px);padding:11px 14px;border:1px solid rgba(230,236,242,.14);border-radius:14px;background:rgba(18,24,31,.96);color:#E6ECF2;box-shadow:0 16px 50px rgba(18,24,31,.28);transform:translate(-50%,calc(100% + 36px));opacity:0;pointer-events:none;transition:.2s ease;font:600 14px/1.35 system-ui,sans-serif}
.passite-ux-banner.is-visible{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.passite-ux-banner button{min-height:36px;padding:7px 11px;border:0;border-radius:9px;background:var(--ps-panel);color:var(--ps-ink);font:700 13px/1 system-ui,sans-serif;cursor:pointer}
.passite-ux-banner button.passite-ux-later{background:transparent;color:#E6ECF2;border:1px solid rgba(230,236,242,.25)}
.passite-ux-live{position:fixed!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}
@media (pointer:coarse){:where(button,.btn,.text-btn,.ghost-icon,[role="button"]):not(.theme-switch-btn){min-height:44px}:where(.ghost-icon){min-width:44px}}
/* R20.5.2 — keep compact theme switches at their authored 25–26px height on touch screens. */
.theme-switch-btn{position:relative;min-height:0!important;transform:none!important}.theme-switch-btn::after{content:"";position:absolute;inset:-9px;border-radius:999px}
html{scrollbar-gutter:stable}body{overscroll-behavior-y:none}.modal-wrap,.sidebar{overscroll-behavior:contain}
@media(max-width:819px){:where(input:not([type="checkbox"]):not([type="radio"]),select,textarea){font-size:16px!important}.app-shell,.site-shell{padding-bottom:env(safe-area-inset-bottom)}}
@media (prefers-reduced-motion:reduce){:where(button,.btn,.text-btn,.ghost-icon,[role="button"],a.nav-item,a.search-hit),.passite-ux-banner{transition:none!important}}

/* assets/design-system-v3/product-polish.css */

/*
 * Passite R20.7 — final product-experience contract.
 *
 * This file is intentionally the last application stylesheet. It resolves the
 * historical DS3 cascade into one calm, readable and consistent product layer
 * without changing any behavioural selectors or application contracts.
 */

/* Visual foundations ------------------------------------------------------- */
html[data-passite-app]{

  --ds3-radius-xs:7px;
  --ds3-radius-sm:10px;
  --ds3-radius-md:14px;
  --ds3-radius-lg:18px;
  --ds3-radius-xl:24px;
  --ds3-type-body:14px;
  --ds3-type-caption:12px;
  --ds-font-size-100:10.5px;
  --ds-font-size-150:11.5px;
  --ds-font-size-200:12.5px;
  --ds-font-size-300:14px;
  --ds-font-size-400:15.5px;
  --ds-font-size-500:18px;
  --ds-font-size-600:21px;
  --ds-font-size-700:26px;
  --ds-font-size-800:32px;
  --ds-layout-sidebar-width:248px;
  --ds-layout-topbar-height:74px;
  --ds-layout-section-gap:20px;
}

html[data-passite-app] body{
  font-size:14px;
  line-height:1.52;
  letter-spacing:-.006em;
  background:var(--bg);
}

html[data-passite-app] ::selection{background:color-mix(in srgb,var(--primary) 30%,transparent)}
html[data-passite-app] .ambient{display:none!important}
html[data-passite-app] :where(.glass,.surface){backdrop-filter:none}

/* Shell and navigation ----------------------------------------------------- */
html[data-passite-app] .app{background:var(--bg)}
html[data-passite-app] .sidebar{
  padding:16px 12px max(14px,env(safe-area-inset-bottom));
  border-right-color:rgba(230,236,242,.065);
  background:#12181F;
}
html[data-passite-app][data-theme="dark"] .sidebar{background:#12181F}
html[data-passite-app] .sidebar-head{
  min-height:58px;
  padding:4px 10px 17px;
  border-bottom-color:rgba(230,236,242,.075);
}
html[data-passite-app] .sidebar-head .brand{font-size:25px;letter-spacing:-.06em}
html[data-passite-app] .workspace-tag{
  margin:7px 10px 3px;
  padding:4px 0;
  color:var(--ps-ink);
  font-size:10.5px;
  font-weight:720;
  letter-spacing:.08em;
}
html[data-passite-app] .sidebar nav{gap:2px;margin-top:7px}
html[data-passite-app] .nav-section-label{
  padding:16px 11px 6px;
  color:var(--ps-ink);
  font-size:10px;
  font-weight:760;
  letter-spacing:.12em;
}
html[data-passite-app] .nav-item{
  min-height:43px;
  gap:11px;
  padding:0 11px;
  border:0;
  border-radius:8px;
  color:#E6ECF2;
  font-size:13px;
  font-weight:620;
}
html[data-passite-app] .nav-item svg{width:18px;height:18px;color:var(--ps-ink)}
html[data-passite-app] .nav-item:hover{background:#12181F;color:#E6ECF2}
html[data-passite-app] .nav-item.active{
  background:#12181F;
  color:#E6ECF2;
  box-shadow:inset 2px 0 0 var(--primary);
}
html[data-passite-app] .nav-item.active svg{color:var(--ps-accent-ink,#12181F)}
html[data-passite-app] .sidebar-foot{gap:6px;padding-top:12px}
html[data-passite-app] .theme-control{
  min-height:42px;
  padding:0 10px;
  color:var(--ps-ink);
  font-size:11.5px;
  letter-spacing:0;
}

html[data-passite-app] .topbar{
  min-height:74px;
  padding:11px clamp(18px,2.5vw,34px);
  border-bottom-color:var(--border);
  background:color-mix(in srgb,var(--bg) 88%,transparent);
  box-shadow:0 1px 0 rgba(230,236,242,.35);
  backdrop-filter:blur(16px) saturate(115%);
}
html[data-passite-app][data-theme="dark"] .topbar{box-shadow:none}
html[data-passite-app] .page-context{
  margin-bottom:3px;
  color:var(--text-muted);
  font-size:10.5px;
  font-weight:740;
  letter-spacing:.105em;
}
html[data-passite-app] .page-title h1,
html[data-passite-app] .topbar h1{font-size:23px;font-weight:720;letter-spacing:-.035em}
html[data-passite-app] .page-title p,
html[data-passite-app] .topbar p{font-size:12.5px}
html[data-passite-app] .content{
  max-width:1520px;
  padding:clamp(22px,2.6vw,36px);
}
html[data-passite-app] .view{gap:18px;animation:passite-view-in 180ms var(--ease)}
@keyframes passite-view-in{from{opacity:.55;transform:translateY(2px)}to{opacity:1;transform:none}}

/* Controls ---------------------------------------------------------------- */
html[data-passite-app] :where(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action){
  min-height:42px;
  padding-inline:14px;
  border-radius:9px;
  font-size:12.5px;
  font-weight:690;
  letter-spacing:-.005em;
  box-shadow:none;
}
html[data-passite-app] :where(.btn,.icon-btn,.ghost-icon,.icon-action,.open-site):hover{
  border-color:color-mix(in srgb,var(--primary) 38%,var(--border-strong));
  background:var(--surface-muted);
  color:var(--text);
}
html[data-passite-app] .btn.primary{
  border-color:color-mix(in srgb,var(--primary) 86%,#12181F);
  background:var(--primary);
  color:var(--ps-ink);
  box-shadow:0 1px 1px rgba(18,24,31,.08),0 7px 18px rgba(50,230,226,.12);
}
html[data-passite-app] .btn.primary:hover{
  border-color:var(--primary-hover);
  background:var(--primary-hover);
  color:var(--ps-ink);
  box-shadow:0 1px 1px rgba(18,24,31,.08),0 9px 22px rgba(50,230,226,.16);
}
html[data-passite-app] :where(.btn,.icon-btn,.mini,.icon-action):active{transform:translateY(1px) scale(.99)}
html[data-passite-app] .btn.compact{min-height:38px;padding-inline:12px;font-size:12px}
html[data-passite-app] .btn.large{min-height:48px;font-size:14px}
html[data-passite-app] :where(.icon-btn,.icon-action,.ghost-icon,.password-toggle){
  width:42px;
  min-width:42px;
  height:42px;
  min-height:42px;
  padding:0;
  border-radius:9px;
}
html[data-passite-app] .text-btn,
html[data-passite-app] .text-action{min-height:36px;color:var(--primary-text);font-weight:700}

html[data-passite-app] label{gap:7px;font-size:12.5px;font-weight:650}
html[data-passite-app] label>span,
html[data-passite-app] .field>label{font-size:12.5px;font-weight:690;color:var(--text-secondary)}
html[data-passite-app] label small{font-size:11.5px;line-height:1.45}
html[data-passite-app] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea){
  min-height:44px;
  padding:10px 13px;
  border-color:var(--border-strong);
  border-radius:9px;
  background:var(--surface);
  font-size:13.5px;
  box-shadow:inset 0 1px 0 rgba(230,236,242,.25);
}
html[data-passite-app] :where(input,select,textarea):focus{
  border-color:color-mix(in srgb,var(--primary) 76%,var(--border-strong));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent);
}
html[data-passite-app] textarea{min-height:116px}
html[data-passite-app] .password-toggle{right:1px;top:1px;bottom:1px;height:auto;border:0;background:transparent}
html[data-passite-app] .form-status{font-size:12px}
html[data-passite-app] :where(.form-status.err,.form-status.ok){padding:11px 12px;border-radius:9px}
html[data-passite-app] .password-rules{gap:6px}
html[data-passite-app] .password-rules span{
  min-height:28px;
  padding:4px 9px;
  border:1px solid var(--border);
  border-radius:7px;
  background:var(--surface-muted);
  font-size:10.5px;
}

/* Theme control — identical geometry on auth, sidebar and mobile ----------- */
html[data-passite-app] .theme-switch-btn,
html[data-passite-app] .auth-theme-toggle.theme-switch-btn{
  position:relative;
  box-sizing:border-box;
  flex:0 0 54px;
  width:54px;
  min-width:54px;
  height:30px;
  min-height:30px;
  padding:0;
  overflow:hidden;
  border:1px solid color-mix(in srgb,var(--text-muted) 34%,var(--border));
  border-radius:999px;
  background:color-mix(in srgb,var(--surface-muted) 86%,var(--surface));
  color:var(--text-muted);
  box-shadow:none;
}
html[data-passite-app] .theme-switch-track{position:relative;width:100%;height:100%;display:grid;grid-template-columns:1fr 1fr;align-items:center;justify-items:center}
html[data-passite-app] .theme-switch-track i{
  position:absolute;
  z-index:1;
  left:2px;
  top:2px;
  width:24px;
  height:24px;
  border-radius:50%;
  background:var(--ps-panel);
  box-shadow:0 2px 7px rgba(18,24,31,.2);
  transition:transform 190ms var(--ease),background 190ms var(--ease);
}
html[data-passite-app] .theme-switch-track svg{position:relative;z-index:2;width:12px;height:12px}
html[data-passite-app] .theme-switch-sun{color:var(--ps-ink)}
html[data-passite-app] .theme-switch-moon{color:var(--ps-ink)}
html[data-passite-app][data-theme="dark"] .theme-switch-btn,
html[data-passite-app][data-theme="dark"] .auth-theme-toggle.theme-switch-btn{border-color:var(--ps-ink);background:#12181F}
html[data-passite-app][data-theme="dark"] .theme-switch-track i{transform:translateX(24px);background:#12181F}
html[data-passite-app][data-theme="dark"] .theme-switch-sun{color:var(--ps-ink)}
html[data-passite-app][data-theme="dark"] .theme-switch-moon{color:#E6ECF2}
html[data-passite-app] .sidebar .theme-switch-btn{border-color:var(--ps-ink);background:#12181F}
html[data-passite-app] .sidebar .theme-switch-sun{color:var(--ps-ink)}
html[data-passite-app] .sidebar .theme-switch-moon{color:var(--ps-ink)}
html[data-passite-app] .theme-switch-btn:focus-visible{outline:0;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 26%,transparent)}

/* Surfaces and information hierarchy -------------------------------------- */
html[data-passite-app] :where(.panel,.card,.surface,.hero-panel,.progress-card,.version-card,.client-ticket-shell,.ticket-shell,.analytics-toolbar,.analytics-chart-panel,.analytics-breakdown,.analytics-kpi,.cc-kpi,.today-kpi,.stats article,.overview-metrics .metric,.subscription-kpis-v9 article){
  border-color:var(--border);
  border-radius:14px;
  background:var(--surface);
  box-shadow:none;
  backdrop-filter:none;
}
html[data-passite-app] :where(.panel,.card,.surface,.analytics-kpi,.cc-kpi,.today-kpi,.progress-card):hover{box-shadow:none;transform:none}
html[data-passite-app] .panel{overflow:hidden}
html[data-passite-app] .panel-head{
  min-height:66px;
  gap:16px;
  padding:14px 17px;
  background:var(--surface);
}
html[data-passite-app] .panel-head h3{margin-top:3px;font-size:16px;font-weight:710;letter-spacing:-.025em}
html[data-passite-app] .panel-head p,
html[data-passite-app] .panel-note{font-size:11.5px;line-height:1.45}
html[data-passite-app] .kicker{
  color:var(--text-muted);
  font-size:10.5px;
  font-weight:740;
  letter-spacing:.095em;
}
html[data-passite-app] :where(.stats,.overview-metrics,.commerce-metrics,.owner-commerce-metrics,.analytics-kpis,.subscription-kpis-v9){gap:10px}
html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi,.ds-owner-kpi){
  min-height:108px;
  padding:15px 16px;
  border-radius:12px;
  background:var(--surface);
}
html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.ds-owner-kpi)::before,
html[data-passite-app] #view-overview .today-kpi::after{display:none!important}
html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi)>:where(span,small):first-child{
  color:var(--text-muted);
  font-size:11.5px;
  font-weight:650;
  letter-spacing:0;
  text-transform:none;
}
html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi) strong{
  font-size:clamp(24px,2.2vw,31px);
  font-weight:720;
  letter-spacing:-.045em;
  font-variant-numeric:tabular-nums;
}
html[data-passite-app] #view-overview .today-kpi strong::after{display:none}
html[data-passite-app] .ds-owner-kpis .ds-owner-kpi strong{font-size:29px}
html[data-passite-app] .ds-owner-kpis .ds-owner-kpi small{font-size:11px;line-height:1.4}
html[data-passite-app] .ds-kpi-top>span:first-child{font-size:12px}
html[data-passite-app] .ds-kpi-state{min-height:25px;padding-inline:8px;font-size:10px}

/* Rows, tables, tabs and status ------------------------------------------- */
html[data-passite-app] :where(.lead-head,.site-head,.client-head,.subscription-head-row-v9,.file-table-head){
  min-height:38px;
  padding-inline:16px;
  background:var(--surface-muted);
  color:var(--text-muted);
  font-size:10.5px;
  font-weight:740;
  letter-spacing:.055em;
  text-transform:uppercase;
}
html[data-passite-app] :where(.lead-row,.site-row,.fs-row,.trash-row,.file-row,.simple-row,.activity-item,.notification-item,.client-ticket-item,.ticket-item){
  min-height:58px;
  border-bottom-color:var(--border);
  font-size:12px;
}
html[data-passite-app] :where(.lead-row,.site-row,.simple-row,.activity-item,.notification-item,.client-ticket-item,.ticket-item):hover{background:var(--surface-muted)}
html[data-passite-app] :where(.simple-row b,.activity-item b,.notification-item b,.notification-copy b,.attention-item b,.cc-health-copy b,.lead-name b,.site-name b,.site-name a){font-size:12px;line-height:1.4}
html[data-passite-app] :where(.simple-row p,.activity-item p,.notification-item p,.notification-copy small,.attention-item small,.cc-health-copy small,.lead-name span,.site-name small,.site-meta,.expiry,.stage,.contacts){font-size:11px;line-height:1.45}
html[data-passite-app] :where(.release-cell span,.log-kpi span,.log-group-copy small,.log-group-copy em,.file-cell,.file-name small){font-size:11px}
html[data-passite-app] :where(.release-cell strong,.log-group-copy b,.file-name b){font-size:12px;line-height:1.4}
html[data-passite-app] :where(.status-badge,.subscription-badge-v9,.client-ticket-state,.contact-segment,.contact-list-status,.state,.site-state,.security-state){
  min-height:28px;
  padding-inline:9px;
  border-radius:7px;
  font-size:10.5px;
  font-weight:700;
}
html[data-passite-app] :where(.segmented,.commerce-tabs,.owner-commerce-tabs,.journal-mode-switch,.client-ticket-filters,.ticket-filters){
  gap:2px;
  padding:3px;
  border:1px solid var(--border);
  border-radius:10px;
  background:var(--surface-muted);
}
html[data-passite-app] :where(.segmented button,.ui-tab,.commerce-tabs .ui-tab,.owner-commerce-tabs .ui-tab,.journal-mode-switch button){
  min-height:36px;
  padding-inline:12px;
  border-radius:7px;
  color:var(--text-muted);
  font-size:11.5px;
  font-weight:690;
}
html[data-passite-app] :where(.segmented button.active,.ui-tab.active){background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(18,24,31,.06)}
html[data-passite-app] :where(.empty,.compact-empty,.attention-empty,.kanban-empty,.ticket-empty,.client-ticket-empty){
  min-height:144px;
  padding:30px 22px;
  border-radius:0;
  background:transparent;
}
html[data-passite-app] :where(.empty,.attention-empty,.ticket-empty,.client-ticket-empty)::before{
  width:36px;
  height:36px;
  border-style:solid;
  border-radius:10px;
  background:var(--surface-muted);
}
html[data-passite-app] :where(.empty strong,.ticket-empty b,.client-ticket-empty b){font-size:13px}
html[data-passite-app] :where(.empty span,.ticket-empty span,.client-ticket-empty span){font-size:11.5px;line-height:1.5}

/* Authentication ---------------------------------------------------------- */
html[data-passite-app] .auth{
  grid-template-columns:minmax(0,1.15fr) minmax(420px,500px);
  gap:clamp(48px,7vw,118px);
  padding:max(30px,env(safe-area-inset-top)) clamp(34px,6vw,104px) max(30px,env(safe-area-inset-bottom));
  background:linear-gradient(125deg,var(--bg) 0 57%,var(--surface-muted) 57% 100%);
}
html[data-passite-app] .auth::before{
  display:block;
  inset:0;
  border:0;
  border-radius:0;
  background:linear-gradient(90deg,color-mix(in srgb,var(--border) 46%,transparent) 1px,transparent 1px);
  background-size:84px 100%;
  opacity:.35;
  mask-image:linear-gradient(90deg,#12181F,transparent 58%);
}
html[data-passite-app] .auth::after{display:none}
html[data-passite-app] .auth-visuals{display:none}
html[data-passite-app] .auth-intro{gap:20px;max-width:690px}
html[data-passite-app] .auth-intro-label{font-size:10.5px;font-weight:720;letter-spacing:.14em}
html[data-passite-app] .auth-intro h2{
  max-width:660px;
  font-size:clamp(46px,5.2vw,76px);
  font-weight:680;
  line-height:.98;
  letter-spacing:-.065em;
}
html[data-passite-app] .auth-intro p{max-width:580px;font-size:16px;line-height:1.65}
html[data-passite-app] .auth-intro-list{
  display:grid;
  gap:0;
  max-width:470px;
  margin-top:10px;
  border-top:1px solid var(--border-strong);
}
html[data-passite-app] .auth-intro-list span{
  min-height:43px;
  padding:0;
  border:0;
  border-bottom:1px solid var(--border-strong);
  border-radius:0;
  background:transparent;
  font-size:12px;
  backdrop-filter:none;
}
html[data-passite-app] .auth-card{
  width:100%;
  max-width:500px;
  min-height:min(560px,calc(100dvh - 60px));
  max-height:calc(100dvh - 60px);
  padding:clamp(32px,4vw,46px);
  border:1px solid var(--border-strong);
  border-radius:18px;
  background:var(--surface);
  box-shadow:var(--shadow-md);
  backdrop-filter:none;
}
html[data-passite-app] .auth-card-toolbar{min-height:34px;margin:0 0 28px}
html[data-passite-app] .auth-card-toolbar .brand{margin:0!important}
html[data-passite-app] .auth-card .brand{font-size:28px;letter-spacing:-.06em}
html[data-passite-app] .auth-card .micro{margin:0 0 22px;font-size:10.5px}
html[data-passite-app] .auth-copy{margin:0 0 24px}
html[data-passite-app] .auth-copy>span{font-size:10.5px;letter-spacing:.105em}
html[data-passite-app] .auth-card h1{margin:7px 0 10px;font-size:clamp(34px,3.5vw,44px);font-weight:720;letter-spacing:-.055em}
html[data-passite-app] .auth-copy p,
html[data-passite-app] .security-copy{font-size:13px;line-height:1.58}
html[data-passite-app] .auth-card form{gap:16px}
html[data-passite-app] .auth-card :where(input:not([type="checkbox"]):not([type="radio"]),select,.btn){min-height:48px}
html[data-passite-app] .demo-onboarding .auth-card.demo-picker-card{border-radius:18px;box-shadow:var(--shadow-md)}
html[data-passite-app] .demo-industry-grid button{
  border-radius:10px;
  background:var(--surface);
  box-shadow:none;
  transform:none;
}
html[data-passite-app] .demo-brand-badge{border-radius:7px}

/* Dialogs, drawers and feedback ------------------------------------------- */
html[data-passite-app] .modal-wrap{
  padding:20px;
  background:rgba(18,24,31,.64);
  backdrop-filter:blur(5px);
}
html[data-passite-app] .modal{
  border-color:var(--border-strong);
  border-radius:16px;
  background:var(--surface-raised);
  box-shadow:var(--shadow-float, var(--shadow-lg));
}
html[data-passite-app] .modal-head{min-height:62px;padding:13px 17px}
html[data-passite-app] .modal-head h3{font-size:16px}
html[data-passite-app] .modal-head .close{width:40px;height:40px;min-height:40px;border-radius:9px}
html[data-passite-app] .modal-body{padding:18px}
html[data-passite-app] .modal-actions{margin:18px -18px -18px;padding:13px 18px;background:var(--surface-muted)}
html[data-passite-app] .toast{
  min-height:58px;
  border-radius:11px;
  font-size:12px;
  box-shadow:var(--shadow-md);
}
html[data-passite-app] .pwa-notification-drawer{
  top:10px;
  right:10px;
  bottom:10px;
  border-radius:16px;
  box-shadow:var(--shadow-float, var(--shadow-lg));
}
html[data-passite-app] .pwa-notification-copy b{font-size:12.5px}
html[data-passite-app] .pwa-notification-copy small{font-size:11px}
html[data-passite-app] .pwa-install-card{border-radius:18px;text-align:left}
html[data-passite-app] .pwa-install-icon{margin-inline:0;border-radius:18px}
html[data-passite-app] .pwa-install-card>p{margin-inline:0}
html[data-passite-app] .pwa-install-kicker{border-radius:7px}
html[data-passite-app] .pwa-install-benefits span{border-radius:10px;font-size:10.5px}

/* Product-specific dense areas ------------------------------------------- */
html[data-passite-app] .today-hero{padding-inline:2px}
html[data-passite-app] .today-hero h2{font-weight:680;letter-spacing:-.055em}
html[data-passite-app] .today-upcoming-head{font-size:10.5px}
html[data-passite-app] .today-upcoming-row{min-height:58px}
html[data-passite-app] .today-upcoming-row>b,
html[data-passite-app] .today-upcoming-copy em{font-size:12px}
html[data-passite-app] .today-upcoming-copy small{font-size:11px}
html[data-passite-app] .today-badge{font-size:10px;border-radius:7px}
html[data-passite-app] .today-attention-text{font-size:11.5px}
html[data-passite-app] .today-attention-tag{font-size:10px}
html[data-passite-app] .ds-site-card-head h3{font-size:15px}
html[data-passite-app] .ds-site-card-head p{font-size:11px}
html[data-passite-app] .ds-site-storage .progress-head,
html[data-passite-app] .ds-site-storage small{font-size:11px}
html[data-passite-app] .ds-site-quick .quick-action{
  min-height:82px;
  border-radius:9px;
  background:var(--surface-muted);
}
html[data-passite-app] .ds-site-quick .quick-action b{font-size:11.5px}
html[data-passite-app] .ds-site-quick .quick-action span{font-size:10.5px}
html[data-passite-app] .contact-list::before{font-size:10px}
html[data-passite-app] .contact-row-copy b{font-size:12px}
html[data-passite-app] .contact-row-copy small,
html[data-passite-app] .contact-last small,
html[data-passite-app] .contact-activity small{font-size:10.5px}
html[data-passite-app] .contact-last b,
html[data-passite-app] .contact-activity b{font-size:11.5px}
html[data-passite-app] .contact-list-status{font-size:10px}
html[data-passite-app] .contact-card-head h3{font-size:16px}
html[data-passite-app] .contact-card-meta{font-size:11px}
html[data-passite-app] .contact-card-actions .btn{font-size:11.5px}
html[data-passite-app] .contact-stats span{font-size:10.5px}
html[data-passite-app] .contact-stats strong{font-size:17px}
html[data-passite-app] :where(.c75-catalog-copy b,.p75-catalog-copy b,.c75-transaction-main b,.p75-transaction-main b){font-size:12px}
html[data-passite-app] :where(.c75-catalog-copy p,.p75-catalog-copy p,.c75-transaction-main p,.p75-transaction-main p,.c75-transaction-main span,.p75-transaction-main span){font-size:11px;line-height:1.45}
html[data-passite-app] :where(.c75-status,.p75-status){font-size:10.5px;border-radius:7px}
html[data-passite-app] :where(.c75-switch-row,.p75-switch-row,.switch-row){min-height:62px;border-radius:10px}
html[data-passite-app] :where(.c75-switch-row b,.p75-switch-row b,.switch-row span){font-size:12px}
html[data-passite-app] :where(.c75-switch-row small,.p75-switch-row small){font-size:11px}
html[data-passite-app] .message,
html[data-passite-app] .client-message{font-size:12px;line-height:1.5;border-radius:10px}
html[data-passite-app] .help-article-head h2{font-weight:690}
html[data-passite-app] .help-link span{font-size:12.5px}
html[data-passite-app] .help-link small{font-size:11px}
html[data-passite-app] .help-steps li{font-size:13px}
html[data-passite-app] .account-page-head h2,
html[data-passite-app] .subscription-page-head-v9 h2{font-size:30px;font-weight:690;letter-spacing:-.045em}
html[data-passite-app] .subscription-page-head-v9 p,
html[data-passite-app] .account-page-head p{font-size:13px}
html[data-passite-app] .payment-client-help{font-size:11.5px;line-height:1.5}
html[data-passite-app] .client-sub-hero-v9{
  border:1px solid #12181F;
  border-radius:14px;
  background:#12181F;
}
html[data-passite-app] .client-sub-hero-v9::after{display:none}
html[data-passite-app] .client-sub-kicker-v9{font-size:10.5px}
html[data-passite-app] .client-sub-hero-v9 p{font-size:13px}
html[data-passite-app] .client-sub-period-v9 span,
html[data-passite-app] .client-sub-period-v9 em{font-size:11.5px}
html[data-passite-app] :where(.subscription-client-v9 small,.subscription-row-v9 .date-sub-v9,.subscription-detail-person-v9 p,.subscription-detail-stat-v9 small,.subscription-event-v9 small,.subscription-event-v9 em){font-size:11px}
html[data-passite-app] :where(.subscription-badge-v9,.subscription-head-row-v9){font-size:10.5px}
html[data-passite-app] .subscription-badge-v9{border-radius:7px}
html[data-passite-app] :where(.subscription-event-v9 b,.subscription-help-v9){font-size:11.5px}
html[data-passite-app] :where(.brief-pages-toolbar p,.brief-mode-tab span,.brief-mode-note,.publish-progress-meta){font-size:11px}
html[data-passite-app] .brief-page-lock{font-size:10px}
html[data-passite-app] .demo-brand-badge,
html[data-passite-app] .demo-mode #view-overview .today-hero-copy::before{font-size:10px;border-radius:7px}
html[data-passite-app] .demo-guide-list span{font-size:11px}
html[data-passite-app] .demo-guide-list b{font-size:10px}
html[data-passite-app] .pwa-notification-copy em{font-size:10px}
html[data-passite-app] .pwa-notification-empty span{font-size:11.5px}
html[data-passite-app] .pwa-install-card>p{font-size:12.5px}
html[data-passite-app] :where(.pwa-install-benefits span,.pwa-ios-help span,.pwa-permission-note,.pwa-device-meta){font-size:11px}
html[data-passite-app] :where(.pwa-ios-help b,.pwa-app-card p){font-size:11.5px}
html[data-passite-app] .pwa-app-card{border-radius:12px;background:var(--surface)}
html[data-passite-app] #view-journal[data-journal-view="month"] .journal-month-weekdays span{font-size:10.5px}
html[data-passite-app] #view-journal[data-journal-view="month"] .journal-month-item b{font-size:10.5px}
html[data-passite-app] #view-journal[data-journal-view="month"] .journal-month-item span,
html[data-passite-app] #view-journal[data-journal-view="month"] .journal-month-more{font-size:10px}
html[data-passite-app] .journal-time,
html[data-passite-app] .journal-day-head,
html[data-passite-app] .journal-resource-head{font-size:10.5px}
html[data-passite-app] :where(.journal-card b,.journal-booking b){font-size:11.5px}
html[data-passite-app] :where(.journal-card small,.journal-booking small){font-size:10.5px}

/* Responsive product composition ----------------------------------------- */
@media(max-width:1100px){
  html[data-passite-app] .content{padding:24px 20px}
  html[data-passite-app] .auth{grid-template-columns:minmax(0,1fr) minmax(400px,470px);gap:36px;padding-inline:30px}
  html[data-passite-app] .auth-intro h2{font-size:clamp(40px,5.8vw,58px)}
}

@media(max-width:819px){
  html[data-passite-app]{--ds-layout-topbar-height:64px}
  html[data-passite-app] .sidebar{padding-top:max(14px,env(safe-area-inset-top))}
  html[data-passite-app] .topbar{
    min-height:64px;
    padding:8px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));
    gap:8px;
  }
  html[data-passite-app] .page-context{font-size:10px}
  html[data-passite-app] .page-title h1,
  html[data-passite-app] .topbar h1{font-size:19px}
  html[data-passite-app] .content{padding:17px max(12px,env(safe-area-inset-right)) calc(78px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}
  html[data-passite-app] .view{gap:12px}
  html[data-passite-app] .panel-head{min-height:58px;padding:12px 13px}
  html[data-passite-app] .panel-head h3{font-size:15px}
  html[data-passite-app] .tool-row{gap:7px}
  html[data-passite-app] :where(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action){min-height:44px}
  html[data-passite-app] .btn.compact{min-height:40px}
  html[data-passite-app] :where(.icon-btn,.icon-action,.ghost-icon,.password-toggle){width:44px;min-width:44px;height:44px;min-height:44px}
  html[data-passite-app] .theme-switch-btn,
  html[data-passite-app] .auth-theme-toggle.theme-switch-btn{width:54px;min-width:54px;height:30px;min-height:30px}
  html[data-passite-app] .theme-switch-track i{width:24px;height:24px}
  html[data-passite-app][data-theme="dark"] .theme-switch-track i{transform:translateX(24px)}
  html[data-passite-app] .auth{
    display:block;
    min-height:100dvh;
    max-height:none;
    padding:0;
    overflow:auto;
    background:var(--surface);
  }
  html[data-passite-app] .auth::before,
  html[data-passite-app] .auth-intro{display:none}
  html[data-passite-app] .auth-card{
    width:100%;
    max-width:none;
    min-height:100dvh;
    max-height:none;
    align-content:start;
    padding:max(24px,calc(env(safe-area-inset-top) + 18px)) max(18px,env(safe-area-inset-right)) max(32px,calc(env(safe-area-inset-bottom) + 22px)) max(18px,env(safe-area-inset-left));
    border:0;
    border-radius:0;
    box-shadow:none;
    overflow:visible;
  }
  html[data-passite-app] .auth-card-toolbar{margin-bottom:34px}
  html[data-passite-app] .auth-card h1{font-size:36px}
  html[data-passite-app] .demo-onboarding .auth-card.demo-picker-card{border:0!important;border-radius:0!important;box-shadow:none!important}
  html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi,.ds-owner-kpi){min-height:96px;padding:13px}
  html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi) strong{font-size:24px}
  html[data-passite-app] .modal-wrap{padding:8px!important;align-items:end}
  html[data-passite-app] .modal{
    width:100%!important;
    max-height:calc(100dvh - 8px);
    border-radius:16px 16px 0 0!important;
  }
  html[data-passite-app] .modal-body{padding:14px!important}
  html[data-passite-app] .modal-actions,
  html[data-passite-app] .confirm-ui .modal-actions{margin:14px 0 0!important;padding:0 0 max(4px,env(safe-area-inset-bottom))!important;background:transparent!important}
  html[data-passite-app] .pwa-notification-drawer{inset:0;border-radius:0}
  html[data-passite-app] .pwa-install-card{border-radius:16px 16px 0 0;text-align:left}
  html[data-passite-app] .mobile-section-switcher-label{font-size:10.5px}
}

@media(max-width:480px){
  html[data-passite-app] .content{padding-inline:max(10px,env(safe-area-inset-left)) max(10px,env(safe-area-inset-right))}
  html[data-passite-app] .page-title h1,
  html[data-passite-app] .topbar h1{font-size:18px}
  html[data-passite-app] .auth-card{padding-inline:16px}
  html[data-passite-app] .auth-card h1{font-size:33px}
  html[data-passite-app] .auth-card-toolbar{margin-bottom:28px}
  html[data-passite-app] .subscription-page-head-v9 h2,
  html[data-passite-app] .account-page-head h2{font-size:26px}
}

body.pwa-dialog-open,
body.pwa-install-open,
body.pwa-drawer-open{overflow:hidden}
html[data-passite-app] .pwa-install-overlay{
  padding-right:max(16px,env(safe-area-inset-right));
  padding-left:max(16px,env(safe-area-inset-left));
}

@media(prefers-reduced-motion:reduce){
  html[data-passite-app] .view{animation:none}
  html[data-passite-app] *,
  html[data-passite-app] *::before,
  html[data-passite-app] *::after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}
}

/* assets/brand/brand-system.css */

/* Passite R20.8.1 brand system — one canonical ribbon-P on every surface. */
:root{
  
  --passite-lockup-ink-url:url('/assets/brand/passite-lockup-ink.svg?v=20941');
  --passite-lockup-reverse-url:url('/assets/brand/passite-lockup-reverse.svg?v=20941');

}

:where(.logo,.brand,.legal-logo,.c>.b){
  display:inline-flex;
  align-items:center;
  gap:.48em;
  min-width:0;
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-weight:800;
  letter-spacing:-.045em;
  text-decoration:none;
}

:where(.logo,.brand,.legal-logo,.c>.b)::before{
  content:""!important;
  display:block!important;
  flex:0 0 auto;
  width:1.18em;
  height:1.18em;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:var(--passite-mark-url) center/contain no-repeat!important;
  box-shadow:none!important;
}

:where(.logo,.brand,.legal-logo,.c>.b)::after{content:none!important;display:none!important}
:where(.logo-dot,.brand-dot,.legal-logo i,.brand>i,.c>.b>i){display:none!important}
:where(.brand-word,.logo strong){display:inline-flex;align-items:center;white-space:nowrap}

.sidebar-head .brand::before{width:1.32em;height:1.32em}
.auth-card-toolbar .brand::before,
.demo-brand-row .brand::before{
  content:""!important;
  display:block!important;
  width:1.26em;
  height:1.26em;
}
.legal-logo::before{width:1.34em;height:1.34em}

.pwa-install-brand{
  display:flex!important;
  align-items:center;
  gap:9px;
  min-height:30px;
  letter-spacing:-.045em;
}
.pwa-install-brand::before{
  content:"";
  width:29px;
  height:29px;
  flex:0 0 29px;
  background:var(--passite-mark-url) center/contain no-repeat;
}
.pwa-install-brand span{display:none}

@media(max-width:480px){
  :where(.logo,.brand,.legal-logo,.c>.b){gap:.42em}
  .auth-card-toolbar .brand::before,
  .demo-brand-row .brand::before{width:1.2em;height:1.2em}
}

@media(prefers-reduced-motion:reduce){
  :where(.logo,.brand,.legal-logo,.c>.b)::before{transition:none!important}
}

/* assets/design-system-v3/ux-quality.css */

/* Passite R20.8 — final UX quality gate.
 * Only cross-product interaction, accessibility and viewport guarantees live here.
 * Product composition remains in product-polish.css and the canonical
 * R20.9.2 landing/application finish layers. */

/* The visible theme track stays compact; the actual control is finger-sized. */
html[data-passite-app] .theme-switch-btn,
html[data-passite-app] .auth-theme-toggle.theme-switch-btn{
  position:relative;
  width:54px;
  min-width:54px;
  height:44px;
  min-height:44px;
  padding:0;
  display:grid;
  place-items:center;
  overflow:visible;
  border:0;
  border-radius:12px;
  background:transparent;
  box-shadow:none;
}
html[data-passite-app] .theme-switch-btn>.theme-switch-track{
  box-sizing:border-box;
  flex:none;
  width:54px;
  height:30px;
  overflow:hidden;
  border:1px solid color-mix(in srgb,var(--text-muted) 34%,var(--border));
  border-radius:999px;
  background:color-mix(in srgb,var(--surface-muted) 86%,var(--surface));
}
html[data-passite-app][data-theme="dark"] .theme-switch-btn,
html[data-passite-app][data-theme="dark"] .auth-theme-toggle.theme-switch-btn{background:transparent;border:0}
html[data-passite-app][data-theme="dark"] .theme-switch-btn>.theme-switch-track{border-color:var(--ps-ink);background:#12181F}
html[data-passite-app] .sidebar .theme-switch-btn{background:transparent;border:0}
html[data-passite-app] .sidebar .theme-switch-btn>.theme-switch-track{border-color:var(--ps-ink);background:#12181F}
html[data-passite-app] .theme-switch-btn:focus-visible{
  outline:0;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 28%,transparent);
}

/* Legacy KPI cards become explicit, keyboard-operable navigation controls. */
html[data-passite-app] .ds-owner-kpi[role="button"],
html[data-passite-app] .metric-action[role="button"]{
  appearance:none;
  box-sizing:border-box;
  width:100%;
  color:inherit;
  font-family:inherit;
  font-size:inherit;
  line-height:inherit;
  text-align:left;
}
html[data-passite-app] .ds-owner-kpi[role="button"]:focus-visible,
html[data-passite-app] .metric-action[role="button"]:focus-visible{
  outline:3px solid var(--focus);
  outline-offset:2px;
}

/* Busy feedback must remain visible on both primary and secondary controls. */
html[data-passite-app] .btn.busy::after,
html[data-passite-app] .btn.is-loading::after{color:var(--primary-text)}
html[data-passite-app] .btn.primary.busy::after,
html[data-passite-app] .btn.primary.is-loading::after{color:var(--ps-ink)}

/* Small accent copy meets normal-text contrast in the light theme. */
html[data-passite-app]:not([data-theme="dark"]) .auth-intro-label{color:var(--ps-ink)}
html[data-passite-app]:not([data-theme="dark"]) .client-sub-kicker-v9,
html[data-passite-app]:not([data-theme="dark"]) .client-sub-period-v9 em{color:var(--ps-ink)}

/* Final coarse-pointer contract; later product rules cannot shrink it again. */
@media(pointer:coarse){
  html[data-passite-app] :where(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action,.ui-tab,.segmented button,.journal-mode-switch button,.account-nav-v9 button){min-height:44px}
  html[data-passite-app] .btn.compact{min-height:44px}
  html[data-passite-app] :where(.modal-head .close,.sidebar-close,.pwa-install-close,.contact-action-icon){width:44px;min-width:44px;height:44px;min-height:44px}
  html[data-passite-app] :where(.brief-preview summary,.c75-status-picker summary,.p75-status-picker summary,.site-settings-secondary>summary){min-height:44px}
  html[data-passite-app] :where(.site-card-link,.p75-client-card a[href^="http"],.site-row a[href^="http"]){min-height:44px;display:inline-flex;align-items:center}
}

/* Notched phones and standalone PWAs keep chrome and content inside safe areas. */
@media(max-width:819px){
  html[data-passite-app] .topbar{
    padding-top:max(8px,env(safe-area-inset-top));
    padding-right:max(12px,env(safe-area-inset-right));
    padding-bottom:8px;
    padding-left:max(12px,env(safe-area-inset-left));
  }
  html[data-passite-app] .content{
    padding-right:max(12px,env(safe-area-inset-right));
    padding-left:max(12px,env(safe-area-inset-left));
  }
  html[data-passite-app] .sidebar{
    padding-top:max(14px,env(safe-area-inset-top));
    padding-right:max(12px,env(safe-area-inset-right));
    padding-left:max(12px,env(safe-area-inset-left));
  }
}
@media(max-width:480px){
  html[data-passite-app] .content{
    padding-right:max(10px,env(safe-area-inset-right));
    padding-left:max(10px,env(safe-area-inset-left));
  }
}

/* Public navigation and secondary pages use the same accessibility baseline. */
.mobile-theme-btn{
  appearance:none;
  width:100%;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 11px;
  border:0;
  border-radius:8px;
  background:transparent;
  color:#E6ECF2;
  font-family:inherit;
  font-size:13px;
  font-weight:700;
  line-height:1.3;
  text-align:left;
  cursor:pointer;
}
.mobile-theme-btn:hover{background:#12181F;color:#E6ECF2}
.mobile-theme-btn svg{width:17px;height:17px}
.public-skip-link{z-index:10000}
.project-bar a,.unavailable-actions .btn{min-height:44px}
.unavailable-actions .btn{cursor:pointer}

/* Keep long-form legal copy readable without narrowing metadata/actions. */
.legal-card>:where(p,ul,ol,h2,h3,.legal-note){max-width:74ch}

@media(max-width:820px){
  .site-header{box-sizing:border-box;padding-right:env(safe-area-inset-right);padding-left:env(safe-area-inset-left)}
  .menu-btn{width:44px;height:44px;min-width:44px;min-height:44px}
  .mobile-nav{right:max(15px,env(safe-area-inset-right));left:max(15px,env(safe-area-inset-left))}
  .mobile-nav a,.mobile-nav .mobile-theme-btn{min-height:44px}
  body.mobile-menu-open{overflow:hidden}
}
@media(max-width:600px){
  .unavailable{
    padding-top:max(14px,env(safe-area-inset-top));
    padding-right:max(14px,env(safe-area-inset-right));
    padding-bottom:max(14px,env(safe-area-inset-bottom));
    padding-left:max(14px,env(safe-area-inset-left));
  }
}

.legal-top,.legal-hero,.legal-main{box-sizing:border-box;padding-right:env(safe-area-inset-right);padding-left:env(safe-area-inset-left)}

/* Mobile text-entry contract: iOS Safari zooms the viewport when a focused
   editable control renders below 16px. Keep page pinch-zoom available and fix
   the control typography instead of restricting the viewport meta tag. */
@media(max-width:1100px){
  html body :is(
    input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):not([type="color"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="image"]):not([type="hidden"]),
    select,
    textarea,
    [contenteditable="true"],
    [role="textbox"]
  ){font-size:16px!important}
}

@media(prefers-reduced-motion:reduce){
  .mobile-nav,.mobile-theme-btn,.public-skip-link{transition:none!important}
}

/* assets/design-system-v3/product-premium-r2092.css */

/*
 * Passite R20.9.2 — premium application finish.
 * Loaded last in Owner and Client so one explicit contract wins over legacy
 * aliases without changing behavioural selectors or API-facing markup.
 */

html[data-passite-app]{
  
  --line:var(--border);
  
  --accent:var(--primary);
  --shadow-md:var(--ds3-shadow-md);
  --ds-surface-soft:var(--surface-muted);
  --ds-surface-solid:var(--surface);
  --ds-text-muted:var(--text-muted);
  --passite-premium-line:color-mix(in srgb,var(--text) 10%,transparent);
  --passite-premium-shadow:0 1px 2px rgba(18,24,31,.025),0 14px 38px rgba(18,24,31,.055);
  --passite-premium-shadow-hover:0 2px 4px rgba(18,24,31,.03),0 20px 52px rgba(18,24,31,.08);
}

html[data-passite-app][data-theme="dark"]{
  --passite-premium-line:rgba(230,236,242,.1);
  --passite-premium-shadow:0 1px 2px rgba(18,24,31,.18),0 16px 42px rgba(18,24,31,.2);
  --passite-premium-shadow-hover:0 2px 5px rgba(18,24,31,.2),0 22px 58px rgba(18,24,31,.27);
}

html[data-passite-app] body{font-size:14.5px;line-height:1.55;background:var(--bg);text-rendering:optimizeLegibility}
html[data-passite-app] .content{width:100%;max-width:1580px;margin-inline:auto;padding:clamp(24px,2.8vw,40px)}
html[data-passite-app] .view{gap:20px}
html[data-passite-app] :where(.workspace,.content,.view,.panel,.card,.surface,.page-title,.topbar-actions){min-width:0}

/* Shell ----------------------------------------------------------------- */
html[data-passite-app] .sidebar{width:var(--sidebar-w);padding:17px 12px max(15px,env(safe-area-inset-bottom));background:linear-gradient(180deg,#12181F,#12181F);box-shadow:inset -1px 0 rgba(230,236,242,.055)}
html[data-passite-app] .sidebar-head{min-height:62px;padding:4px 11px 18px}
html[data-passite-app] .sidebar-head .brand{font-size:25px}
html[data-passite-app] .sidebar-head .brand::before{width:32px;height:32px}
html[data-passite-app] .workspace-tag{margin:8px 11px 4px;color:var(--ps-ink);font-size:10.5px}
html[data-passite-app] .nav-section-label{padding:17px 12px 7px;color:var(--ps-ink);font-size:10px}
html[data-passite-app] .nav-item{min-height:45px;padding-inline:12px;border-radius:11px;color:#E6ECF2;font-size:13.5px;transition:background .15s ease,color .15s ease,translate .15s ease}
html[data-passite-app] .nav-item:hover{background:#12181F;color:#E6ECF2;translate:1px 0}
html[data-passite-app] .nav-item.active{background:linear-gradient(90deg,rgba(50,230,226,.17),rgba(50,230,226,.08));box-shadow:inset 2px 0 #32E6E2;color:#E6ECF2}
html[data-passite-app] .nav-item.active svg{color:var(--ps-accent-ink,#12181F)}
html[data-passite-app] .theme-control{min-height:48px;margin-top:3px;padding-inline:11px;border-top:1px solid rgba(230,236,242,.06);color:var(--ps-ink)}

html[data-passite-app] .topbar{min-height:76px;padding:11px clamp(20px,2.7vw,38px);border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 91%,transparent);box-shadow:0 1px 0 rgba(230,236,242,.48);backdrop-filter:blur(22px) saturate(140%)}
html[data-passite-app][data-theme="dark"] .topbar{box-shadow:0 1px 0 rgba(230,236,242,.025)}
html[data-passite-app] .page-context{margin-bottom:4px;font-size:10.5px;letter-spacing:.12em}
html[data-passite-app] .page-title h1,html[data-passite-app] .topbar h1{font-size:24px;font-weight:730;letter-spacing:-.04em}
html[data-passite-app] .page-title p,html[data-passite-app] .topbar p{font-size:13px;line-height:1.45}
html[data-passite-app] .topbar>*{min-width:0}

/* Surfaces and data hierarchy ------------------------------------------ */
html[data-passite-app] :where(.panel,.card,.surface,.hero-panel,.progress-card,.version-card,.client-ticket-shell,.ticket-shell,.analytics-toolbar,.analytics-chart-panel,.analytics-breakdown,.analytics-kpi,.cc-kpi,.today-kpi,.stats article,.overview-metrics .metric,.subscription-kpis-v9 article){
  border-color:var(--passite-premium-line);
  border-radius:16px;
  background:var(--surface);
  box-shadow:var(--passite-premium-shadow);
}
html[data-passite-app] :where(.panel,.card,.surface,.analytics-kpi,.cc-kpi,.today-kpi,.stats article,.overview-metrics .metric):hover{box-shadow:var(--passite-premium-shadow)}
html[data-passite-app] .panel-head{min-height:68px;padding:15px 18px;border-bottom-color:var(--border)}
html[data-passite-app] .panel-head h3{font-size:17px;font-weight:720}
html[data-passite-app] .panel-head p,html[data-passite-app] .panel-note{font-size:12px;line-height:1.5}
html[data-passite-app] :where(.lead-row,.site-row,.fs-row,.trash-row,.file-row,.simple-row,.activity-item,.notification-item,.client-ticket-item,.ticket-item){min-height:60px;padding-block:12px}
html[data-passite-app] :where(.simple-row b,.activity-item b,.notification-item b,.notification-copy b,.attention-item b,.cc-health-copy b,.lead-name b,.site-name b,.site-name a){font-size:12.75px}
html[data-passite-app] :where(.simple-row p,.activity-item p,.notification-item p,.notification-copy small,.attention-item small,.cc-health-copy small,.lead-name span,.site-name small,.site-meta,.expiry,.stage,.contacts){font-size:11.5px}

html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi,.ds-owner-kpi){min-height:118px;padding:17px 18px;border-radius:15px;background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--primary) 3%,var(--surface)))}
html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi) strong{font-size:29px;letter-spacing:-.04em}
html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi)>:where(span,small):first-child{font-size:10.5px;letter-spacing:.045em}

/* Controls -------------------------------------------------------------- */
html[data-passite-app] :where(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action){border-radius:11px;font-size:13px;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease,transform .12s ease}
html[data-passite-app] .btn.primary{box-shadow:0 1px 1px rgba(18,24,31,.08),0 9px 22px rgba(50,230,226,.14)}
html[data-passite-app] .btn.primary:hover{box-shadow:0 1px 1px rgba(18,24,31,.08),0 12px 28px rgba(50,230,226,.2)}
html[data-passite-app] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea){min-height:46px;border-radius:11px;font-size:14px}
html[data-passite-app] :where(input,select,textarea):focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}
html[data-passite-app] :where(.segmented,.commerce-tabs,.owner-commerce-tabs,.journal-mode-switch,.client-ticket-filters,.ticket-filters){padding:4px;border-radius:12px}

/* Authentication — one centered product composition ------------------- */
html[data-passite-app] .auth{
  grid-template-columns:minmax(0,560px) minmax(420px,500px);
  align-items:stretch;
  justify-content:center;
  gap:22px;
  padding:max(28px,env(safe-area-inset-top)) clamp(24px,4vw,64px) max(28px,env(safe-area-inset-bottom));
  background:
    radial-gradient(circle at 14% 12%,rgba(50,230,226,.1),transparent 28%),
    radial-gradient(circle at 90% 88%,rgba(18,24,31,.07),transparent 25%),
    linear-gradient(145deg,#E6ECF2,#E6ECF2 58%,#E6ECF2);
}
html[data-passite-app][data-theme="dark"] .auth{background:radial-gradient(circle at 14% 12%,rgba(50,230,226,.08),transparent 30%),linear-gradient(145deg,#12181F,#12181F 58%,#12181F)}
html[data-passite-app] .auth::before{inset:8% auto auto 5%;width:320px;height:320px;border:1px solid rgba(50,230,226,.1);border-radius:50%;background:transparent;opacity:.65;mask-image:none}
html[data-passite-app] .auth::after{display:none}
html[data-passite-app] .auth-intro{
  position:relative;
  isolation:isolate;
  width:100%;
  max-width:none;
  min-height:min(600px,calc(100dvh - 56px));
  max-height:calc(100dvh - 56px);
  align-content:center;
  gap:20px;
  overflow:hidden;
  padding:clamp(42px,4.2vw,62px);
  border:1px solid rgba(230,236,242,.13);
  border-radius:30px;
  background:radial-gradient(circle at 88% 8%,rgba(50,230,226,.17),transparent 30%),linear-gradient(145deg,#12181F,#12181F 58%,#12181F);
  color:#E6ECF2;
  box-shadow:0 30px 82px rgba(18,24,31,.16);
}
html[data-passite-app] .auth-intro::before{content:"";position:absolute;z-index:0;right:-150px;bottom:-190px;width:420px;height:420px;border:1px solid rgba(50,230,226,.14);border-radius:50%;box-shadow:0 0 0 50px rgba(50,230,226,.025),0 0 0 100px rgba(50,230,226,.018);pointer-events:none}
html[data-passite-app] .auth-intro>*{position:relative;z-index:1}
html[data-passite-app] .auth-intro-label{color:var(--ps-accent-ink,#12181F)!important;font-size:10.5px;letter-spacing:.16em}
html[data-passite-app] .auth-intro h2{max-width:520px;color:#E6ECF2;font-size:clamp(40px,3.8vw,58px);font-weight:710;line-height:1.02;letter-spacing:-.055em}
html[data-passite-app] .auth-intro p{max-width:510px;color:#E6ECF2;font-size:15.5px;line-height:1.62}
html[data-passite-app] .auth-intro-list{display:grid;gap:0;max-width:470px;margin-top:8px;border-top:1px solid rgba(230,236,242,.16)}
html[data-passite-app] .auth-intro-list span{min-height:48px;gap:11px;padding:0;border:0;border-bottom:1px solid rgba(230,236,242,.16);border-radius:0;background:transparent;color:#E6ECF2;font-size:12.5px;backdrop-filter:none}
html[data-passite-app] .auth-intro-list span::before{content:"";flex:0 0 7px;width:7px;height:7px;border-radius:50%;background:#32E6E2;box-shadow:0 0 0 5px rgba(50,230,226,.1)}
html[data-passite-app] .auth-card{
  max-width:500px;
  min-height:min(600px,calc(100dvh - 56px));
  max-height:calc(100dvh - 56px);
  padding:clamp(38px,4vw,50px);
  border:1px solid color-mix(in srgb,var(--text) 11%,transparent);
  border-radius:30px;
  background:linear-gradient(155deg,var(--surface),color-mix(in srgb,var(--primary) 1.5%,var(--surface)));
  box-shadow:0 28px 72px rgba(18,24,31,.12),0 2px 7px rgba(18,24,31,.05);
}
html[data-passite-app][data-theme="dark"] .auth-card{box-shadow:0 30px 86px rgba(18,24,31,.35)}
html[data-passite-app] .auth-card-toolbar,html[data-passite-app] .demo-brand-row{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:34px}
html[data-passite-app] .auth-card .brand{font-size:28px}
html[data-passite-app] .auth-card .brand::before,html[data-passite-app] .demo-brand-row .brand::before{width:36px!important;height:36px!important}
html[data-passite-app] .auth-copy{margin-bottom:28px}
html[data-passite-app] .auth-copy>span{color:var(--ps-accent-ink,#12181F);font-size:10.5px;font-weight:820;letter-spacing:.13em}
html[data-passite-app][data-theme="dark"] .auth-copy>span{color:var(--ps-accent-ink,#12181F)}
html[data-passite-app] .auth-card h1{font-size:clamp(38px,3.4vw,46px)!important;line-height:1.02}
html[data-passite-app] .auth-copy p,html[data-passite-app] .security-copy{font-size:13.5px!important;line-height:1.58}
html[data-passite-app] .auth-card form{gap:18px}
html[data-passite-app] .auth-card :where(input:not([type="checkbox"]):not([type="radio"]),select,.btn){min-height:50px}
html[data-passite-app] .auth-theme-toggle.theme-switch-btn{position:relative;flex:0 0 54px;width:54px;min-width:54px;height:44px;min-height:44px;display:grid;place-items:center;border:0;background:transparent;box-shadow:none}
html[data-passite-app] .auth-theme-toggle.theme-switch-btn>.theme-switch-track{width:54px;height:30px;border-radius:999px}
html[data-passite-app] .theme-switch-btn{min-height:44px!important}
html[data-passite-app] .theme-switch-btn::after{inset:0;pointer-events:none}

/* Subscription surfaces ------------------------------------------------- */
html[data-passite-app] .client-sub-hero-v9{border-color:var(--ps-ink);background:radial-gradient(circle at 88% 4%,rgba(50,230,226,.15),transparent 34%),#12181F;color:#E6ECF2;box-shadow:0 18px 50px rgba(18,24,31,.16)}
html[data-passite-app] .client-sub-hero-v9 :where(h2,h3,strong){color:#E6ECF2}
html[data-passite-app] .client-sub-hero-v9 p{color:#E6ECF2;font-size:13.5px}
html[data-passite-app] .client-sub-kicker-v9{color:var(--ps-accent-ink,#12181F)!important}
html[data-passite-app] .client-sub-period-v9{border-color:var(--ps-ink);background:#12181F}
html[data-passite-app] .client-sub-period-v9 span{color:#E6ECF2}
html[data-passite-app] .client-sub-period-v9 em{color:var(--ps-accent-ink,#12181F)!important}
html[data-passite-app] .client-sub-period-v9 :where(span,strong,em){overflow-wrap:anywhere}
html[data-passite-app] .client-sub-hero-v9 .subscription-provider-note{color:#E6ECF2}
html[data-passite-app] .subscription-page-head-v9 h2,html[data-passite-app] .account-page-head h2{font-size:32px}
html[data-passite-app] .account-tabs-v11{grid-template-columns:repeat(4,minmax(0,1fr))}
html[data-passite-app] .subscription-error-v82{min-height:210px;display:grid;place-content:center;justify-items:start;gap:9px;padding:28px;color:var(--text)}
html[data-passite-app] .subscription-error-v82>strong{font-size:18px;letter-spacing:-.025em}
html[data-passite-app] .subscription-error-v82>span{max-width:52ch;color:var(--text-muted);font-size:13px;line-height:1.55}
html[data-passite-app] .subscription-error-actions-v82{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}

/* Feedback and overlays ------------------------------------------------- */
html[data-passite-app] .modal{border-radius:19px;box-shadow:0 32px 100px rgba(18,24,31,.22)}
html[data-passite-app] .modal-head{min-height:66px}
html[data-passite-app] .modal-head .close{border-radius:11px}
html[data-passite-app] .toast{border-radius:13px;box-shadow:var(--passite-premium-shadow-hover)}
html[data-passite-app] .pwa-install-card{border-radius:22px;box-shadow:0 36px 110px rgba(18,24,31,.28)}
html[data-passite-app] .pwa-install-icon{border-radius:21px}
html[data-passite-app] .panel.popover-open,
html[data-passite-app] :where(.c75-transaction,.p75-transaction,.p75-client-card,.site-row).popover-open{overflow:visible}
html[data-passite-app] :where(.p75-more>summary,.site-actions .site-more>summary,.lead-delete-icon){width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important}
html[data-passite-app] :where(.p75-more button,.term-menu button,.site-more button,.site-more a){min-height:44px}

@media(max-width:1100px){
  html[data-passite-app] .auth{grid-template-columns:minmax(0,490px) minmax(400px,470px);gap:18px;padding-inline:24px}
  html[data-passite-app] .auth-intro{padding:42px}
  html[data-passite-app] .auth-intro h2{font-size:42px}
  html[data-passite-app] .content{padding:25px 21px}
}

@media(min-width:981px) and (max-width:1100px){
  html[data-passite-app] .topbar{grid-template-columns:44px minmax(180px,1fr) minmax(220px,330px) auto;column-gap:10px;padding-inline:18px}
  html[data-passite-app] .topbar :where(.global-search,.topbar-client-search){width:100%;max-width:330px;justify-self:end}
  html[data-passite-app] .topbar-actions{justify-self:end}
}

@media(min-width:820px) and (max-width:980px){
  html[data-passite-app] .topbar{grid-template-columns:44px minmax(0,1fr) auto;column-gap:10px;padding-inline:18px}
  html[data-passite-app] .topbar :where(.global-search,.topbar-client-search){display:none}
  html[data-passite-app] .topbar-actions{justify-self:end}
  html[data-passite-app] .auth{grid-template-columns:minmax(420px,520px);align-items:center;justify-content:center;padding:28px;background:radial-gradient(circle at 50% 0,rgba(50,230,226,.09),transparent 36%),var(--bg)}
  html[data-passite-app][data-theme="dark"] .auth{background:radial-gradient(circle at 50% 0,rgba(50,230,226,.07),transparent 38%),var(--bg)}
  html[data-passite-app] .auth::before,html[data-passite-app] .auth-intro{display:none}
  html[data-passite-app] .auth-card{min-height:min(600px,calc(100dvh - 56px));max-height:calc(100dvh - 56px)}
}

@media(max-width:819px){
  html[data-passite-app]{--ds-layout-topbar-height:66px}
  html[data-passite-app] .topbar{grid-template-columns:44px minmax(0,1fr) auto;min-height:66px;padding:8px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));gap:9px}
  html[data-passite-app] .mobile-menu,html[data-passite-app] .topbar .icon-btn,html[data-passite-app] .profile-chip{width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important}
  html[data-passite-app] .topbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:0}
  html[data-passite-app] .page-title h1,html[data-passite-app] .topbar h1{font-size:20px}
  html[data-passite-app] .content{padding:18px max(12px,env(safe-area-inset-right)) calc(82px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}
  html[data-passite-app] .view{gap:13px}
  html[data-passite-app] :where(.panel,.card,.surface,.hero-panel,.progress-card,.version-card,.client-ticket-shell,.ticket-shell,.analytics-toolbar,.analytics-chart-panel,.analytics-breakdown,.analytics-kpi,.cc-kpi,.today-kpi,.stats article,.overview-metrics .metric,.subscription-kpis-v9 article){border-radius:14px;box-shadow:0 1px 2px rgba(18,24,31,.025),0 8px 24px rgba(18,24,31,.045)}
  html[data-passite-app] .panel-head{min-height:60px;padding:12px 14px}
  html[data-passite-app] .auth{display:block;min-height:100dvh;padding:0;overflow:auto;background:var(--surface)}
  html[data-passite-app] .auth::before,html[data-passite-app] .auth-intro{display:none}
  html[data-passite-app] .auth-card{width:100%;max-width:none;min-height:100dvh;max-height:none;padding:max(24px,calc(env(safe-area-inset-top) + 18px)) max(18px,env(safe-area-inset-right)) max(34px,calc(env(safe-area-inset-bottom) + 24px)) max(18px,env(safe-area-inset-left));border:0;border-radius:0;background:var(--surface);box-shadow:none}
  html[data-passite-app] .auth-card-toolbar,html[data-passite-app] .demo-brand-row{margin-bottom:34px}
  html[data-passite-app] .auth-card h1{font-size:36px!important}
  html[data-passite-app] .account-tabs-v11{display:flex;max-width:100%;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity}
  html[data-passite-app] .account-tabs-v11::-webkit-scrollbar{display:none}
  html[data-passite-app] .account-tabs-v11 button{flex:0 0 auto;min-width:max-content;scroll-snap-align:start}
  html[data-passite-app] .subscription-page-head-v9 h2,html[data-passite-app] .account-page-head h2{font-size:27px}
  html[data-passite-app] .modal{border-radius:18px 18px 0 0!important}
  html[data-passite-app] #view-journal .journal-date-nav{grid-template-columns:44px minmax(0,1fr) 44px!important}
  html[data-passite-app] #view-journal .journal-date-nav>.icon-btn{width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important}
  html[data-passite-app] #view-contacts .contact-card-actions{grid-template-columns:44px 44px minmax(0,1fr)!important;grid-auto-rows:minmax(44px,auto)!important}
  html[data-passite-app] #view-contacts .contact-card-actions .contact-action-icon{width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important}
  html[data-passite-app] #view-contacts .contact-card-actions .contact-edit-btn{height:44px!important;min-height:44px!important}
}

@media(max-width:480px){
  html[data-passite-app] .content{padding-inline:max(10px,env(safe-area-inset-left)) max(10px,env(safe-area-inset-right))}
  html[data-passite-app] .auth-card{padding-inline:16px}
  html[data-passite-app] .auth-card .brand::before,html[data-passite-app] .demo-brand-row .brand::before{width:31px!important;height:31px!important}
  html[data-passite-app] .auth-card h1{font-size:33px!important}
  html[data-passite-app] :where(.today-kpi,.commerce-metrics article,.owner-commerce-metrics article,.overview-metrics .metric,.stats article,.crm-report-kpis article,.subscription-kpis-v9 article,.analytics-kpi,.ds-owner-kpi){min-height:100px;padding:14px}
}

@media(max-width:359px){
  html[data-passite-app] .topbar{grid-template-columns:44px minmax(0,1fr) auto;padding-inline:8px}
  html[data-passite-app] .topbar-actions{gap:4px}
}

@media(prefers-reduced-motion:reduce){
  html[data-passite-app] .nav-item,html[data-passite-app] :where(.btn,.icon-btn,.text-btn,.text-action,.ghost-icon,.mini,.icon-action,.open-site,.today-action){transition:none!important}
}

/* assets/design-system-v3/icon-system-v1.css */

/* Passite shared interface icons v1 — one Lucide contract for Owner and Client. */
html[data-passite-app] .ui-icon,
html svg:has(>use[href*="lucide-sprite.svg#"]){
  display:block!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;
  flex:0 0 20px!important;overflow:visible;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
html[data-passite-app] .ui-icon.ui-icon--sm{width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;flex-basis:16px!important}
html[data-passite-app] .ui-icon.ui-icon--lg{width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;flex-basis:24px!important}
html[data-passite-app] .ui-icon use{pointer-events:none}

html svg:has(>use[href*="lucide-sprite.svg#"]) use{pointer-events:none}
html[data-passite-app] :is(.mobile-menu,.sidebar-close,.modal-head .close) svg{width:24px!important;height:24px!important;min-width:24px!important;flex-basis:24px!important;color:inherit!important;opacity:1}

/* assets/app-feedback.v1.css */

/* Shared feedback for Owner and Client; native hidden always wins. */
html[data-passite-app] .passite-boot{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;padding:24px;background:var(--bg,#E6ECF2);color:var(--text,#12181F);text-align:center;min-height:100dvh}
html[data-passite-app] .passite-boot-inner{width:min(100%,340px);display:grid;justify-items:center;gap:18px}
html[data-passite-app] .passite-boot img{width:72px;height:72px;border-radius:18px}
html[data-passite-app] .passite-boot h1{font-size:24px;line-height:1.3;margin:0;letter-spacing:-.02em}
html[data-passite-app] .passite-boot p{font-size:16px;line-height:1.6;margin:0;color:var(--text-secondary,#12181F)}
html[data-passite-app] .passite-boot a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;color:var(--text);border:1px solid var(--border-strong);border-radius:10px;font-size:14px;text-decoration:none}
html[data-passite-app] .passite-boot a:focus-visible{outline:3px solid var(--primary);outline-offset:4px}
html[data-passite-app] .passite-boot:not([data-slow]) .passite-boot-retry{display:none}
html[data-passite-app] .passite-wait-ring{display:inline-block;flex:none;width:24px;height:24px;border:3px solid var(--border-strong,#E6ECF2);border-top-color:var(--primary,#32E6E2);border-radius:50%;animation:passite-wait 900ms linear infinite}
html[data-passite-app] .passite-view-feedback{display:flex;align-items:center;gap:14px;padding:16px 18px;margin-bottom:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);grid-column:1/-1}
html[data-passite-app] .passite-view-feedback div{display:grid;gap:3px;min-width:0}
html[data-passite-app] .passite-view-feedback strong{font-size:14px;font-weight:600}
html[data-passite-app] .passite-view-feedback div>span{font-size:13px;color:var(--text-secondary)}
html[data-passite-app] .passite-network{position:fixed;z-index:10000;top:max(8px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 24px);padding:12px 16px;border:1px solid var(--warning);border-radius:12px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-md);font-size:14px;line-height:1.5;pointer-events:none}
html[data-passite-app] .passite-pending{position:fixed;z-index:10001;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100% - 24px);padding:14px 18px;border:1px solid var(--border-strong);border-radius:14px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-md);font-size:14px;line-height:1.5;pointer-events:none}
html[data-passite-app] :is(.passite-boot,.passite-network,.passite-pending)[hidden]{display:none!important}
@keyframes passite-wait{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){html[data-passite-app] .passite-wait-ring{animation:none}}

/* cabinet/assets/client-ui-v1.css */

/*
 * Passite Client workspace contract 20935
 * Client components; shared theme tokens are loaded after this file.
 * Do not add one-off cabinet overrides after this file. Update the contract
 * version, reference page and regression test together.
 */

html[data-passite-app="client"]{
  
  --client-ui-accent-strong:var(--ps-accent-ink);
  --client-ui-accent-soft:color-mix(in srgb,var(--client-ui-accent) 10%,var(--surface));
  --client-ui-ink:var(--text);
  --client-ui-muted:var(--text-muted);
  --client-ui-line:color-mix(in srgb,var(--border) 88%,transparent);
  --client-ui-surface:var(--surface);
  --client-ui-surface-soft:color-mix(in srgb,var(--surface-muted) 82%,var(--surface));
  --client-ui-radius-sm:10px;
  --client-ui-radius-md:14px;
  --client-ui-radius-lg:14px;
  --client-ui-shadow-sm:0 1px 2px rgba(18,24,31,.04),0 8px 20px -18px rgba(18,24,31,.28);
  --client-ui-shadow-lg:0 28px 72px -36px rgba(18,24,31,.48),0 8px 24px -18px rgba(18,24,31,.22);
  --client-ui-ease:cubic-bezier(.2,.8,.2,1);
  --client-ui-fast:150ms;
  --client-ui-normal:240ms;
}

/* Typography contract: compact metadata is allowed, actions and body copy stay readable. */
html[data-passite-app="client"] :where(.panel-note,.client-support-head p,.client-chat-welcome p,.modal-note){font-size:13px;line-height:1.55}
html[data-passite-app="client"] :where(.kicker,.nav-section-label,.client-message small,.journal-filter-group>span,.client-compose-actions small){font-size:12px;line-height:1.4}

/* Navigation 20934: quiet desktop rail, full-screen mobile navigation. */
html[data-passite-app="client"] .app{grid-template-columns:232px minmax(0,1fr)}
html[data-passite-app="client"] .sidebar{width:232px;padding:24px 14px 18px;background:var(--ps-panel);border-right:1px solid var(--client-ui-line);overflow-y:auto;overscroll-behavior:contain;box-shadow:none;backdrop-filter:none}
html[data-passite-app="client"] .sidebar::after{display:none}
html[data-passite-app="client"] .sidebar-head{margin:0;padding:0 12px 20px}
html[data-passite-app="client"] .sidebar-head .brand{transform:none;filter:none}
html[data-passite-app="client"] .workspace-tag{display:block;margin:0 12px 20px;color:var(--ps-secondary,var(--ps-ink));font-size:13px;overflow-wrap:anywhere}
html[data-passite-app="client"] .workspace-tag::before{display:none}
html[data-passite-app="client"] .nav-section-label{padding:18px 12px 8px;font-size:12px;font-weight:650;letter-spacing:.1em;color:var(--text-muted)}
html[data-passite-app="client"] .sidebar .nav-item{position:relative;min-height:44px;margin:2px 0;padding:10px 12px;gap:12px;border:1px solid transparent;border-radius:9px;color:var(--ps-ink);background:transparent;box-shadow:none;font-size:14px;font-weight:500;transform:none;transition:background 160ms ease,color 160ms ease}
html[data-passite-app="client"] .sidebar .nav-item::before{display:none}
html[data-passite-app="client"] .sidebar .nav-item.active{font-weight:650;background:var(--surface-selected);color:var(--ps-ink);box-shadow:inset 3px 0 #32E6E2}
html[data-passite-app="client"] .sidebar .nav-item:hover{background:var(--surface-muted);transform:none}
html[data-passite-app="client"] .sidebar .nav-item svg{color:inherit;opacity:1;transform:none}
html[data-passite-app="client"] .sidebar nav{flex:1 0 auto;overflow:visible;min-height:auto}
html[data-passite-app="client"] .sidebar-foot{flex:0 0 auto;margin-top:24px;padding-top:16px;border-top:1px solid var(--client-ui-line)}
html[data-passite-app="client"] .theme-control{min-height:48px;padding:0 12px;color:var(--ps-ink);font-size:13px}
html[data-passite-app="client"] .client-sidebar-close{display:none}
html[data-passite-app="client"] .sidebar-scrim{visibility:hidden;opacity:0;pointer-events:none;background:rgba(18,24,31,.36);transition:opacity 300ms ease,visibility 300ms ease}
html[data-passite-app="client"] .sidebar-scrim.open{visibility:visible;opacity:1;pointer-events:auto}
html[data-passite-app="client"] .mobile-menu svg{transition:transform 400ms cubic-bezier(.22,1,.36,1)}
html[data-passite-app="client"] .mobile-menu[aria-expanded="true"] svg{transform:rotate(90deg)}
@media(max-width:1100px){
 html[data-passite-app="client"] .app{grid-template-columns:minmax(0,1fr)}
 html[data-passite-app="client"] .sidebar{position:fixed;z-index:1200;inset:0;width:100%;height:100dvh;max-height:100dvh;max-width:none;padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));border:0;border-radius:0;background:var(--ps-paper);visibility:hidden;transform:translateY(-22px);opacity:0;pointer-events:none;transition:transform 480ms cubic-bezier(.22,1,.36,1),opacity 320ms ease,visibility 480ms}
 html[data-passite-app="client"] .sidebar.open{visibility:visible;transform:none;opacity:1;pointer-events:auto}
 html[data-passite-app="client"] .sidebar-head{padding:8px 60px 22px 0}
 html[data-passite-app="client"] .workspace-tag{margin:0 0 16px;padding-bottom:18px;border-bottom:1px solid var(--client-ui-line)}
 html[data-passite-app="client"] .sidebar .nav-item{min-height:52px;padding:10px 12px;font-size:clamp(19px,5vw,25px);line-height:1.3;letter-spacing:-.02em;border-radius:8px}
 html[data-passite-app="client"] .sidebar nav{transform:translateY(18px);opacity:0;transition:transform 440ms cubic-bezier(.22,1,.36,1),opacity 260ms ease}
 html[data-passite-app="client"] .sidebar.open nav{transform:none;opacity:1;transition-delay:70ms}
 html[data-passite-app="client"] .sidebar-foot{padding-top:12px;margin-top:20px;transform:translateY(12px);opacity:0;transition:transform 440ms cubic-bezier(.22,1,.36,1),opacity 260ms ease}
 html[data-passite-app="client"] .sidebar.open .sidebar-foot{transform:none;opacity:1;transition-delay:110ms}
 html[data-passite-app="client"] .sidebar-foot .nav-item{font-size:16px;min-height:46px}
 html[data-passite-app="client"] .client-sidebar-close{display:grid;place-items:center;position:fixed;z-index:3;top:max(22px,env(safe-area-inset-top));right:max(24px,env(safe-area-inset-right));width:44px;height:44px;border-radius:50%;background:var(--ps-panel);color:var(--ps-ink);border:1px solid var(--border-strong)}
 html[data-passite-app="client"] .nav-section-label{padding:16px 12px 6px;font-size:12px}
 html[data-passite-app="client"] .sidebar-scrim{z-index:1199}
}

/* Single support chat. Ticket workflow remains an implementation detail. */
html[data-passite-app="client"] .client-support-chat{
  width:min(940px,100%);min-height:calc(100dvh - 178px);margin:0 auto;display:grid;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden;
  border:1px solid var(--client-ui-line);border-radius:var(--client-ui-radius-lg);background:var(--client-ui-surface);box-shadow:var(--client-ui-shadow-sm);
}
html[data-passite-app="client"] .client-support-head{
  min-height:92px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:18px 22px;border-bottom:1px solid var(--client-ui-line);
  background:linear-gradient(180deg,color-mix(in srgb,var(--client-ui-accent) 4%,var(--surface)),var(--surface));
}
html[data-passite-app="client"] .client-support-avatar{width:46px;height:46px;display:grid;place-items:center;border-radius:15px;color:var(--client-ui-accent-strong);background:var(--client-ui-accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--client-ui-accent) 16%,transparent)}
html[data-passite-app="client"] .client-support-avatar svg{width:21px;height:21px}
html[data-passite-app="client"] .client-support-head h3{margin:2px 0 3px;font-size:18px;letter-spacing:-.025em}
html[data-passite-app="client"] .client-support-head p{margin:0;color:var(--client-ui-muted)}
html[data-passite-app="client"] .client-support-availability{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--client-ui-line);border-radius:999px;color:var(--client-ui-muted);background:var(--client-ui-surface-soft);font-size:12px;white-space:nowrap}
html[data-passite-app="client"] .client-support-availability i{display:none}
html[data-passite-app="client"] .client-ticket-conversation{position:relative;z-index:auto;inset:auto;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;background:linear-gradient(180deg,var(--client-ui-surface-soft),var(--client-ui-surface))}
html[data-passite-app="client"] .client-message-list{min-height:260px;max-height:calc(100dvh - 420px);overflow:auto;display:flex;flex-direction:column;gap:14px;padding:24px;scrollbar-gutter:stable}
html[data-passite-app="client"] .client-message{max-width:min(72%,620px);display:flex;flex-direction:column;gap:5px;align-self:flex-start}
html[data-passite-app="client"] .client-message.client{align-self:flex-end;align-items:flex-end}
html[data-passite-app="client"] .client-message-body{padding:11px 14px;border:1px solid var(--client-ui-line);border-radius:4px 16px 16px 16px;background:var(--client-ui-surface);color:var(--client-ui-ink);font-size:13.5px;line-height:1.55;box-shadow:var(--client-ui-shadow-sm)}
html[data-passite-app="client"] .client-message.client .client-message-body{border-color:color-mix(in srgb,var(--client-ui-accent) 22%,transparent);border-radius:16px 4px 16px 16px;background:color-mix(in srgb,var(--client-ui-accent) 12%,var(--surface));box-shadow:none}
html[data-passite-app="client"] .client-message small{padding:0 4px;color:var(--client-ui-muted)}
html[data-passite-app="client"] .client-message .attachments{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
html[data-passite-app="client"] .client-message .attachments a{padding:6px 8px;border-radius:8px;background:var(--client-ui-surface-soft);color:var(--client-ui-accent-strong);font-size:12px;font-weight:750;text-decoration:none}
html[data-passite-app="client"] .client-chat-compose{display:grid;gap:10px;margin:0;padding:15px 18px 17px;border-top:1px solid var(--client-ui-line);background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(14px)}
html[data-passite-app="client"] .client-chat-compose label{margin:0}
html[data-passite-app="client"] .client-chat-compose textarea{width:100%;min-height:76px;max-height:180px;resize:vertical;padding:13px 14px;border-radius:13px;background:var(--client-ui-surface-soft);font-size:14px;line-height:1.5}
html[data-passite-app="client"] .client-chat-compose textarea:focus{background:var(--client-ui-surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--client-ui-accent) 13%,transparent)}
html[data-passite-app="client"] .client-attachment-picker{display:flex;align-items:center;gap:10px;min-width:0}
html[data-passite-app="client"] .client-attachment-picker span{overflow:hidden;color:var(--client-ui-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}
html[data-passite-app="client"] .client-compose-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}
html[data-passite-app="client"] .client-compose-actions small{color:var(--client-ui-muted)}
html[data-passite-app="client"] .client-compose-actions .btn{min-width:126px}
html[data-passite-app="client"] .client-compose-actions svg{width:15px;height:15px}
html[data-passite-app="client"] .client-chat-welcome{align-self:center;max-width:420px;margin:auto;padding:36px 24px;text-align:center}
html[data-passite-app="client"] .client-chat-welcome-icon{width:54px;height:54px;display:grid;place-items:center;margin:0 auto 15px;border-radius:18px;color:var(--client-ui-accent-strong);background:var(--client-ui-accent-soft)}
html[data-passite-app="client"] .client-chat-welcome-icon svg{width:23px;height:23px}
html[data-passite-app="client"] .client-chat-welcome h4{margin:0 0 7px;font-size:19px;letter-spacing:-.025em}
html[data-passite-app="client"] .client-chat-welcome p{margin:0;color:var(--client-ui-muted)}
html[data-passite-app="client"] .client-ticket-empty{align-self:center;justify-self:center;display:grid;justify-items:center;gap:8px;padding:30px;text-align:center;color:var(--client-ui-muted)}
html[data-passite-app="client"] .client-ticket-empty b{color:var(--client-ui-ink)}
html[data-passite-app="client"] .client-chat-loader{width:24px;height:24px;border:2px solid var(--client-ui-line);border-top-color:var(--client-ui-accent);border-radius:50%;animation:client-ui-spin .8s linear infinite}
html[data-passite-app="client"] .client-closed-note{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:18px;padding:14px;border:1px solid var(--client-ui-line);border-radius:var(--client-ui-radius-md);background:var(--client-ui-surface-soft);font-size:13px}

/* Calendar: daily work first, reporting modes and settings stay available. */
html[data-passite-app="client"] .client-calendar-panel{overflow:visible;border-radius:var(--client-ui-radius-lg)}
html[data-passite-app="client"] .client-calendar-head{overflow:visible;padding:20px 22px}
html[data-passite-app="client"] .client-calendar-head::after{display:none}
html[data-passite-app="client"] .client-calendar-head h3{font-size:20px;letter-spacing:-.03em}
html[data-passite-app="client"] .client-calendar-actions{position:relative;align-items:center;flex-wrap:nowrap}
html[data-passite-app="client"] .client-calendar-actions .btn{min-height:40px}
html[data-passite-app="client"] .client-calendar-actions svg{width:15px;height:15px}
html[data-passite-app="client"] .journal-settings-menu{position:relative}
html[data-passite-app="client"] :where(.journal-settings-menu,.journal-view-more) summary{list-style:none;cursor:pointer}
html[data-passite-app="client"] :where(.journal-settings-menu,.journal-view-more) summary::-webkit-details-marker{display:none}
html[data-passite-app="client"] .journal-settings-popover{position:absolute;z-index:90;top:calc(100% + 8px);right:0;width:280px;padding:7px;border:1px solid var(--client-ui-line);border-radius:15px;background:var(--client-ui-surface);box-shadow:var(--client-ui-shadow-lg);animation:client-ui-pop var(--client-ui-fast) var(--client-ui-ease) both}
html[data-passite-app="client"] .journal-settings-popover button{appearance:none;width:100%;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:11px;padding:10px;border:0;border-radius:10px;background:transparent;color:var(--client-ui-ink);text-align:left;cursor:pointer}
html[data-passite-app="client"] .journal-settings-popover button:hover{background:var(--client-ui-surface-soft)}
html[data-passite-app="client"] .journal-settings-popover button>svg{width:18px;height:18px;color:var(--client-ui-accent-strong)}
html[data-passite-app="client"] .journal-settings-popover button span{display:grid;gap:2px}
html[data-passite-app="client"] .journal-settings-popover button b{font-size:12.5px}
html[data-passite-app="client"] .journal-settings-popover button small{color:var(--client-ui-muted);font-size:12px}
html[data-passite-app="client"] .journal-bar{display:grid;gap:12px;padding:14px 18px;border-block:1px solid var(--client-ui-line);background:var(--client-ui-surface-soft)}
html[data-passite-app="client"] .journal-nav{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
html[data-passite-app="client"] .journal-date-nav{display:flex;align-items:center;gap:6px}
html[data-passite-app="client"] .journal-date-nav .icon-btn{width:38px;height:38px;min-width:38px;min-height:38px;border-radius:10px;background:var(--client-ui-surface)}
html[data-passite-app="client"] .journal-date-field input{min-height:38px;border-radius:10px;background:var(--client-ui-surface);font-size:13px;font-weight:700}
html[data-passite-app="client"] .journal-view-controls{display:flex;align-items:center;gap:6px}
html[data-passite-app="client"] #view-journal .journal-mode-switch{width:auto;display:flex;grid-template-columns:none;gap:3px;padding:3px;border:1px solid var(--client-ui-line);border-radius:12px;background:var(--client-ui-surface);overflow:visible}
html[data-passite-app="client"] .journal-mode{min-height:32px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:var(--client-ui-muted);font-size:12px;font-weight:750;cursor:pointer;transition:color var(--client-ui-fast) ease,background var(--client-ui-fast) ease,box-shadow var(--client-ui-fast) ease}
html[data-passite-app="client"] .journal-mode:hover{color:var(--client-ui-ink);background:var(--client-ui-surface-soft)}
html[data-passite-app="client"] .journal-mode.active{color:var(--client-ui-accent-strong);background:var(--client-ui-accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--client-ui-accent) 13%,transparent)}
html[data-passite-app="client"] .journal-view-more{position:relative}
html[data-passite-app="client"] .journal-view-more>summary{display:flex;align-items:center;gap:5px;border:1px solid var(--client-ui-line);background:var(--client-ui-surface)}
html[data-passite-app="client"] .journal-view-more>summary svg{width:13px;height:13px;transition:transform var(--client-ui-fast) ease}
html[data-passite-app="client"] .journal-view-more[open]>summary svg{transform:rotate(180deg)}
html[data-passite-app="client"] .journal-view-more>div{position:absolute;z-index:80;top:calc(100% + 7px);right:0;min-width:150px;display:grid;gap:2px;padding:6px;border:1px solid var(--client-ui-line);border-radius:12px;background:var(--client-ui-surface);box-shadow:var(--client-ui-shadow-lg);animation:client-ui-pop var(--client-ui-fast) var(--client-ui-ease) both}
html[data-passite-app="client"] .journal-view-more>div .journal-mode{text-align:left}
html[data-passite-app="client"] .journal-filter-panel{border:1px solid var(--client-ui-line);border-radius:12px;background:var(--client-ui-surface)}
html[data-passite-app="client"] .journal-filter-panel>summary{min-height:42px;display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:9px;padding:0 12px;list-style:none;color:var(--client-ui-ink);cursor:pointer}
html[data-passite-app="client"] .journal-filter-panel>summary::-webkit-details-marker{display:none}
html[data-passite-app="client"] .journal-filter-panel>summary>svg:first-child{width:16px;height:16px;color:var(--client-ui-accent-strong)}
html[data-passite-app="client"] .journal-filter-panel>summary span{font-size:12px;font-weight:800}
html[data-passite-app="client"] .journal-filter-panel>summary small{color:var(--client-ui-muted);font-size:12px}
html[data-passite-app="client"] .journal-filter-chevron{width:14px;height:14px;color:var(--client-ui-muted);transition:transform var(--client-ui-fast) ease}
html[data-passite-app="client"] .journal-filter-panel[open] .journal-filter-chevron{transform:rotate(180deg)}
html[data-passite-app="client"] #view-journal .journal-filter-groups{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:12px;border-top:1px solid var(--client-ui-line)}
html[data-passite-app="client"] .journal-filter-group{min-width:0;display:grid;align-content:start;gap:7px}
html[data-passite-app="client"] .journal-filter-group>span{color:var(--client-ui-muted);font-weight:800;letter-spacing:.04em;text-transform:uppercase}
html[data-passite-app="client"] .journal-filter-action{color:var(--client-ui-accent-strong);font-size:12px;text-transform:none}
html[data-passite-app="client"] .journal-chip{min-height:30px;border-radius:9px;font-size:12px}
html[data-passite-app="client"] .journal-body{background:var(--client-ui-surface)}
html[data-passite-app="client"] .journal-month-grid{gap:1px;background:var(--client-ui-line)}
html[data-passite-app="client"] .journal-month-day{min-height:112px;background:var(--client-ui-surface);transition:background var(--client-ui-fast) ease,box-shadow var(--client-ui-fast) ease}
html[data-passite-app="client"] .journal-month-day:hover{z-index:1;background:color-mix(in srgb,var(--client-ui-accent) 3%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--client-ui-accent) 16%,transparent)}
html[data-passite-app="client"] :where(.journal-booking,.journal-week-item){border-radius:9px;box-shadow:0 4px 12px -10px rgba(18,24,31,.45);transition:transform var(--client-ui-fast) var(--client-ui-ease),box-shadow var(--client-ui-fast) ease}
html[data-passite-app="client"] :where(.journal-booking,.journal-week-item):hover{transform:translateY(-1px);box-shadow:0 8px 18px -12px rgba(18,24,31,.52)}

/* Dialogs: predictable header, scrollable body and visually separated actions. */
html[data-passite-app="client"] .modal-wrap{padding:clamp(12px,3vw,28px);background:rgba(18,24,31,.58);backdrop-filter:blur(8px);animation:client-ui-fade var(--client-ui-fast) ease both}
html[data-passite-app="client"] .modal{width:min(620px,100%);max-height:min(88dvh,820px);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid color-mix(in srgb,var(--border-strong) 86%,transparent);border-radius:var(--client-ui-radius-lg);background:var(--client-ui-surface);box-shadow:var(--client-ui-shadow-lg);animation:client-ui-modal var(--client-ui-normal) var(--client-ui-ease) both}
html[data-passite-app="client"] .modal-head{min-height:64px;padding:14px 18px;border-bottom:1px solid var(--client-ui-line);background:linear-gradient(180deg,color-mix(in srgb,var(--client-ui-accent) 3%,var(--surface)),var(--surface))}
html[data-passite-app="client"] .modal-head h3{font-size:17px;line-height:1.3;letter-spacing:-.025em}
html[data-passite-app="client"] .modal-head .close{width:38px;height:38px;min-width:38px;min-height:38px;border-radius:10px;transition:background var(--client-ui-fast) ease,transform var(--client-ui-fast) ease}
html[data-passite-app="client"] .modal-head .close:hover{background:var(--client-ui-surface-soft);transform:rotate(3deg)}
html[data-passite-app="client"] .modal-body{min-height:0;overflow:auto;padding:20px}
html[data-passite-app="client"] .modal-body :where(input,select,textarea){font-size:14px}
html[data-passite-app="client"] .modal-actions{position:sticky;z-index:2;bottom:-20px;display:flex;justify-content:flex-end;gap:9px;margin:20px -20px -20px;padding:14px 20px;border-top:1px solid var(--client-ui-line);background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(12px)}
html[data-passite-app="client"] .confirm-ui>p{margin:0;color:var(--client-ui-muted);font-size:14px;line-height:1.6}

/* Toasts and the notification drawer use the same feedback hierarchy. */
html[data-passite-app="client"] .toasts{z-index:var(--ds-z-toast);width:min(380px,calc(100vw - 28px));display:grid;gap:9px}
html[data-passite-app="client"] .toast{position:relative;min-height:62px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;padding:11px 10px 11px 12px;border:1px solid var(--client-ui-line);border-radius:14px;background:color-mix(in srgb,var(--surface-raised) 96%,transparent);color:var(--client-ui-ink);font-size:12.5px;line-height:1.45;box-shadow:var(--client-ui-shadow-lg);backdrop-filter:blur(14px);animation:client-ui-toast var(--client-ui-normal) var(--client-ui-ease) both}
html[data-passite-app="client"] .toast::after{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--client-ui-accent)}
html[data-passite-app="client"] .toast.error::after{background:var(--danger)}
html[data-passite-app="client"] .toast.warning::after{background:var(--warning)}
html[data-passite-app="client"] .toast.info::after{background:#12181F}
html[data-passite-app="client"] .toast-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:var(--client-ui-accent-soft);color:var(--client-ui-accent-strong)}
html[data-passite-app="client"] .toast-icon svg{width:16px;height:16px}
html[data-passite-app="client"] .toast-close{width:34px;height:34px;display:grid;place-items:center;border:0;border-radius:9px;background:transparent;color:var(--client-ui-muted);cursor:pointer}
html[data-passite-app="client"] .toast-close:hover{background:var(--client-ui-surface-soft);color:var(--client-ui-ink)}
html[data-passite-app="client"] .pwa-notification-drawer{border:1px solid var(--client-ui-line);border-radius:var(--client-ui-radius-lg);background:var(--client-ui-surface);box-shadow:var(--client-ui-shadow-lg)}
html[data-passite-app="client"] .pwa-notification-item{border-radius:12px;transition:background var(--client-ui-fast) ease}
html[data-passite-app="client"] .pwa-notification-item:hover{background:var(--client-ui-surface-soft)}

@keyframes client-ui-spin{to{transform:rotate(360deg)}}
@keyframes client-ui-fade{from{opacity:0}to{opacity:1}}
@keyframes client-ui-pop{from{opacity:0;transform:translateY(-5px) scale(.985)}to{opacity:1;transform:none}}
@keyframes client-ui-modal{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
@keyframes client-ui-toast{from{opacity:0;transform:translateX(18px) scale(.985)}to{opacity:1;transform:none}}

@media(max-width:819px){
  html[data-passite-app="client"] .client-support-chat{min-height:calc(100dvh - 118px);border-radius:16px}
  html[data-passite-app="client"] .client-support-head{grid-template-columns:auto minmax(0,1fr);min-height:80px;padding:14px 15px}
  html[data-passite-app="client"] .client-support-avatar{width:42px;height:42px;border-radius:13px}
  html[data-passite-app="client"] .client-support-head h3{font-size:16px}
  html[data-passite-app="client"] .client-support-head p{font-size:12px;line-height:1.4}
  html[data-passite-app="client"] .client-support-availability{grid-column:1/-1;justify-self:start;margin-top:-3px;padding:5px 8px;font-size:12px}
  html[data-passite-app="client"] .client-message-list{max-height:none;min-height:260px;padding:16px 12px}
  html[data-passite-app="client"] .client-message{max-width:88%}
  html[data-passite-app="client"] .client-message-body{font-size:13px}
  html[data-passite-app="client"] .client-chat-compose{padding:12px}
  html[data-passite-app="client"] .client-chat-compose textarea{min-height:68px;font-size:16px}
  html[data-passite-app="client"] .client-attachment-picker{align-items:flex-start;flex-direction:column;gap:5px}
  html[data-passite-app="client"] .client-compose-actions small{display:none}
  html[data-passite-app="client"] .client-compose-actions .btn{margin-left:auto;min-width:120px}
  html[data-passite-app="client"] .client-calendar-head{align-items:flex-start;padding:16px}
  html[data-passite-app="client"] .client-calendar-actions{width:auto!important;display:flex!important;flex:0 0 auto!important}
  html[data-passite-app="client"] #view-journal .client-calendar-actions>.btn,html[data-passite-app="client"] #view-journal .client-calendar-actions>details{flex:0 0 auto!important;min-width:0!important;width:auto!important}
  html[data-passite-app="client"] .journal-settings-menu>summary{font-size:0}
  html[data-passite-app="client"] .journal-settings-menu>summary svg{width:17px;height:17px}
  html[data-passite-app="client"] .journal-settings-popover{position:fixed;z-index:110;top:auto;right:12px;bottom:12px;left:12px;width:auto;padding:9px;border-radius:17px}
  html[data-passite-app="client"] .journal-settings-popover button{min-height:54px}
  html[data-passite-app="client"] .journal-bar{padding:12px}
  html[data-passite-app="client"] .journal-nav{display:grid;grid-template-columns:1fr;gap:10px}
  html[data-passite-app="client"] .journal-date-nav{width:100%}
  html[data-passite-app="client"] .journal-date-field{flex:1}
  html[data-passite-app="client"] .journal-date-field input{width:100%;font-size:16px}
  html[data-passite-app="client"] .journal-view-controls{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto}
  html[data-passite-app="client"] .journal-view-controls>.mobile-section-switcher{width:100%;padding:0;border:0;background:transparent}
  html[data-passite-app="client"] .journal-view-more>summary{min-height:46px;padding:0 12px;background:var(--client-ui-surface);font-size:12px}
  html[data-passite-app="client"] .journal-view-more>div{right:0}
  html[data-passite-app="client"] .journal-filter-panel>summary{grid-template-columns:auto 1fr auto;min-height:46px}
  html[data-passite-app="client"] .journal-filter-panel>summary small{display:none}
  html[data-passite-app="client"] #view-journal .journal-filter-groups{grid-template-columns:1fr;padding:10px}
  html[data-passite-app="client"] .journal-filter-group>.mobile-section-switcher{padding:0;border:0;background:transparent}
  html[data-passite-app="client"] .modal-wrap{align-items:end;padding:8px}
  html[data-passite-app="client"] .modal{width:100%;max-height:92dvh;border-radius:18px}
  html[data-passite-app="client"] .modal-head{min-height:58px;padding:11px 14px}
  html[data-passite-app="client"] .modal-body{padding:16px}
  html[data-passite-app="client"] .modal-actions,html[data-passite-app="client"] .confirm-ui .modal-actions{position:sticky!important;bottom:-16px!important;display:flex!important;grid-template-columns:none!important;gap:9px!important;width:auto!important;margin:18px -16px -16px!important;padding:12px 16px!important;border-top:1px solid var(--client-ui-line)!important;background:color-mix(in srgb,var(--surface) 96%,transparent)!important;flex-wrap:wrap}
  html[data-passite-app="client"] .modal-actions .btn{flex:1 1 140px}
  html[data-passite-app="client"] .toasts{left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));width:auto}
  html[data-passite-app="client"] .toast{min-height:58px;font-size:12px}
}

/* Client workspace contract 20934 — screenshot-driven mobile CRM.
 * One final layout replaces the contradictory legacy contact and modal rules. */
@media(max-width:819px){
  /* Client list: useful records before decorative dashboard volume. */
  html[data-passite-app="client"] #view-contacts>.panel{overflow:hidden;border-radius:16px;background:var(--client-ui-surface)}
  html[data-passite-app="client"] #view-contacts .panel-head.tools{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:14px}
  html[data-passite-app="client"] #view-contacts .panel-head .panel-note{display:none}
  html[data-passite-app="client"] #view-contacts .panel-head .tool-row{width:100%;display:flex;flex-wrap:nowrap;gap:7px;overflow-x:auto;padding:0 0 2px;scrollbar-width:none;scroll-snap-type:x proximity}
  html[data-passite-app="client"] #view-contacts .panel-head .tool-row::-webkit-scrollbar{display:none}
  html[data-passite-app="client"] #view-contacts .panel-head .tool-row .btn{flex:0 0 auto;min-height:40px;padding-inline:12px;scroll-snap-align:start}

  html[data-passite-app="client"] #view-contacts .commerce-metrics{
    display:flex!important;grid-template-columns:none!important;gap:8px!important;overflow-x:auto;overscroll-behavior-inline:contain;
    padding:10px 12px!important;border-bottom:1px solid var(--client-ui-line);background:var(--client-ui-surface-soft);scrollbar-width:none;scroll-snap-type:x proximity
  }
  html[data-passite-app="client"] #view-contacts .commerce-metrics::-webkit-scrollbar{display:none}
  html[data-passite-app="client"] #view-contacts .commerce-metrics>*{
    box-sizing:border-box;flex:0 0 132px;width:132px!important;height:auto!important;min-height:76px!important;display:flex!important;flex-direction:column;justify-content:space-between;
    gap:8px;padding:10px 11px!important;border:1px solid var(--client-ui-line)!important;border-radius:12px!important;background:var(--client-ui-surface)!important;box-shadow:none!important;scroll-snap-align:start
  }
  html[data-passite-app="client"] #view-contacts .commerce-metrics>*:nth-child(4),
  html[data-passite-app="client"] #view-contacts .commerce-metrics>*:nth-child(5){background:color-mix(in srgb,var(--client-ui-accent) 6%,var(--surface))!important}
  html[data-passite-app="client"] #view-contacts .commerce-metrics span{font-size:12px!important;line-height:1.25;font-weight:680;color:var(--client-ui-muted)}
  html[data-passite-app="client"] #view-contacts .commerce-metrics strong{font-size:21px!important;line-height:1;letter-spacing:-.035em}

  html[data-passite-app="client"] #view-contacts .crm-preset-quick{display:flex;flex-wrap:nowrap;gap:7px;margin:0;padding:9px 12px;overflow-x:auto;border:0;border-bottom:1px solid var(--client-ui-line);background:var(--client-ui-surface);scrollbar-width:none}
  html[data-passite-app="client"] #view-contacts .crm-preset-quick.hidden{display:none}
  html[data-passite-app="client"] #view-contacts .crm-preset-quick::-webkit-scrollbar{display:none}
  html[data-passite-app="client"] #view-contacts .crm-preset-quick-label{flex:0 0 auto;align-self:center;margin:0 3px 0 0;font-size:10px}
  html[data-passite-app="client"] #view-contacts .crm-preset-quick .btn{flex:0 0 auto;width:auto!important;min-height:38px;height:38px;padding-inline:12px;font-size:12px}

  html[data-passite-app="client"] #view-contacts .contact-toolbar{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:9px;padding:12px;background:var(--client-ui-surface)}
  html[data-passite-app="client"] #view-contacts .contact-toolbar>.field-search{grid-column:1/-1;width:100%;margin:0}
  html[data-passite-app="client"] #view-contacts .contact-toolbar>.compact-field{position:relative;display:grid!important;gap:6px;width:100%;min-width:0;margin:0}
  html[data-passite-app="client"] #view-contacts .contact-toolbar>.compact-field>span{position:static!important;width:auto!important;height:auto!important;margin:0!important;overflow:visible!important;clip:auto!important;white-space:normal!important;color:var(--client-ui-muted);font-size:12px;font-weight:750}
  html[data-passite-app="client"] #view-contacts .contact-toolbar :where(input,select){box-sizing:border-box;width:100%!important;min-width:0;height:46px!important;min-height:46px!important;margin:0;border-radius:12px;font-size:16px!important}
  html[data-passite-app="client"] #view-contacts .contact-list{border-top:1px solid var(--client-ui-line);border-right:0;border-bottom:0;background:var(--client-ui-surface)}
  html[data-passite-app="client"] #view-contacts .contact-row{min-height:68px;grid-template-columns:minmax(0,1fr) 38px!important;gap:10px;padding:10px 12px}
  html[data-passite-app="client"] #view-contacts .contact-avatar{width:42px;height:42px;border-radius:12px}
  html[data-passite-app="client"] #view-contacts .contact-row-copy b{font-size:14px;line-height:1.25}
  html[data-passite-app="client"] #view-contacts .contact-row-copy small{margin-top:3px;font-size:12px;line-height:1.3}
  html[data-passite-app="client"] #view-contacts .contact-row-more{width:36px;height:36px;border-radius:11px}
  html[data-passite-app="client"] #view-contacts .contact-list-footer{position:static;min-height:48px;padding:10px 12px;font-size:12px}

  /* Client 360: full viewport, compact identity, actions that never collide. */
  body.contact-detail-open #view-contacts{position:fixed!important;z-index:var(--ds-z-modal)!important;inset:0!important;width:100dvw!important;max-width:none!important;height:100dvh!important;margin:0!important;padding:0!important;overflow:hidden!important;animation:none!important;transform:none!important}
  body.contact-detail-open #view-contacts>.panel{position:absolute!important;inset:0!important;width:100%!important;max-width:none!important;height:100%!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;overflow:hidden!important;background:var(--client-ui-surface)!important;box-shadow:none!important}
  html[data-passite-app="client"] #view-contacts .contact-card.mobile-open{position:absolute!important;inset:0!important;width:100%!important;max-width:none!important;min-height:100%!important;height:100%!important;overflow-y:auto!important;overflow-x:hidden!important;padding:0 0 max(22px,env(safe-area-inset-bottom))!important;border:0!important;border-radius:0!important;background:var(--client-ui-surface)!important;scroll-padding-bottom:max(28px,env(safe-area-inset-bottom))}
  html[data-passite-app="client"] #view-contacts .contact-card-head{
    position:sticky!important;top:0!important;z-index:4!important;display:grid!important;grid-template-columns:44px minmax(0,1fr)!important;grid-template-rows:auto!important;gap:12px!important;
    padding:max(12px,env(safe-area-inset-top)) 14px 13px!important;border-bottom:1px solid var(--client-ui-line);background:color-mix(in srgb,var(--surface) 96%,transparent)!important;backdrop-filter:blur(16px)
  }
  html[data-passite-app="client"] #view-contacts .contact-mobile-back{grid-column:1!important;grid-row:1!important;width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important;margin:0;border-radius:12px}
  html[data-passite-app="client"] #view-contacts .contact-card-identity{grid-column:2!important;grid-row:1!important;display:block!important;min-width:0!important}
  html[data-passite-app="client"] #view-contacts .contact-card-avatar{display:none!important}
  html[data-passite-app="client"] #view-contacts .contact-card-identity>div{display:block!important;min-width:0!important}
  html[data-passite-app="client"] #view-contacts .contact-card-titlebar{display:block!important;min-width:0!important}
  html[data-passite-app="client"] #view-contacts .contact-card-titlebar h3{display:block;margin:1px 0 0!important;font-size:21px!important;line-height:1.15!important;letter-spacing:-.035em;overflow-wrap:anywhere}
  html[data-passite-app="client"] #view-contacts .contact-card-actions{display:flex!important;grid-template-columns:none!important;align-items:center!important;justify-content:flex-start!important;gap:8px!important;width:100%!important;min-width:0!important;margin:11px 0 0!important;flex-wrap:nowrap!important}
  html[data-passite-app="client"] #view-contacts .contact-card-actions>*{flex:0 0 auto!important;width:auto!important;min-width:0!important}
  html[data-passite-app="client"] #view-contacts .contact-card-actions .contact-action-icon{display:grid!important;place-items:center;width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important;padding:0!important;border-radius:12px}
  html[data-passite-app="client"] #view-contacts .contact-card-actions .contact-edit-btn{display:inline-flex!important;width:auto!important;min-width:96px!important;height:44px!important;min-height:44px!important;padding:0 15px!important;font-size:13px!important;overflow:visible!important;text-overflow:clip!important}
  html[data-passite-app="client"] #view-contacts .contact-card-meta{margin:9px 0 0!important;color:var(--client-ui-muted);font-size:13px!important;line-height:1.4!important}
  html[data-passite-app="client"] #view-contacts .contact-card-segment{margin-top:8px!important;gap:7px}
  html[data-passite-app="client"] #view-contacts .contact-card-segment small{font-size:12px;line-height:1.4}

  html[data-passite-app="client"] #view-contacts .contact-stats{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:1px!important;padding:0!important;border-bottom:1px solid var(--client-ui-line)!important;background:var(--client-ui-line)!important}
  html[data-passite-app="client"] #view-contacts .contact-stats article{box-sizing:border-box;min-width:0!important;min-height:72px!important;display:flex!important;flex-direction:column;justify-content:space-between;gap:8px;padding:12px 14px!important;border:0!important;border-radius:0!important;background:var(--client-ui-surface)!important;box-shadow:none!important}
  html[data-passite-app="client"] #view-contacts .contact-stats span{font-size:12px!important;line-height:1.3!important;color:var(--client-ui-muted)}
  html[data-passite-app="client"] #view-contacts .contact-stats strong{font-size:21px!important;line-height:1!important;white-space:normal!important}
  html[data-passite-app="client"] #view-contacts .contact-profile-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;padding:12px!important;border-bottom:1px solid var(--client-ui-line)}
  html[data-passite-app="client"] #view-contacts .contact-profile-grid article{box-sizing:border-box;min-width:0;min-height:72px;align-content:space-between;gap:8px;padding:11px 12px;border-radius:12px;background:var(--client-ui-surface-soft)}
  html[data-passite-app="client"] #view-contacts .contact-profile-grid span{font-size:12px;line-height:1.3}
  html[data-passite-app="client"] #view-contacts .contact-profile-grid strong{font-size:15px;line-height:1.25;overflow-wrap:anywhere}

  /* Bottom sheets: exactly one scroller and a real footer outside it. */
  html[data-passite-app="client"] .modal-wrap{box-sizing:border-box;align-items:end!important;padding:8px 0 0!important;overflow:hidden;background:rgba(18,24,31,.58)}
  html[data-passite-app="client"] .modal{box-sizing:border-box;width:100%!important;max-width:none!important;max-height:calc(100dvh - 8px)!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto!important;margin:0!important;border-width:1px 0 0!important;border-radius:20px 20px 0 0!important;overflow:hidden!important}
  html[data-passite-app="client"] .modal-head{min-height:60px;padding:10px 14px!important}
  html[data-passite-app="client"] .modal-head h3{font-size:18px;line-height:1.25}
  html[data-passite-app="client"] .modal-head .close{width:44px;height:44px;min-width:44px;min-height:44px}
  html[data-passite-app="client"] .modal-body{box-sizing:border-box;min-height:0!important;width:100%;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain;padding:14px!important;scrollbar-gutter:auto}
  html[data-passite-app="client"] .crm-preset-manager{gap:12px}
  html[data-passite-app="client"] .crm-preset-manager>.modal-note{margin:0;padding:11px 12px;border:1px solid var(--client-ui-line);border-radius:12px;background:var(--client-ui-surface-soft);font-size:12.5px;line-height:1.5}
  html[data-passite-app="client"] .crm-preset-manager>label:not(.switch-row){display:grid;gap:7px;margin:0}
  html[data-passite-app="client"] .crm-preset-manager>label:not(.switch-row)>span{font-size:12px;font-weight:750}
  html[data-passite-app="client"] .crm-preset-manager select{height:48px;min-height:48px;border-radius:12px}
  html[data-passite-app="client"] .crm-preset-preview{gap:10px;padding:12px;border-radius:13px}
  html[data-passite-app="client"] .crm-preset-preview-head{display:grid;gap:6px}
  html[data-passite-app="client"] .crm-preset-preview-head h4{font-size:13px;line-height:1.35}
  html[data-passite-app="client"] .crm-preset-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
  html[data-passite-app="client"] .crm-preset-stats>span{padding:8px 9px}
  html[data-passite-app="client"] .crm-preset-manager>.switch-row{box-sizing:border-box;min-height:0;padding:11px 12px;border-radius:12px;align-items:flex-start}
  html[data-passite-app="client"] .crm-preset-manager>.switch-row span{font-size:12px;line-height:1.35}
  html[data-passite-app="client"] .crm-preset-manager>.switch-row small{margin-top:3px;font-size:12px;line-height:1.4}
  html[data-passite-app="client"] .modal>[data-modal-footer]{box-sizing:border-box;position:static!important;bottom:auto!important;width:100%!important;display:grid!important;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)!important;gap:9px!important;margin:0!important;padding:11px 14px max(11px,env(safe-area-inset-bottom))!important;border-top:1px solid var(--client-ui-line)!important;background:color-mix(in srgb,var(--surface) 97%,transparent)!important;backdrop-filter:blur(14px)}
  html[data-passite-app="client"] .modal>[data-modal-footer] .btn{box-sizing:border-box;flex:none!important;width:100%!important;min-width:0!important;height:48px!important;min-height:48px!important;margin:0!important;padding:0 12px!important;font-size:13px!important}
}

@media(max-width:380px){
  html[data-passite-app="client"] #view-contacts .commerce-metrics>*{flex-basis:124px;width:124px!important}
  html[data-passite-app="client"] #view-contacts .contact-card-head{grid-template-columns:42px minmax(0,1fr)!important;gap:10px!important;padding-inline:11px!important}
  html[data-passite-app="client"] #view-contacts .contact-mobile-back{width:42px!important;min-width:42px!important;height:42px!important;min-height:42px!important}
  html[data-passite-app="client"] #view-contacts .contact-card-actions .contact-edit-btn{min-width:88px!important;padding-inline:12px!important}
}

/* Workspace primitives: hierarchy through typography and spacing, not nested outlines. */
html[data-passite-app="client"] .workspace{min-width:0;margin-left:0;background:var(--ps-paper)}
html[data-passite-app="client"] .content{width:100%;max-width:1560px;margin:0 auto;padding:32px 36px 48px}
html[data-passite-app="client"] .topbar{min-height:82px;padding:16px 36px;border-bottom:1px solid var(--client-ui-line);box-shadow:none;backdrop-filter:none}
html[data-passite-app="client"] .page-title h1{font-size:20px;line-height:1.25;font-weight:650;letter-spacing:-.025em}
html[data-passite-app="client"] .page-context{font-size:12px;letter-spacing:.08em;font-weight:600}
html[data-passite-app="client"] .page-title p{font-size:12px;line-height:1.5;color:var(--text-muted)}
html[data-passite-app="client"] .profile-chip{border:1px solid var(--border-strong);background:var(--surface-selected);color:var(--ps-ink);border-radius:50%;width:42px;height:42px;font-size:13px}
html[data-passite-app="client"] :is(.panel,.analytics-kpi,.analytics-chart-panel,.analytics-breakdown,.analytics-toolbar,.account-panel){border-radius:14px}
html[data-passite-app="client"] .panel-head{padding:20px 22px;border-color:var(--client-ui-line);background:transparent}
html[data-passite-app="client"] .panel-head::after{display:none}
html[data-passite-app="client"] :is(.panel-head h3,.analytics-section-head h3){font-size:18px;font-weight:650;letter-spacing:-.025em;line-height:1.3}
html[data-passite-app="client"] .kicker{font-size:12px;font-weight:600;letter-spacing:.06em;line-height:1.5}
html[data-passite-app="client"] :is(.btn,.icon-btn,.text-action){transition:background 160ms ease,border-color 160ms ease,box-shadow 160ms ease;color:var(--ps-ink);transform:none}
html[data-passite-app="client"] .btn{min-height:44px;padding:10px 16px;border-radius:9px;font-size:14px;font-weight:600;line-height:1.3;gap:8px;white-space:normal;box-shadow:none}
html[data-passite-app="client"] .btn.compact{min-height:40px;font-size:13px;padding:9px 13px}
html[data-passite-app="client"] .btn:hover{transform:none}
html[data-passite-app="client"] .icon-btn{min-width:44px;min-height:44px;border-radius:10px}
html[data-passite-app="client"] :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea){min-height:44px;border-radius:9px;font-size:14px;line-height:1.4;box-shadow:none}
html[data-passite-app="client"] label>span{font-size:13px;line-height:1.5;font-weight:550}
html[data-passite-app="client"] :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--ps-ink);outline-offset:3px;box-shadow:none}
html[data-passite-app="client"] :is(button,input,select,textarea):disabled{opacity:.55;cursor:not-allowed}
html[data-passite-app="client"] .btn.is-loading{opacity:1;cursor:wait}
html[data-passite-app="client"] :is(.commerce-tabs,.account-tabs,.account-subnav){gap:4px;background:transparent;border-color:var(--client-ui-line);padding:8px 16px}
html[data-passite-app="client"] .ui-tab{min-height:42px;border-radius:8px;font-size:13px;color:var(--text-muted)}
html[data-passite-app="client"] .ui-tab.active{background:var(--surface-selected);color:var(--ps-ink);box-shadow:inset 0 -2px #32E6E2}
html[data-passite-app="client"] :is(.status-badge,.security-state,.contact-segment,.commerce-status){font-size:12px;line-height:1.5;border-radius:6px}
html[data-passite-app="client"] .client-read-loading{min-height:150px;display:flex;align-items:center;justify-content:center;gap:12px;padding:24px;color:var(--text-muted);font-size:14px}
html[data-passite-app="client"] :is(.empty,.client-load-error){min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:28px 20px;text-align:center;color:var(--text-muted);font-size:14px;line-height:1.55}
html[data-passite-app="client"] :is(.empty,.client-load-error) strong{font-size:16px;font-weight:600;color:var(--ps-ink)}
html[data-passite-app="client"] .client-load-error svg{color:var(--ps-accent-ink)}
html[data-passite-app="client"] .client-section-note{font-size:13px;line-height:1.6;color:var(--text-muted)}
html[data-passite-app="client"] .today-hero{position:relative;display:flex;align-items:center;flex-wrap:wrap;gap:16px;padding:4px 0 26px;margin:0 0 24px;border:0;border-bottom:1px solid var(--client-ui-line);border-radius:0;background:transparent;box-shadow:none;min-height:0}
html[data-passite-app="client"] .today-hero::after{content:"";position:absolute;left:0;bottom:-1px;width:96px;height:2px;background:var(--ps-gradient)}
html[data-passite-app="client"] .today-hero-copy{flex:1 1 300px}
html[data-passite-app="client"] .today-hero h2{font-size:clamp(26px,2.7vw,38px);line-height:1.2;font-weight:600;letter-spacing:-.045em;color:var(--ps-ink);margin:7px 0}
html[data-passite-app="client"] .today-greeting{font-size:13px;color:var(--text-muted)}
html[data-passite-app="client"] .today-hero p{font-size:14px;line-height:1.5;max-width:60ch;color:var(--text-muted)}
html[data-passite-app="client"] .today-actions{display:flex;gap:8px;flex-wrap:wrap}
html[data-passite-app="client"] .today-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-bottom:24px;border:1px solid var(--client-ui-line);border-radius:12px;background:var(--ps-panel);overflow:hidden}
html[data-passite-app="client"] .today-kpi{padding:22px 24px;border:0;border-right:1px solid var(--client-ui-line);border-radius:0;background:transparent;box-shadow:none}
html[data-passite-app="client"] .today-kpi:last-child{border-right:0}
html[data-passite-app="client"] .today-kpis>:is(.client-load-error,.today-block-error){grid-column:1/-1}
html[data-passite-app="client"] .today-kpi strong{font-size:32px;letter-spacing:-.04em;font-weight:600;font-variant-numeric:tabular-nums}
html[data-passite-app="client"] .today-kpi span{font-size:13px;color:var(--text-muted)}
html[data-passite-app="client"] .ds-site-card{background:var(--ps-panel);color:var(--ps-ink)}
html[data-passite-app="client"] .ds-site-card :is(h3,p,.kicker,.site-state){color:var(--ps-ink)}
html[data-passite-app="client"] .ds-site-storage{display:none}
html[data-passite-app="client"] .client-site-facts>.ds-site-storage{display:block;padding:22px;border:1px solid var(--client-ui-line);border-radius:14px;background:var(--ps-panel)}
html[data-passite-app="client"] .ds-site-quick{gap:8px}
html[data-passite-app="client"] .quick-action{border:1px solid var(--client-ui-line);border-radius:10px;background:var(--surface-muted);color:var(--ps-ink);min-height:86px;box-shadow:none}
html[data-passite-app="client"] .quick-action svg{color:var(--ps-ink)}
html[data-passite-app="client"] :is(.attention-item,.today-upcoming-item){border-color:var(--client-ui-line);border-radius:8px}
html[data-passite-app="client"] .website-page-head p{max-width:70ch;font-size:14px;line-height:1.6}
html[data-passite-app="client"] .website-live-card{background:var(--ps-panel);color:var(--ps-ink);border-top:3px solid #12181F}
html[data-passite-app="client"] .website-live-card :is(h3,p,.kicker,.website-live-list){color:inherit}
html[data-passite-app="client"] .client-site-history{padding:0 22px 20px;margin-top:24px;border:1px solid var(--client-ui-line);border-radius:14px;background:var(--ps-panel)}
html[data-passite-app="client"] .client-site-history>summary{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;font-size:15px;font-weight:600}
html[data-passite-app="client"] .client-site-history:not([open]){padding-bottom:0}
html[data-passite-app="client"] .client-site-history>summary::-webkit-details-marker{display:none}
html[data-passite-app="client"] .client-site-history[open]>summary svg{transform:rotate(180deg)}
html[data-passite-app="client"] .client-version-summary{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding-block:14px;border-block:1px solid var(--client-ui-line)}
html[data-passite-app="client"] .client-version-summary article{display:grid;gap:6px;font-size:13px;line-height:1.6;overflow-wrap:anywhere}
html[data-passite-app="client"] .client-version-summary strong{font-weight:550}
html[data-passite-app="client"] .client-site-facts{display:grid;gap:20px;margin-top:24px}
html[data-passite-app="client"] .client-tools-menu{position:relative}
html[data-passite-app="client"] .client-tools-menu>summary{list-style:none;cursor:pointer}
html[data-passite-app="client"] .client-tools-menu>summary::-webkit-details-marker{display:none}
html[data-passite-app="client"] .client-tools-popover{position:absolute;z-index:80;top:calc(100% + 8px);right:0;min-width:240px;display:grid;gap:4px;padding:8px;border:1px solid var(--border-strong);border-radius:12px;background:var(--ps-raised,var(--ps-panel));box-shadow:var(--client-ui-shadow-lg)}
html[data-passite-app="client"] .client-tools-popover .btn{justify-content:flex-start;border:0;text-align:left;white-space:normal;background:transparent}
html[data-passite-app="client"] .client-summary-details{border-bottom:1px solid var(--client-ui-line)}
html[data-passite-app="client"] .client-summary-details>summary{padding:14px 22px;cursor:pointer;font-size:13px;color:var(--text-muted)}
html[data-passite-app="client"] #view-contacts>.panel{overflow:visible}
html[data-passite-app="client"] #view-contacts .panel-head .tool-row{overflow:visible}
html[data-passite-app="client"] .contact-toolbar{padding:16px 22px;border-color:var(--client-ui-line);background:var(--ps-panel)}
html[data-passite-app="client"] .contact-card{border-color:var(--client-ui-line)}
html[data-passite-app="client"] .client-support-head{background:var(--ps-panel)}
html[data-passite-app="client"] .client-support-availability{font-size:12px;white-space:normal}
html[data-passite-app="client"] .client-message-body{font-size:14px;overflow-wrap:anywhere}
html[data-passite-app="client"] .client-message-list{scroll-behavior:auto}
html[data-passite-app="client"] .client-support-history{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--client-ui-line);background:var(--ps-panel);font-size:13px}
html[data-passite-app="client"] .client-support-history select{flex:1;min-width:0}
html[data-passite-app="client"] .modal{width:min(740px,100%);max-height:min(90dvh,900px);border-radius:16px;animation:client-ui-modal 220ms var(--client-ui-ease) both}
html[data-passite-app="client"] .modal-head{min-height:72px;padding:16px 22px;background:var(--ps-panel);gap:16px}
html[data-passite-app="client"] .modal-head h3{font-size:20px;line-height:1.3;letter-spacing:-.025em;font-weight:650}
html[data-passite-app="client"] .modal-head .close{flex:0 0 44px;display:grid;place-items:center;width:44px;height:44px;min-height:44px;border-radius:50%;font-size:0}
html[data-passite-app="client"] .modal-head .close::before,html[data-passite-app="client"] .modal-head .close::after{display:none}
html[data-passite-app="client"] .modal-body{padding:22px;scroll-padding:20px;line-height:1.55}
html[data-passite-app="client"] .modal-body form{gap:16px}
html[data-passite-app="client"] .modal-note{padding:14px 16px;background:var(--surface-muted);border-radius:10px;font-size:13px;color:var(--text-muted)}
html[data-passite-app="client"] .modal>[data-modal-footer]{background:var(--ps-panel)!important;border-color:var(--client-ui-line)!important}

/* Isolated entry components cannot inherit legacy full-screen auth hero heights. */
html[data-passite-app="client"] .client-entry{box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,500px);align-items:center;gap:clamp(40px,7vw,110px);width:min(1200px,100%);min-height:100dvh;margin:0 auto;padding:64px 48px;background:transparent}
html[data-passite-app="client"] .client-entry-story{position:relative;align-self:center;padding:28px 0;min-height:0;background:transparent;color:var(--ps-ink)}
html[data-passite-app="client"] .client-entry-story::before{content:"";display:block;width:96px;height:4px;margin-bottom:32px;border-radius:3px;background:var(--ps-gradient)}
html[data-passite-app="client"] .client-entry-label{font-size:12px;letter-spacing:.12em;line-height:1.6;font-weight:600;color:var(--text-muted)}
html[data-passite-app="client"] .client-entry-story h2{font-size:clamp(32px,3.7vw,54px);font-weight:550;line-height:1.1;letter-spacing:-.045em;margin:22px 0;color:var(--ps-ink)}
html[data-passite-app="client"] .client-entry-story p{font-size:16px;line-height:1.7;max-width:42ch;color:var(--text-muted)}
html[data-passite-app="client"] .client-entry-points{display:grid;gap:16px;margin-top:32px;font-size:13px;color:var(--text-muted)}
html[data-passite-app="client"] .client-entry-points span{padding-left:16px;border-left:2px solid #32E6E2}
html[data-passite-app="client"] .client-entry-card{position:relative;width:100%;min-width:0;min-height:0;margin:0;padding:36px;border:1px solid var(--client-ui-line);border-radius:20px;background:var(--ps-panel);box-shadow:0 20px 60px rgba(18,24,31,.06);overflow:visible}
html[data-passite-app="client"] :is(.client-entry-toolbar,.demo-brand-row){display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0 0 38px;padding:0;min-height:44px}
html[data-passite-app="client"] .client-entry .brand{font-size:27px;color:var(--ps-ink)}
html[data-passite-app="client"] .client-entry-copy>span{font-size:12px;color:var(--text-muted)}
html[data-passite-app="client"] .client-entry-copy h1{margin:10px 0 12px;font-size:34px;font-weight:600;line-height:1.15;letter-spacing:-.045em;overflow-wrap:anywhere}
html[data-passite-app="client"] .client-entry-copy p{font-size:14px;color:var(--text-muted);line-height:1.6;margin:0 0 28px}
html[data-passite-app="client"] .client-entry form{display:grid;gap:20px;margin:0}
html[data-passite-app="client"] .client-entry label{display:grid;gap:8px;margin:0}
html[data-passite-app="client"] .client-entry :is(input,.btn){min-height:48px;font-size:16px}
html[data-passite-app="client"] .client-entry form>.btn.primary{margin-top:4px;width:100%}
html[data-passite-app="client"] .client-entry .slug-input{display:flex;align-items:center;border:1px solid var(--border-strong);border-radius:9px;background:var(--ps-paper);overflow:hidden}
html[data-passite-app="client"] .client-entry .slug-input input{min-width:0;border:0;border-radius:0;flex:1;box-shadow:none}
html[data-passite-app="client"] .client-entry .slug-input em{padding:0 12px;font-size:13px;color:var(--text-muted);font-style:normal}
html[data-passite-app="client"] .client-entry .slug-input:focus-within{outline:3px solid var(--ps-ink);outline-offset:3px}
html[data-passite-app="client"] .client-entry .slug-input input:focus-visible{outline:0}
html[data-passite-app="client"] .demo-brand-actions{display:flex;align-items:center;gap:8px}
html[data-passite-app="client"] .demo-brand-badge{font-size:12px;padding:4px 7px;border:1px solid var(--client-ui-line);border-radius:6px}
html[data-passite-app="client"] :is(.demo-slider-head,.demo-scroll-cue){display:none}
html[data-passite-app="client"] .demo-industry-grid{display:grid;grid-template-columns:1fr;gap:8px;overflow:visible;width:100%;margin:0;padding:0}
html[data-passite-app="client"] .demo-industry-grid>button{display:grid;grid-template-columns:24px minmax(0,1fr) 20px;align-items:center;gap:12px;width:100%;min-height:70px;padding:12px;border:1px solid var(--client-ui-line);border-radius:12px;background:var(--surface-muted);color:var(--ps-ink);text-align:left;cursor:pointer;transition:border-color 160ms ease,background 160ms ease}
html[data-passite-app="client"] .demo-industry-grid>button:hover{background:var(--surface-selected);border-color:var(--border-strong)}
html[data-passite-app="client"] .demo-industry-grid>button span{display:grid;gap:4px}
html[data-passite-app="client"] .demo-industry-grid>button b{font-size:14px;font-weight:600}
html[data-passite-app="client"] .demo-industry-grid>button small{font-size:12px;line-height:1.5;color:var(--text-muted)}
html[data-passite-app="client"] .demo-picker-note{display:flex;align-items:flex-start;gap:9px;margin:20px 0 0;font-size:12px;line-height:1.6;color:var(--text-muted)}
@media(max-width:1100px){html[data-passite-app="client"] .content{padding:24px}html[data-passite-app="client"] .topbar{padding:16px 24px}html[data-passite-app="client"] .topbar-client-search{display:none}}
@media(max-width:819px){
 html[data-passite-app="client"] .content{padding:20px 14px 32px}
 html[data-passite-app="client"] .topbar{min-height:76px;padding:12px 14px}
 html[data-passite-app="client"] .page-title h1{font-size:20px}
 html[data-passite-app="client"] .page-title p{display:none}
 html[data-passite-app="client"] .profile-chip{display:none}
 html[data-passite-app="client"] .panel-head{padding:18px 16px}
 html[data-passite-app="client"] .today-hero{gap:12px;margin-bottom:18px;padding-bottom:20px}
 html[data-passite-app="client"] .today-hero-copy{flex-basis:100%}
 html[data-passite-app="client"] .today-actions{flex:1}
 html[data-passite-app="client"] #clientRefreshToday{font-size:0;padding:10px;min-width:44px}
 html[data-passite-app="client"] :is(input:not([type="checkbox"]):not([type="radio"]),textarea,select){font-size:16px}
 html[data-passite-app="client"] .btn.compact{min-height:44px}
 html[data-passite-app="client"] .today-kpi{padding:16px}
 html[data-passite-app="client"] .today-kpi strong{font-size:28px}
 html[data-passite-app="client"] .client-version-summary{grid-template-columns:1fr}
 html[data-passite-app="client"] .client-tools-popover{position:fixed;top:auto;left:14px;right:14px;bottom:max(14px,env(safe-area-inset-bottom));min-width:0;z-index:150;padding:12px}
 html[data-passite-app="client"] .client-tools-popover .btn{min-height:48px}
 html[data-passite-app="client"] #view-contacts .panel-head .tool-row{justify-content:space-between;overflow:visible}
 html[data-passite-app="client"] .client-summary-details>summary{padding:14px 16px}
 html[data-passite-app="client"] .client-support-chat{min-height:calc(100dvh - 128px)}
 html[data-passite-app="client"] .client-support-head{padding:16px;gap:12px}
 html[data-passite-app="client"] .client-support-history{padding:10px 12px;flex-wrap:wrap}
 html[data-passite-app="client"] .client-support-history label{width:100%}
 html[data-passite-app="client"] .modal-wrap{padding:8px 8px max(8px,env(safe-area-inset-bottom));align-items:end}
 html[data-passite-app="client"] .modal{max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 16px);border-radius:18px}
 html[data-passite-app="client"] .modal-head{padding:12px 16px!important}
 html[data-passite-app="client"] .modal-head h3{font-size:18px}
 html[data-passite-app="client"] .modal-body{padding:18px 16px!important}
 html[data-passite-app="client"] .client-entry{display:block;min-height:100dvh;width:100%;padding:max(24px,env(safe-area-inset-top)) 20px max(24px,env(safe-area-inset-bottom))}
 html[data-passite-app="client"] .client-entry-story{display:none}
 html[data-passite-app="client"] .client-entry-card{max-width:460px;margin:0 auto;padding:8px 0 24px;border:0;border-radius:0;box-shadow:none;background:transparent}
 html[data-passite-app="client"] :is(.client-entry-toolbar,.demo-brand-row){margin-bottom:44px}
 html[data-passite-app="client"] .client-entry-copy h1{font-size:32px}
 html[data-passite-app="client"] .client-entry form{gap:22px}
 html[data-passite-app="client"] .client-entry-copy p{margin-bottom:28px}
}
@media(prefers-reduced-motion:reduce){html[data-passite-app="client"] :is(.sidebar,.sidebar nav,.sidebar-foot,.sidebar-scrim,.modal,.modal-wrap,.mobile-menu svg,.today-kpi,.demo-industry-grid>button){transition:none!important;animation:none!important}}
html[data-passite-app="client"][data-client-workspace="35"][data-theme="dark"] :is(.form-status.err,.today-block-error,.client-load-error strong,.btn.danger,.mini.danger){color:#FF9EB0}
html[data-client-workspace="35"] [role="tabpanel"][hidden]{display:none!important}
html[data-client-workspace="35"] .client-workspace-identity{display:grid;gap:6px;margin:0 0 14px;padding:14px 12px;border:1px solid var(--client-ui-line);border-radius:10px;background:var(--surface-muted)}
html[data-client-workspace="35"] .client-workspace-caption{font-size:12px;line-height:1.5;color:var(--text-muted)}
html[data-client-workspace="35"] .client-workspace-identity .workspace-tag{padding:0;margin:0;border:0;font-size:14px;line-height:1.4;font-weight:600;overflow-wrap:anywhere}
html[data-client-workspace="35"] .client-jump-trigger{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;border:1px solid var(--client-ui-line);border-radius:9px;background:var(--surface-muted);color:var(--text-muted);font:inherit;font-size:14px;text-align:left;cursor:pointer}
html[data-client-workspace="35"] .client-jump-trigger:hover{background:var(--surface-selected);color:var(--ps-ink)}
html[data-client-workspace="35"] .client-jump-trigger kbd{margin-left:auto;padding:2px 5px;border:1px solid var(--client-ui-line);border-radius:4px;white-space:nowrap;font:12px/1.5 ui-monospace,monospace}
html[data-client-workspace="35"] .client-jump-trigger svg{width:18px;height:18px;flex:0 0 18px}
html[data-client-workspace="35"] .client-sidebar-jump{width:100%;margin-bottom:10px}
html[data-client-workspace="35"] .client-header-tools{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-width:0}
html[data-client-workspace="35"] #clientJumpOpen{width:min(280px,100%)}
html[data-client-workspace="35"] .client-create{flex-shrink:0;white-space:nowrap}
html[data-client-workspace="35"] .client-create svg{width:18px;height:18px}
html[data-client-workspace="35"] :is(.page-context,.kicker,.nav-section-label,.client-message small,.client-command-help){font-size:12px;line-height:1.5}
html[data-client-workspace="35"] .ds-today-layout{grid-template-columns:minmax(0,1.65fr) minmax(300px,1fr);gap:24px}
html[data-client-workspace="35"] :is(.ds-today-main,.ds-today-side){display:grid;grid-template-columns:minmax(0,1fr);gap:24px}
html[data-client-workspace="35"] .ds-today-primary{min-height:0}
html[data-client-workspace="35"] .today-upcoming-head{padding:0 22px 12px;grid-template-columns:64px minmax(0,1fr) auto;font-size:12px;color:var(--text-muted)}
html[data-client-workspace="35"] .today-upcoming-row{grid-template-columns:64px minmax(0,1fr) auto;gap:14px;min-height:84px;padding:16px 22px;border:0;border-top:1px solid var(--client-ui-line);border-radius:0;background:transparent;text-align:left}
html[data-client-workspace="35"] .today-upcoming-row>b{font-size:15px;font-weight:550;font-variant-numeric:tabular-nums}
html[data-client-workspace="35"] .today-upcoming-copy em{font-size:15px;font-style:normal;font-weight:600}
html[data-client-workspace="35"] .today-upcoming-copy small{margin-top:6px;font-size:13px;line-height:1.5;color:var(--text-muted)}
html[data-client-workspace="35"] .today-upcoming-row:hover{background:var(--surface-muted)}
html[data-client-workspace="35"] .today-badge{font-size:12px;line-height:1.5}
html[data-client-workspace="35"] .today-attention-row{padding:14px 20px;min-height:60px;border:0;border-bottom:1px solid var(--client-ui-line);border-radius:0;font-size:14px;line-height:1.5}
html[data-client-workspace="35"] .today-clear{padding:24px 22px;display:grid;gap:8px;font-size:14px;line-height:1.6;color:var(--text-muted)}
html[data-client-workspace="35"] .today-clear b{font-weight:550;color:var(--ps-ink)}
html[data-client-workspace="35"] .today-clear .btn{justify-self:start;margin-top:8px}
html[data-client-workspace="35"] .today-activity-row{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:baseline;gap:14px;padding:14px 22px;border-bottom:1px solid var(--client-ui-line);font-size:14px;line-height:1.6;overflow-wrap:anywhere}
html[data-client-workspace="35"] .today-activity-row:last-child{border-bottom:0}
html[data-client-workspace="35"] .today-activity-row b{font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--text-muted)}
html[data-client-workspace="35"] .client-recent-list>.client-section-note{padding:0 22px 20px}
html[data-client-workspace="35"] .today-load-full{margin-top:24px}
html[data-client-workspace="35"] .today-load{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:22px}
html[data-client-workspace="35"] .today-load-row{padding:0;border:0}
html[data-client-workspace="35"] .today-load-head{font-size:14px}
html[data-client-workspace="35"] .today-load-head small{font-size:13px}
html[data-client-workspace="35"] .client-section-tabs{display:flex;gap:24px;align-items:stretch;min-width:0;max-width:100%;margin:0 0 24px;border-bottom:1px solid var(--client-ui-line);overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}
html[data-client-workspace="35"] .client-section-tabs>button{position:relative;flex:0 0 auto;min-height:52px;padding:12px 0;border:0;border-radius:0;background:transparent;color:var(--text-muted);font:inherit;font-size:14px;font-weight:500;white-space:nowrap;cursor:pointer}
html[data-client-workspace="35"] .client-section-tabs>button[aria-selected="true"]{color:var(--ps-ink);font-weight:650;box-shadow:inset 0 -3px var(--client-ui-accent)}
html[data-client-workspace="35"] .client-section-tabs>button:hover{color:var(--ps-ink)}
html[data-client-workspace="35"] .client-section-tabs>button:focus-visible{outline-offset:-4px}
html[data-client-workspace="35"] :is(.website-page-head,.account-page-head,.client-payments-heading){margin:0 0 20px}
html[data-client-workspace="35"] :is(.website-page-head,.account-page-head,.client-payments-heading) h2{margin:0 0 8px;font-size:28px;font-weight:600;line-height:1.2;letter-spacing:-.035em}
html[data-client-workspace="35"] :is(.website-page-head,.account-page-head,.client-payments-heading) p{margin:0;max-width:65ch;font-size:14px;line-height:1.6;color:var(--text-muted)}
html[data-client-workspace="35"] .website-content-grid{grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:24px}
html[data-client-workspace="35"] :is(.client-form-details,.client-payment-connection){border-top:1px solid var(--client-ui-line)}
html[data-client-workspace="35"] :is(.client-form-details,.client-payment-connection)>summary{padding:18px 0;min-height:56px;font-size:14px;font-weight:600;cursor:pointer;color:var(--ps-ink)}
html[data-client-workspace="35"] .client-form-details-body{display:grid;gap:18px;padding:4px 0 20px}
html[data-client-workspace="35"] .client-payment-connection>summary{padding:20px 22px}
html[data-client-workspace="35"] .ds-site-card{padding:24px;border:1px solid var(--client-ui-line);border-radius:12px;box-shadow:none;min-height:0}
html[data-client-workspace="35"] .ds-site-quick{display:none}
html[data-client-workspace="35"] .ds-site-details{display:grid}
html[data-client-workspace="35"] .ds-site-card h3{font-size:24px;line-height:1.35;overflow-wrap:anywhere}
html[data-client-workspace="35"] .payment-client-grid{display:flex;flex-direction:column;gap:24px}
html[data-client-workspace="35"] .payment-client-history{order:-1}
html[data-client-workspace="35"] .client-unsaved-note{margin:0;padding:12px 14px;border-left:3px solid var(--client-ui-accent);border-radius:0 8px 8px 0;background:var(--surface-selected);color:var(--ps-ink);font-size:14px;line-height:1.5}
html[data-client-workspace="35"] .client-list-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:8px 22px;border-top:1px solid var(--client-ui-line);font-size:13px;line-height:1.5;color:var(--text-muted)}
html[data-client-workspace="35"] .client-list-caption .text-action{min-height:36px;padding:4px 0;font-size:13px}
html[data-client-workspace="35"] #view-contacts .contact-layout{grid-template-columns:minmax(280px,1fr) minmax(360px,1.05fr);min-height:520px}
html[data-client-workspace="35"] #view-contacts .contact-list::before{display:none}
html[data-client-workspace="35"] #view-contacts .contact-row{grid-template-columns:minmax(0,1fr) 24px;gap:10px;padding:18px 20px;min-height:98px}
html[data-client-workspace="35"] #view-contacts .contact-row :is(.contact-last,.contact-activity,.contact-list-status){display:none}
html[data-client-workspace="35"] #view-contacts .contact-row .contact-person{grid-column:1;grid-row:1}
html[data-client-workspace="35"] #view-contacts .contact-row-segment{grid-column:1;grid-row:2;display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding-left:52px}
html[data-client-workspace="35"] #view-contacts .contact-row-segment small{font-size:12px;line-height:1.5;color:var(--text-muted)}
html[data-client-workspace="35"] #view-contacts .contact-row-more{grid-column:2;grid-row:1/3;display:grid;place-items:center;width:24px;height:32px;border:0;background:transparent;color:var(--text-muted)}
html[data-client-workspace="35"] #view-contacts .contact-row-more svg{width:18px;height:18px}
html[data-client-workspace="35"] #view-contacts .contact-avatar{width:40px;height:40px;border-radius:50%;flex-basis:40px}
html[data-client-workspace="35"] #view-contacts .contact-row-copy b{font-size:15px;font-weight:600}
html[data-client-workspace="35"] #view-contacts .contact-row-copy small{font-size:13px}
html[data-client-workspace="35"] #view-contacts .contact-row.active{box-shadow:inset 3px 0 var(--client-ui-accent)}
html[data-client-workspace="35"] #view-contacts .contact-card{min-width:0;padding:0;border-radius:0;box-shadow:none}
html[data-client-workspace="35"] #view-contacts .contact-card-head{padding:22px;border-bottom:1px solid var(--client-ui-line)}
html[data-client-workspace="35"] #view-contacts .contact-card-titlebar h3{font-size:24px;line-height:1.25;font-weight:600}
html[data-client-workspace="35"] #view-contacts .contact-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;background:var(--ps-panel)}
html[data-client-workspace="35"] #view-contacts .contact-stats article{padding:16px 22px;border:0;border-bottom:1px solid var(--client-ui-line);border-right:1px solid var(--client-ui-line);border-radius:0;min-height:88px;background:transparent}
html[data-client-workspace="35"] #view-contacts .contact-stats article:nth-child(2n){border-right:0}
html[data-client-workspace="35"] #view-contacts .contact-stats span{font-size:12px;line-height:1.5}
html[data-client-workspace="35"] #view-contacts .contact-stats strong{font-size:24px;line-height:1.25;font-weight:600;font-variant-numeric:tabular-nums}
html[data-client-workspace="35"] #view-contacts .client-contact-tabs{gap:22px;margin:0;padding:0 22px}
html[data-client-workspace="35"] #view-contacts .client-contact-pane{padding:20px 22px}
html[data-client-workspace="35"] #view-contacts .client-contact-pane>:first-child{margin-top:0}
html[data-client-workspace="35"] #view-contacts .client-contact-pane>:last-child{margin-bottom:0}
html[data-client-workspace="35"] #view-contacts .contact-profile-grid{padding:0!important;border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
html[data-client-workspace="35"] #view-contacts .contact-profile-grid article{padding:14px;border:1px solid var(--client-ui-line);border-radius:10px;background:var(--surface-muted)}
html[data-client-workspace="35"] #view-contacts .contact-profile-grid span{font-size:12px}
html[data-client-workspace="35"] #view-contacts .contact-profile-grid strong{font-size:15px;overflow-wrap:anywhere}
html[data-client-workspace="35"] #view-contacts :is(.contact-note,.contact-note-form,.contact-timeline,.loyalty-card,.industry-extension-card){margin-inline:0}
html[data-client-workspace="35"] #view-contacts :is(.client-contact-back,.client-contact-error-back){display:flex;align-items:center;gap:8px;margin:16px;min-height:44px}
html[data-client-workspace="35"] .client-commerce-filter{display:grid;grid-template-columns:minmax(200px,1fr) minmax(160px,200px) auto;align-items:center;gap:14px;padding:18px 22px;border-bottom:1px solid var(--client-ui-line)}
html[data-client-workspace="35"] .client-commerce-filter label{margin:0;width:100%;max-width:none}
html[data-client-workspace="35"] .client-commerce-filter :is(input,select){width:100%;margin:0}
html[data-client-workspace="35"] #clientCommerceCount{font-size:12px;line-height:1.5;color:var(--text-muted);white-space:nowrap}
html[data-client-workspace="35"] .c75-catalog-row{grid-template-columns:64px minmax(0,1fr) minmax(100px,150px) auto;gap:20px;padding:20px 22px;border:0;border-bottom:1px solid var(--client-ui-line);border-radius:0;background:transparent;box-shadow:none}
html[data-client-workspace="35"] .c75-catalog-media{width:64px;height:64px;border-radius:10px;background:var(--surface-muted)}
html[data-client-workspace="35"] .c75-catalog-media img{width:100%;height:100%;object-fit:cover;filter:none}
html[data-client-workspace="35"] .c75-catalog-copy b{font-size:15px;line-height:1.5;font-weight:600}
html[data-client-workspace="35"] .c75-catalog-copy>span{font-size:12px;line-height:1.5;color:var(--text-muted)}
html[data-client-workspace="35"] .c75-catalog-copy p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin:6px 0;font-size:13px;line-height:1.5;color:var(--text-muted)}
html[data-client-workspace="35"] .c75-catalog-price strong{font-size:17px;line-height:1.4;font-weight:550;font-variant-numeric:tabular-nums}
html[data-client-workspace="35"] .c75-row-actions{display:flex;flex-wrap:wrap;gap:8px}
html[data-client-workspace="35"] :is(.booking-card,.c75-settings-block){border-radius:10px;box-shadow:none}
html[data-client-workspace="35"] :is(.booking-reference,.booking-info)>span{font-size:12px;color:var(--text-muted)}
html[data-client-workspace="35"] .booking-info>strong{font-size:15px;line-height:1.5;font-weight:600}
html[data-client-workspace="35"] .booking-info>small{font-size:13px;line-height:1.6;overflow-wrap:anywhere}
html[data-client-workspace="35"] .account-layout-v11{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:start}
html[data-client-workspace="35"] .account-hub-v11{display:block;position:sticky;top:110px;padding:0;overflow:hidden}
html[data-client-workspace="35"] .account-identity-v11{display:flex;align-items:flex-start;flex-wrap:wrap;gap:12px;padding:20px;border-bottom:1px solid var(--client-ui-line);background:var(--ps-panel);color:var(--ps-ink)}
html[data-client-workspace="35"] .account-identity-copy-v11{width:100%;min-width:0}
html[data-client-workspace="35"] .account-identity-copy-v11 h3{font-size:18px;line-height:1.4;overflow-wrap:anywhere}
html[data-client-workspace="35"] .account-identity-copy-v11 p{font-size:13px;color:var(--text-muted);overflow-wrap:anywhere}
html[data-client-workspace="35"] .account-identity-status-v11{position:static;font-size:12px;color:var(--text-muted)}
html[data-client-workspace="35"] .account-tabs-v11{display:grid;grid-template-columns:1fr;gap:4px;padding:12px;background:transparent;border:0}
html[data-client-workspace="35"] .account-tabs-v11 button{justify-content:flex-start;min-height:46px;padding:10px 12px;border:0;border-radius:8px;background:transparent;font-size:14px;color:var(--text-muted);box-shadow:none}
html[data-client-workspace="35"] .account-tabs-v11 button.active{background:var(--surface-selected);color:var(--ps-ink);box-shadow:inset 3px 0 var(--client-ui-accent)}
html[data-client-workspace="35"] .account-tabs-v11 svg{width:18px;height:18px}
html[data-client-workspace="35"] .client-support-chat{max-width:100%;width:100%;border-radius:14px}
html[data-client-workspace="35"] .client-support-head{background:var(--ps-panel);min-height:90px}
html[data-client-workspace="35"] .client-support-availability{font-size:12px;background:transparent;border:0;border-radius:0;white-space:normal}
html[data-client-workspace="35"] .client-message{max-width:min(80%,680px)}
html[data-client-workspace="35"] .client-message-body{font-size:14px;line-height:1.65;overflow-wrap:anywhere;box-shadow:none}
html[data-client-workspace="35"] .client-message .attachments a{font-size:13px;min-height:36px;display:inline-flex;align-items:center;overflow-wrap:anywhere}
html[data-client-workspace="35"] .client-attachment-picker span{font-size:12px}
html[data-client-workspace="35"] .client-chat-compose textarea{font-size:16px}
html[data-client-workspace="35"] :is(.journal-mode,.journal-filter-panel>summary span,.journal-chip,.journal-settings-popover button b){font-size:13px}
html[data-client-workspace="35"] :is(.journal-filter-panel>summary small,.journal-settings-popover button small,.journal-filter-action){font-size:12px}
html[data-client-workspace="35"] .modal{width:min(740px,100%);max-height:90dvh;border-radius:16px;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;animation:client-ui-pop 240ms cubic-bezier(.22,1,.36,1)}
html[data-client-workspace="35"] .modal-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:24px}
html[data-client-workspace="35"] .modal-head{padding:20px 24px;min-height:76px}
html[data-client-workspace="35"] .modal-head h3{font-size:21px;font-weight:600;line-height:1.3}
html[data-client-workspace="35"] .modal-head .close{width:44px;height:44px;flex-shrink:0;border-radius:50%}
html[data-client-workspace="35"] .c75-modal-catalog{width:min(1000px,100%)}
html[data-client-workspace="35"] .client-confirm-modal{width:min(480px,100%)}
html[data-client-workspace="35"] .client-command-modal{width:min(600px,100%)}
html[data-client-workspace="35"] .client-command-modal .modal-body{padding:0}
html[data-client-workspace="35"] .client-command-search{display:flex;align-items:center;gap:12px;margin:0;padding:14px 24px;border-bottom:1px solid var(--client-ui-line)}
html[data-client-workspace="35"] .client-command-search>svg{width:20px;height:20px;flex:0 0 20px;color:var(--text-muted)}
html[data-client-workspace="35"] .client-command-search input{width:100%;min-width:0;font-size:16px;border:0!important;background:transparent!important;padding:10px 0;box-shadow:none}
html[data-client-workspace="35"] .client-command-results{max-height:52dvh;overflow-y:auto;padding:10px;overscroll-behavior:contain}
html[data-client-workspace="35"] .client-command-results>button{display:grid;grid-template-columns:24px minmax(0,1fr) 18px;align-items:center;gap:14px;width:100%;min-height:70px;padding:12px 14px;border:0;border-radius:10px;background:transparent;color:var(--ps-ink);font:inherit;text-align:left;cursor:pointer}
html[data-client-workspace="35"] .client-command-results>button:hover{background:var(--surface-selected)}
html[data-client-workspace="35"] .client-command-results>button:focus-visible{outline-offset:-3px;background:var(--surface-selected)}
html[data-client-workspace="35"] .client-command-results>button>svg{width:22px;height:22px;color:var(--text-muted)}
html[data-client-workspace="35"] .client-command-results>button>svg:last-child{width:16px;height:16px}
html[data-client-workspace="35"] .client-command-results b{display:block;font-size:15px;font-weight:550;line-height:1.4;overflow-wrap:anywhere}
html[data-client-workspace="35"] .client-command-results small{display:block;margin-top:4px;font-size:13px;line-height:1.5;color:var(--text-muted)}
html[data-client-workspace="35"] .client-command-help{margin:0;padding:12px 24px;border-top:1px solid var(--client-ui-line);color:var(--text-muted)}
@media(min-width:1101px){
 html[data-client-workspace="35"] .topbar{grid-template-columns:minmax(180px,1fr) auto auto}
 html[data-client-workspace="35"] #view-contacts .contact-list{max-height:calc(100dvh - 240px);min-height:440px;overflow:auto;overscroll-behavior:contain}
 html[data-client-workspace="35"] #view-contacts .contact-card{max-height:calc(100dvh - 240px);min-height:440px;overflow:auto;overscroll-behavior:contain}
}
@media(max-width:1350px) and (min-width:1101px){
 html[data-client-workspace="35"] #clientJumpOpen{display:none}
 html[data-client-workspace="35"] .c75-catalog-row{grid-template-columns:64px minmax(0,1fr) auto}
 html[data-client-workspace="35"] .c75-row-actions{grid-column:2/-1}
}
@media(max-width:1100px){
 html[data-client-workspace="35"] .topbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:12px;padding:14px 24px}
 html[data-client-workspace="35"] #clientJumpOpen{display:none}
 html[data-client-workspace="35"] .content{padding:24px 24px 48px}
 html[data-client-workspace="35"] .sidebar .client-workspace-identity{margin-bottom:14px}
 html[data-client-workspace="35"] .sidebar .client-sidebar-jump{margin-bottom:8px}
 html[data-client-workspace="35"] .sidebar .nav-section-label{font-size:12px}
 html[data-client-workspace="35"] .ds-today-layout{grid-template-columns:1fr}
 html[data-client-workspace="35"] .ds-today-side{grid-template-columns:repeat(2,minmax(0,1fr))}
 html[data-client-workspace="35"] #view-contacts .contact-layout{grid-template-columns:1fr}
 html[data-client-workspace="35"] .account-layout-v11{grid-template-columns:210px minmax(0,1fr)}
}
@media(max-width:819px){
 html[data-client-workspace="35"] .content{padding:22px 16px max(32px,env(safe-area-inset-bottom))}
 html[data-client-workspace="35"] .topbar{min-height:76px;padding:12px 16px;gap:10px}
 html[data-client-workspace="35"] .topbar .topbar-actions{gap:0}
 html[data-client-workspace="35"] .topbar .profile-chip{display:none}
 html[data-client-workspace="35"] .page-title h1{font-size:18px}
 html[data-client-workspace="35"] .page-context{font-size:12px;letter-spacing:0}
 html[data-client-workspace="35"] .client-create{min-width:44px;width:44px;height:44px;padding:0}
 html[data-client-workspace="35"] .client-create>span{display:none}
 html[data-client-workspace="35"] .client-header-tools{gap:0}
 html[data-client-workspace="35"] .today-hero{gap:16px;padding-bottom:20px;margin-bottom:20px}
 html[data-client-workspace="35"] .today-hero h2{font-size:28px;line-height:1.25}
 html[data-client-workspace="35"] .today-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin-bottom:20px}
 html[data-client-workspace="35"] .today-kpi{padding:18px;min-height:118px}
 html[data-client-workspace="35"] .today-kpi:nth-child(2){border-right:0}
 html[data-client-workspace="35"] .today-kpi:nth-child(-n+2){border-bottom:1px solid var(--client-ui-line)}
 html[data-client-workspace="35"] .ds-today-side{grid-template-columns:1fr;gap:20px}
 html[data-client-workspace="35"] .ds-today-layout{gap:20px}
 html[data-client-workspace="35"] .today-upcoming-head{grid-template-columns:48px minmax(0,1fr);padding-inline:16px}
 html[data-client-workspace="35"] .today-upcoming-head>span:last-child{display:none}
 html[data-client-workspace="35"] .today-upcoming-row{grid-template-columns:48px minmax(0,1fr);gap:10px;padding:16px}
 html[data-client-workspace="35"] .today-upcoming-row .today-badge{grid-column:2;justify-self:start}
 html[data-client-workspace="35"] .today-load{grid-template-columns:1fr;gap:20px;padding:20px 16px}
 html[data-client-workspace="35"] .client-section-tabs{gap:22px;margin-bottom:20px}
 html[data-client-workspace="35"] .client-section-tabs>button{font-size:14px;min-height:52px}
 html[data-client-workspace="35"] .website-content-grid{grid-template-columns:1fr}
 html[data-client-workspace="35"] .client-list-caption{padding:8px 16px;flex-wrap:wrap;gap:4px}
 html[data-client-workspace="35"] #view-contacts .contact-row{padding:16px;grid-template-columns:minmax(0,1fr) 24px!important}
 html[data-client-workspace="35"] #view-contacts .contact-row-segment{display:flex!important;padding-left:52px}
 html[data-client-workspace="35"] #view-contacts .client-contact-tabs{padding-inline:16px;margin:0}
 html[data-client-workspace="35"] #view-contacts .client-contact-pane{padding:18px 16px}
 html[data-client-workspace="35"] #view-contacts .contact-stats span{font-size:12px!important}
 html[data-client-workspace="35"] #view-contacts .contact-stats strong{font-size:24px!important}
 html[data-client-workspace="35"] #view-contacts .contact-card.mobile-open .client-read-loading{min-height:200px}
 html[data-client-workspace="35"] #view-contacts :is(.client-contact-back,.client-contact-error-back){margin-top:max(16px,env(safe-area-inset-top))}
 html[data-client-workspace="35"] .client-commerce-filter{grid-template-columns:minmax(0,1fr) minmax(110px,.65fr);gap:10px;padding:16px}
 html[data-client-workspace="35"] #clientCommerceCount{grid-column:1/-1;white-space:normal}
 html[data-client-workspace="35"] .c75-catalog-row{grid-template-columns:56px minmax(0,1fr);gap:12px 16px;padding:18px 16px}
 html[data-client-workspace="35"] .c75-catalog-media{width:56px;height:56px}
 html[data-client-workspace="35"] .c75-catalog-price{grid-column:2;grid-row:auto;text-align:left}
 html[data-client-workspace="35"] .c75-row-actions{grid-column:2;grid-row:auto;justify-content:flex-start}
 html[data-client-workspace="35"] .c75-row-actions .btn{min-height:44px;font-size:13px;padding:10px 12px}
 html[data-client-workspace="35"] .account-layout-v11{grid-template-columns:1fr;gap:20px}
 html[data-client-workspace="35"] .account-hub-v11{position:static}
 html[data-client-workspace="35"] .account-identity-v11{display:none}
 html[data-client-workspace="35"] .account-tabs-v11{grid-template-columns:repeat(2,minmax(0,1fr))}
 html[data-client-workspace="35"] .client-support-availability{font-size:12px;padding:0}
 html[data-client-workspace="35"] .client-message{max-width:92%}
 html[data-client-workspace="35"] .client-message-list{max-height:none;min-height:260px;padding:20px 12px}
 html[data-client-workspace="35"] .modal{max-height:calc(100dvh - env(safe-area-inset-top) - 8px)!important}
 html[data-client-workspace="35"] .modal-body{padding-bottom:max(20px,env(safe-area-inset-bottom))!important}
 html[data-client-workspace="35"] .client-command-modal .modal-body{padding:0!important}
 html[data-client-workspace="35"] .client-command-search{padding:12px 18px}
 html[data-client-workspace="35"] .client-command-help{padding:12px 18px max(18px,env(safe-area-inset-bottom))}
 html[data-client-workspace="35"] .client-command-results{max-height:48dvh}
 html[data-client-workspace="35"] .client-create-list{padding-bottom:max(16px,env(safe-area-inset-bottom))}
}
@media(max-width:380px){
 html[data-client-workspace="35"] .topbar{padding-inline:12px;gap:8px}
 html[data-client-workspace="35"] .page-title h1{font-size:16px}
 html[data-client-workspace="35"] .page-context{font-size:12px}
 html[data-client-workspace="35"] .client-command-results>button{gap:10px;padding-inline:10px}
}
@media(prefers-reduced-motion:reduce){html[data-client-workspace="35"] :is(.client-section-tabs>button,.client-command-results>button){transition:none;animation:none}}

/* assets/design-system-v3/platform-theme.css */

/* Passite 20936. Component colour contract; all theme values live in tokens.css.
   Replaces palette-20930 and app-theme-20934. Keep last in each entrypoint. */
html{color-scheme:light}
html[data-theme="dark"]{color-scheme:dark}
html body{background:var(--ps-paper);color:var(--ps-ink)}
::selection{background:var(--ps-selected);color:var(--ps-selected-ink)}

/* App surfaces and opaque overlays. Geometry remains with the component. */
html[data-passite-app][data-theme] :is(.sidebar,.topbar){background:var(--ps-panel);color:var(--ps-ink);border-color:var(--ps-line);box-shadow:none}
html[data-passite-app][data-theme] :is(.panel,.card,.surface,.account-panel,.analytics-breakdown,.analytics-chart-panel,.contact-card,.c75-card,.owner-business-kpis article,.owner-health-card,.client-entry-card){background:var(--ps-panel);color:var(--ps-ink);border-color:var(--ps-line)}
html[data-passite-app][data-theme] :is(.modal,.pwa-notification-drawer,.pwa-install-card,.pwa-update-card,.journal-settings-popover,.journal-resource-popover,.client-confirm-modal){background:var(--ps-raised);color:var(--ps-ink);border-color:var(--ps-line);box-shadow:0 24px 80px var(--ps-shadow);backdrop-filter:none}
html[data-passite-app][data-theme] :is(.modal-head,.modal-footer,.panel-head,.pwa-notification-header){background:var(--ps-raised);color:var(--ps-ink);border-color:var(--ps-line)}
html[data-passite-app][data-theme] :is(.modal-wrap,.sidebar-scrim,.pwa-install-overlay){background:var(--ps-scrim);backdrop-filter:blur(5px)}
html[data-passite-app] :is(.owner-command-hero,.client-entry,.owner-signin){background:var(--ps-paper);color:var(--ps-ink)}
html[data-passite-app] :is(.panel-note,.kicker,.micro,.page-context,.client-section-note,.owner-health-label,.owner-task-copy em,.owner-row-meta){color:var(--ps-secondary)}

/* Navigation never inherits inverse landing colours. */
html[data-passite-app][data-theme] .sidebar :is(.nav-item,.brand,.theme-control,.workspace-tag){color:var(--ps-ink);opacity:1}
html[data-passite-app][data-theme] .sidebar .nav-section-label{color:var(--ps-secondary)}
html[data-passite-app][data-theme] .sidebar .nav-item:not(.active):hover{background:var(--ps-subtle);color:var(--ps-ink);box-shadow:none}
html[data-passite-app][data-theme] .sidebar .nav-item.active{background:var(--ps-selected);color:var(--ps-selected-ink);border-color:transparent;box-shadow:inset 3px 0 var(--ps-accent-active)}
html[data-passite-app][data-theme] .sidebar .nav-item :is(svg,span){color:inherit;opacity:1}
html[data-passite-app][data-theme] .sidebar .nav-item .badge{background:var(--ps-subtle);color:var(--ps-ink);border:1px solid var(--ps-line)}
html[data-passite-app][data-theme] .sidebar .nav-item.active .badge{background:var(--ps-accent);color:var(--ps-on-accent)}

/* Existing button contracts carry !important rules; these are the sole final
   brand action values. Destructive actions are deliberately not brand actions. */
html[data-passite-app][data-theme] :is(.btn.primary,.btn.cyan,.btn.success),html .v9-landing :is(.btn.cyan,.power-btn){background:var(--ps-accent)!important;color:var(--ps-on-accent)!important;border-color:var(--ps-accent-active)!important;box-shadow:none}
html[data-passite-app][data-theme] :is(.btn.primary,.btn.cyan,.btn.success):hover:not(:disabled),html .v9-landing :is(.btn.cyan,.power-btn):hover{background:var(--ps-accent-hover)!important;color:var(--ps-on-accent)!important}
html[data-passite-app][data-theme] :is(.btn.primary,.btn.cyan,.btn.success):active:not(:disabled){background:var(--ps-accent-active)!important}
html[data-passite-app][data-theme] :is(.btn.primary,.btn.cyan,.btn.success) svg{color:inherit}
html[data-passite-app][data-theme] :is(.btn.ghost,.owner-soft-btn,.mini,.icon-btn,.ghost-icon,.icon-action,.client-sidebar-close,.sidebar-close,.modal-head .close,.password-toggle){background:var(--ps-panel);color:var(--ps-ink);border-color:var(--ps-field-line);opacity:1}
html[data-passite-app][data-theme] :is(.btn.ghost,.owner-soft-btn,.mini,.icon-btn,.ghost-icon,.icon-action):hover:not(:disabled){background:var(--ps-subtle);color:var(--ps-ink);box-shadow:none}
html[data-passite-app][data-theme] :is(.btn.danger,.btn.danger-outline,.mini.danger){background:var(--ps-danger-soft);color:var(--ps-danger);border-color:var(--ps-danger);box-shadow:none}
html[data-passite-app][data-theme] :is(.btn,.mini,.icon-btn):disabled{opacity:.5;cursor:not-allowed}
html[data-passite-app][data-theme] :is(.ui-tab.active,.account-tabs-v11 button.active,.owner-segmented button.active){background:var(--ps-selected);color:var(--ps-selected-ink);border-color:var(--ps-accent-active)}

/* Fields, validation and semantic feedback are separate from decorative accent. */
html[data-passite-app][data-theme] :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):not([type="color"]),select,textarea){background:var(--ps-panel);color:var(--ps-ink);border-color:var(--ps-field-line)}
html[data-passite-app][data-theme] :is(input,textarea)::placeholder{color:var(--ps-secondary);opacity:1}
html[data-passite-app][data-theme] :is(input,select,textarea):focus{border-color:var(--ps-focus)}
html :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline-color:var(--ps-focus)}
html[data-passite-app][data-theme] :is(input[type="checkbox"],input[type="radio"]){accent-color:var(--ps-accent-active)}
html[data-passite-app][data-theme] input[type="checkbox"]:checked{background:var(--ps-accent);border-color:var(--ps-accent-active)}
html[data-passite-app][data-theme] input[type="checkbox"]::after{border-color:var(--ps-on-accent)}
html[data-passite-app][data-theme] :is(.form-status.err,.today-block-error,.client-load-error strong,.owner-load-status.is-error){color:var(--ps-danger)}
html[data-passite-app][data-theme] .form-status.ok{color:var(--ps-success)}
html[data-passite-app][data-theme] :is(.form-status.err,.form-status.ok):not(:empty){border-inline-start:3px solid currentColor;padding-inline-start:12px}
html[data-passite-app] :is(.owner-kpi-icon,.owner-task-icon,.owner-performance-icon,.client-support-avatar){background:var(--ps-selected);color:var(--ps-selected-ink)}
html[data-passite-app] :is(.status-badge,.subscription-badge-v9,.log-status,.cc-health-state){background:var(--ps-subtle);color:var(--ps-secondary);border-color:var(--ps-line)}
html[data-passite-app] :is(.status-badge.success,.status-badge.active,.status-badge.ok){background:var(--ps-success-soft);color:var(--ps-success)}
html[data-passite-app] :is(.status-badge.error,.status-badge.danger,.status-badge.overdue){background:var(--ps-danger-soft);color:var(--ps-danger)}
html[data-passite-app] :is(.status-badge.warning,.status-badge.pending){background:var(--ps-warning-soft);color:var(--ps-warning)}
html[data-passite-app] :is(.log-code-section,.log-code-section .log-detail-technical,.log-code-section .log-context){background:var(--ps-deep);color:var(--ps-on-dark);border-color:var(--ps-field-line)}
html[data-passite-app] :is(.log-code-head,.log-code-head code){color:var(--ps-on-dark);border-color:var(--ps-field-line)}

/* Slider: one implementation for owner, client, public header and mobile menu. */
html .ps-theme-switch{appearance:none;position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 64px;width:64px;min-width:64px;height:44px;min-height:44px;padding:0;border:0;border-radius:999px;background:transparent;color:var(--ps-ink);cursor:pointer;box-shadow:none;transform:none!important;touch-action:manipulation}
html .ps-theme-track{box-sizing:border-box;position:relative;display:grid;grid-template-columns:1fr 1fr;place-items:center;width:60px;height:32px;border:1px solid var(--ps-field-line);border-radius:999px;background:var(--ps-subtle);isolation:isolate}
html .ps-theme-thumb{position:absolute;z-index:0;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--ps-panel);box-shadow:0 1px 4px var(--ps-shadow);transform:translateX(0);transition:transform 260ms cubic-bezier(.22,1,.36,1)}
html .ps-theme-track svg{position:relative;z-index:1;display:block!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;flex-basis:18px!important;fill:none;stroke:currentColor;stroke-width:2;pointer-events:none}
html .ps-theme-sun{color:var(--ps-ink)!important}
html .ps-theme-moon{color:var(--ps-secondary)!important}
html[data-theme="dark"] .ps-theme-thumb{transform:translateX(28px);background:var(--ps-accent)}
html[data-theme="dark"] .ps-theme-sun{color:var(--ps-secondary)!important}
html[data-theme="dark"] .ps-theme-moon{color:var(--ps-on-accent)!important}
html .ps-theme-switch:focus-visible{outline:3px solid var(--ps-focus);outline-offset:3px}

/* Boot, loading, offline and native PWA canvas use the same theme. */
html[data-passite-app] :is(.passite-boot,.passite-pending){background:var(--ps-paper);color:var(--ps-ink)}
html[data-passite-app] .passite-boot p{color:var(--ps-secondary)}
html[data-passite-app] .passite-wait-ring{border-color:var(--ps-line);border-top-color:var(--ps-accent-active)}
html[data-passite-app] .passite-boot-inner::after{content:"";width:120px;height:3px;background:var(--ps-gradient);border-radius:3px}
html[data-passite-app] .passite-network{background:var(--ps-warning-soft);color:var(--ps-warning);border-color:var(--ps-warning)}
html[data-passite-app] .owner-business-kpis article:hover{background:var(--ps-panel);border-color:var(--ps-accent-active)}
html[data-passite-app] :is(.owner-signin-aside,.owner-signin-story){background:var(--ps-deep);color:var(--ps-on-dark)}
html[data-passite-app] :is(.owner-signin-aside,.owner-signin-story) :is(h2,p,span){color:var(--ps-on-dark)}

/* Public chrome is a white/graphite surface. Inverse editorial blocks stay dark. */
html .site-header{background:var(--ps-panel);color:var(--ps-ink);border-color:var(--ps-line);backdrop-filter:none}
html .site-header :is(.logo,.main-nav a,.header-link){color:var(--ps-ink)}
html .site-header :is(.menu-btn,.theme-btn){background:var(--ps-subtle);color:var(--ps-ink);border-color:var(--ps-field-line)}
html :is(.mobile-nav,.mobile-nav.open){background:var(--ps-panel);color:var(--ps-ink);border-color:var(--ps-line)}
html .mobile-nav :is(a,button,.mobile-nav-heading){color:var(--ps-ink)}
html .v9-hero{background:var(--ps-deep);color:var(--ps-on-dark)}
html .v9-hero-copy :is(h1,h1 em,p,.v9-eyebrow),html .v9-hero-proof :is(span,b){color:var(--ps-on-dark)}
html .v9-hero-copy h1 em{text-decoration-color:var(--ps-accent)}
html .v9-eyebrow i{background:var(--ps-accent);box-shadow:none}
html .v9-hero-actions .btn.cyan{background:var(--ps-accent);color:var(--ps-on-accent);border-color:var(--ps-accent-active)}
html .v9-hero-actions .btn.dark{background:transparent;color:var(--ps-on-dark);border-color:var(--ps-field-line)}
html .legal-hero{background:var(--ps-deep);color:var(--ps-on-dark)}
html .legal-hero :is(h1,p,.legal-eyebrow){color:var(--ps-on-dark)}
html .legal-card a{color:var(--ps-accent-ink);text-decoration:underline}
html .legal-card :is(p,li){color:var(--ps-secondary)}
html .legal-logo{color:var(--ps-ink)}
html :is(.lead-status.err,.error-message){color:var(--ps-danger)}
html .lead-status.ok{color:var(--ps-success)}
html .v9-pricing-head .v9-label,html .v9-price-card.featured :is(.v9-plan-head small,.v9-recommend,.v9-saving),html .v9-price-card.featured .v9-plan-list li::before,html .v9-pricing-features article>span,html .v9-pricing-assurance svg{color:var(--ps-accent)}
html .v9-price-card:not(.featured) .v9-price-meta{color:var(--ps-secondary)}
html .v9-price-card.featured .v9-plan-index,html .v9-pricing-features small,html .v9-pricing-assurance{color:var(--ps-on-dark-muted)}
html .v9-photo-copy small,html .v9-hero-caption span,html .unavailable-card .v9-label{color:var(--ps-accent)}
html .lead-form .lead-status.err{color:var(--ps-danger-on-dark)}
html .lead-form .lead-status.ok{color:var(--ps-success-on-dark)}
html .lead-form :is(input,textarea)::placeholder{color:var(--ps-secondary)}
html[data-passite-app] .client-sub-hero-v9 :is(.client-sub-kicker-v9,.client-sub-period-v9 em){color:var(--ps-accent)!important}
html[data-passite-app] .journal-color-preview{box-sizing:border-box;border:1px solid var(--ps-field-line)}
html .ps-service-page{box-sizing:border-box;min-height:100svh;margin:0;display:grid;place-items:center;padding:24px;font:16px/1.6 system-ui,sans-serif}
html .ps-service-card{box-sizing:border-box;width:min(560px,100%);padding:32px;border:1px solid var(--ps-line);border-radius:16px;background:var(--ps-panel);color:var(--ps-ink)}
html .ps-service-card h1{font-size:26px;line-height:1.25;font-weight:600;margin:0 0 16px}
html .ps-service-card p{color:var(--ps-secondary);overflow-wrap:anywhere}
html .ps-service-card a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border:1px solid var(--ps-accent-active);border-radius:8px;background:var(--ps-accent);color:var(--ps-on-accent);text-decoration:none}

@media(max-width:600px){html[data-passite-app="client"] .client-entry-card{background:transparent}}
@media(prefers-reduced-motion:reduce){html .ps-theme-thumb,html .ps-theme-track svg{transition:none}}
@media(forced-colors:active){html .ps-theme-track{border:1px solid ButtonText}html .ps-theme-thumb{outline:2px solid ButtonText}}

/* Notification centre and feedback, 20937. No inherited translucent surfaces. */
html[data-passite-app][data-theme] .pwa-notification-drawer{background:var(--ps-panel);border-color:var(--ps-line);border-radius:16px}
html[data-passite-app][data-theme] .pwa-notification-drawer>header{padding:20px;border-color:var(--ps-line);background:var(--ps-panel)}
html[data-passite-app][data-theme] .pwa-drawer-tools{padding:8px 16px;gap:12px;flex-wrap:wrap;background:var(--ps-subtle);border-color:var(--ps-line)}
html[data-passite-app][data-theme] .pwa-drawer-tools .text-btn{min-height:44px;padding:8px;color:var(--ps-accent-ink);font-size:14px}
html[data-passite-app][data-theme] .pwa-drawer-tools .text-btn[hidden]{display:none}
html[data-passite-app][data-theme] .pwa-drawer-tools .text-btn:disabled{opacity:.65;cursor:wait}
html[data-passite-app][data-theme] .pwa-notification{padding:18px 20px;grid-template-columns:36px minmax(0,1fr) 8px;gap:12px;background:var(--ps-panel);color:var(--ps-ink);border-color:var(--ps-line)}
html[data-passite-app][data-theme] .pwa-notification.is-unread{background:var(--ps-selected)}
html[data-passite-app][data-theme] .pwa-notification:hover{background:var(--ps-subtle)}
html[data-passite-app][data-theme] .pwa-notification-icon{width:36px;height:36px;border-radius:12px;background:var(--ps-subtle);color:var(--ps-accent-ink)}
html[data-passite-app][data-theme] .pwa-notification-copy b{font-size:15px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
html[data-passite-app][data-theme] .pwa-notification-copy small{font-size:14px;line-height:1.5;color:var(--ps-secondary);overflow-wrap:anywhere}
html[data-passite-app][data-theme] .pwa-notification-copy em{font-size:12px;line-height:1.5;color:var(--ps-secondary)}
html[data-passite-app][data-theme] .pwa-notification>i{background:var(--ps-accent-ink)}
html[data-passite-app][data-theme] .pwa-notification-empty :is(span,b){font-size:14px;line-height:1.5;color:var(--ps-secondary)}
html[data-passite-app][data-theme] .pwa-notification:focus-visible{outline:2px solid var(--ps-focus);outline-offset:-3px}
html[data-passite-app][data-theme] .pwa-notification-feedback{flex:none;margin:12px 16px;padding:12px 14px;border:1px solid var(--ps-success);border-radius:10px;background:var(--ps-success-soft);color:var(--ps-success);font-size:14px;line-height:1.5;overflow-wrap:anywhere}
html[data-passite-app][data-theme] .pwa-notification-feedback[data-kind="error"]{background:var(--ps-danger-soft);color:var(--ps-danger);border-color:var(--ps-danger)}
html[data-passite-app][data-theme] .toasts{z-index:2147483000;max-width:calc(100vw - 32px)}
html[data-passite-app][data-theme] .toast{grid-template-columns:36px minmax(0,1fr) 44px;gap:12px;padding:16px 8px 16px 16px;background:var(--ps-panel);color:var(--ps-ink);border:1px solid var(--ps-line);border-radius:16px;box-shadow:0 8px 28px var(--ps-shadow);backdrop-filter:none}
html[data-passite-app][data-theme] .toast-icon{width:36px;height:36px;border-radius:50%;background:var(--ps-selected);color:var(--ps-accent-ink)}
html[data-passite-app][data-theme] .toast.error .toast-icon{background:var(--ps-danger-soft);color:var(--ps-danger)}
html[data-passite-app][data-theme] .toast.warning .toast-icon{background:var(--ps-warning-soft);color:var(--ps-warning)}
html[data-passite-app][data-theme] .toast-copy{font-size:14px;line-height:1.5;overflow-wrap:anywhere}
html[data-passite-app][data-theme] .toast-close{width:44px;height:44px;min-width:44px;min-height:44px;margin:-4px 0 0;background:transparent;color:var(--ps-secondary);border-radius:10px}
html[data-passite-app][data-theme] .toast-close:hover{background:var(--ps-subtle);color:var(--ps-ink)}

/* Scoped interface recovery. */

/* Passite 20941. Scoped recovery, appended to intact component styles.
   Never erase !important, reorder media rules or assign display to all icons.
   Palette lives only in tokens.css; mobile visibility is owned by breakpoints. */

/* Actions: restore the agreed teal rather than introducing a second palette. */
html[data-theme] :is(.btn.primary,.btn.cyan,.btn.success,.power-btn){background:var(--ps-accent)!important;color:var(--ps-on-accent)!important;border-color:var(--ps-accent-active)!important;box-shadow:none!important}
html[data-theme] :is(.btn.primary,.btn.cyan,.btn.success,.power-btn):hover:not(:disabled){background:var(--ps-accent-hover)!important;color:var(--ps-on-accent)!important}
html[data-theme] :is(.btn.primary,.btn.cyan,.btn.success,.power-btn):active:not(:disabled){background:var(--ps-accent-active)!important}
html[data-passite-app][data-theme] :is(.btn,.mini,.open-site){border-radius:8px;line-height:1.4;letter-spacing:normal;gap:8px;box-shadow:none;max-width:100%}
html[data-passite-app][data-theme] .btn{min-height:44px;font-size:14px;padding:10px 16px}
html[data-passite-app][data-theme] :is(.btn,.mini):hover{transform:none}
html[data-passite-app][data-theme] :is(.btn,.mini,.icon-btn,.ghost-icon):disabled{opacity:.5!important;cursor:not-allowed;transform:none;box-shadow:none}
html[data-passite-app][data-theme] :is(.btn,.mini)[aria-busy="true"]{cursor:progress}
html[data-passite-app][data-theme] :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--ps-focus)!important;outline-offset:3px}

/* Icon targets have dimensions, NOT a global display rule. */
html[data-passite-app][data-theme] :is(.icon-btn,.ghost-icon,.icon-action,.profile-chip,.sidebar-close,.close,.pwa-install-close,.toast-close){width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important;flex:0 0 44px;padding:0!important;border-radius:8px;align-items:center;justify-content:center;line-height:1}
html[data-passite-app][data-theme] :is(.icon-btn,.ghost-icon,.icon-action,.close,.sidebar-close,.pwa-install-close,.toast-close){background:transparent;color:var(--ps-ink);box-shadow:none}
html[data-passite-app][data-theme] :is(.icon-btn,.ghost-icon,.icon-action,.close,.sidebar-close):hover:not(:disabled){background:var(--ps-subtle)}
html[data-passite-app][data-theme] :is(.btn,.mini,.open-site,.nav-item,.icon-btn,.icon-action,.ghost-icon,.profile-chip,.sidebar-close,.close,.password-toggle,.pwa-install-close,.toast-close)>svg{width:18px!important;min-width:18px!important;max-width:18px!important;height:18px!important;min-height:18px!important;max-height:18px!important;flex:0 0 18px!important;margin:0!important;fill:none;stroke:currentColor;stroke-width:1.8;pointer-events:none}
html[data-passite-app][data-theme] :is(.mobile-menu,.sidebar-close)>svg{width:22px!important;min-width:22px!important;height:22px!important;min-height:22px!important;max-width:22px!important;max-height:22px!important;flex-basis:22px!important}

/* Fields: keep page-specific layout and search padding; normalise the control. */
html[data-passite-app][data-theme] :is(input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):not([type="color"]),select,textarea){min-width:0;max-width:100%;min-height:44px;border-radius:8px;font-size:14px;line-height:1.5;box-shadow:none}
html[data-passite-app][data-theme] :is(input,textarea)::placeholder{color:var(--ps-secondary);opacity:1}
html[data-passite-app][data-theme] :is(input,select,textarea)[aria-invalid="true"]{border-color:var(--ps-danger)}
html[data-passite-app][data-theme] :is(input,textarea)[readonly]{background:var(--ps-subtle)}
html[data-passite-app][data-theme] .password-field{position:relative;display:block!important;min-width:0;min-height:48px;border:0!important;background:transparent!important;padding:0!important;overflow:visible}
html[data-passite-app][data-theme] .password-field>input{box-sizing:border-box!important;width:100%!important;height:48px!important;min-height:48px!important;padding:11px 54px 11px 12px!important;margin:0!important;border:1px solid var(--ps-field-line)!important;background:var(--ps-panel)!important;color:var(--ps-ink)!important;font-size:16px!important;line-height:24px!important}
html[data-passite-app][data-theme] .password-field>.password-toggle{position:absolute!important;inset:2px 2px auto auto!important;display:grid!important;place-items:center!important;width:44px!important;min-width:44px!important;max-width:44px!important;height:44px!important;min-height:44px!important;max-height:44px!important;flex:none!important;padding:0!important;margin:0!important;border:0!important;border-radius:6px!important;background:transparent!important;color:var(--ps-secondary)!important;transform:none!important}
html[data-passite-app][data-theme] .password-field>.password-toggle:hover{background:var(--ps-subtle)!important;color:var(--ps-ink)!important}
html[data-passite-app][data-theme] .password-field>input:focus{border-color:var(--ps-focus)!important}
html[data-passite-app][data-theme] .slug-input{position:relative;display:block;border:0;background:transparent;padding:0;min-width:0}
html[data-passite-app][data-theme] .slug-input input{width:100%;height:48px;min-height:48px;padding:11px 112px 11px 12px;font-size:16px;line-height:24px}
html[data-passite-app][data-theme] .slug-input em{position:absolute;inset:0 12px 0 auto;display:flex;align-items:center;padding:0;border:0;background:transparent;font-size:14px;font-style:normal;font-weight:400;line-height:1.5;color:var(--ps-secondary);pointer-events:none}
html[data-passite-app][data-theme] :is(.help-search,.project-search)>input{padding-left:42px!important}
html[data-passite-app][data-theme] :is(.help-search,.project-search)>svg{width:18px!important;height:18px!important;min-width:18px!important;left:14px;pointer-events:none}
html[data-passite-app][data-theme] .global-search::before,html[data-passite-app][data-theme] .global-search::after{content:none!important;display:none!important}
html[data-passite-app][data-theme] .global-search>svg{position:absolute;z-index:1;left:14px;top:50%;width:18px!important;height:18px!important;transform:translateY(-50%);color:var(--ps-secondary);pointer-events:none}
html[data-passite-app][data-theme] .global-search input{padding-left:42px!important}
html[data-passite-app][data-theme] .mobile-section-switcher-field select{appearance:none!important;-webkit-appearance:none!important;padding:10px 42px 10px 14px!important;background-image:none!important;min-height:48px;font-size:16px!important}
html[data-passite-app][data-theme] .mobile-section-switcher-icon{display:none!important}

/* One rounded, animated theme slider across the product. No square track. */
html[data-theme] .ps-theme-switch{appearance:none;display:inline-flex;position:relative;align-items:center;justify-content:center;flex:0 0 68px!important;width:68px!important;min-width:68px!important;max-width:68px!important;height:44px!important;min-height:44px!important;padding:0!important;border:0!important;border-radius:999px!important;background:transparent!important;box-shadow:none!important;cursor:pointer;transform:none!important;touch-action:manipulation}
html[data-theme] .ps-theme-track{position:relative;display:grid;grid-template-columns:1fr 1fr;place-items:center;isolation:isolate;box-sizing:border-box;width:64px!important;height:34px!important;border:1px solid var(--ps-line)!important;border-radius:999px!important;background:var(--ps-subtle)!important;transition:border-color 180ms ease,background 220ms ease,box-shadow 220ms ease}
html[data-theme] .ps-theme-thumb{position:absolute;z-index:0;inset:3px auto auto 3px!important;width:26px!important;height:26px!important;border:0!important;border-radius:50%!important;background:var(--ps-accent)!important;box-shadow:0 2px 5px var(--ps-shadow)!important;transform:translateX(0)!important;transition:transform 420ms cubic-bezier(.22,1,.36,1)!important;will-change:transform}
html[data-theme="dark"] .ps-theme-thumb{transform:translateX(30px)!important}
html[data-theme] .ps-theme-track svg{position:relative;z-index:1;display:block!important;width:16px!important;min-width:16px!important;max-width:16px!important;height:16px!important;min-height:16px!important;max-height:16px!important;flex:0 0 16px!important;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;pointer-events:none;transition:transform 420ms cubic-bezier(.22,1,.36,1),color 220ms ease,opacity 220ms ease!important}
html[data-theme="light"] .ps-theme-track .ps-theme-sun{color:var(--ps-on-accent)!important;transform:rotate(0deg) scale(1);opacity:1}
html[data-theme="light"] .ps-theme-track .ps-theme-moon{color:var(--ps-secondary)!important;transform:rotate(-25deg) scale(.86);opacity:.75}
html[data-theme="dark"] .ps-theme-track .ps-theme-sun{color:var(--ps-secondary)!important;transform:rotate(60deg) scale(.86);opacity:.75}
html[data-theme="dark"] .ps-theme-track .ps-theme-moon{color:var(--ps-on-accent)!important;transform:rotate(0deg) scale(1);opacity:1}
html[data-theme] .ps-theme-switch:hover .ps-theme-track{border-color:var(--ps-accent-active)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--ps-accent) 12%,transparent)}
html[data-theme] .ps-theme-switch:focus-visible{outline:2px solid var(--ps-focus)!important;outline-offset:2px}
html[data-theme] .ps-theme-switch:disabled{opacity:.5!important;cursor:not-allowed}

/* Check controls retain native keyboard and form behaviour. */
html[data-passite-app][data-theme] input[type="checkbox"]{accent-color:var(--ps-accent-active)}
html[data-passite-app][data-theme] input[type="checkbox"]:checked::after{transform:rotate(-45deg)!important}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row){display:flex!important;align-items:center;gap:16px;min-width:0;min-height:68px;padding:16px;border-radius:8px;background:var(--ps-panel);border:1px solid var(--ps-line);box-shadow:none}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row)>span{flex:1;min-width:0;display:grid;gap:5px;overflow-wrap:anywhere}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row) b{font-size:14px;font-weight:600;color:var(--ps-ink)}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row) small{font-size:13px;line-height:1.5;color:var(--ps-secondary)}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row)>input{position:absolute;width:1px!important;min-width:1px!important;height:1px!important;min-height:1px!important;padding:0!important;border:0!important;clip-path:inset(50%);opacity:0}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row)>i{position:relative;display:block;flex:0 0 42px;width:42px!important;height:24px!important;margin-left:auto;border:1px solid var(--ps-field-line)!important;border-radius:999px;background:var(--ps-subtle)!important}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row)>i::after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border:0;border-radius:50%;background:var(--ps-secondary);transform:none;transition:transform 180ms ease}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row)>input:checked+i{background:var(--ps-accent)!important;border-color:var(--ps-accent-active)!important}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row)>input:checked+i::after{background:var(--ps-on-accent);transform:translateX(18px)}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row)>input:focus-visible+i{outline:2px solid var(--ps-focus);outline-offset:3px}
html[data-passite-app][data-theme] :is(.p75-switch-row,.c75-switch-row)>input:disabled+i{opacity:.5}

/* Shell. IDs isolate this geometry from marketing, dialogs and data grids. */
html[data-passite-app] #appView{grid-template-columns:240px minmax(0,1fr)!important;min-width:0}
html[data-passite-app] #mainContent{min-width:0;width:100%;margin:0!important}
html[data-passite-app] #sidebar{width:240px!important;min-width:0;display:flex!important;flex-direction:column;padding:24px 14px 18px;background:var(--ps-panel)!important;color:var(--ps-ink)!important;border-right:1px solid var(--ps-line)!important;box-shadow:none!important;border-radius:0!important;overflow:hidden}
html[data-passite-app] #sidebar::before,html[data-passite-app] #sidebar::after{display:none!important}
html[data-passite-app] #sidebar .sidebar-head{flex:none;min-height:44px;padding:0 12px 20px;margin:0;border:0}
html[data-passite-app] #sidebar .workspace-tag{flex:none;min-height:0;margin:0 12px 14px;padding:0;border:0;background:transparent;color:var(--ps-secondary);font-size:12px;line-height:1.5;letter-spacing:0;text-transform:none}
html[data-passite-app] #sidebar nav{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;align-content:start;gap:3px;margin:0;padding:0 0 16px;transform:none!important;opacity:1!important}
html[data-passite-app] #sidebar .nav-section-label{margin:16px 12px 6px;padding:0;font-size:11px;font-weight:600;line-height:1.5;letter-spacing:.08em;color:var(--ps-secondary)}
html[data-passite-app] #sidebar .nav-item{width:100%;min-height:44px!important;height:auto;display:flex;align-items:center;gap:12px;padding:10px 12px!important;margin:0;border:0!important;border-radius:7px!important;background:transparent!important;color:var(--ps-secondary)!important;font-size:14px!important;line-height:24px;letter-spacing:0;font-weight:500;box-shadow:none!important;transform:none!important;translate:none!important;opacity:1!important;transition:background 160ms ease,color 160ms ease!important}
html[data-passite-app] #sidebar .nav-item::before,html[data-passite-app] #sidebar .nav-item::after{display:none!important}
html[data-passite-app] #sidebar .nav-item.active{background:var(--ps-selected)!important;color:var(--ps-selected-ink)!important;font-weight:650;box-shadow:none!important}
html[data-passite-app] #sidebar .nav-item:hover:not(.active){background:var(--ps-subtle)!important;color:var(--ps-ink)!important}
html[data-passite-app] #sidebar .nav-item span{min-width:0;color:inherit!important;line-height:inherit;white-space:normal}
html[data-passite-app] #sidebar .nav-item svg{color:inherit!important;opacity:1;transform:none!important}
html[data-passite-app] #sidebar .nav-item .badge{flex:none;min-width:20px;height:20px;margin-left:auto;padding:0 5px;border:0;border-radius:5px;background:var(--ps-panel);color:var(--ps-ink)!important;font-size:11px;line-height:20px}
html[data-passite-app] #sidebar .sidebar-foot{flex:0 0 auto!important;margin:0;padding:14px 0 0;border-top:1px solid var(--ps-line);opacity:1!important;transform:none!important}
html[data-passite-app] #sidebar .theme-control{min-height:44px;padding:0 12px;background:transparent;border:0;font-size:13px}
html[data-passite-app] #mainContent>.topbar{grid-template-columns:minmax(0,1fr) auto auto!important;gap:16px;min-height:76px;padding:14px 28px;background:var(--ps-panel)!important;box-shadow:none!important;backdrop-filter:none;border-bottom:1px solid var(--ps-line)}
html[data-passite-app] #mainContent>.topbar .page-title{grid-column:auto!important;min-width:0}
html[data-passite-app] #mainContent>.topbar .page-title h1{font-size:22px;line-height:1.25;letter-spacing:-.025em;font-weight:650}
html[data-passite-app] #mainContent>.topbar .page-context{font-size:11px;line-height:1.5;letter-spacing:.02em;color:var(--ps-secondary);font-weight:500;text-transform:none}
html[data-passite-app] #mainContent>.topbar .topbar-actions{grid-column:auto!important;display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
html[data-passite-app] #mainContent>.content{max-width:1560px;width:100%;margin:0 auto;padding:28px;min-width:0}
html[data-passite-app] #mainContent :is(.panel,.panel-head,.panel-body,.content>.view){min-width:0}
html[data-passite-app] #mainContent .panel-head{flex-wrap:wrap;gap:16px}

/* Settings: preserve the new tab behaviour, remove the nested narrow columns. */
html[data-passite-app][data-theme] .account-layout-v11{display:block!important;grid-template-columns:none!important;max-width:1120px;width:100%;min-width:0}
html[data-passite-app][data-theme] .account-hub-v11{position:static!important;display:block;width:100%;padding:0;margin:0 0 24px;border:0;background:transparent;box-shadow:none}
html[data-passite-app][data-theme] .account-identity-v11{display:flex;align-items:center;gap:16px;padding:0 0 20px;border:0}
html[data-passite-app][data-theme] .account-avatar-v11{flex:0 0 44px;width:44px;height:44px;border-radius:10px;font-size:18px}
html[data-passite-app][data-theme] .account-tabs-v11{position:static;display:flex!important;align-items:center;gap:24px;width:100%;overflow-x:auto;padding:0;border:0;border-bottom:1px solid var(--ps-line);border-radius:0;background:transparent}
html[data-passite-app][data-theme] .account-tabs-v11>button{flex:0 0 auto;display:flex;gap:8px;align-items:center;width:auto!important;min-height:48px;padding:12px 0;border:0!important;border-bottom:2px solid transparent!important;border-radius:0!important;background:transparent!important;color:var(--ps-secondary)!important;box-shadow:none!important;font-size:14px;white-space:nowrap}
html[data-passite-app][data-theme] .account-tabs-v11>button.active{border-bottom-color:var(--ps-accent-active)!important;color:var(--ps-ink)!important;font-weight:650}
html[data-passite-app][data-theme] .account-content-v9{container-type:inline-size;width:100%;min-width:0}
html[data-passite-app][data-theme] .account-grid{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:24px;min-width:0}
html[data-passite-app][data-theme] .account-grid>section{grid-column:auto!important;min-width:0;width:100%}
html[data-passite-app][data-theme] :is(.account-form,.security-body){display:grid;gap:20px;padding:24px;min-width:0}
html[data-passite-app][data-theme] .account-form>label{display:grid;gap:8px;width:100%;max-width:640px;min-width:0}
html[data-passite-app][data-theme] :is(.account-form,.security-body)>.btn{justify-self:start;width:auto;max-width:100%;white-space:normal}
html[data-passite-app][data-theme] .mfa-options{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
html[data-passite-app][data-theme] .mfa-option{display:flex;align-items:flex-start;gap:12px;min-height:76px;padding:16px;border-radius:8px;text-align:left}
html[data-passite-app][data-theme] .mfa-option span{min-width:0;display:grid;gap:6px}
html[data-passite-app][data-theme] .mfa-option b{font-size:14px;line-height:1.4}
html[data-passite-app][data-theme] .mfa-option small{font-size:13px;line-height:1.5}
html[data-passite-app][data-theme] .profile-grid-v11{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;padding:0 24px 12px}
html[data-passite-app][data-theme] .profile-grid-v11>div{min-width:0;padding:20px 16px 20px 0;border:0;border-bottom:1px solid var(--ps-line);background:transparent}
html[data-passite-app][data-theme] .profile-grid-v11 strong{white-space:normal!important;overflow-wrap:anywhere;font-size:15px}
html[data-passite-app][data-theme] .security-row{flex-wrap:wrap;gap:8px}
html[data-passite-app][data-theme] .security-row strong{white-space:normal;overflow-wrap:anywhere}
html[data-passite-app][data-theme] .modal.p75-security-modal{display:flex;flex-direction:column;width:min(1000px,100%)!important;max-width:1000px!important;min-width:0;max-height:calc(var(--passite-visual-height,100dvh) - 32px)!important;overflow:hidden;border-radius:12px!important}
html[data-passite-app][data-theme] .p75-security-modal .modal-head{flex:none;padding:16px 24px;min-height:72px;gap:16px}
html[data-passite-app][data-theme] .p75-security-modal .modal-body{flex:1;min-height:0;min-width:0;padding:0 24px 24px;overflow:auto;container-type:inline-size}
html[data-passite-app][data-theme] .owner-settings{min-width:0;max-width:900px;margin:0 auto}
html[data-passite-app][data-theme] .owner-security-tabs{position:sticky;top:0;z-index:2;display:flex;gap:24px;overflow-x:auto;margin:0;padding:0;border-bottom:1px solid var(--ps-line);background:var(--ps-raised)}
html[data-passite-app][data-theme] .owner-security-tabs button{flex:0 0 auto;min-height:52px;padding:12px 0;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;font-size:14px;color:var(--ps-secondary);white-space:nowrap}
html[data-passite-app][data-theme] .owner-security-tabs button.active{border-bottom-color:var(--ps-accent-active);color:var(--ps-ink);font-weight:650}
html[data-passite-app][data-theme] .owner-settings .security-modal-grid{display:block!important}
html[data-passite-app][data-theme] .owner-settings .security-block{display:block;width:100%;min-width:0;padding:24px 0;border:0;border-bottom:1px solid var(--ps-line);border-radius:0;background:transparent;box-shadow:none}
html[data-passite-app][data-theme] .owner-settings .security-block-head{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:20px}
html[data-passite-app][data-theme] .owner-settings .security-block-head>div{display:grid;gap:8px;min-width:0}
html[data-passite-app][data-theme] .owner-settings .security-block-head b{font-size:18px;line-height:1.4}
html[data-passite-app][data-theme] .owner-settings .security-block-head span{font-size:14px;line-height:1.5}
html[data-passite-app][data-theme] .owner-settings :is(form,.modal-grid){display:grid;grid-template-columns:minmax(0,1fr)!important;gap:20px;min-width:0}
html[data-passite-app][data-theme] .owner-settings label{min-width:0;display:grid;gap:8px}
html[data-passite-app][data-theme] .owner-settings :is(#ownerPasswordChangeForm,#ownerRecoveryRegenForm){max-width:640px}
html[data-passite-app][data-theme] .owner-settings .modal-actions{justify-content:flex-start;flex-wrap:wrap;padding-top:4px;margin:0}
html[data-passite-app][data-theme] .owner-settings .mail-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px}
html[data-passite-app][data-theme] .mail-account-card span{overflow-wrap:anywhere;white-space:normal}
html[data-passite-app][data-theme] .owner-settings .security-log{max-height:none;overflow:visible}
html[data-passite-app][data-theme] .security-log-row{display:grid;grid-template-columns:160px minmax(0,1fr) 80px;gap:16px;padding:16px 0}
html[data-passite-app][data-theme] .security-log-row :is(span,b,em){white-space:normal;overflow-wrap:anywhere;font-size:13px;line-height:1.5}
@container(min-width:900px){html[data-passite-app][data-theme] .account-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}html[data-passite-app][data-theme] .account-grid>.account-panel{grid-row:span 2}}
@container(max-width:700px){html[data-passite-app][data-theme] .owner-settings .mail-status-grid{grid-template-columns:minmax(0,1fr)}html[data-passite-app][data-theme] .security-log-row{grid-template-columns:minmax(0,1fr);gap:4px}}

/* Footer markup introduced in 20938 is kept, with its own scoped grid. */
html[data-theme] .site-footer{background:var(--ps-panel);color:var(--ps-ink);border-top:1px solid var(--ps-line);padding:56px 0 24px}
.site-footer .footer-wrap{width:min(1200px,calc(100% - 48px));margin:0 auto}
.site-footer .footer-main{display:grid;grid-template-columns:1.3fr .8fr .8fr 1.2fr;gap:40px;align-items:start}
.site-footer .footer-column{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:0}
.site-footer .footer-column h2{margin:0 0 12px;font-size:14px;line-height:1.5;color:var(--ps-ink);font-weight:650}
.site-footer .footer-column a{font-size:13px;line-height:1.6;color:var(--ps-secondary);padding:4px 0;text-decoration:none}
.site-footer .footer-column a:hover{color:var(--ps-accent-ink);text-decoration:underline}
.site-footer .footer-brand p{font-size:14px;line-height:1.65;color:var(--ps-secondary);margin-top:20px}
.site-footer .footer-bottom{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-top:40px;padding-top:24px;border-top:1px solid var(--ps-line);font-size:12px;color:var(--ps-secondary)}

/* Breakpoint contract: must match matchMedia('(min-width:1101px)') in both apps. */
@media(min-width:1101px){
  html[data-passite-app] #sidebar{position:sticky!important;inset:0 auto auto 0!important;height:100dvh!important;visibility:visible!important;opacity:1!important;transform:none!important;pointer-events:auto!important}
  html[data-passite-app] #menuBtn,html[data-passite-app] #sidebarClose,html[data-passite-app] #sidebarScrim{display:none!important}
}
@media(max-width:1100px){
  html[data-passite-app] #appView{grid-template-columns:minmax(0,1fr)!important}
  html[data-passite-app] #menuBtn{display:inline-flex!important;grid-column:1;grid-row:1}
  html[data-passite-app] #sidebarClose{display:grid!important;place-items:center;position:absolute!important;inset:20px 20px auto auto!important;z-index:2;background:var(--ps-subtle)!important}
  html[data-passite-app] #sidebar{position:fixed!important;z-index:1200!important;inset:0 auto 0 0!important;width:min(400px,100%)!important;height:100dvh!important;max-height:100dvh!important;padding:24px 20px max(20px,env(safe-area-inset-bottom))!important;visibility:hidden!important;opacity:0!important;transform:translateX(-24px)!important;pointer-events:none!important;transition:transform 280ms cubic-bezier(.22,1,.36,1),opacity 220ms ease,visibility 280ms!important}
  html[data-passite-app] #sidebar.open{visibility:visible!important;opacity:1!important;transform:none!important;pointer-events:auto!important}
  html[data-passite-app] #sidebar .sidebar-head{padding-right:56px;min-height:44px}
  html[data-passite-app] #sidebar .nav-item{font-size:16px!important;min-height:48px!important}
  html[data-passite-app] #sidebarScrim{display:block!important;position:fixed!important;z-index:1199!important;inset:0!important;width:100%;height:100%;border:0;margin:0;padding:0;background:var(--ps-scrim);visibility:hidden!important;opacity:0!important;pointer-events:none!important;transition:opacity 220ms ease,visibility 280ms}
  html[data-passite-app] #sidebarScrim.open{visibility:visible!important;opacity:1!important;pointer-events:auto!important}
  html[data-passite-app] #mainContent>.topbar{grid-template-columns:44px minmax(0,1fr) auto!important;grid-template-rows:auto;gap:12px;padding:12px 20px;min-height:68px}
  html[data-passite-app] #mainContent>.topbar .page-title{grid-column:2!important;grid-row:1}
  html[data-passite-app] #mainContent>.topbar .topbar-actions{grid-column:3!important;grid-row:1}
  html[data-passite-app] #mainContent>.topbar .global-search{display:none!important}
  html[data-passite-app] #mainContent>.topbar .client-header-tools{grid-row:2;grid-column:1/-1;display:flex;justify-content:space-between;width:100%;min-width:0}
  html[data-passite-app] #mainContent>.content{padding:24px 20px}
}
@media(max-width:900px){
  .site-footer .footer-main{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}.site-footer .footer-brand{grid-column:1/-1}
}
@media(max-width:600px){
  html[data-passite-app] #sidebar{width:100%!important;padding:calc(20px + env(safe-area-inset-top)) 20px max(20px,env(safe-area-inset-bottom))!important;transform:translateY(-16px)!important}
  html[data-passite-app] #sidebar.open{transform:none!important}
  html[data-passite-app] #sidebarClose{top:calc(20px + env(safe-area-inset-top))!important}
  html[data-passite-app] #mainContent>.topbar{gap:8px;padding:10px 16px}
  html[data-passite-app] #mainContent>.topbar .page-title h1{font-size:20px}
  html[data-passite-app] #mainContent>.topbar :is(.page-context,.page-title p){display:none}
  html[data-passite-app] #mainContent>.content{padding:20px 16px}
  html[data-passite-app] #ownerProfileChip{display:none!important}
  html[data-passite-app] #mainContent>.topbar .topbar-actions>.btn[data-view="publish"]{width:auto;min-width:0;padding:10px;font-size:12px;gap:6px}
  html[data-passite-app] #mainContent>.topbar #openSite{display:none!important}
  html[data-passite-app] #mainContent>.topbar #clientProfileChip{display:none!important}
  html[data-passite-app][data-theme] :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea){font-size:16px}
  html[data-passite-app][data-theme] .profile-grid-v11{grid-template-columns:minmax(0,1fr);padding-inline:20px}
  html[data-passite-app][data-theme] :is(.account-form,.security-body){padding:20px}
  html[data-passite-app][data-theme] .account-identity-status-v11{display:none}
  html[data-passite-app][data-theme] .account-tabs-v11{gap:20px}
  html[data-passite-app][data-theme] .modal-wrap{padding:12px!important}
  html[data-passite-app][data-theme] .modal.p75-security-modal{max-height:calc(var(--passite-visual-height,100dvh) - 24px)!important}
  html[data-passite-app][data-theme] .p75-security-modal .modal-body{padding:0 20px 24px}
  html[data-passite-app][data-theme] .owner-settings .mail-status-grid{grid-template-columns:minmax(0,1fr)}
  html[data-passite-app][data-theme] .security-log-row{grid-template-columns:minmax(0,1fr);gap:4px}
  .site-footer .footer-main{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 20px}.site-footer .footer-documents{grid-column:1/-1}
  .site-footer .footer-bottom{flex-direction:column;gap:16px}.site-footer .footer-column a{min-height:44px;display:flex;align-items:center}
}
/* Visibility/accessibility invariants always stay last, including auth ID rules. */
html[data-passite-app] #appView.hidden,html[data-passite-app] :is(#authView,#mfaView,#activateView,#loginView,#demoView).hidden,html body [hidden],html body .hidden{display:none!important}
@media(prefers-reduced-motion:reduce){
  html body *,html body *::before,html body *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  html[data-theme] .ps-theme-thumb,html[data-theme] .ps-theme-track,html[data-theme] .ps-theme-track svg,html[data-passite-app] #sidebar,html[data-passite-app] #sidebarScrim,html[data-passite-app] #sidebar .nav-item{animation:none!important;transition:none!important}
}


/* Authentication and fluid interaction components. */

/* 20941: authentication, fluid controls and motion. Palette is unchanged. */
:root{--ps-ease-out:cubic-bezier(.22,1,.36,1);--ps-ease-spring:cubic-bezier(.2,1.35,.3,1)}

/* Auth is one independent component, shared by both roles and all login steps. */
html[data-passite-app] :is(#loginView,#authView,#mfaView,#activateView).ps-auth-shell{display:block;min-height:100svh!important;height:auto!important;width:100%!important;max-width:none!important;margin:0!important;padding:0 40px 24px!important;background:var(--ps-paper)!important;color:var(--ps-ink);overflow:visible!important}
html[data-passite-app] .ps-auth-shell .ps-auth-topbar{display:flex;align-items:center;justify-content:space-between;gap:24px;width:100%;max-width:1200px;min-height:88px;margin:0 auto!important;padding:20px 0!important;border-bottom:1px solid var(--ps-line)}
html[data-passite-app] .ps-auth-topbar .brand{font-size:26px!important}
html[data-passite-app] .ps-auth-shell .ps-auth-layout{display:grid!important;grid-template-columns:minmax(0,440px) minmax(0,500px)!important;align-items:center;justify-content:space-between;gap:64px;max-width:1120px;width:100%;margin:clamp(32px,6vh,72px) auto 32px!important;flex:none!important;min-height:0!important}
html[data-passite-app] .ps-auth-shell .ps-auth-card{position:relative;display:block;width:100%;min-width:0;max-width:440px!important;min-height:0!important;height:auto;margin:0!important;padding:36px!important;border:1px solid var(--ps-line)!important;border-radius:20px!important;background:var(--ps-panel)!important;box-shadow:0 12px 44px var(--ps-shadow)!important;animation:none;transform:none}
html[data-passite-app] .ps-auth-card .ps-auth-eyebrow,html[data-passite-app] .ps-auth-card .client-entry-copy>span{display:inline-flex;align-items:center;gap:8px;margin:0 0 20px;padding:5px 9px;border:1px solid var(--ps-line);border-radius:6px;background:var(--ps-subtle);color:var(--ps-secondary);font-size:11px;font-weight:600;line-height:1.5;letter-spacing:.035em;text-transform:none}
html[data-passite-app] .ps-auth-card h1{font-size:32px!important;font-weight:600!important;line-height:1.14!important;letter-spacing:-.04em!important;margin:0 0 14px!important;color:var(--ps-ink)!important;overflow-wrap:anywhere}
html[data-passite-app] .ps-auth-card .client-entry-copy{margin:0 0 28px;padding:0}
html[data-passite-app] .ps-auth-card :is(.owner-signin-copy,.client-entry-copy p,.security-copy){font-size:14px!important;line-height:1.65!important;color:var(--ps-secondary)!important;margin:0 0 28px;max-width:none}
html[data-passite-app] .ps-auth-card .client-entry-copy p{margin:0}
html[data-passite-app] .ps-auth-card form{display:grid;gap:20px;margin:0}
html[data-passite-app] .ps-auth-card label{display:grid;gap:8px;min-width:0;font-size:13px;font-weight:500;line-height:1.5}
html[data-passite-app] .ps-auth-card input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]){box-sizing:border-box;height:48px!important;min-height:48px!important;width:100%;max-width:100%;border-radius:10px!important;font-size:16px!important;line-height:24px!important;background:var(--ps-paper)!important;color:var(--ps-ink)!important;border:1px solid var(--ps-field-line)!important;box-shadow:none!important;transition:background 180ms,border-color 180ms,box-shadow 180ms}
html[data-passite-app] .ps-auth-card input:focus{outline:2px solid var(--ps-focus)!important;outline-offset:2px;background:var(--ps-panel)!important}
html[data-passite-app] .ps-auth-card .slug-input{position:relative;display:block!important;padding:0!important;border:0!important;background:transparent!important}
html[data-passite-app] .ps-auth-card .slug-input input{padding:11px 110px 11px 12px!important}
html[data-passite-app] .ps-auth-card .slug-input em{position:absolute;inset:0 12px 0 auto;display:flex;align-items:center;padding:0;background:transparent;font-size:14px;font-weight:400;font-style:normal;color:var(--ps-secondary);pointer-events:none}
html[data-passite-app] .ps-auth-card .btn[type="submit"]{display:flex;align-items:center;justify-content:center!important;gap:12px;width:100%;min-height:48px!important;padding:12px 16px;border-radius:10px!important;font-size:14px;font-weight:600;margin:4px 0 0}
html[data-passite-app] .ps-auth-card .btn[type="submit"] svg{width:18px;height:18px}
html[data-passite-app] .ps-auth-card .form-status:empty{display:none!important;min-height:0}
html[data-passite-app] .ps-auth-card .ps-auth-note{padding:20px 0 0;margin:24px 0 0;border-top:1px solid var(--ps-line);font-size:12px;line-height:1.6;color:var(--ps-secondary)}
html[data-passite-app] .ps-auth-card :is(.text-action,.security-back){justify-self:center;min-height:44px;font-size:13px;color:var(--ps-accent-ink);text-underline-offset:4px}
html[data-passite-app] .ps-auth-shell .ps-auth-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1120px;width:100%;margin:0 auto!important;padding:8px 0!important;font-size:12px;line-height:1.5;color:var(--ps-secondary)}
html[data-passite-app] #loginView .ps-auth-footer{justify-content:flex-start}
.ps-auth-footer a{text-decoration:underline;text-underline-offset:4px;min-height:44px;display:inline-flex;align-items:center}
.ps-auth-footer svg{width:16px;height:16px}
html[data-passite-app] .ps-auth-art{display:flex;flex-direction:column;justify-content:space-between;gap:24px;min-width:0;min-height:510px;padding:32px;border:1px solid var(--ps-line);border-radius:24px;background:radial-gradient(ellipse at 65% 30%,color-mix(in srgb,var(--ps-accent) 13%,transparent),transparent 65%),var(--ps-deep);color:var(--ps-on-dark);overflow:hidden}
.ps-auth-art-label,.ps-auth-art-foot{position:relative;z-index:1;font-size:10px;letter-spacing:.14em;line-height:1.5;color:var(--ps-on-dark)}
.ps-auth-art-foot{padding-top:20px;border-top:1px solid color-mix(in srgb,var(--ps-on-dark) 20%,transparent);font-size:12px;letter-spacing:0}
.ps-auth-orbit{position:relative;height:220px;flex:none;isolation:isolate}
.ps-auth-orbit-ring{position:absolute;left:50%;top:50%;width:260px;height:190px;border:1px solid color-mix(in srgb,var(--ps-accent) 22%,transparent);border-radius:50%;transform:translate(-50%,-50%) rotate(-25deg)}
.ps-auth-orbit-ring-inner{width:190px;height:260px;transform:translate(-50%,-50%) rotate(-25deg);border-color:color-mix(in srgb,var(--ps-accent) 12%,transparent)}
.ps-auth-core{position:absolute;left:50%;top:50%;display:grid;place-items:center;width:92px;height:92px;transform:translate(-50%,-50%);border:1px solid color-mix(in srgb,var(--ps-accent) 30%,transparent);border-radius:26px;background:var(--ps-deep);box-shadow:0 0 60px color-mix(in srgb,var(--ps-accent) 12%,transparent)}
.ps-auth-core img{width:56px;height:56px}
.ps-auth-node{position:absolute;z-index:2;display:flex;align-items:center;gap:9px;padding:10px 14px;border:1px solid color-mix(in srgb,var(--ps-on-dark) 20%,transparent);border-radius:10px;background:var(--ps-deep);color:var(--ps-on-dark);font-size:12px;line-height:1.4;box-shadow:0 6px 20px var(--ps-shadow)}
.ps-auth-node svg{width:16px;height:16px;fill:none;stroke:var(--ps-accent);stroke-width:1.6}
.ps-auth-node-a{top:20px;left:8px}.ps-auth-node-b{top:85px;right:0}.ps-auth-node-c{bottom:12px;left:18px}
html[data-passite-app] .ps-auth-art h2{margin:0 0 14px;font-size:32px;font-weight:500;line-height:1.15;letter-spacing:-.035em;color:var(--ps-on-dark)}
.ps-auth-art-copy p{margin:0;max-width:36ch;color:var(--ps-on-dark);font-size:14px;line-height:1.7}
@media(max-width:900px){
 html[data-passite-app] :is(#loginView,#authView,#mfaView,#activateView).ps-auth-shell{padding:0 24px 24px!important}
 html[data-passite-app] .ps-auth-shell .ps-auth-topbar{max-width:440px;min-height:80px;padding:16px 0!important}
 html[data-passite-app] .ps-auth-shell .ps-auth-layout{display:block!important;max-width:440px;margin:28px auto 20px!important}
 html[data-passite-app] .ps-auth-art{display:none!important}
 html[data-passite-app] .ps-auth-shell .ps-auth-footer{max-width:440px;flex-wrap:wrap}
}
@media(max-width:480px){
 html[data-passite-app] :is(#loginView,#authView,#mfaView,#activateView).ps-auth-shell{padding:env(safe-area-inset-top) 20px max(20px,env(safe-area-inset-bottom))!important}
 html[data-passite-app] .ps-auth-shell .ps-auth-topbar{min-height:76px}
 html[data-passite-app] .ps-auth-shell .ps-auth-card{padding:24px 20px!important;border-radius:16px!important;box-shadow:none!important}
 html[data-passite-app] .ps-auth-card h1{font-size:28px!important}
 html[data-passite-app] .ps-auth-topbar .brand{font-size:24px!important}
}

/* A single moving surface, not three equal-looking labels on a rule. */
html[data-passite-app="owner"] .project-tabs{position:relative;isolation:isolate;display:inline-grid;grid-template-columns:repeat(3,minmax(0,1fr));width:min(100%,520px);gap:4px;overflow:visible;margin:4px 0 32px;padding:5px;border:1px solid var(--ps-line);border-radius:14px;background:var(--ps-subtle)}
html[data-passite-app="owner"] .project-tabs button{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;min-width:0;min-height:46px;padding:10px 12px;border:0!important;border-radius:9px;background:transparent;color:var(--ps-secondary);font-size:13px;line-height:1.3;white-space:normal;text-align:center;transition:color 160ms}
html[data-passite-app="owner"] .project-tabs button[aria-selected="true"]{background:var(--ps-panel);color:var(--ps-ink);font-weight:650;box-shadow:0 1px 5px var(--ps-shadow)}
html[data-passite-app="owner"] .project-tabs[data-fluid-ready] button[aria-selected="true"]{background:transparent;box-shadow:none}
.ps-tab-fluid{display:none;position:absolute;z-index:0;left:0;top:5px;bottom:5px;width:var(--tab-width,0px);transform:translate3d(var(--tab-x,0px),0,0);border:1px solid var(--ps-line);border-radius:9px;background:var(--ps-panel);box-shadow:0 2px 6px var(--ps-shadow);pointer-events:none}
[data-fluid-ready]>.ps-tab-fluid{display:block}
html[data-passite-app="owner"] #projectTabPanel{min-width:0;outline-offset:4px}
@media(max-width:480px){html[data-passite-app="owner"] .project-tabs button{min-height:50px;padding:10px 6px;font-size:12px;line-height:1.4;overflow-wrap:anywhere}}
/* Dialog actions remain semantic buttons, presented as readable text links. */
html[data-passite-app="owner"] .lead-name{min-width:0}
html[data-passite-app="owner"] .owner-lead-link{appearance:none;display:inline;width:auto;max-width:100%;height:auto;min-height:0;padding:6px 0;margin:0;border:0;border-radius:0;background:transparent!important;box-shadow:none!important;color:var(--ps-accent-ink)!important;font-size:15px;line-height:1.55;font-weight:650;text-align:left;white-space:normal!important;overflow:visible!important;overflow-wrap:anywhere;text-overflow:clip;text-decoration:underline;text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);text-decoration-thickness:1px;text-underline-offset:4px;cursor:pointer}
html[data-passite-app="owner"] .owner-lead-link:hover{text-decoration-thickness:2px;text-decoration-color:currentColor}
html[data-passite-app="owner"] .lead-name>span{display:block;margin-top:5px;font-size:12px;line-height:1.5;white-space:normal;overflow-wrap:anywhere;color:var(--ps-secondary)}

/* No body fixing, padding compensation or content transform when navigation opens. */
@media(max-width:1100px){
 html[data-passite-app] body.nav-open:not(.modal-open):not(.subscription-detail-open):not(.contact-detail-open){overflow:visible!important}
 html[data-passite-app] #sidebar[data-fluid-drawer]{transition:none!important;transform:translate3d(0,var(--drawer-y,-24px),0)!important;opacity:var(--drawer-opacity,0)!important;clip-path:inset(0 0 var(--drawer-clip,100%) 0 round 0 0 var(--drawer-radius,20px) 0);will-change:auto}
 html[data-passite-app] #sidebar[data-fluid-drawer].motion-drawer-visible{visibility:visible!important}
 html[data-passite-app] #sidebar[data-fluid-drawer].motion-drawer-running{will-change:transform,clip-path}
 html[data-passite-app] #sidebarScrim[data-fluid-scrim]{transition:none!important;opacity:var(--drawer-opacity,0)!important}
 html[data-passite-app] #sidebarScrim.motion-drawer-visible{visibility:visible!important;pointer-events:auto!important}
 html[data-passite-app] #sidebar .sidebar-close svg{transform:none!important}
 html[data-passite-app] #sidebar nav{overscroll-behavior:contain;touch-action:pan-y}
}
/* JS drives these properties with springs; CSS transitions are the fallback. */
html[data-passite-app] .view{animation:none!important}
html[data-theme] .ps-theme-switch[data-fluid-theme] .ps-theme-thumb{transform:translateX(var(--theme-x,0px)) scaleX(var(--theme-stretch,1)) scaleY(var(--theme-squash,1))!important;transition:none!important}
html[data-theme] .ps-theme-switch[data-fluid-theme] .ps-theme-sun{transform:rotate(var(--theme-sun,0deg)) scale(var(--theme-sun-scale,1))!important;transition:color 180ms!important}
html[data-theme] .ps-theme-switch[data-fluid-theme] .ps-theme-moon{transform:rotate(var(--theme-moon,-25deg)) scale(var(--theme-moon-scale,.86))!important;transition:color 180ms!important}
html[data-theme] :is(.btn,.mini,.icon-btn,.ps-theme-switch,.sidebar-close)[data-fluid-press]{scale:var(--press-scale,1);transform-origin:center;transition:background-color 160ms,border-color 160ms,color 160ms!important}
html[data-theme] :is(input,select,textarea){transition:border-color 180ms,box-shadow 180ms,background-color 180ms}
@media(prefers-reduced-motion:reduce){
 html[data-theme] :is(.ps-auth-card,.ps-auth-art,.ps-tab-fluid,.ps-theme-switch,.ps-theme-thumb,.ps-theme-track svg,[data-fluid-press]),html[data-passite-app] #sidebar{animation:none!important;transition:none!important;scale:1!important}
}
/* Hidden states must beat component display, including authentication and tabs. */
html[data-passite-app] :is(#loginView,#authView,#mfaView,#activateView).hidden{display:none!important}

