:root{color-scheme:light dark;--bg:light-dark(#f3f6f9,#111b26);--surface:light-dark(#fff,#1b2837);--fg:light-dark(#19324a,#e5edf6);--muted:light-dark(#607487,#a8b8c9);--line:light-dark(#dce4ec,#39495b);--accent:light-dark(#155b9f,#84baf1);--error:light-dark(#a62f2b,#ffb4af)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.6 system-ui,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;padding:8px 13px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:inherit}button:hover{filter:brightness(.96)}button:disabled{opacity:.55;cursor:wait}input,select,textarea{padding:9px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:inherit;width:100%;min-width:0}label{display:grid;gap:5px;margin-bottom:12px;color:var(--muted);font-size:13px}h1{font-size:24px;font-weight:600;margin:0 0 12px}h2{font-size:20px;margin:0}h3{font-size:16px;margin:22px 0 10px}p{margin:12px 0}.primary{background:var(--accent);color:light-dark(#fff,#10243a);border-color:var(--accent)}.muted{color:var(--muted)}.error{color:var(--error)}.eyebrow{letter-spacing:.08em;font-size:12px;color:var(--accent)}.auth-card{margin:8vh auto;padding:32px;max-width:540px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.auth-card button{margin-right:8px;margin-top:8px}.qr{width:200px;height:200px;background:#fff}input:focus-visible,button:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #76add9;outline-offset:2px}.app{max-width:1500px;margin:auto;background:var(--surface);min-height:100dvh}.app-header{padding:20px 28px;display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid var(--line)}.app-header>div{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.brand{letter-spacing:.08em;color:var(--accent)}nav{display:flex;gap:8px;padding:12px 28px;flex-wrap:wrap;border-bottom:1px solid var(--line)}nav button[aria-current=page]{background:var(--accent);color:light-dark(#fff,#10243a);border-color:var(--accent)}.workspace{padding:24px 28px}.app-footer{padding:20px 28px;color:var(--muted);font-size:12px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.toolbar h1{margin:0}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.search{max-width:360px}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:12px 9px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}th{color:var(--muted);font-weight:500}td code{white-space:normal;word-break:break-word;max-width:450px;display:block}.empty{padding:24px;color:var(--muted)}.modal{background:var(--surface);color:var(--fg);border:1px solid var(--line);border-radius:12px;padding:0;width:min(720px,calc(100% - 32px));max-width:none;max-height:calc(100dvh - 32px);overflow:hidden;box-shadow:0 20px 70px #0004}.modal[open]{display:flex;flex-direction:column}.modal::backdrop{background:#13283d80}.modal header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 22px;border-bottom:1px solid var(--line);flex-shrink:0}.modal-body{padding:18px 22px;overflow-y:auto;overscroll-behavior:contain;flex:1;min-height:0}.modal footer{padding:14px 22px;display:flex;gap:8px;border-top:1px solid var(--line);flex-shrink:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid label{margin:0}.wide{grid-column:1/-1}.check{display:flex;align-items:center;gap:8px}.check input{width:18px;height:18px}.notes{margin-top:18px}textarea{min-height:90px;resize:vertical}.facts{display:flex;gap:28px;flex-wrap:wrap}.facts dt{color:var(--muted);font-size:12px}.facts dd{margin:0}.pass{border-top:1px solid var(--line);padding:16px 0}.history{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.history button{margin-left:12px}.pre{white-space:pre-wrap;overflow-wrap:anywhere}.attendee{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) auto auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.attendee label{margin:0}.swatch,.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:7px}.calendar-tools{display:flex;align-items:flex-end;flex-wrap:wrap;gap:16px}.calendar-tools label{min-width:140px}.month-controls{display:flex;align-items:center;gap:8px}.month-controls label{margin:0 0 12px}.legend{display:flex;flex-wrap:wrap;gap:18px;margin:10px 0 16px;font-size:12px;color:var(--muted)}.weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekdays{text-align:center;color:var(--muted);padding-bottom:10px}.calendar-day,.padding-day{min-height:106px;padding:7px;border-top:1px solid var(--line);border-right:1px solid var(--line);min-width:0}.calendar-day.today{outline:2px solid var(--accent);outline-offset:-2px}.date-button{padding:2px 5px;border:0;width:100%;display:flex;justify-content:space-between;background:none}.date-button small{color:var(--muted)}.mobile-date{display:none}.calendar-event,.day-lesson{display:block;text-align:left;width:100%;border:0;border-left:3px solid var(--event-color);background:color-mix(in srgb,var(--event-color) 12%,var(--surface));border-radius:5px;margin-top:5px;padding:7px;font-size:11px}.calendar-event span,.calendar-event strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}.calendar-event strong{font-weight:600}.cancelled{opacity:.65}.cancelled strong{text-decoration:line-through}.more{padding:5px 4px;margin-top:5px;background:none;border:0;color:var(--accent);font-size:12px}.day-list{display:grid;gap:8px}.day-lesson{font-size:14px;padding:14px}.day-lesson span{display:block}.day-lesson strong{font-weight:600}@media(max-width:760px){.app-header{padding:16px}.workspace{padding:20px 16px}nav{padding:10px 16px}.attendee{grid-template-columns:1fr 1fr}.calendar-tools{gap:10px}.weekdays,.padding-day{display:none}.calendar-days{display:block}.calendar-day{min-height:0;padding:12px 0;border-right:0}.calendar-day.today{padding:12px 8px}.desktop-date{display:none}.mobile-date{display:inline}.calendar-event{font-size:13px}.calendar-event strong,.calendar-event span{white-space:normal}.calendar-tools>label{min-width:120px;flex:1}}@media(max-width:540px){.auth-card{margin:20px 12px;padding:24px}.modal{width:100%;max-height:none;height:100dvh;max-width:none;margin:0;border:0;border-radius:0}.modal header,.modal-body,.modal footer{padding:14px 16px}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.app-header{align-items:flex-start}.app-header>div{gap:6px}.app-header .actions{justify-content:flex-end;font-size:12px}.month-controls{width:100%;justify-content:space-between}.month-controls label{flex:1}.attendee{grid-template-columns:1fr}.attendee .check{display:flex}.app-footer{padding:16px}}fieldset{margin:0;padding:0;border:0;min-width:0}.date-mode{margin-bottom:16px}.date-mode button[aria-pressed=true],.date-picker-grid button[aria-pressed=true]{background:var(--accent);color:light-dark(#fff,#10243a);border-color:var(--accent)}.multiple-dates{border:1px solid var(--line);border-radius:8px;padding:14px;margin-bottom:18px}.date-picker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;text-align:center}.date-picker-grid button{min-height:40px;padding:5px}.selected-dates{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.selected-dates button{font-size:12px;padding:5px 8px}.batch-preview{list-style:none;padding:0}.batch-preview li{border-top:1px solid var(--line);padding:9px 0}.date-lesson-list{display:grid;gap:10px}.date-lesson-card{border:1px solid var(--line);border-radius:8px}.date-lesson-card summary{padding:12px;cursor:pointer;overflow-wrap:anywhere}.date-lesson-card summary span,.date-lesson-card summary small{display:block;margin-top:4px}.date-lesson-card summary small{color:var(--muted)}.date-lesson-card fieldset{padding:12px;border-top:1px solid var(--line)}.date-lesson-card fieldset>button{margin-top:12px}.quick-member{border:1px solid var(--line);border-radius:12px;padding:16px;margin:16px 0}.quick-member>input{display:block;width:100%;margin:8px 0 12px}.attendee>.pending-pass{grid-column:1/-1;order:1}
