/* Tetri’s Smile · v41 menu (render_menu.py writes the markup from menu.json)
   Arthur, 2026-11-11: "also this menu could use a signature touch --- meaning beautified and much cleaner."
   Three looks share one structure: .m--smile (the default: a signature lane, a quiet index, the logo's smile drawn once as the
   menu opens), .m--ledger (one screen: each group a single flowing line; the current page ringed, as on his minimal board),
   .m--concierge (a dark side sheet: call, WhatsApp and a request first, then the index as accordions).
   Budget: no backdrop-filter, nothing moves at rest; opening is opacity and transform transitions only (the arc arrives drawn
   and fades in: a stroke drawn frame by frame cost a style recalc and a repaint on every frame of a phone's opening);
   reduced motion (the system's or the T panel's) removes all of it. Every size follows --ts; no serif anywhere. */

/* ------------------------------------------------------------------------------------------------ tokens (Signature) */
.m{
  --m-bg:#f3f2ee;--m-ink:#0b1324;--m-ink2:#2f3b52;--m-ink3:#5d6a80;--m-ln:rgba(11,19,36,.16);--m-ln2:rgba(11,19,36,.08);
  --m-acc:#0b1324;--m-on:#fff;--m-arc:rgba(11,19,36,.22);--m-r:999px;--m-r2:12px;
  --m-font:var(--display,"Outfit","Montserrat",system-ui,sans-serif);--m-lab-font:var(--m-font);
  --m-w-xl:300;--m-w-l:400;--m-w-lab:500;--m-tt:uppercase;--m-ls:.24em;--m-track:-.02em;
  --m-xl:min(calc(clamp(26px,1.05rem + 1.45vw,40px) + (var(--ts, 1) - 1) * min(clamp(26px,1.05rem + 1.45vw,40px), 22px)), var(--ts-cap, 100vw));
  --m-m:min(calc(clamp(19px,1rem + .45vw,24px) * var(--ts, 1)), var(--ts-cap, 100vw));
  --m-l:min(calc(clamp(15px,.84rem + .2vw,16.5px) * var(--ts, 1)), var(--ts-cap, 100vw));
  --m-s:min(calc(13px * var(--ts, 1)), var(--ts-cap, 100vw));
  --m-lab:max(calc(10.5px * var(--ts, 1)), var(--ts-label-min, 0px));
  --m-flow:min(calc(clamp(18px,.95rem + .35vw,22px) * var(--ts, 1)), var(--ts-cap, 100vw));
  --m-ease:cubic-bezier(.2,.7,.2,1);--m-col:clamp(150px,15vw,220px);
  position:fixed;inset:0;z-index:150;display:block;background:var(--m-bg);color:var(--m-ink);font-family:var(--m-font);
  opacity:0;visibility:hidden;transition:opacity .38s var(--m-ease),visibility 0s .38s;
  -webkit-font-smoothing:antialiased;text-align:left
}
.m.is-open{opacity:1;visibility:visible;transition:opacity .45s var(--m-ease)}
html[data-skin="quiet"] .m{--m-bg:#fff;--m-ink2:#3a4357;--m-ink3:#646e80;--m-w-xl:200;--m-w-l:300;--m-w-lab:400;--m-ls:.3em;--m-r:0px;--m-r2:0px;--m-arc:rgba(11,19,36,.2)}
html[data-skin="frost"] .m{--m-bg:#e9eef3;--m-ink:#0a0e14;--m-ink2:#2a3340;--m-ink3:#5a6676;--m-ln:rgba(10,14,20,.16);--m-ln2:rgba(10,14,20,.08);--m-acc:#0f1c2b;--m-arc:rgba(47,95,148,.35);
  --m-lab-font:var(--mono);--m-w-xl:600;--m-w-l:500;--m-w-lab:400;--m-tt:none;--m-ls:0em;--m-track:-.035em;--m-r:0px;--m-r2:0px}
html[data-skin="lumen"] .m{--m-bg:#060a13;--m-ink:#fff;--m-ink2:#e2eaf6;--m-ink3:#a9bddc;--m-ln:rgba(255,255,255,.2);--m-ln2:rgba(255,255,255,.1);--m-acc:#fff;--m-on:#0b1324;--m-arc:rgba(169,189,220,.42);
  --m-w-xl:200;--m-w-l:300;background-image:radial-gradient(90% 60% at 100% 0%,rgba(150,180,230,.16),rgba(150,180,230,0) 62%),radial-gradient(70% 50% at 0% 100%,rgba(150,180,230,.08),rgba(150,180,230,0) 70%)}
html.a11y-contrast .m{--m-ink2:var(--m-ink);--m-ink3:var(--m-ink);--m-ln:currentColor;--m-ln2:rgba(127,127,127,.6)}
html.a11y-darkc .m{filter:invert(1) hue-rotate(180deg)}

/* ------------------------------------------------------------------------------------------------ shared parts */
.m *,.m *::before,.m *::after{box-sizing:border-box}
.m a{color:inherit;text-decoration:none}
.m ul,.m ol{list-style:none;margin:0;padding:0}
.m h2,.m p{margin:0}
.m :focus-visible{outline:2px solid var(--m-ink);outline-offset:3px;border-radius:2px}
.m__sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.m__sheet{position:relative;height:100%;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
.m .m__lab{font:var(--m-w-lab) var(--m-lab)/1.45 var(--m-lab-font);letter-spacing:var(--m-ls);text-transform:var(--m-tt);color:var(--m-ink3)}
.m__top{position:relative;z-index:2;height:76px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.m .m__brand{color:var(--m-ink);min-width:0;flex:0 1 auto;overflow:hidden}
.m .m__brand .wide{white-space:nowrap}
.m__tools{display:flex;align-items:center;flex:none;gap:clamp(8px,2vw,22px)}
.m__lang{display:flex;align-items:center}
.m__lang > *{position:relative;display:grid;place-items:center;min-width:42px;min-height:44px;font:var(--m-w-lab) var(--m-lab)/1 var(--m-lab-font);letter-spacing:.2em;text-indent:.2em;color:var(--m-ink3)}
.m__lang > a:hover{color:var(--m-ink)}
.m__lang-on{color:var(--m-ink)!important}
/* the signature mark of the menu: the logo's smile under what is current */
.m__lang-on::after,.m .is-current > .m__name::after,.m .m__home.is-current::after{content:"";position:absolute;left:50%;bottom:7px;width:12px;height:6px;margin-left:-6px;border:1px solid currentColor;border-top:0;border-radius:0 0 12px 12px}
.m .m__x.menu__x{display:flex;align-items:center;gap:12px;min-height:44px;font:var(--m-w-lab) var(--m-lab)/1 var(--m-lab-font);letter-spacing:var(--m-ls);text-transform:var(--m-tt);color:var(--m-ink)}
.m__xi{position:relative;width:42px;height:42px;border:1px solid var(--m-ln);border-radius:var(--m-r);transition:transform .45s var(--m-ease),border-color .3s}
.m__xi::before,.m__xi::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:1px;margin:-.5px 0 0 -7px;background:currentColor;transform:rotate(45deg)}
.m__xi::after{transform:rotate(-45deg)}
.m__x:hover .m__xi{transform:rotate(90deg);border-color:currentColor}
.m__scroll{position:relative;z-index:1;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--m-ln) transparent}
.m__body{position:relative;min-width:0;padding-top:clamp(12px,3vh,36px);padding-bottom:calc(36px + env(safe-area-inset-bottom,0px));transform:translateY(14px);transition:transform 0s .4s}
.m.is-open .m__body{transform:none;transition:transform .6s var(--m-ease)}
.m__name{font-weight:inherit}
.m__ico{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.m__en{margin-left:.45em;font:var(--m-w-lab) max(calc(9px * var(--ts, 1)), 9px)/1 var(--m-lab-font);letter-spacing:.14em;color:var(--m-ink3);vertical-align:.25em}
.m__group{margin:0}
.m__gh{list-style:none;cursor:default}
.m__gh::-webkit-details-marker{display:none}
.m__gh::marker{content:""}
.m__gh h2.m__gl{margin:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit}
.m__count{font:var(--m-w-lab) var(--m-lab)/1 var(--m-lab-font);letter-spacing:.06em;color:var(--m-ink3)}
.m__gnote{font:var(--m-w-l) var(--m-s)/1.45 var(--m-font);color:var(--m-ink2);margin:2px 0 6px}
.m__row{margin-top:12px;font:var(--m-w-l) var(--m-s)/1.75 var(--m-font);color:var(--m-ink2)}
.m__row .m__lab{display:block;margin-bottom:2px}
.m__row a.m__lab:hover{color:var(--m-ink)}
/* a row wraps between its names, never inside one; each name's dot sits in the gap before it, and the dot of a name that starts a
   line falls outside the list's clip (no line starts with a dot) */
.m__row ul{display:flex;flex-wrap:wrap;column-gap:1.1em;overflow:hidden;margin:-3px -4px;padding:3px 4px}
.m__row li{position:relative;white-space:nowrap}
.m__row li::before{content:"·";position:absolute;left:-.8em;width:.5em;text-align:center;color:var(--m-ink3)}
.m__row a{position:relative}
.m__row a:hover,.m__row a.is-current{color:var(--m-ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.25em}
.m__row .is-current > .m__name::after{display:none}
.m__all{display:inline-flex;align-items:center;gap:.6em;margin-top:12px;min-height:32px;font:var(--m-w-lab) var(--m-lab)/1.3 var(--m-lab-font);letter-spacing:calc(var(--m-ls) * .6);text-transform:var(--m-tt);color:var(--m-ink)}
.m__all::after{content:"";width:18px;height:1px;background:currentColor;transition:width .3s var(--m-ease)}
.m__all:hover::after{width:30px}
.m__all .m__name::after{display:none}
.m__notes{display:grid;gap:10px;font:var(--m-w-l) var(--m-s)/1.55 var(--m-font);color:var(--m-ink2)}
.m__notes li{padding-left:14px;border-left:1px solid var(--m-ln)}
.m__notes .m__more{white-space:nowrap;color:var(--m-ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.25em}
.m__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px 40px;margin-top:clamp(28px,5vh,52px);padding-top:22px;border-top:1px solid var(--m-ln)}
.m__contact{display:flex;flex-wrap:wrap;gap:10px clamp(18px,2.4vw,36px);min-width:0}
.m__c{display:grid;gap:3px;min-height:44px;align-content:center;font:var(--m-w-l) var(--m-s)/1.35 var(--m-font);color:var(--m-ink)}
.m__c .m__lab{font-size:max(calc(9.5px * var(--ts, 1)), var(--ts-label-min, 0px))}
a.m__c:hover .m__v{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.25em}
.m__cta{display:grid;justify-items:end;gap:8px;max-width:340px}
.m__ny{font:var(--m-w-l) max(calc(11px * var(--ts, 1)), 11px)/1.45 var(--m-font);color:var(--m-ink3);text-align:right}
.m__book{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 28px;border:1px solid var(--m-acc);border-radius:var(--m-r);background:var(--m-acc);color:var(--m-on);font:var(--m-w-lab) var(--m-lab)/1 var(--m-lab-font);letter-spacing:calc(var(--m-ls) * .75);text-transform:var(--m-tt);cursor:pointer;transition:background .3s,color .3s}
.m__book:hover{background:transparent;color:var(--m-acc)}
.m__find{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:0;border:0;border-bottom:1px solid var(--m-ln);background:none;color:var(--m-ink);font:inherit;text-align:left;cursor:pointer}
.m__find .m__name{font:var(--m-w-l) var(--m-l)/1.2 var(--m-font)}
.m__find .m__desc{flex:1;min-width:0;font:var(--m-w-l) var(--m-s)/1.3 var(--m-font);color:var(--m-ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m__find:hover{border-bottom-color:var(--m-ink)}
.m__kbd{flex:none;min-width:24px;padding:4px 6px;border:1px solid var(--m-ln);border-radius:min(var(--m-r),5px);font:var(--m-w-lab) var(--m-lab)/1 var(--m-lab-font);color:var(--m-ink3);text-align:center}
.m__home{position:relative;display:inline-flex;align-items:center;min-height:52px;color:var(--m-ink);font:var(--m-w-l) var(--m-l)/1.2 var(--m-font)}
.m__home.is-current::after{bottom:6px;left:50%}
.m__sig h2{margin-bottom:10px}
.m__sigs a{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:16px;align-items:baseline;padding:14px 0 15px;border-top:1px solid var(--m-ln)}
.m__sigs li:last-child a{border-bottom:1px solid var(--m-ln)}
.m__num{grid-row:1 / span 2;font:var(--m-w-lab) var(--m-lab)/1 var(--m-lab-font);letter-spacing:.12em;color:var(--m-ink3);font-variant-numeric:tabular-nums}
html[data-skin="frost"] .m__num::before{content:"/ "}html[data-skin="frost"] .m__num::after{content:" /"}
.m__sigs .m__name{position:relative;font:var(--m-w-xl) var(--m-xl)/1.06 var(--m-font);letter-spacing:var(--m-track);color:var(--m-ink);overflow-wrap:break-word;hyphens:auto}
.m__sigs .m__desc{grid-column:2;margin-top:8px;font:var(--m-w-l) var(--m-s)/1.45 var(--m-font);color:var(--m-ink3)}
.m__sigs a:hover .m__name{color:var(--m-ink2)}
.m__sigs .is-current > .m__name::after{left:-.9em;margin:0;bottom:auto;top:.45em}
.m__list a{position:relative;display:block;color:var(--m-ink2)}
.m__list .m__name{position:relative;display:inline}
.m__list a:hover,.m__list a.is-current{color:var(--m-ink)}
.m__list .is-current > .m__name::after{left:-18px;top:.5em;bottom:auto;margin:0;width:10px;height:5px}
html[lang="ru"] .m__name,html[lang="ru"] .m__gl{overflow-wrap:break-word;hyphens:auto}

/* the arc: the smile of the mark, drawn whole; it fades in as the menu opens (opacity only, on the svg), still afterwards */
.m__arc{position:absolute;z-index:0;pointer-events:none;overflow:visible;fill:none;stroke:var(--m-arc);stroke-width:.7;opacity:0;transition:opacity 0s .4s}
.m.is-open .m__arc{opacity:1;transition:opacity .5s var(--m-ease) .12s}
.m__dot{fill:var(--m-ink);stroke:none;opacity:.75}

/* groups: headings on wide screens; accordions where menu.js adds .m--acc (phones; every width in the concierge) */
.m--acc .m__gh{cursor:pointer}
.m--acc .m__gh{display:flex;align-items:center;gap:12px;min-height:58px;padding:6px 0;border-bottom:1px solid var(--m-ln);font:var(--m-w-xl) var(--m-m)/1.15 var(--m-font);letter-spacing:-.01em;text-transform:none;color:var(--m-ink)}
.m--acc .m__gl{flex:1;min-width:0}
.m--acc .m__gh::after{content:"";flex:none;width:12px;height:12px;background:linear-gradient(currentColor,currentColor) center/100% 1px no-repeat,linear-gradient(currentColor,currentColor) center/1px 100% no-repeat;transition:transform .3s var(--m-ease)}
.m--acc .m__group[open] > .m__gh::after{transform:rotate(45deg)}
.m--acc .m__panel{padding:10px 0 20px}
.m.m--acc .m__list a{display:flex;align-items:center;min-height:44px;padding:0;font:var(--m-w-l) var(--m-l)/1.25 var(--m-font)}
.m--acc .m__list .m__desc{display:none}
.m.m--acc .m__list .is-current > .m__name::after{left:auto;right:-22px;top:.5em}
.m--acc .m__gnote{margin:0 0 6px}
.m--acc .m__row li{display:flex;align-items:center}
.m--acc .m__row a{display:inline-flex;align-items:center;min-height:44px}
.m--acc .m__row a.m__lab{display:flex;align-items:center;min-height:44px;margin-bottom:0}
.m--acc .m__all{min-height:44px}

/* ------------------------------------------------------------------------------------------------ the smile (default) */
.m--smile .m__lead{position:relative;display:grid;align-content:start;gap:clamp(22px,3.6vh,40px)}
.m--smile .m__start{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:end;gap:28px}
.m--smile .m__arc{position:relative;display:block;width:calc(100% + 7vw);max-width:none;height:auto;margin:-6px 0 0 -7vw}
.m--smile .m__find .m__desc{display:none}
.m--smile .m__index{position:relative}
.m--smile .m__list a{padding:5px 0;font:var(--m-w-l) var(--m-l)/1.3 var(--m-font)}
@media (min-width:760px){
  .m--smile .m__index{columns:3 210px;column-gap:clamp(28px,3vw,56px)}
  .m--smile .m__group{break-inside:avoid;padding-bottom:30px}
  .m--smile .m__gh{display:flex;align-items:baseline;gap:10px;padding-bottom:10px;margin-bottom:6px;border-bottom:1px solid var(--m-ln);font:var(--m-w-lab) var(--m-lab)/1.4 var(--m-lab-font);letter-spacing:var(--m-ls);text-transform:var(--m-tt);color:var(--m-ink)}
  /* the description of the name under the pointer (or the keyboard), in one line at the foot of the index */
  .m--smile .m__list .m__desc{display:none}
  .m--smile .m__list a:hover .m__desc,.m--smile .m__list a:focus-visible .m__desc{opacity:1}
  .m--smile .m__list a:hover > .m__name{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.3em;text-decoration-color:var(--m-ln)}
}
@media (min-width:1000px){
  .m--smile .m__body{display:grid;grid-template-columns:minmax(290px,4fr) minmax(0,8.4fr);grid-template-areas:"lead index" "lead foot";column-gap:clamp(40px,5.5vw,104px);align-items:start}
  .m--smile .m__lead{grid-area:lead;position:sticky;top:0}   /* it spans both rows: the foot is in the index's column, so the
     sticky lead never lies over Call, WhatsApp or Request a visit, and the hover description never over the New York line */
  .m--smile .m__index{grid-area:index}
  .m--smile .m__foot{grid-area:foot}
}
@media (min-width:1000px) and (min-height:820px){
  .m--smile .m__list .m__desc{position:fixed;left:calc((100vw - min(1320px,100vw)) / 2 + 24px);bottom:30px;display:block;width:calc((min(1320px,100vw) - 48px) * .29);padding-top:12px;border-top:1px solid var(--m-ln);font:var(--m-w-l) var(--m-l)/1.4 var(--m-font);color:var(--m-ink2);opacity:0;pointer-events:none;transition:opacity .2s}
  .m--smile .m__list .m__desc::before{content:"";display:inline-block;width:14px;height:7px;margin-right:10px;border:1px solid currentColor;border-top:0;border-radius:0 0 14px 14px;vertical-align:.2em}
}
@media (min-width:760px) and (max-width:999px){
  .m--smile .m__body{display:grid;gap:36px}
  .m--smile .m__sigs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:24px}
  .m--smile .m__sigs li:last-child a{border-bottom:0}
  .m--smile .m__arc{width:70%;margin:0 0 0 -4vw}
}
@media (max-width:759px){
  .m--smile .m__body{display:grid;gap:34px}
  .m--smile .m__start{grid-template-columns:auto minmax(0,1fr);gap:10px}
  .m--smile .m__home{justify-content:center;padding:0 18px;border:1px solid var(--m-ln);border-radius:var(--m-r)}
  .m--smile .m__home.is-current::after{bottom:5px}
  .m--smile .m__find{padding:0 16px;border:1px solid var(--m-ln);border-radius:var(--m-r)}
  .m--smile .m__find .m__desc,.m--smile .m__kbd{display:none}
  .m--smile .m__arc{width:calc(100% + 16px);margin:-22px 0 -18px -16px}
  .m--smile .m__foot{margin-top:0}
}

/* ------------------------------------------------------------------------------------------------ the ledger */
.m--ledger .m__lead{display:grid;gap:0}
.m--ledger .m__start{display:grid;grid-template-columns:var(--m-col) minmax(0,1fr);column-gap:32px;align-items:center;padding-bottom:6px}
.m--ledger .m__find .m__name{font:var(--m-w-xl) var(--m-m)/1.2 var(--m-font);letter-spacing:var(--m-track)}
.m--ledger .m__sig{display:grid;grid-template-columns:var(--m-col) minmax(0,1fr);column-gap:32px;align-items:baseline;padding:22px 0 20px;border-bottom:1px solid var(--m-ln)}
.m--ledger .m__sig h2{margin:0}
.m--ledger .m__sigs{display:flex;flex-wrap:wrap;gap:4px 0}
.m--ledger .m__sigs li{white-space:nowrap}
.m--ledger .m__sigs li:not(:last-child)::after{content:"";display:inline-block;width:5px;height:5px;margin:0 .9em;border-radius:50%;background:var(--m-ink3);vertical-align:.35em}
.m--ledger .m__sigs a{display:inline;padding:0;border:0}
.m--ledger .m__sigs li:last-child a{border:0}
.m--ledger .m__list a,.m--ledger .m__sigs a{position:relative}
.m--ledger .m__sigs .m__name{font-size:var(--m-xl)}
.m--ledger .m__group{position:relative;border-bottom:1px solid var(--m-ln2)}
.m--ledger .m__list{display:block}
.m--ledger .m__list li{display:inline;white-space:nowrap}
.m--ledger .m__list li:not(:last-child)::after{content:"";display:inline-block;width:4px;height:4px;margin:0 .85em;border-radius:50%;background:var(--m-ln);vertical-align:.32em}
.m--ledger .m__list a{display:inline-block;max-width:calc(100% - 1.9em);white-space:normal;font:var(--m-w-xl) var(--m-flow)/1.6 var(--m-font);letter-spacing:var(--m-track);color:var(--m-ink)}
.m--ledger .m__list a:hover,.m--ledger .m__list a.is-current{color:var(--m-ink)}
/* the ring: a hairline ellipse around the current page, and around a name under the pointer (his board: "Changing everything") */
.m--ledger :is(.m__list,.m__sigs) a::after{content:"";position:absolute;left:-.5em;right:-.5em;top:.02em;bottom:-.06em;border:1px solid currentColor;border-radius:50%;opacity:0;transform:rotate(-3.5deg) scale(.94);transition:opacity .25s,transform .4s var(--m-ease);pointer-events:none}
.m--ledger :is(.m__list,.m__sigs) a:hover::after,.m--ledger :is(.m__list,.m__sigs) a:focus-visible::after{opacity:.45;transform:rotate(-3.5deg)}
.m--ledger :is(.m__list,.m__sigs) a.is-current::after{opacity:.9;transform:rotate(-3.5deg)}
.m--ledger .is-current > .m__name::after{display:none}
.m--ledger :is(.m__list,.m__sigs) a:focus-visible{outline:0}
.m--ledger .m__notes{display:grid;grid-template-columns:var(--m-col) minmax(0,1fr);column-gap:32px;padding:18px 0;border-bottom:1px solid var(--m-ln2)}
.m--ledger .m__notes li{grid-column:2;border:0;padding:0}
.m--ledger .m__notes::before{content:attr(aria-label);grid-row:1 / span 3;font:var(--m-w-lab) var(--m-lab)/1.45 var(--m-lab-font);letter-spacing:var(--m-ls);text-transform:var(--m-tt);color:var(--m-ink3)}
.m--ledger .m__foot{margin-top:28px}
@media (min-width:760px){
  .m--ledger .m__group{display:block;padding:18px 0 16px calc(var(--m-col) + 32px)}
  .m--ledger .m__gh{position:absolute;left:0;top:26px;width:var(--m-col);display:flex;gap:10px;align-items:baseline;font:var(--m-w-lab) var(--m-lab)/1.45 var(--m-lab-font);letter-spacing:var(--m-ls);text-transform:var(--m-tt);color:var(--m-ink)}
  .m--ledger .m__panel{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:28px}
  .m--ledger .m__list{flex:1 1 100%}
  .m--ledger .m__gnote{flex:1 1 100%;margin:0 0 4px}
  .m--ledger .m__row{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 10px;margin-top:6px}
  .m--ledger .m__row .m__lab{display:inline;margin:0}
  .m--ledger .m__all{margin-top:6px}
}
@media (max-width:759px){
  .m--ledger .m__start{grid-template-columns:auto minmax(0,1fr);gap:10px}
  .m--ledger .m__home{padding:0 18px;border:1px solid var(--m-ln);border-radius:var(--m-r)}
  .m--ledger .m__find{padding:0 16px;border:1px solid var(--m-ln);border-radius:var(--m-r)}
  .m--ledger .m__find .m__name{font-size:var(--m-l)}
  .m--ledger .m__find .m__desc,.m--ledger .m__kbd{display:none}
  .m--ledger .m__sig,.m--ledger .m__notes{grid-template-columns:1fr;row-gap:10px}
  .m--ledger .m__notes::before{grid-row:auto}
  .m--ledger .m__notes li{grid-column:1}
  .m--ledger .m__sigs{display:grid;gap:2px}
  .m--ledger .m__sigs li::after{display:none!important}
  .m--ledger .m__sigs a{display:inline-block;max-width:100%;white-space:normal}
  .m--ledger.m--acc .m__list a{display:inline-block;min-height:0;padding:3px 0;font-size:var(--m-flow);line-height:1.5}
  .m--ledger.m--acc .m__list .is-current > .m__name::after{display:none}
}

/* ------------------------------------------------------------------------------------------------ the concierge */
.m--concierge{--c-bg:#0b1324;--c-ink:#fff;--c-ink2:#d5deea;--c-ink3:#9fb0c8;--c-ln:rgba(255,255,255,.16);--c-ln2:rgba(255,255,255,.08);--c-fill:rgba(255,255,255,.05);
  background:rgba(6,10,19,.5)}
html[data-skin="frost"] .m--concierge{--c-bg:#0f1c2b;--c-ink3:#9fb4c9}
html[data-skin="lumen"] .m--concierge{--c-bg:#060a13;background-image:none}
.m--concierge .m__sheet{position:absolute;top:0;right:0;bottom:0;width:min(560px,100%);overflow:hidden;
  --m-bg:var(--c-bg);--m-ink:var(--c-ink);--m-ink2:var(--c-ink2);--m-ink3:var(--c-ink3);--m-ln:var(--c-ln);--m-ln2:var(--c-ln2);--m-acc:#fff;--m-on:#0b1324;
  background:var(--c-bg) radial-gradient(120% 50% at 100% 0%,rgba(150,180,230,.2),rgba(150,180,230,0) 62%) no-repeat;color:var(--m-ink);
  box-shadow:-28px 0 80px rgba(0,0,0,.28);transform:translateX(36px);transition:transform 0s .4s}
.m--concierge.is-open .m__sheet{transform:none;transition:transform .55s var(--m-ease)}
.m--concierge .wrap{width:100%;padding-left:max(28px,env(safe-area-inset-left,0px));padding-right:max(28px,env(safe-area-inset-right,0px))}
.m--concierge .m__lead{display:grid;gap:22px}
.m--concierge .m__quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,96px),1fr));gap:8px}
.m--concierge .m__q{display:grid;justify-items:center;align-content:center;gap:8px;min-width:0;min-height:76px;padding:10px 6px;overflow-wrap:anywhere;border:1px solid var(--m-ln);border-radius:var(--m-r2);background:var(--c-fill);color:var(--m-ink);font:var(--m-w-lab) var(--m-lab)/1.2 var(--m-lab-font);letter-spacing:calc(var(--m-ls) * .5);text-transform:var(--m-tt);text-align:center;cursor:pointer;transition:background .3s,border-color .3s}
.m--concierge .m__q:hover{border-color:rgba(255,255,255,.5)}
.m--concierge .m__q--book{background:#fff;border-color:#fff;color:#0b1324}
.m--concierge .m__q--book:hover{background:transparent;color:#fff}
.m--concierge .m__q .m__ico{width:20px;height:20px}
.m--concierge .m__start{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.m--concierge .m__find{order:-1;min-height:52px;padding:0 18px;border:1px solid var(--m-ln);border-radius:var(--m-r);background:var(--c-fill)}
.m--concierge .m__find .m__desc{display:none}
.m--concierge .m__home{padding:0 6px}
.m--concierge .m__sigs a{padding:12px 0 13px}
.m--concierge .m__sigs .m__name{font-size:var(--m-m);font-weight:var(--m-w-l)}
.m--concierge .m__index{margin-top:18px}
.m--concierge .m__notes{margin-top:26px}
.m--concierge .m__foot{display:grid;justify-content:stretch;gap:16px}
.m--concierge .m__contact{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 20px}
.m--concierge .m__contact [data-c="address"],.m--concierge .m__contact [data-c="email"]{grid-column:1 / -1}
.m--concierge .m__cta{justify-items:start;max-width:none}
.m--concierge .m__cta .m__book{display:none}
.m--concierge .m__ny{text-align:left}
.m--concierge .m__gh .m__count{margin-left:auto}
html[data-skin="quiet"] .m--concierge .m__sheet{--m-r:0px;--m-r2:0px}

/* ------------------------------------------------------------------------------------------------ phones, large text, zoom */
@media (max-width:759px){
  .m__top{height:68px}
  .m__x > span{display:none}
  .m__tools{gap:6px}
  .m__foot{display:grid;gap:14px}
  .m__contact{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 18px}
  .m__contact [data-c="address"],.m__contact [data-c="email"]{grid-column:1 / -1}
  .m__cta{justify-items:stretch;max-width:none}
  .m__book{width:100%}
  .m__ny{text-align:left}
}
@media (max-width:380px){.m .m__brand .wide{display:none}}
html[data-ts-size="xl"] .m{--m-col:clamp(140px,22vw,260px)}
html[data-ts-size="xl"] .m--smile .m__index{columns:2 260px}
@media (max-width:640px){html[data-ts-size="xl"] .m .m__brand .wide{display:none}}
html:is([data-a11y-zoom="2"],[data-a11y-zoom="3"]) .m .m__brand .wide{display:none}
html:is([data-ts-size="l"],[data-ts-size="xl"]) .m :is(.m__name,.m__gl,.m__desc,.m__notes,.m__v){overflow-wrap:break-word;hyphens:auto}

/* ------------------------------------------------------------------------------------------------ reduced motion */
.reduced .m,.reduced .m *,.reduced .m *::before,.reduced .m *::after{transition:none!important;animation:none!important}
.reduced .m .m__body,.reduced .m--concierge .m__sheet{transform:none}
@media (prefers-reduced-motion:reduce){
  .m,.m *,.m *::before,.m *::after{transition:none!important;animation:none!important}
  .m .m__body,.m--concierge .m__sheet{transform:none}
}
@media print{.m{display:none!important}}

/* ------------------------------------------------------------------------------------------------ v43 motion: Veil
   Arthur, 2026-11-12: "when the menu opens, the items should blur, fade and fly in, together with the accordion; the same in
   reverse on close." The pattern is specified in v43/MOTION.md (motion pattern "Veil"), so any other list, menu or accordion
   can use the same tokens and the same data-mv marker. Opacity, transform and filter only; nothing runs at rest (the open
   state is filter:none / transform:none, so no layer, no containing block); reduced motion keeps the end states, no motion. */
.m{
  --mv-in:.64s;--mv-out:.3s;--mv-step:34ms;--mv-step-out:16ms;--mv-lead:90ms;--mv-y:22px;--mv-blur:8px;
  --mv-ease-in:cubic-bezier(.16,1,.3,1);--mv-ease-out:cubic-bezier(.7,0,.84,0);
  /* the sheet waits for its items before it fades on close (reverse order: items out, then the ground) */
  transition:opacity .34s var(--m-ease) .24s,visibility 0s .6s
}
.m.is-open{transition:opacity .45s var(--m-ease)}
.m [data-mv]{
  opacity:0;transform:translate3d(0,var(--mv-y),0);filter:blur(var(--mv-blur));
  transition:opacity var(--mv-out) var(--mv-ease-out) calc(var(--mv-r, 0) * var(--mv-step-out)),
             transform var(--mv-out) var(--mv-ease-out) calc(var(--mv-r, 0) * var(--mv-step-out)),
             filter var(--mv-out) var(--mv-ease-out) calc(var(--mv-r, 0) * var(--mv-step-out))
}
.m.is-open [data-mv]{
  opacity:1;transform:none;filter:none;
  transition:opacity var(--mv-in) var(--mv-ease-in) calc(var(--mv-lead) + var(--mv-i, 0) * var(--mv-step)),
             transform var(--mv-in) var(--mv-ease-in) calc(var(--mv-lead) + var(--mv-i, 0) * var(--mv-step)),
             filter var(--mv-in) var(--mv-ease-in) calc(var(--mv-lead) + var(--mv-i, 0) * var(--mv-step))
}
/* an accordion group opening or folding inside the open menu: menu.js plays the same Veil on its items (Web Animations,
   timed from the tokens above) while the panel's height eases; overflow is clipped only while it moves */
.m .m__group.is-folding > .m__panel{overflow:hidden}
.reduced .m [data-mv]{opacity:1;transform:none;filter:none}
.reduced .m:not(.is-open) [data-mv]{opacity:0}
@media (prefers-reduced-motion:reduce){
  .m [data-mv]{transform:none;filter:none}
  .m.is-open [data-mv]{opacity:1}
}
