/* Final UX: shared reading and control states. Existing ink/material tokens
   remain the authority; photographs, scene colours and island owners are intact. */
:root {
  --yl-control-clearance:12px;
  --yl-ui-busy-surface:var(--mist,#eaf0ee);
  --yl-ui-busy-edge:var(--yl-ui-focus-edge,#087d93);
  --yl-ui-disabled-edge:var(--yl-ui-disabled-ink,#566c6d);
}
/* The existing header supplies its measured height. Native focus/anchor scroll
   leaves clearance without introducing another fixed layer or scroll handler. */
html {
  scroll-padding-block-start:calc(var(--continuum-header-height,110px) + var(--yl-control-clearance));
  scroll-padding-block-end:calc(24px + env(safe-area-inset-bottom,0px));
}
body :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible {
  outline:3px solid var(--yl-ui-focus-edge,#087d93);
  outline-offset:3px;
}
/* Pair the foreground and surface in the same frame. The legacy focus gradient
   alone left low-contrast rings and could leave a scene's pale text on pale glass. */
body :is(a.button,a.text-link,a.yl-anniversary-register,.ru-main-cta a,.ru-links a,.rn-links a,.ridge-arrival-links a,[data-service-link],
  .menu-trigger,.nav-search,.icon-button,.studio-close,.studio-submit,
  .search-topic,.nav-sub a,main summary):focus-visible:not(:disabled) {
  color:var(--yl-ui-focus-ink,#123f49);
  background:var(--yl-ui-focus-surface,#eafaff);
  border-color:var(--yl-ui-focus-edge,#087d93);
  outline:3px solid var(--yl-ui-focus-edge,#087d93);
  outline-offset:3px;
  box-shadow:inset 0 1px 0 var(--surface,#fff),0 0 0 1px var(--surface,#fff);
  transition-property:transform;
  filter:none;
}
body :is(a.button,a.text-link,a.yl-anniversary-register,.ru-main-cta a,.ru-links a,.rn-links a,.ridge-arrival-links a,[data-service-link],
  .menu-trigger,.nav-search,.icon-button,.studio-close,.studio-submit,
  .search-topic):focus-visible :is(svg,[aria-hidden="true"]) { color:inherit; }
body :is(.button,.text-link,.ridge-arrival-links a,[data-service-link],
  .menu-trigger,.nav-search,.icon-button,.studio-close,.studio-submit,.search-topic) {
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
body .button {
  min-inline-size:48px;
  min-block-size:48px;
  max-inline-size:100%;
  white-space:normal;
  overflow-wrap:anywhere;
}
main details > summary {
  min-block-size:44px;
  padding-block:.4rem;
  cursor:pointer;
}
/* One contour owns the press: preserve brand material and hit geometry. */
body :is(a[href],button,summary,input:is([type="button"],[type="submit"],[type="reset"]),[role="button"],[role="tab"]) {
 touch-action:manipulation;-webkit-tap-highlight-color:transparent;
 transition-property:filter,box-shadow,background-color,border-color,color,transform,scale,translate;
 transition-duration:var(--motion-fast,180ms);
 transition-timing-function:var(--ease-standard,cubic-bezier(.22,1,.36,1));
}
body :is(a[href],button,summary,input:is([type="button"],[type="submit"],[type="reset"]),[role="button"],[role="tab"]):is(:active,.is-glass-pressed):not(:disabled):not([aria-disabled="true"]) {
 box-shadow:inset 0 2px 6px #102b3833,inset 0 -1px 1px #ffffff33;
 filter:brightness(.94) saturate(1.04);
 transform:none;scale:1;translate:none;
 transition-duration:var(--motion-instant,90ms);
}
body .is-control-contact-host {position:relative}
body .glass-reflection {
 position:absolute;display:block;pointer-events:none;overflow:hidden;inset:0;border-radius:inherit;scale:1!important;translate:none!important;transform:none;box-shadow:none;
 background:radial-gradient(circle at var(--touch-x,50%) var(--touch-y,50%),#ffffff20,transparent 70%);
 animation:yl-control-contact 280ms var(--ease-standard,cubic-bezier(.22,1,.36,1)) both;
}
body .glass-reflection::after {content:none}
@keyframes yl-control-contact {from{opacity:.8}to{opacity:0}}
@media(prefers-reduced-motion:reduce){
 body :is(a[href],button,summary,input:is([type="button"],[type="submit"],[type="reset"]),[role="button"],[role="tab"]){transition:none}
 body .glass-reflection{animation:none}
}
@media(forced-colors:active){
 body :is(a[href],button,summary,input:is([type="button"],[type="submit"],[type="reset"]),[role="button"],[role="tab"]):is(:active,.is-glass-pressed){filter:none;box-shadow:none;border-color:Highlight;outline:2px solid Highlight;outline-offset:-3px}
 body :is(a[href],button,summary,input:is([type="button"],[type="submit"],[type="reset"]),[role="button"],[role="tab"]):focus-visible{outline:3px solid Highlight;outline-offset:3px}
 body .glass-reflection{display:none}
}
/* Tactile return spring: CSS provides immediate contact; the existing delegate owns release.
   Keep the hit target stationary, including its hover state, until native activation completes. */
:root{--yl-tactile-return:280ms;--yl-tactile-ease:cubic-bezier(.2,1.45,.35,1)}
body :is(.button,.menu-trigger,.nav-search,.icon-button,.studio-submit,.studio-close,.search-topic,.yl-act):is(:hover,:active,.is-glass-pressed){transform:none;scale:1;translate:none}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) and (forced-colors:none){
 html:not([data-yl-motion="off"]):not([data-yl-tactile="off"]) body:not([data-ann-motion="off"]) :is(.button,.menu-trigger,.nav-search,.icon-button,.studio-submit,.studio-close,.search-topic,.yl-act):hover:not(:active):not(.is-glass-pressed):not(:disabled):not([aria-disabled="true"]):not([aria-busy="true"]){
  box-shadow:inset 0 1px 0 #ffffffa8,0 4px 14px #102b3826;
 }
}
/* Disable spatial animation without disabling native controls or their focus rings. */
html:is([data-yl-motion="off"],[data-yl-tactile="off"]) body .glass-reflection,
body[data-ann-motion="off"] .glass-reflection{display:none}
html:is([data-yl-motion="off"],[data-yl-tactile="off"]) body :is(a[href],button,summary,input,[role="button"],[role="tab"]),
body[data-ann-motion="off"] :is(a[href],button,summary,input,[role="button"],[role="tab"]){scale:1!important;translate:none!important;transition:none!important}
/* Existing native dialog owns focus/close; entry never defers an operation. */
@media(prefers-reduced-motion:no-preference) and (forced-colors:none){
 html:not([data-yl-motion="off"]):not([data-yl-tactile="off"]) #search-studio[open] .studio-shell{
  transform-origin:50% 12%;animation:yl-search-tactile-enter 280ms cubic-bezier(.2,1.3,.35,1) both;
 }
}
@keyframes yl-search-tactile-enter{from{opacity:.5;translate:0 8px;scale:.985}to{opacity:1;translate:0 0;scale:1}}
@media(prefers-reduced-motion:reduce),(forced-colors:active){
 body :is(a[href],button,summary,input,[role="button"],[role="tab"]){scale:1!important;translate:none!important;transition:none!important}
 #search-studio[open] .studio-shell{animation:none}
}
html:is([data-yl-motion="off"],[data-yl-tactile="off"]) #search-studio[open] .studio-shell{animation:none}


body .button[aria-busy="true"] {
  color:var(--yl-ui-ink,#173e42);
  background:var(--yl-ui-busy-surface);
  border-color:var(--yl-ui-busy-edge);
  border-style:dashed;
  box-shadow:none;
  cursor:progress;
}
body .button:is(:disabled,[aria-disabled="true"]) {
  color:var(--yl-ui-disabled-ink,#566c6d);
  background:var(--yl-ui-disabled-surface,#e4eae7);
  border-color:var(--yl-ui-disabled-edge);
  box-shadow:none;
  opacity:1;
  transform:none;
  filter:none;
  cursor:not-allowed;
}
body :is(input,select,textarea)[aria-invalid="true"] {
  border-color:var(--yl-ui-error-edge,#a43c32);
  border-style:solid;
  box-shadow:inset 3px 0 var(--yl-ui-error-edge,#a43c32);
}
@media (max-width:767px) {
  .site-header.continuum-header { padding-block-start:env(safe-area-inset-top,0px); }
  dialog.mobile-menu {
    inset-block-start:max(12px,env(safe-area-inset-top,0px));
    inset-inline-start:max(12px,env(safe-area-inset-left,0px));
    inset-inline-end:max(12px,env(safe-area-inset-right,0px));
    max-block-size:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));
    padding-block-end:max(24px,env(safe-area-inset-bottom,0px));
    scroll-padding-block:16px;
  }
  .studio-shell { padding-block-end:max(18px,env(safe-area-inset-bottom,0px)); }
  .actions > :is(a,button) { min-inline-size:0;overflow-wrap:anywhere; }
}
/* Opted-in high contrast keeps optical edges but removes the dependency on
   backdrop colour. The user's OS palette remains authoritative in forced colours. */
@media (prefers-contrast:more) {
  .site-header.glass,.mobile-menu.glass,.yl-ui-surface {
    color:var(--ink,#102b38);
    background:var(--paper,#f5f7f5);
    border-color:var(--ink,#102b38);
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
  }
  body .button.secondary { color:var(--ink,#102b38);background:var(--paper,#f5f7f5);border-color:var(--ink,#102b38); }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  body :is(.button,.text-link,.ridge-arrival-links a,[data-service-link],
    .menu-trigger,.nav-search,.icon-button,.studio-close,.studio-submit,.search-topic) {
    transition:none;
  }
  body :is(.button,.text-link,.ridge-arrival-links a,[data-service-link]):is(:hover,:active) { transform:none; }
  body :is(.button,.menu-trigger,.nav-search,.icon-button,.studio-close,.studio-submit,.search-topic) > :is(span,svg),
  body :is(.button,.menu-trigger,.nav-search,.icon-button,.studio-close,.studio-submit,.search-topic):is(:active,.is-glass-pressed):not(:disabled):not([aria-disabled="true"]) > :is(span,svg) {
    scale:1;translate:none;transition:none!important;
  }
}
@media (forced-colors:active) {
  body :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible {
    outline:3px solid Highlight!important;
    outline-offset:3px;
    box-shadow:none;
  }
  body :is(a.button,a.text-link,a.yl-anniversary-register,.ru-main-cta a,.ru-links a,.rn-links a,.ridge-arrival-links a,[data-service-link],
    .menu-trigger,.nav-search,.icon-button,.studio-close,.studio-submit,
    .search-topic,main summary):is(:focus-visible,:active):not(:disabled):not([aria-disabled="true"]) {
    color:ButtonText;
    background:ButtonFace;
    border-color:ButtonText;
    outline-color:Highlight;
    box-shadow:none;
    filter:none;
  }
  body .button:is(:disabled,[aria-disabled="true"]) { color:GrayText;border-color:GrayText;background:Canvas; }
  body .button[aria-busy="true"] { color:ButtonText;background:ButtonFace;border-color:ButtonText;border-style:dashed; }
  body :is(input,select,textarea)[aria-invalid="true"] { border:2px dashed CanvasText;box-shadow:none; }
}

/* Touch uses the rounded active material; the browser rectangle must not overpaint it. Keyboard focus remains visible. */
body :is(a,button,summary,label,[role="button"],[role="tab"],[tabindex]){-webkit-tap-highlight-color:transparent}

/* Primary registration stays comfortably tappable across languages. */
body .yl-anniversary-notice .yl-anniversary-register{min-block-size:48px}

/* Focus stays a quiet, concentric edge; activation owns the contact light. */
body .site-header :is(a,summary,button):focus-visible::after{content:none}

/* Interaction feedback v4: real state only; bounded motion is controller-owned. */
[role="status"][data-yl-feedback]{min-block-size:1.6em;line-height:1.6;overflow-wrap:anywhere}
.yl-feedback-mark{display:inline-grid;place-items:center;inline-size:1.15em;block-size:1.15em;margin-inline-end:.45em;border:1px solid currentColor;border-radius:50%;font-size:.85em;font-weight:750;line-height:1;vertical-align:baseline;flex:none}
.yl-feedback-mark::before{content:attr(data-symbol)}
[data-yl-feedback="loading"]>.yl-feedback-mark,[data-yl-feedback="preparing"]>.yl-feedback-mark,[data-yl-feedback="running"]>.yl-feedback-mark,[data-yl-feedback="streaming"]>.yl-feedback-mark{border-style:dotted}
[data-yl-feedback="error"]>.yl-feedback-mark{border-radius:4px;border-width:2px}
[data-yl-feedback="cancelled"]>.yl-feedback-mark,[data-yl-feedback="empty"]>.yl-feedback-mark{border-style:dashed}
.search-results[aria-busy="true"]{cursor:progress}
@media(forced-colors:active){.yl-feedback-mark{color:CanvasText;border-color:CanvasText;forced-color-adjust:auto}}
/* Interaction feedback v4: end. */
/* Essential text paint v1: keep live copy above decorative sweeps; no text hiding or persistent GPU promotion. */
.site-header.continuum-header .mobile-tools .menu-trigger .menu-label{position:relative;z-index:2;width:auto;height:auto;clip-path:none;overflow:visible;color:inherit;-webkit-text-fill-color:currentColor}
/* Essential dates and registration never depend on a reveal observer. */
html:not([data-yl-motion="off"]) main .yl-anniversary-notice[data-yl-anniversary]{opacity:1;transform:none;translate:none;filter:none;content-visibility:visible;contain-intrinsic-size:none;transition:none}
.yl-anniversary-notice>.yl-anniversary-date,.yl-anniversary-notice>.yl-anniversary-title,.yl-anniversary-notice .yl-anniversary-copy{position:relative;z-index:2;-webkit-text-fill-color:currentColor}
.yl-anniversary-notice .yl-anniversary-register,.yl-anniversary-notice .yl-anniversary-details{position:relative;isolation:isolate}
.yl-anniversary-notice .yl-anniversary-register{background:transparent}
.yl-anniversary-notice .yl-anniversary-register::before{content:"";position:absolute;inset:0;border-radius:inherit;background:#efcf8f;z-index:0;pointer-events:none}
.yl-anniversary-notice .yl-anniversary-register:hover{background:transparent}
.yl-anniversary-notice .yl-anniversary-register:hover::before{background:#ffe0a6}
.yl-anniversary-notice .yl-finish-foil{z-index:1}
.yl-anniversary-notice .yl-anniversary-copy{display:inline-flex;align-items:center;gap:6px;min-width:0}
@media(prefers-reduced-motion:no-preference){.yl-anniversary-notice .yl-anniversary-register::before{transition:background-color .16s ease}}
@media(forced-colors:active){.yl-anniversary-notice .yl-anniversary-register::before{background:ButtonFace}.yl-anniversary-notice .yl-anniversary-copy{color:LinkText}.yl-anniversary-notice .yl-finish-foil{display:none}}
/* Essential text paint v1: end. */
/* Coordinated menu motion: CSS ownership. */
/* Keep glass, blur, rounded corners, shine and child entry. One owner per animated surface. */
html body dialog#mobile-menu[data-yl-menu-motion="managed"][open]{
 animation:none;transition:none;transform:none;translate:none;scale:none;opacity:1;
 transform-origin:var(--menu-origin,top right);
}
/* Finishes animates the existing .nav-item container. Its labels must not run a second entry. */
html body dialog#mobile-menu[data-yl-menu-motion="managed"][open] .nav-item > a,
html body dialog#mobile-menu[data-yl-menu-motion="managed"][open] .nav-item > details.nav-group > summary{
 animation:none;
}
/* The decorative glass glint remains in normal mode, and honours the same opt-outs. */
html:is([data-yl-motion="off"],[data-yl-menu-motion="off"]) body dialog#mobile-menu[data-yl-menu-motion="managed"][open]::before,
html:is([data-yl-motion="off"],[data-yl-menu-motion="off"]) body dialog#mobile-menu[data-yl-menu-motion="managed"][open]::after,
html:is([data-yl-motion="off"],[data-yl-menu-motion="off"]) body dialog#mobile-menu[data-yl-menu-motion="managed"][open]::backdrop{animation:none;transition:none}
@media (prefers-reduced-motion:reduce),(forced-colors:active){
 html body dialog#mobile-menu[data-yl-menu-motion="managed"][open]::before,
 html body dialog#mobile-menu[data-yl-menu-motion="managed"][open]::after,
 html body dialog#mobile-menu[data-yl-menu-motion="managed"][open]::backdrop{animation:none;transition:none}
}
/* Coordinated menu motion: CSS ownership end. */
