:root{color:#18243a;background:#edf2f7;font-family:Segoe UI,Microsoft YaHei,sans-serif;line-height:1.5}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}.splash,.login{background:linear-gradient(135deg,#0e315f,#174c87);place-items:center;min-height:100vh;display:grid}.login-card{background:#fff;border-top:5px solid #b51f2e;width:min(430px,92vw);padding:38px;box-shadow:0 20px 50px #071a35aa}.seal{color:#fff;background:#123b70;place-items:center;width:54px;height:54px;font-weight:800;display:grid}.login-card p{color:#7b8795;letter-spacing:3px;margin:25px 0 0}.login-card h1{color:#123b70;margin:3px 0 25px}.login-card label{font-weight:600}.login-card input{border:1px solid #aab8c8;width:100%;margin:8px 0 18px;padding:12px}.login-card small{color:#65758a;margin-top:20px;display:block}header{background:#fff;border-bottom:4px solid #b51f2e;justify-content:space-between;align-items:center;height:76px;padding:0 28px;display:flex}.brand{align-items:center;gap:14px;display:flex}.brand i{background:#b51f2e;width:6px;height:38px;display:block}.brand b,.brand span{display:block}.brand b{color:#123b70;letter-spacing:1.5px}.brand span{color:#68788c;font-size:12px}.identity{align-items:center;gap:12px;display:flex}.identity small{color:#65758a}.identity button{background:#fff;border:1px solid #aeb9c7;padding:6px 12px}.layout{grid-template-columns:230px 1fr;min-height:calc(100vh - 76px);display:grid}aside{background:#123b70;padding:20px 14px}aside button{color:#dfe9f7;text-align:left;background:0 0;border:0;border-left:3px solid #0000;width:100%;padding:13px 18px;display:block}aside button.active,aside button:hover{color:#fff;background:#ffffff14;border-left-color:#e7b54a}main{width:100%;max-width:1250px;padding:30px}.crumb{letter-spacing:1px;color:#718096;font-size:12px}h1{color:#123b70;border-left:5px solid #b51f2e;margin:4px 0 22px;padding-left:14px}h2{color:#123b70;font-size:18px}.cards{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.card,.panel{background:#fff;border:1px solid #d6e0eb;padding:22px;box-shadow:0 3px 12px #18335b0c}.card label,.card small{color:#69798d;display:block}.card strong{color:#123b70;margin:9px 0;font-size:34px;display:block}.panel{margin-top:18px}.accent{border-left:4px solid #e7b54a}.grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.grid input,.grid select,.actions input,.actions select{border:1px solid #adbac9;min-width:0;padding:10px}.actions{flex-wrap:wrap;gap:10px;display:flex}.primary{color:#fff;background:#174c87;border:0;padding:10px 20px;font-weight:600}.primary:hover{background:#123b70}.big{padding:14px 34px;font-size:18px}.error{color:#8a1622;background:#fff0f1;border-left:4px solid #b51f2e;margin-bottom:15px;padding:12px}.table{overflow:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;white-space:nowrap;border-bottom:1px solid #e2e8f0;padding:11px}th{color:#334d6c;background:#eef3f8}.empty{color:#738196}.caller{background:#fff;border-top:5px solid #123b70;flex-direction:column;justify-content:center;align-items:center;min-height:430px;display:flex}.caller strong{color:#b51f2e;margin:14px;font-size:48px}.token{word-break:break-all;background:#fff8df;margin-top:15px;padding:12px}pre{white-space:pre-wrap;background:#f5f7fa;max-height:440px;padding:12px;overflow:auto}dl{grid-template-columns:100px 1fr;display:grid}dt,dd{border-bottom:1px solid #e3e8ef;margin:0;padding:8px}@media (width<=780px){header{padding:0 14px}.identity small{display:none}.layout{display:block}aside{padding:7px;display:flex;overflow:auto}aside button{white-space:nowrap;border-bottom:3px solid #0000;border-left:0}aside button.active{border-bottom-color:#e7b54a}main{padding:20px 12px}.cards,.grid{grid-template-columns:1fr}.brand b{font-size:14px}.caller strong{font-size:36px}}.identity em{color:#8a1622;font-size:12px;font-style:normal}.identity em.online{color:#176238}.qr{background:#f4f7fa;align-items:center;gap:20px;margin-top:18px;padding:16px;display:flex}.qr img{width:180px;height:180px}.qr code{color:#4a5e75;word-break:break-all}.upload-status{background:#f4f7fa;border-left:4px solid #174c87;margin-top:16px;padding:13px 15px}.upload-status div{justify-content:space-between;gap:15px;margin-bottom:8px;display:flex}.upload-status span{color:#53667c}.upload-status.complete{border-left-color:#176238}.upload-status.failed{border-left-color:#b51f2e}.upload-status progress{accent-color:#174c87;width:100%;height:12px;display:block}@media (width<=780px){.upload-status div{display:block}.upload-status span{margin-top:4px;display:block}}.command-home{max-width:1440px;padding-top:22px}.home-shell{grid-template-columns:minmax(0,1.45fr) minmax(340px,.9fr);align-items:stretch;gap:20px;height:clamp(560px,100vh - 165px,920px);margin-top:10px;display:grid}.home-agent,.home-context{box-sizing:border-box;border:1px solid #d6e0eb;box-shadow:0 4px 16px #12243a0a}.home-agent{color:#fdfcfc;background:#201d1d;border-radius:8px;flex-direction:column;height:100%;min-height:0;padding:24px 28px 18px;font-family:Cascadia Mono,JetBrains Mono,Consolas,monospace;display:flex;overflow:hidden}.agent-title{border-bottom:1px solid #ffffff14;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:8px;display:flex}.agent-title-left{align-items:flex-start;gap:16px;display:flex}.agent-title-left>span{color:#201d1d;background:#fdfcfc;border-radius:2px;padding:4px 7px;font-size:13px;font-weight:700}.agent-title-left h1{color:#fdfcfc;border:0;margin:-6px 0 3px;padding:0;font-family:inherit;font-size:26px}.agent-title-left p{color:#bcb8b8;margin:0;font-family:Segoe UI,Microsoft YaHei,sans-serif;font-size:13px}.clear-conversation-btn{color:#9a9898;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #fff3;border-radius:4px;padding:4px 10px;font-family:Segoe UI,Microsoft YaHei,sans-serif;font-size:12px;transition:all .2s}.clear-conversation-btn:hover{color:#fdfcfc;background:#ffffff14;border-color:#fff6}.conversation{scroll-behavior:smooth;flex-direction:column;flex:auto;gap:16px;min-height:0;margin:14px 0 12px;padding-right:10px;display:flex;overflow:hidden auto}.conversation::-webkit-scrollbar{width:6px}.conversation::-webkit-scrollbar-track{background:#ffffff0a;border-radius:4px}.conversation::-webkit-scrollbar-thumb{background:#ffffff3d;border-radius:4px}.conversation::-webkit-scrollbar-thumb:hover{background:#ffffff6b}.message{word-break:break-word;max-width:92%}.message small{color:#9a9898;font-size:11px}.message p{margin:3px 0 0;line-height:1.65}.message.user{text-align:right;align-self:flex-end;max-width:82%}.message.user p{color:#8ec5ff}.message.assistant{text-align:left;align-self:flex-start;width:100%;max-width:100%}.assistant-typing{opacity:.85}.typing-indicator{color:#9a9898;font-size:13px;font-style:italic}.typing-indicator span{opacity:0;animation:1.4s infinite typingBlink}.typing-indicator span:first-child{animation-delay:0s}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes typingBlink{0%{opacity:0}50%{opacity:1}to{opacity:0}}.workflow-card{color:#18243a;background:#fff;border:1px solid #ccd7e4;border-radius:6px;margin-top:12px;padding:18px;font-family:Segoe UI,Microsoft YaHei,sans-serif}.workflow-fields{gap:14px;display:grid}.workflow-fields label{gap:5px;display:grid}.workflow-fields input,.workflow-fields select,.workflow-fields textarea{width:100%;font:inherit;color:#18243a;background:#fff;border:1px solid #adbac9;padding:11px}.workflow-fields button,.swap-dialog button,.request-row button{min-height:44px}.attachments{flex-shrink:0;gap:8px;max-height:120px;margin-top:10px;display:grid;overflow-y:auto}.attachments>div{background:#302c2c;border-radius:4px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.attachments strong{overflow-wrap:anywhere;flex:100%;font-size:12px}.attachments span{color:#d4dbe4;font-size:12px}.attachments progress{accent-color:#90c4ff;width:100%}.swap-dialog{color:#18243a;border:0;border-top:5px solid #b51f2e;width:min(560px,100vw - 32px);max-height:85vh;padding:26px;overflow:auto}.swap-dialog::backdrop{background:#071a35aa}.request-row,.lesson-list article{border-bottom:1px solid #d6e0eb;padding:18px 0}.command-box{background:#302c2c;border:1px solid #646262;border-radius:6px;flex-shrink:0;padding:12px}.command-box textarea{color:#fdfcfc;font:inherit;resize:none;background:0 0;border:0;outline:0;width:100%;max-height:84px}.command-box textarea::placeholder{color:#9a9898}.command-box>div{justify-content:space-between;align-items:center;margin-top:8px;display:flex}.command-box span{color:#9a9898;font-size:11px}.command-box .primary{color:#201d1d;background:#fdfcfc;border-radius:4px;padding:7px 16px;font-weight:600}.command-box .primary:disabled{color:#bcb8b8;cursor:not-allowed;background:#646262}.home-context{background:#fdfcfc;border-radius:8px;flex-direction:column;height:100%;min-height:0;padding:24px;display:flex;overflow-y:auto}.context-title,.quick-heading{justify-content:space-between;align-items:center;display:flex}.context-title b,.quick-heading b{color:#123b70}.context-title span{color:#8a1622;font-size:13px}.context-title .status-ok{color:#176238}.context-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0 28px;display:grid}.context-grid button{color:#123b70;text-align:left;background:#f4f7fa;border:1px solid #d6e0eb;padding:13px 8px}.context-grid button:hover{border-color:#174c87}.context-grid strong{font-family:Cascadia Mono,Consolas,monospace;font-size:25px;display:block}.context-grid span{color:#65758a;margin-top:4px;font-size:12px;display:block}.quick-heading{border-top:1px solid #d6e0eb;padding-top:18px}.quick-heading small{color:#65758a}.quick-actions{margin-top:8px}.quick-actions button{text-align:left;background:0 0;border:0;border-bottom:1px solid #e0e6ed;align-items:center;gap:12px;width:100%;padding:13px 2px;display:flex}.quick-actions button:hover{background:#f4f7fa}.quick-actions i{color:#8a1622;font-family:Cascadia Mono,Consolas,monospace;font-size:12px;font-style:normal}.quick-actions span{flex:1}.quick-actions b,.quick-actions small{display:block}.quick-actions b{color:#18243a}.quick-actions small{color:#65758a;margin-top:2px;font-size:12px}.quick-actions em{color:#174c87;font-style:normal}@media (width<=980px){.home-shell{grid-template-columns:1fr;height:auto}.home-agent{height:clamp(480px,72vh,640px);min-height:480px;padding:20px 16px}.home-context{height:auto;padding:18px 16px}}@media (width<=780px){.command-home{padding-top:10px}.agent-title h1{font-size:22px}}.reasoning-bar{border-bottom:1px solid #ffffff1a;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:8px;display:flex}.reasoning-label{color:#bcb8b8;font-size:12px;font-weight:600}.reasoning-options{gap:6px;display:flex}.reasoning-chip{color:#c9d5e3;cursor:pointer;background:#201d1d;border:1px solid #4f4c4c;border-radius:4px;padding:3px 8px;font-family:inherit;font-size:11px;transition:all .15s ease-in-out}.reasoning-chip:hover{background:#2d2a2a;border-color:#6b6868}.reasoning-chip.active{color:#fff;background:#174c87;border-color:#4a89d1;font-weight:600}.command-controls{justify-content:space-between;align-items:center;gap:12px;margin-top:10px;display:flex}.command-controls button{min-height:38px}.hint-keys{color:#8e8b8b;font-size:11px}.assistant-meta-badge{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.meta-item{color:#bcb8b8;background:#ffffff14;border:1px solid #ffffff1f;border-radius:3px;padding:2px 7px;font-size:11px}.meta-item.meta-degraded{color:#fca311;background:#eb8c1e29;border-color:#eb8c1e59}.card-top-bar{border-bottom:1px solid #eef2f6;justify-content:space-between;align-items:center;margin-bottom:14px;padding-bottom:10px;display:flex}.card-top-bar h2{color:#123b70;margin:0;font-size:16px;font-weight:600}.card-date-badge{color:#174c87;background:#eaf1f8;border-radius:4px;padding:3px 8px;font-size:12px;font-weight:500}.timetable-lessons-list{flex-direction:column;gap:8px;margin-top:10px;display:flex}.lesson-row{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:14px;padding:10px 14px;display:flex}.period-pill{color:#fff;text-align:center;background:#174c87;border-radius:4px;min-width:58px;padding:3px 6px;font-size:12px;font-weight:600}.subject-title{color:#0f172a;flex:1;font-size:15px}.time-range{color:#64748b;font-family:Cascadia Mono,Consolas,monospace;font-size:13px}.teacher-name{color:#475569;margin-right:8px;font-size:13px}.timetable-state-banner{border-radius:6px;align-items:flex-start;gap:12px;margin-top:8px;padding:14px 16px;display:flex}.timetable-state-banner .state-icon{font-size:22px;line-height:1}.timetable-state-banner strong{margin-bottom:4px;font-size:14px;display:block}.timetable-state-banner p{margin:0;font-size:13px;line-height:1.5}.timetable-state-banner.not-synced{color:#92400e;background:#fff8e6;border-left:4px solid #d97706}.timetable-state-banner.no-subject{color:#991b1b;background:#fef2f2;border-left:4px solid #ef4444}.timetable-state-banner.no-lessons{color:#166534;background:#f0fdf4;border-left:4px solid #22c55e}.class-day-tabs{border-bottom:1px solid #e2e8f0;gap:6px;margin-bottom:14px;padding-bottom:6px;display:flex;overflow-x:auto}.day-tab{cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;min-width:66px;padding:8px 10px;transition:all .15s ease-in-out;display:flex;position:relative}.day-tab:hover{background:#eef2f6}.day-tab.active{color:#fff;background:#174c87;border-color:#174c87;font-weight:600}.day-tab .tab-date{font-size:12px}.day-tab .tab-weekday{margin-top:2px;font-size:13px;font-weight:500}.day-tab .tab-dot{border-radius:50%;width:6px;height:6px;margin-top:4px}.day-tab .tab-dot.ready{background:#22c55e}.day-tab.active .tab-dot.ready{background:#86efac}.day-tab .tab-dot.not_synced{background:#f59e0b}.day-tab .tab-dot.no_lessons{background:#94a3b8}.day-subhead{border-bottom:1px dashed #e2e8f0;justify-content:space-between;align-items:center;margin-bottom:12px;padding:6px 0;display:flex}.status-pill{border-radius:12px;padding:2px 8px;font-size:12px;font-weight:500}.status-pill.ready{color:#15803d;background:#dcfce7}.status-pill.not_synced{color:#b45309;background:#fef3c7}.status-pill.no_lessons{color:#64748b;background:#f1f5f9}.day-empty-notice{color:#64748b;text-align:center;background:#f8fafc;border-radius:6px;margin:10px 0;padding:14px;font-size:13px}.assistant-confirmation{border-left:4px solid #174c87}.assistant-confirmation.completed{border-left-color:#16a34a}.assistant-confirmation.cancelled{border-left-color:#94a3b8}.assistant-confirmation.failed{border-left-color:#dc2626}.assistant-confirmation.expired{border-left-color:#f59e0b}.status-badge{border-radius:4px;padding:3px 8px;font-size:12px;font-weight:600}.status-badge.pending{color:#0369a1;background:#e0f2fe}.status-badge.completed{color:#15803d;background:#dcfce7}.status-badge.cancelled{color:#64748b;background:#f1f5f9}.status-badge.failed{color:#b91c1c;background:#fee2e2}.status-badge.expired{color:#b45309;background:#fef3c7}.summary-text{color:#334155;margin-bottom:12px;font-size:14px;line-height:1.6}.action-details-grid{background:#f8fafc;border-radius:6px;grid-template-columns:auto 1fr;gap:8px 16px;margin-bottom:14px;padding:12px;font-size:13px;display:grid}.action-details-grid dt{color:#64748b;font-weight:500}.action-details-grid dd{color:#1e293b;margin:0;font-weight:600}.action-final-hint{margin-top:12px;font-size:13px;font-weight:500}.completed-hint{color:#15803d}.cancelled-hint{color:#64748b}.expired-hint{color:#b45309}.execution-result-card{border-left:4px solid #16a34a}.execution-result-card.failure{border-left-color:#dc2626}.result-header{align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.result-icon{font-size:24px;line-height:1}.result-header h3{color:#0f172a;margin:0 0 4px;font-size:16px}.result-message{color:#334155;margin:0;font-size:14px;line-height:1.5}.device-status-card{border-left:4px solid #0284c7}.device-status-grid{grid-template-columns:1fr 1fr;gap:12px;margin:14px 0;display:grid}.status-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;flex-direction:column;gap:4px;padding:12px;display:flex}.status-box.online{background:#f0fdf4;border-color:#86efac}.status-box.offline{background:#fef2f2;border-color:#fecaca}.status-dot{border-radius:50%;width:8px;height:8px;margin-bottom:4px;display:inline-block}.status-box.online .status-dot{background:#22c55e}.status-box.offline .status-dot{background:#ef4444}.device-meta-list{color:#475569;flex-direction:column;gap:4px;font-size:13px;display:flex}.device-meta-list p{margin:0}.device-failure-tip{font-weight:500;color:#dc2626!important;margin-top:6px!important}.assistant-data-list{flex-direction:column;gap:8px;max-height:280px;margin-top:10px;padding-right:4px;display:flex;overflow-y:auto}.data-row{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.data-row strong{color:#1e293b;font-size:14px}.data-row span{color:#64748b;font-size:12px}.empty-hint{color:#94a3b8;margin:8px 0;font-size:13px;font-style:italic}.unknown-card-fallback{border-left:4px solid #f59e0b}.friendly-fallback-msg{color:#64748b;margin-bottom:8px;font-size:14px}.diagnostic-details{color:#94a3b8;margin-top:10px;font-size:12px}.diagnostic-details summary{color:#475569;cursor:pointer}.diagnostic-details code{color:#334155;background:#f1f5f9;border-radius:4px;margin-top:6px;padding:6px 10px;font-family:monospace;display:block}.error-card{border-left:4px solid #dc2626}.timetable-page-panel{padding:16px}.weekly-timetable-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;gap:14px;padding:16px;display:flex;box-shadow:0 1px 3px #0000000d}.assistant-timetable-wrapper{border:1px solid #cbd5e1;border-radius:6px;max-height:400px;margin-top:10px;overflow:auto}.assistant-timetable-wrapper::-webkit-scrollbar{width:6px;height:6px}.assistant-timetable-wrapper::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:3px}.assistant-timetable-wrapper .weekly-timetable-card{border:0;padding:12px}.weekly-timetable-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.header-primary-info{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.timetable-main-title{color:#0f172a;margin:0;font-size:17px;font-weight:700}.week-badge-group{align-items:center;gap:10px;display:flex}.week-number-badge{color:#fff;letter-spacing:.5px;background:#1e40af;border-radius:6px;padding:4px 10px;font-size:13px;font-weight:700}.week-range-text{color:#475569;font-size:14px;font-weight:500}.header-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.week-nav-buttons{gap:4px;display:inline-flex}.nav-btn{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px;padding:6px 10px;font-size:13px;font-weight:500;transition:all .15s ease-in-out}.nav-btn:hover{background:#f1f5f9;border-color:#94a3b8}.nav-btn.this-week-btn{color:#0369a1;background:#e0f2fe;border-color:#7dd3fc;font-weight:600}.nav-btn.this-week-btn:hover{background:#bae6fd}.mode-toggle-group{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;padding:2px;display:inline-flex}.mode-tab{color:#475569;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:5px 12px;font-size:13px;font-weight:500;transition:all .15s ease-in-out}.mode-tab:hover{color:#0f172a}.mode-tab.active{color:#fff;background:#1e40af;font-weight:600;box-shadow:0 1px 2px #0000001a}.date-jump-label{color:#64748b;align-items:center;gap:6px;font-size:12px;display:inline-flex}.date-jump-input{color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:6px;padding:4px 6px;font-size:12px}.weekly-table-scroll-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #e2e8f0;border-radius:8px;width:100%;position:relative;overflow-x:auto}.weekly-timetable-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:720px}.period-col-header,.period-col-cell{text-align:center;z-index:2;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-right:2px solid #cbd5e1;width:90px;min-width:90px;position:sticky;left:0;box-shadow:2px 0 4px #00000008}.period-col-header{color:#334155;z-index:3;background:#f1f5f9;padding:10px 6px;font-size:13px;font-weight:700}.period-col-cell{vertical-align:middle;padding:10px 6px}.period-name{color:#0f172a;font-size:13px;font-weight:700}.period-time{color:#64748b;margin-top:3px;font-family:Cascadia Mono,Consolas,monospace;font-size:11px}.day-col-header{text-align:center;vertical-align:middle;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-right:1px solid #e2e8f0;min-width:88px;padding:10px 8px}.day-header-weekday{color:#1e293b;font-size:13px;font-weight:700}.day-header-date{color:#64748b;margin-top:2px;font-size:12px}.today-badge{color:#fff;background:#2563eb;border-radius:4px;margin-top:4px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.unsynced-badge{color:#fff;background:#f59e0b;border-radius:4px;margin-top:4px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.timetable-cell{text-align:center;vertical-align:middle;background:#fff;border-bottom:1px solid #e2e8f0;border-right:1px solid #e2e8f0;min-width:88px;height:64px;padding:8px 6px}.day-col-header.is-today,.timetable-cell.is-today{background-color:#f0f7ff!important}.timetable-cell.cell-empty .dash-placeholder{color:#94a3b8;font-size:18px;font-weight:500;line-height:1}.timetable-cell.cell-unsynced{background-color:#fffbeb!important}.unsynced-label{color:#b45309;background:#fef3c7;border:1px dashed #d97706;border-radius:4px;padding:3px 6px;font-size:11px;font-weight:600;display:inline-block}.timetable-cell.cell-has-lesson{display:table-cell}.cell-subject{color:#0f172a;word-break:break-all;font-size:14px;font-weight:700;line-height:1.3}.cell-teacher{color:#475569;margin-top:3px;font-size:12px;line-height:1.2}.cell-adjusted{background-color:#fff1f2!important}.adjusted-tag{color:#b91c1c;background:#ffe4e6;border:1px solid #f87171;border-radius:3px;margin-top:4px;padding:2px 4px;font-size:10px;font-weight:700;line-height:1;display:inline-block}.empty-schedule-row{color:#64748b;text-align:center;padding:30px;font-size:14px}.timetable-loading{color:#64748b;padding:16px 0;font-size:14px}@media (width<=768px){.weekly-timetable-header{flex-direction:column;align-items:flex-start}.header-controls{justify-content:space-between;width:100%}.weekly-timetable-table{min-width:680px}.period-col-header,.period-col-cell{width:75px;min-width:75px}.day-col-header,.timetable-cell{min-width:80px}.cell-subject{font-size:13px}.cell-teacher{font-size:11px}}.status-pill.device-pill{letter-spacing:.2px;border-radius:12px;align-items:center;gap:6px;padding:3px 9px;font-size:12px;font-weight:600;display:inline-flex}.status-pill.device-pill.online{color:#15803d;background:#e6f6ec;border:1px solid #bbf7d0}.status-pill.device-pill.offline{color:#b91c1c;background:#fee2e2;border:1px solid #fecaca}.auth-tab-bar{background:#eef2f6;border-radius:8px;gap:4px;margin:16px 0 20px;padding:4px;display:flex}.auth-tab{color:#4b5563;cursor:pointer;text-align:center;background:0 0;border:none;border-radius:6px;flex:1;padding:8px 12px;font-size:13px;font-weight:500;transition:all .2s}.auth-tab:hover{color:#1f2937}.auth-tab.active{color:#1e40af;background:#fff;font-weight:600;box-shadow:0 1px 3px #00000014}.pair-guide-box{color:#1e40af;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;margin-bottom:14px;padding:10px 14px;font-size:12.5px;line-height:1.5}.auth-footer-links{color:#2563eb;justify-content:space-between;margin-top:14px;font-size:12px;display:flex}.auth-footer-links span{cursor:pointer;text-decoration:underline}.auth-footer-links span:hover{color:#1d4ed8}.quota-dashboard-panel{background:#fbfcfd;border:1px solid #e2e8f0;margin-bottom:20px}.quota-cards-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:14px;display:grid}.quota-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:6px;padding:14px 16px;display:flex;box-shadow:0 1px 3px #00000005}.quota-card.r2-card{background:#f8fafc;border-color:#cbd5e1}.quota-label{color:#64748b;font-size:12px;font-weight:600}.quota-value{color:#0f172a;font-size:17px;font-weight:700}.quota-bar-wrapper{background:#e2e8f0;border-radius:4px;height:8px;margin:4px 0 2px;overflow:hidden}.quota-bar-fill{background:#3b82f6;border-radius:4px;height:100%;transition:width .3s}.quota-bar-fill.warn{background:#f59e0b}.quota-bar-fill.danger{background:#ef4444}.quota-percent{color:#64748b;font-size:11px}.file-cards-container{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:16px;display:grid}.file-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden;box-shadow:0 2px 6px #00000008}.file-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0000000f}.file-preview-box{background:#f1f5f9;justify-content:center;align-items:center;height:120px;display:flex;position:relative;overflow:hidden}.file-preview-box .thumbnail-img{object-fit:cover;width:100%;height:100%}.file-icon-badge{color:#475569;font-size:26px;font-weight:600}.file-kind-tag{color:#fff;background:#0f172abf;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600;position:absolute;top:8px;right:8px}.file-info-box{flex-direction:column;flex:1;gap:4px;padding:12px;display:flex}.file-title{color:#1e293b;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.file-meta-row{color:#64748b;justify-content:space-between;align-items:center;margin-top:2px;font-size:11.5px;display:flex}.uploader-badge{color:#334155;background:#f1f5f9;border-radius:4px;padding:2px 6px}.file-time{color:#94a3b8;font-size:11px}.file-actions-row{background:#fafbfc;border-top:1px solid #f1f5f9;align-items:center;gap:6px;padding:8px 10px;display:flex}.btn-action-primary{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:4px;flex:1;padding:5px 8px;font-size:12px}.btn-action-primary:hover{background:#1d4ed8}.btn-action-secondary{color:#3730a3;cursor:pointer;background:#e0e7ff;border:none;border-radius:4px;padding:5px 8px;font-size:12px}.btn-action-secondary:hover{background:#c7d2fe}.btn-action-link{background:#f1f5f9;border-radius:4px;justify-content:center;align-items:center;padding:5px 8px;font-size:12px;text-decoration:none;display:inline-flex}.btn-action-danger{color:#b91c1c;cursor:pointer;background:#fee2e2;border:none;border-radius:4px;padding:5px 8px;font-size:12px}.btn-action-danger:hover{background:#fecaca}.modal-backdrop{z-index:999;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background:#fff;border-radius:12px;width:min(92vw,480px);padding:24px;box-shadow:0 10px 30px #00000026}.modal-card h3{color:#0f172a;margin:0 0 6px;font-size:17px}.modal-sub{color:#64748b;margin:0 0 16px;font-size:12.5px;line-height:1.5}.modal-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.wallpaper-ops-bar{flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0;display:flex}.wallpaper-select{border:1px solid #cbd5e1;border-radius:6px;min-width:240px;padding:8px 10px}.carousel-config-bar{background:#f8fafc;border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin:14px 0 18px;padding:10px 14px;display:flex}.wallpaper-thumbnails-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;display:grid}.wallpaper-thumb-card{cursor:pointer;background:#fff;border:2px solid #e2e8f0;border-radius:8px;transition:all .15s;overflow:hidden}.wallpaper-thumb-card:hover{border-color:#94a3b8}.wallpaper-thumb-card.in-pool{background:#eff6ff;border-color:#2563eb;box-shadow:0 2px 8px #2563eb26}.wallpaper-thumb-card img{object-fit:cover;width:100%;height:105px}.thumb-caption{color:#334155;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;padding:6px 8px;font-size:11.5px;display:flex;overflow:hidden}.caller-card{text-align:center;background:#fff;border:1px solid #e2e8f0;border-radius:12px;max-width:580px;margin-top:10px;padding:24px}.caller-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.caller-header span{color:#1e293b;font-size:17px;font-weight:700}.caller-desc{color:#64748b;margin-bottom:22px;font-size:13.5px;line-height:1.6}.assign-form{flex-direction:column;gap:14px;max-width:560px;margin-top:12px;display:flex}.timetable-swap-approval-banner{background:#fffbeb;border:1px solid #fef3c7;border-left:4px solid #f59e0b;border-radius:8px;margin-bottom:16px;padding:14px 18px}.swap-banner-title{color:#92400e;align-items:center;gap:8px;margin-bottom:8px;font-size:14px;display:flex}.swap-badge{color:#fff;background:#f59e0b;border-radius:10px;padding:2px 7px;font-size:11px;font-weight:700}.swap-banner-items{flex-direction:column;gap:8px;display:flex}.swap-banner-card{background:#fff;border:1px solid #fde68a;border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:10px 14px;display:flex}.swap-card-info{color:#374151;font-size:13px}.swap-card-actions{gap:8px;display:flex}.btn-approve{color:#fff;cursor:pointer;background:#16a34a;border:none;border-radius:4px;padding:4px 10px;font-size:12px}.btn-reject{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:4px;padding:4px 10px;font-size:12px}.cell-assets-list{flex-direction:column;gap:3px;margin-top:4px;display:flex}.cell-asset-tag{color:#1e40af;cursor:pointer;text-align:left;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;align-items:center;gap:4px;max-width:100%;padding:2px 6px;font-size:11px;display:inline-flex}.cell-asset-tag .asset-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cell-asset-tag:hover{background:#dbeafe}.cell-attach-btn{color:#2563eb;cursor:pointer;background:0 0;border:1px dashed #93c5fd;border-radius:4px;align-self:flex-start;margin-top:4px;padding:1px 6px;font-size:10.5px}.cell-attach-btn:hover{background:#eff6ff;border-style:solid}.recess-row{background:#f8fafc}.recess-cell-header{background:#f1f5f9;font-style:italic}.cell-recess{vertical-align:middle;background:#f8fafc;padding:6px;font-size:12px}.recess-hint{color:#94a3b8;font-size:11px;display:block}.recess-tag{color:#9d174d;background:#fdf2f8;border-color:#fbcfe8}.message-attachments-container{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.message-attachment-chip{background:#ffffff1f;border:1px solid #fff3;border-radius:6px;align-items:center;gap:5px;padding:3px 8px;font-size:11.5px;display:inline-flex}.message.user .message-attachment-chip{color:#bfdbfe;background:#3b82f633;border-color:#93c5fd66}.message-attachment-chip .attachment-title{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.message-attachment-chip .attachment-meta{color:#93c5fd;font-size:10px}
