/* =====================================================================
   HOME PAGE
   light (warm paper) + charcoal dark mode, switched by the pull cord
   ===================================================================== */
:root{
  --background:#E8E4E0; --foreground:#1A1818; --ink:#1A1818;
  --muted:#857878; --line:#D5CDCA;
  --surface:#DED8D4; --surface-2:#D3CBC8;
  --accent:#6B5C5C; --accent-from:#C4B0B0;
  --hero-from:#EEEAE6; --hero-mid:#E8E4E0; --hero-to:#D8CDCA;
  --radius-card:2rem; --radius-card-sm:1.25rem; --radius-control:.875rem;
  --container-shell:88rem;
  --font:'Onest',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --e-line:cubic-bezier(.215,.61,.355,1);
  --e-spring:cubic-bezier(.22,1,.36,1);
  --e-soft:cubic-bezier(.16,1,.3,1);
  --e-snap:cubic-bezier(.2,.8,.2,1);
  --bar-h:3.5rem;
  --gut-lg:5.5rem;
  --fg-rgb:26,24,24;
  --chip-bg:rgba(242,238,235,.5); --chip-bg-h:rgba(242,238,235,.85); --chip-line:rgba(196,176,176,.45);
  --btn-bg:#1A1818; --btn-fg:#E8E4E0; --btn-badge-bg:#E8E4E0; --btn-badge-fg:#1A1818;
  --outline-h:rgba(196,176,176,.18);
  --vig:rgba(240,236,232,.35);
  --panel:#F0ECE9; --field:rgba(196,176,176,.12); --scrim:rgba(var(--fg-rgb),.3);
  --cord-shadow:.2;
  /* the wall of doors */
  --wall:#DAD4CF; --wall-hi:#E4DFDB; --casing:#F2EFEC; --base:#EAE6E2;
  --paint:#1A1818; --lamp:rgba(255,250,242,.9);
  --room:#FBFAF8; --room-sh:rgba(26,24,24,.1); --rim:rgba(255,255,255,.95); --lift:rgba(26,24,24,.3);
  color-scheme:light;
}
html[data-mode="dark"]{
  --background:#1A1818; --foreground:#E8E4E0; --fg-rgb:232,228,224;
  --line:rgba(196,176,176,.16); --surface:#252121; --surface-2:#302A2A;
  --chip-bg:rgba(196,176,176,.06); --chip-bg-h:rgba(196,176,176,.12); --chip-line:rgba(196,176,176,.16);
  --btn-bg:#E8E4E0; --btn-fg:#1A1818; --btn-badge-bg:#1A1818; --btn-badge-fg:#E8E4E0;
  --outline-h:rgba(196,176,176,.08);
  --vig:rgba(0,0,0,.22);
  --panel:#221F1F; --field:rgba(196,176,176,.06); --scrim:rgba(0,0,0,.55);
  --cord-shadow:.55;
  --wall:#1F1C1C; --wall-hi:#262222; --casing:#3A3434; --base:#2F2A2A;
  --paint:#E8E4E0; --lamp:rgba(232,214,210,.06);
  --room:#050505; --room-sh:rgba(0,0,0,.85); --rim:rgba(214,196,196,.22); --lift:rgba(0,0,0,.7);
  color-scheme:dark;
}
/* the mode switch is one crossfade of the whole page */
::view-transition-old(root),::view-transition-new(root){animation-duration:.5s;animation-timing-function:cubic-bezier(.4,0,.2,1)}
.cord{view-transition-name:cord}
#cal{view-transition-name:cal}
::view-transition-old(cal),::view-transition-old(cord){display:none}
::view-transition-new(cal),::view-transition-new(cord){animation:none}

