/* Koira booking page (flow 6). Every color, the heading face and the radius come from CSS variables the server writes on :root (lib/site/book-looks.ts). */
@font-face{font-family:'Google Sans';src:url(/site/fonts/googlesans.woff2) format('woff2');font-weight:400 800;font-display:swap}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
/* Every color, the heading face and the corner radius come from CSS variables that applyLook() writes on <html>. */
body{background:color-mix(in srgb,var(--pg) 90%,#000);color:var(--ink);font:400 15.5px/1.42 'Google Sans',system-ui,-apple-system,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden}
button{font:inherit;color:inherit;cursor:pointer}
.page{height:100vh;height:100dvh;position:relative;background:var(--pg);color-scheme:var(--cs)}
.page.ph{max-width:460px;margin:0 auto;box-shadow:0 0 0 1px var(--cbd)}
.scr{position:relative;height:100%;min-width:0;min-height:0}
.side{display:none}

/* ---------- screen skeleton: optional top bar, scrolling middle, optional sticky foot ---------- */
.bk{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--pg)}
.bk *{-webkit-tap-highlight-color:transparent}
.sc{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;scroll-behavior:smooth}
.sc::-webkit-scrollbar{display:none}
.hf{font-family:var(--hf);font-weight:var(--hw);text-transform:var(--tt);letter-spacing:var(--ls);line-height:1.02;text-wrap:balance}
.hero{background:var(--hbg);color:var(--hfg);padding:calc(22px + env(safe-area-inset-top,0px)) 20px 22px;box-shadow:0 1px 0 var(--cbd)}
.top{display:flex;align-items:center;gap:10px}
.lg{width:40px;height:40px;border-radius:min(var(--r),12px);background:#fff center/contain no-repeat;box-shadow:0 0 0 1px var(--cbd);flex:none;display:flex;align-items:center;justify-content:center;overflow:hidden}
.nm{font-weight:700;font-size:15.5px;line-height:1.15;flex:1;min-width:0}
.nm small{display:block;font-weight:500;font-size:12.5px;color:var(--hdim)}
.call{height:38px;padding:0 14px;border-radius:var(--br);border:1.5px solid var(--b2b);color:var(--b2f);background:transparent;font-weight:700;font-size:13.5px;display:inline-flex;gap:6px;align-items:center;flex:none;text-decoration:none}
.hero h1{font-size:34px;margin:22px 0 10px}
.hero p{margin:0;color:var(--hdim);font-size:15px}
.trust{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px}
.trust span{display:inline-flex;gap:5px;align-items:center;font-size:12.5px;font-weight:700;padding:5px 10px;border-radius:999px;background:var(--pill);color:var(--pillf)}
.bar{background:var(--hdbg);color:var(--hdfg);padding:calc(12px + env(safe-area-inset-top,0px)) 14px 12px;display:flex;align-items:center;gap:10px;flex:none;box-shadow:0 1px 0 var(--cbd);position:relative;z-index:2}
.bar .bk0{width:36px;height:36px;border-radius:50%;border:0;background:color-mix(in srgb,var(--hdfg) 14%,transparent);color:var(--hdfg);display:flex;align-items:center;justify-content:center;flex:none}
.bar .nm{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar .nm small{font-size:12px;color:inherit;opacity:.72}
.pad{padding:20px}
.lbl{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:0 0 10px}
.h2{font-size:26px;margin:0 0 6px}
.sub{color:var(--dim);margin:0 0 16px;font-size:14.5px}
.foot{flex:none;padding:12px 16px calc(14px + env(safe-area-inset-bottom,0px));background:var(--pg);border-top:1px solid var(--cbd)}
.fine{font-size:11.5px;color:var(--dim);line-height:1.4;margin:10px 2px 0}
.pw{display:flex;justify-content:center;gap:5px;align-items:center;font-size:11px;color:var(--dim);padding:14px 0 4px}
.in{animation:up .32s cubic-bezier(.2,.8,.2,1) both}
@keyframes up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ---------- step 1: open times ---------- */
.slot{width:100%;display:flex;align-items:center;gap:12px;text-align:left;background:var(--card);border:1.5px solid var(--cbd);border-radius:var(--r);padding:14px 16px;margin-bottom:8px;color:var(--ink);transition:transform .12s}
.slot:active{transform:scale(.985)}
.slot .d{flex:1;min-width:0}
.slot b{display:block;font-size:19px;font-weight:700;letter-spacing:-.01em}
.slot small{display:block;color:var(--dim);font-size:13px}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:999px;background:var(--pb);color:var(--pf);white-space:nowrap}
.tag.soft{background:color-mix(in srgb,var(--acc) 14%,var(--card));color:var(--ink)}
.go{width:34px;height:34px;border-radius:50%;background:var(--pb);color:var(--pf);display:flex;align-items:center;justify-content:center;flex:none}
.lnk{background:none;border:0;padding:8px 0;color:var(--ink);font-weight:700;font-size:14.5px;text-decoration:underline;text-underline-offset:3px}
.days{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -20px;padding:2px 20px 10px}
.days::-webkit-scrollbar{display:none}
.day{flex:none;width:62px;padding:9px 0;border-radius:min(var(--r),16px);border:1.5px solid var(--cbd);background:var(--card);color:var(--ink);text-align:center}
.day small{display:block;font-size:11.5px;font-weight:700;color:var(--dim);text-transform:uppercase;letter-spacing:.04em}
.day b{display:block;font-size:19px;font-weight:700}
.day.on{background:var(--pb);border-color:var(--pb);color:var(--pf)}.day.on small{color:var(--pf);opacity:.85}
.tms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.tm{padding:12px 4px;border-radius:min(var(--r),14px);border:1.5px solid var(--cbd);background:var(--card);color:var(--ink);font-weight:700;font-size:14.5px}
.who{display:flex;gap:12px;align-items:center;background:var(--card);color:var(--ink);border:1.5px solid var(--cbd);border-radius:var(--r);padding:12px}
.who img{width:48px;height:48px;border-radius:50%;object-fit:cover;flex:none}
.who b{display:block;font-weight:700;font-size:14.5px}.who small{color:var(--dim);font-size:12.5px;display:block;line-height:1.3}
.urg{margin:18px 0 0;border-radius:var(--r);border:1.5px dashed var(--cbd);padding:13px 14px;display:flex;gap:12px;align-items:center;font-size:13.5px;color:var(--dim)}
.urg b{color:var(--ink);display:block;font-size:14.5px}
.urg .call{border-color:var(--cbd);color:var(--ink);margin-left:auto}

/* ---------- step 2: what is it for ---------- */
.hold{display:flex;align-items:center;gap:10px;background:color-mix(in srgb,var(--acc) 12%,var(--card));border-radius:min(var(--r),16px);padding:12px 14px;margin-bottom:18px;font-size:14px}
.hold b{font-weight:700}
.hold svg{flex:none;color:var(--acc2)}
.hold .tk{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;background:var(--pb);color:var(--pf);border-radius:999px;padding:4px 10px;font-size:13px;white-space:nowrap}
.hold.rq{background:var(--card);box-shadow:inset 0 0 0 1.5px var(--cbd)}
.hold.rq .tk{background:color-mix(in srgb,var(--ink) 12%,var(--card));color:var(--ink)}
.svc{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sv{text-align:left;background:var(--card);border:1.5px solid var(--cbd);border-radius:var(--r);padding:14px;color:var(--ink);display:flex;flex-direction:column;gap:4px;min-height:92px}
.sv b{font-weight:700;font-size:15px;line-height:1.2}
.sv small{color:var(--dim);font-size:12.5px;line-height:1.3;margin-top:auto}
.sv em{font-style:normal;font-weight:700;font-size:13.5px;color:var(--acc2)}
.sv.on{border-color:var(--pb);box-shadow:0 0 0 1.5px var(--pb);background:color-mix(in srgb,var(--acc) 8%,var(--card))}
.fld{display:block;margin-bottom:10px;position:relative}
.fld span{display:block;font-size:12.5px;font-weight:700;margin:0 0 5px 2px}
.fld input{width:100%;height:52px;border-radius:min(var(--r),14px);border:1.5px solid var(--cbd);background:var(--card);color:var(--ink);font:inherit;font-size:16px;padding:0 14px;outline:0}
.fld input:focus{border-color:var(--pb);box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 22%,transparent)}
.fld input::placeholder{color:var(--dim);opacity:.75}
.fld.oth{margin:14px 0 0}
.othr{display:flex;gap:8px}
.othr input{flex:1;min-width:0}
.gobtn{width:52px;height:52px;border-radius:min(var(--r),14px);border:0;background:var(--pb);color:var(--pf);display:flex;align-items:center;justify-content:center;flex:none;transition:opacity .2s}
.gobtn[disabled]{opacity:.35;pointer-events:none}

/* ---------- step 3: where should we come (details, address, map, verdict) ---------- */
.dtl2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 8px}
.sug{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:8;background:var(--card);border:1.5px solid var(--cbd);border-radius:min(var(--r),14px);overflow:hidden;box-shadow:0 18px 40px rgba(0,0,0,.18)}
.sug button{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:12px 14px;border:0;border-bottom:1px solid var(--cbd);background:transparent;color:var(--ink);font-size:14.5px;font-weight:600}
.sug button:last-child{border-bottom:0}
.sug svg{flex:none;color:var(--dim)}
.map{--zh0:136px;--zh1:172px;height:var(--zh0);position:relative;overflow:hidden;background:var(--card);border:1.5px solid var(--cbd);border-radius:var(--r);margin:0 0 10px;transition:height .45s cubic-bezier(.2,.8,.2,1)}
.map.open{height:var(--zh1)}
.map.grow{animation:zgrow .5s cubic-bezier(.2,.8,.2,1) both}
@keyframes zgrow{from{height:var(--zh0)}}
.map .mw{position:absolute;left:0;top:50%;width:100%;aspect-ratio:390/250;transform:translateY(-50%)}
.map .mw>svg{position:absolute;inset:0;width:100%;height:100%}
.map .pin{position:absolute;transform:translate(-50%,-100%)}
.map .pin i{width:34px;height:34px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--pb);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 18px rgba(0,0,0,.25)}
.map .pin i svg{width:16px;height:16px;transform:rotate(45deg);color:var(--pf)}
.map .pin.shop i{background:var(--ink)}.map .pin.shop i svg{color:var(--pg)}
.map .pin.drop{animation:drop .6s cubic-bezier(.2,1.4,.4,1) both}
@keyframes drop{from{transform:translate(-50%,-260%);opacity:0}to{transform:translate(-50%,-100%);opacity:1}}
.map .bd{position:absolute;left:12px;bottom:12px;max-width:calc(100% - 24px);background:var(--pg);color:var(--ink);border-radius:16px;padding:6px 12px;font-size:12.5px;font-weight:700;line-height:1.25;box-shadow:0 6px 18px rgba(0,0,0,.16);display:flex;gap:6px;align-items:flex-start}
.map .bd svg{flex:none;margin-top:1px}
.map .rt{stroke-dasharray:4 7;animation:dash 1.2s linear infinite}
@keyframes dash{to{stroke-dashoffset:-22}}
.zc{display:grid;grid-template-columns:38px minmax(0,1fr);gap:12px;align-items:start;border-radius:var(--r);padding:14px;background:color-mix(in srgb,var(--acc) 10%,var(--card));border:1.5px solid color-mix(in srgb,var(--acc) 34%,var(--cbd));font-size:14px;line-height:1.4}
.zc>i{width:38px;height:38px;border-radius:50%;background:var(--pb);color:var(--pf);display:flex;align-items:center;justify-content:center;font-style:normal}
.zc b{display:block;font-size:16px;font-weight:700;line-height:1.25;margin-bottom:2px}
.zc span{color:var(--dim)}
.zc.far{background:var(--card);border-style:dashed;border-color:var(--cbd)}
.zc.far>i{background:color-mix(in srgb,var(--ink) 12%,var(--card));color:var(--ink)}
.zc .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.sbtn{height:42px;padding:0 16px;border-radius:var(--br);border:0;background:var(--pb);color:var(--pf);font-weight:700;font-size:14px}
.sbtn.g{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--cbd)}
.btn{width:100%;height:56px;border-radius:var(--br);border:0;background:var(--pb);color:var(--pf);font-weight:700;font-size:16.5px;display:flex;align-items:center;justify-content:center;gap:8px;transition:transform .12s,opacity .2s;text-decoration:none}
.btn:active{transform:scale(.985)}
.btn[disabled]{opacity:.38;pointer-events:none}
.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--cbd)}

