:root{
  --slot-height:38px;
  --cb-bg:#fff;
  --cb-text:#121212;
  --cb-muted:#5b5b5b;
  --cb-line:rgba(0,0,0,.10);
  --cb-mint:#d2fcec;
  --cb-mint-strong:#05d584;
  --cb-soft:#f7f8f8;
}
*{box-sizing:border-box}
body{font-family:"Poppins",system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:#fafbfb;color:var(--cb-text)}
a{color:inherit}.text-secondary{color:var(--cb-muted)!important}

/* Header */
.planner-navbar{background:rgba(255,255,255,.97);border-bottom:1px solid var(--cb-line);backdrop-filter:blur(10px)}
.planner-logo-link{padding:.25rem 0;margin-right:1.4rem}.planner-logo{display:block;width:145px;max-height:46px;object-fit:contain;object-position:left center}
.planner-navbar .nav-link{position:relative;color:var(--cb-text);font-size:.92rem;padding:.65rem .7rem!important;margin:0 .1rem}
.planner-navbar .nav-link::after{content:"";position:absolute;left:.7rem;right:.7rem;bottom:.35rem;height:2px;border-radius:2px;background:transparent}
.planner-navbar .nav-link:hover::after,.planner-navbar .nav-link.active::after{background:var(--cb-mint-strong)}
.planner-navbar .nav-link.active{font-weight:600;color:#000}
.admin-nav-icons{margin-left:auto}.icon-nav-btn{width:38px;height:38px;border-radius:999px;display:grid;place-items:center;color:var(--cb-text);text-decoration:none;border:1px solid transparent}
.icon-nav-btn:hover,.icon-nav-btn.active{background:var(--cb-mint);border-color:var(--cb-mint)}
.icon-nav-btn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

.planner-navbar {
    padding-top: .22rem;
    padding-bottom: .27rem;
}

.planner-logo-link {
    display: block;
    height: 30px;
    overflow: hidden;
}

.planner-logo {
    height: 48px;
    width: auto;
    display: block;
    object-fit: cover;
    object-position: top;
}

.section-title-lite{display:inline-block;position:relative;font-weight:700;letter-spacing:.1px;font-size:clamp(1.65rem,3vw,2.3rem);z-index:0;margin:0}
.section-title-lite::after{content:"";position:absolute;left:0;right:0;top:.36em;height:.55em;background:var(--cb-mint);border-radius:6px;z-index:-1}
.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--cb-muted);font-weight:600;margin-bottom:.25rem}
.cb-card{border:1px solid var(--cb-line);border-radius:16px;background:#fff;box-shadow:none!important}
.cb-btn{background:var(--cb-mint);border:1px solid var(--cb-mint);color:#000;border-radius:999px;padding:.55rem 1rem;font-weight:600}.cb-btn:hover,.cb-btn:focus{background:var(--cb-mint-strong);border-color:var(--cb-mint-strong);color:#000}.cb-btn-small{font-size:.82rem;padding:.38rem .8rem}
.form-control,.form-select,.input-group-text{border-color:var(--cb-line);border-radius:10px}.input-group>.form-control,.input-group>.input-group-text{border-radius:10px}
.compact-table{margin-bottom:0}.compact-table>:not(caption)>*>*{padding:.62rem .5rem;border-color:rgba(0,0,0,.065);vertical-align:middle}.compact-table thead th{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:var(--cb-muted);font-weight:600}.inactive-row{opacity:.52}.cost-muted{color:#9a9a9a;font-size:.82em}

/* Availability */
.parent-shell{max-width:1080px}.availability-page{max-width:1180px;margin:0 auto}.availability-title-row{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem}.availability-toolbar{display:flex;align-items:end;justify-content:flex-start}.student-picker{width:min(340px,100%)}
.availability-wrap{overflow:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--cb-line);border-radius:12px;background:#fff}.availability-grid{min-width:700px;user-select:none;margin:0}.availability-grid>:not(caption)>*>*{border-color:rgba(0,0,0,.065)}.availability-grid th{position:sticky;top:0;z-index:3;background:#fff;text-align:center;font-size:.82rem;color:var(--cb-muted);font-weight:600}.availability-grid .time-col{width:70px;min-width:70px;background:#fff;position:sticky;left:0;z-index:4;text-align:right;padding-right:.6rem;font-size:.75rem}.availability-cell{position:relative;min-width:100px;height:39px;cursor:pointer;background:#f8f9f9;transition:background .08s ease,box-shadow .08s ease;touch-action:none;color:#58615e;font-size:.68rem;font-weight:600;overflow:visible}.availability-cell[data-state="available"]{background:#c9f7e6;color:#24664d}.availability-cell[data-state="possible"]{background:#fff1bd;color:#7c6518}.availability-cell[data-state="unavailable"]{background:#f5f6f6;color:#858585}.availability-cell:hover{box-shadow:inset 0 0 0 2px rgba(0,0,0,.08);z-index:2}.availability-cell:focus-visible{outline:3px solid var(--cb-mint-strong);outline-offset:-3px;z-index:3}.availability-state-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);white-space:nowrap;pointer-events:none;padding:.08rem .32rem;border-radius:999px;background:rgba(255,255,255,.58);backdrop-filter:blur(2px);line-height:1.25}.availability-cell.block-start:not(.block-single){border-radius:6px 6px 0 0}.availability-cell.block-end:not(.block-single){border-radius:0 0 6px 6px}.availability-cell.block-single{border-radius:6px}.availability-bottom-save{display:flex;justify-content:flex-end;padding:.75rem .15rem 0}

/* Planner */
.planner-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap}.planner-subtitle{font-size:.9rem}.planner-week-total{display:flex;align-items:baseline;gap:.4rem;color:#aaa;font-size:.72rem}.planner-week-total strong{font-size:.84rem;color:#888;font-weight:500}
.planner-shell{display:grid;grid-template-columns:minmax(210px,255px) minmax(720px,1fr);gap:1rem;align-items:start}.planner-students-card{position:sticky;top:78px}.student-list{max-height:70vh;overflow:auto;border-radius:10px}.student-item{cursor:pointer;border-color:rgba(0,0,0,.055);padding:.55rem .65rem}.student-item.active{color:#000;background:var(--cb-mint);border-color:var(--cb-mint)}.student-meta{color:var(--cb-muted)}.student-item.active .student-meta{color:#3f6759}.student-minutes{font-size:.68rem;color:#8a8a8a;font-weight:500}
.planner-board-wrap{overflow:auto;border-radius:14px}.planner-board{display:grid;grid-template-columns:62px repeat(5,minmax(124px,1fr));position:relative;background:#fff;border:1px solid var(--cb-line);border-radius:14px;overflow:hidden;min-width:760px}.planner-head{padding:.5rem .35rem;font-weight:600;text-align:center;border-bottom:1px solid var(--cb-line);background:#fafbfb;position:sticky;top:0;z-index:8;display:flex;flex-direction:column}.planner-head span{font-size:.61rem;color:#b0b0b0;font-weight:400;margin-top:.05rem}.planner-time-head{background:#fff}.planner-time{height:var(--slot-height);border-bottom:1px solid rgba(0,0,0,.055);padding:.23rem .4rem;font-size:.68rem;color:#aaa;background:#fff;text-align:right}.planner-slot{height:var(--slot-height);border-left:1px solid rgba(0,0,0,.055);border-bottom:1px solid rgba(0,0,0,.055);position:relative;cursor:default}.planner-slot.good{background:rgba(5,213,132,.105);cursor:pointer}.planner-slot.maybe{background:rgba(255,193,7,.13);cursor:pointer}.planner-slot.bad{background:rgba(0,0,0,.025)}.planner-slot.good:hover,.planner-slot.maybe:hover{box-shadow:inset 0 0 0 2px var(--cb-mint-strong)}.planner-slot.none{background:#fff}
.travel-window{position:absolute;left:6px;right:6px;z-index:2;background:repeating-linear-gradient(135deg,rgba(91,91,91,.035),rgba(91,91,91,.035) 5px,rgba(91,91,91,.085) 5px,rgba(91,91,91,.085) 7px);border-radius:5px;pointer-events:none;border:1px solid rgba(0,0,0,.035)}.travel-before{border-bottom-style:dashed}.travel-after{border-top-style:dashed}
.lesson-block{position:absolute;left:4px;right:4px;z-index:5;border-radius:8px;background:#202423;color:#fff;font-size:.75rem;line-height:1.15;overflow:hidden;text-align:left;cursor:pointer;display:flex;align-items:flex-start;justify-content:space-between;gap:.2rem;padding:.35rem .25rem .35rem .45rem}.lesson-copy{min-width:0;flex:1}.lesson-copy strong,.lesson-copy span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lesson-copy span{opacity:.72;font-size:.66rem;margin-top:.16rem}.lesson-block.selected{outline:3px solid var(--cb-mint-strong);outline-offset:-1px}.lesson-actions{display:flex;gap:2px;flex:0 0 auto}.lesson-icon-btn{width:23px;height:23px;border:0;border-radius:999px;background:rgba(255,255,255,.10);color:#fff;display:grid;place-items:center;padding:0;opacity:.78}.lesson-icon-btn:hover,.lesson-icon-btn.active{background:var(--cb-mint);color:#111;opacity:1}.lesson-icon-btn svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.lesson-remove:hover{background:#fff0f0;color:#a71d2a}

/* Move overview is useful, but intentionally secondary */
.move-overview-details{border-top:1px solid var(--cb-line);padding-top:.8rem;color:var(--cb-muted)}.move-overview-details summary{cursor:pointer;font-size:.82rem;font-weight:600;color:#777;width:max-content}.move-overview-details summary:hover{color:#111}.move-overview-note{font-size:.75rem;margin:.45rem 0 .6rem}.move-overview-wrap{overflow:auto;border:1px solid rgba(0,0,0,.06);border-radius:10px;background:#fff}.move-grid{display:grid;grid-template-columns:minmax(170px,1.35fr) repeat(5,minmax(92px,1fr));min-width:720px}.move-grid>*{border-right:1px solid rgba(0,0,0,.045);border-bottom:1px solid rgba(0,0,0,.045)}.move-corner,.move-day-head{padding:.48rem .65rem;background:#fafbfb;font-size:.7rem;color:var(--cb-muted);font-weight:600;text-align:center}.move-corner{text-align:left}.move-student,.move-cell{appearance:none;border:0;background:#fff;text-align:left;min-height:44px;padding:.42rem .65rem;color:var(--cb-text)}.move-student{display:flex;flex-direction:column;font-size:.83rem}.move-student span{font-size:.65rem;color:var(--cb-muted)}.move-student:hover,.move-student.selected{background:var(--cb-mint)}.move-cell{text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:.76rem;cursor:pointer}.move-cell.good{background:rgba(5,213,132,.06)}.move-cell.maybe{background:rgba(255,193,7,.07)}.move-cell.none{color:#c1c1c1}.move-cell.current{background:#f0f1f1;font-weight:600}.move-cell small{font-size:.53rem;text-transform:uppercase;letter-spacing:.04em;color:#9a9a9a}.move-cell:hover{box-shadow:inset 0 0 0 2px var(--cb-mint-strong)}

/* Footer */
.app-footer{text-align:center;color:#9a9a9a;font-size:.72rem;line-height:1.65}.app-footer a{color:#858585;text-decoration:none}.app-footer a:hover{text-decoration:underline;text-underline-offset:2px}

@media(max-width:991.98px){.planner-shell{grid-template-columns:1fr}.planner-students-card{position:static}.student-list{max-height:260px}.planner-board{min-width:780px}.admin-nav-icons{margin: .5rem 0 0}}
@media(max-width:575.98px){main.container-fluid{padding-left:.7rem!important;padding-right:.7rem!important}.cb-card{border-radius:12px}.availability-grid{min-width:620px}.availability-cell{min-width:88px}.section-title-lite{font-size:1.65rem}.planner-logo{width:125px}.availability-title-row{align-items:center}.availability-state-label{font-size:.62rem}}

/* Mobile availability: one day at a time. Desktop keeps the full week table. */
.availability-mobile-days{display:none}
@media(max-width:575.98px){
  .availability-mobile-days{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:.3rem;
    margin:.2rem 0 .7rem;
  }
  .availability-day-btn{
    appearance:none;
    border:1px solid var(--cb-line);
    background:#fff;
    color:var(--cb-muted);
    border-radius:999px;
    min-height:40px;
    padding:.35rem .2rem;
    font-size:.76rem;
    font-weight:600;
  }
  .availability-day-btn.active{
    background:var(--cb-mint);
    border-color:var(--cb-mint);
    color:#111;
  }
  .availability-day-btn:focus-visible{outline:3px solid var(--cb-mint-strong);outline-offset:2px}

  .availability-wrap{overflow:visible}
  .availability-grid{width:100%;min-width:0;table-layout:fixed}
  .availability-grid .mobile-day-hidden{display:none!important}
  .availability-grid .time-col{width:66px;min-width:66px;padding-right:.55rem}
  .availability-cell{min-width:0;width:100%;height:42px;touch-action:pan-y;font-size:.72rem}
  .availability-state-label{font-size:.68rem}
  .availability-grid th:not(.time-col){font-size:.9rem}
}


/* Mobile planner: one day at a time. Desktop keeps the full Mon–Fri planner. */
.planner-mobile-days{display:none}
@media(max-width:575.98px){
  .planner-mobile-days{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:.3rem;
    margin:0 0 .7rem;
  }
  .planner-day-btn{
    appearance:none;
    border:1px solid var(--cb-line);
    background:#fff;
    color:var(--cb-muted);
    border-radius:999px;
    min-height:40px;
    padding:.35rem .2rem;
    font-size:.76rem;
    font-weight:600;
  }
  .planner-day-btn.active{
    background:var(--cb-mint);
    border-color:var(--cb-mint);
    color:#111;
  }
  .planner-day-btn:focus-visible{outline:3px solid var(--cb-mint-strong);outline-offset:2px}

  .planner-board-wrap{overflow:visible}
  .planner-board{
    width:100%;
    min-width:0;
    grid-template-columns:62px minmax(0,1fr);
  }
  .planner-board .planner-mobile-day-hidden{display:none!important}
  .planner-head:not(.planner-time-head){font-size:.92rem}
  .planner-slot{min-width:0}
  .lesson-block{left:5px;right:5px}
  .planner-title-row{align-items:center}
  .planner-week-total{margin-left:auto}
}

/* Hub v2: mobile navigation, readable forms and distinct entry panels */
.hub-entry{background:#f0f8f5!important;border:1px solid #cde8dc!important}
.hub-entry h2{font-size:1.1rem;font-weight:700}
.hub-stat{background:#fff;border:1px solid var(--cb-line);border-radius:16px;padding:1.1rem}
.hub-stat .value{font-size:1.5rem;font-weight:700}
.hub-scenario{border:1px solid var(--cb-line);border-radius:16px;padding:1rem;background:#fff;text-align:left;width:100%}
.hub-scenario.is-selected{border:2px solid #05ad71;background:#effaf5}
.hub-budget-row{display:grid;grid-template-columns:minmax(0,1fr) 150px 48px;gap:.5rem;align-items:center;margin-bottom:.6rem}
.hub-form-heading{font-size:1rem;font-weight:700;margin-bottom:.75rem}
.dropdown-menu{border-radius:12px;border-color:var(--cb-line);box-shadow:0 9px 30px rgba(0,0,0,.07)}
@media(max-width:767px){.hub-budget-row{grid-template-columns:minmax(0,1fr) 105px 42px}.hub-stat .value{font-size:1.2rem}.card.cb-card{max-width:100%}.table-responsive{max-width:100%}.navbar-collapse{max-height:75vh;overflow-y:auto}.dropdown-menu{box-shadow:none;border:0;background:#f6fbf9;padding-left:10px}.hub-entry .btn{width:100%}}

/* Hub V3 mobile-first finance and dashboard */
.hub-home-intro{padding:.3rem 0}.hub-home-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}.hub-action{border:1px solid var(--cb-line);border-radius:17px;padding:1.25rem;display:flex;flex-direction:column;gap:.35rem;background:#fff;color:var(--cb-text);text-decoration:none}.hub-action:hover{background:var(--cb-mint);color:var(--cb-text)}.hub-action-symbol{font-size:2rem;line-height:1.2;color:#147d59}.hub-action small{color:var(--cb-muted)}
.hub-budget-edit{display:grid;grid-template-columns:minmax(0,1fr) minmax(105px,160px);align-items:center;gap:.65rem;padding:.4rem 0;border-bottom:1px solid var(--cb-line)}.hub-budget-edit label{font-size:.85rem;overflow-wrap:anywhere}.hub-budget-edit .form-control{min-width:0}.hub-budget-edit .input-group-text{padding-inline:.45rem}
.hub-invoices-mobile{display:none}.hub-inline-payment{border:1px solid rgba(5,213,132,.26);background:rgba(5,213,132,.065);padding:1rem;border-radius:12px}
@media(max-width:991px){.hub-home-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.navbar .dropdown-menu{border:0;box-shadow:none;background:#f7f8f8}}
@media(max-width:767px){.hub-invoices-desktop{display:none}.hub-invoices-mobile{display:block}.hub-invoice-mobile-item{display:block;padding:.75rem .45rem;border-bottom:1px solid var(--cb-line);text-decoration:none;color:var(--cb-text)}.hub-invoice-top,.hub-invoice-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.4rem;align-items:center;font-size:.76rem;color:var(--cb-muted)}.hub-invoice-top strong{color:var(--cb-text)}.hub-invoice-middle{display:flex;flex-direction:column;gap:.1rem;font-size:.9rem;margin:.35rem 0}.hub-invoice-middle span{color:var(--cb-muted);font-size:.78rem}.hub-invoice-bottom b{color:var(--cb-text)}.hub-mini-status{background:var(--cb-soft);padding:.15rem .5rem;border-radius:1rem;font-size:.7rem}}
@media(max-width:460px){.hub-home-actions{gap:.65rem}.hub-action{padding:.85rem}.hub-action-symbol{font-size:1.6rem}.hub-budget-edit{grid-template-columns:minmax(0,1fr) minmax(108px,45%)}.hub-budget-edit label{font-size:.77rem}}

/* Hub V11 enhancements */
.hub-subnav-wrap{background:#fff;border-bottom:1px solid var(--cb-line)}
.hub-subnav{display:flex;align-items:center;gap:.35rem;overflow-x:auto;scrollbar-width:thin;white-space:nowrap;padding-top:.55rem;padding-bottom:.55rem}
.hub-subnav-link{display:inline-flex;align-items:center;padding:.48rem .9rem;border-radius:999px;color:var(--cb-muted);font-size:.86rem;font-weight:600;text-decoration:none}
.hub-subnav-link:hover{background:#f1f7f3;color:#121212}
.hub-subnav-link.active{background:var(--cb-mint);color:#121212}
.hub-clickable-row{cursor:pointer}
.hub-clickable-row:hover>td,.hub-client-row:hover>td{background:#e9fcf4!important}
.hub-clickable-row:focus-visible{outline:2px solid var(--cb-mint-strong);outline-offset:-2px}
.hub-status{display:inline-flex;align-items:center;gap:.36rem;border-radius:999px;padding:.22rem .55rem;font-size:.72rem;font-weight:650;white-space:nowrap}
.hub-status:before{content:"";height:7px;width:7px;flex:none;border-radius:50%;background:currentColor}
.hub-status-paid{background:#dff7e8;color:#18633d}
.hub-status-overdue{background:#fee8e8;color:#a82c37}
.hub-status-issued{background:#fff1d0;color:#8e5d07}
.hub-status-partial{background:#e6efff;color:#315f9c}
.hub-status-draft{background:#eceef0;color:#5b626b}
.hub-status-cancelled{background:#f1eeee;color:#746a6a}
.hub-settings{max-width:1260px;margin:auto}
.hub-settings .card{border-radius:16px}
.hub-settings .form-label{font-weight:600;font-size:.84rem;margin-bottom:.35rem}
.hub-settings textarea{resize:vertical}
@media(max-width:575.98px){.hub-subnav{padding-top:.45rem;padding-bottom:.45rem}.hub-subnav-link{font-size:.8rem;padding:.45rem .65rem}}

/* V12: compact finance overview */
.hub-finance-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.8rem;margin-bottom:.4rem}
.hub-metric{border:1px solid var(--cb-line);border-radius:12px;background:var(--cb-soft);padding:.7rem .9rem;min-width:0}
.hub-metric small{display:block;color:var(--cb-muted);font-size:.7rem;line-height:1.3;margin-bottom:.25rem}
.hub-metric strong{display:block;font-size:clamp(.85rem,1.25vw,1.08rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:900px){.hub-finance-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:390px){.hub-metric{padding:.6rem}.hub-metric strong{font-size:.82rem}}
