:root{color:#251a19;--wine:#5a6458;--wine-dark:#465044;--sand:#f6f0e8;--sand-2:#eadfd3;--ink:#251a19;--muted:#756a66;--white:#fffdf9;--line:#ded1c5;--ok:#315e46;--warn:#9c641d;--danger:#9e2f37;background:#f6f0e8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at top, #fffaf3 0, var(--sand) 45%, #eee4d9 100%);min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--wine)}.app-shell{min-height:100vh}.topbar{z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);background:#fffdf9eb;justify-content:space-between;align-items:center;gap:16px;padding:14px 22px;display:flex;position:sticky;top:0}.brand{letter-spacing:.02em;align-items:center;gap:12px;font-weight:800;display:flex}.brand img{width:118px;height:auto;display:block}.brand small{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700;display:block}.container{width:min(1120px,100% - 28px);margin:0 auto;padding:28px 0 80px}.card{border:1px solid var(--line);background:#fffdf9f5;border-radius:20px;padding:20px;box-shadow:0 14px 40px #46231c0f}.card+.card{margin-top:16px}.hero{color:#fff;background:linear-gradient(135deg,#5a6458,#465044);border:none;padding:26px}.hero p{color:#e6ebe5}h1,h2,h3,p{margin-top:0}h1{margin-bottom:8px;font-size:clamp(28px,5vw,42px)}h2{margin-bottom:12px;font-size:22px}h3{margin-bottom:8px;font-size:17px}.muted{color:var(--muted)}.grid{gap:16px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.stat{border:1px solid var(--line);background:#fbf6ef;border-radius:16px;padding:18px}.stat strong{color:var(--wine);font-size:28px;display:block}.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:750;transition:all .18s}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--wine);color:#fff}.btn.primary:hover{background:var(--wine-dark)}.btn.secondary{color:var(--ink);background:#eadfd3}.btn.ghost{border:1px solid var(--line);color:var(--ink);background:0 0}.btn.danger{color:var(--danger);background:#f7e4e4}.btn.cancel-booking{background:var(--danger);color:#fff}.btn.cancel-booking:hover{background:#81252d}.btn.small{padding:7px 10px;font-size:13px}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.field{gap:7px;display:grid}.field label{color:#4a3b37;font-size:13px;font-weight:750}.field input,.field select,.field textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:12px;outline:none;padding:11px 12px}.field input:focus,.field select:focus,.field textarea:focus{border-color:#7c877a;box-shadow:0 0 0 3px #5a64581a}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.full{grid-column:1/-1}.nav{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.nav button{border:1px solid var(--line);background:#fffdf9;border-radius:999px;padding:9px 14px;font-weight:750}.nav button.active{background:var(--wine);border-color:var(--wine);color:#fff}.session-list{gap:10px;display:grid}.session{border:1px solid var(--line);background:#fff;border-radius:15px;grid-template-columns:1fr auto;align-items:center;gap:14px;padding:15px;display:grid}.session .date{text-transform:capitalize;font-weight:800}.session .meta{color:var(--muted);font-size:14px}.badge{background:#efe7dc;border-radius:999px;align-items:center;gap:5px;padding:5px 9px;font-size:12px;font-weight:800;display:inline-flex}.badge.ok{color:var(--ok);background:#e3efe8}.badge.warn{color:var(--warn);background:#f8ecd6}.badge.danger{color:var(--danger);background:#f7e3e5}.notice{border-left:4px solid var(--wine);background:#eef1ed;border-radius:10px;padding:12px 14px}.error{color:var(--danger);background:#fbe8e9;border-radius:10px;padding:10px 12px}.success{color:var(--ok);background:#e8f3ec;border-radius:10px;padding:10px 12px}.auth-wrap{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{width:min(480px,100%)}.auth-logo{justify-content:center;margin-bottom:16px;display:flex}.auth-logo img{width:min(280px,82%);height:auto;display:block}.auth-brand-title{text-align:center;letter-spacing:.13em;text-transform:uppercase;color:#111;margin-bottom:8px;font-family:Baskerville,Palatino Linotype,Book Antiqua,Georgia,serif;font-size:30px;font-weight:400}.divider{color:var(--muted);align-items:center;gap:10px;margin:18px 0;display:flex}.divider:before,.divider:after{content:"";background:var(--line);flex:1;height:1px}.checkbox{align-items:flex-start;gap:9px;font-size:13px;display:flex}.checkbox input{margin-top:3px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:680px}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:11px 10px;font-size:14px}th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px}.actions{flex-wrap:wrap;gap:8px;display:flex}.month-block{margin-top:18px}.month-title{text-transform:capitalize;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.day-grid{grid-template-columns:repeat(7,minmax(100px,1fr));gap:8px;padding-bottom:4px;display:grid;overflow-x:auto}.day-col{border:1px solid var(--line);background:#fbf6ef;border-radius:14px;min-width:100px;padding:10px}.day-col strong{text-transform:capitalize;font-size:13px;display:block}.day-col span{color:var(--muted);font-size:12px}.empty{text-align:center;color:var(--muted);padding:30px 16px}.footer-note{text-align:center;color:var(--muted);margin-top:26px;font-size:12px}.modal-backdrop{z-index:50;background:#1e11117a;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--white);border-radius:20px;width:min(600px,100%);max-height:90vh;padding:20px;overflow:auto}.weekdays{flex-wrap:wrap;gap:8px;display:flex}.weekdays label{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 10px}.weekdays input{margin-right:5px}@media (width<=720px){.topbar{padding:10px 14px}.brand img{width:96px}.brand small{font-size:9px}.container{width:min(100% - 20px,1120px);padding-top:18px}.grid.two,.grid.three,.form-grid{grid-template-columns:1fr}.full{grid-column:auto}.session{grid-template-columns:1fr}.session .actions{justify-content:flex-start}.hero{padding:22px 18px}}.compact-nav{gap:7px}.compact-nav button{padding:8px 12px}.booking-admin-row{align-items:start}.booking-edit-box{border:1px solid var(--line);background:#fbf6ef;border-radius:12px;gap:10px;margin-top:12px;padding:12px;display:grid}.admin-bookings{max-height:650px;padding-right:3px;overflow:auto}@media (width<=720px){.admin-bookings{max-height:none;overflow:visible}}.agenda-layout{grid-template-columns:minmax(0,1.45fr) minmax(340px,.85fr);align-items:start;gap:16px;display:grid}.calendar-card{min-width:0}.calendar-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.calendar-nav-actions{align-items:center;gap:7px;display:flex}.calendar-month-title{text-transform:capitalize;color:var(--wine);margin:20px 0 10px;font-size:20px;font-weight:850}.reservation-calendar{border-top:1px solid var(--line);border-left:1px solid var(--line);background:#fff;border-radius:14px;grid-template-columns:repeat(7,minmax(0,1fr));display:grid;overflow:hidden}.calendar-weekday{text-align:center;color:var(--muted);border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fbf6ef;padding:9px 6px;font-size:12px;font-weight:800}.calendar-day{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fffdf9;min-width:0;min-height:112px;padding:7px}.calendar-day.outside{color:#a99c95;background:#faf7f2}.calendar-day.has-reservations{background:#fffaf5}.calendar-day-number{justify-content:flex-end;margin-bottom:5px;font-size:12px;font-weight:750;display:flex}.calendar-day-number span{border-radius:999px;place-items:center;min-width:25px;height:25px;display:grid}.calendar-day.today .calendar-day-number span{background:var(--wine);color:#fff}.calendar-events{gap:5px;display:grid}.calendar-reservation-event{color:#394238;text-align:left;cursor:pointer;background:#e3e8e1;border:1px solid #5a64582e;border-radius:9px;width:100%;min-width:0;padding:6px 7px}.calendar-reservation-event strong,.calendar-reservation-event span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.calendar-reservation-event strong{font-size:12px;line-height:1.2}.calendar-reservation-event span{margin-top:2px;font-size:10px;font-weight:700}.calendar-reservation-event.selected{color:#2f250d;background:#e5ac31;border-color:#e5ac31;box-shadow:0 0 0 2px #e5ac312e}.calendar-reservation-event:focus-visible{outline-offset:1px;outline:3px solid #5a64583d}.calendar-empty{padding-bottom:6px}.agenda-reservations-panel{min-width:0}.reservation-panel-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}@media (hover:hover) and (pointer:fine){.calendar-reservation-event:hover{background:#d6ddd4}.calendar-reservation-event.selected:hover{background:#d69d22}}@media (width<=900px){.agenda-layout{grid-template-columns:1fr}}@media (width<=620px){.reservation-calendar{font-size:12px}.calendar-weekday{padding:7px 2px;font-size:10px}.calendar-day{min-height:82px;padding:4px}.calendar-day-number{margin-bottom:3px}.calendar-day-number span{min-width:21px;height:21px;font-size:11px}.calendar-reservation-event{border-radius:7px;padding:5px 4px}.calendar-reservation-event strong{font-size:10px}.calendar-reservation-event span{font-size:9px}}.student-calendar-card{min-width:0}.student-calendar-card .calendar-month-title{margin-top:18px}.calendar-day.has-classes{background:#fffaf5}.calendar-class-event,.calendar-booking-event{text-align:left;cursor:pointer;font-variant-numeric:tabular-nums;border-radius:9px;width:100%;min-width:0;padding:6px 7px}.calendar-class-event{color:#354236;background:#dfe8de;border:1px solid #c2d0c1}.calendar-class-event.booked{color:#fff;background:#5a6458;border:1px solid #5a6458}.calendar-class-event.festivo{color:#2f250d;background:#e5ac31;border:1px solid #e5ac31}.calendar-class-event.full{color:#fff;background:#b84b52;border:1px solid #b84b52}.calendar-class-event strong,.calendar-class-event span,.calendar-booking-event strong,.calendar-booking-event span{white-space:nowrap;min-width:0;display:block}.calendar-class-event strong,.calendar-booking-event strong{font-size:12px;line-height:1.15}.calendar-class-event span,.calendar-booking-event span{margin-top:2px;font-size:10px;font-weight:750;line-height:1.15}.calendar-class-event.selected{outline-offset:1px;outline:1px solid #5a6458;box-shadow:0 0 0 3px #5a64584d}.calendar-class-event.booked.selected{outline:1px solid #465044;box-shadow:0 0 0 3px #5a645847}.calendar-class-event.festivo.selected{outline:1px solid #b78318;box-shadow:0 0 0 3px #e5ac3147}.calendar-booking-event{color:#2f250d;background:#e5ac31;border:1px solid #e5ac31}.calendar-class-event:focus-visible,.calendar-booking-event:focus-visible{outline-offset:1px;outline:3px solid #5a645857}.student-calendar-selection{border:1px solid var(--line);background:#fbf6ef;border-radius:14px;justify-content:space-between;align-items:center;gap:14px;margin-top:14px;padding:14px;display:flex}.student-calendar-selection .meta{color:var(--muted);margin-top:4px;font-size:14px}.student-bookings-calendar-wrap{margin-top:18px}.student-bookings-calendar-wrap .calendar-toolbar{margin-bottom:10px}@media (hover:hover) and (pointer:fine){.calendar-class-event:hover{background:#d3dfd2;border-color:#aebfac}.calendar-class-event.booked:hover{background:#4f594d;border-color:#4f594d}.calendar-class-event.festivo:hover{background:#d69d22;border-color:#d69d22}.calendar-class-event.full:hover{background:#a83f47;border-color:#a83f47}.calendar-booking-event:hover{background:#d69d22}}@media (width<=620px){.student-calendar-selection{flex-direction:column;align-items:flex-start}.student-calendar-selection .actions,.student-calendar-selection .btn{width:100%}.student-reserve-calendar .calendar-day{padding:3px 2px}.student-reserve-calendar .calendar-events{gap:4px}.calendar-class-event,.calendar-booking-event{text-align:center;border-radius:8px;padding:5px 1px;overflow:visible}.calendar-class-event strong,.calendar-booking-event strong{letter-spacing:-.15px;text-overflow:clip;font-size:10px;line-height:1.05;overflow:visible}.calendar-class-event span,.calendar-booking-event span{letter-spacing:-.15px;text-overflow:clip;font-size:8.5px;line-height:1.05;overflow:visible}}@media (width<=390px){.student-reserve-calendar .calendar-day{padding-left:1px;padding-right:1px}.calendar-class-event,.calendar-booking-event{padding-left:0;padding-right:0}.calendar-class-event strong,.calendar-booking-event strong{font-size:9.5px}.calendar-class-event span,.calendar-booking-event span{font-size:8px}}.student-reserve-calendar-mobile{display:none}.calendar-class-event:disabled{opacity:1;cursor:not-allowed}.rules-card h2{color:var(--wine);text-transform:uppercase;letter-spacing:.02em}.rules-list{gap:12px;margin:0;padding-left:1.3rem;line-height:1.5;display:grid}.rules-list li::marker{color:var(--wine)}@media (width<=620px){.student-reserve-calendar-desktop{display:none}.student-reserve-calendar-mobile{border-top:1px solid var(--line);border-left:1px solid var(--line);background:#fffdf9;border-radius:14px;gap:0;width:100%;min-width:0;display:grid;overflow:hidden}.mobile-calendar-weekdays,.mobile-calendar-week{gap:0;width:100%;min-width:0;display:grid}.mobile-calendar-weekdays{align-items:stretch;margin:0}.mobile-calendar-weekday{text-align:center;min-width:0;color:var(--muted);border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap;background:#fbf6ef;border-radius:0;padding:8px 1px;font-size:10px;font-weight:800;line-height:1;overflow:hidden}.mobile-calendar-weekday.wide{font-size:11px}.mobile-calendar-day{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fffdf9;border-radius:0;min-width:0;min-height:92px;padding:3px;overflow:hidden}.mobile-calendar-day.class-weekday{min-height:92px}.mobile-calendar-day.compact-weekday{min-height:92px;padding-left:1px;padding-right:1px}.mobile-calendar-day.outside{color:#a99c95;background:#faf7f2}.mobile-calendar-date{justify-content:flex-end;padding:5px 4px 4px;font-size:11px;font-weight:800;line-height:1;display:flex}.mobile-calendar-date span{border-radius:999px;place-items:center;min-width:23px;height:23px;display:grid}.mobile-calendar-day.today .mobile-calendar-date span{background:var(--wine);color:#fff}.mobile-calendar-events{gap:4px;min-width:0;display:grid}.mobile-calendar-day .calendar-class-event{text-align:center;border-radius:7px;min-width:0;min-height:44px;padding:5px 2px;overflow:hidden}.mobile-calendar-day .calendar-class-event strong{letter-spacing:0;white-space:nowrap;font-size:10.5px;line-height:1.05}.mobile-calendar-day .calendar-class-event span{letter-spacing:0;white-space:normal;font-size:8.5px;line-height:1.08}}@media (width<=390px){.mobile-calendar-weekdays,.mobile-calendar-week{gap:0}.mobile-calendar-weekday{padding-left:0;padding-right:0;font-size:9px}.mobile-calendar-weekday.wide{font-size:10px}.mobile-calendar-day{min-height:86px}.mobile-calendar-day.class-weekday,.mobile-calendar-day.compact-weekday{min-height:90px}.mobile-calendar-day .calendar-class-event strong{font-size:10px}.mobile-calendar-day .calendar-class-event span{font-size:8px}}.section-heading-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:18px;display:flex}.section-heading-row>div{flex:420px;min-width:0}.compact-field{flex-direction:column;gap:6px;min-width:210px;font-size:13px;font-weight:700;display:flex}.compact-field select{min-height:42px}.registration-date{white-space:nowrap;font-variant-numeric:tabular-nums}@media (width<=760px){.compact-field{width:100%}.section-heading-row{align-items:stretch}}.link-button{appearance:none;color:var(--wine);font:inherit;cursor:pointer;background:0 0;border:0;padding:4px;font-weight:750;text-decoration:underline}.link-button:focus-visible{outline-offset:2px;border-radius:6px;outline:3px solid #5a645840}.calendar-class-event.history{color:#665e59;background:#eee8e0;border-color:#d9cec3}.calendar-class-event.history.attended{color:#2f5a43;background:#d7e5da;border-color:#b7cfbd}.calendar-class-event.history.no-show,.calendar-class-event.history.cancelled-late{color:#87343a;background:#f4dddd;border-color:#e4bfc2}.calendar-class-event.history.cancelled{color:#716762;background:#eee8e0;border-color:#d9cec3}.admin-calendar-event span{font-weight:800}.reservations-manager{grid-template-columns:minmax(230px,.72fr) minmax(0,2fr);align-items:start;gap:18px;display:grid}.clients-picker{min-width:0}.client-button-list{gap:8px;max-height:680px;padding-right:3px;display:grid;overflow:auto}.client-pick{text-align:left;border:1px solid var(--line);cursor:pointer;width:100%;color:var(--ink);background:#fffdf9;border-radius:12px;padding:11px 12px}.client-pick strong,.client-pick span{display:block}.client-pick span{color:var(--muted);margin-top:3px;font-size:12px}.client-pick.active{background:var(--wine);border-color:var(--wine);color:#fff}.client-pick.active span{color:#eef1ec}.reservation-detail{min-width:0}.admin-add-booking{border:1px solid var(--line);background:#fbf6ef;border-radius:14px;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;margin:14px 0;padding:14px;display:grid}.status-filter{flex-wrap:wrap;margin:14px 0}.status-filter button{font-size:13px}@media (width<=900px){.reservations-manager{grid-template-columns:1fr}.client-button-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}}@media (width<=620px){.client-button-list,.admin-add-booking{grid-template-columns:1fr}.admin-add-booking .btn{width:100%}.reservations-manager .booking-admin-row{align-items:flex-start}}.festivo-student-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.festivo-student{border:1px solid var(--line);cursor:pointer;background:#fffdf9;border-radius:11px;align-items:center;gap:9px;min-width:0;padding:9px 10px;display:flex}.festivo-student.selected{border-color:var(--wine);background:#eef1ec}.festivo-student input{width:auto;margin:0}.festivo-student span{min-width:0}.festivo-student strong,.festivo-student small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.festivo-student small{color:var(--muted);margin-top:2px}.festivo-access-summary{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.festivo-edit-access{border:1px solid var(--line);background:#fbf6ef;border-radius:12px;margin-top:12px;padding:12px}.festivo-student-grid.compact{max-height:280px;padding-right:3px;overflow:auto}.festivo-session{align-items:flex-start}@media (width<=700px){.festivo-student-grid,.festivo-layout{grid-template-columns:1fr}.festivo-session{flex-direction:column}.festivo-session>.actions{width:100%}}.admin-note-editor{gap:6px;min-width:220px;display:grid}.admin-note-editor textarea{resize:vertical;min-height:58px;font:inherit}.admin-note-in-agenda{border-left:3px solid var(--wine);color:var(--ink);background:#f3f4f0;border-radius:0 8px 8px 0;margin-top:7px;padding:7px 9px;font-size:13px;line-height:1.35}@media (width<=760px){.admin-note-editor{min-width:180px}}.calendar-class-event.multi-selected{outline-offset:1px;outline:2px solid #5a6458;box-shadow:0 0 0 3px #5a645857}.calendar-class-event.festivo.multi-selected{outline-color:#a87612;box-shadow:0 0 0 3px #e5ac3157}.bulk-selection-panel{align-items:flex-start}.bulk-selected-list{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.nav-count{color:#2f250d;background:#e5ac31;border-radius:999px;justify-content:center;align-items:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:900;line-height:1;display:inline-flex}.nav button.active .nav-count{color:#5a6458;background:#fff}.rules-card h3{color:#5a6458;letter-spacing:.02em;margin:24px 0 10px;font-size:16px}.rules-card p{line-height:1.65}.rules-card .rules-list{margin-top:6px}@media (width<=640px){.bulk-selection-panel{align-items:stretch}.bulk-selection-panel .actions{width:100%}.bulk-selection-panel .actions .btn{flex:1}}.calendar-class-event.requested{outline-offset:1px;outline:2px dashed #9c641d}.calendar-class-event.requested:not(.festivo){color:#6f4a16;background:#f8ecd6;border-color:#d7b16e}
