:root{
  --cream:#F6F4EC;
  --panel:#FFFFFF;
  --ink:#1D1B2E;
  --ink-soft:#5A5770;
  --yellow:#FFC93C;
  --yellow-dark:#8A5A00;
  --red:#E8483A;
  --red-dark:#7A1F17;
  --red-bg:#FBE2DE;
  --blue:#2E6E9E;
  --blue-dark:#173C55;
  --blue-bg:#E4EEF6;
  --green:#3FA65B;
  --green-bg:#E5F4E9;
  --green-dark:#1F5C33;
  --border:#E4E0D2;
  --radius:14px;
  --stud:14px;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--cream);color:var(--ink);font-family:'Inter',sans-serif;line-height:1.5;}
h1,h2,h3,.brand,.brick-title{font-family:'Baloo 2',sans-serif;}
.wrap{max-width:1080px;margin:0 auto;padding:0 24px 80px;}
@media (max-width:640px){
  .wrap{padding:0 14px 60px;}
}

header.top{background:#fff;color:var(--ink);padding:12px 0;border-bottom:6px solid var(--yellow);}
header.top .wrap{display:flex;align-items:center;justify-content:space-between;padding-top:0;padding-bottom:0;}
.brand{font-size:22px;font-weight:800;display:flex;align-items:center;gap:14px;}
.logo-img{height:52px;width:auto;display:block;}
.brand-suffix{font-family:'Baloo 2',sans-serif;font-size:16px;font-weight:700;color:var(--ink-soft);padding-left:14px;border-left:2px solid var(--border);}
.admin-link{color:var(--ink);text-decoration:none;font-size:14px;border:1.5px solid var(--border);padding:8px 16px;border-radius:999px;}
.admin-link:hover{background:var(--cream);}

.hero{padding:44px 0 8px;}
.hero h1{font-size:34px;margin:0 0 8px;font-weight:800;}
.hero p{color:var(--ink-soft);font-size:16px;max-width:560px;margin:0;}

.banner{margin-top:22px;background:var(--green-bg);border:1.5px solid var(--green);color:var(--green-dark);border-radius:var(--radius);padding:14px 18px;font-size:14px;display:none;font-weight:600;}
.banner.show{display:block;}

/* Katalog zajec - karty pogrupowane wg dnia tygodnia (wzorowane na produkcyjnej stronie
   bawsieibuduj.pl/zapisy) - biale karty z kolorowym paskiem po lewej (wg poziomu), bez paska
   wolnych miejsc; dostepnosc miejsc widac juz w etykiecie przycisku (Zapisz sie / Lista rezerwowa). */
.day-heading{font-size:14px;font-weight:800;letter-spacing:.5px;color:var(--ink-soft);margin:30px 0 12px;}
.day-heading:first-of-type{margin-top:22px;}
.day-group{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;}

.signup-card{background:var(--panel);border-radius:var(--radius);border:1px solid var(--border);border-left:5px solid var(--border);overflow:hidden;box-shadow:0 2px 10px rgba(29,27,46,.05);transition:transform .15s ease, box-shadow .15s ease;}
.signup-card:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(29,27,46,.1);}
.signup-card-body{padding:18px 20px 20px;}
.signup-card-title{font-size:18px;font-weight:700;margin:0 0 4px;}
.signup-card-sub{font-size:13px;color:var(--ink-soft);margin:0 0 6px;font-weight:600;}

