/* Jujuba Pets booking page — the console's own palette (SPEC §45). built-by: Claude Code · 2026-09-17
   SPEC §82 (2026-09-29): the cream + confetti of OMAN's picture as the page, the corgi and the puppy running in a small circle on top,
   and every box held inside the card on a phone. SPEC §83 (2026-09-30): OMAN's video took the drawn dogs' place. */
:root{--accent:#f489a3;--accent-2:#f8c8d6;--bg:#f7efe7;--text:#121212;--card:#fffefb;--bad:#a8271f;--coral:#f06a63;}
*{box-sizing:border-box;}
/* the picture's background: cream, with its sparkles, circles and coral dots scattered faintly across the page */
body{margin:0;color:var(--text);font-family:'Quicksand',Arial,sans-serif;font-weight:500;font-size:16px;
  background-color:var(--bg);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220'%3E%3Cg opacity='.28'%3E%3Cpath d='M40 22c.8 5.6 1.6 6.4 7.2 7.2-5.6.8-6.4 1.6-7.2 7.2-.8-5.6-1.6-6.4-7.2-7.2 5.6-.8 6.4-1.6 7.2-7.2z' fill='%231d1d1f'/%3E%3Cpath d='M168 132c.6 4.2 1.2 4.8 5.4 5.4-4.2.6-4.8 1.2-5.4 5.4-.6-4.2-1.2-4.8-5.4-5.4 4.2-.6 4.8-1.2 5.4-5.4z' fill='%231d1d1f'/%3E%3Ccircle cx='150' cy='40' r='4' fill='%23f06a63'/%3E%3Ccircle cx='60' cy='160' r='4' fill='%23f06a63'/%3E%3Ccircle cx='110' cy='96' r='3.4' fill='none' stroke='%231d1d1f' stroke-width='1.6'/%3E%3Ccircle cx='196' cy='196' r='3.4' fill='none' stroke='%231d1d1f' stroke-width='1.6'/%3E%3C/g%3E%3C/svg%3E");
  background-size:220px 220px;}
.bk{max-width:620px;margin:0 auto;padding:18px 16px 48px;}
.bk-head{text-align:center;margin-bottom:14px;}
/* SPEC §86 (OMAN 2026-09-30): "change ✦ JUJUBA PETS back to fully filled words instead of Hollow on the inside" — §85's size, filled;
   one line down to a 320px phone */
.bk-brand{font-weight:700;letter-spacing:.12em;font-size:min(34px,9.4vw);white-space:nowrap;}
/* §85: inside the card. §86: the title is a sentence now ("Appointment Invitation Valid for 48 Hours") — two lines at most on a phone */
h1{margin:0 0 14px;font-size:30px;text-align:center;line-height:1.15;}
h1[hidden]{display:none;}
.bk-status{text-align:center;font-weight:700;}
.bk-status.bk-note{font-weight:500;line-height:1.5;margin:0;}   /* the expired invitation's note — words to read, not an error */
.bk-card{background:var(--card);border:2px solid var(--text);border-radius:22px;padding:22px;box-shadow:rgba(0,0,0,.2) 8px 8px 0 0;}
.bk-card[hidden]{display:none;}
/* ⛔ SPEC §82: "Date of arriving is too long and overlapping the side of the outer frame" — a grid track's minimum is its content's
   width, and a phone's date box has a wide built-in one. minmax(0, …) lets the track shrink; the box drops its native width. */
.bk-row{display:grid;gap:12px;margin-bottom:12px;grid-template-columns:minmax(0,1fr);}
.bk-row.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
.bk-row.sal{grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr);}
@media (max-width:480px){ .bk-row.two,.bk-row.sal{grid-template-columns:minmax(0,1fr);} .bk-card{padding:18px 16px;} h1{font-size:24px;} }
label,.bk-lbl{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:700;min-width:0;}
label i,.bk-lbl i{color:#e0445f;font-style:normal;}
.bk-lbl small{font-weight:500;opacity:.7;}
/* SPEC §85: "Where did you see us" — several answers: a button that opens a list of ticks */
.bk-multi{position:relative;min-width:0;}
.bk-multi-btn{font:inherit;font-size:16px;width:100%;min-height:47px;text-align:left;padding:10px 34px 10px 12px;border:2px solid var(--text);border-radius:12px;
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23121212' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 12px center;
  color:var(--text);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bk-multi-btn:focus{outline:3px solid var(--accent);outline-offset:1px;}
.bk-multi-list{position:absolute;z-index:5;left:0;right:0;top:calc(100% + 4px);max-height:260px;overflow:auto;background:#fff;border:2px solid var(--text);
  border-radius:12px;padding:6px;box-shadow:rgba(0,0,0,.18) 4px 4px 0 0;}
.bk-multi-list[hidden]{display:none;}
.bk-opt{flex-direction:row;align-items:center;gap:10px;font-weight:600;font-size:15px;padding:8px 8px;border-radius:9px;cursor:pointer;}
.bk-opt:hover{background:#faf5e4;}
.bk-opt input{width:20px;height:20px;flex:none;margin:0;}
input,select{font:inherit;font-size:16px;padding:10px 12px;border:2px solid var(--text);border-radius:12px;background:#fff;color:var(--text);
  width:100%;min-width:0;max-width:100%;display:block;}
input[type=date]{-webkit-appearance:none;appearance:none;min-height:47px;text-align:left;}
input[type=date]::-webkit-date-and-time-value{text-align:left;}
input:focus,select:focus{outline:3px solid var(--accent);outline-offset:1px;}
.bk-err{color:var(--bad);font-weight:700;font-size:13px;min-height:18px;margin:8px 0;}
.bk-btn{width:100%;font:inherit;font-weight:700;font-size:17px;padding:13px;border:2px solid var(--text);border-radius:181px;background:var(--accent);
  color:var(--text);cursor:pointer;box-shadow:rgba(0,0,0,.15) 0 4.5px 0 0;}
.bk-btn:hover{background:#f07897;}
.bk-btn:disabled{opacity:.55;cursor:wait;}
.bk-main[hidden]{display:none;}
.bk-done{text-align:center;}
.bk-done h2{margin:0 0 12px;font-size:28px;}
.bk-code{display:inline-block;font-size:38px;font-weight:700;letter-spacing:.14em;border:3px dashed var(--text);border-radius:16px;padding:10px 22px;
  background:var(--accent-2);margin:4px 0 10px;}
.bk-when{font-weight:700;font-size:18px;margin:0 0 16px;}
.bk-done-note{margin:0 0 12px;line-height:1.5;font-size:14.5px;}
.bk-done-note:last-child{margin-bottom:0;}
/* SPEC §87 (OMAN 2026-10-01): "disappear the video … move the entire message box to the center of the screen" — once confirmed the
   video leaves, the brand stays at the top, and the card sits in the exact middle: equal padding above and below a full-height
   column, so its centre is the screen's (a card taller than the screen simply scrolls). */
.bk.is-done{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding-top:76px;padding-bottom:76px;}
.bk.is-done .bk-scene{display:none;}
.bk.is-done .bk-head{position:absolute;top:18px;left:0;right:0;margin:0;}

/* SPEC §87: THE TIME WHEEL — hour · minute · AM/PM. Three native scrollers that snap; the pink band marks the middle row, which is
   the choice. ⛔ 44px is ROW in book.js — the two move together. */
.bk-wheel{position:relative;display:grid;grid-template-columns:1fr 1fr 1fr;height:132px;border:2px solid var(--text);border-radius:12px;background:#fff;overflow:hidden;}
.bk-wheel::before{content:"";position:absolute;left:6px;right:6px;top:44px;height:44px;border-radius:9px;background:var(--accent-2);pointer-events:none;}
.bk-wheel-col{position:relative;height:132px;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;text-align:center;}
.bk-wheel-col::-webkit-scrollbar{display:none;}
.bk-wheel-col::before,.bk-wheel-col::after{content:"";display:block;height:44px;}      /* room for the first and the last row to reach the middle */
.bk-wheel-col div{height:44px;line-height:44px;scroll-snap-align:center;font-size:19px;font-weight:700;opacity:.3;cursor:pointer;
  -webkit-user-select:none;user-select:none;}
.bk-wheel-col div.on{opacity:1;}
.bk-wheel-col:focus-visible{outline:3px solid var(--accent);outline-offset:-3px;border-radius:10px;}
.bk-row[hidden]{display:none;}

/* SPEC §83 (2026-09-30) OMAN's video in the drawn dogs' place, 440px wide at most. §84: the video FILLS the box; object-position is the
   part chosen in the console. §85: "shows more part of the video 15% higher on top and 15% on bottom" — 236 × 1.3 = 307 → 420:307.
   The video takes no pointer: no right-click "Save video as", no drag-out. */
.bk-scene{display:block;width:100%;max-width:440px;margin:2px auto 0;aspect-ratio:420/307;}
.bk-scene video{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%;border-radius:18px;background:var(--bg);
  pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
