@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-cyrillic-ext-wght-normal.D4X5GqEv.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-cyrillic-wght-normal.CY6AOgYE.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-vietnamese-wght-normal.U01xdrZh.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-latin-ext-wght-normal.CXYtwYOx.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-latin-wght-normal.BzFMHfZw.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-sans: "Nunito Variable", system-ui, -apple-system, sans-serif;--font-mono: monospace;--text-h1: 1.5rem;--text-lg: 1.25rem;--text-base: 1rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--ink: #111;--ink-2: #2b2b2b;--ink-muted: #444;--ink-faint: #5c5c5c;--surface: #fff;--bg: #fafaf8;--surface-hover: #f4f4f2;--accent: #24748d;--accent-hover: #1e5f74;--accent-ink: var(--surface);--border: #e0e0de;--border-control: #bbb;--border-hover: #aaa;--border-width: 1.5px;--hairline: 1px;--radius: 5px;--radius-lg: 8px;--danger: #b91c1c;--danger-border: #fca5a5;--danger-tint: #fef2f2;--success: #16a34a;--success-border: #a8d8a8;--success-tint: #f5fbf5;--shadow-pop: 0 4px 12px rgba(0, 0, 0, .08);--shadow-modal: 0 8px 32px rgba(0, 0, 0, .18);--scrim: rgba(0, 0, 0, .4);--leading: 1.6;--z-overlay: 10}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);font-family:var(--font-sans);font-size:var(--text-base);color:var(--ink);line-height:var(--leading)}h1{font-size:var(--text-h1);font-weight:700;margin:0}h2{font-size:var(--text-lg);font-weight:600;margin:0}h3{font-size:var(--text-base);font-weight:600;margin:0}p{margin:0}a{color:inherit;text-decoration:underline;text-underline-offset:2px}a:hover{opacity:.7}input,select,textarea{border:var(--border-width) solid var(--border-control);border-radius:var(--radius);padding:var(--space-1) var(--space-2);font-size:var(--text-base);font-family:inherit;outline:none;background:var(--surface);color:var(--ink)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}input:disabled,select:disabled,textarea:disabled{background:var(--surface-hover);color:var(--ink-faint);cursor:not-allowed}button{border:var(--border-width) solid var(--border-control);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--text-base);font-family:inherit;background:var(--surface);color:var(--ink);cursor:pointer}button:hover{background:var(--surface-hover);border-color:var(--border-hover)}button:disabled{opacity:.45;cursor:not-allowed}label{font-size:var(--text-base);font-weight:500;color:var(--ink);display:block;margin-bottom:var(--space-1)}nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);border-bottom:var(--border-width) solid var(--border);background:var(--surface);padding:var(--space-3) var(--space-6)}.nav-back,.nav-title{display:none}.nav-right{display:flex;align-items:center;justify-content:space-between;flex:1}.container{max-width:56rem;margin:0 auto;padding:var(--space-8) var(--space-4)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack-sm{display:flex;flex-direction:column;gap:var(--space-2)}section{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-3)}.row-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3)}.row-between{display:flex;align-items:center;justify-content:space-between}.row-top{align-items:flex-start}.row-baseline{align-items:baseline}.row-end{justify-content:flex-end}.grow{flex:1}.row-actions{display:flex;align-items:center;gap:var(--space-3)}.form-row{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--space-2)}.form-row>button,.form-row>.form-actions{align-self:flex-end}.form-actions{display:flex;gap:var(--space-2)}.btn-primary,.btn-signin{background:var(--accent);color:var(--accent-ink);border:var(--border-width) solid var(--accent);border-radius:var(--radius);font-weight:600;cursor:pointer}.btn-primary:hover,.btn-signin:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary{padding:var(--space-1) var(--space-3);font-size:var(--text-base)}.btn-danger{background:none;border:var(--hairline) solid var(--danger-border);color:var(--danger);font-size:var(--text-base);padding:var(--space-1) var(--space-2);border-radius:var(--radius);cursor:pointer}.btn-danger:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-tint)}.btn-link,.btn-outline,.btn-signout,.btn-close{background:none;cursor:pointer}.btn-link,.btn-outline{font-size:var(--text-base);padding:var(--space-1) var(--space-2);border-radius:var(--radius)}.btn-link{border:none;color:var(--ink-muted)}.btn-outline{border:var(--hairline) solid var(--border-hover);color:var(--ink-2)}.btn-signout{border:none;font-size:var(--text-base);color:var(--ink-faint);white-space:nowrap}.btn-close{border:none;color:var(--ink-faint);font-size:var(--text-lg);line-height:1;padding:var(--space-1) var(--space-2)}.btn-link:hover,.btn-outline:hover,.btn-signout:hover,.btn-close:hover{color:var(--ink)}.btn-link:hover,.btn-outline:hover{background:var(--surface-hover)}.btn-outline:hover{border-color:var(--ink-muted)}.btn-link svg{margin-left:var(--space-1);vertical-align:-1px}.btn-signin{width:100%;padding:var(--space-2) var(--space-4);font-size:var(--text-base)}.btn-signin:disabled{opacity:.45;cursor:not-allowed}.signin-box{max-width:22rem;margin:5rem auto 0;padding:var(--space-6);background:var(--surface);border-radius:var(--radius-lg);border:var(--border-width) solid var(--border);box-shadow:var(--shadow-pop)}.signin-help{max-width:22rem;margin:var(--space-3) auto 0;text-align:center}.error{border:var(--border-width) solid var(--danger-border);background:var(--danger-tint);color:var(--danger);border-radius:var(--radius);padding:var(--space-2)}.success{border:var(--border-width) solid var(--success-border);background:var(--success-tint);color:var(--success);border-radius:var(--radius);padding:var(--space-4);text-align:center}.muted{color:var(--ink-faint);font-size:var(--text-base)}.err-text{color:var(--danger);font-size:var(--text-base)}details.accordion{border:var(--border-width) solid var(--border);border-radius:var(--radius);background:var(--surface)}details.accordion>summary{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:pointer;user-select:none;list-style:none}details.accordion>summary:before{content:"▶";font-size:.55rem;color:var(--border-control);flex-shrink:0;transition:transform .15s}details.accordion[open]>summary:before{transform:rotate(90deg)}details.accordion>summary::-webkit-details-marker{display:none}details.accordion>.accordion-body{padding:var(--space-1) var(--space-4) var(--space-4);background:var(--bg);border-top:var(--hairline) solid var(--border)}.item-list{border:var(--border-width) solid var(--border);border-radius:var(--radius);background:var(--surface)}.item-list>.row{padding:var(--space-3) var(--space-4)}.item-list details.accordion{border:none;border-radius:0}.item-list>:first-child,.item-list>:first-child>summary{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.item-list>:last-child{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius)}.item-row,.item-form{padding:var(--space-3) var(--space-4)}.btn-new{background:transparent;border:none;box-shadow:inset 0 var(--hairline) 0 var(--border);padding:var(--space-3) var(--space-4);text-align:center;color:var(--ink-muted);cursor:pointer;font:inherit;font-weight:500;width:100%;display:block}.btn-new:hover{background:var(--surface-hover);color:var(--ink)}.spinner{display:inline-block;width:.875em;height:.875em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-2px;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.menu{position:relative;display:inline-flex}.btn-menu{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-1);line-height:0}.menu-dropdown,.invite-popover{position:absolute;top:calc(100% + 4px);right:0;background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-pop);z-index:var(--z-overlay)}.menu-dropdown{min-width:9rem;padding:var(--space-1);display:flex;flex-direction:column}.menu-dropdown>button{background:none;border:none;text-align:left;padding:var(--space-2) var(--space-3);font-size:var(--text-base);border-radius:var(--radius);cursor:pointer;color:var(--ink)}.menu-dropdown>button:hover{background:var(--surface-hover)}.menu-dropdown>button.menu-item-danger{color:var(--danger)}.menu-dropdown>button.menu-item-danger:hover{background:var(--danger-tint)}.invite-popover{min-width:18rem;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.nav-email{font-size:var(--text-base);color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.accordion-label{flex:1;min-width:0;overflow-wrap:break-word;font-weight:500}.input-flex{flex:1;min-width:10rem}.input-short{width:9rem}.col-num{width:5rem;text-align:right}.hidden-file{visibility:hidden;position:absolute}.field{display:flex;flex-direction:column;gap:var(--space-1)}.field>label{font-size:var(--text-base);font-weight:500;color:var(--ink-muted);margin:0;white-space:nowrap}.field>input,.field>select{width:100%;box-sizing:border-box}.signin-box h1{font-size:var(--text-h1);margin-bottom:var(--space-6)}.signin-box input[type=email]{width:100%}.success p:first-child{font-weight:500}.success p+p{margin-top:var(--space-1)}html:has(dialog[open]){overflow:hidden}dialog.modal{border:none;border-radius:var(--radius-lg);padding:0;width:min(640px,95vw);box-shadow:var(--shadow-modal)}dialog.modal::backdrop{background:var(--scrim)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) var(--space-4) var(--space-2);border-bottom:var(--hairline) solid var(--border)}.modal-header h2{margin:0}.modal-body{padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.lint-status{font-size:var(--text-base);font-weight:500}.lint-status.ok{color:var(--success)}.lint-status.has-errors{color:var(--danger)}.csv-preview{font-family:var(--font-mono);font-size:var(--text-base);border:var(--hairline) solid var(--border);border-radius:var(--radius);overflow:auto;max-height:320px;background:var(--surface)}.csv-line{padding:1px 8px;white-space:pre}.csv-line-error{background:var(--danger-tint);border-left:3px solid var(--danger)}.csv-error-msg{padding:2px 8px 4px 20px;font-size:var(--text-base);color:var(--danger);background:var(--danger-tint)}.invite-status-send{font-size:var(--text-base);font-weight:600;color:var(--success);white-space:nowrap}.invite-status-skip{font-size:var(--text-base);color:var(--ink-muted);white-space:nowrap}.invite-status-error{font-size:var(--text-base);font-weight:600;color:var(--danger);white-space:nowrap}button.invite-status-send,button.invite-status-skip{background:transparent;border:none;padding:0;font:inherit;cursor:pointer;color:inherit}button.invite-status-send{color:var(--success);font-weight:600}button.invite-status-skip{color:var(--ink-muted)}button.invite-status-send:hover,button.invite-status-skip:hover{text-decoration:underline}.invite-results{border:var(--hairline) solid var(--border);border-radius:var(--radius);background:var(--surface);max-height:320px;overflow-y:auto}.invite-results-row{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-bottom:var(--hairline) solid var(--border);font-size:var(--text-base)}.invite-results-row:last-child{border-bottom:none}.invite-results-name{flex:1;min-width:0;overflow-wrap:break-word}.status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-sizing:border-box}.status-dot.is-noemail{border:1.5px dotted var(--ink-faint)}.status-dot.is-uninvited{background:var(--ink-faint)}.status-dot.is-invited{border:1.5px solid var(--accent)}.status-dot.is-signedin{background:var(--accent)}.teacher-detail{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-3)}.teacher-detail .grow{min-width:0;overflow-wrap:anywhere}.teacher-detail a{flex-shrink:0}dialog.modal textarea{width:100%;min-height:220px;max-height:320px;font-family:var(--font-mono);font-size:var(--text-base);box-sizing:border-box;resize:vertical}@media(max-width:600px){input,select,textarea,dialog.modal textarea{font-size:16px}button{min-height:44px}.row-actions{flex-direction:column;align-items:stretch;gap:var(--space-2)}.row-actions>.muted{display:none}.tenant-row{flex-wrap:wrap}.tenant-row .accordion-label{flex-basis:100%}.tenant-row .col-num{width:auto}}