*{box-sizing:border-box;margin:0;padding:0}
html{overscroll-behavior-y:none;scrollbar-width:none;font-size:16px;-webkit-font-smoothing:antialiased;background:#1A1818;overflow-x:clip}
html[data-mode="dark"]{background:#0F0E0E}
html::-webkit-scrollbar,body::-webkit-scrollbar{display:none;width:0;height:0}
body{background:var(--background);color:var(--foreground);font-family:var(--font);overflow-x:clip}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
ul,ol{list-style:none}
img{display:block;max-width:none}
svg{display:block;width:1em;height:1em;flex:none}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tnum{font-variant-numeric:tabular-nums}

/* ---------- the whole layout scales with the window ---------- */
@media (max-width:1920px){html{font-size:.833333vw}}
@media (max-width:1440px){html{font-size:1.111111vw}}
@media (max-width:1024px){html{font-size:1.5625vw}}
@media (max-width:640px){html{font-size:4.444444vw}}

.shell{max-width:var(--container-shell);margin-inline:auto;padding-inline:1.25rem;width:100%}
@media (min-width:640px){.shell{padding-inline:2rem}}
@media (min-width:1024px){.shell{padding-inline:var(--gut-lg)}}

.skip{position:absolute;left:-9999px;top:auto}
.skip:focus{position:fixed;left:1rem;top:1rem;z-index:130;min-height:44px;display:inline-flex;align-items:center;border-radius:var(--radius-control);background:var(--ink);padding:.5rem 1rem;font-size:.875rem;color:#fff}

/* ---------- entrance (plays once the loader opens) ---------- */
.rv{opacity:0;transform:var(--from,translateY(10px));transition:opacity .8s var(--ease,var(--e-soft)) var(--d,0ms),transform .8s var(--ease,var(--e-soft)) var(--d,0ms)}
body.ready .rv{opacity:var(--to-o,1);transform:none}
.line{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
.line>span{display:block;transform:translateY(100%);opacity:0;transition:transform .9s var(--e-line) var(--d,0ms),opacity .9s var(--e-line) var(--d,0ms)}
body.ready .line>span{transform:none;opacity:1}

/* ---------- loader: the doors' colours stack up, one per service, then slide away ---------- */
.loader{position:fixed;inset:0;z-index:120;overflow:hidden;color:#E8E4E0;--p:0;font-family:var(--font)}
.ld__bg{position:absolute;inset:0;transition:transform .85s cubic-bezier(.76,0,.24,1);
  background:radial-gradient(38% 55% at 0% 72%,rgba(164,85,44,.26),transparent 70%),radial-gradient(40% 58% at 100% 70%,rgba(196,176,176,.16),transparent 72%),
  radial-gradient(70% 60% at 50% 0%,rgba(107,92,92,.3),transparent 70%),#0D0C0C}
.loader.out .ld__bg{transform:translateY(-100%)}
.ld__stack{--w:min(76vw,26rem);--h:calc(var(--w) * .27);--step:calc(var(--h) * .6);position:absolute;left:50%;top:47%;width:var(--w);
  height:calc(var(--h) + (var(--n,6) - 1) * var(--step));translate:-50% -50%}
@media (max-width:639.98px){.ld__stack{--w:min(78vw,20rem)}}
@media (max-height:700px){.ld__stack{--w:min(60vw,21rem)}}
.ld__pill{position:absolute;left:0;top:calc(var(--k) * var(--step));width:100%;height:var(--h);border-radius:999px;z-index:var(--k);
  display:flex;align-items:flex-start;padding:calc(var(--h) * .2) 0 0 calc(var(--w) * .16);font-size:max(11px,calc(var(--w) * .036));font-weight:500;letter-spacing:.02em;
  background:var(--c);
  background:linear-gradient(180deg,color-mix(in srgb,var(--c) 88%,#fff) 0%,var(--c) 22%,var(--c) 70%,color-mix(in srgb,var(--c) 82%,#000) 100%);color:var(--t);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 -1px 0 rgba(0,0,0,.25),0 calc(var(--h) * -.18) calc(var(--h) * .35) calc(var(--h) * -.12) rgba(0,0,0,.55);
  opacity:0;transform:translateY(-1.6rem) scale(.96);transition:opacity .45s ease,transform .75s cubic-bezier(.16,1,.3,1)}
.ld__pill.on{opacity:1;transform:none}
.ld__pill span{opacity:.82}
.loader.out .ld__pill{transition:transform .8s cubic-bezier(.7,0,.25,1) calc(var(--k) * 45ms),opacity .5s ease calc(.25s + var(--k) * 45ms);opacity:0;
  transform:translateX(calc(var(--dir) * 115vw)) rotate(calc(var(--dir) * 4deg))}
.ld__hud{position:absolute;inset:0;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(1.25rem,4vw,3rem);transition:opacity .35s ease}
.loader.out .ld__hud{opacity:0}
.ld__top{display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;font-weight:500;color:rgba(232,228,224,.7)}
.ld__top b{font-weight:600;color:#E8E4E0}
.ld__bot{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem}
.ld__num{font-size:clamp(3.5rem,9vw,7.5rem);font-weight:700;line-height:.85;letter-spacing:-.05em;font-variant-numeric:tabular-nums;color:#E8E4E0}
.ld__num small{display:block;margin-bottom:.9rem;font-family:var(--mono);font-size:.6875rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:rgba(232,228,224,.62)}
.ld__bar{width:min(30vw,14rem);height:2px;border-radius:2px;background:rgba(232,228,224,.14);overflow:hidden;margin-bottom:.5rem}
.ld__bar i{display:block;height:100%;background:linear-gradient(90deg,#6B5C5C,#C4B0B0,#D6B26E);transform-origin:0 50%;transform:scaleX(var(--p))}
@media (max-width:639.98px){.ld__top span:last-child{display:none}.ld__bar{width:34vw}}
@media (prefers-reduced-motion:reduce){.ld__pill{transform:none;transition:opacity .3s ease}.loader.out .ld__pill{transform:none}.ld__bg{transition:opacity .4s ease}.loader.out .ld__bg{transform:none;opacity:0}}

/* ---------- header ---------- */
.hdr{position:fixed;inset-inline:0;top:0;z-index:50;transition:background .35s ease,box-shadow .35s ease,opacity .35s ease,translate .45s var(--e-soft);--from:translateY(-14px);--d:150ms;--ease:var(--e-spring)}
.hdr.stuck{background:var(--background);box-shadow:0 1px 0 rgba(var(--fg-rgb),.08)}
.hdr.stuck .hdr__in{padding-block:.85rem}
.hdr.away{opacity:0;translate:0 -100%;pointer-events:none}
.hdr__in{transition:padding .35s ease;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-block:1.25rem}
@media (min-width:640px){.hdr__in{padding-block:1.5rem}}
.brand{display:flex;align-items:center;gap:.5rem;font-size:1.375rem;font-weight:600;letter-spacing:-.01em}
.brand svg{font-size:1.5rem;color:var(--accent)}
.hdr nav{flex:1;min-width:0}
.nav{display:none}
@media (min-width:1200px){.nav{display:flex;gap:1rem;font-size:.95rem;white-space:nowrap}.menu-btn{display:none}}
@media (max-width:1199.98px){.hdr nav{display:none}.hdr__right{flex:1;justify-content:space-between}.menu-btn{order:-1}}
.nav button{display:block}
.nav button>span{display:inline-flex;align-items:center;gap:.25rem;opacity:.8}
/* "More" in the header: the services past the doors in view (like the wall's "3 more doors") */
.more{position:relative}
.more__chev{width:.7em;height:.7em;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s cubic-bezier(.22,1,.36,1)}
.more.open .more__chev{transform:rotate(180deg)}
.more__drop{position:absolute;left:50%;top:calc(100% + .9rem);z-index:5;min-width:14rem;display:flex;flex-direction:column;gap:.15rem;padding:.4rem;border-radius:1.1rem;
  border:1px solid rgba(var(--fg-rgb),.1);background:var(--more-bg);box-shadow:0 1.5rem 3rem -1.25rem rgba(26,24,24,.35),0 .3rem .9rem -.3rem rgba(26,24,24,.12);
  opacity:0;visibility:hidden;transform:translate(-50%,-.45rem);transition:opacity .2s ease,transform .4s cubic-bezier(.22,1,.36,1),visibility 0s linear .4s}
.more__drop::before{content:"";position:absolute;left:-1rem;right:-1rem;bottom:100%;height:1.1rem}
.more.open .more__drop{opacity:1;visibility:visible;transform:translate(-50%,0);transition:opacity .2s ease,transform .4s cubic-bezier(.22,1,.36,1),visibility 0s}
.more .more__drop>*{display:flex;align-items:center;gap:.7rem;width:100%;padding:.62rem .8rem;border-radius:.75rem;text-align:left;font-size:.95rem;font-weight:500;white-space:nowrap;color:inherit;text-decoration:none;opacity:.85;transition:background .2s ease,opacity .2s ease}
.more .more__drop>:hover,.more .more__drop>:focus-visible,.more .more__drop>[aria-current]{background:rgba(var(--fg-rgb),.07);opacity:1;text-decoration:none}
.more__drop i{flex:none;width:.62rem;height:.62rem;border-radius:50%;background:var(--dc);box-shadow:0 0 0 2px rgba(var(--fg-rgb),.1)}
:root{--more-bg:#FBFAF8}
html[data-mode="dark"]{--more-bg:#221F1F}
html[data-mode="dark"] .more__drop{box-shadow:0 1.5rem 3rem -1.25rem rgba(0,0,0,.75),0 .3rem .9rem -.3rem rgba(0,0,0,.4)}
.more.open>.more__btn>span{opacity:1}
.hdr__right{display:flex;align-items:center;gap:.75rem}
.chip{border:1px solid var(--chip-line);background:var(--chip-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:var(--radius-control)}
.clock{display:flex;flex:none;white-space:nowrap;align-items:center;gap:.75rem;padding:.6rem .9rem;font-size:.875rem;color:rgba(var(--fg-rgb),.7)}
.clock__lbl{color:rgba(var(--fg-rgb),.66)}
.clock__time{min-width:4rem;font-weight:500;color:var(--foreground)}
.clock__sep{color:rgba(var(--fg-rgb),.3)}
.clock__date{font-weight:500}
.clock__ds{display:none;font-weight:500}
@media (min-width:1200px){.clock__date,.clock__ds,.clock__sep{display:none}}
@media (max-width:767.98px){.clock{gap:.5rem;padding:.55rem .8rem;font-size:.8125rem}.clock__date,.clock__ds,.clock__sep{display:none!important}.clock .clock__time{min-width:0}}
.menu-btn{transition:background .25s}
.menu-btn:hover{background:var(--chip-bg-h)}
.menu-btn>span{display:flex;align-items:center;gap:.5rem;padding:.6rem 1.1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em}
.menu-btn svg{font-size:1rem}
.menu-btn .word{display:none}
@media (min-width:640px){.menu-btn .word{display:inline}}

/* ---------- hero ---------- */
.hero{position:relative;z-index:2;isolation:isolate;overflow:hidden;border-radius:0 0 var(--radius-card) var(--radius-card);
  background:radial-gradient(120% 90% at 62% 30%,var(--hero-from) 0%,var(--hero-mid) 48%,var(--hero-to) 100%);
  --fig-h:27rem;min-height:100svh;display:flex;flex-direction:column;
  box-shadow:0 1px 0 rgba(26,24,24,.1),0 1.75rem 3rem -1.5rem rgba(26,24,24,.3)}
html[data-mode="dark"] .hero{box-shadow:0 1px 0 rgba(232,228,224,.08),0 1.75rem 3rem -1.25rem rgba(0,0,0,.85)}
@media (min-width:768px) and (max-width:1023.98px){.hero{--fig-h:43rem}}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0;
  background:radial-gradient(120% 90% at 62% 30%,#2A2525 0%,#1F1C1C 48%,#141212 100%)}
html[data-mode="dark"] .hero::before{opacity:1}
.hero__vig{position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(to bottom,var(--vig),transparent,var(--vig))}
/* the portrait: black & white, the cursor paints the colour back in */
.hero__stage{position:absolute;inset:0;z-index:2;pointer-events:none}
.fig{position:absolute;bottom:var(--bar-h);left:50%;height:var(--fig-h);aspect-ratio:801/1033;pointer-events:auto;cursor:pointer;
  opacity:0;transition:opacity 1.1s var(--e-soft) 120ms,transform 1.3s var(--e-soft) 120ms;transform:translate(-50%,2.5rem)}
body.ready .fig{opacity:1;transform:translate(-50%,0)}
@media (min-width:1024px){
  .fig{height:min(calc(100% - var(--bar-h) - 6rem),58rem,calc((min(100vw,var(--container-shell)) - 2 * var(--gut-lg)) * .44 * 1033 / 801));left:auto;
    right:calc(max(0px,(100% - var(--container-shell)) / 2) + var(--gut-lg));transform:translateY(2.5rem)}
  body.ready .fig{transform:none}
}
.fig img,.fig canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:50% 100%}
.fig img{filter:grayscale(1) contrast(1.04)}
.fig canvas{pointer-events:none}
.fig__card{position:absolute;left:8%;bottom:16%;z-index:3;display:inline-flex;align-items:center;gap:.45rem;min-height:44px;padding:0 1rem;border-radius:999px;
  border:1px solid rgba(255,255,255,.22);background:rgba(26,24,24,.72);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#F3EEEC;
  font:600 .8125rem/1 var(--font);letter-spacing:.01em;cursor:pointer;box-shadow:0 10px 24px -12px rgba(0,0,0,.6);
  transition:transform .35s cubic-bezier(.16,1,.3,1),background .25s}
@media (max-width:1023.98px){.fig__card{bottom:7%;left:4%}}
.fig:hover .fig__card,.fig__card:focus-visible{transform:translateY(-3px);background:rgba(26,24,24,.88)}

.hero__content{position:relative;z-index:20;flex:1;display:flex;flex-direction:column;gap:2rem;padding-top:7rem;padding-bottom:calc(var(--fig-h) + 1.25rem);pointer-events:none}
.hero__content a,.hero__content button,.hero__content .cal{pointer-events:auto}
@media (min-width:1024px){
  .hero__content{display:grid;min-height:calc(100lvh - var(--bar-h));grid-template-columns:repeat(12,1fr);align-content:center;gap:2.5rem;padding-top:7rem;padding-bottom:4rem}
}
.hero__left{display:flex;flex-direction:column;gap:1.75rem;min-width:0}
@media (min-width:1024px){.hero__left{grid-column:1 / span 7}}
@media (min-width:640px) and (max-width:1023.98px){.hero__left{padding-left:1.5rem}}
.eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;color:rgba(var(--fg-rgb),.7)}
.eyebrow::before{content:"";width:.375rem;height:.375rem;border-radius:9999px;background:rgba(var(--fg-rgb),.5)}
.h1{font-size:2.625rem;font-weight:600;line-height:.98;letter-spacing:-.02em;text-wrap:balance}
@media (min-width:640px){.h1{font-size:3.5rem}}
@media (min-width:768px){.h1{font-size:4.25rem}}
@media (min-width:1024px){.h1{font-size:4.75rem}}
.h1 .soft,.soft{color:rgba(var(--fg-rgb),.5)}
.ctas{display:flex;flex-wrap:wrap;gap:.75rem}

/* pill buttons */
.pill{display:inline-block;border-radius:9999px}
.pill__in{display:inline-flex;align-items:center;gap:.75rem;border-radius:9999px;font-size:.875rem;font-weight:500;padding:.875rem 1.75rem;white-space:nowrap}
.pill--arrow .pill__in{padding:.375rem .375rem .375rem 1.5rem}
.pill--dark .pill__in{background:var(--btn-bg);color:var(--btn-fg)}
.pill--outline .pill__in{border:1px solid var(--line);background:transparent;color:var(--foreground);transition:background .25s}
.pill--outline:hover .pill__in{background:var(--outline-h)}
.pill__badge{width:2.25rem;height:2.25rem;display:grid;place-items:center;border-radius:9999px;font-size:1rem;background:var(--ink);color:#fff}
.pill--dark .pill__badge{background:var(--btn-badge-bg);color:var(--btn-badge-fg)}
.pill:disabled{opacity:.6;cursor:default}

/* status bar along the bottom of the hero */
.hero__bar{position:relative;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:.75rem;height:var(--bar-h);border-top:1px solid rgba(var(--fg-rgb),.1);
  font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.025em;color:rgba(var(--fg-rgb),.72);--from:none;--d:900ms}
.hero__bar .mid{display:none}
@media (min-width:640px){.hero__bar .mid{display:inline}}
.hero__bar .scroll{display:inline-flex;align-items:center;gap:.5rem}
.hero__bar .scroll i{font-style:normal;display:inline-block;animation:nudge 1.8s var(--e-snap) infinite}
@keyframes nudge{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}

/* ---------- flip calendar: the skills on an endless desk calendar ---------- */
.cal-line{display:block;padding-top:.34em;margin-top:.1em;padding-bottom:.42em}
.cal{--cal-w:7em;position:relative;display:inline-block;font-size:.9em;perspective:14em;perspective-origin:30% 0;vertical-align:top;
  --from:translateY(.5em) rotateX(-18deg);--ease:var(--e-soft)}
.cal.rv{transition-duration:1.1s}
.cal__body{position:relative;display:block;width:var(--cal-w);height:1.72em;transform:rotateX(10deg) rotateY(-9deg);transform-style:preserve-3d;transition:width .5s var(--e-soft)}
.cal__stand{position:absolute;left:.2em;right:-.14em;top:.28em;bottom:-.4em;border-radius:.26em;
  background:linear-gradient(165deg,#3a3a3a 0%,#141414 40%,#050505 100%);
  box-shadow:0 .5em .9em -.35em rgba(0,0,0,.55),inset 0 .02em 0 rgba(255,255,255,.12);transform:translateZ(-.12em)}
.cal__stack{position:absolute;inset:0;transform-style:preserve-3d}
.cal__page,.cal__face,.cal__rear{position:absolute;inset:0;border-radius:.2em}
.cal__page{background:linear-gradient(180deg,#fbfaf7 0%,#f2f0eb 100%);
  box-shadow:0 .045em 0 #d8d4cb,0 .08em 0 #f6f4ef,0 .115em 0 #d0cbc1,0 .15em 0 #f2f0ea,0 .185em 0 #c8c3b8,0 .22em 0 #e9e6df,0 .255em 0 #aaa498,0 .45em .6em -.2em rgba(0,0,0,.35)}
.cal__leaf{position:absolute;inset:0;transform-origin:50% 0;transform-style:preserve-3d;transform:translateZ(.004em)}
.cal__face{background:linear-gradient(180deg,#fdfcf9 0%,#f3f1ec 100%);backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:inset 0 -.015em 0 rgba(0,0,0,.06)}
.cal__back{position:absolute;inset:0;border-radius:.2em;transform-origin:50% 0;transform:translateZ(-.004em) rotateX(352deg) translateY(50%) rotateX(180deg) translateY(-50%);
  backface-visibility:hidden;-webkit-backface-visibility:hidden;background:linear-gradient(0deg,#e9e6df 0%,#d9d5cc 100%);filter:brightness(.86)}
.cal__rear{background:linear-gradient(0deg,#e9e6df 0%,#d9d5cc 100%);transform:rotateX(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.cal__word{position:absolute;inset:0;display:flex;align-items:center;padding:.2em .4em 0;color:#0a0a0a;font-weight:700;letter-spacing:-.035em;line-height:1;white-space:nowrap}
.cal__no{position:absolute;right:.42em;bottom:.2em;font-size:.15em;font-weight:500;letter-spacing:.08em;color:rgba(10,10,10,.42);font-variant-numeric:tabular-nums}
.cal__holes{position:absolute;top:.09em;left:.32em;right:.32em;height:.07em;display:flex;justify-content:space-between}
.cal__holes i{display:block;width:.075em;height:.075em;border-radius:50%;background:#1b1b1b;box-shadow:inset 0 .01em .01em rgba(255,255,255,.3)}
.cal__shade{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  background:linear-gradient(180deg,rgba(0,0,0,.5) 0%,rgba(0,0,0,.08) 70%,rgba(0,0,0,0) 100%)}
.cal__rings{position:absolute;top:-.27em;left:.32em;right:.32em;height:.42em;display:flex;justify-content:space-between;transform:translateZ(.05em);pointer-events:none}
.cal__rings i{display:block;width:.075em;height:.42em;position:relative}
.cal__rings i::before{content:"";position:absolute;left:-.065em;right:-.065em;top:0;bottom:0;border-radius:.2em;
  border:.04em solid #a9a9a9;border-left-color:#ededed;border-top-color:#f6f6f6;border-right-color:#6f6f6f;border-bottom-color:#8a8a8a;
  filter:drop-shadow(.01em .025em .015em rgba(0,0,0,.35))}
.cal__measure{position:absolute;visibility:hidden;white-space:nowrap;font-weight:700;letter-spacing:-.035em;pointer-events:none}

/* ---------- the ability card ---------- */
.holo{position:fixed;inset:0;z-index:118;background:#050404;opacity:0;visibility:hidden;transition:opacity .35s ease,visibility 0s linear .35s;overflow:hidden;
  display:grid;place-items:center;font-family:var(--font);color:#F3EEEC}
.holo.on{opacity:1;visibility:visible;transition:opacity .35s ease}
/* the warm light the card sits in */
.holo::before{content:"";position:absolute;inset:-10%;pointer-events:none;
  background:radial-gradient(40% 45% at 50% 46%,rgba(214,178,110,.22),transparent 70%),radial-gradient(60% 50% at 20% 100%,rgba(164,85,44,.2),transparent 70%),
  radial-gradient(50% 40% at 90% 0%,rgba(92,132,202,.14),transparent 70%);animation:holoBreath 9s ease-in-out infinite alternate}
@keyframes holoBreath{to{transform:scale(1.08) translate3d(1%,-1%,0)}}
.holo__x{position:absolute;right:max(1rem,env(safe-area-inset-right));top:max(1rem,env(safe-area-inset-top));z-index:5;display:inline-flex;align-items:center;gap:.5rem;
  height:2.75rem;padding:0 1.1rem;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#F3EEEC;
  font-size:.8125rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;transition:background .25s}
.holo__x:hover{background:rgba(255,255,255,.14)}
.holo__x svg{font-size:.9rem}
/* the loader that draws before the card */
.cl{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:1rem;transition:opacity .45s ease}
.cl.out{opacity:0;pointer-events:none}
.cl__name{font-size:clamp(1.75rem,4vw,2.75rem);font-weight:700;letter-spacing:-.035em}
.cl__line{width:min(60vw,16rem);height:2px;border-radius:2px;background:rgba(255,255,255,.12);overflow:hidden}
.cl__line i{display:block;height:100%;background:linear-gradient(90deg,#6B5C5C,#C4B0B0,#D6B26E);transform-origin:0 50%;transform:scaleX(var(--p,0));transition:transform .2s linear}
.cl__row{display:flex;justify-content:space-between;width:min(60vw,16rem);font-family:var(--mono);font-size:.6875rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.cl__row b{color:#fff;font-weight:600}
.hcw{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:1.4rem;opacity:0;transform:translateY(1.5rem) scale(.96);
  transition:opacity .6s ease,transform .9s var(--e-soft)}
.hcw.in{opacity:1;transform:none}
.hc{--rx:0deg;--ry:0deg;--px:0;--py:0;--lift:0;position:relative;width:min(78vw,21.5rem,calc(70svh * 5 / 7));aspect-ratio:5/7;perspective:1600px;cursor:pointer;
  -webkit-tap-highlight-color:transparent;touch-action:none;border-radius:1.15rem}
.hc:focus-visible{outline:2px solid #C4B0B0;outline-offset:8px}
.hc__aura{position:absolute;inset:-12%;border-radius:50%;pointer-events:none;filter:blur(30px);opacity:.55;
  background:radial-gradient(closest-side,rgba(214,178,110,.45),rgba(164,85,44,.18) 60%,transparent);transform:translate(calc(var(--px) * -10px),calc(var(--py) * -10px))}
.hc__in{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--rx)) rotateY(var(--ry))}
.hc__flip{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.3,1.3,.4,1)}
.hc.flip .hc__flip{transform:rotateY(180deg)}
.hc__face{position:absolute;inset:0;border-radius:1.15rem;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  box-shadow:0 2.5rem 4rem -1.5rem rgba(0,0,0,.85),0 0 0 1px rgba(255,255,255,.08)}
.hc__front{background:linear-gradient(160deg,#2a2525 0%,#161313 46%,#0d0b0b 100%);padding:4.2%;display:flex;flex-direction:column;gap:3.4%}
.hc__back{transform:rotateY(180deg);background:radial-gradient(70% 55% at 50% 40%,#2a2424,#0d0b0b 75%);display:grid;place-items:center}
/* gilt frame */
.hc__front::before,.hc__back::before{content:"";position:absolute;inset:2.4%;border-radius:.85rem;pointer-events:none;z-index:3;
  border:1.5px solid transparent;background:linear-gradient(135deg,#f3dfa6,#a8813e 30%,#f6e7b8 50%,#8c6a2e 72%,#e6cc8a) border-box;
  -webkit-mask:linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) padding-box exclude,linear-gradient(#000 0 0)}
.hc__head{position:relative;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;padding:2.2% 3% 0}
.hc__ovr{display:flex;flex-direction:column;line-height:.9}
.hc__ovr b{font-size:2.3rem;font-weight:700;letter-spacing:-.04em;background:linear-gradient(180deg,#fff3d0,#d6b26e 60%,#a8813e);-webkit-background-clip:text;background-clip:text;color:transparent}
.hc__ovr span{font-family:var(--mono);font-size:.55rem;font-weight:700;letter-spacing:.2em;color:rgba(243,238,236,.6);margin-top:.35rem}
.hc__tag{font-family:var(--mono);font-size:.56rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#d6b26e;text-align:right;line-height:1.5}
.hc__win{position:relative;z-index:1;flex:1;min-height:0;margin:0 1.5%;border-radius:.7rem;overflow:hidden;
  background:radial-gradient(80% 70% at 50% 30%,rgba(214,178,110,.35),transparent 70%),linear-gradient(160deg,#22304a,#4a3540 45%,#a4552c 100%)}
.hc__win::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(13,11,11,.85));pointer-events:none}
.hc__win img{position:absolute;left:50%;bottom:0;height:108%;width:auto;max-width:none;transform:translate(calc(-50% + var(--px) * 8px),calc(var(--py) * 5px))}
.hc__rings{position:absolute;inset:0;opacity:.35;background:repeating-radial-gradient(circle at 50% 120%,transparent 0 18px,rgba(255,255,255,.08) 18px 19px);
  transform:translate(calc(var(--px) * -4px),calc(var(--py) * -3px)) scale(1.05)}
.hc__name{position:relative;z-index:2;text-align:center;margin-top:-1.9rem}
.hc__name b{display:block;font-size:1.45rem;font-weight:700;letter-spacing:-.03em;line-height:1}
.hc__name small{display:block;margin-top:.3rem;font-family:var(--mono);font-size:.56rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:#d6b26e}
.hc__stats{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:.45rem 1rem;padding:3% 4% 3.5%;border-top:1px solid rgba(214,178,110,.25)}
.hc__st{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.1rem .5rem;font-size:.62rem;font-weight:600;color:rgba(243,238,236,.82)}
.hc__st:last-child:nth-child(odd){grid-column:1/-1}
.hc__st b{font-size:.8rem;font-weight:700;color:#fff;font-variant-numeric:tabular-nums}
.hc__st i{grid-column:1/-1;height:3px;border-radius:3px;background:rgba(255,255,255,.1);overflow:hidden}
.hc__st i::after{content:"";display:block;height:100%;width:calc(var(--v) * 1%);border-radius:inherit;background:linear-gradient(90deg,#a8813e,#f3dfa6)}
.hc__mono{position:relative;z-index:2;display:grid;place-items:center;gap:1.1rem;text-align:center}
.hc__mono b{display:grid;place-items:center;width:7.5rem;height:7.5rem;border-radius:50%;font-size:2.6rem;font-weight:700;letter-spacing:-.04em;color:#1a1818;
  background:radial-gradient(circle at 35% 30%,#fff3d0,#d6b26e 45%,#8c6a2e 100%);box-shadow:0 0 0 6px rgba(214,178,110,.18),0 20px 40px -12px rgba(0,0,0,.8)}
.hc__mono small{display:block;font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:rgba(243,238,236,.7);line-height:1.8}
.hc__back .hc__rings{opacity:.5;background:repeating-radial-gradient(circle at 50% 42%,transparent 0 14px,rgba(214,178,110,.08) 14px 15px)}
/* foil, glare and rim: only the sheets move */
.hc__foil,.hc__glare,.hc__sheen{position:absolute;inset:0;z-index:4;pointer-events:none;border-radius:inherit}
.hc__foil{mix-blend-mode:color-dodge;opacity:calc(.18 + var(--lift) * .4);
  background:repeating-linear-gradient(115deg,rgba(255,80,160,.55) 0%,rgba(255,220,120,.5) 6%,rgba(120,255,200,.5) 12%,rgba(110,170,255,.55) 18%,rgba(200,120,255,.5) 24%,rgba(255,80,160,.55) 30%);
  background-size:220% 220%;background-position:calc(50% + var(--px) * 40%) calc(50% + var(--py) * 40%);
  -webkit-mask:radial-gradient(90% 70% at calc(50% + var(--px) * 30%) calc(50% + var(--py) * 30%),#000 20%,transparent 75%);mask:radial-gradient(90% 70% at calc(50% + var(--px) * 30%) calc(50% + var(--py) * 30%),#000 20%,transparent 75%)}
.hc__sheen{mix-blend-mode:overlay;opacity:.6;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.35) 45%,transparent 60%);background-size:250% 100%;background-position:calc(50% - var(--px) * 60%) 0}
.hc__glare{mix-blend-mode:soft-light;background:radial-gradient(45% 35% at calc(50% + var(--px) * 45%) calc(50% + var(--py) * 45%),rgba(255,255,255,.75),transparent 70%);opacity:calc(.35 + var(--lift) * .5)}
.hc__hint{position:relative;z-index:2;font-size:.8125rem;font-weight:500;color:rgba(243,238,236,.55)}
.hc__hint .t{display:none}
@media (hover:none){.hc__hint .m{display:none}.hc__hint .t{display:inline}}

/* ---------- section 2: the doors ---------- */
.doors{position:relative;z-index:1;margin-top:-2rem;padding-top:calc(2rem + 5.25rem);overflow:hidden;
  background:linear-gradient(180deg,rgba(0,0,0,.05) 0%,transparent 22%,transparent 78%,rgba(0,0,0,.07) 100%),linear-gradient(180deg,var(--wall-hi) 0%,var(--wall) 55%)}
/* plaster, on its own layer so it can fade while you walk through a door */
.doors__tex{position:absolute;inset:0;pointer-events:none;opacity:.55;transition:opacity .25s ease;mix-blend-mode:multiply;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='360' height='360'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .4 0 0 0 0 .38 0 0 0 .22 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='900'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='3' seed='4'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .45 0 0 0 0 .42 0 0 0 .12 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)'/%3E%3C/svg%3E");
  background-size:360px 360px,900px 900px}
html[data-mode="dark"] .doors__tex{mix-blend-mode:screen;opacity:.12}
.doors.lift .doors__tex,.doors.through .doors__tex{opacity:0}
.mbr{display:none}
@media (max-width:639.98px){.mbr{display:inline}}
.doors__wall{position:relative;display:flex;flex-direction:column;align-items:center;gap:3.6rem}
.paint{position:relative;z-index:3;pointer-events:none;margin:0;text-align:center;font-weight:700;letter-spacing:-.03em;line-height:.95;color:var(--paint);
  font-size:2.6rem;max-width:14ch;text-wrap:balance;padding:.08em 0 .14em;clip-path:inset(-20% -6% -30% -6%)}
@media (min-width:640px){.paint{font-size:4rem;max-width:none}}
@media (min-width:1024px){.paint{font-size:4.75rem}}
.doors.pre .paint{clip-path:inset(-20% 100% -30% -6%)}
.doors.in .paint{transition:clip-path 1.5s cubic-bezier(.65,0,.25,1) .1s}
.doors__row{--gap:1.5rem;position:relative;z-index:2;display:grid;grid-template-columns:repeat(var(--n,6),minmax(0,1fr));gap:var(--gap);align-items:end;width:100%}
@media (min-width:1024px){.doors__row{--gap:3rem}}
/* the skirting board the doors stand on */
.doors__row::after{content:"";position:absolute;left:-50vw;right:-50vw;bottom:0;height:1.5rem;z-index:-1;
  background:linear-gradient(180deg,rgba(255,255,255,.55) 0,rgba(255,255,255,.55) 1px,rgba(0,0,0,.06) 2px,transparent 4px,transparent 7px,rgba(0,0,0,.05) 8px,rgba(255,255,255,.25) 9px,transparent 11px,rgba(0,0,0,.08) 100%),var(--base);
  box-shadow:0 -1px 0 rgba(0,0,0,.07),0 -.5rem .9rem -.45rem rgba(0,0,0,.16)}
html[data-mode="dark"] .doors__row::after{background:linear-gradient(180deg,rgba(255,255,255,.06) 0,rgba(255,255,255,.06) 1px,rgba(0,0,0,.3) 2px,transparent 4px,transparent 7px,rgba(0,0,0,.25) 8px,transparent 11px,rgba(0,0,0,.3) 100%),var(--base);
  box-shadow:0 -1px 0 rgba(0,0,0,.4),0 -.5rem .9rem -.45rem rgba(0,0,0,.5)}
.doors__hint,.doors__dots{display:none}
/* hovering a door: the others fade back and what it holds is written on the wall beside it */
.unit .doorway{transition:opacity .5s var(--e-soft),filter .5s var(--e-soft)}
.doors.focus .unit:not(.on) .doorway{opacity:.03;filter:saturate(.2)}
.doors.focus .unit:not(.on)::before{opacity:0}
.dinfo{position:absolute;z-index:3;pointer-events:none;opacity:0;transform:translateY(.6rem);transition:opacity .35s ease,transform .5s var(--e-soft);max-width:30rem}
@media (hover:hover) and (pointer:fine){.dinfo{max-width:22rem}}
.dinfo.on{opacity:1;transform:none;transition:opacity .45s ease .08s,transform .6s var(--e-soft) .08s}
.dinfo__h{font-size:2rem;font-weight:600;line-height:1.05;letter-spacing:-.02em;color:var(--foreground);margin:0 0 .45rem}
.dinfo__t{font-family:var(--mono);font-size:.8125rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--dinfo-accent,#6B4F4F);margin-bottom:1.15rem}
.dinfo__p{display:flex;flex-direction:column;gap:.5rem;list-style:none;margin:0;padding:0;font-size:1rem;font-weight:450;line-height:1.35;color:var(--foreground)}
.dinfo__p li{display:flex;align-items:center;gap:.7rem}
.dinfo__p li::before{content:"";flex:none;width:1.05rem;height:1.05rem;border-radius:50%;border:1.5px solid var(--dinfo-accent,#6B4F4F);background:var(--dinfo-accent,#6B4F4F) center/.62rem no-repeat;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 6.2 5 8.5 9.5 3.5'/%3E%3C/svg%3E")}
html[data-mode="dark"] .dinfo{--dinfo-accent:#D9C6C6}
html[data-mode="dark"] .dinfo__p li::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%231A1818' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 6.2 5 8.5 9.5 3.5'/%3E%3C/svg%3E")}
.dinfo.on li{animation:liIn .5s var(--e-soft) backwards}
.dinfo.on li:nth-child(2){animation-delay:.05s}.dinfo.on li:nth-child(3){animation-delay:.1s}.dinfo.on li:nth-child(4){animation-delay:.15s}.dinfo.on li:nth-child(5){animation-delay:.2s}
@keyframes liIn{from{opacity:0;transform:translateX(-.5rem)}}
@media (min-width:1280px){.dinfo__p{font-size:1.0625rem}.dinfo__h{font-size:2.25rem}}

/* one door in its casing */
.unit{position:relative;container-type:inline-size;width:100%;max-width:min(17.5rem,calc((100svh - 19.5rem) / 2.25));justify-self:center;
  transition:opacity .9s var(--e-soft),transform 1.1s var(--e-soft);transition-delay:calc(var(--i) * 110ms + .35s)}
.doors.pre .unit{opacity:0;transform:translateY(1.5rem)}
.unit::before{content:"";position:absolute;left:-35%;right:-35%;top:-18%;height:62%;pointer-events:none;z-index:-1;transition:opacity .5s ease;
  background:radial-gradient(50% 50% at 50% 30%,var(--lamp),transparent 100%)}
.doorway{position:relative;display:block;width:100%;aspect-ratio:1/2.25;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:50cqi 50cqi 0 0}
.doorway:focus-visible{outline:2px solid var(--accent);outline-offset:6px}
@media (hover:hover) and (pointer:fine){.doorway{cursor:none}}
.casing{position:absolute;inset:0;border-radius:50cqi 50cqi 0 0;transition:box-shadow .5s var(--e-soft);
  background:linear-gradient(90deg,rgba(0,0,0,.07),rgba(255,255,255,.18) 3cqi,transparent 6cqi,transparent calc(100% - 6cqi),rgba(0,0,0,.05) calc(100% - 3cqi),rgba(0,0,0,.12)),
    linear-gradient(180deg,rgba(255,255,255,.35),transparent 30%),var(--casing);
  box-shadow:inset 0 0 0 1.1cqi rgba(255,255,255,.28),inset 0 0 0 1.5cqi rgba(0,0,0,.07),inset 0 0 0 3.6cqi rgba(255,255,255,.12),inset 0 0 0 4.1cqi rgba(0,0,0,.08),
    0 0 0 1px rgba(0,0,0,.06),1.5cqi 2.5cqi 4.5cqi rgba(26,24,24,.2),-.5cqi 1cqi 3cqi rgba(26,24,24,.08)}
html[data-mode="dark"] .casing{background:linear-gradient(90deg,rgba(0,0,0,.25),rgba(255,255,255,.04) 3cqi,transparent 6cqi,transparent calc(100% - 6cqi),rgba(0,0,0,.3)),linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%),var(--casing);
  box-shadow:inset 0 0 0 1.1cqi rgba(255,255,255,.05),inset 0 0 0 1.5cqi rgba(0,0,0,.25),inset 0 0 0 3.6cqi rgba(255,255,255,.03),inset 0 0 0 4.1cqi rgba(0,0,0,.22),0 0 0 1px rgba(0,0,0,.4),1.5cqi 2.5cqi 5cqi rgba(0,0,0,.6)}
/* plinth blocks at the foot of each leg */
.casing::before{content:"";position:absolute;left:-1cqi;right:-1cqi;bottom:0;height:11cqi;z-index:1;background:var(--casing);
  -webkit-mask:linear-gradient(90deg,#000 0 8.5cqi,transparent 8.5cqi calc(100% - 8.5cqi),#000 calc(100% - 8.5cqi));mask:linear-gradient(90deg,#000 0 8.5cqi,transparent 8.5cqi calc(100% - 8.5cqi),#000 calc(100% - 8.5cqi));
  box-shadow:inset 0 .5cqi 0 rgba(255,255,255,.4),inset 0 1cqi 0 rgba(0,0,0,.08),inset 0 -.6cqi 1cqi rgba(0,0,0,.1)}
html[data-mode="dark"] .casing::before{box-shadow:inset 0 .5cqi 0 rgba(255,255,255,.05),inset 0 1cqi 0 rgba(0,0,0,.3)}
/* a fine bead round the arch */
.casing::after{content:"";position:absolute;left:4.6cqi;right:4.6cqi;top:4.6cqi;bottom:0;border-radius:45.4cqi 45.4cqi 0 0;border:.45cqi solid rgba(0,0,0,.07);border-bottom:0}
html[data-mode="dark"] .casing::after{border-color:rgba(255,255,255,.05)}
.opening{position:absolute;left:7.5cqi;right:7.5cqi;top:7.5cqi;bottom:0;perspective:160cqi;perspective-origin:50% 42%}
/* the room behind: white in light mode, black in dark mode */
.room{position:absolute;inset:0;overflow:hidden;border-radius:42.5cqi 42.5cqi 0 0;background:var(--room);box-shadow:inset 2cqi 0 4cqi var(--room-sh),inset 0 2cqi 4cqi var(--room-sh)}
.room::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;background:linear-gradient(90deg,rgba(255,255,255,.035),transparent 12%);transition:opacity .5s var(--e-soft);box-shadow:inset 0 0 5cqi var(--rim),inset 0 0 1.2cqi var(--rim)}
.door{--dc:var(--door);position:absolute;inset:0;transform-origin:0 50%;transform:rotateY(0deg);will-change:transform;border-radius:42.5cqi 42.5cqi 0 0;transform-style:preserve-3d;
  background:linear-gradient(100deg,rgba(255,255,255,.1) 0%,rgba(255,255,255,0) 30%,rgba(0,0,0,.18) 100%),var(--dc);
  box-shadow:inset 0 0 0 .3cqi rgba(0,0,0,.28),inset .6cqi 0 0 rgba(255,255,255,.05);transition:box-shadow .5s var(--e-soft)}
html[data-mode="dark"] .door{--dc:var(--door-dk,var(--door))}
/* the slab's thickness, seen as it swings */
.door::after{content:"";position:absolute;top:40cqi;bottom:0;right:0;width:3.4cqi;transform-origin:100% 50%;transform:rotateY(-90deg);
  background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(0,0,0,.25)),var(--dc);filter:brightness(.62);pointer-events:none}
/* a reeded panel following the arch */
.door__flute{position:absolute;left:8cqi;right:8cqi;top:8cqi;bottom:9cqi;border-radius:34.5cqi 34.5cqi 1.2cqi 1.2cqi;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.075) 0,rgba(255,255,255,.02) 1cqi,rgba(0,0,0,.13) 2.1cqi,rgba(255,255,255,.075) 2.8cqi);
  box-shadow:inset 0 0 0 .3cqi rgba(0,0,0,.16),inset 1cqi 1.2cqi 2cqi rgba(0,0,0,.28),inset -.6cqi -.6cqi 1cqi rgba(255,255,255,.07)}
.door__shade{position:absolute;inset:0;border-radius:inherit;background:#000;opacity:calc(var(--o,0) * .5);pointer-events:none}
.unit.on .casing{box-shadow:0 0 0 1px rgba(0,0,0,.06),2cqi 5cqi 9cqi var(--lift),-1cqi 2cqi 5cqi rgba(0,0,0,.08),inset 0 1px 0 rgba(255,255,255,.55)}
.unit.on .door{box-shadow:inset 0 0 0 .35cqi rgba(0,0,0,.2),inset -2.5cqi 0 3cqi rgba(0,0,0,.18),4cqi 0 7cqi rgba(0,0,0,.45)}
.unit.on .room::after{opacity:1}
/* brass name plate */
.plate{position:absolute;left:50%;top:31%;translate:-50% -50%;width:58cqi;padding:2.6cqi 4cqi;border-radius:.9cqi;z-index:1;
  text-align:center;font-size:5.4cqi;font-weight:600;line-height:1.15;letter-spacing:.09em;text-transform:uppercase;text-wrap:balance;
  color:#2b2112;text-shadow:0 .28cqi 0 rgba(255,238,196,.55),0 -.15cqi 0 rgba(0,0,0,.25);
  background:linear-gradient(160deg,#efdfb2 0%,#c9a866 28%,#e3cc92 48%,#a98747 72%,#d2b67a 100%);
  box-shadow:0 .5cqi 1cqi rgba(0,0,0,.4),inset 0 .3cqi 0 rgba(255,250,228,.7),inset 0 -.3cqi 0 rgba(88,62,22,.45)}
.plate::before,.plate::after{content:"";position:absolute;top:50%;width:1.6cqi;height:1.6cqi;margin-top:-.8cqi;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,#fff3cf,#8f6f33 70%);box-shadow:0 .15cqi .2cqi rgba(0,0,0,.4)}
.plate::before{left:1.8cqi}.plate::after{right:1.8cqi}
/* lever handle on a brass rose, with a keyhole below */
.handle{position:absolute;right:7cqi;top:59%;width:9.4cqi;height:9.4cqi;border-radius:50%;z-index:1;
  background:radial-gradient(circle at 36% 30%,#fff6dc 0,#e6cb8a 14%,#b8934c 40%,#80602a 70%,#4d3816 100%);
  box-shadow:0 0 0 .35cqi rgba(0,0,0,.22),.9cqi 1.5cqi 2cqi rgba(0,0,0,.45),inset -.7cqi -.9cqi 1.1cqi rgba(40,26,6,.55),inset .5cqi .6cqi .8cqi rgba(255,248,222,.5)}
.handle::before{content:"";position:absolute;inset:2.3cqi;border-radius:50%;background:radial-gradient(circle at 38% 32%,#fff3d0,#c9a45c 45%,#6f5122 100%);
  box-shadow:.4cqi .7cqi .9cqi rgba(0,0,0,.45),inset 0 0 0 .2cqi rgba(255,240,200,.35)}
.handle__lever{position:absolute;right:3.6cqi;top:2.75cqi;width:23cqi;height:3.9cqi;border-radius:2.4cqi 1.6cqi 1.6cqi 2.4cqi;transform-origin:calc(100% - 1.9cqi) 50%;
  background:linear-gradient(180deg,#fff5d6 0%,#ecd395 16%,#c39d55 42%,#8e6a2d 72%,#5c4119 100%);
  box-shadow:.3cqi 2.4cqi 2.2cqi rgba(0,0,0,.38),0 .4cqi .4cqi rgba(0,0,0,.25),inset 0 -.3cqi .4cqi rgba(50,32,8,.45);transition:transform .18s cubic-bezier(.3,.7,.4,1)}
.handle__lever::before{content:"";position:absolute;left:-.4cqi;top:-.45cqi;width:7cqi;height:4.8cqi;border-radius:2.4cqi;
  background:linear-gradient(180deg,#fff5d6 0%,#e8cd8c 18%,#bf9850 45%,#86632a 75%,#5c4119 100%);box-shadow:0 .5cqi .6cqi rgba(0,0,0,.3)}
.handle__lever::after{content:"";position:absolute;left:1.4cqi;right:2.6cqi;top:.55cqi;height:.55cqi;border-radius:1cqi;background:linear-gradient(90deg,rgba(255,255,240,.95),rgba(255,250,225,.35));filter:blur(.1cqi)}
.unit.press .handle__lever{transform:rotate(-32deg)}
.handle__lock{position:absolute;left:50%;top:calc(100% + 6.5cqi);width:5.4cqi;height:10.5cqi;margin-left:-2.7cqi;border-radius:2.7cqi;
  background:radial-gradient(ellipse at 38% 28%,#fff3d0 0,#d9b86f 22%,#a07b37 55%,#5e4419 100%);
  box-shadow:0 0 0 .3cqi rgba(0,0,0,.2),.6cqi 1cqi 1.4cqi rgba(0,0,0,.42),inset -.4cqi -.6cqi .8cqi rgba(40,26,6,.5),inset .3cqi .4cqi .5cqi rgba(255,248,222,.45)}
.handle__lock::before{content:"";position:absolute;left:50%;top:30%;width:2cqi;height:2cqi;margin-left:-1cqi;border-radius:50%;background:#140d04;box-shadow:inset .2cqi .3cqi .3cqi rgba(0,0,0,.8)}
.handle__lock::after{content:"";position:absolute;left:50%;top:calc(30% + 1.3cqi);width:1cqi;height:3cqi;margin-left:-.5cqi;border-radius:0 0 .3cqi .3cqi;background:#140d04}
@media (prefers-reduced-motion:reduce){.door,.casing,.room::after{transition:none}}
/* walking through a door */
.doors.lift{will-change:transform}
.doors.through{overflow:visible;z-index:6}
.doors.through::before,.doors.through::after{content:"";position:absolute;top:0;bottom:0;width:55vw;pointer-events:none;background:linear-gradient(180deg,var(--wall-hi) 0%,var(--wall) 55%)}
.doors.through::before{right:100%}.doors.through::after{left:100%}
.wallv{position:fixed;inset:0;z-index:100;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .25s ease,visibility 0s linear .25s;background:var(--room)}
.wallv.on{opacity:1;visibility:visible;transition:opacity .25s ease,visibility 0s}
.wallv.live{pointer-events:auto}
.wallv iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;visibility:hidden;opacity:0;transition:opacity .7s ease}
.wallv.on iframe.cur{visibility:visible;opacity:1}
.cord{transition:opacity .4s ease}
.cord.away{opacity:0;pointer-events:none}
body.walking .totop{opacity:0!important;pointer-events:none}
.story.at-start .story__tail::before{opacity:0}

/* more doors than fit: a few stand on the wall at once, the brass arrows walk you along the corridor to the rest */
.doors__track{position:relative;width:100%}
.dpg{display:none}
@media (min-width:640px){
  .doors{--dpg-sp:4.75rem;--dpg-x:0rem}
  .doors.paging .doors__track{padding-inline:var(--dpg-sp)}
  .doors.paging .doors__row{grid-template-columns:repeat(var(--n,6),calc((100% - (var(--pp,4) - 1) * var(--gap)) / var(--pp,4)));
    transform:translate3d(calc(var(--first,0) * -1 * (100% + var(--gap)) / var(--pp,4)),0,0);transition:transform 1s cubic-bezier(.65,0,.35,1)}
  .doors.paging .doors__row::after{right:calc(-50vw - 100%)}
  .doors.paged .unit{transition:opacity .65s ease calc(.2s + var(--k,0) * 80ms),transform 1.1s var(--e-soft),visibility 0s}
  .doors.paging .unit.off{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .55s ease,transform 1.1s var(--e-soft),visibility 0s linear .55s}
  .doors.paging .dpg{position:absolute;top:54%;z-index:4;display:flex;flex-direction:column;align-items:center;gap:.7rem;width:4rem;padding:0;margin:0;border:0;background:none;
    translate:0 -50%;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .5s ease .7s,visibility 0s}
  .dpg--prev{left:var(--dpg-x)}.dpg--next{right:var(--dpg-x)}
  .doors.pre .dpg{opacity:0}
  .doors.at-start .dpg--prev,.doors.at-end .dpg--next,.doors.through .dpg{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s ease,visibility 0s linear .3s}
}
@media (min-width:1024px){.doors{--dpg-sp:0rem;--dpg-x:calc((var(--gut-lg) - 4rem) / 2 - var(--gut-lg))}}
@media (max-width:639.98px){.doors__track{display:contents}}
.dpg__ring{display:grid;place-items:center;width:3.4rem;height:3.4rem;border-radius:50%;color:#2b2112;
  background:linear-gradient(160deg,#efdfb2 0%,#c9a866 28%,#e3cc92 48%,#a98747 72%,#d2b67a 100%);
  box-shadow:0 .4rem 1rem -.25rem rgba(0,0,0,.38),inset 0 2px 0 rgba(255,250,228,.7),inset 0 -2px 0 rgba(88,62,22,.45);transition:transform .5s var(--e-soft),box-shadow .3s ease}
.dpg__ring svg{width:1.35rem;height:1.35rem;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .45s var(--e-soft)}
.dpg__lbl{font-family:var(--mono);font-size:.66rem;font-weight:700;letter-spacing:.12em;line-height:1.35;text-transform:uppercase;text-align:center;color:rgba(var(--fg-rgb),.6);transition:color .3s ease}
@media (hover:hover){.dpg:hover .dpg__ring{transform:scale(1.07)}.dpg--next:hover svg{transform:translateX(.15rem)}.dpg--prev:hover svg{transform:translateX(-.15rem)}.dpg:hover .dpg__lbl{color:var(--foreground)}}
.dpg:focus-visible{outline:none}.dpg:focus-visible .dpg__ring{outline:2px solid var(--accent);outline-offset:4px}
.doors.in .dpg--next.nudge .dpg__ring{animation:dpgNudge 1.8s var(--e-soft) 2.2s 3}
@keyframes dpgNudge{0%,55%,100%{transform:none}18%{transform:translateX(.5rem)}36%{transform:translateX(-.08rem)}}
@media (prefers-reduced-motion:reduce){.doors.paging .doors__row{transition:none}.doors.in .dpg--next.nudge .dpg__ring{animation:none}}

/* phones: the wall pins in place and scrolling walks you along it, one door at a time */
@media (max-width:639.98px){
  .doors{padding-top:0;overflow:clip;height:calc(100svh + (var(--n,6) - 1) * 55svh)}
  .doors__pin{--uw:min(56vw,calc((100svh - 31rem) / 2.25));--ug:calc(50vw - var(--uw) / 2 + .75rem);position:sticky;top:0;height:100svh;padding-top:4.75rem;
    display:flex;flex-direction:column;justify-content:flex-start;overflow:clip}
  .doors__wall{gap:1rem;align-items:stretch}
  .doors__row{display:flex;gap:var(--ug);overflow:visible;padding-inline:calc(50% - var(--uw) / 2);margin-inline:-1.25rem;width:calc(100% + 2.5rem);
    padding-top:2rem;margin-top:-1rem;will-change:transform}
  .doors__row::after{left:0;right:auto;width:900vw}
  .unit{flex:0 0 var(--uw);max-width:none}
  .unit::before{display:none}
  .dinfo{position:relative;left:auto!important;top:auto!important;width:auto!important;max-width:100%;margin:.9rem 0 0;padding-top:1rem;border-top:1px solid rgba(var(--fg-rgb),.1);
    text-align:left;min-height:10.5rem;opacity:1;transform:none}
  .dinfo .dinfo__h{font-size:1.5rem;line-height:1.1;margin-bottom:.35rem}
  .dinfo .dinfo__t{margin-bottom:.85rem;font-size:.625rem;letter-spacing:.08em;line-height:1.4}
  .dinfo .dinfo__p{font-size:.875rem;line-height:1.35;gap:.45rem}
  .dinfo .dinfo__p li{gap:.6rem}
  .dinfo .dinfo__p li::before{width:.95rem;height:.95rem;background-size:.55rem}
  .doors__dots{display:flex;gap:.4rem;margin:.25rem 0 0}
  .doors.compact .dinfo__p{display:none}
  .doors.compact .dinfo{min-height:0}
  .doors__dots i{width:.4rem;height:.4rem;border-radius:999px;background:rgba(var(--fg-rgb),.2);transition:width .35s cubic-bezier(.16,1,.3,1),background .35s}
  .doors__dots i.on{width:1.3rem;background:var(--foreground)}
  .paint{font-size:2.15rem;max-width:none;white-space:nowrap;align-self:flex-start;text-align:left;margin:.25rem 0 .5rem}
}
/* "Click to enter" badge that replaces the cursor over a door */
.door-cursor{position:fixed;left:0;top:0;z-index:90;pointer-events:none;padding:.6rem 1rem;border-radius:9999px;background:var(--btn-bg);color:var(--btn-fg);
  font-size:.8125rem;font-weight:500;letter-spacing:.01em;white-space:nowrap;box-shadow:0 .5rem 1.5rem -.5rem rgba(0,0,0,.45);opacity:0;transition:opacity .18s ease}
.door-cursor.on{opacity:1}

/* ---------- my story: a timeline you scroll through; the year and title stay beside it ---------- */
.story{position:relative;z-index:1;border-top:1px solid rgba(26,24,24,.1);box-shadow:inset 0 1.75rem 2.25rem -1.75rem rgba(26,24,24,.14);
  background-color:#F4F1EE;background-image:repeating-linear-gradient(42deg,rgba(26,24,24,.022) 0 1px,transparent 1px 12px),linear-gradient(176deg,#FBF9F7 0%,#F7F4F1 54%,#F3EFEB 100%)}
html[data-mode="dark"] .story{background-color:#171515;border-top-color:rgba(232,228,224,.08);box-shadow:inset 0 1.75rem 2.25rem -1.75rem rgba(0,0,0,.6);
  background-image:radial-gradient(rgba(232,228,224,.055) 1px,transparent 1.4px);background-size:1.6rem 1.6rem}
.story__amb{position:sticky;top:0;z-index:0;display:block;height:100svh;margin-bottom:-100svh;pointer-events:none;overflow:hidden;--aa:2.3;--p1:0% 14%;--p2:100% 86%}
html[data-mode="dark"] .story__amb{--aa:1.1;--p1:24% 44%;--p2:80% 74%}
.story__amb::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(54% 66% at 50% 50%,rgba(252,250,248,.9) 0%,rgba(252,250,248,.66) 46%,transparent 80%)}
html[data-mode="dark"] .story__amb::after{display:none}
.story__amb i{position:absolute;inset:-8%;opacity:0;transition:opacity 1.2s ease;
  background:radial-gradient(46% 54% at var(--p1),rgba(var(--c1),calc(.34 * var(--aa))),transparent 74%),radial-gradient(42% 48% at var(--p2),rgba(var(--c2),calc(.26 * var(--aa))),transparent 74%);
  animation:ambDrift 24s ease-in-out infinite alternate;animation-play-state:paused}
html[data-mode="dark"] .story__amb i{--c1:var(--d1);--c2:var(--d2)}
.story__amb i.on{opacity:1;animation-play-state:running}
@keyframes ambDrift{from{transform:translate3d(-2%,-1.5%,0) scale(1)}to{transform:translate3d(2.5%,2%,0) scale(1.06)}}
html.lite .story__amb i{animation:none}
.story__pin{position:relative;padding:7rem 0 2.5rem}
.story__stage{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:3.5rem;align-items:start;width:100%}
.story__clock{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;margin-top:-7rem;padding-top:3rem}
.story__bg{position:absolute;left:-40%;top:0;height:100%;width:180%;z-index:-1;pointer-events:none;
  -webkit-mask:radial-gradient(closest-side,#000 55%,transparent);mask:radial-gradient(closest-side,#000 55%,transparent)}
.story__h{margin-top:.6rem;font-size:2.4rem;font-weight:700;line-height:.98;letter-spacing:-.035em}
@media (min-width:1024px){.story__h{font-size:3.4rem}}
.story__yr{display:flex;margin:1.5rem 0 0 -.04em;font-size:clamp(5.5rem,11.5vw,11.5rem);font-weight:700;line-height:1;letter-spacing:-.06em;font-variant-numeric:tabular-nums;color:var(--foreground)}
.dg{display:block;height:1em;overflow:hidden;padding-right:.02em}
.dg__c{display:flex;flex-direction:column;transform:translateY(calc(var(--d,0) * -1em));transition:transform .9s cubic-bezier(.65,0,.2,1)}
.dg:nth-child(2) .dg__c{transition-delay:.04s}.dg:nth-child(3) .dg__c{transition-delay:.08s}.dg:nth-child(4) .dg__c{transition-delay:.12s}
.dg__c i{display:block;height:1em;font-style:normal;text-align:center}
.story__when{margin-top:.9rem;font-family:var(--mono);font-size:.8125rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#5C4242}
html[data-mode="dark"] .story__when{color:#D9C6C6}
.story__meter{display:flex;align-items:center;gap:.6rem;margin-top:1.5rem;font-size:.875rem;font-weight:600;color:var(--foreground);font-variant-numeric:tabular-nums;width:100%}
.story__of{color:rgba(var(--fg-rgb),.55)}
.story__rw{width:1.25rem;height:1.25rem;color:rgba(var(--fg-rgb),.6);transform:rotate(calc(var(--p,0) * -720deg))}
.story__bar{position:relative;flex:0 1 11rem;height:2px;margin-left:.6rem;border-radius:2px;background:rgba(var(--fg-rgb),.12);overflow:hidden}
.story__bar b{position:absolute;inset:0;background:var(--foreground);transform-origin:0 50%;transform:scaleX(var(--p,0))}
.story__line{position:relative;padding-top:24vh;padding-bottom:4vh}
.story__list{position:relative;list-style:none;margin:0;padding:0 0 0 2.75rem}
.story__rail{position:absolute;left:.45rem;top:var(--r0,0);height:var(--rh,0);width:2px;border-radius:2px;background:rgba(var(--fg-rgb),.14)}
/* the dot rides the line on the browser's own scrolling (sticky), so it never shakes */
.story__dtrack{position:absolute;left:calc(.45rem + 1px - 1.25rem);width:2.5rem;top:calc(var(--r0,0px) - 1rem);height:calc(var(--rh,0px) + 2rem);padding:.45rem 0;z-index:2;pointer-events:none}
.story__dot{position:sticky;display:block;top:calc(50svh - .55rem);margin:0 auto;width:1.1rem;height:1.1rem;border-radius:50%;z-index:2;
  background:var(--foreground);box-shadow:0 0 0 .4rem rgba(var(--fg-rgb),.08);transition:background .4s,box-shadow .4s}
.story.is-now .story__dot{background:#7FB069;box-shadow:0 0 0 .45rem rgba(127,176,105,.18)}
/* the stretch already travelled, drawn above the dot */
.story__ttrack{position:absolute;left:calc(.45rem + 1px - 1.25rem);width:2.5rem;top:var(--r0,0);height:var(--rh,0);overflow:clip;pointer-events:none;z-index:1}
.story__tail{position:sticky;display:block;top:50svh;width:2px;height:0;margin:0 auto}
.story__tail::before{content:"";position:absolute;left:0;bottom:0;width:2px;height:300vh;background:var(--foreground)}
.ch{position:relative;padding:3rem 0;opacity:.52;transition:opacity .45s ease}
.ch.on{opacity:1}
.ch__date{font-family:var(--mono);font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:rgba(var(--fg-rgb),.66);margin-bottom:.7rem}
.ch__t{font-size:1.9rem;font-weight:600;line-height:1.08;letter-spacing:-.02em;margin-bottom:.35rem}
.ch__org{font-size:1.0625rem;font-weight:500;color:rgba(var(--fg-rgb),.7);margin-bottom:1rem}
.ch__b{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem;max-width:46ch}
.ch__b li{position:relative;padding-left:1.1rem;font-size:1rem;line-height:1.55;color:rgba(var(--fg-rgb),.78)}
.ch__b li::before{content:"";position:absolute;left:0;top:.72em;width:.45rem;height:1.5px;background:rgba(var(--fg-rgb),.45)}
html:not([data-mode="dark"]) .ch__b li{color:rgba(var(--fg-rgb),.9)}
html:not([data-mode="dark"]) .ch__org{color:rgba(var(--fg-rgb),.82)}
html:not([data-mode="dark"]) .ch__date{color:rgba(var(--fg-rgb),.78)}
@media (min-width:1280px){.ch__t{font-size:2.15rem}}
/* phones: title and year pin to the top, the chapters scroll under them */
@media (max-width:767.98px){
  .story__pin{padding:0 0 1.5rem}
  .story__stage{grid-template-columns:1fr;gap:0}
  .story__clock{top:0;height:auto;margin:0 -1.25rem;padding:calc(4.6rem + 1rem) 1.25rem .9rem;z-index:3;justify-content:flex-start;
    background:#F4F1EE;border-bottom:1px solid rgba(26,24,24,.1);box-shadow:0 10px 16px -12px rgba(26,24,24,.25)}
  html[data-mode="dark"] .story__clock{background:#171515;border-bottom-color:rgba(232,228,224,.08);box-shadow:0 10px 16px -12px rgba(0,0,0,.7)}
  .story__bg,.story__clock .eyebrow{display:none}
  .story__h{margin-top:0;font-size:1.6rem}
  .story__yr{margin-top:.35rem;font-size:clamp(3.4rem,17vw,4.5rem)}
  .story__when{margin-top:.25rem;font-size:.6875rem}
  .story__meter{margin-top:.5rem;font-size:.8125rem}
  .story__line{padding-top:1rem;padding-bottom:6vh}
  .story__list{padding-left:2.1rem}
  .ch{padding:1.75rem 0}
  .ch__t{font-size:1.45rem}
  .ch__org{font-size:.9375rem;margin-bottom:.6rem}
  .ch__b li{font-size:.9375rem}
}
@media (prefers-reduced-motion:reduce){.ch{opacity:1}.dg__c{transition:none}.story__bg{display:none}}

/* ---------- pull cord: light / dark switch ---------- */
.cord{position:fixed;top:0;right:0;width:min(100%,340px);height:520px;z-index:70;pointer-events:none;overflow:hidden}
.cord__cv{position:absolute;inset:0;width:100%;height:100%}
.cord__hit{position:absolute;left:0;top:0;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;pointer-events:auto;touch-action:none;cursor:grab;-webkit-tap-highlight-color:transparent}
.cord__hit:active,.cord.dragging .cord__hit{cursor:grabbing}
.cord__hit:focus-visible{outline:2px solid var(--accent);outline-offset:-10px}
.cord.dragging{cursor:grabbing}

/* ---------- full-screen menu ---------- */
.navm{position:fixed;inset:0;z-index:115;display:flex;flex-direction:column;background:var(--ink);color:#fff;opacity:0;transition:opacity .45s var(--e-spring);overflow:auto}
html[data-mode="dark"] .navm{background:#0F0E0E}
.navm.open{opacity:1}
.navm__top{display:flex;align-items:center;justify-content:space-between;padding-block:1.25rem}
@media (min-width:640px){.navm__top{padding-block:1.5rem}}
.navm__top .brand svg{color:var(--accent-from)}
.close-btn{display:inline-flex;align-items:center;gap:.5rem;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-control);padding:.5rem 1rem;min-height:44px;font-size:.75rem;font-weight:500;
  text-transform:uppercase;letter-spacing:.05em;color:rgba(255,255,255,.7);transition:border-color .25s,color .25s}
.close-btn:hover{border-color:rgba(255,255,255,.4);color:#fff}
.close-btn svg{font-size:.875rem}
.navm__nav{flex:1;display:flex;flex-direction:column;justify-content:center}
.navm__nav ul{display:flex;flex-direction:column;gap:.1rem}
.navm__item{display:flex;align-items:baseline;gap:1rem;width:100%;padding-block:.35rem;text-align:left;font-size:2rem;font-weight:600;letter-spacing:-.02em;
  transform:translateY(1rem);opacity:0;transition:all .5s ease-out;transition-delay:var(--d,0ms)}
.navm.open .navm__item{transform:none;opacity:1}
.navm__item small{font-size:1rem;font-weight:400;color:rgba(255,255,255,.3);transition:color .3s}
.navm__item span{color:rgba(255,255,255,.7);transition:color .3s}
.navm__item:hover small{color:var(--accent-from)}
.navm__item:hover span{color:#fff}
@media (min-width:640px){.navm__item{font-size:3.1rem}}
.navm__bot{display:flex;flex-direction:column;gap:.75rem;border-top:1px solid rgba(255,255,255,.1);padding-block:1.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.025em;color:rgba(255,255,255,.45)}
@media (min-width:640px){.navm__bot{flex-direction:row;justify-content:space-between;align-items:center}}
.navm__bot button{text-align:left;text-transform:uppercase;letter-spacing:.025em;color:rgba(255,255,255,.7)}
.navm__bot button:hover{color:#fff;text-decoration:underline}

/* ---------- start-a-project modal ---------- */
.modal{position:fixed;inset:0;z-index:110;display:flex;align-items:flex-end;justify-content:center;padding:1rem;background:var(--scrim);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  opacity:0;transition:opacity .4s var(--e-spring)}
@media (min-width:640px){.modal{align-items:center}}
.modal.open{opacity:1}
.modal__panel{position:relative;width:100%;max-width:32rem;max-height:calc(100dvh - 2rem);overflow:auto;border-radius:var(--radius-card);background:var(--panel);padding:1.5rem;
  box-shadow:0 0 0 1px var(--line),0 25px 50px -12px rgba(0,0,0,.25);transform:translateY(28px);opacity:0;transition:transform .55s var(--e-spring),opacity .45s var(--e-spring)}
.modal.open .modal__panel{transform:none;opacity:1}
.modal.closing .modal__panel{transform:translateY(18px);opacity:0}
@media (min-width:640px){.modal__panel{padding:2rem}}
.x-btn{position:absolute;right:1rem;top:1rem;width:2.25rem;height:2.25rem;display:grid;place-items:center;border-radius:9999px;background:var(--surface);color:rgba(var(--fg-rgb),.6);font-size:.9rem;transition:background .2s,color .2s}
.x-btn:hover{background:var(--surface-2);color:var(--foreground)}
.mhead{margin-bottom:1.5rem;display:flex;flex-direction:column;gap:.375rem}
.mhead p{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;color:rgba(var(--fg-rgb),.6)}
.mhead p::before{content:"";width:.375rem;height:.375rem;border-radius:9999px;background:var(--accent)}
.mhead h2,.msuccess h2{font-size:1.5rem;font-weight:600;letter-spacing:-.01em;text-wrap:balance}
@media (min-width:640px){.mhead h2{font-size:1.875rem}}
.mform{display:flex;flex-direction:column;gap:1rem}
.mform label{display:flex;flex-direction:column;gap:.4rem}
.mform label>span{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.025em;color:rgba(var(--fg-rgb),.5)}
.mform input,.mform textarea{width:100%;border:1px solid var(--line);background:var(--field);border-radius:var(--radius-control);padding:.75rem 1rem;font:inherit;font-size:.875rem;color:var(--foreground);outline:none;transition:border-color .2s,background .2s}
.mform textarea{resize:none}
.mform input:focus,.mform textarea:focus{border-color:rgba(var(--fg-rgb),.3);background:var(--panel)}
.mform__bot{margin-top:.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}
.mform__bot small{font-size:.75rem;color:rgba(var(--fg-rgb),.45)}
.mform__hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.msuccess{display:flex;flex-direction:column;align-items:center;text-align:center;gap:1rem;padding-block:2rem}
.msuccess__badge{width:3.5rem;height:3.5rem;display:grid;place-items:center;border-radius:9999px;background:var(--ink);color:var(--accent-from);font-size:1.5rem}
html[data-mode="dark"] .msuccess__badge{background:#0F0E0E}
.msuccess p{max-width:34ch;font-size:.875rem;color:rgba(var(--fg-rgb),.72)}
.msuccess__alt{font-size:.8125rem!important}
.msuccess__alt a{color:var(--foreground);text-decoration:underline;text-underline-offset:.2em}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