/* ---------- step 4: booked, or request sent ---------- */
.dn{padding:calc(34px + env(safe-area-inset-top,0px)) 20px 20px;background:var(--hbg);color:var(--hfg)}
.dn .ck{width:56px;height:56px;border-radius:50%;background:var(--hfg);color:var(--hbg);display:flex;align-items:center;justify-content:center;animation:pop .5s cubic-bezier(.2,1.5,.4,1) both}
@keyframes pop{from{transform:scale(0)}to{transform:scale(1)}}
.dn h1{font-size:34px;margin:16px 0 6px}
.dn p{margin:0;color:var(--hdim);font-size:15px}
.tkt{background:var(--card);border:1.5px solid var(--cbd);border-radius:var(--r);overflow:hidden}
.tkt .rw{display:flex;gap:12px;align-items:flex-start;padding:13px 14px;border-bottom:1px solid var(--cbd);font-size:14.5px}
.tkt .rw:last-child{border-bottom:0}
.tkt .rw svg{flex:none;color:var(--acc2);margin-top:2px}
.tkt b{font-weight:700;display:block}.tkt small{color:var(--dim);font-size:12.5px;display:block}
.nx div{display:grid;grid-template-columns:26px minmax(0,1fr);gap:12px;padding-bottom:16px;position:relative;font-size:14px}
.nx div:not(:last-child):before{content:"";position:absolute;left:12px;top:26px;bottom:2px;border-left:2px dashed var(--cbd)}
.nx i{width:26px;height:26px;border-radius:50%;background:color-mix(in srgb,var(--acc) 14%,var(--card));color:var(--acc2);display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:700;font-size:12px}
.nx div.ok i{background:var(--pb);color:var(--pf)}
.nx b{display:block;font-weight:700}.nx small{color:var(--dim);font-size:12.5px;display:block;line-height:1.35}
.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.two .btn{height:50px;font-size:14.5px}

