/* INFINIT© — base styles (all pages)
   Port of the design handoff: shared.css + kit.css + kit2.css, same cascade order.
   Prototype-only rules removed (#ctl, liquid glass, unused .orb/.seq/.th/old preloader). */

/* ---------- Fonts (self-hosted) ---------- */
@font-face{font-family:Satoshi;src:url(/assets/site/fonts/Satoshi-Variable.woff2) format("woff2"),url(/assets/site/fonts/Satoshi-Variable.woff) format("woff");font-weight:300 900;font-display:swap}
@font-face{font-family:Geist;src:url(/assets/site/fonts/Geist-900.woff2) format("woff2");font-weight:900;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}

/* ---------- shared ---------- */
:root{--bg:oklch(.975 .002 85);--l1:oklch(.91 .003 85);--t2:#8C8B8C;--t3:oklch(.45 .003 85);--t4:oklch(.16 .004 85);--d0:oklch(.14 .012 245);--d1:oklch(.24 .009 245);--d2:oklch(.52 .009 245);--d3:oklch(.7 .009 245);--d4:oklch(.95 .004 245);--pad:clamp(20px,3vw,44px)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--t4);font-family:Satoshi,sans-serif;font-size:16px;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none;transition:color .2s}@media (hover:hover){a:hover{color:var(--t3)}}
@media (hover:hover){.dark a:hover{color:var(--d3)}}
img{display:block;width:100%;height:100%;object-fit:cover}
h1,h2,h3,p{margin:0}
/* INFINIT© wordmark: inline SVG outlines (see .site/wordmark.mjs). Fixed sizes set their height; .wm-fit fills the width. */
.wm{display:block;fill:currentColor;flex:none}
.wm-fit{width:100%;height:auto}
.lbl{font-size:13px;font-weight:500;color:var(--t3);line-height:1.5}
.dark{background:var(--d0);color:var(--d4)}.dark .lbl{color:var(--d3)}
.em{color:var(--t2)}.em b{color:var(--t4);font-weight:inherit}
.dark .em{color:var(--t2)}.dark .em b{color:var(--d4)}
.img{background:var(--l1);overflow:hidden;position:relative}
.dark .img{background:var(--d1)}
.dots{display:inline-flex;gap:5px;vertical-align:middle}.dots i{width:7px;height:7px;border-radius:50%;display:block}
.mq{overflow:hidden;padding:28px 0;-webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.mq-t{display:flex;gap:clamp(30px,3.4vw,54px);width:max-content;align-items:center;animation:mq 45s linear infinite}
.mq img{height:26px;width:auto;object-fit:contain;filter:grayscale(1) brightness(0);opacity:.55}
.mq.on-d img,.dark .mq img{filter:grayscale(1) brightness(0) invert(1);opacity:.6}
.mq.off .mq-t,.xp-r.off .xp-t{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.ft{padding:clamp(60px,8vw,110px) var(--pad) 28px}
.ft-g{display:grid;grid-template-columns:2fr 1fr 1.4fr 1.2fr;gap:32px}
.ft-g>div{display:flex;flex-direction:column;gap:8px;font-size:15px}
.ft-g a{padding:4px 0}
.ft-g .lbl{margin-bottom:8px}
.aw{display:flex;gap:18px;align-items:center}.aw img{height:22px;width:auto;object-fit:contain;filter:grayscale(1) brightness(0) invert(1);opacity:.8}
.ft-b{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-top:clamp(60px,8vw,120px);padding-top:20px;border-top:1px solid var(--d1)}
@media(max-width:820px){.ft-g{grid-template-columns:1fr 1fr}}
.fl{display:flex;gap:2px}
.fl a{font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;opacity:.75;cursor:pointer;padding:6px 8px;border-radius:99px;transition:opacity .3s,background .3s}
@media (hover:hover){.fl a:hover{opacity:1;color:inherit}}.fl a.on{opacity:1;background:oklch(1 0 0 / .1)}
html,body{overflow-x:clip}
/* Canvas behind the page is dark: iOS Safari tints its status bar / overscroll / area under the toolbar with it */
html{background:var(--d0)}.aw{flex-wrap:wrap}
@media(max-width:820px){.ft-g{grid-template-columns:1fr 1fr!important}}@media(max-width:520px){.ft-g{grid-template-columns:1fr!important}}
@media(max-width:760px){.ft-b{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;align-items:center}.ft-b>*{justify-self:start}.ft-b>*:nth-child(even){justify-self:end;text-align:right}.fl{margin:0 -8px}}
.ft{position:relative}
.ft-hl{position:absolute;left:0;right:0;top:0;height:3px;overflow:hidden;z-index:3}.ft-hl i{position:absolute;inset:0;background:oklch(.72 .05 165);animation:ln1 20s linear infinite;animation-delay:var(--lnd,0s);transform:scaleX(0);transform-origin:0 50%;transition:transform 1.6s cubic-bezier(.7,0,.2,1)}.ft-hl.in i{transform:none}
/* Colour line ("One colour"): one service colour at a time, short crossfades, 20s loop.
   --lnd = -(Date.now() % 20000)ms (set in <head>) keeps the colour in sync across pages. */
@keyframes ln1{0%,16%{background-color:oklch(.72 .05 165)}20%,36%{background-color:oklch(.72 .05 255)}40%,56%{background-color:oklch(.72 .05 285)}60%,76%{background-color:oklch(.72 .05 30)}80%,96%{background-color:oklch(.72 .05 88)}100%{background-color:oklch(.72 .05 165)}}

/* ---------- kit ---------- */
.cur{position:fixed;left:0;top:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:#fff;mix-blend-mode:difference;pointer-events:none;z-index:300;display:grid;place-items:center;transition:width .4s cubic-bezier(.2,.7,.2,1),height .4s cubic-bezier(.2,.7,.2,1),margin .4s cubic-bezier(.2,.7,.2,1);font:600 12px Satoshi,sans-serif;color:#000;letter-spacing:-.01em}
.cur.big{width:92px;height:92px;margin:-46px 0 0 -46px}
.cur span{opacity:0;transition:opacity .2s}.cur.big span{opacity:1}
@media(hover:none){.cur{display:none}}
.dock{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:60;display:flex;white-space:nowrap;width:max-content;align-items:center;gap:2px;padding:6px;border-radius:99px;background:oklch(.975 .002 85 / .5);-webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6);box-shadow:0 12px 40px oklch(.14 .012 245 / .14);font-size:14px;font-weight:500;color:var(--t4);transition:background .4s,color .4s,box-shadow .4s}
.dock a,.dock span.k{padding:10px 15px;border-radius:99px}
.dock .wmk{padding:10px 14px 10px 16px}
.dock .go{background:var(--t4);color:var(--bg);padding:10px 18px}@media (hover:hover){.dock .go:hover{color:var(--bg)}}
.dock.dk{background:oklch(.14 .012 245 / .45);color:var(--d4);box-shadow:0 12px 40px #0006}
.dock.dk .go{background:var(--d4);color:var(--d0)}@media (hover:hover){.dock.dk a:hover{color:var(--d3)}}
.rw{display:inline-grid;overflow:hidden;vertical-align:top;line-height:1.2}
.rw>span{grid-area:1/1;transition:transform .5s cubic-bezier(.7,0,.2,1)}
.rw>span+span{transform:translateY(105%)}
@media (hover:hover){.roll:hover .rw>span:first-child{transform:translateY(-105%)}}@media (hover:hover){.roll:hover .rw>span+span{transform:none}}
.seg{display:inline-flex;position:relative;padding:4px;border-radius:99px;background:oklch(.16 .004 85 / .06);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.seg button,.seg a{position:relative;z-index:1;border:0;background:none;font:500 14px Satoshi,sans-serif;padding:9px 16px;border-radius:99px;cursor:pointer;color:var(--t3);transition:color .35s}
.seg button.on,.seg a.on{color:var(--bg)}
.seg>i{position:absolute;top:4px;bottom:4px;left:4px;border-radius:99px;background:var(--t4);transition:left .5s cubic-bezier(.7,0,.2,1),width .5s cubic-bezier(.7,0,.2,1)}
.dark .seg{background:oklch(1 0 0 / .08)}.dark .seg button,.dark .seg a{color:var(--d3)}.dark .seg button.on,.dark .seg a.on{color:var(--d0)}.dark .seg>i{background:var(--d4)}
.mag{transition:transform .5s cubic-bezier(.2,.7,.2,1)}
/* Reveal states only apply when JS runs (html.js) — without JS everything stays visible. */
.rv{transition:opacity 1.1s cubic-bezier(.2,.7,.2,1),transform 1.1s cubic-bezier(.2,.7,.2,1)}.js .rv:not(.in){opacity:0;transform:translateY(48px)}
.js [data-lines]:not(.ls){visibility:hidden}
.chip{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:99px;font-size:13px;font-weight:500;background:oklch(1 0 0 / .18);color:#fff;-webkit-backdrop-filter:blur(14px) saturate(1.5);backdrop-filter:blur(14px) saturate(1.5)}
.chip i{width:7px;height:7px;border-radius:50%;display:block}
@media(max-width:760px){.dock a.roll:not(.go){display:none}}
/* Ambient colour: one service hue tints the page almost imperceptibly */
:root{--h:85;--ac:.002}
/* The light ambient ground lives on <main>; <body> is dark so iOS Safari tints its status bar and
   the edges around its floating toolbar dark (it samples the body background). */
body{background:var(--d0)}
main{background:var(--bg)}
/* Text selection: always the Strategy green (hue 165) */
::selection{background:oklch(.86 .07 165);color:var(--t4)}
.cur.big{background:oklch(.92 min(.025,calc(var(--ac)*2.3)) var(--h));mix-blend-mode:normal;color:var(--t4);box-shadow:0 10px 30px oklch(.5 .05 var(--h) / .22)}
.dock .amb{width:8px;height:8px;border-radius:50%;background:oklch(.72 .08 165);margin:0 6px 0 2px;transition:background 1.4s} /* always the Strategy green */

/* ---------- kit 2 · frosted buttons, menu, preloader, lines, clip, toast ---------- */
html.sm{scroll-behavior:auto}
/* Scroll lock (menu, Quick look, preloader). It has to sit on <html>: html,body{overflow-x:clip}
   stops body's overflow from reaching the page scroller, so body.lock alone locked nothing. */
html:has(>body.lock){overflow:hidden;scrollbar-gutter:stable}
.gbtn{display:inline-flex;align-items:center;gap:10px;padding:13px 20px;border-radius:99px;font:500 15px Satoshi,sans-serif;color:var(--t4);background:oklch(1 0 0 / .42);-webkit-backdrop-filter:blur(16px) saturate(1.6);backdrop-filter:blur(16px) saturate(1.6);border:0;cursor:pointer;white-space:nowrap;transition:background .5s,border-color .5s,box-shadow .5s}
@media (hover:hover){.gbtn:hover{color:var(--t4);background:oklch(.92 .045 var(--bh,var(--h)) / .75);box-shadow:0 14px 40px -16px oklch(.6 .09 var(--bh,var(--h)) / .5)}}
.dark .gbtn{color:var(--d4);background:oklch(1 0 0 / .1)}
@media (hover:hover){.dark .gbtn:hover{color:var(--d4);background:oklch(.8 .07 var(--bh,var(--h)) / .25)}}
.gbtn .ar{display:inline-block;transition:transform .55s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover){.gbtn:hover .ar{transform:translate(3px,-3px)}}
@media (hover:hover){:is(a,button):hover>.roll .rw>span:first-child{transform:translateY(-105%)}}
@media (hover:hover){:is(a,button):hover>.roll .rw>span+span{transform:none}}
.dock{height:52px;box-sizing:border-box;transition:transform .7s cubic-bezier(.7,0,.2,1),opacity .5s,background .4s,color .4s}.dock.hid{transform:translate(-50%,calc(100% + 40px));opacity:0;pointer-events:none}.dock.hid:focus-within{transform:translateX(-50%);opacity:1;pointer-events:auto}
.dock button{border:0;background:none;font:inherit;color:inherit;cursor:pointer;padding:10px 15px;border-radius:99px}
@media (hover:hover){.dock a:not(.go):not(.wmk):hover,.dock button:hover{background:oklch(.92 .04 var(--h) / .7);color:var(--t4)}}
@media (hover:hover){.dock.dk a:not(.go):not(.wmk):hover,.dock.dk button:hover{background:oklch(1 0 0 / .1);color:var(--d4)}}
.dock .mb{display:none}
@media(max-width:760px){.dock .dl{display:none}.dock .mb{display:block}.dock{bottom:14px}}
.seg.sm{padding:3px}.seg.sm button,.seg.sm a{padding:6px 11px;font-size:12px}.seg.sm>i{top:3px;bottom:3px}
.toast{position:fixed;left:50%;bottom:86px;z-index:320;transform:translate(-50%,20px);opacity:0;pointer-events:none;padding:12px 18px;border-radius:99px;font:500 14px Satoshi,sans-serif;color:var(--t4);background:oklch(1 0 0 / .6);-webkit-backdrop-filter:blur(18px) saturate(1.6);backdrop-filter:blur(18px) saturate(1.6);box-shadow:0 16px 40px -14px oklch(.14 .012 245 / .3);display:flex;gap:10px;align-items:center;transition:opacity .4s,transform .6s cubic-bezier(.2,.7,.2,1)}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast i{width:8px;height:8px;border-radius:50%;background:oklch(.72 .09 var(--h))}
.lm{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}
.li{display:inline-block;transform:translateY(108%);transition:transform 1.15s cubic-bezier(.2,.7,.2,1)}
.lin .li{transform:none}
.clip{transition:clip-path 1.3s cubic-bezier(.7,0,.2,1)}
.clip img{transition:transform 1.8s cubic-bezier(.2,.7,.2,1)}
.js .clip:not(.in){clip-path:inset(100% 0 0 0)}.js .clip:not(.in) img{transform:scale(1.25)}
.clip.in{clip-path:inset(0 0 0 0)}
.pre2{position:fixed;inset:0;z-index:500;background:var(--d0);color:var(--d4);display:grid;grid-template-rows:1fr auto auto;padding:22px var(--pad);clip-path:inset(0 0 0 0);transition:clip-path 1.1s cubic-bezier(.7,0,.2,1)}
.pre2.out{clip-path:inset(0 0 100% 0)}
.pre2-m{place-self:center;width:min(64vw,980px);overflow:hidden;padding:.06em 0}
.pre2 .wm path{transform-box:fill-box;transform:translateY(115%);animation:rise 1.1s cubic-bezier(.2,.7,.2,1) forwards}
.pre2 .wm path:nth-child(2){animation-delay:.06s}.pre2 .wm path:nth-child(3){animation-delay:.12s}.pre2 .wm path:nth-child(4){animation-delay:.18s}.pre2 .wm path:nth-child(5){animation-delay:.24s}.pre2 .wm path:nth-child(6){animation-delay:.3s}.pre2 .wm path:nth-child(7){animation-delay:.36s}.pre2 .wm path:nth-child(8){animation-delay:.42s}
@keyframes rise{to{transform:none}}
.pre2-b{display:flex;justify-content:space-between;align-items:flex-end}
.pre2-n{font:900 clamp(40px,6vw,96px)/.8 Geist,sans-serif;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.pre2-l{height:2px;background:var(--d1);margin-top:18px;position:relative}.pre2-l i{position:absolute;inset:0;transform-origin:0 0;transform:scaleX(0);background:oklch(.72 .05 165);animation:ln1 20s linear infinite;animation-delay:var(--lnd,0s)}
/* Menu: circular reveal from the burger (origin + radius in px, set by site.js). Once open the clip is
   dropped (.is-open) so nothing can stay cut off if Safari resizes the viewport; closing plays it back. */
.menu{position:fixed;inset:0;z-index:55;clip-path:circle(0px at var(--mx,50%) var(--my,calc(100% - 40px)));transition:clip-path .9s cubic-bezier(.7,0,.2,1),visibility 0s .9s;visibility:hidden}
.menu-open .menu{clip-path:circle(var(--mr,150vmax) at var(--mx,50%) var(--my,calc(100% - 40px)));visibility:visible;transition:clip-path 1s cubic-bezier(.7,0,.2,1)}
.menu.is-open{clip-path:none}
.menu-i{height:100%;display:flex;flex-direction:column;padding:22px var(--pad) 110px;overflow-y:auto;overscroll-behavior:contain}
.menu-t{display:flex;justify-content:space-between;align-items:center}
.menu-l{margin:auto 0;display:flex;flex-direction:column}
.menu-l a{display:grid;grid-template-columns:44px 1fr auto;align-items:center;overflow:hidden;border-top:1px solid var(--d1)}
.menu-l a:last-child{border-bottom:1px solid var(--d1)}
.menu-l .mt{display:block;font-size:clamp(52px,14vw,150px);letter-spacing:-.06em;font-weight:700;line-height:1;padding:8px 0 12px;transform:translateY(110%);transition:transform 1s cubic-bezier(.2,.7,.2,1) calc(var(--i)*.07s + .3s)}
.menu-open .menu-l .mt{transform:none}
.menu-l i{width:14px;height:14px;border-radius:50%;background:oklch(.72 .05 var(--bh));transform:scale(0);transition:transform .5s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover){.menu-l a:hover i{transform:scale(1)}}@media (hover:hover){.menu-l a:hover{color:var(--d4)}}
.menu-b{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;opacity:0;transition:opacity .6s .6s}
.menu-open .menu-b{opacity:1}
.dock .b3{display:none}
@media(max-width:760px){.dock .mb{position:relative;width:48px;height:40px;padding:0;display:grid;place-items:center}.dock .mb .roll{display:none}
.dock .b3{display:block;position:relative;width:20px;height:14px}.dock .b3 i{position:absolute;left:0;right:0;height:2px;border-radius:2px;background:currentColor;transition:transform .55s cubic-bezier(.7,0,.2,1),opacity .3s,top .55s cubic-bezier(.7,0,.2,1),background .4s}
.dock .b3 i:nth-child(1){top:0}.dock .b3 i:nth-child(2){top:6px}.dock .b3 i:nth-child(3){top:12px}
.menu-open .dock .mb{background:oklch(.7 .14 28 / .16)}
.menu-open .dock .b3 i{background:oklch(.7 .14 28)}.menu-open .dock .b3 i:nth-child(1){top:6px;transform:rotate(45deg)}.menu-open .dock .b3 i:nth-child(2){opacity:0;transform:scaleX(0)}.menu-open .dock .b3 i:nth-child(3){top:6px;transform:rotate(-45deg)}}
@media(max-width:760px){.dock{gap:8px}.dock .wmk{margin-right:-4px}}
.dock .go{transition:background .5s,color .5s,box-shadow .5s,transform .5s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover){.dock .go:hover,.dock.dk .go:hover{background:oklch(.9 .06 var(--h));color:var(--t4);box-shadow:0 10px 30px -12px oklch(.6 .09 var(--h) / .6)}}
.dock .dl{position:relative}.dock .dl::after{content:"";position:absolute;left:50%;bottom:4px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:currentColor;transform:scale(0);transition:transform .5s cubic-bezier(.2,.7,.2,1)}.dock .dl.on::after{transform:scale(1)}
.menu-l a.on i{transform:scale(1)}.menu-l a.on{color:var(--d4)}
/* Menu + dock dots: the current section keeps its dot; on desktop hovering a link brings its dot in and nudges the label. */
.menu-l.rdy .mt{transition:transform .6s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover){.menu-l.rdy a:hover .mt{transform:translateX(18px)}.menu-l a:hover i{transform:scale(1.25)}.menu-l a.on:hover i{transform:scale(1.25)}
.dock .dl:hover::after{transform:scale(1)}}

/* ---------- production additions ---------- */
/* Skip link */
.skip{position:fixed;left:12px;top:12px;z-index:600;padding:12px 18px;border-radius:99px;background:var(--t4);color:var(--bg);font-weight:500;transform:translateY(-200%);transition:transform .3s}
.skip:focus{transform:none;color:var(--bg)}
/* Visible focus on every interactive element (keyboard only) */
/* The pill radius is for controls only: it used to land on sections / the menu panel focused by script
   (tabindex=-1) too, and Safari then drew them with rounded 99px corners (the "curves" after the menu). */
:is(a,button,[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:99px}
.dark :is(a,button,[tabindex]):focus-visible,.dock.dk :focus-visible{outline-color:var(--d4)}
/* Sections focused by in-page links / the menu panel (tabindex=-1) are not controls: no ring, no radius. */
[tabindex="-1"]:not(a):not(button):focus{outline:none}
.img:focus-visible,.fc:focus-visible,.tap:focus-visible{border-radius:14px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
/* Reduced motion: no preloader, no smooth scroll, instant reveals/flips, no marquees */
@media (prefers-reduced-motion:reduce){
 *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0s!important;scroll-behavior:auto!important}
 .rv,.li,.clip,.clip img{opacity:1!important;transform:none!important;clip-path:none!important}
 .mq-t,.xp-t{animation:none!important}
 .ft-hl i{transform:none}
 .cur{display:none}
}
/* Cookie consent — frosted card above the dock (same glass as the toast) */
/* Same glass as the dock (light / .dk dark auto-contrast, toggled by site.js) */
.ck{position:fixed;left:50%;bottom:86px;z-index:58;width:min(560px,calc(100vw - 24px));display:flex;align-items:center;gap:16px;padding:10px 10px 10px 20px;border-radius:16px;font:500 14px/1.4 Satoshi,sans-serif;color:var(--t4);background:oklch(.975 .002 85 / .5);-webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6);box-shadow:0 12px 40px oklch(.14 .012 245 / .14);opacity:0;transform:translate(-50%,20px);transition:opacity .4s,transform .6s cubic-bezier(.2,.7,.2,1),background .4s,color .4s,box-shadow .4s}
.ck.on{opacity:1;transform:translate(-50%,0)}
.ck[hidden]{display:none}
.ck p{flex:1;margin:0;color:var(--t3)}
.ck-a{display:flex;gap:4px;flex:none}
.ck button{border:0;font:inherit;cursor:pointer;padding:10px 16px;border-radius:99px;white-space:nowrap;transition:background .5s,color .5s,box-shadow .5s}
.ck-no{background:none;color:var(--t3)}@media (hover:hover){.ck-no:hover{color:var(--t4);background:oklch(.16 .004 85 / .06)}}
.ck-ok{background:var(--t4);color:var(--bg)}
@media (hover:hover){.ck-ok:hover{background:oklch(.9 .06 var(--h));color:var(--t4);box-shadow:0 10px 30px -12px oklch(.6 .09 var(--h) / .6)}}
.menu-open .ck,.qk-open .ck{opacity:0;pointer-events:none}
.ck.dk{background:oklch(.14 .012 245 / .45);color:var(--d4);box-shadow:0 12px 40px #0006}.ck.dk p{color:var(--d3)}
.ck.dk .ck-no{color:var(--d3)}@media (hover:hover){.ck.dk .ck-no:hover{color:var(--d4);background:oklch(1 0 0 / .1)}}.ck.dk .ck-ok{background:var(--d4);color:var(--d0)}
@media(max-width:760px){.ck{bottom:76px;flex-direction:column;align-items:stretch;gap:10px;padding:14px}.ck-a{justify-content:flex-end}}

/* Touch: no 300ms/double-tap heuristics or grey flash on controls */
a,button,[role=button],.fc,.tap{touch-action:manipulation;-webkit-tap-highlight-color:transparent}

/* Edge-to-edge on notched phones (viewport-fit=cover): keep UI clear of the status bar / home indicator */
:root{--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--bar:0px}
/* iOS 26+ Safari: height of the zone under the floating bottom toolbar, below 100lvh (no CSS/JS API exposes it; measured on device) */
.bar{--bar:58px}
.dock{bottom:calc(18px + var(--sab))}
@media(max-width:760px){.dock{bottom:calc(14px + var(--sab))}}
.toast{bottom:calc(86px + var(--sab))}
.ck{bottom:calc(86px + var(--sab))}
@media(max-width:760px){.ck{bottom:calc(76px + var(--sab))}}
.menu-i{padding-top:max(22px,calc(var(--sat) + 10px))}
.pre2{padding-top:max(22px,calc(var(--sat) + 10px));padding-bottom:max(22px,calc(var(--sab) + 10px))}
.ft{padding-bottom:calc(28px + var(--sab))}
/* Dock labels: Satoshi sits ~1.5px high when centred by its line box — nudge 1px down (optical centring) */
.dock a,.dock span.k{padding-top:11px;padding-bottom:9px}
.dock .go{padding:11px 18px 9px}
.dock .wmk{padding:10px 14px 10px 16px}
