:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f3f1eb;--surface:#fffefa;--text:#20231f;--muted:#656b62;--line:#d9d8d0;--accent:#2f5a48;--accent-soft:#e3eee8;--warning:#8a5a24;--warning-soft:#f7ead7}.target-fieldset{border:1px solid var(--line);border-radius:16px;padding:18px}.target-fieldset legend{padding:0 6px;font-weight:700}.checkbox-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:12px;display:grid}.checkbox-option{background:var(--accent-soft);border-radius:10px;flex-direction:row;align-items:center;gap:8px;padding:10px;display:flex}.checkbox-option input{width:auto;margin:0}.event-fact-cell{white-space:normal;max-width:440px}.event-fact-detail{white-space:pre-wrap;line-height:1.8}.assistant-reply{white-space:pre-wrap;line-height:1.75}.target-list,.timeline-list{margin:12px 0 0;padding-left:20px}.timeline-list{gap:14px;padding-left:0;list-style:none;display:grid}.timeline-list li{border-top:1px solid var(--line);grid-template-columns:120px 1fr auto;align-items:start;gap:14px;padding-top:14px;display:grid}.timeline-list p{margin:4px 0 0}*{box-sizing:border-box}html{background:var(--background);min-height:100%}body{min-height:100vh;color:var(--text);background:radial-gradient(circle at 15% 15%, #fffc, transparent 32rem), var(--background);margin:0;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif}a{color:inherit}.shell{place-items:center;min-height:100vh;padding:32px 20px;display:grid}.panel{border:1px solid var(--line);background:#fffefaeb;border-radius:24px;width:min(720px,100%);padding:clamp(28px,5vw,56px);box-shadow:0 24px 70px #2c302a1a}.eyebrow{color:var(--accent);letter-spacing:.14em;margin:0 0 12px;font-size:12px;font-weight:700}h1{letter-spacing:-.04em;margin:0;font-size:clamp(34px,7vw,60px);line-height:1.08}h2{margin:0;font-size:22px;line-height:1.35}button,input,select,textarea{font:inherit}.summary{max-width:36rem;color:var(--muted);margin:24px 0 30px;font-size:17px;line-height:1.8}.link{color:#fff;background:var(--accent);border-radius:999px;justify-content:center;align-items:center;min-height:44px;padding:0 18px;font-weight:650;text-decoration:none;display:inline-flex}.button{border:1px solid var(--accent);color:#fff;background:var(--accent);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;min-height:44px;padding:0 18px;font-weight:700;display:inline-flex}.button:disabled{cursor:not-allowed;opacity:.45}.button-secondary{color:var(--accent);background:0 0}.button-small{min-height:38px;padding-inline:14px;font-size:14px}.button-row,.inline-form,.form-row,.field-pair,.page-heading,.card-heading{align-items:center;gap:12px;display:flex}.button-row{flex-wrap:wrap}.text-link{color:var(--accent);text-underline-offset:4px;font-weight:700}.auth-shell{align-items:center}.auth-panel{width:min(620px,100%)}.auth-panel h1,.page-heading h1{font-size:clamp(34px,6vw,54px)}.form-stack{gap:18px;display:grid}.form-stack label,.form-row label{color:var(--muted);gap:8px;font-size:14px;font-weight:700;display:grid}input,select,textarea{border:1px solid var(--line);width:100%;min-height:44px;color:var(--text);background:#fff;border-radius:11px;padding:10px 12px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:3px solid #2f5a4824}.form-message{border-radius:12px;padding:13px 16px;font-weight:650}.form-error{color:#7a2f2b;background:#f9e4df}.form-success{color:var(--accent);background:var(--accent-soft)}.app-frame{min-height:100vh}.app-header{border-bottom:1px solid var(--line);background:#fffefaeb;grid-template-columns:1fr auto auto;align-items:center;gap:24px;padding:18px clamp(20px,5vw,72px);display:grid}.app-header p{color:var(--muted);margin:4px 0 0;font-size:13px}.app-header nav{gap:20px;display:flex}.app-header nav a,.brand{font-weight:750;text-decoration:none}.brand{color:var(--accent)}.context-bar{border-bottom:1px solid var(--line);background:var(--accent-soft);justify-content:space-between;align-items:center;gap:20px;padding:14px clamp(20px,5vw,72px);display:flex}.context-bar>div{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.context-label,.card-kicker{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:800}.context-state{border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;display:inline-flex}.state-write{color:var(--accent);background:#fff}.state-read{color:var(--warning);background:var(--warning-soft)}.main-content{width:min(1180px,100% - 40px);margin:0 auto;padding:48px 0 80px}.page-stack{gap:28px;display:grid}.page-heading{justify-content:space-between;align-items:flex-end}.heading-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.card-grid,.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.card{border:1px solid var(--line);background:var(--surface);border-radius:18px;padding:24px;box-shadow:0 14px 38px #2c302a0f}.card h2{margin-top:8px}.card p{color:var(--muted);line-height:1.7}.card-wide{grid-column:1/-1}.card-heading{justify-content:space-between;align-items:flex-start}.empty-state{border:1px dashed var(--line);background:#ffffff8c;border-radius:16px;padding:28px}.compact-form{margin-top:22px}.field-pair>*{flex:1}.checkbox-label{align-items:center;grid-template-columns:none!important;display:flex!important}.checkbox-label input{width:18px;min-height:18px}.record-list{gap:8px;margin:22px 0 0;padding:0;list-style:none;display:grid}.record-list li{border-top:1px solid var(--line);justify-content:space-between;gap:16px;padding-top:10px;font-size:13px;display:flex}.record-list span,.muted{color:var(--muted)}.record-card{border-top:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:18px;padding:16px 0;display:flex}.record-card:first-child{border-top:0}.duty-week-list{gap:0}.duty-day-card{grid-template-columns:minmax(240px,.8fr) minmax(340px,1.2fr);padding:24px 0;display:grid}.duty-day-summary p{margin:8px 0}.duty-day-actions{gap:12px;display:grid}.duty-day-actions .compact-form{border:1px solid var(--line);background:#ffffff73;border-radius:14px;margin-top:0;padding:14px}.seating-draft-card{overflow:hidden}.seating-workbench{grid-template-columns:minmax(180px,.28fr) minmax(0,1fr);gap:1rem;display:grid}.student-palette{background:var(--background);border:1px solid var(--line);border-radius:1rem;padding:1rem}.student-token-list{gap:.5rem;margin-top:.8rem;display:grid}.student-token{background:var(--surface);border:1px solid var(--line);color:var(--text);cursor:grab;text-align:left;border-radius:.7rem;justify-content:flex-start;align-items:center;gap:.55rem;padding:.6rem .7rem;display:flex}.student-token[aria-pressed=true]{border-color:var(--accent);outline:2px solid color-mix(in srgb, var(--accent) 24%, transparent)}.student-token-assigned{opacity:.62}.seating-canvas-wrap{min-width:0;overflow-x:auto}.platform{background:var(--text);color:var(--surface);letter-spacing:.08em;text-align:center;border-radius:.55rem;max-width:320px;margin:0 auto 1rem;padding:.65rem 1rem;font-size:.82rem;font-weight:700}.seating-canvas,.read-only-seating-grid{gap:.7rem;min-width:max-content;display:grid}.seat-drop,.seat-readonly{background:var(--background);border:1px dashed var(--line);border-radius:.75rem;gap:.35rem;min-height:78px;padding:.55rem;display:grid}.seat-drop{cursor:pointer}.seat-drop button{color:var(--warning);cursor:pointer;background:0 0;border:0;justify-self:start;padding:0;font-size:.75rem}.seat-occupied{background:color-mix(in srgb, var(--accent) 8%, var(--surface));border-color:color-mix(in srgb, var(--accent) 45%, var(--line));border-style:solid}.seat-code{color:var(--muted);letter-spacing:.06em;font-size:.72rem}.publish-panel{background:var(--background);border:1px solid var(--line);border-radius:.9rem;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.2rem;padding:1rem;display:flex}.history-version-list,.version-board{gap:1rem;display:grid}.history-version-list .version-board+.version-board{border-top:1px solid var(--line);padding-top:1.25rem}.version-meta{flex-wrap:wrap;gap:.6rem 1rem;display:flex}.version-meta span{color:var(--muted)}.read-only-seating-grid{overflow-x:auto}.seat-readonly{min-width:92px}.page-description{color:var(--muted);margin:14px 0 0;line-height:1.6}.table-card{border:1px solid var(--line);background:var(--surface);border-radius:18px;overflow-x:auto;box-shadow:0 14px 38px #2c302a0f}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:16px 18px}.data-table th{color:var(--muted);letter-spacing:.06em;background:#e3eee873;font-size:12px}.data-table tr:last-child td{border-bottom:0}.data-table td:last-child,.data-table th:last-child{text-align:right}.status-dot{color:var(--accent);align-items:center;gap:7px;font-size:13px;font-weight:700;display:inline-flex}.status-dot:before{background:var(--accent);content:"";border-radius:50%;width:7px;height:7px}.detail-card{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px;display:grid}.detail-card>div{gap:8px;min-width:0;display:grid}.detail-value{font-size:18px}.read-only-notice{color:var(--warning);background:var(--warning-soft);border-radius:12px;margin:0;padding:14px 16px;font-weight:700}.summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:22px 0;display:grid}.summary-grid>div{border:1px solid var(--line);background:#e3eee859;border-radius:14px;gap:6px;padding:16px;display:grid}.summary-grid span{color:var(--muted);font-size:13px}.summary-grid strong{font-size:24px}.error-list{color:#7a2f2b;white-space:normal;margin:0;padding-left:18px}.commit-panel{background:var(--accent-soft);border-radius:14px;justify-content:space-between;align-items:center;gap:20px;margin-top:22px;padding:18px;display:flex}.commit-panel p{margin:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.link-muted{color:var(--accent);background:var(--accent-soft)}.status-row{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.badge{border-radius:999px;flex:none;padding:8px 12px;font-size:13px;font-weight:700}.badge-ok{color:var(--accent);background:var(--accent-soft)}.badge-warn{color:var(--warning);background:var(--warning-soft)}.health-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:34px 0;display:grid}.health-grid>div{border:1px solid var(--line);background:#fff;border-radius:14px;min-width:0;padding:16px}.health-grid dt{color:var(--muted);margin-bottom:8px;font-size:13px}.health-grid dd{margin:0;font-weight:700}.health-wide{grid-column:1/-1}.mono{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px}.safe-note{color:var(--muted);margin:0 0 24px;font-size:14px;line-height:1.7}.timetable-setup-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.timetable-editor-form{margin-top:20px}.timetable-scroll{border:1px solid var(--line);border-radius:14px;width:100%;overflow-x:auto}.timetable-grid{border-collapse:collapse;table-layout:fixed;width:100%;min-width:1160px}.timetable-grid th,.timetable-grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:top;padding:10px}.timetable-grid tr:last-child th,.timetable-grid tr:last-child td{border-bottom:0}.timetable-grid th:last-child,.timetable-grid td:last-child{border-right:0}.timetable-grid thead th{color:#fff;background:var(--accent);text-align:center}.timetable-grid thead th:first-child{width:128px}.timetable-grid tbody th{background:var(--accent-soft);text-align:left}.timetable-grid tbody th strong,.timetable-grid tbody th span,.timetable-grid tbody th em,.timetable-preview td strong,.timetable-preview td span{display:block}.timetable-grid tbody th span,.timetable-grid tbody th em,.timetable-preview td span{color:var(--muted);margin-top:4px;font-size:12px;font-style:normal}.timetable-grid td select,.timetable-grid td input{width:100%;min-width:120px;margin:0 0 6px;padding:8px;font-size:12px}.timetable-preview td{text-align:center;vertical-align:middle}.calendar-heading-actions{align-items:center;gap:10px;display:flex}.calendar-shell{background:#fffefaeb;border:1px solid #ffffffbf;border-radius:24px;overflow:hidden;box-shadow:0 22px 60px #22332b1a}.calendar-toolbar{text-align:center;grid-template-columns:44px 1fr 44px;align-items:center;padding:18px 20px 14px;display:grid}.calendar-toolbar a{width:36px;height:36px;color:var(--accent);background:var(--accent-soft);border-radius:50%;place-items:center;font-size:26px;text-decoration:none;display:grid}.calendar-toolbar a:last-child{justify-self:end}.calendar-toolbar strong{font-size:20px}.calendar-weekdays,.calendar-month-grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.calendar-weekdays{color:var(--muted);text-align:center;background:#e3eee88c;padding:10px 14px;font-size:12px}.calendar-month-grid{border-top:1px solid var(--line)}.calendar-day{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#ffffff61;min-height:92px;padding:10px;text-decoration:none;position:relative}.calendar-day:nth-child(7n){border-right:0}.calendar-day-selected{z-index:1;background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.calendar-day-muted{color:#a6aaa4;background:#f3f1eb85}.calendar-day-number{border-radius:50%;place-items:center;width:28px;height:28px;font-weight:700;display:inline-grid}.calendar-day-selected .calendar-day-number{color:#fff;background:var(--accent)}.calendar-day small{text-overflow:ellipsis;white-space:nowrap;margin-top:7px;font-size:11px;display:block;overflow:hidden}.calendar-dots{gap:3px;margin-top:8px;display:flex}.calendar-dots i,.calendar-event-row>i{border-radius:50%;width:7px;height:7px;display:block}.calendar-detail-grid,.calendar-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-event-list,.actual-day-list{gap:0;margin-top:16px;display:grid}.calendar-event-row,.actual-period{border-top:1px solid var(--line);gap:12px;padding:14px 0;display:grid}.calendar-event-row{grid-template-columns:10px 1fr}.calendar-event-row>i{margin-top:6px}.calendar-event-row span,.calendar-event-row small,.actual-period span,.actual-period small,.actual-period em{color:var(--muted);margin-top:4px;font-size:12px;font-style:normal;line-height:1.55;display:block}.actual-period{grid-template-columns:minmax(92px,.3fr) 1fr}.actual-period em,.actual-timetable-cell b{color:var(--warning)}.actual-period-cancelled{opacity:.76}.calendar-swap-panel{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.actual-timetable-row{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:18px;display:grid}.actual-timetable-cell{border:1px solid var(--line);background:#ffffff7a;border-radius:14px;gap:5px;min-height:130px;padding:14px;display:grid}.actual-timetable-cell>span,.actual-timetable-cell small,.actual-timetable-cell em,.actual-timetable-cell b{color:var(--muted);font-size:11px;font-style:normal;line-height:1.5}@media (max-width:560px){.status-row{flex-direction:column}.health-grid,.summary-grid{grid-template-columns:1fr}.health-wide{grid-column:auto}}@media (max-width:820px){.app-header{grid-template-columns:1fr auto}.app-header nav{grid-area:2/1/auto/-1}.context-bar,.page-heading,.form-row,.commit-panel{flex-direction:column;align-items:stretch}.inline-form{width:100%}.card-grid,.settings-grid,.detail-card{grid-template-columns:1fr}.card-wide{grid-column:auto}.duty-day-card,.seating-workbench,.timetable-setup-grid,.calendar-detail-grid,.calendar-form-grid{grid-template-columns:1fr}.calendar-day{min-height:68px;padding:6px}.calendar-day small{display:none}.publish-panel{flex-direction:column;align-items:stretch}}
