@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--font-heading: "Inter", system-ui, sans-serif;--font-heading-weight: 600;--font-body: "Inter", system-ui, sans-serif;--text-xs: 11px;--text-sm: 12px;--text-md: 13px;--text-base: 14px;--space-1: 3px;--space-2: 6px;--space-3: 8px;--space-4: 12px;--space-6: 16px;--space-8: 22px;--radius-sm: 3px;--radius-md: 6px;--radius-lg: 8px;--control-h: 32px;--color-header-bg: #1e2638;--color-header-text: #f2f4f8;--color-header-text-muted: rgba(242, 244, 248, .62);--color-header-border: rgba(242, 244, 248, .1);--color-header-active: rgba(255, 255, 255, .13)}:root,:root[data-theme=light]{color-scheme:light;--color-bg: #f0f2f5;--color-surface: #ffffff;--color-surface-2: #fafbfc;--color-surface-3: #f2f4f7;--color-text: #1f2430;--color-text-muted: #5d6474;--color-text-subtle: #8a91a0;--color-border: #e3e6ea;--color-border-strong: #cdd2da;--color-divider: #eceef1;--color-grid-line: #edeff2;--color-accent: #2f54eb;--color-accent-hover: #1d3fd4;--color-accent-contrast: #ffffff;--color-accent-soft: #eef2ff;--color-accent-soft-2: #dde5ff;--color-accent-border: #b9c8fb;--color-accent-on-soft: #1d3fd4;--color-neutral-soft: #f0f2f5;--color-neutral-on-soft: #4b5262;--color-success: #2d9a5c;--color-success-soft: #e8f6ed;--color-success-border: #a9dcbe;--color-danger: #d4380d;--color-danger-soft: #fdf0ec;--color-warning: #c47b0a;--color-warning-soft: #fdf6e8;--color-warning-border: #f0d9a8;--color-row-hover: rgba(31, 36, 48, .035);--color-cell-hover: rgba(47, 84, 235, .07);--color-scrim: rgba(23, 27, 38, .45);--shadow-sm: 0 0 0 1px var(--color-border);--shadow-md: 0 0 0 1px var(--color-border), 0 4px 14px rgba(23, 27, 38, .09);--shadow-lg: 0 0 0 1px var(--color-border), 0 12px 34px rgba(23, 27, 38, .16)}:root[data-theme=dark]{color-scheme:dark;--color-bg: #161826;--color-surface: #232532;--color-surface-2: #282a38;--color-surface-3: #2e3140;--color-text: #e9e9ed;--color-text-muted: rgba(233, 233, 237, .62);--color-text-subtle: rgba(233, 233, 237, .42);--color-border: #343745;--color-border-strong: #454956;--color-divider: #2d3040;--color-grid-line: rgba(233, 233, 237, .08);--color-accent: #9184d9;--color-accent-hover: #a79cea;--color-accent-contrast: #16161c;--color-accent-soft: #2b2741;--color-accent-soft-2: #352f52;--color-accent-border: #5d5294;--color-accent-on-soft: #d2cefd;--color-neutral-soft: #33364a;--color-neutral-on-soft: #d6d8e2;--color-success: #5bbd83;--color-success-soft: #1e3628;--color-success-border: #2f5c41;--color-danger: #f08a6c;--color-danger-soft: #3a2320;--color-warning: #e0aa54;--color-warning-soft: #3a2f1b;--color-warning-border: #6a5427;--color-row-hover: rgba(233, 233, 237, .05);--color-cell-hover: rgba(145, 132, 217, .1);--color-scrim: rgba(8, 9, 14, .62);--shadow-sm: 0 0 0 1px var(--color-border);--shadow-md: 0 0 0 1px var(--color-border), 0 6px 18px rgba(0, 0, 0, .45);--shadow-lg: 0 0 0 1px var(--color-border-strong), 0 16px 40px rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:1.5715;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-heading-weight);line-height:1.3;letter-spacing:-.01em;margin:0 0 var(--space-2)}h1{font-size:24px}h2{font-size:20px}h3{font-size:16px}h4{font-size:15px}h5{font-size:var(--text-base)}h6{font-size:var(--text-sm);letter-spacing:.06em;text-transform:uppercase}p{margin:0 0 var(--space-3)}a{color:var(--color-accent);text-decoration:none;text-underline-offset:3px}a:hover{color:var(--color-accent-hover)}img{display:block;max-width:100%}figure{margin:0}.text-muted{color:var(--color-text-muted)}.text-subtle{color:var(--color-text-subtle)}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}:focus{outline:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background:var(--color-accent-soft-2)}.hr{height:1px;border:0;margin:var(--space-4) 0;background:var(--color-divider)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;text-decoration:none;font-family:var(--font-heading);font-weight:500;font-size:var(--text-base);line-height:1.2;color:var(--color-text);background:transparent;border:1px solid transparent;min-height:var(--control-h);padding:4px var(--space-4);border-radius:var(--radius-md);transition:background-color .12s,border-color .12s,color .12s}.btn svg{display:block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{color:var(--color-accent-contrast);background:var(--color-accent);border-color:var(--color-accent)}.btn-primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-secondary{border-color:var(--color-border-strong);background:var(--color-surface)}.btn-secondary:hover{color:var(--color-accent);border-color:var(--color-accent)}.btn-ghost{color:var(--color-accent);padding-inline:var(--space-2);min-height:auto}.btn-ghost:hover{background:var(--color-accent-soft)}.btn-danger{color:var(--color-danger);border-color:transparent}.btn-danger:hover{background:var(--color-danger-soft)}.btn-icon{width:var(--control-h);height:var(--control-h);padding:0;flex:none}.btn-block{width:100%;margin-top:var(--space-2)}.field{min-width:0}.field>label{display:block;font-size:var(--text-sm);margin-bottom:4px;color:var(--color-text-muted)}.input{width:100%;min-height:var(--control-h);padding:4px 10px;font:inherit;font-size:var(--text-base);color:var(--color-text);caret-color:var(--color-accent);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);transition:border-color .12s,box-shadow .12s}.input::placeholder{color:var(--color-text-subtle)}.input:hover{border-color:var(--color-accent-border)}.input:focus-visible{border-color:var(--color-accent);outline:none;box-shadow:0 0 0 2px var(--color-accent-soft-2)}textarea.input{min-height:84px;resize:vertical;line-height:1.5;padding-block:6px}.radio{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:var(--text-base)}.radio input,.seg-opt input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.radio .dot{width:15px;height:15px;flex:none;border-radius:50%;border:1.5px solid var(--color-border-strong);background:var(--color-surface)}.radio:hover .dot{border-color:var(--color-accent)}.radio input:checked+.dot{border-color:var(--color-accent);background:var(--color-accent);box-shadow:inset 0 0 0 3px var(--color-surface)}.radio input:focus-visible+.dot{outline:2px solid var(--color-accent);outline-offset:2px}.seg{display:inline-flex;overflow:hidden;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface)}.seg-opt{display:inline-flex;align-items:center;gap:6px;padding:5px var(--space-4);font-size:var(--text-md);cursor:pointer;color:var(--color-text-muted)}.seg-opt+.seg-opt{border-left:1px solid var(--color-border)}.seg-opt:has(input:checked){color:var(--color-accent-contrast);background:var(--color-accent)}.seg-opt:not(:has(input:checked)):hover{background:var(--color-surface-3);color:var(--color-text)}.seg-opt:has(input:focus-visible){outline:2px solid var(--color-accent);outline-offset:-2px}.card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface)}.card-kicker{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-subtle)}.card-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:15px;line-height:1.25}.card-body{margin:0;font-size:var(--text-md);color:var(--color-text-muted);flex:1}.card-meta{display:flex;align-items:center;gap:6px;font-size:var(--text-xs);color:var(--color-text-subtle)}.elev-sm{box-shadow:var(--shadow-sm)}.elev-md{box-shadow:var(--shadow-md)}.elev-lg{box-shadow:var(--shadow-lg)}.panel{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.panel-head{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.tag{display:inline-flex;align-items:center;font-size:var(--text-xs);letter-spacing:.01em;padding:2px 8px;border-radius:var(--radius-sm);white-space:nowrap}.tag-accent{background:var(--color-accent-soft);color:var(--color-accent-on-soft)}.tag-neutral{background:var(--color-neutral-soft);color:var(--color-neutral-on-soft)}.tag-success{background:var(--color-success-soft);color:var(--color-success)}.tag-warning{background:var(--color-warning-soft);color:var(--color-warning);border-color:var(--color-warning-border)}.tag-danger{background:var(--color-danger-soft);color:var(--color-danger)}.tag-outline{border:1px solid var(--color-accent-border);color:var(--color-accent-on-soft)}.table{width:100%;border-collapse:collapse;font-size:var(--text-base)}.table th{text-align:left;font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);white-space:nowrap;padding:var(--space-3) var(--space-4);background:var(--color-surface-2);border-bottom:1px solid var(--color-border)}.table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-divider);vertical-align:middle}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover{background:var(--color-row-hover)}.table-compact th,.table-compact td{padding:var(--space-2) var(--space-3)}.dialog-backdrop{position:fixed;inset:0;display:grid;place-items:center;padding:var(--space-4);background:var(--color-scrim)}.dialog{width:min(440px,100%);display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-6);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-lg);color:var(--color-text);max-height:100%;overflow-y:auto}.dialog-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:16px}.dialog-body{font-size:var(--text-base);color:var(--color-text-muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2)}.check .dot{border-radius:var(--radius-sm);position:relative}.check input:checked+.dot{border-color:var(--color-accent);background:var(--color-accent);box-shadow:none}.check input:checked+.dot:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid var(--color-accent-contrast);border-width:0 2px 2px 0;transform:rotate(45deg)}select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--color-text-subtle) 50%),linear-gradient(135deg,var(--color-text-subtle) 50%,transparent 50%);background-position:calc(100% - 15px) 14px,calc(100% - 10px) 14px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:28px}select.input option{background:var(--color-surface);color:var(--color-text)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:8px}::-webkit-scrollbar-track{background:transparent}nav::-webkit-scrollbar{height:0}@media(max-width:960px){.hdr-user{display:none}}.hov-row:hover{background:var(--color-row-hover)}.hov-cell:hover,.hov-opt:hover,.hov-menu:hover{background:var(--color-cell-hover)}.link-row{cursor:pointer}#print-sheet{display:none}@media print{@page{margin:12mm}html,body{background:#fff!important;color:#16161c!important}.screen-only{display:none!important}#print-sheet{display:block!important}}.flash{position:fixed;right:18px;bottom:18px;z-index:200;padding:10px 14px;border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-md);font-size:var(--text-md);max-width:380px}.flash-error{box-shadow:0 0 0 1px var(--color-danger),0 4px 14px #0000002e}.err{font-size:var(--text-xs);color:var(--color-danger);margin-top:4px}.theme-toggle{display:grid;place-items:center;flex:none;width:28px;height:28px;padding:0;cursor:pointer;border:1px solid var(--color-header-border);border-radius:var(--radius-md);background:transparent;color:var(--color-header-text-muted)}.theme-toggle:hover{background:var(--color-header-active);color:var(--color-header-text)}.app-shell{display:flex;flex-direction:column;min-height:100vh;background:var(--color-bg);color:var(--color-text)}.app-main{flex:1;min-width:0;padding:18px 24px 56px}.hdr{display:flex;align-items:center;gap:var(--space-6);padding:0 20px;height:48px;position:sticky;top:0;z-index:10;background:var(--color-header-bg);color:var(--color-header-text);border-bottom:1px solid var(--color-header-border)}.hdr-brand{display:flex;align-items:center;gap:9px;flex:none}.hdr-mark{width:24px;height:24px;flex:none;display:grid;place-items:center;border-radius:var(--radius-md);font-size:13px;background:var(--color-accent);color:var(--color-accent-contrast)}.hdr-name{font-size:var(--text-base);font-weight:600}.hdr-nav{display:flex;align-items:center;gap:2px;flex:1 1 auto;min-width:0;overflow-x:auto}.hdr-nav a{padding:6px 11px;border-radius:var(--radius-md);font-size:var(--text-md);white-space:nowrap;color:var(--color-header-text-muted)}.hdr-nav a:hover,.hdr-nav a[aria-current=page]{background:var(--color-header-active);color:var(--color-header-text)}.hdr-right{display:flex;align-items:center;gap:9px;flex:none}.hdr-avatar{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:50%;font-size:var(--text-xs);background:var(--color-header-active);color:var(--color-header-text)}.hdr-user-name{font-size:var(--text-sm);line-height:1.2}.hdr-user-role{font-size:var(--text-xs);line-height:1.2;color:var(--color-header-text-muted)}.hdr-logout{font-size:var(--text-sm);color:var(--color-header-text-muted);padding:4px var(--space-3);border-radius:var(--radius-md);border:0;background:transparent;cursor:pointer;font-family:inherit}.hdr-logout:hover{background:var(--color-header-active);color:var(--color-header-text)}.page-head{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-6)}.page-head h2{margin:0}.page-head-spacer{flex:1 1 auto}.num{font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.tag-row{display:flex;gap:4px;flex-wrap:wrap}.cell-sub{font-size:var(--text-xs);color:var(--color-text-subtle)}.empty{color:var(--color-text-subtle);font-size:var(--text-md)}.stat-value{font-size:20px;font-variant-numeric:tabular-nums;line-height:1.2}.stat-label{font-size:var(--text-sm);color:var(--color-text-muted)}.chip{padding:5px var(--space-4);border-radius:var(--radius-md);cursor:pointer;font:inherit;font-size:var(--text-md);color:var(--color-text);background:transparent;border:1px solid var(--color-border-strong);transition:background-color .12s,border-color .12s,color .12s}.chip:hover{border-color:var(--color-accent);color:var(--color-accent)}.chip-on{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent-on-soft)}.opt-row{display:flex;align-items:center;width:100%;text-align:left;padding:8px 11px;border-radius:var(--radius-md);cursor:pointer;font:inherit;font-size:var(--text-md);color:var(--color-text);background:transparent;border:1px solid var(--color-border)}.opt-row-on{background:var(--color-accent-soft);border-color:var(--color-accent-border)}.panel-popout{overflow:visible}.tile{display:block;width:100%;text-align:left;padding:6px 9px;border-radius:var(--radius-md);cursor:pointer;font:inherit;font-size:var(--text-sm);font-variant-numeric:tabular-nums;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile:hover{border-color:var(--color-accent)}.tile-done{background:var(--color-success-soft);border-color:var(--color-success-border);color:var(--color-success)}.tile-repeat{border-style:dashed}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:5px;max-width:620px}.tile-menu{position:absolute;top:calc(100% + 5px);left:0;z-index:20;width:210px;padding:4px;border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-md)}.tile-menu-head{padding:5px 9px 7px;font-size:var(--text-xs);color:var(--color-text-subtle)}.tile-menu button{display:block;width:100%;text-align:left;padding:6px 9px;border:0;border-radius:var(--radius-sm);background:transparent;font:inherit;font-size:var(--text-sm);color:var(--color-text);cursor:pointer}.tile-menu button:disabled{color:var(--color-text-subtle);cursor:default}.gap-row td{color:var(--color-danger);background:var(--color-danger-soft)}.teacher-cell{font-weight:500;white-space:nowrap;border-right:1px solid var(--color-divider)}.assign-card{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-divider)}.assign-card:last-child{border-bottom:0}.assign-card-head{display:flex;align-items:baseline;gap:var(--space-3);font-size:var(--text-md)}.hdr-badge{display:inline-grid;place-items:center;min-width:17px;height:17px;margin-left:5px;padding:0 4px;border-radius:9px;font-size:10px;font-variant-numeric:tabular-nums;background:var(--color-danger);color:#fff}.wk-scroll{overflow-x:auto}.wk-inner{min-width:820px}.wk-row{display:grid;grid-template-columns:66px repeat(7,minmax(0,1fr))}.wk-caption{padding:var(--space-3) 0 var(--space-1);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-subtle)}.wk-head{border-bottom:1px solid var(--color-border)}.wk-head-hour{padding:0 0 var(--space-3) 14px;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-subtle)}.wk-day{padding:0 var(--space-2) var(--space-3);text-align:center}.wk-day-wd{font-size:var(--text-xs);color:var(--color-text-subtle)}.wk-day-num{font-size:var(--text-base);color:var(--color-text);font-variant-numeric:tabular-nums}.wk-day-today .wk-day-wd,.wk-day-today .wk-day-num{color:var(--color-accent)}.wk-day-rule{height:2px;margin:var(--space-1) var(--space-3) 0;border-radius:2px;background:var(--color-accent)}.wk-body{border-bottom:1px solid var(--color-grid-line)}.wk-hour{padding:10px var(--space-4);font-size:var(--text-sm);color:var(--color-text-subtle);font-variant-numeric:tabular-nums}.wk-cell{padding:var(--space-1);border-left:1px solid var(--color-grid-line)}.wk-cell-pick{cursor:pointer}.wk-empty{min-height:34px;display:grid;place-items:center;font-size:var(--text-md);color:var(--color-border-strong)}.wk-block{padding:4px var(--space-2);border-radius:var(--radius-md);background:var(--color-neutral-soft);border:1px solid var(--color-border);font-size:var(--text-xs)}.wk-block-trial{background:var(--color-warning-soft);border-color:var(--color-warning-border)}.wk-block-lesson{background:var(--color-surface-3);color:var(--color-text-subtle)}.wk-block-title{font-size:var(--text-sm);color:var(--color-text)}.wk-cont{min-height:34px;border-radius:var(--radius-md);background:var(--color-neutral-soft)}.wk-cont-trial{background:var(--color-warning-soft)}.seats{display:inline-block;padding:1px 5px;border-radius:var(--radius-sm);font-size:var(--text-xs);font-variant-numeric:tabular-nums;background:var(--color-accent-soft);color:var(--color-accent-on-soft)}.seats-full{background:var(--color-danger);color:#fff}.trial-card{margin:var(--space-2) 0 0;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-2)}.trial-head{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.lead-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-2) 0;border-top:1px solid var(--color-divider);font-size:var(--text-md)}.lead-name{min-width:160px}.fact{color:var(--color-text-subtle);font-variant-numeric:tabular-nums}.day-toggle{border:0;background:transparent;cursor:pointer;padding:0 var(--space-2) 0 0;color:var(--color-text-subtle);font:inherit;font-size:var(--text-md)}.wk-block-here{background:var(--color-success-soft);border-color:var(--color-success-border)}.wk-block-join{background:var(--color-accent-soft);border-color:var(--color-accent-border)}.plan-facts{margin:0;padding:var(--space-3) 0 0;font-size:var(--text-md);line-height:1.55}.tile-when{display:block;margin-top:2px;font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis}.tile-done .tile-when{color:var(--color-success)}
