:root{--ink:#24302b;--muted:#748079;--paper:#f6f4ec;--panel:#fffef9;--line:#e5e5d9;--sage:#728a52;--sage-dark:#50683b;--sage-soft:#e7eddc;--peach:#e9a48e;--peach-soft:#fae8df;--gold:#d6a94c;--blue:#7c9fa3;--red:#bf6a5b;--shadow:0 12px 34px rgba(41,52,43,.08);--radius:18px}
html{background:var(--paper)}
body{padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}
button,input,select,textarea{touch-action:manipulation}
@media (display-mode:standalone){body{overscroll-behavior-y:none}}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;font-size:14px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:#fbfaf4;border-right:1px solid var(--line);padding:24px 16px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 24px}.brand-mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:var(--sage);color:#fff;font-family:serif;font-size:22px;box-shadow:0 8px 20px rgba(80,104,59,.22)}.brand strong{font-size:16px;display:block}.brand span{font-size:12px;color:var(--muted);display:block;margin-top:4px}.nav{overflow:auto;padding-right:2px}.nav-label{font-size:10px;letter-spacing:.12em;color:#a2aaa4;margin:21px 12px 7px}.nav-item{width:100%;border:0;background:transparent;display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:11px;color:#59645e;text-align:left;margin:2px 0}.nav-item>span{width:22px;text-align:center;font-size:17px;color:#879187}.nav-item:hover{background:#f0f1e9;color:var(--ink)}.nav-item.active{background:var(--sage-soft);color:var(--sage-dark);font-weight:700}.nav-item.active>span{color:var(--sage-dark)}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:10px}.local-note{display:flex;align-items:center;gap:8px;font-size:10px;color:#8d968f;padding:9px 12px}.local-note i{width:7px;height:7px;background:#68a66b;border-radius:50%;box-shadow:0 0 0 3px #e8f2e8}.main{grid-column:2;min-width:0}.topbar{height:90px;padding:18px 34px;background:rgba(246,244,236,.92);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10;border-bottom:1px solid rgba(229,229,217,.75)}.topbar h1{margin:2px 0 0;font-family:serif;font-size:24px}.eyebrow,.section-kicker{font-size:10px;letter-spacing:.15em;color:var(--sage);font-weight:800;text-transform:uppercase}.top-actions,.inline-actions{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;display:grid;place-items:center;background:var(--peach-soft);color:#9c5b49;border-radius:50%;font-weight:800}.content{padding:28px 34px 60px;max-width:1500px;margin:auto}.view{display:none}.view.active{display:block;animation:rise .22s ease}@keyframes rise{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.primary-btn,.ghost-btn,.danger-btn,.text-btn{border:0;border-radius:10px;padding:10px 14px;font-weight:700}.primary-btn{background:var(--sage);color:white;box-shadow:0 7px 18px rgba(80,104,59,.18)}.primary-btn:hover{background:var(--sage-dark)}.ghost-btn{background:#fff;border:1px solid var(--line)}.ghost-btn:hover{border-color:#b6bfae;background:#fbfcf7}.danger-btn{background:#f9e3df;color:#a2473a}.text-btn{padding:8px;background:transparent;color:var(--sage-dark)}.icon-btn{border:0;background:transparent;font-size:22px;border-radius:8px;padding:6px 9px}.menu-btn{display:none}.welcome-banner{min-height:178px;border-radius:24px;padding:28px 34px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(120deg,#647b47,#91a871);color:#fff;overflow:hidden;position:relative;box-shadow:var(--shadow)}.welcome-banner:after{content:"";position:absolute;width:260px;height:260px;border:1px solid rgba(255,255,255,.18);border-radius:50%;right:-45px;top:-85px;box-shadow:0 0 0 32px rgba(255,255,255,.05),0 0 0 68px rgba(255,255,255,.04)}.welcome-banner h2{font:700 30px/1.2 serif;margin:14px 0 9px}.welcome-banner p{margin:0;color:#edf2e8}.pill{display:inline-flex;padding:6px 10px;border-radius:999px;background:var(--sage-soft);color:var(--sage-dark);font-size:11px;font-weight:800}.pill.light{background:rgba(255,255,255,.16);color:#fff}.date-orbit{position:relative;z-index:1;width:104px;height:104px;border-radius:50%;display:grid;place-content:center;text-align:center;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28)}.date-orbit b{font-size:40px;line-height:1}.date-orbit span{font-size:11px;margin-top:6px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.metric{background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:17px 18px;display:flex;align-items:center;gap:14px}.metric-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:var(--sage-soft);color:var(--sage-dark);font-size:19px}.metric:nth-child(2) .metric-icon{background:var(--peach-soft);color:#a4604e}.metric:nth-child(3) .metric-icon{background:#e5eff0;color:#557d81}.metric:nth-child(4) .metric-icon{background:#f5edd8;color:#9a762b}.metric b{font-size:23px;display:block}.metric span{font-size:12px;color:var(--muted)}.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.span-2{grid-column:span 2}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:21px;box-shadow:0 6px 24px rgba(54,66,57,.04)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.panel h3,.panel-head h3{margin:4px 0 0;font:700 19px serif}.todo-list{display:flex;flex-direction:column;gap:9px}.todo-item{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:12px;padding:13px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}.todo-item.done{opacity:.56}.todo-item.done .todo-title{text-decoration:line-through}.todo-check{appearance:none;width:19px;height:19px;border:1.5px solid #aab3a8;border-radius:6px;display:grid;place-content:center}.todo-check:checked{background:var(--sage);border-color:var(--sage)}.todo-check:checked:after{content:"✓";color:white;font-size:13px}.todo-title{font-weight:700}.todo-meta{font-size:11px;color:var(--muted);margin-top:4px}.category-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--peach);margin-right:5px}.priority{font-size:10px;padding:4px 7px;border-radius:999px;background:#f4f1e8;color:#806c44}.delete-btn{border:0;background:transparent;color:#b2b7b3;font-size:17px}.delete-btn:hover{color:var(--red)}.empty-state{text-align:center;padding:44px 20px;color:var(--muted)}.empty-state b{display:block;color:var(--ink);font:700 18px serif;margin:8px}.daily-resource{background:linear-gradient(155deg,#fffef9 54%,#edf1e5)}.daily-resource h4{font:700 20px/1.45 serif;margin:12px 0 9px}.daily-resource p{line-height:1.7;color:var(--muted)}.resource-source{font-size:11px;color:var(--sage-dark);font-weight:800}.resource-link{display:inline-block;margin-top:12px;color:var(--sage-dark);font-weight:800;text-decoration:none}.growth-mini{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}.growth-mini:last-child{border:0}.student-badge{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--peach-soft);color:#9d5e4e;font-weight:800}.growth-mini p{margin:3px 0 0;color:var(--muted);font-size:12px}.growth-mini time{font-size:10px;color:#9ba39d}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.quick-grid button{border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px 8px;text-align:center;font-size:12px}.quick-grid button span{display:block;font-size:20px;color:var(--sage);margin-bottom:6px}.page-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.filter-chips,.segmented{display:flex;gap:6px;flex-wrap:wrap}.filter-chips button,.segmented button{border:1px solid var(--line);background:#fff;padding:8px 13px;border-radius:999px;color:var(--muted)}.filter-chips button.active,.segmented button.active{background:var(--sage);color:#fff;border-color:var(--sage)}.search-box{height:42px;min-width:330px;background:#fff;border:1px solid var(--line);border-radius:11px;display:flex;align-items:center;gap:8px;padding:0 13px;color:var(--muted)}.search-box input{border:0;outline:0;width:100%;background:transparent}.student-stats{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}.stat-chip{background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 11px;font-size:11px;color:var(--muted)}.stat-chip b{color:var(--ink);margin-left:4px}.student-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.student-card{border:1px solid var(--line);background:var(--panel);border-radius:15px;padding:16px;text-align:left;transition:.16s;cursor:pointer}.student-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#cdd6c4}.student-card-head{display:flex;align-items:center;gap:11px}.student-avatar{width:43px;height:43px;display:grid;place-items:center;border-radius:13px;background:var(--sage-soft);color:var(--sage-dark);font-weight:900}.student-card.female .student-avatar{background:var(--peach-soft);color:#a35b4a}.student-card h4{margin:0;font-size:15px}.student-card small{color:var(--muted)}.tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:12px}.tag{font-size:10px;padding:4px 7px;border-radius:999px;background:#f0f2ec;color:#607050}.tag.interest{background:#f8eee8;color:#94634f}.seat-toolbar{display:grid;grid-template-columns:1fr minmax(280px,520px) 1fr;align-items:center;color:var(--muted);font-size:10px;text-align:center;margin-bottom:18px}.blackboard{background:#435347;color:#eaf0e8;border-radius:8px;padding:12px;font-size:12px;letter-spacing:.1em;box-shadow:inset 0 0 0 3px #66756b}.teams-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 48px;position:relative}.teams-grid:after{content:"过 道";white-space:pre;position:absolute;inset:0 auto 0 50%;width:40px;transform:translateX(-50%);display:grid;place-items:center;color:#c4c8c0;font-size:10px;letter-spacing:.25em;writing-mode:vertical-rl}.team-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:13px}.team-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.team-title{font-weight:800}.team-pos{font-size:10px;color:var(--muted)}.seat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.seat{border:1px solid var(--line);background:#fafbf7;border-radius:10px;padding:9px 7px;display:flex;align-items:center;gap:8px;min-width:0}.seat:hover{border-color:var(--sage)}.seat.dragging{opacity:.45}.seat-no{font-size:10px;color:var(--sage);font-weight:800}.seat-name{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.helper,.lead,.muted{color:var(--muted)}.helper{font-size:11px;text-align:center;margin-top:14px}.select,.lesson-form input,.lesson-form textarea,.score-aside input,.score-aside textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 11px;outline:none}.select:focus,.lesson-form input:focus,.lesson-form textarea:focus,.score-aside input:focus,.score-aside textarea:focus{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.score-layout{display:grid;grid-template-columns:1fr 290px;gap:16px}.table-panel{padding:0;overflow:hidden}.table-wrap{overflow:auto;max-height:620px}table{width:100%;border-collapse:collapse}th,td{padding:11px 14px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}th{position:sticky;top:0;background:#f2f4ec;color:#65705f;font-size:11px;z-index:1}td{font-size:12px}.score-input{width:90px;border:1px solid var(--line);border-radius:8px;padding:7px}.grade{font-size:10px;border-radius:999px;padding:4px 8px;background:#eef2e8}.score-aside label,.lesson-form label{display:block;font-size:11px;color:var(--muted);margin:16px 0}.score-aside label input,.score-aside label textarea,.lesson-form label input,.lesson-form label textarea,.lesson-form label select{display:block;margin-top:7px;color:var(--ink)}.timeline{position:relative;padding-left:14px}.timeline:before{content:"";position:absolute;left:26px;top:12px;bottom:12px;width:1px;background:var(--line)}.timeline-item{display:grid;grid-template-columns:24px 1fr auto;gap:18px;position:relative;padding:8px 4px 22px}.timeline-dot{width:13px;height:13px;border-radius:50%;margin-top:4px;background:var(--sage);border:3px solid #fff;box-shadow:0 0 0 2px var(--sage-soft);z-index:1}.timeline-content{background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px}.timeline-content h4{margin:0 0 6px}.timeline-content p{margin:0;color:var(--muted);line-height:1.6}.timeline-date{font-size:11px;color:var(--muted)}.script-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.script-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column}.script-card h3{font:700 17px serif;margin:11px 0}.script-card p{white-space:pre-wrap;line-height:1.75;color:#58635d;flex:1}.script-actions{display:flex;justify-content:space-between;align-items:center;margin-top:13px}.script-type{font-size:10px;color:var(--sage);font-weight:800}.teaching-hero{background:#e9eee0;border:1px solid #d9e0cf;border-radius:20px;padding:27px 30px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between}.teaching-hero h2{font:700 27px serif;margin:13px 0 8px}.teaching-hero p{margin:0;color:var(--muted)}.link-btn{text-decoration:none}.teaching-grid{grid-template-columns:1.5fr .7fr}.lesson-form label:first-child{margin-top:0}.resource-list{display:flex;flex-direction:column;gap:10px}.resource-item{display:block;border:1px solid var(--line);border-radius:12px;padding:12px;text-decoration:none;background:#fff}.resource-item:hover{border-color:#bdc9b4}.resource-item b{display:block;font-size:13px}.resource-item span{display:block;color:var(--muted);font-size:10px;margin-top:5px}.feedback-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px}.feedback-preview{min-height:480px;border:1px dashed #ccd2c5;border-radius:14px;background:#fbfcf8;padding:22px;white-space:pre-wrap;line-height:1.85;color:#435048}.feedback-preview>span{color:#9da49f}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.settings-grid .panel{min-height:220px}.settings-grid p{line-height:1.7;color:var(--muted)}.stack-actions{display:flex;gap:10px;margin-top:24px}.file-btn input{display:none}.danger-panel{border-color:#efd8d3;background:#fffaf8}.clean-list{line-height:2;color:var(--muted)}.modal-backdrop{position:fixed;inset:0;background:rgba(28,36,31,.45);z-index:50;display:grid;place-items:center;padding:22px;backdrop-filter:blur(3px)}.modal-backdrop[hidden]{display:none}.modal{background:var(--panel);border-radius:20px;width:min(680px,100%);max-height:88vh;overflow:auto;box-shadow:0 26px 70px rgba(30,38,33,.25);padding:22px}.modal-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:16px}.modal-head h3{font:700 21px serif;margin:4px 0 0}.modal-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.modal-form label{font-size:11px;color:var(--muted)}.modal-form input,.modal-form select,.modal-form textarea{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff}.modal-form .full{grid-column:1/-1}.modal-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:9px;margin-top:8px}.profile-note{line-height:1.8;background:#f8f8f2;border-radius:12px;padding:14px;color:#566159;max-height:240px;overflow:auto}.toast{position:fixed;right:28px;bottom:26px;background:#344039;color:#fff;border-radius:11px;padding:11px 15px;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s;z-index:80}.toast.show{opacity:1;transform:none}
@media(max-width:1100px){.student-grid{grid-template-columns:repeat(3,1fr)}.metric-grid{grid-template-columns:1fr 1fr}.script-grid{grid-template-columns:1fr 1fr}.teams-grid{gap:14px 32px}.score-layout{grid-template-columns:1fr}.score-aside{order:-1}.teaching-grid{grid-template-columns:1fr}.teaching-grid .span-2{grid-column:auto}}
@media(max-width:820px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.2s;box-shadow:var(--shadow)}.sidebar.open{transform:none}.main{grid-column:auto}.menu-btn{display:block}.topbar{height:78px;padding:13px 18px}.topbar .ghost-btn,.avatar{display:none}.content{padding:20px 16px 50px}.dashboard-grid,.feedback-layout,.settings-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.student-grid{grid-template-columns:1fr 1fr}.teams-grid{grid-template-columns:1fr;gap:13px}.teams-grid:after{display:none}.script-grid{grid-template-columns:1fr}.page-actions{align-items:stretch;flex-direction:column}.search-box{min-width:0;width:100%}.teaching-hero{align-items:flex-start;gap:16px;flex-direction:column}.welcome-banner{padding:25px}.date-orbit{display:none}.modal-form{grid-template-columns:1fr}.modal-form .full{grid-column:auto}}
@media(max-width:520px){.top-actions .primary-btn{font-size:0}.top-actions .primary-btn:after{content:"＋";font-size:18px}.student-grid,.metric-grid{grid-template-columns:1fr}.seat-grid{grid-template-columns:1fr 1fr}.score-metrics{grid-template-columns:1fr 1fr}.quick-grid{grid-template-columns:1fr 1fr}.stack-actions{flex-direction:column}.modal{padding:18px}.feedback-preview{min-height:320px}}

/* 可切换主题 */
html[data-theme="ocean"]{--sage:#397d8d;--sage-dark:#245966;--sage-soft:#dcecef;--peach:#e39b78;--peach-soft:#fae5da}
html[data-theme="violet"]{--sage:#7b68a6;--sage-dark:#584580;--sage-soft:#e9e3f2;--peach:#d78ca4;--peach-soft:#f6e2e9}
html[data-theme="terracotta"]{--sage:#b76848;--sage-dark:#87462f;--sage-soft:#f3e2d9;--peach:#d79a4d;--peach-soft:#f8ead5}
body,.sidebar,.topbar,.panel,.student-card,.todo-item,.metric,.seat,.resource-item,input,select,textarea{transition:background-color .22s,color .22s,border-color .22s}

/* 夜间模式 */
html[data-mode="dark"]{color-scheme:dark;--ink:#edf2ee;--muted:#9ba79f;--paper:#111713;--panel:#1a211c;--line:#323c34;--sage-soft:#2b392c;--peach-soft:#3b2c29;--shadow:0 14px 38px rgba(0,0,0,.28)}
html[data-mode="dark"] .sidebar{background:#151b17}
html[data-mode="dark"] .topbar{background:rgba(17,23,19,.92)}
html[data-mode="dark"] .nav-item:hover,html[data-mode="dark"] .nav-item.active{background:var(--sage-soft)}
html[data-mode="dark"] .ghost-btn,html[data-mode="dark"] .todo-item,html[data-mode="dark"] .student-card,html[data-mode="dark"] .search-box,html[data-mode="dark"] .filter-chips button,html[data-mode="dark"] .segmented button,html[data-mode="dark"] .quick-grid button,html[data-mode="dark"] .resource-item,html[data-mode="dark"] .timeline-content,html[data-mode="dark"] .select,html[data-mode="dark"] input,html[data-mode="dark"] select,html[data-mode="dark"] textarea{background:#202822;color:var(--ink)}
html[data-mode="dark"] th{background:#252e27;color:#b9c4bc}
html[data-mode="dark"] .feedback-preview,html[data-mode="dark"] .profile-note{background:#151c17;color:#c5cec7}
html[data-mode="dark"] .teaching-hero{background:#222d24;border-color:#364238}
html[data-mode="dark"] .script-card p,html[data-mode="dark"] .growth-mini p{color:#abb6ae}
html[data-mode="dark"] .danger-panel{background:#261d1b;border-color:#563833}
html[data-mode="dark"] .blackboard{background:#070c09}
html[data-mode="dark"] .seat-map .seat{background:color-mix(in srgb,var(--team-color) 17%,var(--panel))}

/* 待办红点 */
.nav-alert-dot{width:8px;height:8px;border-radius:50%;background:#d84e45;margin-left:auto;box-shadow:0 0 0 3px rgba(216,78,69,.13);animation:alertPulse 1.9s infinite}
.nav-alert-dot.hidden{display:none}
.todo-status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#d84e45;margin-right:7px;vertical-align:1px;box-shadow:0 0 0 3px rgba(216,78,69,.10)}
.todo-item.done .todo-status-dot{background:#aeb7b0;box-shadow:none}
@keyframes alertPulse{50%{box-shadow:0 0 0 6px rgba(216,78,69,0)}}

/* 外观控制 */
.appearance-controls{position:relative;display:flex;gap:5px;align-items:center}
.appearance-btn{width:38px;height:38px;font-size:17px;background:var(--panel);border:1px solid var(--line);display:grid;place-items:center}
.theme-popover{position:absolute;right:0;top:46px;width:166px;padding:13px;background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);z-index:30}
.theme-popover[hidden]{display:none}.theme-popover>span{font-size:11px;color:var(--muted);font-weight:700}
.theme-swatches{display:flex;gap:10px;margin-top:10px}.theme-swatches.large{margin-top:20px}
.theme-swatches button{width:24px;height:24px;border:3px solid var(--panel);border-radius:50%;box-shadow:0 0 0 1px var(--line)}.theme-swatches.large button{width:38px;height:38px}
.theme-swatches button.sage{background:#728a52}.theme-swatches button.ocean{background:#397d8d}.theme-swatches button.violet{background:#7b68a6}.theme-swatches button.terracotta{background:#b76848}
.theme-swatches button.active{box-shadow:0 0 0 3px var(--ink)}

/* 8列×6排参考座位表 */
.seat-actions{flex-wrap:wrap;justify-content:flex-end}
.seat-map-wrap{overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow)}
.seat-map{display:grid;grid-template-columns:minmax(76px,1fr) minmax(76px,1fr) 24px minmax(76px,1fr) minmax(76px,1fr) 24px minmax(76px,1fr) minmax(76px,1fr) 24px minmax(76px,1fr) minmax(76px,1fr);grid-template-rows:repeat(6,minmax(76px,1fr));gap:7px;min-width:860px;min-height:505px}
.seat-map .seat{display:block;position:relative;min-width:0;padding:8px;border:2px solid var(--team-color);border-radius:12px;background:linear-gradient(145deg,var(--team-soft),var(--panel) 74%);cursor:grab;text-align:center;user-select:none}
.seat-map .seat:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(31,48,38,.14)}
.seat-map .seat.dragging{opacity:.4}.seat-map .seat.drop-target{outline:3px solid color-mix(in srgb,var(--team-color) 35%,transparent)}
.seat-team{font-size:10px;color:var(--team-color);font-weight:900;text-align:left}.seat-map .seat-name{display:block;font-size:17px;line-height:1.2;margin:10px 0 6px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seat-map .seat-no{display:block;text-align:center;color:var(--muted)}
.team-boundary-top{box-shadow:inset 0 4px 0 var(--team-color)}.team-boundary-bottom{box-shadow:inset 0 -4px 0 var(--team-color)}
.team-legend{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:12px}.legend-item{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);padding:5px 8px;background:var(--panel);border:1px solid var(--line);border-radius:999px}.legend-dot{width:10px;height:10px;border-radius:3px;background:var(--team-color)}
@media(max-width:820px){.appearance-controls{margin-left:auto}.seat-actions{justify-content:flex-start}.seat-map-wrap{padding:10px}}

/* 数字待办徽标 */
.nav-alert-dot{width:auto;min-width:20px;height:20px;padding:0 5px;border-radius:999px;display:inline-grid;place-items:center;color:#fff;font-size:10px;font-style:normal;font-weight:900;line-height:1;background:#d84e45;margin-left:auto;box-shadow:0 0 0 3px rgba(216,78,69,.13)}
.nav-alert-dot.hidden{display:none}

/* 学生头像与档案卡 */
.student-card{position:relative;overflow:hidden;padding:18px}.student-card:after{content:"";position:absolute;width:80px;height:80px;border-radius:50%;right:-38px;top:-38px;background:var(--sage-soft);opacity:.55}.student-card.female:after{background:var(--peach-soft)}
.student-card-head{gap:14px;position:relative;z-index:1}.student-avatar{width:56px;height:56px;border-radius:50%;font-size:30px;background:linear-gradient(145deg,#e4efd9,#f8fbf4);border:3px solid #fff;box-shadow:0 5px 14px rgba(67,84,68,.12)}
.student-card.female .student-avatar{background:linear-gradient(145deg,#fae0e2,#fff5f2)}.student-card h4{font-size:16px}.student-card small{display:block;margin-top:5px}.student-gender-chip{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:999px;background:var(--sage-soft);color:var(--sage-dark);font-size:9px}.student-card.female .student-gender-chip{background:var(--peach-soft);color:#a35b4a}
html[data-mode="dark"] .student-avatar{border-color:#263029;background:#29372b}html[data-mode="dark"] .student-card.female .student-avatar{background:#3c2c30}

/* 成绩录入中心 */
.score-command-bar{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 24px;margin-bottom:16px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(135deg,var(--panel),var(--sage-soft));box-shadow:var(--shadow)}
.score-command-bar h2,.analysis-heading h2{font:700 23px serif;margin:5px 0}.score-command-bar p,.analysis-card>p{margin:0;color:var(--muted);font-size:11px}.score-command-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.score-command-actions .select{width:190px}.import-btn{display:inline-flex;align-items:center}.score-metrics .metric{position:relative;overflow:hidden}.score-metrics .metric:after{content:"";position:absolute;width:55px;height:55px;right:-25px;bottom:-25px;border-radius:50%;background:var(--sage-soft)}
.score-layout{grid-template-columns:minmax(0,1fr) 275px}.score-table-panel{padding:0}.score-table-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 13px;border-bottom:1px solid var(--line)}.score-table-head h3{margin:4px 0 0;font:700 18px serif}.score-table{border-collapse:separate;border-spacing:0}.score-table th{padding:12px 16px;background:#eef2e9;color:#5e6b61}.score-table td{padding:10px 16px;background:var(--panel)}.score-table tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--sage-soft) 25%,var(--panel))}.score-table tbody tr:hover td{background:color-mix(in srgb,var(--sage-soft) 62%,var(--panel))}.score-student{display:flex;align-items:center;gap:10px}.score-student-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:19px;background:#e7efe0}.score-student-avatar.female{background:#fae4e4}.score-rank{display:inline-grid;place-items:center;width:25px;height:25px;border-radius:8px;background:#f0f2ec;color:var(--muted);font-size:11px;font-weight:800}.score-rank.top{background:#f8e7b8;color:#8a671f}.score-input{width:86px;text-align:center;font-size:14px;font-weight:800;border:1px solid var(--line);background:var(--panel)}.score-input:focus{outline:0;border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.grade{display:inline-block;min-width:52px;text-align:center;font-weight:800}.grade-excellent{background:#dfeee1;color:#397044}.grade-good{background:#e1edf1;color:#3e6f7b}.grade-pass{background:#f5ecd5;color:#8d6b28}.grade-watch{background:#f7ded9;color:#a34e41}.grade-pending{background:#ecefea;color:#778079}.score-aside{align-self:start;position:sticky;top:108px}.import-guide{margin-top:18px;padding:12px;border-radius:11px;background:var(--sage-soft);color:var(--sage-dark)}.import-guide p{font-size:10px;line-height:1.65;margin:5px 0 0}.analysis-section{margin-top:26px}.analysis-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:13px}.analysis-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.analysis-card{min-height:240px}.analysis-card h3{font:700 18px serif;margin:0 0 6px}.bar-chart,.team-bars,.compare-chart{margin-top:20px;display:flex;flex-direction:column;gap:11px}.chart-row{display:grid;grid-template-columns:58px 1fr 34px;gap:9px;align-items:center;font-size:10px}.chart-track{height:10px;border-radius:999px;background:#edf0e9;overflow:hidden}.chart-fill{height:100%;min-width:2px;border-radius:999px;background:var(--sage)}.chart-row:nth-child(2) .chart-fill{background:var(--blue)}.chart-row:nth-child(3) .chart-fill{background:var(--gold)}.chart-row:nth-child(4) .chart-fill{background:var(--peach)}.chart-row:nth-child(5) .chart-fill{background:var(--red)}.donut-layout{display:flex;align-items:center;justify-content:center;gap:22px;margin-top:22px}.donut{width:126px;height:126px;border-radius:50%;display:grid;place-items:center;position:relative}.donut:after{content:"";position:absolute;width:74px;height:74px;border-radius:50%;background:var(--panel)}.donut-center{position:relative;z-index:1;text-align:center}.donut-center b{display:block;font-size:22px}.donut-center span{font-size:9px;color:var(--muted)}.chart-legend{display:flex;flex-direction:column;gap:7px;font-size:10px}.chart-legend i{display:inline-block;width:8px;height:8px;border-radius:3px;margin-right:6px}.compare-item{display:grid;grid-template-columns:48px 1fr 40px;align-items:center;gap:8px}.compare-track{height:28px;background:#edf0e9;border-radius:8px;overflow:hidden}.compare-fill{height:100%;display:flex;align-items:center;padding-left:9px;color:#fff;font-size:10px;font-weight:800;background:var(--sage)}.compare-item.female .compare-fill{background:var(--peach)}.team-bars{display:grid;grid-template-columns:1fr 1fr;gap:10px 13px}.team-row{font-size:10px}.team-row-head{display:flex;justify-content:space-between;margin-bottom:4px}.team-row .chart-track{height:7px}.trend-chart{height:185px;display:flex;align-items:end;gap:10px;margin-top:15px;padding:8px 6px 0;border-bottom:1px solid var(--line)}.trend-column{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;min-width:44px}.trend-bar{width:min(44px,70%);border-radius:8px 8px 2px 2px;background:linear-gradient(180deg,var(--sage),var(--sage-dark));min-height:3px;position:relative}.trend-bar b{position:absolute;top:-20px;width:100%;text-align:center;font-size:10px}.trend-column span{font-size:9px;color:var(--muted);max-width:72px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.analysis-advice{margin-top:17px;display:flex;flex-direction:column;gap:9px}.advice-item{padding:10px 11px;border-left:3px solid var(--sage);border-radius:7px;background:var(--sage-soft);font-size:11px;line-height:1.6}.analysis-empty{height:150px;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:11px}
html[data-mode="dark"] .score-command-bar{background:linear-gradient(135deg,var(--panel),#253027)}html[data-mode="dark"] .score-table th{background:#252e27}html[data-mode="dark"] .score-table td{background:var(--panel)}html[data-mode="dark"] .chart-track,html[data-mode="dark"] .compare-track{background:#2a332c}html[data-mode="dark"] .score-student-avatar{background:#29362c}html[data-mode="dark"] .score-student-avatar.female{background:#3d2d31}

/* 家长沟通类型配色 */
.script-card{position:relative;border-top:5px solid var(--script-color,var(--sage))}.script-card.type-praise{--script-color:#d89a36;--script-soft:#fff3d8;--script-ink:#916318}.script-card.type-notice{--script-color:#4d89b7;--script-soft:#e5f1fa;--script-ink:#376b91}.script-card.type-talk{--script-color:#b66b91;--script-soft:#f7e4ee;--script-ink:#8e4d70}.script-card.type-feedback{--script-color:#5a9361;--script-soft:#e3f1e4;--script-ink:#3d7043}.script-card .pill{background:var(--script-soft);color:var(--script-ink)}.script-card .script-type{color:var(--script-color)}
html[data-mode="dark"] .script-card .pill{background:color-mix(in srgb,var(--script-color) 22%,var(--panel));color:color-mix(in srgb,var(--script-color) 65%,white)}

@media(max-width:1100px){.score-command-bar{align-items:flex-start;flex-direction:column}.score-command-actions{justify-content:flex-start}.analysis-grid{grid-template-columns:1fr 1fr}.analysis-card.span-2{grid-column:span 2}}
@media(max-width:760px){.analysis-grid{grid-template-columns:1fr}.analysis-card.span-2{grid-column:auto}.score-command-actions{width:100%}.score-command-actions>*{flex:1}.score-command-actions .select{width:auto;flex-basis:100%}.score-aside{position:static}.student-avatar{width:50px;height:50px}.score-table th,.score-table td{padding:9px 11px}.analysis-heading{align-items:flex-start;flex-direction:column;gap:5px}}

/* 本地登录入口 */
.login-screen{position:fixed;inset:0;z-index:200;display:grid;grid-template-columns:minmax(360px,1.15fr) minmax(440px,.85fr);background:var(--paper)}
body.is-authenticated .login-screen{display:none}body:not(.is-authenticated){overflow:hidden}body:not(.is-authenticated) .app-shell{visibility:hidden}
.login-visual{position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:8vw;background:linear-gradient(145deg,var(--sage-dark),var(--sage) 55%,#9caf7e);color:#fff}
.login-visual:before{content:"";position:absolute;right:5%;top:-5%;width:min(36vw,540px);aspect-ratio:1;border:1px solid rgba(255,255,255,.15);border-radius:47% 53% 44% 56%;background:radial-gradient(circle at 50% 50%,transparent 0 27%,rgba(255,255,255,.07) 27.5% 28%,transparent 28.5% 43%,rgba(255,255,255,.065) 43.5% 44%,transparent 44.5%),conic-gradient(from 25deg,transparent 0 17%,rgba(255,255,255,.07) 17% 24%,transparent 24% 49%,rgba(255,255,255,.06) 49% 57%,transparent 57% 82%,rgba(255,255,255,.075) 82% 89%,transparent 89%);box-shadow:0 0 0 52px rgba(255,255,255,.025),0 0 0 112px rgba(255,255,255,.015);opacity:.8;rotate:-9deg}
.login-visual:after{content:"";position:absolute;right:12%;top:12%;width:min(22vw,330px);height:min(16vw,240px);background:linear-gradient(90deg,rgba(255,255,255,.15) 0 47%,transparent 47% 53%,rgba(255,255,255,.15) 53% 100%);clip-path:polygon(0 5%,44% 18%,50% 100%,56% 18%,100% 5%,96% 82%,56% 100%,50% 94%,44% 100%,4% 82%);filter:drop-shadow(0 18px 24px rgba(21,66,79,.08));opacity:.72;rotate:-4deg}
.login-quote{position:relative;z-index:2;max-width:660px}.login-quote>span{font-size:11px;letter-spacing:.22em;font-weight:800;opacity:.75}.login-quote h2{font:700 clamp(30px,4vw,54px)/1.35 serif;margin:18px 0}.login-quote p{font-size:15px;opacity:.82}.login-feature-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.login-feature-list span{padding:8px 13px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(255,255,255,.1);font-size:11px;font-weight:800;letter-spacing:.04em;backdrop-filter:blur(8px)}
.login-orbit{position:absolute;border:1px solid rgba(255,255,255,.18);border-radius:50%}.orbit-one{width:380px;height:380px;right:-90px;top:-90px;box-shadow:0 0 0 45px rgba(255,255,255,.04),0 0 0 92px rgba(255,255,255,.025)}.orbit-two{width:160px;height:160px;left:15%;top:16%;box-shadow:0 0 0 24px rgba(255,255,255,.035)}
.login-panel{position:relative;display:grid;place-items:center;padding:42px 42px 116px;background:var(--panel)}.login-card{width:min(410px,100%)}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.login-brand strong,.login-brand span{display:block}.login-brand strong{font-size:17px}.login-brand span{font-size:11px;color:var(--muted);margin-top:4px}.login-card h1{font:700 31px serif;margin:8px 0}.login-card>p,.auth-form>p{color:var(--muted);margin:0 0 28px}.auth-form>label{display:block;color:var(--muted);font-size:11px;font-weight:700;margin:15px 0}.login-card input{display:block;width:100%;margin-top:7px;padding:13px 14px;border:1px solid var(--line);border-radius:11px;background:var(--panel)}.login-card input:focus{outline:0;border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.password-field{position:relative}.password-field input{padding-right:64px}.password-field button{position:absolute;right:7px;top:13px;border:0;background:transparent;color:var(--sage-dark);font-size:11px;font-weight:800}.login-error{min-height:21px;color:var(--red);font-size:11px}.login-submit{width:100%;padding:13px 16px;display:flex;justify-content:space-between}.demo-account{margin-top:22px;padding:12px 14px;border:1px dashed var(--line);border-radius:11px;background:var(--sage-soft);display:flex;gap:13px;align-items:center;font-size:10px;color:var(--sage-dark)}.demo-account b{margin-right:auto}.user-menu-btn{border:0;cursor:pointer}.user-menu-btn:hover{outline:3px solid var(--sage-soft)}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:22px;padding:4px;border:1px solid var(--line);border-radius:13px;background:var(--theme-table)}.auth-tabs button{padding:9px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-weight:800;cursor:pointer}.auth-tabs button.active{background:var(--panel);color:var(--sage-dark);box-shadow:0 3px 12px rgba(34,55,47,.09)}.auth-form[hidden]{display:none}.register-role-note{padding:10px 12px;border-left:3px solid var(--sage);border-radius:0 9px 9px 0;background:var(--sage-soft);font-size:10px;font-weight:700}.register-role-note+label{margin-top:12px}
.login-copyright{position:absolute;left:42px;right:42px;bottom:34px;display:flex;flex-direction:column;align-items:center;gap:6px;padding-top:18px;border-top:1px solid color-mix(in srgb,var(--line) 72%,transparent);color:var(--muted);text-align:center}.login-copyright span{font-size:10px;font-weight:800;letter-spacing:.04em}.login-copyright small{font-size:9px;opacity:.76}
.login-author{position:absolute;right:42px;bottom:112px;display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border:1px solid #d8c6ee;border-radius:11px;background:linear-gradient(135deg,#f5effc,#ebe1f7);color:#734b9a;box-shadow:0 6px 16px rgba(112,72,151,.12)}.login-author span{display:grid;width:22px;height:22px;place-items:center;border-radius:7px;background:#fff;color:#9a65c7;font-size:12px}.login-author b{font-size:10px;letter-spacing:.07em}
.auth-form>.login-terms{display:flex;align-items:flex-start;gap:4px;margin:7px 0 10px;color:var(--muted);font-size:11px;font-weight:700;line-height:1.55}.login-terms label{display:flex;align-items:flex-start;gap:9px;cursor:pointer}.auth-form>.login-terms input{width:17px;height:17px;flex:0 0 17px;margin:0;padding:0;border-radius:5px;accent-color:var(--sage)}.auth-form>.login-terms input:focus{box-shadow:0 0 0 3px var(--sage-soft)}.login-terms span{display:inline}.login-terms button{display:inline;padding:0;border:0;background:transparent;color:var(--sage-dark);font-weight:900;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.login-submit:disabled{opacity:.48;cursor:not-allowed;box-shadow:none}.usage-terms{display:grid;gap:13px;color:var(--ink);font-size:12px;line-height:1.75}.usage-terms-intro{margin:0;padding:13px 15px;border-left:4px solid var(--sage);border-radius:0 12px 12px 0;background:var(--sage-soft);font-weight:800}.usage-terms section{padding:13px 15px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--panel) 88%,var(--sage-soft))}.usage-terms h4{margin:0 0 5px;font-size:13px}.usage-terms p{margin:0;color:var(--muted)}.usage-terms strong{color:#a4493e}.usage-terms .modal-actions{margin-top:2px}
.modal.usage-terms-modal{width:min(700px,calc(100vw - 32px));max-height:min(86vh,760px);overflow-y:auto}.usage-terms-modal .modal-head{position:sticky;z-index:2;top:-22px;background:var(--panel)}
.modal-backdrop.login-terms-backdrop{z-index:260}

/* 课堂抽奖 */
.lottery-hero{position:relative;overflow:hidden;min-height:158px;padding:29px 34px;margin-bottom:16px;border-radius:22px;background:linear-gradient(125deg,#7b4bb7,#a06ad1 48%,#e69a76);color:#fff;box-shadow:var(--shadow)}.lottery-hero:after{content:"";position:absolute;width:250px;height:250px;border:1px solid rgba(255,255,255,.18);border-radius:50%;right:-42px;top:-100px;box-shadow:0 0 0 34px rgba(255,255,255,.05),0 0 0 72px rgba(255,255,255,.035)}.lottery-hero h2{font:700 29px serif;margin:12px 0 8px}.lottery-hero p{margin:0;opacity:.84}.lottery-sparkles i{position:absolute;font-style:normal;z-index:2}.lottery-sparkles i:nth-child(1){right:18%;top:30px;font-size:31px;animation:twinkle 1.8s infinite}.lottery-sparkles i:nth-child(2){right:10%;bottom:24px;font-size:22px;animation:twinkle 2.2s .3s infinite}.lottery-sparkles i:nth-child(3){right:27%;bottom:18px;font-size:18px;animation:twinkle 1.5s .6s infinite}@keyframes twinkle{50%{transform:scale(.55) rotate(25deg);opacity:.35}}
.lottery-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr);gap:16px}.lottery-stage-panel{padding:18px}.lottery-stage{min-height:420px;position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-radius:18px;background:radial-gradient(circle at 50% 42%,var(--panel) 0 14%,var(--sage-soft) 54%,color-mix(in srgb,var(--peach-soft) 70%,var(--panel)));border:1px solid var(--line)}.lottery-stage h2{position:relative;z-index:3;font:800 clamp(28px,4vw,46px) serif;margin:17px 0 7px}.lottery-stage p{position:relative;z-index:3;margin:0;color:var(--muted);font-weight:700}.lottery-ball{position:relative;z-index:3;width:118px;height:118px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#fff,#f3e9ff);border:8px solid rgba(139,88,191,.15);box-shadow:0 18px 42px rgba(101,61,137,.18)}.lottery-ball span{font-size:52px}.lottery-ring{position:absolute;border-radius:50%;border:1px dashed color-mix(in srgb,var(--sage) 42%,transparent)}.ring-a{width:285px;height:285px}.ring-b{width:380px;height:380px;opacity:.5}.lottery-stage.drawing .lottery-ball{animation:shakeBall .16s infinite alternate}.lottery-stage.drawing .ring-a{animation:spin 2s linear infinite}.lottery-stage.drawing .ring-b{animation:spin 3s linear reverse infinite}.lottery-stage.winner .lottery-ball{animation:winnerPop .65s ease}.lottery-stage.winner:after{content:"✦  ★  ✧  ✦  ★";position:absolute;inset:0;display:grid;place-items:center;color:#d6923b;font-size:28px;letter-spacing:45px;animation:confetti 1s ease both}@keyframes shakeBall{to{transform:translate(5px,-4px) rotate(5deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes winnerPop{50%{transform:scale(1.2);box-shadow:0 20px 60px rgba(214,146,59,.38)}}@keyframes confetti{from{opacity:0;transform:scale(.3) rotate(-20deg)}55%{opacity:1}to{opacity:0;transform:scale(1.3) rotate(15deg)}}
.lottery-actions{display:flex;justify-content:center;gap:10px;padding-top:15px}.lottery-start{min-width:170px;font-size:16px;background:linear-gradient(110deg,#7950aa,#b36bc4)}.lottery-start:hover{filter:brightness(.94)}.lottery-start:disabled{opacity:.6;cursor:wait}.lottery-settings h3{font:700 22px serif;margin:5px 0 20px}.lottery-settings>label{display:block;margin:14px 0;color:var(--muted);font-size:11px}.lottery-settings label small{float:right}.lottery-settings select,.lottery-settings textarea{display:block;width:100%;margin-top:7px;border:1px solid var(--line);border-radius:11px;padding:11px;background:var(--panel)}.lottery-settings textarea{line-height:1.75;resize:vertical}.lottery-check{display:flex!important;align-items:center;gap:8px}.lottery-check input{width:17px;height:17px}.lottery-pool-info{margin-top:14px;padding:11px;border-radius:10px;background:var(--sage-soft);font-size:11px;color:var(--sage-dark);line-height:1.6}.lottery-history-panel{margin-top:16px}.lottery-history{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.lottery-history-item{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--sage-soft) 28%,var(--panel))}.lottery-history-avatar{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:22px;background:var(--panel)}.lottery-history-item b,.lottery-history-item span{display:block}.lottery-history-item span{color:var(--muted);font-size:10px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lottery-empty{grid-column:1/-1;text-align:center;color:var(--muted);padding:24px}
html[data-mode="dark"] .login-visual{background:linear-gradient(145deg,#26372c,#506b55 58%,#735447)}html[data-mode="dark"] .login-panel{background:#171e19}html[data-mode="dark"] .lottery-stage{background:radial-gradient(circle at 50% 42%,#242d26,#202a23 56%,#2e252a)}html[data-mode="dark"] .lottery-ball{background:linear-gradient(145deg,#2d362f,#34283c);border-color:rgba(183,130,218,.18)}
@media(max-width:1000px){.login-screen{grid-template-columns:1fr}.login-visual{display:none}.lottery-layout{grid-template-columns:1fr}.lottery-history{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.login-panel{padding:24px 24px 104px}.login-brand{margin-bottom:38px}.login-copyright{left:24px;right:24px;bottom:24px}.demo-account{align-items:flex-start;flex-direction:column;gap:5px}.user-menu-btn{display:grid}.lottery-stage{min-height:350px}.lottery-history{grid-template-columns:1fr}.lottery-actions{flex-direction:column}.lottery-actions button{width:100%}}
@media(max-height:700px){.login-panel{align-content:start;padding-bottom:24px}.login-card{margin-top:18px}.login-author{position:static;justify-self:end;width:max-content;margin:18px 0 0}.login-copyright{position:static;width:min(410px,100%);margin-top:24px}}
@media(prefers-reduced-motion:reduce){.lottery-sparkles i,.lottery-stage.drawing .lottery-ball,.lottery-stage.drawing .lottery-ring,.lottery-stage.winner .lottery-ball,.lottery-stage.winner:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* 2026-08-30 视觉对齐优化 */
.topbar{display:grid;grid-template-columns:1fr auto 1fr}.topbar-title{grid-column:2;text-align:center;min-width:260px}.topbar-title .eyebrow{font-size:14px;letter-spacing:.08em;line-height:1.35;font-weight:900}.topbar-title h1{font-size:25px;margin-top:3px}.topbar .top-actions{grid-column:3;justify-self:end}
.nav-alert-dot{min-width:25px;height:22px;padding:0 7px;background:linear-gradient(135deg,var(--peach-soft),#f8ddd3);color:#a85843;border:1px solid color-mix(in srgb,var(--peach) 44%,white);box-shadow:none;animation:none;font-size:11px}.nav-item.active .nav-alert-dot{background:var(--panel);color:var(--sage-dark);border-color:color-mix(in srgb,var(--sage) 34%,white)}
.todo-status-dot{width:9px;height:9px;background:var(--panel);border:2px solid var(--sage);box-shadow:0 0 0 3px var(--sage-soft);margin-right:9px}.todo-item.done .todo-status-dot{background:var(--sage);border-color:var(--sage);box-shadow:none}
.student-card{text-align:center}.student-card-head{justify-content:center;flex-direction:column;gap:8px}.student-card h4{display:flex;align-items:center;justify-content:center;gap:6px;margin:0}.student-card small{text-align:center}.student-card .tags{justify-content:center}.student-gender-chip{display:inline-grid;place-items:center;width:21px;height:21px;margin:0;padding:0;border-radius:50%;font-size:14px;font-weight:900;background:#e6f0ff;color:#4775a8}.student-card.female .student-gender-chip{background:#fae1ea;color:#b34f78}
.seat-toolbar{font-size:17px;font-weight:900;color:var(--sage-dark);letter-spacing:.16em}.seat-toolbar>span{display:inline-flex;align-items:center;justify-content:center;gap:7px}.seat-toolbar>span:before{content:"↓";font-size:20px;color:var(--peach)}.blackboard{font-size:14px}
.score-table th,.score-table td{text-align:center}.score-table-head{justify-content:center;text-align:center;position:relative}.score-table-head>div{text-align:center}.score-table-head>#scoreEntryStatus{position:absolute;right:20px}.score-student{justify-content:center}.score-gender{display:inline-grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#e6f0ff;color:#4775a8;font-size:17px;font-weight:900}.score-gender.female{background:#fae1ea;color:#b34f78}.score-history-entry{text-align:center;padding:18px 20px 21px;border-top:1px solid var(--line);background:linear-gradient(180deg,var(--panel),color-mix(in srgb,var(--sage-soft) 38%,var(--panel)))}.score-history-entry p{margin:7px 0 0;color:var(--muted);font-size:11px}
.trend-modal{width:min(1000px,100%)}.trend-student-picker{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:14px 16px;border-radius:13px;background:var(--sage-soft);margin-bottom:16px}.trend-student-picker label{display:block;font-size:11px;color:var(--muted)}.trend-student-picker select{display:block;min-width:230px;margin-top:6px}.trend-student-picker>span{color:var(--sage-dark);font-size:11px}.student-trend-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:15px}.student-trend-metrics>div{text-align:center;padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.student-trend-metrics span{display:block;color:var(--muted);font-size:10px}.student-trend-metrics b{display:block;margin-top:5px;font-size:19px}.student-trend-metrics b .rank-change{font-size:13px}.student-trend-legend{display:flex;align-items:center;gap:16px;margin:8px 3px;color:var(--muted);font-size:10px}.student-trend-legend small{margin-left:auto}.student-trend-legend i{display:inline-block;width:25px;height:3px;margin-right:6px;vertical-align:3px;border-radius:2px}.score-line-key{background:var(--sage)}.rank-line-key{background:var(--peach)}.student-line-chart{border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#fff,var(--sage-soft));padding:8px;overflow:auto}.student-line-chart svg{display:block;width:100%;min-width:650px;height:auto}.trend-grid line{stroke:#dfe5da;stroke-width:1}.trend-grid text{fill:var(--muted);font-size:9px}.score-line,.rank-line{fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.score-line{stroke:var(--sage)}.rank-line{stroke:var(--peach);stroke-dasharray:7 5}.score-point{fill:var(--panel);stroke:var(--sage);stroke-width:3}.rank-point{fill:var(--panel);stroke:var(--peach);stroke-width:3}.trend-label{fill:var(--muted);font-size:8px;text-anchor:middle}.trend-data-table{margin-top:14px;max-height:255px;overflow:auto;border:1px solid var(--line);border-radius:12px}.trend-data-table table th,.trend-data-table table td{text-align:center}.rank-change{display:inline-block;padding:3px 7px;border-radius:999px;font-size:10px;white-space:nowrap}.rank-change.up{background:#dfeee1;color:#397044}.rank-change.down{background:#f7ded9;color:#a34e41}.rank-change.flat{background:#ecefea;color:#778079}.trend-empty{min-height:280px}
@media(max-width:820px){.topbar{grid-template-columns:44px minmax(130px,1fr) auto;padding:10px 14px;height:82px}.topbar-title{min-width:0}.topbar-title .eyebrow{font-size:11px}.topbar-title h1{font-size:19px}.topbar .top-actions{gap:5px}.seat-toolbar{font-size:14px}.score-table-head>#scoreEntryStatus{position:static}.score-table-head{flex-direction:column}.student-trend-metrics{grid-template-columns:1fr 1fr}.trend-student-picker{align-items:stretch;flex-direction:column}.trend-student-picker select{min-width:0;width:100%}.student-trend-legend{align-items:flex-start;flex-wrap:wrap}.student-trend-legend small{width:100%;margin:0}}

/* 登录、导航、头像与动态时钟优化 */
.demo-account{flex-wrap:wrap}.demo-account button{width:100%;border:0;border-radius:9px;padding:9px 12px;background:var(--sage);color:#fff;font-size:11px;font-weight:800}.button-leading-icon{display:inline-block;margin-right:6px;font-weight:900;opacity:.82}.filter-chips .button-leading-icon,.segmented .button-leading-icon{font-size:8px;margin-right:4px}
.nav{position:relative;padding:3px 4px 12px 8px}.nav:before{content:"";position:absolute;left:21px;top:62px;bottom:12px;width:1px;background:linear-gradient(var(--line),transparent)}.nav-label{position:relative;margin:22px 8px 8px;padding:0 0 7px 31px;border-bottom:1px solid var(--line);font-size:10px;font-weight:900;color:#89938c;letter-spacing:.13em}.nav-label:before{content:"◆";position:absolute;left:8px;top:-2px;color:var(--peach);font-size:9px}.nav-item{position:relative;z-index:1;margin:4px 0;padding:9px 10px 9px 7px;border:1px solid transparent;border-radius:13px;gap:10px}.nav-item>span:first-child{width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:#f0f2ec;border:1px solid #e6e9e1;font-size:15px}.nav-item:hover{background:var(--panel);border-color:var(--line);transform:translateX(2px)}.nav-item.active{background:linear-gradient(100deg,var(--sage-soft),var(--panel));border-color:color-mix(in srgb,var(--sage) 24%,var(--line));box-shadow:0 5px 14px rgba(64,83,65,.07)}.nav-item.active:before{content:"";position:absolute;left:-8px;top:9px;bottom:9px;width:4px;border-radius:4px;background:var(--sage)}.nav-item.active>span:first-child{background:var(--sage);color:#fff;border-color:var(--sage)}
.nav-alert-dot{min-width:23px;height:21px;padding:0 6px;background:#d94b4b!important;color:#fff8ef!important;border:1px solid #bd3939!important;box-shadow:0 2px 5px rgba(164,45,45,.19)!important;font-size:11px;font-weight:500!important;line-height:1;letter-spacing:0}
.topbar{display:flex;justify-content:flex-start;gap:18px;height:94px;padding:10px 32px}.topbar-title{order:1;display:flex;align-items:center;gap:13px;margin-right:auto;min-width:0;text-align:left}.topbar-copy{display:grid;grid-template-columns:auto auto;column-gap:10px;align-items:center}.topbar-title .eyebrow{grid-column:1;font-size:12px;letter-spacing:.04em;white-space:nowrap}.live-time{grid-column:2;font-size:17px;line-height:1;font-weight:900;color:var(--peach);font-variant-numeric:tabular-nums}.topbar-title h1{grid-column:1/-1;font-size:23px;margin-top:2px}.topbar .top-actions{order:2;margin-left:auto}.topbar .menu-btn{order:0}
.pixel-alarm{position:relative;width:66px;height:66px;flex:0 0 66px;filter:drop-shadow(0 5px 5px rgba(70,55,38,.17))}.plumber-clock{position:absolute;left:9px;top:12px;width:48px;height:46px;border:4px solid #30343a;border-radius:13px;background:#f6c596;box-shadow:inset 0 -5px 0 #e4a778}.red-cap{position:absolute;left:3px;top:-13px;width:35px;height:17px;border-radius:15px 15px 4px 4px;background:#d94a43;border:3px solid #30343a}.red-cap:after{content:"";position:absolute;right:-8px;bottom:-3px;width:21px;height:6px;border-radius:4px;background:#d94a43;border:3px solid #30343a}.clock-eye{position:absolute;top:14px;width:5px;height:7px;border-radius:50%;background:#29323b}.clock-eye.left{left:10px}.clock-eye.right{right:10px}.clock-mustache{position:absolute;left:12px;top:25px;width:18px;height:7px;border-radius:50% 50% 45% 45%;background:#453329}.clock-mustache:before,.clock-mustache:after{content:"";position:absolute;top:-2px;width:10px;height:7px;border-radius:50%;background:#453329}.clock-mustache:before{left:-6px;transform:rotate(18deg)}.clock-mustache:after{right:-6px;transform:rotate(-18deg)}.clock-hand{position:absolute;left:20px;top:7px;width:2px;height:16px;background:#fff;border-radius:2px;transform-origin:50% 15px;animation:clockTick 60s linear infinite}.alarm-bell{position:absolute;top:5px;width:19px;height:12px;border:3px solid #30343a;background:#ffd05d;border-radius:13px 13px 3px 3px;animation:alarmWiggle 1.2s ease-in-out infinite}.alarm-bell.left{left:4px;transform:rotate(-25deg)}.alarm-bell.right{right:4px;transform:rotate(25deg);animation-delay:.12s}.alarm-foot{position:absolute;bottom:3px;width:16px;height:5px;border-radius:5px;background:#30343a}.alarm-foot.left{left:9px;transform:rotate(-16deg)}.alarm-foot.right{right:9px;transform:rotate(16deg)}@keyframes clockTick{to{transform:rotate(360deg)}}@keyframes alarmWiggle{50%{translate:0 -2px;rotate:5deg}}
.student-avatar{background:transparent!important;border:0;box-shadow:none;overflow:visible}.cn-kid{position:relative;display:block;width:58px;height:58px}.kid-face{position:absolute;z-index:3;left:9px;top:12px;width:40px;height:40px;border-radius:47% 47% 52% 52%;background:#f2c39d;border:2px solid #fff0df;box-shadow:0 3px 8px rgba(87,55,34,.15)}.kid-ear{position:absolute;z-index:2;top:28px;width:10px;height:13px;border-radius:50%;background:#e9b78f}.kid-ear.left{left:4px}.kid-ear.right{right:4px}.kid-hair{position:absolute;z-index:4;left:7px;top:5px;width:44px;height:25px;border-radius:50% 50% 32% 32%;background:#292827;clip-path:polygon(0 0,100% 0,100% 70%,82% 54%,70% 76%,55% 54%,38% 76%,24% 53%,0 71%)}.cn-kid.girl .kid-hair{height:30px;border-radius:50% 50% 42% 42%}.kid-eye{position:absolute;top:15px;width:4px;height:6px;border-radius:50%;background:#2d2927}.kid-eye.left{left:9px}.kid-eye.right{right:9px}.kid-smile{position:absolute;left:14px;top:26px;width:10px;height:6px;border-bottom:2px solid #a85e51;border-radius:50%}.kid-pigtail{position:absolute;z-index:1;top:15px;width:15px;height:21px;border-radius:50%;background:#292827}.kid-pigtail.left{left:0;transform:rotate(16deg)}.kid-pigtail.right{right:0;transform:rotate(-16deg)}.kid-pigtail:after{content:"";position:absolute;top:-3px;left:4px;width:7px;height:7px;border-radius:50%;background:#e987a3}.score-student-avatar .cn-kid{transform:scale(.58);transform-origin:center}.score-student-avatar{overflow:visible;background:transparent!important}
.score-history-row-btn{border:1px solid color-mix(in srgb,var(--sage) 30%,var(--line));border-radius:9px;padding:7px 9px;background:var(--sage-soft);color:var(--sage-dark);font-size:10px;font-weight:800;white-space:nowrap}.score-history-row-btn:hover{background:var(--sage);color:#fff}
.cartoon-classmates{position:absolute;inset:0;z-index:1;pointer-events:none}.cartoon-kid{position:absolute;width:72px;height:118px;opacity:.88;filter:drop-shadow(0 7px 6px rgba(68,60,78,.12))}.cartoon-kid .cartoon-face{position:absolute;z-index:2;left:12px;top:13px;width:49px;height:51px;border-radius:48%;background:#f2c39d;border:4px solid #fff}.cartoon-kid .cartoon-face:before{content:"•  •";position:absolute;left:11px;top:12px;color:#292827;font-size:15px;letter-spacing:7px}.cartoon-kid .cartoon-face:after{content:"⌣";position:absolute;left:17px;top:25px;color:#a45f50;font-size:17px}.cartoon-kid .cartoon-hair{position:absolute;z-index:3;left:9px;top:5px;width:55px;height:29px;border-radius:50% 50% 25% 25%;background:#292827;clip-path:polygon(0 0,100% 0,100% 70%,78% 52%,63% 76%,45% 52%,28% 78%,0 66%)}.cartoon-kid.girl .cartoon-hair:before,.cartoon-kid.girl .cartoon-hair:after{content:"";position:absolute;top:13px;width:18px;height:25px;border-radius:50%;background:#292827}.cartoon-kid.girl .cartoon-hair:before{left:-9px}.cartoon-kid.girl .cartoon-hair:after{right:-9px}.cartoon-body{position:absolute;left:6px;top:61px;width:62px;height:52px;border-radius:24px 24px 12px 12px;background:#77bfe5;border:4px solid #fff}.girl .cartoon-body{background:#e990b2}.kid-one{left:7%;bottom:14px;transform:rotate(-5deg)}.kid-two{left:20%;top:22px;transform:scale(.8) rotate(5deg)}.kid-three{right:7%;bottom:13px;transform:rotate(5deg)}.kid-four{right:20%;top:26px;transform:scale(.78) rotate(-4deg)}.cheer-bubble{position:absolute;padding:7px 10px;border-radius:14px;background:rgba(255,255,255,.86);color:#735e99;font-size:11px;font-weight:900;box-shadow:0 5px 14px rgba(80,63,110,.08)}.bubble-one{left:4%;top:20px;transform:rotate(-5deg)}.bubble-two{right:4%;top:22px;transform:rotate(5deg)}
@media(max-width:820px){.topbar{display:flex;height:84px;padding:8px 12px;gap:7px}.pixel-alarm{width:52px;height:56px;flex-basis:52px;transform:scale(.82);transform-origin:left center}.topbar-title{gap:2px}.topbar-copy{column-gap:5px}.topbar-title .eyebrow{font-size:9px}.live-time{font-size:12px}.topbar-title h1{font-size:17px}.cartoon-kid.kid-two,.cartoon-kid.kid-four,.cheer-bubble{display:none}.nav-item{padding-right:8px}}

/* 全站语义色：相同类型始终使用相同颜色 */
.tone-blue{--tone:#4d89b7;--tone-soft:#e5f1fa;--tone-ink:#376b91}.tone-teal{--tone:#338f87;--tone-soft:#e0f2ef;--tone-ink:#276c67}.tone-green{--tone:#5a9361;--tone-soft:#e3f1e4;--tone-ink:#3d7043}.tone-gold{--tone:#d89a36;--tone-soft:#fff3d8;--tone-ink:#916318}.tone-orange{--tone:#d87846;--tone-soft:#fae9df;--tone-ink:#9a4e2e}.tone-red{--tone:#d45f5a;--tone-soft:#f9e2df;--tone-ink:#9c423d}.tone-pink{--tone:#b66b91;--tone-soft:#f7e4ee;--tone-ink:#8e4d70}.tone-purple{--tone:#7b68a6;--tone-soft:#ebe5f4;--tone-ink:#59477f}.tone-gray{--tone:#8b948e;--tone-soft:#edf0ed;--tone-ink:#626b65}
.type-chip,.tag[class*="tone-"],.stat-chip[class*="tone-"],.resource-source[class*="tone-"],.lottery-prize-chip[class*="tone-"]{display:inline-flex;align-items:center;width:max-content;border:1px solid color-mix(in srgb,var(--tone) 28%,white);border-radius:999px;background:var(--tone-soft)!important;color:var(--tone-ink)!important;font-size:10px;font-weight:800;line-height:1;padding:5px 8px}.stat-chip[class*="tone-"]{border-radius:10px;padding:8px 11px}.stat-chip[class*="tone-"] b{color:var(--tone-ink)}
.todo-item[class*="tone-"]{border-left:4px solid var(--tone)}.todo-meta{display:flex;align-items:center;gap:6px}.todo-meta .category-dot{width:8px;height:8px;margin:0;background:var(--tone);box-shadow:0 0 0 3px var(--tone-soft)}.todo-meta .type-chip{margin-right:1px}.priority{min-width:43px;text-align:center;font-weight:800;border:1px solid transparent}.priority-normal{background:#e7f0f7;color:#3e6d91;border-color:#cddfea}.priority-important{background:#fff0cf;color:#93631a;border-color:#f0d48d}.priority-urgent{background:#f8dedd;color:#a13d39;border-color:#eeb7b4}.todo-item:has(.priority-urgent){box-shadow:inset 0 0 0 1px rgba(212,95,90,.12)}
.timeline-item[class*="tone-"] .timeline-dot{background:var(--tone);box-shadow:0 0 0 3px var(--tone-soft)}.timeline-item[class*="tone-"] .timeline-content{border-left:5px solid var(--tone);background:linear-gradient(90deg,var(--tone-soft),var(--panel) 22%)}.growth-mini[class*="tone-"]{border-left:4px solid var(--tone);padding-left:10px}.growth-mini[class*="tone-"] .student-badge{background:var(--tone-soft);color:var(--tone-ink)}.growth-mini .type-chip{margin-right:7px;vertical-align:1px}
.resource-item[class*="tone-"]{position:relative;border-left:5px solid var(--tone);background:linear-gradient(100deg,var(--tone-soft),var(--panel) 42%);padding-top:14px}.resource-item[class*="tone-"]:hover{border-color:var(--tone);transform:translateX(2px)}.resource-type-chip{display:inline-flex!important;width:max-content;margin:0 0 8px!important;border-radius:999px!important;padding:5px 8px!important;background:var(--tone-soft)!important;color:var(--tone-ink)!important;font-weight:800}.resource-item small{display:block;margin-top:6px;color:var(--muted)}
.chart-row[class*="tone-"] .chart-fill,.team-row[class*="tone-"] .chart-fill,.trend-column[class*="tone-"] .trend-bar{background:linear-gradient(90deg,var(--tone),color-mix(in srgb,var(--tone) 72%,white))}.team-row[class*="tone-"]{border-left:4px solid var(--tone);padding-left:9px}.advice-item[class*="tone-"]{border-left:5px solid var(--tone);background:var(--tone-soft);color:var(--tone-ink)}
.lottery-history-item[class*="tone-"]{border-top:4px solid var(--tone);background:linear-gradient(145deg,var(--tone-soft),var(--panel) 65%)}.lottery-history-item .lottery-prize-chip{max-width:150px;margin-top:5px;padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lottery-history-avatar .cn-kid{transform:scale(.62);transform-origin:center}
#todoFilters button,#genderFilter button,#scriptFilters button{--filter-tone:#728a52;--filter-soft:#e7eddc;--filter-ink:#50683b;background:var(--filter-soft);color:var(--filter-ink);border-color:color-mix(in srgb,var(--filter-tone) 25%,white);font-weight:700}#todoFilters button.active,#genderFilter button.active,#scriptFilters button.active{background:var(--filter-tone);color:white;border-color:var(--filter-tone)}
#todoFilters [data-filter="all"]{--filter-tone:#4d89b7;--filter-soft:#e5f1fa;--filter-ink:#376b91}#todoFilters [data-filter="today"]{--filter-tone:#5a9361;--filter-soft:#e3f1e4;--filter-ink:#3d7043}#todoFilters [data-filter="week"]{--filter-tone:#7b68a6;--filter-soft:#ebe5f4;--filter-ink:#59477f}#todoFilters [data-filter="done"]{--filter-tone:#8b948e;--filter-soft:#edf0ed;--filter-ink:#626b65}
#genderFilter [data-gender="全部"]{--filter-tone:#338f87;--filter-soft:#e0f2ef;--filter-ink:#276c67}#genderFilter [data-gender="男"]{--filter-tone:#4d89b7;--filter-soft:#e5f1fa;--filter-ink:#376b91}#genderFilter [data-gender="女"]{--filter-tone:#b66b91;--filter-soft:#f7e4ee;--filter-ink:#8e4d70}
#scriptFilters [data-script-filter="全部"]{--filter-tone:#338f87;--filter-soft:#e0f2ef;--filter-ink:#276c67}#scriptFilters [data-script-filter="表扬"]{--filter-tone:#d89a36;--filter-soft:#fff3d8;--filter-ink:#916318}#scriptFilters [data-script-filter="通知"]{--filter-tone:#4d89b7;--filter-soft:#e5f1fa;--filter-ink:#376b91}#scriptFilters [data-script-filter="沟通"]{--filter-tone:#b66b91;--filter-soft:#f7e4ee;--filter-ink:#8e4d70}#scriptFilters [data-script-filter="反馈"]{--filter-tone:#5a9361;--filter-soft:#e3f1e4;--filter-ink:#3d7043}
.quick-grid button:nth-child(1){background:#e5f1fa;color:#376b91;border-color:#c9dfef}.quick-grid button:nth-child(2){background:#e3f1e4;color:#3d7043;border-color:#c9e2cc}.quick-grid button:nth-child(3){background:#f7e4ee;color:#8e4d70;border-color:#ecc8da}.quick-grid button:nth-child(4){background:#ebe5f4;color:#59477f;border-color:#d9cdec}.quick-grid button:nth-child(5){background:#fff3d8;color:#916318;border-color:#f1dba7}.quick-grid button:nth-child(6){background:#fae9df;color:#9a4e2e;border-color:#edcdbd}.settings-grid .panel:nth-child(1){border-top:5px solid #4d89b7}.settings-grid .panel:nth-child(2){border-top:5px solid #7b68a6}.settings-grid .panel:nth-child(3){border-top:5px solid #d45f5a}.settings-grid .panel:nth-child(4){border-top:5px solid #338f87}
.nav-item[data-view="dashboard"]{--nav-tone:#338f87;--nav-soft:#e0f2ef}.nav-item[data-view="todos"]{--nav-tone:#d45f5a;--nav-soft:#f9e2df}.nav-item[data-view="students"],.nav-item[data-view="classes"]{--nav-tone:#4d89b7;--nav-soft:#e5f1fa}.nav-item[data-view="seats"]{--nav-tone:#7b68a6;--nav-soft:#ebe5f4}.nav-item[data-view="scores"]{--nav-tone:#d89a36;--nav-soft:#fff3d8}.nav-item[data-view="growth"]{--nav-tone:#5a9361;--nav-soft:#e3f1e4}.nav-item[data-view="parents"]{--nav-tone:#b66b91;--nav-soft:#f7e4ee}.nav-item[data-view="teaching"]{--nav-tone:#d87846;--nav-soft:#fae9df}.nav-item[data-view="feedback"]{--nav-tone:#338f87;--nav-soft:#e0f2ef}.nav-item[data-view="lottery"]{--nav-tone:#7b68a6;--nav-soft:#ebe5f4}.nav-item[data-view="settings"]{--nav-tone:#8b948e;--nav-soft:#edf0ed}.nav-item[data-view]>span:first-child{background:var(--nav-soft);color:var(--nav-tone);border-color:color-mix(in srgb,var(--nav-tone) 20%,white)}.nav-item[data-view].active{background:linear-gradient(100deg,var(--nav-soft),var(--panel));border-color:color-mix(in srgb,var(--nav-tone) 25%,var(--line));color:var(--nav-tone)}.nav-item[data-view].active:before{background:var(--nav-tone)}.nav-item[data-view].active>span:first-child{background:var(--nav-tone);border-color:var(--nav-tone);color:white}
.feedback-preview[class*="tone-"]{border:2px dashed color-mix(in srgb,var(--tone) 45%,white);border-left:7px solid var(--tone);background:linear-gradient(135deg,var(--tone-soft),var(--panel) 46%);color:var(--tone-ink)}

/* 2026-08-30 原创潮玩人物、校园头像与水管工闹钟重绘 */
.pixel-alarm{width:76px;height:72px;flex:0 0 76px;filter:drop-shadow(0 7px 5px rgba(62,43,32,.18))}.plumber-clock{left:11px;top:14px;width:54px;height:51px;border:4px solid #292d35;border-radius:44% 44% 48% 48%;background:linear-gradient(145deg,#ffd9b5,#edab78);box-shadow:inset 0 -5px 0 rgba(183,99,55,.17),inset 5px 5px 0 rgba(255,255,255,.28)}.plumber-hat{position:absolute;z-index:7;left:-5px;top:-19px;width:58px;height:26px;border:4px solid #292d35;border-radius:30px 30px 10px 10px;background:linear-gradient(#f05d50,#c93434);box-shadow:inset 0 5px 0 rgba(255,255,255,.22)}.plumber-hat:after{content:"";position:absolute;left:22px;bottom:-8px;width:37px;height:9px;border:4px solid #292d35;border-radius:8px;background:#d83c39}.plumber-hat b{position:absolute;z-index:2;left:19px;top:4px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:#fff7e9;color:#d83c39;font:900 11px/1 Arial;border:2px solid #292d35}.plumber-hair{position:absolute;z-index:5;left:0;top:7px;width:46px;height:19px;border-radius:45% 45% 30% 30%;background:#5b3527;clip-path:polygon(0 0,100% 0,100% 62%,82% 46%,70% 80%,54% 50%,39% 76%,22% 44%,0 72%)}.plumber-ear{position:absolute;z-index:4;top:22px;width:11px;height:15px;border:3px solid #292d35;border-radius:50%;background:#efb07d}.plumber-ear.left{left:-8px}.plumber-ear.right{right:-8px}.clock-eye{z-index:6;top:21px;width:5px;height:8px;background:#27313b;box-shadow:inset 0 2px 0 #fff}.clock-eye.left{left:12px}.clock-eye.right{right:12px}.plumber-nose{position:absolute;z-index:8;left:19px;top:26px;width:17px;height:14px;border:2px solid #b66b4d;border-radius:50%;background:#f5b17d}.clock-mustache{z-index:7;left:14px;top:36px;width:25px;height:8px;background:#503023}.clock-mustache:before,.clock-mustache:after{width:14px;height:9px;background:#503023}.clock-hand{z-index:2;left:25px;top:9px;height:15px;background:rgba(255,255,255,.75);transform-origin:50% 17px}.clock-center{position:absolute;z-index:9;left:24px;top:24px;width:6px;height:6px;border-radius:50%;background:#292d35}.alarm-bell{top:4px;width:23px;height:14px;background:linear-gradient(#ffd65c,#e5a12b);border-width:4px}.alarm-bell.left{left:1px}.alarm-bell.right{right:1px}.alarm-foot{bottom:1px;width:19px;height:6px}.alarm-foot.left{left:10px}.alarm-foot.right{right:10px}

.student-avatar{width:76px;height:78px}.cn-kid{width:72px;height:78px;filter:drop-shadow(0 5px 5px rgba(72,48,35,.13))}.kid-face{z-index:5;left:15px;top:11px;width:43px;height:45px;border-radius:46% 46% 50% 50%;background:linear-gradient(145deg,#ffd9b7,#efb386);border:2px solid #fff8ed;box-shadow:inset 4px 4px 0 rgba(255,255,255,.25)}.kid-ear{z-index:4;top:27px;width:10px;height:14px;background:#efb185;border:2px solid #fff3e3}.kid-ear.left{left:9px}.kid-ear.right{right:9px}.kid-hair{z-index:7;left:12px;top:4px;width:49px;height:28px;border-radius:52% 52% 30% 30%;background:linear-gradient(145deg,#36312f,#17191b);clip-path:polygon(0 0,100% 0,100% 64%,84% 48%,73% 75%,60% 49%,47% 72%,34% 48%,20% 73%,0 63%)}.cn-kid.boy .kid-hair:after{content:"";position:absolute;right:5px;top:-3px;width:20px;height:12px;border-radius:50%;background:#242120;transform:rotate(18deg)}.kid-back-hair{display:none}.cn-kid.girl .kid-back-hair{display:block;position:absolute;z-index:2;left:10px;top:9px;width:52px;height:50px;border-radius:45% 45% 38% 38%;background:#22201f}.cn-kid.girl .kid-hair{height:26px;border-radius:52% 52% 34% 34%}.kid-brow{position:absolute;top:13px;width:9px;height:2px;border-radius:2px;background:#5c4438}.kid-brow.left{left:8px;transform:rotate(5deg)}.kid-brow.right{right:8px;transform:rotate(-5deg)}.kid-eye{top:18px;width:5px;height:7px;background:#352c29;box-shadow:inset 0 2px 0 #fff}.kid-eye.left{left:9px}.kid-eye.right{right:9px}.kid-nose{position:absolute;left:19px;top:25px;width:4px;height:5px;border-right:1px solid #c68668;border-bottom:1px solid #c68668;border-radius:50%}.kid-blush{position:absolute;top:28px;width:8px;height:4px;border-radius:50%;background:rgba(231,116,110,.28)}.kid-blush.left{left:4px}.kid-blush.right{right:4px}.kid-smile{left:15px;top:32px;width:11px;height:6px;border-bottom:2px solid #a75d53}.kid-pigtail{z-index:1;top:16px;width:18px;height:25px;background:#22201f}.kid-pigtail.left{left:2px}.kid-pigtail.right{right:2px}.kid-pigtail:after{top:-2px;left:5px;width:8px;height:8px;background:#ff8fa9;border:2px solid #fff}.kid-hairclip{position:absolute;z-index:9;right:12px;top:12px;width:10px;height:5px;border-radius:6px;background:#ff8fa9;transform:rotate(-18deg);box-shadow:0 0 0 2px #fff}.kid-neck{position:absolute;z-index:3;left:30px;top:51px;width:13px;height:12px;border-radius:4px;background:#edaf84}.kid-uniform{position:absolute;z-index:4;left:8px;bottom:0;width:57px;height:28px;border-radius:23px 23px 10px 10px;background:linear-gradient(145deg,#5da1dc,#397fba);border:2px solid #fff;box-shadow:inset 0 4px 0 rgba(255,255,255,.15)}.cn-kid.girl .kid-uniform{background:linear-gradient(145deg,#70b2e4,#4b8fc8)}.uniform-collar{position:absolute;top:1px;width:19px;height:12px;background:#fff;clip-path:polygon(0 0,100% 0,50% 100%)}.uniform-collar.left{left:9px}.uniform-collar.right{right:9px}.red-scarf{position:absolute;z-index:2;left:24px;top:6px;width:9px;height:16px;background:#e84f4a;clip-path:polygon(50% 0,100% 35%,70% 100%,30% 100%,0 35%)}.score-student-avatar .cn-kid{transform:scale(.48);transform-origin:center}.lottery-history-avatar .cn-kid{transform:scale(.52);transform-origin:center}

.cartoon-classmates{overflow:hidden}.party-egg{--egg:#73baf0;--egg-dark:#458bc9;position:absolute;width:92px;height:116px;filter:drop-shadow(0 12px 8px rgba(74,55,91,.16));animation:eggFloat 3s ease-in-out infinite}.party-egg .egg-body{position:absolute;z-index:4;left:12px;top:13px;width:68px;height:83px;border:4px solid rgba(255,255,255,.94);border-radius:48% 48% 46% 46% / 43% 43% 55% 55%;background:linear-gradient(145deg,color-mix(in srgb,var(--egg) 72%,white),var(--egg) 55%,var(--egg-dark));box-shadow:inset 7px 8px 0 rgba(255,255,255,.22),inset -6px -7px 0 rgba(71,46,91,.09)}.egg-pink{--egg:#f08db8;--egg-dark:#c9588d}.egg-yellow{--egg:#ffd45f;--egg-dark:#e59b32}.egg-purple{--egg:#a992e8;--egg-dark:#7257bd}.egg-gloss{position:absolute;left:12px;top:8px;width:19px;height:10px;border-radius:50%;background:rgba(255,255,255,.58);transform:rotate(-26deg)}.egg-eye{position:absolute;top:31px;width:7px;height:10px;border-radius:50%;background:#382f41;box-shadow:inset 0 3px 0 white}.egg-eye.left{left:16px}.egg-eye.right{right:16px}.egg-cheek{position:absolute;top:44px;width:11px;height:6px;border-radius:50%;background:rgba(233,85,111,.34)}.egg-cheek.left{left:7px}.egg-cheek.right{right:7px}.egg-mouth{position:absolute;left:27px;top:48px;width:11px;height:7px;border-bottom:3px solid #74414b;border-radius:50%}.egg-badge{position:absolute;left:23px;bottom:7px;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.82);color:var(--egg-dark);font:900 12px/1 Arial}.egg-arm{position:absolute;z-index:3;top:54px;width:24px;height:12px;border-radius:12px;background:var(--egg);border:3px solid white}.egg-arm.left{left:0;transform:rotate(-35deg)}.egg-arm.right{right:0;transform:rotate(35deg)}.egg-leg{position:absolute;z-index:3;top:88px;width:25px;height:14px;border-radius:50% 50% 45% 45%;background:var(--egg-dark);border:3px solid white}.egg-leg.left{left:16px;transform:rotate(-12deg)}.egg-leg.right{right:16px;transform:rotate(12deg)}.egg-shadow{position:absolute;left:16px;bottom:1px;width:62px;height:12px;border-radius:50%;background:rgba(86,68,103,.13);filter:blur(3px)}.egg-hat{position:absolute;z-index:6}.egg-hat.cap{left:17px;top:4px;width:58px;height:25px;border-radius:30px 30px 8px 8px;background:#5279d5;border:4px solid white;transform:rotate(-4deg)}.egg-hat.cap:after{content:"";position:absolute;right:-13px;bottom:-5px;width:28px;height:8px;border-radius:8px;background:#5279d5;border:3px solid white}.egg-hat.ears{left:22px;top:-1px;width:48px;height:24px;border-radius:25px;background:#fff2f7;border:4px solid white}.egg-hat.ears:before,.egg-hat.ears:after{content:"";position:absolute;top:-22px;width:14px;height:30px;border-radius:12px 12px 4px 4px;background:#ffb4cf;border:4px solid white}.egg-hat.ears:before{left:2px;transform:rotate(-12deg)}.egg-hat.ears:after{right:2px;transform:rotate(12deg)}.egg-hat.crown{left:22px;top:-2px;width:49px;height:28px;background:#ff9f38;border:4px solid white;clip-path:polygon(0 10%,25% 48%,50% 0,75% 48%,100% 10%,87% 100%,13% 100%)}.egg-hat.sprout{left:38px;top:-8px;width:17px;height:26px;border-radius:80% 10% 80% 10%;background:#66b96c;border:4px solid white;transform:rotate(-34deg)}.egg-hat.sprout:after{content:"";position:absolute;left:8px;top:9px;width:17px;height:25px;border-radius:10% 80% 10% 80%;background:#83cb68;border:4px solid white;transform:rotate(50deg)}.egg-one{left:5%;bottom:16px;transform:rotate(-7deg)}.egg-two{left:20%;top:24px;transform:scale(.82) rotate(7deg);animation-delay:.35s}.egg-three{right:5%;bottom:16px;transform:rotate(7deg);animation-delay:.7s}.egg-four{right:20%;top:27px;transform:scale(.8) rotate(-6deg);animation-delay:1s}@keyframes eggFloat{50%{translate:0 -7px}}.lottery-stage.drawing .party-egg{animation:eggCheer .42s ease-in-out infinite alternate}@keyframes eggCheer{to{translate:0 -12px;rotate:4deg}}

.draw-mascot{position:relative;display:block;width:72px;height:72px}.draw-mascot i{position:absolute;left:10px;top:4px;width:52px;height:62px;border:4px solid white;border-radius:48% 48% 45% 45% / 42% 42% 55% 55%;background:linear-gradient(145deg,#8bd1ff,#4a8fd0);box-shadow:inset 6px 6px 0 rgba(255,255,255,.25),0 7px 12px rgba(91,61,132,.18)}.draw-mascot.girl i{background:linear-gradient(145deg,#ffb0cd,#cf6899)}.draw-mascot b{position:absolute;z-index:2;left:26px;top:26px;width:20px;height:10px;border-top:7px dotted #352c3a;border-bottom:3px solid #864557;border-radius:45%}.draw-mascot em{position:absolute;z-index:3;left:19px;top:0;width:36px;height:16px;border-radius:16px;background:#5b79d2;border:3px solid white}.draw-mascot.girl em{background:#ff8fb2}.draw-mascot.girl em:after{content:"";position:absolute;right:-9px;top:-5px;width:14px;height:14px;border-radius:50% 50% 10% 50%;background:#ffcf5b;border:3px solid white;transform:rotate(25deg)}.draw-mascot.gift i{left:10px;top:22px;width:52px;height:42px;border-radius:9px;background:linear-gradient(145deg,#ffcc4e,#f08c31)}.draw-mascot.gift b{left:31px;top:20px;width:10px;height:45px;border:0;border-radius:2px;background:#e94b4d}.draw-mascot.gift em{left:17px;top:9px;width:20px;height:20px;border-radius:70% 15% 70% 15%;background:#e94b4d;border:0;transform:rotate(35deg)}.draw-mascot.gift em:after{content:"";position:absolute;left:20px;top:-18px;width:20px;height:20px;border-radius:15% 70% 15% 70%;background:#e94b4d;transform:rotate(110deg)}
.cn-kid.avatar-v1 .kid-hair{transform:skewX(-5deg)}.cn-kid.avatar-v2 .kid-hair{clip-path:polygon(0 0,100% 0,100% 67%,88% 51%,77% 73%,65% 49%,53% 76%,40% 48%,26% 70%,12% 48%,0 64%)}.cn-kid.avatar-v3 .kid-hair{transform:skewX(5deg)}.cn-kid.avatar-v1 .kid-uniform{background:linear-gradient(145deg,#65abd9,#3276aa)}.cn-kid.avatar-v2 .kid-uniform{background:linear-gradient(145deg,#6ba8e6,#426fb4)}.cn-kid.avatar-v3 .kid-uniform{background:linear-gradient(145deg,#57b3c6,#337e9c)}.cn-kid.girl.avatar-v1 .kid-pigtail{height:21px;top:18px}.cn-kid.girl.avatar-v2 .kid-pigtail{width:15px;border-radius:45%}.cn-kid.girl.avatar-v3 .kid-pigtail.left{transform:rotate(27deg)}.cn-kid.girl.avatar-v3 .kid-pigtail.right{transform:rotate(-27deg)}.cn-kid.avatar-v2 .kid-brow.left,.cn-kid.avatar-v2 .kid-brow.right{top:14px}.cn-kid.avatar-v3 .kid-smile{width:13px;left:14px}
.score-table th:nth-child(2),.score-table td:nth-child(2){min-width:126px}.score-student{width:100%;min-height:70px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-align:center}.score-student-avatar{position:relative;width:50px;height:51px;display:block;overflow:visible;flex:0 0 51px}.score-student-avatar .cn-kid{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.62);transform-origin:center}.score-student b{display:block;width:100%;line-height:1.2;text-align:center}.score-history-row-btn{min-width:90px}
@media(max-width:820px){.pixel-alarm{width:58px;height:64px;flex-basis:58px;transform:scale(.78)}.party-egg.egg-two,.party-egg.egg-four,.cheer-bubble{display:none}.party-egg{transform:scale(.78)}.egg-one{left:1%;bottom:8px}.egg-three{right:1%;bottom:8px}.student-avatar{width:70px;height:76px}}

/* 全局操作提示：轻量通知卡，不遮挡当前操作 */
.toast{--toast-accent:var(--sage);position:fixed;z-index:100;top:104px;right:28px;left:auto;bottom:auto;width:min(370px,calc(100vw - 32px));min-width:0;display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:12px;padding:13px 15px;border:1px solid color-mix(in srgb,var(--toast-accent) 24%,var(--line));border-radius:17px;background:color-mix(in srgb,var(--panel) 92%,transparent);color:var(--ink);text-align:left;box-shadow:0 18px 50px rgba(31,39,34,.18),inset 0 1px 0 rgba(255,255,255,.72);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);opacity:0;transform:translateY(-14px) scale(.96);transform-origin:top right;pointer-events:none;overflow:hidden;transition:opacity .2s ease,transform .3s cubic-bezier(.2,.85,.25,1.15)}.toast:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:4px;border-radius:0 6px 6px 0;background:var(--toast-accent)}.toast.show{opacity:1;transform:none}.toast-status-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(145deg,color-mix(in srgb,var(--toast-accent) 78%,white),var(--toast-accent));color:#fff;font:900 19px/1 system-ui;box-shadow:0 8px 18px color-mix(in srgb,var(--toast-accent) 25%,transparent)}.toast-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.toast-copy strong{font-size:13px;line-height:1.25}.toast-copy>span{color:var(--muted);font-size:11px;line-height:1.45;white-space:normal}.toast-progress{position:absolute;left:0;bottom:0;width:100%;height:3px;background:linear-gradient(90deg,var(--toast-accent),color-mix(in srgb,var(--toast-accent) 45%,white));transform-origin:left}.toast.show .toast-progress{animation:toastProgress 1.6s linear forwards}.toast.warning{--toast-accent:#d19032}.toast.neutral{--toast-accent:var(--blue)}.toast.info{--toast-accent:#7864b0}@keyframes toastProgress{to{transform:scaleX(0)}}
@media(max-width:820px){.toast{top:94px;right:50%;width:min(358px,calc(100vw - 24px));transform:translate(50%,-14px) scale(.96);transform-origin:top center}.toast.show{transform:translateX(50%)}}

/* 用户提供的本地蛋仔素材 */
.asset-classmates{overflow:hidden}.asset-egg{position:absolute;z-index:2;width:108px;height:118px;object-fit:contain;filter:drop-shadow(0 12px 9px rgba(69,55,94,.2));animation:assetEggFloat 3.1s ease-in-out infinite}.asset-one{left:5%;bottom:9px;transform:rotate(-6deg)}.asset-two{left:20%;top:17px;width:92px;height:102px;animation-delay:.35s}.asset-three{right:5%;bottom:8px;transform:rotate(6deg);animation-delay:.7s}.asset-four{right:20%;top:17px;width:92px;height:102px;animation-delay:1s}@keyframes assetEggFloat{50%{translate:0 -8px}}.lottery-stage.drawing .asset-egg{animation:assetEggCheer .36s ease-in-out infinite alternate}@keyframes assetEggCheer{to{translate:0 -14px;scale:1.05}}.lottery-ball{overflow:visible}.lottery-ball .draw-asset{display:block;width:86px;height:86px;object-fit:contain;filter:drop-shadow(0 7px 7px rgba(72,52,105,.2));font-size:0}.lottery-stage.drawing .draw-asset{animation:drawAssetSpin .28s ease-in-out infinite alternate}@keyframes drawAssetSpin{to{transform:scale(1.08) rotate(7deg)}}.egg-support-team{margin-top:13px;padding:11px 12px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(100deg,#f5efff,#fff8ed)}.egg-support-team>span{display:block;margin-bottom:8px;color:#73569a;font-size:10px;font-weight:900;letter-spacing:.08em}.egg-support-team>div{display:grid;grid-template-columns:repeat(10,1fr);gap:6px}.egg-support-team img{width:100%;height:54px;object-fit:contain;border-radius:10px;background:rgba(255,255,255,.72);transition:.18s}.egg-support-team img:hover{transform:translateY(-4px) scale(1.08);box-shadow:0 7px 16px rgba(87,62,117,.14)}
.score-student.score-student-name-only{min-height:36px;flex-direction:row;align-items:center;justify-content:center}.score-student-name-only b{font-size:13px}.score-table td:nth-child(2){text-align:center}
@media(max-width:820px){.asset-two,.asset-four{display:none}.asset-egg{width:82px;height:96px}.egg-support-team>div{grid-template-columns:repeat(5,1fr)}.egg-support-team img{height:48px}}

/* 本轮中奖记录：蓝色代表男生、粉色代表女生 */
.lottery-history{align-items:stretch}
.lottery-history-item{grid-template-columns:72px minmax(0,1fr);min-height:104px;padding:13px 15px;gap:13px;overflow:hidden}
.lottery-history-avatar{width:68px;height:68px;border-radius:20px;overflow:hidden;background:#fff;align-self:center;box-shadow:inset 0 0 0 1px rgba(88,108,116,.08)}
.lottery-history-avatar img{display:block;width:100%;height:100%;object-fit:contain;transform:scale(1.1)}
.lottery-history-item.winner-boy .lottery-history-avatar{background:linear-gradient(145deg,#edf8ff,#cfeeff)}
.lottery-history-item.winner-girl .lottery-history-avatar{background:linear-gradient(145deg,#fff3f8,#ffdce9)}
.lottery-history-content{min-width:0;align-self:center;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:7px}
.lottery-history-content b{width:100%;font-size:15px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lottery-history-item .lottery-prize-chip{max-width:100%;margin-top:0}

/* 顶栏机器人：替换原水管工闹钟，日期与实时时钟保持不变 */
.pixel-alarm.topbar-robot{width:78px;height:78px;flex:0 0 78px;display:grid;place-items:center;filter:drop-shadow(0 7px 7px rgba(26,112,126,.2));transform:none;animation:topbarRobotFloat 2.8s ease-in-out infinite}
.topbar-robot img{display:block;width:74px;height:74px;object-fit:contain}
@keyframes topbarRobotFloat{0%,100%{translate:0 1px;rotate:-1deg}50%{translate:0 -4px;rotate:1deg}}
@media(max-width:820px){.pixel-alarm.topbar-robot{width:58px;height:62px;flex-basis:58px;transform:none}.topbar-robot img{width:58px;height:58px}}
@media(prefers-reduced-motion:reduce){.pixel-alarm.topbar-robot{animation:none}}

/* 成绩趋势图悬浮数据提示 */
.trend-score-hit,.trend-rank-hit{cursor:help;outline:none}
.trend-hit-area{fill:transparent;pointer-events:all}
.trend-point-tooltip{opacity:0;pointer-events:none;transition:opacity .14s ease}

/* 确认弹窗的操作按钮统一居中排列 */
.action-dialog-actions{justify-content:center}

/* 桌面端操作提示固定在顶部正中间 */
@media(min-width:821px){
  .toast{top:18px;right:auto;left:50%;transform:translate(-50%,-12px) scale(.96);transform-origin:top center}
  .toast.show{transform:translateX(-50%)}
}

/* 右侧中奖名单在固定工作区内完整展示最近 5 条 */
@media(min-width:901px){
  .lottery-reference-status .lottery-history{gap:7px}
  .lottery-reference-status .lottery-history-item{grid-template-columns:52px minmax(0,1fr) 28px;min-height:72px;padding:8px 9px;gap:9px}
  .lottery-reference-status .lottery-history-avatar{width:50px;height:50px;border-radius:14px}
  .lottery-reference-status .lottery-history-content{gap:4px}
  .lottery-reference-status .lottery-history-content b{font-size:13px}
  .lottery-reference-status .lottery-prize-chip{font-size:9px}
}
.trend-point-tooltip rect{fill:rgba(43,57,49,.96);stroke:rgba(255,255,255,.45);stroke-width:1;filter:drop-shadow(0 3px 4px rgba(32,42,35,.2))}
.trend-point-tooltip text{fill:#fff;font-size:9px;font-weight:800;text-anchor:middle;dominant-baseline:middle}
.trend-point-tooltip .tooltip-score-value{font-size:10px;font-weight:900}
.rank-tooltip rect{fill:rgba(181,111,79,.96)}
.trend-score-hit:hover .trend-point-tooltip,.trend-score-hit:focus .trend-point-tooltip,.trend-rank-hit:hover .trend-point-tooltip,.trend-rank-hit:focus .trend-point-tooltip{opacity:1}
.trend-score-hit:hover .score-point,.trend-score-hit:focus .score-point{fill:var(--sage);stroke:#fff;stroke-width:2.5;r:7px}
.trend-rank-hit:hover .rank-point,.trend-rank-hit:focus .rank-point{fill:var(--peach);stroke:#fff;stroke-width:2.5;r:6px}

/* 班级成绩分析快捷入口 */
.class-analysis-btn{border:1px solid #c9b7e1;border-radius:10px;padding:10px 14px;background:linear-gradient(120deg,#7759a8,#a56fc0);color:#fff;font-weight:800;box-shadow:0 7px 18px rgba(111,76,151,.18);white-space:nowrap}
.class-analysis-btn:hover{filter:brightness(.95);transform:translateY(-1px)}
.analysis-section.analysis-focus{animation:analysisFocus 1.5s ease}
@keyframes analysisFocus{0%,100%{filter:none}35%{filter:drop-shadow(0 0 12px rgba(123,104,166,.35))}}

/* 班级成绩分析改为独立弹框 */
.score-workspace-frame>.analysis-section{display:none}.score-analysis-backdrop{position:fixed;inset:0;z-index:92;display:grid;place-items:center;padding:24px;background:color-mix(in srgb,var(--theme-hero-a) 48%,transparent);backdrop-filter:blur(6px)}.score-analysis-backdrop[hidden]{display:none}.score-analysis-dialog{position:relative;width:min(1140px,100%);max-height:calc(100vh - 48px);overflow:auto;padding:24px;border:1px solid color-mix(in srgb,var(--sage) 20%,var(--line));border-radius:24px;background:var(--paper);box-shadow:0 30px 90px rgba(22,31,26,.3);scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--sage) 42%,var(--line)) transparent}.score-analysis-close{position:sticky;z-index:3;top:0;float:right;width:38px;height:38px;margin:-6px -4px 0 12px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--panel) 92%,transparent);color:var(--muted);font-size:24px;line-height:1;box-shadow:0 7px 18px rgba(30,42,35,.08);backdrop-filter:blur(10px)}.score-analysis-close:hover{border-color:var(--sage);color:var(--sage-dark);background:var(--sage-soft)}.score-analysis-dialog .analysis-section{display:block;margin:0}.score-analysis-dialog .analysis-heading{padding:0 52px 14px 2px;border-bottom:1px solid var(--line)}.score-analysis-dialog .analysis-grid{margin-top:16px}.score-analysis-dialog .analysis-card{min-height:220px;box-shadow:var(--theme-shadow)}.score-analysis-dialog .analysis-card:last-child{grid-column:1/-1;min-height:auto}.score-analysis-dialog #analysisAdvice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.score-analysis-dialog #analysisAdvice .advice-item:last-child:nth-child(odd){grid-column:1/-1}.score-analysis-open{overflow:hidden}
@media(max-width:760px){.score-analysis-backdrop{padding:10px}.score-analysis-dialog{max-height:calc(100vh - 20px);padding:17px;border-radius:18px}.score-analysis-dialog #analysisAdvice{grid-template-columns:1fr}.score-analysis-dialog #analysisAdvice .advice-item:last-child:nth-child(odd){grid-column:auto}.score-analysis-close{margin-top:-2px}.score-analysis-dialog .analysis-heading{padding-right:44px}}

/* 课堂抽奖：一屏式投影布局 */
body.lottery-mode{overflow:hidden}
body.lottery-mode .content{height:calc(100vh - 94px);max-width:none;padding:16px 20px 18px;overflow:hidden}
#view-lottery.active{height:100%;overflow:hidden}
.lottery-screen-shell{position:relative;height:100%;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:15px;padding:0}
.lottery-stage-panel{min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:9px;padding:16px 18px;border:1px solid rgba(255,255,255,.5);border-radius:24px;background:linear-gradient(135deg,#7452b5 0%,#996dd0 44%,#d69a82 100%);box-shadow:0 14px 35px rgba(78,58,100,.18);overflow:hidden}
.lottery-screen-head{position:relative;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:18px;color:#fff;padding:0 3px}
.lottery-screen-head h2{margin:5px 0 2px;font:800 25px/1.2 serif}.lottery-screen-head p{margin:0;color:rgba(255,255,255,.82);font-size:11px}.lottery-screen-head .pill{padding:4px 8px;font-size:9px}
.lottery-screen-tools{display:flex;gap:8px;flex:0 0 auto}.lottery-tool-btn{border:1px solid rgba(255,255,255,.55);border-radius:11px;padding:9px 13px;background:rgba(255,255,255,.17);color:#fff;font-weight:800;backdrop-filter:blur(7px);white-space:nowrap}.lottery-tool-btn:hover{background:rgba(255,255,255,.28);transform:translateY(-1px)}
.lottery-stage-panel .lottery-stage{min-height:0;height:100%;border-color:rgba(255,255,255,.7);background:radial-gradient(circle at 50% 43%,rgba(255,255,255,.98) 0 15%,rgba(232,246,249,.94) 58%,rgba(255,236,225,.9));box-shadow:inset 0 0 40px rgba(255,255,255,.48)}
.lottery-stage-panel .lottery-stage h2{font-size:clamp(29px,3.2vw,44px);margin:11px 0 5px}.lottery-stage-panel .lottery-ball{width:102px;height:102px}.lottery-stage-panel .lottery-ball .draw-asset{width:76px;height:76px}.lottery-stage-panel .ring-a{width:245px;height:245px}.lottery-stage-panel .ring-b{width:330px;height:330px}
.lottery-stage-panel .asset-egg{width:88px;height:96px}.lottery-stage-panel .asset-two,.lottery-stage-panel .asset-four{width:78px;height:86px}.lottery-stage-panel .asset-one,.lottery-stage-panel .asset-three{bottom:4px}.lottery-stage-panel .asset-two,.lottery-stage-panel .asset-four{top:10px}
.lottery-stage-panel .lottery-actions{padding:0;min-height:43px;align-items:center}.lottery-stage-panel .lottery-start{min-width:190px;padding:11px 20px}.lottery-stage-panel .egg-support-team{margin:0;padding:7px 9px;border-color:rgba(255,255,255,.48);background:rgba(255,255,255,.83)}.lottery-stage-panel .egg-support-team>span{margin-bottom:4px}.lottery-stage-panel .egg-support-team img{height:39px}
.lottery-winners-panel{min-width:0;min-height:0;display:flex;flex-direction:column;padding:18px;border:1px solid var(--line);border-radius:22px;background:var(--panel);box-shadow:0 12px 30px rgba(54,66,57,.09);overflow:hidden}.lottery-winners-panel .panel-head{flex:0 0 auto;margin-bottom:12px;padding-bottom:11px;border-bottom:1px solid var(--line)}.lottery-winners-panel h3{margin:4px 0 2px;font:800 23px serif}.lottery-winners-panel .panel-head p{margin:0;color:var(--muted);font-size:10px}.lottery-winners-panel .text-btn{white-space:nowrap}
.lottery-winners-panel .lottery-history{min-height:0;flex:1;display:flex;flex-direction:column;gap:9px;overflow-x:hidden;overflow-y:auto;padding:1px 4px 10px 1px;scrollbar-width:thin;scrollbar-color:#b9accd transparent}.lottery-winners-panel .lottery-history-item{flex:0 0 auto;width:100%;grid-template-columns:58px minmax(0,1fr);min-height:82px;padding:9px 10px;gap:10px}.lottery-winners-panel .lottery-history-avatar{width:54px;height:54px;border-radius:16px}.lottery-winners-panel .lottery-history-content b{font-size:14px}.lottery-winners-panel .lottery-prize-chip{font-size:9px}.lottery-winners-panel .lottery-empty{display:grid;place-items:center;min-height:180px;padding:22px}
.lottery-settings-backdrop{position:fixed;inset:0;z-index:95;display:grid;place-items:center;padding:22px;background:rgba(31,24,42,.48);backdrop-filter:blur(5px)}.lottery-settings-backdrop[hidden]{display:none}.lottery-settings-dialog{width:min(520px,100%);max-height:calc(100vh - 44px);overflow:auto;padding:23px;border-radius:22px;box-shadow:0 25px 70px rgba(29,22,39,.28)}.lottery-settings-dialog .panel-head{margin-bottom:10px}.lottery-settings-dialog h3{font-size:24px}.lottery-settings-dialog>label{display:block;margin:13px 0;color:var(--muted);font-size:11px}.lottery-settings-dialog label small{float:right}.lottery-settings-dialog select,.lottery-settings-dialog textarea{display:block;width:100%;margin-top:7px;border:1px solid var(--line);border-radius:11px;padding:11px;background:var(--panel)}.lottery-settings-dialog textarea{line-height:1.65;resize:vertical}.lottery-settings-dialog .lottery-check{display:flex;align-items:center;gap:8px}.lottery-settings-dialog .lottery-check input{width:18px;height:18px}.lottery-settings-dialog #lotterySaveBtn{width:100%}
#lotteryScreenShell:fullscreen{width:100vw;height:100vh;padding:18px;background:linear-gradient(145deg,#f2eff9,#f8f4ec);grid-template-columns:minmax(0,1fr) 360px;gap:18px}#lotteryScreenShell:fullscreen .lottery-stage-panel{border-radius:26px}#lotteryScreenShell:fullscreen .lottery-winners-panel{border-radius:26px}
@media(max-height:760px){body.lottery-mode .content{padding-top:10px;padding-bottom:10px}.lottery-stage-panel{padding:11px 13px;gap:6px}.lottery-screen-head h2{font-size:20px}.lottery-screen-head p{display:none}.lottery-stage-panel .egg-support-team img{height:31px}.lottery-stage-panel .lottery-actions{min-height:38px}.lottery-stage-panel .lottery-stage h2{font-size:29px}.lottery-stage-panel .lottery-ball{width:88px;height:88px}.lottery-stage-panel .lottery-ball .draw-asset{width:66px;height:66px}.lottery-winners-panel{padding:13px}}
@media(max-width:900px){.lottery-screen-shell{grid-template-columns:minmax(0,1fr) 260px}.lottery-screen-head p{display:none}.lottery-screen-tools{flex-direction:column;gap:5px}.lottery-tool-btn{padding:6px 9px}.lottery-stage-panel .asset-two,.lottery-stage-panel .asset-four{display:none}.lottery-winners-panel{padding:12px}.lottery-winners-panel .lottery-history-item{grid-template-columns:48px minmax(0,1fr)}.lottery-winners-panel .lottery-history-avatar{width:45px;height:45px}}

/* 扩充舞台与应援席蛋仔阵容 */
.asset-five{left:29%;bottom:4%;width:70px!important;height:78px!important;animation-delay:1.25s}.asset-six{right:35%;top:2%;width:60px!important;height:68px!important;animation-delay:1.5s}.asset-seven{left:37%;top:4%;width:56px!important;height:62px!important;animation-delay:1.7s}.asset-eight{left:42%;bottom:3%;width:58px!important;height:64px!important;animation-delay:1.9s}.asset-nine{right:28%;bottom:3%;width:60px!important;height:66px!important;animation-delay:2.1s}.asset-ten{right:4%;top:25%;width:55px!important;height:61px!important;animation-delay:2.3s}.egg-support-team>div{grid-template-columns:repeat(15,1fr)}.egg-support-team .encore-egg{background:linear-gradient(145deg,rgba(255,255,255,.82),color-mix(in srgb,var(--theme-tint) 65%,transparent))}
@media(max-width:1180px){.asset-seven,.asset-ten{display:none}.egg-support-team>div{grid-template-columns:repeat(8,1fr)}}
@media(max-width:900px){.asset-five,.asset-six,.asset-eight,.asset-nine{width:54px!important;height:60px!important}.asset-five{left:22%}.asset-six{right:22%}.asset-eight{left:33%}.asset-nine{right:32%}.egg-support-team>div{grid-template-columns:repeat(6,1fr)}}

/* 开奖彩花筒与礼花粒子 */
.lottery-celebration{position:absolute;inset:0;z-index:8;overflow:hidden;pointer-events:none}.confetti-piece{position:absolute;bottom:42px;width:var(--size);height:calc(var(--size)*.55);border-radius:2px;background:var(--confetti);opacity:0;box-shadow:0 0 2px rgba(255,255,255,.7)}.confetti-piece:nth-child(3n){border-radius:50%;height:var(--size)}.confetti-piece:nth-child(4n){clip-path:polygon(50% 0,62% 35%,100% 35%,69% 57%,80% 100%,50% 73%,20% 100%,31% 57%,0 35%,38% 35%)}.confetti-piece.left{left:24px}.confetti-piece.right{right:24px}.lottery-celebration.active .confetti-piece{animation:confettiCannon var(--duration) cubic-bezier(.15,.7,.22,1) var(--delay) both}.lottery-celebration.active:before,.lottery-celebration.active:after{content:"";position:absolute;z-index:2;bottom:11px;width:42px;height:72px;background:repeating-linear-gradient(135deg,#7650bd 0 9px,#ffd75c 9px 18px,#f36f9a 18px 27px);clip-path:polygon(18% 0,82% 0,100% 100%,0 100%);filter:drop-shadow(0 5px 5px rgba(65,43,87,.22));animation:cannonKick .55s ease both}.lottery-celebration.active:before{left:8px;transform:rotate(-31deg);transform-origin:bottom}.lottery-celebration.active:after{right:8px;transform:rotate(31deg);transform-origin:bottom}
@keyframes confettiCannon{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.35)}12%{opacity:1}72%{opacity:1;transform:translate(var(--dx),var(--dy)) rotate(var(--turn)) scale(1)}100%{opacity:0;transform:translate(var(--dx),calc(var(--dy) + 95px)) rotate(var(--turn)) scale(.82)}}
@keyframes cannonKick{0%{opacity:0;scale:.4}35%{opacity:1;scale:1.12}100%{opacity:1;scale:1}}
@media(prefers-reduced-motion:reduce){.lottery-celebration.active .confetti-piece{animation-duration:.4s}.lottery-celebration.active:before,.lottery-celebration.active:after{animation-duration:.2s}}

/* 2026-08-30 完整主题系统：空间、组件与内容氛围同步切换 */
:root,
html[data-theme="sage"]{
  --ink:#20312b;--muted:#718078;--paper:#eef2ea;--panel:#fffefa;--line:#dbe4d9;
  --sage:#567d69;--sage-dark:#315946;--sage-soft:#dce9df;--peach:#d98f70;--peach-soft:#f7e3d9;
  --theme-sidebar:#f8faf5;--theme-sidebar-ink:#314139;--theme-sidebar-muted:#839087;
  --theme-topbar:rgba(238,242,234,.88);--theme-input:#fbfdf9;--theme-table:#edf4ed;
  --theme-raised:#ffffff;--theme-tint:#f0f5ee;--theme-hero-a:#315b49;--theme-hero-b:#7f9b72;
  --theme-glow:rgba(86,125,105,.18);--theme-shadow:0 18px 46px rgba(46,73,59,.10);
  --theme-pattern:rgba(70,105,87,.055);--theme-login-end:#93aa7f;--radius:20px
}
html[data-theme="ocean"]{
  --ink:#18313d;--muted:#6d818c;--paper:#eaf3f7;--panel:#fafdff;--line:#d3e2e9;
  --sage:#197e92;--sage-dark:#07566b;--sage-soft:#d6edf2;--peach:#f09a6d;--peach-soft:#fde3d6;
  --theme-sidebar:#123c4b;--theme-sidebar-ink:#eefaff;--theme-sidebar-muted:#9fc4cf;
  --theme-topbar:rgba(234,243,247,.88);--theme-input:#f7fcff;--theme-table:#e4f1f6;
  --theme-raised:#ffffff;--theme-tint:#e8f5f8;--theme-hero-a:#07566b;--theme-hero-b:#35a3b4;
  --theme-glow:rgba(25,126,146,.22);--theme-shadow:0 18px 46px rgba(16,75,94,.12);
  --theme-pattern:rgba(25,126,146,.065);--theme-login-end:#64bac2;--radius:16px
}
html[data-theme="violet"]{
  --ink:#302640;--muted:#80758e;--paper:#f2eef8;--panel:#fdfbff;--line:#e2d9ed;
  --sage:#7860a8;--sage-dark:#4d377d;--sage-soft:#e8e0f3;--peach:#d77fa2;--peach-soft:#f7dfea;
  --theme-sidebar:#2b2242;--theme-sidebar-ink:#fbf7ff;--theme-sidebar-muted:#b9aaca;
  --theme-topbar:rgba(242,238,248,.89);--theme-input:#fcf9ff;--theme-table:#eee8f6;
  --theme-raised:#ffffff;--theme-tint:#f3eef9;--theme-hero-a:#4b3578;--theme-hero-b:#9a78bd;
  --theme-glow:rgba(120,96,168,.22);--theme-shadow:0 18px 48px rgba(64,44,98,.13);
  --theme-pattern:rgba(120,96,168,.06);--theme-login-end:#af86be;--radius:22px
}
html[data-theme="terracotta"]{
  --ink:#3f2922;--muted:#8b776e;--paper:#f7efe8;--panel:#fffaf6;--line:#eadbd1;
  --sage:#b35e40;--sage-dark:#7d3828;--sage-soft:#f1ddd3;--peach:#d99b45;--peach-soft:#f8e8c9;
  --theme-sidebar:#4a2f29;--theme-sidebar-ink:#fff9f3;--theme-sidebar-muted:#d6b9ad;
  --theme-topbar:rgba(247,239,232,.9);--theme-input:#fffaf7;--theme-table:#f5e8df;
  --theme-raised:#fffdfb;--theme-tint:#faeee7;--theme-hero-a:#7f3c2b;--theme-hero-b:#d48759;
  --theme-glow:rgba(179,94,64,.22);--theme-shadow:0 18px 46px rgba(104,55,39,.12);
  --theme-pattern:rgba(179,94,64,.06);--theme-login-end:#d7a06f;--radius:14px
}
html[data-theme="sky"]{
  --ink:#203342;--muted:#718695;--paper:#edf6fb;--panel:#fbfdff;--line:#d6e6ef;
  --sage:#3b8db8;--sage-dark:#24658d;--sage-soft:#dceef7;--peach:#f0a27c;--peach-soft:#fde6da;
  --theme-sidebar:#244d69;--theme-sidebar-ink:#f4fbff;--theme-sidebar-muted:#b2cedd;
  --theme-topbar:rgba(237,246,251,.92);--theme-input:#f8fcff;--theme-table:#e7f2f8;
  --theme-raised:#ffffff;--theme-tint:#e8f4fa;--theme-hero-a:#2d6f99;--theme-hero-b:#72b8d6;
  --theme-glow:rgba(59,141,184,.2);--theme-shadow:0 18px 46px rgba(37,103,137,.11);
  --theme-pattern:transparent;--theme-login-end:#9bcce0;--radius:18px
}
html[data-theme="rose"]{
  --ink:#432b35;--muted:#8b747e;--paper:#faf0f4;--panel:#fffafd;--line:#ecdbe3;
  --sage:#b65d7c;--sage-dark:#843d5a;--sage-soft:#f3dfe7;--peach:#dd9a78;--peach-soft:#f9e5dc;
  --theme-sidebar:#603746;--theme-sidebar-ink:#fff8fb;--theme-sidebar-muted:#dbb9c6;
  --theme-topbar:rgba(250,240,244,.92);--theme-input:#fff9fc;--theme-table:#f6e9ee;
  --theme-raised:#fffefd;--theme-tint:#faeaf0;--theme-hero-a:#87445f;--theme-hero-b:#d48aa2;
  --theme-glow:rgba(182,93,124,.2);--theme-shadow:0 18px 46px rgba(111,55,75,.11);
  --theme-pattern:transparent;--theme-login-end:#e0a7b5;--radius:21px
}
html[data-theme="indigo"]{
  --ink:#27304a;--muted:#747d98;--paper:#eef0f8;--panel:#fbfcff;--line:#dce0ef;
  --sage:#566caf;--sage-dark:#354987;--sage-soft:#e1e5f4;--peach:#ca82a3;--peach-soft:#f3dfE8;
  --theme-sidebar:#252d50;--theme-sidebar-ink:#f7f8ff;--theme-sidebar-muted:#b7bfdc;
  --theme-topbar:rgba(238,240,248,.92);--theme-input:#f9faff;--theme-table:#e9ebf6;
  --theme-raised:#ffffff;--theme-tint:#eceef9;--theme-hero-a:#374987;--theme-hero-b:#7586c4;
  --theme-glow:rgba(86,108,175,.21);--theme-shadow:0 18px 48px rgba(45,56,104,.12);
  --theme-pattern:transparent;--theme-login-end:#919dd1;--radius:17px
}
html[data-theme="amber"]{
  --ink:#3e3423;--muted:#877d69;--paper:#f7f2e7;--panel:#fffdf8;--line:#e9e0cd;
  --sage:#a77b2f;--sage-dark:#76531d;--sage-soft:#f1e5c8;--peach:#cd7658;--peach-soft:#f6dfd3;
  --theme-sidebar:#574529;--theme-sidebar-ink:#fffaf0;--theme-sidebar-muted:#d8c7a5;
  --theme-topbar:rgba(247,242,231,.93);--theme-input:#fffdf8;--theme-table:#f3ead6;
  --theme-raised:#ffffff;--theme-tint:#f5edd9;--theme-hero-a:#806027;--theme-hero-b:#c9a65d;
  --theme-glow:rgba(167,123,47,.2);--theme-shadow:0 18px 46px rgba(100,75,34,.11);
  --theme-pattern:transparent;--theme-login-end:#d8bc7b;--radius:15px
}

body{
  background-color:var(--paper);
  background-image:none
}
.nav:before,.nav-label:before,.sidebar .nav-label:after,.nav-item.active:before{content:none!important;display:none!important}
.nav{scrollbar-width:none}.nav::-webkit-scrollbar{display:none;width:0;height:0}.sidebar-bottom{border-top:0}
.sidebar .nav-label{display:block;padding:0 8px 4px;border-bottom:0;margin:20px 8px 7px}
.sidebar{background:var(--theme-sidebar);color:var(--theme-sidebar-ink);border-right-color:color-mix(in srgb,var(--line) 72%,transparent);box-shadow:10px 0 35px rgba(27,48,39,.035)}
.sidebar .brand strong{color:var(--theme-sidebar-ink)}.sidebar .brand span,.sidebar .nav-label,.sidebar .local-note{color:var(--theme-sidebar-muted)}
.sidebar .nav-label{display:flex;align-items:center;gap:8px}.sidebar .nav-label:after{content:"";height:1px;flex:1;background:color-mix(in srgb,var(--theme-sidebar-muted) 20%,transparent)}
.sidebar .nav-item{color:color-mix(in srgb,var(--theme-sidebar-ink) 76%,var(--theme-sidebar-muted));border:1px solid transparent;transition:.2s ease}
.sidebar .nav-item:hover{background:color-mix(in srgb,var(--sage-soft) 55%,transparent);color:var(--theme-sidebar-ink);transform:translateX(2px)}
.sidebar .nav-item[data-view].active{background:color-mix(in srgb,var(--panel) 92%,var(--sage-soft));border-color:color-mix(in srgb,var(--sage) 28%,transparent);color:var(--sage-dark);box-shadow:0 9px 24px rgba(20,48,42,.12)}
html:not([data-theme="sage"]) .sidebar .nav-item[data-view].active{background:rgba(255,255,255,.94)}
.sidebar-bottom{border-color:color-mix(in srgb,var(--theme-sidebar-muted) 22%,transparent)}
.local-note i{background:#73c98b;box-shadow:0 0 0 3px color-mix(in srgb,#73c98b 18%,transparent)}
.topbar{background:var(--theme-topbar);border-bottom-color:color-mix(in srgb,var(--line) 82%,transparent);box-shadow:0 8px 30px rgba(36,61,50,.035)}
.content{position:relative}.panel,.student-card,.metric,.todo-item,.team-card,.resource-item,.timeline-content,.script-card{background:color-mix(in srgb,var(--panel) 94%,transparent);border-color:var(--line);box-shadow:0 7px 26px rgba(38,60,50,.045)}
.panel,.student-card,.metric,.todo-item,.team-card,.resource-item,.script-card{backdrop-filter:blur(7px)}
.panel:hover,.metric:hover{border-color:color-mix(in srgb,var(--sage) 28%,var(--line))}
.welcome-banner{background:linear-gradient(118deg,var(--theme-hero-a),var(--theme-hero-b));box-shadow:0 20px 46px var(--theme-glow)}
.welcome-banner:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 17% 25%,rgba(255,255,255,.15),transparent 28%),linear-gradient(115deg,transparent 0 58%,rgba(255,255,255,.08) 58% 60%,transparent 60%);pointer-events:none}
.welcome-banner:after{border-radius:34% 66% 63% 37%;transform:rotate(20deg)}
.metric{position:relative;overflow:hidden;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.metric:hover{transform:translateY(-3px);box-shadow:var(--theme-shadow)}
.metric:after{content:"";position:absolute;width:70px;height:70px;right:-35px;bottom:-35px;border-radius:50%;background:var(--sage-soft);opacity:.42}
.metric-icon{background:var(--sage-soft);color:var(--sage-dark);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sage) 11%,transparent)}
.daily-resource{background:linear-gradient(145deg,var(--panel) 48%,var(--theme-tint))}
.quick-grid button,.filter-chips button,.segmented button,.ghost-btn,.search-box,.seat,.select,input,select,textarea{background:var(--theme-input);border-color:var(--line)}
.quick-grid button:hover{border-color:var(--sage);background:var(--sage-soft);transform:translateY(-2px)}
.primary-btn{background:linear-gradient(135deg,var(--sage),var(--sage-dark));box-shadow:0 9px 22px var(--theme-glow)}
.primary-btn:hover{filter:brightness(.95);box-shadow:0 12px 28px var(--theme-glow)}
.ghost-btn:hover{border-color:color-mix(in srgb,var(--sage) 45%,var(--line));background:var(--theme-tint)}
.icon-btn.appearance-btn{background:var(--panel);border:1px solid var(--line);color:var(--sage);box-shadow:0 7px 18px rgba(33,56,47,.07)}
th,.score-table th{background:var(--theme-table);color:var(--sage-dark)}
.score-table td{background:var(--panel)}.score-table tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--theme-tint) 70%,var(--panel))}
.score-command-bar,.teaching-hero{background:linear-gradient(135deg,var(--panel),var(--theme-tint));border-color:var(--line);box-shadow:var(--theme-shadow)}
.feedback-preview,.profile-note{background:var(--theme-input);border-color:color-mix(in srgb,var(--sage) 30%,var(--line))}
.blackboard{background:linear-gradient(135deg,var(--theme-hero-a),color-mix(in srgb,var(--theme-hero-a) 76%,#101b18));border-color:color-mix(in srgb,var(--theme-hero-b) 58%,white)}
.lottery-stage{background:radial-gradient(circle at 50% 42%,var(--panel) 0 14%,var(--theme-tint) 54%,color-mix(in srgb,var(--peach-soft) 65%,var(--panel)));border-color:var(--line)}
.egg-support-team{background:linear-gradient(100deg,var(--theme-tint),var(--peach-soft));border-color:var(--line)}
.modal-backdrop{background:color-mix(in srgb,var(--theme-hero-a) 52%,transparent)}.modal{border:1px solid var(--line);box-shadow:0 28px 80px color-mix(in srgb,var(--theme-hero-a) 30%,transparent)}
.login-screen{background:var(--paper)}.login-visual{background:linear-gradient(145deg,var(--theme-hero-a),var(--theme-hero-b) 58%,var(--theme-login-end))}.login-panel{background:var(--panel)}
.login-card input{background:var(--theme-input)}.brand-mark{background:linear-gradient(145deg,var(--sage),var(--sage-dark));box-shadow:0 10px 24px var(--theme-glow)}
.danger-panel{background:color-mix(in srgb,#fff5f1 72%,var(--panel));border-color:color-mix(in srgb,var(--red) 28%,var(--line))}

/* 主题选择器：从色点升级为可辨识的主题预览 */
.theme-popover{top:50px;width:292px;padding:16px;border-color:var(--line);background:color-mix(in srgb,var(--panel) 96%,transparent);box-shadow:0 22px 60px rgba(27,45,39,.18);backdrop-filter:blur(18px)}
.theme-popover-head{display:flex;justify-content:space-between;align-items:end;padding:0 2px 12px;border-bottom:1px solid var(--line)}
.theme-popover-head>span{font-size:13px;color:var(--ink);font-weight:900}.theme-popover-head small{font-size:9px;color:var(--muted)}
.theme-swatches{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}
.theme-swatches button,.theme-swatches.large button{position:relative;width:auto;height:auto;min-height:66px;display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:13px;background:var(--theme-input);color:var(--ink);text-align:left;box-shadow:none;transition:.2s ease}
.theme-swatches button:hover{transform:translateY(-2px);border-color:var(--sage);box-shadow:0 10px 22px var(--theme-glow)}
.theme-swatches button.active{border-color:var(--sage);background:var(--sage-soft);box-shadow:0 0 0 2px color-mix(in srgb,var(--sage) 20%,transparent)}
.theme-swatches button.active:after{content:"✓";position:absolute;right:7px;top:6px;width:17px;height:17px;display:grid;place-items:center;border-radius:50%;background:var(--sage);color:#fff;font-size:10px;font-weight:900}
.theme-swatches button i{width:30px;height:42px;flex:0 0 30px;border-radius:9px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),0 4px 9px rgba(37,45,41,.12)}
.theme-swatches button span,.theme-swatches button b,.theme-swatches button small{display:block}.theme-swatches button b{font-size:11px}.theme-swatches button small{margin-top:4px;color:var(--muted);font-size:9px;font-weight:500}
.theme-swatches button.sage,.theme-swatches button.ocean,.theme-swatches button.violet,.theme-swatches button.terracotta{background:var(--theme-input)}
.theme-swatches button.sage i{background:linear-gradient(150deg,#315b49 0 42%,#eef2ea 42% 74%,#d98f70 74%)}
.theme-swatches button.ocean i{background:linear-gradient(150deg,#07566b 0 42%,#eaf3f7 42% 74%,#35a3b4 74%)}
.theme-swatches button.violet i{background:linear-gradient(150deg,#4b3578 0 42%,#f2eef8 42% 74%,#d77fa2 74%)}
.theme-swatches button.terracotta i{background:linear-gradient(150deg,#7f3c2b 0 42%,#f7efe8 42% 74%,#d99b45 74%)}
.theme-swatches button.sky i{background:linear-gradient(150deg,#2d6f99 0 42%,#edf6fb 42% 74%,#72b8d6 74%)}
.theme-swatches button.rose i{background:linear-gradient(150deg,#87445f 0 42%,#faf0f4 42% 74%,#d48aa2 74%)}
.theme-swatches button.indigo i{background:linear-gradient(150deg,#374987 0 42%,#eef0f8 42% 74%,#7586c4 74%)}
.theme-swatches button.amber i{background:linear-gradient(150deg,#806027 0 42%,#f7f2e7 42% 74%,#c9a65d 74%)}
.theme-swatches.large{grid-template-columns:repeat(2,minmax(160px,1fr));max-width:560px;margin-top:20px}.theme-swatches.large button{min-height:82px;padding:13px}.theme-swatches.large button i{width:44px;height:56px;flex-basis:44px}.theme-swatches.large button b{font-size:13px}.theme-swatches.large button small{font-size:10px}
.appearance-panel{background:linear-gradient(145deg,var(--panel),var(--theme-tint))}

/* 顶栏主题提示与教师头像设置 */
.icon-btn.appearance-btn{width:auto;min-width:76px;height:42px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:9px;border-radius:12px;font-size:12px;font-weight:900}.theme-button-label{line-height:1}.theme-current-dot{width:12px;height:12px;display:block;border:3px solid color-mix(in srgb,var(--sage) 20%,white);border-radius:50%;background:var(--sage);box-shadow:0 0 0 1px color-mix(in srgb,var(--sage) 45%,var(--line)),0 3px 8px var(--theme-glow)}
.icon-btn.manual-doc-btn{width:auto;min-width:76px;height:42px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--sage-dark);font-size:12px;font-weight:900;line-height:1;text-decoration:none;box-shadow:0 7px 18px rgba(33,56,47,.07);transition:border-color .16s,background .16s,transform .16s}.icon-btn.manual-doc-btn:hover{border-color:color-mix(in srgb,var(--sage) 48%,var(--line));background:var(--sage-soft);transform:translateY(-1px)}.manual-doc-btn svg{width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.manual-doc-btn span{line-height:1}
.avatar-controls{position:relative;display:flex;align-items:center}.avatar.user-menu-btn{width:42px;height:42px;padding:0;overflow:hidden;border:1px solid color-mix(in srgb,var(--sage) 22%,var(--line));background:linear-gradient(145deg,var(--sage-soft),var(--peach-soft));box-shadow:0 7px 18px rgba(33,56,47,.08)}.teacher-avatar-preview,.avatar-preview-large{display:grid;place-items:center;width:100%;height:100%;color:var(--sage-dark);font-weight:900;line-height:1;text-align:center}.teacher-avatar-preview img,.avatar-preview-large img{display:block;width:100%;height:100%;object-fit:cover}.avatar-popover{position:absolute;z-index:45;top:52px;right:0;width:342px;max-height:calc(100vh - 118px);overflow-y:auto;padding:16px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--panel) 96%,transparent);box-shadow:0 22px 60px rgba(28,38,32,.2);backdrop-filter:blur(18px);scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--sage) 38%,var(--line)) transparent}.avatar-popover[hidden]{display:none}.avatar-popover:before{content:"";position:absolute;right:14px;top:-7px;width:13px;height:13px;rotate:45deg;background:var(--panel);border-left:1px solid var(--line);border-top:1px solid var(--line)}.avatar-popover-head{display:grid;grid-template-columns:56px 1fr;align-items:center;gap:12px;padding-bottom:13px;border-bottom:1px solid var(--line)}.avatar-preview-large{width:56px;height:56px;overflow:hidden;border-radius:17px;background:linear-gradient(145deg,var(--sage-soft),var(--peach-soft));font-size:23px}.avatar-popover-head strong{display:block;font-size:14px}.avatar-popover-head small{display:block;margin-top:4px;color:var(--muted);font-size:10px}.avatar-preset-label{margin:13px 0 7px;color:var(--muted);font-size:9px;font-weight:900;letter-spacing:.12em}.avatar-preset-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.avatar-preset-grid button,.avatar-base-grid button{height:45px;padding:0;display:grid;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--theme-input);color:var(--sage-dark);font-size:16px;font-weight:900}.avatar-preset-grid button:hover,.avatar-base-grid button:hover{border-color:var(--sage);background:var(--sage-soft);transform:translateY(-2px)}.avatar-preset-grid button.active,.avatar-base-grid button.active{border-color:var(--sage);box-shadow:0 0 0 2px color-mix(in srgb,var(--sage) 18%,transparent);background:var(--sage-soft)}.avatar-base-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:2px}.avatar-base-grid button{height:47px}.avatar-base-grid img{width:100%;height:100%;object-fit:contain;padding:2px}.avatar-upload-btn,.avatar-logout-btn{width:100%;height:40px;margin-top:12px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:11px;background:var(--theme-input);font-size:11px;font-weight:900;cursor:pointer}.avatar-upload-btn:hover{border-color:var(--sage);background:var(--sage-soft)}.avatar-upload-btn input{display:none}.avatar-logout-btn{margin-top:8px;border-color:color-mix(in srgb,var(--red) 28%,var(--line));color:var(--red)}.avatar-logout-btn:hover{background:color-mix(in srgb,var(--peach-soft) 70%,var(--panel))}
.brand .brand-avatar-controls{flex:0 0 auto}.brand .avatar.user-menu-btn{position:relative;width:46px;height:46px;display:grid!important;place-items:center!important;padding:0!important;border-radius:14px}.brand .teacher-avatar-preview{position:absolute;inset:0;display:grid!important;width:100%!important;height:100%!important;place-items:center!important;align-content:center!important;justify-content:center!important;margin:0!important;padding:0!important;color:var(--sage-dark);font-size:18px;line-height:1!important;text-align:center;transform:none!important}.brand .avatar-popover{left:0;right:auto;top:56px}.brand .avatar-popover:before{left:15px;right:auto}.brand .brand-copy{min-width:0}.brand .brand-copy strong,.brand .brand-copy span{display:block}.brand .brand-copy strong{overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.brand .brand-copy span{margin-top:4px;color:var(--muted);font-size:10px}
.avatar-popover .avatar-upload-btn{border:2px solid color-mix(in srgb,var(--sage) 58%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--sage-soft) 78%,var(--panel)),var(--panel));color:color-mix(in srgb,var(--sage-dark) 88%,#152b34);text-shadow:none;box-shadow:0 5px 14px color-mix(in srgb,var(--sage) 16%,transparent)}.avatar-popover .avatar-upload-btn:before{content:"⇧";margin-right:7px;color:currentColor;font-size:15px;font-weight:1000;line-height:1}.avatar-popover .avatar-upload-btn:hover{border-color:var(--sage);background:var(--sage);color:#fff}.avatar-popover-head .avatar-user-copy{min-width:0;display:flex;align-items:flex-start;flex-direction:column;gap:6px}.avatar-popover-head .avatar-user-copy strong{width:100%;color:#17313c;font-size:16px;font-weight:1000;line-height:1.25;text-shadow:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avatar-popover-head .avatar-user-copy #currentUserRole{display:inline-flex;width:max-content;align-items:center;margin:0;padding:4px 9px;border:1px solid #d7b6f0;border-radius:999px;background:linear-gradient(135deg,#f1e6ff,#e8dcff);color:#7046a3;font-size:10px;font-weight:1000;line-height:1;box-shadow:0 3px 8px rgba(112,70,163,.14)}.avatar-popover-head .avatar-user-copy #currentUserRole:before{content:"◆";margin-right:5px;color:#9a63cd;font-size:7px}.avatar-welcome{color:#4f6f7d;font-size:11px;font-weight:900;line-height:1.2}
.avatar-popover-head .avatar-user-copy{width:100%;display:grid;grid-template-columns:max-content minmax(125px,1fr);grid-template-rows:auto auto;align-items:center;gap:7px 12px}.avatar-popover-head .avatar-user-copy strong{grid-column:1;grid-row:1;color:var(--ink)}.avatar-popover-head .avatar-user-copy #currentUserRole{grid-column:1;grid-row:2}.avatar-popover-head .avatar-user-copy .avatar-welcome{grid-column:2;grid-row:1/3;align-self:stretch;display:grid;min-width:125px;place-items:center;margin:0;font-size:20px;font-weight:1000;line-height:1.2;white-space:nowrap;background:linear-gradient(100deg,#7b42d1 5%,#4c78d4 48%,#23a391 95%);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;text-align:center;text-shadow:none}
@media(max-width:520px){.avatar-popover{position:fixed;top:76px;right:10px;width:min(342px,calc(100vw - 20px));max-height:calc(100vh - 88px)}}

@media(max-width:1100px){.score-layout{grid-template-columns:1fr}.score-aside{position:static;order:-1}}
@media(max-width:820px){.theme-popover{position:fixed;top:76px;right:12px;width:min(292px,calc(100vw - 24px))}.sidebar{box-shadow:18px 0 48px rgba(20,35,29,.22)}}
@media(max-width:560px){.theme-swatches.large{grid-template-columns:1fr}.theme-popover .theme-swatches{grid-template-columns:1fr 1fr}.theme-popover-head small{display:none}.topbar-title .eyebrow,.topbar-title .live-time{display:none}.topbar-copy{display:block}.topbar-title h1{white-space:nowrap}.icon-btn.appearance-btn{min-width:42px;width:42px;padding:0}.theme-button-label{display:none}}

/* 成绩按学期管理、归档与删除 */
.score-command-bar{align-items:flex-start}.score-command-copy{min-width:230px;padding-top:5px}.score-command-center{flex:1;min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:11px}.score-scope-bar{display:flex;align-items:center;justify-content:flex-end;gap:9px;padding-bottom:10px;border-bottom:1px solid var(--line)}.score-scope-bar label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px;font-weight:800}.score-scope-bar .select{width:205px;padding:8px 10px}.archive-toggle-btn{height:36px;padding:0 13px;border:1px solid var(--line);border-radius:10px;background:var(--theme-input);color:var(--muted);font-size:11px;font-weight:800}.archive-toggle-btn b{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:5px;padding:0 6px;border-radius:999px;background:var(--theme-table);color:var(--sage-dark)}.archive-toggle-btn.active{border-color:var(--sage);background:var(--sage-soft);color:var(--sage-dark);box-shadow:0 0 0 2px color-mix(in srgb,var(--sage) 15%,transparent)}.score-command-actions{width:100%}.score-command-actions #scoreTestSelect{min-width:185px;flex:1}.test-archive-btn{color:var(--sage-dark)}.danger-outline-btn{border:1px solid color-mix(in srgb,var(--red) 38%,var(--line));border-radius:10px;padding:10px 13px;background:color-mix(in srgb,#fff4f1 72%,var(--panel));color:#a84c40;font-weight:800}.danger-outline-btn:hover{border-color:var(--red);background:#f8ded8}.score-command-bar button:disabled,.score-command-bar select:disabled,.score-command-bar .disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.score-input:disabled,.score-aside input:disabled,.score-aside textarea:disabled{background:var(--theme-table);color:var(--muted);cursor:not-allowed}.score-table td .analysis-empty{padding:54px 20px}.score-table-head .muted{font-weight:700}
@media(max-width:1180px){.score-command-bar{flex-direction:column}.score-command-copy{min-width:0}.score-command-center{width:100%}.score-scope-bar{justify-content:flex-start}}
@media(max-width:760px){.score-scope-bar{align-items:stretch;flex-direction:column}.score-scope-bar label{display:grid;grid-template-columns:42px 1fr}.score-scope-bar .select{width:100%}.archive-toggle-btn{width:100%}.score-command-actions #scoreTestSelect{flex-basis:100%;width:100%}.score-command-actions .test-archive-btn,.score-command-actions .danger-outline-btn{flex:1}.score-command-actions #classAnalysisBtn,.score-command-actions #saveScoresBtn{flex-basis:100%}}

/* 抽奖舞台左右装饰与按时长同步音效 */
.stage-side-prop{position:absolute;z-index:2;top:50%;width:158px;height:190px;pointer-events:none;filter:drop-shadow(0 16px 18px rgba(77,54,94,.16))}.stage-side-prop .prop-shadow{position:absolute;left:18px;right:18px;bottom:8px;height:18px;border-radius:50%;background:rgba(67,55,77,.12);filter:blur(6px)}
.lottery-box-prop{left:clamp(26px,8vw,145px);transform:translateY(-43%) rotate(-2deg)}.lottery-box-prop .box-body{position:absolute;z-index:3;left:12px;bottom:24px;width:134px;height:105px;border:5px solid rgba(255,255,255,.9);border-radius:13px 13px 25px 25px;background:linear-gradient(145deg,#9b75dc,#7650b4 58%,#5e3c98);box-shadow:inset 9px 9px 0 rgba(255,255,255,.16),inset -8px -9px 0 rgba(54,29,88,.13)}.lottery-box-prop .box-body:before,.lottery-box-prop .box-body:after{content:"";position:absolute;width:17px;height:100%;top:0;background:rgba(255,220,91,.9)}.lottery-box-prop .box-body:before{left:20px}.lottery-box-prop .box-body:after{right:20px}.lottery-box-prop .box-body b{position:absolute;z-index:2;left:50%;top:42px;translate:-50% 0;padding:5px 9px;border-radius:999px;background:#fff7cb;color:#674798;font:900 10px/1 Arial;letter-spacing:.08em}.lottery-box-prop .box-body i{position:absolute;z-index:2;left:50%;top:68px;translate:-50% 0;color:#ffe26d;font-style:normal;font-size:19px}.lottery-box-prop .box-lid{position:absolute;z-index:5;left:3px;top:51px;width:152px;height:32px;border:5px solid rgba(255,255,255,.92);border-radius:15px 15px 9px 9px;background:linear-gradient(#b38bea,#815bbb);box-shadow:0 8px 0 rgba(73,44,113,.15)}.lottery-box-prop .box-lid b{position:absolute;left:50%;top:7px;width:72px;height:8px;translate:-50% 0;border-radius:9px;background:#3f2a61;box-shadow:inset 0 2px 0 rgba(255,255,255,.18)}.box-ticket{position:absolute;z-index:2;top:20px;width:39px;height:56px;display:grid;place-items:center;border:3px solid white;border-radius:8px;background:#ffdf64;color:#7450a6;font:900 18px/1 Arial;box-shadow:0 6px 12px rgba(79,54,94,.13)}.ticket-one{left:34px;rotate:-15deg}.ticket-two{right:31px;top:15px;rotate:13deg;background:#ff8ead;color:white}
.flower-prop{right:clamp(26px,8vw,145px);transform:translateY(-42%) rotate(2deg)}.flower-spray{position:absolute;z-index:4;inset:0 0 auto;height:128px}.flower-spray i{position:absolute;font-style:normal;font-size:46px;filter:drop-shadow(0 5px 4px rgba(81,62,73,.13))}.flower-spray i:nth-child(1){left:12px;top:36px;rotate:-18deg}.flower-spray i:nth-child(2){left:58px;top:2px;font-size:50px}.flower-spray i:nth-child(3){right:10px;top:38px;rotate:18deg}.flower-spray i:nth-child(4){left:34px;top:74px;font-size:42px;rotate:-20deg}.flower-spray i:nth-child(5){right:29px;top:78px;font-size:42px;rotate:18deg}.bouquet-wrap{position:absolute;z-index:3;left:31px;top:94px;width:98px;height:77px;background:linear-gradient(135deg,#fff5de,#efc98e);clip-path:polygon(0 0,100% 0,72% 100%,28% 100%);filter:drop-shadow(0 7px 5px rgba(83,61,52,.12))}.bouquet-wrap:after{content:"";position:absolute;inset:10px 44px 0;background:#72a96e;rotate:-9deg;box-shadow:15px 0 0 #5c9b64,-15px 0 0 #76b36d}.bouquet-ribbon{position:absolute;z-index:6;left:58px;top:121px;width:44px;height:31px;display:grid;place-items:center;border-radius:50%;background:#d36e9c;color:#fff1a8;font-size:15px;box-shadow:-22px 6px 0 -7px #e18eb1,22px 6px 0 -7px #e18eb1}
.lottery-stage.drawing .lottery-box-prop{animation:lotteryBoxCheer .38s ease-in-out infinite alternate}.lottery-stage.drawing .flower-prop{animation:flowerCheer .65s ease-in-out infinite alternate}.lottery-stage.winner .stage-side-prop{animation:propCelebrate .7s cubic-bezier(.2,.9,.3,1.25)}
@keyframes lotteryBoxCheer{to{translate:0 -8px;rotate:-3deg}}@keyframes flowerCheer{to{rotate:4deg;translate:0 -5px}}@keyframes propCelebrate{45%{scale:1.1;translate:0 -12px}}
.lottery-duration-control{position:relative;display:flex;align-items:center;margin-top:7px}.lottery-duration-control input{width:100%;height:44px;padding:10px 48px 10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--panel);font-weight:900;outline:none;appearance:textfield}.lottery-duration-control input::-webkit-inner-spin-button,.lottery-duration-control input::-webkit-outer-spin-button{margin:0;appearance:none}.lottery-duration-control input:focus{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.lottery-duration-control b{position:absolute;z-index:2;right:14px;display:block;margin:0;color:var(--muted);font-size:11px;line-height:1;pointer-events:none;transform:none!important}.lottery-duration-control:hover b{color:var(--muted);transform:none!important}.lottery-duration-hint{display:block;margin-top:6px;color:var(--sage-dark);font-size:10px;font-weight:700}.lottery-start{font-variant-numeric:tabular-nums}
@media(max-width:1180px){.stage-side-prop{scale:.78}.lottery-box-prop{left:2.5%}.flower-prop{right:2.5%}}
@media(max-width:900px){.stage-side-prop{display:none}}
@media(prefers-reduced-motion:reduce){.lottery-stage.drawing .lottery-box-prop,.lottery-stage.drawing .flower-prop,.lottery-stage.winner .stage-side-prop{animation:none}}

/* 全工作台统一视口：外层固定，功能内容在页面内部滚动 */
html,body{width:100%;height:100%;overflow:hidden}
.app-shell{height:100vh;min-height:0;overflow:hidden}
.main{height:100vh;min-height:0;display:grid;grid-template-rows:94px minmax(0,1fr);overflow:hidden}
.topbar{position:relative;top:auto;height:94px;min-height:94px}
.content{width:100%;height:100%;min-height:0;max-width:1500px;margin:0 auto;padding:22px 30px 20px;overflow:hidden}
body.lottery-mode .content{height:100%}
.view.active{height:100%;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:0 5px 18px 0;scrollbar-width:none}
.view.active::-webkit-scrollbar{width:0;height:0}
#view-lottery.active{padding:0;overflow:hidden}
.sidebar .nav{min-height:0;overscroll-behavior:contain;scrollbar-width:none}.sidebar .nav::-webkit-scrollbar{width:0;height:0}
.table-wrap,.seat-map-wrap,.trend-data-table,.student-line-chart,.lottery-history{overscroll-behavior:contain}
@media(max-width:820px){.main{grid-template-rows:84px minmax(0,1fr)}.topbar{height:84px;min-height:84px}.content{height:100%;padding:14px 14px 12px}.view.active{padding-right:2px;padding-bottom:14px}#view-lottery.active{padding:0}}
@media(max-height:700px) and (min-width:821px){.main{grid-template-rows:82px minmax(0,1fr)}.topbar{height:82px;min-height:82px;padding-top:7px;padding-bottom:7px}.content{padding-top:14px;padding-bottom:12px}}

/* 内容完整性：名单紧凑展示，成绩与家校话术使用有边框的内部工作区 */
#view-students.active{display:grid;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden;padding-bottom:0}
#view-students .page-actions{margin-bottom:8px}#view-students .student-stats{display:none!important}#view-students .stat-chip{padding:6px 8px;font-size:9px}
#view-students .student-grid{min-height:0;height:calc(100% + 10px);grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:clamp(78px,10vh,102px);align-content:start;gap:5px;padding:6px;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--panel) 78%,var(--theme-tint));box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--sage) 52%,var(--line)) transparent}
#view-students .student-grid::-webkit-scrollbar,#view-parents .script-grid::-webkit-scrollbar,.score-workspace-frame::-webkit-scrollbar{width:7px}#view-students .student-grid::-webkit-scrollbar-thumb,#view-parents .script-grid::-webkit-scrollbar-thumb,.score-workspace-frame::-webkit-scrollbar-thumb{border-radius:999px;background:color-mix(in srgb,var(--sage) 48%,var(--line));border:2px solid transparent;background-clip:padding-box}
#view-students .student-card{min-width:0;min-height:0;padding:7px 8px;border-radius:11px;text-align:center;overflow:hidden}#view-students .student-card:after{width:38px;height:38px;right:-20px;top:-20px}#view-students .student-card-head{height:43px;min-width:0;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:7px;text-align:left}#view-students .student-card-head>div:last-child{min-width:0}
#view-students .student-avatar{position:relative;width:41px;height:43px;flex:0 0 41px;overflow:hidden!important}#view-students .student-avatar .cn-kid{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.52);transform-origin:center}
#view-students .student-card h4{min-width:0;display:flex;justify-content:flex-start;gap:3px;font-size:12.5px;white-space:nowrap}#view-students .student-card h4:first-letter{}#view-students .student-card small{margin-top:2px;font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}#view-students .student-gender-chip{width:17px;height:17px;font-size:10px;flex:0 0 17px}
#view-students .student-card .tags{height:17px;margin-top:3px;gap:3px;justify-content:center;overflow:hidden;flex-wrap:nowrap}#view-students .student-card .tag{max-width:62px;padding:3px 5px;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#view-students .student-card .tag:nth-child(n+3){display:none}

/* 1080P 教室大屏：六排均分高度，档案内容在卡片中部集中展示 */
@media(min-width:1400px) and (min-height:900px){
  #view-students .student-grid{grid-auto-rows:calc((100% - 25px)/6);height:100%;gap:5px;padding:6px}
  #view-students .student-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 9px;text-align:center}
  #view-students .student-card-head{width:100%;height:auto;justify-content:center;gap:9px;text-align:left}
  #view-students .student-avatar{width:46px;height:48px;flex-basis:46px}
  #view-students .student-avatar .cn-kid{transform:translate(-50%,-50%) scale(.58)}
  #view-students .student-card h4{justify-content:center;font-size:14px}
  #view-students .student-card small{display:block;margin-top:3px;font-size:9px;text-align:center}
  #view-students .student-card .tags{height:20px;margin-top:7px;justify-content:center}
  #view-students .student-card .tag{max-width:76px;padding:4px 7px;font-size:9px}
}

#view-parents.active{display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;padding-bottom:0}#view-parents .page-actions{margin-bottom:9px}#view-parents .script-grid{min-height:0;height:100%;align-content:start;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px;border:1px solid var(--line);border-radius:17px;background:color-mix(in srgb,var(--panel) 78%,var(--theme-tint));overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--sage) 52%,var(--line)) transparent}#view-parents .script-card{padding:14px;border-radius:13px}#view-parents .script-card h3{font-size:15px;margin:8px 0}#view-parents .script-card p{font-size:11px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}

#view-scores.active{display:grid;grid-template-rows:auto auto auto minmax(0,1fr);overflow:hidden;padding-bottom:0}#view-scores .score-command-bar{margin-bottom:9px;padding:13px 16px;gap:15px}#view-scores .score-command-bar h2{font-size:20px;margin:3px 0}#view-scores .score-command-copy p{font-size:10px}#view-scores .score-command-center{gap:7px}#view-scores .score-scope-bar{padding-bottom:7px}#view-scores .score-command-actions button,#view-scores .score-command-actions .ghost-btn{padding:8px 10px;font-size:11px}
#view-scores .score-metrics{margin:0 0 9px;gap:9px}#view-scores .score-metrics .metric{min-height:62px;padding:9px 12px;gap:9px}#view-scores .score-metrics .metric-icon{width:34px;height:34px;font-size:16px}#view-scores .score-metrics .metric b{font-size:18px}#view-scores .score-metrics .metric span{font-size:10px}
.score-workspace-frame{min-height:0;height:100%;padding:12px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--panel) 75%,var(--theme-tint));box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--sage) 52%,var(--line)) transparent}.score-workspace-frame .score-layout{margin:0}
.score-workspace-frame .table-wrap{max-height:none;overflow:visible}
@media(max-width:1180px){#view-students .student-grid{grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:72px}#view-parents .script-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){#view-students.active,#view-parents.active,#view-scores.active{display:block;overflow-y:auto;padding-bottom:12px}#view-students .student-grid{height:auto;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:76px}#view-parents .script-grid,.score-workspace-frame{height:auto;max-height:none;overflow:visible}#view-parents .script-grid{grid-template-columns:1fr 1fr}.score-workspace-frame .table-wrap{overflow:auto}}
@media(max-width:520px){#view-students .student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#view-parents .script-grid{grid-template-columns:1fr}}

/* 窄屏抽奖页改为上下结构，避免中奖名单挤压舞台 */
@media(max-width:700px){
  #view-lottery.active{overflow-y:auto;padding-right:2px;padding-bottom:14px}
  .lottery-screen-shell{height:auto;min-height:100%;grid-template-columns:1fr;grid-template-rows:auto auto;gap:12px}
  .lottery-stage-panel{min-height:620px;padding:14px 12px}
  .lottery-winners-panel{min-height:330px;max-height:none}
  .lottery-screen-head{align-items:flex-start}
  .lottery-screen-head h2{font-size:22px}
  .lottery-stage-panel .lottery-stage{min-height:390px}
}

/* 备课与每日反馈：完整内容放入清晰的内部工作区 */
#view-teaching.active{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;overflow:hidden;padding-bottom:0}
#view-teaching .teaching-hero{min-height:0;margin:0;padding:15px 20px;border-radius:16px}
#view-teaching .teaching-hero h2{margin:7px 0 4px;font-size:21px}
#view-teaching .teaching-hero p{font-size:11px}
.teaching-workspace-frame,.feedback-workspace-frame{min-height:0;height:100%;padding:12px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--panel) 76%,var(--theme-tint));box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--sage) 52%,var(--line)) transparent}
.teaching-workspace-frame::-webkit-scrollbar,.feedback-workspace-frame::-webkit-scrollbar{width:8px}
.teaching-workspace-frame::-webkit-scrollbar-thumb,.feedback-workspace-frame::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:color-mix(in srgb,var(--sage) 52%,var(--line));background-clip:padding-box}
.teaching-workspace-frame .teaching-grid{margin:0;align-items:start}
#view-teaching .panel{padding:17px}
#view-teaching .panel-head{align-items:flex-start;margin-bottom:10px}
.panel-subtitle{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.5}
#view-teaching .lesson-form label{margin:10px 0;font-size:10px}
#view-teaching .lesson-form textarea{min-height:76px;line-height:1.55;resize:vertical}
#view-teaching #lessonTasks{min-height:94px}
#view-teaching .resource-list{gap:8px}
#view-teaching .resource-item{padding:10px 11px}
#view-teaching .resource-item b{font-size:12px;line-height:1.45}
#view-teaching .resource-item small{font-size:9px}

#view-feedback.active{display:block;overflow:hidden;padding-bottom:0}
.feedback-workspace-frame{display:flex;flex-direction:column;gap:12px}
.feedback-quick-fill{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(110deg,var(--theme-tint),var(--panel))}
.feedback-quick-fill>div:first-child{display:flex;flex-direction:column;gap:4px;white-space:nowrap}.feedback-quick-fill b{font-size:13px}
.feedback-template-buttons{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.feedback-template-buttons button{border:1px solid var(--line);border-radius:999px;padding:8px 11px;background:var(--panel);color:var(--ink);font-size:10px;font-weight:800}
.feedback-template-buttons button:nth-child(1){border-color:#a9cfac;background:#e8f4e8;color:#3d7144}.feedback-template-buttons button:nth-child(2){border-color:#e2c489;background:#fbf1d9;color:#85621c}.feedback-template-buttons button:nth-child(3){border-color:#a8cae1;background:#e5f2fa;color:#356d91}.feedback-template-buttons button:nth-child(4){border-color:#c9b1df;background:#f0e7f8;color:#704c94}
.feedback-template-buttons button:hover{transform:translateY(-1px);box-shadow:0 7px 16px var(--theme-glow)}
#view-feedback .feedback-layout{align-items:stretch;gap:12px}
#view-feedback .panel{padding:17px}
#view-feedback .panel-head{align-items:flex-start;margin-bottom:10px}
#view-feedback .lesson-form label{margin:10px 0;font-size:10px}
#view-feedback .lesson-form textarea{min-height:70px;line-height:1.55;resize:vertical}
#view-feedback .feedback-preview{min-height:350px;padding:18px;font-size:12px;line-height:1.75}
.feedback-writing-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:10px}
.feedback-writing-guide>div{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:7px;padding:9px;border:1px solid var(--line);border-radius:11px;background:var(--theme-input)}
.feedback-writing-guide i{grid-row:1/3;width:22px;height:22px;display:grid;place-items:center;border-radius:7px;background:var(--sage-soft);color:var(--sage-dark);font-size:9px;font-style:normal;font-weight:900}
.feedback-writing-guide b{font-size:10px}.feedback-writing-guide span{color:var(--muted);font-size:8px;line-height:1.4}

@media(max-width:1100px){.feedback-quick-fill{align-items:flex-start;flex-direction:column}.feedback-template-buttons{justify-content:flex-start}.feedback-writing-guide{grid-template-columns:1fr}.teaching-workspace-frame .teaching-grid{grid-template-columns:1fr}.teaching-workspace-frame .teaching-grid .span-2{grid-column:auto}}
@media(max-width:820px){#view-teaching.active,#view-feedback.active{display:block;overflow-y:auto;padding-bottom:12px}.teaching-workspace-frame,.feedback-workspace-frame{height:auto;max-height:none;overflow:visible}.feedback-template-buttons{display:grid;grid-template-columns:1fr 1fr;width:100%}.feedback-layout{grid-template-columns:1fr}}

/* 成绩表头排序 */
.score-sort-btn{display:inline-flex;align-items:center;gap:6px;margin:-7px -9px;padding:7px 9px;border:0;border-radius:8px;background:transparent;color:inherit;font:inherit;font-weight:900;white-space:nowrap}
.score-sort-btn:hover{background:color-mix(in srgb,var(--sage) 10%,transparent);color:var(--sage-dark)}
.score-sort-btn:focus-visible{outline:2px solid var(--sage);outline-offset:1px}
.score-sort-btn.active{color:var(--sage-dark)}
.score-sort-icon{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:5px;background:color-mix(in srgb,var(--sage) 10%,transparent);font-size:12px;line-height:1}
.score-sort-btn.active .score-sort-icon{background:var(--sage);color:#fff}
.sort-decoration-shield{display:none}

/* 设置页：左侧菜单显示选择 */
.sidebar [hidden]{display:none!important}
.menu-settings-panel{grid-column:1/-1;min-height:0!important}.menu-settings-panel .panel-head{align-items:flex-start;margin-bottom:13px}.menu-settings-panel .panel-head p{margin:5px 0 0}.menu-settings-panel .panel-head .ghost-btn{flex:0 0 auto;padding:8px 11px}
.menu-choice-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}.menu-choice-group{grid-column:1/-1;margin-top:7px;padding-top:10px;border-top:1px solid var(--line);color:var(--sage-dark);font-size:10px;font-weight:900;letter-spacing:.1em}.menu-choice-group:first-child{margin-top:0;padding-top:0;border-top:0}
.menu-choice{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;min-height:44px;padding:9px 11px;border:1px solid var(--line);border-radius:11px;background:var(--theme-input);cursor:pointer}.menu-choice:hover{border-color:color-mix(in srgb,var(--sage) 55%,var(--line));background:var(--sage-soft)}.menu-choice input{appearance:none;width:19px;height:19px;margin:0;display:grid;place-content:center;border:1.5px solid color-mix(in srgb,var(--sage) 55%,var(--line));border-radius:6px;background:var(--panel)}.menu-choice input:checked{border-color:var(--sage);background:var(--sage)}.menu-choice input:checked:after{content:"✓";color:#fff;font-size:13px;font-weight:900}.menu-choice span{font-weight:800}.menu-choice i{color:var(--muted);font-size:9px;font-style:normal}.menu-choice:has(input:checked) i{color:var(--sage-dark)}.menu-fixed-note{margin:13px 0 0!important;font-size:10px}
@media(max-width:620px){.menu-choice-list{grid-template-columns:1fr}.menu-settings-panel .panel-head{gap:10px}}

/* 抽奖设置：自定义名单与加权库存奖池 */
.lottery-settings-dialog{width:min(680px,100%)}
.lottery-field-hint{display:block;margin-top:6px;color:var(--muted);font-size:9px;line-height:1.55}
.lottery-rule-card{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:10px;margin:14px 0 5px;padding:11px 12px;border:1px solid color-mix(in srgb,var(--sage) 25%,var(--line));border-radius:12px;background:var(--sage-soft)}
.lottery-rule-card b{color:var(--sage-dark);font-size:11px;white-space:nowrap}.lottery-rule-card span{color:var(--muted);font-size:10px;line-height:1.6}
.lottery-settings-actions{display:grid;grid-template-columns:auto 1fr;gap:9px;margin-top:14px}.lottery-settings-dialog .lottery-settings-actions #lotterySaveBtn{width:100%}
.lottery-roster-picker{margin:13px 0}.lottery-roster-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.lottery-roster-head>div:first-child{display:flex;align-items:center;gap:9px}.lottery-roster-head b{font-size:11px}.lottery-roster-head span{padding:3px 7px;border-radius:999px;background:var(--sage-soft);color:var(--sage-dark);font-size:9px;font-weight:900}.lottery-roster-actions{display:flex;gap:5px}.lottery-roster-actions button{border:1px solid var(--line);border-radius:8px;padding:5px 8px;background:var(--panel);color:var(--muted);font-size:9px;font-weight:900}.lottery-roster-actions button:hover{border-color:var(--sage);color:var(--sage-dark);background:var(--sage-soft)}
.lottery-settings-dialog #lotteryPool.custom-active{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft);color:var(--sage-dark);font-weight:900}
.lottery-roster-search{position:relative;display:block!important;margin:0 0 7px!important;color:transparent!important;font-size:0!important}.lottery-roster-search:before{content:"⌕";position:absolute;left:11px;top:50%;translate:0 -50%;z-index:1;color:var(--muted);font-size:15px}.lottery-settings-dialog .lottery-roster-search input{display:block;width:100%;height:38px;margin:0;padding:8px 10px 8px 32px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font-size:10px;outline:none}.lottery-roster-search input:focus{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}
.lottery-student-checklist{max-height:245px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:8px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--theme-input) 78%,var(--panel));overflow:auto;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--sage) 45%,var(--line)) transparent}.lottery-student-option{min-width:0;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;margin:0!important;padding:7px 8px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink)!important;cursor:pointer}.lottery-student-option[hidden]{display:none!important}.lottery-student-option:hover{border-color:var(--sage);background:var(--sage-soft)}.lottery-student-option:has(input:checked){border-color:color-mix(in srgb,var(--sage) 55%,var(--line));background:var(--sage-soft)}.lottery-student-option input{appearance:none;width:17px;height:17px;margin:0;display:grid;place-content:center;border:1.5px solid color-mix(in srgb,var(--sage) 55%,var(--line));border-radius:5px;background:var(--panel)}.lottery-student-option input:checked{border-color:var(--sage);background:var(--sage)}.lottery-student-option input:checked:after{content:"✓";color:#fff;font-size:11px;font-weight:900}.lottery-student-option span{min-width:0;display:flex;gap:5px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px}.lottery-student-option span b{color:var(--muted);font-size:8px}.lottery-student-option i{color:var(--muted);font-size:9px;font-style:normal}
.lottery-history-item.rare-reward{border-color:#e8c45d;background:linear-gradient(135deg,#fff9dd,var(--panel))}.lottery-history-item.rare-reward .lottery-prize-chip{box-shadow:0 0 0 2px rgba(232,196,93,.3)}
.lottery-undo-btn{border-color:rgba(255,255,255,.7);background:rgba(255,255,255,.9);color:#6d4d8f}.lottery-undo-btn:disabled{opacity:.42;cursor:not-allowed;transform:none;box-shadow:none}
@media(max-width:680px){.lottery-student-checklist{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.lottery-rule-card{grid-template-columns:1fr}.lottery-settings-actions{grid-template-columns:1fr}.lottery-roster-head{align-items:flex-start;flex-direction:column}.lottery-student-checklist{grid-template-columns:1fr}}

/* 班级课表：可反复导入，也可逐节编辑 */
#view-timetable.active{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:10px;overflow:hidden;padding-bottom:0}
.timetable-command-bar{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0}.timetable-command-bar>div:first-child{min-width:0}.timetable-command-bar .inline-actions{flex:0 0 auto;justify-content:flex-end;flex-wrap:wrap}.timetable-command-bar .inline-actions>*{white-space:nowrap}.timetable-import-note{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--theme-input);color:var(--muted);font-size:10px}.timetable-import-note b{color:var(--sage-dark)}
.timetable-sheet-wrap{min-height:0;height:100%;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--panel) 80%,var(--theme-tint));box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.timetable-sheet{display:grid;grid-template-columns:82px repeat(5,minmax(140px,1fr));grid-template-rows:44px repeat(7,minmax(76px,1fr));gap:1px;min-width:840px;min-height:620px;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--line)}
.timetable-corner,.timetable-day,.timetable-period{display:grid;place-items:center;background:color-mix(in srgb,var(--sage-soft) 66%,var(--panel));color:var(--sage-dark);font-weight:900}.timetable-day{font-size:12px}.timetable-period{font-size:10px}
.timetable-cell{display:flex;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px;border:0;background:var(--panel);color:var(--muted);text-align:center}.timetable-cell:hover{z-index:1;background:var(--sage-soft);box-shadow:inset 0 0 0 2px var(--sage)}.timetable-cell.filled{background:color-mix(in srgb,var(--panel) 84%,var(--theme-tint));color:var(--ink)}.timetable-cell b{max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:14px;white-space:nowrap}.timetable-cell span{font-size:9px}.timetable-cell small{color:var(--muted);font-size:8px}

/* 8列7排 Excel 风格可拖动座位表 */
#view-seats.active{display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;padding-bottom:0}.seat-map-wrap{min-height:0;height:100%;padding:12px}.seat-map{display:grid;grid-template-columns:54px repeat(8,minmax(108px,1fr));grid-template-rows:44px repeat(7,minmax(76px,1fr));gap:1px;min-width:980px;min-height:610px;border:1px solid var(--line);border-radius:12px;background:var(--line);overflow:hidden}
.seat-sheet-corner,.seat-col-head,.seat-row-head{display:grid;place-items:center;background:color-mix(in srgb,var(--sage-soft) 66%,var(--panel));color:var(--sage-dark);font-size:10px;font-weight:900}.seat-col-head{align-content:center;gap:2px}.seat-col-head small{color:var(--muted);font-size:8px}.seat-sheet-cell{position:relative;display:flex;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:7px;border:0;background:linear-gradient(150deg,var(--team-soft),var(--panel) 82%);color:var(--ink);cursor:grab;text-align:center;user-select:none}.seat-sheet-cell:hover{z-index:1;box-shadow:inset 0 0 0 2px var(--team-color)}.seat-sheet-cell.dragging{opacity:.38}.seat-sheet-cell.drop-target{z-index:2;outline:3px solid var(--team-color);outline-offset:-3px}.seat-sheet-cell strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:14px;white-space:nowrap}.seat-sheet-cell small{color:var(--muted);font-size:8px}.seat-sheet-cell .seat-team{position:absolute;left:6px;top:5px;padding:2px 5px;border-radius:999px;background:var(--team-soft);color:var(--team-color);font-size:8px}.seat-sheet-cell.empty{background:var(--theme-input);color:var(--muted)}
.seat-col-head.group-2,.seat-col-head.group-4,.seat-sheet-cell.group-2,.seat-sheet-cell.group-4{background-color:color-mix(in srgb,var(--theme-tint) 54%,var(--panel))}.seat-col-head.group-2,.seat-col-head.group-3,.seat-col-head.group-4{border-left:5px solid var(--panel)}.seat-sheet-cell.group-2,.seat-sheet-cell.group-3,.seat-sheet-cell.group-4{border-left:5px solid color-mix(in srgb,var(--panel) 84%,var(--line))}
.team-legend{flex-wrap:wrap}.feedback-preview[contenteditable="true"]{outline:none;white-space:pre-wrap}.feedback-preview[contenteditable="true"]:focus{box-shadow:inset 0 0 0 2px var(--sage)}.feedback-final-actions{margin-top:14px}
@media(max-width:820px){#view-timetable.active,#view-seats.active{display:block;overflow-y:auto;padding-bottom:12px}.timetable-command-bar{align-items:stretch;flex-direction:column;gap:12px}.timetable-command-bar .inline-actions{justify-content:flex-start}.timetable-sheet-wrap,.seat-map-wrap{height:auto;min-height:620px}.timetable-import-note{align-items:flex-start;flex-direction:column}}

/* 学生名单团队标识与排序 */
.student-team-chip{position:absolute;right:5px;top:5px;z-index:2;display:inline-flex;align-items:center;padding:2px 5px;border:1px solid color-mix(in srgb,var(--team-color) 40%,transparent);border-radius:999px;background:var(--team-soft);color:var(--team-color);font-size:8px;font-weight:900;line-height:1.2;box-shadow:0 2px 5px rgba(0,0,0,.04)}.student-list-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}#sortStudentsByTeam.active{border-color:var(--sage);background:var(--sage-soft);color:var(--sage-dark)}
#view-students .student-card{position:relative}
#view-students .student-card small{overflow:visible;text-overflow:clip}.student-page-actions{align-items:flex-start}
@media(max-width:1180px){.student-page-actions{align-items:stretch;flex-direction:column}.student-list-actions{justify-content:flex-start}}

/* 自定义座位与学生名单操作 */
#view-seats.active{grid-template-rows:auto auto auto minmax(0,1fr) auto auto}
.seat-layout-controls{display:flex;align-items:flex-end;gap:9px;flex-wrap:wrap;margin:-5px 0 12px;padding:11px 13px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--panel) 78%,var(--theme-tint))}.seat-layout-controls label{display:grid;gap:4px;color:var(--muted);font-size:9px;font-weight:800}.seat-layout-controls input{width:74px;padding:8px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}.seat-layout-controls>span{padding-bottom:8px;color:var(--muted)}.seat-layout-controls small{align-self:center;margin-left:auto;color:var(--muted)}
.seat-map{grid-template-columns:minmax(54px,.65fr) repeat(var(--seat-cols),minmax(86px,1fr));grid-template-rows:44px;grid-auto-rows:minmax(70px,1fr);min-height:520px}
.student-list-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.student-list-actions .ghost-btn,.student-list-actions .primary-btn{white-space:nowrap}

/* 中奖名单单条删除 */
.lottery-winners-panel .lottery-history-item{position:relative;grid-template-columns:58px minmax(0,1fr) 34px;padding-right:8px}.lottery-history-delete{align-self:center;width:31px;height:31px;border:0;border-radius:50%;background:transparent;color:#a7a0ad;font-size:22px;line-height:1;transition:.16s}.lottery-history-delete:hover{background:#ffe8e8;color:#c84343;transform:scale(1.05)}.lottery-history-delete:focus-visible{outline:2px solid #d45f5f;outline-offset:2px}
@media(max-width:900px){.lottery-winners-panel .lottery-history-item{grid-template-columns:48px minmax(0,1fr) 30px}.lottery-history-delete{width:28px;height:28px}}
@media(max-width:820px){.student-page-actions{gap:10px}.student-list-actions{justify-content:flex-start}.seat-layout-controls small{flex-basis:100%;margin-left:0}.seat-map{min-height:520px}}

/* 激励盲盒：保留工作台摇奖机，接入完整奖券、账户、库存和历史体系 */
.lottery-reference-shell{grid-template-rows:auto minmax(0,1fr)!important}.lottery-reference-shell.lottery-manage-mode{grid-template-rows:auto auto minmax(0,1fr)!important}.lottery-center-tabs{display:none;gap:7px;padding:7px;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--panel) 88%,transparent);overflow-x:auto}.lottery-manage-mode .lottery-center-tabs{display:flex}.lottery-center-tabs button,.lottery-account-tabs button{flex:0 0 auto;padding:9px 14px;border:0;border-radius:11px;background:transparent;color:var(--muted);font-size:10px;font-weight:900}.lottery-center-tabs button.active,.lottery-account-tabs button.active{color:#fff;background:linear-gradient(110deg,#7567e8,#a866df);box-shadow:0 6px 14px rgba(117,103,232,.2)}
.lottery-center-panel{display:none;min-height:0;overflow:auto}.lottery-center-panel.active{display:block}.lottery-center-panel[data-lottery-center-panel="draw"].active{display:grid;grid-template-rows:auto minmax(0,1fr);gap:13px;overflow:hidden}.lottery-pool-filters,.lottery-ticket-toolbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.lottery-pool-filters select,.lottery-ticket-toolbar select,.lottery-ticket-toolbar input,.lottery-reference-settings input,.lottery-reference-settings select,.lottery-result-card select{padding:8px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel);font-size:9px}.lottery-reference-settings #lotteryBeforeBox label{display:block;margin:10px 0;color:var(--muted);font-size:10px}.lottery-reference-settings #lotteryBeforeBox input,.lottery-reference-settings #lotteryBeforeBox select{display:block;width:100%;margin-top:5px}.lottery-mode-hint{margin:10px 0;padding:9px 10px;border-radius:10px;background:#eff8ff;color:#46768f;font-size:9px}.lottery-reference-shortcuts label{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:11px;background:#f3f0ff;color:var(--muted);font-size:9px}.lottery-reference-shortcuts input{width:58px}.lottery-actions button small{display:block;margin-top:2px;font-size:7px;opacity:.65}.lottery-reference-ticket.team{border-color:#ddd2ff;background:linear-gradient(145deg,#f1edff,var(--panel))}.lottery-reference-ticket.class{border-color:#ffe79c;background:linear-gradient(145deg,#fff8da,var(--panel))}
.lottery-page-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:14px}.lottery-page-head h2{margin:4px 0 0;font-size:23px}.lottery-page-head>span,.lottery-page-head>div>span:not(.section-kicker),#lotteryAccountSummary{color:var(--muted);font-size:10px}.lottery-account-tabs{display:flex;gap:7px;margin-bottom:12px}.lottery-account-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:13px}.lottery-account-list{max-height:610px;overflow:auto}.lottery-account-option{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0;padding:10px;border:1px solid var(--line);border-radius:11px;background:var(--panel);font-size:10px;text-align:left}.lottery-account-option span{color:var(--muted);font-size:8px}.lottery-account-option.active{border-color:#ad9df0;background:#eeeaff;color:#5f49b3}.lottery-account-grid,.lottery-ticket-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-top:13px}.lottery-coupon{position:relative;min-height:155px;padding:15px;border:2px solid #c9ebff;border-radius:17px;background:linear-gradient(145deg,#e7f6ff,var(--panel));overflow:hidden}.lottery-coupon.team{border-color:#d8ccff;background:linear-gradient(145deg,#eee8ff,var(--panel))}.lottery-coupon.class{border-color:#ffe58c;background:linear-gradient(145deg,#fff5c9,var(--panel))}.lottery-coupon .count{position:absolute;right:9px;top:9px;padding:3px 7px;border-radius:999px;background:var(--panel);font-size:10px;font-weight:900}.lottery-coupon h3{margin:9px 0 4px;font-size:15px}.lottery-coupon p,.lottery-coupon small{color:var(--muted);font-size:9px}.lottery-coupon-progress{display:grid;grid-template-columns:repeat(10,1fr);gap:3px;margin:12px 0}.lottery-coupon-pieces{display:flex;gap:5px;margin:12px 0}.lottery-coupon-progress i,.lottery-coupon-pieces i{height:19px;border-radius:5px;background:#dedde6}.lottery-coupon-pieces i{flex:1;height:27px;border:2px dashed #c2c1cc}.lottery-coupon-progress i.on,.lottery-coupon-pieces i.on{border-color:#fff;background:linear-gradient(#ffd95f,#ffad59)}
.lottery-settings-page-head{justify-content:flex-start}.lottery-settings-title-row{display:flex;align-items:center;gap:15px}.lottery-settings-title-row h2{margin-top:4px}.lottery-return-draw-btn{display:flex;align-items:center;gap:10px;padding:0 7px 0 0;border:0;border-radius:999px;background:transparent;color:var(--ink);text-align:left;cursor:pointer;transition:transform .16s ease}.lottery-return-draw-icon{position:relative;display:block;width:46px;height:46px;min-width:46px;border:3px solid rgba(255,255,255,.96);border-radius:50%;background:linear-gradient(145deg,#ff6a62,#d92f35);box-shadow:0 8px 17px rgba(196,42,48,.34),inset 0 1px 2px rgba(255,255,255,.52),0 0 0 2px rgba(217,47,53,.16);transition:filter .16s ease,box-shadow .16s ease}.lottery-return-draw-icon:before{content:"";position:absolute;left:12px;top:18px;width:22px;height:4px;border-radius:999px;background:#fff}.lottery-return-draw-icon:after{content:"";position:absolute;left:10px;top:13px;width:12px;height:12px;border-left:4px solid #fff;border-bottom:4px solid #fff;border-radius:1px;transform:rotate(45deg)}.lottery-return-draw-copy{display:grid;gap:2px;line-height:1.1}.lottery-return-draw-copy b{color:#c52d33;font-size:13px;font-weight:1000;white-space:nowrap}.lottery-return-draw-copy small{color:var(--muted);font-size:9px;font-weight:700;white-space:nowrap}.lottery-return-draw-btn:hover{transform:translateY(-2px)}.lottery-return-draw-btn:hover .lottery-return-draw-icon{filter:brightness(1.08);box-shadow:0 11px 22px rgba(196,42,48,.4),inset 0 1px 2px rgba(255,255,255,.52),0 0 0 3px rgba(217,47,53,.14)}.lottery-return-draw-btn:active{transform:translateY(1px) scale(.97)}.lottery-return-draw-btn:active .lottery-return-draw-icon{filter:brightness(.92);box-shadow:0 3px 8px rgba(170,35,40,.34),inset 0 2px 4px rgba(105,16,20,.26)}.lottery-return-draw-btn:focus-visible{outline:3px solid rgba(217,47,53,.24);outline-offset:4px}
.lottery-ticket-toolbar{margin-bottom:13px;padding:12px}.lottery-ticket-card{position:relative;padding:14px;border:1px solid var(--line);border-radius:15px;background:var(--panel)}.lottery-ticket-card.zero{opacity:.5}.lottery-ticket-card.rare{border-color:#f0c35d;background:#fffaf0}.lottery-ticket-card>span{display:inline-block;margin:0 3px 3px 0;padding:3px 6px;border-radius:999px;background:var(--theme-input);color:var(--muted);font-size:8px}.lottery-ticket-card h3{margin:7px 0}.lottery-big-stock{font-size:24px;font-weight:900}.lottery-big-stock small,.lottery-ticket-card p{color:var(--muted);font-size:9px}.lottery-ticket-card>div:last-child{display:flex;gap:6px}.lottery-ticket-card button{padding:7px 10px;font-size:8px}
.lottery-inventory-table,.lottery-history-table-wrap{margin-top:10px;overflow:auto}.lottery-inventory-row{display:grid;grid-template-columns:minmax(220px,1fr) 120px 90px 190px;gap:10px;align-items:center;padding:10px;border-bottom:1px solid var(--line);font-size:10px}.lottery-inventory-row.heading{background:var(--theme-input)}.lottery-inventory-row small{display:block;margin-top:3px;color:var(--muted);font-size:8px}.lottery-stepper{display:flex;gap:5px}.lottery-stepper button{min-width:29px;height:29px;padding:0 8px;border:0;border-radius:8px;background:#eeeaff;color:#5f49b3;font-weight:900}.lottery-history-table{width:100%;border-collapse:collapse;font-size:10px}.lottery-history-table th,.lottery-history-table td{padding:11px;border-bottom:1px solid var(--line);text-align:left}.lottery-history-table th{background:var(--theme-input)}
.lottery-result-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:15px 0}.lottery-result-card{padding:17px;border:2px solid #fff;border-radius:17px;background:linear-gradient(145deg,#e9f7ff,#f2eaff);box-shadow:var(--shadow);text-align:center}.lottery-result-card.rare{background:linear-gradient(145deg,#fff1ad,#ffd56d)}.lottery-result-card h3{margin:8px 0;font-size:19px}.lottery-result-card select{width:100%;margin-top:9px}.lottery-result-card>span{font-size:8px}.lottery-result-card small{color:var(--muted)}
@media(max-width:1180px){.lottery-account-grid,.lottery-ticket-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:820px){.lottery-center-panel[data-lottery-center-panel="draw"].active{display:block;overflow:visible}.lottery-reference-pool-panel{margin-bottom:13px}.lottery-account-layout{grid-template-columns:1fr}.lottery-account-grid,.lottery-ticket-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lottery-inventory-row{grid-template-columns:minmax(160px,1fr) 90px 140px}.lottery-inventory-row>*:nth-child(3){display:none}}@media(max-width:520px){.lottery-page-head{align-items:flex-start;flex-direction:column}.lottery-account-grid,.lottery-ticket-grid{grid-template-columns:1fr}.lottery-pool-filters{display:none}.lottery-inventory-row{grid-template-columns:1fr 85px}.lottery-inventory-row>*:last-child{grid-column:1/-1}}

/* 参考“班级激励盲盒”的课堂抽奖中心 */
.lottery-reference-shell{--lottery-purple:#7567e8;--lottery-purple-2:#a866df;--lottery-pink:#f397b9;--lottery-blue:#8ad8ff;display:grid!important;grid-template-rows:auto auto minmax(0,1fr)!important;gap:13px;width:100%;height:100%;min-height:0;padding:0!important;background:transparent!important;overflow:hidden!important}
.lottery-reference-hero{position:relative;display:flex;align-items:center;gap:22px;min-height:105px;padding:18px 22px;border-radius:22px;overflow:hidden;color:#fff;background:linear-gradient(110deg,var(--lottery-purple),var(--lottery-purple-2) 54%,var(--lottery-pink));box-shadow:0 13px 30px rgba(99,79,187,.2)}.lottery-reference-hero:after{content:"";position:absolute;width:190px;height:190px;right:-35px;top:-95px;border:2px dashed rgba(255,255,255,.25);border-radius:50%;box-shadow:0 0 0 28px rgba(255,255,255,.05)}.lottery-reference-hero>div:first-child{min-width:0;flex:1}.lottery-reference-hero .section-kicker{color:#fff}.lottery-reference-hero h2{margin:6px 0 3px;font:900 25px/1.2 "Microsoft YaHei",sans-serif}.lottery-reference-hero p{margin:0;opacity:.86;font-size:11px}.lottery-reference-hero-stats{position:relative;z-index:2;display:flex;gap:8px}.lottery-reference-hero-stats span{min-width:74px;padding:9px 10px;border:1px solid rgba(255,255,255,.25);border-radius:14px;text-align:center;background:rgba(255,255,255,.15);font-size:10px}.lottery-reference-hero-stats b{display:block;font-size:20px}.lottery-reference-hero .lottery-screen-tools{position:relative;z-index:3;display:flex;flex-direction:column;gap:6px}.lottery-reference-hero .lottery-tool-btn{border-color:rgba(255,255,255,.32);color:#fff;background:rgba(255,255,255,.14)}
.lottery-reference-pool-panel,.lottery-reference-side,.lottery-reference-machine-panel{border:1px solid color-mix(in srgb,var(--line) 80%,#dcd7f6);background:var(--panel);box-shadow:0 10px 28px rgba(79,66,139,.09)}.lottery-reference-pool-panel{min-height:0;padding:13px 17px 11px;border-radius:18px}.lottery-reference-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.lottery-reference-section-head h3{margin:3px 0 0;font-size:17px}.lottery-reference-section-head small{color:var(--muted);font-size:9px}.lottery-reference-ticket-strip{display:flex;gap:8px;min-height:64px;margin-top:9px;padding:1px 2px 5px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#c5bbe7 transparent}.lottery-reference-ticket{position:relative;flex:0 0 150px;min-width:0;padding:9px 10px;border:2px solid #cfeeff;border-radius:13px;background:linear-gradient(145deg,#edf8ff,var(--panel));overflow:hidden}.lottery-reference-ticket.rare{border-color:#f0c45c;background:linear-gradient(145deg,#fff4be,var(--panel));box-shadow:inset 0 0 0 2px rgba(255,224,111,.24)}.lottery-reference-ticket b{display:block;max-width:115px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.lottery-reference-ticket small{display:block;margin-top:2px;color:var(--muted);font-size:8px}.lottery-reference-ticket i{position:absolute;right:7px;top:7px;padding:2px 6px;border-radius:999px;background:var(--panel);font-size:8px;font-style:normal;font-weight:900}
.lottery-reference-grid{display:grid;grid-template-columns:minmax(220px,.72fr) minmax(390px,1.35fr) minmax(250px,.83fr);gap:13px;min-height:0}.lottery-reference-side,.lottery-reference-machine-panel{min-height:0;border-radius:19px}.lottery-reference-side{padding:16px;overflow:auto;scrollbar-width:thin}.lottery-reference-side h3{margin:5px 0 14px;font:900 19px/1.2 "Microsoft YaHei",sans-serif}.lottery-reference-settings>label{display:block;margin:12px 0;color:var(--muted);font-size:10px}.lottery-reference-settings>label>.select{display:block;width:100%;margin-top:6px}.lottery-reference-settings .lottery-duration-control{margin-top:6px}.lottery-reference-settings .lottery-check{display:flex;align-items:center;gap:7px;color:var(--ink);font-weight:800}.lottery-reference-settings .lottery-check input{width:17px;height:17px}.lottery-reference-shortcuts{display:grid;gap:8px;margin-top:12px}.lottery-reference-shortcuts>div{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px;border-radius:11px;background:color-mix(in srgb,#eeeaff 70%,var(--panel));font-size:9px}.lottery-reference-shortcuts span{color:var(--muted)}.lottery-reference-shortcuts b{font-size:10px}.lottery-reference-shortcuts button{border:0;color:#6352b4;background:transparent;font-size:10px;font-weight:900}
.lottery-reference-machine-panel{display:flex;flex-direction:column;padding:12px}.lottery-reference-machine{position:relative;flex:1;min-height:275px!important;border:3px solid rgba(255,255,255,.9)!important;border-radius:21px!important;background:radial-gradient(circle,#fff 0 17%,#eaf7ff 48%,#eee8ff)!important;box-shadow:inset 0 0 0 2px #dedcff!important}.lottery-reference-machine .lottery-ring{border-color:rgba(119,104,218,.23)}.lottery-reference-machine .ring-a{width:245px;height:245px}.lottery-reference-machine .ring-b{width:330px;height:330px}.lottery-reference-machine h2{margin:8px 0 3px!important;font:900 clamp(22px,3vw,32px)/1.15 "Microsoft YaHei",sans-serif!important}.lottery-reference-machine p{max-width:90%;font-size:11px}.lottery-reference-box{position:relative;z-index:3;width:122px;height:116px;margin-bottom:7px;filter:drop-shadow(0 15px 12px rgba(76,60,123,.17))}.lottery-reference-box-lid{position:absolute;z-index:3;left:2px;top:10px;width:118px;height:34px;border:5px solid #fff;border-radius:17px 17px 7px 7px;background:linear-gradient(#ffc75e,#ffae58);transform-origin:12% 100%}.lottery-reference-box-body{position:absolute;left:12px;top:39px;width:99px;height:72px;display:grid;place-items:center;border:5px solid #fff;border-radius:8px 8px 23px 23px;background:linear-gradient(135deg,var(--lottery-blue),#9e89ff);overflow:hidden}.lottery-reference-box-body .draw-asset{width:62px;height:62px;object-fit:contain}.lottery-reference-box-body>b{display:none;color:#fff;font-size:34px}.lottery-reference-machine.drawing .lottery-reference-box{animation:referenceBoxShake .14s infinite alternate}.lottery-reference-machine.drawing .lottery-reference-box-lid{animation:none}.lottery-reference-machine.winner .lottery-reference-box-lid{animation:referenceOpenLid .65s ease both}.lottery-reference-machine.winner{box-shadow:inset 0 0 0 3px #ffd864,0 0 35px rgba(255,199,78,.48)!important}.lottery-reference-machine-panel .lottery-actions{padding-top:10px}.lottery-reference-machine-panel .lottery-start{min-width:150px;background:linear-gradient(110deg,var(--lottery-purple),var(--lottery-purple-2))}@keyframes referenceBoxShake{to{transform:translate(7px,-5px) rotate(4deg)}}@keyframes referenceOpenLid{50%,100%{transform:translate(-3px,-32px) rotate(-12deg)}}
.lottery-reference-stat-list{display:grid;gap:7px}.lottery-reference-stat-list>div{display:flex;align-items:center;justify-content:space-between;padding:9px 10px;border-radius:10px;background:color-mix(in srgb,#faf9ff 84%,var(--panel));font-size:10px}.lottery-reference-stat-list b{font-size:14px}.lottery-reference-status .lottery-pool-info{margin:9px 0;padding:9px;font-size:9px}.lottery-reference-winner-head{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;margin:12px 0 7px;padding-top:10px;border-top:1px solid var(--line)}.lottery-reference-winner-head h3{margin:2px 0 0;font-size:15px}.lottery-reference-winner-head .text-btn{font-size:9px}.lottery-reference-status .lottery-history{display:flex;flex-direction:column;gap:7px;max-height:205px;overflow:auto;padding:1px;scrollbar-width:thin}.lottery-reference-status .lottery-history-item{position:relative;display:grid;grid-template-columns:39px minmax(0,1fr) 27px;min-height:55px;padding:7px;gap:8px;border-radius:11px}.lottery-reference-status .lottery-history-avatar{width:38px;height:38px;border-radius:11px}.lottery-reference-status .lottery-history-content{gap:3px}.lottery-reference-status .lottery-history-content b{font-size:11px}.lottery-reference-status .lottery-prize-chip{font-size:8px}.lottery-reference-status .lottery-history-delete{width:25px;height:25px;font-size:18px}.lottery-reference-status .lottery-empty{min-height:65px;padding:20px 8px;font-size:10px}
#lotteryScreenShell:fullscreen.lottery-reference-shell{padding:18px!important;background:linear-gradient(145deg,#eef5ff,#f4efff)!important}.lottery-settings-backdrop{z-index:90}
@media(max-width:1100px){.lottery-reference-grid{grid-template-columns:minmax(200px,.75fr) minmax(350px,1.25fr) minmax(225px,.8fr)}.lottery-reference-hero p{display:none}.lottery-reference-hero-stats span{min-width:65px}.lottery-reference-ticket{flex-basis:135px}}
@media(max-width:820px){#view-lottery.active{overflow-y:auto!important}.lottery-reference-shell{height:auto;overflow:visible!important}.lottery-reference-hero{align-items:flex-start;flex-wrap:wrap}.lottery-reference-hero-stats{order:3;width:100%}.lottery-reference-hero .lottery-screen-tools{margin-left:auto}.lottery-reference-grid{grid-template-columns:1fr}.lottery-reference-side,.lottery-reference-machine-panel{min-height:auto}.lottery-reference-machine{min-height:390px!important}.lottery-reference-status .lottery-history{max-height:300px}}
@media(max-width:520px){.lottery-reference-hero-stats span{flex:1}.lottery-reference-hero .lottery-screen-tools{width:100%;flex-direction:row}.lottery-reference-hero .lottery-tool-btn{flex:1}.lottery-reference-machine-panel .lottery-actions{flex-wrap:wrap}.lottery-reference-machine-panel .lottery-start{flex-basis:100%}}

/* 学生团队卡片：徽标顶部居中，八个团队使用独立浅色背景 */
#view-students .student-grid{grid-auto-rows:92px}
#view-students .student-card{padding-top:19px}
#view-students .student-card-head{padding-top:2px}
#view-students .student-card-head{gap:0;text-align:center}
#view-students .student-card-head>div{width:100%;min-width:0}
#view-students .student-card h4{justify-content:center}
#view-students .student-card small{display:block;text-align:center}
#view-students .student-team-chip{left:50%;right:auto;top:-15px;translate:-50% 0;min-width:42px;justify-content:center;padding:3px 7px;font-size:8px;white-space:nowrap}
#view-students .student-card:has(.student-team-chip[style*="#3268c8"]){border-color:#c9d9f7;background:linear-gradient(145deg,#edf4ff,var(--panel) 78%)}
#view-students .student-card:has(.student-team-chip[style*="#7b52b5"]){border-color:#dacbf0;background:linear-gradient(145deg,#f5efff,var(--panel) 78%)}
#view-students .student-card:has(.student-team-chip[style*="#05817d"]){border-color:#bde1dd;background:linear-gradient(145deg,#eaf9f7,var(--panel) 78%)}
#view-students .student-card:has(.student-team-chip[style*="#b65b23"]){border-color:#efd0bc;background:linear-gradient(145deg,#fff2e9,var(--panel) 78%)}
#view-students .student-card:has(.student-team-chip[style*="#bc3d67"]){border-color:#efc3d2;background:linear-gradient(145deg,#fff0f5,var(--panel) 78%)}
#view-students .student-card:has(.student-team-chip[style*="#4c7f24"]){border-color:#cfdfbd;background:linear-gradient(145deg,#f1f8e9,var(--panel) 78%)}
#view-students .student-card:has(.student-team-chip[style*="#9b6a11"]){border-color:#ecd8a6;background:linear-gradient(145deg,#fff8e3,var(--panel) 78%)}
#view-students .student-card:has(.student-team-chip[style*="#4f647e"]){border-color:#cbd4df;background:linear-gradient(145deg,#f0f4f8,var(--panel) 78%)}
@media(min-width:1400px) and (min-height:900px){#view-students .student-grid{grid-auto-rows:calc((100% - 25px)/6)}#view-students .student-card{padding-top:22px}}

/* 课堂抽奖最终布局：管理中心保持单列全宽，抽奖舞台恢复蛋仔角色区 */
#lotteryScreenShell.lottery-reference-shell{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto minmax(0,1fr)!important}
#lotteryScreenShell.lottery-reference-shell.lottery-manage-mode{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto auto minmax(0,1fr)!important}
.lottery-reference-shell .lottery-center-panel,.lottery-reference-shell .lottery-reference-pool-panel,.lottery-reference-shell .lottery-reference-grid{width:100%;min-width:0}.lottery-reference-shell .lottery-reference-grid>*{min-width:0}.lottery-reference-shell .lottery-reference-ticket-strip{max-width:100%}
.lottery-manage-mode .lottery-reference-hero{min-height:82px;padding:13px 20px}.lottery-manage-mode .lottery-reference-hero h2{font-size:21px}.lottery-manage-mode .lottery-reference-hero p{display:none}.lottery-manage-mode .lottery-center-tabs{width:100%;justify-content:center;overflow:visible;flex-wrap:wrap}.lottery-manage-mode .lottery-center-tabs button{min-width:126px}.lottery-manage-mode .lottery-center-panel.active{width:100%;min-width:0;padding:2px 1px 10px}.lottery-manage-mode .lottery-account-layout{grid-template-columns:280px minmax(0,1fr)}
.lottery-reference-machine .asset-egg{z-index:1;width:82px;height:92px;opacity:.96}.lottery-reference-machine .asset-one{left:3%;bottom:8px}.lottery-reference-machine .asset-two{left:15%;top:14px;width:72px;height:82px}.lottery-reference-machine .asset-three{right:3%;bottom:8px}.lottery-reference-machine .asset-four{right:15%;top:14px;width:72px;height:82px}.lottery-reference-machine .lottery-reference-box{z-index:4}.lottery-reference-machine .lottery-reference-box-body .draw-asset{width:72px;height:72px}.lottery-reference-machine-panel .egg-support-team{margin-top:8px;padding:7px 9px}.lottery-reference-machine-panel .egg-support-team>span{margin-bottom:4px;font-size:8px}.lottery-reference-machine-panel .egg-support-team img{height:34px}.lottery-reference-machine.drawing .asset-egg{animation:assetEggCheer .36s ease-in-out infinite alternate}.lottery-reference-machine.winner .asset-egg{animation:assetEggFloat .65s ease-in-out 2 alternate}
@media(max-width:900px){.lottery-manage-mode .lottery-account-layout{grid-template-columns:1fr}.lottery-manage-mode .lottery-reference-hero{min-height:auto}.lottery-reference-machine .asset-two,.lottery-reference-machine .asset-four{display:none}.lottery-reference-machine .asset-one{left:1%}.lottery-reference-machine .asset-three{right:1%}}

/* 抽奖页两栏重排与管理页签字号 */
.lottery-manage-mode .lottery-center-tabs button{min-width:150px;padding:12px 20px;font-size:14px;line-height:1.2}.lottery-center-panel[data-lottery-center-panel="draw"].active{grid-template-rows:minmax(0,1fr);gap:0}.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:300px minmax(0,1fr);gap:14px}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{order:1}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel{order:2;min-height:0}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine{min-height:360px!important}.lottery-reference-status .lottery-history{max-height:none;min-height:150px}.lottery-reference-status .lottery-pool-info{margin-bottom:12px}
.lottery-draw-settings-card{margin-bottom:12px;padding:12px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--theme-input) 80%,var(--panel))}.lottery-draw-settings-card .lottery-reference-side{display:block;width:100%;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}.lottery-draw-settings-card .lottery-reference-side h3{margin:4px 0 12px}.lottery-draw-settings-card .lottery-reference-shortcuts{display:none}.lottery-draw-settings-card .lottery-reference-settings>label{margin:10px 0}.lottery-settings-dialog{overflow:auto}
.lottery-reference-machine .asset-five{left:1%;top:43%;width:68px;height:76px;animation-delay:.15s}.lottery-reference-machine .asset-six{left:25%;bottom:0;width:66px;height:74px;animation-delay:.5s}.lottery-reference-machine .asset-seven{right:25%;bottom:0;width:66px;height:74px;animation-delay:.8s}.lottery-reference-machine .asset-eight{right:1%;top:43%;width:68px;height:76px;animation-delay:1.15s}.lottery-reference-machine-panel .egg-support-team>div{grid-template-columns:repeat(11,minmax(0,1fr))}
@media(max-width:1000px){.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:260px minmax(0,1fr)}.lottery-reference-machine .asset-five,.lottery-reference-machine .asset-eight{display:none}}@media(max-width:820px){.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:1fr}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{order:2}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel{order:1}.lottery-reference-machine-panel .egg-support-team>div{grid-template-columns:repeat(6,minmax(0,1fr))}.lottery-manage-mode .lottery-center-tabs button{min-width:120px;font-size:12px}}

@media(min-width:821px){.lottery-manage-mode .lottery-center-tabs button{min-width:160px;padding:13px 22px;font-size:16px;font-weight:800}}

/* 抽奖主界面：顶部奖池状态、中央舞台、右侧中奖名单 */
.lottery-center-panel[data-lottery-center-panel="draw"].active{grid-template-rows:auto minmax(0,1fr);gap:12px}
.lottery-reference-status-bar{display:grid;grid-template-columns:145px minmax(0,1fr) auto;align-items:center;gap:14px;padding:11px 15px;border:1px solid color-mix(in srgb,var(--line) 80%,#dcd7f6);border-radius:17px;background:var(--panel);box-shadow:0 8px 22px rgba(79,66,139,.07)}
.lottery-status-title h3{margin:3px 0 0;font:900 18px/1.15 "Microsoft YaHei",sans-serif}
.lottery-reference-status-bar .lottery-reference-stat-list{grid-template-columns:repeat(4,minmax(105px,1fr));gap:8px}
.lottery-reference-status-bar .lottery-reference-stat-list>div{min-height:50px;padding:8px 11px;background:linear-gradient(135deg,color-mix(in srgb,#eeeaff 76%,var(--panel)),var(--panel))}
.lottery-reference-status-bar .lottery-reference-stat-list span{font-size:9px}
.lottery-reference-status-bar .lottery-reference-stat-list b{font-size:18px;color:var(--lottery-purple)}
.lottery-reference-status-bar .lottery-pool-info{min-width:155px;margin:0;padding:10px 12px;border-radius:11px;font-size:9px;white-space:nowrap}
.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:minmax(0,1fr) 315px;gap:14px}
.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel{order:1;min-height:0}
.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{order:2;display:flex;flex-direction:column;min-height:0;padding:17px 15px;overflow:hidden}
.lottery-reference-status .lottery-reference-winner-head{flex:0 0 auto;margin:0 0 12px;padding:0 0 12px;border-top:0;border-bottom:1px solid var(--line)}
.lottery-reference-status .lottery-reference-winner-head h3{font-size:22px}
.lottery-reference-status .lottery-history{flex:1;min-height:0;max-height:none;overflow-y:auto}
.lottery-reference-status .lottery-history-item{grid-template-columns:52px minmax(0,1fr) 28px;min-height:72px;padding:9px;gap:10px}
.lottery-reference-status .lottery-history-avatar{width:50px;height:50px;border-radius:15px}
.lottery-reference-status .lottery-history-content b{font-size:13px}
.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine{min-height:405px!important}
.lottery-reference-machine .lottery-reference-box{width:132px;height:126px}
.lottery-reference-machine .lottery-reference-box-lid{width:128px}
.lottery-reference-machine .lottery-reference-box-body{width:108px;height:80px}
.lottery-reference-machine .lottery-reference-box-body .draw-asset{width:76px;height:76px}
.lottery-reference-machine .asset-egg{width:76px;height:86px;object-fit:contain}
.lottery-reference-machine .asset-one{left:5%;right:auto;top:6%;bottom:auto;width:82px!important;height:92px!important}
.lottery-reference-machine .asset-two{left:28%;right:auto;top:3%;bottom:auto;width:70px!important;height:80px!important}
.lottery-reference-machine .asset-three{left:auto;right:5%;top:auto;bottom:4%;width:82px!important;height:92px!important}
.lottery-reference-machine .asset-four{left:auto;right:27%;top:4%;bottom:auto;width:72px!important;height:82px!important}
.lottery-reference-machine .asset-five{left:3%;right:auto;top:auto;bottom:4%;width:74px!important;height:84px!important}
.lottery-reference-machine .asset-six{left:27%;right:auto;top:auto;bottom:1%;width:68px!important;height:78px!important}
.lottery-reference-machine .asset-seven{left:auto;right:28%;top:auto;bottom:1%;width:68px!important;height:78px!important}
.lottery-reference-machine .asset-eight{left:auto;right:3%;top:39%;bottom:auto;width:72px!important;height:82px!important}
.lottery-reference-machine-panel .egg-support-team{margin-top:9px;padding:8px 10px}
.lottery-reference-machine-panel .egg-support-team img{height:39px}
@media(max-width:1100px){.lottery-reference-status-bar{grid-template-columns:120px minmax(0,1fr)}.lottery-reference-status-bar .lottery-pool-info{grid-column:1/-1;padding:7px 10px}.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:minmax(0,1fr) 270px}.lottery-reference-machine .asset-two,.lottery-reference-machine .asset-four{display:none}}
@media(max-width:820px){.lottery-reference-status-bar{grid-template-columns:1fr}.lottery-reference-status-bar .lottery-reference-stat-list{grid-template-columns:repeat(2,1fr)}.lottery-reference-status-bar .lottery-pool-info{grid-column:auto}.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:1fr}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel{order:1}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{order:2;min-height:320px}.lottery-reference-machine .asset-five,.lottery-reference-machine .asset-eight{display:none}}

#view-lottery.active{overflow-x:hidden;overflow-y:auto}
#lotteryScreenShell.lottery-reference-shell{height:auto;min-height:100%;overflow:visible!important}
.lottery-center-panel[data-lottery-center-panel="draw"].active{grid-template-rows:auto auto;overflow:visible}
.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{min-height:535px;align-items:stretch}
.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel,.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{height:535px}

/* 奖池状态并入顶部，放大抽奖主视觉与文字 */
.lottery-reference-hero{display:grid;grid-template-columns:minmax(270px,1fr) minmax(430px,1.45fr) auto;min-height:148px;padding:20px 24px;gap:20px}
.lottery-reference-hero h2{font-size:27px;white-space:nowrap}
.lottery-reference-hero p{font-size:13px}
.lottery-reference-hero .section-kicker{font-size:11px;letter-spacing:.14em}
.lottery-reference-hero .lottery-reference-status-bar{display:grid;grid-template-columns:1fr;gap:7px;padding:0;border:0;border-radius:0;color:#fff;background:transparent;box-shadow:none}
.lottery-reference-hero .lottery-status-title{display:flex;align-items:center;gap:10px}
.lottery-reference-hero .lottery-status-title h3{margin:0;color:#fff;font-size:18px}
.lottery-reference-hero .lottery-reference-stat-list{grid-template-columns:repeat(4,minmax(88px,1fr));gap:8px}
.lottery-reference-hero .lottery-reference-stat-list>div{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:66px;padding:8px 7px;border:1px solid rgba(255,255,255,.25);border-radius:14px;color:#fff;background:rgba(255,255,255,.15);text-align:center}
.lottery-reference-hero .lottery-reference-stat-list span{color:rgba(255,255,255,.9);font-size:12px;white-space:nowrap}
.lottery-reference-hero .lottery-reference-stat-list b{order:-1;color:#fff;font-size:24px;line-height:1.05}
.lottery-reference-hero .lottery-pool-info{min-width:0;margin:0;padding:0;color:rgba(255,255,255,.88);background:transparent;font-size:11px;white-space:normal}
.lottery-reference-hero .lottery-tool-btn{padding:10px 13px;font-size:13px}
.lottery-manage-mode .lottery-reference-hero{grid-template-columns:1fr auto}
.lottery-manage-mode .lottery-reference-status-bar{display:none}
.lottery-center-panel[data-lottery-center-panel="draw"].active{grid-template-rows:auto;gap:0}
.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:minmax(0,1fr) 300px;min-height:700px}
.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel,.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{height:auto;min-height:700px}
.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine{min-height:480px!important}
.lottery-reference-machine-panel{padding:15px}
.lottery-reference-machine h2{font-size:clamp(34px,4vw,46px)!important}
.lottery-reference-machine p{font-size:14px}
.lottery-reference-machine .section-kicker{font-size:10px}
.lottery-reference-machine .lottery-reference-box{width:150px;height:142px}
.lottery-reference-machine .lottery-reference-box-lid{left:4px;width:142px;height:39px}
.lottery-reference-machine .lottery-reference-box-body{left:14px;top:44px;width:121px;height:88px}
.lottery-reference-machine .lottery-reference-box-body .draw-asset{width:86px;height:86px}
.lottery-reference-machine-panel .lottery-actions button{min-height:48px;padding:12px 20px;font-size:14px}
.lottery-reference-machine-panel .lottery-start{min-width:190px}
.lottery-reference-machine-panel .egg-support-team>span{font-size:10px}
.lottery-reference-machine-panel .egg-support-team img{height:46px}
.lottery-reference-status{font-size:13px}
.lottery-reference-status .lottery-reference-winner-head h3{font-size:26px}
.lottery-reference-status .lottery-reference-winner-head .text-btn{font-size:11px}
.lottery-reference-status .lottery-history-item{grid-template-columns:62px minmax(0,1fr) 30px;min-height:88px;padding:11px}
.lottery-reference-status .lottery-history-avatar{width:60px;height:60px}
.lottery-reference-status .lottery-history-content b{font-size:15px}
.lottery-reference-status .lottery-prize-chip{font-size:10px}
.lottery-reference-status .lottery-empty{font-size:12px}
@media(max-width:1180px){.lottery-reference-hero{grid-template-columns:minmax(230px,1fr) minmax(360px,1.35fr) auto;gap:14px;padding:18px}.lottery-reference-hero h2{font-size:25px}.lottery-reference-hero .lottery-reference-stat-list span{font-size:9px}.lottery-reference-hero .lottery-reference-stat-list b{font-size:21px}.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:minmax(0,1fr) 280px}}
@media(max-width:900px){.lottery-reference-hero{grid-template-columns:1fr auto}.lottery-reference-hero .lottery-reference-status-bar{grid-column:1/-1;grid-row:2}.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{grid-template-columns:1fr}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel,.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{height:auto}.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{min-height:420px}}

/* 抽奖舞台恢复左右装饰，并移除抽奖页的帽檐造型 */
body.lottery-mode .topbar-robot{display:none}
body.lottery-mode .lottery-reference-box-lid{display:none}
body.lottery-mode .lottery-reference-box-body{top:22px}

/* 顶部精简居中、操作按钮强化、抽奖舞台纵向延展 */
.lottery-reference-hero{grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:150px;padding:20px 22px}
.lottery-reference-hero .lottery-reference-status-bar{justify-self:center;width:min(100%,860px);text-align:center}
.lottery-reference-hero .lottery-status-title{justify-content:center}
.lottery-reference-hero .lottery-pool-info{text-align:center}
.lottery-reference-hero .lottery-screen-tools{gap:9px}
.lottery-reference-hero .lottery-tool-btn{min-width:132px;min-height:45px;padding:11px 16px;border:2px solid rgba(255,255,255,.92);border-radius:13px;color:#6550b6;background:rgba(255,255,255,.94);box-shadow:0 7px 18px rgba(70,45,128,.2);font-size:14px;font-weight:900}
.lottery-reference-hero .lottery-tool-btn:before{color:#8c6ee0}
.lottery-reference-hero .lottery-tool-btn:hover{color:#fff;background:#6550b6;border-color:#fff;transform:translateY(-2px);box-shadow:0 10px 22px rgba(70,45,128,.3)}
.lottery-manage-mode .lottery-screen-tools{grid-column:2}
.lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{min-height:clamp(650px,70vh,850px);margin-inline:auto}
.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel,.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{height:auto;min-height:clamp(650px,70vh,850px)}
.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine{min-height:clamp(570px,60vh,760px)!important}
.lottery-reference-machine-panel .lottery-actions{flex:0 0 auto;justify-content:center;padding:14px 0 2px}
@media(max-width:900px){.lottery-reference-hero{grid-template-columns:1fr}.lottery-reference-hero .lottery-reference-status-bar{grid-column:1;grid-row:1}.lottery-reference-hero .lottery-screen-tools{grid-column:1;grid-row:2;flex-direction:row;justify-content:center}.lottery-reference-hero .lottery-tool-btn{min-width:0;flex:1}.lottery-manage-mode .lottery-screen-tools{grid-column:1;grid-row:1}}

/* 奖券管理固定工作区：仅下方数据表滚动 */
#lotteryScreenShell.lottery-reference-shell.lottery-manage-mode{height:100%;min-height:0;overflow:hidden!important}
.lottery-manage-mode .lottery-center-panel.active{display:flex;flex-direction:column;min-height:0;height:100%;padding-bottom:0;overflow:hidden}
.lottery-manage-mode .lottery-page-head,.lottery-manage-mode .lottery-account-tabs,.lottery-manage-mode .lottery-ticket-toolbar{flex:0 0 auto}
.lottery-manage-mode .lottery-inventory-table,.lottery-manage-mode .lottery-history-table-wrap{flex:1 1 auto;min-height:0;max-height:100%;margin-bottom:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.lottery-manage-mode .lottery-ticket-grid{flex:1 1 auto;min-height:0;max-height:100%;padding-right:4px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.lottery-manage-mode .lottery-account-layout{flex:1 1 auto;min-height:0;max-height:100%;overflow:hidden}
.lottery-manage-mode .lottery-account-list,.lottery-manage-mode .lottery-account-layout>article{min-height:0;max-height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.lottery-manage-mode .lottery-inventory-table,.lottery-manage-mode .lottery-history-table-wrap,.lottery-manage-mode .lottery-ticket-grid,.lottery-manage-mode .lottery-account-layout{width:100%;box-sizing:border-box}

/* 抽奖入口迁入侧栏二级菜单，顶部渐变区移除 */
.lottery-subnav{display:none;grid-template-columns:1fr;gap:8px;margin:12px 5px 10px 18px;padding-left:13px;border-left:2px solid color-mix(in srgb,var(--lottery-purple,#7567e8) 30%,transparent)}
.nav-item[data-view="lottery"].active+.lottery-subnav{display:grid}
.lottery-subnav button{min-width:0;padding:9px 11px;border:1px solid color-mix(in srgb,var(--lottery-purple,#7567e8) 20%,var(--line));border-radius:10px;color:color-mix(in srgb,var(--lottery-purple,#7567e8) 82%,var(--ink));background:color-mix(in srgb,var(--panel) 90%,#eeeaff);font-size:11px;font-weight:900;text-align:left;box-shadow:0 4px 10px rgba(76,57,145,.08)}
.lottery-subnav button span{margin-right:3px;font-size:8px}
.lottery-subnav button:hover,.lottery-subnav button:focus-visible{color:#fff;background:linear-gradient(110deg,#7567e8,#a866df);transform:translateY(-1px)}
#lotteryScreenShell.lottery-reference-shell{grid-template-rows:minmax(0,1fr)!important}
#lotteryScreenShell.lottery-reference-shell.lottery-manage-mode{grid-template-rows:auto minmax(0,1fr)!important}
.lottery-reference-machine-panel .lottery-undo-btn{border:2px solid #8d78d8!important;color:#5d48a8!important;background:#f0ecff!important;box-shadow:0 4px 12px rgba(93,72,168,.14)!important;opacity:1!important}
.lottery-reference-machine-panel .lottery-undo-btn:disabled{border-color:#b9addf!important;color:#897cae!important;background:#f4f1fb!important;box-shadow:inset 0 0 0 1px rgba(117,93,190,.08)!important;cursor:not-allowed}
.lottery-reference-machine-panel .lottery-undo-btn:not(:disabled):hover{color:#fff!important;background:#6f59c5!important;border-color:#6f59c5!important}
.lottery-reference-machine-panel .lottery-fullscreen-action{border:2px solid #6f59c5;color:#5d48a8;background:#fff;box-shadow:0 5px 14px rgba(93,72,168,.14)}
.lottery-reference-machine-panel .lottery-fullscreen-action:hover{color:#fff;background:#6f59c5}
@media(max-width:620px){.lottery-subnav{grid-template-columns:1fr}.lottery-reference-machine-panel .lottery-actions{display:grid;grid-template-columns:1fr 1fr}.lottery-reference-machine-panel .lottery-start{grid-column:1/-1}}

/* 可展开的课堂抽奖功能树 */
.lottery-nav-tree{position:relative;width:100%}
.lottery-nav-tree>.nav-item{width:100%;padding-right:46px}
.lottery-tree-toggle{position:absolute;right:11px;top:50%;z-index:3;width:28px;height:28px;padding:0;border:1px solid color-mix(in srgb,var(--lottery-purple,#7567e8) 22%,var(--line));border-radius:50%;background:color-mix(in srgb,var(--panel) 88%,#eeeaff);box-shadow:0 2px 7px rgba(76,57,145,.09);transform:translateY(-50%);transition:background .18s,border-color .18s,box-shadow .18s}
.lottery-tree-toggle:before{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;border-right:2px solid #6b55bd;border-bottom:2px solid #6b55bd;transform:translate(-62%,-50%) rotate(-45deg);transition:transform .18s}
.lottery-tree-toggle:hover,.lottery-tree-toggle:focus-visible{border-color:#8d78d8;background:#eeeaff;box-shadow:0 4px 12px rgba(76,57,145,.16)}
.lottery-tree-toggle:focus-visible{outline:2px solid color-mix(in srgb,#7567e8 48%,transparent);outline-offset:2px}
.lottery-nav-tree.open .lottery-tree-toggle:before{transform:translate(-50%,-67%) rotate(45deg)}
.lottery-nav-tree.open+.lottery-subnav{display:grid}
.lottery-nav-tree:not(.open)+.lottery-subnav{display:none}

/* 高级设置独立页面 */
#lotteryScreenShell.lottery-reference-shell.lottery-settings-mode{grid-template-rows:minmax(0,1fr)!important}
.lottery-settings-mode .lottery-center-tabs{display:none}
.lottery-settings-page-panel.active{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.lottery-settings-page{flex:1;display:grid;grid-template-columns:minmax(320px,.82fr) minmax(430px,1.18fr);gap:16px;min-height:0;padding:18px;overflow:hidden}
.lottery-settings-left,.lottery-settings-right{display:flex;flex-direction:column;gap:14px;min-height:0;overflow-y:auto;padding-right:5px;scrollbar-gutter:stable}
.lottery-settings-page .lottery-draw-settings-card{margin:0;padding:15px}
.lottery-settings-page .lottery-roster-picker{min-height:360px;margin:0;padding:15px}
.lottery-settings-page .lottery-student-checklist{max-height:none;min-height:240px;flex:1}
.lottery-settings-page .lottery-rule-card{margin:0;padding:15px;font-size:12px}
.lottery-settings-page .lottery-rule-card b{font-size:15px}
.lottery-settings-page .lottery-rule-card span{font-size:13px;line-height:1.7}
.lottery-settings-page .lottery-settings-right>label{display:flex;flex:1;flex-direction:column;min-height:0;color:var(--ink);font-size:14px;font-weight:900}
.lottery-settings-page .lottery-settings-right>label small{margin-left:auto;color:var(--muted);font-size:10px;font-weight:600}
.lottery-prize-editor{display:flex;flex:1;flex-direction:column;min-height:0;color:var(--ink)}.lottery-prize-editor-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.lottery-prize-editor-head>div{display:flex;align-items:baseline;gap:9px}.lottery-prize-editor-head b{font-size:14px}.lottery-prize-editor-head small{color:var(--muted);font-size:10px;font-weight:600}.lottery-prize-editor-head button{padding:7px 10px;font-size:10px}.lottery-prize-table-wrap{flex:1;min-height:300px;overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--theme-input);scrollbar-width:thin}.lottery-prize-table{min-width:620px;table-layout:fixed}.lottery-prize-table th{z-index:2;padding:10px 9px;background:color-mix(in srgb,var(--sage-soft) 74%,var(--panel));font-size:10px}.lottery-prize-table th:nth-child(1){width:30%}.lottery-prize-table th:nth-child(2){width:14%}.lottery-prize-table th:nth-child(3){width:12%}.lottery-prize-table th:nth-child(4){width:34%}.lottery-prize-table th:nth-child(5){width:10%;text-align:center}.lottery-prize-table td{padding:6px 7px;background:var(--panel)}.lottery-prize-table tr:hover td{background:color-mix(in srgb,var(--sage-soft) 40%,var(--panel))}.lottery-prize-table input,.lottery-prize-table select{width:100%;min-width:0;height:34px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--theme-input);font-size:10px;outline:none}.lottery-prize-table input:focus,.lottery-prize-table select:focus{border-color:var(--sage);box-shadow:0 0 0 2px var(--sage-soft)}.lottery-prize-table input[type=number]{appearance:textfield;text-align:center}.lottery-prize-table input[type=number]::-webkit-inner-spin-button,.lottery-prize-table input[type=number]::-webkit-outer-spin-button{appearance:none}.lottery-reward-remove{width:28px;height:28px;display:grid;place-items:center;margin:auto;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:18px}.lottery-reward-remove:hover{background:#f9e3df;color:#a2473a}.lottery-prize-editor>.lottery-field-hint{margin-top:7px}
.lottery-settings-page #lotteryPrizes[hidden]{display:none!important}
.lottery-settings-page .lottery-settings-actions{display:flex;justify-content:flex-end;gap:10px}
.lottery-settings-page .lottery-settings-actions button{min-width:150px;padding:11px 18px;font-size:12px}

/* 奖券库紧凑卡片与类型图标 */
.lottery-manage-mode .lottery-ticket-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:12px;margin-top:0;padding:2px 5px 8px 1px}
.lottery-ticket-card{display:grid;grid-template-columns:52px minmax(0,1fr) auto;grid-template-areas:"icon tags stock" "icon title stock" "icon meta stock" "actions actions actions";align-items:center;column-gap:11px;row-gap:4px;min-height:142px;padding:13px 14px}
.lottery-ticket-icon{grid-area:icon;display:grid;width:50px;height:50px;place-items:center;border-radius:15px;background:linear-gradient(145deg,#eee8ff,#e7f6ff);font-size:27px;box-shadow:inset 0 0 0 1px rgba(116,97,188,.12)}
.lottery-ticket-tags{grid-area:tags;display:flex!important;gap:5px;min-width:0}
.lottery-ticket-tags span{padding:3px 7px;border-radius:999px;color:var(--muted);background:var(--theme-input);font-size:9px;white-space:nowrap}
.lottery-ticket-card h3{grid-area:title;margin:1px 0;font-size:17px;line-height:1.2}
.lottery-ticket-card .lottery-big-stock{grid-area:stock;align-self:center;min-width:54px;color:var(--ink);font-size:29px;text-align:right}
.lottery-ticket-card .lottery-big-stock small{font-size:10px}
.lottery-ticket-card p{grid-area:meta;margin:0;font-size:11px}
.lottery-ticket-actions{grid-area:actions;display:flex!important;justify-content:flex-end;gap:7px;margin-top:6px;padding-top:8px;border-top:1px solid var(--line)}
.lottery-ticket-card .lottery-ticket-actions button{padding:7px 12px;font-size:10px}
.lottery-ticket-card.rare .lottery-ticket-icon{background:linear-gradient(145deg,#fff2ad,#ffd26e)}
@media(max-width:900px){.lottery-settings-page{grid-template-columns:1fr;overflow-y:auto}.lottery-settings-left,.lottery-settings-right{overflow:visible}.lottery-settings-page #lotteryPrizes{min-height:360px}.lottery-manage-mode .lottery-ticket-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.lottery-manage-mode .lottery-ticket-grid{grid-template-columns:1fr}.lottery-ticket-card{grid-template-columns:48px minmax(0,1fr) auto}.lottery-ticket-icon{width:46px;height:46px}}

/* 库存改为紧凑卡片，减少横向空白 */
.lottery-manage-mode .lottery-inventory-table{padding:12px;background:color-mix(in srgb,var(--theme-input) 45%,var(--panel))}
.lottery-manage-mode .lottery-inventory-table>.lottery-inventory-row.heading{display:none}
.lottery-manage-mode #lotteryInventoryList{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:12px}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"info stock" "info weight" "actions actions";gap:5px 12px;min-height:134px;padding:14px;border:1px solid var(--line);border-radius:15px;background:var(--panel);box-shadow:0 5px 14px rgba(48,60,70,.05);font-size:12px}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>div:first-child{grid-area:info;display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-rows:auto auto;align-content:center;column-gap:10px;min-width:0}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>div:first-child:before{content:"🎟";grid-row:1/3;display:grid;width:42px;height:42px;place-items:center;align-self:center;border-radius:13px;background:linear-gradient(145deg,#eee8ff,#e7f6ff);font-size:23px}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>div:first-child>b{grid-column:2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;line-height:1.3}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row small{grid-column:2;margin-top:4px;font-size:10px;line-height:1.35}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>b:nth-child(2){grid-area:stock;align-self:end;font-size:18px;text-align:right}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>b:nth-child(2):before{content:"库存 ";color:var(--muted);font-size:10px;font-weight:700}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>b:nth-child(3){grid-area:weight;display:block!important;align-self:start;color:#6a55bc;font-size:14px;text-align:right}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>b:nth-child(3):before{content:"权重 ";color:var(--muted);font-size:10px;font-weight:700}
.lottery-manage-mode #lotteryInventoryList .lottery-stepper{grid-area:actions;justify-content:flex-end;margin-top:7px;padding-top:9px;border-top:1px solid var(--line)}
.lottery-manage-mode #lotteryInventoryList .lottery-stepper button{min-width:36px;height:34px;font-size:12px}
.lottery-manage-mode #lotteryInventoryList .lottery-stepper .ghost-btn{min-width:54px;padding:0 11px}
@media(max-width:1050px){.lottery-manage-mode #lotteryInventoryList{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.lottery-manage-mode #lotteryInventoryList{grid-template-columns:1fr}}

/* 库存与权重：卡片内快捷调整 + 统一编辑弹窗 */
.lottery-inventory-stock,.lottery-inventory-weight{display:flex;align-items:center;justify-content:space-between;gap:8px}.lottery-inventory-stock>span,.lottery-inventory-weight>span{color:var(--muted);font-size:10px;font-weight:800}.lottery-inventory-stock>b{font-variant-numeric:tabular-nums}.lottery-weight-stepper{display:flex;align-items:center;gap:5px}.lottery-weight-stepper button{width:27px;height:27px;display:grid;place-items:center;padding:0;border:1px solid color-mix(in srgb,#765ac5 25%,var(--line));border-radius:8px;background:color-mix(in srgb,#eee8ff 75%,var(--panel));color:#654db6;font-size:15px;font-weight:900}.lottery-weight-stepper button:hover{border-color:#765ac5;background:#e8e0ff}.lottery-weight-stepper b{min-width:27px;color:#654db6;font-size:14px;text-align:center;font-variant-numeric:tabular-nums}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row{grid-template-areas:"info stock" "info weight" "actions actions";min-height:150px}.lottery-manage-mode #lotteryInventoryList .lottery-inventory-info{grid-area:info}.lottery-manage-mode #lotteryInventoryList .lottery-inventory-stock{grid-area:stock;align-self:end;justify-content:flex-end}.lottery-manage-mode #lotteryInventoryList .lottery-inventory-stock>span{display:none}.lottery-manage-mode #lotteryInventoryList .lottery-inventory-stock>b{font-size:18px;text-align:right}.lottery-manage-mode #lotteryInventoryList .lottery-inventory-stock>b:before{content:"库存 ";color:var(--muted);font-size:10px;font-weight:700}.lottery-manage-mode #lotteryInventoryList .lottery-inventory-weight{grid-area:weight;align-self:start;justify-content:flex-end}.lottery-manage-mode #lotteryInventoryList .lottery-inventory-weight>span{font-size:9px}.lottery-manage-mode #lotteryInventoryList .lottery-stepper{align-items:center}.lottery-manage-mode #lotteryInventoryList .lottery-stepper button{min-width:auto;padding:0 10px}.lottery-manage-mode #lotteryInventoryList .lottery-stepper .ghost-btn{margin-left:auto;padding:0 13px;background:var(--theme-input)}
.modal.lottery-inventory-edit-modal{width:min(630px,calc(100vw - 32px));padding:0;overflow:hidden;border:1px solid color-mix(in srgb,var(--sage) 24%,var(--line));border-radius:24px;background:var(--panel);box-shadow:0 30px 90px rgba(25,42,33,.28)}.lottery-inventory-edit-modal .modal-head{margin:0;padding:21px 24px 18px;border-bottom:1px solid color-mix(in srgb,var(--sage) 18%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--sage-soft) 82%,var(--panel)),color-mix(in srgb,var(--peach-soft) 38%,var(--panel)))}.lottery-inventory-edit-modal .modal-head h3{margin-top:5px;font:900 24px/1.15 "Microsoft YaHei",sans-serif}.lottery-inventory-edit-modal .modal-head .icon-btn{width:36px;height:36px;padding:0;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--sage) 22%,var(--line));background:rgba(255,255,255,.65);font-size:21px}.lottery-inventory-edit-modal #modalBody{padding:22px 24px 24px}.lottery-inventory-form{display:grid;gap:18px}.lottery-inventory-modal-hero{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:14px;padding:15px;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--theme-input) 70%,var(--panel))}.lottery-inventory-modal-hero>span{width:58px;height:58px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(145deg,#eee8ff,#e4f5ff);box-shadow:inset 0 0 0 1px rgba(255,255,255,.7);font-size:30px}.lottery-inventory-modal-hero small{color:var(--sage-dark);font-size:9px;font-weight:900;letter-spacing:.04em}.lottery-inventory-modal-hero h4{margin:4px 0 3px;font-size:19px}.lottery-inventory-modal-hero p{margin:0;color:var(--muted);font-size:10px;line-height:1.55}.lottery-inventory-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.lottery-inventory-fields label{display:grid;grid-template-columns:minmax(0,1fr) 105px;align-items:center;gap:12px;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:var(--theme-input)}.lottery-inventory-fields label>span{font-size:12px;font-weight:900}.lottery-inventory-fields label>span small{display:block;margin-top:4px;color:var(--muted);font-size:9px;font-weight:600;line-height:1.45}.lottery-inventory-fields input{width:105px;height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font-size:17px;font-weight:900;text-align:center;outline:none;appearance:textfield}.lottery-inventory-fields input::-webkit-inner-spin-button,.lottery-inventory-fields input::-webkit-outer-spin-button{appearance:none}.lottery-inventory-fields input:focus{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.lottery-inventory-fields .lottery-weight-field{grid-column:1/-1;grid-template-columns:minmax(0,1fr) 105px}.lottery-weight-guide{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.lottery-weight-guide i{padding:6px 8px;border-radius:8px;background:var(--panel);color:var(--muted);font-size:9px;font-style:normal;text-align:center}.lottery-inventory-modal-actions{display:flex;justify-content:flex-end;gap:9px;padding-top:2px}.lottery-inventory-modal-actions button{min-width:120px;padding:11px 18px}
@media(max-width:560px){.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row{grid-template-areas:"info info" "stock weight" "actions actions"}.lottery-manage-mode #lotteryInventoryList .lottery-inventory-stock{justify-content:flex-start}.lottery-inventory-fields{grid-template-columns:1fr}.lottery-inventory-fields .lottery-weight-field{grid-column:auto}.lottery-inventory-edit-modal #modalBody{padding:16px}.lottery-inventory-modal-hero{grid-template-columns:48px minmax(0,1fr)}.lottery-inventory-modal-hero>span{width:48px;height:48px;font-size:25px}.lottery-inventory-fields label,.lottery-inventory-fields .lottery-weight-field{grid-template-columns:minmax(0,1fr) 90px}.lottery-inventory-fields input{width:90px}.lottery-inventory-modal-actions button{flex:1;min-width:0}}

/* 全局操作提示：替代浏览器原生 alert / confirm */
.action-dialog-backdrop{position:fixed;inset:0;z-index:160;display:grid;place-items:center;padding:20px;background:rgba(24,31,27,.52);backdrop-filter:blur(7px);animation:actionBackdropIn .16s ease both}.action-dialog-backdrop[hidden]{display:none!important}.action-dialog{position:relative;width:min(540px,calc(100vw - 32px));display:grid;grid-template-columns:62px minmax(0,1fr);gap:0 17px;padding:25px;border:1px solid color-mix(in srgb,var(--sage) 22%,var(--line));border-radius:24px;background:color-mix(in srgb,var(--panel) 97%,transparent);box-shadow:0 30px 90px rgba(20,29,24,.3);overflow:hidden;animation:actionDialogIn .2s cubic-bezier(.2,.85,.32,1.08) both}.action-dialog:before{content:"";position:absolute;inset:0 0 auto;height:5px;background:var(--dialog-accent,var(--sage))}.action-dialog-icon{grid-row:1/3;width:62px;height:62px;display:grid;place-items:center;margin-top:2px;border:1px solid color-mix(in srgb,var(--dialog-accent,var(--sage)) 32%,var(--line));border-radius:19px;background:color-mix(in srgb,var(--dialog-accent,var(--sage)) 14%,var(--panel));color:var(--dialog-accent,var(--sage));font:900 29px/1 "Microsoft YaHei",sans-serif;box-shadow:inset 0 0 0 5px color-mix(in srgb,var(--dialog-accent,var(--sage)) 5%,transparent)}.action-dialog-copy{min-width:0}.action-dialog-copy>span{display:block;margin:1px 0 7px;color:var(--dialog-accent,var(--sage));font-size:9px;font-weight:900;letter-spacing:.16em}.action-dialog-copy h3{margin:0;color:var(--ink);font:900 22px/1.3 "Microsoft YaHei",sans-serif}.action-dialog-copy p{margin:9px 0 0;color:var(--muted);font-size:13px;line-height:1.75;white-space:pre-line}.action-dialog-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;margin-top:22px;padding-top:17px;border-top:1px solid var(--line)}.action-dialog-actions button{min-width:108px;padding:11px 18px;border-radius:11px;font-size:12px;font-weight:900}.action-dialog-actions .ghost-btn{background:var(--theme-input)}.action-dialog-actions .primary-btn{background:var(--dialog-accent,var(--sage));box-shadow:0 8px 20px color-mix(in srgb,var(--dialog-accent,var(--sage)) 24%,transparent)}.action-dialog.tone-info{--dialog-accent:#4f82a5}.action-dialog.tone-warning{--dialog-accent:#b48232}.action-dialog.tone-danger{--dialog-accent:#b65349}.action-dialog.tone-success{--dialog-accent:#4f7d54}.action-dialog.tone-danger #actionDialogConfirm{border:0;background:#b65349;color:#fff;box-shadow:0 8px 20px rgba(182,83,73,.24)}@keyframes actionBackdropIn{from{opacity:0}to{opacity:1}}@keyframes actionDialogIn{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@media(max-width:520px){.action-dialog{grid-template-columns:48px minmax(0,1fr);gap:0 13px;padding:21px 18px}.action-dialog-icon{width:48px;height:48px;border-radius:15px;font-size:23px}.action-dialog-copy h3{font-size:18px}.action-dialog-copy p{font-size:12px}.action-dialog-actions{margin-top:18px}.action-dialog-actions button{flex:1;min-width:0}}

/* 奖券管理各页面统一按钮间距 */
.lottery-manage-mode .lottery-page-head>div+div{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.lottery-manage-mode .lottery-account-tabs{gap:11px}
.lottery-manage-mode .lottery-ticket-toolbar{gap:11px}
.lottery-manage-mode .lottery-stepper{gap:8px}
.lottery-manage-mode .lottery-ticket-actions{gap:10px}
.lottery-settings-page .lottery-settings-actions{gap:14px}
.lottery-settings-page .lottery-roster-actions{gap:8px}
@media(max-width:620px){.lottery-manage-mode .lottery-page-head>div+div{width:100%;gap:10px}.lottery-manage-mode .lottery-page-head>div+div>button{flex:1}}

/* 班级课表选中态图标颜色 */
.nav-item[data-view="timetable"]{--nav-tone:#4f7f93;--nav-soft:#e2f0f4}
.nav-item[data-view="timetable"].active>span:first-child{background:#4f7f93;border-color:#4f7f93;color:#fff}

/* 奖券管理整体字号提升 */
.lottery-manage-mode{font-size:13px}
.lottery-manage-mode .section-kicker{font-size:11px}
.lottery-manage-mode .lottery-page-head h2{font-size:27px}
.lottery-manage-mode .lottery-page-head>span,.lottery-manage-mode .lottery-page-head>div>span:not(.section-kicker),.lottery-manage-mode #lotteryAccountSummary{font-size:12px}
.lottery-manage-mode .lottery-page-head button{font-size:12px}
.lottery-manage-mode .lottery-account-tabs button{padding:10px 16px;font-size:13px}
.lottery-manage-mode .lottery-ticket-toolbar select,.lottery-manage-mode .lottery-ticket-toolbar input{min-height:38px;padding:9px 11px;font-size:12px}
.lottery-manage-mode .lottery-account-option{padding:12px;font-size:13px}
.lottery-manage-mode .lottery-account-option span{font-size:10px}
.lottery-manage-mode .lottery-account-layout .panel-head h3{font-size:19px}
.lottery-manage-mode .lottery-coupon h3{font-size:18px}
.lottery-manage-mode .lottery-coupon p,.lottery-manage-mode .lottery-coupon small{font-size:11px;line-height:1.5}
.lottery-manage-mode .lottery-coupon .count{font-size:12px}
.lottery-manage-mode .lottery-ticket-tags span{font-size:10px}
.lottery-manage-mode .lottery-ticket-card h3{font-size:18px}
.lottery-manage-mode .lottery-ticket-card .lottery-big-stock{font-size:31px}
.lottery-manage-mode .lottery-ticket-card .lottery-big-stock small{font-size:11px}
.lottery-manage-mode .lottery-ticket-card p{font-size:12px}
.lottery-manage-mode .lottery-ticket-card .lottery-ticket-actions button{font-size:11px}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>div:first-child>b{font-size:18px}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row small{font-size:11px}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>b:nth-child(2){font-size:20px}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>b:nth-child(3){font-size:16px}
.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>b:nth-child(2):before,.lottery-manage-mode #lotteryInventoryList>.lottery-inventory-row>b:nth-child(3):before{font-size:11px}
.lottery-manage-mode #lotteryInventoryList .lottery-stepper button{font-size:13px}
.lottery-manage-mode .lottery-history-table{font-size:15px}
.lottery-manage-mode .lottery-history-table th,.lottery-manage-mode .lottery-history-table td{padding:16px 14px;line-height:1.55;text-align:center;vertical-align:middle}
.lottery-manage-mode .lottery-history-table th{font-size:15px;font-weight:900}
.lottery-manage-mode .lottery-history-table td{font-size:14px}
.lottery-manage-mode .lottery-history-table td b{font-size:15px}

/* 无盖中奖头像改为完整正方形，填满原礼盒留下的下部空白 */
body.lottery-mode .lottery-reference-box{width:164px!important;height:164px!important;aspect-ratio:1;margin-bottom:12px}
body.lottery-mode .lottery-reference-box-body{inset:0!important;width:100%!important;height:100%!important;box-sizing:border-box;border-radius:22px!important}
body.lottery-mode .lottery-reference-box-body .draw-asset{width:146px!important;height:146px!important;max-width:100%;max-height:100%;object-fit:contain}
@media(max-width:620px){body.lottery-mode .lottery-reference-box{width:142px!important;height:142px!important}body.lottery-mode .lottery-reference-box-body .draw-asset{width:126px!important;height:126px!important}}

/* 抽奖设置与奖券管理：提高可读性，奖券表格全部居中 */
.lottery-settings-page,.lottery-manage-mode .lottery-center-panel.active{font-size:15px}
.lottery-settings-page-panel .lottery-page-head h2,.lottery-manage-mode .lottery-page-head h2{font-size:28px}
.lottery-settings-page .lottery-draw-settings-card{padding:18px}
.lottery-settings-page .lottery-reference-settings>label{margin:15px 0;font-size:15px}
.lottery-settings-page .lottery-reference-settings input,.lottery-settings-page .lottery-reference-settings select{min-height:48px;padding:11px 13px;font-size:15px}
.lottery-settings-page .lottery-duration-control b{font-size:15px}
.lottery-settings-page .lottery-duration-hint{font-size:13px}
.lottery-settings-page .lottery-reference-settings .lottery-check{font-size:15px}
.lottery-settings-page .lottery-reference-settings .lottery-check input{width:22px;height:22px;min-height:22px;padding:0}
.lottery-settings-page .lottery-roster-head b{font-size:18px}
.lottery-settings-page .lottery-roster-head span{font-size:13px}
.lottery-settings-page .lottery-roster-actions button{padding:8px 12px;font-size:13px}
.lottery-settings-page .lottery-roster-search input{height:44px!important;font-size:14px!important}
.lottery-settings-page .lottery-student-option{min-height:45px;padding:9px 10px}
.lottery-settings-page .lottery-student-option span{font-size:14px}
.lottery-settings-page .lottery-student-option span b{font-size:12px}
.lottery-settings-page .lottery-student-option i{font-size:13px}
.lottery-settings-page .lottery-student-option input{width:21px;height:21px}
.lottery-settings-page .lottery-rule-card{font-size:15px}
.lottery-settings-page .lottery-rule-card b{font-size:18px}
.lottery-settings-page .lottery-prize-editor-head b{font-size:20px}
.lottery-settings-page .lottery-prize-editor-head small{font-size:14px}
.lottery-settings-page .lottery-prize-editor-head button{padding:10px 14px;font-size:14px}
.lottery-settings-page .lottery-prize-table{min-width:720px}
.lottery-settings-page .lottery-prize-table th,.lottery-settings-page .lottery-prize-table td{text-align:center;vertical-align:middle}
.lottery-settings-page .lottery-prize-table th{padding:13px 10px;font-size:15px}
.lottery-settings-page .lottery-prize-table td{padding:9px}
.lottery-settings-page .lottery-prize-table input,.lottery-settings-page .lottery-prize-table select{height:44px;padding:9px 10px;text-align:center;text-align-last:center;font-size:15px}
.lottery-use-editor{display:grid;grid-template-columns:minmax(135px,1fr) auto;align-items:center;gap:7px}.lottery-reward-use-count{display:flex;align-items:center;gap:5px;white-space:nowrap;color:var(--muted);font-size:11px;font-weight:800}.lottery-reward-use-count[hidden]{display:none}.lottery-prize-table .lottery-reward-use-count input{width:66px;min-width:66px;margin:0;text-align:center;text-align-last:auto}.lottery-coupon-progress.custom{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:9px}.lottery-coupon-progress.custom>i{position:relative;height:10px;overflow:hidden;background:#dedde6}.lottery-coupon-progress.custom>i:after{content:"";position:absolute;inset:0 auto 0 0;width:var(--progress,0%);border-radius:inherit;background:linear-gradient(90deg,#ffd95f,#ffad59)}.lottery-coupon-progress.custom>span{min-width:42px;color:var(--muted);text-align:right;font-size:10px;font-weight:800;font-variant-numeric:tabular-nums}
.lottery-settings-page .lottery-reward-remove{width:36px;height:36px;font-size:22px}
.lottery-settings-page .lottery-field-hint{font-size:13px}
.lottery-settings-page .lottery-settings-actions button{min-width:170px;padding:13px 20px;font-size:15px}
.lottery-manage-mode .lottery-page-head,.lottery-manage-mode .lottery-ticket-toolbar{font-size:15px}
.lottery-manage-mode .lottery-page-head button,.lottery-manage-mode .lottery-ticket-toolbar button,.lottery-manage-mode .lottery-ticket-toolbar input,.lottery-manage-mode .lottery-ticket-toolbar select{font-size:14px}

/* 自定义名单搜索框 */
.lottery-settings-page .lottery-roster-search{position:relative;display:block!important;width:100%;margin:0 0 12px!important;color:transparent!important;font-size:0!important}
.lottery-settings-page .lottery-roster-search:before{content:"⌕";position:absolute;z-index:2;left:10px;top:50%;width:28px;height:28px;display:grid;place-items:center;translate:0 -50%;border-radius:9px;color:var(--sage-dark);background:var(--sage-soft);font-size:17px;font-weight:900;pointer-events:none}
.lottery-settings-page .lottery-roster-search input{display:block;width:100%;height:48px!important;box-sizing:border-box;margin:0!important;padding:0 16px 0 48px!important;border:1.5px solid color-mix(in srgb,var(--sage) 45%,var(--line))!important;border-radius:14px!important;color:var(--ink);background:linear-gradient(135deg,var(--panel),color-mix(in srgb,var(--sage-soft) 30%,var(--panel)))!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 4px 12px rgba(54,78,65,.06);font-size:15px!important;outline:none;transition:border-color .18s,box-shadow .18s,background .18s}
.lottery-settings-page .lottery-roster-search input::placeholder{color:color-mix(in srgb,var(--muted) 78%,transparent)}
.lottery-settings-page .lottery-roster-search input:hover{border-color:color-mix(in srgb,var(--sage) 72%,var(--line))!important}
.lottery-settings-page .lottery-roster-search input:focus{border-color:var(--sage)!important;background:var(--panel)!important;box-shadow:0 0 0 4px color-mix(in srgb,var(--sage-soft) 78%,transparent),0 7px 18px rgba(54,78,65,.1)!important}

/* 座位页精简信息并让实际座位表填满工作面板 */
#view-seats.active{grid-template-rows:auto auto auto minmax(0,1fr) auto;gap:8px}
#view-seats .seat-page-head{min-height:45px;margin:0;padding:0 2px}
#view-seats .seat-page-head h2{margin:0;font-size:23px}
#view-seats .seat-layout-controls{margin:0;padding:8px 11px}
#view-seats .seat-layout-controls label{gap:2px}
#view-seats .seat-layout-controls input{padding:6px 8px}
#view-seats .seat-toolbar{min-height:44px;margin:0}
#view-seats .blackboard{padding:10px}
#view-seats .seat-map-wrap{height:100%;min-height:0;padding:7px;border-radius:16px}
#view-seats .seat-map{width:100%;height:100%;min-height:0;grid-template-rows:46px;grid-auto-rows:minmax(0,1fr);border-radius:10px}
#view-seats .seat-sheet-cell{padding:9px 7px}
#view-seats .seat-sheet-cell strong{font-size:16px}
#view-seats .seat-sheet-cell small{font-size:9px}
#view-seats .seat-row-head,#view-seats .seat-col-head{font-size:11px}
#view-seats .team-legend{min-height:30px;margin:0;padding:2px 0 0}
@media(max-width:820px){#view-seats.active{display:grid;grid-template-rows:auto auto auto minmax(560px,1fr) auto;overflow-y:auto}.seat-map-wrap{min-height:560px!important}}

/* APP 手机端统一排版：所有页面共用一个可滚动内容区，避免固定高度与桌面列宽互相覆盖 */
@media(max-width:900px){
  html,body{width:100%;height:100%;min-height:100%;overflow:hidden}
  body{font-size:15px;-webkit-text-size-adjust:100%}
  .app-shell{display:block;width:100%;height:100dvh;min-height:100dvh;overflow:hidden}
  .sidebar{left:0;top:0;z-index:120;width:min(82vw,292px);height:100dvh;padding-top:max(22px,env(safe-area-inset-top));padding-bottom:max(18px,env(safe-area-inset-bottom));transform:translateX(-105%);transition:transform .22s ease;box-shadow:18px 0 48px rgba(20,35,29,.24)}
  .sidebar.open{transform:translateX(0)}
  .main{grid-column:auto;display:grid;grid-template-rows:auto minmax(0,1fr);width:100%;height:100dvh;min-height:0;overflow:hidden}
  .topbar{position:relative;display:flex;width:100%;height:auto;min-height:72px;padding:max(8px,env(safe-area-inset-top)) 12px 8px;gap:8px;overflow:visible}
  .menu-btn{display:grid;flex:0 0 38px;width:38px;height:42px;place-items:center;padding:0;font-size:20px}
  .topbar-title{flex:1;min-width:0;gap:4px;margin:0}
  .pixel-alarm.topbar-robot{flex:0 0 48px;width:48px;height:52px;transform:none}
  .topbar-robot img{width:48px;height:48px}
  .topbar-copy{min-width:0;column-gap:5px}
  .topbar-title .eyebrow{max-width:100%;overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}
  .live-time{font-size:11px}
  .topbar-title h1{max-width:100%;margin-top:1px;overflow:hidden;font-size:18px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}
  .topbar .top-actions{flex:0 0 auto;margin-left:auto;gap:6px}
  .topbar .top-actions>.ghost-btn{display:none}
  .appearance-btn{width:42px;min-width:42px;height:42px;padding:0}
  .appearance-btn .theme-button-label{display:none}
  .icon-btn.manual-doc-btn{width:42px;min-width:42px;height:42px;padding:0}
  .manual-doc-btn span{display:none}
  .top-actions .primary-btn{width:42px;min-width:42px;height:42px;padding:0;font-size:0}
  .top-actions .primary-btn:after{content:"＋";font-size:20px}
  .avatar{display:grid;width:42px;height:42px}
  .content{width:100%;height:100%;min-height:0;padding:10px 10px calc(12px + env(safe-area-inset-bottom));overflow:hidden}
  .view.active,#view-students.active,#view-parents.active,#view-scores.active,#view-teaching.active,#view-feedback.active,#view-timetable.active,#view-seats.active,#view-lottery.active{display:block;height:100%;min-height:0;padding:0 2px 18px;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain;scrollbar-width:none}
  .view.active::-webkit-scrollbar{display:none}
  .panel{min-width:0;padding:15px;border-radius:16px}
  .page-actions,.student-page-actions,.seat-page-head,.lottery-page-head{align-items:stretch;flex-direction:column;gap:10px}
  .page-actions>*,.student-page-actions>*,.seat-page-head>*,.lottery-page-head>*{min-width:0;max-width:100%}
  input,select,textarea,button{max-width:100%}
  input,select,textarea{font-size:16px}
  .search-box,.select{width:100%;min-width:0}
  .metric-grid,.score-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-grid,.feedback-layout,.settings-grid,.teaching-layout,.score-layout,.analysis-grid{grid-template-columns:1fr}
  .span-2,.analysis-card.span-2{grid-column:auto}

  /* 数据表保留可读字号，并在表格自身横向滚动 */
  .table-wrap,.score-workspace-frame,.timetable-sheet-wrap,.seat-map-wrap,.lottery-prize-table-wrap,.lottery-history-table-wrap,.lottery-inventory-table{width:100%;max-width:100%;min-width:0;overflow:auto!important;-webkit-overflow-scrolling:touch}
  .score-workspace-frame,.teaching-workspace-frame,.feedback-workspace-frame{height:auto;max-height:none;overflow:visible}
  .score-table,.timetable-sheet{min-width:760px}
  .score-command-bar{width:100%;padding:16px;gap:12px}
  .score-command-actions,.score-scope-bar{width:100%;justify-content:flex-start}
  .score-command-actions>*{flex:1 1 120px;min-width:0!important}
  .score-aside{min-width:0}
  #view-seats .seat-page-head{min-height:0}
  #view-seats .seat-layout-controls{align-items:flex-end;gap:8px;padding:11px;flex-wrap:wrap}
  #view-seats .seat-layout-controls small{flex-basis:100%}
  #view-seats .seat-toolbar{grid-template-columns:52px minmax(0,1fr) 52px;gap:6px}
  #view-seats .seat-map-wrap{height:auto;min-height:0!important;padding:6px}
  #view-seats .seat-map{width:900px;height:650px;min-height:650px;grid-template-rows:46px;grid-auto-rows:minmax(78px,1fr)}
  #view-seats .team-legend{flex-wrap:wrap;height:auto;min-height:0}

  /* 抽奖各子页面解除桌面端固定工作区，内容自然向下滚动 */
  #lotteryScreenShell.lottery-reference-shell,#lotteryScreenShell.lottery-reference-shell.lottery-manage-mode,#lotteryScreenShell.lottery-reference-shell.lottery-settings-mode{display:block;width:100%;height:auto;min-height:100%;overflow:visible!important}
  .lottery-center-panel.active,.lottery-manage-mode .lottery-center-panel.active,.lottery-settings-page-panel.active{display:block;width:100%;height:auto;min-height:0;padding-bottom:14px;overflow:visible}
  .lottery-reference-hero{display:grid;grid-template-columns:1fr;width:100%;min-height:0;padding:15px;gap:12px}
  .lottery-reference-hero .lottery-reference-status-bar,.lottery-reference-hero .lottery-screen-tools{grid-column:1;grid-row:auto;width:100%;min-width:0}
  .lottery-reference-hero .lottery-screen-tools{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .lottery-reference-hero .lottery-tool-btn{width:100%;min-width:0;min-height:42px;padding:9px 8px;font-size:12px}
  .lottery-reference-hero .lottery-reference-stat-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{display:grid;grid-template-columns:1fr;width:100%;min-height:0;margin:0;gap:12px}
  .lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel,.lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{width:100%;height:auto;min-height:0}
  .lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine{min-height:500px!important}
  .lottery-reference-status .lottery-history{max-height:420px}
  .lottery-reference-machine-panel .lottery-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:8px}
  .lottery-reference-machine-panel .lottery-start{grid-column:1/-1;width:100%;min-width:0}
  .lottery-reference-machine-panel .lottery-actions button{width:100%;min-width:0;padding:11px 8px;font-size:13px}
  .lottery-settings-page{display:block;width:100%;max-width:100%;min-width:0;height:auto;padding:12px;overflow:visible}
  .lottery-settings-left,.lottery-settings-right,.lottery-settings-page .lottery-settings-right>label,.lottery-prize-editor{width:100%;max-width:100%;min-width:0;overflow:visible}
  .lottery-settings-page .lottery-settings-right>label,.lottery-prize-editor{display:block;flex:none;height:auto;min-height:0}
  .lottery-settings-right{margin-top:14px}
  .lottery-settings-page .lottery-roster-picker{min-height:0}
  .lottery-settings-page .lottery-student-checklist{max-height:430px;min-height:260px;overflow:auto}
  .lottery-prize-table-wrap{flex:none;height:520px;min-height:320px;max-height:520px}
  .lottery-settings-page .lottery-settings-actions{position:static;display:grid;grid-template-columns:1fr;gap:8px;margin-top:12px}
  .lottery-settings-page .lottery-settings-actions button{width:100%;min-width:0}
  .lottery-manage-mode .lottery-account-layout{display:block;width:100%;height:auto;max-height:none;overflow:visible}
  .lottery-manage-mode .lottery-account-list,.lottery-manage-mode .lottery-account-layout>article,.lottery-manage-mode .lottery-ticket-grid,.lottery-manage-mode .lottery-inventory-table,.lottery-manage-mode .lottery-history-table-wrap{height:auto;max-height:none;overflow:visible}
  .lottery-manage-mode .lottery-ticket-grid{grid-template-columns:1fr}
  .lottery-manage-mode #lotteryInventoryList{grid-template-columns:1fr}

  /* 弹窗始终落在安全区内，表单按钮不再被底部挡住 */
  .modal-backdrop,.score-analysis-backdrop{align-items:flex-start;padding:max(8px,env(safe-area-inset-top)) 8px max(8px,env(safe-area-inset-bottom));overflow-y:auto}
  .modal,.score-analysis-dialog{width:100%;max-width:100%;max-height:calc(100dvh - max(16px,env(safe-area-inset-top)) - max(16px,env(safe-area-inset-bottom)));margin:auto;padding:16px;border-radius:18px;overflow:auto}
  .modal-form{grid-template-columns:1fr}
  .modal-form .full{grid-column:auto}
  .modal-actions{position:sticky;z-index:2;bottom:-1px;display:grid;grid-template-columns:1fr;gap:8px;margin:14px -4px -4px;padding:10px 4px 4px;background:linear-gradient(transparent,var(--panel) 20%)}
  .modal-actions button{width:100%;min-width:0}
  .score-analysis-dialog #analysisAdvice{grid-template-columns:1fr}
  .score-analysis-dialog #analysisAdvice .advice-item{grid-column:auto!important}
  .avatar-popover,.theme-popover{position:fixed;top:68px;right:8px;width:calc(100vw - 16px);max-width:360px;max-height:calc(100dvh - 78px);overflow:auto}
  .toast{top:78px}
}

@media(max-width:900px) and (max-height:600px){
  .main{grid-template-rows:auto minmax(0,1fr)}
  .topbar{min-height:58px;padding:max(4px,env(safe-area-inset-top)) 10px 4px}
  .pixel-alarm.topbar-robot,.topbar-title .eyebrow,.live-time{display:none}
  .topbar-title h1{font-size:18px}
  .menu-btn,.appearance-btn,.top-actions .primary-btn,.avatar{width:38px;min-width:38px;height:38px}
  .content{padding:7px 8px calc(8px + env(safe-area-inset-bottom))}
  .toast{top:62px}
}

@media(max-width:520px){
  .student-grid,#view-students .student-grid,.script-grid,#view-parents .script-grid{grid-template-columns:1fr}
  .quick-grid,.feedback-template-buttons{grid-template-columns:1fr 1fr}
  .lottery-reference-machine h2{font-size:30px!important;text-align:center}
  .lottery-settings-page-panel .lottery-page-head h2,.lottery-manage-mode .lottery-page-head h2{font-size:25px}
  .lottery-inventory-fields label,.lottery-inventory-fields .lottery-weight-field{grid-template-columns:minmax(0,1fr) 82px}
  .lottery-inventory-fields input{width:82px}
}

/* 开奖礼花筒重绘：完整圆润筒身，并与左侧应援角色错开 */
.lottery-celebration .confetti-piece.left{left:66px}
.lottery-celebration .confetti-piece.right{right:66px}

/* 抽奖主界面固定在工作区内：中奖名单独立滚动，不再撑长整页 */
@media(min-width:901px){
  #view-lottery.active{height:100%;min-height:0;overflow:hidden!important}
  #lotteryScreenShell.lottery-reference-shell:not(.lottery-manage-mode):not(.lottery-settings-mode){height:100%;min-height:0;overflow:hidden!important}
  .lottery-center-panel[data-lottery-center-panel="draw"].active{display:grid;height:100%;min-height:0;grid-template-rows:minmax(0,1fr);overflow:hidden}
  .lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{height:100%;min-height:0;max-height:100%;align-items:stretch;overflow:hidden}
  .lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel,
  .lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{height:100%!important;min-height:0!important;max-height:100%;overflow:hidden}
  .lottery-reference-status .lottery-history{flex:1 1 auto;height:0;min-height:0;max-height:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#9b8ab8 transparent}
  .lottery-reference-status .lottery-history::-webkit-scrollbar{width:8px}
  .lottery-reference-status .lottery-history::-webkit-scrollbar-track{background:transparent}
  .lottery-reference-status .lottery-history::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#9b8ab8;background-clip:padding-box}
  .lottery-reference-status .lottery-history::-webkit-scrollbar-thumb:hover{background:#725e9d;background-clip:padding-box}
}
.lottery-celebration.active:before,.lottery-celebration.active:after{
  bottom:20px;width:50px;height:84px;box-sizing:border-box;
  border:4px solid rgba(255,255,255,.96);border-radius:24px 24px 17px 17px;
  background:radial-gradient(ellipse at 50% 8%,#4d376e 0 12%,#f8f2ff 13% 20%,transparent 21%),repeating-linear-gradient(145deg,#7650bd 0 11px,#ffd75c 11px 22px,#f07ca4 22px 33px);
  clip-path:none;box-shadow:inset 5px 0 0 rgba(255,255,255,.16),inset -5px 0 0 rgba(62,42,102,.1),0 9px 15px rgba(65,43,87,.22);
  filter:none;transform-origin:center bottom
}
.lottery-celebration.active:before{left:30px;transform:rotate(-18deg)}
.lottery-celebration.active:after{right:30px;transform:rotate(18deg)}
.lottery-reference-machine .asset-five{left:8%;bottom:11%}
@media(max-width:1100px){.lottery-reference-machine .asset-five{left:10%;bottom:10%}}
@media(max-width:900px){.lottery-celebration.active:before,.lottery-celebration.active:after{bottom:14px;width:40px;height:68px;border-width:3px}.lottery-celebration.active:before{left:18px}.lottery-celebration.active:after{right:18px}.lottery-celebration .confetti-piece.left{left:46px}.lottery-celebration .confetti-piece.right{right:46px}}

/* 参考橙金锥形礼花筒：透明矢量素材，左右镜像摆放 */
.lottery-celebration.active:before,.lottery-celebration.active:after{
  bottom:6px;width:112px;height:154px;border:0;border-radius:0;
  background:url("assets/lottery/confetti-popper.svg") center/contain no-repeat;
  box-shadow:none;filter:drop-shadow(0 8px 8px rgba(67,42,92,.18));clip-path:none
}
.lottery-celebration.active:before{left:8px;transform:rotate(-18deg)}
.lottery-celebration.active:after{right:8px;transform:scaleX(-1) rotate(-18deg)}
.lottery-celebration .confetti-piece.left{left:92px}
.lottery-celebration .confetti-piece.right{right:92px}
.lottery-reference-machine .asset-five{left:11%;bottom:14%}
@media(max-width:1100px){.lottery-reference-machine .asset-five{left:14%;bottom:13%}}
@media(max-width:900px){.lottery-celebration.active:before,.lottery-celebration.active:after{bottom:5px;width:78px;height:108px}.lottery-celebration.active:before{left:2px}.lottery-celebration.active:after{right:2px}.lottery-celebration .confetti-piece.left{left:62px}.lottery-celebration .confetti-piece.right{right:62px}}

/* 多轮抽奖与逐张揭晓 */
.lottery-winner-card{position:relative;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(560px,72%);padding:18px 28px 22px;border:1px solid transparent;border-radius:34px;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform,opacity,filter}
.lottery-winner-card.flip-in{animation:lotteryWinnerCardSpin .82s cubic-bezier(.18,.84,.26,1.12) both}
.lottery-reference-machine.winner .lottery-winner-card{border-color:rgba(255,255,255,.86);background:linear-gradient(145deg,rgba(255,255,255,.88),rgba(239,235,255,.76));box-shadow:0 22px 54px rgba(85,64,145,.22),inset 0 0 0 5px rgba(255,255,255,.42)}
.lottery-batch-bar{display:grid;grid-template-columns:minmax(145px,1.15fr) auto auto minmax(180px,1.3fr);align-items:center;justify-content:center;gap:10px 14px;margin-top:12px;padding:10px 14px;border:1px solid #d9d0ef;border-radius:17px;background:linear-gradient(135deg,#faf8ff,#f1edff);box-shadow:0 7px 18px rgba(91,68,152,.08)}
.lottery-batch-bar>div{display:flex;align-items:center;gap:9px;padding-right:14px;border-right:1px solid #ddd5ed;color:#59636c;font-size:13px;font-weight:900}
.lottery-batch-bar>div span{display:flex;align-items:center;gap:5px;color:#4e3f91}
.lottery-batch-bar input{width:62px;height:40px;padding:4px 6px;border:2px solid #9d86df;border-radius:11px;background:#fff;color:#34265f;text-align:center;font-size:20px;font-weight:1000;outline:none}
.lottery-batch-bar input:focus{border-color:#6f54c4;box-shadow:0 0 0 4px rgba(111,84,196,.14)}
.lottery-batch-bar>b{grid-column:1/-1;padding:9px 14px;border-radius:12px;background:#6f54c4;color:#fff;font-size:13px;letter-spacing:.02em;text-align:center;white-space:nowrap}
.lottery-warehouse-draw-select{min-width:0!important}
.lottery-warehouse-draw-select select{width:100%;min-width:0;height:40px;padding:5px 9px;border:1.5px solid #a995d9;border-radius:10px;color:#4e3f91;background:#fff;font-size:12px;font-weight:800;outline:none}
.lottery-sequence-mode-option{display:flex;align-items:center;gap:10px;min-width:180px;padding:7px 12px;border:1px solid #cfc2ed;border-radius:13px;color:#4d3b8a;background:#fff;cursor:pointer;transition:.18s}
.lottery-sequence-mode-option:hover{border-color:#9c82dc;background:#faf8ff}
.lottery-sequence-mode-option input{width:21px;height:21px;accent-color:#6f54c4;cursor:pointer}
.lottery-sequence-mode-option span{display:grid;gap:1px}
.lottery-sequence-mode-option b{font-size:13px;line-height:1.2}
.lottery-sequence-mode-option small{color:#83779e;font-size:9px;font-weight:700}
.lottery-sequence-mode-option:has(input:checked){border-color:#8e72d5;background:linear-gradient(135deg,#f2edff,#fff8d8);box-shadow:0 0 0 3px rgba(111,84,196,.1)}
.lottery-batch-bar input:disabled{border-color:#d1cadf;color:#aaa1b9;background:#eeeaf4;cursor:not-allowed}
.lottery-queue-controls{position:absolute;z-index:12;left:50%;bottom:20px;display:flex;align-items:center;gap:10px;transform:translateX(-50%);padding:8px;border:1px solid rgba(255,255,255,.8);border-radius:16px;background:rgba(255,255,255,.92);box-shadow:0 14px 34px rgba(70,48,128,.25);backdrop-filter:blur(9px)}
.lottery-queue-controls[hidden]{display:none}
.lottery-queue-controls>span{padding:9px 12px;border-radius:10px;background:#eee9ff;color:#59469d;font-size:12px;font-weight:900;white-space:nowrap}
.lottery-queue-controls>button{min-height:43px;padding:10px 20px;border:0;border-radius:11px;background:linear-gradient(110deg,#5a43b1,#8d69de);color:#fff;font-size:14px;font-weight:1000;box-shadow:0 7px 17px rgba(91,67,176,.3);cursor:pointer;white-space:nowrap}
.lottery-queue-controls>button:hover{transform:translateY(-1px);filter:brightness(1.08)}
.lottery-prize-highlight{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-width:330px;margin-top:7px;padding:13px 22px 14px;border:3px solid #ffad32;border-radius:20px;background:linear-gradient(110deg,#fff3a5,#ffd7e8 52%,#dfd4ff);box-shadow:0 12px 30px rgba(231,76,104,.25),0 0 0 5px rgba(255,255,255,.48)}
.lottery-prize-highlight>i{flex:0 0 auto;display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:#fff;color:#ff5e65;font-size:30px;font-style:normal;filter:drop-shadow(0 3px 3px rgba(102,55,112,.16));box-shadow:inset 0 0 0 2px rgba(255,164,61,.28)}
.lottery-prize-highlight>span{display:grid;justify-items:center;line-height:1.05;text-align:center}
.lottery-prize-highlight small{margin-bottom:3px;color:#9b536a;font-size:10px;font-weight:1000;letter-spacing:.18em}
.lottery-reference-machine .lottery-winner-card h2{font-size:clamp(23px,2.6vw,31px)!important}
.lottery-prize-highlight strong{color:#ed315a;font-size:clamp(35px,4vw,47px);font-weight:1000;letter-spacing:.02em;line-height:1.08;text-shadow:0 3px 0 rgba(255,255,255,.98)}
.lottery-prize-highlight em{margin-top:5px;color:#6d4bb3;font-size:11px;font-style:normal;font-weight:900}
@keyframes lotteryWinnerCardSpin{0%{opacity:0;transform:perspective(900px) rotateY(-100deg) scale(.72);filter:blur(5px)}55%{opacity:1;transform:perspective(900px) rotateY(14deg) scale(1.045);filter:blur(0)}78%{transform:perspective(900px) rotateY(-6deg) scale(.99)}100%{opacity:1;transform:perspective(900px) rotateY(0) scale(1)}}
@media(prefers-reduced-motion:reduce){.lottery-winner-card.flip-in{animation-duration:.18s}}
@media(max-width:760px){.lottery-batch-bar{display:grid;grid-template-columns:1fr 1fr}.lottery-batch-bar>div{justify-content:center;padding-right:0;border-right:0}.lottery-batch-bar>.lottery-sequence-mode-option{grid-column:1/-1;justify-content:center}.lottery-batch-bar>b{grid-column:1/-1;text-align:center}.lottery-winner-card{width:86%;padding-inline:12px}.lottery-prize-highlight{min-width:0;padding-inline:12px}.lottery-prize-highlight>i{width:40px;height:40px;font-size:25px}.lottery-queue-controls{bottom:12px;max-width:calc(100% - 20px)}.lottery-queue-controls>span{display:none}.lottery-queue-controls>button{white-space:normal}}

/* 账户中心：已兑换奖券与撤销 */
.lottery-account-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:18px;margin-left:auto}
.lottery-clear-account-btn{min-height:39px;padding:8px 13px;border:1px solid #e3aaa3;border-radius:11px;background:#fff0ed;color:#b7463c;font-size:12px;font-weight:1000;white-space:nowrap;cursor:pointer;transition:.16s}.lottery-clear-account-btn:hover:not(:disabled){border-color:#ca5b50;background:#c94f45;color:#fff;box-shadow:0 6px 14px rgba(185,64,54,.2);transform:translateY(-1px)}.lottery-clear-account-btn:disabled{opacity:.42;cursor:not-allowed}
.lottery-redeemed-toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid #c9c3d3;border-radius:12px;background:#f8f7fa;color:#4f5660;font-size:12px;font-weight:900;cursor:pointer;user-select:none}
.lottery-redeemed-toggle input{width:19px;height:19px;margin:0;accent-color:#7561ca;cursor:pointer}
.lottery-coupon.redeemed{border-color:#bfc3c8;background:linear-gradient(145deg,#e6e8ea,#f5f5f5);color:#696e74;box-shadow:none;filter:none}
.lottery-coupon.redeemed .count{background:#d4d7da;color:#5c6065}
.lottery-redeemed-badge{display:inline-flex;padding:4px 9px;border-radius:999px;background:#757b82;color:#fff;font-size:10px;font-weight:1000}
.lottery-redeemed-icon{display:grid;place-items:center;width:42px;height:42px;margin-top:12px;border-radius:12px;background:#d6d9dc;filter:grayscale(1);font-size:25px}
.lottery-coupon.redeemed h3{margin-top:8px;color:#60656a;text-decoration:line-through;text-decoration-thickness:2px}
.lottery-coupon.redeemed p{color:#777c81}
.lottery-undo-redemption{margin-top:8px;padding:9px 12px;border:2px solid #777d83;border-radius:10px;background:#fff;color:#555b61;font-size:11px;font-weight:1000;cursor:pointer}
.lottery-undo-redemption:hover{background:#646a70;color:#fff}
.lottery-undo-redemption:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:640px){.lottery-account-layout .panel-head{align-items:flex-start;flex-direction:column}.lottery-account-head-actions{width:100%;justify-content:space-between;margin-left:0}.lottery-redeemed-toggle{font-size:11px}}

/* 账户奖券改为紧凑横向排列 */
.lottery-manage-mode .lottery-account-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.lottery-coupon.compact{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:7px 12px;min-height:0;padding:11px 12px;border-radius:14px}
.lottery-coupon-line{grid-column:1;grid-row:1;display:flex;align-items:center;gap:9px;min-width:0;white-space:nowrap}
.lottery-manage-mode .lottery-coupon.compact h3{flex:0 1 auto;min-width:70px;margin:0;color:var(--ink);font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lottery-coupon.compact small{flex:0 1 auto;color:#7d8584;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lottery-coupon.compact .count{position:static;flex:0 0 auto;margin-left:auto;padding:3px 7px;background:rgba(255,255,255,.84);font-size:10px}
.lottery-coupon.compact>button{grid-column:2;grid-row:1;min-width:72px;margin:0;padding:9px 12px;font-size:12px;white-space:nowrap}
.lottery-coupon.compact .lottery-coupon-progress,.lottery-coupon.compact .lottery-coupon-pieces{grid-column:1/-1;grid-row:2;margin:1px 0 0;max-width:280px}
.lottery-coupon.compact .lottery-coupon-progress i{height:10px}
.lottery-coupon.compact .lottery-coupon-pieces i{height:15px}
.lottery-reward-label{flex:0 0 auto;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:1000;line-height:1;white-space:nowrap}
.lottery-reward-label.material{background:#fff0dc;color:#d15a09}
.lottery-reward-label.mental{background:#ffe5f0;color:#c52f70}
.lottery-reward-label.experience{background:#ece7ff;color:#6547c4}
.lottery-reward-label.redeemed-label{background:#d6d9dc;color:#5e6469}
.lottery-manage-mode .lottery-coupon.compact.redeemed h3{margin:0;color:#60656a}
.lottery-coupon.compact.redeemed>button{border-color:#777d83;background:#fff;color:#555b61}
.lottery-coupon.compact.redeemed>button:hover{background:#646a70;color:#fff}
.lottery-coupon-actions{grid-column:2;grid-row:1;display:flex;align-items:center;gap:6px}
.lottery-coupon-actions button{min-width:72px;margin:0;padding:9px 12px;font-size:12px;white-space:nowrap}
.lottery-coupon-actions [data-lottery-view-ticket]{border-color:#9485df;color:#654db9;background:#f4f1ff}
.lottery-coupon-actions [data-lottery-view-ticket]:hover,.lottery-coupon-actions [data-lottery-view-ticket]:focus-visible{border-color:#7567e8;color:#fff;background:#7567e8;outline:none}
.lottery-coupon-actions .lottery-remove-account-ticket{min-width:62px;border:1px solid #e1aaa4;border-radius:10px;background:#fff0ed;color:#b5483e;font-weight:1000}.lottery-coupon-actions .lottery-remove-account-ticket:hover,.lottery-coupon-actions .lottery-remove-account-ticket:focus-visible{border-color:#c95349;background:#c95349;color:#fff;outline:none}
@media(max-width:900px){.lottery-manage-mode .lottery-account-grid{grid-template-columns:1fr}}
@media(max-width:560px){.lottery-coupon.compact{grid-template-columns:minmax(0,1fr) auto}.lottery-coupon-line{gap:6px}.lottery-coupon.compact small{display:none}.lottery-reward-label{padding-inline:6px}.lottery-coupon.compact>button,.lottery-coupon-actions button{min-width:64px;padding-inline:9px}.lottery-coupon-actions{align-items:stretch;flex-direction:column}}

/* 高级设置：左侧抽奖条件，右侧自定义名单 */
.lottery-settings-page{grid-template-columns:minmax(300px,.68fr) minmax(520px,1.32fr)}
.lottery-settings-page .lottery-settings-left{overflow:visible}
.lottery-settings-page .lottery-settings-right{overflow:hidden}
.lottery-settings-page .lottery-settings-right>.lottery-roster-picker{display:flex;flex:1;flex-direction:column;min-height:0;margin:0;padding:18px}
.lottery-settings-page .lottery-settings-right .lottery-student-checklist{flex:1;min-height:300px;max-height:573px;overflow:auto;scroll-padding-bottom:10px}
.lottery-settings-page .lottery-roster-picker>.lottery-field-hint{display:flex;align-items:flex-start;gap:9px;margin-top:12px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--sage) 28%,var(--line));border-left:4px solid var(--sage);border-radius:10px;background:color-mix(in srgb,var(--sage-soft) 62%,var(--panel));color:color-mix(in srgb,var(--sage-dark) 88%,var(--ink));font-size:13px;font-weight:700;line-height:1.65}
.lottery-settings-page .lottery-roster-picker>.lottery-field-hint:before{content:"提示";flex:0 0 auto;margin-top:1px;padding:2px 6px;border-radius:999px;background:var(--sage);color:#fff;font-size:10px;font-weight:900;line-height:1.5}
.lottery-settings-page .lottery-settings-left .lottery-settings-actions{margin-top:auto}
.lottery-settings-page .lottery-settings-left .lottery-settings-actions #lotterySaveBtn{width:100%;min-height:50px}
.lottery-prize-editor-hidden,.lottery-prize-editor-hidden[hidden]{display:none!important}
@media(max-width:900px){.lottery-settings-page{grid-template-columns:1fr;overflow-y:auto}.lottery-settings-page .lottery-settings-left,.lottery-settings-page .lottery-settings-right{overflow:visible}.lottery-settings-page .lottery-settings-right>.lottery-roster-picker{min-height:520px}.lottery-settings-page .lottery-settings-left .lottery-settings-actions{margin-top:0}}

/* 奖券仓库：场景化组合现有奖券，并在抽奖区直接切换 */
.lottery-batch-bar{flex-wrap:wrap}
.lottery-batch-bar>.lottery-warehouse-draw-select{gap:8px}
.lottery-warehouse-draw-select select{width:190px;height:40px;padding:7px 34px 7px 11px;border:2px solid #9d86df;border-radius:11px;color:#433477;background:#fff;font-size:13px;font-weight:900;outline:none}
.lottery-warehouse-draw-select select:focus{border-color:#6f54c4;box-shadow:0 0 0 4px rgba(111,84,196,.14)}
.lottery-page-head p{max-width:680px;margin:6px 0 0;color:var(--muted);font-size:12px}
.lottery-warehouse-layout{flex:1;display:grid;grid-template-columns:285px minmax(0,1fr);gap:14px;min-height:0;overflow:hidden}
.lottery-warehouse-list{min-height:0;padding:12px;overflow-y:auto;scrollbar-width:thin}
.lottery-warehouse-option{width:100%;display:grid;grid-template-columns:44px minmax(0,1fr) auto;grid-template-areas:"icon title arrow" "icon meta arrow";align-items:center;gap:2px 10px;margin-bottom:9px;padding:12px;border:1px solid var(--line);border-radius:14px;color:var(--ink);background:var(--panel);text-align:left;transition:.18s}
.lottery-warehouse-option>span{grid-area:icon;display:grid;width:42px;height:42px;place-items:center;border-radius:12px;background:linear-gradient(145deg,#eee8ff,#e7f6ff);font-size:22px}
.lottery-warehouse-option>b{grid-area:title;overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}
.lottery-warehouse-option>small{grid-area:meta;color:var(--muted);font-size:10px}
.lottery-warehouse-option>i{grid-area:arrow;color:#8d7ab9;font-size:24px;font-style:normal}
.lottery-warehouse-option:hover,.lottery-warehouse-option.active{border-color:#9178d6;background:linear-gradient(135deg,#f1ecff,#fff);box-shadow:0 7px 18px rgba(92,68,154,.1);transform:translateY(-1px)}
.lottery-warehouse-option.active>span{color:#fff;background:linear-gradient(135deg,#7258c6,#9d74df)}
.lottery-warehouse-editor{display:flex;flex-direction:column;min-width:0;min-height:0;padding:16px;overflow:hidden}
.lottery-warehouse-editor-head{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:13px;border-bottom:1px solid var(--line)}
.lottery-warehouse-editor-head h3{margin:4px 0 3px;font-size:22px}
.lottery-warehouse-editor-head p{margin:0;color:var(--muted);font-size:11px}
.lottery-warehouse-editor-head>div:last-child,.lottery-warehouse-toolbar>div{display:flex;gap:8px;flex-wrap:wrap}
.lottery-warehouse-toolbar{flex:0 0 auto;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:12px 0}
.lottery-warehouse-toolbar label{flex:1;max-width:420px;color:var(--muted);font-size:11px;font-weight:900}
.lottery-warehouse-toolbar input{display:block;width:100%;height:40px;margin-top:5px;padding:8px 12px;border:1px solid var(--line);border-radius:11px;background:var(--theme-input);font-size:13px;outline:none}
.lottery-warehouse-toolbar input:focus{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}
.lottery-warehouse-toolbar .lottery-warehouse-checked-filter{flex:0 0 auto;display:flex;align-items:center;gap:8px;min-width:132px;max-width:none;height:42px;margin:0;padding:0 13px;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:var(--panel);font-size:13px;cursor:pointer;transition:.18s}
.lottery-warehouse-toolbar .lottery-warehouse-checked-filter:hover{border-color:#9c86d7;background:#f8f5ff}
.lottery-warehouse-toolbar .lottery-warehouse-checked-filter.active{border-color:#8064ce;color:#6145b4;background:#eee8ff;box-shadow:0 0 0 3px rgba(113,86,196,.1)}
.lottery-warehouse-toolbar .lottery-warehouse-checked-filter input{display:block;flex:0 0 auto;width:19px;height:19px;margin:0;padding:0;border:0;border-radius:5px;accent-color:#7156c4;box-shadow:none;cursor:pointer}
.lottery-warehouse-toolbar .lottery-warehouse-checked-filter span{white-space:nowrap}
.lottery-warehouse-ticket-picker{flex:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:10px;min-height:0;padding:2px 5px 8px 1px;overflow-y:auto;scrollbar-width:thin}
.lottery-warehouse-ticket{position:relative;display:grid;grid-template-columns:25px 42px minmax(0,1fr) 92px;grid-template-areas:"check icon copy stock";align-items:center;gap:9px;min-height:88px;padding:11px;border:1px solid var(--line);border-radius:14px;background:var(--panel);cursor:pointer;transition:.16s}
.lottery-warehouse-ticket[hidden]{display:none!important}
.lottery-warehouse-ticket:hover{border-color:#b09ee4;box-shadow:0 6px 16px rgba(83,63,139,.08)}
.lottery-warehouse-ticket:has(input:checked){border-color:#8b71d4;background:linear-gradient(135deg,#f0ebff,#fff);box-shadow:inset 0 0 0 1px rgba(117,91,194,.12)}
.lottery-warehouse-ticket>input{grid-area:check;width:21px;height:21px;margin:0;accent-color:#7156c4}
.lottery-warehouse-ticket-icon{grid-area:icon;display:grid;width:40px;height:40px;place-items:center;border-radius:12px;background:linear-gradient(145deg,#eee8ff,#e7f6ff);font-size:22px}
.lottery-warehouse-ticket>span:nth-of-type(2){grid-area:copy;min-width:0}
.lottery-warehouse-ticket b{display:block;overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}
.lottery-warehouse-ticket small{display:block;margin-top:5px;overflow:hidden;color:var(--muted);font-size:12px;font-weight:700;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}
.lottery-warehouse-stock{grid-area:stock;display:flex;align-items:center;justify-self:end;gap:4px}.lottery-warehouse-stock em{color:#75649b;font-size:11px;font-style:normal;font-weight:900;white-space:nowrap}.lottery-warehouse-stock>.lottery-warehouse-stock-badge{display:grid;width:42px;height:42px;place-items:center;border:3px solid rgba(255,255,255,.94);border-radius:50%;background:linear-gradient(145deg,#9a80e8,#6950bd);color:#fff;font-size:16px;font-style:normal;font-weight:1000;line-height:1;box-shadow:0 6px 14px rgba(91,67,176,.25),0 0 0 2px rgba(126,101,207,.14)}
.lottery-warehouse-actions{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:12px;border-top:1px solid var(--line)}
.lottery-warehouse-actions>span{color:var(--muted);font-size:10px}
.lottery-warehouse-actions button{min-width:170px}
.lottery-warehouse-name-form p{margin:0;color:var(--muted);font-size:12px}
@media(max-width:1180px){.lottery-warehouse-ticket-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.lottery-warehouse-layout{grid-template-columns:240px minmax(0,1fr)}}
@media(max-width:900px){.lottery-warehouse-layout{display:block;overflow:visible}.lottery-warehouse-list{max-height:280px;margin-bottom:12px}.lottery-warehouse-editor{height:auto;overflow:visible}.lottery-warehouse-ticket-picker{grid-template-columns:1fr;max-height:560px;overflow-y:auto}.lottery-warehouse-editor-head,.lottery-warehouse-toolbar,.lottery-warehouse-actions{align-items:stretch;flex-direction:column}.lottery-warehouse-toolbar label{max-width:none}.lottery-warehouse-actions button{width:100%;min-width:0}.lottery-batch-bar>.lottery-warehouse-draw-select{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(0,1fr);justify-content:stretch}.lottery-warehouse-draw-select select{width:100%}}

/* 中奖名单：查看奖券按钮与放大奖券弹窗 */
.lottery-reference-status .lottery-history-item{grid-template-columns:52px minmax(0,1fr) 78px}
.lottery-reference-status .lottery-history-content{align-items:center;text-align:center}
.lottery-history-actions{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.lottery-history-view{display:inline-flex;width:74px;height:34px;align-items:center;justify-content:center;gap:5px;padding:0 7px;border:1px solid color-mix(in srgb,var(--tone,var(--sage)) 30%,var(--line));border-radius:11px;background:color-mix(in srgb,var(--tone-soft,var(--sage-soft)) 62%,var(--panel));color:color-mix(in srgb,var(--tone,var(--sage)) 78%,var(--ink));font-size:11px;font-weight:900;line-height:1;white-space:nowrap;overflow:visible;transition:border-color .18s ease,background .18s ease,color .18s ease,transform .18s ease}
.lottery-history-view-icon{display:block;width:12px;height:12px;flex:0 0 12px;overflow:visible;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.lottery-history-view:hover,.lottery-history-view:focus-visible{border-color:var(--tone,var(--sage));background:var(--tone,var(--sage));color:#fff;outline:none}
.lottery-history-view:hover{transform:translateY(-1px)}
.lottery-history-actions .lottery-history-delete{width:27px;height:25px;font-size:19px}
.modal.lottery-ticket-preview-modal{width:min(620px,calc(100vw - 32px));padding:0;overflow:hidden;border:1px solid color-mix(in srgb,var(--sage) 22%,var(--line));border-radius:26px}
.lottery-ticket-preview-modal .modal-head{margin:0;padding:20px 24px 17px;background:linear-gradient(135deg,color-mix(in srgb,var(--sage-soft) 78%,var(--panel)),color-mix(in srgb,var(--peach-soft) 32%,var(--panel)))}
.lottery-ticket-preview-modal #modalBody{padding:24px}
.lottery-ticket-preview{--ticket-a:#6f8fc2;--ticket-b:#ddebff;position:relative;min-height:320px;padding:24px 30px 22px;border:3px solid var(--ticket-a);border-radius:26px;background:radial-gradient(circle at 12% 8%,rgba(255,255,255,.92),transparent 30%),linear-gradient(145deg,var(--ticket-b),var(--panel) 70%);text-align:center;box-shadow:0 18px 45px color-mix(in srgb,var(--ticket-a) 20%,transparent),inset 0 0 0 7px rgba(255,255,255,.55);overflow:hidden}
.lottery-ticket-preview.team{--ticket-a:#8068c4;--ticket-b:#eee8ff}.lottery-ticket-preview.class{--ticket-a:#cb9a34;--ticket-b:#fff1b7}.lottery-ticket-preview.rare{--ticket-a:#d89924;--ticket-b:#fff0a5;background:radial-gradient(circle at 18% 8%,#fff 0,transparent 29%),linear-gradient(135deg,#fff5b8,#ffe0a7 48%,#f3ddff)}
.lottery-ticket-preview:before,.lottery-ticket-preview:after{content:"";position:absolute;top:50%;width:30px;height:58px;border:3px solid var(--ticket-a);border-radius:50%;background:var(--panel);transform:translateY(-50%)}
.lottery-ticket-preview:before{left:-19px}.lottery-ticket-preview:after{right:-19px}
.lottery-ticket-preview-top{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--ticket-a);font-size:10px;font-weight:1000;letter-spacing:.14em}
.lottery-ticket-preview-top b{padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.72);letter-spacing:0}
.lottery-ticket-preview-icon{display:grid;width:82px;height:82px;place-items:center;margin:22px auto 10px;border:2px solid rgba(255,255,255,.9);border-radius:24px;background:rgba(255,255,255,.76);font-size:43px;box-shadow:0 10px 25px color-mix(in srgb,var(--ticket-a) 18%,transparent)}
.lottery-ticket-preview>small{color:var(--ticket-a);font-size:10px;font-weight:1000;letter-spacing:.18em}
.lottery-ticket-preview h3{margin:5px 0 7px;color:var(--ink);font-size:clamp(27px,5vw,38px);line-height:1.15}
.lottery-ticket-preview>p{display:inline-flex;margin:0;padding:7px 13px;border-radius:999px;background:rgba(255,255,255,.76);color:var(--ticket-a);font-size:12px;font-weight:900}
.lottery-ticket-preview-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.lottery-ticket-preview-meta span{padding:10px;border:1px solid color-mix(in srgb,var(--ticket-a) 22%,var(--line));border-radius:13px;background:rgba(255,255,255,.6);color:var(--muted);font-size:9px}
.lottery-ticket-preview-meta b{display:block;margin-top:4px;color:var(--ink);font-size:13px}
.lottery-ticket-preview footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;padding-top:12px;border-top:1px dashed color-mix(in srgb,var(--ticket-a) 40%,var(--line));color:var(--muted);font-size:9px}.lottery-ticket-preview footer b{color:var(--ink);font-size:10px}
.lottery-ticket-preview-actions{justify-content:center}.lottery-ticket-preview-actions button{min-width:170px}
@media(max-width:520px){.lottery-reference-status .lottery-history-item{grid-template-columns:48px minmax(0,1fr) 70px}.lottery-history-view{width:66px;gap:4px;padding:0 5px}.lottery-history-view-icon{width:11px;height:11px;flex-basis:11px}.lottery-ticket-preview-modal #modalBody{padding:16px}.lottery-ticket-preview{min-height:290px;padding:20px 18px}.lottery-ticket-preview-meta{grid-template-columns:1fr}.lottery-ticket-preview-icon{width:70px;height:70px;margin-top:17px;font-size:36px}.lottery-ticket-preview h3{font-size:26px}}

/* 放大奖券：参考实体奖励券的横向票券布局，使用本地蛋仔素材 */
.modal.lottery-ticket-preview-modal{width:min(1040px,calc(100vw - 36px));max-height:96vh}
.lottery-ticket-preview-modal .modal-head{padding:18px 28px 15px}
.lottery-ticket-preview-modal .modal-head h3{font-size:25px}
.lottery-ticket-preview-modal #modalBody{padding:24px 28px 22px}
.lottery-ticket-preview.ticket-art{min-height:510px;padding:25px 32px 22px;border:12px solid transparent;border-radius:32px;background:linear-gradient(145deg,color-mix(in srgb,var(--ticket-b) 72%,#fff),#fffdf7 70%) padding-box,repeating-linear-gradient(135deg,var(--ticket-a) 0 18px,#ffd75d 18px 36px,#f18aa9 36px 54px,#73cbd0 54px 72px) border-box;box-shadow:0 25px 60px color-mix(in srgb,var(--ticket-a) 26%,transparent),inset 0 0 0 5px rgba(255,255,255,.78)}
.lottery-ticket-preview.ticket-art:before,.lottery-ticket-preview.ticket-art:after{width:38px;height:76px;border-width:4px;background:var(--panel)}
.lottery-ticket-preview.ticket-art:before{left:-31px}.lottery-ticket-preview.ticket-art:after{right:-31px}
.ticket-art .lottery-ticket-preview-top{position:relative;z-index:2;padding-bottom:14px;border-bottom:2px dashed color-mix(in srgb,var(--ticket-a) 42%,var(--line));font-size:13px;letter-spacing:.18em}
.ticket-art .lottery-ticket-preview-top b{padding:7px 14px;font-size:13px}
.lottery-ticket-art-body{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:center;gap:30px;min-height:355px;padding:20px 20px 14px}
.lottery-ticket-art-copy{text-align:left}
.lottery-ticket-art-copy>small{display:block;color:var(--ticket-a);font-size:15px;font-weight:1000;letter-spacing:.12em}
.lottery-ticket-preview.ticket-art h3{margin:11px 0 16px;color:#202825;font-family:"STKaiti","KaiTi","FangSong","Microsoft YaHei",serif;font-size:clamp(54px,6.3vw,76px);font-weight:1000;letter-spacing:.06em;line-height:1.08;text-shadow:3px 3px 0 rgba(255,255,255,.96),6px 6px 0 color-mix(in srgb,var(--ticket-a) 20%,transparent);-webkit-text-stroke:.5px color-mix(in srgb,var(--ticket-a) 48%,#1d2521)}
.lottery-ticket-art-copy>p{display:inline-flex;margin:0;padding:9px 17px;border:2px solid color-mix(in srgb,var(--ticket-a) 26%,var(--line));border-radius:999px;background:rgba(255,255,255,.8);color:var(--ticket-a);font-size:16px;font-weight:1000}
.ticket-art .lottery-ticket-preview-meta{max-width:520px;gap:12px;margin-top:20px}
.ticket-art .lottery-ticket-preview-meta span{padding:12px 14px;text-align:left;font-size:12px}
.ticket-art .lottery-ticket-preview-meta b{margin-top:5px;font-size:18px}
.lottery-ticket-egg{position:relative;width:295px;height:295px;margin:0;display:grid;place-items:center;border:3px solid rgba(255,255,255,.94);border-radius:40px;background:radial-gradient(circle,#fff 0 42%,color-mix(in srgb,var(--ticket-b) 74%,#fff) 70%);box-shadow:0 18px 38px color-mix(in srgb,var(--ticket-a) 20%,transparent),inset 0 0 0 8px rgba(255,255,255,.52);overflow:hidden}
.lottery-ticket-egg:before{content:"";position:absolute;inset:14px;border:2px dashed color-mix(in srgb,var(--ticket-a) 38%,transparent);border-radius:29px}
.lottery-ticket-egg img{position:relative;z-index:1;width:258px;height:258px;object-fit:contain;filter:drop-shadow(0 14px 12px rgba(61,50,86,.2))}
.lottery-ticket-egg i{position:absolute;z-index:2;right:15px;bottom:14px;width:55px;height:55px;display:grid;place-items:center;border:3px solid #fff;border-radius:17px;background:var(--ticket-a);color:#fff;font-size:29px;font-style:normal;box-shadow:0 8px 18px color-mix(in srgb,var(--ticket-a) 34%,transparent)}
.lottery-ticket-preview.ticket-art footer{display:grid;grid-template-columns:minmax(0,1fr) 170px auto;align-items:center;gap:18px;margin:0;padding:14px 12px 0;border-top:2px dashed color-mix(in srgb,var(--ticket-a) 42%,var(--line));font-size:12px}
.lottery-ticket-preview.ticket-art footer b{font-family:Consolas,monospace;font-size:15px;letter-spacing:.12em}
.lottery-ticket-light{position:absolute;z-index:8;top:-28%;bottom:-28%;left:-18%;width:24%;pointer-events:none;background:linear-gradient(100deg,transparent 4%,rgba(255,255,255,.16) 25%,rgba(255,255,255,.94) 48%,rgba(173,224,255,.48) 62%,rgba(255,218,239,.24) 76%,transparent 96%);filter:blur(1.5px);mix-blend-mode:screen;transform:skewX(-17deg);animation:lotteryTicketLightSweep 4.2s cubic-bezier(.4,0,.2,1) infinite}.lottery-ticket-light:after{content:"";position:absolute;inset:0 42%;background:rgba(255,255,255,.92);box-shadow:0 0 24px 10px rgba(255,255,255,.36)}@keyframes lotteryTicketLightSweep{0%{opacity:1;transform:translateX(0) skewX(-17deg)}46%{opacity:.94;transform:translateX(520%) skewX(-17deg)}53%,100%{opacity:0;transform:translateX(520%) skewX(-17deg)}}@media(prefers-reduced-motion:reduce){.lottery-ticket-light{display:none}}
.ticket-art .lottery-ticket-preview-meta span{color:color-mix(in srgb,var(--ticket-a) 70%,#26302c);font-size:16px;font-weight:800;line-height:1.25}.ticket-art .lottery-ticket-preview-meta b{margin-top:7px;font-size:21px;line-height:1.25}.lottery-ticket-preview.ticket-art footer>span{color:var(--ticket-a);font-size:17px;font-weight:1000;line-height:1.35}@supports ((-webkit-background-clip:text) or (background-clip:text)){.lottery-ticket-preview.ticket-art footer>span{background:linear-gradient(90deg,var(--ticket-a),#e05278 55%,#d48b28);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent}}
.lottery-ticket-barcode{width:170px;height:45px;background:repeating-linear-gradient(90deg,#19201d 0 3px,transparent 3px 6px,#19201d 6px 8px,transparent 8px 12px,#19201d 12px 17px,transparent 17px 20px);border:8px solid rgba(255,255,255,.7);border-radius:5px;box-shadow:0 0 0 1px color-mix(in srgb,var(--ticket-a) 22%,var(--line))}
.lottery-ticket-barcode i{display:none}
.lottery-ticket-preview-actions{margin-top:18px;padding-top:0;border-top:0}
.lottery-ticket-preview-actions button{min-width:220px;padding:13px 24px;font-size:15px}
.lottery-print-ticket-btn{border-color:#8a72d7;color:#6349b5;background:#f4f0ff}.lottery-print-ticket-btn:hover{border-color:#755bc8;color:#fff;background:#755bc8}
@media(max-width:760px){.modal.lottery-ticket-preview-modal{width:min(620px,calc(100vw - 20px))}.lottery-ticket-preview-modal #modalBody{padding:14px}.lottery-ticket-preview.ticket-art{min-height:0;padding:17px 16px 15px;border-width:8px}.lottery-ticket-art-body{grid-template-columns:1fr;gap:12px;padding:15px 4px}.lottery-ticket-art-copy{text-align:center}.lottery-ticket-preview.ticket-art h3{font-size:clamp(38px,12vw,54px)}.lottery-ticket-art-copy>p{font-size:13px}.lottery-ticket-egg{width:190px;height:190px;margin:auto}.lottery-ticket-egg img{width:168px;height:168px}.lottery-ticket-preview.ticket-art footer{grid-template-columns:1fr auto}.lottery-ticket-barcode{display:none}.ticket-art .lottery-ticket-preview-meta span{text-align:center}.ticket-art .lottery-ticket-preview-top{font-size:10px}}

@media print{
  @page{size:landscape;margin:0}
  html,body{width:100%!important;height:100%!important;margin:0!important;padding:0!important}
  body.printing-lottery-ticket{background:#fff!important}
  body.printing-lottery-ticket> :not(#modalBackdrop){display:none!important}
  body.printing-lottery-ticket #modalBackdrop{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;display:grid!important;place-items:center!important;padding:10mm!important;background:#fff!important;backdrop-filter:none!important}
  body.printing-lottery-ticket #modalBackdrop>.modal{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;display:grid!important;place-items:center!important;margin:0!important;padding:0!important;border:0!important;background:#fff!important;box-shadow:none!important;overflow:visible!important}
  body.printing-lottery-ticket .modal-head,body.printing-lottery-ticket .lottery-ticket-preview-actions{display:none!important}
  body.printing-lottery-ticket #modalBody{width:100%!important;height:100%!important;display:grid!important;place-items:center!important;padding:0!important}
  body.printing-lottery-ticket .lottery-ticket-preview.ticket-art{width:250mm!important;max-width:calc(100vw - 20mm)!important;min-height:510px!important;margin:auto!important;padding:25px 32px 22px!important;border-width:12px!important;break-inside:avoid;box-shadow:none!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-lottery-ticket .lottery-ticket-art-body{grid-template-columns:minmax(0,1fr) 300px!important;align-items:center!important;gap:30px!important;min-height:355px!important;padding:20px 20px 14px!important}
  body.printing-lottery-ticket .lottery-ticket-art-copy{text-align:left!important}
  body.printing-lottery-ticket .lottery-ticket-preview.ticket-art h3{font-size:60px!important}
  body.printing-lottery-ticket .lottery-ticket-art-copy>p{font-size:16px!important}
  body.printing-lottery-ticket .lottery-ticket-egg{width:295px!important;height:295px!important;margin:0!important}
  body.printing-lottery-ticket .lottery-ticket-egg img{width:258px!important;height:258px!important}
  body.printing-lottery-ticket .ticket-art .lottery-ticket-preview-meta span{text-align:left!important}
  body.printing-lottery-ticket .ticket-art .lottery-ticket-preview-top{font-size:13px!important}
  body.printing-lottery-ticket .lottery-ticket-preview.ticket-art footer{display:grid!important;grid-template-columns:minmax(0,1fr) 170px auto!important;gap:18px!important}
  body.printing-lottery-ticket .lottery-ticket-barcode{display:block!important}
  body.printing-lottery-ticket .lottery-ticket-light{display:none!important}
}

/* 批量抽奖与仓库选择迁入高级设置，汇总紫色长条不再显示 */
#lotteryBatchSummary{display:none!important}
.lottery-settings-page .lottery-advanced-batch-settings{grid-template-columns:1fr 1fr;gap:12px;margin-top:18px;padding:15px;border-radius:15px;box-shadow:none}
.lottery-settings-page .lottery-advanced-batch-settings>.lottery-warehouse-draw-select{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;padding:0 0 13px;border-right:0;border-bottom:1px solid #ddd5ed}
.lottery-settings-page .lottery-advanced-batch-settings>.lottery-warehouse-draw-select select{width:100%}
.lottery-settings-page .lottery-advanced-batch-settings>div:not(.lottery-warehouse-draw-select){justify-content:space-between;padding:10px 12px;border:1px solid #ddd5ed;border-radius:12px;background:var(--panel)}
.lottery-settings-page .lottery-advanced-batch-settings>div:nth-of-type(2){border-right:1px solid #ddd5ed}
.lottery-settings-page .lottery-advanced-batch-settings>.lottery-sequence-mode-option{grid-column:1/-1;justify-content:center;min-height:58px}
@media(max-width:560px){.lottery-settings-page .lottery-advanced-batch-settings{grid-template-columns:1fr}.lottery-settings-page .lottery-advanced-batch-settings>.lottery-warehouse-draw-select,.lottery-settings-page .lottery-advanced-batch-settings>.lottery-sequence-mode-option{grid-column:auto}}

/* 学生名单：纵向表格视图 */
#view-students .student-table-wrap{min-width:0;min-height:0;height:100%;border:1px solid var(--line);border-radius:16px;background:var(--panel);box-shadow:inset 0 1px 0 rgba(255,255,255,.7);overflow:auto;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--sage) 48%,var(--line)) transparent}
#view-students .student-table{width:100%;min-width:1260px;border-collapse:separate;border-spacing:0;table-layout:fixed;background:var(--panel)}
#view-students .student-table th{position:sticky;top:0;z-index:3;padding:13px 16px;border-bottom:2px solid color-mix(in srgb,var(--sage) 35%,var(--line));background:color-mix(in srgb,var(--sage-soft) 68%,var(--panel));color:var(--sage-dark);font-size:13px;font-weight:900;text-align:center;letter-spacing:.04em}
#view-students .student-sort-heading{display:inline-flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:5px 8px;border:0;border-radius:8px;background:transparent;color:var(--sage-dark);font:inherit;letter-spacing:inherit;cursor:pointer}#view-students .student-sort-heading:hover{background:color-mix(in srgb,var(--sage) 13%,transparent);color:var(--ink)}#view-students .student-sort-heading.active{color:var(--sage-dark);background:color-mix(in srgb,var(--sage) 18%,transparent)}#view-students .student-sort-heading>span:not(.button-leading-icon){font-size:10px;opacity:.58}#view-students .student-sort-heading.active>span:not(.button-leading-icon){opacity:1;color:var(--sage)}#view-students .student-sort-heading .button-leading-icon{display:none}
#view-students .student-table td{height:58px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--panel);font-size:13px;text-align:center;vertical-align:middle;white-space:normal}
#view-students .student-table tbody tr{cursor:pointer;outline:none;transition:background .15s,box-shadow .15s}
#view-students .student-table tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--theme-tint) 48%,var(--panel))}
#view-students .student-table tbody tr:hover td,#view-students .student-table tbody tr:focus td{background:color-mix(in srgb,var(--sage-soft) 70%,var(--panel));box-shadow:inset 0 1px 0 color-mix(in srgb,var(--sage) 22%,transparent),inset 0 -1px 0 color-mix(in srgb,var(--sage) 22%,transparent)}
#view-students .student-col-id{width:150px}#view-students .student-col-name{width:140px}#view-students .student-col-gender{width:90px}#view-students .student-col-team{width:120px}#view-students .student-col-basic{width:auto}#view-students .student-col-growth{width:390px}
#view-students .student-id-cell b{display:block;color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums}#view-students .student-id-cell small{display:block;margin-top:3px;color:var(--muted);font-size:10px;text-align:center}
#view-students .student-name-cell strong{font-size:15px;font-weight:900}
#view-students .student-table-gender{display:inline-flex;min-width:40px;justify-content:center;padding:4px 9px;border-radius:999px;font-size:11px;font-weight:900}.student-table-gender.male{background:#e7f1ff;color:#376fa8}.student-table-gender.female{background:#ffe9f1;color:#b44872}
#view-students .student-table-team{display:inline-flex;min-width:58px;justify-content:center;padding:5px 9px;border:1px solid color-mix(in srgb,var(--team-color) 38%,transparent);border-radius:999px;background:var(--team-soft);color:var(--team-color);font-size:11px;font-weight:900}
#view-students .student-basic-cell{overflow:hidden}#view-students .student-table-tags{display:flex;align-items:center;justify-content:center;gap:5px;flex-wrap:wrap}#view-students .student-table-tag{display:inline-flex;padding:4px 7px;border-radius:999px;background:var(--tone-soft,var(--sage-soft));color:var(--tone,var(--sage-dark));font-size:10px;font-weight:800}.student-table-tag.interest:before{content:"兴趣·";opacity:.65}#view-students .student-basic-cell p{margin:6px 0 0;color:var(--muted);font-size:11px;line-height:1.5;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#view-students .student-table-empty{color:var(--muted);font-size:11px}#view-students .student-table-empty-state{height:180px;color:var(--muted);text-align:center}
#view-students .student-note-row{min-width:0}#view-students .student-note-row p[hidden]{display:none}#view-students .student-basic-heading{display:flex;align-items:center;justify-content:center;gap:14px}#view-students .student-basic-heading button{display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:0 0 auto;min-height:34px;padding:7px 15px;border:2px solid color-mix(in srgb,var(--sage) 58%,var(--line));border-radius:999px;background:var(--panel);box-shadow:0 3px 10px color-mix(in srgb,var(--sage) 18%,transparent);color:var(--sage-dark);font-size:12px;font-weight:900;letter-spacing:0}#view-students .student-basic-heading button:before{content:"◉";font-size:16px;line-height:1}#view-students .student-basic-heading button[aria-expanded="false"]:before{content:"⊘"}#view-students .student-basic-heading button:hover{border-color:var(--sage);background:var(--sage);color:#fff;transform:translateY(-1px)}
#view-students .student-growth-cell{padding:9px 12px;text-align:left}#view-students .student-growth-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;color:var(--muted);font-size:10px}#view-students .student-growth-head button{display:grid;place-items:center;flex:0 0 26px;width:26px;height:26px;padding:0;border:1px solid color-mix(in srgb,var(--sage) 40%,var(--line));border-radius:50%;background:var(--panel);color:var(--sage-dark);font-size:16px;font-weight:900}#view-students .student-growth-head button:hover{background:var(--sage);color:#fff}#view-students .student-growth-entry{padding:6px 8px;border-left:3px solid var(--tone,var(--sage));border-radius:6px;background:color-mix(in srgb,var(--tone-soft,var(--sage-soft)) 58%,var(--panel));text-align:left}#view-students .student-growth-entry+.student-growth-entry{margin-top:5px}#view-students .student-growth-entry>div{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--tone-ink,var(--sage-dark));font-size:9px}#view-students .student-growth-entry b{display:block;margin-top:2px;color:var(--ink);font-size:11px}#view-students .student-growth-entry p{display:-webkit-box;margin:2px 0 0;overflow:hidden;color:var(--muted);font-size:10px;line-height:1.4;text-align:left;-webkit-box-orient:vertical;-webkit-line-clamp:2}#view-students .student-growth-empty{display:block;padding:7px 0;color:var(--muted);font-size:10px;text-align:left}#view-students .student-growth-more{display:block;margin-top:5px;color:var(--sage-dark);font-size:9px}
@media(max-width:820px){#view-students .student-table-wrap{height:auto;max-height:none;border-radius:13px}#view-students .student-table{min-width:1120px}#view-students .student-table th{padding:11px 12px}#view-students .student-table td{height:54px;padding:9px 12px}#view-students .student-col-id{width:130px}#view-students .student-col-name{width:120px}#view-students .student-col-gender{width:75px}#view-students .student-col-team{width:100px}}

/* 奖券账户名单：1–8 团队使用固定的独立色标 */
.lottery-account-option .lottery-team-label{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:62px;
  padding:4px 8px;
  border:1px solid color-mix(in srgb,var(--team-color) 28%,transparent);
  border-radius:999px;
  background:var(--team-soft);
  color:var(--team-color);
  font-weight:900;
  line-height:1.2;
  white-space:nowrap
}
.lottery-account-option.active .lottery-team-label{
  border-color:color-mix(in srgb,var(--team-color) 42%,transparent);
  background:color-mix(in srgb,var(--team-soft) 84%,white);
  color:var(--team-color)
}

/* 视口自适应兜底：矮屏与中等宽度桌面允许页面滚动，避免底部操作按钮被固定工作区裁掉 */
.login-screen{overflow-x:hidden;overflow-y:auto}
.login-panel{min-height:min-content}

@media (min-width:901px) and (max-width:1180px),
       (min-width:901px) and (max-height:820px){
  body.lottery-mode{overflow:hidden}
  body.lottery-mode .content{overflow:hidden}
  #view-lottery.active{
    height:100%;
    min-height:0;
    padding-right:6px;
    padding-bottom:22px;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    scrollbar-width:thin
  }
  #view-lottery.active::-webkit-scrollbar{display:block;width:8px}
  #view-lottery.active::-webkit-scrollbar-thumb{border-radius:999px;background:color-mix(in srgb,var(--sage) 42%,transparent)}
  #lotteryScreenShell.lottery-reference-shell:not(.lottery-manage-mode):not(.lottery-settings-mode){
    height:auto;
    min-height:100%;
    overflow:visible!important
  }
  .lottery-center-panel[data-lottery-center-panel="draw"].active{
    display:block;
    height:auto;
    overflow:visible
  }
  .lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{
    height:auto;
    min-height:0;
    max-height:none;
    overflow:visible
  }
  .lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine-panel,
  .lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-status{
    height:auto!important;
    min-height:0!important;
    max-height:none;
    overflow:visible
  }
  .lottery-reference-machine{min-height:430px!important}
  .lottery-reference-status .lottery-history{
    height:auto;
    min-height:180px;
    max-height:360px;
    overflow-y:auto
  }
}

@media (min-width:901px) and (max-width:1180px){
  .lottery-center-panel[data-lottery-center-panel="draw"]>.lottery-reference-grid{
    grid-template-columns:1fr;
    gap:13px
  }
}

@media (max-height:620px){
  .login-screen{display:block}
  .login-visual{display:none}
  .login-panel{min-height:100%;padding:20px}
  .login-card>p{margin-bottom:16px}
}

/* 2026-09 手机端重排：保留完整功能，使用独立的紧凑触控布局 */
@media (max-width:900px){
  body{font-size:13px}
  .main{grid-template-rows:60px minmax(0,1fr)}
  .topbar{min-height:60px;padding:max(5px,env(safe-area-inset-top)) 8px 5px;border-bottom-color:var(--line)}
  .menu-btn{width:36px;height:36px;flex-basis:36px;font-size:18px}
  .topbar-title{gap:5px}
  .pixel-alarm.topbar-robot{width:38px;height:40px;flex-basis:38px}
  .topbar-robot img{width:38px;height:38px}
  .topbar-copy{display:block}
  .topbar-title .eyebrow,.live-time{display:none}
  .topbar-title h1{margin:0;font-size:16px;line-height:1.15}
  .topbar .top-actions{gap:4px}
  .appearance-btn,.top-actions .primary-btn,.avatar{width:36px;min-width:36px;height:36px}
  .appearance-btn{border-radius:11px}
  .top-actions .primary-btn:after{font-size:18px}
  .content{padding:8px 8px calc(9px + env(safe-area-inset-bottom))}
  .view.active,#view-students.active,#view-parents.active,#view-scores.active,#view-teaching.active,#view-feedback.active,#view-timetable.active,#view-seats.active,#view-lottery.active{padding:0 1px 14px}

  h2,.teaching-hero h2,.lottery-page-head h2{font-size:21px}
  .panel h3,.panel-head h3{font-size:16px}
  .section-kicker,.eyebrow{font-size:8px}
  .panel{padding:12px;border-radius:14px}
  .panel-head{gap:10px;margin-bottom:11px}
  .primary-btn,.ghost-btn,.danger-btn,.danger-outline-btn,.class-analysis-btn{min-height:38px;padding:8px 10px;border-radius:9px;font-size:12px}
  .page-actions{margin-bottom:10px}
  .inline-actions{gap:6px}
  .filter-chips,.segmented{gap:5px}
  .filter-chips button,.segmented button{min-height:34px;padding:6px 10px;font-size:11px}
  .search-box{height:40px;padding-inline:11px}

  /* 首页 */
  .welcome-banner{min-height:118px;padding:18px;border-radius:18px}
  .welcome-banner h2{margin:9px 0 5px;font-size:23px}
  .welcome-banner p{max-width:260px;font-size:11px;line-height:1.5}
  .metric-grid,.score-metrics{gap:7px;margin:9px 0}
  .metric{min-width:0;padding:10px;gap:8px;border-radius:12px}
  .metric-icon{width:34px;height:34px;border-radius:10px;font-size:16px}
  .metric b{font-size:18px}
  .metric span{font-size:9px}
  .dashboard-grid{gap:9px}
  .todo-list{gap:6px}
  .todo-item{grid-template-columns:auto minmax(0,1fr) auto;padding:9px;gap:8px}
  .todo-item .priority{display:none}
  .todo-title{font-size:12px}
  .todo-meta{font-size:9px}
  .quick-grid{gap:6px}
  .quick-grid button{padding:9px 5px;font-size:10px}
  .quick-grid button span{margin-bottom:3px;font-size:17px}

  /* 课表：手机宽度内同时展示周一至周五 */
  .timetable-command-bar{gap:8px}
  .timetable-command-bar h2{margin:4px 0;font-size:21px}
  .timetable-command-bar p{margin:0;font-size:11px;line-height:1.5}
  .timetable-command-bar .inline-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:5px}
  .timetable-command-bar .inline-actions>*{display:grid;place-items:center;min-width:0;padding-inline:5px;text-align:center}
  .timetable-import-note{margin-top:8px;padding:8px 9px;font-size:8px;line-height:1.45}
  .timetable-sheet-wrap{height:auto;min-height:0;padding:4px;border-radius:12px;overflow:auto}
  .timetable-sheet{width:100%;min-width:0;min-height:0;grid-template-columns:42px repeat(5,minmax(0,1fr));grid-template-rows:34px repeat(7,64px);border-radius:9px}
  .timetable-day{font-size:9px}
  .timetable-period{font-size:8px}
  .timetable-cell{gap:2px;padding:3px 2px}
  .timetable-cell b{font-size:10px}
  .timetable-cell span{font-size:7px}
  .timetable-cell small{font-size:6px}

  /* 学生名单：双列紧凑卡片 */
  .student-page-actions{gap:7px}
  .student-list-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:6px}
  .student-list-actions .segmented{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr)}
  .student-list-actions>*{width:100%;min-width:0;text-align:center}
  #view-students .student-stats{height:auto;min-height:0;margin-bottom:7px;overflow-x:auto;flex-wrap:nowrap}
  #view-students .stat-chip{flex:0 0 auto}
  .student-grid,#view-students .student-grid{height:auto;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:86px;gap:6px;padding:5px;overflow:visible}
  #view-students .student-card{padding:14px 6px 6px}
  #view-students .student-card-head{gap:5px}
  #view-students .student-avatar{width:34px;height:37px;flex-basis:34px}
  #view-students .student-card h4{font-size:12px}
  #view-students .student-card small{font-size:7px}
  #view-students .student-card .tags{height:15px}
  #view-students .student-card .tag{max-width:48px;font-size:7px}

  /* 座位表：控制区换行，座位区独立横向滚动 */
  #view-seats .seat-page-head h2{margin:0;font-size:20px}
  #view-seats .seat-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  #view-seats .seat-actions .primary-btn{grid-column:1/-1}
  #view-seats .seat-layout-controls{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;padding:8px;gap:6px}
  #view-seats .seat-layout-controls label{width:100%}
  #view-seats .seat-layout-controls input{width:100%}
  #view-seats .seat-layout-controls button{grid-column:auto / span 1}
  #view-seats .seat-layout-controls #generateSeats{grid-column:1/3}
  #view-seats .seat-layout-controls #autoArrangeSeats{grid-column:3}
  #view-seats .seat-layout-controls small{grid-column:1/-1}
  #view-seats .seat-toolbar{grid-template-columns:36px minmax(0,1fr) 36px;min-height:36px}
  #view-seats .blackboard{padding:7px;font-size:9px}
  #view-seats .seat-map-wrap{padding:4px}
  #view-seats .seat-map{width:650px;min-width:650px!important;height:535px;min-height:535px;grid-template-columns:42px repeat(8,minmax(70px,1fr));grid-template-rows:36px;grid-auto-rows:minmax(68px,1fr)}
  #view-seats .seat-sheet-cell{padding:6px 4px}
  #view-seats .seat-sheet-cell strong{font-size:12px}

  /* 成绩：操作分组，表格局部横向滚动 */
  .score-command-bar{gap:9px;padding:0}
  .score-command-copy{min-width:0;padding:0}
  .score-command-copy h2{margin:4px 0;font-size:20px}
  .score-command-copy p{margin:0;font-size:10px;line-height:1.5}
  .score-scope-bar{display:grid;grid-template-columns:1fr auto;gap:6px;padding-bottom:7px}
  .score-scope-bar label{display:grid;grid-template-columns:34px minmax(0,1fr);gap:5px}
  .score-command-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}
  .score-command-actions #scoreTestSelect,.score-command-actions #classAnalysisBtn,.score-command-actions #saveScoresBtn{grid-column:1/-1;width:100%}
  .score-command-actions>*{width:100%;min-width:0!important}
  .score-workspace-frame{padding:5px;border-radius:12px}
  .score-layout{gap:8px}
  .score-table{min-width:590px}
  .score-table th,.score-table td{padding:7px 8px}
  .score-student{min-height:48px}
  .score-input{width:64px}
  .score-history-entry{padding:10px}
  .score-history-entry button{width:100%}
  .score-aside label{margin:10px 0}

  /* 成长、家校、备课和反馈 */
  .timeline{padding-left:2px}
  .timeline:before{left:12px}
  .timeline-item{grid-template-columns:18px minmax(0,1fr);gap:8px;padding:5px 0 12px}
  .timeline-date{grid-column:2;font-size:9px}
  .timeline-content{padding:9px}
  #view-parents .script-grid,.script-grid{grid-template-columns:1fr;gap:8px;padding:5px}
  .script-card{padding:12px}
  .script-card p{font-size:11px;line-height:1.6}
  .teaching-hero{padding:16px;border-radius:15px;gap:10px}
  .teaching-hero h2{margin:8px 0 5px;font-size:20px}
  .teaching-hero p{font-size:10px;line-height:1.5}
  .teaching-workspace-frame,.feedback-workspace-frame{padding:5px;border-radius:12px}
  .lesson-form label{margin:10px 0}
  .feedback-quick-fill{padding:10px}
  .feedback-template-buttons{grid-template-columns:1fr 1fr;gap:5px}
  .feedback-template-buttons button{padding:8px 5px;font-size:10px}
  .feedback-preview{min-height:220px;padding:13px;font-size:12px}
  .feedback-writing-guide{grid-template-columns:1fr;gap:5px}

  /* 抽奖：缩短舞台，控件按手机宽度重排 */
  .lottery-reference-hero{padding:12px;border-radius:15px;gap:8px}
  .lottery-reference-hero h2{font-size:20px}
  .lottery-reference-hero p{font-size:9px}
  .lottery-reference-hero .lottery-reference-stat-list{gap:5px}
  .lottery-reference-stat-list>div{padding:6px 7px;font-size:8px}
  .lottery-reference-stat-list b{font-size:11px}
  .lottery-reference-hero .lottery-screen-tools{gap:5px}
  .lottery-reference-hero .lottery-tool-btn{min-height:36px;font-size:10px}
  .lottery-reference-machine-panel{padding:7px}
  .lottery-center-panel[data-lottery-center-panel="draw"] .lottery-reference-machine{min-height:330px!important}
  .lottery-reference-machine h2{font-size:24px!important}
  body.lottery-mode .lottery-reference-box{width:112px!important;height:112px!important}
  body.lottery-mode .lottery-reference-box-body .draw-asset{width:100px!important;height:100px!important}
  .lottery-reference-machine .asset-egg{width:55px!important;height:60px!important}
  .lottery-reference-machine-panel .lottery-actions{gap:5px}
  .lottery-reference-machine-panel .lottery-actions button{min-height:38px;padding:8px 5px;font-size:10px}
  .lottery-reference-status{padding:11px}
  .lottery-reference-status .lottery-history{max-height:300px}
  .lottery-center-tabs{gap:4px;padding:5px}
  .lottery-center-tabs button,.lottery-account-tabs button{padding:7px 9px;font-size:9px}
  .lottery-account-list{max-height:330px}
  .lottery-account-option{padding:8px}
  .lottery-settings-page{padding:7px}
  .lottery-settings-page .lottery-settings-right>.lottery-roster-picker{min-height:420px;padding:11px}
  .lottery-settings-page .lottery-student-checklist{min-height:250px;max-height:360px}
  .lottery-prize-table-wrap{height:390px;min-height:260px}

  /* 设置页和弹窗 */
  .settings-grid{gap:8px}
  .settings-grid .panel{min-height:0}
  .stack-actions{margin-top:12px}
  .modal,.score-analysis-dialog{padding:12px;border-radius:15px}
  .modal-head{padding-bottom:9px;margin-bottom:10px}
  .modal-head h3{font-size:18px}
  .modal-form{gap:9px}
  .modal-form input,.modal-form select,.modal-form textarea{padding:9px}
  .lottery-use-editor{grid-template-columns:1fr}.lottery-reward-use-count{justify-content:center}
}

@media (max-width:430px){
  .topbar-title h1{font-size:15px}
  .metric-grid,.score-metrics{grid-template-columns:1fr 1fr}
  .metric{padding:8px}
  .metric-icon{width:30px;height:30px}
  .metric b{font-size:16px}
  .student-list-actions{grid-template-columns:1fr 1fr}
  .student-grid,#view-students .student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .timetable-sheet{grid-template-columns:36px repeat(5,minmax(0,1fr))}
  .lottery-reference-hero-stats{display:none}
}

/* 录入进度移至右侧测试说明卡片上方 */
.score-entry-status-bar{display:flex;justify-content:flex-end;margin:-2px 0 13px;padding-bottom:11px;border-bottom:1px solid var(--line);text-align:right}
.score-entry-status-bar #scoreEntryStatus{font-weight:900}

@media (min-width:901px){
  .score-aside{top:0;min-height:calc(100dvh - 140px)}
}

/* 成绩分析前五项：查看按钮与 Tab 明细弹窗 */
.analysis-card{position:relative}
.analysis-card:has(.analysis-detail-btn)>h3,.analysis-card:has(.analysis-detail-btn)>p{padding-right:88px}
.analysis-detail-btn{position:absolute;z-index:2;right:16px;top:16px;min-height:32px;padding:6px 10px;border:1px solid color-mix(in srgb,var(--sage) 42%,var(--line));border-radius:9px;background:var(--sage-soft);color:var(--sage-dark);font-size:10px;font-weight:900}
.analysis-detail-btn:hover{border-color:var(--sage);background:var(--sage);color:#fff;transform:translateY(-1px)}
body.score-analysis-open .modal-backdrop{z-index:110}
.modal.score-insight-detail-modal{width:min(1180px,calc(100vw - 40px));max-height:92vh;padding:0;overflow:hidden}
.score-insight-detail-modal .modal-head{padding:18px 22px 14px;margin:0}
.score-insight-detail-modal #modalBody{padding:0 22px 22px;overflow:auto}
.score-insight-tabs{position:sticky;z-index:4;top:0;display:flex;gap:7px;padding:12px 0 10px;background:linear-gradient(var(--panel) 82%,transparent);overflow-x:auto;scrollbar-width:thin}
.score-insight-tabs button{flex:0 0 auto;min-height:36px;padding:8px 13px;border:1px solid var(--line);border-radius:10px;background:var(--theme-input);color:var(--muted);font-size:11px;font-weight:900;white-space:nowrap}
.score-insight-tabs button[aria-selected="true"]{border-color:var(--sage);background:var(--sage);color:#fff;box-shadow:0 6px 15px color-mix(in srgb,var(--sage) 24%,transparent)}
.score-insight-panel[hidden]{display:none}
.score-insight-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:3px 0 12px}
.score-insight-summary span{padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--theme-tint) 72%,var(--panel))}
.score-insight-summary small{display:block;color:var(--muted);font-size:9px}
.score-insight-summary b{display:block;margin-top:3px;font-size:17px}
.score-insight-table-wrap{width:100%;max-height:520px;border:1px solid var(--line);border-radius:13px;overflow:auto}
.score-insight-table{width:100%;min-width:780px;border-collapse:separate;border-spacing:0}
.score-insight-table th,.score-insight-table td{padding:10px 12px;text-align:center;white-space:nowrap}
.score-insight-table th{position:sticky;z-index:2;top:0;background:var(--theme-table);color:var(--sage-dark);font-size:10px}
.score-insight-table td{background:var(--panel);font-size:11px}
.score-insight-table tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--theme-tint) 48%,var(--panel))}
.score-insight-table tbody tr:hover td{background:var(--sage-soft)}
.score-insight-team{display:inline-flex;padding:4px 7px;border-radius:999px;background:var(--team-soft);color:var(--team-color);font-size:9px;font-weight:900}
.score-insight-empty{display:grid;min-height:220px;place-items:center;border:1px dashed var(--line);border-radius:13px;color:var(--muted)}
.trend-detail-table{min-width:680px}
@media(max-width:760px){
  .analysis-card:has(.analysis-detail-btn)>h3,.analysis-card:has(.analysis-detail-btn)>p{padding-right:76px}
  .analysis-detail-btn{right:12px;top:12px;padding:5px 8px}
  .modal.score-insight-detail-modal{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}
  .score-insight-detail-modal .modal-head{padding:14px 14px 10px}
  .score-insight-detail-modal #modalBody{padding:0 12px 14px}
  .score-insight-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .score-insight-summary span:last-child:nth-child(odd){grid-column:1/-1}
  .score-insight-table-wrap{max-height:calc(100dvh - 270px)}
  .score-insight-table{min-width:720px}
}

/* 奖券“查看”按钮悬浮时保持高对比度白字与白色图标 */
.lottery-history-view:hover,.lottery-history-view:focus-visible,.lottery-history-view:hover span,.lottery-history-view:focus-visible span{color:#fff!important;-webkit-text-fill-color:#fff!important}
.lottery-history-view:hover .lottery-history-view-icon,.lottery-history-view:focus-visible .lottery-history-view-icon{stroke:#fff!important}
.lottery-coupon-actions [data-lottery-view-ticket]:hover,.lottery-coupon-actions [data-lottery-view-ticket]:focus-visible,.lottery-coupon-actions [data-lottery-view-ticket]:hover span,.lottery-coupon-actions [data-lottery-view-ticket]:focus-visible span{color:#fff!important;-webkit-text-fill-color:#fff!important}
.lottery-history-view>.button-leading-icon,.lottery-coupon-actions [data-lottery-view-ticket]>.button-leading-icon{display:none!important}
.lottery-history-view>span:last-child{display:inline-flex;align-items:center;height:14px;line-height:14px}.lottery-history-view .lottery-history-view-icon{transform:translateY(1.5px)}

/* 座位尺寸：标签前置并强化显示 */
#view-seats .seat-layout-controls{align-items:center}
#view-seats .seat-layout-controls label{display:flex;align-items:center;gap:9px;color:var(--ink);font-size:13px;font-weight:1000;line-height:1;white-space:nowrap}
#view-seats .seat-layout-controls input{font-size:14px;font-weight:800}
#view-seats .seat-layout-controls>span{padding-bottom:0;color:var(--ink);font-size:16px;font-weight:900}
@media(max-width:900px){#view-seats .seat-layout-controls label{gap:6px;font-size:12px}#view-seats .seat-layout-controls label input{flex:1;width:auto;min-width:0}}

/* 班级课表：匹配“2307班务栏班级课表”模板 */
#view-timetable .timetable-sheet-wrap{padding:10px;background:#f6f7f3}
#view-timetable .timetable-sheet{display:block;width:100%;min-width:900px;min-height:0;border:1px solid #26313a;border-radius:0;background:#fff;overflow:hidden;font-family:"STSong","SimSun","Microsoft YaHei",sans-serif}
#view-timetable .timetable-template-title{position:relative;display:grid;width:100%;min-height:74px;place-items:center;padding:12px 58px;border:0;background:#082b6c;color:#fff;font-family:inherit;font-size:clamp(25px,3vw,40px);font-weight:900;letter-spacing:.06em;text-align:center;cursor:pointer}
#view-timetable .timetable-template-title i,#view-timetable .timetable-period-edit>i{position:absolute;right:12px;top:50%;display:grid;width:28px;height:28px;place-items:center;border-radius:50%;background:rgba(255,255,255,.16);font-style:normal;font-size:14px;opacity:0;transform:translateY(-50%);transition:opacity .15s ease,background .15s ease}
#view-timetable .timetable-template-title:hover i,#view-timetable .timetable-template-title:focus-visible i,#view-timetable .timetable-period-edit:hover>i,#view-timetable .timetable-period-edit:focus-visible>i{opacity:1}
#view-timetable .timetable-template-title:hover,#view-timetable .timetable-template-title:focus-visible{outline:3px solid #f6a54b;outline-offset:-3px}
#view-timetable .timetable-template-accent,#view-timetable .timetable-template-footer{height:10px;background:#f28b2a}
#view-timetable .timetable-template-accent{border-bottom:12px solid #fff}
#view-timetable .timetable-template-footer{margin-top:8px;border-bottom:25px solid #082b6c}
#view-timetable .timetable-template-grid{width:100%;table-layout:fixed;border-collapse:collapse}
#view-timetable .timetable-template-grid th,#view-timetable .timetable-template-grid td{padding:0;border:1.5px solid #293138;text-align:center;white-space:normal}
#view-timetable .timetable-template-grid thead th{position:static;height:54px;background:#fff;color:#111;font-size:20px;font-weight:800}
#view-timetable .timetable-template-grid thead th:first-child{width:18%}
#view-timetable .timetable-template-row>th{width:18%;padding:8px 6px;background:#fff0bd;color:#171717;font-weight:500}
#view-timetable .timetable-period-edit{position:relative;display:flex;width:100%;height:100%;min-height:58px;flex-direction:column;align-items:center;justify-content:center;padding:4px 34px 4px 4px;border:0;background:transparent;color:inherit;font-family:inherit;cursor:pointer}
#view-timetable .timetable-period-edit:hover,#view-timetable .timetable-period-edit:focus-visible{background:rgba(255,255,255,.42);outline:3px solid #d48324;outline-offset:-3px}
#view-timetable .timetable-period-edit>i{right:5px;width:24px;height:24px;background:#d48324;color:#fff;font-size:12px}
#view-timetable .timetable-template-row>th b,#view-timetable .timetable-template-row>th span,#view-timetable .timetable-template-row>th small{display:block}
#view-timetable .timetable-template-row>th b{font-size:16px}.timetable-template-row>th span{margin-top:2px;font-size:15px}.timetable-template-row>th small{margin-top:2px;font-size:11px}
#view-timetable .timetable-template-row td{height:78px;background:#fff}
#view-timetable .timetable-template-row.tint td{background:#d1f1ef}
#view-timetable .timetable-template-cell{display:grid;grid-template-rows:1fr 1fr;width:100%;height:100%;min-height:78px;padding:0;border:0;background:transparent;color:#171717;text-align:center}
#view-timetable .timetable-template-cell b,#view-timetable .timetable-template-cell span{display:grid;min-width:0;place-items:center;padding:5px 7px;line-height:1.25;white-space:pre-line;overflow-wrap:anywhere}
#view-timetable .timetable-template-cell b{border-bottom:1px solid #293138;font-size:17px;font-weight:800}
#view-timetable .timetable-template-cell span{font-size:15px}
#view-timetable .timetable-template-cell small{position:absolute;right:4px;bottom:2px;color:#5f6663;font-size:8px}
#view-timetable .timetable-template-cell:hover,#view-timetable .timetable-template-cell:focus-visible{position:relative;z-index:1;background:rgba(255,224,112,.32);outline:3px solid #d48324;outline-offset:-3px}
#view-timetable .timetable-template-cell:not(.filled){color:#a7aaa7}.timetable-template-cell:not(.filled) span{visibility:hidden}
#view-timetable .timetable-template-lunch th{position:static;height:56px;background:#fff;color:#111;font-size:21px;font-weight:700;letter-spacing:.04em}
@media(max-width:900px){#view-timetable .timetable-sheet{min-width:760px}#view-timetable .timetable-template-title{min-height:58px;font-size:25px}#view-timetable .timetable-template-grid thead th{height:44px;font-size:15px}#view-timetable .timetable-template-row td,#view-timetable .timetable-template-cell{height:68px;min-height:68px}#view-timetable .timetable-template-cell b{font-size:14px}#view-timetable .timetable-template-cell span{font-size:12px}#view-timetable .timetable-template-row>th b{font-size:13px}#view-timetable .timetable-template-row>th span{font-size:12px}#view-timetable .timetable-template-lunch th{height:46px;font-size:17px}}

/* 课表精简工具栏与无滚动条适配 */
@media(min-width:901px){
  #view-timetable.active{height:calc(100dvh - 142px);grid-template-rows:auto minmax(0,1fr);gap:8px}
  #view-timetable .timetable-command-bar{justify-content:flex-end;min-height:42px}
  #view-timetable .timetable-command-bar .inline-actions{width:auto}
  #view-timetable .timetable-sheet-wrap{height:100%;min-height:0;padding:5px;overflow:hidden}
  #view-timetable .timetable-sheet{display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0}
  #view-timetable .timetable-template-title{flex:0 0 auto;min-height:50px;padding:7px 16px;font-size:clamp(23px,2.2vw,32px)}
  #view-timetable .timetable-template-accent{flex:0 0 7px;height:7px;border-bottom:5px solid #fff}
  #view-timetable .timetable-template-grid{flex:1 1 auto;height:calc(100% - 79px);min-height:0}
  #view-timetable .timetable-template-grid thead th{height:38px;font-size:16px}
  #view-timetable .timetable-template-row td{height:auto}
  #view-timetable .timetable-template-cell{height:100%;min-height:0}
  #view-timetable .timetable-template-cell b{padding:3px 6px;font-size:15px}
  #view-timetable .timetable-template-cell span{padding:3px 6px;font-size:12px}
  #view-timetable .timetable-template-row>th{padding:4px}
  #view-timetable .timetable-template-row>th b{font-size:14px}
  #view-timetable .timetable-template-row>th span{font-size:13px}
  #view-timetable .timetable-template-row>th small{font-size:9px}
  #view-timetable .timetable-template-lunch th{height:36px;font-size:17px}
  #view-timetable .timetable-template-footer{flex:0 0 15px;height:4px;margin-top:4px;border-bottom-width:11px}
}

#view-timetable .timetable-template-cell>.button-leading-icon{display:none!important}
@media(min-width:901px){
  #view-timetable .timetable-template-title{min-height:42px;padding:5px 14px;font-size:clamp(21px,2vw,29px)}
  #view-timetable .timetable-template-accent{flex-basis:6px;height:4px;border-bottom-width:2px}
  #view-timetable .timetable-template-grid{height:calc(100% - 60px)}
  #view-timetable .timetable-template-grid thead th{height:32px;font-size:14px}
  #view-timetable .timetable-template-row{height:49px}
  #view-timetable .timetable-template-row td{height:49px}
  #view-timetable .timetable-template-cell{height:48px;min-height:48px}
  #view-timetable .timetable-template-cell b{padding:1px 4px;font-size:13px;line-height:1.08}
  #view-timetable .timetable-template-cell span{padding:1px 4px;font-size:10px;line-height:1.08}
  #view-timetable .timetable-template-row>th{padding:2px}
  #view-timetable .timetable-template-row>th b{font-size:12px;line-height:1.05}
  #view-timetable .timetable-template-row>th span{margin-top:1px;font-size:10px;line-height:1.05}
  #view-timetable .timetable-template-row>th small{margin-top:1px;font-size:7px;line-height:1}
  #view-timetable .timetable-template-lunch th{height:28px;font-size:14px}
  #view-timetable .timetable-template-footer{flex-basis:6px;height:2px;margin-top:2px;border-bottom-width:4px}
}

/* 紧凑课表文字放大：保持整表无滚动显示 */
@media(min-width:901px){
  #view-timetable .timetable-template-grid thead th{font-size:16px;font-weight:900}
  #view-timetable .timetable-template-cell b{padding:0 3px;font-size:15px;font-weight:900;line-height:1.02}
  #view-timetable .timetable-template-cell span{padding:0 3px;font-size:12px;font-weight:600;line-height:1.02}
  #view-timetable .timetable-template-row>th b{font-size:14px;font-weight:900}
  #view-timetable .timetable-template-row>th span{font-size:12px;font-weight:700}
  #view-timetable .timetable-template-row>th small{font-size:9px;font-weight:700}
  #view-timetable .timetable-template-lunch th{font-size:16px;font-weight:900}
}

/* 课表内容居中与备注标色 */
#view-timetable .timetable-template-grid th,#view-timetable .timetable-template-grid td,#view-timetable .timetable-template-cell,#view-timetable .timetable-template-cell b,#view-timetable .timetable-template-cell span{text-align:center}
#view-timetable .timetable-template-cell{position:relative;align-items:center;justify-items:center}
#view-timetable .timetable-template-cell b,#view-timetable .timetable-template-cell span{width:100%;justify-items:center}
#view-timetable .timetable-template-cell.has-note{background:color-mix(in srgb,#ffd98a 34%,transparent);box-shadow:inset 0 0 0 2px #df842e}
#view-timetable .timetable-note-flag{position:absolute;z-index:2;top:2px;right:3px;padding:2px 4px;border-radius:999px;background:#d96f27;color:#fff;font-style:normal;font-size:7px;font-weight:1000;line-height:1;box-shadow:0 2px 5px rgba(126,63,20,.2)}

/* 课程与教师整体上下居中；备注悬浮显示完整内容 */
#view-timetable .timetable-template-row>th{vertical-align:middle}
#view-timetable .timetable-template-cell{display:flex;flex-direction:column;align-items:center;justify-content:center}
#view-timetable .timetable-template-cell b,#view-timetable .timetable-template-cell span{display:flex;flex:0 0 auto;align-items:center;justify-content:center}
#view-timetable .timetable-template-cell span:empty{display:none}
#view-timetable .timetable-template-cell b:has(+ span:empty){border-bottom:0}
#view-timetable .timetable-template-cell.has-note{background:transparent;box-shadow:none}
#view-timetable .timetable-note-tooltip{position:absolute;z-index:20;left:50%;top:50%;width:max-content;max-width:220px;padding:7px 10px;border-radius:9px;background:#29342f;color:#fff;font-style:normal;font-size:11px;font-weight:700;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 8px 22px rgba(24,34,29,.28);opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,-45%) scale(.96);transition:opacity .15s ease,transform .15s ease,visibility .15s}
#view-timetable .timetable-template-cell.has-note:hover .timetable-note-tooltip,#view-timetable .timetable-template-cell.has-note:focus-visible .timetable-note-tooltip{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)}

/* 课程名与教师名分别在上下两个小格中居中 */
#view-timetable .timetable-template-cell{position:relative;display:grid;grid-template-rows:minmax(0,1fr) minmax(0,1fr);align-items:stretch;justify-items:stretch}
#view-timetable .timetable-template-cell:after{content:"";position:absolute;z-index:0;left:7%;right:7%;top:50%;height:1px;background:color-mix(in srgb,#293138 72%,transparent);pointer-events:none;transform:translateY(-.5px)}
#view-timetable .timetable-template-cell b,#view-timetable .timetable-template-cell span{position:relative;z-index:1;display:grid;width:100%;height:100%;place-items:center;border:0!important;line-height:1.08;text-align:center;white-space:pre-line;overflow:hidden;overflow-wrap:anywhere}
#view-timetable .timetable-template-cell b{padding:1px 5px 4px}
#view-timetable .timetable-template-cell span{padding:4px 5px 1px}
#view-timetable .timetable-template-cell span:empty{display:grid}
#view-timetable .timetable-template-cell.multiline-subject b{font-size:11px;line-height:1}
#view-timetable .timetable-template-cell.multiline-teacher span{font-size:9px;line-height:1}
#view-timetable .timetable-template-lunch th{padding:0}
#view-timetable .timetable-lunch-edit{position:relative;display:grid;width:100%;height:100%;min-height:inherit;place-items:center;padding:4px 42px;border:0;background:transparent;color:inherit;font:inherit;font-weight:inherit;letter-spacing:inherit;cursor:pointer}
#view-timetable .timetable-lunch-edit>i{position:absolute;right:12px;top:50%;display:grid;width:24px;height:24px;place-items:center;border-radius:50%;background:#d48324;color:#fff;font-style:normal;font-size:12px;opacity:0;transform:translateY(-50%);transition:opacity .15s ease}
#view-timetable .timetable-lunch-edit:hover,#view-timetable .timetable-lunch-edit:focus-visible{background:#fff7dd;outline:3px solid #d48324;outline-offset:-3px}
#view-timetable .timetable-lunch-edit:hover>i,#view-timetable .timetable-lunch-edit:focus-visible>i{opacity:1}
#view-timetable .timetable-lunch-edit>.button-leading-icon{display:none!important}
@media(min-width:901px){#view-timetable .timetable-template-row,#view-timetable .timetable-template-row td{height:56px}#view-timetable .timetable-template-cell{height:55px;min-height:55px}#view-timetable .timetable-template-lunch th{height:32px}}
.score-subject-bar{display:flex;align-items:center;gap:12px;min-width:0;margin:0 0 9px;padding:8px 10px;border:1px solid var(--line);border-radius:15px;background:var(--panel);box-shadow:var(--shadow)}
.score-subject-tabs{display:flex;align-items:center;gap:7px;min-width:0;flex:1;overflow-x:auto;scrollbar-width:thin}
.score-subject-tab{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:86px;height:39px;padding:0 15px;border:1px solid transparent;border-radius:11px;background:transparent;color:var(--muted);font-size:13px;font-weight:900;white-space:nowrap;transition:.18s ease}
.score-subject-tab:hover{background:var(--theme-table);color:var(--ink)}
.score-subject-tab[aria-selected="true"]{border-color:color-mix(in srgb,var(--sage) 38%,var(--line));background:var(--sage-soft);color:var(--sage-dark);box-shadow:inset 0 -3px 0 var(--sage)}
.score-subject-tab b{display:inline-grid;place-items:center;min-width:21px;height:21px;padding:0 6px;border-radius:999px;background:color-mix(in srgb,var(--sage) 13%,var(--panel));font-size:10px;color:inherit}
.score-subject-tab[aria-selected="true"] b{background:var(--panel)}
.score-subject-manage{flex:none;height:39px;padding:0 15px;border:1px solid var(--line);border-radius:11px;background:var(--theme-input);color:var(--ink);font-size:12px;font-weight:900}
.score-subject-manage:hover{border-color:var(--sage);background:var(--sage-soft);color:var(--sage-dark)}
.score-subject-manager{display:grid;gap:16px;min-width:min(620px,76vw)}
.score-subject-manager>p{margin:0;line-height:1.7}
.score-subject-edit-list{display:grid;gap:9px}
.score-subject-edit-row{display:grid;grid-template-columns:minmax(150px,1fr) auto auto;align-items:center;gap:8px;padding:9px;border:1px solid var(--line);border-radius:12px;background:var(--theme-table)}
.score-subject-edit-row input,.score-subject-add input{width:100%;height:40px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:var(--theme-input);color:var(--ink);font-weight:800}
.score-subject-add{display:grid;grid-template-columns:1fr auto;gap:9px;padding-top:15px;border-top:1px solid var(--line)}
@media(max-width:720px){.score-subject-bar{align-items:stretch;flex-direction:column}.score-subject-manage{width:100%}.score-subject-manager{min-width:0}.score-subject-edit-row{grid-template-columns:1fr 1fr}.score-subject-edit-row input{grid-column:1/-1}.score-subject-add{grid-template-columns:1fr}}

/* Multi-class workspace */
.class-switch-nav{min-height:54px;border:1px solid color-mix(in srgb,var(--sage) 24%,var(--line));background:color-mix(in srgb,var(--sage-soft) 62%,var(--panel))}.class-switch-nav>span:first-child{font-size:20px}.class-switch-copy{width:auto!important;min-width:0!important;text-align:left!important;display:flex!important;flex-direction:column;gap:2px}.class-switch-copy b{max-width:152px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:12px}.class-switch-copy small{color:var(--muted);font-size:9px}.class-switch-nav:disabled{cursor:not-allowed;opacity:.66}.class-switch-nav:disabled:hover{background:color-mix(in srgb,var(--sage-soft) 62%,var(--panel))}
.class-management-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px;padding:24px 26px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(135deg,color-mix(in srgb,var(--sage-soft) 78%,#fff),var(--panel));box-shadow:var(--shadow)}.class-management-head h2{margin:7px 0 6px;font:800 28px serif}.class-management-head p{margin:0;color:var(--muted)}.class-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.class-card{padding:20px;border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:0 8px 26px rgba(48,64,52,.05)}.class-card.active{border-color:color-mix(in srgb,var(--sage) 62%,var(--line));box-shadow:0 12px 32px color-mix(in srgb,var(--sage) 16%,transparent)}.class-card-top{display:flex;align-items:center;gap:12px}.class-card-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:var(--sage-soft);color:var(--sage-dark);font:900 20px serif}.class-card-top>div{min-width:0;flex:1}.class-card h3{margin:0;font:800 19px serif}.class-card p{margin:5px 0 0;color:var(--muted);font-size:11px}.current-class-badge{padding:6px 9px;border-radius:999px;background:var(--sage);color:#fff;font-size:10px}.class-card-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0;padding:13px 0;border-block:1px dashed var(--line)}.class-card-stats span{text-align:center;color:var(--muted);font-size:10px}.class-card-stats b{display:block;margin-bottom:3px;color:var(--ink);font-size:19px}.class-card-actions{display:flex;justify-content:flex-end;gap:8px}.class-switch-list{display:flex;flex-direction:column;gap:9px}.class-switch-option{width:100%;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border:1px solid var(--line);border-radius:13px;background:var(--panel);text-align:left}.class-switch-option:hover,.class-switch-option.active{border-color:var(--sage);background:var(--sage-soft)}.class-switch-option span{display:flex;flex-direction:column;gap:4px}.class-switch-option small{color:var(--muted)}.class-switch-option i{font-style:normal;color:var(--sage-dark);font-size:11px;font-weight:800}.score-subject-fixed-note{margin-left:auto;padding-right:6px;color:var(--muted);font-size:11px;white-space:nowrap}
@media(max-width:1050px){.class-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.class-management-head{align-items:stretch;flex-direction:column;padding:18px}.class-management-head .primary-btn{width:100%}.class-card-grid{grid-template-columns:1fr}.class-card-actions{flex-wrap:wrap}.score-subject-fixed-note{margin-left:0;text-align:center}}
.avatar-account-btn{width:100%;height:40px;margin-top:8px;padding:0 12px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:11px;background:var(--theme-input);color:var(--ink);font-size:11px;font-weight:900;line-height:1;text-align:center}
.avatar-account-btn .button-leading-icon{display:none}
.avatar-account-btn:hover{border-color:var(--sage);background:var(--sage-soft);color:var(--sage-dark)}
.avatar-personal-settings-btn{gap:8px}.avatar-settings-icon{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.account-settings-panel{grid-column:1/-1;min-height:0!important}.account-settings-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.account-setting-action{width:100%;display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:13px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--theme-input);text-align:left;transition:.18s ease}.account-setting-action:hover{border-color:color-mix(in srgb,var(--sage) 55%,var(--line));background:color-mix(in srgb,var(--sage-soft) 44%,var(--panel));transform:translateY(-2px);box-shadow:0 9px 22px rgba(38,60,50,.07)}.account-setting-icon,.account-setting-icon.button-leading-icon{width:48px;height:48px;display:grid;margin:0;place-items:center;border-radius:14px;background:var(--sage-soft);color:var(--sage-dark)}.account-setting-icon.password-icon{background:var(--peach-soft);color:#a4604e}.account-setting-icon svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.account-setting-action b,.account-setting-action small{display:block}.account-setting-action b{margin-bottom:5px;font-size:14px}.account-setting-action small{color:var(--muted);font-size:11px;font-weight:600}.account-setting-arrow{color:var(--muted);font-size:24px;line-height:1}.account-setting-action:hover .account-setting-arrow{color:var(--sage);transform:translateX(2px)}
@media(max-width:620px){.account-settings-actions{grid-template-columns:1fr}.account-setting-action{grid-template-columns:44px minmax(0,1fr) auto;padding:12px}.account-setting-icon{width:44px;height:44px}}
.user-admin-list{display:grid;gap:8px;margin:14px 0 18px}.user-admin-row{display:grid;grid-template-columns:minmax(120px,1fr) auto auto;gap:10px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--theme-table)}.user-admin-row b,.user-admin-row small{display:block}.user-admin-row small{margin-top:3px;color:var(--muted)}.user-status{padding:4px 8px;border-radius:999px;background:var(--sage-soft);color:var(--sage-dark);font-size:10px;font-weight:900}.user-status.disabled{background:var(--peach-soft);color:var(--red)}
@media(max-width:620px){.user-admin-row{grid-template-columns:1fr auto}.user-admin-row>div:first-child{grid-column:1/-1}}

/* 平台管理后台 */
.login-security-note{display:grid;grid-template-columns:auto 1fr;gap:1px 9px;align-items:center;margin-top:18px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:var(--sage-soft);color:var(--sage-dark)}.login-security-note span{grid-row:1/3;font-size:18px}.login-security-note b{font-size:10px}.login-security-note small{font-size:9px;opacity:.72}.login-security-note.insecure{background:#fff3e5;color:#9b5b14}.admin-nav-item{border:1px solid color-mix(in srgb,var(--sage) 28%,transparent)!important;background:color-mix(in srgb,var(--sage-soft) 75%,transparent)!important}#view-admin,.admin-shell,.admin-content,.admin-card{min-width:0;max-width:100%}.admin-shell{display:grid;gap:18px}.admin-hero{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:25px 28px;border-radius:22px;background:linear-gradient(135deg,var(--sage-dark),var(--sage));color:#fff;box-shadow:0 16px 35px var(--theme-glow)}.admin-hero h2{margin:5px 0 7px;font:800 26px serif}.admin-hero p{margin:0;opacity:.82}.admin-security-badge{padding:9px 12px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(255,255,255,.1);font-size:10px;font-weight:800;white-space:nowrap}.admin-tabs{display:flex;gap:8px;overflow:auto;padding:5px;border:1px solid var(--line);border-radius:15px;background:var(--panel)}.admin-tabs button{border:0;border-radius:10px;padding:10px 17px;background:transparent;color:var(--muted);font-weight:800;white-space:nowrap}.admin-tabs button.active{background:var(--sage);color:#fff}.admin-content{min-height:320px;overflow:hidden}.admin-loading,.admin-empty{padding:45px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:16px}.admin-metrics{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:14px}.admin-metric{padding:18px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}.admin-metric span,.admin-metric small{display:block;color:var(--muted);font-size:10px}.admin-metric b{display:block;margin:8px 0 4px;font-size:28px}.admin-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,.8fr);gap:16px}.admin-card{padding:19px;border:1px solid var(--line);border-radius:17px;background:var(--panel);box-shadow:var(--shadow)}.admin-card h3{margin:0 0 5px}.admin-card>p{margin:0 0 15px;color:var(--muted);font-size:11px}.admin-list{display:grid;gap:9px}.admin-row{display:flex;align-items:center;gap:11px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--theme-table)}.admin-row-main{min-width:0;flex:1}.admin-row-main b,.admin-row-main small{display:block}.admin-row-main small{margin-top:4px;color:var(--muted);font-size:10px}.admin-row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.admin-row-actions button{padding:7px 10px}.admin-form{display:grid;gap:10px}.admin-form label{display:grid;gap:5px;color:var(--muted);font-size:10px;font-weight:800}.admin-form input,.admin-form select,.admin-form textarea{width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--theme-input);color:var(--ink)}.admin-form textarea{min-height:72px;resize:vertical}.admin-form .check-line{display:flex;grid-auto-flow:column;justify-content:start;align-items:center}.admin-form .check-line input{width:auto}.admin-permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.admin-permission-option{display:flex;gap:8px;padding:9px;border:1px solid var(--line);border-radius:10px}.admin-permission-option input{width:auto}.admin-permission-option b,.admin-permission-option small{display:block}.admin-permission-option small{color:var(--muted);font-size:9px;margin-top:2px}.admin-table-toolbar{display:flex;gap:10px;align-items:end;margin-bottom:12px}.admin-table-toolbar label{flex:1}.admin-db-wrap{width:100%;max-width:100%;max-height:clamp(320px,58vh,720px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;scrollbar-color:color-mix(in srgb,var(--sage) 62%,var(--line)) var(--theme-table);border:1px solid var(--line);border-radius:12px}.admin-db-wrap::-webkit-scrollbar{width:12px;height:12px}.admin-db-wrap::-webkit-scrollbar-track{background:var(--theme-table)}.admin-db-wrap::-webkit-scrollbar-thumb{border:3px solid var(--theme-table);border-radius:999px;background:color-mix(in srgb,var(--sage) 62%,var(--line))}.admin-db-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:10px;white-space:nowrap}.admin-db-table th,.admin-db-table td{max-width:320px;padding:9px 11px;border-bottom:1px solid var(--line);text-align:left;overflow:hidden;text-overflow:ellipsis}.admin-db-table th{position:sticky;top:0;z-index:1;background:var(--sage-soft);color:var(--sage-dark)}.admin-db-table td{background:var(--panel)}.admin-pager{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:10px}.admin-code{font-family:Consolas,monospace;color:var(--sage-dark)}
@media(max-width:900px){.admin-metrics{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:1fr}.admin-security-badge{display:none}}@media(max-width:560px){.admin-hero{padding:20px}.admin-metrics,.admin-permission-grid{grid-template-columns:1fr}.admin-row{align-items:flex-start;flex-wrap:wrap}.admin-row-actions{width:100%;justify-content:flex-start}}
.platform-custom-menus{display:grid;gap:4px}.platform-custom-menus a{text-decoration:none}.platform-custom-menus .nav-item{width:100%}

/* 账号弹窗：角色徽章固定在信息框右上角 */
.avatar-popover-head{position:relative;padding-right:96px}
.avatar-popover-head .avatar-user-copy{grid-template-columns:1fr;grid-template-rows:auto auto}
.avatar-popover-head .avatar-user-copy strong{grid-column:1;grid-row:1}
.avatar-popover-head .avatar-user-copy .avatar-welcome{grid-column:1;grid-row:2;min-width:0;place-items:start;margin-top:3px;font-size:18px;text-align:left}
.avatar-popover-head>#currentUserRole{position:absolute;top:0;right:24px;display:grid;width:64px;height:64px;margin:0;padding:0;place-items:center;border:2px solid #e0a449;border-radius:50%;background:linear-gradient(145deg,#fff7e8,#f4d89c);color:#8a5209;font-size:13px;font-weight:1000;line-height:1;letter-spacing:.02em;box-shadow:0 7px 18px rgba(185,119,27,.2)}
.avatar-popover-head>#currentUserRole:before{display:none}

/* 用户反馈树形菜单与工单中心 */
.feedback-nav-tree{position:relative;width:100%}.feedback-nav-tree>.nav-item{width:100%;padding-right:52px}.feedback-tree-toggle{position:absolute;right:10px;top:50%;z-index:3;width:32px;height:32px;padding:0;border:1px solid color-mix(in srgb,var(--sage) 28%,var(--line));border-radius:50%;background:color-mix(in srgb,var(--panel) 90%,var(--sage-soft));transform:translateY(-50%)}.feedback-tree-toggle:before{content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;border-right:2px solid var(--sage-dark);border-bottom:2px solid var(--sage-dark);transform:translate(-62%,-50%) rotate(-45deg);transition:transform .18s}.feedback-nav-tree.open .feedback-tree-toggle:before{transform:translate(-50%,-67%) rotate(45deg)}.feedback-subnav{display:grid;gap:6px;margin:7px 5px 10px 18px;padding-left:13px;border-left:2px solid color-mix(in srgb,var(--sage) 35%,transparent)}.feedback-nav-tree:not(.open)+.feedback-subnav{display:none}.feedback-nav-tree:has(.nav-item[hidden]),.feedback-nav-tree:has(.nav-item[hidden])+.feedback-subnav{display:none}.feedback-subnav button{min-width:0;padding:8px 10px;border:1px solid color-mix(in srgb,var(--sage) 20%,var(--line));border-radius:9px;background:color-mix(in srgb,var(--panel) 91%,var(--sage-soft));color:var(--sage-dark);font-size:10px;font-weight:900;text-align:left}.feedback-subnav button span{display:inline-grid;width:18px;height:18px;margin-right:5px;place-items:center;border-radius:6px;background:var(--sage-soft)}.feedback-subnav button:hover{background:var(--sage);color:#fff}.feedback-subnav button:hover span{background:rgba(255,255,255,.17)}
#view-feedback.active{height:100%;overflow:auto}.feedback-shell{display:grid;gap:16px}.feedback-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 25px;border-radius:20px;background:linear-gradient(135deg,var(--sage-dark),var(--sage));color:#fff;box-shadow:0 14px 34px var(--theme-glow)}.feedback-hero h2{margin:5px 0 6px;font:800 26px serif}.feedback-hero p{margin:0;opacity:.84}.feedback-hero .section-kicker{color:rgba(255,255,255,.72)}.feedback-hero .ghost-btn{color:var(--sage-dark)}.feedback-type-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.feedback-type-tabs>button{display:grid;grid-template-columns:46px 1fr;gap:11px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:15px;background:var(--panel);text-align:left}.feedback-type-tabs>button>i,.feedback-ticket-icon{display:grid;width:42px;height:42px;place-items:center;border-radius:13px;background:var(--sage-soft);color:var(--sage-dark);font-style:normal;font-size:20px;font-weight:1000}.feedback-type-tabs b,.feedback-type-tabs small{display:block}.feedback-type-tabs small{margin-top:4px;color:var(--muted);font-size:10px}.feedback-type-tabs>button.active,.feedback-type-tabs>button:hover{border-color:var(--sage);box-shadow:0 8px 22px var(--theme-glow)}.feedback-type-tabs>button.active{background:color-mix(in srgb,var(--panel) 82%,var(--sage-soft))}.feedback-ticket-icon.change{background:#e8e2f4;color:#6b4a9a}.feedback-ticket-icon.bug{background:#f9e1dd;color:#a7483b}.feedback-body{min-height:260px}.feedback-compose{display:grid;gap:15px;max-width:920px;margin:0 auto}.feedback-compose-head{display:flex;align-items:center;gap:12px}.feedback-compose-head h3{margin:0;font-size:20px}.feedback-compose-head p{margin:4px 0 0;color:var(--muted)}.feedback-compose>label{display:grid;gap:7px;color:var(--muted);font-size:11px;font-weight:900}.feedback-compose input,.feedback-compose textarea,.feedback-reply textarea,.feedback-admin-filters select,.feedback-admin-state select{width:100%;border:1px solid var(--line);border-radius:11px;background:var(--theme-input);color:var(--ink);outline:0}.feedback-compose input{height:44px;padding:0 13px}.feedback-compose textarea,.feedback-reply textarea{min-height:145px;padding:12px 13px;line-height:1.7;resize:vertical}.feedback-compose input:focus,.feedback-compose textarea:focus,.feedback-reply textarea:focus{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.feedback-upload{display:flex!important;align-items:center;justify-content:space-between;gap:15px;padding:12px 14px;border:1px dashed var(--sage);border-radius:12px;background:color-mix(in srgb,var(--sage-soft) 48%,var(--panel));cursor:pointer}.feedback-upload b,.feedback-upload small{display:block}.feedback-upload small{margin-top:4px;font-size:9px}.feedback-upload input{width:auto;height:auto;padding:0;border:0;background:transparent}.feedback-file-list{display:flex;gap:7px;flex-wrap:wrap}.feedback-file-list span{padding:6px 9px;border-radius:8px;background:var(--sage-soft);color:var(--sage-dark);font-size:9px}.feedback-compose-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-top:4px}.feedback-compose-actions>span{color:var(--muted);font-size:10px}.feedback-list{display:grid;gap:9px}.feedback-ticket-card{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 15px;border:1px solid var(--line);border-radius:14px;background:var(--panel);text-align:left}.feedback-ticket-card:hover{border-color:var(--sage);box-shadow:0 7px 20px var(--theme-glow);transform:translateY(-1px)}.feedback-ticket-main{min-width:0}.feedback-ticket-title{display:flex;align-items:center;gap:9px}.feedback-ticket-title b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback-ticket-main small,.feedback-ticket-main em{display:block;margin-top:5px;color:var(--muted);font-size:10px;font-style:normal}.feedback-ticket-arrow{color:var(--sage);font-size:28px}.feedback-status{display:inline-flex;flex:none;padding:4px 8px;border-radius:999px;background:#edf0ed;color:#657069;font-size:9px;font-weight:1000}.feedback-status.open{background:#fff0cf;color:#8a620e}.feedback-status.progress{background:#dcecf8;color:#316b91}.feedback-status.waiting{background:#eee3fa;color:#714b9d}.feedback-status.resolved{background:#dcefe1;color:#337048}.feedback-status.closed{background:#e8e9e8;color:#6c716e}.feedback-empty{min-height:250px;display:grid;place-content:center;gap:7px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:16px;background:var(--panel)}.feedback-empty b{color:var(--ink);font-size:17px}
.feedback-detail-modal{width:min(820px,calc(100vw - 32px));max-height:min(90vh,900px);overflow:auto}.feedback-detail{display:grid;gap:14px}.feedback-detail-meta{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10px}.feedback-detail-meta time{margin-left:auto}.feedback-initial,.feedback-message{padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--theme-table)}.feedback-initial>p,.feedback-message>p{margin:8px 0 0;line-height:1.75}.feedback-conversation{display:grid;gap:9px}.feedback-message{max-width:88%}.feedback-message.admin{justify-self:end;background:color-mix(in srgb,var(--sage-soft) 65%,var(--panel));border-color:color-mix(in srgb,var(--sage) 28%,var(--line))}.feedback-message.user{justify-self:start}.feedback-message header{display:flex;align-items:center;gap:7px}.feedback-message header span{padding:3px 6px;border-radius:999px;background:var(--panel);color:var(--muted);font-size:8px}.feedback-message header time{margin-left:auto;color:var(--muted);font-size:9px}.feedback-no-reply,.feedback-closed-note{padding:18px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);text-align:center}.feedback-closed-note{background:#f1f1ef}.feedback-attachments{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.feedback-attachments a{width:112px;display:block;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--panel);text-decoration:none}.feedback-attachments img{width:100%;height:82px;display:block;object-fit:cover}.feedback-attachments span{display:block;padding:5px 7px;overflow:hidden;color:var(--muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.feedback-reply{display:grid;grid-template-columns:1fr auto;gap:9px;align-items:end;padding-top:4px}.feedback-reply label:first-child{grid-column:1/-1}.feedback-reply label{display:grid;gap:5px;color:var(--muted);font-size:10px;font-weight:900}.feedback-reply textarea{min-height:90px}.feedback-reply-upload{height:40px;padding:0 11px;display:flex!important;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;background:var(--theme-input)}.feedback-reply-upload input{max-width:250px}.feedback-admin-state{display:flex;align-items:end;justify-content:flex-end;gap:8px;padding:11px;border-radius:12px;background:var(--theme-table)}.feedback-admin-state label{display:grid;gap:5px;color:var(--muted);font-size:9px}.feedback-admin-state select{height:38px;padding:0 10px}.feedback-admin-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.feedback-admin-head h3{margin:0}.feedback-admin-head p{margin:5px 0 0!important}.feedback-admin-filters{display:flex;gap:8px}.feedback-admin-filters select{height:40px;padding:0 10px}.feedback-admin-summary{display:flex;justify-content:space-between;gap:12px;margin:13px 0;padding:10px 12px;border-radius:10px;background:var(--sage-soft);color:var(--sage-dark);font-size:10px}
@media(max-width:760px){.feedback-type-tabs{grid-template-columns:1fr}.feedback-hero{align-items:flex-start;flex-direction:column}.feedback-hero button{width:100%}.feedback-compose-actions,.feedback-admin-head,.feedback-admin-summary{align-items:stretch;flex-direction:column}.feedback-upload{align-items:flex-start;flex-direction:column}.feedback-message{max-width:100%}.feedback-reply{grid-template-columns:1fr}.feedback-admin-filters{width:100%}.feedback-admin-filters select{min-width:0;flex:1}}
.feedback-ticket-card>.button-leading-icon,.feedback-type-tabs button>.button-leading-icon,.feedback-subnav button>.button-leading-icon{display:none}
.feedback-user-actions{display:flex;justify-content:flex-end;gap:9px;padding-top:2px}
.feedback-ticket-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.feedback-ticket-row .feedback-ticket-card{min-width:0}.feedback-ticket-actions{display:flex;align-items:center;gap:7px}.feedback-ticket-actions button{height:40px;padding:0 13px}.feedback-table-actions{display:flex;align-items:center;justify-content:center;gap:5px}.feedback-table-actions button{border:0;border-radius:7px;padding:6px 8px;font-size:9px;font-weight:900;white-space:nowrap}.feedback-table-open{background:var(--sage-soft);color:var(--sage-dark)}.feedback-table-withdraw{background:#fff0cf;color:#8a620e}.feedback-table-delete{background:#f9e1dd;color:#a7483b}@media(max-width:760px){.feedback-ticket-row{grid-template-columns:1fr}.feedback-ticket-actions{justify-content:flex-end}.feedback-table-actions{flex-wrap:wrap}}

/* 当前班级：立体金色五角星标记 */
.class-card.active{border-color:#dda126;box-shadow:0 14px 34px rgba(190,126,15,.18),inset 0 0 0 1px rgba(255,214,105,.42)}
.class-card{position:relative}
.current-class-badge{position:absolute;z-index:3;top:10px;left:57%;width:66px;height:66px;margin:0;padding:0;display:grid;place-items:center;border-radius:0;background:transparent;color:transparent;font-size:0;box-shadow:none;overflow:visible;pointer-events:none;transform:translateX(-50%)}
.current-class-badge:before{content:"★";position:absolute;inset:0;display:grid;place-items:center;color:#ffc83d;font-family:"Microsoft YaHei",sans-serif;font-size:62px;font-weight:1000;line-height:1;-webkit-text-stroke:1px #d78a08;text-align:center;text-shadow:0 1px 0 #ffe9a1,0 3px 0 #e39a0f,0 6px 8px rgba(126,75,0,.34),0 11px 18px rgba(170,105,0,.2);transform:none;transform-origin:center;filter:drop-shadow(0 2px 1px rgba(255,255,255,.55))}
.current-class-badge:after{content:"✦";position:absolute;top:7px;right:7px;color:#fff9cf;font-size:16px;line-height:1;text-shadow:0 0 5px #fff,0 0 9px #ffe57c;transform:rotate(8deg)}
.class-card.active:hover .current-class-badge:before{transform:rotate(0) scale(1.07)}

/* 顶部栏中央直接展示全部班级，当前班级亮黄色高亮 */
.topbar-class-tabs{position:absolute;z-index:4;left:50%;top:50%;width:min(560px,40vw);transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;gap:10px;overflow-x:auto;padding:7px 4px;scrollbar-width:none}
.topbar-class-tabs::-webkit-scrollbar{display:none}
.topbar-class-tab{flex:0 0 auto;min-height:40px;padding:0 18px;border:1px solid color-mix(in srgb,var(--sage) 22%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--panel) 88%,transparent);color:var(--sage-dark);font-size:14px;font-weight:900;white-space:nowrap;box-shadow:0 4px 12px rgba(38,56,47,.05);cursor:pointer}
.topbar-class-tab:hover{border-color:#e4b820;background:#fff8cf;transform:translateY(-1px)}
.topbar-class-tab.active{border-color:#e5b315;background:#ffd84d;color:#453500;box-shadow:0 6px 15px rgba(211,154,0,.24),inset 0 1px 0 rgba(255,255,255,.65)}
.topbar-class-tab>.button-leading-icon{display:none}
@media(max-width:1100px){.topbar-class-tabs{width:30vw;gap:6px}.topbar-class-tab{padding:0 12px;font-size:12px}}
@media(max-width:820px){.topbar-class-tabs{display:none}}

/* 登录页仅保留平台图标 */
.login-title{display:flex;align-items:center;gap:12px}.login-brand-icon{display:block;width:48px;height:48px;flex:0 0 48px;border-radius:14px;object-fit:cover;filter:drop-shadow(0 9px 15px var(--theme-glow))}
.login-card h1+label{margin-top:28px}

/* 合并新增与修改需求后的双入口布局 */
.feedback-type-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}

/* 设置页的数据备份卡片与上下模块保持同宽 */
#view-settings .settings-grid>.panel:nth-child(2){grid-column:1/-1;width:100%}

/* 账号弹窗中的教师姓名居中显示 */
.avatar-popover-head .avatar-user-copy strong{display:grid;min-width:72px;min-height:24px;place-items:center;justify-self:center;text-align:center}

/* 头像弹窗：上传与退出按钮使用一致的细边框，退出增加图标 */
.avatar-popover .avatar-upload-btn{border:1px solid var(--line);background:var(--theme-input);box-shadow:none}
.avatar-popover .avatar-upload-btn:hover{border-color:color-mix(in srgb,var(--sage) 40%,var(--line));background:var(--sage-soft);color:var(--sage-dark)}
.avatar-popover .avatar-logout-btn:before{content:"↪";margin-right:7px;color:currentColor;font-size:15px;font-weight:1000;line-height:1}

/* 用户反馈：入口明确呈现为按钮，表单与入口等宽，文件按钮清晰可见 */
.feedback-type-tabs>button{position:relative;grid-template-columns:46px minmax(0,1fr) auto;min-height:92px;border:2px solid color-mix(in srgb,var(--sage) 32%,var(--line));background:linear-gradient(135deg,var(--panel),color-mix(in srgb,var(--sage-soft) 42%,var(--panel)));box-shadow:0 7px 18px color-mix(in srgb,var(--sage) 10%,transparent);cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease}
.feedback-type-tabs>button:after{content:"点击填写  →";display:inline-flex;align-items:center;justify-content:center;min-width:94px;height:36px;padding:0 14px;border-radius:10px;background:var(--sage);color:#fff;font-size:11px;font-weight:1000;white-space:nowrap;box-shadow:0 6px 14px color-mix(in srgb,var(--sage) 25%,transparent)}
.feedback-type-tabs>button:hover,.feedback-type-tabs>button:focus-visible{border-color:var(--sage);background:linear-gradient(135deg,var(--panel),var(--sage-soft));box-shadow:0 11px 26px color-mix(in srgb,var(--sage) 20%,transparent);transform:translateY(-2px)}
.feedback-type-tabs>button:focus-visible{outline:3px solid color-mix(in srgb,var(--sage) 28%,transparent);outline-offset:2px}
.feedback-type-tabs>button.active:after{content:"正在填写";background:var(--sage-dark)}
.feedback-compose{width:100%;max-width:none;margin-inline:0}
.feedback-upload input{width:min(390px,100%);height:46px;padding:5px;border:1px solid color-mix(in srgb,var(--sage) 28%,var(--line));border-radius:10px;background:var(--panel);color:var(--muted);font-weight:800;cursor:pointer}
.feedback-upload input::file-selector-button{height:34px;margin-right:12px;padding:0 16px;border:0;border-radius:8px;background:var(--sage);color:#fff;font-weight:1000;cursor:pointer;box-shadow:0 4px 10px color-mix(in srgb,var(--sage) 22%,transparent)}
.feedback-upload input::file-selector-button:hover{background:var(--sage-dark)}
@media(max-width:760px){.feedback-type-tabs>button{grid-template-columns:42px minmax(0,1fr)}.feedback-type-tabs>button:after{grid-column:1/-1;width:100%}.feedback-upload input{width:100%}}

/* 首次登录及个人设置中的数据保存位置选择 */
.account-setting-action.storage-mode-action{grid-column:1/-1;min-height:78px;border-color:color-mix(in srgb,#6f94bd 24%,var(--line));background:linear-gradient(105deg,color-mix(in srgb,#e5eef8 48%,var(--theme-input)),var(--theme-input) 62%)}.account-setting-action.storage-mode-action:hover{border-color:#7e9fc2;background:linear-gradient(105deg,#edf4fb,var(--panel) 64%)}.account-setting-icon.storage-icon{background:#e5eef8;color:#416c9a;font-size:24px;font-style:normal}.storage-mode-action .account-setting-arrow{color:#6c88a4}
.storage-choice-overlay{position:fixed;z-index:300;inset:0;display:grid;place-items:center;padding:22px;background:rgba(20,31,27,.58);backdrop-filter:blur(8px)}
.storage-choice-dialog{width:min(780px,calc(100vw - 32px));max-height:calc(100vh - 36px);overflow:auto;padding:28px;border:1px solid rgba(255,255,255,.7);border-radius:24px;background:var(--panel);box-shadow:0 28px 80px rgba(16,28,23,.32)}
.storage-choice-dialog h2{margin:7px 0 8px;font:900 27px serif}.storage-choice-intro{margin:0;color:var(--muted);line-height:1.75}.storage-choice-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:22px}
.storage-choice-options>button{display:grid;grid-template-columns:54px minmax(0,1fr);gap:13px;align-items:start;min-height:190px;padding:18px;border:2px solid var(--line);border-radius:18px;background:var(--theme-input);text-align:left;transition:.18s ease}
.storage-choice-options>button:hover,.storage-choice-options>button:focus-visible{border-color:var(--sage);background:var(--sage-soft);box-shadow:0 12px 28px var(--theme-glow);transform:translateY(-2px);outline:0}.storage-choice-options>button>i{display:grid;width:54px;height:54px;place-items:center;border-radius:15px;background:var(--sage-soft);color:var(--sage-dark);font-style:normal;font-size:27px}.storage-choice-options>button:nth-child(2)>i{background:#edf0f5;color:#50647d}.storage-choice-options b,.storage-choice-options small{display:block}.storage-choice-options b{font-size:17px}.storage-choice-options b em{display:inline-block;margin-left:6px;padding:3px 7px;border-radius:999px;background:var(--sage);color:#fff;font-size:9px;font-style:normal;vertical-align:2px}.storage-choice-options small{margin-top:9px;color:var(--muted);font-size:11px;line-height:1.7}.storage-choice-options strong{grid-column:1/-1;align-self:end;display:flex;align-items:center;justify-content:center;height:38px;border-radius:10px;background:var(--sage);color:#fff;font-size:11px}.storage-choice-options>button:nth-child(2) strong{background:#536a80}
.storage-choice-warning{display:grid;grid-template-columns:auto 1fr;gap:9px;margin-top:16px;padding:12px 14px;border:1px solid #ead8ad;border-radius:12px;background:#fff8e8;color:#795d21;font-size:10px;line-height:1.65}.storage-choice-cancel{display:block;margin:16px auto 0}
@media(max-width:680px){.storage-choice-dialog{padding:20px}.storage-choice-options{grid-template-columns:1fr}.storage-choice-options>button{min-height:0}.storage-choice-warning{grid-template-columns:1fr}}

/* 顶栏仅显示日期与时间，不再显示当前页面标题 */
.topbar-copy{display:flex;align-items:center;gap:14px}.topbar-title #todayLabel{display:block;font-size:16px;line-height:1.2;letter-spacing:.04em}.topbar-title #liveClock{display:block;font-size:22px;line-height:1.2}.topbar-title #pageTitle{display:none}
@media(max-width:820px){.topbar-copy{gap:8px}.topbar-title #todayLabel{display:block;font-size:12px}.topbar-title #liveClock{display:block;font-size:17px}}

/* 抽奖设置：保存入口放在标题栏，并适配系统缩放后的较小有效视口。 */
.lottery-settings-title-row>.lottery-settings-actions{display:block;margin:0 0 0 20px}
.lottery-settings-title-row .lottery-settings-save-btn{display:inline-flex;width:auto;min-width:128px;height:46px;min-height:46px;align-items:center;justify-content:center;gap:8px;padding:0 18px;border:2px solid #fff;border-radius:12px;background:var(--sage);box-shadow:0 7px 17px rgba(54,105,87,.24),0 0 0 2px color-mix(in srgb,var(--sage) 16%,transparent);font-size:15px;line-height:1;white-space:nowrap}
.lottery-settings-title-row .lottery-settings-save-btn>span{font-size:20px}
.lottery-settings-title-row .lottery-settings-save-btn>b{font-size:14px;font-weight:900}
.lottery-settings-title-row .lottery-settings-save-btn:hover{filter:brightness(.95);transform:translateY(-1px)}
.lottery-settings-title-row .lottery-settings-save-btn:focus-visible{outline:3px solid color-mix(in srgb,var(--sage) 30%,transparent);outline-offset:3px}
.lottery-settings-page .lottery-draw-settings-card>#lotterySettingsControls{min-width:0}

/* 设置页跟随当前主题色，避免固定的红、紫色与青禾主题割裂。 */
.lottery-settings-mode .lottery-return-draw-icon{background:linear-gradient(145deg,var(--sage),var(--sage-dark));box-shadow:0 8px 17px var(--theme-glow),inset 0 1px 2px rgba(255,255,255,.42),0 0 0 2px color-mix(in srgb,var(--sage) 18%,transparent)}
.lottery-settings-mode .lottery-return-draw-copy b{color:var(--sage-dark)}
.lottery-settings-mode .lottery-return-draw-btn:hover .lottery-return-draw-icon{box-shadow:0 11px 22px var(--theme-glow),inset 0 1px 2px rgba(255,255,255,.42),0 0 0 3px color-mix(in srgb,var(--sage) 14%,transparent)}
.lottery-settings-mode .lottery-return-draw-btn:active .lottery-return-draw-icon{box-shadow:0 3px 8px var(--theme-glow),inset 0 2px 4px color-mix(in srgb,var(--sage-dark) 32%,transparent)}
.lottery-settings-mode .lottery-return-draw-btn:focus-visible{outline-color:color-mix(in srgb,var(--sage) 28%,transparent)}
.lottery-settings-page .lottery-advanced-batch-settings{border-color:color-mix(in srgb,var(--sage) 20%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--sage-soft) 38%,var(--panel)),color-mix(in srgb,var(--sage-soft) 72%,var(--panel)))}
.lottery-settings-page .lottery-advanced-batch-settings>.lottery-warehouse-draw-select{border-bottom-color:color-mix(in srgb,var(--sage) 24%,var(--line))}
.lottery-settings-page .lottery-advanced-batch-settings>div:not(.lottery-warehouse-draw-select){border-color:color-mix(in srgb,var(--sage) 22%,var(--line))}
.lottery-settings-page .lottery-advanced-batch-settings>div:nth-of-type(2){border-right-color:color-mix(in srgb,var(--sage) 22%,var(--line))}
.lottery-settings-page .lottery-warehouse-draw-select select{border-color:color-mix(in srgb,var(--sage) 58%,var(--line));color:var(--sage-dark);background:var(--panel)}
.lottery-settings-page .lottery-batch-bar>div span{color:var(--sage-dark)}
.lottery-settings-page .lottery-batch-bar input{border-color:color-mix(in srgb,var(--sage) 38%,var(--line));color:var(--sage-dark);background:var(--panel)}
.lottery-settings-page .lottery-batch-bar input:focus{border-color:var(--sage);box-shadow:0 0 0 4px color-mix(in srgb,var(--sage) 14%,transparent)}
.lottery-settings-page .lottery-sequence-mode-option{border-color:color-mix(in srgb,var(--sage) 28%,var(--line));color:var(--sage-dark);background:var(--panel)}
.lottery-settings-page .lottery-sequence-mode-option:hover{border-color:var(--sage);background:color-mix(in srgb,var(--sage-soft) 54%,var(--panel))}
.lottery-settings-page .lottery-sequence-mode-option input,.lottery-settings-page #lotteryExclude{accent-color:var(--sage)}
.lottery-settings-page .lottery-sequence-mode-option small{color:var(--muted)}
.lottery-settings-page .lottery-sequence-mode-option:has(input:checked){border-color:var(--sage);background:color-mix(in srgb,var(--sage-soft) 72%,var(--panel));box-shadow:0 0 0 3px color-mix(in srgb,var(--sage) 10%,transparent)}
.lottery-subnav{border-left-color:color-mix(in srgb,var(--sage) 30%,transparent)}
.lottery-subnav button{border-color:color-mix(in srgb,var(--sage) 20%,var(--line));color:var(--sage-dark);background:color-mix(in srgb,var(--panel) 82%,var(--sage-soft));box-shadow:0 4px 10px var(--theme-glow)}
.lottery-subnav button:hover,.lottery-subnav button:focus-visible{color:#fff;background:linear-gradient(110deg,var(--sage),var(--sage-dark))}

@media (min-width:901px) and (max-width:1280px),
       (min-width:901px) and (max-height:950px){
  #lotteryScreenShell.lottery-settings-mode .lottery-settings-page-panel.active{overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
  .lottery-settings-page{flex:0 0 auto;min-height:min-content;align-items:start;overflow:visible}
  .lottery-settings-page .lottery-settings-left,.lottery-settings-page .lottery-settings-right{overflow:visible}
  .lottery-settings-page .lottery-settings-right>.lottery-roster-picker{height:min(680px,calc(100dvh - 190px));min-height:480px}
  .lottery-settings-page .lottery-settings-right .lottery-student-checklist{min-height:260px;max-height:none}
}

@media (min-width:901px) and (max-width:1080px){
  .lottery-settings-page{grid-template-columns:1fr}
  .lottery-settings-page .lottery-settings-right>.lottery-roster-picker{height:auto;min-height:520px}
}

@media(max-width:900px){
  .lottery-settings-title-row{align-items:flex-start;flex-wrap:wrap}
  .lottery-settings-title-row>.lottery-settings-actions{margin-left:0}
  .lottery-settings-title-row .lottery-settings-save-btn{min-width:118px;height:44px;min-height:44px;padding-inline:15px}
}
@media(max-width:430px){.topbar-copy{gap:5px}.topbar-title #todayLabel{font-size:10px}.topbar-title #liveClock{font-size:14px}}

/* 管理后台入口：控制面板图标与高对比度选中状态 */
.admin-nav-icon svg{display:block;width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.sidebar .admin-nav-item{color:#365882!important}.sidebar .admin-nav-item>.admin-nav-icon{background:#dfeafa!important;border-color:#b9cdea!important;color:#365f98!important}.sidebar .admin-nav-item.active{border-color:#315d91!important;background:linear-gradient(105deg,#315d91,#477caf)!important;color:#fff!important;box-shadow:0 10px 24px rgba(38,78,125,.24)!important}.sidebar .admin-nav-item.active>.admin-nav-icon{border-color:rgba(255,255,255,.62)!important;background:#fff!important;color:#315d91!important}

/* 头像菜单中的姓名与欢迎语居中对齐 */
.avatar-popover-head .avatar-user-copy strong,.avatar-popover-head .avatar-user-copy .avatar-welcome{width:100%;justify-self:stretch;place-items:center;text-align:center}

/* 反馈填写状态保留顶部横幅，并适当压缩表单高度 */
.feedback-shell.feedback-composing{gap:12px}.feedback-shell.feedback-composing .feedback-hero{display:flex;padding:14px 20px}.feedback-shell.feedback-composing .feedback-hero h2{font-size:22px}.feedback-shell.feedback-composing .feedback-hero p{font-size:11px}.feedback-shell.feedback-composing .feedback-compose{gap:11px}.feedback-shell.feedback-composing .feedback-compose textarea{min-height:116px}.feedback-shell.feedback-composing .feedback-compose-actions{padding:8px 10px;border-radius:11px;background:color-mix(in srgb,var(--sage-soft) 42%,var(--panel))}

/* 需求提交与 Bug 提交使用不同的识别色 */
.feedback-type-tabs>button[data-feedback-type="demand"]{border-color:#8bcfc5;background:linear-gradient(135deg,var(--panel),#e3f5f1)}.feedback-type-tabs>button[data-feedback-type="demand"]>i{background:#d9f1ec;color:#277a70}.feedback-type-tabs>button[data-feedback-type="demand"]:after{background:#338f87}.feedback-type-tabs>button[data-feedback-type="demand"].active{border-color:#338f87;background:linear-gradient(135deg,#f7fffd,#d9f1ec);box-shadow:0 10px 24px rgba(51,143,135,.2)}.feedback-type-tabs>button[data-feedback-type="bug"]{border-color:#e7aaa0;background:linear-gradient(135deg,var(--panel),#fbe8e4)}.feedback-type-tabs>button[data-feedback-type="bug"]>i{background:#f8dcd6;color:#aa4438}.feedback-type-tabs>button[data-feedback-type="bug"]:after{background:#c85b4e}.feedback-type-tabs>button[data-feedback-type="bug"].active{border-color:#c85b4e;background:linear-gradient(135deg,#fffaf9,#f8dcd6);box-shadow:0 10px 24px rgba(200,91,78,.2)}.feedback-type-tabs>button[data-feedback-type="demand"].active:after{background:#276f68}.feedback-type-tabs>button[data-feedback-type="bug"].active:after{background:#9e3f35}

/* 反馈入口悬浮时不位移，阴影限制在卡片附近，避免遮挡下方表单 */
.feedback-type-tabs>button:hover,.feedback-type-tabs>button:focus-visible{transform:none;box-shadow:0 3px 9px rgba(45,70,60,.12)}.feedback-type-tabs>button[data-feedback-type="demand"].active{box-shadow:0 3px 9px rgba(51,143,135,.16)}.feedback-type-tabs>button[data-feedback-type="bug"].active{box-shadow:0 3px 9px rgba(200,91,78,.16)}

/* 我的反馈：统计、筛选和表格 */
.feedback-records{display:grid;gap:13px}.feedback-record-stats{display:grid;grid-template-columns:repeat(5,minmax(110px,1fr));gap:10px}.feedback-record-stats article{position:relative;overflow:hidden;padding:14px 16px;border:1px solid #cfded8;border-radius:14px;background:linear-gradient(135deg,#fff,#edf5f1)}.feedback-record-stats article:after{content:"";position:absolute;right:-15px;bottom:-24px;width:70px;height:70px;border-radius:50%;background:rgba(66,126,104,.1)}.feedback-record-stats span,.feedback-record-stats b{display:block}.feedback-record-stats span{color:var(--muted);font-size:10px;font-weight:800}.feedback-record-stats b{margin-top:5px;color:#365f52;font-size:25px}.feedback-record-stats .open{border-color:#ead8a7;background:#fff9e9}.feedback-record-stats .open b{color:#9a6a13}.feedback-record-stats .progress{border-color:#b9d8ed;background:#edf7fd}.feedback-record-stats .progress b{color:#39749b}.feedback-record-stats .waiting{border-color:#d8c5eb;background:#f7f0fd}.feedback-record-stats .waiting b{color:#76509c}.feedback-record-stats .done{border-color:#bcdcc5;background:#eff9f2}.feedback-record-stats .done b{color:#39734a}.feedback-record-toolbar{display:flex;align-items:end;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.feedback-record-toolbar label{display:grid;gap:5px;color:var(--muted);font-size:9px;font-weight:900}.feedback-record-toolbar label:first-child{flex:1}.feedback-record-toolbar input,.feedback-record-toolbar select{height:39px;min-width:150px;padding:0 11px;border:1px solid var(--line);border-radius:10px;background:var(--theme-input);color:var(--ink);outline:none}.feedback-record-toolbar input{width:100%;min-width:210px}.feedback-record-toolbar input:focus,.feedback-record-toolbar select:focus{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.feedback-filter-result{height:39px;display:flex;align-items:center;margin-left:auto;padding:0 12px;border-radius:10px;background:var(--sage-soft);color:var(--sage-dark);font-size:10px;white-space:nowrap}.feedback-filter-result b{margin:0 4px;font-size:15px}.feedback-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:15px;background:var(--panel);box-shadow:0 8px 24px rgba(40,62,51,.06)}.feedback-record-table{width:100%;min-width:1080px;border-collapse:separate;border-spacing:0}.feedback-record-table th{position:sticky;top:0;z-index:1;padding:11px 13px;background:color-mix(in srgb,var(--sage-soft) 72%,var(--panel));color:var(--sage-dark);font-size:10px;text-align:center}.feedback-record-table td{padding:12px 13px;border-bottom:1px solid var(--line);font-size:11px;text-align:center;vertical-align:middle}.feedback-record-table tbody tr:last-child td{border-bottom:0}.feedback-record-row{cursor:pointer;transition:background .15s}.feedback-record-row:hover,.feedback-record-row:focus{background:color-mix(in srgb,var(--sage-soft) 48%,var(--panel));outline:none}.feedback-table-title{max-width:320px;overflow:hidden;color:var(--ink);font-size:12px!important;font-weight:900;text-align:center!important;text-overflow:ellipsis}.feedback-table-type{display:inline-flex;align-items:center;gap:6px;font-weight:900;white-space:nowrap}.feedback-table-type i{display:grid;width:26px;height:26px;place-items:center;border-radius:8px;background:#d9f1ec;color:#277a70;font-style:normal}.feedback-table-type.bug i{background:#f8dcd6;color:#aa4438}.feedback-table-open{padding:7px 12px;border:0;border-radius:8px;background:var(--sage);color:#fff;font-size:10px;font-weight:900}.feedback-table-open:hover{background:var(--sage-dark)}.feedback-table-empty{padding:34px;color:var(--muted);text-align:center}.feedback-record-table td:nth-child(5),.feedback-record-table td:nth-child(6){font-variant-numeric:tabular-nums;font-weight:900}.feedback-record-table td:nth-child(7),.feedback-record-table td:nth-child(8){color:var(--muted);font-size:10px}
@media(max-width:900px){.feedback-record-stats{grid-template-columns:repeat(3,1fr)}.feedback-record-toolbar{align-items:stretch;flex-wrap:wrap}.feedback-record-toolbar label:first-child{width:100%;flex-basis:100%}.feedback-filter-result{margin-left:0}}
@media(max-width:560px){.feedback-record-stats{grid-template-columns:1fr 1fr}.feedback-record-toolbar{display:grid;grid-template-columns:1fr}.feedback-record-toolbar label:first-child{width:auto}.feedback-record-toolbar input,.feedback-record-toolbar select{width:100%;min-width:0}.feedback-filter-result{justify-content:center}}

/* AI pet command assistant */
body:not(.is-authenticated) .ai-pet{display:none}.ai-pet{position:fixed;right:24px;bottom:22px;z-index:58;display:flex;align-items:flex-end;flex-direction:column;gap:12px}.ai-pet-launcher{position:relative;width:72px;height:72px;padding:0;border:2px solid color-mix(in srgb,var(--sage) 38%,white);border-radius:26px;background:linear-gradient(145deg,#fff,var(--sage-soft));box-shadow:0 15px 38px rgba(28,51,41,.22);overflow:visible;transition:transform .18s,box-shadow .18s}.ai-pet-launcher:hover{transform:translateY(-3px) rotate(-2deg);box-shadow:0 19px 42px rgba(28,51,41,.27)}.ai-pet-launcher img{position:absolute;inset:4px;width:62px;height:62px;object-fit:contain;filter:drop-shadow(0 5px 7px rgba(35,65,52,.2));animation:aiPetFloat 2.8s ease-in-out infinite}.ai-pet-launcher b{position:absolute;right:-5px;top:-7px;display:grid;width:27px;height:27px;place-items:center;border:3px solid var(--panel);border-radius:50%;background:#f3bf32;color:#3c3215;font-size:10px;box-shadow:0 5px 12px rgba(141,99,0,.28)}.ai-pet-launcher-glow{position:absolute;inset:9px;border-radius:50%;background:color-mix(in srgb,var(--sage) 24%,transparent);filter:blur(10px);animation:aiPetPulse 2s ease-in-out infinite}@keyframes aiPetFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes aiPetPulse{0%,100%{opacity:.45;transform:scale(.9)}50%{opacity:1;transform:scale(1.12)}}
.ai-pet-panel{width:min(390px,calc(100vw - 28px));max-height:min(620px,calc(100vh - 125px));border:1px solid color-mix(in srgb,var(--sage) 24%,var(--line));border-radius:24px;background:color-mix(in srgb,var(--panel) 96%,transparent);box-shadow:0 24px 70px rgba(26,46,38,.24);backdrop-filter:blur(18px);overflow:hidden;transform-origin:bottom right;animation:aiPetOpen .2s ease}.ai-pet-panel[hidden]{display:none}@keyframes aiPetOpen{from{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}.ai-pet-head{display:grid;grid-template-columns:48px minmax(0,1fr) 36px;gap:11px;align-items:center;padding:15px 15px 13px;background:linear-gradient(135deg,var(--sage-soft),color-mix(in srgb,var(--panel) 90%,#fff4c7));border-bottom:1px solid var(--line)}.ai-pet-avatar{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;background:#fff;box-shadow:0 7px 16px rgba(49,76,60,.12)}.ai-pet-avatar img{width:43px;height:43px;object-fit:contain}.ai-pet-head>span:nth-child(2){min-width:0}.ai-pet-head b{display:block;font-size:16px}.ai-pet-head small{display:flex;align-items:center;gap:6px;margin-top:4px;color:var(--muted);font-size:10px}.ai-pet-head small i{width:7px;height:7px;border-radius:50%;background:#57a66a;box-shadow:0 0 0 3px rgba(87,166,106,.13)}.ai-pet-head>button{width:34px;height:34px;padding:0;border:0;border-radius:11px;background:rgba(255,255,255,.72);color:var(--muted);font-size:22px}.ai-pet-messages{height:290px;overflow-y:auto;padding:16px 15px;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}.ai-pet-message{display:flex}.ai-pet-message span{max-width:88%;padding:10px 12px;border-radius:14px;font-size:12px;line-height:1.65;white-space:pre-line}.ai-pet-message.pet span{border-bottom-left-radius:5px;background:var(--sage-soft);color:var(--sage-dark)}.ai-pet-message.user{justify-content:flex-end}.ai-pet-message.user span{border-bottom-right-radius:5px;background:var(--sage);color:#fff}.ai-pet-message.thinking span{color:var(--muted);font-style:italic}.ai-pet-suggestions{display:flex;gap:7px;padding:0 15px 11px;overflow-x:auto}.ai-pet-suggestions button{flex:0 0 auto;padding:7px 9px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--sage-dark);font-size:10px;font-weight:800}.ai-pet-suggestions button:hover{border-color:var(--sage);background:var(--sage-soft)}.ai-pet-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:12px 14px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--panel) 94%,var(--sage-soft))}.ai-pet-form input{width:100%;height:42px;padding:0 13px;border:1px solid var(--line);border-radius:12px;background:#fff;outline:none}.ai-pet-form input:focus{border-color:var(--sage);box-shadow:0 0 0 3px color-mix(in srgb,var(--sage) 13%,transparent)}.ai-pet-form button{height:42px;padding:0 15px;border:0;border-radius:12px;background:var(--sage);color:#fff;font-weight:900}.ai-pet-hint{margin:0;padding:0 14px 11px;background:color-mix(in srgb,var(--panel) 94%,var(--sage-soft));color:var(--muted);font-size:9px;text-align:center}
@media(max-width:620px){.ai-pet{right:12px;bottom:12px}.ai-pet-launcher{width:62px;height:62px;border-radius:21px}.ai-pet-launcher img{inset:3px;width:56px;height:56px}.ai-pet-panel{max-height:calc(100vh - 90px);border-radius:19px}.ai-pet-messages{height:min(300px,40vh)}}

/* Android viewport compatibility: prevent toolbar min-content from widening the app. */
@media(max-width:900px){
  html,body{max-width:100%;overscroll-behavior-x:none}
  .app-shell,.main,.topbar,.content,.view.active{min-width:0;max-width:100%}
  .app-shell,.main{height:100vh;height:100svh;height:100dvh;min-height:100vh;min-height:100svh;min-height:100dvh}
  .topbar{
    width:auto;
    padding-left:max(8px,env(safe-area-inset-left));
    padding-right:max(8px,env(safe-area-inset-right));
    overflow:hidden
  }
  .topbar-title,.topbar-copy{min-width:0;overflow:hidden}
  .topbar-copy{flex:1 1 auto;white-space:nowrap}
  .topbar-title #todayLabel{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .topbar-title #liveClock{flex:0 0 auto;white-space:nowrap}
  .topbar .top-actions{min-width:0;flex-shrink:0}
  .content{
    width:auto;
    padding-left:max(8px,env(safe-area-inset-left));
    padding-right:max(8px,env(safe-area-inset-right))
  }
  .view.active>*{max-width:100%}
  .welcome-banner{width:100%}
  .welcome-banner>div:first-child{position:relative;z-index:1;min-width:0}
  .welcome-banner h2,.welcome-banner p{overflow-wrap:anywhere}
  .metric,.todo-item,.panel-head>*{min-width:0}
  .metric>div:last-child,.todo-title{min-width:0;overflow-wrap:anywhere}
  .modal-backdrop,.score-analysis-backdrop{
    padding-left:max(8px,env(safe-area-inset-left));
    padding-right:max(8px,env(safe-area-inset-right))
  }
}

@media(max-width:520px){
  .topbar .manual-doc-btn{display:none}
  .topbar{gap:5px}
  .topbar-title{gap:3px}
  .topbar .top-actions{gap:4px}
  .notification-btn,.appearance-btn{width:36px;min-width:36px;height:36px}
  .metric-grid,.score-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric{overflow:hidden}
}

@media(max-width:380px){
  .pixel-alarm.topbar-robot{display:none}
  .topbar-title #todayLabel{font-size:9px}
  .topbar-title #liveClock{font-size:13px}
  .welcome-banner{padding-inline:14px}
}

@media(max-width:900px) and (orientation:landscape){
  .topbar{min-height:54px}
  .content{padding-top:6px}
  .modal,.score-analysis-dialog{max-height:calc(100dvh - 12px)}
}

/* 用户反馈未读消息提示 */
.feedback-record-row.has-unread{background:linear-gradient(90deg,#fff8f6,var(--panel) 42%)}.feedback-record-row.has-unread .feedback-table-title{color:#9f3f35}.feedback-table-title>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback-table-title{display:flex;align-items:center;justify-content:center;gap:8px}.feedback-unread-badge{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:48px;height:23px;padding:0 8px;border-radius:999px;background:#d94b4b;color:#fff;font-size:9px;font-weight:1000;line-height:1;box-shadow:0 3px 8px rgba(180,48,48,.2)}#feedbackNavDot{margin-left:auto}

/* 管理员反馈未读提示 */
.admin-tabs button[data-admin-tab="feedback"]{display:inline-flex;align-items:center;gap:7px}.admin-tab-unread,.feedback-ticket-unread{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#d94b4b;color:#fff;font-size:9px;font-style:normal;font-weight:900;line-height:1;box-shadow:0 2px 6px rgba(169,42,42,.24)}.admin-tab-unread.hidden{display:none}.admin-tabs button.active .admin-tab-unread{background:#fff;color:#b93838}.feedback-ticket-row.has-unread .feedback-ticket-card{border-color:rgba(217,75,75,.46);background:linear-gradient(90deg,#fff7f5,var(--panel) 44%);box-shadow:inset 4px 0 0 #d94b4b}.feedback-ticket-unread{margin-left:2px;white-space:nowrap}#adminFeedbackNavDot{margin-left:auto}

/* 成绩录入区域移除无用的测试说明侧栏后，成绩表占满工作区 */
.score-layout{grid-template-columns:minmax(0,1fr)}

/* 顶栏站内消息与管理员推送 */
.notification-controls{position:relative;display:flex;align-items:center}.notification-btn{position:relative;width:auto;min-width:82px;height:42px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--sage-dark);font-size:12px;font-weight:900;box-shadow:0 7px 18px rgba(33,56,47,.07)}.notification-btn:hover{border-color:color-mix(in srgb,var(--sage) 55%,var(--line));background:var(--sage-soft)}.notification-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.notification-count{position:absolute;top:-7px;right:-7px;display:grid;min-width:21px;height:21px;padding:0 5px;place-items:center;border:2px solid var(--paper);border-radius:999px;background:#d94b4b;color:#fff;font-size:9px;line-height:1;box-shadow:0 3px 9px rgba(180,48,48,.28)}.notification-count.hidden{display:none}.notification-popover{position:absolute;z-index:40;right:0;top:50px;width:min(430px,calc(100vw - 30px));overflow:hidden;border:1px solid var(--line);border-radius:17px;background:color-mix(in srgb,var(--panel) 97%,transparent);box-shadow:0 22px 60px rgba(27,45,39,.2);backdrop-filter:blur(18px)}.notification-popover[hidden]{display:none}.notification-popover>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--sage-soft) 42%,var(--panel))}.notification-popover>header b,.notification-popover>header small{display:block}.notification-popover>header b{font-size:14px}.notification-popover>header small{margin-top:3px;color:var(--muted);font-size:9px}.notification-popover>header>button{padding:6px 9px;border:0;border-radius:8px;background:var(--panel);color:var(--sage-dark);font-size:9px;font-weight:900}.notification-popover .button-leading-icon{display:none}.notification-list{max-height:min(520px,65vh);overflow:auto;padding:8px}.notification-item{width:100%;display:grid;grid-template-columns:9px minmax(0,1fr);gap:10px;padding:12px;border:0;border-bottom:1px solid var(--line);border-radius:11px;background:transparent;text-align:left}.notification-item:last-child{border-bottom:0}.notification-item:hover{background:var(--theme-table)}.notification-item.unread{background:linear-gradient(100deg,color-mix(in srgb,var(--sage-soft) 75%,var(--panel)),var(--panel))}.notification-item-dot{width:8px;height:8px;margin-top:5px;border-radius:50%;background:#c9cfca}.notification-item.unread .notification-item-dot{background:#d94b4b;box-shadow:0 0 0 4px rgba(217,75,75,.1)}.notification-item b,.notification-item small{display:block}.notification-item b{font-size:12px}.notification-item small{margin-top:4px;color:var(--muted);font-size:9px}.notification-item p{margin:8px 0 0;color:#52605a;font-size:11px;line-height:1.65;white-space:normal;overflow-wrap:anywhere}.notification-empty{display:grid;place-content:center;gap:5px;min-height:130px;padding:22px;color:var(--muted);text-align:center}.notification-empty b,.notification-empty span{display:block}.notification-empty b{color:var(--ink)}
.notification-admin-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.notification-admin-grid>.admin-card:first-child{padding:25px 27px}.notification-admin-grid>.admin-card:first-child>h3{font-size:24px}.notification-admin-grid>.admin-card:first-child>p{font-size:14px;line-height:1.7}.notification-push-form{gap:14px}.notification-push-form>label{font-size:13px}.notification-push-form input,.notification-push-form textarea{font-size:15px}.notification-push-form textarea{min-height:150px;line-height:1.7}.notification-recipient-field{min-width:0;margin:2px 0 0;padding:15px;border:1px solid var(--line);border-radius:12px}.notification-recipient-field legend{padding:0 7px;color:var(--muted);font-size:13px;font-weight:900}.notification-select-all,.notification-recipient-grid>label{display:flex!important;grid-auto-flow:unset!important;align-items:center;gap:11px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--theme-table);cursor:pointer}.notification-select-all{margin-bottom:10px;background:var(--sage-soft)}.notification-select-all input,.notification-recipient-grid input{width:18px!important;height:18px}.notification-select-all b,.notification-select-all small,.notification-recipient-grid b,.notification-recipient-grid small{display:block}.notification-select-all b,.notification-recipient-grid b{font-size:14px}.notification-select-all small,.notification-recipient-grid small{margin-top:3px;color:var(--muted);font-size:11px}.notification-recipient-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-height:265px;overflow:auto}.notification-push-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.notification-push-actions>span{color:var(--muted);font-size:13px}.notification-push-actions button{min-height:46px;padding-inline:22px;font-size:15px}.notification-history{display:grid;gap:9px;max-height:620px;overflow:auto}.notification-history>article{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--theme-table)}.notification-history header,.notification-history footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.notification-history header time,.notification-history footer{color:var(--muted);font-size:9px}.notification-history p{margin:8px 0!important;color:#52605a!important;font-size:11px!important;line-height:1.65;overflow-wrap:anywhere}
.notification-admin-grid>.admin-card:first-child>p{display:none}.notification-admin-grid>.admin-card:first-child>h3{margin-bottom:18px}
@media(max-width:900px){.notification-admin-grid{grid-template-columns:1fr}.notification-popover{position:fixed;top:76px;right:12px}}@media(max-width:560px){.notification-btn{min-width:42px;width:42px;padding:0}.notification-button-label{display:none}.notification-recipient-grid{grid-template-columns:1fr}.notification-popover{right:8px;width:calc(100vw - 16px)}}

/* 管理后台数据总览 */
.admin-overview-hero{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:15px;padding:25px 28px;border-radius:21px;background:linear-gradient(125deg,#254b42 0%,#557b68 68%,#77917c 100%);color:#fff;box-shadow:0 16px 36px rgba(35,72,62,.18)}.admin-overview-hero:after{content:"";position:absolute;right:17%;top:-90px;width:230px;height:230px;border:1px solid rgba(255,255,255,.13);border-radius:50%;box-shadow:0 0 0 38px rgba(255,255,255,.035),0 0 0 76px rgba(255,255,255,.025)}.admin-overview-hero>div{position:relative;z-index:1}.admin-overview-hero .section-kicker{color:#d6e8dc}.admin-overview-hero h2{margin:6px 0 5px;font:800 27px serif}.admin-overview-hero p{margin:0;color:rgba(255,255,255,.76)}.admin-live-pill{min-width:170px;padding:12px 15px;border:1px solid rgba(255,255,255,.24);border-radius:14px;background:rgba(255,255,255,.12);backdrop-filter:blur(8px)}.admin-live-pill i{display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%;background:#82e8a4;box-shadow:0 0 0 5px rgba(130,232,164,.14);animation:admin-live-pulse 1.8s infinite}.admin-live-pill span{font-size:11px}.admin-live-pill span b{font-size:19px}.admin-live-pill small{display:block;margin:4px 0 0 19px;color:rgba(255,255,255,.65);font-size:9px}@keyframes admin-live-pulse{50%{box-shadow:0 0 0 9px rgba(130,232,164,0)}}
.admin-overview-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:15px}.admin-overview-metric{position:relative;overflow:hidden;min-height:112px;padding:17px 18px;border:1px solid var(--line);border-radius:17px;background:var(--panel);box-shadow:0 7px 22px rgba(39,63,53,.055)}.admin-overview-metric:after{content:"";position:absolute;right:-18px;bottom:-25px;width:86px;height:86px;border-radius:50%;background:var(--metric-soft,#e8efe8)}.admin-overview-metric>span,.admin-overview-metric>b,.admin-overview-metric>small{position:relative;z-index:1;display:block}.admin-overview-metric>span{color:var(--muted);font-size:10px;font-weight:900}.admin-overview-metric>b{margin:8px 0 5px;color:var(--metric-color,var(--ink));font-size:28px;line-height:1.05}.admin-overview-metric>small{color:var(--muted);font-size:9px}.admin-overview-metric>small strong{color:var(--metric-color,var(--sage-dark));font-size:11px}.admin-overview-metric.users{--metric-color:#3c715e;--metric-soft:#e2f0e9}.admin-overview-metric.active{--metric-color:#2d7085;--metric-soft:#e0eff3}.admin-overview-metric.duration{--metric-color:#7860a0;--metric-soft:#ece6f5}.admin-overview-metric.data{--metric-color:#9a6b28;--metric-soft:#f5ead7}
.admin-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(310px,.75fr);gap:15px}.admin-dashboard-grid>.admin-card{min-width:0}.admin-card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:13px}.admin-card-heading h3{margin:4px 0 0;font:800 17px serif}.admin-chart-legend{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:11px;color:var(--muted);font-size:9px}.admin-chart-legend span:before{content:"";display:inline-block;width:8px;height:8px;margin-right:5px;border-radius:50%;background:#5d876f}.admin-chart-legend .login:before{background:#d0924c}.admin-chart-legend .new:before{background:#8a71b2}.admin-trend-svg{display:block;width:100%;height:auto;min-height:215px}.admin-chart-grid{stroke:color-mix(in srgb,var(--line) 75%,transparent);stroke-width:1;stroke-dasharray:4 5}.admin-chart-axis{fill:var(--muted);font-size:9px}.admin-chart-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.admin-chart-line.active{stroke:#5d876f}.admin-chart-line.login{stroke:#d0924c}.admin-chart-line.new{stroke:#8a71b2}.admin-chart-dot{stroke:var(--panel);stroke-width:2}.admin-chart-dot.active{fill:#5d876f}.admin-chart-dot.login{fill:#d0924c}.admin-chart-dot.new{fill:#8a71b2}
.admin-duration-card .admin-card-heading>strong{color:#7860a0;font-size:15px}.admin-duration-bars{display:flex;align-items:stretch;justify-content:space-between;gap:8px;height:218px;padding-top:25px}.admin-duration-day{display:grid;grid-template-rows:1fr auto;gap:8px;width:100%;text-align:center}.admin-duration-track{position:relative;display:flex;align-items:flex-end;justify-content:center;height:100%;border-radius:8px;background:linear-gradient(to top,color-mix(in srgb,#8a71b2 7%,transparent),transparent)}.admin-duration-track>span{position:relative;width:min(29px,68%);min-height:2px;border-radius:7px 7px 3px 3px;background:linear-gradient(to top,#6d578f,#a58bc9);box-shadow:0 6px 14px rgba(112,83,151,.18);transition:height .35s}.admin-duration-track em{position:absolute;left:50%;top:-18px;color:#7860a0;font-size:8px;font-style:normal;white-space:nowrap;transform:translateX(-50%)}.admin-duration-day>small{color:var(--muted);font-size:8px}.admin-duration-card>p{margin:13px 0 0!important;padding-top:11px;border-top:1px solid var(--line);font-size:9px!important}.admin-ranking-card,.admin-system-card{min-height:225px}.admin-usage-ranking{display:grid;gap:9px}.admin-rank-row{display:grid;grid-template-columns:25px minmax(0,1fr) auto;align-items:center;gap:9px}.admin-rank-row>b{display:grid;width:25px;height:25px;place-items:center;border-radius:8px;background:var(--sage-soft);color:var(--sage-dark);font-size:10px}.admin-rank-row>div{min-width:0}.admin-rank-row span,.admin-rank-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-rank-row span{font-size:10px;font-weight:900}.admin-rank-row small{color:var(--muted);font-size:8px}.admin-rank-row i{display:block;height:4px;margin-top:5px;overflow:hidden;border-radius:99px;background:var(--theme-table)}.admin-rank-row i em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--sage),#9bb083)}.admin-rank-row>strong{color:var(--sage-dark);font-size:9px;white-space:nowrap}.admin-chart-empty{display:grid;min-height:145px;place-items:center;padding:20px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:10px;text-align:center}.admin-system-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:19px 0}.admin-system-stats span{padding:13px 7px;border-radius:12px;background:var(--theme-table);text-align:center}.admin-system-stats b,.admin-system-stats small{display:block}.admin-system-stats b{font-size:21px}.admin-system-stats small{margin-top:4px;color:var(--muted);font-size:8px}.admin-system-card footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;background:var(--sage-soft);color:var(--sage-dark);font-size:9px}.admin-system-card code{max-width:68%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-system-card .user-status{flex:none}
@media(max-width:1120px){.admin-overview-metrics{grid-template-columns:repeat(2,1fr)}.admin-dashboard-grid{grid-template-columns:1fr}.admin-duration-bars{height:190px}}@media(max-width:620px){.admin-overview-hero{align-items:flex-start;flex-direction:column;padding:21px}.admin-live-pill{width:100%}.admin-overview-metrics{grid-template-columns:1fr 1fr}.admin-overview-metric{min-height:105px;padding:14px}.admin-overview-metric>b{font-size:23px}.admin-card-heading{flex-direction:column}.admin-chart-legend{justify-content:flex-start}.admin-system-stats{grid-template-columns:repeat(2,1fr)}.admin-system-card footer{align-items:flex-start;flex-direction:column}.admin-system-card code{max-width:100%}}@media(max-width:420px){.admin-overview-metrics{grid-template-columns:1fr}}

/* Keep these final so later feature styles cannot reintroduce Android overflow. */
@media(max-width:900px){
  .app-shell,.main,.topbar,.content,.view.active{min-width:0!important;max-width:100%!important}
  .topbar{width:auto!important;overflow:hidden!important}
  .topbar-title,.topbar-copy{min-width:0!important;overflow:hidden!important}
  .topbar-title #todayLabel{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .topbar .top-actions{min-width:0;flex-shrink:0}
  .content{width:100%!important;margin-inline:0!important}
}
@media(max-width:520px){
  .topbar .manual-doc-btn{display:none!important}
  .notification-btn,.appearance-btn{width:36px!important;min-width:36px!important;height:36px!important;padding:0!important}
}
@media(max-width:380px){.pixel-alarm.topbar-robot{display:none!important}}

/* 百度资源库 */
.netdisk-shell{display:grid;gap:14px;min-width:0}.netdisk-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.netdisk-head h2{margin:5px 0 0;font:800 25px serif}.netdisk-live{display:flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid color-mix(in srgb,#3d8a63 35%,var(--line));border-radius:999px;background:color-mix(in srgb,#dff1e6 76%,var(--panel));color:#356c51;font-size:10px;font-weight:900;white-space:nowrap}.netdisk-live i{width:8px;height:8px;border-radius:50%;background:#3ca46b;box-shadow:0 0 0 4px rgba(60,164,107,.13)}
.netdisk-breadcrumbs{display:flex;align-items:center;gap:6px;min-width:0;padding:10px 0;overflow-x:auto;scrollbar-width:thin}.netdisk-breadcrumbs button{flex:0 0 auto;padding:5px 7px;border:0;border-radius:6px;background:transparent;color:var(--sage-dark);font:800 11px inherit;cursor:pointer}.netdisk-breadcrumbs button:hover{background:var(--sage-soft)}.netdisk-breadcrumbs button:disabled{color:var(--ink);cursor:default}.netdisk-breadcrumbs span{color:var(--muted)}
.netdisk-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.netdisk-search{display:flex;align-items:center;gap:9px;min-width:0;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--theme-input);color:var(--muted)}.netdisk-search input{width:100%;min-width:0;height:42px;padding:0;border:0;background:transparent;outline:0}.netdisk-refresh{min-width:88px;border-radius:8px}.netdisk-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px}.netdisk-summary b{color:var(--ink)}
.netdisk-list{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 7px 24px rgba(38,60,50,.05)}.netdisk-item{display:grid;width:100%;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:66px;padding:10px 15px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink);text-align:left}.netdisk-item:last-child{border-bottom:0}.netdisk-item.directory{font:inherit;cursor:pointer}.netdisk-item.directory:hover{background:color-mix(in srgb,var(--sage-soft) 54%,var(--panel))}.netdisk-item-icon{display:grid;width:38px;height:38px;place-items:center;border-radius:8px;background:#e9edf0;color:#62717a;font-size:19px}.netdisk-item-icon.folder{background:#f7e8bd;color:#a87921}.netdisk-item-name{min-width:0}.netdisk-item-name b,.netdisk-item-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.netdisk-item-name b{font-size:12px}.netdisk-item-name small{margin-top:5px;color:var(--muted);font-size:9px;font-weight:600}.netdisk-item-arrow{color:var(--muted);font-size:22px}.netdisk-pagination{display:flex;align-items:center;justify-content:center;gap:12px}.netdisk-pagination span{min-width:60px;color:var(--muted);font-size:10px;text-align:center}.netdisk-pagination button{border-radius:8px}.netdisk-pagination button:disabled{opacity:.42;cursor:not-allowed}
.netdisk-loading,.netdisk-error,.netdisk-empty{display:grid;place-items:center;align-content:center;gap:8px;min-height:300px;padding:30px;color:var(--muted);text-align:center}.netdisk-loading i{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--sage);border-radius:50%;animation:netdisk-spin .8s linear infinite}.netdisk-loading b,.netdisk-error b,.netdisk-empty b{color:var(--ink)}.netdisk-error>span{display:grid;width:52px;height:52px;place-items:center;border-radius:8px;background:var(--sage-soft);color:var(--sage-dark);font-weight:900}.netdisk-error p{max-width:460px;margin:0;font-size:11px;line-height:1.65}.netdisk-error small{font-size:9px}.netdisk-error button{margin-top:7px}.netdisk-empty{min-height:210px}.netdisk-empty span{font-size:10px}@keyframes netdisk-spin{to{transform:rotate(360deg)}}
html[data-mode="dark"] .netdisk-item-icon.folder{background:#473e28;color:#e2bd69}html[data-mode="dark"] .netdisk-item-icon.file{background:#293238;color:#aebdc6}html[data-mode="dark"] .netdisk-live{background:#213a2c;color:#a9d9bb}
@media(max-width:620px){.netdisk-shell{gap:11px}.netdisk-head h2{font-size:21px}.netdisk-toolbar{grid-template-columns:minmax(0,1fr) 42px}.netdisk-refresh{width:42px;min-width:42px;padding:0}.netdisk-refresh span{display:none}.netdisk-summary{align-items:flex-start;flex-direction:column;gap:4px}.netdisk-item{grid-template-columns:38px minmax(0,1fr) auto;gap:9px;min-height:62px;padding:9px 10px}.netdisk-item-icon{width:35px;height:35px}.netdisk-item-name b{font-size:11px}.netdisk-item-name small{font-size:8px}.netdisk-pagination{justify-content:space-between}.netdisk-pagination button{min-height:40px}}

/* Node 后端连接状态 */
.backend-status-banner{position:fixed;z-index:10000;top:12px;left:50%;display:flex;align-items:center;gap:12px;width:min(690px,calc(100vw - 28px));min-height:58px;padding:9px 11px 9px 14px;border:1px solid #d5524a;border-radius:8px;background:#fff5f3;color:#762c28;box-shadow:0 14px 38px rgba(94,35,31,.2);transform:translateX(-50%)}
.backend-status-banner[hidden]{display:none}.backend-status-banner.syncing,.backend-status-banner.checking{border-color:#d69a32;background:#fff9e9;color:#654814}.backend-status-banner.conflict{border-color:#bd7130;background:#fff5e9;color:#70431e}.backend-status-icon{display:grid;flex:0 0 30px;width:30px;height:30px;place-items:center;border-radius:50%;background:#d5524a;color:#fff;font-size:17px;font-weight:900}.backend-status-banner.syncing .backend-status-icon,.backend-status-banner.checking .backend-status-icon,.backend-status-banner.conflict .backend-status-icon{background:#d69a32}.backend-status-copy{min-width:0;flex:1}.backend-status-copy b,.backend-status-copy small{display:block}.backend-status-copy b{font-size:13px}.backend-status-copy small{margin-top:3px;font-size:10px;line-height:1.4}.backend-status-banner button{flex:0 0 auto;min-height:34px;padding:0 12px;border:1px solid currentColor;border-radius:7px;background:transparent;color:inherit;font-size:11px;font-weight:900}.backend-status-banner button:disabled{opacity:.5}.backend-offline .local-note:before{background:#d5524a!important;box-shadow:0 0 0 4px rgba(213,82,74,.12)!important}
@media(max-width:600px){.backend-status-banner{align-items:flex-start;top:8px;gap:9px;padding:10px}.backend-status-icon{flex-basis:26px;width:26px;height:26px}.backend-status-copy b{font-size:12px}.backend-status-copy small{font-size:9px}.backend-status-banner button{padding:0 8px;font-size:9px}}
