/* Values, including media breakpoints, are generated from tokens.mjs at build time. */
:root{
  --paper: #F8F6F1;
  --surface: #FFFFFF;
  --surface-soft: #F0ECE3;
  --ink: #192A29;
  --muted: #52605C;
  --line: #D9D8CF;
  --accent: #806226;
  --accent-bright: #B38A43;
  --accent-soft: #ECE3CF;
  --dark: #172D2A;
  --dark-text: #FCFAF5;
  --dark-muted: #D4DDD6;
  --error: #A32720;
  --success: #296448;
  --focus: #176E8E;
  --overlay: rgba(15,31,27,.42);
  --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  --font-display: Georgia, "Times New Roman", serif;
  --weight-normal: 400;
  --weight-medium: 500;
  --weight-bold: 650;
  --text-xs: .75rem;
  --text-sm: .875rem;
  --text-base: 1rem;
  --text-md: 1.125rem;
  --text-lg: 1.25rem;
  --text-xl: 1.5rem;
  --text-2xl: 2rem;
  --text-3xl: 2.75rem;
  --hero-size: clamp(2.7rem,4.6vw,4.85rem);
  --heading-size: clamp(2rem,3.1vw,3.25rem);
  --line-body: 1.65;
  --line-heading: 1.06;
  --tracking-tight: -.043em;
  --tracking-label: .14em;
  --space-0: 0;
  --space-1: .25rem;
  --space-2: .5rem;
  --space-3: .75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-7: 1.75rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-14: 3.5rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-28: 7rem;
  --page-max: 80rem;
  --reading-max: 44rem;
  --gutter: clamp(1.25rem,4vw,4rem);
  --section-gap: clamp(3.5rem,7vw,7rem);
  --header-height: 5.75rem;
  --header-mobile: 4.5rem;
  --button-height: 3.25rem;
  --target: 2.75rem;
  --dock-height: 4.75rem;
  --sidebar: 15.5rem;
  --radius-sm: .3rem;
  --radius-md: .75rem;
  --radius-lg: 1.5rem;
  --radius-pill: 100rem;
  --border: 1px;
  --focus-width: 3px;
  --shadow: 0 18px 48px rgba(25,42,41,.10);
  --shadow-small: 0 5px 18px rgba(25,42,41,.08);
  --motion-fast: 160ms;
  --motion-medium: 260ms;
  --ease: cubic-bezier(.2,.8,.2,1);
  --z-header: 30;
  --z-dock: 35;
  --z-sos: 40;
  --z-modal: 90;
  --icon-size: 1.25rem;
  --logo-size: 3rem;
  --portrait-ratio: 4 / 5;
  --portrait-height: 35rem;
  --portrait-focus: 50% 35%;
  --body-min: 20rem;
  --form-max: 40rem;
  --field-height: 3rem;
  --card-min: 16rem;
  --chart-height: 13rem;
  --qr-size: 14rem;
  --hero-columns: 1.1fr .9fr;
  --hero-gap: clamp(2rem,5vw,5rem);
  --hero-pad: clamp(2rem,4vw,4rem);
  --letter-line: -.01em;
  --image-mono: #DDE1D7;
  --one: 1;
  --zero: 0;
  --bp-phone: 600px;
  --bp-tablet: 900px;
  --bp-navigation: 1120px;
  --bp-wide: 1500px;
}
*{box-sizing:border-box}html{font-size:100%;scroll-padding-top:calc(var(--header-height) + var(--space-6));color-scheme:light}body{margin:var(--zero);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--line-body);color:var(--ink);background:var(--paper);-webkit-text-size-adjust:100%;text-size-adjust:100%}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-decoration-thickness:var(--border);text-underline-offset:var(--space-1)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}a,button,input,select,textarea,summary{touch-action:manipulation}button,a,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:var(--space-1)}[hidden]{display:none!important}img{max-width:100%;height:auto;display:block}svg{display:block;flex-shrink:0}h1,h2,h3,p,ul,ol,figure{margin:var(--zero)}h1,h2{font-family:var(--font-display);font-weight:var(--weight-normal);letter-spacing:var(--tracking-tight);line-height:var(--line-heading)}h1{font-size:var(--hero-size)}h2{font-size:var(--heading-size)}h3{font-size:var(--text-lg);line-height:1.3;font-weight:var(--weight-bold)}p{overflow-wrap:anywhere}em{font-weight:var(--weight-normal)}input,select,textarea{width:100%;max-width:100%;padding:var(--space-3);border:var(--border) solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font-size:max(1rem,var(--text-base));min-height:var(--field-height)}input[type=checkbox],input[type=radio]{width:var(--space-5);height:var(--space-5);min-height:0;flex:0 0 var(--space-5);accent-color:var(--accent)}input[type=range]{padding:var(--zero);accent-color:var(--accent);min-height:var(--target)}textarea{min-height:var(--space-24);resize:vertical}label{display:block;font-weight:var(--weight-medium)}label>input,label>textarea,label>select{margin-top:var(--space-2)}small,.small{font-size:var(--text-sm)}hr{border:0;border-top:var(--border) solid var(--line);margin:var(--space-8) 0}
/* Shared layout and editorial rhythm. */
.container{width:calc(100% - var(--gutter)*2);max-width:var(--page-max);margin-inline:auto}.narrow{max-width:var(--reading-max)}.section{padding-block:var(--section-gap)}.section-soft{background:var(--surface-soft)}.section-dark{background:var(--dark);color:var(--dark-text)}.section-dark p{color:var(--dark-muted)}.section-dark .eyebrow,.section-dark .accent{color:var(--accent-bright)}.section-dark .text-link{color:var(--dark-text)}.stack>*+*{margin-top:var(--space-6)}.stack-small>*+*{margin-top:var(--space-3)}.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--hero-gap);align-items:start}.grid{display:grid;gap:var(--space-6)}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.eyebrow{display:block;font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-5)}.lead{font-size:var(--text-md);color:var(--muted);max-width:var(--reading-max)}.muted{color:var(--muted)}.accent{color:var(--accent)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:var(--space-8);margin-bottom:var(--space-12)}.section-heading h2{white-space:pre-line}.section-heading .lead{max-width:var(--form-max)}.icon{width:var(--icon-size);height:var(--icon-size);stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.sr-only{position:absolute;width:var(--border);height:var(--border);padding:0;margin:calc(-1*var(--border));overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;left:var(--space-4);top:var(--space-4);z-index:100;background:var(--ink);color:var(--surface);padding:var(--space-3);transform:translateY(-200%)}.skip:focus{transform:translateY(0)}
/* One clear top navigation; native disclosure works without JavaScript. */
.site-header{position:sticky;top:0;z-index:var(--z-header);background:var(--paper);border-bottom:var(--border) solid var(--line)}.header-inner{display:flex;align-items:center;gap:var(--space-8);min-height:var(--header-height)}.brand-mark{width:var(--logo-size);height:var(--logo-size);border-radius:var(--radius-pill);object-fit:cover;object-position:50% 30%;border:var(--border) solid var(--accent);flex-shrink:0;background:var(--surface-soft)}
.brand{display:flex;gap:var(--space-3);align-items:center;text-decoration:none;flex-shrink:0}.monogram{display:grid;place-items:center;width:var(--logo-size);height:var(--logo-size);border:var(--border) solid var(--accent);color:var(--accent);font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:var(--tracking-tight)}.brand-name{font-size:var(--text-base);font-weight:var(--weight-bold);line-height:1.25;display:block}.brand-sub{font-size:var(--text-xs);color:var(--muted);display:block;margin-top:var(--space-1)}.desktop-nav{margin-left:auto;display:flex;align-items:center;gap:var(--space-6)}.desktop-nav>a{display:inline-flex;align-items:center;min-height:var(--target);text-decoration:none;font-size:var(--text-sm);white-space:nowrap;border-bottom:var(--border) solid transparent}.desktop-nav>a:hover,.desktop-nav>a[aria-current=page]{color:var(--accent);border-color:var(--accent)}.header-actions{display:flex;gap:var(--space-5);align-items:center;margin-left:auto}.languages{display:flex;gap:var(--space-1);align-items:center}.languages a{display:grid;place-items:center;min-width:var(--space-8);height:var(--target);font-size:var(--text-xs);text-decoration:none;color:var(--muted)}.languages a[aria-current]{color:var(--ink);font-weight:var(--weight-bold);text-decoration:underline;text-decoration-color:var(--accent)}.mobile-menu{display:none}.mobile-menu>summary{list-style:none;display:flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--target);min-width:var(--target)}summary::-webkit-details-marker{display:none}.mobile-panel{position:absolute;inset-inline:0;top:100%;background:var(--paper);border-bottom:var(--border) solid var(--line);padding:var(--space-6) var(--gutter);max-height:calc(100dvh - var(--header-mobile));overflow:auto;box-shadow:var(--shadow)}.mobile-panel nav{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.mobile-panel a{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);min-height:var(--button-height);text-decoration:none;border-bottom:var(--border) solid var(--line)}.mobile-panel a[aria-current=page]{color:var(--accent);font-weight:var(--weight-bold)}.header-book{white-space:nowrap}.button,.text-link,.icon-button{min-height:var(--target);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);text-decoration:none;border:var(--border) solid transparent;background:transparent}.button{padding:var(--space-3) var(--space-6);min-height:var(--button-height);border-radius:var(--radius-sm);background:var(--ink);color:var(--surface);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:background var(--motion-fast) var(--ease)}.button:hover{background:var(--accent)}.button-light{background:var(--surface);color:var(--ink);border-color:var(--line)}.button-light:hover{background:var(--surface-soft)}.button-gold{background:var(--accent);color:var(--surface)}.button-outline{border-color:currentColor;color:inherit;background:transparent}.text-link{justify-content:start;font-size:var(--text-sm);font-weight:var(--weight-bold);border-bottom-color:var(--line);padding-block:var(--space-2)}.text-link:hover{color:var(--accent);border-color:var(--accent)}.button-row{display:flex;gap:var(--space-5);align-items:center;flex-wrap:wrap}.icon-button{width:var(--target);border-color:var(--line);border-radius:var(--radius-sm);background:var(--surface)}.draft-bar{text-align:center;background:var(--surface-soft);font-size:var(--text-xs);padding:var(--space-2) var(--gutter);color:var(--muted)}
/* Hero: portrait is a real image, not background text baked into an illustration. */
.hero{padding-block:var(--hero-pad) var(--section-gap)}.hero-grid{display:grid;grid-template-columns:var(--hero-columns);gap:var(--hero-gap);align-items:center}.credential{font-size:var(--text-xs);font-weight:var(--weight-medium);display:inline-flex;align-items:center;gap:var(--space-2);color:var(--muted);margin-bottom:var(--space-6)}.credential .icon{color:var(--accent)}.hero h1 span{display:block}.hero h1 em{color:var(--accent)}.hero-text{margin-top:var(--space-6);max-width:var(--reading-max);font-size:var(--text-md);color:var(--muted)}.hero .button-row{margin-top:var(--space-8)}.hero-note{font-size:var(--text-xs);color:var(--muted);margin-top:var(--space-5)}.portrait{position:relative;max-width:100%;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-soft)}.portrait img{width:100%;aspect-ratio:var(--portrait-ratio);object-fit:cover;object-position:var(--portrait-focus);max-height:var(--portrait-height)}.portrait figcaption{position:absolute;inset-inline:var(--space-5);bottom:var(--space-5);padding:var(--space-4) var(--space-5);background:var(--paper);color:var(--ink);display:flex;justify-content:space-between;gap:var(--space-4);align-items:center;border-left:var(--space-1) solid var(--accent)}.portrait figcaption strong{display:block;font-size:var(--text-base)}.portrait figcaption span{font-size:var(--text-xs);color:var(--muted)}.hero-pillars{display:flex;align-items:center;gap:var(--space-6);margin-top:var(--space-8);padding-top:var(--space-6);border-top:var(--border) solid var(--line);font-size:var(--text-xs);color:var(--muted)}.hero-pillars>span{display:flex;align-items:center;gap:var(--space-2)}.hero-pillars i{width:var(--space-1);height:var(--space-1);background:var(--accent);display:inline-block}.intro-strip{border-top:var(--border) solid var(--line);padding-block:var(--space-6);display:flex;align-items:center;justify-content:space-between;gap:var(--space-6)}.intro-strip p{font-size:var(--text-sm);color:var(--muted)}.intro-strip strong{color:var(--ink);font-weight:var(--weight-medium)}
/* Services use stable links and real text; no click-only cards. */
.service-card{border:var(--border) solid var(--line);padding:var(--space-8);background:var(--surface);display:flex;flex-direction:column;gap:var(--space-4);border-radius:var(--radius-sm);min-width:0}.service-top{display:flex;align-items:center;justify-content:space-between;color:var(--accent);margin-bottom:var(--space-3)}.service-top .icon{width:var(--space-8);height:var(--space-8)}.service-index{font-family:var(--font-display);color:var(--muted);font-size:var(--text-sm)}.service-card p{font-size:var(--text-sm);color:var(--muted)}.service-card .text-link{align-self:flex-start;margin-top:auto}.method-list{list-style:none;padding:0;counter-reset:steps}.method-list li{padding-block:var(--space-6);display:grid;grid-template-columns:var(--space-10) 1fr;gap:var(--space-4);border-bottom:var(--border) solid var(--muted)}.method-list li:first-child{padding-top:0}.method-number{font-family:var(--font-display);font-size:var(--text-xl);color:var(--accent-bright)}.method-list p{font-size:var(--text-sm);margin-top:var(--space-2)}.method-sticky{position:sticky;top:calc(var(--header-height) + var(--space-8))}.audience-list{display:grid;gap:var(--space-5);list-style:none;padding:0}.audience-list li{padding-bottom:var(--space-5);border-bottom:var(--border) solid var(--line);display:flex;gap:var(--space-4);align-items:center}.audience-list .icon{color:var(--accent)}.about-image{border-radius:var(--radius-sm);aspect-ratio:4/3;object-fit:cover;object-position:50% 33%;width:100%}.quote{font-family:var(--font-display);font-size:var(--text-2xl);line-height:1.3;letter-spacing:var(--tracking-tight);white-space:pre-line}.cta-panel{padding:var(--space-12);background:var(--surface-soft);border-left:var(--space-1) solid var(--accent)}.faq-item{border-bottom:var(--border) solid var(--line);padding:var(--space-5) 0}.faq-item summary{list-style:none;font-weight:var(--weight-medium);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:var(--target);cursor:pointer}.faq-item summary::after{content:'+';font-size:var(--text-xl);color:var(--accent)}.faq-item[open] summary::after{content:'\2212'}.faq-item p{margin-top:var(--space-4);color:var(--muted);font-size:var(--text-sm);max-width:var(--reading-max)}.faq-search{margin-bottom:var(--space-6)}.review{padding:var(--space-6);border:var(--border) solid var(--line);background:var(--surface)}.review p{margin-block:var(--space-4)}.stars{color:var(--accent);letter-spacing:var(--space-1)}.contact-links{display:grid;gap:var(--space-4)}.contact-links a{overflow-wrap:anywhere;display:flex;align-items:center;gap:var(--space-3);min-height:var(--target)}.contact-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:var(--hero-gap)}
/* Footer and service panel remain accessible without hovering. */
.site-footer{padding-block:var(--space-12) calc(var(--space-16) + env(safe-area-inset-bottom));background:var(--dark);color:var(--dark-text)}.footer-top{display:flex;gap:var(--space-10);align-items:start;justify-content:space-between;margin-bottom:var(--space-10)}.site-footer .brand-sub{color:var(--dark-muted)}.footer-links{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6)}.footer-links a{display:flex;align-items:center;min-height:var(--target);font-size:var(--text-xs);color:var(--dark-muted)}.footer-bottom{display:flex;justify-content:space-between;gap:var(--space-4);padding-top:var(--space-6);border-top:var(--border) solid var(--muted);font-size:var(--text-xs);color:var(--dark-muted)}.sos-button{position:fixed;right:var(--space-5);bottom:calc(var(--space-5) + env(safe-area-inset-bottom));z-index:var(--z-sos);display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);min-height:var(--target);background:var(--paper);color:var(--ink);border:var(--border) solid var(--accent);border-radius:var(--radius-pill);box-shadow:var(--shadow-small);font-weight:var(--weight-bold)}dialog{border:var(--border) solid var(--line);padding:0;max-width:min(var(--reading-max),calc(100% - var(--space-8)));max-height:calc(100dvh - var(--space-8));border-radius:var(--radius-md);background:var(--paper);color:var(--ink);box-shadow:var(--shadow);z-index:var(--z-modal)}dialog::backdrop{background:var(--overlay)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-6);position:sticky;top:0;background:var(--paper);border-bottom:var(--border) solid var(--line);z-index:1}.dialog-head h2{font-family:var(--font-body);font-size:var(--text-lg);letter-spacing:normal}.dialog-body{padding:var(--space-6)}.sos-card{padding-block:var(--space-5);border-bottom:var(--border) solid var(--line)}.sos-card p{font-size:var(--text-sm);margin-top:var(--space-3)}.sos-card a{font-size:var(--text-md);min-height:var(--target);display:inline-flex;align-items:center;margin-right:var(--space-4)}.sos-card small{display:block;color:var(--muted)}.emergency{background:var(--surface-soft);padding:var(--space-5);margin-bottom:var(--space-5)}.mobile-dock{display:none}.breadcrumb{display:flex;gap:var(--space-3);align-items:center;padding-block:var(--space-5);font-size:var(--text-xs);color:var(--muted)}.breadcrumb a{min-height:var(--target);display:inline-flex;align-items:center}.page-intro{padding-block:var(--space-10) var(--space-12)}.page-intro h1{font-size:var(--heading-size);max-width:var(--reading-max)}.page-intro p{margin-top:var(--space-5)}
/* Calculators: number inputs remain 16px on iOS to avoid automatic zoom. */
.tool-card{display:block;padding:var(--space-6);border:var(--border) solid var(--line);border-radius:var(--radius-sm);background:var(--surface);text-decoration:none;min-width:0}.tool-card .icon{color:var(--accent);margin-bottom:var(--space-5)}.tool-card p{font-size:var(--text-sm);color:var(--muted);margin-top:var(--space-3)}.tool-card:hover{border-color:var(--accent)}.tool-controls{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);margin-bottom:var(--space-8)}.tool-layout{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-8);align-items:start}.tool-inputs{background:var(--surface);padding:var(--space-8);border:var(--border) solid var(--line);border-radius:var(--radius-sm)}.field{margin-bottom:var(--space-5)}.field-line{display:flex;gap:var(--space-4);align-items:center;justify-content:space-between}.field-hint{color:var(--muted);font-size:var(--text-xs)}.tool-output{background:var(--dark);color:var(--dark-text);padding:var(--space-8);border-radius:var(--radius-sm)}.tool-output .muted{color:var(--dark-muted)}.result-main{font-family:var(--font-display);font-size:var(--text-3xl);line-height:1.15;margin-top:var(--space-3);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.result-row{display:flex;justify-content:space-between;gap:var(--space-6);border-top:var(--border) solid var(--muted);padding-block:var(--space-4);font-size:var(--text-sm)}.result-row strong{font-variant-numeric:tabular-nums;white-space:nowrap}.chart{width:100%;height:var(--chart-height);margin-block:var(--space-5)}.chart-line{fill:none;stroke:var(--accent-bright);stroke-width:3}.chart-baseline{stroke:var(--muted);stroke-width:1}.chart-fill{fill:var(--accent-bright);opacity:.12}.comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);margin-top:var(--space-8)}.formula{margin-block:var(--space-6);font-size:var(--text-sm)}.table-wrap{overflow:auto;max-width:100%}table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}th,td{padding:var(--space-3);text-align:left;border-bottom:var(--border) solid var(--line)}th{font-weight:var(--weight-bold)}.error{color:var(--error);font-size:var(--text-sm)}.notice{border-left:var(--space-1) solid var(--accent);background:var(--surface-soft);padding:var(--space-5);font-size:var(--text-sm)}.error:empty,.notice:empty{display:none}.success{color:var(--success)}.legal-copy p{margin-bottom:var(--space-5)}
/* Booking and private forms. */
.booking-layout{display:grid;grid-template-columns:1fr var(--sidebar);gap:var(--space-10);align-items:start}.booking-panel{background:var(--surface);padding:var(--space-8);border:var(--border) solid var(--line);border-radius:var(--radius-sm)}.steps{display:flex;gap:var(--space-2);list-style:none;padding:0;margin-bottom:var(--space-8);counter-reset:step}.steps li{flex:1;font-size:var(--text-xs);color:var(--muted);border-top:var(--space-1) solid var(--line);padding-top:var(--space-3)}.steps li[aria-current=step]{color:var(--ink);border-color:var(--accent);font-weight:var(--weight-bold)}.choice-list{display:grid;gap:var(--space-3)}.choice{display:flex;gap:var(--space-4);align-items:center;border:var(--border) solid var(--line);padding:var(--space-5);border-radius:var(--radius-sm);min-height:var(--target);cursor:pointer}.choice:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.check{display:flex;gap:var(--space-3);align-items:flex-start;font-size:var(--text-sm);font-weight:normal}.check input{margin-top:var(--space-1)}.slots{display:grid;grid-template-columns:repeat(auto-fit,minmax(6rem,1fr));gap:var(--space-3);margin-block:var(--space-5)}.slot{padding:var(--space-3);border:var(--border) solid var(--line);background:var(--surface);border-radius:var(--radius-sm);min-height:var(--target);font-variant-numeric:tabular-nums}.slot[aria-pressed=true]{background:var(--ink);color:var(--surface)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5)}.form-grid>.full{grid-column:1/-1}.booking-aside{position:sticky;top:calc(var(--header-height) + var(--space-8));font-size:var(--text-sm)}.avatar{width:var(--space-20);height:var(--space-20);border-radius:var(--radius-pill);object-fit:cover}.booking-aside h2{font-family:var(--font-body);font-size:var(--text-md);letter-spacing:normal;margin-block:var(--space-4) var(--space-2)}.summary-list{display:grid;grid-template-columns:auto 1fr;gap:var(--space-3) var(--space-6);font-size:var(--text-sm);margin:var(--space-6) 0}.summary-list dt{color:var(--muted)}.summary-list dd{margin:0;overflow-wrap:anywhere}.card-page{max-width:var(--form-max);margin-inline:auto;text-align:center;background:var(--surface);padding:var(--space-10);border:var(--border) solid var(--line);border-radius:var(--radius-md)}.card-page .avatar{margin-inline:auto;width:var(--space-24);height:var(--space-24)}.card-page .button-row{justify-content:center}.qr-preview{width:var(--qr-size);height:var(--qr-size);margin:var(--space-6) auto;background:var(--surface)}.card-page h1{font-size:var(--heading-size)}
/* Administration reuses the same language and input system, without a permanent client account. */
.admin-shell{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:75vh;gap:var(--space-8);padding-block:var(--space-8)}.admin-sidebar{position:sticky;top:calc(var(--header-height) + var(--space-5));align-self:start;max-height:calc(100dvh - var(--header-height) - var(--space-10));overflow:auto}.admin-sidebar nav{display:grid;gap:var(--space-1)}.admin-sidebar button{display:flex;text-align:left;align-items:center;min-height:var(--target);padding:var(--space-3) var(--space-4);border:0;background:transparent;border-radius:var(--radius-sm);font-size:var(--text-sm)}.admin-sidebar button[aria-current=page]{background:var(--ink);color:var(--surface)}.admin-main{min-width:0}.admin-main h1{font-size:var(--heading-size);margin-bottom:var(--space-8)}.admin-card{padding:var(--space-6);margin-bottom:var(--space-6);border:var(--border) solid var(--line);background:var(--surface);border-radius:var(--radius-sm)}.admin-card h2{font-family:var(--font-body);font-size:var(--text-lg);letter-spacing:normal;line-height:1.4;margin-bottom:var(--space-5)}.admin-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-block:var(--space-4)}.admin-save{position:sticky;bottom:var(--space-3);background:var(--paper);border:var(--border) solid var(--line);padding:var(--space-4);display:flex;align-items:center;gap:var(--space-4);z-index:2;box-shadow:var(--shadow-small)}.admin-item{padding:var(--space-5);border:var(--border) solid var(--line);margin-block:var(--space-4);border-radius:var(--radius-sm)}.admin-tabs-mobile{display:none}.pill{display:inline-flex;align-items:center;min-height:var(--space-6);padding:var(--space-1) var(--space-3);background:var(--surface-soft);border-radius:var(--radius-pill);font-size:var(--text-xs);white-space:nowrap}.pill-success{background:var(--success);color:var(--surface)}.status-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.status-card{padding:var(--space-5);border:var(--border) solid var(--line);border-radius:var(--radius-sm)}.status-card strong{display:block;font-size:var(--text-md)}.status-card p{font-size:var(--text-sm);color:var(--muted);margin-top:var(--space-3)}.availability-row{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:var(--space-3);margin-block:var(--space-3)}.preview-box{border:var(--border) dashed var(--accent);padding:var(--space-6);margin-block:var(--space-5)}.admin-warn{background:var(--accent-soft);padding:var(--space-4);font-size:var(--text-sm);margin-bottom:var(--space-6)}.admin-summary{display:flex;gap:var(--space-3);align-items:center;margin-bottom:var(--space-5)}.admin-summary select{min-width:0}.admin-actions .button{min-height:var(--target)}
/* Breakpoints have a single source in tokens.mjs; no duplicated magic values. */
@media(max-width:1120px){.desktop-nav{display:none}.mobile-menu{display:block}.header-inner{gap:var(--space-4)}.header-actions{margin-left:auto}.hero-grid{grid-template-columns:1fr 1fr}.hero h1{font-size:clamp(2.6rem,4.8vw,4rem)}.hero-pillars{gap:var(--space-4)}.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-shell{grid-template-columns:13rem 1fr}.header-actions .button{padding-inline:var(--space-4)}}
@media(max-width:900px){.split,.tool-layout{grid-template-columns:1fr}.method-sticky{position:static}.hero-grid{gap:var(--space-8)}.hero-text{font-size:var(--text-base)}.hero-pillars{flex-wrap:wrap}.section-heading{align-items:start;flex-direction:column;gap:var(--space-5)}.booking-layout{grid-template-columns:1fr}.booking-aside{position:static;display:flex;align-items:center;gap:var(--space-5);grid-row:1}.booking-aside h2{margin:0}.booking-aside p{font-size:var(--text-xs)}.booking-aside .avatar{width:var(--space-16);height:var(--space-16)}.admin-shell{display:block}.admin-sidebar{position:static;max-height:none;margin-bottom:var(--space-6)}.admin-sidebar nav{display:none}.admin-tabs-mobile{display:block}.admin-save{bottom:var(--space-3)}.contact-grid{grid-template-columns:1fr}.about-image{max-height:var(--portrait-height)}}
@media(max-width:600px){html{scroll-padding-top:calc(var(--header-mobile) + var(--space-4))}.header-inner{min-height:var(--header-mobile)}.brand-sub{display:none}.brand-name{font-size:var(--text-sm)}.monogram{width:var(--space-10);height:var(--space-10)}.header-actions{gap:var(--space-2)}.header-book{display:none}.languages a{min-width:var(--space-7)}.mobile-menu>summary .menu-word{display:none}.hero{padding-top:var(--space-8)}.hero-grid{grid-template-columns:1fr;gap:var(--space-10)}.hero h1{font-size:clamp(2.7rem,9.9vw,3.7rem)}.hero-text{margin-top:var(--space-5)}.hero .button-row{gap:var(--space-4);margin-top:var(--space-6)}.hero .button{width:100%}.hero .text-link{margin-inline:auto}.hero-note{text-align:center}.hero-pillars{justify-content:space-between;gap:var(--space-2)}.credential{margin-bottom:var(--space-5)}.portrait img{aspect-ratio:var(--portrait-ratio)}.portrait figcaption{inset-inline:var(--space-4);bottom:var(--space-4)}.intro-strip{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.grid-3,.grid-2,.form-grid,.comparison-grid,.tool-controls{grid-template-columns:1fr}.service-card{padding:var(--space-6)}.cta-panel{padding:var(--space-6)}.footer-top{display:block}.footer-top .brand{margin-bottom:var(--space-6)}.footer-bottom{flex-direction:column}.site-footer{padding-bottom:calc(var(--dock-height) + var(--space-12) + env(safe-area-inset-bottom))}.sos-button{bottom:calc(var(--dock-height) + var(--space-3) + env(safe-area-inset-bottom));right:var(--space-4);padding-inline:var(--space-4)}.mobile-dock{display:flex;position:fixed;bottom:0;inset-inline:0;z-index:var(--z-dock);background:var(--paper);border-top:var(--border) solid var(--line);padding:var(--space-3) var(--gutter) calc(var(--space-3) + env(safe-area-inset-bottom));gap:var(--space-4);align-items:center;min-height:var(--dock-height)}.mobile-dock .button{flex:1;min-height:var(--target)}.mobile-dock .text-link{font-size:var(--text-xs);gap:var(--space-2)}body[data-page=book] .mobile-dock,body[data-page=admin] .mobile-dock,body[data-page=manage] .mobile-dock,body[data-page=prep] .mobile-dock{display:none}body[data-page=book] .sos-button,body[data-page=admin] .sos-button,body[data-page=manage] .sos-button,body[data-page=prep] .sos-button{bottom:calc(var(--space-4) + env(safe-area-inset-bottom))}.tool-inputs,.tool-output,.booking-panel{padding:var(--space-5)}.card-page{padding:var(--space-6)}.result-main{font-size:var(--text-2xl)}.status-grid{grid-template-columns:1fr}.admin-save{margin-right:var(--space-16);flex-wrap:wrap}.steps li{font-size:var(--text-xs);overflow-wrap:anywhere}.mobile-panel nav{grid-template-columns:1fr 1fr}.mobile-panel a{font-size:var(--text-sm);padding-inline:var(--space-2)}.page-intro{padding-top:var(--space-6)}.hero .eyebrow{font-size:var(--text-xs)}.button-row>.button{max-width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media(forced-colors:active){.button,.service-card,.sos-button,.slot{border:var(--border) solid ButtonText}.chart-line{stroke:CanvasText}}
@media print{.site-header,.site-footer,.mobile-dock,.sos-button,dialog,.breadcrumb,.button-row,.admin-sidebar,.draft-bar{display:none!important}body{background:white;color:black;font-size:11pt}.container{width:100%;max-width:none}.section{padding-block:1rem}.tool-layout,.split{display:block}.tool-output{background:white;color:black;border:1px solid black}.tool-output .muted{color:black}.chart-line{stroke:black}.portrait{max-width:18rem}.service-card,.tool-card{break-inside:avoid}a{text-decoration:none}.card-page{border:0}.qr-preview{width:12rem;height:12rem}.section-dark{background:white;color:black}.section-dark p{color:black}}

/* Cycle 1: a face and identity remain visible on the first small-screen view. */
.mobile-introduction{display:none}
@media(max-width:600px){.mobile-introduction{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}.mobile-introduction .avatar{width:var(--space-14);height:var(--space-14)}.mobile-introduction strong{display:block;font-size:var(--text-sm)}.mobile-introduction small{display:block;color:var(--muted);font-size:var(--text-xs)}.hero .credential{display:none}.hero .eyebrow{margin-bottom:var(--space-5)}}
/* Cycle 1: intrinsic SVG sizes and text magnification must not widen the page. */
.qr-preview svg{width:100%;height:100%}.card-page fieldset{min-width:0}.hero-grid>*,.split>*,.grid>*,.tool-layout>*,.form-grid>*,.contact-grid>*{min-width:0}h1,h2,h3{overflow-wrap:anywhere}.button{min-width:0;white-space:normal;overflow-wrap:anywhere}.brand>span:last-child{min-width:0}.brand-name{overflow-wrap:anywhere}.mobile-introduction>div{min-width:0}.mobile-introduction .avatar{flex-shrink:0}.mobile-introduction small{overflow-wrap:anywhere}
@media(max-width:600px){.header-inner{flex-wrap:wrap;row-gap:0;padding-block:var(--space-2)}.header-inner .brand{min-width:0;max-width:100%;flex-shrink:1}.header-actions{max-width:100%;flex-wrap:wrap}.hero-pillars{flex-wrap:wrap}.mobile-dock .text-link{display:none}.mobile-dock .button{width:100%}.mobile-panel{width:100%}.mobile-panel nav{grid-template-columns:repeat(2,minmax(0,1fr))}.mobile-panel a{overflow-wrap:anywhere}.portrait figcaption{flex-wrap:wrap}.card-page{padding-inline:var(--space-4)}.qr-preview{max-width:100%;height:auto;aspect-ratio:1}}

/* Current HTML preview shares the public renderer; width is explicit and internally scrollable. */
.admin-preview-dialog{width:calc(100% - var(--space-8));max-width:var(--page-max)}.admin-preview-dialog .dialog-head select{width:auto}.preview-scroll{overflow:auto;max-width:100%}.preview-scroll iframe{display:block;border:0;height:75dvh;max-width:none;margin-inline:auto}
/* Cycle 5: graceful fallbacks for Safari versions without dynamic viewport/color-mix. */
@supports not (color:color-mix(in srgb,white,black)){.site-header{background:var(--paper)}.inverse .muted{color:var(--paper)}.eyebrow{color:var(--accent)}}
@supports not (height:100dvh){dialog{max-height:90vh}.preview-scroll iframe{height:75vh}.mobile-panel{max-height:80vh}}

/* Audit candidate: readable local calculators, preserving the existing design tokens. */
body[data-page=tools] .page-intro{padding-block:var(--space-3) var(--space-5)}
body[data-page=tools] .page-intro h1{font-size:clamp(2rem,5vw,3.5rem)}
body[data-page=tools] .page-intro p{margin-top:var(--space-3)}
body[data-page=tools] .section{padding-top:var(--space-5)}
body[data-page=tools] .tool-controls{grid-template-columns:1fr;margin-bottom:var(--space-5);max-width:36rem}
body[data-page=tools] .breadcrumb{padding-block:var(--space-1)}
.sim-heading{margin-bottom:var(--space-5);gap:var(--space-3)}
.sim-heading h2{font-size:clamp(1.6rem,3vw,2.3rem)}
.sim-heading .text-link{min-height:44px}
.sim-description{margin-bottom:var(--space-5)}
.sim-local{margin-top:var(--space-4)}
.sim-warning{margin-top:var(--space-5)}
.sim-inline-warning{font-size:var(--text-sm);margin-top:var(--space-4);border-left:2px solid currentColor;padding-left:var(--space-3)}
.sim-chart{margin-block:var(--space-5)}
.sim-chart figcaption{font-size:var(--text-sm);font-weight:var(--weight-bold)}
.sim-chart .chart{height:auto;display:block;margin-block:var(--space-3);overflow:visible}
.chart-tick{fill:currentColor;font-size:14px;font-family:var(--font-body)}
.chart-gridline{fill:none;stroke:currentColor;opacity:.15;stroke-width:1}
.sim-chart .chart-baseline{stroke:currentColor;opacity:.8;stroke-width:1.5}
.chart-contributions,.chart-reference{fill:none;stroke:currentColor;stroke-width:2;stroke-dasharray:6 4}
.chart-reference{stroke-dasharray:2 5}
.chart-legend{display:flex;flex-wrap:wrap;gap:.5rem 1rem;font-size:var(--text-xs)}
.chart-legend span{display:inline-flex;align-items:center;gap:.4rem}
.chart-legend i{width:1.3rem;border-top:2px solid currentColor}
.chart-legend i.chart-line{border-color:var(--accent-bright)}
.chart-legend i.chart-contributions{border-top-style:dashed}.chart-legend i.chart-reference{border-top-style:dotted}
.budget-bars{margin-block:var(--space-5)}
.budget-item{margin-top:var(--space-4);font-size:var(--text-sm)}
.budget-item>div:first-child{display:flex;justify-content:space-between;gap:var(--space-3)}
.budget-item strong{white-space:nowrap}
.budget-track{height:6px;background:var(--muted);margin-top:var(--space-2)}
.budget-track span{display:block;height:100%;background:var(--accent-bright)}
.budget-track .negative{background:currentColor}
.sim-comparison,.sim-milestones{margin-top:var(--space-8)}
.sim-comparison h3,.sim-milestones h3{font-family:var(--font-body);font-size:var(--text-lg);letter-spacing:normal}
.sim-comparison table,.sim-milestones table{min-width:32rem}
.sim-comparison caption,.sim-milestones caption{padding-block:var(--space-3);text-align:left;color:var(--muted);font-size:var(--text-xs)}
.sim-changed{background:var(--surface-soft)}
.tool-output .result-row strong{white-space:normal;text-align:right;overflow-wrap:anywhere}
.result-text{font-family:var(--font-body);font-size:var(--text-lg)!important;line-height:1.4}
#tool-catalog{margin-top:var(--space-5)}
@media(max-width:600px){
 body[data-page=tools] .page-intro{padding-block:var(--space-2) var(--space-4)}
 body[data-page=tools] .page-intro h1{font-size:2rem}
 body[data-page=tools] .page-intro p{font-size:var(--text-sm)}
 body[data-page=tools] .sim-heading{flex-direction:row;align-items:center}
 body[data-page=tools] .sim-heading h2{font-size:1.5rem}
 body[data-page=tools] .sim-heading .text-link{font-size:var(--text-xs);flex-shrink:0}
 body[data-page=tools] .mobile-dock{display:none}
 body[data-page=tools] .sos-button{bottom:calc(var(--space-4) + env(safe-area-inset-bottom))}
 body[data-page=tools] .tool-inputs,body[data-page=tools] .tool-output{padding:var(--space-4)}
 .sim-comparison .table-wrap,.sim-milestones .table-wrap{border:1px solid var(--line);border-radius:var(--radius-sm)}
}
/* Partner workspace 4.2: isolated presentation, real links, accessible native controls. */
:root{--profile-accent:var(--accent)}
.brand-mark,.portrait{border-color:var(--profile-accent)}
.partner-initials{display:grid;place-items:center;background:var(--surface-soft);color:var(--ink);font-size:1.25rem;font-weight:650;border:1px solid var(--line)}
.team-switcher{position:relative;font-size:var(--text-sm)}
.team-switcher>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px;white-space:nowrap}
.team-switcher>summary::after{content:'+';color:var(--accent);font-size:1rem}
.team-switcher[open]>summary::after{content:'-'}
.team-switcher-panel{position:absolute;inset-inline-end:0;top:100%;width:min(340px,85vw);padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);z-index:50}
.team-person-link{display:flex;align-items:center;gap:12px;padding:10px;min-height:44px;text-decoration:none;overflow-wrap:anywhere;border-radius:5px}
.team-person-link img{width:32px;height:32px;object-fit:cover;border-radius:50%}
.team-person-link[aria-current],.team-person-link:hover{background:var(--surface-soft)}
.mobile-team-links{margin-block:16px;border-top:1px solid var(--line);padding-top:12px}.mobile-team-links .team-person-link{justify-content:flex-start}
@media(min-width:1121px) and (max-width:1320px){.header-book{display:none}.header-inner{gap:20px}.desktop-nav{gap:18px}}
body[data-page=admin] .site-footer,body[data-page=admin] .mobile-dock,body[data-page=admin] .sos-button,body[data-page=admin] .draft-bar,body[data-page=admin] .header-book,body[data-page=admin] .desktop-nav,body[data-page=admin] .mobile-menu{display:none}
body[data-page=admin]{background:var(--surface-soft)}
body[data-page=admin] .admin-main h1{font-size:2.1rem;margin-bottom:24px}
.admin-shell{grid-template-columns:218px minmax(0,1fr);gap:28px}
.admin-sidebar nav a{display:flex;align-items:center;min-height:44px;padding:10px 14px;border-radius:6px;text-decoration:none;font-size:.88rem}
.admin-sidebar nav a[aria-current=page]{background:var(--ink);color:var(--surface)}
.admin-sidebar a[hidden]{display:none}
#admin-partner-navigation{margin-block:22px;padding-top:18px;border-top:1px solid var(--line)}
.admin-partner-link{display:block;min-height:44px;padding:10px 14px;font-size:.84rem;text-decoration:none;overflow-wrap:anywhere;border-left:2px solid transparent}
.admin-partner-link[aria-current]{border-color:var(--accent);background:var(--paper)}
.admin-identity{background:var(--paper);border:1px solid var(--line);border-radius:10px;margin-bottom:24px;padding:20px;display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,280px);gap:20px}
.admin-identity-person{display:flex;gap:16px;align-items:center;min-width:0}.admin-identity-person>div{min-width:0}.admin-identity-person strong{display:block;font-size:1.15rem;overflow-wrap:anywhere}.admin-identity .eyebrow{font-size:.65rem;margin-bottom:6px}
.admin-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.admin-badges .pill{white-space:normal;line-height:1.45}
.partner-avatar{display:block;width:64px;height:64px;flex:0 0 64px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}.partner-avatar.partner-initials{display:grid}
.admin-profile-switch{align-self:center;font-size:.75rem;min-width:0}.admin-profile-switch select{font-size:.9rem}
.admin-identity-actions{grid-column:1/-1;display:flex;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:6px}
#admin-dirty-state.is-dirty{background:var(--accent-soft);font-weight:600}
.admin-card{border-radius:10px}.admin-card .form-grid{margin-top:18px}.admin-card input,.admin-card textarea,.admin-card select{max-width:100%;min-width:0}
.admin-card input[type=color]{width:90px;min-height:44px;padding:4px}
.team-intro h2{font-family:var(--font-display);font-size:2rem}.team-intro>p{max-width:56ch;color:var(--muted)}
.team-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;border-top:1px solid var(--line);margin-top:24px;padding-top:22px}.team-metrics strong{display:block;font-family:var(--font-display);font-size:2.1rem;line-height:1.2}.team-metrics strong small{font-family:var(--font-body);font-size:.9rem;font-weight:400;color:var(--muted)}.team-metrics span{font-size:.77rem;color:var(--muted)}
.partner-add>summary{cursor:pointer;font-weight:650;min-height:44px;display:flex;align-items:center;justify-content:space-between}.partner-add>summary::after{content:'+'}.partner-add[open]>summary::after{content:'-'}
.partner-filters{display:grid;grid-template-columns:1fr 210px;gap:16px;margin-bottom:10px}.partner-filters label{font-size:.82rem}
.partner-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.partner-card{padding:22px;background:var(--paper);border:1px solid var(--line);border-radius:10px}.partner-card[hidden]{display:none}.partner-card-heading{display:flex;align-items:center;gap:14px;min-width:0}.partner-card-heading>div{min-width:0}.partner-card h3{font-family:var(--font-body);font-size:1.05rem;letter-spacing:0;margin:0}.partner-card h3 a{text-decoration:none;overflow-wrap:anywhere}.partner-card p{overflow-wrap:anywhere}.partner-card-heading p{font-size:.76rem;margin-top:4px}
.partner-path{font-family:monospace;font-size:.74rem;background:var(--surface-soft);border-radius:5px;padding:12px;margin-block:16px;overflow-wrap:anywhere}.partner-card-actions{display:flex;gap:14px;flex-wrap:wrap}.partner-card-actions a{font-size:.76rem}.partner-card .admin-actions{border-top:1px solid var(--line);padding-top:8px;margin-bottom:0}
.profile-photo-layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:26px;align-items:center;margin-bottom:22px}.profile-photo-large{width:190px;height:238px;border-radius:8px;object-fit:cover}.profile-photo-empty{width:190px;height:238px;display:grid;place-items:center;background:var(--surface-soft);border:1px dashed var(--line);border-radius:8px;font-size:.8rem;text-align:center;padding:20px}.profile-about-photo{margin-top:22px;border-top:1px solid var(--line);padding-top:14px}.profile-about-photo>summary{min-height:44px;cursor:pointer}.profile-about-photo img{object-fit:cover;max-width:100%;height:180px;margin-block:10px;border-radius:6px}
.partner-links{display:grid;grid-template-columns:1fr;gap:18px;margin-top:18px}.partner-links h3{font-size:.9rem;font-family:var(--font-body)}.partner-link-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-block:12px;border-bottom:1px solid var(--line);min-width:0}.partner-link-row>div{min-width:0}.partner-link-row a{display:block;font-size:.78rem;overflow-wrap:anywhere;word-break:break-word}.partner-link-row .icon-button{flex:0 0 44px}.partner-link-row span{display:block;color:var(--muted);margin-bottom:3px}
.profile-checklist{list-style:none;padding:0;margin:0}.profile-checklist li{display:flex;align-items:center;gap:12px;padding-block:13px;border-bottom:1px solid var(--line)}.profile-checklist small{margin-left:auto;color:var(--muted);font-size:.73rem}.check-dot{width:26px;height:26px;flex:0 0 26px;border-radius:50%;display:grid;place-items:center;background:var(--surface-soft);color:var(--muted)}.check-dot.complete{background:var(--ink);color:var(--paper)}
.admin-timeline{padding-left:18px;margin:0}.admin-timeline li{padding-block:9px}.admin-timeline time{display:block;font-size:.75rem;color:var(--muted)}.admin-timeline code{font-size:.76rem;overflow-wrap:anywhere}
.photo-dialog{border:1px solid var(--line);border-radius:14px;padding:0;width:min(740px,94vw);max-height:92dvh;overflow:auto;background:var(--paper);color:var(--ink)}.photo-dialog::backdrop,.admin-preview-dialog::backdrop{background:rgba(15,20,23,.68)}.photo-dialog-inner{padding:26px}.photo-dialog h2{font-size:1.6rem;margin-bottom:20px}.photo-crop-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}.photo-crop-layout canvas{max-width:100%;height:auto;border-radius:8px}#avatar-canvas{width:100px;height:100px;border-radius:50%;margin:auto}.photo-dialog .button-row{margin-top:24px}.photo-dialog label{font-size:.85rem}.photo-dialog input[type=range]{min-height:44px}.photo-dialog canvas{background:var(--surface-soft)}
.admin-preview-dialog{width:95vw;max-width:1500px;height:92dvh;max-height:92dvh;border:1px solid var(--line);border-radius:10px;padding:14px;background:var(--paper)}.admin-preview-dialog iframe{display:block;border:1px solid var(--line);width:100%;height:calc(100% - 62px);margin-top:12px}
@media(max-width:900px){.partner-grid{grid-template-columns:1fr}.admin-identity{grid-template-columns:1fr}.profile-photo-layout{grid-template-columns:150px minmax(0,1fr)}.profile-photo-large,.profile-photo-empty{width:150px;height:188px}}
@media(max-width:800px){.admin-shell{display:block}.admin-sidebar{position:static;margin-bottom:18px;max-height:none}.admin-sidebar nav,#admin-partner-navigation{display:none}.admin-tabs-mobile{display:block}#admin-logout{font-size:.8rem}.admin-identity{padding:16px}.admin-shell{padding-top:20px}.admin-main h1{font-size:1.8rem!important}}
@media(max-width:560px){.partner-filters{grid-template-columns:1fr}.team-metrics{gap:10px}.team-metrics strong{font-size:1.8rem}.team-metrics span{font-size:.7rem}.admin-card,.partner-card{padding:18px}.admin-card .form-grid{grid-template-columns:1fr}.admin-identity-actions{gap:8px 16px}.profile-photo-layout{grid-template-columns:1fr}.profile-photo-large,.profile-photo-empty{width:160px;height:200px}.profile-checklist li{flex-wrap:wrap;gap:9px;font-size:.85rem}.profile-checklist small{margin-left:35px;width:100%}.photo-dialog-inner{padding:18px}.photo-crop-layout{gap:14px}.photo-crop-layout label{font-size:.73rem}.photo-crop-layout .small{font-size:.7rem}.photo-dialog h2{font-size:1.35rem}.admin-save{bottom:12px;padding:12px;flex-wrap:wrap}.partner-card-heading{gap:12px}.partner-card .partner-avatar{width:54px;height:54px;flex-basis:54px}}

/* Profile switching stays readable and does not request the small-control zoom on mobile. */
.admin-profile-switch select{font-size:1rem;min-height:44px;}
/* Time inputs keep their usable size; remove buttons move below on narrow phones. */
.availability-row>label{min-width:0}.availability-row input{min-width:0;max-width:100%}
@media(max-width:420px){.availability-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.availability-row>button{grid-column:1/-1;justify-self:end}}

/* 4.3 client journey: progressive disclosure, large controls, no brand imitations. */
[hidden]{display:none!important}
.nav-current{display:inline-flex;align-items:center;min-height:44px;color:var(--ink);font-weight:650;border-bottom:2px solid var(--accent);padding-block:.4rem}
.mobile-panel .nav-current{padding:.7rem;border-radius:.5rem;background:var(--cream)}
.partner-strip{padding:2.5rem 0 3rem;border-block:1px solid var(--line)}
.partner-heading{display:flex;justify-content:space-between;align-items:baseline;gap:2rem;margin-bottom:1.5rem}
.partner-heading h2{font-size:1.25rem;margin:0}.partner-heading p{font-size:.875rem;max-width:30rem;color:var(--muted);margin:0}
.partner-brands{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
.partner-brand{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.7rem;padding:1.5rem .6rem;border:1px solid var(--line);border-radius:1rem;background:var(--paper);text-decoration:none;min-height:110px}
.partner-brand:hover{border-color:var(--accent)}.partner-brand img{max-width:100%;object-fit:contain}.partner-brand span{font-size:.8rem;color:var(--muted)}.brand-wordmark{font-family:Arial,sans-serif;font-size:1.35rem;letter-spacing:-.035em}
.client-space .portal-hero{display:grid;grid-template-columns:1.3fr 1fr;gap:3rem;padding:3rem;border:1px solid var(--line);background:var(--cream);border-radius:1.6rem;align-items:center}
.portal-hero h2{font-size:clamp(1.8rem,4vw,3rem);margin:.7rem 0 1rem}.portal-hero .button{margin:1rem 0}
.portal-illustration{max-width:340px;width:100%;margin-inline:auto;padding:2rem;border:1px solid var(--line);border-radius:1rem;background:var(--paper);box-shadow:0 18px 60px #0000000b;transform:rotate(2deg)}
.portal-monogram{font-size:.8rem;font-weight:700;letter-spacing:.14em}.portal-line{height:9px;border-radius:4px;background:var(--line);margin-top:1rem}.portal-line.short{width:60%;margin-bottom:2rem}.portal-card-row{display:flex;align-items:center;gap:1rem;padding:1rem 0;border-top:1px solid var(--line)}.portal-card-row i{height:8px;flex:1;background:var(--cream)}.portal-card-row b{color:var(--accent)}
.client-person{display:flex;align-items:center;gap:1rem;padding:1.5rem;border:1px solid var(--line);border-radius:1rem}.client-person img,.person-initial{width:64px;height:64px;object-fit:cover;border-radius:50%;flex-shrink:0}.person-initial{display:grid;place-items:center;background:var(--cream);font-size:1.5rem}.client-person p{font-size:.875rem;color:var(--muted);margin:.25rem 0 0}.client-person .button{margin-left:auto}
.tools-experience{padding-top:1rem}.tool-hub-intro{max-width:48rem;margin-bottom:1.8rem}.trust-chips{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.trust-chips span{font-size:.8rem;padding:.5rem .8rem;border-radius:2rem;border:1px solid var(--line);background:var(--cream)}
.tool-search-label{display:block;font-size:.85rem;max-width:38rem}.tool-search-label input{margin-top:.5rem;min-height:50px;background:var(--paper)}.tool-filters{display:flex;gap:.5rem;flex-wrap:wrap;margin:1.3rem 0 1.8rem}.tool-filter,.horizon-presets button{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:2rem;padding:.7rem 1rem;min-height:44px;font:inherit;font-size:.875rem;cursor:pointer}.tool-filter[aria-pressed=true],.horizon-presets button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.tool-directory-card{display:flex;flex-direction:column;text-decoration:none;padding:1.6rem;border:1px solid var(--line);border-radius:1.15rem;background:var(--paper);transition:transform .15s,border-color .15s;min-height:240px;gap:.9rem}
.tool-directory-card:hover{transform:translateY(-3px);border-color:var(--accent)}.tool-card-top{display:flex;align-items:center;gap:.65rem;color:var(--muted)}.tool-number{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--cream);font-size:.8rem;color:var(--ink)}.tool-directory-card h2{font-size:1.25rem;margin:0}.tool-directory-card p{font-size:.9rem;color:var(--muted);line-height:1.6;margin:0}.tool-card-footer{display:flex;justify-content:space-between;gap:1rem;padding-top:1rem;margin-top:auto;border-top:1px solid var(--line);font-size:.8rem}
.workbench-toolbar{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin-bottom:2rem}.workbench-chooser{max-width:25rem;font-size:.8rem;color:var(--muted)}.workbench-chooser select{margin-top:.4rem;min-height:48px}.sim-heading{margin-bottom:1.5rem}.sim-heading h2{font-size:1.5rem}.tool-inputs{padding:1.8rem;border:1px solid var(--line);border-radius:1.2rem;background:var(--paper)}.tool-inputs>.eyebrow{margin-bottom:1rem;display:block}.tool-inputs .field{margin-bottom:1.3rem}.sim-number{position:relative}.sim-number input{font-size:1.2rem;font-variant-numeric:tabular-nums;padding-right:5.5rem;min-height:52px}.sim-number>span{position:absolute;right:1rem;top:50%;transform:translateY(-50%);font-size:.8rem;color:var(--muted);pointer-events:none}.horizon-presets{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.45rem}.horizon-presets button{padding:.35rem .65rem;font-size:.75rem}.field-hint{display:block;margin-top:.5rem;color:var(--muted);font-size:.75rem}.tool-output{border-radius:1.2rem;padding:1.8rem}.tool-output .eyebrow{color:inherit;opacity:.75}.tool-output .result-main{font-size:clamp(2rem,4.2vw,3.7rem);overflow-wrap:anywhere;line-height:1.15;margin:.6rem 0 1rem}.sim-insight{font-size:.9rem;line-height:1.7;opacity:.9;border-top:1px solid #ffffff30;padding-top:1rem}.sim-graph{border-top:1px solid #ffffff30;margin-top:1rem}.sim-graph summary{padding:1rem 0;cursor:pointer;font-size:.875rem;min-height:44px}.sim-warning{font-size:.82rem;margin-top:1rem}.sim-warning summary{min-height:44px;display:flex;align-items:center}.sim-comparison{border:1px solid var(--line);border-radius:1rem;padding:1.5rem;margin-top:1.8rem}.sim-next-step{display:flex;justify-content:space-between;gap:2rem;align-items:center;border-top:1px solid var(--line);padding-top:2rem;margin-top:2.5rem}.sim-next-step h2{font-size:1.3rem}.sim-next-step p{max-width:35rem;color:var(--muted);font-size:.85rem}.tools-privacy{margin-top:2.5rem;max-width:65rem}
.booking-success{border:1px solid var(--line);border-radius:1rem;padding:1.5rem;background:var(--cream)}.success-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--ink);color:var(--paper);font-size:1.2rem;margin-bottom:1rem}.quick-prep{padding-top:2rem;margin-top:2rem;border-top:1px solid var(--line)}.quick-prep h3{font-size:1.4rem}.quick-prep .form-grid{margin:1.2rem 0}.quick-prep input,.quick-prep textarea{font-size:16px}.quick-prep .button-row{margin-top:1.2rem}.prep-section{padding:1.3rem;border:1px solid var(--line);border-radius:.9rem;background:var(--paper)}.prep-section h3{font-size:1.1rem}.prep-section summary{cursor:pointer;min-height:44px;padding:.5rem 0;font-weight:650}.prep-section .form-grid{margin-top:1rem}.form-hint{font-size:.85rem;color:var(--muted);margin:.5rem 0 1.3rem}.client-mail-status{font-size:.875rem}.booking-summary-mini{padding:.8rem 1rem;border:1px solid var(--line);border-radius:.7rem;font-size:.85rem;margin:1rem 0}
@media(min-width:1000px){.desktop-nav{gap:1rem}.tool-layout{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:2rem;align-items:start}}
@media(max-width:900px){.partner-heading{display:block}.partner-heading p{margin-top:.8rem}.client-space .portal-hero{grid-template-columns:1fr;gap:1.5rem;padding:2rem}.portal-illustration{max-width:270px}.partner-brands{grid-template-columns:repeat(2,minmax(0,1fr))}.client-person{flex-wrap:wrap}.client-person .button{margin-left:0}.tool-directory-card{padding:1.3rem}.sim-next-step{align-items:flex-start;flex-direction:column}}
@media(max-width:600px){.tool-layout{display:block}.tool-output{margin-top:1rem}.tool-inputs,.tool-output{padding:1.2rem}.workbench-toolbar{display:block}.workbench-chooser{display:block;max-width:none;margin-top:1rem}.workbench-toolbar select{width:100%}.tool-directory-card{min-height:0}.tool-directory-card p{font-size:.875rem}.portal-illustration{display:none}.client-space .portal-hero{padding:1.3rem}.brand-wordmark{font-size:1.15rem}.partner-brand{padding:1rem .5rem}.partner-brand span{font-size:.72rem}.tool-filters{gap:.4rem}.tool-filter{font-size:.8rem;padding:.6rem .8rem}.sim-heading{align-items:flex-start}.sim-heading h2{font-size:1.25rem}.sim-comparison{padding:1rem}.sim-comparison .table-wrap{font-size:.8rem}.steps{gap:.4rem;font-size:.76rem}body[data-page=book] .mobile-dock,body[data-page=clients] .mobile-dock{display:none}.quick-prep{padding-top:1.5rem}.client-person{padding:1rem}.sim-number input{font-size:1.1rem}}
@media(prefers-reduced-motion:reduce){.tool-directory-card{transition:none}.tool-directory-card:hover{transform:none}}
/* The directory is a working screen, not a second oversized landing hero. */
body[data-page=tools] .page-intro h1{font-size:clamp(1.85rem,3.6vw,2.7rem);max-width:none}
.tool-hub-intro .lead{font-size:1.05rem;line-height:1.65}.tool-hub-intro{margin-bottom:1.25rem}
@media(max-width:600px){body[data-page=tools] .page-intro{padding-bottom:.5rem}.tool-hub-intro .lead{font-size:.95rem}.tool-hub-intro{margin-bottom:1rem}.trust-chips{gap:.35rem;margin-top:.6rem}.trust-chips span{font-size:.7rem;padding:.4rem .55rem}.tool-filters{margin:1rem 0}.tools-experience{padding-top:.4rem}}
#tool-workbench,#tool-hub,#booking-app{scroll-margin-top:100px}
@media(max-width:600px){#tool-workbench,#tool-hub,#booking-app{scroll-margin-top:85px}}
/* 4.3.1 review: flags in the language switch (FR = France, DE = Germany) */
/* Language: one switch (4.6). The dark side is the language of the page; the whole control is a link to the other one. */
.languages{display:flex;align-items:center}
.languages .lang-switch{display:inline-flex;align-items:center;gap:0;min-width:0;height:auto;min-height:44px;padding:0;font-size:inherit;text-decoration:none;color:var(--muted);border-radius:999px}
.lang-switch .lang-opt{display:inline-flex;align-items:center;gap:.4rem;min-height:34px;padding:0 .7rem;font-size:.82rem;font-weight:700;letter-spacing:.04em;border:1px solid var(--line);background:var(--surface);transition:background .18s ease,color .18s ease}
.lang-switch .lang-opt:first-of-type{border-radius:999px 0 0 999px;border-right:0;padding-left:.8rem}
.lang-switch .lang-opt:nth-of-type(2){border-radius:0 999px 999px 0;border-left:0;padding-right:.8rem}
.lang-switch .lang-opt.is-on{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.lang-switch:hover .lang-opt:not(.is-on),.lang-switch:focus-visible .lang-opt:not(.is-on){background:var(--surface-soft);color:var(--ink)}
.lang-switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.flag{display:block;width:20px;height:13px;flex:0 0 20px;border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.18)}
.lang-switch .lang-opt:not(.is-on) .flag{opacity:.75}
@media(max-width:480px){.lang-switch .flag{display:none}.lang-switch .lang-opt{padding:0 .6rem}.lang-switch .lang-opt:first-of-type{padding-left:.7rem}.lang-switch .lang-opt:nth-of-type(2){padding-right:.7rem}}
@media(prefers-reduced-motion:reduce){.lang-switch .lang-opt{transition:none}}
@media(forced-colors:active){.lang-switch .lang-opt.is-on{outline:2px solid Highlight;outline-offset:-2px}}
/* 4.3.1 review: partner logos, presentation only (no link, no hover affordance) */
.partner-brands{list-style:none;margin:0;padding:0}
.partner-brand{cursor:default;gap:.35rem;padding:.9rem .75rem 1.1rem}
.partner-brand:hover{border-color:var(--line)}
/* The official DVAG files are 300x200 tiles with wide margins (drawn area x57-243, y52-148 for all four).
   The margin is cropped by layout only: the SVG files themselves stay byte-identical. */
.partner-logo{display:block;width:100%;max-width:190px;aspect-ratio:186/96;overflow:hidden}
.partner-logo img{display:block;width:161.3%;max-width:none;height:auto;margin:-27.96% 0 0 -30.6%}
.partner-brand>span{font-size:.8rem;color:var(--muted);text-align:center}
.partner-brand-name{color:var(--ink);font-weight:600}
@media(max-width:900px){.partner-logo{max-width:150px}.partner-brand>span{font-size:.72rem}}
.nav-parent{font-weight:600}

/* 4.4 - Administration: grouped navigation, status overview, guided setup, appearance editor, rights. */
body[data-page=admin] .brand .monogram{border-radius:10px}body[data-page=admin] .brand .monogram .icon{width:22px;height:22px}
.admin-sidebar{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px}
.admin-sidebar nav{display:block}
.admin-nav-group+.admin-nav-group{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.admin-nav-label{font-size:.68rem;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:0 14px 6px}
.admin-sidebar nav a{gap:10px}.admin-sidebar nav a .icon{width:18px;height:18px;color:var(--accent)}.admin-sidebar nav a[aria-current=page] .icon{color:inherit}
.admin-sidebar nav a:not([aria-current=page]):hover{background:var(--surface-soft)}
#admin-logout{margin:14px 14px 4px}
.admin-card{box-shadow:0 1px 2px rgba(25,42,41,.04)}
.admin-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.admin-card-head h2{margin:0}
.admin-subtitle{font-family:var(--font-body);font-size:.74rem;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:22px 0 10px}
.admin-fieldset{border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-block:16px;display:grid;gap:10px}.admin-fieldset legend{font-size:.8rem;font-weight:650;padding-inline:6px}
.admin-save{border-radius:10px}
.calendar-steps,.setup-needs{padding-left:22px;display:grid;gap:8px;margin-block:14px;font-size:.92rem}
.home-hello{margin-bottom:20px}.home-hello h2{font-family:var(--font-display);font-weight:400;font-size:1.9rem;letter-spacing:-.03em;margin-bottom:6px}
.status-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px}
.status-tile{display:flex;flex-direction:column;gap:6px;min-width:0;padding:18px;background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:12px}
.status-tile.is-ok{border-top-color:var(--success)}
.status-tile-head{display:flex;align-items:center;gap:8px}.status-tile h3{font-size:.7rem;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.status-dot{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:var(--accent)}.is-ok .status-dot{background:var(--success)}
.status-tile strong{font-size:1.15rem;line-height:1.3}.status-tile p{overflow-wrap:anywhere}.status-tile .text-link{margin-top:auto;align-self:flex-start}
.progress{height:8px;border-radius:99px;background:var(--surface-soft);overflow:hidden;margin-bottom:8px}.progress span{display:block;height:100%;border-radius:inherit;background:var(--success)}
.todo-list{list-style:none;padding:0;margin:0}.todo-list li{display:flex;align-items:center;gap:12px;min-height:52px;padding-block:8px;border-bottom:1px solid var(--line)}.todo-list li:last-child{border-bottom:0}
.todo-list li>span:nth-child(2){flex:1;min-width:0}.todo-list li.is-done>span:nth-child(2){color:var(--muted)}.todo-list small{color:var(--muted);font-size:.75rem;text-align:right}
.todo-list .check-dot.complete,.setup-steps .is-done button span{background:var(--success);color:var(--surface)}
.upcoming-list{list-style:none;padding:0;margin:0}.upcoming-list li{display:grid;grid-template-columns:minmax(130px,190px) minmax(0,1fr);gap:14px;padding-block:11px;border-bottom:1px solid var(--line)}.upcoming-list li:last-child{border-bottom:0}.upcoming-list time{font-weight:600;font-size:.88rem}.upcoming-list small{display:block;color:var(--muted)}
.setup-banner{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;background:var(--dark);border-color:var(--dark);color:var(--dark-text)}.setup-banner h2{margin-bottom:6px}.setup-banner p{color:var(--dark-muted)}.setup-banner .button{background:var(--surface);color:var(--ink)}
.admin-technical>summary{cursor:pointer;font-weight:650;min-height:44px;display:flex;align-items:center}
.setup-head{margin-bottom:22px}.setup-head .eyebrow{margin-bottom:12px}
.setup-steps{list-style:none;display:flex;gap:6px;padding:0 0 6px;margin:0;overflow-x:auto;scrollbar-width:thin}
.setup-steps li{flex:0 0 auto}
.setup-steps button{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 14px 8px 8px;border:1px solid var(--line);border-radius:99px;background:var(--surface);font-size:.8rem;white-space:nowrap}
.setup-steps button span{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-soft);font-size:.72rem;font-weight:650}
.setup-steps .is-current button{background:var(--ink);border-color:var(--ink);color:var(--surface)}.setup-steps .is-current button span{background:var(--surface);color:var(--ink)}
.setup-welcome h2{font-family:var(--font-display);font-weight:400;font-size:1.9rem;letter-spacing:-.03em}.setup-welcome .lead{margin-bottom:6px}
.setup-actions{position:sticky;bottom:12px;z-index:2;display:flex;align-items:center;gap:12px 18px;flex-wrap:wrap;padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-small)}
.setup-actions #setup-later{margin-left:auto}
.theme-presets{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:10px}
.theme-preset{display:grid;gap:8px;min-height:44px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:.82rem;text-align:left}.theme-preset:hover:not(:disabled){border-color:var(--accent)}
.theme-swatches{display:flex;height:28px;border:1px solid var(--line);border-radius:6px;overflow:hidden}.theme-swatches i{flex:1}
.design-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;margin-top:8px}.design-layout>.stack>*+*{margin-top:0}
.theme-colours{display:grid;grid-template-columns:1fr 1fr;gap:14px}.theme-colour{font-size:.84rem}.theme-colour span{display:flex;align-items:center;gap:10px;margin-top:6px}.theme-colour input[type=color]{margin:0;width:56px;flex:0 0 56px}.theme-colour code{font-size:.78rem}
.theme-preview{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper);color:var(--ink);font-family:var(--font-body)}
.theme-preview-page{padding:24px}.theme-preview-title{font-family:var(--font-display);font-weight:400;font-size:1.8rem;line-height:1.1;letter-spacing:-.03em;margin-bottom:12px}.theme-preview-page p{color:var(--muted)}.theme-preview .button-row{margin-top:18px;justify-content:flex-start}.theme-preview .text-link{color:var(--accent);display:inline-flex}
.theme-preview-dark{padding:20px 24px;background:var(--dark);color:#FCFAF5}.theme-preview-dark .eyebrow{color:var(--accent-bright);margin-bottom:8px}.theme-preview-dark p{color:var(--dark-muted)}
.theme-problems{margin:16px 0;padding:12px 14px 12px 32px;border-left:4px solid var(--error);background:var(--surface-soft);font-size:.86rem}.theme-ok{margin-block:16px;font-size:.86rem;font-weight:600;color:var(--success)}
.rights-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-block:16px}
.right-switch{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-weight:400;cursor:pointer}
.right-switch strong{display:block;font-size:.92rem}.right-switch small{display:block;margin-top:2px;color:var(--muted);font-size:.78rem}
.right-switch input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;width:42px;height:24px;flex:0 0 42px;margin:2px 0 0;padding:0;border:0;border-radius:99px;background:var(--line);transition:background var(--motion-fast) var(--ease)}
.right-switch input[type=checkbox]::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform var(--motion-fast) var(--ease)}
.right-switch input[type=checkbox]:checked{background:var(--success)}.right-switch input[type=checkbox]:checked::after{transform:translateX(18px)}
.danger-zone{border-color:var(--error)}.danger-zone h2{color:var(--error)}.button-danger{background:var(--error);color:var(--surface)}
.deletion-summary{border-left:4px solid var(--success)}.deletion-summary ul{margin-block:8px;padding-left:22px}
.review-link-card{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:24px;align-items:center}.review-link-card a{overflow-wrap:anywhere}
.review-qr svg{display:block;width:150px;height:150px;background:#fff;border:1px solid var(--line);border-radius:8px}
.rating-field{border:0;padding:0;margin:0}.rating-field legend{font-weight:var(--weight-medium);margin-bottom:8px;padding:0}
.rating-choices{display:grid;gap:8px}
.rating-choice{display:flex;align-items:center;gap:12px;min-height:48px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-weight:400;cursor:pointer}
.rating-choice span{color:var(--accent);letter-spacing:2px}.rating-choice small{margin-left:10px;color:var(--muted);letter-spacing:0}
.rating-choice:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.review-website{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
@media(max-width:1000px){.status-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.design-layout{grid-template-columns:1fr}}
@media(max-width:800px){.admin-sidebar{padding:12px}#admin-logout{margin:8px 0 0}}
@media(max-width:560px){.rights-grid{grid-template-columns:1fr}.review-link-card{grid-template-columns:1fr}.upcoming-list li{grid-template-columns:1fr;gap:2px}.status-tiles{gap:10px}.status-tile{padding:14px}.setup-actions{bottom:8px;padding:10px;gap:6px 10px}.setup-actions .button{flex:1 1 auto;padding-inline:14px}.setup-actions #setup-back{flex:0 0 auto}.setup-actions .text-link{font-size:.8rem;min-height:36px;padding-block:4px}.setup-actions #setup-later{margin-left:auto}.home-hello h2,.setup-welcome h2{font-size:1.6rem}.todo-list small{display:none}}
.admin-sidebar nav a{min-height:38px;padding-block:7px}.admin-nav-group+.admin-nav-group{margin-top:8px;padding-top:10px}.admin-nav-label{padding-bottom:4px}
#admin-partner-navigation{display:none}#admin-logout{margin-top:8px;border-top:1px solid var(--line);padding-top:10px;width:calc(100% - 28px)}
@media(min-width:801px){.setup-steps{flex-wrap:wrap;overflow:visible}}
#setup-form>.admin-card:last-of-type{margin-bottom:18px}
@media(max-width:800px){.admin-sidebar nav{display:none}#admin-logout{width:auto;border-top:0;padding-top:0}}
.review-form>*+*{margin-top:12px}.review-form h3{margin:0}.review-form .admin-badges{margin-top:8px}
#review-form>*+*{margin-top:20px}#review-form .rating-field legend{margin-bottom:10px}#private-app>.lead{margin-block:10px 22px}
/* 4.5 — partner's own address */
.host-input{display:flex;align-items:center;gap:8px;margin-top:6px}.host-input input{flex:1 1 auto;min-width:0;margin:0}.host-input select{flex:0 0 auto;width:auto;margin:0}.host-suffix{font-family:monospace;font-size:.9rem;color:var(--muted);white-space:nowrap}
.host-card>p:has(.pill){margin-block:10px 16px}.host-card .faq-item+.check{margin-top:16px}[data-robot-hint]{margin-top:8px;color:var(--ink)}#calendar-form+.mail-card{margin-top:24px}.host-card .partner-links{margin-block:18px 10px}.host-card .admin-actions{align-items:center;gap:10px 18px}.host-card #host-test-status{margin-block:14px 0}.host-card details{margin-top:14px}
.neutral-page{min-height:100dvh;display:grid;place-items:center;text-align:center;padding:var(--space-10) var(--gutter)}.neutral-page .monogram{margin-inline:auto}.neutral-page h1{font-size:var(--heading-size)}
@media(max-width:560px){.host-input{flex-wrap:wrap}.host-input input{flex-basis:100%}}
/* 4.5 — every setting one tap away */
.quick-settings{margin-bottom:24px}.quick-settings h2{font-family:var(--font-body);font-size:var(--text-lg);letter-spacing:normal;margin-bottom:14px}
.quick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.quick-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:inherit;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s}
.quick-card:hover,.quick-card:focus-visible{border-color:var(--accent);box-shadow:var(--shadow-small);transform:translateY(-1px)}
.quick-card .icon{width:24px;height:24px;color:var(--accent);margin-bottom:2px}.quick-card strong{font-size:.95rem;line-height:1.25}.quick-card small{color:var(--muted);font-size:.76rem;line-height:1.35}
.mail-card .admin-actions{align-items:center;gap:10px 18px}.mail-card #mail-test-status{margin-block:12px 0}
.admin-dock{display:none}.admin-dock[hidden]{display:none!important}
@media(max-width:800px){
 .admin-dock{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;inset:auto 0 0 0;z-index:var(--z-dock);background:var(--paper);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -6px 18px rgba(0,0,0,.06)}
 .admin-dock a{display:grid;justify-items:center;gap:3px;padding:6px 2px;min-height:52px;color:var(--muted);font-size:.68rem;text-decoration:none;border-radius:10px}.admin-dock a .icon{width:22px;height:22px}
 .admin-dock a[aria-current=page]{color:var(--ink);background:var(--surface-soft);font-weight:600}.admin-dock a[hidden]{display:none}
 body[data-page=admin] main{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
 body[data-page=admin] .admin-save{bottom:calc(74px + env(safe-area-inset-bottom))}
 .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.quick-card{padding:13px}
 /* Phone: the tab chooser and sign-out sit on one compact line; the shortcut bar and the home grid do the rest. */
 .admin-sidebar{display:flex;align-items:center;gap:12px;padding:10px 12px}.admin-tabs-mobile{flex:1 1 auto;font-size:0;margin:0}.admin-tabs-mobile select{font-size:1rem;margin:0;min-height:44px}.admin-sidebar #admin-logout{flex:0 0 auto;margin:0;font-size:.8rem;min-height:44px;display:inline-flex;align-items:center}
 .admin-main h1{font-size:1.7rem;margin-bottom:16px}
}
@media(max-width:340px){.quick-card small{display:none}}

/* 4.6 — booking in three steps: clearer choices, a fortnight of days, then the hours. */
.steps li.is-done{color:var(--ink);border-color:var(--ink)}
.choice span{display:grid;gap:.15rem}.choice strong{font-weight:var(--weight-bold)}.choice small{font-size:var(--text-sm)}
.choice:hover{border-color:var(--accent)}.choice:has(input:focus-visible){outline:var(--focus-width) solid var(--focus);outline-offset:2px}
.booking-who{border:0;padding:0;margin:var(--space-2) 0 0}.booking-who legend{font-weight:var(--weight-bold);margin-bottom:var(--space-3);padding:0}
.booking-reassure{list-style:none;padding:0;margin:var(--space-2) 0 0;display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;font-size:var(--text-sm);color:var(--muted)}
.booking-reassure li{display:flex;align-items:center;gap:.45rem}.booking-reassure li::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--success);flex:0 0 .5rem}
.booking-summary{display:grid;gap:0;margin:var(--space-5) 0 var(--space-6);border:var(--border) solid var(--line);border-radius:var(--radius-md);background:var(--paper)}
.booking-summary>div{display:grid;grid-template-columns:6.5rem 1fr auto;gap:var(--space-4);align-items:center;padding:.7rem 1rem}
.booking-summary>div+div{border-top:var(--border) solid var(--line)}
.booking-summary dt{font-size:var(--text-sm);color:var(--muted)}.booking-summary dd{margin:0;font-weight:var(--weight-medium);overflow-wrap:anywhere}
.booking-summary .text-link{min-height:var(--target);font-size:var(--text-sm)}
.picker{display:grid;gap:var(--space-4)}
.picker-head{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-3);text-align:center}
.picker-head .icon-button{font-size:1.5rem;line-height:1}.picker-head .icon-button:disabled{opacity:.35;cursor:default}
.picker-period{font-size:var(--text-md)}
.picker-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.4rem}
.picker-weekday{text-align:center;font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-bottom:.15rem}
.picker-day{position:relative;display:grid;justify-items:center;gap:0;padding:.5rem .2rem .6rem;min-height:4rem;border:var(--border) solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);cursor:pointer;font:inherit}
.picker-day-number{font-size:var(--text-lg);font-weight:var(--weight-bold);line-height:1.2;font-variant-numeric:tabular-nums}
.picker-day-month{font-size:var(--text-xs);color:var(--muted)}
.picker-day-count{width:.42rem;height:.42rem;border-radius:50%;background:var(--success);font-size:0;margin-top:.2rem}
.picker-day-count:empty{background:transparent}
.picker-day.is-free:hover{border-color:var(--accent);background:var(--accent-soft)}
.picker-day:disabled{background:transparent;border-style:dashed;color:var(--muted);cursor:default}.picker-day:disabled .picker-day-number{font-weight:var(--weight-normal);opacity:.6}.picker-day:disabled .picker-day-month{opacity:.6}
.picker-day.is-loading{border-style:solid;background:var(--surface-soft);animation:picker-wait 1.1s ease-in-out infinite alternate}
.picker-day[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.picker-day[aria-pressed=true] .picker-day-month{color:var(--dark-muted)}.picker-day[aria-pressed=true] .picker-day-count{background:var(--accent-bright)}
.picker-status{min-height:1.4rem;margin:0}.picker-status:empty{display:none}
.picker-date{font-family:var(--font-body);font-size:var(--text-md);font-weight:var(--weight-bold);margin:var(--space-2) 0 0}.picker-date::first-letter{text-transform:uppercase}
.picker-group{display:grid;grid-template-columns:6.5rem 1fr;gap:var(--space-4);align-items:start;padding-top:var(--space-3)}
.picker-group .slots{margin:0;grid-template-columns:repeat(auto-fill,minmax(5.2rem,1fr))}
.picker-group-label{font-size:var(--text-sm);color:var(--muted);padding-top:.7rem}
.picker .slot{cursor:pointer;font-weight:var(--weight-medium)}.picker .slot:hover{border-color:var(--accent);background:var(--accent-soft)}
.picker .slot[aria-pressed=true]:hover{background:var(--ink)}
.picker-zone{margin:0}
@keyframes picker-wait{from{opacity:.45}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.picker-day.is-loading{animation:none}}
@media(max-width:600px){.booking-summary>div{grid-template-columns:1fr auto;gap:.1rem var(--space-3)}.booking-summary dt{grid-column:1}.booking-summary dd{grid-column:1}.booking-summary .text-link{grid-column:2;grid-row:1 / span 2}
 .picker-days{gap:.25rem}.picker-day{min-height:3.6rem;padding:.45rem .1rem .5rem;border-radius:.6rem}.picker-day-number{font-size:var(--text-md)}.picker-day-month{font-size:.66rem}
 .picker-group{grid-template-columns:1fr;gap:.35rem}.picker-group-label{padding-top:0}.picker-group .slots{grid-template-columns:repeat(3,1fr)}}
@media(forced-colors:active){.picker-day[aria-pressed=true]{outline:3px solid Highlight}.picker-day-count{background:ButtonText}.picker-day-count:empty{background:transparent}}

/* 4.6 — tasks, follow-up of all partners, documentation and security inside the private space. */
.pill-danger{background:var(--error);color:var(--surface)}
.task-list{list-style:none;padding:0;margin:0 0 var(--space-4)}
.task{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}
.task:last-child{border-bottom:0}
.task-tick{width:28px;height:28px;margin-top:2px;border-radius:8px;border:2px solid var(--muted);background:var(--surface);color:var(--surface);display:grid;place-items:center;cursor:pointer;font-size:.95rem;line-height:1;padding:0}
.task-tick:hover{border-color:var(--success)}.task-tick[aria-pressed=true]{background:var(--success);border-color:var(--success)}.task-tick:disabled{cursor:default;opacity:.85}
.task-body{min-width:0}.task-body strong{font-weight:var(--weight-medium);overflow-wrap:anywhere}.task-body p{margin:.15rem 0 0}
.task.is-done .task-body strong{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--line)}
.task-meta{display:flex;flex-wrap:wrap;gap:.35rem .8rem;align-items:center}.task-meta:empty{display:none}
.task-late{color:var(--error);font-weight:var(--weight-bold)}
.task.is-late{background:linear-gradient(90deg,rgba(163,39,32,.07),transparent 60%);margin-inline:-10px;padding-inline:10px;border-radius:8px}
.task-actions{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.task-actions .text-link{font-size:var(--text-sm);min-height:36px;white-space:nowrap}
.tasks-summary.has-late{border-color:var(--error)}
.team-metrics{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}
.follow-filters{grid-template-columns:1fr 190px 230px}
.follow-list{display:grid;gap:10px}
.follow-row{border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.follow-row[open]{box-shadow:var(--shadow-small)}
.follow-row>summary{display:grid;grid-template-columns:minmax(200px,1.4fr) minmax(140px,1fr) minmax(150px,.9fr) minmax(130px,.7fr);gap:16px;align-items:center;padding:12px 44px 12px 16px;cursor:pointer;list-style:none;position:relative;min-height:64px}
.follow-row>summary::-webkit-details-marker{display:none}
.follow-row>summary::after{content:"";position:absolute;right:18px;top:50%;width:9px;height:9px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:translateY(-70%) rotate(45deg);transition:transform var(--motion-fast)}
.follow-row[open]>summary::after{transform:translateY(-30%) rotate(-135deg)}
.follow-row>summary:hover{background:var(--paper)}
.follow-person{display:flex;align-items:center;gap:12px;min-width:0}.follow-person .partner-avatar{width:40px;height:40px;flex-basis:40px;font-size:.8rem}
.follow-person>span{display:grid;min-width:0}.follow-person strong,.follow-person small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.follow-pills{display:flex;flex-wrap:wrap;gap:6px}
.follow-progress .progress,.follow-tasks .progress{margin:4px 0 0}
.follow-tasks{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.follow-detail{padding:4px 16px 16px;border-top:1px solid var(--line)}
.check-chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:14px 0}
.check-chips li{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border:1px solid var(--line);border-radius:999px;font-size:var(--text-sm);color:var(--muted)}
.check-chips li.is-done{color:var(--ink);border-color:var(--success)}
.check-chips .check-dot{width:20px;height:20px;flex-basis:20px;font-size:.7rem}.check-chips .check-dot.complete{background:var(--success);color:var(--surface)}
.follow-quick{display:grid;grid-template-columns:1fr 170px auto;gap:12px;align-items:end;margin:8px 0 12px;padding:12px;background:var(--paper);border-radius:8px}
.follow-quick label{font-size:var(--text-sm)}
.follow-panel{border-color:var(--accent)}
.assign-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:2px 16px;max-height:260px;overflow:auto;padding:8px;border:1px solid var(--line);border-radius:8px;margin-top:8px}
.assign-items{display:grid;gap:2px;margin-top:8px;padding:8px;border:1px solid var(--line);border-radius:8px;max-height:260px;overflow:auto}
.docs-search{display:block;max-width:34rem;margin-top:var(--space-4)}
.docs-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:24px;align-items:start}
.docs-toc{position:sticky;top:calc(var(--header-height) + 12px);max-height:calc(100vh - var(--header-height) - 32px);overflow:auto;padding:14px 4px 14px 0;font-size:var(--text-sm)}
.docs-toc ul{list-style:none;padding:0;margin:0 0 14px}.docs-toc a{display:block;padding:6px 14px;border-left:2px solid var(--line);text-decoration:none;color:var(--muted);line-height:1.35}
.docs-toc a:hover,.docs-toc a[aria-current]{color:var(--ink);border-left-color:var(--accent);background:var(--surface)}
.docs-group>h2{margin-bottom:var(--space-2)}
.doc-topic{border-top:1px solid var(--line);scroll-margin-top:calc(var(--header-height) + 16px)}.doc-topic:first-of-type{border-top:0}
.doc-topic>summary{display:grid;gap:4px;padding:16px 40px 16px 0;cursor:pointer;list-style:none;position:relative}
.doc-topic>summary::-webkit-details-marker{display:none}
.doc-topic>summary::after{content:"";position:absolute;right:12px;top:26px;width:9px;height:9px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform var(--motion-fast)}
.doc-topic[open]>summary::after{transform:rotate(-135deg)}
.doc-topic>summary:hover .doc-head strong{color:var(--accent)}
.doc-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.doc-head strong{font-size:var(--text-md);font-weight:var(--weight-bold)}
.doc-lead{color:var(--muted);font-size:var(--text-sm);line-height:1.5;max-width:var(--reading-max)}
.doc-body{padding:0 0 20px}
.doc-steps{counter-reset:doc;list-style:none;padding:0;margin:0 0 .9rem;max-width:var(--reading-max)}
.doc-steps li{counter-increment:doc;position:relative;padding:.4rem 0 .4rem 2.6rem;line-height:1.55;overflow-wrap:anywhere}
.doc-steps li::before{content:counter(doc);position:absolute;left:0;top:.35rem;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-size:.8rem;font-weight:700}
.doc-note{max-width:var(--reading-max);margin:.5rem 0;padding:.65rem .9rem;border-left:3px solid var(--accent);background:var(--paper);font-size:var(--text-sm);line-height:1.55;overflow-wrap:anywhere}
.security-card #mfa-enrol{margin-top:var(--space-5)}
#recovery-codes{padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:8px;font-size:.95rem;line-height:1.7;overflow:auto}
@media(max-width:960px){.follow-row>summary{grid-template-columns:1fr 1fr;gap:10px 16px}.docs-layout{grid-template-columns:1fr}.docs-toc{position:static;max-height:none;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.docs-toc .admin-nav-label{padding-top:12px}.follow-filters{grid-template-columns:1fr 1fr}.follow-filters label:first-child{grid-column:1 / -1}}
@media(max-width:600px){.follow-row>summary{grid-template-columns:1fr;padding-right:40px}.follow-quick{grid-template-columns:1fr}.task{grid-template-columns:auto 1fr}.task-actions{grid-column:2;flex-direction:row;align-items:center;gap:14px}.follow-filters{grid-template-columns:1fr}.docs-toc{max-height:260px;overflow:auto}}
@media print{body[data-page=admin] .site-header,body[data-page=admin] .admin-sidebar,body[data-page=admin] .admin-dock,body[data-page=admin] .admin-identity,body[data-page=admin] .docs-toc,body[data-page=admin] .docs-search,body[data-page=admin] #docs-print,body[data-page=admin] .admin-actions,body[data-page=admin] #admin-status{display:none!important}body[data-page=admin] .admin-shell,body[data-page=admin] .docs-layout{display:block}body[data-page=admin] .admin-card{border:0;box-shadow:none;padding:0}.doc-topic{break-inside:avoid}.doc-topic>summary::after{display:none}}
.team-search{display:block;max-width:30rem;margin-bottom:var(--space-6)}.team-more{display:block;padding:6px 10px}.team-card[hidden]{display:none}
/* 4.6 — a verifiable trust line under the hero and a privacy note in the footer. */
.hero-trust{display:inline-flex;align-items:center;gap:.5rem;margin-top:var(--space-4);padding:.4rem .8rem .4rem .6rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:var(--text-sm);color:var(--ink);text-decoration:none}
.hero-trust .icon{flex:none;width:1rem;height:1rem;color:var(--success)}@media(max-width:600px){.hero-trust{font-size:var(--text-xs);border-radius:var(--radius-md);line-height:1.35}}.hero-trust:hover{border-color:var(--accent)}
.footer-note{display:flex;align-items:center;gap:.5rem;margin:var(--space-5) 0 var(--space-6);font-size:var(--text-xs);color:var(--dark-muted)}.footer-note .icon{width:.9rem;height:.9rem}
/* 4.6 — the current page in the footer menu stays readable on the dark background. */
.footer-links .nav-current{min-height:var(--target);padding-block:0;font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--dark-text);border-bottom:0}
/* 4.6 — after the independent review: the chosen day stays readable under the pointer, a task waiting for a fact
   of the page looks different from a task to tick, and small forms sit inside their task. */
.picker-day[aria-pressed=true]:hover,.picker-day.is-free[aria-pressed=true]:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.picker-status a,.picker-status button{margin-left:.35rem}
.move-choice{margin:0;font-weight:var(--weight-bold)}.move-choice:empty{display:none}
.task-tick:disabled:not([aria-pressed=true]){border-style:dashed;opacity:.7}
.task-edit{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;align-items:end;margin-top:10px;padding:12px;background:var(--paper);border-radius:8px}
.task-edit label{font-size:var(--text-sm)}.task-edit .admin-actions{grid-column:1 / -1;margin:0}
.assign-filter{display:block;max-width:22rem;margin-top:8px;font-size:var(--text-sm)}
.assign-people [hidden]{display:none}
#assign-count{margin:8px 0 0}
@media(max-width:600px){.task-edit{grid-template-columns:1fr}}
/* 4.6 — the title of a booking step breathes above its choices. */
#booking-app>h2+form,#booking-app>h2+.form-hint{margin-top:var(--space-6)}
/* 4.6 — recovery codes: how many are left, and how to get new ones. */
.recovery-box{margin-top:var(--space-5);padding-top:var(--space-5);border-top:var(--border) solid var(--line);display:grid;gap:var(--space-3)}
.recovery-box p{margin:0}
/* 4.7 — appointments in the adviser's space: a date block, who, what, and the actions, readable on a phone. */
.appt-figures{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:var(--space-6)}
.appt-figures>div{padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--paper);min-width:0}
.appt-figures strong{display:block;font-family:var(--font-display);font-size:1.9rem;line-height:1.1;font-weight:400;letter-spacing:-.02em}
.appt-figures span{display:block;margin-top:4px;font-size:var(--text-xs);color:var(--muted);line-height:1.35}
.appt-figure-next strong{font-size:1.35rem;padding-top:6px}
.segmented{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--surface-soft);margin-bottom:var(--space-5);max-width:100%}
.segmented button{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:0;border-radius:999px;background:transparent;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--muted);transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}
.segmented button[aria-pressed=true]{background:var(--ink);color:var(--surface)}
.segmented-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--surface);color:var(--ink);font-size:.72rem;font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}
.segmented button[aria-pressed=true] .segmented-count{background:var(--accent-bright);color:var(--ink)}
.appt-list{display:grid;gap:12px}
.appt{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px 18px;align-items:center;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--surface);transition:border-color var(--motion-fast) var(--ease),box-shadow var(--motion-medium) var(--ease)}
.appt:hover,.appt.is-open{border-color:var(--accent)}.appt.is-open{box-shadow:var(--shadow-small)}
.appt.is-off .appt-date{background:var(--surface-soft);color:var(--muted);border-color:var(--line)}
.appt-date{display:grid;justify-items:center;align-content:center;width:68px;min-height:74px;padding:6px 4px;border:1px solid var(--accent);border-radius:12px;background:var(--accent-soft);line-height:1.1}
.appt-weekday{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.appt-day{font-family:var(--font-display);font-size:1.75rem}
.appt-month{font-size:.72rem;color:var(--muted)}
.appt-main{min-width:0}.appt-main h3{font-size:1.05rem;overflow-wrap:anywhere}
.appt-meta{margin-top:2px;font-size:var(--text-sm);color:var(--muted)}.appt-meta strong{color:var(--ink);font-variant-numeric:tabular-nums}
.appt-quick{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.appt-quick .icon-button{width:44px;height:44px;border-radius:999px}
.appt-toggle{min-height:44px}
.appt-detail{grid-column:1 / -1;padding-top:16px;border-top:1px solid var(--line)}
.appt-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.appt-columns h4,.appt-panel h4{margin:0 0 10px;font-size:.72rem;font-weight:var(--weight-bold);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.appt-columns h4:not(:first-child){margin-top:18px}
.appt-facts,.appt-prep{margin:0;display:grid;gap:8px}
.appt-facts>div,.appt-prep>div{display:grid;grid-template-columns:minmax(70px,30%) minmax(0,1fr);gap:10px;font-size:var(--text-sm)}
.appt-columns p{font-size:var(--text-sm)}.appt-panel .button-row{margin-top:14px}.appt-panel p{margin:0 0 6px}
.appt-facts dt,.appt-prep dt{color:var(--muted)}.appt-facts dd,.appt-prep dd{margin:0;overflow-wrap:anywhere;white-space:pre-line}
.appt-docs,.appt-mails{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:var(--text-sm)}
.appt-docs li,.appt-mails li{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.appt-mails small,.appt-docs small{color:var(--muted)}
.appt-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.appt-actions .button{display:inline-flex;align-items:center;gap:8px}
.appt-why{margin-top:10px}
.appt-panel{margin-top:16px;padding:18px;border:1px solid var(--accent);border-radius:12px;background:var(--paper)}
.appt-panel-warn{border-color:var(--error)}
.appt-empty{display:grid;justify-items:center;gap:10px;padding:36px 16px;text-align:center;border:1px dashed var(--line);border-radius:14px}
.appt-empty .icon{width:34px;height:34px;color:var(--accent)}
.pill-info{background:var(--accent-soft);color:var(--ink)}.pill-joint{background:var(--dark);color:var(--dark-text)}.pill-warn{background:var(--error);color:var(--surface)}
.review-state{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;margin:10px 0 14px;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:var(--paper)}
.review-state p{margin:0}.review-state .status-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;background:var(--error)}
.review-state.is-open .status-dot{background:var(--success)}.review-state.is-closed{display:grid;gap:10px;border-color:var(--error)}
.review-share{margin-top:12px}.review-share .button{min-height:44px}
.review-form-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.review-form-head h3{margin:0}
.review-form blockquote{margin:12px 0;padding:12px 16px;border-left:3px solid var(--accent);background:var(--paper);border-radius:0 8px 8px 0;overflow-wrap:anywhere}
.stars-off{opacity:.25}
/* 4.7 — the client's own page for one appointment. */
.manage-card{padding:22px;border:1px solid var(--accent);border-radius:16px;background:var(--paper)}
.manage-card.is-off{border-color:var(--line)}
.manage-card h2{margin-top:12px;font-size:clamp(1.5rem,3vw,2.1rem)}
.manage-time{margin-top:6px;font-variant-numeric:tabular-nums;color:var(--ink)}
.manage-facts{display:grid;gap:8px;margin:18px 0 0}.manage-facts>div{display:grid;grid-template-columns:minmax(80px,28%) minmax(0,1fr);gap:10px;font-size:var(--text-sm)}
.manage-facts dt{color:var(--muted)}.manage-facts dd{margin:0;overflow-wrap:anywhere}
.manage-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:18px}
.manage-tile{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;padding:16px;min-height:88px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:inherit;text-decoration:none;transition:border-color var(--motion-fast) var(--ease),transform var(--motion-fast) var(--ease),box-shadow var(--motion-medium) var(--ease)}
.manage-tile:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-small)}
.manage-tile small{color:var(--muted);font-size:var(--text-xs);line-height:1.4}
.manage-cancel{margin-top:16px}
@media(max-width:900px){.appt-columns{grid-template-columns:1fr}}
@media(max-width:600px){.appt{grid-template-columns:auto minmax(0,1fr);padding:14px}.appt-quick{grid-column:1 / -1;justify-content:flex-start}.appt-toggle{flex:1}.appt-figures{grid-template-columns:1fr 1fr}.appt-figure-next{grid-column:1 / -1}.appt-figures strong{font-size:1.6rem}.segmented{display:flex;border-radius:16px}.segmented button{flex:1;justify-content:center;padding:0 10px}.appt-actions .button{flex:1 1 100%;justify-content:center}}
/* 4.7 — tasks sorted into categories: a coloured dot, filter chips, finished tasks folded away. */
.cat-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px 2px 8px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.6;white-space:nowrap}
.cat-pill i,.cat-chip i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--cat,var(--muted));flex:0 0 9px}
.cat-0{--cat:#806226}.cat-1{--cat:#176E8E}.cat-2{--cat:#A32720}.cat-3{--cat:#296448}.cat-4{--cat:#6B4E9B}.cat-5{--cat:#52605C}.cat-6{--cat:#B5651D}.cat-7{--cat:#2F5D8A}.cat-none{--cat:var(--line)}
.cat-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 var(--space-5)}
.cat-chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:var(--text-sm);transition:border-color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}
.cat-chip:hover{border-color:var(--accent)}.cat-chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.cat-chip .segmented-count{background:var(--surface-soft)}.cat-chip[aria-pressed=true] .segmented-count{background:var(--accent-bright);color:var(--ink)}
.cat-heading{display:flex;align-items:center;gap:10px;margin:18px 0 4px;font-size:var(--text-sm);text-transform:none;letter-spacing:0}.cat-heading .muted{font-weight:400}
.task-done{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}.task-done>summary{cursor:pointer;min-height:40px;display:flex;align-items:center;font-size:var(--text-sm);color:var(--muted)}
.cat-row{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,1fr) auto;gap:10px;align-items:center;margin-top:8px}.cat-row .cat-pill{padding:6px;border:0;background:transparent}.cat-row .cat-pill i{width:14px;height:14px;flex-basis:14px}
.cat-row label{margin:0}.cat-row .check{white-space:nowrap}
.follow-quick{grid-template-columns:1fr 190px 170px auto}
@media(max-width:700px){.cat-row{grid-template-columns:auto 1fr}.cat-row label:nth-of-type(2){grid-column:2}.cat-row .check{grid-column:2}.follow-quick{grid-template-columns:1fr}}
/* 4.7 — reviews put forward: the average in large figures, cards that slide sideways on a phone. */
.hero-rating{display:inline-flex;align-items:center;min-height:44px;gap:.6rem;margin-top:var(--space-4);margin-right:.5rem;padding:.4rem .9rem;border:1px solid var(--accent);border-radius:999px;background:var(--surface);font-size:var(--text-sm);text-decoration:none;color:var(--ink)}
.hero-rating .stars{letter-spacing:1px}.hero-rating span:last-child{color:var(--muted)}
.reviews-showcase{background:linear-gradient(180deg,var(--surface-soft),var(--paper))}
.reviews-head{display:grid;grid-template-columns:minmax(200px,280px) 1fr;gap:var(--hero-gap);align-items:center;margin-bottom:var(--space-10)}
.reviews-score{padding:var(--space-6);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-small);text-align:center}
.reviews-score .eyebrow{margin-bottom:var(--space-3)}
.reviews-average{display:flex;align-items:baseline;justify-content:center;gap:.4rem;font-family:var(--font-display);line-height:1}
.reviews-average strong{font-size:clamp(3.4rem,7vw,5rem);font-weight:400;letter-spacing:-.04em}.reviews-average span{font-size:var(--text-lg);color:var(--muted)}
.stars-large{display:block;font-size:1.5rem;margin-block:.4rem .2rem}
.reviews-intro .button-row{margin-top:var(--space-6)}
.reviews-track{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-6)}
.review-card{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);min-width:0}
.review-card blockquote{margin:0;flex:1;position:relative}
.review-card blockquote p{font-size:var(--text-md);line-height:1.55;display:-webkit-box;-webkit-line-clamp:9;-webkit-box-orient:vertical;overflow:hidden}
.review-card footer{display:flex;align-items:center;gap:.75rem;padding-top:var(--space-4);border-top:1px solid var(--line)}
.review-card .avatar{width:44px;height:44px;border-radius:50%;object-fit:cover}
.review-initial{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-family:var(--font-display);font-size:1.2rem}
.review-invite{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-6);align-items:center;padding:var(--space-8);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}
.review-invite>.icon{width:2.4rem;height:2.4rem;color:var(--accent)}.review-invite h2{font-size:var(--text-xl);letter-spacing:-.01em}.review-invite p{margin-top:.3rem;color:var(--muted)}
.review-invite-section{padding-block:var(--space-10)}
@media(max-width:900px){.reviews-head{grid-template-columns:1fr;gap:var(--space-6)}.reviews-track{grid-auto-flow:column;grid-auto-columns:min(84%,22rem);grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:var(--space-3);margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter);scrollbar-width:thin}.review-card{scroll-snap-align:center}.review-invite{grid-template-columns:1fr;text-align:left;padding:var(--space-6)}}
/* 4.7 — announcements and actions on the owner's pages. */
.promo-bar{border-bottom:1px solid var(--line);font-size:var(--text-sm)}
.promo-bar-link{display:flex;align-items:center;gap:.8rem;min-height:var(--target);padding-block:.45rem;text-decoration:none;flex-wrap:wrap}
.promo-bar-link strong{font-weight:var(--weight-medium)}.promo-bar-more{display:inline-flex;align-items:center;gap:.35rem;margin-left:auto;font-weight:var(--weight-bold);white-space:nowrap}.promo-bar-more .icon{width:1rem;height:1rem}
.promo-tone-gold.promo-bar{background:var(--accent-soft);color:var(--ink)}.promo-tone-dark.promo-bar{background:var(--dark);color:var(--dark-text);border-color:var(--dark)}.promo-tone-light.promo-bar{background:var(--surface)}
.promo-badge{display:inline-flex;align-items:center;min-height:1.75rem;padding:.1rem .7rem;border-radius:999px;background:var(--ink);color:var(--surface);font-weight:var(--weight-bold);font-size:var(--text-sm);font-variant-numeric:tabular-nums;white-space:nowrap}
.promo-tone-dark .promo-badge{background:var(--accent-bright);color:var(--ink)}
.promo-grid{display:grid;gap:var(--space-6)}.promo-count-2{grid-template-columns:repeat(2,minmax(0,1fr))}.promo-count-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.promo-list{display:grid;gap:var(--space-8);margin-top:var(--space-8)}
.promo{display:grid;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface);min-width:0;transition:transform var(--motion-medium) var(--ease),box-shadow var(--motion-medium) var(--ease)}
.promo-count-1 .promo,.promo-list .promo{grid-template-columns:minmax(0,1fr)}
.promo-count-1 .promo:has(.promo-image),.promo-list .promo:has(.promo-image){grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
.promo-image{width:100%;height:100%;min-height:200px;object-fit:cover;aspect-ratio:16/9}
.promo-body{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-8);min-width:0}
.promo-top{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.promo-kind{font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent)}
.promo-brand{margin-left:auto;width:118px;max-width:118px;flex:0 0 118px}
.promo h2,.promo h3{font-family:var(--font-display);font-weight:400;font-size:clamp(1.45rem,2.4vw,2.1rem);line-height:1.15;letter-spacing:-.02em}
.promo-text{color:var(--muted);white-space:pre-line}
.promo-conditions{font-size:var(--text-sm)}.promo-conditions summary{cursor:pointer;min-height:var(--target);display:flex;align-items:center;font-weight:var(--weight-bold)}
.promo-conditions p{white-space:pre-line;color:var(--muted)}.promo-conditions h3,.promo-conditions h4{font-size:var(--text-sm);margin-bottom:.3rem}
div.promo-conditions{padding:var(--space-5);border-radius:var(--radius-md);background:var(--surface-soft)}
.promo-foot{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap;margin-top:auto}.promo-until{color:var(--muted)}
.promo-tone-gold.promo{border-color:var(--accent);background:linear-gradient(135deg,var(--accent-soft),var(--surface) 62%)}
.promo-tone-dark.promo{background:var(--dark);border-color:var(--dark);color:var(--dark-text)}
.promo-tone-dark .promo-text,.promo-tone-dark .promo-conditions p,.promo-tone-dark .promo-until{color:var(--dark-muted)}.promo-tone-dark .promo-kind{color:var(--accent-bright)}
.promo-tone-dark .button{background:var(--paper);color:var(--ink)}.promo-tone-dark div.promo-conditions{background:rgba(255,255,255,.08)}
.promo-legal{margin-top:var(--space-10)}.promo-empty{padding:var(--space-10);border:1px dashed var(--line);border-radius:var(--radius-lg)}
@media(max-width:900px){.promo-count-2,.promo-count-3{grid-template-columns:1fr}.promo-count-1 .promo:has(.promo-image),.promo-list .promo:has(.promo-image){grid-template-columns:1fr}.promo-body{padding:var(--space-6)}.promo-bar-more{margin-left:0}}
/* 4.7 — SOS page and step-by-step guides. */
.guide-links{display:grid;gap:var(--space-3);margin-block:var(--space-4) var(--space-6)}
.guide-link{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-4);align-items:center;padding:var(--space-4) var(--space-5);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent-soft);color:var(--ink);text-decoration:none;transition:transform var(--motion-fast) var(--ease),box-shadow var(--motion-medium) var(--ease)}
.guide-link>.icon:first-child{width:1.75rem;height:1.75rem;color:var(--accent)}.guide-link strong{display:block;line-height:1.3}.guide-link small{display:block;margin-top:.2rem;color:var(--muted);line-height:1.4}
.guide-link:hover{transform:translateY(-2px);box-shadow:var(--shadow-small)}
.sos-page>h2{font-size:var(--text-2xl);margin-block:var(--space-10) var(--space-4)}.sos-page>h2:first-of-type{margin-top:var(--space-8)}
.sos-grid .sos-card{padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);display:grid;gap:.3rem;align-content:start}
.sos-grid .sos-card a{font-size:var(--text-lg);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums;min-height:var(--target);display:flex;align-items:center}
.guide-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--hero-gap);align-items:start}
.guide-kicker{display:inline-flex;align-items:center;gap:.6rem;font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-4)}
.guide-emergency{margin-top:var(--space-8);border-left:var(--space-1) solid var(--error);border-radius:0 var(--radius-md) var(--radius-md) 0}
.guide-overview ol{list-style:none;padding:0;margin:var(--space-6) 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3)}
.guide-overview a{display:flex;align-items:center;gap:.7rem;height:100%;min-height:var(--button-height);padding:.6rem .9rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);text-decoration:none;font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1.3;transition:border-color var(--motion-fast) var(--ease)}
.guide-overview a:hover{border-color:var(--accent)}
.guide-overview a span,.guide-step-number{display:grid;place-items:center;border-radius:50%;background:var(--ink);color:var(--surface);font-family:var(--font-display);flex:none}
.guide-overview a span{width:1.9rem;height:1.9rem;font-size:1rem}
.guide-steps{list-style:none;padding:0;margin:var(--space-10) 0 0;display:grid;gap:var(--space-10);position:relative}
.guide-steps::before{content:"";position:absolute;left:1.5rem;top:1.5rem;bottom:1.5rem;width:2px;background:var(--line)}
.guide-step{display:grid;grid-template-columns:3rem minmax(0,1fr);gap:var(--space-5);position:relative;scroll-margin-top:calc(var(--header-height) + var(--space-6))}
.guide-step-number{width:3rem;height:3rem;font-size:1.5rem;position:relative;z-index:1;box-shadow:0 0 0 6px var(--paper)}
.guide-step-body{display:grid;gap:var(--space-4);min-width:0}.guide-step-body h2{font-family:var(--font-display);font-weight:400;font-size:clamp(1.4rem,2.4vw,1.9rem);letter-spacing:-.02em;line-height:1.2;padding-top:.35rem}
.guide-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}
.guide-option{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);min-width:0}
.guide-option h3{display:flex;align-items:center;gap:.6rem;margin:0;font-size:var(--text-base)}.guide-option p{font-size:var(--text-sm);color:var(--muted)}
.guide-option-mark{display:grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:.4rem;background:var(--accent-soft);color:var(--accent);font-size:.8rem;font-weight:var(--weight-bold)}
.guide-online{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;margin-top:auto;text-decoration:none}
.guide-calls{display:grid;gap:var(--space-2)}
.guide-call{display:flex;align-items:center;gap:.8rem;min-height:3.5rem;padding:.5rem .9rem;border:1px solid var(--ink);border-radius:var(--radius-md);background:var(--surface);text-decoration:none;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}
.guide-call:hover{background:var(--ink);color:var(--surface)}.guide-call:hover small{color:var(--dark-muted)}
.guide-call .icon{color:var(--accent)}.guide-call:hover .icon{color:var(--accent-bright)}
.guide-call small{display:block;font-size:var(--text-xs);color:var(--muted);line-height:1.3}.guide-call strong{display:block;font-size:var(--text-lg);font-variant-numeric:tabular-nums;line-height:1.25}
.guide-bullets{list-style:none;padding:0;margin:0;display:grid;gap:.6rem}.guide-bullets li{display:grid;grid-template-columns:auto 1fr;gap:.7rem;align-items:start}.guide-bullets .icon{color:var(--success);margin-top:.2rem}
.guide-box{padding:var(--space-4) var(--space-5);border-radius:0 var(--radius-md) var(--radius-md) 0;border-left:var(--space-1) solid var(--line);background:var(--surface-soft);font-size:var(--text-sm)}
.guide-box strong{display:block;font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;margin-bottom:.25rem}
.guide-box ul{margin:.2rem 0 0;padding-left:1.1rem}.guide-ready{border-left-color:var(--accent)}.guide-note{border-left-color:var(--focus)}.guide-note strong{color:var(--focus)}
.guide-important{border-left-color:var(--error);background:rgba(163,39,32,.07)}.guide-important strong{color:var(--error)}.guide-tip{border-left-color:var(--success);background:rgba(41,100,72,.08)}.guide-tip strong{color:var(--success)}
.guide-outro{margin-top:var(--space-12);padding:var(--space-8);border-radius:var(--radius-lg);background:var(--surface-soft)}.guide-outro .button-row{margin-top:var(--space-5)}
.guide-disclaimer{margin-top:var(--space-6)}
.guide-aside{position:sticky;top:calc(var(--header-height) + var(--space-6))}
.guide-card{display:grid;gap:var(--space-3);padding:var(--space-6);border:1px solid var(--accent);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-small)}
.guide-card h2{font-size:var(--text-xl);letter-spacing:-.01em}.guide-tools{display:grid;gap:var(--space-2);margin-top:var(--space-2)}
.guide-tools .button{display:inline-flex;align-items:center;justify-content:flex-start;gap:.6rem;min-height:var(--target);padding-inline:var(--space-4);font-size:var(--text-sm)}
.guide-dock{display:none}
@media(max-width:900px){.guide-layout{grid-template-columns:1fr}.guide-aside{position:static}.guide-options{grid-template-columns:1fr}}
@media(max-width:600px){.guide-steps::before{left:1.125rem}.guide-step{grid-template-columns:2.25rem minmax(0,1fr);gap:var(--space-3)}.guide-step-number{width:2.25rem;height:2.25rem;font-size:1.15rem;box-shadow:0 0 0 4px var(--paper)}.guide-step-body h2{padding-top:.1rem}
 .guide-dock{display:flex;align-items:center;justify-content:center;gap:.6rem;position:fixed;inset-inline:var(--space-3);bottom:calc(var(--dock-height) + var(--space-3) + env(safe-area-inset-bottom));z-index:var(--z-sos);min-height:3.25rem;padding:.6rem 1rem;border-radius:999px;background:var(--error);color:#fff;font-weight:var(--weight-bold);text-decoration:none;box-shadow:var(--shadow)}
 body[data-page=sos] .sos-button{display:none}body[data-page=sos] main{padding-bottom:5rem}}
@media print{.site-header,.site-footer,.mobile-dock,.sos-button,.guide-tools,.guide-dock,.promo-bar,.breadcrumb,.draft-bar,.guide-outro .button-row,.season-fx{display:none!important}.guide-layout{grid-template-columns:1fr}.guide-aside{position:static}.guide-step{break-inside:avoid}body{background:#fff}.guide a[href^="http"]::after{content:" (" attr(href) ")";font-size:.8em;word-break:break-all}[data-reveal],.reveal-pending{opacity:1!important;transform:none!important}}
/* 4.7 — seasonal look: a wash of colour behind the top of the page, a short message, a few motifs that drift down. */
body[data-season=christmas]{--season-wash:rgba(41,100,72,.13);--season-ink:#22573F;--season-fx:#fff}
body[data-season=newyear]{--season-wash:rgba(179,138,67,.20);--season-ink:#7A5C1E;--season-fx:#B38A43}
body[data-season=winter]{--season-wash:rgba(23,110,142,.11);--season-ink:#145E79;--season-fx:#fff}
body[data-season=spring]{--season-wash:rgba(196,96,128,.11);--season-ink:#8F3D5C;--season-fx:#E7A9BD}
body[data-season=summer]{--season-wash:rgba(226,160,40,.15);--season-ink:#8A5A0B;--season-fx:#F0C050}
body[data-season=autumn]{--season-wash:rgba(181,101,29,.14);--season-ink:#8A4A12;--season-fx:#C2792B}
body[data-season] .hero-season{position:relative;overflow:hidden;background-image:linear-gradient(180deg,var(--season-wash),rgba(255,255,255,0) 78%)}
body[data-season]:not([data-page=home]):not([data-page=admin]) main{background-image:linear-gradient(180deg,var(--season-wash),rgba(255,255,255,0) 20rem);background-repeat:no-repeat}
body[data-season] .site-footer{border-top:3px solid var(--season-ink)}
.hero-season>.container{position:relative;z-index:1}
.season-note{display:inline-flex;align-items:center;gap:.5rem;margin-bottom:var(--space-5);padding:.35rem .9rem .35rem .6rem;border:1px solid var(--season-ink);border-radius:999px;background:rgba(255,255,255,.72);color:var(--season-ink);font-size:var(--text-sm);font-weight:var(--weight-bold);line-height:1.35}
.season-note .icon{width:1.15rem;height:1.15rem}
.season-fx{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.season-fx i{position:absolute;top:-8%;left:calc(var(--x)*1%);width:var(--s);height:var(--s);background:var(--season-fx);border-radius:50%;opacity:0;animation:season-fall var(--d) linear var(--w) infinite;will-change:transform}
.season-fx i:nth-child(1){--x:4;--s:7px;--d:15s;--w:-2s}.season-fx i:nth-child(2){--x:13;--s:10px;--d:19s;--w:-11s}.season-fx i:nth-child(3){--x:22;--s:6px;--d:13s;--w:-6s}.season-fx i:nth-child(4){--x:31;--s:9px;--d:21s;--w:-15s}
.season-fx i:nth-child(5){--x:40;--s:5px;--d:12s;--w:-1s}.season-fx i:nth-child(6){--x:49;--s:8px;--d:17s;--w:-9s}.season-fx i:nth-child(7){--x:58;--s:11px;--d:23s;--w:-4s}.season-fx i:nth-child(8){--x:66;--s:6px;--d:14s;--w:-12s}
.season-fx i:nth-child(9){--x:74;--s:9px;--d:18s;--w:-7s}.season-fx i:nth-child(10){--x:82;--s:5px;--d:11s;--w:-3s}.season-fx i:nth-child(11){--x:90;--s:8px;--d:20s;--w:-14s}.season-fx i:nth-child(12){--x:97;--s:7px;--d:16s;--w:-8s}
@keyframes season-fall{0%{transform:translate3d(0,0,0) rotate(0);opacity:0}8%{opacity:.85}50%{transform:translate3d(26px,52vh,0) rotate(160deg)}92%{opacity:.7}100%{transform:translate3d(-14px,108vh,0) rotate(340deg);opacity:0}}
@keyframes season-rise{0%{transform:translate3d(0,0,0) scale(.6);opacity:0}15%{opacity:.55}60%{transform:translate3d(18px,-46vh,0) scale(1)}100%{transform:translate3d(-10px,-96vh,0) scale(1.25);opacity:0}}
body[data-season=christmas] .season-fx i,body[data-season=winter] .season-fx i{box-shadow:0 0 0 1px rgba(23,45,42,.10),0 1px 3px rgba(23,45,42,.10)}
body[data-season=newyear] .season-fx i{border-radius:1px;height:calc(var(--s)*.45)}
body[data-season=spring] .season-fx i{border-radius:85% 0 85% 0}
body[data-season=autumn] .season-fx i{border-radius:0 85% 0 85%;width:calc(var(--s)*1.5);height:calc(var(--s)*1.5)}
body[data-season=summer] .season-fx i{top:auto;bottom:-6%;width:calc(var(--s)*2.4);height:calc(var(--s)*2.4);background:radial-gradient(circle,var(--season-fx),rgba(240,192,80,0) 70%);animation-name:season-rise}
/* 4.7 — motion. Pages change with a short cross-fade (browsers that can), blocks arrive as they are reached, the
   header tightens once the page has moved. `data-motion` is the owner's setting; the visitor's "reduce motion"
   always wins (rule further up: every animation and transition is switched off). */
/* From one page to the next: the page that leaves steps back and blurs, the next one rises into place; going back
   in the history plays it the other way round. What both pages share (menu, portrait, the title of the card that
   was chosen) glides from its old place to its new one. */
:root{--ease-out:cubic-bezier(.16,1,.3,1);--ease-in-out:cubic-bezier(.65,0,.35,1)}
::view-transition-old(root){animation:vt-leave .3s var(--ease-in-out) both;transform-origin:50% 30vh}
::view-transition-new(root){animation:vt-arrive .66s var(--ease-out) both;transform-origin:50% 30vh}
@keyframes vt-leave{to{opacity:0;transform:scale(.972);filter:blur(7px)}}
@keyframes vt-arrive{from{opacity:0;transform:translate3d(0,38px,0) scale(.986)}}
html[data-nav=back]::view-transition-old(root){animation:vt-leave-back .3s var(--ease-in-out) both}
html[data-nav=back]::view-transition-new(root){animation:vt-arrive-back .6s var(--ease-out) both}
@keyframes vt-leave-back{to{opacity:0;transform:translate3d(0,30px,0) scale(.99)}}
@keyframes vt-arrive-back{from{opacity:0;transform:scale(.972);filter:blur(7px)}}
body:not([data-motion=off]) .site-header{view-transition-name:site-header}
body:not([data-motion=off]) .site-footer{view-transition-name:site-footer}
body:not([data-motion=off]) .mobile-dock{view-transition-name:mobile-dock}
body:not([data-motion=off]) .sos-button{view-transition-name:sos-button}
body:not([data-motion=off]) .promo-bar{view-transition-name:promo-bar}body:not([data-motion=off]) .season-note{view-transition-name:season-note}
body[data-motion=full][data-page=home] .hero .portrait,body[data-motion=full][data-page=about] .about-image,body[data-motion=full][data-page=book] .booking-aside .avatar,body[data-motion=full][data-page=card] .card-page>.avatar{view-transition-name:adviser-portrait}
body[data-motion=full] .page-intro h1{view-transition-name:page-title}
::view-transition-group(site-header),::view-transition-group(mobile-dock),::view-transition-group(sos-button){z-index:10;animation-duration:.3s}::view-transition-group(promo-bar),::view-transition-group(season-note){z-index:9;animation-duration:.3s}
::view-transition-group(adviser-portrait),::view-transition-group(page-title){animation-duration:.62s;animation-timing-function:var(--ease-out)}
/* A title that changes size keeps its proportions while it travels (no stretched letters). */
::view-transition-old(page-title),::view-transition-new(page-title){height:100%;width:auto;max-width:none}
::view-transition-old(page-title){animation-duration:.2s}::view-transition-new(page-title){animation-duration:.4s;animation-delay:.12s}
/* Browsers that cannot yet link two pages: the new page simply fades in, and the one that leaves dims at the click. */
@supports not (view-transition-name:none){body[data-motion=full] main{animation:fade .5s ease both}}
body[data-motion=full].is-leaving main{opacity:.35;transition:opacity .25s ease}
::view-transition-old(adviser-portrait),::view-transition-new(adviser-portrait){height:100%;width:100%;object-fit:cover;overflow:clip}
@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
.site-header{transition:background-color var(--motion-medium) var(--ease),box-shadow var(--motion-medium) var(--ease),border-color var(--motion-medium) var(--ease)}
.site-header.is-scrolled{background:rgba(248,246,241,.95);-webkit-backdrop-filter:saturate(1.5) blur(16px);backdrop-filter:saturate(1.5) blur(16px);box-shadow:0 6px 24px rgba(25,42,41,.07);border-bottom-color:transparent}
/* The header keeps its height when the page has moved: changing it would shift the page, and the shift would switch
   the header back (it flickered near the top of long pages). Only its look changes. */
.site-header .brand{transition:transform var(--motion-medium) var(--ease);transform-origin:0 50%}
@media(min-width:601px){body:not([data-motion=off]) .site-header.is-scrolled .brand{transform:scale(.94)}}
.scroll-progress{display:none}
@supports (animation-timeline:scroll()){body[data-motion=full] .scroll-progress{display:block;position:fixed;inset:0 0 auto 0;height:2px;z-index:calc(var(--z-header) + 1);background:var(--accent-bright);transform-origin:0 50%;transform:scaleX(0);animation:progress-grow linear both;animation-timeline:scroll(root)}}
@keyframes progress-grow{to{transform:scaleX(1)}}
body:not([data-motion=off]) [data-reveal],body:not([data-motion=off]) .reveal-auto{transition:opacity .7s var(--ease),transform .8s var(--ease);transition-delay:calc(var(--i,0)*70ms)}
body:not([data-motion=off]) .reveal-pending{opacity:0;transform:translate3d(0,28px,0)}
body[data-motion=soft] .reveal-pending{transform:none}
@keyframes rise{from{opacity:0;transform:translate3d(0,26px,0)}}@keyframes fade{from{opacity:0}}
@keyframes portrait-in{from{opacity:0;transform:scale(1.04);clip-path:inset(6% 6% 6% 6% round 12px)}to{clip-path:inset(0 0 0 0 round 0)}}
body[data-motion=full] .hero-copy>*{animation:rise .8s var(--ease) both}
body[data-motion=full] .hero-copy>*:nth-child(1){animation-delay:.02s}body[data-motion=full] .hero-copy>*:nth-child(2){animation-delay:.08s}body[data-motion=full] .hero-copy>*:nth-child(3){animation-delay:.14s}body[data-motion=full] .hero-copy>*:nth-child(4){animation-delay:.2s}body[data-motion=full] .hero-copy>*:nth-child(5){animation-delay:.26s}body[data-motion=full] .hero-copy>*:nth-child(6){animation-delay:.32s}body[data-motion=full] .hero-copy>*:nth-child(n+7){animation-delay:.38s}
body[data-motion=full] .hero h1 span{animation:rise .9s var(--ease) both}body[data-motion=full] .hero h1 span:nth-child(2){animation-delay:.1s}body[data-motion=full] .hero h1 span:nth-child(3){animation-delay:.2s}
body[data-motion=full] .hero .portrait{animation:portrait-in 1.1s var(--ease) both .1s}
body[data-motion=soft] .hero-copy>*,body[data-motion=soft] .hero .portrait{animation:fade .6s ease both}
body[data-motion=full] .page-intro>*{animation:rise .7s var(--ease) both}body[data-motion=full] .page-intro h1{animation-delay:.06s}
@supports (animation-timeline:view()){body[data-motion=full] .hero .portrait img{animation:portrait-drift linear both;animation-timeline:view();animation-range:exit 0% exit 100%}body[data-motion=full] .about-image{animation:image-settle linear both;animation-timeline:view();animation-range:entry 0% cover 40%}}
@keyframes portrait-drift{to{transform:translate3d(0,7%,0) scale(1.06)}}@keyframes image-settle{from{transform:scale(1.07);opacity:.6}}
body:not([data-motion=off]) :is(.service-card,.tool-card,.review-card,.promo,.sos-grid .sos-card,.team-card){transition:transform var(--motion-medium) var(--ease),box-shadow var(--motion-medium) var(--ease),border-color var(--motion-fast) var(--ease),opacity .7s var(--ease)}
@media(hover:hover){body[data-motion=full] :is(.service-card,.tool-card,.review-card,.promo,.sos-grid .sos-card,.team-card):hover{transform:translate3d(0,-5px,0);box-shadow:var(--shadow);border-color:var(--accent)}
 .button .icon,.text-link .icon{transition:transform var(--motion-fast) var(--ease)}.button:hover .icon,.text-link:hover .icon{transform:translateX(4px)}}
.button{transition:background var(--motion-fast) var(--ease),transform var(--motion-fast) var(--ease),box-shadow var(--motion-medium) var(--ease)}
body:not([data-motion=off]) .button:active{transform:scale(.975)}
.desktop-nav>a,.desktop-nav>.nav-current{position:relative}
body:not([data-motion=off]) .desktop-nav>a{border-bottom-color:transparent!important}
body:not([data-motion=off]) .desktop-nav>a::after{content:"";position:absolute;left:0;right:0;bottom:6px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:0 50%;transition:transform var(--motion-medium) var(--ease)}
body:not([data-motion=off]) .desktop-nav>a:hover::after,body:not([data-motion=off]) .desktop-nav>a[aria-current]::after{transform:scaleX(1)}
body:not([data-motion=off]) dialog[open]{animation:dialog-in .34s var(--ease) both}body:not([data-motion=off]) dialog[open]::backdrop{animation:fade .3s ease both}
@keyframes dialog-in{from{opacity:0;transform:translate3d(0,18px,0) scale(.98)}}
body:not([data-motion=off]) .mobile-menu[open] .mobile-panel{animation:menu-in .3s var(--ease) both}@keyframes menu-in{from{opacity:0;transform:translate3d(0,-10px,0)}}
body:not([data-motion=off]) .faq-item[open]>*:not(summary){animation:rise .35s var(--ease) both}
@media(prefers-reduced-motion:no-preference){html:has(body:not([data-motion=off])){scroll-behavior:smooth}}
/* 4.7 — premium motion, second layer (owner request 03/10/2026): the first screen recedes as the page is scrolled,
   pictures open as they arrive, titles are drawn in, buttons catch the light, figures count up. Everything here
   needs `data-motion=full`; "soft" keeps the calm fades only. */
@supports (animation-timeline:view()){
 body[data-motion=full] .hero-copy{animation:hero-away linear both;animation-timeline:view();animation-range:exit 5% exit 85%}
 body[data-motion=full] .page-intro .container{animation:hero-away linear both;animation-timeline:view();animation-range:exit 10% exit 95%}
 body[data-motion=full] :is(.promo-image,.article-card img,.article-cover,.guide-card){animation:image-open linear both;animation-timeline:view();animation-range:entry 0% cover 32%}
 body[data-motion=full] .cta-panel{animation:panel-open linear both;animation-timeline:view();animation-range:entry 0% cover 30%}
 body[data-motion=full] .reviews-average strong{animation:score-in linear both;animation-timeline:view();animation-range:entry 10% cover 30%}
}
@keyframes hero-away{to{opacity:0;transform:translate3d(0,-36px,0) scale(.965)}}
@keyframes image-open{from{clip-path:inset(9% 7% 9% 7% round 14px);transform:scale(1.06)}to{clip-path:inset(0 0 0 0 round 0)}}
@keyframes panel-open{from{transform:scale(.94);opacity:.4}}
@keyframes score-in{from{transform:scale(.7);opacity:0;letter-spacing:.08em}}
body[data-motion=full] .reveal-pending{transform:translate3d(0,44px,0) scale(.975);filter:blur(5px)}
body[data-motion=full] :is(.reveal-pending,.is-arriving){transition:opacity .8s var(--ease-out),transform 1s var(--ease-out),filter .7s var(--ease-out)!important;transition-delay:calc(var(--i,0)*85ms)!important}
/* Section titles: a fine gold line is drawn under the small label once the title is in view. */
body[data-motion=full] .section-heading .eyebrow{position:relative;display:inline-block}
body[data-motion=full] .section-heading .eyebrow::after{content:"";position:absolute;left:0;right:0;bottom:-5px;height:1px;background:var(--accent);transform:scaleX(1);transform-origin:0 50%;transition:transform 1.1s var(--ease-out) .25s}
body[data-motion=full] .section-heading.reveal-pending .eyebrow::after{transform:scaleX(0)}
/* Main buttons catch the light when the pointer arrives. */
@media(hover:hover){
 body[data-motion=full] .button:not(.button-light):not(:disabled){position:relative;overflow:hidden;isolation:isolate}
 body[data-motion=full] .button:not(.button-light):not(:disabled)::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.26) 48%,transparent 66%);transform:translateX(-120%);transition:transform .9s var(--ease-out)}
 body[data-motion=full] .button:not(.button-light):not(:disabled):hover::before{transform:translateX(120%)}
 body[data-motion=full] .button:hover{transform:translate3d(0,-2px,0);box-shadow:0 12px 28px rgba(25,42,41,.16)}
 body[data-motion=full] :is(.service-card,.tool-card,.review-card,.promo,.article-card,.team-card,.guide-link){will-change:transform}
 body[data-motion=full] :is(.service-card,.tool-card,.article-card,.guide-link):hover .icon{transform:translateX(5px)}
}
/* The portrait floats very slightly; the stars of the rating light up one after the other. */
body[data-motion=full] .hero-rating .stars{background:linear-gradient(90deg,currentColor 50%,rgba(179,138,67,.25) 50%);background-size:200% 100%;background-position:0 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:stars-fill 1.2s var(--ease-out) .5s backwards}
@keyframes stars-fill{from{background-position:100% 0}}
body[data-motion=full] .reviews-track .review-card{transition-delay:calc(var(--i,0)*110ms)}
/* Thin line at the very top while the next page is being fetched (slow connections). */
.nav-wait{display:none}
body[data-motion=full].is-leaving .nav-wait{display:block;position:fixed;inset:0 0 auto 0;height:2px;z-index:calc(var(--z-header) + 2);background:var(--accent-bright);transform-origin:0 50%;animation:nav-wait 2.4s var(--ease-out) both}
@keyframes nav-wait{from{transform:scaleX(0)}to{transform:scaleX(.9)}}
body[data-motion=off] *,body[data-motion=off] *::before,body[data-motion=off] *::after{animation:none!important;transition:none!important}
.to-top{position:fixed;left:var(--space-5);bottom:calc(var(--space-5) + env(safe-area-inset-bottom));z-index:var(--z-sos);width:var(--target);height:var(--target);display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--paper);box-shadow:var(--shadow-small);opacity:0;visibility:hidden;transform:translate3d(0,10px,0);pointer-events:none;transition:opacity var(--motion-medium) var(--ease),transform var(--motion-medium) var(--ease)}
.to-top.is-shown{opacity:1;visibility:visible;transform:none;pointer-events:auto}.to-top .icon{transform:rotate(-90deg)}
@media(max-width:600px){.to-top{display:none}}
body[data-page=sos] .sos-button{display:none}.guide-tools .button{text-align:left;line-height:1.3}
/* 4.7 — the two owner sections "seasons, animations, pages" and "announcements". */
.season-force{display:block;max-width:26rem;margin-top:var(--space-5)}
.season-list{display:grid;gap:12px;margin-block:var(--space-5)}
.season-row{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:0;display:grid;gap:10px}
.season-row legend{display:flex;align-items:center;gap:8px;padding:0 6px;font-weight:var(--weight-bold)}
.season-dot{width:12px;height:12px;border-radius:50%;background:var(--muted)}
.season-christmas .season-dot{background:#22573F}.season-newyear .season-dot{background:#B38A43}.season-winter .season-dot{background:#176E8E}.season-spring .season-dot{background:#C46080}.season-summer .season-dot{background:#E2A028}.season-autumn .season-dot{background:#B5651D}
.season-dates{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--text-sm)}
.season-day{display:inline-flex;gap:6px}.season-day select{width:auto;min-width:4.5rem}.season-day select:last-child{min-width:8.5rem}
.promo-item>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;cursor:pointer;list-style:none;min-height:var(--target)}
.promo-item>summary::-webkit-details-marker{display:none}.promo-item-title{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}.promo-item .admin-badges{margin-top:0}
.promo-item[open]{border-color:var(--accent)}.promo-item[open]>summary{margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}
.promo-edit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-8);align-items:start}
.promo-edit-fields{display:grid;gap:var(--space-4);min-width:0}.promo-edit-preview{position:sticky;top:calc(var(--header-height) + var(--space-5));min-width:0}
.promo-preview .promo{grid-template-columns:1fr!important}.promo-preview .promo-body{padding:var(--space-6)}
.promo-image-row{display:flex;align-items:center;gap:12px;margin-top:8px}.promo-image-row img{border-radius:8px;object-fit:cover}
.promo-remove{color:var(--error)}.promo-save{position:sticky;bottom:0;z-index:2;background:var(--paper);padding-block:12px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.rights-grid+.admin-actions{margin-top:var(--space-5)}
@media(max-width:1100px){.promo-edit{grid-template-columns:1fr}.promo-edit-preview{position:static}}
/* 4.7 — key figures on the home of the space. */
.figure-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.figure-tile{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--paper);text-decoration:none;color:inherit;min-width:0;transition:border-color var(--motion-fast) var(--ease),transform var(--motion-fast) var(--ease)}
.figure-tile:hover{border-color:var(--accent);transform:translateY(-2px)}
.figure-tile strong{font-family:var(--font-display);font-size:2rem;font-weight:400;line-height:1.1;letter-spacing:-.02em}
.figure-tile span{font-size:var(--text-sm)}.figure-tile small{color:var(--muted);font-size:var(--text-xs);line-height:1.35;margin-top:2px}
.visits{margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--line)}
.visits-head{display:flex;align-items:baseline;gap:10px}.visits-head strong{font-family:var(--font-display);font-size:2rem;font-weight:400}
.visits-bars{display:flex;align-items:flex-end;gap:3px;height:84px;margin-top:10px;padding:6px 0;border-bottom:1px solid var(--line)}
.visits-bars i{flex:1;min-width:2px;border-radius:3px 3px 0 0;background:var(--accent-bright);opacity:.85}.visits-bars i:last-child{background:var(--ink)}
.visits-foot{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--muted);margin-top:4px}
.visits-pages{list-style:none;padding:0;margin:12px 0 8px;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:6px 18px;font-size:var(--text-sm)}
.visits-pages li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dotted var(--line);padding-block:4px}
.visits-off{margin-top:var(--space-4)}
/* 4.7 — diary watch: what no longer matches the Google diary is said in red, with the decision next to it. */
.appt-alert{display:grid;gap:8px;margin-bottom:16px;padding:14px 16px;border:1px solid var(--error);border-left-width:4px;border-radius:10px;background:rgba(163,39,32,.06)}
.appt-alert p{margin:0;font-size:var(--text-sm)}.appt-alert .button{justify-self:start;min-height:40px}
.appt-alert-line{display:flex;align-items:center;gap:10px;margin:0 0 var(--space-4);font-size:var(--text-sm);font-weight:var(--weight-medium)}
.figure-alert{border-color:var(--error);background:rgba(163,39,32,.06)}.figure-alert strong{color:var(--error)}
/* 4.7 — advice articles: cards in lists, a calm column for reading. */
.article-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-6);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);text-decoration:none;color:inherit;min-width:0;transition:transform var(--motion-medium) var(--ease),box-shadow var(--motion-medium) var(--ease),border-color var(--motion-fast) var(--ease),opacity .7s var(--ease)}
.article-card h2,.article-card h3{font-family:var(--font-display);font-weight:400;font-size:var(--text-xl);line-height:1.2;letter-spacing:-.015em}
.article-card p{font-size:var(--text-sm);color:var(--muted);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
@media(hover:hover){body[data-motion=full] .article-card:hover{transform:translate3d(0,-5px,0);box-shadow:var(--shadow);border-color:var(--accent)}}
.article-topic{align-self:flex-start;font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent)}
.article-meta{margin-top:auto;font-size:var(--text-xs);color:var(--muted)}
p.article-meta{display:flex;flex-wrap:wrap;gap:.3rem .6rem;align-items:center;margin:0 0 var(--space-5)}
.article-grid{margin-top:var(--space-8)}
.article .lead{color:var(--ink);font-size:var(--text-lg);line-height:1.5}
.article-body{margin-top:var(--space-8);font-size:1.0625rem;line-height:1.75}
.article-body>*+*{margin-top:1.1em}.article-body h2,.article-body h3,.article-body h4{font-family:var(--font-display);font-weight:400;letter-spacing:-.015em;line-height:1.2;margin-top:1.8em}
.article-body h2{font-size:clamp(1.5rem,2.6vw,1.9rem)}.article-body h3{font-size:1.35rem}.article-body h4{font-size:1.15rem}
.article-body ul,.article-body ol{padding-left:1.3rem;display:grid;gap:.4em}.article-body a{color:var(--accent);text-decoration:underline;text-underline-offset:.2em}
.article-note{margin-inline:0;padding:var(--space-4) var(--space-5);border-left:var(--space-1) solid var(--accent);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--accent-soft)}
.article-disclaimer{margin-top:var(--space-10)}
.article-cta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);flex-wrap:wrap;margin-top:var(--space-8);padding:var(--space-8);border-radius:var(--radius-lg);background:var(--dark);color:var(--dark-text)}
.article-cta h2{font-size:var(--text-xl);letter-spacing:-.01em}.article-cta p{color:var(--dark-muted);margin-top:.3rem}.article-cta .button{background:var(--paper);color:var(--ink)}
.article-preview{padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);max-height:70vh;overflow:auto}
.article-preview-title{font-size:1.6rem;margin-bottom:var(--space-3)}.article-preview .article-body{margin-top:var(--space-4);font-size:1rem}
.article-help{white-space:pre-wrap;font-family:ui-monospace,Consolas,monospace;font-size:.8rem;line-height:1.7;margin:0;padding:10px 0;overflow:auto}
/* 4.7 — a simulation on paper or as a PDF, through the browser's own print window. */
.sim-print{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:var(--space-4)}
/* ───────────── 4.8 — Shape chosen per page (corners are plain variables; these three are attributes) ───────────── */
body[data-buttons=pill] :is(.button,.header-book){border-radius:var(--radius-pill)}
body[data-buttons=outline] .button:not(.button-light):not(:disabled){background:transparent;color:var(--ink);border:2px solid var(--ink)}
body[data-buttons=outline] .button:not(.button-light):not(:disabled):hover{background:var(--ink);color:var(--surface)}
body[data-buttons=outline] .section-dark .button:not(.button-light){color:var(--dark-text);border-color:var(--dark-text)}
body[data-hero=tinted] .hero{background:linear-gradient(180deg,var(--accent-soft),var(--paper))}
body[data-hero=dark] .hero{background:var(--dark);color:var(--dark-text)}
body[data-hero=dark] .hero :is(.hero-text,.hero-note,.credential,.hero-pillars,.mobile-introduction small){color:var(--dark-muted)}
body[data-hero=dark] .hero :is(.eyebrow,h1 em,.credential .icon){color:var(--accent-bright)}
body[data-hero=dark] .hero .text-link{color:var(--dark-text)}
body[data-hero=dark] .hero .button:not(.button-light){background:var(--paper);color:var(--ink);border-color:var(--paper)}
body[data-hero=dark] .hero .button:not(.button-light):hover{background:var(--accent-bright);color:var(--ink)}
body[data-hero=dark] .hero .hero-pillars{border-top-color:rgba(255,255,255,.2)}
body[data-hero=dark] .hero .season-note{color:var(--dark-text)}
body[data-portrait=arch] .hero .portrait{border-radius:999px 999px var(--radius-sm) var(--radius-sm)}
body[data-portrait=circle] .hero .portrait{border-radius:50%;aspect-ratio:1;max-width:min(100%,26rem);margin-inline:auto}
body[data-portrait=circle] .hero .portrait img{aspect-ratio:1;height:100%;max-height:none}
body[data-portrait=circle] .hero .portrait figcaption{display:none}
/* The same choices on the small preview of the space. */
.theme-preview[data-buttons=pill] .button{border-radius:var(--radius-pill)}
.theme-preview[data-buttons=outline] .button{background:transparent;color:var(--ink);border:2px solid var(--ink)}
.theme-preview[data-hero=tinted] .theme-preview-page{background:linear-gradient(180deg,var(--accent-soft),var(--paper))}
.theme-preview[data-hero=dark] .theme-preview-page{background:var(--dark);color:#FCFAF5}
.theme-preview[data-hero=dark] .theme-preview-page :is(p,.eyebrow){color:var(--dark-muted)}
.theme-preview[data-hero=dark] .theme-preview-page .button{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.theme-preview[data-hero=dark] .theme-preview-page .text-link{color:#FCFAF5}
.theme-preview .theme-preview-page,.theme-preview .button{border-radius:var(--radius-sm)}
.style-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px 18px;margin-bottom:var(--space-5)}
.style-choices label{font-size:var(--text-sm)}
.section-row{justify-content:flex-start;padding:6px 0;border-bottom:1px solid var(--line)}.section-row .check{flex:1 1 auto;margin:0}.section-row.is-off .check span{color:var(--muted)}
#page-texts textarea::placeholder{color:var(--muted);opacity:.75}
/* ───────────── 4.8 — Tasks on one board ───────────── */
.task-views{margin-top:var(--space-5)}
.metric-jump{display:block;text-align:left;padding:10px 12px;margin:-10px -12px;border:0;border-radius:10px;background:transparent;color:inherit;cursor:pointer;transition:background var(--motion-fast) var(--ease)}
.metric-jump:hover,.metric-jump:focus-visible{background:var(--surface-soft)}
.metric-jump strong{display:block;font-family:var(--font-display);font-size:2.1rem;line-height:1.2}.metric-jump span{font-size:.77rem;color:var(--muted);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.metric-jump.is-urgent strong{color:var(--error)}
.task-compose{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(0,1.2fr) 160px minmax(0,1fr) auto;gap:12px;align-items:end;padding:16px;margin:0 0 6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-soft,none)}
.task-compose label{font-size:var(--text-sm);min-width:0}.task-compose input,.task-compose select,.task-compose textarea{margin-top:4px}
.task-compose .button{min-height:48px;white-space:nowrap}
.task-compose-wide{grid-column:1 / -1}
#request-form.task-compose,#mine-note.task-compose{grid-template-columns:minmax(0,1fr) 180px auto;background:var(--paper);box-shadow:none;margin-bottom:var(--space-5)}
#request-form .button{grid-column:1 / -1;justify-self:start}
.task-compose-more{margin:0 0 var(--space-5)}
.board-filters{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,170px) minmax(0,210px);gap:12px 16px;align-items:end;margin-bottom:var(--space-4)}
.board-filters .segmented{margin-bottom:0}.board-filters label{font-size:var(--text-sm)}
.task-group{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:6px 18px 2px;margin-bottom:var(--space-4)}
.task-group-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding-top:10px}
.task-group-head h3{display:flex;align-items:center;gap:10px;margin:0}.task-group-head h3 .muted{font-family:var(--font-body);font-size:var(--text-sm);font-weight:400}
.task-group-late{border-color:var(--error)}.task-group-late .task-group-head h3{color:var(--error)}
.task-group .task-list{margin-bottom:0}.task-group .task:last-child{border-bottom:0}
.task-more{border-top:1px solid var(--line)}.task-more>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px;font-size:var(--text-sm);font-weight:600;color:var(--accent-strong,var(--accent))}.task-more[open]>summary{color:var(--muted);font-weight:400}.task-more>.task-list{border-top:1px solid var(--line)}
.stack>.admin-subtitle:not(:first-child){margin-top:30px}
.task-group-progress{display:flex;align-items:center;gap:10px;min-width:150px;margin-left:auto}.task-group-progress .progress{flex:1;min-width:90px;margin:0}
.task-group-head h3 .cat-pill,.task-group-head h3 .task-who{text-transform:none;letter-spacing:0;font-size:var(--text-sm)}
.task-bundle-item{list-style:none;border-bottom:1px solid var(--line)}.task-bundle-item:last-child{border-bottom:0}
.task-bundle>summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;min-height:56px;padding:10px 0;cursor:pointer;list-style:none}.task-bundle>summary::-webkit-details-marker{display:none}
.task-bundle>summary::before{content:"";flex:none;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .2s var(--ease);margin-inline:6px 4px}.task-bundle[open]>summary::before{transform:rotate(45deg)}
.task-bundle-title{display:grid;gap:4px;flex:1;min-width:200px}.task-bundle-title .task-meta{margin:0}
.task-bundle>.task-list{margin:0 0 10px 26px;padding-left:14px;border-left:2px solid var(--line)}.task-bundle>.task-list .task:last-child{border-bottom:0}
.avatar-stack{display:inline-flex;align-items:center}.avatar-stack>*{margin-left:-8px;box-shadow:0 0 0 2px var(--surface);border-radius:50%}.avatar-stack>:first-child{margin-left:0}
.avatar-more{display:inline-grid;place-items:center;min-width:28px;height:28px;padding:0 6px;border-radius:999px;background:var(--surface-soft);font-size:var(--text-xs);font-weight:600;color:var(--muted)}
.board-remind{grid-column:1 / -1;justify-self:end}
.avatar-stack .partner-avatar{flex:none;width:30px;height:30px;min-width:30px;padding:0;aspect-ratio:1;font-size:.62rem}
.task-group-head h3 .pill{text-transform:none;letter-spacing:0;font-weight:600}
@media(min-width:901px){.task-group .task-actions,#mine-card .task-actions{flex-direction:row;align-items:center;gap:16px}.task-group .task{align-items:center}}
.task-who{display:inline-flex;align-items:center;gap:6px;padding:2px 10px 2px 2px;border:1px solid var(--line);border-radius:999px;background:var(--surface-soft);font-size:.78rem;color:var(--ink);min-height:28px}
button.task-who{cursor:pointer}button.task-who:hover{border-color:var(--accent)}
.task-who .partner-avatar,.task-who img{width:22px;height:22px;font-size:.6rem;flex:0 0 22px}
.request-answer{margin:.5rem 0 0;padding:8px 12px;border-left:3px solid var(--accent);background:var(--paper);font-size:var(--text-sm);overflow-wrap:anywhere}
.task.request{grid-template-columns:auto 1fr auto}.task.request>.check-dot{margin-top:4px}
@media(max-width:900px){.task-compose{grid-template-columns:1fr 1fr}.task-compose-title{grid-column:1 / -1}.task-compose .button{grid-column:1 / -1}.board-filters{grid-template-columns:1fr}}
@media(max-width:600px){.task-compose,#request-form.task-compose,#mine-note.task-compose{grid-template-columns:1fr}.task-group{padding:4px 12px 0}.metric-jump{margin:0;padding:6px 0}}
/* ───────────── 4.8 — Motion on every page ─────────────
   Until 4.7 the large public pages moved; the space, the booking steps, the client's own pages, the legal texts, the
   pages that are not found and the neutral pages stood still. Three additions, all tied to the same `data-motion`
   level (the site's, or a partner's own on his pages) and all silenced by the visitor's "reduce motion":
   1. the first screen of pages without a large heading arrives;
   2. a screen drawn again by a script (a booking step, a tab of the space, a view of "my appointment") arrives block
      after block, from the side when it is a step forward or back;
   3. the space has its own entrance, and its lists and cards answer the pointer. */
body[data-motion=full] :is(.breadcrumb,.booking-layout>*,.card-page>*,.emergency,.portal-hero,.tool-hub-intro,.tool-search-label,.tool-filters,.guide-overview,.legal-copy,.neutral-page .stack>*,main>.section>.container>.lead,main>.section>.container.stack>h1,main>.section>.container.stack>.button,main>.section>.container.narrow.booking-panel,.guide-layout>*,.article-page>*){animation:rise .7s var(--ease) both}
body[data-motion=full] :is(.booking-layout>*,.card-page>*,.neutral-page .stack>*,.guide-layout>*,.article-page>*):nth-child(2){animation-delay:.07s}
body[data-motion=full] :is(.card-page>*,.neutral-page .stack>*,.guide-layout>*,.article-page>*):nth-child(3){animation-delay:.14s}
body[data-motion=full] :is(.card-page>*,.neutral-page .stack>*,.guide-layout>*,.article-page>*):nth-child(n+4){animation-delay:.2s}
body[data-motion=soft] :is(.breadcrumb,.booking-layout>*,.card-page>*,.emergency,.portal-hero,.tool-hub-intro,.guide-overview,.legal-copy,.neutral-page .stack>*,main>.section>.container.narrow.booking-panel,.guide-layout>*,.article-page>*){animation:fade .5s ease both}
/* Safety net: whatever stands on the first screen of a public page arrives, even a block no rule above names (the
   blocks further down are taken by the script when they come into view). `:where` keeps the weight of these rules
   below every named entrance, so a block that already has its own movement keeps it. The list of simulators is left
   out as a whole because its parts arrive one by one. */
body[data-motion=full]:where(:not([data-page=admin])) :where(main>:nth-child(-n+4)>.container>:not(#tool-hub),main>:first-child:not(.section,section)>*,main>.container>*,#tool-catalog>*){animation:rise .7s var(--ease) both}
body[data-motion=full]:where(:not([data-page=admin])) :where(main>:nth-child(-n+4)>.container>*,main>.container>*,#tool-catalog>*):where(:nth-child(2)){animation-delay:.06s}
body[data-motion=full]:where(:not([data-page=admin])) :where(main>:nth-child(-n+4)>.container>*,main>.container>*,#tool-catalog>*):where(:nth-child(n+3)){animation-delay:.12s}
body[data-motion=soft]:where(:not([data-page=admin])) :where(main>:nth-child(-n+4)>.container>:not(#tool-hub),main>:first-child:not(.section,section)>*,main>.container>*,#tool-catalog>*){animation:fade .5s ease both}
/* Screens drawn again by a script. `--n` is the place of the block; later blocks follow a little behind. */
.is-entering>*{--n:0}.is-entering>*:nth-child(2){--n:1}.is-entering>*:nth-child(3){--n:2}.is-entering>*:nth-child(4){--n:3}.is-entering>*:nth-child(5){--n:4}.is-entering>*:nth-child(6){--n:5}.is-entering>*:nth-child(7){--n:6}.is-entering>*:nth-child(n+8){--n:7}
body[data-motion=full] .is-entering>*{animation:rise .5s var(--ease) both;animation-delay:calc(var(--n)*45ms)}
body[data-motion=full] .is-entering[data-dir=forward]>*{animation-name:step-forward}
body[data-motion=full] .is-entering[data-dir=back]>*{animation-name:step-back}
body[data-motion=soft] .is-entering>*{animation:fade .35s ease both}
@keyframes step-forward{from{opacity:0;transform:translate3d(34px,0,0)}}@keyframes step-back{from{opacity:0;transform:translate3d(-34px,0,0)}}
/* The space. */
body[data-motion=full][data-page=admin] .admin-sidebar{animation:side-in .6s var(--ease) both}
body[data-motion=full][data-page=admin] .admin-main>h1{animation:rise .6s var(--ease) both .05s}
body[data-motion=full][data-page=admin] .admin-dock{animation:rise .5s var(--ease) both .15s}
body[data-motion=soft][data-page=admin] :is(.admin-sidebar,.admin-main>h1){animation:fade .4s ease both}
@keyframes side-in{from{opacity:0;transform:translate3d(-18px,0,0)}}
body:not([data-motion=off])[data-page=admin] .admin-sidebar nav a{transition:background-color var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease),transform var(--motion-fast) var(--ease)}
@media(hover:hover){body[data-motion=full][data-page=admin] .admin-sidebar nav a:not([aria-current]):hover{transform:translate3d(3px,0,0)}
 body[data-motion=full][data-page=admin] :is(.partner-card,.home-tile,.quick-tile,.appt-card,.task-row,.docs-card):hover{transform:translate3d(0,-3px,0);box-shadow:var(--shadow)}}
body:not([data-motion=off])[data-page=admin] :is(.partner-card,.home-tile,.quick-tile,.appt-card,.task-row,.docs-card){transition:transform var(--motion-medium) var(--ease),box-shadow var(--motion-medium) var(--ease),border-color var(--motion-fast) var(--ease)}
/* (the appearance of the space's message is defined with the toast, at the end of this file) */
body:not([data-motion=off]) :is(.progress>span,.task-meter>span){transition:width .8s var(--ease-out)}
body:not([data-motion=off]) details:not(.mobile-menu):not(.team-switcher)[open]>*:not(summary){animation:rise .3s var(--ease) both}
@media print{*,*::before,*::after{animation:none!important;transition:none!important}.reveal-pending,[data-reveal],.reveal-auto{opacity:1!important;transform:none!important;filter:none!important}:is(.promo-image,.article-card img,.article-cover,.guide-card,.cta-panel,.about-image,.hero-copy,.page-intro .container,.reviews-average strong){clip-path:none!important;transform:none!important;opacity:1!important;filter:none!important}.skip,.scroll-progress,.nav-wait,.promo-bar,.season-note,.season-fx,.to-top,.guide-dock{display:none!important}body[data-page=tools] :is(.site-header,.site-footer,.mobile-dock,.sos-button,.breadcrumb,#tool-hub,.sim-print,#sim-reset,#sim-compare,.horizon-presets,#tools-back,.tool-controls,.workbench-chooser,.sim-next){display:none!important}body[data-page=tools] .tool-layout{grid-template-columns:1fr 1fr;gap:16px}body[data-page=tools] .tool-output{background:#fff;color:#000;border:1px solid #999}body[data-page=tools] .tool-output .muted{color:#333}body[data-page=tools] details{break-inside:avoid}}
.booking-sim{margin:0;padding:var(--space-4) var(--space-5);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent-soft);display:grid;gap:var(--space-2)}
.booking-sim legend{padding:0 .4rem;font-weight:var(--weight-bold);font-size:var(--text-sm)}.booking-sim ul,.appt-sim{margin:0;padding-left:1.1rem;font-size:var(--text-sm)}.booking-sim .text-link{justify-self:start}

/* 4.7 — a card of the site section that holds changes not saved yet. */
.unsaved-note{margin-top:var(--space-2);color:var(--error);font-weight:var(--weight-medium)}
/* ───────────── 4.8 — Curves of the simulators ─────────────
   Drawn to the pixel width of the page by sim-chart.mjs. The curve stands in the dark result panel: colours come
   from the panel (currentColor) and from the accent, so every theme and the print version keep working. */
.sim-chart{margin-block:var(--space-5);min-width:0}
.sim-chart figcaption{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px}
.chart-windows{display:inline-flex;flex-wrap:wrap;gap:4px;padding:3px;border:1px solid color-mix(in srgb,currentColor 22%,transparent);border-radius:999px}
.chart-windows button{appearance:none;border:0;background:none;color:inherit;font:inherit;font-size:var(--text-xs);font-weight:600;min-height:32px;padding:0 12px;border-radius:999px;cursor:pointer;opacity:.75}
.chart-windows button:hover{opacity:1}.chart-windows button[aria-pressed=true]{background:var(--accent-bright);color:var(--dark);opacity:1}
.chart-stage{position:relative;margin-block:var(--space-3);touch-action:pan-y;cursor:crosshair;min-height:250px}
.sim-chart .chart{display:block;max-width:100%;height:auto;overflow:visible}
.chart-tick{font-size:12px;opacity:.78;font-variant-numeric:tabular-nums}.chart-unit{opacity:.55}
.chart-gridline{opacity:.13}.chart-gridline-x{opacity:.07}.chart-zero{opacity:.55;stroke-width:1.2}
.chart-line{stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}
.chart-contributions,.chart-reference{stroke-width:1.8;opacity:.85}
.chart-area{stroke:none}.chart-stop-top{stop-color:var(--accent-bright);stop-opacity:.34}.chart-stop-bottom{stop-color:var(--accent-bright);stop-opacity:0}
.chart-end{fill:var(--accent-bright);stroke:var(--dark);stroke-width:2}
.chart-marker{fill:none;stroke:currentColor;stroke-width:1;stroke-dasharray:3 4;opacity:.6}.chart-marker-label{fill:currentColor;font-size:11.5px;font-weight:600;letter-spacing:.02em}
.chart-cursor[hidden],.chart-dot[hidden]{display:none}
.chart-cursor-line{fill:none;stroke:currentColor;stroke-width:1;opacity:.6}
.chart-dot{fill:var(--dark);stroke:currentColor;stroke-width:2}.chart-dot.chart-line-dot{stroke:var(--accent-bright);stroke-width:3}
.chart-reading{display:grid;gap:8px;padding:12px 14px;border:1px solid color-mix(in srgb,currentColor 18%,transparent);border-radius:var(--radius-sm);background:color-mix(in srgb,currentColor 6%,transparent);font-size:var(--text-sm)}
.chart-when{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin:0}.chart-when span{opacity:.75;font-size:var(--text-xs)}
.chart-values{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 16px;margin:0}
.chart-values div{min-width:0}.chart-values dt{display:flex;align-items:center;gap:6px;font-size:var(--text-xs);opacity:.78}.chart-values dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.chart-values dt i,.chart-legend i{flex:none;width:1.1rem;border-top:2px solid currentColor}.chart-values dt i.chart-line{border-color:var(--accent-bright)}.chart-values dt i.chart-contributions{border-top-style:dashed}.chart-values dt i.chart-reference{border-top-style:dotted}
.chart-change.is-up dd{color:var(--accent-bright)}.chart-change.is-down dd{opacity:.85}
.chart-scrub{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:10px;margin-top:8px}
.chart-scrub input[type=range]{width:100%;accent-color:var(--accent-bright)}
.chart-play{appearance:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid color-mix(in srgb,currentColor 30%,transparent);background:none;color:inherit;font-size:.8rem;cursor:pointer}
.chart-play:hover{border-color:var(--accent-bright);color:var(--accent-bright)}.chart-play[aria-pressed=true]{background:var(--accent-bright);border-color:var(--accent-bright);color:var(--dark)}.chart-play[aria-pressed=true] span{font-size:0}.chart-play[aria-pressed=true] span::before{content:"❚❚";font-size:.7rem}
.chart-legend{margin-top:10px}
.chart-table{margin-block:var(--space-4) 0}.chart-table-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-block:10px}
.chart-table-wrap{max-height:22rem;overflow:auto}.chart-table-wrap table{font-variant-numeric:tabular-nums}.chart-table-wrap thead th{position:sticky;top:0;background:var(--dark)}
.chart-table-wrap td,.chart-table-wrap th{white-space:nowrap}
body:not([data-motion=off]) .chart-fresh .chart-line{stroke-dasharray:1.02 1;animation:chart-draw 1.1s var(--ease) both}
body:not([data-motion=off]) .chart-fresh :is(.chart-area,.chart-contributions,.chart-reference,.chart-end,.chart-marker,.chart-marker-label){animation:fade .7s ease both .45s}
@keyframes chart-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
body:not([data-motion=off]) .chart-cursor-line,body:not([data-motion=off]) .chart-dot{transition:transform .08s linear,cx .08s linear,cy .08s linear}
@media(max-width:600px){.chart-values{grid-template-columns:1fr 1fr}.chart-windows button{padding:0 9px}}
@media(forced-colors:active){.chart-end,.chart-dot{stroke:CanvasText}.chart-windows button[aria-pressed=true]{outline:2px solid Highlight}}
@media print{.chart-windows,.chart-scrub,.chart-table-tools,.chart-cursor{display:none!important}.chart-table-wrap{max-height:none;overflow:visible}.chart-table-wrap thead th{position:static;background:none}.chart-reading{border-color:#000;background:none}.chart-stop-top,.chart-stop-bottom{stop-color:#000}.chart-stop-top{stop-opacity:.12}.chart-end,.chart-dot{fill:#fff;stroke:#000}}
/* 4.8 — Coordinates of a new client, first block of the questionnaire. */
.prep-identity{padding:var(--space-5);border:1px solid var(--accent);border-radius:var(--radius);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
.prep-identity h3{margin-bottom:6px}.prep-identity .form-grid{margin-top:var(--space-4)}.prep-privacy{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--line)}
/* ───────────── 4.8 — Legal layer of a VM's pages ─────────────
   The page keeps its look; the note on the activity stands soberly above the footer, and the footer names the
   publisher and operator of the site before the legal links. */
.vm-activity{border-top:1px solid var(--line)}.vm-activity h2{font-size:var(--text-lg)}.vm-activity p{color:var(--muted)}
.footer-operator{font-weight:600;margin-bottom:var(--space-4)}
/* 4.8 — rights: a line that only informs (the booking page follows a module). */
.right-switch.is-fixed{cursor:default;opacity:.9}.right-switch.is-fixed .check-dot{flex:none}
/* ───────────── 4.8 — After the booking: what happens next, and a gentle invitation to prepare ───────────── */
.booking-next{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--line)}
.booking-next h3{font-size:var(--text-lg);margin-bottom:var(--space-4)}
.next-steps{list-style:none;padding:0;margin:0 0 var(--space-5);display:grid;gap:var(--space-3);position:relative}
.next-steps li{display:grid;grid-template-columns:2.1rem 1fr;gap:.8rem;align-items:start;position:relative}
.next-steps li:not(:last-child)::after{content:"";position:absolute;left:1.02rem;top:2.2rem;bottom:-.7rem;width:2px;background:var(--line)}
.next-step-number{display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;border:1px solid var(--accent);background:var(--surface);color:var(--accent);font-weight:600;font-size:var(--text-sm)}
.next-steps strong{display:block;line-height:1.35}.next-steps p{margin:.15rem 0 0}
.prep-wide{grid-template-columns:1fr!important}
.quick-prep textarea,.prep-essential textarea{min-height:5.2rem}
.quick-prep textarea::placeholder,.prep-essential textarea::placeholder,.wish textarea::placeholder{color:var(--muted);opacity:.85}
.quick-identity{margin:var(--space-2) 0 var(--space-5);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}
.quick-identity summary{cursor:pointer;padding:.9rem 1rem;font-weight:600;list-style-position:inside}
.quick-identity summary small{font-weight:400;color:var(--muted)}
.quick-identity[open]{padding-bottom:1rem}.quick-identity>p,.quick-identity>.form-grid{margin:0 1rem;}.quick-identity>.form-grid{margin-top:.9rem}
.prep-essential{padding:var(--space-5);border:1px solid var(--accent);border-radius:var(--radius);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
.prep-essential h3{margin-bottom:6px}.prep-essential .form-grid{margin-top:var(--space-4)}
.prep-identity{border-color:var(--line);background:var(--surface)}
/* The three next free hours, one click away, above the calendar. */
.picker-next{margin-bottom:var(--space-5);padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--cream)}
.picker-next-title{font-size:var(--text-md);margin-bottom:.7rem}
.picker-next-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;margin-bottom:.6rem}
.picker-next-slot{display:grid;gap:.1rem;justify-items:start;text-align:left;padding:.75rem .9rem;min-height:3.6rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;transition:border-color var(--motion-fast) var(--ease),transform var(--motion-fast) var(--ease),box-shadow var(--motion-medium) var(--ease)}
.picker-next-slot span{font-size:var(--text-xs);color:var(--muted);text-transform:capitalize}.picker-next-slot strong{font-size:var(--text-lg);font-variant-numeric:tabular-nums}
.picker-next-slot:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-small)}
@media(max-width:480px){.picker-next-list{gap:.4rem}.picker-next-slot{padding:.6rem .55rem}.picker-next-slot strong{font-size:var(--text-md)}}
/* "None of these hours suits me": propose other moments. */
.wish{margin-top:var(--space-6);padding:var(--space-5);border:1px dashed var(--accent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent) 5%,var(--surface))}
.wish-lead{margin:0 0 .8rem}.wish-lead strong{display:block;font-size:var(--text-md)}
.wish #wish-form{margin-top:var(--space-4)}.wish h3{font-size:var(--text-lg)}
.wish-moment{border:0;padding:0;margin:0}.wish-moment legend{font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0;margin-bottom:.3rem}
.wish-moment .form-grid{grid-template-columns:1.3fr 1fr;gap:.7rem}
.wish-urgent{padding:.7rem .9rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}
.wish-done{display:flex;gap:.8rem;align-items:center}.wish-done .success-mark{flex:none;margin:0;width:36px;height:36px}
@media(prefers-reduced-motion:reduce){.picker-next-slot{transition:none}.picker-next-slot:hover{transform:none}}
@media(forced-colors:active){.picker-next-slot,.wish,.next-step-number{border:1px solid ButtonText}}
.wish-moment .form-grid{align-items:end}.picker-next-slot span{text-transform:none;display:block}.picker-next-slot span::first-letter{text-transform:uppercase}
@media(max-width:480px){.wish{padding:var(--space-4)}.wish-moment .form-grid{grid-template-columns:1fr 1fr}}
/* 4.8 — "this page also exists in your language": one discreet line under the header, on the page of arrival only. */
.lang-hint{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.4rem 1rem;padding:.55rem 1rem;background:var(--cream);border-bottom:1px solid var(--line);font-size:var(--text-sm)}
.lang-hint .icon-button{width:2rem;height:2rem;min-height:2rem;font-size:1.1rem;line-height:1}
@media print{.lang-hint,.wish,.picker-next{display:none!important}}
/* ───────────── 4.8 — Team tools: figures per person, several partners at once, start sheet ───────────── */
.team-figures>summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem 1rem;cursor:pointer;font-weight:600;font-size:var(--text-md)}
.team-figures>summary small{font-weight:400}.team-figures[open]>summary{margin-bottom:var(--space-4)}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.figures-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);font-variant-numeric:tabular-nums}
.figures-table th,.figures-table td{padding:.6rem .7rem;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}
.figures-table th:first-child{text-align:left;white-space:normal;min-width:9rem}.figures-table thead th{font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600}
.figures-table tbody th{font-weight:500}.figures-table tfoot th,.figures-table tfoot td{border-bottom:0;border-top:2px solid var(--ink);font-weight:600}
.figure-bar{display:inline-block;vertical-align:middle;width:5rem;height:.5rem;margin-right:.6rem;border-radius:1rem;background:var(--line);overflow:hidden}
.figure-bar i{display:block;height:100%;border-radius:1rem;background:var(--accent)}
.trend{font-size:.7em;vertical-align:middle}.trend.up{color:var(--success)}.trend.down{color:var(--danger,#a23b2a)}
@media(max-width:560px){.figure-bar{display:none}}
.bulk-list{list-style:none;padding:0;margin:var(--space-3) 0;display:grid;gap:.35rem}
.bulk-list li{display:grid;grid-template-columns:1.6rem 1fr auto;gap:.6rem;align-items:center;padding:.5rem .7rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}
.bulk-list li.is-off{opacity:.75}.bulk-list li.is-done{border-color:var(--success)}.bulk-list li>small{color:var(--muted);text-align:right}
.partner-bulk textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--text-sm);line-height:1.6}
/* Start sheet: a page on screen, exactly one sheet of paper when printed. */
.start-sheet{position:fixed;inset:0;z-index:2000;overflow:auto;background:color-mix(in srgb,var(--ink) 55%,transparent);padding:1rem}
.start-sheet-bar{display:flex;gap:.6rem;justify-content:center;margin:0 auto 1rem;max-width:210mm}
.start-sheet-page{max-width:210mm;margin:0 auto;background:#fff;color:#1c1d1a;padding:14mm 14mm 10mm;border-radius:6px;box-shadow:0 20px 60px rgba(0,0,0,.35);display:grid;gap:7mm}
.start-sheet-page h1{font-size:2rem;line-height:1.15;margin:.2rem 0 .5rem}.start-sheet-page h2{font-size:1.05rem;margin:0 0 .3rem}
.start-sheet-page header p{color:#55564f;max-width:60ch}.start-sheet-page .eyebrow{color:#806226}
.start-sheet-doors{display:grid;grid-template-columns:1fr 1fr;gap:8mm}
.start-sheet-doors>div{border:1px solid #d9d5cb;border-radius:8px;padding:5mm}
.start-sheet-qr{width:38mm;height:38mm;margin-bottom:3mm}.start-sheet-qr svg{width:100%;height:100%;display:block}
.start-sheet-link{font-weight:700;word-break:break-all;font-size:.95rem;margin:.1rem 0 .4rem}
.start-sheet-steps{list-style:none;counter-reset:sheet;padding:0;margin:0;display:grid;gap:3mm}
.start-sheet-steps li{counter-increment:sheet;display:grid;grid-template-columns:9mm 1fr;column-gap:3mm;align-items:start}
.start-sheet-steps li::before{content:counter(sheet);grid-row:1/3;display:grid;place-items:center;width:8mm;height:8mm;border-radius:50%;border:1px solid #806226;color:#806226;font-weight:700;font-size:.85rem}
.start-sheet-steps strong{display:block}.start-sheet-steps span{color:#44453f;font-size:.92rem}
.start-sheet-page footer{border-top:1px solid #d9d5cb;padding-top:4mm;color:#44453f}
@media(max-width:640px){.start-sheet-doors{grid-template-columns:1fr}.start-sheet-page{padding:8mm 6mm}}
@media print{
 html.sheet-open body>*:not(.start-sheet){display:none!important}
 html.sheet-open .start-sheet{position:static;padding:0;background:none;overflow:visible}
 html.sheet-open .start-sheet-bar{display:none}
 html.sheet-open .start-sheet-page{box-shadow:none;border-radius:0;max-width:none;padding:0;gap:6mm}
 html.sheet-open .start-sheet-doors{grid-template-columns:1fr 1fr}
 @page{size:A4;margin:14mm}
}
/* ───────────── 4.8 — Documentation: reading paths and flow diagrams ───────────── */
.docs-paths h2{margin-bottom:.2rem}
.docs-path-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:var(--space-4)}
.docs-path{border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--surface)}
.docs-path h3{font-size:var(--text-md);margin:0 0 .15rem}.docs-path>p{margin:0 0 .7rem}
.docs-path ol{list-style:none;padding:0;margin:0;display:grid;gap:2px;position:relative}
.docs-path li a{display:grid;grid-template-columns:1.9rem 1fr;gap:.6rem;align-items:center;padding:.35rem .3rem;border-radius:8px;color:inherit;text-decoration:none;position:relative}
.docs-path li a:hover{background:var(--accent-soft)}
.docs-path li:not(:last-child) a::after{content:"";position:absolute;left:1.22rem;top:2.05rem;height:.75rem;width:2px;background:var(--line)}
.docs-path-number{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:50%;border:1px solid var(--accent);color:var(--accent);font-weight:600;font-size:var(--text-sm);background:var(--surface)}
.doc-flow{list-style:none;padding:0;margin:0 0 1.1rem;display:flex;flex-wrap:wrap;gap:.45rem 0;align-items:stretch}
.doc-flow li{position:relative;display:flex;align-items:center;padding:.5rem .8rem;margin-right:1.5rem;border:1px solid var(--line);border-radius:10px;background:var(--cream);font-size:var(--text-sm);line-height:1.3;max-width:13rem}
.doc-flow li:not(:last-child)::after{content:"";position:absolute;right:-1.15rem;top:50%;width:.8rem;height:.8rem;margin-top:-.4rem;background:var(--accent);clip-path:polygon(0 42%,58% 42%,58% 12%,100% 50%,58% 88%,58% 58%,0 58%)}
.doc-flow li:last-child{margin-right:0;border-color:var(--accent)}
@media(max-width:600px){.doc-flow{flex-direction:column;gap:1.1rem 0}.doc-flow li{margin-right:0;max-width:none}.doc-flow li:not(:last-child)::after{right:auto;left:1.2rem;top:auto;bottom:-1rem;margin-top:0;transform:rotate(90deg)}}
@media print{.docs-paths{display:none}.doc-flow li{background:none}}
@media(forced-colors:active){.doc-flow li:not(:last-child)::after{background:CanvasText}}
/* ───────────── 4.8 — Messages of the space are a toast: seen wherever the screen is scrolled ───────────── */
body[data-page=admin] #admin-status[data-toast]{position:fixed;left:50%;bottom:calc(1.25rem + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:1500;width:max-content;max-width:min(44rem,calc(100vw - 2rem));margin:0;padding:.85rem 1.15rem;border-radius:12px;border:1px solid var(--line);background:var(--ink);color:var(--paper);box-shadow:0 12px 40px rgba(0,0,0,.28);font-size:var(--text-sm);line-height:1.45;text-align:center;pointer-events:none}
body[data-page=admin] #admin-status[data-toast]:empty{display:none}
body[data-page=admin] #admin-status[data-toast].error{background:#7a1f14;color:#fff;border-color:#7a1f14}
/* It leaves by itself: after 7 seconds for a confirmation, 14 for an error (long enough to be read aloud too). */
body[data-page=admin] #admin-status[data-toast]:not(:empty){animation:toast 7s var(--ease) both}
body[data-page=admin] #admin-status[data-toast].error:not(:empty){animation-duration:14s}
@keyframes toast{0%{opacity:0;translate:0 .6rem}4%{opacity:1;translate:0 0}92%{opacity:1}100%{opacity:0;visibility:hidden}}
body[data-motion=off][data-page=admin] #admin-status[data-toast]:not(:empty){animation-name:toast-still}
@keyframes toast-still{0%,92%{opacity:1}100%{opacity:0;visibility:hidden}}
@media(prefers-reduced-motion:reduce){body[data-page=admin] #admin-status[data-toast]:not(:empty){animation-name:toast-still}}
@media(max-width:900px){body[data-page=admin] #admin-status[data-toast]{bottom:calc(5.4rem + env(safe-area-inset-bottom))}}
@media print{body[data-page=admin] #admin-status[data-toast]{display:none}}
@media(forced-colors:active){body[data-page=admin] #admin-status[data-toast]{border:2px solid CanvasText}}
/* Bulk list on a phone: the verdict goes under the name instead of being cut on the right. */
.bulk-list li>span:nth-child(2){min-width:0;overflow-wrap:anywhere}
@media(max-width:560px){.bulk-list li{grid-template-columns:1.6rem 1fr}.bulk-list li>small{grid-column:2;text-align:left}}
/* ───────────── 4.8 — The floating SOS button never sits on what a visitor is doing ─────────────
   On the pages where something is being filled in or read closely (booking, appointment, preparation, review,
   simulators) it is not shown on phones and tablets: SOS stays in the menu and in the footer. */
@media(max-width:1023px){body[data-page=book] .sos-button,body[data-page=manage] .sos-button,body[data-page=prep] .sos-button,body[data-page=review] .sos-button,body[data-page=tools] .sos-button{display:none}}
@media(min-width:601px){.site-footer{padding-bottom:calc(var(--space-16) + 3.6rem + env(safe-area-inset-bottom))}}
@media(max-width:420px){.wish-moment .form-grid{grid-template-columns:1fr}}

/* 4.8 — finish of the client pages after the device review */
#booking-app #confirmation-status{margin:var(--space-5) 0 var(--space-6)}
#quick-prep-status:not(:empty){margin-top:var(--space-5)}
.booking-success>.button-row+.button-row{margin-top:var(--space-3)}
.quick-prep .button-row{align-items:center;gap:var(--space-4) var(--space-5)}
@media(max-width:600px){#booking-app .booking-success{border:0;padding:0;background:none;border-radius:0}.manage-card{padding:var(--space-4)}}
#booking-app{min-height:22rem}
@media print{body[data-page=book] :is(.booking-next,.quick-prep,#quick-preparation,.adviser-card,.skip-link,.button-row,.text-link),body[data-page=manage] :is(.manage-tiles,.skip-link,.button-row,.text-link,#manage-action){display:none!important}body[data-page=book] .booking-success,body[data-page=manage] .manage-card{border:1px solid #000;background:none;box-shadow:none}}
@media(pointer:coarse){.chart-windows button{min-height:40px;padding-inline:14px}details.formula>summary,.quick-identity>summary{min-height:44px;display:flex;align-items:center}}