.cat-a{border-left-color:var(--yellow);} .cat-a .badge{background:#FFF3D6;color:var(--yellow-dark);}
.cat-b{border-left-color:var(--red);} .cat-b .badge{background:#FBE4E1;color:var(--red-dark);}
.cat-c{border-left-color:var(--blue);} .cat-c .badge{background:#E3EFF7;color:var(--blue-dark);}
.cat-d{border-left-color:var(--green);} .cat-d .badge{background:var(--green-bg);color:var(--green-dark);}
.cat-e{border-left-color:#9B6BD6;} .cat-e .badge{background:#F0E8FA;color:#5B3B8C;}
.cat-f{border-left-color:#E8748A;} .cat-f .badge{background:#FCE7EB;color:#A33352;}
.cat-g{border-left-color:#2AA9A0;} .cat-g .badge{background:#E1F5F3;color:#1B6A63;}
.cat-h{border-left-color:#E8863A;} .cat-h .badge{background:#FCEADB;color:#8A4B18;}

.badge{display:inline-block;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;margin-bottom:10px;}
.meta{font-size:13.5px;color:var(--ink-soft);margin:2px 0;}
.meta b{color:var(--ink);font-weight:600;}
.loc-link{color:inherit;text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:2px;}
.loc-link:hover{color:var(--blue);text-decoration-color:var(--blue);}

.info-row{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--ink);margin:8px 0;}
.info-row-icon{flex-shrink:0;}

/* Widok "Lista" - kompaktowe wiersze zamiast pelnych kart, jeden pod drugim. Lewa czesc (nazwa +
   szczegoly) i prawa (cena + przycisk) nie zawijaja sie wzgledem siebie, zeby cena/przycisk byly
   zawsze w tym samym miejscu w kazdym wierszu - tylko lewa czesc moze zawinac sie wewnetrznie. */
.day-group-list{display:flex;flex-direction:column;gap:10px;}
.signup-list-row{background:var(--panel);border-radius:12px;border:1px solid var(--border);border-left:5px solid var(--border);padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px;}
.signup-list-main{flex:1 1 auto;min-width:0;}
.signup-list-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px;}
.signup-list-top .badge{margin-bottom:0;flex-shrink:0;}
.signup-list-top b{font-size:14.5px;}
.signup-list-meta{font-size:12.5px;color:var(--ink-soft);}
.signup-list-actions{display:flex;align-items:center;gap:18px;flex-shrink:0;}
.signup-list-price{font-family:'Baloo 2',sans-serif;font-size:16px;font-weight:700;white-space:nowrap;}
.signup-list-price span{font-size:11.5px;font-weight:500;color:var(--ink-soft);}

@media (max-width:700px){
  .signup-list-row{flex-wrap:wrap;}
  .signup-list-actions{width:100%;justify-content:space-between;}
}
.info-row-sub{color:var(--ink-soft);font-size:11.5px;}

button.cta{font-family:'Baloo 2',sans-serif;background:var(--ink);color:#fff;border:none;padding:10px 20px;border-radius:999px;font-size:14.5px;font-weight:700;cursor:pointer;}
button.cta:hover{background:#33304a;}
button.cta.waitlist{background:var(--yellow);color:var(--ink);}
button.cta.wide{display:block;width:100%;text-align:center;text-transform:uppercase;letter-spacing:.4px;margin-top:16px;}

/* Przycisk zapisu w publicznym katalogu i modalu zapisu - stonowana zielen zamiast domyslnego
   ciemnego tla .cta, zeby akcja "Zapisz sie" wyrozniala sie jako pozytywna/zachecajaca. Nie
   dotyka .cta w panelu admina (tam .cta zostaje ciemne, jak dotychczas). */
[id="grid"] button.cta:not(.waitlist), #signupModal button.cta{background:var(--green);}
[id="grid"] button.cta:not(.waitlist):hover, #signupModal button.cta:hover{background:var(--green-dark);}

.modal-overlay{display:none;position:fixed;inset:0;background:rgba(29,27,46,.55);align-items:center;justify-content:center;z-index:50;padding:20px;}
.modal-overlay.show{display:flex;}
.modal{background:#fff;border-radius:18px;max-width:440px;width:100%;padding:28px 26px;max-height:88vh;overflow-y:auto;transition:max-width .15s;}
.modal.wide{max-width:720px;}
.modal h2{margin:0 0 14px;font-size:19px;}
.modal .sub{color:var(--ink-soft);font-size:13.5px;margin:0 0 18px;}

.signup-grid{display:flex;gap:26px;flex-wrap:wrap;}
.signup-form-col{flex:1 1 280px;min-width:260px;}
.signup-info-col{flex:1 1 250px;min-width:230px;background:var(--cream);border:1px solid var(--border);border-radius:12px;padding:16px 18px;align-self:flex-start;}
.signup-info-col h3{margin:0 0 2px;font-size:16px;color:var(--ink);font-family:'Baloo 2',sans-serif;}
.signup-info-schedule{font-size:13px;color:var(--ink-soft);margin:0 0 10px;font-weight:600;}
.signup-info-row{border-top:1px solid var(--border);padding:8px 0;}
.signup-info-row .label{font-size:10px;text-transform:uppercase;color:var(--ink-soft);font-weight:700;letter-spacing:.3px;}
.signup-info-row .value{font-size:13.5px;color:var(--ink);margin-top:2px;line-height:1.4;}
.signup-info-row .value a{color:var(--blue);text-decoration:underline;}
.signup-progress{margin-top:6px;padding-top:12px;border-top:1px solid var(--border);font-size:12.5px;color:var(--ink-soft);line-height:1.6;}
.signup-progress b{color:var(--ink);}
.signup-desc-box{margin-top:6px;padding-top:12px;border-top:1px solid var(--border);}
.signup-desc-heading{font-family:'Baloo 2',sans-serif;font-weight:700;font-size:13px;margin-bottom:6px;color:var(--ink);}
.signup-desc-text{font-size:12.5px;color:var(--ink-soft);white-space:pre-wrap;line-height:1.55;}
.signup-full-note{background:#FFF3D6;border:1px solid var(--yellow);border-radius:9px;padding:10px 12px;font-size:12.5px;color:var(--yellow-dark);margin-bottom:14px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:13px;font-weight:600;margin-bottom:5px;}
.field input{width:100%;padding:10px 12px;border:1.5px solid var(--border);border-radius:9px;font-size:14px;font-family:'Inter',sans-serif;}
.field input:focus{outline:none;border-color:var(--blue);}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.check{display:flex;gap:9px;align-items:flex-start;margin-bottom:12px;font-size:13px;color:var(--ink-soft);}
.check input{margin-top:3px;}
.error{color:var(--red);font-size:12.5px;margin-bottom:10px;}
.modal-actions{display:flex;gap:10px;margin-top:18px;}
.modal-actions button.ghost{flex:1;background:transparent;border:1.5px solid var(--border);color:var(--ink-soft);padding:10px;border-radius:999px;font-family:'Baloo 2',sans-serif;font-weight:600;cursor:pointer;}
.modal-actions button.cta{flex:2;}

table.admin{width:100%;border-collapse:collapse;margin-top:20px;font-size:13.5px;background:#fff;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);}
table.admin th{background:var(--ink);color:#fff;text-align:left;padding:10px 14px;font-weight:600;font-size:12.5px;}
table.admin td{padding:10px 14px;border-top:1px solid var(--border);}
.empty{color:var(--ink-soft);font-size:13.5px;padding:30px 0;text-align:center;}

.note{margin-top:34px;padding:16px 18px;border-radius:var(--radius);background:#FFF3D6;border:1px solid var(--yellow);font-size:13px;color:var(--yellow-dark);}

.groups-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin:24px 0 4px;}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;}
.filters select{padding:8px 12px;border:1.5px solid var(--border);border-radius:9px;font-size:13.5px;font-family:'Inter',sans-serif;background:#fff;color:var(--ink);}
.filters .clear-filters{background:transparent;border:none;color:var(--blue);font-size:13px;cursor:pointer;text-decoration:underline;padding:0;}
.view-toggle{display:flex;border:1.5px solid var(--border);border-radius:999px;overflow:hidden;}
.view-toggle button{background:#fff;border:none;padding:8px 16px;font-family:'Baloo 2',sans-serif;font-size:13.5px;font-weight:600;color:var(--ink-soft);cursor:pointer;}
.view-toggle button.active{background:var(--ink);color:#fff;}

.no-results{color:var(--ink-soft);font-size:13.5px;padding:26px 0;text-align:center;}

#groupsTableWrap{width:100%;}
#groupsTableWrap table.admin{margin-top:16px;width:100%;table-layout:fixed;font-size:12px;}
#groupsTableWrap table.admin th, #groupsTableWrap table.admin td{white-space:normal;word-break:break-word;padding:8px 8px;}
#groupsTableWrap table.admin th:first-child, #groupsTableWrap table.admin td:first-child{width:30px;}
#groupsTableWrap table.admin th:last-child, #groupsTableWrap table.admin td:last-child{width:150px;}
#groupsTableWrap table.admin td button{background:transparent;border:1.5px solid var(--border);color:var(--ink);padding:4px 8px;border-radius:6px;font-family:'Baloo 2',sans-serif;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;margin:1px 0;}
#groupsTableWrap table.admin td button:hover{background:var(--cream);}

.catalog-list-item{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.catalog-list-item .info b{font-size:15px;}
.catalog-list-item .info .meta{margin-top:2px;}
.catalog-list-item .price-row{margin:0;flex-shrink:0;gap:16px;}
.catalog-list-item .price-row button.cta{flex-shrink:0;}

.icon-btn{background:transparent;border:1.5px solid var(--border);color:var(--ink);width:38px;height:38px;border-radius:999px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.icon-btn:hover{background:var(--cream);}
.icon-btn.active{background:var(--ink);border-color:var(--ink);color:#fff;}
.header-actions{display:flex;align-items:center;gap:10px;}

.settings-layout{display:grid;grid-template-columns:220px 1fr;gap:28px;margin-top:24px;align-items:start;}
.settings-sidebar{background:#fff;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}
.settings-sidebar button{display:block;width:100%;text-align:left;background:transparent;border:none;border-bottom:1px solid var(--border);padding:13px 16px;font-family:'Baloo 2',sans-serif;font-size:14px;font-weight:600;color:var(--ink-soft);cursor:pointer;}
.settings-sidebar button:last-child{border-bottom:none;}
.settings-sidebar button.active{background:var(--cream);color:var(--ink);}
.settings-content{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:24px;}
.settings-content h3{margin:0 0 4px;font-size:18px;}
.settings-content .sub{color:var(--ink-soft);font-size:13.5px;margin:0 0 20px;}

.level-row{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:9px;padding:10px 12px;margin-bottom:8px;}
.level-row .swatch{width:14px;height:14px;border-radius:50%;flex-shrink:0;}
.level-row input{flex:1;border:1.5px solid transparent;background:transparent;font-size:14px;font-family:'Inter',sans-serif;padding:4px 6px;border-radius:6px;}
.level-row input:focus{outline:none;border-color:var(--blue);background:#fff;}
.level-row .level-actions{display:flex;gap:6px;}
.level-row .level-actions button{background:transparent;border:1.5px solid var(--border);border-radius:7px;padding:5px 10px;font-size:12px;font-family:'Baloo 2',sans-serif;font-weight:600;color:var(--ink);cursor:pointer;}
.level-row .level-actions button:hover{background:var(--cream);}
.level-row .level-actions button.danger{color:var(--red);}
.add-level-row{display:flex;gap:8px;margin-top:14px;}
.add-level-row input{flex:1;padding:9px 12px;border:1.5px solid var(--border);border-radius:9px;font-size:14px;}

.color-picker{display:flex;gap:7px;flex-wrap:wrap;align-items:center;}
.color-picker .swatch-btn{position:relative;width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;transition:transform .1s;}
.color-picker .swatch-btn:hover{transform:scale(1.12);}
.color-picker .swatch-btn.selected{border-color:var(--ink);box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--ink);transform:scale(1.08);}
.color-picker .swatch-btn.selected::after{content:'✓';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:900;text-shadow:0 0 2px rgba(0,0,0,.6);}

.instructor-row{border:1px solid var(--border);border-radius:9px;padding:14px 16px;margin-bottom:10px;}
.instructor-row .instructor-head{display:flex;justify-content:space-between;align-items:center;gap:12px;}
.instructor-row .instructor-head > .instructor-info{flex:1;min-width:0;}
.instructor-row .instructor-head b{font-size:14.5px;}
.instructor-avatar{flex:0 0 40px;width:40px;height:40px;border-radius:50%;object-fit:cover;}
.instructor-avatar-placeholder{display:flex;align-items:center;justify-content:center;background:var(--cream);border:1.5px solid var(--border);color:var(--ink-soft);font-weight:700;font-size:16px;font-family:'Baloo 2',sans-serif;}
.instructor-row .instructor-meta{font-size:12.5px;color:var(--ink-soft);margin-top:2px;}
.instructor-row .instructor-actions{display:flex;gap:8px;}
.instructor-row .instructor-actions button{background:transparent;border:1.5px solid var(--border);border-radius:7px;padding:6px 12px;font-size:12.5px;font-family:'Baloo 2',sans-serif;font-weight:600;color:var(--ink);cursor:pointer;}
.instructor-row .instructor-actions button:hover{background:var(--cream);}
.instructor-row .instructor-actions button.danger{color:var(--red);}
.instructor-edit-box{margin-top:12px;padding:14px;background:var(--cream);border-radius:9px;display:none;}
.instructor-edit-box.show{display:block;}
.groups-checklist{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;}
.groups-checklist label{display:flex;align-items:center;gap:6px;font-size:13px;background:#fff;border:1.5px solid var(--border);border-radius:999px;padding:6px 12px;cursor:pointer;}
.add-instructor-box{margin-top:22px;padding-top:18px;border-top:1px solid var(--border);}

.location-row{border:1px solid var(--border);border-radius:9px;padding:14px 16px;margin-bottom:10px;}
.location-row .location-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;}
.location-row b{font-size:14.5px;}
.location-row .location-meta{font-size:12.5px;color:var(--ink-soft);margin-top:2px;}
.location-row .location-actions{display:flex;gap:8px;flex-shrink:0;}
.location-row .location-actions button{background:transparent;border:1.5px solid var(--border);border-radius:7px;padding:6px 12px;font-size:12.5px;font-family:'Baloo 2',sans-serif;font-weight:600;color:var(--ink);cursor:pointer;}
.location-row .location-actions button:hover{background:var(--cream);}
.location-row .location-actions button.danger{color:var(--red);}
.location-edit-box{margin-top:12px;padding:14px;background:var(--cream);border-radius:9px;display:none;}
.location-edit-box.show{display:block;}
.add-location-box{margin-top:22px;padding-top:18px;border-top:1px solid var(--border);}

/* --- Harmonogram / kalendarz / obecnosc --- */
.schedule-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin:20px 0 4px;}
.generate-box{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-top:16px;}
.generate-box h3{margin:0 0 4px;font-size:16px;}
.generate-box .sub{color:var(--ink-soft);font-size:13px;margin:0 0 16px;}
.generate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px;}
.generate-grid select, .generate-grid input{width:100%;padding:9px 10px;border:1.5px solid var(--border);border-radius:9px;font-size:13.5px;font-family:'Inter',sans-serif;}
.generate-grid .field label{font-size:12px;}

.month-nav{display:flex;align-items:center;gap:12px;}
.month-nav button{background:transparent;border:1.5px solid var(--border);border-radius:999px;width:32px;height:32px;cursor:pointer;font-size:15px;color:var(--ink);}
.month-nav button:hover{background:var(--cream);}
.month-nav .month-label{font-family:'Baloo 2',sans-serif;font-weight:700;font-size:16px;min-width:150px;text-align:center;}

.calendar-grid{display:grid;grid-template-columns:1.6fr 1.6fr 1.6fr 1.6fr 1.6fr 1fr 1fr;gap:6px;margin-top:16px;}
.calendar-weekday{font-size:11.5px;font-weight:700;color:var(--ink-soft);text-align:center;padding-bottom:4px;text-transform:uppercase;}
.calendar-cell{background:#fff;border:1px solid var(--border);border-radius:9px;height:92px;padding:6px;display:flex;flex-direction:column;gap:3px;overflow:hidden;}
.calendar-cell.other-month{background:var(--cream);opacity:.55;}
.calendar-cell .cell-date{font-size:12px;font-weight:700;color:var(--ink-soft);flex-shrink:0;}
.lesson-pill{font-size:10.5px;padding:2px 6px 2px 7px;border-radius:5px;cursor:pointer;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;flex-shrink:0;
  background:#fff;border:1px solid var(--border);border-left:3px solid var(--course-color, var(--border));color:var(--ink);}
.lesson-pill.status-zakonczona{opacity:.6;}
.lesson-pill.status-odwolana{border-left-color:var(--red);color:var(--red-dark);text-decoration:line-through;opacity:.65;}

.week-grid-wrap{margin-top:16px;border:1px solid var(--border);border-radius:9px;background:#fff;overflow-x:auto;width:100%;}
.week-header-row{display:grid;grid-template-columns:52px 1.6fr 1.6fr 1.6fr 1.6fr 1.6fr 1fr 1fr;border-bottom:1px solid var(--border);min-width:812px;}
.week-header-row .week-day-head{padding:9px 6px;font-size:11px;font-weight:700;color:var(--ink-soft);text-align:center;text-transform:uppercase;border-left:1px solid var(--border);}
.week-header-row .week-day-head span{display:block;font-size:15px;color:var(--ink);font-family:'Baloo 2',sans-serif;text-transform:none;margin-top:1px;}
.week-body-row{display:flex;min-width:812px;}
.week-time-axis{width:52px;flex-shrink:0;position:relative;}
.week-time-axis .week-time-label{position:absolute;left:2px;right:6px;text-align:right;font-size:10.5px;color:var(--ink-soft);transform:translateY(-6px);white-space:nowrap;}
.week-days-track{flex:1;display:grid;grid-template-columns:1.6fr 1.6fr 1.6fr 1.6fr 1.6fr 1fr 1fr;}
.week-day-track{position:relative;border-left:1px solid var(--border);background-image:repeating-linear-gradient(to bottom, var(--border) 0, var(--border) 1px, transparent 1px, transparent var(--hour-px));}
.week-event-block{position:absolute;border-radius:6px;padding:3px 6px 3px 7px;font-size:10.5px;line-height:1.25;overflow:hidden;cursor:pointer;box-sizing:border-box;
  background:#fff;border:1px solid var(--border);border-left:3px solid var(--course-color, var(--border));color:var(--ink);box-shadow:0 1px 3px rgba(29,27,46,.08);}
.week-event-block b{display:block;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.week-event-block.status-zakonczona{opacity:.6;}
.week-event-block.status-odwolana{border-left-color:var(--red);color:var(--red-dark);text-decoration:line-through;opacity:.65;}

.avail-legend{display:flex;align-items:center;gap:16px;margin-top:10px;margin-bottom:2px;font-size:13px;color:var(--ink-soft);flex-wrap:wrap;}
.avail-legend .legend-item{display:flex;align-items:center;gap:6px;}
.avail-legend .legend-swatch{width:14px;height:14px;border-radius:4px;display:inline-block;}
.avail-legend .legend-swatch.avail-available{background:var(--green);}
.avail-legend .legend-swatch.avail-unavailable{background:var(--red);}

/* Dyspozycyjnosc prowadzacego - kalendarze wszystkich miesiecy od biezacego naprzod, jeden pod
   drugim. Klik cyklicznie zmienia caly dzien: brak -> dostepny -> niedostepny -> brak. Ma
   dzialac jednym dotknieciem. */
.avail-month-block{margin-top:22px;}
.avail-month-block:first-child{margin-top:14px;}
.avail-month-heading{font-family:'Baloo 2',sans-serif;font-weight:700;font-size:17px;}
.avail-calendar-grid{display:grid;grid-template-columns:repeat(7, 1fr);gap:6px;margin-top:10px;}
.avail-cell{cursor:pointer;justify-content:flex-start;transition:background .12s,border-color .12s;}
.avail-cell:hover{border-color:var(--ink-soft);}
.avail-cell.other-month{cursor:default;}
.avail-cell-available{background:var(--green);border-color:var(--green-dark);}
.avail-cell-unavailable{background:var(--red);border-color:var(--red-dark);}
.avail-cell-label{font-size:10.5px;font-weight:700;}
.avail-cell-available .cell-date,.avail-cell-available .avail-cell-label{color:#fff;}
.avail-cell-unavailable .cell-date,.avail-cell-unavailable .avail-cell-label{color:#fff;}

/* Dyspozycyjnosc - podglad admina: tabela prowadzacy x konkretne dni wybranego miesiaca.
   Kwadraciki siedza w komorkach niemal bez odstepu, wiec kilka dni z rzedu w tym samym
   statusie wizualnie zleewa sie w jeden ciagly pasek (jak heatmapa). */
.avail-table-wrap{overflow-x:auto;margin-top:14px;border:1px solid var(--border);border-radius:9px;}
.avail-table{width:100%;min-width:900px;border-collapse:collapse;table-layout:fixed;}
.avail-table th,.avail-table td{padding:7px 8px;border-bottom:1px solid var(--border);text-align:center;font-size:12px;}
.avail-table td:not(:first-child){padding:3px 1px;}
.avail-table th{background:var(--cream);font-family:'Baloo 2',sans-serif;font-weight:700;}
.avail-table th .avail-table-dayname{display:block;font-size:9px;color:var(--ink-soft);text-transform:uppercase;font-weight:600;}
.avail-table td:first-child,.avail-table th:first-child{width:140px;text-align:left;font-weight:600;white-space:nowrap;position:sticky;left:0;background:#fff;padding-left:12px;}
.avail-table th:first-child{background:var(--cream);}
.avail-table tr:last-child td{border-bottom:none;}
.avail-square{display:block;width:100%;height:24px;border-radius:2px;}
/* Wlasne, mocniej kontrastujace ze soba odcienie (nie te same --green/--red co reszta apki) -
   admin zglosil, ze przy malych kwadracikach w tabeli standardowa zielen i czerwien "zlewaly sie".
   Jasna zielen (wysoka jasnosc) kontra ciemny, nasycony bordowy czerwony daje roznice zarowno
   w odcieniu, jak i w jasnosci, wiec kwadraciki obok siebie sa wyraznie rozne na pierwszy rzut oka. */
.avail-square.status-available{background:#1FCE5B;}
.avail-square.status-unavailable{background:#8C1017;}
.avail-legend .legend-swatch.avail-table-available{background:#1FCE5B;}
.avail-legend .legend-swatch.avail-table-unavailable{background:#8C1017;}

.subst-day-group{margin-bottom:18px;}
.subst-day-group h4{margin:0 0 8px;font-family:'Baloo 2',sans-serif;font-size:15px;}
.subst-lesson-row{border:1px solid var(--border);border-radius:9px;padding:12px 16px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.subst-lesson-info{display:flex;flex-direction:column;gap:2px;}
.subst-lesson-info b{font-size:14px;}
.subst-lesson-info span{font-size:12.5px;color:var(--ink-soft);}
.subst-lesson-select-wrap{display:flex;flex-direction:column;gap:4px;align-items:flex-end;}
.subst-lesson-select-wrap select{min-width:220px;padding:8px 10px;border-radius:8px;border:1px solid var(--border);font-family:inherit;font-size:13px;}
.subst-note{font-size:11px;font-weight:600;text-align:right;max-width:260px;}
.subst-note-neutral{color:var(--ink-soft);}
.subst-note-danger{color:var(--red-dark);}
.subst-note-ok{color:var(--green-dark);}

/* Pole wyszukiwania z ikona lupy - uzywane wszedzie tam, gdzie szuka sie po tekscie (grupa,
   dziecko/rodzic/kurs...). Samodzielny blok (max-width) albo element elastycznego toolbara
   (icon-search-wrap--flex) - patrz uzycia. */
.icon-search-wrap{position:relative;max-width:320px;margin:12px 0 2px;}
.icon-search-wrap.icon-search-wrap--flex{flex:1 1 180px;min-width:160px;max-width:none;margin:0;}
.icon-search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--ink-soft);pointer-events:none;}
.icon-search-wrap input{width:100%;box-sizing:border-box;padding:8px 10px 8px 32px;border:1.5px solid var(--border);border-radius:8px;font-size:13px;font-family:'Inter',sans-serif;}

.lesson-list-group{margin-bottom:18px;}
.lesson-list-group .date-heading{font-family:'Baloo 2',sans-serif;font-weight:700;font-size:14px;margin-bottom:8px;color:var(--ink-soft);}
.lesson-list-item{background:#fff;border:1px solid var(--border);border-left:3px solid var(--course-color, var(--border));border-radius:9px;padding:10px 14px 10px 16px;margin-bottom:6px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;}
.lesson-list-item:hover{border-top-color:var(--ink);border-right-color:var(--ink);border-bottom-color:var(--ink);}
.lesson-status-badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;}
.lesson-status-badge.status-zaplanowana{background:#E3EFF7;color:var(--blue-dark);}
.lesson-status-badge.status-zakonczona{background:var(--green-bg);color:var(--green-dark);}
.lesson-status-badge.status-odwolana{background:#FBE4E1;color:var(--red-dark);}

.lead-status-select{border:1.5px solid transparent;border-radius:999px;padding:5px 10px;font-family:'Baloo 2',sans-serif;font-weight:700;font-size:12px;cursor:pointer;}
.lead-status-select.status-nowy{background:#E3EFF7;color:var(--blue-dark);}
.lead-status-select.status-skontaktowano{background:#FFF3D6;color:var(--yellow-dark);}
.lead-status-select.status-zapisany{background:var(--green-bg);color:var(--green-dark);}
.lead-status-select.status-rezygnacja{background:var(--red-bg);color:var(--red-dark);}
.lead-status-select.status-nieaktualny{background:var(--cream);color:var(--ink-soft);}

.lead-note-input{width:100%;min-width:180px;padding:7px 10px;border:1.5px solid var(--border);border-radius:8px;font-size:13px;font-family:'Inter',sans-serif;color:var(--ink);background:#fff;}
.lead-note-input:focus{outline:none;border-color:var(--blue);}
.lead-note-input::placeholder{color:var(--ink-soft);}

.attendance-row{display:flex;align-items:center;justify-content:space-between;padding:9px 4px;border-top:1px solid var(--border);font-size:13.5px;}
.attendance-row:first-child{border-top:none;}
.attendance-toggle{display:flex;gap:6px;}
.attendance-toggle button{border:1.5px solid var(--border);background:#fff;padding:5px 12px;border-radius:7px;font-size:12px;font-family:'Baloo 2',sans-serif;font-weight:600;color:var(--ink-soft);cursor:pointer;}
.attendance-toggle button.present.active{background:var(--green);border-color:var(--green);color:#fff;}
.attendance-toggle button.absent.active{background:var(--red);border-color:var(--red);color:#fff;}
.mark-all-btn{margin:14px 0 4px;background:transparent;border:1.5px dashed var(--border);color:var(--ink-soft);padding:9px 14px;border-radius:9px;font-family:'Baloo 2',sans-serif;font-weight:600;font-size:13px;cursor:pointer;width:100%;}

/* --- Dziennik obecnosci (siatka) --- */
.attendance-grid-wrap{overflow-x:auto;overflow-y:auto;max-height:380px;border:1px solid var(--border);border-radius:9px;margin-top:10px;}
table.attendance-grid{border-collapse:collapse;font-size:12.5px;white-space:nowrap;}
table.attendance-grid th, table.attendance-grid td{border:1px solid var(--border);padding:6px 8px;text-align:center;}
table.attendance-grid th.name-col, table.attendance-grid td.name-col{position:sticky;left:0;background:#fff;text-align:left;z-index:2;min-width:150px;font-weight:600;}
table.attendance-grid thead th{position:sticky;top:0;background:var(--cream);z-index:1;font-size:11px;color:var(--ink-soft);}
table.attendance-grid thead th.name-col{z-index:3;background:var(--cream);}
.attendance-cell-btn{width:30px;height:30px;border-radius:7px;border:1.5px solid var(--border);background:#fff;cursor:pointer;font-size:13px;font-weight:700;color:var(--ink-soft);}
.attendance-cell-btn:hover{border-color:var(--ink);}
.attendance-cell-btn.present{background:var(--green);border-color:var(--green);color:#fff;}
.attendance-cell-btn.absent{background:var(--red);border-color:var(--red);color:#fff;}
.attendance-legend{display:flex;gap:16px;margin-top:10px;font-size:12px;color:var(--ink-soft);}
.attendance-legend span{display:inline-flex;align-items:center;gap:5px;}
.attendance-legend .dot{width:10px;height:10px;border-radius:3px;display:inline-block;}

/* --- Pasek wyszukiwania/sortowania/eksportu uczestnikow --- */
.participants-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:2px 0 10px;}
.participants-toolbar input[type=text]{flex:1 1 180px;min-width:160px;padding:8px 10px;border:1.5px solid var(--border);border-radius:8px;font-size:13px;font-family:'Inter',sans-serif;}
.participants-toolbar .icon-search-wrap input[type=text]{padding-left:32px;}
.participants-toolbar select{padding:8px 10px;border:1.5px solid var(--border);border-radius:8px;font-size:13px;font-family:'Inter',sans-serif;background:#fff;color:var(--ink);}
.export-btn{white-space:nowrap;background:var(--green);color:#fff;border:none;padding:8px 14px;border-radius:8px;font-family:'Baloo 2',sans-serif;font-weight:600;font-size:12.5px;cursor:pointer;}
.export-btn:hover{background:var(--green-dark);}
.participants-count{font-size:12px;color:var(--ink-soft);margin:0 0 8px;}
