@import url('https://fonts.googleapis.com/css2?family=Cardo:wght@400;700&family=Inter:wght@400;500;600&family=Noto+Sans+JP:wght@400;500&family=Noto+Serif+JP:wght@400&display=swap');
@import url('./interaction.css');
@import url('./typography.css');
:root{--paper:#f9f8f6;--ink:#1a1a1a;--orange:#e37222;--line:#d8d5cf}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.7 Inter,'Noto Sans JP',sans-serif}a{color:inherit}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #292d28}button{cursor:pointer}h1,h2,h3,.brand{font-family:Cardo,'Noto Serif JP',serif;font-weight:400}h1{font-size:clamp(38px,4.5vw,64px);line-height:1.1;margin:18px 0 24px}h2{font-size:32px;line-height:1.2}h3{font-size:28px;line-height:1.25;margin:0 0 12px}p{margin:0 0 16px}header{display:flex;align-items:center;justify-content:space-between;padding:28px 5%;gap:20px;border-bottom:1px solid var(--line)}.brand{font-size:22px;text-decoration:none;white-space:nowrap}nav{display:flex;gap:30px;align-items:center}nav a{font-family:Cardo,serif;text-decoration:none}nav .lang{font:12px Inter,sans-serif;display:flex;gap:8px}.lang button{border:0;padding:0;background:none;color:inherit}.lang button[aria-pressed=true]{text-decoration:underline;text-underline-offset:4px}.press{background:#eeece7;text-align:center;padding:7px 15px;font:12px/1.5 Cardo,serif}.press a{text-decoration:none}.preview{margin:0;padding:8px 5%;font-size:11px;background:#eeeae3;color:#555}main{max-width:1320px;margin:auto;padding:64px 5% 100px}.kicker{font-size:11px;letter-spacing:.13em;text-transform:uppercase}.intro{max-width:540px;color:#62605b;font-size:15px}.class-list{margin-top:55px}.class-row{display:grid;grid-template-columns:38% 1fr;gap:6%;padding:44px 0;border-top:1px solid var(--line);align-items:center}.class-row img{width:100%;aspect-ratio:1.55;object-fit:cover}.class-row .body{max-width:490px}.class-row .facts{display:flex;gap:24px;flex-wrap:wrap;margin:22px 0;color:#5b5752;font-size:12px}.class-row .links{display:flex;align-items:center;gap:28px;margin-top:26px}.link{display:inline-block;text-underline-offset:5px}.button{display:inline-block;background:var(--orange);border:0;border-radius:0;padding:15px 28px;color:#fff;text-decoration:none;line-height:1.6;text-align:center;font-size:13px}.button:hover{background:#c75f17}.button.secondary{color:var(--ink);background:#ece9e3}.button:disabled{cursor:not-allowed;background:#aaa69f}.detail-hero{display:grid;grid-template-columns:1.2fr 1fr;gap:7%;align-items:center;margin-top:35px}.detail-hero img{width:100%;height:570px;object-fit:cover}.detail-copy{max-width:460px}.facts-table{margin:32px 0}.facts-table div,.price-line{display:flex;justify-content:space-between;gap:28px;border-top:1px solid var(--line);padding:14px 0}.facts-table dt{color:#6b6862}.facts-table dd{margin:0;text-align:right}.below-detail{max-width:740px;margin:70px auto 0}.below-detail h2{margin:40px 0 20px}.flow{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:8%;align-items:start;margin-top:45px}.flow-content{min-width:0}.steps{display:flex;gap:24px;padding:0;margin:0 0 25px;list-style:none;font-size:11px;color:#827b70}.steps .current{color:var(--ink);border-bottom:1px solid;padding-bottom:5px}.booking-heading{font-size:38px;margin:0 0 28px}.summary{position:sticky;top:28px;padding-left:28px;border-left:1px solid var(--line)}.summary img{width:100%;aspect-ratio:1.6;object-fit:cover;margin-bottom:22px}.summary h3{font-size:25px}.summary .muted,.note{font-size:12px;color:#67645d;line-height:1.7}.summary dl{font-size:12px;margin:20px 0}.summary dl div{display:flex;justify-content:space-between;gap:15px;padding:7px 0}.summary dd{margin:0;text-align:right}.summary .total{font-size:18px;border-top:1px solid var(--line);margin-top:15px;padding-top:18px}.summary .total dd{font-weight:500}.choice{display:flex;gap:24px;padding:18px 0;margin:12px 0 26px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.choice label{cursor:pointer}.choice input{accent-color:var(--orange);margin-right:8px}.field{display:block;margin:24px 0}.field>span{display:block;font-size:12px;margin-bottom:8px}.field input,.field select,.field textarea{width:100%;padding:13px 14px;border:1px solid #bdb9b0;background:transparent;border-radius:0;color:var(--ink);min-height:48px}.field textarea{min-height:110px;resize:vertical}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:22px}.two-fields .field{margin-top:12px}.week{display:flex;gap:0;margin:15px 0 25px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:auto}.week button{flex:1;min-width:62px;background:none;border:0;border-right:1px solid var(--line);padding:16px 10px;font-size:12px}.week button:last-child{border-right:0}.week button small,.week button strong{display:block}.week button strong{font:24px Cardo,serif;margin:5px 0}.week button[aria-pressed=true]{background:var(--ink);color:white}.week button:disabled{color:#a29c91;cursor:not-allowed}.date-class{padding:18px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:16px}.date-class label{display:flex;align-items:center;gap:12px}.date-class input{accent-color:var(--orange)}.date-class small{display:block;color:#79746b;font-size:11px}.date-class .price{white-space:nowrap;font-size:12px}.actions{display:flex;gap:25px;align-items:center;margin-top:35px}.empty{padding:25px 0}.notice{padding:18px 0;border-top:1px solid var(--line);margin-top:25px;font-size:12px}.consent{display:flex;gap:12px;align-items:start;margin:25px 0;font-size:12px}.consent input{accent-color:var(--orange);margin-top:5px}.success{padding:20px 0;max-width:680px}.success h1{font-size:56px}.review-detail{padding:25px 0;border-top:1px solid var(--line)}.error{color:#a53321;font-size:12px;min-height:1.7em}.footer{border-top:1px solid var(--line);padding:35px 5%;display:flex;justify-content:space-between;gap:30px;font-size:12px;color:#68635b}.footer .brand{color:var(--ink);font-size:20px}.mobile-summary{display:none}body[lang=ja] h1{line-height:1.4;font-size:44px}body[lang=ja] h3{font-size:25px}body[lang=ja] nav a{font-family:'Noto Serif JP',serif}
@media(max-width:800px){header{padding:22px 6%}.brand{font-size:18px}nav{gap:18px}nav .home-nav{display:none}main{padding:40px 6% 70px}h1{font-size:43px}.class-row{grid-template-columns:1fr;gap:26px;padding:30px 0}.class-row img{aspect-ratio:1.6}.class-row .facts{gap:18px;margin:18px 0}.detail-hero{grid-template-columns:1fr;gap:35px}.detail-hero img{height:340px}.below-detail{margin-top:45px}.flow{grid-template-columns:1fr;gap:40px;margin-top:30px}.summary{position:static;padding:30px 0 0;border-left:0;border-top:1px solid var(--line)}.summary img{max-width:300px}.steps{gap:18px;font-size:10px}.booking-heading{font-size:34px}.two-fields{grid-template-columns:1fr;gap:0}.week button{min-width:44px;padding:12px 5px}.week button strong{font-size:21px}.choice{gap:18px;font-size:12px}.actions{gap:20px}.footer{flex-direction:column;gap:16px}.success h1{font-size:40px}body[lang=ja] h1{font-size:32px}}
/* Match the homepage's quiet booking controls and photo treatment. */
:root{--orange:#343b34}
.button{font:16px/1.5 Cardo,'Noto Serif JP',serif;letter-spacing:.02em;border:1px solid #343b34;padding:14px 28px;transition:background .2s,color .2s}
.button:hover{background:#515d4c}
.press{background:#343b34;color:#f6f4ee;padding:9px 15px}
.press a{display:inline-flex;align-items:center;gap:10px}
.press img{width:18px;height:24px;filter:invert(1)}
.class-row img{aspect-ratio:1.35}
.preview{background:transparent;border-bottom:1px solid var(--line);color:#77786e}
@media(min-width:601px) and (max-width:1100px){header nav{flex-wrap:wrap;justify-content:flex-end;gap:12px 20px}header{align-items:center}header .brand{flex-shrink:0}}
header{position:sticky;top:0;z-index:20;background:rgba(249,248,246,.94);backdrop-filter:blur(16px);padding:12px 5%;view-transition-name:studio-navigation}.brand img{width:135px;height:60px;object-fit:contain;display:block}.menu-toggle{display:none}.stay-calendar{margin:32px 0;border:1px solid var(--line);padding:26px}.stay-heading,.calendar-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.stay-heading h3{font-size:28px;margin:0}.stay-heading button{border:0;background:none;text-decoration:underline;text-underline-offset:4px;color:#515d4c}.stay-calendar .note{margin:12px 0 20px;font-size:13px}.stay-dates{display:grid;grid-template-columns:1fr 1fr;border-block:1px solid var(--line);margin:20px 0}.stay-dates>div{padding:15px 12px}.stay-dates>div+div{border-left:1px solid var(--line)}.stay-dates small,.stay-dates strong{display:block}.stay-dates small{font-size:11px;color:#62685d}.stay-dates strong{font-size:13px;font-weight:500;margin-top:5px}.calendar-heading h4{font:22px Cardo,serif;margin:15px 0}.calendar-heading button{background:none;border:1px solid var(--line);width:40px;height:40px;color:var(--ink)}.calendar-heading button:disabled{opacity:.3;cursor:default}.calendar-grid,.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center}.calendar-weekdays{font-size:11px;color:#6c7266;margin:18px 0 10px}.calendar-grid button{border:0;background:transparent;height:48px;color:var(--ink);transition:background .18s,color .18s;font-size:14px}.calendar-grid button:hover:not(:disabled){background:#e7eae1}.calendar-grid button.in-range{background:#e7eae1}.calendar-grid button.range-edge{background:#343b34;color:white}.calendar-grid button:disabled{opacity:.25;cursor:default}.calendar-status{margin:16px 0 0;font-size:12px;color:#56604e;min-height:21px}.week button{flex:0 0 70px}.summary{top:108px}@view-transition{navigation:auto}::view-transition-old(root){animation:page-out .25s ease both}::view-transition-new(root){animation:page-in .45s cubic-bezier(.22,1,.36,1) both}::view-transition-group(studio-navigation){animation:none}@keyframes page-out{to{opacity:0;transform:translateY(-8px)}}@keyframes page-in{from{opacity:0;transform:translateY(14px)}}@media(max-width:600px){header{padding:10px 6%}.brand img{width:115px;height:51px}.menu-toggle{display:grid;gap:7px;border:0;background:none;padding:14px 0;width:32px}.menu-toggle span{display:block;height:1px;width:32px;background:var(--ink);transition:transform .25s}.menu-open .menu-toggle span:first-child{transform:translateY(4px) rotate(45deg)}.menu-open .menu-toggle span:last-child{transform:translateY(-4px) rotate(-45deg)}header nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--paper);padding:28px 6%;border-bottom:1px solid var(--line)}header.menu-open nav{display:flex;flex-wrap:wrap;animation:page-in .3s ease}nav .home-nav{display:block}.stay-calendar{padding:18px 12px}.stay-heading h3{font-size:25px}.calendar-grid button{height:43px}.stay-dates>div{padding:12px 8px}.stay-dates strong{font-size:11px}.week button{flex-basis:60px}}@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none}*{scroll-behavior:auto!important}}
.week button[aria-pressed=true]{background:#343b34}
/* One calendar for the stay and class day; names accompany every course color. */
[data-course="ramen-gyoza"]{--course:#994a2e;--course-bg:#f4e2d7}
[data-course="izakaya"]{--course:#775135;--course-bg:#eee3d4}
[data-course="sushi-shinji"]{--course:#3e665c;--course-bg:#deebe5}
[data-course="sashimi-knife"]{--course:#555c88;--course-bg:#e5e6f1}
[data-course="market-to-meal"]{--course:#656c32;--course-bg:#e9ecd8}
.calendar-selection{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:22px 0}
.calendar-selection button{background:transparent;border:1px solid var(--line);padding:13px 10px;text-align:left;color:var(--ink)}
.calendar-selection button[aria-pressed=true]{border-color:#343b34;box-shadow:inset 0 -3px #343b34;background:#eeeee7}
.calendar-selection small,.calendar-selection strong{display:block}.calendar-selection small{font-size:11px;margin-bottom:7px}.calendar-selection strong{font-size:14px;font-weight:500}
.calendar-legend{display:flex;flex-wrap:wrap;gap:9px 16px;margin:18px 0 24px;font-size:11px;line-height:1.5}
.calendar-legend>span{display:flex;align-items:center;gap:7px}.calendar-legend i{width:8px;height:8px;border-radius:50%;background:var(--course);flex-shrink:0}
.calendar-grid{gap:4px}.calendar-grid button{height:94px;border:1px solid #e1dfd6;padding:8px 3px;display:flex;flex-direction:column;align-items:center;gap:7px;background:#fffdf9}
.calendar-grid button.range-edge{background:#e3e7dd;color:var(--ink);border-color:#7b866d}
.calendar-grid button.in-range{background:#f0f2e9}.calendar-grid button.class-selected{outline:2px solid #343b34;outline-offset:-2px;background:#e5eade}
.calendar-day{font:19px Cardo,serif}.calendar-courses{display:flex;flex-direction:column;gap:3px;width:100%;align-items:center}
.course-chip{font:10px/1.5 Inter,'Noto Sans JP',sans-serif;color:var(--course);background:var(--course-bg);padding:1px 5px;border-radius:2px;max-width:100%}
.calendar-closed{font:9px/1.5 Inter,sans-serif;color:#8c8c80}.calendar-grid button.no-classes{background:#f2f1ec;color:#8c8c80}
.calendar-grid button:disabled{opacity:.5}.calendar-grid button.outside-stay{opacity:.4}.calendar-grid button:focus-visible,.calendar-selection button:focus-visible{outline:2px solid #343b34;outline-offset:2px}
@media(max-width:600px){.calendar-grid{gap:3px}.calendar-grid button{height:87px;padding:6px 1px}.course-chip{font-size:8px;padding:1px 2px}.calendar-selection{gap:5px}.calendar-selection button{padding:10px 6px}.calendar-selection small{font-size:10px}.calendar-selection strong{font-size:12px}.calendar-legend{gap:8px 12px;font-size:10px}.calendar-closed{font-size:8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.press{min-height:64px;padding:12px 20px;display:flex;align-items:center;justify-content:center;font-size:15px}.press a{gap:18px}.press img{width:28px;height:36px}.press strong{font:23px Cardo,serif}.press-read{font:14px Inter,sans-serif;text-decoration:underline;text-underline-offset:5px;white-space:nowrap}@media(max-width:767px){.press{min-height:76px;padding:10px 12px}.press a{display:grid;grid-template-columns:26px max-content;gap:4px 10px;font-size:12px}.press img{grid-row:1/3;width:26px;height:34px}.press strong{font-size:18px}.press-read{grid-column:2;font-size:12px}}

/* Apple Calendar inspired day cells: corner dates and quiet event dots. */
.calendar-grid{gap:0;border-top:1px solid var(--line);border-left:1px solid var(--line)}
.calendar-grid button{position:relative;height:92px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px;background:transparent;align-items:stretch;justify-content:space-between;gap:16px}
.calendar-day{align-self:flex-end;font:16px/1.4 Inter,'Noto Sans JP',sans-serif;width:27px;height:27px;display:grid;place-items:center;border-radius:50%}
.calendar-courses{flex-direction:row;align-items:center;justify-content:flex-start;gap:6px;min-height:12px;padding:0 3px 5px}
.course-chip{display:block;width:7px;height:7px;flex:0 0 7px;border-radius:50%;padding:0;background:var(--course);font-size:0}
.calendar-closed{display:none}.calendar-grid button.no-classes{background:#f1f0eb}
.calendar-grid button.class-selected{outline:0;background:#e9ede4;box-shadow:inset 0 0 0 1px #76826c}
.calendar-grid button.class-selected .calendar-day{background:#343b34;color:white}
.calendar-grid button.range-edge{background:#e3e8dc}.calendar-grid button.range-edge .calendar-day{box-shadow:inset 0 0 0 1px #77846b}
.calendar-grid .calendar-blank{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f1f0eb}
@media(max-width:600px){.calendar-grid button{height:75px;padding:7px 5px}.calendar-day{font-size:13px;width:23px;height:23px}.calendar-courses{gap:4px;padding:0 2px 4px}.course-chip{width:6px;height:6px;flex-basis:6px}}

/* Calendar browsing: direct class selection, optional stay filter, refined key. */
.calendar-tools{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin:20px 0 24px}
.range-toggle{display:flex;align-items:center;gap:22px;padding:10px 0;background:none;border:0;border-bottom:1px solid #a3ab99;color:#485342;font:12px/1.5 Inter,'Noto Sans JP',sans-serif;cursor:pointer}
.range-toggle span{font-size:18px;line-height:1}.chosen-day{font-size:11px;color:#646c5c}
.calendar-heading{padding:6px 0 14px}.calendar-jump{display:flex;align-items:center;gap:4px}.calendar-jump select{width:auto!important;max-width:none;border:0!important;background:transparent!important;color:var(--ink);padding:8px 20px 8px 6px!important;font:23px/1.4 Cardo,'Noto Serif JP',serif;cursor:pointer}.calendar-jump select[data-jump-year]{font-size:19px;color:#68715f}
.calendar-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 22px;margin:22px 0 0;padding:21px 0;border-bottom:1px solid var(--line);font:11px/1.5 Inter,'Noto Sans JP',sans-serif;color:#535a4d}
.calendar-legend>span{gap:10px;min-width:0}.calendar-legend i{width:8px;height:8px;background:var(--course);box-shadow:0 0 0 4px var(--course-bg)}.calendar-legend .legend-closed{color:#85877d}.legend-closed i{background:#c1c2b7;box-shadow:0 0 0 4px #ecece5}
.calendar-schedule-note{font:10px/1.6 Inter,'Noto Sans JP',sans-serif;color:#85877d;margin:7px 0 0}
@media(max-width:600px){.calendar-jump select{font-size:21px!important;padding-right:15px!important}.calendar-jump select[data-jump-year]{font-size:17px!important}.calendar-legend{font-size:10px;gap:15px 14px;padding:20px 4px}.calendar-legend>span{gap:8px}.calendar-legend i{width:6px;height:6px;flex:0 0 6px;box-shadow:0 0 0 3px var(--course-bg)}.stay-heading h3{font-size:23px}}

/* Sessions from the booking app: start–end time, seats left and state on each selectable row. */
body .session-main{display:grid;gap:4px;min-width:0}
body .session-time{font:500 var(--tcs-type-body)/1.5 var(--tcs-sans);font-variant-numeric:tabular-nums;color:#283126}
body .session-row small{margin-top:0}
body .session-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 20px;margin-top:10px}
body .session-row .price{margin-top:0}
body .session-seats{display:inline-flex;align-items:center;gap:8px;font:var(--tcs-type-label)/1.6 var(--tcs-sans);color:#47513f}
body .session-seats:before{content:'';width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:#6f8a5f}
body .session-seats[data-state=few]{color:#994a2e}body .session-seats[data-state=few]:before{background:#b3653f}
body .session-row.is-unavailable .session-seats{color:#77786e}body .session-row.is-unavailable .session-seats:before{background:transparent;box-shadow:inset 0 0 0 1px #a9aaa0}
body .session-row.is-unavailable,body .session-row.is-unavailable:hover{background:#f4f3ee;border-color:#e4e2da;border-left-color:#c9c9bf;box-shadow:none}
body .session-row.is-unavailable label{cursor:default}
body .session-row.is-unavailable .course-title,body .session-row.is-unavailable .session-time,body .session-row.is-unavailable .price{color:#85877d}
body input[type=radio]:disabled{opacity:.4;cursor:default}
body .calendar-grid button.no-seats .course-chip{opacity:.3}
body .button[aria-busy=true]{opacity:.7;cursor:progress}
@media(max-width:767px){body .session-row .course-selection{grid-row:auto}}
/* Stay filter: typed arrival / departure, in step with the range chosen on the calendar. */
body .stay-fields{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:8px 20px;align-items:start;margin:0 0 28px;padding:0 0 22px;border-bottom:1px solid var(--line)}
body .stay-fields .field{margin:0;min-width:0}
body .stay-fields .field>span:first-child{color:#69715e}
body .stay-fields .field.is-active>span:first-child{color:#283126}
body .stay-fields .field input{min-width:0;padding:13px 16px;font-variant-numeric:tabular-nums}
body .stay-fields .field input::placeholder{color:#a3a79b;opacity:1}
body .stay-fields .field.is-active input:not([aria-invalid=true]){border-color:#728267}
body .stay-fields .field-error{display:block}
body .stay-fields .field-error:empty{display:none}
@media(max-width:600px){body .stay-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}body .stay-fields .field input{padding:13px 12px}}

.dietary-info{margin:24px 0;padding:20px 0;border-top:1px solid #d8d5cc}.dietary-info h2{font-size:24px}.dietary-info p{line-height:1.7;margin:12px 0}.field select{width:100%;min-height:48px;padding:12px;font:inherit;border:1px solid #aaa;background:#fff;color:inherit;border-radius:0}

/* Reservation step 1 (2026-10-15): class, how you join + guests, dietary needs, then a one-class calendar with its times beside it (after Tock, Airbnb Experiences and byFood).
   No boxed controls: pills like the site's primary button, round day and step buttons, hairline rows. Same paper, studio green and sage as the rest of the flow. */
.booking-v2{--bk-green:#343b34;--bk-sage:#e9ede4;--bk-sage-2:#dfe5d6;--bk-mute:#292d28;--bk-soft:#b6b4ac}
.booking-v2 .flow{margin-top:36px}
.booking-v2 .bk-step{padding:0 0 36px;margin:0 0 36px;border-bottom:1px solid var(--line)}
/* Step headings take the item-title step of the type system (typography.css sets every h2 to section size with !important). */
html body main.booking-v2 .bk-label{display:block;font-size:var(--tcs-type-title)!important;line-height:1.3!important;color:var(--ink);margin:0 0 18px}
.booking-v2 input[type=radio]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}

/* Class: photographs, no frames. The chosen one carries a green check and a line under its name. */
.booking-v2 .bk-classes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.booking-v2 .bk-class{position:relative;display:flex;flex-direction:column;gap:2px;cursor:pointer}
.booking-v2 .bk-class img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block;margin-bottom:12px;border-radius:6px;transition:transform .5s cubic-bezier(.22,1,.36,1),filter .3s}
.booking-v2 .bk-class:hover img{transform:translateY(-3px)}
.booking-v2 .bk-class span{font:15px/1.35 var(--tcs-serif);color:#292d28;transition:color .2s}
.booking-v2 .bk-class small{font:12px/1.5 var(--tcs-sans);color:var(--bk-mute);font-variant-numeric:tabular-nums}
.booking-v2 .bk-class.is-on span{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.booking-v2 .bk-class.is-on::after{content:'';position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;background:var(--bk-green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m7 12.5 3.2 3.2L17 9' fill='none' stroke='%23fff' stroke-width='1.6'/%3E%3C/svg%3E") center/24px no-repeat;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.booking-v2 .bk-class:has(input:focus-visible) img{outline:2px solid var(--bk-green);outline-offset:3px}
.booking-v2 .bk-facts{margin:18px 0 0;font:13px/1.7 var(--tcs-sans);color:#292d28}

/* How you join: one pill switch. Guests: round buttons around the number. */
.booking-v2 .bk-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px 40px;align-items:start}
.booking-v2 .bk-seg{display:inline-flex;padding:4px;border-radius:999px;background:#efeee9;gap:2px}
.booking-v2 .bk-seg label{position:relative;padding:11px 24px;border-radius:999px;font:14px/1.4 var(--tcs-sans);color:#292d28;cursor:pointer;transition:background .25s,color .25s,box-shadow .25s;white-space:nowrap}
.booking-v2 .bk-seg label:hover:not(.is-on){color:var(--ink)}
.booking-v2 .bk-seg label.is-on{background:var(--bk-green);color:#fff;box-shadow:0 2px 8px -3px rgba(31,40,30,.45)}
.booking-v2 .bk-seg label:has(input:focus-visible){outline:2px solid var(--bk-green);outline-offset:2px}
.booking-v2 .bk-note{margin:12px 0 0;font:12px/1.6 var(--tcs-sans);color:#292d28}
.booking-v2 .guest-field{margin:0}
.booking-v2 .guest-stepper{width:auto;max-width:none;padding:0;border:0;background:none;gap:18px;justify-content:flex-start}
.booking-v2 .guest-stepper button{width:44px;height:44px;border-radius:50%;border:1px solid #c9ccc1;background:transparent;font-size:20px;line-height:1;display:grid;place-items:center}
.booking-v2 .guest-stepper button:hover:not(:disabled){background:var(--bk-sage);border-color:#a9b29e}
.booking-v2 .guest-stepper>div{min-width:56px;justify-content:center}
.booking-v2 .guest-stepper output{font-size:26px}

/* Dietary needs: pills. A pill the class cannot serve stays visible with the reason under it. */
.booking-v2 .bk-chips{display:flex;flex-wrap:wrap;gap:10px}
.booking-v2 .bk-chip{position:relative;display:inline-flex;flex-direction:column;align-items:flex-start;justify-content:center;min-height:44px;padding:10px 20px;border-radius:999px;border:1px solid #d3d1c8;background:transparent;cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.booking-v2 .bk-chip span{font:14px/1.3 var(--tcs-sans);color:#292d28}
.booking-v2 .bk-chip small{font:12px/1.3 var(--tcs-sans);color:var(--bk-mute);margin-top:2px}
.booking-v2 .bk-chip:hover:not(.is-off):not(.is-on){border-color:#a9b29e;background:#f2f3ee}
.booking-v2 .bk-chip.is-on{background:var(--bk-green);border-color:var(--bk-green)}
.booking-v2 .bk-chip.is-on span,.booking-v2 .bk-chip.is-on small{color:#fff}
.booking-v2 .bk-chip.is-off{cursor:default;border-style:dashed;border-color:#dddbd3}
.booking-v2 .bk-chip.is-off span{color:var(--bk-soft)}
.booking-v2 .bk-chip:has(input:focus-visible){outline:2px solid var(--bk-green);outline-offset:2px}
.booking-v2 .bk-who{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin:18px 0 0}
.booking-v2 .bk-who>span{font:12px/1.5 var(--tcs-sans);color:var(--bk-mute)}
.booking-v2 .bk-who .bk-chip{min-height:36px;padding:7px 16px}
.booking-v2 .bk-who .bk-chip span{font-size:13px}
.booking-v2 .bk-diet-note{margin:16px 0 0;font:13px/1.7 var(--tcs-sans);color:#292d28}
.booking-v2 .bk-diet-note.is-warn{color:#8a4a2c}
.booking-v2 .bk-inline{margin-left:6px;padding:0;border:0;background:none;font:inherit;color:var(--ink);text-decoration:underline;text-underline-offset:4px;cursor:pointer}

/* Calendar: round days, round arrows, no grid lines. */
.booking-v2 .bk-when{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:40px;align-items:start}
.booking-v2 .bk-calendar .calendar-heading{padding:0 0 6px}
.booking-v2 .calendar-month{margin:0;font:22px/1.3 var(--tcs-serif)}
.booking-v2 .calendar-heading button{width:38px;height:38px;border-radius:50%;border:1px solid #d3d1c8;background:transparent;font-size:14px}
.booking-v2 .calendar-heading button:hover:not(:disabled){background:var(--bk-sage)}
.booking-v2 .calendar-weekdays{margin:14px 0 6px;font:12px/1.5 var(--tcs-sans);color:var(--bk-mute)}
.booking-v2 .calendar-grid{gap:2px;border:0}
.booking-v2 .calendar-grid .calendar-blank{border:0;background:none}
.booking-v2 .calendar-grid button{height:auto;aspect-ratio:1;padding:0;border:0;background:none;display:grid;place-items:center;gap:0;position:relative}
.booking-v2 .calendar-grid button .calendar-day{align-self:auto;width:40px;height:40px;font:15px/1 var(--tcs-sans);font-variant-numeric:tabular-nums;border-radius:50%;display:grid;place-items:center;transition:background .18s,color .18s}
.booking-v2 .calendar-grid button.is-open .calendar-day,.booking-v2 .calendar-grid button.is-few .calendar-day{font-weight:600;color:#292d28;background:var(--bk-sage)}
.booking-v2 .calendar-grid button.is-few::after{content:'';position:absolute;bottom:8%;left:50%;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:#b3653f}
.booking-v2 .calendar-grid button:hover:not(:disabled){background:none}
.booking-v2 .calendar-grid button:hover:not(:disabled) .calendar-day{background:var(--bk-sage-2)}
.booking-v2 .calendar-grid button:disabled{opacity:1;cursor:default}
.booking-v2 .calendar-grid button.is-none .calendar-day{color:var(--bk-soft)}
.booking-v2 .calendar-grid button.is-full .calendar-day{color:#292d28;text-decoration:line-through;text-decoration-color:#c3c1b9}
.booking-v2 .calendar-grid button.class-selected,.booking-v2 .calendar-grid button.class-selected:hover{background:none;box-shadow:none}
.booking-v2 .calendar-grid button.class-selected .calendar-day,.booking-v2 .calendar-grid button.class-selected:hover .calendar-day{background:var(--bk-green);color:#fff}
.booking-v2 .bk-key{display:flex;align-items:center;gap:8px;margin:12px 0 0;font:12px/1.5 var(--tcs-sans);color:var(--bk-mute)}
.booking-v2 .bk-key span{width:4px;height:4px;border-radius:50%;background:#b3653f}

/* Times: hairline rows with a round marker, the way a menu lists dishes. */
.booking-v2 .bk-slots{min-height:120px}
.booking-v2 .bk-hint{margin:46px 0 0;font:13px/1.7 var(--tcs-sans);color:var(--bk-mute)}
.booking-v2 .bk-slots-title{margin:4px 0 10px;font:22px/1.3 var(--tcs-serif)}
.booking-v2 .bk-slot-list{display:grid;border-top:1px solid var(--line)}
.booking-v2 .bk-slot{position:relative;display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:4px 14px;align-items:center;padding:18px 4px;border-bottom:1px solid var(--line);transition:background .2s}
.booking-v2 .bk-slot::before{content:'';grid-row:1;width:18px;height:18px;border-radius:50%;box-shadow:inset 0 0 0 1px #a9b29e;transition:box-shadow .2s}
.booking-v2 label.bk-slot{cursor:pointer}
.booking-v2 label.bk-slot:hover:not(.is-unavailable)::before{box-shadow:inset 0 0 0 1px var(--bk-green)}
.booking-v2 .bk-slot.is-on::before{box-shadow:inset 0 0 0 5px var(--bk-green)}
.booking-v2 .bk-slot:has(input:focus-visible){outline:2px solid var(--bk-green);outline-offset:2px}
.booking-v2 .bk-slot-main,.booking-v2 .bk-slot-price{display:grid;gap:2px;min-width:0}
.booking-v2 .bk-slot-price{text-align:right}
.booking-v2 .bk-slot-time{font:500 16px/1.4 var(--tcs-sans);font-variant-numeric:tabular-nums;color:#292d28}
.booking-v2 .bk-slot small{font:12px/1.5 var(--tcs-sans);color:var(--bk-mute)}
.booking-v2 .bk-slot-price strong{font:500 16px/1.4 var(--tcs-sans);font-variant-numeric:tabular-nums}
.booking-v2 .bk-slot[data-state=few] .bk-slot-seats{color:#994a2e}
.booking-v2 .bk-slot.is-unavailable{cursor:default}
.booking-v2 .bk-slot.is-unavailable::before{box-shadow:inset 0 0 0 1px #dddbd3}
.booking-v2 .bk-slot.is-unavailable .bk-slot-time,.booking-v2 .bk-slot.is-unavailable strong{color:#292d28}
.booking-v2 .bk-slot.is-unavailable[data-state=full] .bk-slot-time{text-decoration:line-through}
.booking-v2 .bk-slot.is-request{grid-template-columns:minmax(0,1fr) auto;border-top:1px solid var(--line)}
.booking-v2 .bk-slot.is-request::before{display:none}

/* Actions and fine print. */
.booking-v2 .bk-actions{margin-top:0;flex-wrap:wrap;gap:14px 24px}
.booking-v2 .bk-total{display:none}
.booking-v2 .bk-ready{font:12px/1.5 var(--tcs-sans);color:var(--bk-mute)}
.booking-v2 #continue:disabled{background:#c9ccc1;border-color:#c9ccc1;color:#f9f8f6}
.booking-v2 .bk-fineprint{margin:28px 0 0;font:12px/1.6 var(--tcs-sans);color:#292d28}
/* Checkout: the dietary choice made on step 1. */
.dietary-chosen{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:16px 0;border-bottom:1px solid var(--line)}
.dietary-chosen p{margin:0}

@media(max-width:1100px){.booking-v2 .bk-when{grid-template-columns:1fr;gap:24px}.booking-v2 .bk-hint{margin-top:0}.booking-v2 .bk-calendar{max-width:440px}}
@media(max-width:800px){
.booking-v2 .bk-classes{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:6vw;margin:0 -6vw;padding:0 6vw 4px;gap:12px;scrollbar-width:none}
.booking-v2 .bk-classes::-webkit-scrollbar{display:none}
.booking-v2 .bk-class{flex:0 0 38%;scroll-snap-align:start}
.booking-v2 .bk-row{grid-template-columns:1fr}
.booking-v2 .bk-seg{display:flex}
.booking-v2 .bk-seg label{flex:1;text-align:center;padding:11px 12px}
.booking-v2 .bk-calendar{max-width:none}
.booking-v2 .calendar-grid button .calendar-day{width:38px;height:38px;font-size:14px}
.booking-v2 .bk-chip{padding:9px 16px}
.booking-v2 .bk-actions{position:sticky;bottom:0;z-index:5;margin:0 -6vw;padding:12px 6vw calc(12px + env(safe-area-inset-bottom));background:rgba(249,248,246,.96);backdrop-filter:blur(12px);border-top:1px solid var(--line);flex-wrap:nowrap}
.booking-v2 .bk-total{display:grid;margin-right:auto}
.booking-v2 .bk-total small{font:12px/1.4 var(--tcs-sans);color:var(--bk-mute)}
.booking-v2 .bk-total strong{font:500 18px/1.3 var(--tcs-sans);font-variant-numeric:tabular-nums}
.booking-v2 .bk-ready{display:none}
}
@media(max-width:380px){.booking-v2 .bk-class{flex-basis:48%}.booking-v2 .calendar-grid button .calendar-day{width:34px;height:34px}}
@media(prefers-reduced-motion:reduce){.booking-v2 .bk-class img,.booking-v2 .bk-seg label,.booking-v2 .bk-chip{transition:none}.booking-v2 .bk-class:hover img{transform:none}}

/* Readable text everywhere in the booking flow (2026-10-15, Kotaro: no grey copy). Hierarchy comes from size and weight; only unavailable dates and times stay light. */
body{--read:#292d28}
body .note,body .summary .muted,body .summary dl,body .summary dt,body .summary dd,body .steps,body .steps li,body .kicker,body .intro,body .calendar-weekdays,body .field>span,body .date-class small,body .class-row .facts,body .facts-table dt,body .notice,body .footer,body .footer span,body .review-detail p,body .dietary-chosen p,body .guest-stepper>div>span,body .date-class .price,body .calendar-status,body .calendar-schedule-note{color:var(--read)!important}
body .steps li:not(.current){opacity:1}
.booking-v2 .bk-seg label:not(.is-on){color:var(--read)}
.booking-v2 .bk-chip.is-off span{color:#8f8d85}
.booking-v2 .calendar-grid button.is-none .calendar-day{color:#a9a79f}
/* What holds Continue back: a yellow triangle for a step still to do, red for a choice the class cannot serve. The section it points to carries the same mark. */
.booking-v2{--bk-warn:#c98a12;--bk-error:#b8432f}
.booking-v2 .bk-ready{display:inline-flex;align-items:center;gap:10px;padding:10px 16px 10px 12px;border:0;border-radius:999px;background:#fbf1d9;font:500 14px/1.4 var(--tcs-sans);color:#292d28!important;cursor:pointer;text-align:left}
.booking-v2 .bk-ready svg{flex:0 0 20px;color:var(--bk-warn)}
.booking-v2 .bk-ready.is-error{background:#f8e3de}
.booking-v2 .bk-ready.is-error svg{color:var(--bk-error)}
.booking-v2 .bk-ready:hover span{text-decoration:underline;text-underline-offset:4px}
.booking-v2 .bk-step.is-needed .bk-label{display:flex;align-items:center;gap:10px}
.booking-v2 .bk-step.is-needed .bk-label::after{content:'';width:20px;height:18px;flex:0 0 20px;background:var(--bk-warn);clip-path:polygon(50% 0,100% 100%,0 100%)}
.booking-v2 .bk-step.is-needed.is-error .bk-label::after{background:var(--bk-error)}
@media(max-width:800px){.booking-v2 .bk-actions{flex-wrap:wrap}.booking-v2 .bk-ready{display:inline-flex;order:-1;width:100%;padding:8px 14px 8px 10px;font-size:13px}}
/* How you join + Guests wrap onto two lines when the column is narrow, so the pill switch never runs into the stepper. */
.booking-v2 .bk-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:28px 40px}

/* Round 3 (2026-10-15): one booking card on all three steps, two-month calendar with a next-available jump, private time-of-day, steps 2–3 in the step 1 language. */
/* Booking card: sticky beside the form; it holds the price and the step's main action. */
.booking-v2 .flow{grid-template-columns:minmax(0,1fr) 360px;gap:6%}
.booking-v2 .summary.bk-card{position:sticky;top:104px;padding:24px;border:0;border-radius:20px;background:#fff;box-shadow:0 1px 2px rgba(31,40,30,.06),0 18px 40px -24px rgba(31,40,30,.35)}
.booking-v2 .bk-card-toggle{display:none}
.booking-v2 .bk-card-head{display:flex;align-items:center;gap:14px;margin:0 0 18px}
.booking-v2 .summary.bk-card .bk-card-head img{width:64px;height:64px;aspect-ratio:auto;margin:0;border-radius:12px;object-fit:cover;flex:0 0 64px}
.booking-v2 .bk-card-head p{margin:0 0 2px;font:500 12px/1.4 var(--tcs-sans);letter-spacing:.06em;text-transform:uppercase;color:#292d28}
.booking-v2 .summary.bk-card .bk-card-head h3{margin:0;font-size:22px;line-height:1.25}
html body main.booking-v2 .summary.bk-card dl{margin:0;font-size:14px!important;line-height:1.5!important}
.booking-v2 .summary.bk-card dl>div{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:9px 0}
.booking-v2 .summary.bk-card dt{color:#292d28}
.booking-v2 .summary.bk-card dd{margin:0;text-align:right;font-weight:500;color:#292d28}
.booking-v2 .summary.bk-card dd small{display:block;font-size:12px;font-weight:400}
.booking-v2 .summary.bk-card .bk-card-price{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.booking-v2 .summary.bk-card .total{margin:6px 0 0;padding:14px 0 0;border-top:1px solid var(--line);font-size:18px}
.booking-v2 .summary.bk-card .total dd{font-size:24px;font-weight:600;font-variant-numeric:tabular-nums}
.booking-v2 .bk-card-cta{display:grid;gap:12px;margin-top:20px}
.booking-v2 .bk-card-cta .button{width:100%;justify-content:center}
.booking-v2 .bk-card-cta .bk-ready{width:100%;justify-content:flex-start}
.booking-v2 .bk-cancel{display:flex;align-items:center;gap:8px;margin:2px 0 0;font:13px/1.5 var(--tcs-sans);color:#292d28}
.booking-v2 .bk-cancel svg{flex:0 0 16px;color:#3f6b45}
.booking-v2 .bk-sent{padding:12px 14px;border-radius:14px;background:#e9ede4;font:14px/1.6 var(--tcs-sans);color:#292d28}

/* Calendar: two months, arrows at the outer corners, the times below. */
.booking-v2 .bk-when{grid-template-columns:1fr;gap:28px}
.booking-v2 .bk-calendar{position:relative;max-width:none}
.booking-v2 .bk-calendar .calendar-heading{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;padding:0;pointer-events:none;z-index:1}
.booking-v2 .bk-calendar .calendar-heading button{pointer-events:auto}
.booking-v2 .bk-months{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px}
.booking-v2 .bk-month .calendar-month{height:38px;display:flex;align-items:center;justify-content:center;text-align:center}
.booking-v2 .bk-next{display:inline-flex;align-items:center;gap:10px;margin:0 0 22px;padding:10px 18px;border:0;border-radius:999px;background:#e9ede4;font:14px/1.4 var(--tcs-sans);color:#292d28;cursor:pointer;transition:background .2s}
.booking-v2 .bk-next strong{font-weight:600}
.booking-v2 .bk-next:hover{background:#dfe5d6}
.booking-v2 .bk-slots{min-height:0}
.booking-v2 .bk-hint{margin:0}
.booking-v2 .bk-pref-label{margin:22px 0 10px;font:500 14px/1.4 var(--tcs-sans);color:#292d28}

/* Steps 2–3: rounded fields, step headings, change links. */
.booking-v2.bk-form .bk-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}
.booking-v2.bk-form .field{margin:0 0 18px}
html body main.booking-v2 .field>span{display:block;margin:0 0 8px;font:500 14px/1.4 var(--tcs-sans)!important;color:#292d28}
.booking-v2 .field input,.booking-v2 .field textarea{width:100%;min-height:52px;padding:14px 16px;border:1px solid #d3d1c8;border-radius:14px;background:#fff;font:16px/1.5 var(--tcs-sans);color:#292d28;transition:border-color .2s,box-shadow .2s}
.booking-v2 .field textarea{min-height:120px;resize:vertical}
.booking-v2 .field input::placeholder,.booking-v2 .field textarea::placeholder{color:#6f6d66}
.booking-v2 .field input:focus,.booking-v2 .field textarea:focus{outline:none;border-color:#343b34;box-shadow:0 0 0 3px rgba(52,59,52,.14)}
.booking-v2 .field input[aria-invalid=true]{border-color:#b8432f;box-shadow:0 0 0 3px rgba(184,67,47,.12)}
html body main.booking-v2 .field .field-error{display:flex;align-items:center;gap:8px;margin:8px 0 0;font:500 13px/1.4 var(--tcs-sans)!important;color:#b8432f!important}
.booking-v2 .field .field-error:empty{display:none}
.booking-v2 .field .field-error:not(:empty)::before{content:'';width:16px;height:14px;flex:0 0 16px;background:#b8432f;clip-path:polygon(50% 0,100% 100%,0 100%)}
.booking-v2 .dietary-chosen{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0 0 20px;padding:12px 20px;border:0;border-radius:999px;background:#efeee9}
.booking-v2 .dietary-chosen p{margin:0;font:500 15px/1.4 var(--tcs-sans)}
.booking-v2 .bk-back{display:inline-block;margin-top:4px;font:14px/1.5 var(--tcs-sans)}
.booking-v2 .bk-review{padding-bottom:28px;margin-bottom:28px}
.booking-v2 .bk-review-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.booking-v2 .bk-review-head .link{font:14px/1.5 var(--tcs-sans)}
.booking-v2 .bk-review p{margin:0 0 6px;font:16px/1.6 var(--tcs-sans);color:#292d28}
.booking-v2 .bk-review .bk-note{font-size:13px}

@media(max-width:1100px){.booking-v2 .bk-months{grid-template-columns:1fr}.booking-v2 .bk-month.is-second{display:none}.booking-v2 .bk-calendar{max-width:440px}.booking-v2 .flow{grid-template-columns:minmax(0,1fr) 320px}}
/* Phones: the card is the bottom bar. Its total opens the details above it. */
@media(max-width:800px){
.booking-v2 .flow{grid-template-columns:1fr}
.booking-v2.bk-form .bk-fields{grid-template-columns:1fr}
body:has(.booking-v2){padding-bottom:var(--bk-bar,104px)}
.booking-v2 .bk-calendar{max-width:none}
.booking-v2 .summary.bk-card{position:fixed;top:auto;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 16px;max-height:82vh;overflow:auto;padding:12px 6vw calc(12px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;box-shadow:0 -10px 30px -16px rgba(31,40,30,.35)}
.booking-v2 .bk-card-body{display:none;grid-column:1/-1;grid-row:1;padding:8px 0 4px}
.booking-v2 .bk-card[data-open=true] .bk-card-body{display:block}
.booking-v2 .bk-card-cta{display:contents}
.booking-v2 .bk-card-cta .bk-cancel{grid-column:1/-1;grid-row:2}
.booking-v2 .bk-card:not([data-open=true]) .bk-cancel{display:none}
.booking-v2 .bk-card-cta .bk-ready{grid-column:1/-1;grid-row:3;padding:8px 14px 8px 10px;font-size:13px}
.booking-v2 .bk-card-toggle{grid-column:1;grid-row:4;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:4px 0;border:0;background:none;text-align:left;color:#292d28;cursor:pointer}
.booking-v2 .bk-card-toggle span{display:grid;font:12px/1.4 var(--tcs-sans)}
.booking-v2 .bk-card-toggle small{font:500 12px/1.4 var(--tcs-sans);text-decoration:underline;text-underline-offset:3px}
.booking-v2 .bk-card-toggle strong{font:600 20px/1.2 var(--tcs-sans);font-variant-numeric:tabular-nums}
.booking-v2 .bk-card-cta .button,.booking-v2 .bk-card-cta>#preview-finish{grid-column:2;grid-row:4;width:auto}
.booking-v2 .bk-card-cta .bk-sent{grid-column:1/-1;grid-row:5}
.booking-v2 .bk-card .total{display:none}
/* Class strip: the next card always peeks in, so it reads as scrollable. */
.booking-v2 .bk-class{flex-basis:40%}
}
.booking-v2 .bk-next{justify-self:start;margin-bottom:0}
@media(max-width:800px){.booking-v2 .summary.bk-card{row-gap:0}.booking-v2 .bk-card-body,.booking-v2 .bk-card-cta .bk-cancel,.booking-v2 .bk-card-cta .bk-ready{margin-bottom:10px}}
@media(max-width:800px){.booking-v2 .summary.bk-card{overflow-x:hidden;overflow-y:auto}.booking-v2 .summary.bk-card dl>div.total{display:none}}
@media(max-width:800px){main.booking-v2{overflow-x:clip}}

/* Round 4 (2026-10-15): motion. The flow now patches the page in place, so these transitions run between states. One ease everywhere: cubic-bezier(.22,1,.36,1). */
.booking-v2{--bk-ease:cubic-bezier(.22,1,.36,1)}
/* How you join: one dark pill slides between the two options. */
.booking-v2 .bk-seg{position:relative;display:inline-grid;grid-template-columns:1fr 1fr;isolation:isolate}
.booking-v2 .bk-seg::before{content:'';position:absolute;z-index:-1;top:4px;bottom:4px;left:4px;width:calc(50% - 5px);border-radius:999px;background:var(--bk-green);box-shadow:0 2px 8px -3px rgba(31,40,30,.45);transition:transform .5s var(--bk-ease)}
.booking-v2 .bk-seg[data-mode=private]::before{transform:translateX(calc(100% + 2px))}
.booking-v2 .bk-seg label,.booking-v2 .bk-seg label.is-on{background:none;box-shadow:none;text-align:center;transition:color .35s var(--bk-ease)}
.booking-v2 .bk-seg label.is-on{color:#fff}
/* Pills, cards, rows: colour and border ease; a press gives a small, quick give. */
.booking-v2 .bk-chip,.booking-v2 .bk-next,.booking-v2 .bk-ready,.booking-v2 .guest-stepper button,.booking-v2 .calendar-heading button,.booking-v2 .bk-slot,.booking-v2 .calendar-grid button .calendar-day{transition:background-color .3s var(--bk-ease),border-color .3s var(--bk-ease),color .3s var(--bk-ease),box-shadow .3s var(--bk-ease),transform .18s var(--bk-ease)}
.booking-v2 .bk-chip:active:not(.is-off),.booking-v2 .bk-seg label:active,.booking-v2 .bk-next:active,.booking-v2 .guest-stepper button:active:not(:disabled),.booking-v2 .calendar-heading button:active:not(:disabled){transform:scale(.96)}
.booking-v2 .calendar-grid button:active:not(:disabled) .calendar-day{transform:scale(.9)}
.booking-v2 .bk-slot.is-on::before{transition:box-shadow .3s var(--bk-ease)}
.booking-v2 .bk-class img{transition:transform .5s var(--bk-ease),filter .4s var(--bk-ease),opacity .6s var(--bk-ease)}
.booking-v2 .bk-class span{transition:color .3s var(--bk-ease),text-decoration-color .3s var(--bk-ease)}
/* The chosen class's check pops in. */
.booking-v2 .bk-class.is-on::after{animation:bk-pop .42s var(--bk-ease) both}
@keyframes bk-pop{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:none}}
/* The section a warning points to: its triangle rises in. */
.booking-v2 .bk-step.is-needed .bk-label::after{animation:bk-rise .42s var(--bk-ease) both}
@keyframes bk-rise{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
/* Numbers keep their width while they count. */
.booking-v2 [data-num]{font-variant-numeric:tabular-nums}
/* Photos fade in when they arrive. */
.booking-v2 img.is-loading{opacity:0}
.booking-v2 img{transition:opacity .6s var(--bk-ease)}
/* The step 1 dietary text box. */
.booking-v2 .bk-diet-text{display:block;margin:18px 0 0}
.booking-v2 .bk-diet-text>span{display:block;margin:0 0 8px;font:500 14px/1.4 var(--tcs-sans);color:#292d28}
.booking-v2 .bk-diet-text textarea{width:100%;min-height:76px;padding:14px 16px;border:1px solid #d3d1c8;border-radius:14px;background:#fff;font:16px/1.5 var(--tcs-sans);color:#292d28;resize:vertical;transition:border-color .3s var(--bk-ease),box-shadow .3s var(--bk-ease)}
.booking-v2 .bk-diet-text textarea::placeholder{color:#6f6d66}
.booking-v2 .bk-diet-text textarea:focus{outline:none;border-color:#343b34;box-shadow:0 0 0 3px rgba(52,59,52,.14)}
.booking-v2 .bk-diet-note:empty{display:none}
@media(prefers-reduced-motion:reduce){.booking-v2 *,.booking-v2 *::before,.booking-v2 *::after{transition:none!important;animation:none!important}.booking-v2 img.is-loading{opacity:1}}
/* Full-width buttons in the booking card: label on the left, arrow circle at the right edge. */
html[lang] body main.booking-v2 .bk-card-cta :is(#tcs-book-now,.tcs-booking-cta) .c-floating-reservation__inner{justify-content:space-between}
.booking-v2 .bk-review p{white-space:pre-line}.booking-v2 .dietary-chosen small{display:block;margin-top:4px;font:400 14px/1.5 var(--tcs-sans)}
