/* EmCat Does Hair: the public site. The page is Em's color swatch ring, fanned
   open. Every section is one swatch card in its own dye. */
:root{--pad:clamp(20px,4.6vw,64px);--rc:clamp(26px,3.4vw,44px)}
body.home{background:var(--black)}

.skip{position:absolute;left:16px;top:-70px;background:var(--black);color:#fff;padding:12px 18px;z-index:30;border-radius:999px;font-weight:700}
.skip:focus{top:12px}

/* --------------------------------------------------------------- buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 28px;background:var(--black);color:#fff;border:2px solid var(--black);border-radius:999px;font-weight:700;font-stretch:88%;font-size:17px;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:transform .3s var(--ease),background .2s,color .2s,border-color .2s}
.btn:hover{background:var(--hov);color:var(--black)}
.btn:active{transform:translateY(2px) scale(.98)}
.btn.ghost{background:transparent;color:inherit;border-color:currentColor}
.btn.ghost:hover{background:var(--black);color:#fff;border-color:var(--black)}
.btn.light{background:#fff;color:var(--black);border-color:#fff}
.btn.light:hover{background:var(--yellow);border-color:var(--yellow)}
.btn[disabled]{opacity:.5;cursor:default}
.link{background:none;border:0;color:inherit;text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:2px;cursor:pointer;min-height:44px;padding:0 2px;font-size:15.5px;font-weight:600}
.link[disabled]{opacity:.4;cursor:default;text-decoration:none}
.ar{width:8px;height:12px;display:inline-block;vertical-align:-1px;margin:0 4px}
.muted{color:var(--soft,var(--quiet))}

/* ------------------------------------------------------- the swatch card */
.card{position:relative;background:var(--bg);color:var(--fg);padding:clamp(72px,8.5vw,128px) var(--pad) calc(clamp(64px,8vw,120px) + var(--rc));border-radius:var(--rc) var(--rc) 0 0;margin-top:calc(var(--rc) * -1)}
.card-in{max-width:1240px;margin:0 auto}
/* the punched eyelet every card hangs from */
.card::before{content:"";position:absolute;top:22px;left:50%;width:30px;height:30px;margin-left:-15px;border-radius:50%;background:var(--under,var(--black));box-shadow:inset 0 4px 0 rgba(14,14,18,.3)}
.em{--under:var(--orchid)}.fresh{--under:var(--sky)}.menu{--under:var(--black)}.fresh[hidden]+.menu{--under:var(--sky)}.bookcard{--under:var(--yellow)}.walkin{--under:var(--magenta)}.find{--under:var(--blue)}.foot{--under:#fff}
.card>.shade{position:absolute;top:34px;right:calc(var(--pad) * .42);writing-mode:vertical-rl;font-weight:700;font-stretch:80%;font-size:13px;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap}
.c-orchid{--bg:var(--orchid);--fg:var(--black);--soft:#4A0C45}
.c-sky{--bg:var(--sky);--fg:var(--black);--soft:#0B3A52}
.c-yellow{--bg:var(--yellow);--fg:var(--black);--soft:#453B00;--hov:#fff}
.c-magenta{--bg:var(--magenta);--fg:#fff;--soft:#fff}
.c-blue{--bg:var(--blue);--fg:#fff;--soft:#DDE2FF}
.c-black{--bg:var(--black);--fg:#fff;--soft:#C9C4D4}
.c-white{--bg:#fff;--fg:var(--black);--soft:var(--quiet)}
.c-magenta :focus-visible,.c-blue :focus-visible,.c-black :focus-visible{outline-color:#fff}

.card h2{font-family:var(--shout);font-weight:400;font-size:clamp(2.3rem,5.2vw,4.5rem);line-height:.98;letter-spacing:-.015em;text-transform:uppercase;text-wrap:balance}
.sub{margin-top:16px;font-size:clamp(18px,1.45vw,21px);font-weight:500;line-height:1.4;max-width:44ch}
.two{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(28px,6vw,96px);align-items:center}
.acts{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}

/* a photo, printed glossy and tipped onto the card */
.snap{background:#fff;padding:10px;border-radius:26px;box-shadow:var(--lift);transform:rotate(var(--tilt,0deg));transform-origin:50% 0;transition:transform 1s var(--ease)}
.snap img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;border-radius:17px}
.snap.side{justify-self:center;width:min(400px,100%)}
/* cards swing in from the eyelet as they come into view (page.js adds .pre below the fold) */
.pre .snap,.pre .finder,.pre .cbform{transform:rotate(calc(var(--tilt,0deg) - 7deg))}
.pre .post{transform:rotate(-5deg)}

/* ------------------------------------------------------------------ hero */
.hero{border-radius:0;margin-top:0;padding-top:0;overflow:hidden}
.hero::before{display:none}
.topline{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 0 0;font-weight:700;font-stretch:85%;font-size:14px;letter-spacing:.1em;text-transform:uppercase;position:relative;z-index:7}
.topline nav{display:flex;gap:clamp(14px,2.4vw,30px)}
.topline p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topline a{white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;min-height:44px;border-bottom:2px solid transparent;transition:border-color .2s}
.topline a:hover{border-bottom-color:currentColor}
.hero-in{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);gap:clamp(12px,3vw,40px);align-items:center;min-height:clamp(540px,calc(100svh - 150px),760px)}
.hero-copy{position:relative;z-index:6}
h1{font-family:var(--shout);font-weight:400;font-size:clamp(4rem,min(11.2vw,19vh),10.2rem);line-height:.9;letter-spacing:-.02em;text-transform:uppercase;margin-right:-14vw}
h1 span{display:block}
.lede{margin-top:24px;font-size:clamp(18px,1.5vw,22px);font-weight:500;line-height:1.35;max-width:27ch}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.live{display:inline-flex;align-items:center;gap:10px;margin-top:22px;padding:10px 18px 10px 14px;background:#fff;border-radius:999px;font-weight:600;font-size:15.5px;box-shadow:0 10px 18px -12px rgba(14,14,18,.6);font-variant-numeric:tabular-nums}
.live::before{content:"";flex:none;width:11px;height:11px;border-radius:50%;background:#12A150}
.live b{font-weight:800}

/* the ring: six dye cards and Em, hung from one hoop and fanned */
.ring{position:relative;height:clamp(430px,64vh,640px);align-self:start;margin:clamp(86px,13vh,120px) 0 0 -9vw;--w:clamp(200px,21vw,286px);--k:1}
.ring:hover{--k:1.12}
.hoop{position:absolute;left:50%;top:-74px;width:108px;height:108px;margin-left:-54px;border:7px solid var(--black);border-radius:50%;pointer-events:none}
/* the near side of the ring runs in front of the cards and into the eyelet; the far side stays behind them */
.hoop.front{z-index:6;clip-path:inset(0 50% 0 0)}
.chip{position:absolute;top:0;left:50%;width:var(--w);height:100%;margin-left:calc(var(--w) / -2);border-radius:30px;background:var(--c);color:var(--t,var(--black));transform-origin:50% 34px;transform:rotate(calc(var(--r) * var(--k)));box-shadow:inset 0 2px 0 rgba(255,255,255,.3),0 20px 30px -18px rgba(14,14,18,.6);transition:transform .8s var(--ease);animation:fan 1.2s var(--ease) both;animation-delay:calc(var(--i) * 70ms)}
@keyframes fan{from{transform:rotate(0deg)}}
.chip::before{content:"";position:absolute;top:20px;left:50%;width:28px;height:28px;margin-left:-14px;border-radius:50%;background:var(--orchid);box-shadow:inset 0 3px 0 rgba(14,14,18,.28)}
.chip .shade{position:absolute;bottom:30px;writing-mode:vertical-rl;font-weight:700;font-stretch:80%;font-size:13px;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap}
.chip.l .shade{left:14px;transform:rotate(180deg)}
.chip.r .shade{right:14px}
.chip.photo{background:#fff;z-index:5;display:flex;flex-direction:column;padding:62px 10px 0}
.chip.photo img{flex:1;min-height:0;width:100%;object-fit:cover;object-position:50% 22%;border-radius:8px 8px 20px 20px}
.chip.photo figcaption{padding:11px 4px 14px;font-weight:700;font-stretch:80%;font-size:13px;letter-spacing:.16em;text-transform:uppercase;text-align:center}

/* -------------------------------------------------------------------- em */
.em .two{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}
.snaps{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:end}
.snaps .a{grid-column:1/9;grid-row:1}
.snaps .b{grid-column:7/13;grid-row:1;margin-bottom:-9%;z-index:2}
.says p{max-width:52ch;margin-top:16px}
.says .big{margin-top:22px;font-size:clamp(20px,1.9vw,26px);font-weight:600;line-height:1.3;max-width:30ch}

/* ------------------------------------------------------------- instagram */
.headrow{display:flex;justify-content:space-between;align-items:end;flex-wrap:wrap;gap:20px 32px}
.feed{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.4vw,18px);margin-top:clamp(28px,4vw,48px)}
.post{position:relative;display:flex;flex-direction:column;background:#fff;color:var(--black);border-radius:22px;padding:8px 8px 0;text-decoration:none;transform-origin:50% 0;transition:transform .7s var(--ease)}
.post:hover,.post:focus-visible{transform:translateY(-6px) rotate(-1.2deg)}
.post:nth-child(even):hover,.post:nth-child(even):focus-visible{transform:translateY(-6px) rotate(1.2deg)}
.post img{width:100%;flex:1;min-height:0;aspect-ratio:4/5;object-fit:cover;border-radius:15px;background:#E9E3EC}
.post .cap{margin:10px 6px 12px;font-size:14px;font-weight:500;line-height:1.35;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
.post .vid{position:absolute;top:18px;right:18px;width:30px;height:30px;border-radius:50%;background:var(--black);color:#fff;display:grid;place-items:center}
.post:first-child{grid-column:span 2;grid-row:span 2}
.post:first-child .cap{font-size:16px}

/* ------------------------------------------------- menu: the level finder */
.menu .two{grid-template-columns:minmax(0,7fr) minmax(0,4fr);align-items:start}
.menu .snap.side{position:sticky;top:28px;margin-top:clamp(0px,6vw,90px)}
.finder{--fp:clamp(18px,3vw,40px);position:relative;background:#fff;color:var(--black);border-radius:30px;padding:70px var(--fp) clamp(24px,3vw,40px);margin:clamp(26px,3.6vw,44px) 28px 0 0;box-shadow:var(--lift);transform-origin:40px 36px;transition:transform 1s var(--ease)}
.finder::before{content:"";position:absolute;top:22px;left:26px;width:28px;height:28px;border-radius:50%;background:var(--yellow);box-shadow:inset 0 3px 0 rgba(14,14,18,.28)}
.mgroup+.mgroup{margin-top:34px}
.mgroup h3{font-family:var(--shout);font-weight:400;font-size:clamp(1.25rem,2vw,1.65rem);line-height:1;text-transform:uppercase;padding-bottom:10px;border-bottom:3px solid var(--black)}
.mrow{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 16px;align-items:baseline;padding:15px 0 10px;border-bottom:1.5px solid rgba(14,14,18,.16)}
/* the tuft on the card's edge, one dye per row */
.mrow::after{content:"";position:absolute;top:7px;bottom:7px;right:calc(-1 * var(--fp) - 26px);width:calc(var(--fp) + 18px);background:var(--dye,var(--orchid));border-radius:3px 14px 14px 3px;transform:skewY(-5deg);box-shadow:inset 0 2px 0 rgba(255,255,255,.3)}
.mrow:nth-of-type(6n+2)::after{--dye:var(--blue)}
.mrow:nth-of-type(6n+3)::after{--dye:var(--magenta)}
.mrow:nth-of-type(6n+4)::after{--dye:var(--sky)}
.mrow:nth-of-type(6n+5)::after{--dye:var(--purple)}
.mrow:nth-of-type(6n+6)::after{--dye:var(--black)}
.mgroup:nth-of-type(even) .mrow:nth-of-type(6n+1)::after{--dye:var(--purple)}
.mgroup:nth-of-type(even) .mrow:nth-of-type(6n+2)::after{--dye:var(--orchid)}
.mgroup:nth-of-type(even) .mrow:nth-of-type(6n+3)::after{--dye:var(--black)}
.mgroup:nth-of-type(even) .mrow:nth-of-type(6n+4)::after{--dye:var(--blue)}
.mrow .mn{font-size:clamp(19px,1.7vw,22px);font-weight:800;font-stretch:92%;line-height:1.2}
.mrow .mt{font-size:15px;font-weight:600;color:var(--quiet);font-variant-numeric:tabular-nums;white-space:nowrap}
.mrow .mb{grid-column:1/-1;font-size:15.5px;color:#48434F;max-width:52ch}
.mrow .mbook{grid-column:1/-1;justify-self:start;display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.mrow .mbook:hover{background:var(--yellow)}

/* ------------------------------------------------------------------ book */
.bookcard .btn{background:#fff;color:var(--black);border-color:#fff}
.bookcard .btn:hover{background:var(--yellow);border-color:var(--yellow)}
.notice{margin-top:18px;padding:12px 18px;background:#fff;color:var(--black);border-radius:16px;font-weight:600;max-width:48ch}
.preview{list-style:none;margin:clamp(22px,3vw,34px) 0 26px;counter-reset:p;max-width:520px;border-top:2px solid rgba(255,255,255,.5)}
.preview li{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:center;padding:13px 0;border-bottom:2px solid rgba(255,255,255,.5);font-size:clamp(18px,1.6vw,21px);font-weight:600;line-height:1.25;counter-increment:p}
.preview li::before{content:counter(p);font-family:var(--shout);font-size:26px;line-height:1}
.start{min-height:64px;padding:0 44px;font-size:20px}
.bookstart .qhint{margin-top:16px;color:var(--soft);font-size:15.5px}
.bookstart .helper{margin-top:4px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:15.5px;color:var(--soft)}
.bookstart .helper .link{color:#fff}

/* ------------------------------------------------------------- call back */
.cbform{display:grid;gap:16px;background:#fff;color:var(--black);border-radius:30px;padding:clamp(22px,3.4vw,40px);box-shadow:var(--lift);transform:rotate(var(--tilt,0deg));transform-origin:50% 0;transition:transform 1s var(--ease)}
.cbform :focus-visible{outline-color:var(--black)}
.cbform label,.fields label{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 8px;font-size:14.5px;font-weight:700}
.hint{font-size:13px;font-weight:500;color:var(--quiet)}
.cbform input,.fields input,.fields textarea{flex:1 0 100%;width:100%;min-height:50px;border:2px solid var(--black);border-radius:14px;background:#fff;padding:10px 14px;font-size:17px;font-weight:500;color:var(--black)}
.fields textarea{resize:vertical}
.cbform input:focus,.fields input:focus,.fields textarea:focus{outline:3px solid var(--black);outline-offset:2px;background:#FFFBD1}
.cbform [aria-invalid="true"],.fields [aria-invalid="true"],.pform [aria-invalid="true"]{border-color:var(--bad)}
.cbform .btn{justify-self:start}
.cbform .ok{font-size:22px;font-weight:800;font-stretch:90%;line-height:1.2}
.hp{position:absolute !important;left:-9999px;width:1px;height:1px;overflow:hidden}
.err{color:var(--bad);font-size:15px;font-weight:600}
.err:empty{display:none}

/* ------------------------------------------------------------------ find */
.find .two{align-items:start}
.find address{font-style:normal;margin-top:22px;font-size:clamp(19px,1.7vw,23px);font-weight:500;line-height:1.5}
.hourstable{width:100%;border-collapse:collapse;border-top:3px solid var(--black);font-variant-numeric:tabular-nums;margin-top:10px}
.hourstable th,.hourstable td{padding:14px 10px;border-bottom:1.5px solid rgba(14,14,18,.16);text-align:left;font-weight:500;font-size:18px}
.hourstable th{font-weight:800;font-stretch:92%}
.hourstable td{text-align:right}
.hourstable tr.today th,.hourstable tr.today td{background:var(--yellow)}
.hourstable tr.today th::after{content:"today";margin-left:10px;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}

/* ------------------------------------------------------------------ foot */
.foot{padding-top:clamp(72px,8vw,110px);padding-bottom:44px;text-align:center}
.foot .card-in{display:grid;gap:14px;justify-items:center}
.footmark{font-family:var(--shout);font-size:clamp(1.6rem,4.4vw,3.2rem);line-height:1;text-transform:uppercase}
.foot .muted{font-size:14px;max-width:60ch}
.foot .admin{font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;border:2px solid rgba(255,255,255,.45);padding:0 18px;border-radius:999px;min-height:44px;display:inline-flex;align-items:center;transition:border-color .2s}
.foot .admin:hover{border-color:#fff}

/* ------------------------------------------- the booking box: a formula card */
html:has(.bookdlg[open]){overflow:hidden}
.bookdlg{margin:auto;padding:0;border:0;border-radius:30px;background:#fff;color:var(--black);width:min(720px,calc(100vw - 24px));max-height:min(90vh,880px);overflow:hidden;display:none;flex-direction:column;box-shadow:0 40px 80px -30px rgba(14,14,18,.75)}
.bookdlg[open]{display:flex;animation:dlgIn .6s var(--ease)}
.bookdlg::backdrop{background:rgba(200,15,146,.92)}
@keyframes dlgIn{from{transform:rotate(-5deg) translateY(36px)}}
.bookdlg{transform-origin:50% 0}
.dlg-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 14px 12px 26px;border-bottom:3px solid var(--black);flex:none}
.dlg-head{position:relative}
.dlg-head::before{content:"";position:absolute;top:50%;left:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:var(--magenta);box-shadow:inset 0 3px 0 rgba(14,14,18,.3)}
.dlg-head h2{font-family:var(--shout);font-weight:400;font-size:clamp(1.25rem,2.6vw,1.7rem);line-height:1;text-transform:uppercase}
.dlg-x{width:46px;height:46px;display:grid;place-items:center;background:none;border:0;border-radius:50%;cursor:pointer;color:var(--black);transition:background .2s}
.dlg-x svg{width:15px;height:15px}
.dlg-x:hover{background:var(--yellow)}
.dlg-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:6px 26px 26px;overscroll-behavior:contain;scrollbar-color:var(--black) #fff}

/* answered lines stay on the card, written in pen */
.trail{list-style:none;margin-top:10px}
.trail:empty{display:none}
.tr{display:grid;grid-template-columns:78px minmax(0,1fr) auto;align-items:baseline;gap:2px 12px;padding:8px 0 6px;border-bottom:2px dashed rgba(14,14,18,.28)}
.tq{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--quiet)}
.ta{font-family:var(--hand);font-size:27px;line-height:1.1;color:var(--pen)}
.tchg{font-size:14px;min-height:40px}
.q{margin-top:20px;animation:open .5s var(--ease)}
.q:empty{display:none}
@keyframes open{from{transform:translateY(-8px)}}
.qh{font-weight:800;font-stretch:88%;font-size:clamp(25px,3.2vw,32px);line-height:1.1;outline:0}
.qhint{margin-top:6px;font-size:15.5px;color:var(--quiet)}
.opts{margin-top:14px;display:grid;gap:8px}
.opt{width:100%;display:grid;gap:2px;text-align:left;background:#fff;border:2px solid var(--black);border-radius:16px;padding:12px 16px;min-height:56px;cursor:pointer;color:var(--black);transition:background .2s,transform .3s var(--ease)}
.opt .ot{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:19px;font-weight:700;line-height:1.2}
.opt .os{font-size:14px;color:var(--quiet);line-height:1.4}
.opt:hover,.opt:focus-visible{background:var(--yellow)}
.opt:active{transform:scale(.98)}
.opts.grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
.opts.grid .opt,.opts.times .opt{text-align:center;justify-items:center;padding:10px 12px}
.opts.grid .ot,.opts.times .ot{justify-content:center}
.qpart{margin-top:18px;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--quiet)}
.opts.times{grid-template-columns:repeat(auto-fill,minmax(98px,1fr));margin-top:8px}
.opts.times .opt{min-height:48px;border-radius:999px}
.opts.times .ot{font-size:17px;font-variant-numeric:tabular-nums}
.qmore{display:flex;gap:18px;margin-top:10px}
.q .closed{padding:28px 0;text-align:center;font-weight:700;font-size:21px}
.q .closed a{font-size:16px}

/* services: tick as many as you like; a ticked row is dyed */
.picks .qpart{margin-top:18px}
.pick{display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;column-gap:12px;min-height:56px;margin-top:8px;padding:10px 16px 10px 14px;border:2px solid var(--black);border-radius:16px;cursor:pointer;transition:background .25s}
.pick:hover{background:var(--yellow)}
.pick input{appearance:none;-webkit-appearance:none;width:26px;height:26px;margin:0;border:2px solid var(--black);border-radius:50%;background:#fff center/14px no-repeat;cursor:pointer}
.pick input:checked{background-color:var(--black);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M2 7.5 5.6 11 12 3.5' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.pick .pn{font-size:19px;font-weight:700;line-height:1.2}
.pick .pt{font-size:14px;color:var(--quiet);text-align:right;font-variant-numeric:tabular-nums}
.pick:has(input:checked){background:var(--orchid)}
.pick:has(input:checked) .pt{color:#4A0C45}
.pick:has(input:focus-visible){outline:3px solid var(--black);outline-offset:2px}
.pick input:focus-visible{outline:0}
.svcbar{position:sticky;bottom:-26px;margin:16px -26px 0;padding:14px 26px 16px;background:#fff;border-top:3px solid var(--black)}
.total{min-height:26px;font-size:17px;font-weight:500;line-height:1.35}
.total b{font-weight:800}
.total .tl-muted{color:var(--quiet);font-size:15.5px}
.entry-actions{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;margin-top:14px}
.btn .ar{margin-left:4px}

/* days without enough room stay on the card, struck through, and explain themselves when tapped */
.opt.nofit{color:var(--quiet);border-style:dashed;border-color:rgba(14,14,18,.45)}
.opt.nofit .ot{font-weight:600;text-decoration:line-through;text-decoration-thickness:2px}
.opt.nofit:hover,.opt.nofit:focus-visible{background:#F3EEF5}
.fitmsg{display:none;margin-top:14px;padding:12px 16px;background:var(--yellow);border-radius:14px;font-size:15.5px;font-weight:500;line-height:1.45}
.fitmsg.on{display:block;animation:open .4s var(--ease)}
.fitmsg .link{min-height:0;padding:0;font-weight:800}

/* Kit: the helper. One question a screen, big buttons */
.pres{display:grid;grid-template-columns:48px minmax(0,1fr);column-gap:14px;align-items:start}
.pmono{position:relative;width:48px;height:44px;margin-top:8px;border-radius:50% 50% 46% 46%;display:grid;place-items:center;background:var(--black);color:var(--yellow);font-family:var(--shout);font-size:19px;line-height:1}
.pmono::before,.pmono::after{content:"";position:absolute;top:-7px;width:18px;height:18px;background:var(--black);border-radius:3px 12px 3px 3px;z-index:-1}
.pmono::before{left:3px;transform:rotate(-78deg)}
.pmono::after{right:3px;transform:rotate(-12deg)}
.pres{isolation:isolate}
.pbubble .qhint{font-size:16px;color:var(--black)}
.pbubble .qhint b{font-weight:800}
.pbubble .bad{color:var(--bad);font-weight:600}
.opts.big{gap:10px;margin-top:18px}
.opt.big{padding:15px 18px;min-height:64px}
.opt.big .ot{font-size:21px}
.opt.big .os{font-size:15px}
.opt.big.quiet{border-color:rgba(14,14,18,.4)}
.opt.big.quiet .ot{font-weight:600;font-size:18px}
.pform{display:flex;gap:12px;align-items:end;margin-top:18px;flex-wrap:wrap}
.pform label{flex:1 1 220px;display:grid}
.pform input{width:100%;min-height:54px;border:2px solid var(--black);border-radius:14px;background:#fff;padding:10px 14px;font-size:20px;font-weight:600}
.pform input:focus{outline:3px solid var(--black);outline-offset:2px;background:#FFFBD1}
.pform .btn{min-height:54px}
.pfoot{display:flex;flex-wrap:wrap;gap:4px 22px;margin-top:22px;padding-top:10px;border-top:2px dashed rgba(14,14,18,.28);font-size:15.5px;align-items:center}
.pfoot a{min-height:44px;display:inline-flex;align-items:center;font-weight:600}

.entry{margin-top:20px;animation:open .5s var(--ease)}
.entry-head{font-weight:800;font-stretch:88%;font-size:clamp(25px,3.2vw,32px);line-height:1.1;margin-bottom:14px}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}
.fields .wide{grid-column:1/-1}
.fields label.opt{display:flex;flex-wrap:nowrap;align-items:center;gap:12px;width:auto;border:0;border-radius:0;padding:0;min-height:44px;background:none;font-size:15.5px;font-weight:600;cursor:pointer}
.fields label.opt:hover{background:none}
.fields label.opt input{width:24px;height:24px;min-height:0;padding:0;margin:0;accent-color:var(--black);flex:none}

/* the finished formula card: a white card on the yellow, your name written in */
.dlg-body:has(.done:not([hidden])) .trail{display:none}
.dlg-body:has(.done:not([hidden])){background:var(--yellow);scrollbar-color:var(--black) var(--yellow)}
.done{padding-top:clamp(18px,3vw,26px);animation:open .6s var(--ease) both}
.done:focus{outline:0}
.fcard{position:relative;background:#fff;border-radius:20px;padding:58px clamp(16px,3vw,26px) 20px;box-shadow:var(--lift);transform:rotate(-1.4deg);transform-origin:50% 0;margin-bottom:22px;animation:hang .9s var(--ease) both}
@keyframes hang{from{transform:rotate(-7deg)}}
.fcard::before{content:"";position:absolute;top:18px;left:50%;width:26px;height:26px;margin-left:-13px;border-radius:50%;background:var(--yellow);box-shadow:inset 0 3px 0 rgba(14,14,18,.3)}
.fc-top{display:flex;justify-content:space-between;gap:12px;padding-bottom:8px;border-bottom:3px solid var(--black);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.done-h{margin-top:14px;font-family:var(--hand);font-size:clamp(36px,6vw,50px);line-height:1;color:var(--pen)}
.done-h .ink{display:inline-block;clip-path:inset(0 100% 0 0);animation:ink 1.2s var(--ease) .35s forwards}
@keyframes ink{to{clip-path:inset(0 0 0 0)}}
.fc-line{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;align-items:baseline;padding:10px 0 6px;border-bottom:2px dashed rgba(14,14,18,.28)}
.fc-l{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--quiet)}
.fc-v{font-family:var(--hand);font-size:27px;line-height:1.1;color:var(--pen)}
.fc-note{margin-top:12px;font-size:15.5px;font-weight:600}
.done>p+p{margin-top:10px}
.done-links a{font-weight:700}
.done .btn{margin-top:6px}

/* ------------------------------------------------- the small pages (/visit, 404) */
body.slip{background:var(--orchid);min-height:100svh;display:grid;place-items:center;padding:clamp(20px,5vw,56px) 16px}
.slipcard{position:relative;width:min(620px,100%);background:#fff;border-radius:30px;padding:74px clamp(22px,5vw,44px) clamp(26px,5vw,44px);box-shadow:var(--lift);display:grid;gap:18px}
.slipcard::before{content:"";position:absolute;top:24px;left:50%;width:28px;height:28px;margin-left:-14px;border-radius:50%;background:var(--orchid);box-shadow:inset 0 3px 0 rgba(14,14,18,.28)}
.slipcard .fc-top a{text-decoration:none}
.slipcard h1{font-size:clamp(2.2rem,8vw,3.6rem);margin-right:0}
.vrow{display:grid;grid-template-columns:86px minmax(0,1fr);gap:12px;align-items:baseline;padding:10px 0 8px;border-bottom:2px dashed rgba(14,14,18,.28)}
.vrow dt{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--quiet)}
.vrow dd{font-family:var(--hand);font-size:27px;line-height:1.15;color:var(--pen)}
.vrow dd small{display:block;font-family:var(--talk);font-size:15.5px;line-height:1.4;color:var(--black);margin-top:2px}
.vcancel .s-cancelled dd{text-decoration:line-through;text-decoration-thickness:2px}
.vacts{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center}

/* ------------------------------------------------------------- narrower */
@media (max-width:860px){
  .two,.em .two,.menu .two{grid-template-columns:1fr}
  .hero-in{grid-template-columns:1fr;min-height:0;gap:0}
  .ring{order:-1;height:clamp(236px,66vw,340px);--w:clamp(132px,38vw,196px);margin:68px 0 0}
  .hoop{top:-58px;width:84px;height:84px;margin-left:-42px;border-width:6px}
  .chip{border-radius:22px;transform-origin:50% 26px}
  .chip::before{top:14px;width:22px;height:22px;margin-left:-11px}
  .chip .shade{font-size:11px;bottom:20px}
  .chip.l .shade{left:9px}.chip.r .shade{right:9px}
  .chip.photo{padding:44px 7px 0}
  .chip.photo figcaption{font-size:11px;padding:8px 2px 10px}
  h1{font-size:clamp(3.2rem,18.6vw,6rem);margin:18px 0 0}
  .lede{margin-top:16px;max-width:34ch}
  .hero-cta{margin-top:20px}
  .topline nav a:not([href^="tel"]){display:none}
  .topline{font-size:12px;letter-spacing:.06em;gap:10px}
  .snaps{max-width:520px}
  .snap.side{width:min(340px,82%)}
  .menu .snap.side{position:static;margin-top:0}
  .menu .snap.side{justify-self:start}
  .bookcard .snap.side{justify-self:start}
  .feed{grid-template-columns:repeat(2,minmax(0,1fr))}
  .card>.shade{top:30px;right:5px;font-size:10.5px}
}
@media (max-width:560px){
  .fields{grid-template-columns:1fr}
  .bookdlg{width:100vw;max-width:none;height:100dvh;max-height:none;border-radius:0}
  .dlg-head{padding:10px 10px 8px 20px}
  .dlg-head::before{display:none} /* full-screen on phones: not a card, so no eyelet */
  .dlg-body{padding:4px 20px 26px}
  .svcbar{margin:16px -20px 0;padding:12px 20px 14px}
  .pick{grid-template-columns:26px minmax(0,1fr)}
  .pick .pt{grid-column:2;text-align:left}
  .opts.grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tr{grid-template-columns:minmax(0,1fr) auto}
  .tq{grid-column:1}.ta{grid-column:1}.tchg{grid-column:2;grid-row:1/3;align-self:center}
  .btn{padding:0 22px}
  .hourstable th,.hourstable td{font-size:16.5px;padding:13px 6px}
}
