@media(max-width:640px){table[data-v-d6cd0a54],tbody[data-v-d6cd0a54]{display:block;width:100%}thead[data-v-d6cd0a54]{display:none}tr[data-v-d6cd0a54]{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px 0;border-bottom:1px solid #d5dfe7}td[data-v-d6cd0a54]{display:block;min-width:0;padding:0;border:0}td[data-v-d6cd0a54]:first-child,td[data-v-d6cd0a54]:last-child,td[data-v-d6cd0a54]:nth-child(4){grid-column:1 / -1}td[data-v-d6cd0a54]:first-child{font-weight:600}td[data-v-d6cd0a54]:nth-child(2):before{content:"开始日期";display:block;color:#526679}td[data-v-d6cd0a54]:nth-child(3):before{content:"实际结束日期";display:block;color:#526679}td[data-v-d6cd0a54]:nth-child(4):before{content:"状态：";color:#526679}}.field>span[data-v-31845f3a]{display:block;font-weight:600;margin-bottom:6px;font-size:13.5px;color:var(--muted)}.field-hint[data-v-31845f3a]{font-weight:500}.deduct[data-v-939e7e67]{padding-bottom:86px}@media(min-width:960px){.deduct[data-v-939e7e67]{padding-bottom:0}}.totals-note[data-v-939e7e67]{color:var(--muted);font-size:13px}.status-stack[data-v-43cfd0cd]{margin-bottom:12px}.student-maintenance[data-v-650ccce7]{display:grid;gap:16px;min-width:0}.maintenance-filters[data-v-650ccce7]{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;align-items:end;gap:12px}.maintenance-filters input[data-v-650ccce7],.maintenance-filters select[data-v-650ccce7],.maintenance-fields input[data-v-650ccce7]{width:100%}.maintenance-list[data-v-650ccce7]{margin:12px 0;border-top:1px solid var(--line)}.maintenance-row[data-v-650ccce7]{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:12px;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:12px 8px;font-weight:400}.maintenance-row small[data-v-650ccce7]{display:block;color:var(--muted);margin-top:3px}.maintenance-open[data-v-650ccce7]{color:var(--accent);font-size:13px}.maintenance-row.selected[data-v-650ccce7],.maintenance-modes .selected[data-v-650ccce7]{background:var(--teal-soft);color:var(--teal-strong);border-left:3px solid var(--accent)}.maintenance-editor fieldset[data-v-650ccce7]{min-width:0;padding:0;border:0;margin:16px 0}.maintenance-editor[data-v-650ccce7]{scroll-margin-top:100px}.maintenance-editor form[data-v-650ccce7]{display:grid;gap:16px}.maintenance-editor form>button[data-v-650ccce7]{justify-self:start}.maintenance-fields[data-v-650ccce7]{display:grid;grid-template-columns:1fr 1fr;gap:16px}.maintenance-wide[data-v-650ccce7]{grid-column:1 / -1}.maintenance-modes[data-v-650ccce7]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.maintenance-partner-search[data-v-650ccce7]{display:flex;flex-wrap:wrap;align-items:end;gap:12px}.maintenance-history[data-v-650ccce7]{margin-top:20px;border-top:1px solid var(--line);padding-top:16px}.maintenance-history summary[data-v-650ccce7]{cursor:pointer;font-weight:600}.maintenance-history-row[data-v-650ccce7]{border-bottom:1px solid var(--line);padding:14px 0}.maintenance-history-row small[data-v-650ccce7]{display:block;color:var(--muted)}.maintenance-confirm[data-v-650ccce7]{max-height:85dvh;overflow:auto;overflow-wrap:anywhere}.maintenance-ack[data-v-650ccce7]{display:flex;align-items:flex-start;gap:8px;padding:12px;background:var(--warn-soft);color:var(--warn)}.maintenance-ack input[data-v-650ccce7]{flex-shrink:0}@media(max-width:767px){.maintenance-filters[data-v-650ccce7]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.maintenance-filters[data-v-650ccce7]>:first-child,.maintenance-filters>button[data-v-650ccce7]{grid-column:1 / -1}.maintenance-fields[data-v-650ccce7]{grid-template-columns:1fr}.maintenance-row[data-v-650ccce7]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.maintenance-open[data-v-650ccce7]{grid-column:1 / -1}.maintenance-modes button[data-v-650ccce7]{flex:1;padding:10px 8px}.maintenance-partner-search[data-v-650ccce7]>*,.maintenance-partner-search input[data-v-650ccce7]{width:100%}}@media(max-width:959px){.filters.collapsed[data-v-87cf02e9]{display:none}}@media(min-width:960px){.mobile-only[data-v-87cf02e9]{display:none}}:root{--navy: #253F59;--navy-strong: #1C3045;--accent: #315E86;--teal: var(--accent);--teal-strong: #24496A;--teal-soft: #EDF2F7;--bg: #F3F5F7;--card: #FFFFFF;--line: #DCE1E7;--text: #263442;--muted: #596979;--danger: #A8432C;--danger-soft: #FBEDE8;--warn: #8A6410;--warn-soft: #FCF4E2;--ok: #1F6B4F;--radius: 6px;--radius-sm: 4px;--bottom-nav: 62px;--sidebar: 216px;--shadow: none;font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-size:14px;line-height:1.5;font-variant-numeric:tabular-nums;background:var(--bg);color:var(--text);overflow-wrap:anywhere}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{line-height:1.3}h2{font-size:18px;margin:0 0 12px}h3{font-size:15px;margin:18px 0 8px}p{line-height:1.6;margin:8px 0}small{font-size:12.5px}button{background:var(--teal);color:#fff;border:0;border-radius:var(--radius-sm);padding:11px 16px;min-height:44px;cursor:pointer;font-weight:600;transition:background-color .15s,border-color .15s,color .15s}button:hover:not(:disabled){background:var(--teal-strong)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #567DA3;outline-offset:2px}button.light{background:#fff;color:var(--teal-strong);border:1px solid var(--line)}button.light:hover:not(:disabled){background:var(--teal-soft)}button.ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}button.ghost:hover:not(:disabled){background:#eef1f4}button.danger{background:var(--danger)}button.danger:hover:not(:disabled){background:#8e3524}button.small{min-height:34px;padding:6px 10px;font-size:13px}button.block{width:100%}button.tile{text-align:left;display:flex;flex-direction:column;gap:4px;padding:14px}input,select,textarea{border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 11px;background:#fff;max-width:100%;min-height:44px}textarea{min-height:78px;width:100%}input[type=checkbox]{min-height:0;width:20px;height:20px;accent-color:var(--teal)}label{font-size:14px}.card>input,.card>select,.card>textarea{display:block;width:100%;margin:9px 0}.card>label{display:block;margin:10px 0}.card>label input,.card>label select{display:block;width:100%;margin-top:6px}.field{display:block;margin:12px 0}.field>span{display:block;font-weight:600;margin-bottom:6px;font-size:13.5px;color:var(--muted)}.field>input,.field>select,.field>textarea{width:100%}.filters{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;align-items:center}.filters>*{min-width:0}.check{display:inline-flex;align-items:center;gap:8px;color:var(--muted)}.empty{color:var(--muted);padding:14px 0}.alert{background:var(--danger-soft);color:var(--danger);padding:11px 14px;border-radius:var(--radius-sm);display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.notice{background:#e8f4ee;color:var(--ok);padding:11px 14px;border-radius:var(--radius-sm)}.app-shell{min-height:100vh;min-height:100dvh}.topbar{background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top));position:sticky;top:0;z-index:30}.topbar-title{min-width:0;flex:1 1 auto}.topbar-title strong{display:block;font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-title small{display:block;color:#c6d6e4;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .who{color:#dce7f0;font-size:13px;margin-right:8px;white-space:nowrap}.topbar-user{display:flex;align-items:center;flex:0 0 auto}.topbar button{min-height:44px;padding:8px 14px;background:#ffffff29;color:#fff;white-space:nowrap;flex:0 0 auto}.topbar button:hover{background:#ffffff42}@media(max-width:430px){.topbar .who{display:none}.topbar button{padding:8px 12px}}.shell-body{display:block}.sidebar{display:none}.side-nav button{display:block;width:100%;text-align:left;margin-bottom:4px}.content{padding:14px 14px calc(var(--bottom-nav) + 26px + env(safe-area-inset-bottom));min-width:0}.content-inner{max-width:1320px;margin:0 auto;min-width:0}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav button{min-height:44px;height:var(--bottom-nav);background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:0;font-size:12px;font-weight:600;padding:0 4px}.nav-icon{width:20px;height:20px;flex:0 0 20px}.bottom-nav button:hover:not(:disabled){background:var(--teal-soft);color:var(--teal-strong)}.bottom-nav button.active{color:var(--teal);box-shadow:inset 0 3px 0 var(--teal);background:var(--teal-soft)}@media(min-width:960px){.app-shell{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}.app-shell.has-sidebar{grid-template-columns:var(--sidebar) minmax(0,1fr)}.topbar{grid-column:1 / -1;padding:13px 24px;min-height:76px}.sidebar{display:flex;flex-direction:column;gap:14px;padding:20px 14px;background:#fff;border-right:1px solid var(--line);min-height:0}.side-brand{padding:0 8px}.side-brand strong{display:block;color:var(--navy);font-size:15px}.side-brand small{color:var(--muted)}.side-nav button{background:transparent;color:var(--navy);font-weight:600;border-radius:var(--radius-sm)}.side-nav button:hover{background:var(--teal-soft)}.side-nav button.active{background:var(--teal-soft);color:var(--teal-strong);box-shadow:inset 3px 0 var(--teal)}.side-foot{margin-top:auto;color:var(--muted);font-size:12.5px;padding:0 8px}.bottom-nav{display:none}.content{padding:22px 24px 60px}}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);min-width:0;margin-bottom:14px}.grid{display:grid;grid-template-columns:1fr;gap:14px}@media(min-width:900px){.grid.two{grid-template-columns:1fr 1fr}}.wide{grid-column:1 / -1}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.section-heading h2{margin:2px 0 0}.eyebrow{font-size:12px;font-weight:500;color:var(--muted)}.hint{color:var(--muted);font-size:12.5px;text-align:right}.scope-pill{background:#fff;color:var(--muted);border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 13px;font-size:12.5px;font-weight:700;white-space:nowrap}.intro{padding-bottom:16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.intro h1{margin:0;font-size:clamp(21px,3vw,25px);font-weight:600}.intro p{margin:5px 0 0;color:var(--muted);font-size:13.5px}.login-wrap{display:grid;place-items:center;min-height:78vh;padding:16px}.login-card{width:100%;max-width:420px;padding:32px;border-top:3px solid var(--navy)}.login-card input{width:100%}.dashboard{display:grid;grid-template-columns:1fr;gap:14px;align-items:start}@media(min-width:1000px){.dashboard{grid-template-columns:minmax(0,1.3fr) minmax(300px,.8fr)}}.range,.updated{color:var(--muted);font-size:12.5px}.updated{display:block;margin-top:12px}.ranking-list,.personal-rank-list{list-style:none;margin:0;padding:0;display:grid;gap:0}.personal-rank-choice{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;color:var(--text);border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;padding:12px 8px}.personal-rank-choice:hover:not(:disabled){background:var(--teal-soft);color:var(--text)}.personal-rank-name{display:grid;gap:2px;min-width:0;flex:1}.personal-rank-name strong,.personal-rank-name small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.personal-rank-name small{color:var(--muted);font-size:12px}.personal-rank-points{white-space:nowrap;color:var(--navy)}.class-deduction-list{list-style:none;margin:0;padding:0;display:grid;gap:7px}.class-deduction-list li{display:flex;align-items:baseline;gap:12px;padding:9px 11px;border:1px solid var(--line);border-radius:var(--radius-sm)}.class-deduction-list li span{min-width:0;flex:1;overflow-wrap:anywhere}.class-deduction-list li time{color:var(--muted);white-space:nowrap}.class-deduction-list li strong{color:var(--navy);white-space:nowrap}.ranking-list li{display:flex;align-items:center;gap:11px;padding:12px 8px;border:0;border-bottom:1px solid var(--line);border-radius:0;min-width:0}.ranking-list li.mine{border-color:var(--teal);background:var(--teal-soft)}.ranking-list li.selected{border-color:var(--teal);background:var(--teal-soft);box-shadow:inset 3px 0 var(--teal)}.ranking-choice{display:flex;align-items:center;gap:11px;width:100%;min-width:0;padding:0;border:0;background:transparent;color:var(--text);text-align:left;box-shadow:none}.ranking-choice:disabled{opacity:1;cursor:default}.ranking-choice:not(:disabled):hover{background:transparent;color:var(--teal)}.record-search{position:relative;min-width:180px;flex:1}.record-search input{width:100%}.record-options{display:grid;gap:4px;max-height:220px;overflow-y:auto;margin-top:4px;padding:4px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff}.record-options button{text-align:left;background:#fff;color:var(--text);border:0;box-shadow:none}.record-options button:hover{background:var(--bg)}.medal{display:grid;place-items:center;min-width:34px;height:34px;border-radius:0;color:var(--muted);background:transparent;font-weight:600}.rank-content{flex:1;min-width:0}.rank-label{display:flex;justify-content:space-between;gap:10px;font-size:14px}.rank-label strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-label small{color:var(--teal);margin-left:4px}.rank-label>span{font-weight:700;white-space:nowrap}.bar-track{height:4px;background:#edf1f4;border-radius:0;margin-top:8px;overflow:hidden}.bar-track span{display:block;height:100%;border-radius:0;background:#7792ad}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stats div{background:#fff;border-right:1px solid var(--line);padding:13px 6px;border-radius:var(--radius-sm);text-align:center;min-width:0}.stats strong{display:block;font-size:23px;color:var(--navy)}.stats span{font-size:12px;color:var(--muted)}.quick-actions{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}.semester-form{display:grid;gap:8px}.student-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.student-card{text-align:left;display:flex;flex-direction:column;gap:6px;padding:13px;background:#fcfdfe;color:var(--text);border:1px solid var(--line);border-radius:var(--radius-sm);font-weight:500}.student-card:hover{background:var(--teal-soft);border-color:var(--teal)}.student-card.risk{border-left:4px solid var(--danger)}.student-card.departed{opacity:.72}.student-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.student-top strong{font-size:16px}.student-card small,.recent{font-size:12.5px;color:var(--muted)}.student-metrics{font-weight:700;color:var(--navy)}.risk-tag,.muted-tag{background:var(--danger-soft);color:var(--danger);border-radius:var(--radius-sm);padding:3px 8px;font-size:11.5px;font-weight:800;white-space:nowrap}.muted-tag{background:#edf1f4;color:var(--muted)}.risk-reasons{color:var(--danger);font-size:13px;font-weight:700}.compact-students{display:grid;gap:5px;max-height:340px;overflow:auto}.student-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;text-align:left;background:#f7f9fb;color:var(--text);font-weight:500;padding:10px 12px}.student-row span{font-size:12.5px}.detail-events{display:grid;gap:0}.detail-events>div{display:grid;grid-template-columns:1fr;gap:3px;padding:10px 0;border-bottom:1px solid var(--line)}@media(min-width:700px){.detail-events>div{grid-template-columns:150px 1fr auto;gap:12px}}.detail-events time,.detail-events span{color:var(--muted);font-size:13px}.deduct{display:grid;grid-template-columns:1fr;gap:14px;align-items:start}@media(min-width:1000px){.deduct{grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr)}}.deduct-col{min-width:0}.dorm-search input{width:100%}.dorm-list{display:grid;gap:6px;margin-top:8px}.dorm-item{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#f7f9fb;color:var(--text);border:1px solid var(--line);font-weight:600;padding:11px 13px;text-align:left}.dorm-item.selected{border-color:var(--teal);background:var(--teal-soft)}.dorm-item .match-tag{font-size:11.5px;font-weight:700;color:var(--teal-strong);background:#fff;border-radius:var(--radius-sm);padding:3px 8px}.dorm-item .dorm-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-chip{display:inline-flex;align-items:center;gap:8px;background:var(--navy);color:#fff;border-radius:var(--radius-sm);padding:7px 13px;font-weight:700}.disclaimer{color:var(--muted);font-size:12.5px;margin:8px 0 0}.rule-grid{display:grid;grid-template-columns:1fr;gap:8px}@media(min-width:560px){.rule-grid{grid-template-columns:1fr 1fr}}.rule-btn{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;background:#f7f9fb;color:var(--navy);border:1px solid var(--line);min-height:64px;padding:12px 14px}.rule-btn strong{font-size:15.5px}.rule-btn small{color:var(--muted);font-weight:500}.rule-btn.selected{background:var(--teal);color:#fff;border-color:var(--teal)}.rule-btn.selected small{color:#fff}.rule-btn.serious{border-left:4px solid var(--danger)}.stake-notice{background:var(--danger-soft);color:var(--danger);border-radius:var(--radius-sm);padding:11px 13px;margin-top:10px;font-size:13.5px;font-weight:600}.select-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0 8px}.select-bar .count{color:var(--muted);font-size:13px;margin-left:auto}.bed-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;padding:12px;cursor:pointer;display:grid;gap:5px;text-align:left}.bed-card.selected{border-color:var(--teal);background:var(--teal-soft)}.bed-card.ineligible{opacity:.62;cursor:not-allowed}.bed-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.bed-tag{background:var(--navy);color:#fff;border-radius:8px;padding:3px 8px;font-size:12.5px;font-weight:700}.bed-tag.empty{background:var(--muted)}.ineligible-reason{color:var(--danger);font-size:12.5px}.date-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:420px){.date-row{grid-template-columns:1fr}}.period-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.period-row button{background:#f7f9fb;color:var(--navy);border:1px solid var(--line)}.period-row button.selected{background:var(--teal);color:#fff;border-color:var(--teal)}.action-bar{position:fixed;left:0;right:0;z-index:35;bottom:calc(var(--bottom-nav) + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);padding:10px 14px;display:flex;gap:10px;align-items:center;justify-content:space-between;box-shadow:none}.action-bar .summary{font-size:12.5px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis}.action-bar button{white-space:nowrap}@media(min-width:960px){.action-bar{position:static;border:1px solid var(--line);border-radius:var(--radius);box-shadow:none;margin-top:12px}}.dialog-backdrop{position:fixed;inset:0;background:#10253880;display:grid;place-items:center;z-index:60;padding:14px}.dialog-card{background:#fff;border-radius:var(--radius);width:100%;max-width:620px;max-height:86vh;overflow:auto;padding:18px}.dialog-card h2{margin-top:0}.group-block{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;margin:8px 0}.group-block h3{margin-top:0}.totals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.totals div{background:var(--bg);border-radius:var(--radius-sm);padding:10px 6px;text-align:center}.totals strong{display:block;font-size:19px;color:var(--navy)}.totals span{font-size:12px;color:var(--muted)}.warn-box{background:var(--warn-soft);color:var(--warn);border-radius:var(--radius-sm);padding:11px 13px;font-size:13.5px;margin:10px 0}.pending-box{background:var(--warn-soft);color:var(--warn);border-radius:var(--radius-sm);padding:12px 13px;margin-bottom:12px;display:grid;gap:9px}.result-box{background:#e8f4ee;border-radius:var(--radius-sm);padding:13px;margin-bottom:12px}.result-box h3{margin-top:0}.dialog-actions{display:flex;flex-wrap:wrap;gap:9px;justify-content:flex-end;margin-top:14px}.record-list{display:grid;gap:0}.record-row{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:16px 4px;min-width:0}.record-row strong,.record-row small{display:block}.record-row small{color:var(--muted);margin-top:5px}.record-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.record-actions{display:flex;flex-wrap:wrap;gap:6px}.record-detail{border:1px solid var(--teal);border-radius:var(--radius-sm);padding:14px;background:#f7f9fb}.batch-line{color:var(--muted);font-size:12.5px;margin-top:6px}.collapse-head{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;background:transparent;color:var(--navy);padding:0;min-height:44px;font-weight:700}.pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px}.pager button:disabled{opacity:.45;cursor:not-allowed}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;margin-top:10px;font-size:13.5px}th,td{text-align:left;padding:9px 7px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-weight:600;background:#f3f5f7}tbody tr:hover{background:#f7f9fb}.mapping{display:flex;gap:10px;align-items:center;margin:8px 0;flex-wrap:wrap}.mapping span{min-width:90px}.student-options{max-height:210px;overflow:auto;display:grid;grid-template-columns:1fr;gap:6px;margin:8px 0 14px}@media(min-width:560px){.student-options{grid-template-columns:1fr 1fr}}.student-options label{display:flex;align-items:center;gap:8px;font-size:13.5px}.audit-list{display:grid;gap:8px}.audit-list details{border:1px solid var(--line);border-radius:var(--radius-sm);padding:11px}.audit-list summary{cursor:pointer;font-weight:700}.audit-values{display:grid;grid-template-columns:1fr;gap:10px}@media(min-width:760px){.audit-values{grid-template-columns:1fr 1fr}}.audit-values pre{white-space:pre-wrap;word-break:break-word;background:var(--bg);padding:10px;border-radius:8px;max-height:240px;overflow:auto;font-size:12px}.more-list{display:grid;gap:10px}@media(min-width:640px){.more-list{grid-template-columns:1fr 1fr}}.selected-choice{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}.choice-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;background:#f7f9fb;color:var(--navy);border:1px solid var(--line);padding:12px 14px}.choice-toggle span{flex:none;color:var(--teal);font-size:12px}.rule-list{display:grid;gap:6px;max-height:280px;overflow-y:auto;margin-top:7px}.confirm-summary{font-weight:700;color:var(--navy);background:var(--teal-soft);border-radius:var(--radius-sm);padding:12px}.confirm-members{border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px}.confirm-members summary{cursor:pointer;font-weight:700}.teacher-detail-page{max-width:900px}.teacher-detail-page .section-heading{margin-top:14px}.teacher-view-nav{display:flex;gap:8px;flex-wrap:wrap}.teacher-view-nav button{background:#f7f9fb;color:var(--navy);border:1px solid var(--line)}.teacher-view-nav button.selected{background:var(--teal);color:#fff;border-color:var(--teal)}.teacher-dorm-list{display:grid;gap:7px;margin-top:12px}.teacher-dorm-list .dorm-item span{font-size:12px;color:var(--muted)}.record-participants{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin-top:8px;font-size:12px;color:var(--muted)}.student-entry{color:var(--teal);font-size:12px;font-weight:700}.school-mark{display:grid;place-items:center;width:36px;height:36px;border:1px solid #8EA3B7;border-radius:4px;flex-shrink:0}.school-mark .nav-icon{width:24px;height:24px}.side-nav button{display:flex;align-items:center;gap:12px}.side-nav .nav-group-start{margin-top:20px}.side-brand{padding-bottom:14px;border-bottom:1px solid var(--line)}.side-foot{line-height:1.8}.login-kicker{color:var(--muted);font-size:14px}.login-card h1{margin:18px 0 4px;font-size:26px;font-weight:600}.login-description{color:var(--muted);margin:0 0 24px}.login-help{margin:20px 0 0;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.login-card .block{margin-top:12px}.stats div:last-child{border-right:0}.section-heading{padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}.deduct .date-row{grid-template-columns:minmax(0,1fr)}.student-card:hover:not(:disabled),.student-row:hover:not(:disabled),.dorm-item:hover:not(:disabled),.bed-card:hover:not(:disabled),.choice-toggle:hover:not(:disabled),.rule-btn:not(.selected):hover:not(:disabled),.period-row button:not(.selected):hover:not(:disabled),.teacher-view-nav button:not(.selected):hover:not(:disabled){background:var(--teal-soft);color:var(--text);border-color:var(--teal)}.bed-card{color:var(--text)}.bed-card.selected{box-shadow:inset 3px 0 var(--teal)}.bed-card:disabled:not(.ineligible){opacity:1}button.tile{color:var(--text);border:1px solid var(--line);box-shadow:none}button.tile small{color:var(--muted);font-weight:400}button.tile:hover:not(:disabled){background:var(--teal-soft);color:var(--text)}.skip-link{position:fixed;left:16px;top:-80px;z-index:100;padding:12px;background:#fff;color:var(--navy)}.skip-link:focus{top:8px}@media(min-width:960px){.sidebar{position:sticky;top:76px;align-self:start;height:calc(100dvh - 76px);overflow-y:auto}.card{padding:20px}.login-card{padding:32px}.content{padding:28px 32px 60px}.intro{margin-bottom:24px}}@media(max-width:959px){body{font-size:15px}input,select,textarea{font-size:16px}button.small{min-height:44px}.content{padding-top:20px}.card{padding:16px}.intro{align-items:flex-start}.intro p{font-size:13px}.scope-pill{padding:5px 8px;font-weight:500}.record-head{flex-wrap:wrap}.record-actions{margin-top:8px}.section-heading{flex-wrap:wrap;gap:6px}.section-heading .hint{text-align:left}.class-deduction-list li{flex-wrap:wrap}.class-deduction-list li time{width:100%}.login-card{padding:24px}}@media(max-width:430px){.topbar-title strong{font-size:16px}.school-mark{width:30px;height:34px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.duty-shell{--bottom-nav: 0px}.duty-page{max-width:720px;margin:0 auto}.duty-page h1{font-size:24px;margin:0 0 16px}.duty-page button,.duty-page input,.duty-page select,.duty-page textarea{min-height:52px;font-size:16px}.duty-page .hint,.duty-page small,.duty-page .disclaimer{font-size:14px}.duty-tabs,.duty-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:20px}.duty-steps{grid-template-columns:repeat(3,minmax(0,1fr));scroll-margin-top:90px}.duty-tabs button,.duty-steps button{background:#fff;border:1px solid var(--line);color:var(--navy);padding:10px 5px}.duty-tabs button.selected,.duty-steps button.selected{background:var(--teal);color:#fff;border-color:var(--teal)}.duty-tabs button:hover:not(:disabled),.duty-steps button:hover:not(:disabled){background:var(--teal-strong);color:#fff}.duty-room{padding:12px;background:var(--teal-soft);font-size:17px;font-weight:600}.duty-page .simple-deduct{display:block}.duty-page .rule-list{max-height:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.duty-page .rule-btn{min-height:80px}.duty-page .bed-card{min-height:88px}.duty-next{margin-top:20px}.duty-page .action-bar{bottom:env(safe-area-inset-bottom);padding-bottom:max(10px,env(safe-area-inset-bottom))}.duty-history h3{margin-top:0}.duty-page .record-row{padding:20px 0}.dorm-account-form{max-width:480px;margin-bottom:16px}@media(max-width:430px){.duty-page .action-bar .summary{font-size:13px}}
