/* Original site.css owns appearance and tokens. Only shell/accessibility glue. */
.public-skip {position:fixed;left:16px;top:-100px;z-index:120;background:var(--fg);color:var(--bg)!important;padding:12px 18px;border-radius:8px;}
.public-skip:focus {top:12px;}
.public-header :is(a,button,summary):focus-visible,.public-footer a:focus-visible {outline:2px solid var(--green);outline-offset:4px;}
.public-header .brand {color:var(--bg);}
.public-menu {display:none;}
.public-menu summary {list-style:none;cursor:pointer;}
.public-menu summary::-webkit-details-marker {display:none;}
.public-menu:not([open]) .public-menu-panel {display:none;}
.public-menu-panel {position:absolute;top:calc(100% + 10px);right:0;width:min(340px,calc(100vw - 24px));max-height:calc(100dvh - 100px);overflow:auto;padding:18px;border:1px solid var(--line-strong);border-radius:24px;background:var(--panel-strong);box-shadow:0 24px 80px var(--shadow);backdrop-filter:blur(30px) saturate(1.35);}
.public-header .public-menu-panel nav {display:flex;flex-direction:column;align-items:stretch;justify-content:start;overflow:visible;gap:4px;}
.public-header .public-menu-panel a {padding:12px 14px;white-space:normal;}
.public-menu[open] summary span:nth-child(1) {transform:rotate(42deg);}
.public-menu[open] summary span:nth-child(2) {opacity:0;transform:scaleX(.4);}
.public-menu[open] summary span:nth-child(3) {transform:rotate(-42deg);}
.public-footer {width:min(calc(100% - var(--page-gutter)),var(--site-max));margin:60px auto 0;padding:25px 0 35px;border-top:1px solid var(--line);font:450 .65rem/1.5 var(--font-mono);color:var(--muted);}
.public-footer-inner {display:flex;justify-content:space-between;align-items:start;gap:25px;width:100%;}
.public-footer p {margin:8px 0 0;}
.public-footer nav {display:flex;gap:12px 20px;flex-wrap:wrap;}
.public-footer a {color:inherit;text-decoration:none;}
.public-footer a:hover {text-decoration:underline;text-underline-offset:4px;}
.public-footer-name {font-weight:700;}
.cv-local-nav {width:min(calc(100% - var(--page-gutter)),var(--site-max));margin:100px auto -85px;position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:10px 22px;font:600 .7rem var(--font-mono);}
.cv-local-nav a {color:var(--muted);text-decoration:none;}
.cv-local-nav a:hover {color:var(--fg);}
/* CV reading content must not depend on dynamically added reveal observers. */
.public-page.cv-page .cv-main [data-aos],
.public-page.cv-page .cv-main [data-motion] {opacity:1;transform:none;filter:none;transition:none;}
@media(max-width:820px){.public-header .nav-links{display:none;}.public-menu{display:block;}.public-menu summary.nav-menu-toggle{display:grid;}.public-footer-inner{flex-direction:column;}.cv-local-nav{margin-top:85px;margin-bottom:-75px;gap:10px 16px;}}
@media print{.public-header,.public-footer,.public-skip,.cv-local-nav{display:none;}}

/* A single semantic heading uses the original mobile headline geometry. */
@media(max-width:820px){.hero .hero-title--canonical{max-width:11.5ch;font-size:clamp(3rem,14vw,4.35rem);line-height:.9;}}

