@import "https://fonts.googleapis.com/css2?family=Gowun+Dodum&family=Noto+Sans+KR:wght@400;500;600;700&display=swap";
:root{--font-heading:"Gowun Dodum", "Noto Sans KR", sans-serif;--font-body:"Pretendard", "Noto Sans KR", system-ui, sans-serif;--bg:#f7f9fc;--surface:#fff;--surface-soft:#f2f6fa;--ink:#172033;--muted:#687187;--line:#dce4ee;--line-strong:#c8d3e0;--blue:#0072b2;--blue-deep:#005c91;--blue-soft:#e7f4fb;--gold:#e69f00;--gold-soft:#fff4d8;--coral:#d95f4f;--coral-soft:#fff0ed;--green:#16865f;--green-soft:#e9f8f1;--violet:#6f5bd3;--violet-soft:#f0edff;--radius:14px;--shadow:0 12px 30px #1e2f4a14}*{box-sizing:border-box}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{background:var(--bg);min-width:320px;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.55}.login-page{background:radial-gradient(circle at 50% 10%,#e8f6fd 0,#0000 38%),linear-gradient(160deg,#f8fbfe,#eef3f8);place-items:center;min-height:100dvh;padding:24px;display:grid}.login-card{border:1px solid var(--line);width:min(430px,100%);box-shadow:var(--shadow);text-align:center;background:#fff;border-radius:24px;justify-items:center;gap:9px;padding:36px;display:grid}.login-mark{color:#fff;background:linear-gradient(140deg, var(--blue) 0 68%, var(--gold) 68%);width:66px;height:66px;font-family:var(--font-heading);border-radius:20px 20px 20px 7px;place-items:center;margin-bottom:5px;font-size:28px;font-weight:900;display:grid;box-shadow:0 12px 24px #0072b233}.login-card>p{color:var(--blue-deep);font-size:13px;font-weight:900}.login-card h1{font-size:34px}.login-card>span{color:var(--muted);font-size:12px}.login-card form{width:100%;margin-top:15px}.google-login{color:#fff;background:var(--blue);border:0;border-radius:13px;justify-content:center;align-items:center;width:100%;min-height:50px;padding:0 18px;font-size:14px;font-weight:900;text-decoration:none;display:inline-flex;box-shadow:0 8px 18px #0072b229}.google-login:hover{background:var(--blue-deep)}.google-login:disabled{cursor:not-allowed;color:#718096;box-shadow:none;background:#e6ebf0}.login-domains{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:7px;display:flex}.login-domains strong,.login-domains span{min-height:27px;color:var(--muted);background:var(--surface-soft);border-radius:8px;align-items:center;padding:4px 8px;font-size:10px;display:inline-flex}.login-domains strong{color:var(--green);background:var(--green-soft)}.login-card>small{color:var(--muted);margin-top:9px;font-size:10px;line-height:1.55}.login-card .login-waiting{color:#8a6100;font-size:11px}.auth-error-card{gap:14px}.auth-error-card .login-mark{color:#8f3228;background:var(--coral-soft);box-shadow:none}.auth-error-card>p{color:var(--muted);line-height:1.55}button,input,select{font:inherit}button{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--font-heading);letter-spacing:-.025em}button,select,input{min-height:44px}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}.skip-link{z-index:100;background:var(--ink);color:#fff;border-radius:8px;padding:10px 14px;position:fixed;top:-80px;left:16px}.skip-link:focus{top:12px}.site-shell{grid-template-columns:224px minmax(0,1fr);min-height:100dvh;display:grid}.workspace-shell{flex-direction:column;min-width:0;min-height:100dvh;display:flex}.side-rail{z-index:30;border-right:1px solid var(--line);background:#fbfcfe;flex-direction:column;height:100vh;padding:12px 10px;display:flex;position:sticky;top:0}.side-brand{text-align:left;background:0 0;border:0;border-radius:14px;align-items:center;gap:11px;min-height:72px;padding:5px 9px;display:flex}.side-brand:hover{background:var(--surface-soft)}.side-brand .brand-mark{border-radius:13px 13px 13px 5px;flex:none;width:43px;height:43px}.side-brand-copy{align-content:center;gap:1px;min-width:0;line-height:1.1;display:grid}.side-brand-copy small{color:var(--muted);white-space:nowrap;font-size:11px;font-weight:800}.side-brand-copy strong{color:var(--ink);font-family:var(--font-heading);white-space:nowrap;font-size:23px;line-height:1.05}.side-brand-copy b{color:var(--blue-deep);white-space:nowrap;font-size:16px;line-height:1.15}.side-nav{gap:12px;margin-top:12px;display:grid}.side-nav section{gap:2px;display:grid}.side-nav section>p{color:#8a94a6;letter-spacing:.08em;padding:0 10px 2px;font-size:10px;font-weight:800}.side-nav button{min-height:44px;color:var(--muted);text-align:left;background:0 0;border:1px solid #0000;border-radius:11px;grid-template-columns:26px 1fr;align-items:center;gap:7px;padding:4px 10px;display:grid}.side-nav button>span{min-width:0;line-height:1.25;display:grid}.side-nav button strong{font-size:13px}.side-nav button small{text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:600;overflow:hidden}.side-nav button:hover{color:var(--blue);background:var(--surface-soft)}.side-nav button.active{color:var(--blue-deep);background:var(--blue-soft);box-shadow:inset 3px 0 var(--gold);border-color:#bfe1f3}.side-nav button.active svg{color:var(--blue)}.side-note{min-height:52px;color:var(--green);background:var(--green-soft);border:1px solid #cbe8da;border-radius:12px;align-items:center;gap:9px;margin-top:auto;padding:7px 9px;display:flex}.side-note>span{line-height:1.3;display:grid}.side-note strong{font-size:11px}.side-note small{color:#4f7768;text-overflow:ellipsis;white-space:nowrap;max-width:150px;font-size:9px;overflow:hidden}.brand-mark{color:#fff;background:linear-gradient(140deg, var(--blue) 0 68%, var(--gold) 68%);border-radius:15px 15px 15px 5px;place-items:center;width:48px;height:48px;display:grid;box-shadow:0 8px 18px #0072b233}.main-nav{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5;justify-content:center;align-items:stretch;gap:5px;min-height:74px;padding:8px 24px;display:none;position:sticky;top:0;overflow-x:auto;box-shadow:0 5px 16px #1e2f4a0a}.main-nav button{min-width:120px;min-height:56px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:9px;padding:7px 12px;display:flex}.main-nav button>span{text-align:left;line-height:1.25;display:grid}.main-nav strong{font-size:14px}.main-nav small{opacity:.8;font-size:10px;font-weight:600}.main-nav button:hover{color:var(--blue);background:var(--surface-soft)}.main-nav button.active{color:var(--blue-deep);background:var(--blue-soft);border-color:#bfe1f3}.main-nav button.active svg{color:var(--gold)}.mobile-topbar,.mobile-nav-backdrop{display:none}.main-content{flex:1;width:100%;padding:24px clamp(14px,2vw,30px) 42px}.mobile-current{display:none}.page-stack{gap:20px;display:grid}.page-fill{min-height:calc(100vh - 136px)}.my-teaching-widget{z-index:44;filter:drop-shadow(0 12px 22px #182e5029);grid-template-columns:44px minmax(0,232px);align-items:stretch;width:276px;transition:transform .22s,filter .22s;display:grid;position:fixed;top:50%;right:0;transform:translateY(-50%)translate(232px)}.my-teaching-widget:hover,.my-teaching-widget:focus-within,.my-teaching-widget.is-open{filter:drop-shadow(0 16px 30px #182e5038);transform:translateY(-50%)translate(0)}.teacher-widget-toggle{min-height:118px;color:var(--blue-deep);cursor:pointer;background:#f7fcff;border:1px solid #b8ddeb;border-right:0;border-radius:14px 0 0 14px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:8px 5px;display:flex}.teacher-widget-toggle:hover{color:#fff;background:var(--blue)}.teacher-widget-toggle>span{text-align:center;gap:2px;display:grid}.teacher-widget-toggle strong{white-space:nowrap;writing-mode:vertical-rl;font-size:10px;line-height:1.1}.teacher-widget-toggle small{display:none}.teacher-widget-panel{background:#fff;border:1px solid #b8ddeb;border-radius:14px 0 0 14px;align-content:start;gap:8px;min-height:188px;padding:12px;display:grid}.teacher-widget-panel>header{justify-content:space-between;align-items:flex-start;gap:8px;min-height:31px;display:flex}.teacher-widget-panel header span{color:var(--blue);font-size:10px;font-weight:900}.teacher-widget-panel h2{color:var(--ink);letter-spacing:-.03em;margin-top:1px;font-size:16px}.teacher-widget-panel>header>button{width:30px;min-height:30px;color:var(--muted);background:0 0;border:0;border-radius:9px;place-items:center;padding:0;display:grid}.teacher-widget-panel>header>button:hover{color:var(--blue-deep);background:var(--surface-soft)}.teacher-widget-select{grid-template-columns:48px minmax(0,1fr);align-items:center;gap:7px;display:grid}.teacher-widget-select>span{color:var(--muted);font-size:10px;font-weight:800}.teacher-widget-select select{border-radius:9px;min-width:0;min-height:35px;padding:0 26px 0 9px;font-size:12px}.teacher-widget-lesson{background:var(--blue-soft);border:1px solid #b9ddeb;border-radius:10px;align-content:center;gap:1px;min-height:57px;padding:8px 9px;display:grid}.teacher-widget-lesson.is-free{color:var(--muted);background:var(--surface-soft);border-color:#d9e1ea}.teacher-widget-lesson>span,.teacher-widget-next>span{color:var(--blue-deep);font-size:10px;font-weight:900}.teacher-widget-lesson.is-free>span{color:var(--muted)}.teacher-widget-lesson strong{color:var(--ink);font-size:14px}.teacher-widget-lesson small,.teacher-widget-next small{color:var(--muted);font-size:10px;line-height:1.35}.teacher-widget-next{grid-template-columns:50px minmax(0,1fr);align-items:center;gap:6px;min-height:44px;padding:1px 2px;display:grid}.teacher-widget-next>div{gap:1px;min-width:0;display:grid}.teacher-widget-next strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.teacher-widget-next>small{color:var(--muted)}.teacher-widget-open{color:#fff;background:var(--blue);border:0;border-radius:9px;justify-content:space-between;align-items:center;gap:7px;min-height:35px;padding:0 10px;font-size:11px;font-weight:800;display:flex}.teacher-widget-open:hover{background:var(--blue-deep)}.teacher-widget-help{color:var(--muted);font-size:11px;line-height:1.55}.home-page{gap:12px;width:min(1280px,100%);margin:0 auto}.home-hero{min-height:138px;box-shadow:var(--shadow);background:radial-gradient(circle at 82% 20%,#e69f0033,#0000 28%),linear-gradient(135deg,#fff 0%,#e9f6fc 100%);border:1px solid #bfe1f3;border-radius:20px;justify-content:space-between;align-items:center;gap:18px;padding:22px 24px;display:flex;overflow:hidden}.home-date-picker{min-height:42px;color:var(--blue-deep);background:#f8fcff;border:1px solid #c9e1ef;border-radius:12px;justify-self:start;align-items:center;gap:8px;padding:0 12px;display:inline-flex}.home-date-picker input{min-width:132px;min-height:30px;color:var(--ink);font:inherit;background:0 0;border:0;outline:0;font-size:12px;font-weight:700}.home-hero-copy{gap:4px;display:grid}.home-hero-copy>span{color:var(--blue);letter-spacing:.08em;font-size:12px;font-weight:900}.home-hero h1{font-size:clamp(32px,4vw,46px);line-height:1.12}.home-hero-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.home-hero .live-status{background:#ffffffe6;border:1px solid #0072b21f;min-height:42px;padding:0 16px;font-size:13px;box-shadow:0 8px 22px #1e2f4a14}.install-app-button,.install-app-installed{color:#fff;background:var(--blue);white-space:nowrap;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:6px;min-height:42px;padding:0 13px;font-size:12px;font-weight:900;display:inline-flex;box-shadow:0 8px 20px #0072b22e}.install-app-button:hover{background:var(--blue-deep);transform:translateY(-1px)}.install-app-button:focus-visible{outline-offset:3px;outline:3px solid #e69f008c}.install-app-installed{color:var(--green);background:var(--green-soft);box-shadow:none;border-color:#bde7d2}.home-dashboard-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:12px;min-height:280px;display:grid}.home-card{border:1px solid var(--line);background:var(--surface);min-width:0;min-height:280px;box-shadow:var(--shadow);border-radius:18px;flex-direction:column;padding:16px;display:flex}.home-card>header{align-items:center;gap:10px;min-height:44px;display:flex}.home-card>header>div{min-width:0;line-height:1.25;display:grid}.home-card>header p{color:var(--muted);font-size:11px;font-weight:800}.home-card>header h2{font-size:21px}.home-card-icon{border-radius:13px;flex:none;place-items:center;width:40px;height:40px;display:grid}.home-card-icon.meal{color:#8a6100;background:var(--gold-soft)}.home-card-icon.schedule{color:var(--blue);background:var(--blue-soft)}.calorie-chip{color:#765200;background:var(--gold-soft);white-space:nowrap;border-radius:999px;margin-left:auto;padding:6px 9px;font-size:10px}.meal-menu{grid-template-columns:1fr 1fr;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:grid}.meal-menu li{color:#58431a;background:#fff9eb;border-radius:10px;align-items:center;min-height:36px;padding:7px 9px;font-size:11px;font-weight:700;display:flex}.school-event-list{margin-top:9px;display:grid}.school-event-list article{border-bottom:1px solid var(--line);grid-template-columns:95px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:39px;padding:5px 0;display:grid}.school-event-list article:last-child{border-bottom:0}.school-event-list time{color:var(--blue-deep);font-size:11px;font-weight:900}.school-event-list article>div{min-width:0;line-height:1.25;display:grid}.school-event-list strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.school-event-list article span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.school-event-list em{color:var(--green);background:var(--green-soft);white-space:nowrap;border-radius:999px;padding:4px 7px;font-size:9px;font-style:normal;font-weight:800}.home-loading{flex:1;align-content:start;gap:10px;padding-top:18px;display:grid}.home-loading span{background:linear-gradient(90deg, var(--surface-soft), #eaf0f5, var(--surface-soft));background-size:200% 100%;border-radius:11px;height:44px;animation:1.5s ease-in-out infinite home-loading}.home-empty{color:var(--muted);text-align:center;flex:1;align-content:center;place-items:center;gap:12px;display:grid}.home-empty button{border:1px solid var(--line-strong);min-height:38px;color:var(--blue);background:#fff;border-radius:10px;align-items:center;gap:6px;padding:0 11px;font-size:11px;font-weight:800;display:inline-flex}.home-shortcuts,.home-external-links{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.home-shortcuts>*,.home-external-links>*{border:1px solid var(--line);min-width:0;min-height:62px;color:var(--ink);background:var(--surface);text-align:left;border-radius:15px;grid-template-columns:36px minmax(0,1fr) 18px;align-items:center;gap:8px;padding:8px 11px;text-decoration:none;display:grid;box-shadow:0 7px 18px #1e2f4a0d}.home-shortcuts>:hover,.home-external-links>:not(:disabled):hover{color:var(--blue-deep);border-color:#9fd3ed;transform:translateY(-1px)}.home-shortcuts>*>span,.home-external-links>*>span{width:36px;height:36px;color:var(--blue);background:var(--blue-soft);border-radius:11px;place-items:center;display:grid}.home-shortcuts strong,.home-external-links strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.3;overflow:hidden}.home-shortcuts>*>svg,.home-external-links>*>svg{color:var(--muted)}.home-external-links .is-placeholder{color:var(--muted);box-shadow:none;cursor:default;opacity:.78;background:0 0;border-style:dashed;grid-template-columns:36px minmax(0,1fr)}.home-external-links .is-placeholder>span{color:#8091a5;background:#eef2f6}.approval-modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#1420336b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-backdrop-close{cursor:default;background:0 0;border:0;padding:0;position:absolute;inset:0}.approval-modal{z-index:1;background:#fff;border:1px solid #cbdce7;border-radius:22px;grid-template-rows:auto minmax(0,1fr);width:min(860px,100%);max-height:min(780px,100dvh - 48px);display:grid;position:relative;overflow:hidden;box-shadow:0 26px 70px #10213847}.approval-modal-heading{border-bottom:1px solid var(--line);background:linear-gradient(110deg,#f6fbfe,#fff8e7);justify-content:space-between;align-items:center;gap:12px;min-height:74px;padding:14px 17px 14px 20px;display:flex}.approval-modal-heading>div{align-items:center;gap:10px;display:flex}.approval-modal-heading>div>span{width:42px;height:42px;color:var(--blue);background:var(--blue-soft);border-radius:13px;place-items:center;display:grid}.approval-modal-heading h2{font-size:24px}.approval-modal-heading>button{border:1px solid var(--line);width:40px;min-height:40px;color:var(--muted);background:#ffffffd6;border-radius:11px;place-items:center;padding:0;display:grid}.approval-modal-heading>button:hover{color:var(--coral);border-color:#efb8b0}.approval-modal-body{overscroll-behavior:contain;flex-direction:column;align-items:stretch;gap:16px;min-height:0;padding:18px;display:flex;overflow-y:auto}.install-guide-modal{width:min(680px,100%)}.install-guide-body{min-height:0;color:var(--muted);gap:15px;padding:20px;font-size:13px;display:grid;overflow-y:auto}.install-guide-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.install-guide-grid>section{border:1px solid var(--line);background:#f9fbfd;border-radius:15px;grid-template-columns:36px minmax(0,1fr);align-items:start;gap:10px;min-width:0;padding:15px;display:grid}.install-guide-grid>section>span{width:36px;height:36px;color:var(--blue);background:var(--blue-soft);border-radius:11px;place-items:center;display:grid}.install-guide-grid h3{color:var(--ink);font-size:16px}.install-guide-grid ol{counter-reset:install-step;gap:8px;margin:8px 0 0;padding:0;list-style:none;display:grid}.install-guide-grid li{grid-template-columns:minmax(0,1fr);gap:2px;line-height:1.45;display:grid}.install-guide-grid strong{color:var(--blue-deep);font-size:12px}.install-guide-grid li span{flex-wrap:wrap;align-items:center;gap:3px;font-size:12px;display:inline-flex}.install-guide-grid b{color:var(--ink)}.install-guide-note{color:#765200;background:var(--gold-soft);border-radius:11px;padding:10px 12px;font-size:11px;font-weight:700}.approval-group{border:1px solid var(--line);border-radius:16px;flex:none;overflow:hidden}.approval-group>header{background:#f5f9fc;justify-content:space-between;align-items:center;gap:10px;min-height:44px;padding:8px 13px;display:flex}.approval-group h3{font-size:17px}.approval-group>header>span{min-height:24px;color:var(--blue-deep);background:var(--blue-soft);border-radius:999px;padding:3px 8px;font-size:10px;font-weight:800}.approval-rule-table{display:grid}.approval-rule-head,.approval-rule-row{grid-template-columns:148px minmax(0,1fr);display:grid}.approval-rule-head{min-height:32px;color:var(--muted);background:#fbfcfe;font-size:10px;font-weight:800}.approval-rule-head>span{border-bottom:1px solid var(--line);padding:7px 11px}.approval-rule-head>span+span{border-left:1px solid var(--line)}.approval-rule-row{border-bottom:1px solid var(--line);min-height:50px}.approval-rule-row:last-child{border-bottom:0}.approval-rule-row>strong{background:#f9fbfd;align-items:center;padding:10px 12px;font-size:12px;display:flex}.approval-flow-stack{border-left:1px solid var(--line);align-content:center;gap:6px;min-width:0;padding:8px 11px;display:grid}.approval-flow{flex-wrap:wrap;align-items:center;gap:7px;min-width:0;display:flex}.approval-step{background:var(--surface-soft);white-space:nowrap;border-radius:8px;align-items:baseline;gap:3px;min-height:27px;padding:4px 8px;font-size:10px;display:inline-flex;position:relative}.approval-step+.approval-step{margin-left:10px}.approval-step+.approval-step:before{content:"→";color:#9aa7b8;font-weight:900;position:absolute;top:50%;left:-14px;transform:translateY(-50%)}.approval-step strong{font-size:10px}.approval-step small{font-size:9px;font-weight:800}.approval-step.is-draft{color:#506075;background:#edf1f5}.approval-step.is-review{color:#5744ad;background:var(--violet-soft)}.approval-step.is-cooperate{color:#147252;background:var(--green-soft)}.approval-step.is-approval{color:#b74034;background:var(--coral-soft)}.approval-step.is-delegation{color:#8a6100;background:var(--gold-soft)}.phonebook-modal{width:min(1160px,100%)}.phonebook-modal-body{min-height:0;padding:18px;overflow-y:auto}.phonebook-state{min-height:270px;color:var(--muted);text-align:center;align-content:center;place-items:center;gap:15px;display:grid}.phonebook-spinner{border:3px solid var(--blue-soft);border-top-color:var(--blue);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite phonebook-spin}.phonebook-lock{text-align:center;align-content:center;justify-items:center;gap:12px;max-width:470px;min-height:302px;margin:0 auto;display:grid}.phonebook-lock-icon{width:58px;height:58px;color:var(--green);background:var(--green-soft);border-radius:18px;place-items:center;display:grid}.phonebook-lock h3{font-size:20px}.phonebook-lock p{max-width:390px;color:var(--muted);margin:5px 0 0;font-size:12px;line-height:1.6}.phonebook-lock label{width:100%}.phonebook-lock input,.phonebook-search input{border:1px solid var(--line-strong);width:100%;min-height:45px;color:var(--ink);font:inherit;background:#fff;border-radius:11px;outline:none;padding:0 13px;font-size:14px}.phonebook-lock input:focus,.phonebook-search input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #0072b21f}.phonebook-lock .button-primary{min-height:43px}.phonebook-error{color:#b74034!important}.phonebook-search{border:1px solid var(--line);min-height:46px;color:var(--blue);background:#f8fbfd;border-radius:12px;align-items:center;gap:8px;padding:0 13px;display:flex}.phonebook-search input{background:0 0;border:0;border-radius:0;min-width:0;min-height:0;padding:0;font-size:13px}.phonebook-directories{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:14px;margin-top:14px;display:grid}.phonebook-directory{border:1px solid var(--line);background:#fff;border-radius:15px;overflow:hidden}.phonebook-directory>h3{min-height:43px;color:var(--blue-deep);background:#f5f9fc;margin:0;padding:11px 13px;font-size:15px}.phonebook-table{display:grid}.phonebook-row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) 68px minmax(82px,.9fr);align-items:center;min-width:0;min-height:39px;font-size:12px;display:grid}.phonebook-row>*{text-overflow:ellipsis;white-space:nowrap;min-width:0;padding:8px 10px;overflow:hidden}.phonebook-row>*+*{border-left:1px solid var(--line);color:var(--muted);text-align:center}.phonebook-row>strong{color:var(--ink);font-weight:750}.phonebook-row-head{min-height:31px;color:var(--muted);background:#fbfcfe;font-size:10px;font-weight:800}.phonebook-row-head>span{color:inherit;text-align:center}.phonebook-row-head>span:first-child{text-align:left}.phonebook-row.is-section{min-height:33px;color:var(--blue-deep);background:#f8fbfd;grid-template-columns:1fr}.phonebook-row.is-section>strong{padding:8px 10px;font-size:11px}.phonebook-no-result{min-height:96px;color:var(--muted);place-items:center;margin:0;font-size:12px;display:grid}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.footer-links{align-items:center;gap:12px;display:flex}.footer-links>span{color:var(--muted)}.footer-links a{color:var(--blue-deep);text-decoration:none}.footer-links a:hover{text-decoration:underline}.page-heading{grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:14px;min-height:76px;display:grid}.heading-icon{width:48px;height:48px;color:var(--blue);background:var(--blue-soft);border-radius:14px;place-items:center;display:grid}.heading-copy{min-width:0}.heading-copy p{color:var(--blue);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:800}.heading-copy h1{font-size:clamp(25px,3vw,34px);line-height:1.2}.heading-copy>span{color:var(--muted);font-size:13px}.heading-action{align-items:center;display:flex}.heading-filters{align-items:end;gap:8px;display:flex}.heading-filters .compact-control{flex:1}.compact-control,.filter-bar label,.request-form label{gap:5px;display:grid}.compact-control span,.filter-bar label>span,.request-form label>span{color:var(--muted);font-size:11px;font-weight:700}.compact-control select{min-width:148px}.compact-control.wide select{min-width:190px}select,input{border:1px solid var(--line-strong);width:100%;color:var(--ink);background:var(--surface);border-radius:10px;outline:none;padding:0 12px}select:focus,input:focus,button:focus-visible{outline-offset:1px;border-color:var(--blue);outline:3px solid #0072b22e}.button-primary,.button-secondary,.text-button{border-radius:10px;justify-content:center;align-items:center;gap:7px;font-weight:700;display:inline-flex}.button-primary{border:1px solid var(--blue);background:var(--blue);color:#fff;padding:0 16px;box-shadow:0 7px 16px #0072b229}.button-primary:hover{background:var(--blue-deep)}.button-secondary{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);padding:0 14px}.button-secondary:hover{border-color:var(--blue);color:var(--blue)}.master-panel,.week-board,.request-card,.source-table-card,.changes-card,.register-sheet{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.legend-row{border-bottom:1px solid var(--line);align-items:center;gap:18px;min-height:48px;padding:9px 16px;display:flex}.legend-row span{color:var(--muted);align-items:center;gap:7px;font-size:12px;font-weight:700;display:inline-flex}.legend-row i{border:1px solid var(--line-strong);border-radius:4px;width:13px;height:13px}.legend-fixed{background:#fff}.legend-selection{background:var(--blue-soft);border-color:#9ed2ed!important}.legend-row small{color:var(--muted);margin-left:auto}.fullscreen-button{min-height:32px;color:var(--blue-deep);background:var(--blue-soft);border:1px solid #bfe1f3;border-radius:9px;align-items:center;gap:5px;margin-left:auto;padding:0 10px;font-size:11px;font-weight:800;display:inline-flex}.fullscreen-button:hover{color:#fff;background:var(--blue);border-color:var(--blue)}.master-scroll{scrollbar-gutter:stable both-edges;min-height:430px;max-height:calc(100vh - 202px);overflow:scroll}.master-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:max-content;min-width:100%}.master-table th,.master-table td{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.master-table thead{z-index:5;position:sticky;top:0}.master-table thead th{color:#fff;background:var(--blue);text-align:center;min-width:108px;height:34px;padding:5px;font-size:11px}.master-table thead tr:nth-child(2) th{min-width:108px;height:28px;color:var(--blue-deep);background:#e7f2f8}.master-table thead th.is-today{background:var(--green);box-shadow:inset 0 -3px var(--gold)}.master-table thead tr:nth-child(2) th.is-current-head{color:#704d00;box-shadow:inset 0 -3px var(--gold);background:#ffe8ad}.master-table .sticky-class{z-index:4;width:78px;min-width:78px;max-width:78px;position:sticky;left:0}.master-table thead .sticky-class{z-index:8;color:#fff;background:var(--blue-deep)}.master-table tbody .sticky-class{text-align:center;background:#f4f7fb;padding:8px 6px}.master-table tbody .sticky-class button{background:0 0;border:0;border-radius:9px;width:100%;min-height:45px;padding:4px}.master-table tbody .sticky-class button:hover{color:var(--blue);background:var(--blue-soft)}.master-table tbody .sticky-class strong{font-size:14px;display:block}.master-table tbody .sticky-class span{color:var(--muted);font-size:10px;font-weight:500;display:block}.master-table td{text-align:center;vertical-align:middle;background:#fff;width:108px;min-width:108px;max-width:108px;height:72px;padding:7px 6px}.master-table td>strong{color:#253047;-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:10.5px;line-height:1.27;display:-webkit-box;overflow:hidden}.master-cell-meta{justify-items:center;gap:2px;margin-top:4px;display:grid}.master-table td small{max-width:100%;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:8.5px;line-height:1.25;display:block;overflow:hidden}.master-table td small.master-badge{color:var(--blue-deep);background:#ffffffbd;border-radius:999px;padding:1px 5px;font-weight:800}.master-table td>span{color:#b4bdc9}.master-table td.master-selection{background:var(--blue-soft)}.master-table tbody tr:hover td:not(.sticky-class){box-shadow:inset 0 0 0 2px #0072b21f}.master-table .day-divider{border-left:2px solid #aebdca!important}.master-table tbody tr.selected-class-row td{background:#fff8e8;box-shadow:inset 0 2px #e69f008c,inset 0 -2px #e69f008c}.master-table tbody tr.selected-class-row td.master-selection{background:#fff1d0}.master-table tbody tr.selected-class-row .sticky-class{color:#704d00;background:var(--gold-soft);box-shadow:inset 4px 0 var(--gold)}.master-panel:fullscreen{width:100vw;height:100dvh;box-shadow:none;background:#fff;border:0;border-radius:0;flex-direction:column;display:flex}.master-panel:fullscreen .legend-row{flex:none;height:40px;min-height:40px;padding:4px 8px}.master-panel:fullscreen .master-scroll{scrollbar-width:none;width:100%;height:calc(100dvh - 40px);min-height:0;max-height:none;overflow:hidden}.master-panel:fullscreen .master-scroll::-webkit-scrollbar{display:none}.master-panel:fullscreen .master-table{table-layout:fixed;width:100%;min-width:0;height:calc(100dvh - 40px)}.master-panel:fullscreen .master-table thead th{width:auto;min-width:0;height:24px;padding:1px;font-size:8px;line-height:1}.master-panel:fullscreen .master-table thead tr:nth-child(2) th{width:auto;min-width:0;height:20px}.master-panel:fullscreen .master-table .sticky-class{width:48px;min-width:48px;max-width:48px}.master-panel:fullscreen .master-table tbody .sticky-class{padding:1px}.master-panel:fullscreen .master-table tbody .sticky-class button{border-radius:4px;height:100%;min-height:0;padding:1px}.master-panel:fullscreen .master-table tbody .sticky-class strong{font-size:9px;line-height:1}.master-panel:fullscreen .master-table tbody .sticky-class span{font-size:6px;line-height:1}.master-panel:fullscreen .master-table td{width:auto;min-width:0;max-width:none;height:calc((100dvh - 84px) / var(--master-row-count));padding:1px}.master-panel:fullscreen .master-table td>strong{-webkit-line-clamp:2;font-size:clamp(8px,.62vw,11px);line-height:1.08}.master-panel:fullscreen .master-cell-meta{gap:0;margin-top:1px}.master-panel:fullscreen .master-table td small{font-size:clamp(5px,.38vw,7px);line-height:1.05}.master-panel:fullscreen .master-table td small.master-badge{padding:0 2px}.master-panel:fullscreen .master-table .day-divider{border-left-width:1px!important}.board-title{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:18px;min-height:70px;padding:13px 18px;display:flex}.board-title h2{font-size:22px}.board-title p{color:var(--muted);font-size:12px}.source-chip{min-height:30px;color:var(--green);background:var(--green-soft);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:0 9px;font-size:11px;font-weight:800;display:inline-flex}.board-chips{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;display:flex}.live-status{min-height:30px;color:var(--muted);background:var(--surface-soft);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-size:11px;font-weight:800;display:inline-flex}.live-status .live-dot{background:currentColor;border:0;border-radius:50%;flex:none;width:7px;height:7px}.live-status.is-class{color:#0b7654;background:var(--green-soft)}.live-status.is-break{color:var(--blue-deep);background:var(--blue-soft)}.live-status.is-lunch{color:#795600;background:var(--gold-soft)}.live-status.is-class .live-dot{animation:1.8s ease-in-out infinite live-dot-pulse}.legend-row .live-status{color:var(--muted);font-size:11px}.legend-row .live-status.is-class{color:#0b7654}.legend-row .live-status.is-break{color:var(--blue-deep)}.legend-row .live-status.is-lunch{color:#795600}.week-board{width:min(100%,1180px);margin-inline:auto}.week-scroll{overflow-x:auto}.mobile-week-board{display:none}.week-grid{grid-template-columns:68px repeat(5,minmax(130px,1fr));width:100%;min-width:760px;display:grid}.week-corner,.day-head{color:#fff;background:var(--blue);border-right:1px solid #fff3;place-items:center;height:43px;font-weight:700;display:grid}.week-corner{background:var(--blue-deep);font-size:12px}.day-head{font-family:var(--font-heading);font-size:16px}.day-head.is-today{background:var(--green);box-shadow:inset 0 -4px var(--gold)}.week-row{display:contents}.period-head{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f4f7fa;align-content:center;justify-items:center;min-height:104px;padding:10px 5px;display:grid}.period-head strong{width:34px;height:34px;color:var(--blue);background:#fff;border-radius:10px;place-items:center;font-size:16px;display:grid;box-shadow:0 2px 8px #1e2f4a12}.period-head span{color:var(--muted);margin-top:5px;font-size:10px}.schedule-cell{border-top:0;border-left:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:104px;color:var(--ink);text-align:left;background:#fff;flex-direction:column;justify-content:center;align-items:flex-start;padding:10px 10px 9px;display:flex}.schedule-cell.is-clickable{box-shadow:inset 0 -3px var(--blue);position:relative}.schedule-cell.is-clickable:hover{z-index:1;box-shadow:inset 0 0 0 2px var(--blue), inset 0 -3px var(--blue);background:#edf8fd}.schedule-cell.is-selection{background:#f6fbfe}.schedule-cell.is-free{background:var(--gold-soft)}.schedule-cell.is-conflict{background:var(--coral-soft)}.cell-badge-row{justify-content:space-between;align-items:center;gap:4px;width:100%;min-height:22px;display:flex}.cell-status-badges{justify-content:flex-end;align-items:center;gap:4px;display:inline-flex}.mini-badge,.warning-badge{border-radius:999px;padding:2px 7px;font-size:9px;font-weight:800}.mini-badge{color:var(--blue-deep);background:var(--blue-soft)}.warning-badge{color:#a13f31;background:#ffe1dc}.live-badge{color:#704d00;background:#ffe29b;border-radius:999px;padding:2px 7px;font-size:9px;font-weight:900}.course-name{font-family:var(--font-heading);letter-spacing:-.025em;margin-top:3px;font-size:17px;line-height:1.35}.cell-meta{color:var(--muted);margin-top:3px;font-size:11px;font-weight:600}.room-pill{min-height:25px;color:var(--blue-deep);background:var(--blue-soft);border-radius:7px;align-items:center;gap:5px;margin-top:auto;padding:3px 7px;font-size:11px;font-weight:800;display:inline-flex}.empty-label{color:#b5bdc9;text-align:center;width:100%;font-size:11px}.current-empty{color:#795600;font-weight:800}.teacher-week .course-name{font-family:var(--font-heading);letter-spacing:-.03em;font-size:19px;font-weight:800}.teacher-week .schedule-cell,.teacher-week .period-head{min-height:112px}.teacher-week .schedule-cell.is-normal{border-left:4px solid var(--blue);background:#edf8fd}.teacher-week .schedule-cell.is-normal.class-tone-1{background:#edf8fd;border-left-color:#0072b2}.teacher-week .schedule-cell.is-normal.class-tone-2{background:#f2efff;border-left-color:#7656d6}.teacher-week .schedule-cell.is-normal.class-tone-3{background:#eaf8f2;border-left-color:#148b61}.teacher-week .schedule-cell.is-normal.class-tone-4{background:#fff0e9;border-left-color:#da6b42}.teacher-week .schedule-cell.is-normal.class-tone-5{background:#fff7d9;border-left-color:#b58a00}.teacher-week .schedule-cell.is-normal.class-tone-6{background:#dff6f1;border-left-color:#008a7b}.teacher-week .schedule-cell.is-normal.class-tone-7{background:#fde7ee;border-left-color:#bd3e68}.teacher-week .schedule-cell.is-normal.class-tone-8{background:#e8edff;border-left-color:#4c65c9}.teacher-week .schedule-cell.is-normal.class-tone-9{background:#f8ecde;border-left-color:#8d5a20}.teacher-week .schedule-cell.is-normal.class-tone-10{background:#e2f3e7;border-left-color:#2d7a48}.teacher-week .schedule-cell.is-normal.class-tone-11{background:#f7e9fa;border-left-color:#9440a9}.teacher-week .schedule-cell.is-normal.class-tone-12{background:#e6f1f5;border-left-color:#4b778c}.teacher-week .schedule-cell.is-selection{border-left:4px solid var(--tone,var(--violet));background:var(--tone-soft,var(--violet-soft))}.teacher-week .schedule-cell.is-free{border-left:4px solid var(--gold);background:var(--gold-soft)}.teacher-class-chip{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;min-height:26px;padding:4px 8px;font-size:10px;font-weight:800;display:inline-flex}.teacher-class-chip.class-tone-1{color:#006798;background:#edf8fd;border-color:#9ed2ed}.teacher-class-chip.class-tone-2{color:#6048b2;background:#f2efff;border-color:#cfc3ff}.teacher-class-chip.class-tone-3{color:#117354;background:#eaf8f2;border-color:#ace4cb}.teacher-class-chip.class-tone-4{color:#ac4e2c;background:#fff0e9;border-color:#f3c7b8}.teacher-class-chip.class-tone-5{color:#816200;background:#fff7d9;border-color:#eed998}.teacher-class-chip.class-tone-6{color:#00756a;background:#dff6f1;border-color:#ace3d9}.teacher-class-chip.class-tone-7{color:#a8325b;background:#fde7ee;border-color:#efbccd}.teacher-class-chip.class-tone-8{color:#435bbb;background:#e8edff;border-color:#c8d1fb}.teacher-class-chip.class-tone-9{color:#74430e;background:#f8ecde;border-color:#e6ceb0}.teacher-class-chip.class-tone-10{color:#21683a;background:#e2f3e7;border-color:#bbe0c6}.teacher-class-chip.class-tone-11{color:#80328f;background:#f7e9fa;border-color:#e5c0ed}.teacher-class-chip.class-tone-12{color:#3d6576;background:#e6f1f5;border-color:#c8dce5}.schedule-cell.is-current{z-index:2;box-shadow:inset 0 0 0 3px var(--gold), 0 0 20px #e69f004d;animation:2.2s ease-in-out infinite current-class-glow;position:relative}.schedule-cell.is-current.is-clickable{box-shadow:inset 0 0 0 3px var(--gold), inset 0 -4px var(--blue), 0 0 20px #e69f004d}.entity-switcher{grid-template-columns:42px minmax(180px,230px) 42px;align-items:end;gap:6px;display:grid}.entity-switcher>button{border:1px solid var(--line-strong);width:42px;min-height:44px;color:var(--blue);background:#fff;border-radius:10px;place-items:center;padding:0;display:grid}.entity-switcher>button:hover{border-color:var(--blue);background:var(--blue-soft)}.entity-switcher label{gap:4px;display:grid}.entity-switcher label>span{color:var(--muted);font-size:10px;font-weight:800}.workspace-tabs{border:1px solid var(--line);background:#edf2f7;border-radius:13px;align-items:stretch;gap:4px;min-height:52px;padding:4px;display:flex}.workspace-tabs button{min-height:42px;color:var(--muted);background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;gap:7px;padding:0 18px;font-size:13px;font-weight:800;display:inline-flex}.workspace-tabs button>span{min-width:22px;height:22px;color:var(--blue-deep);background:var(--blue-soft);border-radius:999px;place-items:center;padding:0 5px;font-size:10px;display:grid}.workspace-tabs button.active{color:var(--blue-deep);background:#fff;box-shadow:0 3px 10px #1e2f4a1a}.roster-workspace{grid-template-columns:290px minmax(0,1fr);gap:14px;min-height:620px;display:grid}.assignment-panel,.roster-sheet{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;overflow:hidden}.assignment-panel{flex-direction:column;display:flex}.assignment-summary{border-bottom:1px solid var(--line);background:linear-gradient(135deg, var(--blue-soft), white 80%);min-height:79px;padding:12px 14px}.assignment-summary>div{color:var(--blue);align-items:center;gap:9px;display:flex}.assignment-summary>div>span{align-items:baseline;gap:5px;display:flex}.assignment-summary strong{font-family:var(--font-heading);font-size:25px}.assignment-summary small{color:var(--ink);font-size:12px;font-weight:800}.assignment-summary p{color:var(--muted);margin-top:2px;font-size:10px}.assignment-list{min-height:515px;max-height:calc(100vh - 292px);padding:7px;overflow-y:auto}.assignment-list button{text-align:left;background:0 0;border:1px solid #0000;border-radius:10px;grid-template-columns:36px minmax(0,1fr) 28px;align-items:center;gap:8px;width:100%;min-height:58px;padding:7px 8px;display:grid}.assignment-list button:hover{background:var(--surface-soft)}.assignment-list button.active{background:var(--blue-soft);box-shadow:inset 3px 0 var(--tone,var(--blue));border-color:#bfe1f3}.assignment-list button>span:nth-child(2){min-width:0;display:grid}.assignment-list button>span:nth-child(2) strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.assignment-list button>span:nth-child(2) small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.assignment-list button em{color:var(--muted);text-align:right;font-size:10px;font-style:normal;font-weight:800}.assignment-kind{color:#fff;background:var(--blue);border-radius:10px;place-items:center;width:34px;height:34px;font-size:10px;font-weight:900;display:grid}.assignment-kind.is-selection{background:var(--tone,var(--violet))}.assignment-kind.is-free{color:#745000;background:var(--gold-soft)}.roster-sheet{min-width:0}.roster-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;min-height:104px;padding:18px 20px;display:flex}.roster-heading>div{min-width:0}.roster-heading p{color:var(--blue);letter-spacing:.08em;font-size:10px;font-weight:900}.roster-heading h2{font-size:25px;line-height:1.25}.roster-heading span{color:var(--muted);font-size:11px}.roster-count{color:#fff;background:var(--blue);width:68px;height:68px;font-family:var(--font-heading);border-radius:20px;justify-content:center;align-items:baseline;gap:3px;font-size:28px;display:flex}.roster-count small{font-family:var(--font-body);font-size:10px}.roster-count.is-selection{background:var(--violet)}.roster-count.is-free{color:#704d00;background:var(--gold-soft)}.roster-meta{border-bottom:1px solid var(--line);background:#f8fafc;grid-template-columns:.8fr 1fr 1.2fr 1fr;display:grid}.roster-meta>span{border-right:1px solid var(--line);align-content:center;min-height:62px;padding:9px 13px;display:grid}.roster-meta>span:last-child{border-right:0}.roster-meta small{color:var(--muted);font-size:9px;font-weight:700}.roster-meta strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.roster-table{border-left:1px solid var(--line);min-height:448px;max-height:calc(100vh - 374px);overflow-y:auto}.roster-row{grid-template-columns:80px 80px minmax(120px,1fr);align-items:stretch;min-height:45px;display:grid}.roster-row>*{border-right:1px solid var(--line);border-bottom:1px solid var(--line);justify-content:center;align-items:center;min-width:0;padding:8px 10px;font-size:12px;display:flex}.roster-row>strong{justify-content:flex-start;font-size:13px}.roster-head{z-index:2;min-height:39px;color:var(--ink);background:#eaf0f5;font-weight:800;position:sticky;top:0}.roster-head>*{font-size:10px}.roster-missing{min-height:448px;color:var(--muted);text-align:center;place-content:center;justify-items:center;padding:30px;display:grid}.roster-missing svg{color:var(--gold);margin-bottom:10px}.roster-missing strong{color:var(--ink);font-family:var(--font-heading);font-size:20px}.roster-missing p{max-width:440px;margin-top:5px;font-size:12px}.request-card{border-left:4px solid var(--gold);gap:16px;padding:18px;display:grid}.request-title{align-items:center;gap:11px;display:flex}.request-title>span{color:#986800;background:var(--gold-soft);border-radius:11px;place-items:center;width:38px;height:38px;display:grid}.request-title h2{font-size:19px}.request-title p{color:var(--muted);font-size:12px}.request-form{grid-template-columns:160px 160px minmax(180px,.7fr) minmax(240px,1fr);gap:11px;display:grid}.request-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.form-message{color:var(--muted);flex:1;font-size:12px}.privacy-chip,.selected-count,.sync-chip{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;min-height:36px;padding:0 11px;font-size:12px;font-weight:800;display:inline-flex}.privacy-chip{color:var(--violet);background:var(--violet-soft)}.selected-count{color:var(--blue-deep);background:var(--blue-soft)}.selected-count strong{font-size:17px}.sync-chip.ready{color:var(--green);background:var(--green-soft)}.sync-chip.waiting{color:#936600;background:var(--gold-soft)}.filter-bar{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);align-items:end;gap:10px;padding:14px;display:flex;box-shadow:0 6px 18px #1e2f4a0a}.filter-bar label{min-width:150px}.filter-bar label.grow{flex:1;min-width:220px}.student-filters label.grow{flex:0 420px;width:420px;min-width:280px}.student-toolbar{grid-template-columns:minmax(400px,.85fr) minmax(0,1.15fr);align-items:stretch;gap:10px;display:grid}.student-toolbar .filter-bar{box-shadow:none}.input-with-icon{position:relative}.input-with-icon svg{color:var(--muted);position:absolute;bottom:13px;left:12px}.input-with-icon input{padding-left:37px}.student-card{border-radius:var(--radius);background:linear-gradient(110deg, var(--violet-soft), white 65%);border:1px solid #d8d2fb;grid-template-columns:54px auto 1fr;align-items:center;gap:14px;padding:16px 18px;display:grid}.student-number{color:#fff;background:var(--violet);width:52px;height:52px;font-family:var(--font-heading);border-radius:17px;place-items:center;font-size:22px;display:grid}.student-card p,.student-card>div:nth-child(2)>span{color:var(--muted);font-size:11px}.student-card h2{font-size:21px}.selection-chips{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.selection-chips>span{border:1px solid var(--line);background:#fff;border-radius:9px;align-items:center;gap:5px;min-height:31px;padding:5px 9px;font-size:10px;font-weight:600;display:inline-flex}.selection-chips strong{color:#fff;background:var(--blue);border-radius:6px;place-items:center;width:19px;height:19px;display:grid}.daily-range{min-height:42px;color:var(--blue-deep);background:var(--blue-soft);border:1px solid #bfe1f3;border-radius:12px;align-items:center;gap:9px;padding:0 14px;display:inline-flex}.daily-range strong{font-size:15px}.daily-range span{color:var(--gold);font-weight:900}.daily-heading-status{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.daily-card{border:1px solid var(--line);border-radius:var(--radius);width:min(900px,100%);box-shadow:var(--shadow);background:#fff;gap:18px;margin-inline:auto;padding:20px;display:grid}.daily-summary{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.daily-summary>span{min-height:65px;color:var(--blue);background:var(--blue-soft);border-radius:11px;grid-template-columns:25px auto;align-content:center;align-items:center;column-gap:7px;padding:10px 12px;display:grid}.daily-summary>span:nth-child(3){color:#856000;background:var(--gold-soft)}.daily-summary strong{font-family:var(--font-heading);font-size:19px}.daily-summary small{color:var(--muted);grid-column:2;font-size:9px;font-weight:700}.daily-flow{gap:7px;display:grid;position:relative}.daily-flow:before{content:"";background:var(--line);width:2px;position:absolute;top:31px;bottom:31px;left:24px}.daily-flow article{border:1px solid var(--line);background:#fbfcfe;border-radius:11px;grid-template-columns:minmax(120px,1fr) auto 58px;align-items:center;gap:13px;min-height:62px;padding:8px 12px 8px 64px;display:grid;position:relative}.daily-step{z-index:1;color:#fff;background:var(--blue);width:34px;height:34px;font-family:var(--font-heading);border-radius:10px;place-items:center;font-size:14px;font-weight:800;display:grid;position:absolute;left:8px}.daily-flow article>div{display:grid}.daily-flow article small{color:var(--muted);font-size:9px;font-weight:800}.daily-flow article strong{font-family:var(--font-heading);font-size:16px}.daily-flow time{color:var(--ink);font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:17px;font-weight:800;display:inline-flex}.daily-flow time i{color:var(--muted);font-style:normal;font-weight:500}.daily-flow article>em{color:var(--muted);background:var(--surface-soft);text-align:center;border-radius:999px;padding:4px 7px;font-size:10px;font-style:normal;font-weight:800}.daily-flow article.is-lunch{background:var(--gold-soft);border-color:#f0d18a}.daily-flow article.is-lunch .daily-step{color:#704d00;background:var(--gold);font-size:10px}.daily-flow article.is-lunch>em{color:#704d00;background:#fff}.daily-flow article.is-current{border-color:var(--gold);box-shadow:inset 0 0 0 2px var(--gold), 0 8px 22px #e69f0029}.daily-flow article.is-current .daily-step{color:#fff;background:var(--green);box-shadow:0 0 0 5px #16865f1f}.daily-flow article.is-current.is-lunch .daily-step{color:#704d00;background:var(--gold)}.daily-note{color:var(--muted);background:var(--surface-soft);text-align:center;border-radius:10px;padding:10px 12px;font-size:11px}.segmented{border:1px solid var(--line);background:#edf2f7;border-radius:11px;gap:3px;padding:3px;display:flex}.segmented button{min-height:38px;color:var(--muted);background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 11px;font-size:12px;font-weight:700;display:flex}.segmented button.active{color:var(--blue-deep);background:#fff;box-shadow:0 2px 8px #1e2f4a1a}.source-tabs{flex-wrap:wrap;gap:7px;display:flex}.source-tabs button{border:1px solid var(--line);background:#fff;border-radius:10px;min-height:40px;padding:0 14px;font-size:12px;font-weight:700}.source-tabs button.active{color:#fff;background:var(--blue);border-color:var(--blue)}.source-table-title{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:15px 17px;display:flex}.source-table-title svg{color:var(--green)}.source-table-title h2{font-size:18px}.source-table-title p{color:var(--muted);font-size:11px}.source-table-scroll{min-height:410px;max-height:calc(100vh - 315px);padding:16px;overflow:auto}.source-table-scroll table{border-collapse:separate;border-spacing:0;table-layout:fixed;border-top:1px solid var(--line);border-left:1px solid var(--line);width:min(1040px,100%);min-width:920px;margin-inline:auto}.source-table-scroll th,.source-table-scroll td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;vertical-align:middle;min-width:105px;padding:9px 8px;font-size:11px}.desk-capacity-card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;overflow:hidden}.desk-capacity-heading{border-bottom:1px solid var(--line);grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:82px;padding:14px 17px;display:grid}.desk-capacity-heading>span{color:#704d00;background:var(--gold-soft);border-radius:12px;place-items:center;width:42px;height:42px;display:grid}.desk-capacity-heading h2{font-size:21px}.desk-capacity-heading p{color:var(--muted);font-size:11px}.desk-capacity-heading>em{min-height:30px;color:var(--green);background:var(--green-soft);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:0 9px;font-size:10px;font-style:normal;font-weight:800;display:inline-flex}.desk-grade-grid{grid-template-columns:1fr 1fr;gap:14px;padding:16px;display:grid}.desk-grade{border:1px solid var(--line);background:#fbfcfe;border-radius:13px;min-width:0;padding:13px}.desk-grade-title{align-items:center;gap:10px;min-height:46px;margin-bottom:10px;display:flex}.desk-grade-title strong{color:#fff;background:var(--blue);min-width:66px;min-height:34px;font-family:var(--font-heading);border-radius:10px;place-items:center;font-size:15px;display:grid}.desk-grade:nth-child(2) .desk-grade-title strong{background:var(--green)}.desk-grade-title span{color:var(--muted);font-size:10px;font-weight:700}.desk-room-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.desk-room{border:1px solid var(--line);background:#fff;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-content:center;min-width:0;min-height:88px;padding:9px 10px;display:grid}.desk-room>span{min-width:0;color:var(--blue-deep);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:11px;font-weight:800;display:flex;overflow:hidden}.desk-room>strong{color:var(--gold);font-family:var(--font-heading);grid-area:1/2/span 2;align-self:center;font-size:27px;line-height:1}.desk-room>strong small{color:var(--muted);font-family:var(--font-body);margin-left:2px;font-size:10px}.desk-room>em{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:5px;font-size:9px;font-style:normal;overflow:hidden}.desk-note{color:var(--muted);background:var(--surface-soft);border-radius:10px;margin:0 16px 16px;padding:10px 12px;font-size:10px}.desk-note strong{color:var(--ink)}.source-table-scroll th{color:var(--blue-deep);background:var(--blue-soft);font-weight:800}.source-table-scroll td.blank{background:#fafbfd;min-width:36px}.source-cell-lines{gap:2px;line-height:1.35;display:grid}.source-cell-lines strong{font-size:11px}.source-cell-lines>span{color:var(--muted);font-size:9px;font-weight:500}.room-guide-card .source-table-scroll tr>:first-child{width:74px;min-width:74px;font-weight:800}.room-guide-card .source-table-scroll td[class*=tone-]{color:var(--tone);background:var(--tone-soft)}.selection-guide-stack{gap:20px;padding:18px;display:grid}.selection-guide-grade{border:1px solid var(--line);background:#fbfcfe;border-radius:13px;gap:14px;width:min(1120px,100%);margin-inline:auto;padding:16px;display:grid}.guide-grade-title{align-items:center;gap:10px;display:flex}.guide-grade-title>span{color:#fff;background:var(--blue);width:40px;height:40px;font-family:var(--font-heading);border-radius:12px;place-items:center;font-size:20px;font-weight:800;display:grid}.guide-grade-title h3{font-size:19px}.guide-grade-title p{color:var(--muted);font-size:10px}.guide-table-block{gap:7px;display:grid}.guide-table-block h4{color:var(--blue-deep);margin:0;font-size:11px}.guide-table-scroll{padding-bottom:4px;overflow-x:auto}.guide-table-scroll table{border-collapse:separate;border-spacing:0;table-layout:fixed;border-top:1px solid var(--line);border-left:1px solid var(--line);background:#fff;width:100%;min-width:760px}.guide-table-scroll .room-summary-table{min-width:960px}.guide-table-scroll th,.guide-table-scroll td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;vertical-align:middle;min-height:38px;padding:7px 6px;font-size:10px}.guide-table-scroll th{color:var(--blue-deep);background:var(--blue-soft);font-weight:800}.guide-table-scroll tbody tr:nth-child(2n):not(.capacity-row) td{background:#f8fafc}.guide-table-scroll td:first-child{width:60px;font-weight:900}.guide-table-scroll td:first-child[class*=tone-]{color:var(--tone);background:var(--tone-soft)}.guide-table-scroll .capacity-row td{color:#704d00;background:var(--gold-soft);font-weight:800}.movement-summary{min-height:48px;color:var(--blue-deep);background:var(--blue-soft);border-radius:11px;align-items:center;gap:18px;padding:0 15px;display:flex}.movement-summary span{font-weight:700}.movement-summary strong{font-size:20px}.movement-summary .free-summary{color:#8a5f00}.movement-summary small{color:var(--muted);margin-left:auto}.movement-section{gap:12px;display:grid}.section-label{align-items:center;gap:9px;display:flex}.section-label svg{color:var(--blue)}.section-label h2{font-size:19px}.section-label p{color:var(--muted);font-size:11px}.movement-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:10px;display:grid}.movement-card{border:1px solid var(--line);border-left:4px solid var(--blue);background:#fff;border-radius:13px;grid-template-columns:40px 1fr auto;align-items:center;gap:11px;min-height:104px;padding:13px;display:grid;box-shadow:0 5px 16px #1e2f4a0d}.group-badge{color:#fff;background:var(--blue);width:38px;height:38px;font-family:var(--font-heading);border-radius:11px;place-items:center;font-size:18px;font-weight:700;display:grid}.movement-copy{min-width:0}.movement-copy>span{color:var(--blue);font-size:10px;font-weight:800}.movement-copy h3{font-family:var(--font-body);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.movement-copy p{color:var(--muted);font-size:11px}.movement-room{min-height:35px;color:var(--blue-deep);background:var(--blue-soft);white-space:nowrap;border-radius:9px;align-items:center;gap:5px;padding:0 9px;font-size:12px;display:inline-flex}.free-duty-section{border-top:1px dashed var(--line-strong);margin-top:4px;padding-top:18px}.free-card{border-left-color:var(--gold)}.free-card .group-badge,.free-card .movement-room{color:#704d00;background:var(--gold-soft)}.movement-group-list{gap:9px;display:grid;overflow-x:auto}.movement-group-row{border:1px solid var(--line);border-left:4px solid var(--tone,var(--blue));background:var(--tone-soft,white);border-radius:13px;grid-template-columns:44px minmax(0,1fr);align-items:stretch;gap:11px;min-width:940px;min-height:84px;padding:10px;display:grid;box-shadow:0 5px 16px #1e2f4a0d}.movement-group-row>.group-badge{background:var(--tone,var(--blue));align-self:center}.movement-group-courses{grid-template-columns:repeat(8,minmax(0,1fr));gap:7px;min-width:0;display:grid}.movement-course{background:#ffffffd1;border:1px solid #798b9e38;border-radius:10px;grid-template-columns:minmax(0,1fr) 60px;align-content:center;column-gap:5px;min-width:0;min-height:72px;padding:7px 8px;display:grid}.movement-course>span{color:var(--blue-deep);grid-column:1/-1;font-size:9px;font-weight:800}.movement-course>strong{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.25;display:-webkit-box;overflow:hidden}.movement-course>small{color:var(--muted);font-size:9px}.movement-course>em{overflow-wrap:anywhere;width:60px;min-height:36px;color:var(--blue-deep);background:var(--blue-soft);text-align:center;white-space:normal;border-radius:7px;grid-area:2/2/span 2;justify-content:center;align-self:center;align-items:center;gap:3px;padding:3px 5px;font-size:9px;font-style:normal;font-weight:800;line-height:1.12;display:inline-flex}.movement-course>em svg{flex:none}.tone-a{--tone:#0072b2;--tone-soft:#e5f4fb}.tone-b{--tone:#7a5bd2;--tone-soft:#f0ecff}.tone-c{--tone:#16865f;--tone-soft:#e8f8f1}.tone-d{--tone:#d26b42;--tone-soft:#fff0e9}.tone-e{--tone:#bc4b78;--tone-soft:#fdeaf2}.tone-f{--tone:#2f7e9b;--tone-soft:#e8f5f8}.tone-g{--tone:#8b6b12;--tone-soft:#fff6dd}.tone-h{--tone:#53687a;--tone-soft:#edf2f5}.movement-card[class*=tone-],.schedule-cell[class*=tone-]{border-left-color:var(--tone);background:var(--tone-soft)}.movement-card[class*=tone-] .group-badge,.selection-chips>span[class*=tone-] strong{background:var(--tone)}.master-table td[class*=tone-]{box-shadow:inset 4px 0 var(--tone);background:var(--tone-soft)}.master-table tbody td.is-current-slot{box-shadow:inset 0 0 0 3px var(--gold), 0 0 12px #e69f0033!important}.changes-title{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:72px;padding:12px 17px;display:flex}.changes-title h2{font-size:20px}.changes-title p{color:var(--muted);font-size:11px}.change-count{color:#fff;background:var(--coral);border-radius:14px;place-items:center;width:44px;height:44px;font-size:18px;font-weight:800;display:grid}.changes-table{min-width:800px}.changes-card{overflow-x:auto}.changes-row{border-bottom:1px solid var(--line);grid-template-columns:110px 1.4fr 1fr 1fr 1fr;align-items:center;min-height:58px;display:grid}.changes-row.is-selectable{width:100%;color:var(--ink);text-align:left;background:#fff;border-top:0;border-left:4px solid #0000;border-right:0;padding:0}.changes-row.is-selectable:hover{border-left-color:var(--blue);background:var(--blue-soft)}.changes-row.is-selectable.is-selected{border-left-color:var(--gold);color:var(--blue-deep);background:#fff4d8;box-shadow:inset 0 0 0 2px #e69f0075}.changes-row.is-selectable.is-selected .old-room{color:#7a6540}.changes-row.is-selectable.is-selected .new-room{color:#704d00}.changes-row>*{min-width:0;padding:9px 14px}.changes-row>span:first-child{display:grid}.changes-row small{color:var(--muted);font-size:10px}.changes-head{min-height:38px;color:var(--muted);background:#f5f7fa;font-size:11px;font-weight:800}.old-room{color:var(--muted);font-weight:700}.new-room{min-height:32px;color:var(--blue-deep);align-items:center;gap:6px;font-weight:800;display:inline-flex!important}.meeting-layout{grid-template-columns:310px minmax(0,1fr);gap:14px;display:grid}.meeting-presets{border:1px solid var(--line);border-radius:var(--radius);background:#fff;gap:10px;padding:13px 15px;display:grid;box-shadow:0 6px 18px #1e2f4a0a}.meeting-presets>div{grid-template-columns:86px minmax(0,1fr);align-items:start;gap:8px;display:grid}.meeting-presets>div>span{color:var(--muted);padding-top:8px;font-size:11px;font-weight:800}.meeting-presets>div>div{flex-wrap:wrap;gap:6px;display:flex}.meeting-presets button{border:1px solid var(--line);min-height:36px;color:var(--blue-deep);background:var(--blue-soft);border-radius:9px;align-items:center;gap:6px;padding:0 9px;font-size:11px;font-weight:800;display:inline-flex}.meeting-presets button:hover{border-color:var(--blue)}.meeting-presets button small{min-width:20px;color:var(--muted);background:#fff;border-radius:999px;padding:2px 5px;font-size:8px}.meeting-presets button.needs-data{color:#8b6b12;background:var(--gold-soft);opacity:1;cursor:not-allowed}.teacher-picker,.meeting-result{border:1px solid var(--line);border-radius:var(--radius);min-height:540px;box-shadow:var(--shadow);background:#fff;overflow:hidden}.picker-search{border-bottom:1px solid var(--line);padding:12px;display:block;position:relative}.picker-search svg{color:var(--muted);position:absolute;top:26px;left:25px}.picker-search input{padding-left:39px}.teacher-list{grid-template-columns:1fr 1fr;align-content:start;gap:5px;max-height:490px;padding:8px;display:grid;overflow-y:auto}.teacher-check{cursor:pointer;border:1px solid #0000;border-radius:9px;align-items:center;gap:7px;min-height:43px;padding:5px 8px;display:flex;position:relative}.teacher-check:hover{background:var(--surface-soft)}.teacher-check input{opacity:0;pointer-events:none;width:1px;height:1px;min-height:0;position:absolute}.teacher-check>span{border:1px solid var(--line-strong);color:#0000;border-radius:6px;place-items:center;width:21px;height:21px;display:grid}.teacher-check input:checked+span{color:#fff;background:var(--blue);border-color:var(--blue)}.teacher-check strong{font-size:12px}.meeting-result{flex-direction:column;gap:16px;padding:16px;display:flex}.selected-chips{border-bottom:1px solid var(--line);min-height:48px;color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:12px;font-size:12px;display:flex}.selected-chips button{min-height:32px;color:var(--blue-deep);background:var(--blue-soft);border:0;border-radius:999px;align-items:center;gap:5px;padding:0 9px;font-size:11px;font-weight:800;display:inline-flex}.selected-chips button.clear-chip{color:var(--coral);background:var(--coral-soft);margin-left:auto}.meeting-result-title{min-height:64px;color:var(--blue-deep);background:var(--blue-soft);border-radius:12px;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.meeting-result-title p{font-size:11px;font-weight:800}.meeting-result-title h2{font-size:25px}.available-days{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.available-days article{border:1px solid var(--line);border-radius:12px;min-height:300px;overflow:hidden}.available-days h3{color:#fff;background:var(--blue);text-align:center;padding:10px;font-size:15px}.available-days article>div{gap:6px;padding:8px;display:grid}.available-days article span{background:var(--surface-soft);border-radius:9px;place-items:center;min-height:49px;padding:7px;display:grid}.available-days article strong{font-size:12px}.available-days article small{color:var(--muted);font-size:10px}.available-days article em{color:var(--muted);text-align:center;padding:18px 4px;font-size:10px}.meeting-placeholder{color:var(--muted);text-align:center;flex:1;place-content:center;justify-items:center;display:grid}.meeting-placeholder svg{color:var(--blue);margin-bottom:12px}.meeting-placeholder strong{color:var(--ink);font-family:var(--font-heading);font-size:19px}.meeting-placeholder p{margin-top:4px;font-size:12px}.attendance-steps{border:1px solid var(--line);border-radius:var(--radius);background:#fff;grid-template-columns:minmax(160px,.65fr) minmax(260px,1.35fr) minmax(156px,.6fr) auto;gap:12px;padding:14px;display:grid;box-shadow:0 6px 18px #1e2f4a0a}.attendance-steps label{grid-template-columns:34px 1fr;align-items:end;gap:8px;min-width:0;display:grid}.attendance-steps label>span:last-child{gap:4px;min-width:0;display:grid}.attendance-steps small{color:var(--muted);font-size:11px;font-weight:800}.step-number{color:#fff;background:var(--blue);border-radius:9px;place-items:center;width:30px;height:30px;margin-bottom:7px;font-weight:800;display:grid}.attendance-query{white-space:nowrap;align-self:end;min-width:78px;min-height:40px}.attendance-history-bar{border:1px solid var(--line);background:#fff;border-radius:12px;align-items:center;gap:12px;min-height:50px;padding:8px 12px;display:flex}.attendance-history-bar>span{color:var(--blue-deep);flex:none;align-items:center;gap:6px;font-size:11px;font-weight:900;display:inline-flex}.attendance-history-bar>div{align-items:center;gap:6px;min-width:0;display:flex;overflow-x:auto}.attendance-history-bar button,.attendance-history-bar a{border:1px solid var(--line);min-height:32px;color:var(--blue-deep);background:var(--blue-soft);border-radius:9px;flex:none;padding:0 9px;font-size:11px;font-weight:800}.attendance-history-bar button.active{border-color:var(--blue);color:#fff;background:var(--blue)}.attendance-history-bar .attendance-refresh{white-space:nowrap;margin-left:auto}.attendance-history-bar .attendance-sheet-link{white-space:nowrap;justify-content:center;align-items:center;gap:5px;text-decoration:none;display:inline-flex}.attendance-history-bar em{color:var(--muted);font-size:11px;font-style:normal}.register-sheet{padding:22px;overflow:visible}.register-heading{border-bottom:2px solid var(--ink);text-align:center;padding-bottom:17px;position:relative}.register-heading h2{letter-spacing:.08em;font-size:27px}.register-heading p{color:var(--muted);font-size:12px;font-weight:600}.register-school{color:var(--blue-deep);align-items:center;gap:7px;font-weight:800;display:flex;position:absolute;top:4px;left:0}.register-meta{border:1px solid var(--line-strong);border-radius:10px;grid-template-columns:1fr 1.6fr .8fr 1fr .7fr;margin-top:12px;display:grid;overflow:hidden}.register-meta>span{border-right:1px solid var(--line);align-content:center;min-height:55px;padding:8px 10px;display:grid}.register-meta>span:last-child{border-right:0}.register-meta small{color:var(--muted);font-size:10px}.register-meta strong{font-size:13px}.register-toolbar{justify-content:space-between;align-items:center;gap:12px;min-height:66px;padding:8px 0;display:flex}.attendance-counts{flex-wrap:wrap;gap:7px;display:flex}.attendance-counts span{min-height:30px;color:var(--muted);background:var(--surface-soft);border-radius:8px;padding:4px 8px;font-size:10px}.attendance-counts strong{color:var(--ink);font-size:14px}.register-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.register-message{border:1px solid var(--line);min-height:34px;color:var(--muted);background:#f8fafc;border-bottom:0;border-radius:8px 8px 0 0;padding:6px 9px;font-size:11px}.text-button{min-height:34px;color:var(--blue);background:0 0;border:0;padding:0 10px;font-size:11px}.text-button:hover{background:var(--blue-soft)}.text-button.danger{color:var(--coral)}.register-table{border-top:2px solid var(--ink);border-left:1px solid var(--line-strong)}.register-row{grid-template-columns:58px 110px 55px 55px minmax(140px,1fr) 130px;align-items:stretch;min-height:48px;display:grid}.register-row>*{border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);justify-content:center;align-items:center;min-width:0;padding:7px 8px;display:flex}.register-row input,.register-row select{border:0;border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);background:#fbfcfe;border-radius:0;min-height:48px;padding:0 9px}.register-row input{justify-content:flex-start}.register-row select{color:var(--blue-deep);font-weight:700}.register-head{min-height:39px;color:var(--ink);background:#eaf0f5;font-size:11px;font-weight:800}.register-footer{justify-content:space-between;align-items:center;gap:12px;min-height:66px;display:flex}.register-footer>div{flex-wrap:wrap;justify-content:flex-end;gap:7px;display:flex}.empty-state{min-height:130px;color:var(--muted);background:var(--surface);border:1px dashed var(--line-strong);border-radius:var(--radius);place-items:center;font-size:13px;display:grid}.empty-state.compact{min-height:82px}footer{border-top:1px solid var(--line);min-height:66px;color:var(--muted);background:var(--surface);justify-content:space-between;align-items:center;gap:16px;padding:14px 28px;font-size:11px;display:flex}footer>span{color:var(--blue-deep);align-items:center;gap:6px;font-weight:800;display:flex}footer>a{color:var(--blue-deep);font-weight:700}.side-account{gap:7px;display:grid}.account-actions{justify-content:space-between;align-items:center;gap:8px;padding:0 5px;display:flex}.account-actions a,.account-actions button{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;font-size:10px;font-weight:700;text-decoration:none}.account-actions a:hover,.account-actions button:hover{color:var(--blue-deep);text-decoration:underline}.login-policy-link{color:var(--blue-deep);font-size:12px;font-weight:800}.policy-page{background:var(--page);min-height:100dvh;padding:40px 20px 70px}.policy-shell{width:min(900px,100%);margin:0 auto}.policy-back{color:var(--blue-deep);margin-bottom:14px;font-size:13px;font-weight:800;text-decoration:none;display:inline-flex}.policy-card{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:22px;padding:clamp(22px,4vw,42px)}.policy-card h1{margin-bottom:8px;font-size:clamp(27px,4vw,38px)}.policy-lead{color:var(--muted);line-height:1.65}.policy-card section{margin-top:28px}.policy-card h2{margin-bottom:9px;font-size:18px}.policy-card p,.policy-card li{color:#344054;font-size:14px;line-height:1.75}.policy-card ul{margin:0;padding-left:20px}.policy-card a{color:var(--blue-deep)}.policy-effective{border-top:1px solid var(--line);color:var(--muted);margin-top:30px;padding-top:16px;font-size:12px}@media (min-width:901px){.side-nav{flex-direction:column;flex:1;justify-content:space-between;gap:16px;margin-top:14px;display:flex}.side-nav section{gap:4px}.side-nav section>p{padding-bottom:4px}.side-nav button{min-height:46px}.side-account{gap:9px;margin-top:10px}.side-account .side-note{margin-top:0}.is-home-view .main-content{padding-top:14px;padding-bottom:14px}.is-home-view footer{min-height:52px;padding-top:9px;padding-bottom:9px}.is-home-view .home-dashboard-grid{min-height:clamp(340px,100dvh - 520px,460px)}.is-home-view .meal-menu,.is-home-view .school-event-list{flex:1}.is-home-view .meal-menu{grid-template-rows:repeat(4,minmax(36px,1fr))}.is-home-view .school-event-list{grid-auto-rows:minmax(39px,1fr)}.is-home-view .school-event-list article{min-height:0}.is-schedule-view .main-content{padding:10px clamp(14px,1.5vw,24px) 12px}.is-schedule-view footer{display:none}.schedule-page{gap:10px}.schedule-page .page-heading{grid-template-columns:44px minmax(0,1fr) auto;gap:11px;min-height:58px}.schedule-page .heading-icon{border-radius:12px;width:42px;height:42px}.schedule-page .heading-copy h1{font-size:clamp(25px,2.2vw,30px)}.schedule-page .heading-copy>span{font-size:11px}.schedule-page .week-board{width:100%;max-width:none}.schedule-page .board-title{min-height:54px;padding:8px 14px}.schedule-page .board-title h2{font-size:19px}.schedule-page .board-title p{font-size:10px}.schedule-page .week-corner,.schedule-page .day-head{height:37px}.schedule-page .period-head,.schedule-page .schedule-cell{height:var(--week-row-height);min-height:0}.schedule-page .period-head{padding:4px}.schedule-page .period-head strong{width:30px;height:30px;font-size:14px}.schedule-page .period-head span{margin-top:2px;font-size:9px}.schedule-page .schedule-cell{padding:5px 8px;overflow:hidden}.schedule-page .cell-badge-row{min-height:17px}.schedule-page .mini-badge,.schedule-page .warning-badge,.schedule-page .live-badge{padding:1px 5px;font-size:8px}.schedule-page .course-name{margin-top:1px;font-size:16px;line-height:1.18}.schedule-page .cell-meta{margin-top:1px;font-size:10px;line-height:1.2}.schedule-page .room-pill{min-height:20px;margin-top:2px;padding:1px 5px;font-size:9px}.week-page{--week-row-height:clamp(64px, calc((100dvh - 210px) / 7), 84px)}.teacher-page{--week-row-height:clamp(58px, calc((100dvh - 245px) / 7), 78px)}.student-page{--week-row-height:clamp(56px, calc((100dvh - 275px) / 7), 72px)}.teacher-page .workspace-tabs{min-height:46px}.teacher-page .workspace-tabs button{min-height:38px}.teacher-week .course-name{font-size:18px}.teacher-week .schedule-cell,.teacher-week .period-head{min-height:0}.student-page .student-toolbar{min-height:70px}.student-page .filter-bar{gap:7px;padding:8px 10px}.student-page .filter-bar label{min-width:100px}.student-page .student-filters label.grow{flex:1;width:auto;min-width:180px}.student-page .student-card{grid-template-columns:44px auto minmax(0,1fr);gap:9px;min-height:70px;padding:8px 12px}.student-page .student-number{border-radius:13px;width:42px;height:42px;font-size:18px}.student-page .student-card h2{font-size:18px}.student-page .selection-chips{gap:4px;max-height:54px;overflow:hidden}.student-page .selection-chips>span{min-height:25px;padding:3px 6px;font-size:9px}.student-page .selection-chips strong{width:17px;height:17px}.student-page .schedule-cell{justify-content:flex-start;padding:5px 8px 22px;position:relative}.student-page .course-name{text-overflow:ellipsis;white-space:nowrap;width:100%;margin-top:0;font-size:15px;line-height:1.1;overflow:hidden}.student-page .cell-meta{text-overflow:ellipsis;white-space:nowrap;width:100%;margin-top:2px;font-size:9px;line-height:1.1;overflow:hidden}.student-page .cell-badge-row{width:auto;min-height:17px;position:absolute;bottom:3px;left:8px}.student-page .room-pill{min-height:17px;margin:0;padding:1px 5px;font-size:8px;position:absolute;bottom:3px;right:8px}.student-page .room-pill svg{width:12px;height:12px}.student-page .mini-badge,.student-page .warning-badge,.student-page .live-badge{font-size:7px}}@media (min-width:901px) and (max-height:760px){.side-brand{min-height:62px}.side-brand-copy strong{font-size:21px}.side-brand-copy b{font-size:14px}.side-nav{gap:10px;margin-top:10px}.side-nav section{gap:2px}.side-nav section>p{padding-bottom:2px}.side-nav button{min-height:44px}.side-account{gap:6px;margin-top:7px}}.admin-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.admin-summary-grid article{border:1px solid var(--line);background:var(--surface);border-radius:18px;align-content:start;gap:5px;min-height:126px;padding:17px;display:grid;box-shadow:0 8px 20px #1e2f4a0d}.admin-summary-grid article>span{width:38px;height:38px;color:var(--blue);background:var(--blue-soft);border-radius:12px;place-items:center;display:grid}.admin-summary-grid strong{letter-spacing:-.04em;margin-top:4px;font-size:27px}.admin-summary-grid small{color:var(--muted);font-size:12px}.admin-guide-card{background:linear-gradient(135deg,#f7fcff,#fff);border:1px solid #b9ddeb;border-radius:20px;padding:22px;box-shadow:0 10px 24px #1e2f4a0d}.admin-guide-heading{align-items:center;gap:11px;display:flex}.admin-guide-heading>span{width:42px;height:42px;color:var(--blue);background:var(--blue-soft);border-radius:13px;place-items:center;display:grid}.admin-guide-heading p{color:var(--blue);font-size:12px;font-weight:800}.admin-guide-heading h2{letter-spacing:-.03em;margin:2px 0 0;font-size:21px}.admin-guide-card ol{counter-reset:admin-step;gap:10px;margin:19px 0 0;padding:0;list-style:none;display:grid}.admin-guide-card li{border:1px solid var(--line);counter-increment:admin-step;background:#fffc;border-radius:13px;gap:2px;min-height:56px;padding:10px 12px 10px 47px;display:grid;position:relative}.admin-guide-card li:before{content:counter(admin-step);width:23px;height:23px;color:var(--blue-deep);background:#dff3fc;border-radius:8px;place-items:center;font-size:12px;font-weight:900;display:grid;position:absolute;top:13px;left:13px}.admin-guide-card li strong{font-size:13px}.admin-guide-card li span{color:var(--muted);font-size:12px}.admin-guide-card code,.admin-type-guide code{font:800 12px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace}.admin-guide-card li code{color:#075b84;background:#e8f5fb;border-radius:5px;padding:2px 4px}.admin-guide-actions{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;margin-top:15px;font-size:12px;display:flex}.admin-guide-actions .button-primary{color:#fff;border-radius:10px;align-items:center;gap:7px;min-height:42px;padding:0 13px;text-decoration:none;display:inline-flex}.admin-guide-actions b{color:var(--ink)}.admin-type-guide{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.admin-type-guide article{border:1px solid var(--line);background:var(--surface);border-radius:17px;align-content:start;gap:8px;padding:17px;display:grid}.admin-type-guide code{width:max-content;color:var(--blue-deep);background:var(--blue-soft);border-radius:7px;padding:5px 7px}.admin-type-guide strong{font-size:15px}.admin-type-guide span{color:var(--muted);font-size:12px;line-height:1.55}.hours-workspace{border:1px solid var(--line);background:var(--surface);min-height:min(640px,100dvh - 220px);box-shadow:var(--shadow);border-radius:18px;overflow:hidden}.hours-topline{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:12px;min-height:60px;padding:10px 13px;display:flex}.hours-topline>span{color:var(--blue-deep);background:var(--blue-soft);white-space:nowrap;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:800}.hours-search{border:1px solid var(--line-strong);width:min(300px,100%);min-height:38px;color:var(--blue);background:var(--surface-soft);border-radius:11px;align-items:center;gap:7px;padding:0 10px;display:flex}.hours-search input{width:100%;min-height:34px;color:var(--ink);background:0 0;border:0;outline:0;padding:0;font-size:13px}.hours-layout{grid-template-columns:minmax(290px,.8fr) minmax(0,1.65fr);min-height:540px;display:grid}.hours-directory{border-right:1px solid var(--line);background:#f8fafc;grid-template-rows:auto minmax(0,1fr);min-width:0;display:grid}.hours-directory-head,.hours-directory-list>button{grid-template-columns:minmax(0,1fr) repeat(3,34px) 42px;align-items:center;column-gap:5px;display:grid}.hours-directory-head{border-bottom:1px solid var(--line);min-height:44px;color:var(--muted);text-align:center;padding:0 12px;font-size:10px;font-weight:800}.hours-directory-head>span:first-child{text-align:left}.hours-directory-head strong{color:var(--blue-deep);font-size:11px}.hours-directory-list{align-content:start;gap:4px;min-height:0;padding:7px;display:grid;overflow-y:auto}.hours-directory-list>button{min-height:44px;color:var(--muted);text-align:center;background:0 0;border:1px solid #0000;border-radius:10px;padding:0 7px}.hours-directory-list>button:hover{border-color:var(--line);background:#fff}.hours-directory-list>button.active{color:var(--blue-deep);background:#eef9fd;border-color:#a6d6eb;box-shadow:0 4px 11px #1e2f4a0f}.hours-directory-list strong{color:var(--ink);text-align:left;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.hours-directory-list span{font-size:11px}.hours-directory-list b{min-height:26px;color:var(--blue-deep);background:var(--blue-soft);border-radius:8px;place-items:center;font-size:12px;display:grid}.hours-directory-list>button.active b{color:#fff;background:var(--blue)}.hours-empty{color:var(--muted);padding:22px 14px;font-size:13px}.hours-detail{background:#fff;min-width:0}.hours-detail-heading{background:linear-gradient(112deg,#edf9fd,#fff8df 145%);justify-content:space-between;align-items:center;gap:18px;min-height:122px;padding:20px;display:flex}.hours-detail-heading>div:first-child{gap:4px;display:grid}.hours-detail-heading>div:first-child>span{color:var(--blue);font-size:13px;font-weight:800}.hours-detail-heading h2{color:var(--ink);font-family:var(--font-heading);letter-spacing:-.04em;font-size:27px}.hours-detail-heading h2 strong{color:var(--blue);font-size:36px}.hours-grade-total{grid-template-columns:repeat(3,54px);gap:7px;display:grid}.hours-grade-total>span{background:#ffffffc7;border:1px solid #0072b229;border-radius:12px;align-content:center;place-items:center;min-height:57px;padding:7px 4px;display:grid}.hours-grade-total small{color:var(--muted);font-size:9px;font-weight:700}.hours-grade-total strong{color:var(--blue-deep);font-family:var(--font-heading);margin-top:2px;font-size:20px}.hours-detail-table{min-width:0}.hours-detail-row{border-top:1px solid var(--line);min-height:55px;color:var(--muted);grid-template-columns:76px minmax(110px,1.15fr) minmax(130px,1.2fr) 40px minmax(116px,.95fr);align-items:center;gap:9px;padding:0 16px;font-size:12px;display:grid}.hours-detail-row>strong{min-width:0;color:var(--ink);font-family:var(--font-heading);letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.hours-detail-row>b{width:30px;min-height:28px;color:var(--blue-deep);background:var(--blue-soft);border-radius:8px;place-items:center;font-size:13px;display:grid}.hours-detail-head{min-height:39px;color:var(--muted);background:#f8fafc;font-size:10px;font-weight:800}.hours-kind{color:#157653;white-space:nowrap;background:#e8f8f0;border-radius:999px;align-items:center;width:max-content;min-height:24px;padding:3px 7px;font-size:10px;font-style:normal;font-weight:800;display:inline-flex}.hours-kind.is-regular{color:var(--blue-deep);background:var(--blue-soft)}.hours-kind.is-selection{color:#6b4ac3;background:#f0ebff}.hours-kind.is-free{color:#936800;background:var(--gold-soft)}.hours-kind.is-activity{color:#a8502b;background:#fff0e8}.hours-targets{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hours-times{color:var(--blue-deep);font-size:11px;font-weight:700;line-height:1.45}.hours-adjustment-delta{border-radius:999px;width:max-content;margin-top:3px;padding:3px 7px;font-size:10px;font-weight:800}.hours-adjustment-delta.is-plus{color:#176b50;background:#e5f7ee}.hours-adjustment-delta.is-minus{color:#a54d36;background:#fff0e8}.hours-adjustments{border-top:1px solid var(--line);background:#fbfdff}.hours-adjustment-heading{justify-content:space-between;align-items:center;gap:13px;min-height:64px;padding:10px 16px;display:flex}.hours-adjustment-heading>div:first-child{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.hours-adjustment-heading>div:first-child>span{color:var(--blue-deep);font-size:13px;font-weight:800}.hours-adjustment-heading>div:first-child>strong{color:#176b50;background:#e8f8f0;border-radius:999px;padding:4px 7px;font-size:10px}.hours-adjustment-heading>div:first-child>small{color:#966800;background:var(--gold-soft);border-radius:999px;padding:4px 7px;font-size:10px;font-weight:800}.hours-adjustment-actions,.hours-adjustment-footer>div{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.hours-adjustment-actions>*,.hours-adjustment-footer button{border:1px solid var(--line-strong);min-height:34px;color:var(--blue-deep);background:#fff;border-radius:9px;justify-content:center;align-items:center;gap:5px;padding:0 9px;font-size:11px;font-weight:800;text-decoration:none;display:inline-flex}.hours-adjustment-actions .button-primary,.hours-adjustment-footer .button-primary{border-color:var(--blue);color:#fff;background:var(--blue)}.hours-adjustment-actions button:disabled,.hours-adjustment-footer button:disabled{opacity:.58;cursor:wait}.hours-adjustment-editor{gap:7px;padding:0 16px 14px;display:grid}.hours-adjustment-labels,.hours-adjustment-row{grid-template-columns:minmax(92px,1.08fr) 72px minmax(108px,1fr) 84px minmax(120px,1.25fr) 34px;align-items:center;gap:7px;display:grid}.hours-adjustment-labels{color:var(--muted);padding:0 2px;font-size:10px;font-weight:800}.hours-adjustment-row{min-height:43px}.hours-adjustment-row input,.hours-adjustment-row select{border:1px solid var(--line-strong);outline-color:var(--blue);width:100%;min-width:0;min-height:38px;color:var(--ink);background:#fff;border-radius:9px;padding:0 9px;font-size:12px}.hours-delta-input{border:1px solid var(--line-strong);background:#fff;border-radius:9px;align-items:center;gap:3px;min-height:38px;padding:0 8px;display:flex}.hours-delta-input input{text-align:right;border:0;min-width:0;min-height:34px;padding:0}.hours-delta-input span{color:var(--muted);white-space:nowrap;font-size:10px}.hours-adjustment-remove{color:#bd5f46;background:#fff8f5;border:1px solid #f0c9bf;border-radius:9px;place-items:center;width:34px;min-height:34px;padding:0;display:grid}.hours-adjustment-empty{min-height:51px;color:var(--muted);background:#fff;border:1px dashed #c8deea;border-radius:10px;padding:13px;font-size:12px;line-height:1.5}.hours-adjustment-footer{justify-content:space-between;align-items:center;gap:10px;min-height:38px;padding-top:3px;display:flex}.hours-adjustment-footer>button{color:var(--blue);background:var(--blue-soft)}.hours-sync-message{color:var(--muted);margin:0;padding:0 16px 13px;font-size:11px;line-height:1.45}.progress-page{gap:14px;min-width:0;display:grid}.progress-page.is-embedded{padding-top:16px}.progress-setup{background:linear-gradient(135deg,#f4fbff,#fffdf5);border:1px solid #b9ddeb;border-radius:19px;justify-content:center;align-items:center;gap:16px;min-height:240px;padding:28px;display:flex}.progress-setup>span{width:54px;height:54px;color:var(--blue);background:var(--blue-soft);border-radius:17px;place-items:center;display:grid}.progress-setup>div{gap:10px;display:grid}.progress-setup h2{font-family:var(--font-heading);letter-spacing:-.03em;font-size:21px}.progress-setup p{max-width:430px;color:var(--muted);font-size:13px;line-height:1.55}.progress-identity{border:1px solid var(--line);background:#fff;border-radius:11px;gap:2px;min-width:220px;padding:9px 12px;display:grid}.progress-identity span{color:var(--muted);font-size:10px;font-weight:800}.progress-identity strong{color:var(--blue-deep);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.progress-setup label,.progress-toolbar>label{color:var(--muted);gap:4px;font-size:10px;font-weight:800;display:grid}.progress-setup select,.progress-toolbar select{border:1px solid var(--line-strong);min-width:220px;min-height:40px;color:var(--ink);background:#fff;border-radius:10px;padding:0 10px;font-size:13px}.progress-toolbar{border:1px solid var(--line);background:#fff;border-radius:16px;align-items:center;gap:14px;min-height:72px;padding:11px 13px;display:flex;box-shadow:0 7px 18px #1e2f4a0a}.progress-course-state{grid-template-columns:auto 1fr;align-items:baseline;column-gap:5px;min-width:134px;display:grid}.progress-course-state small,.progress-course-state span{color:var(--muted);font-size:9px;font-weight:700}.progress-course-state strong{color:var(--blue-deep);font-size:18px}.progress-course-state span{grid-column:1/-1;margin-top:2px;font-weight:600}.progress-save-readiness{border:1px solid var(--line);background:#f8fafc;border-radius:10px;align-content:center;gap:1px;min-width:174px;min-height:48px;padding:7px 9px;display:grid}.progress-save-readiness>span{color:var(--muted);font-size:9px;font-weight:800}.progress-save-readiness>strong{color:var(--blue-deep);font-size:11px;font-weight:900}.progress-save-readiness>small{color:var(--muted);font-size:9px;font-weight:700}.progress-save-readiness.is-ready{background:#f0fbf5;border-color:#b9e7d1}.progress-save-readiness.is-ready>strong{color:#117a52}.progress-save-readiness.is-preparing,.progress-save-readiness.is-busy{background:#f2f8fd;border-color:#c8ddee}.progress-save-readiness.is-failed{background:#fff7f3;border-color:#f0c8bc}.progress-save-readiness.is-failed>strong{color:#b54a31}.progress-save-readiness button{width:fit-content;min-height:25px;color:var(--blue-deep);background:#e7f4ff;border:0;border-radius:7px;padding:0 7px;font-size:9px;font-weight:800}.progress-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;margin-left:auto;display:flex}.progress-actions>*,.progress-editor>footer>button{border:1px solid var(--line-strong);min-height:36px;color:var(--blue-deep);background:#fff;border-radius:9px;justify-content:center;align-items:center;gap:5px;padding:0 9px;font-size:11px;font-weight:800;text-decoration:none;display:inline-flex}.progress-actions .button-primary{border-color:var(--blue);color:#fff;background:var(--blue)}.progress-actions button:disabled,.progress-editor button:disabled{opacity:.58;cursor:not-allowed}.progress-sheet-open.is-connecting{color:var(--muted);background:#f6f8fa}.progress-workflow{background:linear-gradient(100deg,#f5fbff,#fffdf5);border:1px solid #cfe3ef;border-radius:15px;gap:10px;padding:12px 14px 13px;display:grid}.progress-workflow>header{align-items:baseline;gap:9px;display:flex}.progress-workflow>header strong{color:var(--blue-deep);font-family:var(--font-heading);font-size:15px}.progress-workflow>header span{color:var(--muted);font-size:10px;font-weight:700}.progress-workflow ol{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid;position:relative}.progress-workflow li{z-index:1;grid-template-columns:31px minmax(0,1fr);align-items:start;gap:6px;min-width:0;display:grid;position:relative}.progress-workflow li>span{width:31px;height:31px;color:var(--blue-deep);background:#fff;border:2px solid #b7ddec;border-radius:10px;place-items:center;font-size:12px;font-weight:900;display:grid;box-shadow:0 3px 8px #1e2f4a0f}.progress-workflow li:last-child>span{color:#8d6500;border-color:#eccd72}.progress-workflow li>div{gap:2px;min-width:0;display:grid}.progress-workflow li strong{color:var(--ink);font-size:10px;line-height:1.25}.progress-workflow li small{color:var(--muted);word-break:keep-all;font-size:9px;font-weight:650;line-height:1.35}.progress-target-strip{scrollbar-width:thin;gap:7px;min-width:0;padding:1px 1px 3px;display:flex;overflow-x:auto}.progress-target-card{border:1px solid var(--line);border-top:3px solid var(--progress-tone,var(--blue));text-align:left;min-width:0;min-height:61px;color:var(--ink);background:#fff;border-radius:11px;flex:0 0 160px;grid-template-columns:minmax(0,1fr) auto;align-content:center;padding:7px 10px;display:grid;box-shadow:0 3px 9px #182a4509}.progress-target-card>span{color:var(--muted);font-size:10px;font-weight:800}.progress-target-card strong{color:var(--blue-deep);font-family:var(--font-heading);font-size:18px;line-height:1}.progress-target-card strong i{color:var(--muted);font-family:var(--font-body);font-size:11px;font-style:normal;font-weight:600}.progress-target-card small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;margin-top:3px;font-size:8px;font-weight:700;overflow:hidden}.progress-target-card:hover,.progress-target-card.active{border-color:var(--progress-tone,var(--blue));background:var(--progress-surface,var(--blue-soft));box-shadow:0 6px 16px #0072b21f}.progress-workspace{grid-template-columns:minmax(0,1.8fr) minmax(290px,.82fr);align-items:start;gap:14px;min-width:0;display:grid}.progress-week-card,.progress-lesson-panel{border:1px solid var(--line);min-width:0;box-shadow:var(--shadow);background:#fff;border-radius:18px;overflow:hidden}.progress-week-heading{background:linear-gradient(112deg,#effaff,#fff8df 150%);justify-content:space-between;align-items:center;gap:12px;min-height:62px;padding:10px 14px;display:flex}.progress-week-heading>div{align-items:center;gap:4px;display:flex}.progress-week-heading button{border:1px solid var(--line-strong);width:34px;min-height:34px;color:var(--blue-deep);background:#fff;border-radius:9px;place-items:center;padding:0;display:grid}.progress-week-heading strong{min-width:154px;color:var(--ink);font-family:var(--font-heading);text-align:center;letter-spacing:-.03em;font-size:18px}.progress-date-picker{border:1px solid var(--line-strong);min-height:34px;color:var(--blue-deep);background:#fff;border-radius:9px;align-items:center;gap:4px;padding:0 7px;display:inline-flex}.progress-date-picker>span{color:var(--muted);white-space:nowrap;font-size:9px;font-weight:800}.progress-date-picker input{width:111px;min-width:0;color:var(--ink);font:inherit;background:0 0;border:0;outline:0;font-size:11px}.progress-week-heading .progress-today{width:auto;min-width:42px;color:var(--blue);background:var(--blue-soft);margin-left:4px;padding:0 8px;font-size:11px;font-weight:800}.progress-calendar-state{color:#176b50;background:#e7f7ee;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:800}.progress-calendar-state.is-loading{color:#946800;background:var(--gold-soft)}.progress-calendar-state.is-partial{color:#995a17;background:#fff1d6}.progress-calendar-state.is-failed{color:#a64f38;background:#fff0e8}.progress-day-switcher{background:#fbfdff;border-top:1px solid #0072b21a;gap:5px;padding:8px 12px;display:none}.progress-day-switcher button{border:1px solid var(--line);min-height:32px;color:var(--muted);background:#fff;border-radius:9px;padding:0 10px;font-size:11px;font-weight:800}.progress-day-switcher button.active{border-color:var(--blue);color:var(--blue-deep);background:var(--blue-soft)}.progress-events{background:#fbfdff;border-top:1px solid #0072b21a;flex-wrap:wrap;gap:6px;padding:8px 13px;display:flex}.progress-event-option{min-height:36px;color:var(--muted);cursor:pointer;background:#fff;border:1px solid #d5e3ec;border-radius:9px;grid-template-columns:14px auto;align-items:center;column-gap:5px;padding:5px 8px 5px 7px;display:grid}.progress-event-option input{accent-color:#bf6a32;width:13px;height:13px;margin:0}.progress-event-option span{min-width:0;color:var(--ink);align-items:baseline;gap:4px;font-size:10px;font-weight:800;display:flex}.progress-event-option span b{color:var(--blue);white-space:nowrap;font-size:9px}.progress-event-option small{color:var(--muted);grid-column:2;font-size:8px;font-weight:700}.progress-event-option.is-excluded{background:#fff7f0;border-color:#e7bd9d}.progress-event-option.is-excluded span{color:#965139}.progress-event-option.is-excluded span b{color:#bf6a32}.progress-event-option.is-automatic{color:#8b6500;cursor:default;background:#fff9e9;border-color:#efd891}.progress-event-option.is-automatic input{opacity:.8}.progress-calendar-warning{color:#8c5b1b;background:#fff9eb;border-top:1px solid #f0d49d;margin:0;padding:8px 12px;font-size:10px;font-weight:700;line-height:1.45}.progress-board{min-width:0;overflow:hidden}.progress-board-head,.progress-board-row{grid-template-columns:56px repeat(5,minmax(0,1fr));display:grid}.progress-board.days-1 .progress-board-head,.progress-board.days-1 .progress-board-row{grid-template-columns:56px minmax(0,1fr)}.progress-board-head{border-top:1px solid var(--line);color:#fff;background:#087ab8;min-height:46px}.progress-board-head>span{border-right:1px solid #ffffff36;align-content:center;place-items:center;min-width:0;padding:6px;font-size:12px;font-weight:800;display:grid}.progress-board-head small{opacity:.8;margin-top:2px;font-size:9px;font-weight:600}.progress-board-row>*{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:78px}.progress-board-row:last-child>*{border-bottom:0}.progress-period{background:#f5f8fb;align-content:center;place-items:center;padding:6px 3px;display:grid}.progress-period strong{width:29px;height:29px;color:var(--blue);background:#fff;border-radius:9px;place-items:center;font-size:14px;display:grid;box-shadow:0 2px 7px #1e2f4a12}.progress-period small{color:var(--muted);margin-top:4px;font-size:9px}.progress-board-cell{background:#fff;align-content:stretch;gap:4px;min-width:0;padding:4px;display:grid}.progress-session{border:1px solid var(--progress-border,#bfe1f3);border-left:3px solid var(--progress-tone,var(--blue));min-width:0;min-height:64px;color:var(--ink);background:var(--progress-surface,#f5fbff);border-radius:9px;grid-template-rows:minmax(0,1fr) auto;gap:3px;padding:3px;display:grid}.progress-session:hover,.progress-session.active{border-color:var(--progress-tone,var(--blue));transform:translateY(-1px);box-shadow:0 4px 11px #0072b224}.progress-session.is-assessment{background:#fff9e9;border-left-color:#a97800}.progress-session.is-loss,.progress-session.is-closure{color:#8f4a37;background:#fff2ed;border-left-color:#ca6a51}.progress-session-main{width:100%;min-width:0;color:inherit;text-align:left;background:0 0;border:0;align-content:center;gap:1px;padding:3px 4px 1px;display:grid}.progress-session-main small{color:var(--blue-deep);text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:800;overflow:hidden}.progress-session.is-loss .progress-session-main small,.progress-session.is-closure .progress-session-main small{color:#a3543e}.progress-session-main strong{font-family:var(--font-heading);letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.progress-session-main>span{min-height:2.7em;color:var(--muted);white-space:normal;word-break:keep-all;font-size:10px;font-weight:700;line-height:1.35;overflow:visible}.progress-session-loss,.progress-session-closure{color:#a3543e;background:#ffffffa3;border:1px solid #e4c2b8;border-radius:5px;place-items:center;min-height:21px;padding:0 5px;font-size:9px;font-weight:800;line-height:1;display:grid}.progress-session-loss{cursor:pointer}.progress-session-loss:hover{color:#fff;background:#bf684f}.progress-session.is-loss .progress-session-loss{color:#fff;background:#bf684f;border-color:#bf684f}.progress-session-closure{color:#8e6b10;background:#fffaebcc;border-color:#e8cc8c}.progress-lesson-panel{grid-template-rows:auto auto minmax(0,1fr);height:min(780px,100dvh - 112px);display:grid;position:sticky;top:16px}.progress-lesson-panel>header{justify-content:space-between;align-items:flex-start;gap:8px;padding:13px 13px 9px;display:flex}.progress-lesson-panel header>div:first-child{gap:2px;display:grid}.progress-lesson-panel header span{color:var(--blue);font-size:10px;font-weight:800}.progress-lesson-panel h2{font-family:var(--font-heading);letter-spacing:-.03em;font-size:19px}.progress-lesson-panel>p{color:var(--muted);margin:0;padding:0 13px 10px;font-size:10px;line-height:1.35}.progress-content-mode{border:1px solid var(--line-strong);border-radius:9px;display:flex;overflow:hidden}.progress-content-mode button{border:0;border-left:1px solid var(--line);min-height:31px;color:var(--muted);background:#fff;padding:0 8px;font-size:10px;font-weight:800}.progress-content-mode button:first-child{border-left:0}.progress-content-mode button.active{color:#fff;background:var(--blue)}.progress-content-mode button:disabled{color:#aab6c5;background:#f5f7f9}.progress-lesson-list{border-top:1px solid var(--line);background:#fbfdff;min-height:0;overflow:auto}.progress-lesson-row{border-bottom:1px solid var(--line);background:#fff;grid-template-columns:34px minmax(0,1fr);gap:7px;padding:10px;display:grid}.progress-lesson-row.active{box-shadow:inset 3px 0 var(--blue);background:#eefaff}.progress-lesson-row.is-override{background:#fff9e9;box-shadow:inset 3px 0 #d49a00}.progress-lesson-jump{min-height:48px;color:var(--blue);cursor:pointer;background:0 0;border:0;border-radius:9px;align-content:start;justify-items:center;gap:2px;padding:2px 0;display:grid}.progress-lesson-jump:hover,.progress-lesson-jump:focus-visible{background:var(--blue-soft)}.progress-lesson-jump strong{background:var(--blue-soft);border-radius:9px;place-items:center;width:28px;height:28px;font-size:12px;display:grid}.progress-lesson-jump span,.progress-lesson-row label>span{color:var(--muted);font-size:8px;font-weight:800}.progress-lesson-row label{grid-column:2;gap:3px;min-width:0;display:grid}.progress-lesson-row textarea{border:1px solid var(--line);outline-color:var(--blue);width:100%;min-width:0;color:var(--ink);resize:vertical;background:#fff;border-radius:7px;min-height:45px;padding:6px 7px;font-size:11px;line-height:1.45}.progress-lesson-row .progress-lesson-note{background:#fffdf8;min-height:66px}.progress-lesson-revert{color:#8d6500;background:#fff8df;border:1px solid #e8c66f;border-radius:7px;grid-column:2;justify-self:start;min-height:26px;padding:0 7px;font-size:9px;font-weight:800}.progress-auto-sync{color:var(--muted);margin:-7px 3px -2px;font-size:10px;font-weight:700}.progress-editor{background:#f8fcff;border:1px solid #b9ddeb;border-radius:16px;gap:12px;padding:14px;display:grid}.progress-editor>header{justify-content:space-between;align-items:center;gap:10px;display:flex}.progress-editor>header>div{gap:2px;display:grid}.progress-editor>header span{color:var(--blue);font-size:11px;font-weight:800}.progress-editor h2{font-family:var(--font-heading);letter-spacing:-.03em;font-size:19px}.progress-editor>header>button{color:#b95c45;background:#fff9f6;border:1px solid #f0c9bf;border-radius:8px;align-items:center;gap:4px;min-height:32px;padding:0 8px;font-size:10px;font-weight:800;display:inline-flex}.progress-editor-fields,.progress-adjustment-fields{grid-template-columns:110px minmax(110px,.65fr) minmax(160px,1fr);gap:8px;display:grid}.progress-editor-fields label,.progress-adjustment-fields label{min-width:0;color:var(--muted);gap:4px;font-size:10px;font-weight:800;display:grid}.progress-editor-fields input,.progress-editor-fields select,.progress-adjustment-fields input{border:1px solid var(--line-strong);outline-color:var(--blue);width:100%;min-width:0;min-height:39px;color:var(--ink);background:#fff;border-radius:9px;padding:0 9px;font-size:12px}.progress-adjustment-fields{background:#fff;border:1px solid #d7e6ef;border-radius:11px;padding:10px}.progress-adjustment-fields>div{align-content:center;gap:2px;display:grid}.progress-adjustment-fields>div span,.progress-adjustment-fields>div small{color:var(--muted);font-size:10px;font-weight:700}.progress-adjustment-fields>div strong{color:var(--blue-deep);font-family:var(--font-heading);font-size:18px}.progress-editor>footer{color:var(--muted);justify-content:space-between;align-items:center;gap:10px;font-size:11px;display:flex}.progress-editor>footer>button{min-width:138px}.progress-empty-select{min-height:68px;color:var(--muted);background:#fbfdff;border:1px dashed #c8deea;border-radius:14px;padding:17px;font-size:12px}.progress-sync-message{color:var(--muted);margin:-3px 4px 0;font-size:11px;line-height:1.45}.tone-0{--progress-tone:#087ab8;--progress-border:#b9ddeb;--progress-surface:#effaff}.tone-1{--progress-tone:#0e8b68;--progress-border:#bfe9dc;--progress-surface:#effbf6}.tone-2{--progress-tone:#8a5cd6;--progress-border:#dfd0fc;--progress-surface:#f7f2ff}.tone-3{--progress-tone:#d26532;--progress-border:#f2cfbf;--progress-surface:#fff5ef}.tone-4{--progress-tone:#9a7400;--progress-border:#efdfac;--progress-surface:#fff9e8}.tone-5{--progress-tone:#397e9a;--progress-border:#c8e2ec;--progress-surface:#f0f9fc}.tone-6{--progress-tone:#bd4e7b;--progress-border:#f3cadb;--progress-surface:#fff3f7}.tone-7{--progress-tone:#5d6f87;--progress-border:#d6dfe8;--progress-surface:#f5f8fa}@media (min-width:901px){.teacher-page .hours-workspace{margin-right:104px}.hours-detail-row{min-height:62px}.hours-times{white-space:normal}}@media (max-width:1050px){.site-shell{grid-template-columns:204px minmax(0,1fr)}.roster-workspace{grid-template-columns:260px minmax(0,1fr)}.request-form{grid-template-columns:repeat(2,1fr)}.meeting-layout{grid-template-columns:260px minmax(0,1fr)}.available-days{grid-template-columns:repeat(3,1fr)}.attendance-steps{grid-template-columns:1fr 1.6fr}.attendance-steps label:last-of-type{grid-column:1/2}.attendance-query{grid-column:2/3}.register-sheet{overflow-x:auto}.register-table{min-width:850px}.register-meta{min-width:760px}.home-dashboard-grid{grid-template-columns:1fr 1.15fr}.meal-menu{grid-template-columns:1fr 1fr}.home-shortcuts{grid-template-columns:repeat(4,1fr)}.hours-layout{grid-template-columns:minmax(265px,.78fr) minmax(0,1.45fr)}.hours-detail-row{grid-template-columns:68px minmax(96px,1fr) minmax(100px,1fr) 36px minmax(92px,.8fr);gap:6px;padding-inline:11px}.hours-adjustment-heading,.hours-adjustment-editor,.hours-sync-message{padding-inline:11px}.hours-adjustment-labels,.hours-adjustment-row{grid-template-columns:minmax(80px,1.05fr) 66px minmax(85px,.9fr) 77px minmax(100px,1.1fr) 34px;gap:5px}.progress-toolbar{flex-wrap:wrap;align-items:flex-start}.progress-actions{margin-left:0}.progress-workflow ol{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:900px){.site-shell{display:block}.side-rail{display:none}.my-teaching-widget{top:auto;right:12px;bottom:max(12px, env(safe-area-inset-bottom));grid-template-columns:1fr;width:min(380px,100vw - 24px);transform:translateY(calc(100% - 54px))}.my-teaching-widget:hover{transform:translateY(calc(100% - 54px))}.my-teaching-widget:focus-within,.my-teaching-widget.is-open{transform:translateY(0)}.teacher-widget-toggle{border:1px solid #b8ddeb;border-radius:15px 15px 0 0;flex-direction:row;justify-content:flex-start;gap:9px;min-height:54px;padding:7px 13px}.teacher-widget-toggle>span{text-align:left;align-items:baseline;gap:7px;min-width:0;display:flex}.teacher-widget-toggle strong{writing-mode:horizontal-tb}.teacher-widget-toggle small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;display:block;overflow:hidden}.teacher-widget-toggle:hover{color:var(--blue-deep);background:#f7fcff}.teacher-widget-panel{border-radius:15px 15px 0 0;min-height:0;padding:14px}.mobile-topbar{z-index:50;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff7;justify-content:space-between;align-items:center;gap:12px;min-height:62px;padding:7px 11px;display:flex;position:sticky;top:0;box-shadow:0 5px 16px #1e2f4a0f}.mobile-brand{text-align:left;background:0 0;border:0;border-radius:12px;align-items:center;gap:9px;min-height:48px;padding:3px 6px;display:flex}.mobile-brand .brand-mark{border-radius:12px 12px 12px 5px;width:39px;height:39px}.mobile-brand>span:last-child{line-height:1.18;display:grid}.mobile-brand strong{font-family:var(--font-heading);font-size:17px}.mobile-brand small{color:var(--blue);font-size:11px;font-weight:800}.mobile-menu-button{border:1px solid var(--line);width:46px;min-height:46px;color:var(--blue-deep);background:var(--surface-soft);border-radius:13px;place-items:center;padding:0;display:grid}.mobile-nav-backdrop{z-index:48;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#17203352;border:0;min-height:0;display:block;position:fixed;inset:62px 0 0}.main-nav{z-index:49;background:#fff;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:8px;min-height:0;max-height:calc(100dvh - 62px);padding:12px;position:fixed;top:62px;left:0;right:0;overflow-y:auto;box-shadow:0 18px 35px #1e2f4a2e}.main-nav.is-open{display:grid}.main-nav button{border-color:var(--line);justify-content:flex-start;min-width:0;min-height:56px;padding:7px 10px}.main-nav button>span{text-align:left}.main-nav strong{font-size:13px}.main-nav small{font-size:10px}.mobile-account{border-top:1px solid var(--line);color:var(--muted);grid-column:1/-1;gap:5px;padding:10px 4px 2px;font-size:10px;display:grid}.mobile-account>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mobile-account .account-actions{justify-content:flex-start;padding:0}.roster-workspace{grid-template-columns:250px minmax(0,1fr)}.student-toolbar{grid-template-columns:1fr}}@media (max-width:720px){.mobile-topbar{min-height:60px}.main-nav{max-height:calc(100dvh - 60px);padding:10px;top:60px}.main-nav button{gap:8px;min-width:0;min-height:54px;padding:7px 9px}.main-nav button>span{text-align:left}.main-nav button svg{flex:none;display:block}.main-nav strong{font-size:13px}.main-nav small{font-size:10px}.mobile-nav-backdrop{inset:60px 0 0}.main-content{padding:12px 10px 28px}.mobile-current{display:none}select,input{font-size:16px}.home-hero{flex-direction:column;align-items:flex-start;min-height:138px;padding:20px}.home-hero h1{font-size:32px}.home-hero-actions{justify-content:space-between;width:100%}.install-app-button,.install-app-installed{min-height:44px}.home-dashboard-grid{grid-template-columns:1fr;min-height:0}.home-card{min-height:0;padding:17px}.home-card>header h2{font-size:22px}.meal-menu{grid-template-columns:1fr}.meal-menu li{min-height:42px;padding:9px 11px;font-size:13px}.school-event-list article{grid-template-columns:82px minmax(0,1fr)}.school-event-list time{font-size:12px}.school-event-list strong{font-size:14px}.school-event-list article span{white-space:normal;font-size:11px}.school-event-list em{grid-column:2;justify-self:start}.home-shortcuts,.home-external-links{grid-template-columns:1fr 1fr}.home-shortcuts>*,.home-external-links>*{grid-template-columns:34px minmax(0,1fr) 15px;min-height:66px}.home-shortcuts>*>span,.home-external-links>*>span{width:34px;height:34px}.home-shortcuts strong,.home-external-links strong{white-space:normal;font-size:12px}.home-shortcuts>*>svg{display:none}.admin-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.admin-summary-grid article{min-height:108px;padding:13px}.admin-guide-card{border-radius:16px;padding:15px}.admin-guide-card li{padding:10px 10px 10px 43px}.admin-guide-card li:before{left:10px}.admin-guide-actions{flex-direction:column;align-items:stretch}.admin-guide-actions .button-primary{justify-content:center}.admin-type-guide{grid-template-columns:1fr;gap:9px}.approval-modal-backdrop{padding:10px}.approval-modal{border-radius:17px;max-height:calc(100dvh - 20px)}.approval-modal-heading{min-height:64px;padding:11px 13px}.approval-modal-heading>div>span{border-radius:11px;width:37px;height:37px}.approval-modal-heading h2{font-size:20px}.approval-modal-body{gap:11px;padding:11px}.install-guide-body{gap:12px;padding:14px;font-size:12px}.install-guide-grid{grid-template-columns:1fr;gap:9px}.install-guide-grid>section{padding:12px}.approval-group>header{min-height:39px;padding-inline:10px}.approval-group h3{font-size:15px}.approval-rule-head,.approval-rule-row{grid-template-columns:92px minmax(0,1fr)}.approval-rule-head>span{padding-inline:8px}.approval-rule-row>strong{padding:8px;font-size:10px;line-height:1.35}.approval-flow-stack{padding:7px 8px}.approval-flow{gap:5px}.approval-step{min-height:25px;padding:3px 6px;font-size:9px}.approval-step strong{font-size:9px}.approval-step small{font-size:8px}.phonebook-modal-body{padding:11px}.phonebook-lock{min-height:270px;padding:8px 5px}.phonebook-directories{grid-template-columns:1fr;gap:11px}.phonebook-directory>h3{min-height:40px;padding:10px;font-size:14px}.phonebook-row{grid-template-columns:minmax(0,1fr) 55px minmax(76px,.92fr);font-size:11px}.phonebook-row>*{padding:8px 7px}.page-heading{grid-template-columns:43px 1fr;align-items:start}.heading-icon{border-radius:12px;width:40px;height:40px}.heading-copy h1{font-size:23px}.heading-copy>span{margin-top:4px;font-size:11px;line-height:1.45;display:block}.heading-action{grid-column:1/-1;width:100%}.heading-action>*{width:100%}.entity-switcher{grid-template-columns:42px minmax(0,1fr) 42px;width:100%}.compact-control select,.compact-control.wide select{min-width:0}.heading-filters{width:100%}.legend-row{flex-wrap:wrap;align-items:flex-start;gap:7px 12px}.legend-row small{width:100%;margin:0}.master-scroll{max-height:calc(100vh - 330px)}.board-title{align-items:flex-start}.board-title h2{font-size:19px}.source-chip,.week-scroll{display:none}.mobile-week-board{display:block}.mobile-day-tabs{border-bottom:1px solid var(--line);background:#f7fafc;grid-template-columns:repeat(5,1fr);gap:5px;padding:8px;display:grid}.mobile-day-tabs button{border:1px solid var(--line);min-width:0;min-height:42px;color:var(--muted);background:#fff;border-radius:10px;padding:0;font-size:13px;font-weight:800}.mobile-day-tabs button.active{border-color:var(--blue);color:#fff;background:var(--blue);box-shadow:0 5px 12px #0072b22e}.mobile-day-list{border-top:1px solid var(--line)}.mobile-day-row{grid-template-columns:58px minmax(0,1fr);display:grid}.mobile-period{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f4f7fa;align-content:center;justify-items:center;min-height:88px;padding:8px 4px;display:grid}.mobile-period strong{width:34px;height:34px;color:var(--blue);background:#fff;border-radius:10px;place-items:center;font-size:16px;display:grid;box-shadow:0 2px 8px #1e2f4a12}.mobile-period span{color:var(--muted);margin-top:4px;font-size:10px}.mobile-day-row .schedule-cell,.teacher-week .mobile-day-row .schedule-cell{justify-content:center;min-height:88px;padding:10px 12px;overflow:visible}.mobile-day-row .course-name,.teacher-week .mobile-day-row .course-name{white-space:normal;font-size:17px;line-height:1.25}.mobile-day-row .cell-meta{margin-top:2px;font-size:12px}.mobile-day-row .room-pill{min-height:25px;margin-top:5px;padding:3px 7px;font-size:11px}.mobile-day-row .mini-badge,.mobile-day-row .warning-badge,.mobile-day-row .live-badge{font-size:9px}.filter-bar{flex-direction:column;align-items:stretch}.filter-bar label,.filter-bar label.grow{min-width:0}.student-filters label.grow{flex:none;width:100%}.student-card{grid-template-columns:48px 1fr}.student-number{width:46px;height:46px}.selection-chips{grid-column:1/-1;justify-content:flex-start}.segmented button{flex:1}.workspace-tabs{z-index:15;position:sticky;top:60px}.workspace-tabs button{flex:1;padding:0 8px;font-size:11px}.roster-workspace{grid-template-columns:1fr;min-height:0}.assignment-panel{max-height:none}.assignment-summary{min-height:68px}.assignment-list{min-height:0;max-height:250px}.roster-heading{padding:14px}.roster-heading h2{font-size:21px}.roster-heading span{margin-top:4px;line-height:1.4;display:block}.roster-count{border-radius:17px;flex:none;width:58px;height:58px;font-size:24px}.roster-meta{grid-template-columns:1fr 1fr}.roster-meta>span:nth-child(2){border-right:0}.roster-meta>span:nth-child(-n+2){border-bottom:1px solid var(--line)}.roster-table{min-width:0;min-height:360px;max-height:none}.roster-row{grid-template-columns:58px 58px minmax(0,1fr)}.roster-row>*{padding-inline:7px}.roster-sheet{overflow-x:hidden}.roster-missing{min-width:0;min-height:300px}.request-form{grid-template-columns:1fr}.request-actions{flex-direction:column;align-items:stretch}.request-actions .form-message{min-height:18px}.movement-grid{grid-template-columns:1fr}.movement-card{grid-template-columns:38px minmax(0,1fr)}.movement-room{grid-column:2;justify-self:start}.movement-group-row{grid-template-columns:38px minmax(0,1fr);min-width:0}.movement-group-courses{grid-template-columns:1fr}.selection-guide-stack{padding:10px}.selection-guide-grade{padding:11px}.desk-capacity-heading{grid-template-columns:42px 1fr}.desk-capacity-heading>em{grid-column:1/-1;justify-self:start}.desk-grade-grid{grid-template-columns:1fr;padding:10px}.desk-room-grid{grid-template-columns:1fr}.daily-card{padding:13px}.daily-summary{grid-template-columns:1fr}.daily-flow article{grid-template-columns:1fr auto;gap:5px 9px;padding-left:54px}.daily-step{left:6px}.daily-flow time{font-size:14px}.daily-flow article>em{grid-column:2}.meeting-layout{grid-template-columns:1fr}.meeting-presets{gap:7px;padding:10px}.meeting-presets>div{grid-template-columns:1fr;gap:3px}.meeting-presets>div>span{padding:0 2px}.meeting-presets>div>div{scrollbar-width:thin;flex-wrap:nowrap;padding-bottom:3px;overflow-x:auto}.meeting-presets button{flex:none}.teacher-picker,.meeting-result{min-height:auto}.teacher-list{max-height:250px}.meeting-result.is-empty{display:none}.available-days{grid-template-columns:repeat(2,1fr)}.available-days article{min-height:180px}.attendance-steps{grid-template-columns:1fr}.attendance-steps label:last-of-type,.attendance-query{grid-column:auto}.attendance-query{width:100%}.attendance-history-bar{flex-direction:column;align-items:flex-start;gap:5px}.attendance-history-bar>div{width:100%}.attendance-history-bar .attendance-refresh{margin-left:0}.attendance-history-bar .attendance-refresh,.attendance-history-bar .attendance-sheet-link{min-height:44px}.register-sheet{padding:14px}.register-heading{text-align:left}.register-heading h2{letter-spacing:.02em;font-size:22px}.register-school{margin-bottom:4px;position:static}.register-toolbar{flex-direction:column;align-items:flex-start;padding:8px 0}.register-actions{justify-content:flex-start;width:100%}.register-footer{flex-direction:column;align-items:stretch;padding-top:10px}.register-footer>div{justify-content:flex-start}.hours-workspace{border-radius:15px;min-height:0}.hours-topline{min-height:55px;padding:8px 10px}.hours-layout{grid-template-columns:1fr;min-height:0}.hours-directory{border-right:0;border-bottom:1px solid var(--line);max-height:294px}.hours-directory-list{max-height:245px}.hours-detail-heading{min-height:105px;padding:14px}.hours-detail-heading h2{font-size:23px}.hours-detail-heading h2 strong{font-size:31px}.hours-grade-total{grid-template-columns:repeat(3,47px);gap:4px}.hours-grade-total>span{min-height:51px}.hours-detail-row{grid-template-columns:62px minmax(0,1fr) 34px;gap:5px 8px;min-height:0;padding:10px 12px}.hours-detail-head{grid-template-columns:62px minmax(0,1fr) 34px;min-height:36px;padding-block:0}.hours-detail-head>span:nth-child(3),.hours-detail-head>span:nth-child(5){display:none}.hours-detail-row>strong{font-size:14px}.hours-detail-row>b{grid-area:1/3/span 2;align-self:center}.hours-detail-row .hours-targets,.hours-detail-row .hours-times{white-space:normal;grid-column:2;overflow:visible}.hours-detail-row .hours-targets{color:var(--muted);font-size:11px}.hours-detail-row .hours-times{font-size:10px}.hours-adjustment-heading{flex-direction:column;align-items:flex-start;padding:12px}.hours-adjustment-actions{justify-content:flex-start;width:100%}.hours-adjustment-actions>*{flex:1;min-width:0}.hours-adjustment-editor{padding:0 12px 12px}.hours-adjustment-labels{display:none}.hours-adjustment-row{border:1px solid var(--line);background:#fff;border-radius:11px;grid-template-columns:minmax(0,1fr) 82px 38px;gap:7px;min-height:0;padding:9px}.hours-adjustment-row>input:first-child{grid-column:1/3}.hours-adjustment-row>select{grid-area:1/3}.hours-adjustment-row>input:nth-child(3){grid-area:2/1/auto/2}.hours-delta-input{grid-area:2/2}.hours-adjustment-row>input:nth-child(5){grid-area:3/1/auto/3}.hours-adjustment-remove{grid-area:2/3/span 2;align-self:stretch}.hours-adjustment-footer{flex-direction:column;align-items:stretch}.hours-adjustment-footer>button,.hours-adjustment-footer>div{width:100%}.hours-adjustment-footer>button{justify-content:center}.hours-adjustment-footer>div>button{flex:1}.hours-sync-message{padding:0 12px 12px}.progress-page.is-embedded{padding-top:10px}.progress-setup{flex-direction:column;align-items:flex-start;min-height:220px;padding:21px}.progress-toolbar{flex-direction:column;align-items:stretch;gap:10px;padding:11px}.progress-toolbar>label select{width:100%;min-width:0}.progress-course-state{background:var(--surface-soft);border-radius:10px;min-width:0;padding:9px 10px}.progress-save-readiness{width:100%;min-width:0}.progress-actions{grid-template-columns:1fr 1fr;width:100%;display:grid}.progress-actions>*{min-width:0}.progress-workflow{padding:12px}.progress-workflow>header{flex-direction:column;align-items:flex-start;gap:2px}.progress-workflow ol{grid-template-columns:1fr;gap:7px}.progress-workflow li{grid-template-columns:31px minmax(0,1fr)}.progress-workflow li small{font-size:10px}.progress-target-strip{gap:6px}.progress-target-card{flex-basis:145px;min-height:60px;padding:7px 9px}.progress-target-card strong{font-size:18px}.progress-workspace{grid-template-columns:1fr}.progress-week-heading{flex-direction:column;align-items:flex-start;padding:9px 10px}.progress-week-heading>div{flex-wrap:wrap;justify-content:space-between;width:100%}.progress-week-heading strong{flex:1;min-width:0;font-size:16px}.progress-date-picker{order:5;justify-content:flex-end;width:100%}.progress-date-picker>span{display:none}.progress-date-picker input{width:132px}.progress-calendar-state{align-self:flex-start}.progress-day-switcher{display:flex;overflow-x:auto}.progress-day-switcher button{flex:none}.progress-events{padding-inline:10px}.progress-board-head,.progress-board-row{grid-template-columns:42px repeat(5,minmax(0,1fr));min-width:0}.progress-board.days-1 .progress-board-head,.progress-board.days-1 .progress-board-row{grid-template-columns:48px minmax(0,1fr)}.progress-board-head>span{min-width:0;padding-inline:2px;font-size:10px}.progress-board-head small{font-size:8px}.progress-board-row>*{min-height:72px}.progress-period{padding-inline:1px}.progress-period strong{width:26px;height:26px;font-size:12px}.progress-period small{font-size:8px}.progress-board-cell{gap:3px;padding:3px}.progress-session{border-left-width:2px;min-height:61px;padding:3px}.progress-session-main{padding:3px 3px 1px}.progress-session-main small{font-size:8px}.progress-session-main strong{white-space:normal;font-size:9px;line-height:1.2}.progress-session-main>span{font-size:9px}.progress-session-loss,.progress-session-closure{min-height:20px;font-size:8px}.progress-lesson-panel{height:auto;position:static}.progress-lesson-list{max-height:none}.progress-lesson-row textarea{min-height:52px;font-size:12px}.progress-lesson-row .progress-lesson-note{min-height:72px}.progress-editor{padding:12px}.progress-editor>header{align-items:flex-start}.progress-editor h2{font-size:17px}.progress-editor-fields,.progress-adjustment-fields{grid-template-columns:1fr}.progress-adjustment-fields>div{min-height:48px}.progress-editor>footer{flex-direction:column;align-items:stretch}.progress-editor>footer>button{width:100%}footer{flex-direction:column;align-items:flex-start;padding:14px}.footer-links{flex-direction:column;align-items:flex-start;gap:5px}}@media print{@page{size:A4 portrait;margin:10mm}body{background:#fff}.side-rail,.main-nav,.page-heading,.attendance-steps,footer,.no-print{display:none!important}.site-shell{display:block}.main-content{padding:0}.page-stack{display:block}.register-sheet{box-shadow:none;border:0;padding:0}.register-table,.register-meta{min-width:0}.register-row{grid-template-columns:38px 82px 38px 38px 1fr 70px;min-height:30px;font-size:9px}.register-row input,.register-row select{border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);appearance:none;background:#fff;min-height:30px;padding:0 3px;font-size:9px}.register-heading h2{font-size:22px}}@keyframes live-dot-pulse{0%,to{opacity:.45;transform:scale(.82)}50%{opacity:1;transform:scale(1.28)}}@keyframes current-class-glow{0%,to{filter:saturate()}50%{filter:saturate(1.12)brightness(1.02)}}@keyframes home-loading{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes phonebook-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.live-status.is-class .live-dot,.schedule-cell.is-current,.phonebook-spinner{animation:none}}