/* ---------- desktop layout: brand panel on the left, the flow on the right ---------- */
.page.dk{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(0,1.2fr)}
.dk .side{display:flex;flex-direction:column;gap:18px;background:var(--hbg);color:var(--hfg);padding:38px 40px 28px;overflow:auto;scrollbar-width:none;box-shadow:1px 0 0 var(--cbd);position:relative;z-index:1;min-width:0}
.side::-webkit-scrollbar{display:none}
.side .top{gap:12px}
.side .lg{width:46px;height:46px}
.side .nm{font-size:17px}.side .nm small{font-size:13px}
.side h1{font-size:clamp(34px,3.4vw,52px);margin:10px 0 0}
.side p{margin:0;color:var(--hdim);font-size:16.5px;max-width:460px}
.side .trust{margin-top:0}
.side .shot{border-radius:var(--r);aspect-ratio:16/9.5;flex:none;background:center 22%/cover;min-height:150px;max-width:560px}
.side .who{max-width:560px}
.side .ft{margin-top:auto;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:13.5px;color:var(--hdim)}
.side .ft b{color:var(--hfg);font-weight:700}
.side .ft .pw{padding:0;color:var(--hdim)}
.dk .bk{left:0;right:0;margin:0 auto;width:min(640px,100%)}
.dk .hero{display:none}
.dk .bar{background:none;color:var(--ink);box-shadow:none;padding:24px 20px 0}
.dk .bar .lg{display:none}
.dk .bar .bk0{background:color-mix(in srgb,var(--ink) 10%,transparent);color:var(--ink)}
.dk .sc>.hero+.pad{padding-top:38px}
.dk .scr .who,.dk .scr .urg{display:none}
.dk .dn{margin:26px 20px 0;padding:28px 24px 24px;border-radius:var(--r)}
.dk .svc{grid-template-columns:repeat(3,minmax(0,1fr))}
.dk .tms{grid-template-columns:repeat(4,minmax(0,1fr))}
.dk .h2{font-size:30px}
.dk .foot{border-top:0;padding:10px 20px 22px}
.dk .map{--zh0:140px;--zh1:236px}
@media (prefers-reduced-motion:reduce){.in,.dn .ck,.map .pin.drop,.map.grow{animation:none}.map .rt{animation:none}}