/* Native section anchors clear the shared fixed header; article offsets remain untouched. */
.public-page:not(.sb-page) main :where(section[id],#page-intro,#page-details,#project-approach,#project-stack,#project-result) {scroll-margin-top:110px;}

/* Consent controls share shell typography, including on article reading pages. */
body.public-page :is(.cookie-consent button,.cookie-manage) {
  font-family:var(--font-mono);font-size:.66rem;font-weight:820;line-height:1.5;
}

/* One outer frame for every public page. Reading columns remain internal. */
html:root {width:auto;max-width:none;scrollbar-gutter:stable;}
body.public-page {
  --public-max:1180px;
  --public-gutter:clamp(32px,8vw,104px);
  --public-rail-space:52px;
  --public-width:min(calc(100% - var(--public-gutter) - var(--public-rail-space)),var(--public-max));
  --public-content-top:145px;
  --site-max:var(--public-max);
  --wide-max:var(--public-max);
}
body.public-page .public-header {
  width:var(--public-width);max-width:var(--public-max);height:54px;min-height:54px;
  top:18px;left:calc(50% + var(--public-rail-space)/2);right:auto;transform:translateX(-50%);padding:6px;
  font-family:var(--font-sans);font-size:16px;line-height:1.4;
}
body.public-page .public-header :is(a,button,summary) {line-height:1.4;}
body.public-page .public-header .brand {line-height:1;}
body.public-page .public-header .liquid-switch {font-size:16px;}
body.public-page :is(.public-footer,.sb-wrap,.portfolio-detail),
body.public-page.profile-reading .profile-hero,
body.public-page:is([data-page-type="home"],[data-page-type="projects"],[data-page-type="contact"]) main > .scene {
  width:var(--public-width);max-width:var(--public-max);margin-inline:auto;
  position:relative;left:calc(var(--public-rail-space)/2);
}
body.public-page:is([data-page-type="home"],[data-page-type="projects"],[data-page-type="contact"]) main > .scene {
  padding-inline:0;
}
body.public-page[data-page-type="home"][data-studio-home] .hero {padding-left:0;}
body.public-page .sb-hero,
body.public-page.profile-reading .profile-hero,
body.public-page:is([data-page-type="home"],[data-page-type="projects"],[data-page-type="contact"]) main > .scene:first-child {
  padding-top:var(--public-content-top);
}
body.public-page .portfolio-detail {position:relative;padding-top:var(--public-content-top);}
body.public-page .portfolio-back {position:absolute;top:calc(var(--public-content-top) - 38px);margin:0;}
body.public-page[data-editorial-project] .portfolio-hero {width:100%;padding-block:0;align-items:start;}
body.public-page:is([data-page-type="home"],[data-page-type="projects"],[data-page-type="contact"]) main > .scene > .scene-rail {left:-52px;}
@media(max-width:820px){
  body.public-page {--public-gutter:32px;--public-content-top:111px;}
  body.public-page .public-header {top:10px;}
}
@media(max-width:900px){body.public-page {--public-rail-space:0px;}}
@media print {
  html:root {scrollbar-gutter:auto;}
  body.public-page {--public-rail-space:0px;}
  body.public-page :is(.sb-wrap,.portfolio-detail),body.public-page.profile-reading .profile-hero {width:100%;left:0;}
}

/* One moving language lens; selected labels retain their original geometry. */
body.public-page .public-header .language-toggle {position:relative;isolation:isolate;}
body.public-page .public-header .language-toggle::before {
  content:'';position:absolute;z-index:0;left:0;top:2px;
  width:calc((100% - 2px)/2);height:calc(100% - 4px);border-radius:999px;
  background:color-mix(in oklab,var(--fg),transparent 5%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 5px 16px color-mix(in oklab,var(--shadow),transparent 28%);
  transform:translateX(0);transition:transform 560ms cubic-bezier(.2,.76,.24,1);
}
body.public-page .public-header .language-toggle:where(:has(>span:nth-child(2).is-active))::before {transform:translateX(calc(100% + 2px));}
body.public-page .public-header .language-toggle > span {position:relative;z-index:1;}
body.public-page .public-header .language-toggle > span.is-active {background:transparent;box-shadow:none;}
@media(prefers-reduced-motion:reduce){body.public-page .public-header .language-toggle::before{transition:none;}}

/* Selection intent moves immediately while the translated text turns. */
body.public-page .public-header .language-toggle[data-language-target="en"]::before {transform:translateX(calc(100% + 2px));}
body.public-page .public-header .language-toggle[data-language-target="nl"]::before {transform:translateX(0);}

/* One shared atmosphere; content sections do not stack additional paint planes.
   Canonical article interiors retain their independent reading treatment. */
body.public-page:not(.sb-page) .scene:not(.hero)::before,
body.public-page:not(.sb-page)::after,
body.public-page:not(.sb-page) .cursor-field {display:none;}

/* The atmosphere belongs to the opening, never a tinted fixed reading canvas. */
body.public-page:not(.sb-page) {background:var(--bg);}
body.public-page:not(.sb-page)::before,
body.public-page:not(.sb-page):not([data-page-type="home"]) > .ambient-field {display:none;}

/* Navigation and initial reveal share the exact same brand pillow. */
body.public-page .public-brand-mark {
  display:inline-grid;place-items:center;box-sizing:border-box;
  width:68px;min-width:68px;height:34px;min-height:34px;padding:0;
  border:0;border-radius:999px;background:color-mix(in oklab,var(--fg),transparent 5%);
  color:var(--bg);font:700 .68rem/1 var(--font-mono);
  letter-spacing:.12em;text-transform:uppercase;text-decoration:none;
}
/* Other public routes share the selected scene color with their outer chrome. */
body.public-page:not([data-studio-home]):not([data-page-type="article"]) {
  --scene-accent:var(--public-scene-accent,var(--green));
}

/* Open editorial actions: shared baseline and digital trace, without a button face. */
body.public-page .public-text-link {
  --text-link-signal:var(--public-scene-accent,var(--scene-accent,var(--green)));
  position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:flex-start;
  box-sizing:border-box;min-height:44px;max-width:100%;padding:8px 17px 8px 0;
  border:0;border-radius:0;background:none;box-shadow:none;
  color:var(--fg);font:600 .78rem/1.5 var(--font-sans,Inter,ui-sans-serif,system-ui,sans-serif);
  letter-spacing:.015em;text-decoration:none;text-align:left;cursor:pointer;
  transform:none;transition:color 180ms ease;
}
:root[data-theme-mode="light"] body.public-page .public-text-link {--text-link-signal:color-mix(in srgb,var(--public-scene-accent,var(--scene-accent,var(--green))),#000 58%);}
body.public-page .public-text-link::before {
  content:"";position:absolute;left:0;right:0;bottom:6px;height:1px;pointer-events:none;
  background:var(--text-link-signal);opacity:.5;
  transform:scaleX(.24);transform-origin:left center;
  transition:transform 420ms cubic-bezier(.16,1,.3,1),opacity 220ms ease;
}
body.public-page .public-text-link::after {
  content:"";position:absolute;right:1px;top:calc(50% - 2px);width:4px;height:4px;
  border:1px solid var(--text-link-signal);box-sizing:border-box;pointer-events:none;
  opacity:.6;transform:rotate(0);transition:transform 420ms cubic-bezier(.16,1,.3,1),opacity 220ms ease,background-color 220ms ease;
}
body.public-page .public-text-link:is(:hover,:focus-visible) {color:var(--text-link-signal);background:none;transform:none;}
body.public-page .public-text-link:is(:hover,:focus-visible)::before {opacity:1;transform:scaleX(1);}
body.public-page .public-text-link:is(:hover,:focus-visible)::after {opacity:1;transform:rotate(90deg);background:var(--text-link-signal);}
body.public-page .public-text-link:focus-visible {outline:2px solid var(--text-link-signal);outline-offset:4px;}
/* The assistant is a deliberate menu action, after the native route links. */
body.public-page .public-menu-ask {margin:14px 14px 0;min-width:120px;}
body.public-page .public-menu-ask[hidden] {display:none!important;}
@media(prefers-reduced-motion:reduce) {body.public-page .public-text-link,body.public-page .public-text-link::before,body.public-page .public-text-link::after {transition:none;}}
@media print {body.public-page .public-text-link::before,body.public-page .public-text-link::after {display:none;}body.public-page .public-text-link {color:inherit;text-decoration:underline;}}

/* Existing rail geometry, with one colour source shared by scene and controls. */
body.public-page .scroll-rail {--rail-accent:var(--public-scene-accent,var(--scene-accent,var(--green)));}
body.public-page .scroll-rail i {background:linear-gradient(var(--rail-accent),color-mix(in srgb,var(--rail-accent),transparent 30%));}
body.public-page .scroll-rail b {background:var(--rail-accent);box-shadow:0 0 22px color-mix(in srgb,var(--rail-accent),transparent 36%);}
body.public-page .scene-rail {--rail-accent:var(--section-a,var(--public-scene-accent,var(--scene-accent,var(--green))));}
body.public-page .scene-rail span {color:color-mix(in srgb,var(--rail-accent),var(--fg) 12%);}
body.public-page .scene-rail::before,
body.public-page .scene-rail::after {background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--rail-accent),transparent 60%),transparent);}

/* Digital shell: the same cut, reflection and signal as the action controls. */
body.public-page .public-header {
  --nav-signal:var(--public-scene-accent,var(--scene-accent,var(--green)));
  --nav-state-duration:560ms;--nav-state-ease:cubic-bezier(.2,.76,.24,1);
  --nav-scan-duration:650ms;--nav-scan-ease:cubic-bezier(.16,1,.3,1);
  --nav-cut:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);
  isolation:isolate;border-color:transparent;border-radius:0;background:transparent;
  /* 54px shell / 34px brand: 10px top and bottom; 9px + 1px border matches on the left. */
  padding:4px 4px 4px 9px;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
}
:root[data-theme-mode="light"] body.public-page .public-header {--nav-signal:color-mix(in srgb,var(--public-scene-accent,var(--scene-accent,var(--green))),#000 58%);}
body.public-page .public-header::before,
body.public-page .public-header::after {content:"";position:absolute;pointer-events:none;clip-path:var(--nav-cut);border-radius:28px 0 0 28px;}
body.public-page .public-header::before {
  z-index:-2;inset:-1px;
  background:var(--line-strong,var(--line));
}
body.public-page .public-header::after {
  z-index:-1;inset:0;
  background:linear-gradient(115deg,transparent 30%,color-mix(in srgb,var(--fg),transparent 96%) 48%,transparent 68%),color-mix(in srgb,var(--bg),transparent 9%);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}

body.public-page .public-header .nav-actions {
  --control-h:44px;gap:4px;height:44px;padding:0;border:0;border-radius:0;
  background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
}
body.public-page .public-header .nav-actions :is(.language-toggle,.liquid-switch) {
  box-sizing:border-box;position:relative;height:44px;min-height:44px;
  border-radius:0;border:1px solid transparent;background:transparent;
  box-shadow:none;transform:none;overflow:visible;
  transition:border-color 220ms ease;
}
body.public-page .public-header .nav-actions :is(.language-toggle,.liquid-switch):is(:hover,:focus-visible) {border-color:transparent;transform:none;box-shadow:none;}
body.public-page .public-header .language-toggle {width:74px;min-width:74px;padding:0;gap:2px;}
body.public-page .public-header .language-toggle > span {
  display:grid;place-items:center;width:35px;min-width:35px;height:34px;min-height:34px;
  padding:0;border-radius:0;font-size:.64rem;letter-spacing:.1em;transition:color 180ms ease;
}
body.public-page .public-header .language-toggle::before {
  top:4px;height:34px;border-radius:0;
  clip-path:polygon(0 0,calc(100% - 4px) 0,100% 4px,100% 100%,4px 100%,0 calc(100% - 4px));
  box-shadow:none;transition:transform var(--nav-state-duration) var(--nav-state-ease);
}
body.public-page .public-header .nav-menu-toggle::after {
  content:"";display:block;position:absolute;inset:1px;pointer-events:none;z-index:-1;
  clip-path:polygon(0 0,calc(100% - 9px) 0,100% 9px,100% 100%,0 100%);
  border-radius:0;box-shadow:none;filter:none;width:auto;height:auto;
  background:linear-gradient(110deg,transparent 25%,color-mix(in srgb,var(--nav-signal),transparent 78%) 50%,transparent 75%) 150% 0/300% 100% no-repeat,color-mix(in srgb,var(--bg),var(--nav-signal) 4%);
  transition:background-position var(--nav-scan-duration) var(--nav-scan-ease);opacity:1;transform:none;
}
body.public-page .public-header .nav-menu-toggle:is(:hover,:focus-visible)::after {background-position:-50% 0;}
body.public-page .public-header .liquid-switch {--switch-duration:var(--nav-state-duration);--switch-ease:var(--nav-state-ease);width:74px;min-width:74px;}
body.public-page .public-header .liquid-switch .switch-core {
  left:0;top:4px;width:35px;height:34px;border-radius:0;box-shadow:none;
  clip-path:polygon(0 0,calc(100% - 4px) 0,100% 4px,100% 100%,4px 100%,0 calc(100% - 4px));
  transition:transform var(--nav-state-duration) var(--nav-state-ease);
}
body.public-page .public-header .liquid-switch[data-mode="light"] .switch-core {transform:translateX(37px);box-shadow:none;}
body.public-page .public-header .switch-lens {display:none;}
body.public-page .public-header .nav-links a,
body.public-page .public-header .public-menu-panel a {
  position:relative;display:inline-flex;align-items:center;min-height:44px;border-radius:0;
  background:none;transform:none;box-shadow:none;text-decoration:none;
}
body.public-page .public-header :is(.nav-links,.public-menu-panel) a::after {
  content:"";position:absolute;left:12px;right:12px;bottom:6px;height:1px;
  background:var(--nav-signal);transform:scaleX(0);transform-origin:left;
  transition:transform 420ms cubic-bezier(.16,1,.3,1);pointer-events:none;
}
body.public-page .public-header :is(.nav-links,.public-menu-panel) a:is(:hover,:focus-visible,[aria-current="page"])::after {transform:scaleX(1);}
body.public-page .public-header :is(.nav-links,.public-menu-panel) a:is(:hover,:focus-visible) {background:none;color:var(--nav-signal);transform:none;}
body.public-page .public-header :is(a,button,summary):focus-visible {outline:2px solid var(--nav-signal);outline-offset:3px;}
body.public-page .public-header .nav-menu-toggle {
  --menu-edge:var(--line);position:relative;isolation:isolate;
  box-sizing:border-box;width:44px;min-height:44px;border-radius:0;
  border:0;background:transparent;box-shadow:none;
}
body.public-page .public-header .nav-menu-toggle::before {
  content:"";position:absolute;inset:0;z-index:-2;pointer-events:none;
  clip-path:var(--nav-cut);background:var(--menu-edge);
}
body.public-page .public-header .nav-menu-toggle:is(:hover,:focus-visible),
body.public-page .public-menu[open] .nav-menu-toggle {--menu-edge:var(--nav-signal);color:var(--nav-signal);}
body.public-page .public-header .nav-menu-toggle span {border-radius:0;}
body.public-page .public-menu-panel {
  border-radius:0;border-color:var(--line-strong);background:var(--bg);
  box-shadow:0 18px 48px color-mix(in srgb,var(--shadow),transparent 30%);backdrop-filter:none;
}
@media(max-width:820px) {
  body.public-page .public-header > .nav-actions {display:none;}
  body.public-page .public-header .public-menu {margin-left:auto;}
  body.public-page .public-header .public-menu-panel {max-width:100%;}
  body.public-page .public-header .public-menu-controls {height:auto;margin-top:14px;padding-top:14px;border-top:1px solid var(--line);}
}
@media(prefers-reduced-motion:reduce) {
  body.public-page .public-header::before,
  body.public-page .public-header .language-toggle::before,
  body.public-page .public-header :is(.language-toggle,.liquid-switch)::after,
  body.public-page .public-header .liquid-switch .switch-core,
  body.public-page .public-header :is(.nav-links,.public-menu-panel) a::after {transition:none;}
}

/* Interaction lives on a segment, never on the shared switch track. */
body.public-page .public-header :is(.language-toggle,.liquid-switch)::after {display:none;}
body.public-page .public-header .language-toggle > span,
body.public-page .public-header .switch-track-segment {
  isolation:isolate;box-sizing:border-box;border:1px solid transparent;
  background:transparent;box-shadow:none;
}
body.public-page .public-header .language-toggle > span::after,
body.public-page .public-header .switch-track-segment::after {
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  clip-path:polygon(0 0,calc(100% - 4px) 0,100% 4px,100% 100%,4px 100%,0 calc(100% - 4px));
  background:linear-gradient(110deg,transparent 25%,color-mix(in srgb,var(--nav-signal),transparent 68%) 50%,transparent 75%) 150% 0/300% 100% no-repeat,linear-gradient(115deg,transparent 30%,color-mix(in srgb,var(--fg),transparent 96%) 48%,transparent 68%);
  transition:background-position var(--nav-scan-duration) var(--nav-scan-ease),background-color 180ms ease;
}
body.public-page .public-header .language-toggle > span:not(.is-active):hover,
body.public-page .public-header .switch-track-segment:hover {
  color:var(--fg);border-color:var(--nav-signal);
}
body.public-page .public-header .language-toggle > span:not(.is-active):hover::after,
body.public-page .public-header .switch-track-segment:hover::after {
  background-position:-50% 0,center;background-color:color-mix(in srgb,var(--bg),var(--nav-signal) 18%);
}
body.public-page .public-header .liquid-switch .switch-track-icons {padding:0;gap:2px;}
body.public-page .public-header .switch-track-segment {
  position:relative;display:grid;place-items:center;flex:none;
  width:35px;height:34px;padding:0;pointer-events:auto;color:inherit;
}
body.public-page .public-header .liquid-switch .switch-track-icons .switch-icon {
  width:15px;height:15px;padding:0;border:0;transform:none;opacity:.6;pointer-events:none;
}
body.public-page .public-header .switch-track-segment:hover .switch-icon {opacity:1;}
@media(prefers-reduced-motion:reduce) {
  body.public-page .public-header .language-toggle > span::after,
  body.public-page .public-header .switch-track-segment::after,
  body.public-page .public-header .liquid-switch .switch-track-icons .switch-icon,
  body.public-page .public-header .liquid-switch .switch-core {transition:none;}
}
/* The inactive language segment uses the arrow-control contour, not a rectangular track border. */
body.public-page .public-header .language-toggle > span::before,
body.public-page .public-header .switch-track-segment::before {
  content:"";position:absolute;inset:-1px;z-index:-2;pointer-events:none;opacity:0;
  clip-path:polygon(0 0,calc(100% - 4px) 0,100% 4px,100% 100%,4px 100%,0 calc(100% - 4px));
  background:var(--nav-signal);transition:opacity 180ms ease;
}
body.public-page .public-header .language-toggle > span:not(.is-active):hover,
body.public-page .public-header .switch-track-segment:hover {border-color:transparent;}
body.public-page .public-header .language-toggle > span:not(.is-active):hover::before,
body.public-page .public-header .switch-track-segment:hover::before {opacity:1;}
body.public-page .public-header .language-toggle:hover > span:not(.is-active):not(:hover) {color:color-mix(in oklab,var(--fg),transparent 42%);}
@media(prefers-reduced-motion:reduce) {body.public-page .public-header .language-toggle > span::before,
body.public-page .public-header .switch-track-segment::before {transition:none;}}

/* One selected surface for both switches: exact geometry, cut and paint. */
body.public-page .public-header .language-toggle::before,
body.public-page .public-header .liquid-switch .switch-core {
  box-sizing:border-box;position:absolute;left:0;top:4px;
  width:35px;min-width:35px;height:34px;min-height:34px;padding:0;border:0;border-radius:0;
  clip-path:polygon(0 0,calc(100% - 4px) 0,100% 4px,100% 100%,4px 100%,0 calc(100% - 4px));
  background:color-mix(in oklab,var(--fg),transparent 5%);color:var(--bg);box-shadow:none;
  transition:transform var(--nav-state-duration) var(--nav-state-ease);
}
body.public-page .public-header .liquid-switch .switch-core {pointer-events:auto;}
@media(prefers-reduced-motion:reduce) {
  body.public-page .public-header .language-toggle::before,
  body.public-page .public-header .liquid-switch .switch-core {transition:none;}
}

/* Contact closes the editorial sequence; the form is an open instrument,
   with containment only where a multiline input needs its own boundary. */
body.public-page[data-page-type="contact"] .contact-copy {gap:24px;align-content:start;}
body.public-page[data-page-type="contact"] .contact-copy > :is(h1,p) {margin:0;}
body.public-page[data-page-type="contact"] .contact-copy h1 {max-width:12ch;font-size:clamp(3rem,5.7vw,5.5rem);line-height:1.02;letter-spacing:-.045em;}
body.public-page[data-page-type="contact"] .contact-copy > p:not(.eyebrow) {max-width:54ch;line-height:1.65;}
body.public-page[data-page-type="contact"] .contact-actions {margin-top:8px;}
body.public-page .contact-form {
  --contact-signal:var(--public-scene-accent,var(--scene-accent,var(--green)));
  --contact-line:color-mix(in srgb,var(--fg),transparent 50%);
  gap:24px;padding:20px 0 0;border:0;border-top:1px solid var(--line-strong);
  border-radius:0;background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
}
:root[data-theme-mode="light"] body.public-page .contact-form {--contact-signal:color-mix(in srgb,var(--public-scene-accent,var(--scene-accent,var(--green))),#000 45%);}
body.public-page .contact-form :is(input,textarea) {
  box-sizing:border-box;min-width:0;min-height:48px;padding:12px 0;
  border:0;border-bottom:1px solid var(--contact-line);border-radius:0;
  background:transparent;color:var(--fg);box-shadow:none;font-size:1rem;
}
body.public-page .contact-form textarea {min-height:160px;padding:12px;border:1px solid var(--contact-line);}
body.public-page .contact-form :is(input,textarea):focus {
  border-color:var(--contact-signal);box-shadow:none;
  outline:2px solid var(--contact-signal);outline-offset:4px;
}
/* Match the mounted assistant layer so an open conversation clears the cookie tab. */
body.public-page .ask-widget.is-open {z-index:2147483000!important;}
/* The launcher remains viewport-fixed; its panel keeps viewport coordinates
   through both the opening and closing animation. */
@media (max-width:820px) {
  /* Keep the vertical cookie tab and assistant on opposite sides after a drag. */
  body.public-page:has(.cookie-manage[data-cookie-dock="right"]) .ask-widget:not(.is-open) {
    left:calc(14px + env(safe-area-inset-left))!important;right:auto!important;
  }
  /* Both endpoints use the viewport: closing must not fly back to the footer. */
  body.public-page .ask-widget .ask-console.ask-widget-panel {
    position:fixed!important;left:auto!important;top:auto!important;
    right:max(10px,env(safe-area-inset-right))!important;
    bottom:max(10px,env(safe-area-inset-bottom))!important;
    width:min(540px,calc(100vw - 20px))!important;
    max-height:calc(100dvh - 20px)!important;overflow:auto!important;
  }
}
body.public-page[data-page-type="contact"] .ask-widget .ask-widget-panel {
  position:fixed!important;right:max(18px,env(safe-area-inset-right))!important;
  bottom:max(18px,env(safe-area-inset-bottom))!important;
}
@media (min-width:541px) and (max-width:760px) {
  body.public-page[data-page-type="contact"] .ask-widget .ask-widget-panel {
    right:max(10px,env(safe-area-inset-right))!important;bottom:max(10px,env(safe-area-inset-bottom))!important;
  }
}
@media (max-width:540px) {
  /* Keep the existing full-screen mobile composition through its closing fade. */
  body.public-page .ask-widget .ask-console.ask-widget-panel {
    left:max(8px,env(safe-area-inset-left))!important;right:max(8px,env(safe-area-inset-right))!important;
    top:calc(env(safe-area-inset-top) + 8px)!important;bottom:calc(env(safe-area-inset-bottom) + 8px)!important;
    width:auto!important;max-height:none!important;grid-template-columns:1fr!important;
    grid-template-rows:minmax(0,1fr)!important;overflow:hidden!important;
  }
  body.public-page .ask-widget .ask-widget-main {
    min-height:0!important;padding:13px!important;
    grid-template-rows:auto auto minmax(110px,1fr) auto auto!important;overflow:hidden!important;
  }
  body.public-page .ask-widget .ask-log {min-height:0!important;height:auto!important;overflow:auto!important;}
  body.public-page .ask-widget .ask-action-rail {display:none!important;}
}

/* Theme changes exchange complete palettes. Settle surrounding UI before
   snapshotting; keep the actual switch's moving indicator. */
html[data-theme-repaint] body.public-page,
html[data-theme-repaint] body.public-page::before,
html[data-theme-repaint] body.public-page::after,
html[data-theme-repaint] body.public-page :not([data-theme-switch],[data-theme-switch] *),
html[data-theme-repaint] body.public-page :not([data-theme-switch],[data-theme-switch] *)::before,
html[data-theme-repaint] body.public-page :not([data-theme-switch],[data-theme-switch] *)::after {
  transition-duration:0s!important;
  transition-delay:0s!important;
}
/* Viewport snapshots keep the same geometry at every reading position.
   Input releases the finite snapshot before subsequent navigation. */
html[data-theme-motion]::view-transition {pointer-events:none;}
html[data-theme-motion]::view-transition-group(root),
html[data-theme-motion]::view-transition-old(root),
html[data-theme-motion]::view-transition-new(root) {animation:none;opacity:1;}
html[data-theme-motion]::view-transition-image-pair(root) {isolation:isolate;}
html[data-theme-motion]::view-transition-old(root) {
  background-color:var(--public-theme-from-bg,var(--bg));mix-blend-mode:normal;z-index:1;
}
html[data-theme-motion]::view-transition-new(root) {
  background-color:var(--public-theme-to-bg,var(--bg));mix-blend-mode:normal;z-index:2;
}

/* One brief I/O registration glitch: only the header ink, never the pillow geometry. */
body.public-page .public-header .public-brand-mark {position:relative;isolation:isolate;overflow:hidden;}
body.public-page .public-header .public-brand-mark::before,
body.public-page .public-header .public-brand-mark::after {
  content:attr(data-brand-ink);position:absolute;inset:0;display:grid;place-items:center;
  pointer-events:none;opacity:0;font:inherit;letter-spacing:inherit;text-transform:inherit;
}
body.public-page .public-header .public-brand-mark::before {
  color:var(--nav-signal,var(--green));clip-path:inset(25% 0 49%);
}
body.public-page .public-header .public-brand-mark::after {
  color:var(--bg);clip-path:inset(54% 0 25%);
}
@media(prefers-reduced-motion:no-preference) {
  body.public-page .public-header .public-brand-mark:is(:hover,:focus-visible)::before {animation:brand-io-upper 480ms steps(1,end) both;}
  body.public-page .public-header .public-brand-mark:is(:hover,:focus-visible)::after {animation:brand-io-lower 480ms steps(1,end) both;}
}
@keyframes brand-io-upper {
  0%,12%,34%,57%,100% {opacity:0;transform:translateX(0);}
  13%,23% {opacity:.95;transform:translateX(3px);}
  24%,33% {opacity:.8;transform:translateX(-2px);}
  58%,67% {opacity:.9;transform:translateX(1px);}
}
@keyframes brand-io-lower {
  0%,18%,42%,68%,100% {opacity:0;transform:translateX(0);}
  19%,30% {opacity:.9;transform:translateX(-3px);}
  31%,41% {opacity:1;transform:translateX(2px);}
  59%,67% {opacity:.85;transform:translateX(-1px);}
}
@media print {
  body.public-page .public-header .public-brand-mark::before,
  body.public-page .public-header .public-brand-mark::after {display:none;}
}

/* Session recovery stays at the result, independent of the Playhub's scroll position. */
body.public-page[data-page-type] .site-agent-recovery.button {
  position:fixed;top:82px;left:max(16px,calc((100vw - 1180px)/2));z-index:85;
  max-width:calc(100vw - 32px);min-height:44px;
}
.ask-answer-detail {margin-block:14px;}
.ask-answer-detail summary {cursor:pointer;text-decoration:underline;text-underline-offset:4px;}
.ask-answer-sources {display:flex;flex-wrap:wrap;gap:8px 16px;margin-block:14px;}
.ask-answer-sources a {color:inherit;text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere;}
@media print {body.public-page[data-page-type] .site-agent-recovery.button {display:none!important;}}
