:root{--background:#f6f5f1;--surface:#fff;--surface-strong:#fefcf8;--ink:#1b1b18;--muted:#6d6a62;--line:#ddd8ce;--line-strong:#c9c2b5;--open:#13795b;--open-soft:#e7f5ef;--wait:#9a5b00;--wait-soft:#fff3db;--accent:#315d7d;--accent-soft:#e8f0f6;--shadow:0 18px 50px #1f1e1914}*{box-sizing:border-box}html{background:var(--background)}body{background:linear-gradient(180deg, #ffffffb3, #f6f5f100), var(--background);min-width:320px;color:var(--ink);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit}button{color:inherit}.pageShell{min-height:100vh;padding:28px}.workspace{width:min(1440px,100%);margin:0 auto}.topBar{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:20px;display:flex}.eyebrow{color:var(--accent);letter-spacing:0;text-transform:uppercase;margin:0 0 8px;font-size:12px;font-weight:700}h1,h2,h3,p{margin:0}h1{letter-spacing:0;font-size:clamp(32px,5vw,58px);font-weight:760;line-height:1}.subtle{color:var(--muted);margin-top:12px;font-size:14px}.sourceLink{border:1px solid var(--line);background:var(--surface);min-height:42px;color:var(--ink);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-size:14px;font-weight:650;text-decoration:none;display:inline-flex;box-shadow:0 8px 24px #1f1e190f}.topActions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.actionButton{border:1px solid var(--line);background:var(--surface);min-height:42px;color:var(--ink);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;font-weight:700;display:inline-flex;box-shadow:0 8px 24px #1f1e190f}.actionButton.primary{border-color:var(--accent);background:var(--accent);color:#fff}.actionButton:disabled{cursor:not-allowed;opacity:.55}.loginPanel,.errorBanner{border:1px solid var(--line);box-shadow:var(--shadow);background:#ffffffe0;border-radius:8px;margin-bottom:12px}.loginPanel{grid-template-columns:minmax(240px,.9fr) minmax(320px,1.1fr);align-items:end;gap:18px;padding:18px;display:grid}.loginPanel h2{margin-bottom:8px;font-size:18px;font-weight:760}.loginPanel p{color:var(--muted);font-size:13px;line-height:1.6}.loginForm{grid-template-columns:minmax(130px,1fr) minmax(160px,1fr) auto;align-items:end;gap:10px;display:grid}.loginForm label{color:var(--muted);gap:6px;font-size:12px;font-weight:750;display:grid}.loginForm input{border:1px solid var(--line);background:var(--surface);width:100%;min-height:40px;color:var(--ink);border-radius:8px;padding:0 11px}.loginForm button{border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;white-space:nowrap;border-radius:8px;min-height:40px;font-weight:750}.loginForm button:disabled{cursor:wait;opacity:.72}.errorBanner{color:#8a2f14;background:#fff8f4;padding:12px 14px;font-size:13px;font-weight:750}.successBanner{color:#176445;background:#edf8f1;border:1px solid #9bcdb8;border-radius:8px;margin-bottom:12px;padding:12px 14px;font-size:13px;font-weight:750}.summaryGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:10px;display:grid}.summaryItem{border:1px solid var(--line);background:#ffffffc7;border-radius:8px;min-height:118px;padding:18px;display:grid}.summaryItem span{color:var(--muted);font-size:13px;font-weight:650}.summaryItem strong{letter-spacing:0;align-self:end;font-size:44px;line-height:.95}.summaryItem small{color:var(--muted);font-size:13px}.summaryItem.strong{background:var(--ink);color:#fff}.summaryItem.strong span,.summaryItem.strong small{color:#ffffffb8}.segmented{border:1px solid var(--line);background:#f3f1eb;border-radius:8px;grid-auto-flow:column;gap:4px;padding:4px;display:inline-grid}.segmented button,.chipGroup button,.panelHeader button{cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:6px;min-height:34px;font-size:13px;font-weight:700}.segmented button{padding:0 12px}.segmented button.active,.chipGroup button.selected{background:var(--surface);box-shadow:0 1px 8px #1f1e191a}.segmented.compact{align-self:start}.chipGroup{flex-wrap:wrap;grid-column:1/-1;gap:6px;display:flex}.chipGroup button{border:1px solid var(--line);background:var(--surface);min-width:38px;padding:0 11px}.iconButton{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:8px;width:38px;height:38px;font-size:18px}.mainGrid{grid-template-columns:minmax(0,1fr);align-items:start;gap:18px;display:grid}.calendarPanel,.resultsPanel{border:1px solid var(--line);box-shadow:var(--shadow);background:#ffffffdb;border-radius:8px}.calendarPanel{padding:16px}.panelHeader,.resultsHeader{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px;display:flex}.panelHeader h2,.resultsHeader h2{font-size:18px;font-weight:760}.panelHeader button{color:var(--accent);padding:0 10px}.panelHeader p{color:var(--muted);margin-top:4px;font-size:12px;font-weight:700}.calendarBlock{gap:8px;display:grid}.rangeCaption{background:var(--accent-soft);min-height:28px;color:var(--accent);border-radius:6px;margin-bottom:8px;padding:6px 8px;font-size:14px;font-weight:780}.weekHeader,.calendarGrid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.calendarScroll{min-width:0}.weekHeader{margin-bottom:4px}.weekHeader span{min-height:24px;color:var(--muted);place-items:center;font-size:12px;font-weight:700;display:grid}.dayCell{min-width:0;min-height:122px;color:var(--muted);cursor:default;text-align:left;background:#f5f3ed;border:1px solid #0000;border-radius:6px;align-content:start;gap:5px;padding:6px;display:grid}.dayCellHeader{justify-content:space-between;align-items:flex-start;gap:4px;min-width:0;display:flex}.dayCellDate{align-items:baseline;gap:3px;min-width:0;display:flex}.dayCellDate span{font-size:13px;font-weight:760}.dayCellDate small{color:var(--muted);font-size:10px;font-weight:800}.dayLessonStack{gap:3px;display:grid}.calendarPill{border:1px solid #0000;border-radius:4px;grid-template-columns:32px minmax(20px,1fr) 16px;align-items:center;gap:3px;min-width:0;min-height:18px;padding:0 4px;font-size:10px;line-height:1;display:grid}.calendarPill span,.calendarPill b,.calendarPill em{min-width:0}.calendarPill span,.calendarPill em{white-space:nowrap}.calendarPill b{overflow-wrap:anywhere}.calendarPill span{font-weight:800}.calendarPill b{font-weight:850}.calendarMobileLabel,.calendarMobileTimeLabel,.mobileTimetable{display:none}.calendarLegend{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.legendFilter,.legendReset{border:1px solid var(--line);background:var(--surface);min-height:30px;color:var(--muted);cursor:pointer;border-radius:5px;font-size:12px;font-weight:750}.legendFilter{padding:0 8px}.legendFilter.selected{box-shadow:inset 0 0 0 1px}.legendFilter.isBase.selected{color:#1f6385;background:#e8f4fb;border-color:#bdd7e7}.legendFilter.isBeginner.selected{color:#80560f;background:#fff4dc;border-color:#e2c48a}.legendReset{width:30px;padding:0;font-size:16px}.calendarPill em{text-align:right;font-style:normal;font-weight:900}.calendarPill.isBase,.levelTag.isBase{color:#1f6385;background:#e8f4fb;border-color:#bdd7e7}.calendarPill.isBeginner,.levelTag.isBeginner{color:#80560f;background:#fff4dc;border-color:#e2c48a}.calendarPill.isOther,.levelTag.isOther{color:#5d5850;background:#f4f1eb;border-color:#cfcac0}.calendarPill.isFull{color:#8a867e;background:#efeeea;border-color:#d4d0c8}.calendarPill.isAttending{outline-offset:-2px;outline:2px solid #17715b}.calendarMore{min-height:16px;color:var(--muted);background:#ece8de;border-radius:4px;justify-content:center;align-items:center;font-size:11px;font-weight:800;display:inline-flex}.dayCell.hasLessons{color:var(--ink);cursor:pointer;background:#fffefc;border-color:#b6c8d6}.dayCell.hasLessons:hover,.dayCell.selected{border-color:var(--accent);background:#f1f7fb}.dayCell.today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.dayCell.today .dayCellHeader>span{color:var(--accent)}.dayCell.outsideRange{min-height:122px;box-shadow:none;pointer-events:none;background:0 0;border-color:#0000}.resultsPanel{min-height:0;padding:18px}.resultsHeader p{color:var(--muted);margin-top:5px;font-size:13px}.lessonList,.dateGroups{gap:10px;display:grid}.lessonRow{border:1px solid var(--line);background:var(--surface);border-radius:8px;grid-template-columns:minmax(92px,120px) minmax(0,1fr) auto auto;align-items:center;gap:14px;min-height:82px;padding:14px;display:grid}.lessonRow.isAttending{background:#f6fbf8;border:2px solid #79b6a5}.dateStack{gap:4px;display:grid}.dateStack strong{font-size:15px}.dateStack span{color:var(--accent);font-size:24px;font-weight:780;line-height:1}.dateStack small{color:var(--muted);font-size:12px;font-weight:700}.lessonBody{min-width:0}.lessonBody h3{overflow-wrap:anywhere;font-size:17px;font-weight:760;line-height:1.35}.lessonMeta{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.lessonMeta span{background:var(--accent-soft);min-height:24px;color:var(--accent);border-radius:999px;align-items:center;padding:0 8px;font-size:12px;font-weight:750;display:inline-flex}.lessonMeta .levelTag{border:1px solid #0000}.statusBadge{white-space:nowrap;border-radius:999px;place-items:center;min-width:112px;min-height:36px;font-size:13px;font-weight:800;display:inline-grid}.statusBadge.isOpen{background:var(--open-soft);color:var(--open)}.statusBadge.isFull{color:#817d74;background:#efeeea}.bookButton{border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:6px;min-height:36px;padding:0 12px;font-size:13px;font-weight:800}.bookButton:disabled{color:#9a958c;cursor:not-allowed;background:#efeeea;border-color:#d4d0c8}.bookingPanel{z-index:5;border:1px solid var(--line-strong);background:var(--surface);border-radius:8px;width:min(400px,100vw - 32px);padding:18px;position:fixed;bottom:28px;right:28px;box-shadow:0 24px 64px #1f1e1938}.bookingHeader{justify-content:space-between;align-items:start;gap:12px;display:flex}.bookingHeader h2{font-size:20px;font-weight:780}.bookingLesson{border:1px solid var(--line);background:var(--surface-strong);border-radius:6px;gap:4px;margin:16px 0;padding:12px;display:grid}.bookingLesson span,.bookingNote{color:var(--muted);font-size:13px}.bookingStep{gap:12px;display:grid}.transferSourceList{gap:8px;max-height:280px;display:grid;overflow:auto}.transferSourceButton{border:1px solid var(--line);background:var(--surface);cursor:pointer;text-align:left;border-radius:6px;gap:3px;width:100%;padding:10px 12px;display:grid}.transferSourceButton:hover{border-color:var(--accent);background:var(--accent-soft)}.transferSourceButton span,.transferSourceButton small{color:var(--muted);font-size:12px}.transferSourceButton strong{font-size:14px}.bookingDetails{gap:8px;margin:0;display:grid}.bookingDetails div{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;padding-bottom:8px;font-size:14px;display:flex}.bookingDetails dt{color:var(--muted)}.bookingDetails dd{text-align:right;margin:0;font-weight:750}.bookingWarning{color:#80560f;background:#fff4dc;border:1px solid #e2c48a;border-radius:6px;margin:0;padding:10px;font-size:13px;line-height:1.5}.fullWidth{width:100%}.dateGroup{gap:10px;display:grid}.dateGroup h3{z-index:1;background:linear-gradient(#fff 70%,#fff0);justify-content:space-between;align-items:baseline;gap:10px;padding:10px 0 2px;font-size:15px;display:flex;position:sticky;top:0}.dateGroup h3 small{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:750}.compactList{gap:8px}.emptyState{border:1px dashed var(--line-strong);min-height:300px;color:var(--muted);border-radius:8px;place-items:center;font-weight:700;display:grid}.emptyState.compact{text-align:center;min-height:130px;padding:14px}@media (width<=760px){.pageShell{padding:16px}.topBar{display:grid}.topActions,.sourceLink,.actionButton{width:100%}.summaryGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.loginPanel,.loginForm{grid-template-columns:1fr}.loginForm button{width:100%}.iconButton{width:36px;height:36px}.calendarPanel{padding:12px}.calendarScroll{display:none}.mobileTimetable{flex-direction:column;gap:12px;display:flex}.mobileTimetableWeek{gap:3px;display:grid}.mobileTimetableHeader,.mobileTimetableRow{grid-template-columns:25px repeat(7,minmax(0,1fr));gap:2px;display:grid}.mobileTimetableHeader>span{min-height:20px;color:var(--muted);place-items:center;font-size:10px;font-weight:800;display:grid}.mobileTimetableTime{color:var(--muted);place-items:start center;padding-top:4px;font-size:9px;font-weight:800;display:grid}.mobileTimetableCell{background:#f5f3ed;border:1px solid #0000;border-radius:4px;align-content:start;gap:2px;min-width:0;min-height:27px;padding:2px;display:grid}.mobileTimetableCell.hasLessons{cursor:pointer;background:#fffefc;border-color:#b6c8d6}.mobileTimetableCell.selected{border-color:var(--accent);background:#f1f7fb}.mobileTimetablePill{border:1px solid #0000;border-radius:3px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1px;min-height:21px;padding:1px 2px;font-size:9px;line-height:1;display:grid}.mobileTimetablePill b,.mobileTimetablePill em{overflow-wrap:anywhere;min-width:0}.mobileTimetablePill em{text-align:right;font-style:normal;font-weight:900}.mobileTimetablePill.isBase{color:#1f6385;background:#e8f4fb;border-color:#bdd7e7}.mobileTimetablePill.isBeginner{color:#80560f;background:#fff4dc;border-color:#e2c48a}.mobileTimetablePill.isFull{color:#8a867e;background:#efeeea;border-color:#d4d0c8}.mobileTimetablePill.isAttending{outline-offset:-1px;outline:1px solid #17715b}.segmented,.segmented button{width:100%}.lessonRow{grid-template-columns:1fr;gap:10px}.statusBadge{width:100%}}@media (width<=460px){.summaryGrid{grid-template-columns:1fr}.dayCell{min-height:118px}.calendarPill{font-size:10px}}
