
/* ==========================================================================
   BOOKING PLANNER — propose-event.html, pitch-logistics.html and the
   organizer.html "Booking Planner" tab. Logic in booking-planner.js; see
   feature-brief-booking-planner.md. Accent blue = pitch preferences, purple =
   reserved socials, orange-yellow (--orange) = open slots / gap alerts.
   ========================================================================== */
:root{--bp-blue:#2F6FDE;--bp-blue-tint:#E7EFFC;--bp-social:#6A55B3;--bp-social-tint:#EFEAF8;--bp-red:#B3261E;--bp-oc:#E0703A;--bp-sd:#1E9E8A;}

/* ---- public forms ---- */
.bp-pitch-wrap{max-width:760px;margin:0 auto;}
.bp-pitch-form .bp-fieldset{border:none;border-top:1px solid rgba(0,0,0,0.12);padding:24px 0 8px;margin:0;}
.bp-pitch-form .bp-fieldset:first-of-type{border-top:none;padding-top:0;}
.bp-pitch-form legend{font-size:18px;font-weight:700;padding:0;margin-bottom:14px;}
.bp-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;}
.bp-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0 12px;}
@media (max-width:640px){.bp-grid-2,.bp-grid-3{grid-template-columns:1fr;}}
.bp-optional{font-weight:400;color:var(--mid-gray);font-size:12px;}
.bp-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
.bp-chip-row{display:flex;flex-wrap:wrap;gap:8px;}
.bp-chip{font:inherit;font-size:14px;padding:8px 14px;border:1px solid rgba(21,21,15,0.25);background:#fff;border-radius:999px;cursor:pointer;color:var(--charcoal);}
.bp-chip:hover{border-color:var(--charcoal);}
.bp-chip.is-on{background:var(--charcoal);border-color:var(--charcoal);color:var(--warm-white);}
.bp-chip:focus-visible,.bp-month:focus-visible,.bp-card:focus-visible,.bp-seg-btn:focus-visible{outline:2px solid var(--bp-blue);outline-offset:2px;}
.bp-month-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;}
@media (max-width:640px){.bp-month-grid{grid-template-columns:repeat(3,1fr);}}
.bp-month{font:inherit;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px;border:1px solid rgba(21,21,15,0.25);background:#fff;border-radius:2px;cursor:pointer;text-align:left;min-height:60px;}
.bp-month-name{font-weight:700;font-size:14px;}
.bp-month-year{font-weight:400;color:var(--mid-gray);font-size:12px;}
.bp-month-state{font-size:12px;color:var(--mid-gray);}
.bp-month.is-available{border:2px solid var(--bp-blue);}
.bp-month.is-preferred{border:2px solid var(--bp-blue);background:var(--bp-blue-tint);}
.bp-month.is-available .bp-month-state,.bp-month.is-preferred .bp-month-state{color:var(--bp-blue);font-weight:600;}
.bp-month.is-social{background:var(--bp-social-tint);border-color:transparent;cursor:not-allowed;}
.bp-month.is-social .bp-month-state{color:var(--bp-social);}
.bp-month-key{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px;font-size:12px;color:var(--mid-gray);}
.bp-key-swatch{display:inline-block;width:14px;height:14px;border-radius:2px;vertical-align:-2px;margin-right:6px;border:2px solid var(--bp-blue);background:#fff;}
.bp-key-swatch.is-preferred{background:var(--bp-blue-tint);}
.bp-key-swatch.is-social{background:var(--bp-social-tint);border-color:transparent;}
.bp-pitch-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding-top:16px;}
.bp-pitch-actions .form-hint{margin:0;}
.form-hint.is-error,.bp-pitch-actions .is-error{color:var(--bp-red);}
.bp-pitch-done{text-align:center;padding:40px 0;}
.bp-pitch-done h2{margin:8px 0 12px;}
.bp-pitch-done p{max-width:520px;margin:0 auto 20px;}
.bp-lg-intro{margin:0 0 20px;}
.bp-ok{color:var(--bp-sd);font-weight:600;}

/* ---- planner shell ---- */
.bp-toolbar,.bp-board-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px;}
.bp-seg{display:inline-flex;border:1px solid var(--charcoal);border-radius:2px;overflow:hidden;}
.bp-seg-btn{font:inherit;font-size:13px;font-weight:600;padding:8px 14px;background:#fff;border:none;border-left:1px solid var(--charcoal);cursor:pointer;color:var(--charcoal);}
.bp-seg-btn:first-child{border-left:none;}
.bp-seg-btn.is-on{background:var(--charcoal);color:var(--warm-white);}
.bp-link{font-size:13px;font-weight:600;color:var(--charcoal);}
.bp-textbtn{background:none;border:none;padding:0;font:inherit;font-size:13px;color:var(--charcoal);text-decoration:underline;font-weight:600;cursor:pointer;}
.bp-muted{color:var(--mid-gray);font-size:12px;}
.bp-warn{color:#9A5B00;font-weight:600;font-size:12px;}
.bp-empty{text-align:center;color:var(--mid-gray);padding:60px 0;}
.bp-btn-danger{border-color:var(--bp-red)!important;color:var(--bp-red)!important;}
.btn-primary.bp-btn-danger{background:var(--bp-red)!important;color:#fff!important;}
.bp-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.bp-filters .form-input{max-width:280px;}
.bp-filters .form-select{max-width:300px;}
.bp-legend{margin:0 0 12px;}
.bp-queue .bp-row{cursor:pointer;}
.bp-queue .bp-row:hover td{background:rgba(21,21,15,0.03);}
.bp-chip-alert{background:#FFF3D6;color:#7A4A00;}
.bp-ch{display:inline-block;font-size:11px;font-weight:700;padding:2px 6px;border-radius:2px;color:#fff;}
.bp-ch-OC{background:var(--bp-oc);}
.bp-ch-SD{background:var(--bp-sd);}
.bp-clock{font-weight:700;}
.bp-clock.is-amber{color:#9A5B00;}
.bp-clock.is-red{color:var(--bp-red);}
.bp-status{display:inline-block;font-size:11px;font-weight:700;padding:3px 8px;border-radius:2px;background:rgba(21,21,15,0.06);}
.bp-status-shortlisted{background:var(--bp-blue-tint);color:#1C4FA8;}
.bp-status-scheduled{background:var(--teal-tint);color:#0a6b66;}
.bp-status-needs_info{background:#FFF3D6;color:#7A4A00;}
.bp-status-declined,.bp-status-withdrawn{color:var(--mid-gray);}
.bp-dots{display:inline-flex;gap:3px;vertical-align:middle;}
.bp-dot{display:inline-block;width:8px;height:8px;border-radius:50%;border:1.5px solid rgba(21,21,15,0.2);box-sizing:border-box;}
.bp-dot.is-available{border-color:var(--bp-blue);}
.bp-dot.is-preferred{border-color:var(--bp-blue);background:var(--bp-blue);}
.bp-legend .bp-dot,.bp-board-legend .bp-dot{margin:0 3px 0 6px;vertical-align:-1px;}

/* ---- modal + dialog ---- */
.bp-modal{max-width:760px;}
.bp-dialog-overlay{z-index:260;}
.bp-dialog{max-width:480px;}
.bp-dialog h3{font-size:18px;margin:0 0 12px;}
.bp-dialog-body p{margin:0 0 10px;font-size:14px;}
.bp-dialog-body .form-check{margin:6px 0;}
.bp-dialog-actions,.bp-actions,.bp-modal-foot{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:16px;}
.bp-actions{margin:4px 0 16px;}
.bp-actions .btn,.bp-modal-foot .btn,.bp-dialog-actions .btn{padding:8px 14px;font-size:13px;}
.bp-spacer{flex:1;}
.bp-desc{white-space:pre-line;margin:0 0 16px;}
.bp-dl{display:grid;grid-template-columns:130px 1fr;gap:6px 12px;margin:0 0 16px;font-size:14px;}
.bp-dl dt{font-weight:600;color:var(--mid-gray);font-size:12px;padding-top:2px;}
.bp-dl dd{margin:0;}
@media (max-width:560px){.bp-dl{grid-template-columns:1fr;}.bp-dl dd{margin-bottom:6px;}}
.bp-h4{font-size:15px;margin:20px 0 10px;}
.bp-mtag{display:inline-block;font-size:12px;padding:2px 6px;border:1.5px solid var(--bp-blue);border-radius:2px;margin:0 4px 4px 0;}
.bp-mtag.is-preferred{background:var(--bp-blue-tint);font-weight:600;}
.bp-rubric{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;}
.bp-rubric-row{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:14px;}
.bp-score{display:inline-flex;flex-shrink:0;}
.bp-score-btn{font:inherit;width:36px;height:32px;border:1px solid rgba(21,21,15,0.3);background:#fff;cursor:pointer;margin-left:-1px;}
.bp-score-btn.is-on{background:var(--charcoal);color:var(--warm-white);border-color:var(--charcoal);}
.bp-maillog{list-style:none;padding:0;margin:0 0 8px;font-size:13px;}
.bp-maillog li{padding:6px 0;border-bottom:1px solid rgba(0,0,0,0.08);}
.bp-tabs{display:flex;gap:4px;border-bottom:1px solid rgba(0,0,0,0.12);margin-bottom:16px;flex-wrap:wrap;}
.bp-tab{font:inherit;font-size:13px;font-weight:600;padding:8px 12px;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;color:var(--mid-gray);}
.bp-tab.is-on{color:var(--charcoal);border-bottom-color:var(--charcoal);}
.bp-roles{display:flex;flex-direction:column;gap:12px;}
.bp-role{border:1px solid rgba(0,0,0,0.12);padding:12px;border-radius:2px;}
.bp-role-head{margin-bottom:8px;font-size:14px;}
.bp-person{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:14px;}
.bp-person-name{flex:1;}
.bp-mini-select,.bp-mini-input{padding:6px 8px!important;font-size:13px!important;width:auto;}
.bp-mini-input{width:100%;}
.bp-add-person{margin-top:6px;}
.bp-log,.bp-list{list-style:none;padding:0;margin:12px 0 0;font-size:14px;}
.bp-log li,.bp-list li{padding:10px 0;border-bottom:1px solid rgba(0,0,0,0.08);}
.bp-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;}
.bp-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--charcoal);color:var(--warm-white);padding:10px 16px;font-size:14px;border-radius:2px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:300;max-width:90vw;}
.bp-toast.is-on{opacity:1;transform:translate(-50%,0);}
.bp-toast.is-error{background:var(--bp-red);}

/* ---- board ---- */
.bp-window{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;}
.bp-icon-btn{padding:4px 12px!important;font-size:18px!important;line-height:1;}
.bp-board-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--mid-gray);margin-bottom:12px;align-items:center;}
.bp-key{display:inline-block;width:16px;height:12px;border-radius:2px;vertical-align:-2px;margin-right:4px;border:1.5px solid;}
.bp-key-cand{border-color:var(--bp-blue);}
.bp-key-booked{border-color:rgba(21,21,15,0.35);}
.bp-key-open{border-color:var(--orange);border-style:dashed;}
.bp-key-social{border-color:var(--bp-social);background:var(--bp-social-tint);}
.bp-board-scroll{overflow-x:auto;padding-bottom:8px;}
.bp-board{min-width:max-content;}
.bp-lane{display:grid;grid-template-columns:repeat(13,176px);gap:8px;}
.bp-lane-head{position:sticky;top:0;z-index:1;}
.bp-col-head{background:rgba(21,21,15,0.05);padding:8px 10px;border-radius:2px;display:flex;justify-content:space-between;align-items:baseline;font-size:13px;}
.bp-col-head span{font-size:11px;color:var(--mid-gray);}
.bp-col-head.is-unassigned{background:none;border:1px dashed rgba(21,21,15,0.3);}
.bp-lane-label{font-weight:700;font-size:14px;margin:16px 0 8px;display:flex;align-items:center;gap:8px;position:sticky;left:0;}
.bp-lane-dot{width:10px;height:10px;border-radius:50%;display:inline-block;}
.bp-lane-dot.bp-ch-OC{background:var(--bp-oc);}
.bp-lane-dot.bp-ch-SD{background:var(--bp-sd);}
.bp-cell{min-height:150px;border:1px solid rgba(0,0,0,0.1);border-radius:4px;padding:8px;background:#fff;display:flex;flex-direction:column;gap:6px;transition:background .15s,border-color .15s;}
.bp-cell.is-unassigned{border-style:dashed;background:transparent;}
.bp-cell.is-gap{border:2px solid var(--orange);}
.bp-cell.is-blackout{background:repeating-linear-gradient(135deg,#fff,#fff 6px,rgba(0,0,0,0.04) 6px,rgba(0,0,0,0.04) 12px);}
.bp-cell.is-over{background:var(--bp-blue-tint);border-color:var(--bp-blue);}
.bp-cell-status{font-size:11px;color:var(--mid-gray);}
.bp-cell-sub{font-size:11px;color:var(--mid-gray);margin-top:4px;}
.bp-open-slot{border:1.5px dashed var(--orange);border-radius:4px;padding:8px;font-size:12px;color:var(--mid-gray);}
.bp-card{border:1.5px solid rgba(21,21,15,0.3);border-radius:4px;padding:7px 8px;background:#fff;cursor:grab;font-size:12px;}
.bp-card:hover{box-shadow:0 1px 4px rgba(0,0,0,0.12);}
.bp-card.is-dragging{opacity:.4;}
.bp-card.is-candidate{border-color:var(--bp-blue);}
.bp-card.is-social{border-color:var(--bp-social);background:var(--bp-social-tint);}
.bp-card-title{font-weight:700;font-size:13px;line-height:1.3;}
.bp-card-sub{color:var(--mid-gray);margin-top:2px;}
.bp-card-row{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:5px;}
.bp-fit{font-size:11px;color:var(--mid-gray);}
.bp-fit.is-warn{color:#9A5B00;font-weight:600;}
.bp-card-flag{margin-top:4px;font-size:11px;font-weight:700;color:#9A5B00;}
.bp-card-team{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:11px;}
.bp-avatar{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--charcoal);color:var(--warm-white);font-size:10px;font-weight:700;flex-shrink:0;}
.bp-avatar.is-empty{background:none;border:1.5px dashed rgba(21,21,15,0.35);color:var(--mid-gray);}

/* Month list (pitch form + logistics checklist) — replaced the tap-to-cycle
   grid 2026-10-08: plain checkbox per month + a "Preferred" switch. */
.bp-month-list{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(6,auto);grid-auto-flow:column;gap:8px 16px;}
@media (max-width:640px){.bp-month-list{grid-template-columns:1fr;grid-template-rows:none;grid-auto-flow:row;}}
.bp-mrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid rgba(21,21,15,0.15);border-radius:2px;background:#fff;min-height:48px;}
.bp-mrow.is-on{border-color:var(--bp-blue);}
.bp-mrow.is-pref{background:var(--bp-blue-tint);}
.bp-mrow.is-social{background:transparent;border-style:dashed;color:var(--mid-gray);}
.bp-mcheck{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;cursor:pointer;flex:1;}
.bp-mrow.is-social .bp-mcheck{font-weight:500;cursor:default;}
.bp-mcheck input{width:18px;height:18px;accent-color:var(--bp-blue);margin:0;cursor:pointer;}
.bp-mnote{font-size:12px;color:var(--bp-social);text-align:right;}
.bp-switch{position:relative;display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;flex-shrink:0;}
.bp-switch input{position:absolute;opacity:0;width:36px;height:20px;margin:0;cursor:pointer;}
.bp-switch-track{position:relative;width:36px;height:20px;border-radius:999px;background:rgba(21,21,15,0.25);transition:background .15s;}
.bp-switch-track::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.25);}
.bp-switch input:checked + .bp-switch-track{background:var(--bp-blue);}
.bp-switch input:checked + .bp-switch-track::after{transform:translateX(16px);}
.bp-switch input:focus-visible + .bp-switch-track{outline:2px solid var(--bp-blue);outline-offset:2px;}
.bp-switch.is-disabled{opacity:.35;cursor:not-allowed;}
.bp-switch.is-disabled input{cursor:not-allowed;}
