:root{--red:#b51f27;--deep:#83171d;--ink:#302423;--muted:#776966;--paper:#f7f3ec;--line:#e6dbd2;--green:#267050;--shadow:0 22px 60px rgba(68,35,31,.1)}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font-family:"Microsoft YaHei",system-ui,sans-serif;line-height:1.65}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2{font-family:"STSong","SimSun",serif}.overline{margin:0 0 7px;color:var(--red);font-size:12px;font-weight:800;letter-spacing:.14em}.portal-home{min-height:100vh;background:radial-gradient(circle at 15% 20%,rgba(181,31,39,.1),transparent 28%),var(--paper)}.portal-topbar{height:78px;padding:0 max(22px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(181,31,39,.14);background:rgba(255,253,248,.94);position:sticky;top:0;z-index:10}.portal-topbar img{display:block;width:305px;max-height:52px;object-fit:contain}.portal-topbar>span,.demo{font-size:11px;color:var(--deep);border:1px solid #e2c5c0;border-radius:99px;padding:5px 11px}.portal-topbar>div{display:flex;align-items:center;gap:12px;font-size:13px}.portal-landing{width:min(1180px,calc(100% - 40px));min-height:calc(100vh - 135px);margin:auto;display:grid;grid-template-columns:1.1fr .9fr;gap:78px;align-items:center;padding:60px 0}.landing-copy h1{font-size:clamp(48px,6vw,76px);line-height:1.13;margin:10px 0 25px}.landing-copy h1 em{font-style:normal;color:var(--red)}.landing-copy>p:not(.overline){max-width:620px;color:var(--night-ink,#665957);font-size:17px;line-height:2}.tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:30px}.tags span{border:1px solid #ddccc4;border-radius:99px;padding:5px 12px;font-size:13px}.entry-panel{background:rgba(255,255,255,.94);border-top:5px solid var(--red);padding:38px;box-shadow:var(--shadow)}.entry-panel h2{font-size:31px;margin:0 0 4px}.entry-panel>p:not(.overline){color:var(--muted);font-size:14px}.role-card{display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:14px;margin-top:13px;padding:16px;border:1px solid var(--line);background:var(--night-surface,#fff);transition:.18s}.role-card:hover{transform:translateY(-2px);border-color:#d6aaa7}.role-card i{width:45px;height:45px;display:grid;place-items:center;background:var(--night-surface,#f7e4e2);color:var(--red);font:700 21px "STSong","SimSun",serif}.role-card.teacher i{background:var(--night-surface,#eee8da);color:#86652f}.role-card b,.role-card small{display:block}.role-card b{font-size:18px}.role-card small{color:var(--muted)}.role-card strong{color:var(--red);font-size:21px}.sign-entry,.admin-entry{display:block;text-align:center;margin-top:17px;color:var(--red);font-size:13px;font-weight:700}.admin-entry{margin-top:10px;color:var(--night-ink,#9d908c);font-size:11px;font-weight:400}.portal-home>footer{text-align:center;color:var(--night-ink,#958783);font-size:12px;padding:18px}
.shell{width:min(1280px,calc(100% - 30px));margin:26px auto 60px;display:grid;grid-template-columns:205px minmax(0,1fr);gap:22px}.shell>nav{align-self:start;position:sticky;top:100px;background:var(--night-surface,#fff);border:1px solid var(--line);padding:18px 11px;box-shadow:0 10px 30px rgba(55,33,29,.05)}nav>b{display:block;padding:0 11px 11px;color:var(--red)}nav button,nav>a{width:100%;display:flex;justify-content:space-between;border:0;background:transparent;padding:11px;color:var(--night-ink,#665957);text-align:left;border-radius:3px}nav button.active,nav button:hover,nav a:hover{background:var(--night-surface,#f7e7e4);color:var(--deep);font-weight:700}nav i{font-style:normal;color:#fff;background:var(--red);border-radius:99px;padding:0 6px;font-size:10px}.content{min-width:0}.view{display:none}.view.active{display:block}.view>h1{font-size:38px;margin:8px 0 20px}.profile{min-height:200px;background:linear-gradient(125deg,#80171d,#b7272e);color:#fff;padding:32px 36px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}.teacher-profile{background:linear-gradient(125deg,#6d2924,#a44b35)}.profile h1{font-size:35px;margin:0 0 22px}.profile .overline{color:#f1c8c3}.profile button,.upload button{border:1px solid rgba(255,255,255,.7);background:var(--night-surface,#fff);color:var(--deep);padding:9px 13px}.details{display:flex;gap:24px;flex-wrap:wrap}.details small{display:block;color:#f0d0cc}.grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;margin-top:18px}.panel{background:var(--night-surface,#fff);border:1px solid var(--line);padding:24px;box-shadow:0 10px 30px rgba(55,33,29,.05)}.panel h2{margin-top:0}.lessons{display:grid;gap:9px}.lessons article{display:grid;grid-template-columns:70px 1fr auto;gap:10px;padding:12px;background:var(--night-surface,#faf7f3);border-left:3px solid var(--red)}.lessons time{color:var(--red);font-weight:700}.lessons small{color:var(--muted)}.tasks button,.tasks>a{display:block;width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;padding:13px 0;text-align:left}.tasks b,.tasks small{display:block}.tasks small{color:var(--muted)}.table{overflow:auto;margin-top:15px}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{padding:12px;border-bottom:1px solid var(--line);text-align:center}thead th{background:var(--night-surface,#f6e7e3);color:var(--deep)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:17px}.stats article{background:var(--night-surface,#fff);border:1px solid var(--line);border-top:4px solid var(--red);padding:17px}.stats span,.stats small,.stats b{display:block}.stats span,.stats small{color:var(--muted)}.stats b{font-size:29px}.bars p{margin:17px 0}.bars b{display:block}.bars i{display:block;height:10px;background:var(--night-surface,#eee5de);border-radius:99px}.bars em{display:block;height:100%;background:var(--red);border-radius:99px}.notice{display:grid;gap:12px}.notice article{background:var(--night-surface,#fff);border:1px solid var(--line);border-left:4px solid var(--red);padding:20px}.notice p{color:var(--muted);margin:6px 0}.notice small{color:var(--night-ink,#9b8d88)}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-bottom:16px}.steps span{padding:10px;background:var(--night-surface,#e9e1da);text-align:center;font-size:12px}.steps .active{background:var(--red);color:#fff}.upload{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.upload p{margin:0;color:var(--muted)}.upload button{border-color:#d9bbb6}.form{display:grid;gap:15px;max-width:760px}.form label,.modal label{display:grid;gap:5px;font-weight:700}.form input,.form select,.form textarea,.modal input,.modal textarea,.view>select{width:100%;border:1px solid #d8c8c1;background:var(--night-surface,#fff);padding:10px}.view>select{width:210px}.form textarea,.modal textarea{min-height:110px}.primary{border:0;background:var(--red);color:#fff;padding:10px 15px}.modal{position:fixed;inset:0;z-index:50;background:rgba(35,21,20,.68);display:grid;place-items:center;padding:15px}.modal[hidden]{display:none}.modal>section{width:min(550px,100%);background:var(--night-surface,#fffdf8);border-top:5px solid var(--red);padding:28px;position:relative}.modal>section>button{position:absolute;right:15px;top:12px;border:0;background:transparent;font-size:24px}.modal label{margin-top:11px}.modal footer{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.modal footer button{padding:9px 13px}
@media(max-width:850px){.portal-landing{grid-template-columns:1fr;gap:35px}.shell{grid-template-columns:1fr}.shell>nav{position:static;display:flex;overflow:auto}nav>b{display:none}nav button,nav>a{width:auto;white-space:nowrap}.grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}}
@media(max-width:540px){.portal-topbar{height:66px;padding:0 14px}.portal-topbar img{width:205px}.demo{display:none}.portal-landing{width:calc(100% - 26px);padding:38px 0}.landing-copy h1{font-size:41px}.entry-panel{padding:28px 20px}.shell{width:calc(100% - 18px);margin-top:10px}.profile{padding:24px 19px;align-items:flex-start}.profile h1{font-size:27px}.profile button{position:absolute;right:16px}.details{display:grid;grid-template-columns:1fr 1fr;gap:12px}.panel{padding:19px 15px}.steps{grid-template-columns:1fr 1fr}.upload{align-items:flex-start;flex-direction:column;gap:10px}}

.login-book{position:relative;padding-top:58px}.bookmark-tabs{position:absolute;top:0;left:22px;display:flex;gap:8px;z-index:2}.bookmark-tabs button{width:112px;height:70px;padding:9px 13px 20px;border:0;background:#d9cbc2;color:var(--night-ink,#6f605b);font-weight:800;clip-path:polygon(0 0,100% 0,100% 100%,50% 82%,0 100%);transition:.18s}.bookmark-tabs button.active{height:78px;background:var(--red);color:#fff;transform:translateY(-8px)}.book-page{position:relative;background:rgba(255,255,255,.96);border:1px solid var(--line);border-top:5px solid var(--red);padding:38px;box-shadow:var(--shadow)}.book-page:before{content:"";position:absolute;inset:11px;border:1px solid rgba(181,31,39,.08);pointer-events:none}.login-view{display:none;position:relative;z-index:1}.login-view.active{display:block}.login-view h2{font-size:31px;margin:0 0 3px}.login-view>p{margin:0 0 21px;color:var(--muted);font-size:14px}.login-view label{display:grid;gap:6px;margin-top:14px}.login-view label span{font-size:13px;font-weight:700}.login-view input{width:100%;padding:11px 13px;border:1px solid #d8c7c0;background:var(--night-surface,#fff);outline:none}.login-view input:focus{border-color:var(--red);box-shadow:0 0 0 3px rgba(181,31,39,.08)}.login-submit{width:100%;margin-top:20px;padding:12px;border:0;background:var(--red);color:#fff;font-weight:800}.entry-links{position:relative;z-index:1;display:flex;justify-content:center;gap:18px;margin-top:17px;font-size:12px}.entry-links>a:first-child{color:var(--red);font-weight:700}.entry-links .admin-entry{margin:0;color:var(--night-ink,#9d908c);font-weight:400}
@media(max-width:540px){.login-book{padding-top:52px}.bookmark-tabs{left:12px}.bookmark-tabs button{width:96px;height:64px}.bookmark-tabs button.active{height:70px}.book-page{padding:29px 20px}.entry-links{flex-direction:column;gap:6px}}

/* Refined paper-bookmark login switch */
.login-book{padding-top:49px}.bookmark-tabs{top:0;left:30px;gap:7px;align-items:end}.bookmark-tabs button{position:relative;width:132px;height:50px;padding:0 18px 0 42px;clip-path:none;border:1px solid #ddcec6;border-bottom-color:#cdbbb2;border-radius:10px 10px 0 0;background:var(--night-surface,#eadfda);color:var(--night-ink,#776660);text-align:left;font-size:14px;letter-spacing:.03em;box-shadow:0 -5px 14px rgba(60,36,32,.035);transition:background .18s,color .18s,transform .18s}.bookmark-tabs button:before{position:absolute;left:16px;top:14px;color:var(--night-ink,#a28f87);font:700 11px Georgia;letter-spacing:.05em}.bookmark-tabs button:first-child:before{content:"01"}.bookmark-tabs button:last-child:before{content:"02"}.bookmark-tabs button:after{content:"";position:absolute;left:0;top:8px;bottom:8px;width:4px;border-radius:0 4px 4px 0;background:#c7b6ae}.bookmark-tabs button:hover{background:var(--night-surface,#f4ece7);color:var(--deep);transform:translateY(-2px)}.bookmark-tabs button.active{height:50px;transform:none;border-color:#dbc7bf;border-bottom-color:#fff;background:var(--night-surface,#fff);color:var(--deep);box-shadow:0 -8px 20px rgba(70,39,34,.06)}.bookmark-tabs button.active:before{color:var(--red)}.bookmark-tabs button.active:after{background:var(--red)}.book-page{border:1px solid #dbc7bf;border-top:1px solid #dbc7bf;border-radius:0 8px 8px 8px;padding:37px 40px 34px;background:linear-gradient(90deg,rgba(181,31,39,.035) 0,rgba(181,31,39,.035) 1px,transparent 1px) 28px 0/1px 100% no-repeat,var(--night-surface,#fff);box-shadow:0 24px 60px rgba(65,36,31,.11)}.book-page:before{inset:12px;border-color:rgba(181,31,39,.055);border-radius:2px}.login-submit{border-radius:3px;box-shadow:0 8px 18px rgba(181,31,39,.16);transition:.18s}.login-submit:hover{background:var(--deep);transform:translateY(-1px)}
@media(max-width:540px){.login-book{padding-top:45px}.bookmark-tabs{left:14px;gap:5px}.bookmark-tabs button{width:111px;height:46px;padding-left:36px;font-size:13px}.bookmark-tabs button.active{height:46px}.bookmark-tabs button:before{left:12px;top:13px}.book-page{padding:30px 22px 27px;border-radius:0 6px 6px 6px;background:var(--night-surface,#fff)}}

/* Minimal identity switch */
.login-book{padding-top:0}.bookmark-tabs{position:relative;inset:auto;display:grid;grid-template-columns:1fr 1fr;gap:4px;width:100%;margin:0 0 14px;padding:5px;border:1px solid #e3d7d0;border-radius:14px;background:rgba(226,215,207,.5);box-shadow:inset 0 1px 3px rgba(65,38,33,.045)}.bookmark-tabs button,.bookmark-tabs button.active{width:auto;height:46px;padding:0;border:0;border-radius:10px;background:transparent;color:var(--night-ink,#83736e);text-align:center;font-size:14px;letter-spacing:.06em;box-shadow:none;transform:none}.bookmark-tabs button:before,.bookmark-tabs button:after{display:none}.bookmark-tabs button:hover{background:rgba(255,255,255,.55);color:var(--deep);transform:none}.bookmark-tabs button.active{background:var(--night-surface,#fff);color:var(--deep);box-shadow:0 5px 15px rgba(64,36,31,.08)}.bookmark-tabs button.active:after{display:block;content:"";position:absolute;left:50%;top:auto;bottom:6px;width:20px;height:2px;transform:translateX(-50%);border-radius:99px;background:var(--red)}.book-page{border:0;border-radius:16px;padding:40px 42px 36px;background:var(--night-surface,#fff);box-shadow:0 26px 70px rgba(65,36,31,.105)}.book-page:before{inset:0;border:0;border-top:3px solid var(--red);border-radius:16px 16px 0 0}.login-view h2{font-size:33px;letter-spacing:.025em}.login-view>p{margin-bottom:24px}.login-view label{margin-top:16px}.login-view input{padding:12px 14px;border-color:#ddd1cb;border-radius:7px;background:var(--night-surface,#fdfcf9)}.login-submit{border-radius:8px;padding:13px;margin-top:22px}.entry-links{padding-top:2px}
@media(max-width:540px){.login-book{padding-top:0}.bookmark-tabs{left:auto;gap:3px;margin-bottom:11px;border-radius:12px}.bookmark-tabs button,.bookmark-tabs button.active{width:auto;height:44px;padding:0}.book-page{padding:31px 22px 28px;border-radius:13px}.book-page:before{border-radius:13px 13px 0 0}}
.password-field{position:relative;display:block}.login-view .password-field input{padding-right:64px}.password-field button{position:absolute;right:8px;top:50%;transform:translateY(-50%);min-width:46px;border:0;border-left:1px solid #e6dad3;background:transparent;color:var(--red);font-size:12px;font-weight:700}.password-field button:hover{color:var(--deep)}.password-field button:focus-visible{outline:2px solid rgba(181,31,39,.28);outline-offset:2px;border-radius:3px}
.auth-pending .shell{visibility:hidden}.workspace-auth-loading{min-height:calc(100vh - 78px);display:grid;place-content:center;justify-items:center;gap:8px;text-align:center;color:var(--deep)}.workspace-auth-loading span{width:34px;height:34px;border:3px solid #ead7d1;border-top-color:var(--red);border-radius:50%;animation:workspace-auth-spin .75s linear infinite}.workspace-auth-loading b{font-size:18px}.workspace-auth-loading small{color:var(--muted)}@keyframes workspace-auth-spin{to{transform:rotate(360deg)}}body:not(.auth-pending)>.workspace-auth-loading{display:none}.student-personal-details{margin-top:18px}.student-personal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.student-personal-grid span{padding:12px;background:var(--night-surface,#faf7f3)}.student-personal-grid small,.student-personal-grid b{display:block}.student-personal-grid small{color:var(--muted);margin-bottom:4px}.guardian-edit-row{display:grid;grid-template-columns:110px 1fr 1.2fr;gap:8px;margin-top:9px}.guardian-edit-row input{min-width:0}.forced-password-modal{z-index:90}.forced-password-modal>section{width:min(480px,100%)}.form-error{color:var(--red);background:var(--night-surface,#fae9e7);padding:9px}.form-success{color:#216e39;background:var(--night-surface,#e7f5eb);padding:9px}@media(max-width:760px){.student-personal-grid{grid-template-columns:1fr 1fr}.guardian-edit-row{grid-template-columns:1fr}}
.homeroom-sensitive{min-width:250px;text-align:left}.homeroom-sensitive summary{cursor:pointer;color:var(--red);font-weight:700}.homeroom-sensitive p{margin:7px 0;white-space:normal}
.notice-manage-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:18px;align-items:start}.sent-head{display:flex;align-items:start;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:12px}.sent-head h2{margin:0}.sent-head>span{color:var(--muted);font-size:12px}.sent-notices article{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;padding:17px 0;border-bottom:1px solid var(--line)}.sent-notices article:last-child{border-bottom:0}.sent-notices article b{display:block}.sent-notices article p{margin:4px 0;color:var(--muted);font-size:13px}.sent-notices article small{color:var(--night-ink,#978984)}.withdraw-btn{border:1px solid #ddb9b5;background:var(--night-surface,#fff);color:var(--red);border-radius:4px;padding:7px 11px;font-size:12px}.withdraw-btn:hover{background:var(--night-surface,#faecea)}.sent-notices article.withdrawn{opacity:.58}.withdraw-btn:disabled{border-color:#d7ccc6;color:var(--night-ink,#837873);background:var(--night-surface,#eee9e4);cursor:default}@media(max-width:850px){.notice-manage-grid{grid-template-columns:1fr}}
.received-notices{margin-bottom:18px}.received-notices article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:17px 4px;border-bottom:1px solid var(--line)}.received-notices article:last-child{border-bottom:0}.received-notices article.unread{border-left:4px solid var(--red);padding-left:14px;background:var(--night-surface,#fff9f7)}.received-notices article b{display:block}.received-notices article p{margin:3px 0;color:var(--muted);font-size:13px}.received-notices article small{color:var(--night-ink,#7f716d)}.read-btn{border:1px solid #d7b5b3;background:var(--night-surface,#fff);color:var(--red);padding:7px 11px;font-size:12px}.read-state{color:var(--muted);font-size:12px}.received-notices article:not(.unread){opacity:.72}
.read-detail-btn{display:block;margin-top:7px;padding:0;border:0;background:transparent;color:var(--red);font-size:12px;font-weight:700}.read-detail-modal{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;padding:20px;background:rgba(35,25,23,.58)}.read-detail-dialog{position:relative;width:min(760px,100%);max-height:86vh;overflow:auto;background:var(--night-surface,#fffdf9);padding:26px;border-top:5px solid var(--red);box-shadow:0 24px 70px rgba(32,20,18,.3)}.read-detail-dialog>button{position:absolute;right:15px;top:12px;border:0;background:transparent;font-size:24px}.read-detail-dialog h2{margin:0 45px 4px 0}.read-detail-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.read-detail-summary span{padding:12px;background:var(--night-surface,#f6eee9);color:var(--muted)}.read-detail-summary b{display:block;color:var(--deep);font-size:22px}.read-detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px}.read-detail-columns section{border:1px solid var(--line);padding:14px}.read-detail-columns h3{margin:0 0 10px}.read-person-list{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:330px;overflow:auto}.read-person-list span{padding:6px 8px;background:var(--night-surface,#faf7f3);font-size:12px}.read-detail-columns .unread-list span{background:var(--night-surface,#fff0ee);color:#8f2529}@media(max-width:600px){.read-detail-columns{grid-template-columns:1fr}.read-person-list{grid-template-columns:1fr}}
.topbar-calendar{color:var(--night-ink,#6f5c58);font-size:12px;font-weight:700;white-space:nowrap}.read-detail-search{display:grid;gap:5px;margin:0 0 14px;color:var(--muted);font-size:12px}.read-detail-search input{width:100%;padding:9px 11px;border:1px solid var(--line);background:var(--night-surface,#fff)}.read-person-list span{display:grid}.read-person-list span b{font-size:12px}.read-person-list span small{color:var(--muted);font-size:10px}.read-person-list [hidden]{display:none}@media(max-width:700px){.topbar-calendar{font-size:10px}.portal-topbar>div{gap:7px}}@media(max-width:540px){.portal-topbar img{width:155px}.topbar-calendar{max-width:150px;white-space:normal;line-height:1.3;text-align:right}.read-detail-summary{grid-template-columns:repeat(3,1fr)}.read-detail-summary span{padding:9px;font-size:11px}.read-detail-summary b{font-size:18px}}
.admin-login-stage{min-height:calc(100vh - 78px);display:grid;place-items:center;padding:24px}.admin-demo-login{width:min(460px,100%);background:var(--night-surface,#fff);border-top:5px solid var(--red);padding:36px;box-shadow:var(--shadow)}.admin-demo-login h1{font-size:34px;margin:0}.admin-demo-login>p:not(.overline){color:var(--muted)}.admin-demo-login form{display:grid;gap:15px}.admin-demo-login label{display:grid;gap:6px;font-weight:700}.admin-demo-login input{width:100%;padding:11px;border:1px solid #d8c8c1}.admin-demo-login>small{display:block;text-align:center;margin-top:14px;color:var(--night-ink,#9a8d88)}.admin-demo-error{background:var(--night-surface,#fae9e7);color:var(--deep);padding:9px;font-size:13px}.admin-profile{background:linear-gradient(125deg,#542521,#8c302c)}.admin-stats{margin-top:18px}.approval-list article{display:flex;justify-content:space-between;gap:18px;padding:18px 0;border-bottom:1px solid var(--line)}.approval-list article:first-child{padding-top:0}.approval-list article:last-child{border-bottom:0;padding-bottom:0}.approval-list p{margin:5px 0;color:var(--muted)}.approval-list small{color:var(--night-ink,#978984)}.approval-list article>div:last-child{display:flex;align-items:center;gap:8px}.approval-list button{border:1px solid #d8c8c1;background:var(--night-surface,#fff);padding:8px 12px}.approval-list button.primary{border-color:var(--red);background:var(--red);color:#fff}@media(max-width:600px){.approval-list article{display:grid}.approval-list article>div:last-child{justify-content:flex-end}}
.audit-panel{padding-top:20px}.audit-filters{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr)) 1.5fr auto;gap:10px;align-items:end}.audit-filters label{display:grid;gap:4px;color:var(--muted);font-size:11px}.audit-filters input,.audit-filters select{width:100%;min-height:39px;border:1px solid var(--line);padding:7px 9px;background:var(--night-surface,#fff)}.audit-filters button{min-height:39px}.audit-summary{margin:16px 0 8px;color:var(--muted);font-size:12px}.audit-table{max-height:620px}.audit-table thead{position:sticky;top:0;z-index:2}.audit-table table{font-size:12px}.audit-table td:first-child{white-space:nowrap}.audit-actor b,.audit-actor small{display:block}.audit-actor small{color:var(--muted);font-size:10px}.audit-action{display:inline-block;padding:3px 8px;background:var(--night-surface,#f6e8e5);color:var(--deep);font-weight:700}.audit-details{max-width:340px;color:var(--muted)}.audit-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:15px}.audit-pagination button{border:1px solid var(--line);background:var(--night-surface,#fff);padding:7px 12px}.audit-pagination button:disabled{cursor:not-allowed;opacity:.45}.audit-pagination span{font-size:12px;color:var(--muted)}@media(max-width:980px){.audit-filters{grid-template-columns:repeat(2,1fr)}.audit-keyword{grid-column:span 2}}@media(max-width:560px){.audit-filters{grid-template-columns:1fr}.audit-keyword{grid-column:auto}.audit-table{max-height:none}}
.roster-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:8px 0 16px}.roster-heading h1{margin:0;font-size:38px}.roster-actions{display:flex;gap:8px}.roster-actions button,.roster-import{display:inline-flex;align-items:center;border:1px solid #d6aaa7;padding:9px 13px;font-weight:700}.roster-import{background:var(--night-surface,#fff);color:var(--red);cursor:pointer}.roster-import input{display:none}.roster-tabs{display:flex;gap:5px;margin-bottom:12px;padding:4px;background:var(--night-surface,#eae0da)}.roster-tabs button{flex:1;border:0;background:transparent;padding:11px;color:var(--muted);font-weight:700}.roster-tabs button.active{background:var(--night-surface,#fff);color:var(--red);box-shadow:0 3px 12px rgba(55,33,29,.08)}.roster-tabs span{display:inline-grid;place-items:center;min-width:22px;height:20px;margin-left:5px;border-radius:99px;background:var(--night-surface,#eee5df);font-size:10px}.roster-tabs button.active span{background:var(--night-surface,#f7e3e1)}.roster-pane[hidden]{display:none}.roster-tools{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.roster-tools label{display:grid;gap:4px;color:var(--muted);font-size:12px}.roster-tools input,.roster-tools select{min-width:210px;border:1px solid var(--line);padding:8px 10px;background:var(--night-surface,#fff)}.roster-tools>span{margin-left:auto;max-width:420px;color:var(--muted);font-size:11px}.schedule-binding-note{padding:8px 11px;border-left:3px solid #9a7138;background:var(--night-surface,#fff8ea)}.roster-table{max-height:610px}.roster-table table{font-size:12px}.roster-table thead{position:sticky;top:0;z-index:2}.account-status{display:inline-block;border-radius:99px;padding:3px 8px;font-size:10px;font-weight:700}.account-status.normal{background:var(--night-surface,#e3f2e9);color:var(--green)}.account-status.disabled{background:var(--night-surface,#eee8e4);color:var(--muted)}.schedule-bound{color:#6e5130}.roster-row-actions{display:flex;justify-content:center;gap:5px}.roster-row-actions button{border:1px solid #d8c8c1;background:var(--night-surface,#fff);padding:5px 7px;font-size:11px}.roster-row-actions button.danger{color:var(--red);border-color:#dfbab6}.roster-feedback{position:sticky;bottom:14px;margin:12px 0 0;padding:10px 14px;background:var(--night-surface,#e3f2e9);color:var(--green);box-shadow:0 8px 25px rgba(30,80,55,.15)}.roster-modal{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:20px;background:rgba(35,25,23,.6)}.roster-dialog{position:relative;display:grid;gap:12px;width:min(590px,100%);max-height:90vh;overflow:auto;background:var(--night-surface,#fffdf9);border-top:5px solid var(--red);padding:28px}.roster-dialog>button{position:absolute;right:15px;top:10px;border:0;background:transparent;font-size:24px}.roster-dialog h2{margin:0}.roster-dialog label{display:grid;gap:4px;font-weight:700}.roster-dialog input,.roster-dialog select{width:100%;border:1px solid var(--line);padding:9px 10px;background:var(--night-surface,#fff)}.roster-dialog input:disabled{background:var(--night-surface,#eeeae6);color:var(--night-ink,#746965)}.roster-dialog .homeroom-check{display:flex;align-items:center;gap:8px}.roster-dialog .homeroom-check input{width:auto}.binding-help{margin:0;padding:9px 11px;background:var(--night-surface,#fff7e8);color:#795c30;font-size:11px}.roster-dialog footer{display:flex;justify-content:flex-end;gap:8px;margin-top:5px}.roster-dialog footer button{padding:8px 12px;border:1px solid var(--line);background:var(--night-surface,#fff)}.roster-dialog footer .primary{border-color:var(--red);background:var(--red);color:#fff}@media(max-width:760px){.roster-heading{display:block}.roster-actions{margin-top:12px}.roster-tools{display:grid}.roster-tools>span{margin-left:0}.roster-row-actions{min-width:190px}}
[hidden]{display:none!important}
.admin-notice-grid{display:grid;grid-template-columns:minmax(340px,.88fr) minmax(430px,1.12fr);gap:18px;align-items:start}.admin-notice-form{max-width:none}.recipient-picker{border:1px solid var(--line);background:var(--night-surface,#faf7f3);padding:14px}.recipient-picker>p{margin:0;color:var(--muted);font-size:13px}.recipient-picker>span{display:block;font-weight:700;margin-bottom:8px}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.choice-grid label{display:flex!important;grid-template-columns:none!important;align-items:center;gap:6px!important;background:var(--night-surface,#fff);border:1px solid var(--line);padding:8px;font-weight:400!important}.choice-grid input{width:auto!important}.form-feedback{margin:0;background:var(--night-surface,#e7f3eb);color:var(--green);padding:10px 12px}.admin-notice-history{min-width:0}.admin-notice-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:17px 0;border-bottom:1px solid var(--line)}.admin-notice-list article:last-child{border-bottom:0}.admin-notice-list b{display:block}.admin-notice-list p{margin:4px 0;color:var(--muted);font-size:13px}.admin-notice-list small{color:var(--night-ink,#978984)}.admin-notice-list article.withdrawn{opacity:.56}.notice-admin-actions{display:flex;align-items:center;gap:8px}.notice-delete-btn{border-color:#bd2026;background:#bd2026;color:#fff}.notice-delete-btn:hover{background:#95171c;color:#fff}@media(max-width:950px){.admin-notice-grid{grid-template-columns:1fr}}@media(max-width:500px){.choice-grid{grid-template-columns:1fr}.notice-admin-actions{align-items:stretch;flex-direction:column}}
.admin-notice-title{display:block;width:fit-content;max-width:100%;padding:0;border:0;border-bottom:1px solid transparent;background:transparent;color:var(--deep);font:inherit;font-weight:800;text-align:left;cursor:pointer}.admin-notice-title:hover,.admin-notice-title:focus-visible{border-bottom-color:var(--red);color:var(--red);outline:none}.admin-notice-detail-modal{position:fixed;inset:0;z-index:1200;display:grid;padding:22px;background:rgba(35,25,23,.58);place-items:center}.admin-notice-detail-modal>section{position:relative;width:min(780px,100%);max-height:88vh;overflow:auto;box-sizing:border-box;border-top:5px solid var(--red);background:var(--night-surface,#fffdf9);padding:30px 32px 34px;box-shadow:0 28px 80px rgba(32,20,18,.38)}.admin-notice-detail-modal .read-detail-close{position:absolute;right:18px;top:16px;width:38px;height:38px;border:1px solid var(--line);border-radius:50%;background:var(--night-surface,#fff);color:var(--deep);font-size:24px;cursor:pointer}.admin-notice-detail-modal h2{margin:0 52px 18px 0;font-size:28px}.admin-notice-detail-meta{display:grid;grid-template-columns:1fr 1.45fr .8fr;gap:8px;margin-bottom:18px}.admin-notice-detail-meta span{padding:11px 13px;background:var(--night-surface,#f6eee9)}.admin-notice-detail-meta small,.admin-notice-detail-meta b{display:block}.admin-notice-detail-meta small{color:var(--muted);font-size:12px}.admin-notice-detail-meta b{margin-top:3px;font-size:14px}.admin-notice-detail-content{min-height:150px;padding:20px;border:1px solid var(--line);background:var(--night-surface,#fff);white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.85}@media(max-width:600px){.admin-notice-detail-modal{padding:10px}.admin-notice-detail-modal>section{padding:24px 16px}.admin-notice-detail-modal h2{font-size:23px}.admin-notice-detail-meta{grid-template-columns:1fr}.admin-notice-detail-content{padding:15px}}
.recipient-tree{margin:0;border:1px solid var(--line);background:var(--night-surface,#faf7f3);padding:8px 12px 12px}.recipient-tree legend{padding:0 6px;font-weight:700}.tree-node{border-top:1px solid #eadfd7}.recipient-tree>.tree-node:first-of-type{border-top:0}.tree-row{min-height:43px;display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:6px;align-items:center}.tree-row label,.tree-children>label{display:flex!important;grid-template-columns:none!important;align-items:center;gap:7px!important;font-weight:500!important}.tree-row input,.tree-children input{width:auto!important}.tree-row small{color:var(--muted)}.tree-toggle{width:24px;height:24px;display:grid;place-items:center;border:1px solid #d8c8c1;background:var(--night-surface,#fff);color:var(--deep);padding:0;line-height:1;font-size:17px}.tree-children{margin-left:12px;padding:2px 0 8px 22px;border-left:1px solid #dbc8bf}.tree-children>label{min-height:34px;padding:4px 7px}.tree-children>label:hover{background:var(--night-surface,#f4ebe5)}.class-tree>.tree-node{border-top:1px dashed #ded0c7}.class-tree>.tree-node:first-child{border-top:0}
.tree-search{display:block!important;margin:2px 0 10px;font-weight:500!important}.tree-search span{display:block;margin-bottom:5px;color:var(--muted);font-size:12px}.tree-search input{width:100%!important;border:1px solid #d8c8c1!important;background:var(--night-surface,#fff)!important;padding:9px 11px!important}.tree-search input:focus{outline:2px solid rgba(181,31,39,.16);border-color:var(--red)!important}
.recipient-tree [data-recipient-label]{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto!important}.recipient-tree [data-recipient-label] small{color:var(--muted);font-weight:400}.recipient-selection-summary{margin:10px 0 0;padding:9px 11px;border-radius:8px;background:var(--night-surface,#fff);color:var(--muted);font-size:12px}.class-recipient-node[hidden],[data-recipient-label][hidden]{display:none!important}
.teacher-position{display:block;margin-top:3px;color:var(--red);font-weight:700;font-size:11px}
.homeroom-group>.tree-row{background:var(--night-surface,#f7eee2);margin:0 -6px;padding:0 6px}.homeroom-group>.tree-row label{color:#714a27;font-weight:700!important}
.attachment-picker{border:1px dashed #d5b9af;background:var(--night-surface,#fffcf7);padding:13px}.attachment-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.attachment-head b,.attachment-head small{display:block}.attachment-head small{margin-top:2px;color:var(--muted);font-size:11px}.attachment-add{display:inline-flex!important;grid-template-columns:none!important;align-items:center;white-space:nowrap;border:1px solid #d7aaa5;background:var(--night-surface,#fff);padding:7px 10px;color:var(--red);font-size:12px;cursor:pointer}.attachment-add input{position:absolute!important;width:1px!important;height:1px!important;opacity:0;pointer-events:none}.attachment-list{display:grid;gap:7px;margin-top:10px}.attachment-list>p{margin:0;color:var(--night-ink,#9c8e88);font-size:12px}.attachment-list article{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;background:var(--night-surface,#f6efe9);padding:8px 9px}.attachment-list article>span{border-radius:3px;background:#ead8cf;color:var(--deep);padding:3px 6px;font-size:10px}.attachment-list article b,.attachment-list article small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-list article b{font-family:inherit;font-size:12px}.attachment-list article small{color:var(--muted);font-size:10px}.attachment-list article button{border:0;background:transparent;color:var(--red);font-size:11px}@media(max-width:520px){.attachment-head{align-items:flex-start;flex-direction:column}}
.notice-attachments{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.notice-attachments button{display:flex;align-items:center;gap:8px;max-width:100%;border:1px solid #dfd0c7;background:var(--night-surface,#fffaf6);padding:7px 9px;color:var(--deep)}.notice-attachments button b{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.notice-attachments button small{color:var(--muted);font-size:10px}
.notice-manage-grid [data-real-teacher-notice]>button[type="submit"],.admin-notice-grid [data-real-admin-notice]>button[type="submit"]{display:block;min-width:150px;margin:20px 0 0 auto;padding:12px 24px}.real-attachment-picker+button[type="submit"]{border-top-left-radius:4px;border-top-right-radius:4px}@media(max-width:520px){.notice-manage-grid [data-real-teacher-notice]>button[type="submit"],.admin-notice-grid [data-real-admin-notice]>button[type="submit"]{width:100%;margin-top:16px}}
.score-title{display:flex;align-items:end;justify-content:space-between;margin:8px 0 20px}.score-title h1{font-size:38px;margin:0}.score-title>span{color:var(--muted);font-size:13px}.score-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:18px;align-items:start}.exam-list{display:grid;background:var(--night-surface,#fff);border:1px solid var(--line);padding:8px;box-shadow:0 10px 30px rgba(55,33,29,.05)}.exam-list button{display:flex;align-items:center;justify-content:space-between;gap:8px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:14px 10px;text-align:left;color:var(--ink)}.exam-list button:last-child{border-bottom:0}.exam-list button span,.exam-list button b,.exam-list button small{display:block}.exam-list button small{color:var(--muted);font-size:11px}.exam-list button em{font-style:normal;color:var(--green);font-size:10px;white-space:nowrap}.exam-list button.active{background:var(--night-surface,#f7e7e4);color:var(--deep)}.exam-list button.active b{color:var(--red)}.exam-list button:disabled{cursor:default;opacity:.48}.exam-list button:disabled em{color:var(--muted)}.score-detail{min-width:0}.score-summary{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.score-summary h2{font-size:28px;margin:0}.score-summary>span{border:1px solid var(--line);background:var(--night-surface,#fff);padding:4px 9px;color:var(--muted);font-size:11px}.score-subjects{margin-top:0}.panel-title{display:flex;align-items:center;justify-content:space-between}.panel-title h2{margin:0}.panel-title span{color:var(--muted);font-size:12px}.score-up{color:var(--green);font-weight:700}.score-analysis-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.score-analysis-grid .panel p:last-child{color:var(--muted)}.score-analysis-grid .panel p b{color:var(--deep)}.score-trend>div{height:150px;display:flex;align-items:end;justify-content:space-around;gap:18px;border-bottom:1px solid var(--line);padding:8px 10px 0}.score-trend span{height:100%;min-width:55px;display:flex;flex-direction:column;align-items:center;justify-content:end;position:relative}.score-trend i{width:34px;max-height:100%;background:linear-gradient(#c54348,var(--red));order:2}.score-trend b{font-size:11px;order:1}.score-trend small{position:absolute;top:100%;margin-top:5px;white-space:nowrap;color:var(--muted);font-size:10px}@media(max-width:900px){.score-layout{grid-template-columns:1fr}.exam-list{display:flex;overflow-x:auto}.exam-list button{min-width:170px;border-bottom:0;border-right:1px solid var(--line)}.score-analysis-grid{grid-template-columns:1fr}}@media(max-width:560px){.score-title{align-items:start;display:block}.score-title>span{display:block;margin-top:4px}.panel-title{align-items:start;display:block}.score-analysis-grid{grid-template-columns:1fr}.score-summary>span{display:none}}
.profile:has(.birthday-wish){position:relative;padding-right:380px;overflow:hidden}.profile:has(.birthday-wish)>button{position:absolute;right:34px;bottom:27px}.birthday-wish{position:absolute;z-index:1;right:34px;top:27px;width:310px;padding:14px 17px;border:1px solid rgba(255,255,255,.32);background:rgba(255,247,220,.13);backdrop-filter:blur(8px)}.birthday-wish span,.birthday-wish b{display:block}.birthday-wish span{color:#ffe09a;font-size:12px;font-weight:800;letter-spacing:.08em}.birthday-wish b{margin-top:4px;font-size:15px}.birthday-wish button{margin-top:9px;border:0;background:transparent;color:#ffe09a;padding:0;text-decoration:underline;font-size:12px}.birthday-fireworks{position:fixed;inset:0;z-index:100;pointer-events:none;overflow:hidden;background:rgba(26,10,22,.12);animation:birthday-fade 3.6s ease both}.birthday-fireworks>i{position:absolute;left:var(--x);top:var(--y);width:4px;height:4px;animation:birthday-pop .35s var(--delay) ease-out both}.birthday-fireworks b{position:absolute;left:0;top:0;width:5px;height:5px;border-radius:50%;background:var(--color);box-shadow:0 0 8px var(--color);animation:birthday-spark 1.35s calc(var(--delay) + .18s) cubic-bezier(.14,.66,.31,1) both;transform:rotate(var(--angle)) translateX(0)}@keyframes birthday-pop{0%{transform:scale(0)}70%{transform:scale(2)}100%{transform:scale(1)}}@keyframes birthday-spark{0%{opacity:0;transform:rotate(var(--angle)) translateX(0) scale(1)}12%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateX(var(--distance)) scale(.15)}}@keyframes birthday-fade{0%,82%{background:rgba(26,10,22,.12)}100%{background:transparent}}@media(max-width:800px){.profile:has(.birthday-wish){padding-right:19px;padding-top:150px}.birthday-wish{left:19px;right:19px;top:18px;width:auto}.profile:has(.birthday-wish)>button{right:19px;bottom:20px}}@media(prefers-reduced-motion:reduce){.birthday-fireworks{display:none}}
.score-down{color:var(--red);font-weight:700}
.cutoff-banner{display:grid;grid-template-columns:repeat(3,minmax(90px,1fr)) auto;align-items:center;gap:12px;margin-bottom:16px;padding:18px 20px;border:1px solid #bad7c8;border-left:5px solid var(--green);background:var(--night-surface,#f3faf6)}.cutoff-banner.below{border-color:#e4bbb7;border-left-color:var(--red);background:var(--night-surface,#fff5f3)}.cutoff-banner div span,.cutoff-banner div b{display:block}.cutoff-banner div span{color:var(--muted);font-size:11px}.cutoff-banner div b{font-size:24px}.cutoff-banner strong{justify-self:end;border-radius:99px;background:var(--green);color:#fff;padding:7px 13px;font-size:12px}.cutoff-banner.below strong{background:var(--red)}.cutoff-banner>small{grid-column:1/-1;color:var(--muted);font-size:11px}.score-subjects td small{display:block;color:var(--muted);font-size:10px}.relative-level{display:inline-block;border-radius:99px;padding:2px 8px;font-size:10px;font-weight:700}.level-优势{background:var(--night-surface,#dff2e8);color:#17633f}.level-较强{background:var(--night-surface,#eaf3e3);color:#4f742e}.level-正常{background:var(--night-surface,#eeeae5);color:var(--night-ink,#665d58)}.level-需关注{background:var(--night-surface,#f8dfdc);color:#8e2628}.score-method-note{margin:14px 0 0;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}@media(max-width:620px){.cutoff-banner{grid-template-columns:repeat(3,1fr)}.cutoff-banner strong{grid-column:1/-1;justify-self:start}}
.bias-guide{margin:0 0 16px;border-left:4px solid #b58a45;background:var(--night-surface,#fffaf0)}.bias-guide h2{margin-bottom:5px}.bias-guide p:last-child{margin:0;color:var(--muted)}.bias-level{display:inline-block;border-radius:99px;padding:3px 8px;font-size:10px;font-weight:700}.bias-明显优势{background:var(--night-surface,#dff2e8);color:#17633f}.bias-相对优势{background:var(--night-surface,#eaf3e3);color:#4f742e}.bias-较均衡{background:var(--night-surface,#eeeae5);color:var(--night-ink,#665d58)}.bias-相对偏弱{background:var(--night-surface,#f8dfdc);color:#8e2628}.rank-trend canvas{display:block;width:100%;height:170px;margin-top:4px}.rank-trend-labels{display:flex;justify-content:space-between;gap:10px;margin:2px 18px 0}.rank-trend-labels span,.rank-trend-labels b,.rank-trend-labels small{display:block;text-align:center}.rank-trend-labels b{font-size:11px}.rank-trend-labels small{color:var(--muted);font-size:9px}.rank-trend>p:last-child{margin:18px 0 0;text-align:center;color:var(--muted);font-size:10px}
/* Teacher grade analysis */
.workday-strip .duty-summary{border-color:#c9b8df;background:var(--night-surface,#f6f1fb);color:#57407f}.workday-strip .duty-summary b{color:#57407f}
.full-schedule td small{display:block;margin-top:3px;color:var(--muted);font-size:9px;line-height:1.25}.full-schedule td:not(.empty){font-weight:700}
.schedule-heading{display:flex;align-items:end;justify-content:space-between;margin:8px 0 18px}.schedule-heading h1{margin:0}.schedule-heading>span,.schedule-heading label{color:var(--muted);font-size:12px}.schedule-heading select{margin-left:8px;border:1px solid var(--line);background:var(--night-surface,#fff);padding:8px 10px}.workday-strip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.workday-strip span{display:flex;gap:6px;border:1px solid var(--line);background:var(--night-surface,#fff);padding:7px 10px;color:var(--muted);font-size:11px}.workday-strip b{color:var(--deep)}.full-schedule{padding:14px}.schedule-legend{display:flex;align-items:center;gap:8px;margin-bottom:12px}.schedule-legend>span{padding:4px 8px;font-size:10px;font-weight:700}.schedule-legend .morning{background:#fff0cf;color:#8a5b00}.schedule-legend .daytime{background:var(--night-surface,#edf3f8);color:#34566f}.schedule-legend .evening{background:var(--night-surface,#eee8f8);color:#57407f}.schedule-legend small{margin-left:auto;color:var(--muted)}.full-schedule table{min-width:930px}.full-schedule th:first-child{position:sticky;left:0;z-index:1;background:var(--night-surface,#fff);min-width:132px}.full-schedule tbody th b,.full-schedule tbody th small{display:block}.full-schedule tbody th small{color:var(--muted);font-size:10px}.full-schedule td{text-align:center;min-width:92px}.full-schedule td.empty{color:#bbb;background:var(--night-surface,#faf8f6)}.schedule-morning td{background:var(--night-surface,#fffaf0)}.schedule-evening td{background:var(--night-surface,#f8f5fc)}.teacher-week-list article{display:grid;grid-template-columns:190px 1fr;gap:18px;padding:14px 0;border-bottom:1px solid var(--line)}.teacher-week-list article:last-child{border-bottom:0}.teacher-week-list time b,.teacher-week-list time small,.teacher-week-list article div b,.teacher-week-list article div small{display:block}.teacher-week-list small{color:var(--muted);font-size:11px}@media(max-width:700px){.schedule-heading{display:block}.schedule-heading>span,.schedule-heading label{display:block;margin-top:6px}.schedule-legend{align-items:flex-start;flex-wrap:wrap}.schedule-legend small{width:100%;margin:0}.teacher-week-list article{grid-template-columns:1fr;gap:4px}}
.schedule-upload-panel{display:grid;gap:16px}.schedule-upload-fields{display:grid;grid-template-columns:1.35fr 1fr 1fr 1.2fr;gap:12px}.schedule-upload-fields label{display:grid;gap:5px;color:var(--muted);font-size:12px}.schedule-upload-fields input,.schedule-upload-fields select{min-height:40px;border:1px solid var(--line);background:var(--night-surface,#fff);padding:8px 10px}.schedule-file-button{display:flex!important;align-items:center;justify-content:center;align-self:end;min-height:40px;border:1px solid #d6aaa7;background:var(--night-surface,#fff);color:var(--red)!important;font-weight:700;cursor:pointer}.schedule-file-button input{display:none}.schedule-file-summary{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--night-surface,#f7f1ec)}.schedule-file-summary p{margin:0}.schedule-file-summary span{color:var(--muted);font-size:12px}.schedule-preview{border:1px solid var(--line);padding:12px}.schedule-preview-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.schedule-preview-head select{margin-left:8px;padding:6px;border:1px solid var(--line);background:var(--night-surface,#fff)}.schedule-preview-head small{color:var(--muted)}.schedule-preview .table{max-height:360px}.schedule-preview table{font-size:11px;white-space:nowrap}.schedule-preview tbody th{position:sticky;left:0;background:var(--night-surface,#f5ede8)}.schedule-upload-actions{display:flex;justify-content:flex-end}.schedule-upload-actions button{padding:10px 16px}.schedule-upload-actions button:disabled{opacity:.45}.schedule-error{color:var(--red)}.schedule-success{color:var(--green);font-weight:700}.schedule-import-history{max-height:420px}.schedule-import-history table{font-size:11px}.schedule-import-history thead{position:sticky;top:0;z-index:2}@media(max-width:850px){.schedule-upload-fields{grid-template-columns:1fr 1fr}.schedule-file-summary,.schedule-preview-head{display:block}.schedule-preview-head small{display:block;margin-top:7px}}@media(max-width:520px){.schedule-upload-fields{grid-template-columns:1fr}}
.teaching-focus-section{margin:22px 0}.teaching-focus-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.teaching-focus-grid .panel{padding:17px}.focus-class-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:10px;border-bottom:1px solid var(--line)}.focus-class-head h3{margin:0}.focus-class-head button,.teaching-focus-grid article>button{border:1px solid var(--line);background:var(--night-surface,#fff);color:var(--red);padding:5px 8px;font-size:11px}.teaching-focus-grid article{display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.teaching-focus-grid article:last-child{border-bottom:0}.teaching-focus-grid article b,.teaching-focus-grid article small{display:block}.teaching-focus-grid article small{color:var(--muted);font-size:10px}.teaching-focus-grid article p{margin:0;font-size:12px}.teaching-focus-grid article p small{margin-top:2px}@media(max-width:760px){.teaching-focus-grid{grid-template-columns:1fr}.teaching-focus-grid article{grid-template-columns:90px 1fr}.teaching-focus-grid article>button{grid-column:2;justify-self:start}}
.grade-overview-title{display:flex;align-items:center;justify-content:space-between;margin:20px 0 9px}.grade-overview-title p{margin:0}.grade-overview-title span{color:var(--muted);font-size:11px}
.rank-change{display:inline-block;min-width:78px;font-size:11px;font-weight:700}.rank-change.up{color:var(--green)}.rank-change.down{color:#a95832}.rank-change.same,.rank-change.first{color:var(--muted);font-weight:500}
.subject-rank-trend{margin-top:18px}.subject-rank-trend .panel-title{align-items:end}.subject-rank-trend label{color:var(--muted);font-size:12px}.subject-rank-trend select{margin-left:7px;border:1px solid var(--line);background:var(--night-surface,#fff);padding:7px 10px;color:var(--ink)}.subject-rank-trend canvas{display:block;width:100%;height:220px;margin-top:16px}.subject-rank-labels{display:flex;justify-content:space-between;margin:0 24px}.subject-rank-labels span,.subject-rank-labels b,.subject-rank-labels small{display:block;text-align:center}.subject-rank-labels b{font-size:11px}.subject-rank-labels small,.subject-rank-trend>p{color:var(--muted);font-size:10px}.subject-rank-trend>p{text-align:center;margin:18px 0 0}@media(max-width:560px){.subject-rank-trend .panel-title{display:block}.subject-rank-trend label{display:block;margin-top:10px}.subject-rank-trend select{margin-left:0}.subject-rank-labels{margin:0 8px}}
.bias-guide .overline{margin-bottom:8px}.bias-radar{display:block;width:min(100%,380px);height:auto;aspect-ratio:1/1;margin:4px auto 10px}.score-analysis-grid>.panel:first-child>p:last-child{margin-top:8px}
/* Navigation notification badge */
nav button,nav>a{align-items:center;gap:10px}
nav>a small{margin-left:auto;color:var(--muted);font-size:10px;font-weight:500;white-space:nowrap}nav>a:hover small{color:currentColor}
nav button i,nav>a i{display:inline-grid;place-items:center;align-self:center;flex:0 0 18px;width:18px;height:18px;min-width:18px;margin:0;padding:0;border-radius:50%;line-height:18px;color:#fff;background:var(--red);font-size:10px;font-weight:700;font-style:normal;font-variant-numeric:tabular-nums;text-align:center}
.homeroom-integrated-nav{display:none!important}.homeroom-work-tabs{display:flex;gap:0;margin:0 0 18px;border:1px solid var(--line);background:var(--night-surface,#fff);overflow-x:auto;box-shadow:0 8px 24px rgba(55,33,29,.04)}.homeroom-work-tabs button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:max-content;min-height:50px;padding:12px 22px;border:0;border-right:1px solid var(--line);background:var(--night-surface,#fff);color:var(--muted);font:inherit;font-weight:700;cursor:pointer}.homeroom-work-tabs button:last-child{border-right:0}.homeroom-work-tabs button:hover{background:var(--night-surface,#fbf4f1);color:var(--deep)}.homeroom-work-tabs button.active{background:var(--night-surface,#f7e7e4);color:var(--red)}.homeroom-work-tabs button.active::after{content:'';position:absolute;left:18px;right:18px;bottom:0;height:3px;background:var(--red)}.homeroom-work-tabs i{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--red);color:#fff;font-size:10px;font-style:normal}.homeroom-work-no-access{display:flex;align-items:center;gap:22px;min-height:180px;border-left:5px solid #b9aaa2}.homeroom-work-no-access>span{display:grid;place-items:center;flex:0 0 58px;width:58px;height:58px;border-radius:50%;background:var(--night-surface,#f1e9e4);color:var(--night-ink,#7b6a64);font-weight:800}.homeroom-work-no-access h1{margin:3px 0 9px;font-size:25px}.homeroom-work-no-access p{margin:0;color:var(--muted);line-height:1.75}@media(max-width:700px){.homeroom-work-tabs{margin-bottom:14px}.homeroom-work-tabs button{min-height:44px;padding:10px 15px;font-size:13px}.homeroom-work-no-access{align-items:flex-start;padding:20px}.homeroom-work-no-access>span{flex-basis:46px;width:46px;height:46px}.homeroom-work-no-access h1{font-size:21px}}
.teacher-role-block{margin-bottom:18px}.role-block-title{display:flex;align-items:end;justify-content:space-between;margin-bottom:11px}.role-block-title h2{margin:0}.role-block-title>span{color:var(--muted);font-size:11px}.teaching-class-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.teaching-class-cards button{display:grid;grid-template-columns:1fr auto;text-align:left;gap:4px 14px;padding:17px;border:1px solid var(--line);background:var(--night-surface,#fff);color:var(--ink);box-shadow:0 7px 22px rgba(55,33,29,.04)}.teaching-class-cards button:hover{border-color:#d7aaa7;background:var(--night-surface,#fffaf9)}.teaching-class-cards small,.teaching-class-cards span{color:var(--muted)}.teaching-class-cards b{font-size:25px;color:var(--deep)}.teaching-class-cards em{grid-column:2;grid-row:1/4;align-self:center;color:var(--red);font-style:normal;font-size:12px}.role-divider{display:flex;align-items:center;gap:12px;margin:26px 0 15px;color:var(--deep)}.role-divider:before,.role-divider:after{content:"";height:1px;background:var(--line);flex:1}.role-divider span{color:var(--muted);font-size:11px}.role-divider b{font-size:13px;white-space:nowrap}.student-list-tools{display:flex;gap:10px}.student-list-tools label{display:flex;align-items:center;gap:7px}.student-list-tools select,.student-list-tools input{border:1px solid var(--line);background:var(--night-surface,#fff);padding:9px 10px}@media(max-width:700px){.teaching-class-cards{grid-template-columns:1fr}.role-block-title{display:block}.role-block-title>span{display:block;margin-top:4px}.student-list-tools{display:grid}.role-divider span{display:none}}
.teacher-perspective-group{margin-top:22px;padding:20px;border:1px solid #dfd1c9;background:var(--night-surface,#fbf8f4)}.perspective-group-title{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}.perspective-group-title h2{margin:0}.teacher-perspective-group .teacher-role-block{margin-bottom:18px}.teacher-perspective-group .teaching-focus-section{margin-bottom:0}
.homeroom-score-table{margin-top:18px}.homeroom-score-table table{font-size:12px}.homeroom-score-table th,.homeroom-score-table td{padding:9px 10px}.homeroom-score-table thead button{position:relative;display:inline-block;border:0;background:transparent;color:var(--deep);font-weight:700;padding:3px 4px}.homeroom-score-table thead button i{position:absolute;left:100%;top:50%;width:10px;transform:translateY(-50%);color:var(--green);font-style:normal;font-size:9px}.homeroom-score-table thead button.ascending i{color:var(--red)}.homeroom-score-table thead button:hover{background:var(--night-surface,#fff)}.homeroom-score-table tbody tr:hover{background:var(--night-surface,#fff8f5)}
.homeroom-score-table .table{max-height:620px}.homeroom-score-table thead{position:sticky;top:0;z-index:2}.homeroom-score-table .subject-rank-cell{background:var(--night-surface,#faf5f1);color:var(--night-ink,#695b56)}.taught-class-overall{margin:18px 0}.class-overall-tabs{display:flex;gap:6px}.class-overall-tabs button{border:1px solid var(--line);background:var(--night-surface,#fff);padding:7px 11px;color:var(--muted)}.class-overall-tabs button.active{border-color:#d6aaa7;background:var(--night-surface,#f7e7e4);color:var(--red);font-weight:700}.class-overall-stats{margin:16px 0}
.all-students-table .table{max-height:680px}.all-students-table table{font-size:12px}.all-students-table th,.all-students-table td{padding:9px 10px}.all-students-table thead{position:sticky;top:0;z-index:2}.all-students-table thead button{position:relative;display:inline-block;border:0;background:transparent;color:var(--deep);font-weight:700;padding:3px 4px}.all-students-table thead button i{position:absolute;left:100%;top:50%;width:10px;transform:translateY(-50%);color:var(--green);font-style:normal;font-size:9px}.all-students-table thead button.ascending i{color:var(--red)}.all-students-table .subject-rank-cell{background:var(--night-surface,#faf5f1);color:var(--night-ink,#695b56)}.all-students-table tbody tr:hover{background:var(--night-surface,#fff8f5)}
.student-detail-stats article:last-child .rank-movement{font-size:24px;line-height:1.15}.rank-movement.up{color:var(--green)}.rank-movement.down{color:var(--red)}.rank-movement.first{color:var(--muted);font-size:18px!important}.rank-movement.same{display:inline-block;width:max-content;border-radius:4px;background:#f4c95d;color:#694d00;padding:4px 10px;font-size:17px!important}
.homeroom-subject-tabs{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:12px 0 16px;padding:4px;background:var(--night-surface,#eee5df)}.homeroom-subject-tabs button{border:0;background:transparent;padding:9px;color:var(--muted);font-weight:700}.homeroom-subject-tabs button.active{background:var(--night-surface,#fff);color:var(--red);box-shadow:0 3px 10px rgba(55,33,29,.08)}[data-homeroom-subject-pane] table{font-size:12px}
.language-mark{display:inline-grid;place-items:center;width:17px;height:17px;margin-left:5px;border-radius:50%;background:#8b5b9f;color:#fff;font-size:10px;font-weight:800;vertical-align:middle}
.teacher-student-list .panel-title label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.teacher-student-list input{min-width:220px;border:1px solid var(--line);padding:9px 11px;background:var(--night-surface,#fff)}.student-detail-btn{border:1px solid #d7b5b3;background:var(--night-surface,#fff7f5);color:var(--red);padding:6px 10px;font-weight:700}.student-score-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:22px;background:rgba(35,25,23,.56);backdrop-filter:blur(3px)}.student-score-modal[hidden]{display:none}.student-score-dialog{position:relative;width:min(900px,100%);max-height:90vh;overflow:auto;background:var(--night-surface,#fbf8f5);border:1px solid var(--line);box-shadow:0 24px 70px rgba(32,20,18,.28);padding:28px}.student-score-dialog h2{font-size:28px;margin:0 0 18px}.student-modal-close{position:absolute;right:18px;top:16px;width:34px;height:34px;border:0;background:var(--night-surface,#eee5df);color:var(--deep);font-size:22px}.student-detail-stats{margin-bottom:18px}.student-detail-stats article:last-child b{font-size:15px}.student-detail-note{color:var(--muted);font-size:11px;margin:15px 0 0}
.student-score-dialog{width:min(1120px,100%)}.teacher-detail-exams{display:flex;gap:6px;margin:0 0 18px;padding:5px;background:var(--night-surface,#eee5df);overflow:auto}.teacher-detail-exams button{min-width:150px;border:0;background:transparent;padding:9px 13px;color:var(--muted)}.teacher-detail-exams button small{display:block}.teacher-detail-exams button.active{background:var(--night-surface,#fff);color:var(--red);box-shadow:0 3px 10px rgba(55,33,29,.09)}.teacher-detail-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.teacher-detail-line{display:block;width:100%;height:210px;margin-top:12px}.teacher-chart-note{text-align:center;color:var(--muted);font-size:10px}@media(max-width:760px){.teacher-detail-chart-grid{grid-template-columns:1fr}.student-score-dialog{padding:20px}.teacher-detail-exams button{min-width:130px}}
.teacher-grade-title{display:flex;align-items:end;justify-content:space-between;margin:8px 0 20px}.teacher-grade-title h1{margin:0}.grade-mode-tabs{display:flex;gap:4px;padding:4px;background:var(--night-surface,#eee5df);border-radius:12px}.grade-mode-tabs button{border:0;background:transparent;color:var(--muted);padding:9px 16px;border-radius:9px;font-weight:700}.grade-mode-tabs button.active{background:var(--night-surface,#fff);color:var(--red);box-shadow:0 3px 12px rgba(55,33,29,.1)}.teacher-grade-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:18px;align-items:start}.teacher-grade-stats{margin-bottom:18px}.teacher-grade-stats article small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.teacher-subject-panel{margin-bottom:18px}.teacher-analysis-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.class-bias-list{display:grid;gap:10px;margin-top:18px}.class-bias-list article{display:grid;grid-template-columns:34px 1fr 38px;align-items:center;gap:10px}.class-bias-list article>div{height:8px;background:var(--night-surface,#eee7e2);border-radius:999px;overflow:hidden}.class-bias-list i{display:block;height:100%;background:linear-gradient(90deg,#d97a72,var(--red));border-radius:999px}.class-bias-list span{text-align:right;font-size:12px}.teacher-watch article{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:9px;padding:13px 0;border-bottom:1px solid var(--line)}.teacher-watch article>span{display:grid;place-items:center;width:24px;height:24px;background:var(--night-surface,#f7e7e4);color:var(--red);border-radius:50%;font-size:11px;font-weight:700}.teacher-watch article b{font-size:13px}.teacher-watch article button{border:1px solid var(--line);background:var(--night-surface,#fff);color:var(--muted);padding:5px 8px}.teacher-watch>p:last-child{color:var(--muted);font-size:11px;margin-top:14px}.score-down{color:#b06b35;font-weight:700}[data-grade-pane="upload"] .steps{margin-top:0}@media(max-width:900px){.teacher-grade-layout{grid-template-columns:1fr}.teacher-analysis-grid{grid-template-columns:1fr}.teacher-grade-title{align-items:start;gap:14px}.teacher-exam-list{display:flex;overflow-x:auto}.teacher-exam-list button{min-width:170px}}@media(max-width:560px){.teacher-grade-title{display:block}.grade-mode-tabs{margin-top:14px}.grade-mode-tabs button{flex:1}.teacher-grade-stats{grid-template-columns:1fr 1fr}.teacher-watch article{grid-template-columns:24px 1fr}.teacher-watch article button{grid-column:2;justify-self:start}}
.portal-login-error{padding:10px 12px;border:1px solid #efbbb6;border-radius:4px;background:var(--night-surface,#fff1ef);color:#9a201c;font-size:13px}.login-submit:disabled{opacity:.62;cursor:wait}.middle-score-import{display:none}.middle-score-fold{padding:0;overflow:hidden}.middle-score-fold>summary{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:18px;padding:18px 20px;cursor:pointer;list-style:none}.middle-score-fold>summary::-webkit-details-marker{display:none}.middle-score-fold summary span small,.middle-score-fold summary span b{display:block}.middle-score-fold summary span small{color:var(--muted);font-size:10px}.middle-score-fold summary span b{margin-top:3px;font-size:17px}.middle-score-fold summary em{color:var(--muted);font-style:normal;font-size:12px}.middle-score-fold summary i{color:var(--red);font-style:normal;font-size:12px}.middle-score-fold[open] summary i::before{content:'收起';font-size:0}.middle-score-fold[open] summary i{font-size:0}.middle-score-fold[open] summary i::after{content:'收起';font-size:12px}.middle-score-fold-body{border-top:1px solid var(--line);padding:16px 20px 20px}.middle-score-fold-body>p{margin-top:0;color:var(--muted);font-size:12px}
.profile{position:relative}.school-week-badge{position:absolute;right:22px;top:18px;display:inline-flex;align-items:center;padding:6px 11px;border-radius:999px;background:var(--night-surface,#fff3df);color:#8a5a08;border:1px solid #edcf97;font-size:12px;font-weight:700;letter-spacing:.04em}
.week-pattern{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;margin-left:3px;padding:0 3px;border-radius:3px;font-size:9px;line-height:1;font-weight:700;vertical-align:1px}.week-pattern.odd{color:#8c2430;background:var(--night-surface,#f8e4e5)}.week-pattern.even{color:#315f76;background:var(--night-surface,#e5f1f5)}
.schedule-boundary-before th,.schedule-boundary-before td{border-top:4px solid #bda9a1}.schedule-boundary-before.schedule-evening th,.schedule-boundary-before.schedule-evening td{border-top-color:#80659c}.schedule-today{position:relative;background:#eadfce!important;color:#694d22!important}.schedule-today::after{content:"今天";display:block;color:#8b6225;font-size:9px}.schedule-current-period th{background:var(--night-surface,#edf7f1)!important;color:#185a3b}.schedule-current-course{position:relative;background:var(--night-surface,#e3f3e9)!important;box-shadow:inset 0 0 0 3px #2e8058;color:#174d35}.schedule-now-badge{display:block;width:max-content;margin:0 auto 5px;border-radius:99px;background:#267050;color:#fff;padding:2px 7px;font-size:9px;line-height:1.4}.schedule-legend .current{background:var(--night-surface,#e3f3e9);color:#216846}.schedule-explorer{margin-bottom:18px;border-top:4px solid #9b7135}.schedule-explorer-title{display:flex;align-items:end;justify-content:space-between;gap:16px}.schedule-explorer-title h2{margin:0}.schedule-explorer-title>span{color:var(--muted);font-size:11px}.schedule-explorer form{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:10px;margin-top:17px}.schedule-explorer form label{display:grid;gap:4px;color:var(--muted);font-size:11px}.schedule-explorer input,.schedule-explorer select{box-sizing:border-box;width:100%;min-height:41px;border:1px solid #d8c8bf;background:var(--night-surface,#fff);padding:7px 10px}.schedule-explorer input:focus,.schedule-explorer select:focus{outline:2px solid rgba(182,31,41,.18);border-color:#b61f29}.schedule-query-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}.schedule-query-actions button{border:1px solid #d5c6bd;background:var(--night-surface,#fff);padding:7px 12px;color:var(--night-ink,#6f5e57)}.schedule-query-actions [data-current-slot]{border-color:#b7cfbf;background:var(--night-surface,#f2faf5);color:#267050;font-weight:700}.schedule-query-result{margin-top:14px;padding-top:13px;border-top:1px solid var(--line)}.schedule-query-result>p{margin:0;color:var(--muted);font-size:12px}.schedule-query-summary{color:var(--muted);font-size:12px}.schedule-query-summary b{color:var(--deep);font-size:18px}.schedule-query-result .table{max-height:430px}.schedule-query-result table{font-size:11px}.schedule-query-result thead{position:sticky;top:0;z-index:2}.schedule-query-result td small{display:block;color:var(--muted);font-size:9px}@media(max-width:900px){.schedule-explorer form{grid-template-columns:repeat(2,1fr)}.schedule-query-actions{grid-column:1/-1}}@media(max-width:560px){.schedule-explorer-title{display:block}.schedule-explorer-title>span{display:block;margin-top:5px}.schedule-explorer form{grid-template-columns:1fr}.schedule-query-actions{grid-column:auto;justify-content:stretch}.schedule-query-actions button{flex:1}.schedule-boundary-before th,.schedule-boundary-before td{border-top-width:3px}}
.discipline-title{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:16px}.discipline-title h1,.discipline-title p{margin:0}.discipline-title label{display:flex;align-items:center;gap:8px;color:var(--muted)}.discipline-title select{min-width:150px;padding:9px 12px;border:1px solid var(--line);background:var(--night-surface,#fff);color:var(--deep)}.discipline-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px}.discipline-summary article{display:grid;gap:7px;padding:18px;border:1px solid var(--line);background:var(--night-surface,#fff)}.discipline-summary small{color:var(--muted)}.discipline-summary b{font-size:24px}.discipline-summary b em{margin-left:3px;font-size:12px;font-style:normal}.discipline-summary [data-dorm-level="guardian_warning"]{border-left:4px solid #c99020}.discipline-summary [data-dorm-level="suspension_week"],.discipline-summary [data-dorm-level="boarding_cancelled"]{border-left:4px solid #a9342f}.discipline-warning-list{display:grid;gap:7px}.discipline-warning-list article{display:grid;grid-template-columns:minmax(180px,1fr) 80px 120px;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--line)}.discipline-warning-list span{display:grid}.discipline-warning-list small,.discipline-warning-list em{color:var(--muted);font-style:normal}.discipline-warning-list strong{text-align:right}.discipline-warning-list em[data-level="guardian_warning"]{color:#9a6913}.discipline-warning-list em[data-level="suspension_week"],.discipline-warning-list em[data-level="boarding_cancelled"]{color:#a9342f;font-weight:700}#discipline table td small{display:block;color:var(--muted)}@media(max-width:700px){.discipline-title{align-items:stretch;flex-direction:column}.discipline-summary{grid-template-columns:1fr}.discipline-warning-list article{grid-template-columns:1fr auto}.discipline-warning-list em{grid-column:1/-1}}
.discipline-filters{display:flex;align-items:end;justify-content:flex-end;gap:12px;flex-wrap:wrap}.discipline-title input{min-width:190px;padding:9px 12px;border:1px solid var(--line);background:var(--night-surface,#fff);color:var(--deep);font:inherit}.discipline-title input:focus,.discipline-title select:focus{outline:2px solid color-mix(in srgb,var(--accent) 28%,transparent);outline-offset:1px}@media(max-width:700px){.discipline-filters{display:grid;grid-template-columns:1fr}.discipline-title input,.discipline-title select{width:100%;min-width:0}}
.discipline-filters label{display:grid;grid-template-columns:auto 190px}.discipline-filters select,.discipline-filters input{box-sizing:border-box;width:190px;height:40px}.discipline-filters button{height:40px;padding:0 22px;border:2px solid #8f2824;background:var(--night-surface,#fff);color:#7d211e;font:inherit;font-weight:800;cursor:pointer}.discipline-filters button:hover,.discipline-filters button:focus-visible{background:#8f2824;color:#fff;outline:none}.discipline-competition>summary{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;cursor:pointer;list-style:none}.discipline-competition>summary::-webkit-details-marker{display:none}.discipline-competition>summary span{font-size:20px;font-weight:700}.discipline-competition>summary small{color:var(--muted);text-align:right}.discipline-competition>summary i{color:var(--accent);font-style:normal}.discipline-competition[open]>summary i{font-size:0}.discipline-competition[open]>summary i::after{content:'收起';font-size:14px}.discipline-competition[open]>summary{padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:12px}@media(max-width:700px){.discipline-filters label{grid-template-columns:52px 1fr}.discipline-filters select,.discipline-filters input{width:100%}.discipline-competition>summary{grid-template-columns:1fr auto}.discipline-competition>summary small{grid-column:1/-1;grid-row:2;text-align:left}}
.discipline-competition>summary i{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:78px;height:38px;padding:0 14px;border:1px solid var(--accent);border-radius:6px;background:color-mix(in srgb,var(--accent) 9%,#fff);color:var(--accent);font-size:14px;font-weight:700;box-sizing:border-box}.discipline-competition>summary i::after{content:'▼';font-size:11px;line-height:1}.discipline-competition>summary:hover i{background:color-mix(in srgb,var(--accent) 16%,#fff)}.discipline-competition[open]>summary i{font-size:14px}.discipline-competition[open]>summary i::before{content:'收起'}.discipline-competition[open]>summary i::after{content:'▲';font-size:11px}
.discipline-competition-heading{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.discipline-competition-heading label{display:inline-flex}.discipline-competition-heading input{box-sizing:border-box;width:142px;height:38px;padding:7px 9px;border:1px solid var(--accent);border-radius:4px;background:var(--night-surface,#fff);color:var(--deep);font:inherit;font-size:15px;font-weight:700;cursor:pointer}.discipline-competition-heading input:focus{outline:2px solid color-mix(in srgb,var(--accent) 28%,transparent);outline-offset:1px}
.discipline-competition:not(.discipline-detail-fold)>summary i{grid-column:3;justify-self:end}
.discipline-sync-status{display:flex;align-items:center;gap:8px 20px;flex-wrap:wrap;margin:-2px 0 14px;padding:9px 12px;border-left:3px solid #a47742;background:var(--night-surface,#f1ebe4);color:var(--muted);font-size:12px}.discipline-sync-status span{display:inline-flex;align-items:center;gap:5px}.discipline-sync-status b{color:var(--deep)}@media(max-width:700px){.discipline-sync-status{display:grid;gap:5px}.discipline-sync-status span{align-items:flex-start}}
.discipline-competition[open]>summary i{font-size:0}.discipline-competition[open]>summary i::before{font-size:14px}
.discipline-note{margin:-4px 0 14px;color:var(--muted);font-size:12px}
.deduction-owner{display:inline-block;padding:3px 8px;border:1px solid currentColor;border-radius:99px;font-size:11px;white-space:nowrap}.deduction-owner.personal{color:#7f5521}.deduction-owner.class{color:#8f2824}
.discipline-warning-list{grid-template-columns:repeat(auto-fill,minmax(138px,168px));gap:12px}.discipline-warning-list article{display:flex;aspect-ratio:1/1;min-width:0;padding:14px;border:1px solid #dfd2cb;background:var(--night-surface,#fff);flex-direction:column;align-items:flex-start;justify-content:space-between;gap:8px}.discipline-warning-list article span{width:100%}.discipline-warning-list article strong{text-align:left;font-size:22px}.discipline-warning-list article em{margin-top:auto}.discipline-student-link{padding:0;border:0;background:transparent;color:#8f2824;font:inherit;font-weight:800;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;cursor:pointer}.discipline-student-link:hover{color:#b23a34}.discipline-named-students{margin-top:7px!important}.discipline-named-students .discipline-student-link{font-size:inherit}.discipline-history-modal>section{width:min(920px,calc(100vw - 32px));max-height:88vh;overflow:auto}.discipline-history-modal h3{margin:22px 0 10px}.discipline-history-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.discipline-history-summary span{padding:12px;border:1px solid var(--line);background:var(--night-surface,#faf7f4)}.discipline-history-summary b{display:block;margin-top:4px;font-size:20px}@media(max-width:600px){.discipline-warning-list{grid-template-columns:repeat(2,minmax(0,1fr))}.discipline-history-summary{grid-template-columns:1fr}}
.discipline-history-modal>section{position:relative;width:min(920px,calc(100vw - 32px));max-height:88vh;overflow:auto;background:var(--night-surface,#fffdf9);border-top:5px solid var(--red);padding:30px 32px 34px;box-shadow:0 28px 80px rgba(32,20,18,.38);box-sizing:border-box}.discipline-history-modal .read-detail-close{position:absolute;right:18px;top:16px;width:38px;height:38px;border:1px solid #d8c8c1;border-radius:50%;background:var(--night-surface,#fff);color:var(--night-ink,#5d4541);font-size:24px;line-height:1;cursor:pointer}.discipline-history-modal .overline{margin:0 52px 6px 0}.discipline-history-modal h2{margin:0 52px 4px 0;font-size:28px}.discipline-history-modal h3{margin:24px 0 10px;padding-top:10px;border-top:1px solid var(--line);font-size:18px}.discipline-history-modal .table{max-height:320px;border:1px solid var(--line);background:var(--night-surface,#fff)}.discipline-history-modal table{white-space:normal}.discipline-history-modal th{position:sticky;top:0;z-index:1}.discipline-history-modal td{line-height:1.6}.discipline-history-summary{margin:20px 0}.discipline-history-summary span{padding:14px 16px;color:var(--muted)}.discipline-history-summary b{margin-top:5px;color:var(--deep);font-size:22px}@media(max-width:600px){.discipline-history-modal>section{padding:24px 16px 26px}.discipline-history-modal h2{font-size:23px}}
.discipline-warning-list{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.discipline-warning-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;aspect-ratio:auto;min-height:92px;padding:15px 16px;border:1px solid #dfd2cb;border-left:4px solid #c99020;background:linear-gradient(135deg,var(--night-surface,#fff) 0%,var(--night-surface,#fffaf1) 100%);align-items:center;gap:7px 14px}.discipline-warning-list article span{align-self:start}.discipline-warning-list article strong{grid-column:2;grid-row:1;font-size:25px;color:var(--deep);white-space:nowrap}.discipline-warning-list article em{grid-column:1/-1;grid-row:2;width:max-content;margin:0;padding:3px 8px;border-radius:99px;background:#fff0cf;font-size:11px;font-weight:700}.discipline-warning-list article em[data-level="suspension_week"],.discipline-warning-list article em[data-level="boarding_cancelled"]{background:var(--night-surface,#fbe8e5)}.discipline-filters{display:grid;grid-template-columns:repeat(2,minmax(190px,1fr)) auto;width:min(650px,100%)}.discipline-filters label{grid-template-columns:auto minmax(0,1fr)}.discipline-filters select,.discipline-filters input{width:100%;min-width:0}.discipline-filters button{min-width:94px}@media(max-width:1180px){.discipline-title{align-items:stretch;flex-direction:column}.discipline-title>div:first-child h1{font-size:34px}.discipline-filters{grid-template-columns:repeat(2,minmax(0,1fr)) auto;width:100%}}@media(max-width:820px){.discipline-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.discipline-filters button{width:100%}}@media(max-width:560px){.discipline-filters{grid-template-columns:1fr}.discipline-warning-list{grid-template-columns:1fr}}
.discipline-warning-list :is(.discipline-student-link,.student-profile-link){display:block;width:100%;max-width:100%;min-width:0;margin:0;padding:0;border:0;background:transparent;color:var(--night-ink,#342523);font-size:18px;line-height:1.35;font-weight:800;text-align:left;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.discipline-warning-list :is(.discipline-student-link,.student-profile-link):hover,.discipline-warning-list :is(.discipline-student-link,.student-profile-link):focus-visible{color:#9b2424;text-align:left;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;outline:none}.discipline-warning-list article span small{margin-top:3px;font-size:11px;line-height:1.35;letter-spacing:.02em}
.admin-notice-detail-modal .read-detail-close{right:20px;top:20px;display:grid;width:36px;height:36px;box-sizing:border-box;padding:0;border:1px solid #d8c8c1;border-radius:3px;background:var(--night-surface,#fff);place-items:center;color:var(--night-ink,#6a5550);font:400 25px/1 Arial,sans-serif;box-shadow:none;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.admin-notice-detail-modal .read-detail-close:hover,.admin-notice-detail-modal .read-detail-close:focus-visible{border-color:var(--red);background:var(--red);color:#fff;outline:none}@media(max-width:600px){.admin-notice-detail-modal .read-detail-close{right:12px;top:12px}}
.teaching-work-tabs{margin-bottom:12px}.teaching-course-tabs{display:flex;gap:8px;margin:0 0 18px;padding-bottom:12px;border-bottom:1px solid var(--line)}.teaching-course-tabs button{min-height:36px;padding:7px 14px;border:1px solid #d8c8bf;background:var(--night-surface,#fff);color:var(--muted);font:inherit;font-size:13px;font-weight:700;cursor:pointer}.teaching-course-tabs button.active{border-color:var(--red);background:var(--night-surface,#f8e8e6);color:var(--red)}.teaching-marking-card{display:flex;min-height:210px;align-items:center;justify-content:space-between;gap:28px;border-top:4px solid var(--red)}.teaching-marking-card h1{margin:4px 0 10px}.teaching-marking-card p:last-child{max-width:580px;margin:0;color:var(--muted);line-height:1.8}.teaching-marking-card>a{display:inline-flex;min-height:46px;align-items:center;gap:12px;padding:0 22px;background:var(--red);color:#fff;font-weight:800;text-decoration:none;white-space:nowrap}.teaching-marking-card>a:hover,.teaching-marking-card>a:focus-visible{background:var(--deep);outline:3px solid rgba(182,31,41,.18);outline-offset:3px}@media(max-width:640px){.teaching-work-tabs{overflow-x:auto}.teaching-work-tabs button{white-space:nowrap}.teaching-marking-card{align-items:flex-start;flex-direction:column}.teaching-marking-card>a{width:100%;box-sizing:border-box;justify-content:center}}

/* Explicit cursor semantics keep WebKit from falling back to the arrow when
   the authenticated access-watermark layer is present. */
a[href],button:not(:disabled),summary,select,label[for],[role="button"],[data-view],[data-teaching-work]{cursor:pointer}
textarea,[contenteditable="true"],input:not([type]),input[type="text"],input[type="search"],input[type="password"],input[type="email"],input[type="tel"],input[type="url"],input[type="number"]{cursor:text}
button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed}

/* Teacher classroom login keeps normal teaching tools available while hiding
   sensitive roster surfaces from a projected classroom screen. */
.classroom-login-option{display:grid!important;grid-template-columns:20px minmax(0,1fr);align-items:start;gap:10px!important;margin-top:17px!important;padding:13px 14px;border:1px solid #e0d3cc;border-radius:8px;background:var(--night-surface,#faf7f3);cursor:pointer}.classroom-login-option.auto-detected{border-color:#d6b979;background:var(--night-surface,#fff8e8);cursor:default}.classroom-login-option>input{width:17px!important;height:17px;margin:3px 0 0;padding:0;accent-color:var(--red);cursor:pointer}.classroom-login-option.auto-detected>input{cursor:default}.classroom-login-option>span{display:grid;gap:2px}.classroom-login-option b{color:var(--deep);font-size:14px}.classroom-login-option small{color:var(--muted);font-size:11px;font-weight:400;line-height:1.55}.classroom-mode-notice{display:flex;min-height:44px;align-items:center;justify-content:center;gap:24px;padding:8px 18px;border-bottom:1px solid #dccfbf;background:var(--night-surface,#fff8e8);color:#69563f;font-size:12px}.classroom-mode-notice b{margin-right:7px;color:#8b5f16}.classroom-mode-notice small{color:var(--night-ink,#806f5d)}.classroom-mode .shell{display:block;width:min(1120px,calc(100% - 34px));margin-top:34px}.classroom-mode .shell>nav,.classroom-mode [data-corgi-assistant],.classroom-mode [data-teaching-work-tabs],.classroom-mode [data-homeroom-work-tabs],.classroom-mode [data-roster-access-pane="homeroom"],.classroom-mode [data-roster-access-pane="authorized"],.classroom-mode [data-roster-access-pane="special"],.classroom-mode [data-view="allowance-publication"],.classroom-mode #allowance-publication{display:none!important}.classroom-mode .content>.view:not(#classroom-workspace):not(#homework):not(#grades):not(#textbooks):not(#student-roster){display:none!important}.classroom-workspace{min-height:calc(100vh - 210px)}.classroom-workspace-head{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;padding:34px 38px;border-top:5px solid var(--red);background:var(--night-surface,#fff);box-shadow:0 18px 50px rgba(65,36,31,.08)}.classroom-workspace-head span{display:block;margin-bottom:6px;color:var(--red);font-size:12px;font-weight:800;letter-spacing:.12em}.classroom-workspace-head h1{margin:0;font-size:38px;line-height:1.25}.classroom-workspace-head p{margin:10px 0 0;color:var(--muted)}.classroom-workspace-head strong{flex:0 0 auto;padding:9px 13px;border:1px solid #ddc292;background:var(--night-surface,#fff8e8);color:#7d5b1d;font-size:12px}.classroom-tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.classroom-tool-grid>button{display:grid;grid-template-columns:58px minmax(0,1fr) auto;min-height:132px;align-items:center;gap:18px;padding:22px 24px;border:1px solid #dfd4ce;border-radius:12px;background:var(--night-surface,#fff);color:var(--ink);text-align:left;box-shadow:0 12px 32px rgba(65,36,31,.055);transition:transform .18s ease-out,border-color .18s ease-out,box-shadow .18s ease-out}.classroom-tool-grid>button.featured{grid-column:1/-1;min-height:150px;background:#8e2025;color:#fff;border-color:#8e2025}.classroom-tool-grid>button:hover,.classroom-tool-grid>button:focus-visible{transform:translateY(-3px);border-color:#b56d68;box-shadow:0 18px 42px rgba(65,36,31,.12);outline:3px solid rgba(181,31,39,.14);outline-offset:2px}.classroom-tool-grid>button.waiting{opacity:.65;cursor:wait}.classroom-tool-grid i{display:grid;width:58px;height:58px;border-radius:13px;background:var(--night-surface,#f7ebe7);color:var(--red);place-items:center}.classroom-tool-grid .featured i{background:rgba(255,255,255,.15);color:#fff}.classroom-tool-grid svg{width:31px;height:31px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.classroom-tool-grid span{display:grid;gap:4px}.classroom-tool-grid b{font:700 24px/1.25 "STSong","SimSun",serif}.classroom-tool-grid small{color:var(--muted);font-size:12px}.classroom-tool-grid .featured small{color:#f3d9d7}.classroom-tool-grid em{color:var(--red);font-size:12px;font-style:normal;font-weight:800}.classroom-tool-grid .featured em{color:#fff}.classroom-workspace-foot{margin:17px 0 0;text-align:center;color:var(--muted);font-size:11px}.classroom-workspace-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;padding:10px 12px;border-bottom:1px solid #dfd2cb;background:var(--night-surface,#fff)}.classroom-workspace-toolbar[hidden]{display:none}.classroom-workspace-toolbar button{padding:7px 11px;border:1px solid #cfbdb4;background:var(--night-surface,#fff);color:var(--deep);font-weight:800}.classroom-workspace-toolbar span{color:var(--muted);font-size:11px}.classroom-mode #student-roster [data-roster-access="homeroom"],.classroom-mode #student-roster [data-roster-access="authorized"],.classroom-mode #student-roster [data-roster-access="special"],.classroom-mode #student-roster .roster-export{display:none!important}@media(max-width:700px){.classroom-mode-notice{align-items:flex-start;justify-content:space-between}.classroom-mode-notice span{max-width:68%}.classroom-workspace-head{align-items:flex-start;padding:26px 22px;flex-direction:column}.classroom-workspace-head h1{font-size:30px}.classroom-tool-grid{grid-template-columns:1fr}.classroom-tool-grid>button.featured{grid-column:auto}.classroom-tool-grid>button{min-height:116px;padding:18px;grid-template-columns:50px minmax(0,1fr) auto}.classroom-tool-grid i{width:50px;height:50px}.classroom-tool-grid b{font-size:21px}}
