*{box-sizing:border-box;}
html{height:auto;}
body{margin:0;font-family:'Roboto',sans-serif;color:var(--ab-text);background:var(--ab-surface);}
a{color:inherit;}

body.page-calendar{
  min-height:100dvh;
  display:flex;
  flex-direction:column;
}
body.page-calendar .cal-wrap{flex:1 0 auto;}
body.page-calendar .gv-legal-footnote{flex-shrink:0;margin-top:auto;}

.cal-wrap{max-width:920px;width:100%;margin:0 auto;padding:20px 16px 28px;}
.cal-intro{margin:0 0 18px;}
.cal-intro h1{
  margin:0 0 8px;text-align:center;text-transform:uppercase;
  font-size:32px;font-weight:700;line-height:1.2;
}
.cal-lead{
  margin:0 0 10px;text-align:center;font-size:15px;line-height:1.45;color:#555;
}
.cal-note{margin:0;color:#555;font-size:14px;line-height:1.5;}
.cal-legend{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px;}
.cal-chip{display:inline-flex;align-items:center;gap:8px;font-size:14px;}
.cal-dot{width:12px;height:12px;border-radius:50%;}
.cal-dot--ok{background:#2f9e44;}
.cal-dot--part{background:#f59f00;}
.cal-dot--busy{background:#fa5252;}

.cal-month{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin:0 0 12px;
}
.cal-month__title{
  margin:0;flex:1;text-align:center;font-size:22px;line-height:1.2;text-transform:capitalize;
}
.cal-month__nav{
  width:44px;height:44px;border:1px solid #ddd;border-radius:12px;background:#fff;
  font-size:22px;line-height:1;cursor:pointer;color:#111;
}
.cal-month__nav:hover{background:#f6f6f6;}

.cal-weekdays{
  display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:0 0 6px;
}
.cal-weekdays span{
  display:flex;align-items:center;justify-content:center;min-height:32px;
  font-size:13px;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:.04em;
}

.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;transition:opacity .28s ease;}
.cal-grid.is-fading{opacity:0;}
@media (prefers-reduced-motion:reduce){
  .cal-grid{transition:none;}
}
.cal-day{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  border:0;border-radius:12px;padding:8px 2px;min-height:56px;min-width:0;background:#fff;
  box-shadow:0 4px 12px rgba(0,0,0,.05);cursor:pointer;text-align:center;
  font-family:inherit;color:#111;overflow:visible;
}
.cal-day.is-empty{background:transparent;box-shadow:none;cursor:default;pointer-events:none;}
.cal-day.is-today{box-shadow:0 0 0 2px #111;}
.cal-day.is-on{background:#111;color:#fff;}
.cal-day[data-status="available"]{background:#e8f8ee;}
.cal-day[data-status="partly_available"]{background:#fff6e0;}
.cal-day[data-status="unavailable"]{background:#f8ecec;color:#666;}
.cal-day[data-status="past"],
.cal-day.is-past{
  background:#e6e6e6;color:#8a8a8a;box-shadow:none;
}
.cal-day.is-on[data-status]{background:#111;color:#fff;}
.cal-day.is-on[data-status="past"]{background:#cfcfcf;color:#444;}
.cal-day__date{
  font-weight:700;display:block;font-size:16px;line-height:1.2;
  font-variant-numeric:tabular-nums;max-width:100%;
}
.cal-day__label{display:block;margin-top:2px;font-size:11px;line-height:1.2;color:inherit;opacity:.75;}

.cal-hours{margin-top:22px;background:#fff;border-radius:16px;padding:16px;box-shadow:0 8px 20px rgba(0,0,0,.06);min-height:80px;}
.cal-hours h2{margin:0 0 12px;font-size:18px;}
.cal-slot-list{display:flex;flex-direction:column;gap:8px;margin:0 0 16px;}
.cal-slot{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  width:100%;min-height:48px;padding:10px 14px;border:1px solid #e6e6e6;border-radius:12px;
  background:#f7fbf8;cursor:pointer;font:inherit;text-align:left;
}
.cal-slot.is-busy{background:#f8ecec;border-color:#efd6d6;cursor:default;}
.cal-slot.is-busy:hover{opacity:.95;}
.cal-slot.is-on{outline:2px solid #111;border-color:#111;background:#111;color:#fff;}
.cal-slot.is-on .cal-slot__status{color:#fff;}
.cal-slot__time{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;}
.cal-slot__status{font-size:14px;color:#2f9e44;}
.cal-slot.is-busy .cal-slot__status{color:#c92a2a;}

.cal-range-label{margin:0 0 12px;font-size:16px;font-weight:600;}
.cal-book{margin-top:8px;}
.cal-form{display:grid;gap:10px;width:100%;}
.cal-form label{font-size:14px;max-width:360px;}
.cal-form input,.cal-form button{min-height:44px;border-radius:12px;border:1px solid #ccc;padding:8px 12px;font:inherit;}
.cal-form button{background:#111;color:#fff;border:0;cursor:pointer;transition:opacity .2s ease,background .2s ease,color .2s ease,border-color .2s ease;}
.cal-form button.cal-book-fallback{
  background:transparent;color:#6b6b6b;border:0;font-weight:500;
  opacity:.62;box-shadow:none;min-height:40px;padding:6px 8px;
}
.cal-form button.cal-book-fallback:hover{opacity:.9;background:transparent;}
.cal-form button:hover{opacity:.78;}
.cal-form button:disabled{opacity:.45;}
.cal-class-card{
  padding:14px 16px;border-radius:14px;background:#f6f6f6;border:1px solid #e6e6e6;
  display:grid;gap:4px;
}
.cal-class-card strong{font-size:16px;line-height:1.35;}
.cal-kinds,.cal-holidays{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;margin:8px 0 4px;}
.cal-kinds{flex-direction:column;flex-wrap:nowrap;}
.cal-kinds__label{width:100%;margin:0 0 2px;font-size:14px;font-weight:600;color:#333;font-family:var(--ab-font);}
.cal-kind,
.cal-form button.cal-kind{
  appearance:none;width:100%;display:flex;align-items:center;justify-content:center;
  border:1px solid #ddd;background:#fff;color:#111;
  font-family:var(--ab-font);font-size:15px;font-weight:600;line-height:1.2;
  padding:12px 14px;border-radius:12px;cursor:pointer;min-height:48px;opacity:1;
}
.cal-holidays .cal-kind,
.cal-form .cal-holidays button.cal-kind{
  width:auto;min-height:40px;padding:8px 12px;font-size:13px;font-weight:500;border-radius:999px;
}
.cal-kind.is-active,
.cal-form button.cal-kind.is-active{background:#111;border-color:#111;color:#fff;opacity:1;}
.cal-kind.is-used,
.cal-kind:disabled,
.cal-form button.cal-kind.is-used,
.cal-form button.cal-kind:disabled{
  opacity:1;cursor:not-allowed;background:#f3f3f3;color:#888;border-color:#e6e6e6;
}
.cal-form button.cal-kind:hover{opacity:1;background:#f7f7f7;}
.cal-form button.cal-kind.is-active:hover{background:#111;opacity:1;}
.cal-form button.cal-kind:disabled:hover,
.cal-form button.cal-kind.is-used:hover{background:#f3f3f3;}
.cal-form-extras{display:grid;gap:10px;}
.cal-form-extras[hidden]{display:none;}
.cal-msg{margin:8px 0 0;line-height:1.45;}
.cal-check{display:flex;gap:8px;align-items:flex-start;font-size:14px;}
.cal-empty{margin:0;color:#666;}

.cal-email-overlay{
  position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;
  padding:16px;background:rgba(0,0,0,.5);
}
.cal-email-overlay[hidden]{display:none;}
.cal-email-modal{
  position:relative;width:min(100%,420px);background:#fff;border-radius:16px;
  padding:28px 20px 20px;box-shadow:0 16px 40px rgba(0,0,0,.18);overflow:hidden;
  font-family:inherit;color:#111;
}
.cal-email-modal__close{
  position:absolute;top:8px;right:10px;z-index:2;border:0;background:none;
  font-size:28px;line-height:1;color:#888;cursor:pointer;
}
.cal-email-modal__body{position:relative;z-index:1;}
.cal-email-modal h2{margin:0 0 8px;font-size:22px;line-height:1.25;}
.cal-email-modal__lead{margin:0 0 16px;font-size:15px;line-height:1.45;color:#555;}
.cal-email-modal__masked{
  margin:0 0 14px;padding:10px 12px;border:1px solid #ddd;border-radius:12px;
  background:#f7f7f7;color:#111;font-size:15px;line-height:1.4;word-break:break-all;
}
.cal-email-modal__masked[hidden]{display:none;}
.cal-email-modal__send{
  width:100%;min-height:48px;border:0;border-radius:12px;background:#111;color:#fff;
  font:inherit;font-weight:600;cursor:pointer;
}
.cal-email-modal__send:disabled{opacity:.45;cursor:default;}
.cal-email-modal__err{margin:0 0 12px;color:#c92a2a;font-size:14px;line-height:1.4;}
.cal-email-modal__ok{margin:12px 0 0;font-size:15px;line-height:1.45;color:#2f9e44;}
.cal-email-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0;}
.cal-email-confetti[hidden]{display:none;}
.cal-email-confetti span{
  position:absolute;top:-12%;width:8px;height:12px;border-radius:1px;opacity:.95;
  animation:cal-confetti-fall var(--c-dur,2.8s) linear forwards;
  animation-delay:var(--c-delay,0s);left:var(--c-x,50%);background:var(--c-color,#f43f5e);
}
.cal-email-confetti span:nth-child(3n){width:7px;height:7px;border-radius:50%;}
.cal-email-confetti span:nth-child(4n){width:10px;height:5px;}
@keyframes cal-confetti-fall{
  0%{top:-12%;transform:translateX(0) rotate(0deg);opacity:0;}
  8%{opacity:1;}
  100%{top:110%;transform:translateX(var(--c-drift,18px)) rotate(420deg);opacity:0;}
}
@media (prefers-reduced-motion:reduce){
  .cal-email-confetti span{animation:none;opacity:0;}
}

@media (max-width:480px){
  .cal-wrap{padding:16px 12px 24px;}
  .cal-intro h1{font-size:24px;}
  .cal-lead{font-size:14px;}
  .cal-note{font-size:13px;}
  .cal-month__title{font-size:18px;}
  .cal-weekdays{gap:3px;}
  .cal-weekdays span{font-size:11px;min-height:24px;}
  .cal-grid{gap:3px;}
  .cal-day{min-height:44px;padding:4px 0;border-radius:10px;}
  .cal-day__date{font-size:14px;line-height:1.15;}
  .cal-day__label{display:none;}
  .cal-email-modal{padding:24px 16px 16px;width:100%;}
  .cal-email-modal h2{font-size:20px;}
}
@media (prefers-reduced-motion:reduce){
  .cal-day,.cal-slot,.cal-month__nav,.cal-kind{transition:none;}
}
