/* Cakes & Controllers booking stepper — dark neon theme. */
#ccb-booking-app{
	--c-bg:#0b0b0d; --c-card:#141418; --c-card2:#1b1b21; --c-line:#2c2c34;
	--c-text:#f2f2f5; --c-muted:#9aa0a6; --c-cyan:#2ee6d6; --c-pink:#ff3db5; --c-gold:#e0a82e;
	max-width:980px; margin:0 auto; color:var(--c-text);
}
#ccb-booking-app *{ box-sizing:border-box; }
.ccb-loading{ padding:2rem; text-align:center; color:var(--c-muted); }

.ccb-progress{ display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1.75rem; }
#ccb-booking-app .ccb-pstep{ font-size:.78rem; padding:.3rem .6rem; border-radius:20px; background:var(--c-card2); color:var(--c-muted); border:1px solid var(--c-line); }
#ccb-booking-app .ccb-pstep.is-active{ background:var(--c-cyan); color:#04201d; border-color:var(--c-cyan); font-weight:700; }
#ccb-booking-app .ccb-pstep.is-done{ color:var(--c-cyan); border-color:var(--c-cyan); }

.ccb-step h2{ margin:0 0 1.25rem; color:#fff; letter-spacing:.5px; line-height:1.2; }
.ccb-step h3{ margin:2rem 0 .85rem; color:#fff; font-size:1.15rem; }
.ccb-step h3:first-of-type{ margin-top:.5rem; }
.ccb-hint{ font-size:.85rem; color:var(--c-muted); margin:.5rem 0 0; line-height:1.5; }
.ccb-hint a{ color:var(--c-cyan); }
.ccb-accent{ color:var(--c-cyan); }

.ccb-btn{ background:var(--c-cyan); color:#04201d; border:0; border-radius:8px; padding:.6rem 1.1rem; font-weight:700; cursor:pointer; transition:box-shadow .15s,transform .05s; }
.ccb-btn:hover{ box-shadow:0 0 18px rgba(46,230,214,.5); }
.ccb-btn:active{ transform:translateY(1px); }
.ccb-btn:disabled{ opacity:.4; cursor:not-allowed; box-shadow:none; }
.ccb-ghost{ background:transparent; color:var(--c-text); border:1px solid var(--c-line); }
.ccb-ghost:hover{ box-shadow:none; border-color:var(--c-cyan); }
.ccb-lg{ font-size:1.05rem; padding:.85rem 1.6rem; }
.ccb-nav{ display:flex; justify-content:space-between; gap:1rem; margin-top:1.5rem; }
.ccb-nav .ccb-btn:only-child{ margin-left:auto; }

.ccb-cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:1rem; }
.ccb-card{ display:flex; flex-direction:column; gap:.35rem; padding:1rem; border:1px solid var(--c-line); border-radius:12px; background:var(--c-card); cursor:pointer; text-align:left; color:var(--c-text); transition:border-color .15s,box-shadow .15s,transform .1s; }
.ccb-card:hover{ border-color:var(--c-cyan); box-shadow:0 0 22px rgba(46,230,214,.18); transform:translateY(-2px); }
.ccb-card.is-selected{ border-color:var(--c-cyan); box-shadow:0 0 0 1px var(--c-cyan),0 0 22px rgba(46,230,214,.25); }
.ccb-card img{ width:100%; height:130px; object-fit:cover; border-radius:8px; }
.ccb-card-name{ font-weight:700; font-size:1.05rem; color:#fff; }
.ccb-card-price{ font-weight:800; color:var(--c-cyan); font-size:1.15rem; }
.ccb-card-meta{ font-size:.8rem; color:var(--c-muted); }
.ccb-card-desc{ font-size:.8rem; color:var(--c-muted); margin-top:.2rem; }

.ccb-choice{ display:flex; flex-wrap:wrap; gap:.6rem; }
.ccb-choice button{ border:1px solid var(--c-line); background:var(--c-card); color:var(--c-text); padding:.6rem 1.1rem; border-radius:8px; cursor:pointer; transition:border-color .12s; font-size:.8rem; }
.ccb-choice button:hover{ border-color:var(--c-cyan); }
.ccb-choice button.is-on{ background:var(--c-cyan); color:#04201d; border-color:var(--c-cyan); font-weight:700; }

.ccb-stepper{ display:flex; align-items:center; gap:.75rem; }
.ccb-stepper button{ width:38px; height:38px; display:flex; align-items:center; justify-content:center; border:1px solid var(--c-line); background:var(--c-card); color:var(--c-text); border-radius:8px; font-size:1.2rem; line-height:1; cursor:pointer; }
.ccb-stepper button:hover{ border-color:var(--c-cyan); }
.ccb-stepper-val{ min-width:2rem; text-align:center; font-weight:700; font-size:1.05rem; }
.ccb-stepper-note{ color:var(--c-muted); font-size:.85rem; }

.ccb-cal{ max-width:380px; border:1px solid var(--c-line); border-radius:12px; padding:1rem; background:var(--c-card); }
.ccb-cal-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:.85rem; color:#fff; }
.ccb-cal-head strong{ font-size:1.05rem; }
.ccb-cal-head button{ display:flex; align-items:center; justify-content:center; width:32px; height:32px; border:1px solid var(--c-line); border-radius:8px; background:transparent; color:var(--c-text); font-size:1.1rem; line-height:1; cursor:pointer; }
.ccb-cal-head button:hover{ color:var(--c-cyan); border-color:var(--c-cyan); }
.ccb-cal-dow,.ccb-cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.ccb-cal-dow{ margin-bottom:6px; }
.ccb-cal-dow span{ text-align:center; font-size:.72rem; color:var(--c-muted); font-weight:600; }
.ccb-day{ aspect-ratio:1; display:flex; align-items:center; justify-content:center; min-width:0; border:1px solid transparent; border-radius:8px; background:var(--c-card2); color:var(--c-text); cursor:pointer; font-size:.9rem; }
.ccb-day.ccb-open{ background:rgba(46,230,214,.12); border-color:rgba(46,230,214,.3); }
.ccb-day.ccb-partial{ background:rgba(224,168,46,.16); }
.ccb-day.ccb-full{ background:rgba(255,61,181,.14); color:var(--c-muted); }
.ccb-day:not(.is-disabled):not(.ccb-empty):hover{ border-color:var(--c-cyan); }
.ccb-day.is-selected{ outline:2px solid var(--c-cyan); box-shadow:0 0 12px rgba(46,230,214,.4); }
.ccb-day.is-disabled{ cursor:not-allowed; opacity:.45; }
.ccb-day.ccb-empty{ background:transparent; cursor:default; }
.ccb-legend{ margin-top:.9rem; padding-top:.85rem; border-top:1px solid var(--c-line); font-size:.75rem; color:var(--c-muted); display:flex; align-items:center; gap:.4rem; }
.ccb-dot{ width:9px; height:9px; border-radius:50%; display:inline-block; margin-right:.1rem; }
.ccb-dot:not(:first-child){ margin-left:.6rem; }
.ccb-dot.ccb-open{ background:var(--c-cyan); } .ccb-dot.ccb-partial{ background:var(--c-gold); } .ccb-dot.ccb-full{ background:var(--c-pink); }

.ccb-slots{ margin-top:1.5rem; }
.ccb-slots h3{ margin-top:0; }
.ccb-slot-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:.6rem; margin-top:.85rem; }
.ccb-slot{ border:1px solid var(--c-line); background:var(--c-card); color:var(--c-text); border-radius:8px; padding:.6rem; cursor:pointer; }
.ccb-slot:hover{ border-color:var(--c-cyan); }
.ccb-slot.is-selected{ background:var(--c-cyan); color:#04201d; border-color:var(--c-cyan); font-weight:700; }
.ccb-slot em{ font-style:normal; font-size:.72rem; opacity:.85; display:block; }

.ccb-allowance{ margin:.6rem 0 1rem; padding:.7rem .9rem; border:1px solid rgba(46,230,214,.35); background:rgba(46,230,214,.07); border-radius:10px; }
.ccb-allowance.is-over{ border-color:rgba(224,168,46,.45); background:rgba(224,168,46,.08); }
.ccb-allow-bar{ height:6px; border-radius:6px; background:var(--c-card2); overflow:hidden; margin-bottom:.5rem; }
.ccb-allow-bar span{ display:block; height:100%; background:var(--c-cyan); transition:width .2s; }
.ccb-allowance.is-over .ccb-allow-bar span{ background:var(--c-gold); }
.ccb-allow-msg{ font-size:.85rem; color:var(--c-text); }
.ccb-allow-msg b{ color:var(--c-cyan); }
.ccb-over{ color:var(--c-gold); }

.ccb-dessert-list{ display:grid; grid-template-columns:repeat(2,1fr); gap:.75rem; margin-top:.85rem; }
.ccb-dessert{
	display:grid; grid-template-columns:1fr auto; grid-template-areas:"name name" "price step";
	row-gap:.7rem; column-gap:.6rem; padding:.9rem 1rem; border:1px solid var(--c-line); border-radius:10px; background:var(--c-card);
}
.ccb-dessert.is-quote{ background:rgba(255,61,181,.07); border-color:rgba(255,61,181,.3); }
.ccb-d-name{ grid-area:name; line-height:1.3; font-weight:600; }
.ccb-d-price{ grid-area:price; align-self:end; color:var(--c-muted); font-size:.85rem; white-space:nowrap; }
.ccb-d-step{ grid-area:step; justify-self:end; align-self:end; display:flex; align-items:center; gap:.6rem; }
.ccb-d-step button{ width:34px; height:34px; display:flex; align-items:center; justify-content:center; border:1px solid var(--c-line); background:var(--c-card2); color:var(--c-text); border-radius:8px; font-size:1.15rem; line-height:1; cursor:pointer; padding:0; }
.ccb-d-step button:hover{ border-color:var(--c-cyan); }
.ccb-d-step b{ min-width:1.4rem; text-align:center; font-size:1rem; }

.ccb-notes{ width:100%; max-width:520px; min-height:90px; padding:.6rem .7rem; border:1px solid var(--c-line); border-radius:8px; background:var(--c-card); color:var(--c-text); font:inherit; resize:vertical; }
.ccb-notes:focus{ outline:0; border-color:var(--c-cyan); box-shadow:0 0 0 2px rgba(46,230,214,.2); }

.ccb-summary{ border:1px solid var(--c-line); border-radius:12px; padding:1rem 1.2rem; display:flex; flex-direction:column; gap:.35rem; background:var(--c-card); }
.ccb-price{ width:100%; margin-top:1rem; border-collapse:separate; border-spacing:0; border:1px solid var(--c-line); border-radius:12px; overflow:hidden; background:var(--c-card); }
.ccb-price td{ padding:.85rem 1.2rem; border-bottom:1px solid var(--c-line); }
.ccb-price tr:last-child td{ border-bottom:0; }
.ccb-price td:last-child{ text-align:right; white-space:nowrap; }
.ccb-price .ccb-total td{ font-weight:800; font-size:1.1rem; color:var(--c-cyan); padding-top:1rem; padding-bottom:1rem; }

/* Square buttons to match the site's button style (no radius). */
#ccb-booking-app .ccb-btn,
#ccb-booking-app .ccb-choice button,
#ccb-booking-app .ccb-slot,
#ccb-booking-app .ccb-stepper button,
#ccb-booking-app .ccb-d-step button,
#ccb-booking-app .ccb-cal-head button{ border-radius:0; }

@media (max-width:560px){ .ccb-cal{ max-width:none; } .ccb-dessert-list{ grid-template-columns:1fr; } }
