:root{--brand-primary:#4338ca;--brand-primary-hover:#3730a3;--brand-on-primary:#fff;--brand-accent:#db2777;--brand-logo:none;--brand-logo-width:28px;--brand-logo-height:28px;--brand-logo-bg:var(--brand-primary);--radius-button:6px;--font-body:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display:var(--font-body);--color-bg:#f7f7f9;--color-surface:#fff;--color-text:#1c1d22;--color-muted:#6b6f7b;--color-border:#e3e4e8;--color-row-hover:#f4f4f8;--color-success:#15803d;--color-success-bg:#dcfce7;--color-warning:#b45309;--color-warning-bg:#fef3c7;--color-danger:#b91c1c;--color-danger-bg:#fee2e2;--color-info-bg:#e0e7ff;--radius-sm:6px;--radius:10px;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--text-sm:.875rem;--text-base:1rem;--text-lg:1.25rem;--text-xl:1.6rem;--content-width:1100px}*,:before,:after{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);margin:0;line-height:1.5}h1,h2{font-family:var(--font-display);margin:0;line-height:1.2}h1{font-size:var(--text-xl)}h2{font-size:var(--text-lg)}p{margin:0}a{color:var(--brand-primary)}.muted{color:var(--color-muted)}.stack{gap:var(--space-4);flex-direction:column;display:flex}.row{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.topbar{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;display:flex}.brand{align-items:center;gap:var(--space-2);font-weight:700;display:flex}.brand-logo{width:var(--brand-logo-width);height:var(--brand-logo-height);border-radius:var(--radius-sm);background:var(--brand-logo) center / contain no-repeat, var(--brand-logo-bg);display:inline-block}.nav{flex-wrap:wrap;gap:2px;display:flex}.nav a{padding:var(--space-1) var(--space-2);font-size:var(--text-sm);border-radius:var(--radius-sm);color:var(--color-text);text-decoration:none}.nav a.active{background:var(--color-info-bg);color:var(--brand-primary);font-weight:600}.account{align-items:center;gap:var(--space-3);font-size:var(--text-sm);margin-left:auto;display:flex}.content{max-width:var(--content-width);padding:var(--space-5) var(--space-4) var(--space-6);margin:0 auto}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--space-4);display:flex}.page-status{padding:var(--space-6);text-align:center;color:var(--color-muted)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-4);box-shadow:var(--shadow)}.tiles{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.tile{gap:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-4);flex-direction:column;display:flex}.tile-label{color:var(--color-muted);font-size:var(--text-sm)}.tile-value{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700}.tile-value.warn{color:var(--color-warning)}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-button);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--color-row-hover)}.btn:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--brand-primary);border-color:var(--brand-primary);color:var(--brand-on-primary)}.btn-primary:hover:not(:disabled){background:var(--brand-primary-hover)}.btn-ghost{background:0 0;border-color:#0000}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}.field{gap:var(--space-1);font-size:var(--text-sm);color:var(--color-muted);border:0;flex-direction:column;margin:0;padding:0;display:flex}.field.checkbox{align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);flex-direction:row;align-self:end}input:not([type=checkbox]),select{font:inherit;color:var(--color-text);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);min-width:0}input:focus,select:focus{outline:2px solid var(--brand-primary);outline-offset:-1px}.search{max-width:420px}.form-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.span-all,.form-actions{grid-column:1/-1}.form-actions{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.chips{gap:var(--space-2);padding-top:var(--space-1);flex-wrap:wrap;display:flex}.chip{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:999px;display:inline-flex}.chip.on{border-color:var(--brand-primary);background:var(--color-info-bg)}.table{border-collapse:collapse;background:var(--color-surface);width:100%;font-size:var(--text-sm)}.table th,.table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);text-align:left;vertical-align:middle}.table th{color:var(--color-muted);font-weight:600}.table tbody tr:hover{background:var(--color-row-hover)}.table tr.muted-row td{color:var(--color-muted)}.table tr.cancelled td{color:var(--color-muted);text-decoration:line-through}.num{font-variant-numeric:tabular-nums;text-align:right!important}.neg{color:var(--color-danger)}.pos{color:var(--color-success)}.card>.table{margin:0 calc(-1 * var(--space-4));width:calc(100% + 2 * var(--space-4))}.badge{padding:1px var(--space-2);margin-left:var(--space-1);background:var(--color-row-hover);color:var(--color-muted);text-transform:capitalize;border-radius:999px;font-size:.75rem;font-weight:600;display:inline-block}.badge:first-child{margin-left:0}.badge-present,.badge-active,.badge-marked,.badge-paid{background:var(--color-success-bg);color:var(--color-success)}.badge-absent,.badge-warn,.badge-partial,.badge-sent,.badge-lateCancelled{background:var(--color-warning-bg);color:var(--color-warning)}.badge-expired,.badge-void,.badge-overdue,.badge-cancelled-lesson{background:var(--color-danger-bg);color:var(--color-danger)}.badge-cancelled,.badge-removed,.badge-completed{background:var(--color-row-hover);color:var(--color-muted)}.inline-confirm{gap:var(--space-2);flex-direction:column;max-width:360px;display:flex}.calendar{padding:0;overflow-x:auto}.cal-head,.cal-body{grid-template-columns:56px repeat(7,minmax(110px,1fr));min-width:840px;display:grid}.cal-head{border-bottom:1px solid var(--color-border)}.cal-day-head{padding:var(--space-2);font-size:var(--text-sm);border-left:1px solid var(--color-border);font-weight:600}.cal-day-head.today{color:var(--brand-primary)}.cal-body{position:relative}.cal-hour{color:var(--color-muted);text-align:right;padding-right:var(--space-2);font-size:.7rem;transform:translateY(-.5em)}.cal-col{border-left:1px solid var(--color-border);position:relative}.cal-col.today{background:var(--color-row-hover)}.cal-slot{border-top:1px solid var(--color-border)}.cal-event{padding:2px var(--space-2);border-radius:var(--radius-sm);color:var(--color-text);background:var(--color-info-bg);border-left:3px solid var(--brand-primary);font-size:.75rem;line-height:1.3;text-decoration:none;position:absolute;left:3px;right:3px;overflow:hidden}.cal-event:hover{filter:brightness(.97)}.cal-event.state-marked,.cal-key.state-marked{background:var(--color-success-bg);border-left-color:var(--color-success)}.cal-event.state-partial{background:var(--color-warning-bg);border-left-color:var(--color-warning)}.cal-event.state-cancelled,.cal-key.state-cancelled{background:var(--color-row-hover);border-left-color:var(--color-muted);color:var(--color-muted);text-decoration:line-through}.cal-key{width:12px;height:12px;margin:0 var(--space-1) 0 var(--space-3);vertical-align:-1px;background:var(--color-info-bg);border-left:3px solid var(--brand-primary);border-radius:3px;display:inline-block}.legend{font-size:var(--text-sm)}.scope{gap:var(--space-3);flex-wrap:wrap;display:flex}.tabs{gap:var(--space-1);flex-wrap:wrap;margin-right:auto;display:flex}.tab{font:inherit;font-size:var(--text-sm);padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;border-radius:999px}.tab.on{border-color:var(--brand-primary);background:var(--color-info-bg);color:var(--brand-primary);font-weight:600}.modal-backdrop{padding:10vh var(--space-4) var(--space-4);z-index:10;background:#10182866;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0}.modal{width:min(440px,100%)}.paynow{gap:var(--space-5);flex-wrap:wrap;align-items:center;display:flex}.paynow-qr{border-radius:var(--radius-sm);background:#fff;width:168px;height:168px}.paynow-qr svg{width:100%;height:100%;display:block}.tile-link{color:inherit;text-decoration:none}.tile-link:hover{border-color:var(--brand-primary)}.split{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(320px,1fr));display:grid}.fieldset-plain{border:0;min-width:0;margin:0;padding:0}input[type=color]{height:38px;padding:2px}.error{color:var(--color-danger);font-size:var(--text-sm)}.success{color:var(--color-success);font-size:var(--text-sm)}.empty{color:var(--color-muted);padding:var(--space-4) 0}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);max-width:420px;padding:var(--space-6);box-shadow:var(--shadow);gap:var(--space-4);flex-direction:column;margin:10vh auto 0;display:flex}@media (width<=1180px){.account .muted{display:none}}@media (width<=640px){.topbar{gap:var(--space-3);padding:var(--space-3) var(--space-4)}.account{justify-content:space-between;width:100%;margin-left:0}.table{display:block;overflow-x:auto}}.secret-key{letter-spacing:.08em;word-break:break-all;-webkit-user-select:all;user-select:all;margin-top:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;display:block}