/* ---------- production additions ---------- */
/* The real map (Leaflet + OpenStreetMap), muted so the look's colors carry the page. */
.map .lm{position:absolute;inset:0;z-index:0;background:var(--card)}
.map .lm .leaflet-tile-pane{filter:grayscale(1) contrast(.92) brightness(1.04);opacity:.8}
.map .lm .leaflet-control-attribution{font-size:9px;background:color-mix(in srgb,var(--pg) 80%,transparent)}
.map .bd{z-index:500}
.kb-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 14px rgba(0,0,0,.28)}
.kb-pin svg{transform:rotate(45deg)}
.nm a{color:inherit;text-decoration:none}
.empty{border-radius:var(--r);border:1.5px dashed var(--cbd);padding:16px;color:var(--dim);font-size:14.5px}
.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:4px}
.err{color:#c0362c;font-size:13.5px;font-weight:700;margin:8px 2px 0}
.two a.btn{color:var(--ink)}

/* "Powered by koira": a frosted pill, a link, the wordmark on the text's line */
.pwr{display:flex;justify-content:center;padding:16px 0 6px}
.pw{display:inline-flex;align-items:baseline;gap:6px;padding:7px 12px 7px 13px;border-radius:999px;font-size:11.5px;font-weight:600;line-height:1;color:var(--dim);text-decoration:none;background:color-mix(in srgb,var(--card) 55%,transparent);border:1px solid color-mix(in srgb,var(--cbd) 80%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4);box-shadow:0 1px 2px rgba(0,0,0,.06);transition:color .15s,border-color .15s}
.pw:hover{color:var(--ink);border-color:var(--cbd)}
.pw span{display:block}
.pw svg[role=img]{display:inline-block;height:11px;width:auto;flex:none} /* the wordmark's bottom edge is its baseline: it sits on the text's line */
.pw>svg:last-child{display:block;flex:none;margin-left:-1px;align-self:center}
.side .ft .pwr{padding:0}
.side .ft .pw{padding:7px 12px 7px 13px;color:var(--hdim);background:color-mix(in srgb,var(--hfg) 10%,transparent);border-color:color-mix(in srgb,var(--hfg) 22%,transparent)}
.side .ft .pw:hover{color:var(--hfg)}
