.App{min-height:100vh;text-align:center;padding:24px 16px 40px;color:var(--ui-text);display:flex;flex-direction:column;align-items:center;background:radial-gradient(circle at top,rgba(245,194,95,.16),transparent 28%),linear-gradient(180deg,rgba(255,255,255,.65),transparent 35%),var(--ui-bg);box-sizing:border-box}body.dark .App{background:radial-gradient(circle at top,rgba(121,167,255,.1),transparent 30%),linear-gradient(180deg,rgba(255,255,255,.03),transparent 28%),var(--ui-bg)}.logo{width:7em;margin:0 auto 6px;display:block}.app-title{margin:0 0 22px;font-size:clamp(1.8rem,4vw,2.25rem);line-height:1.2}.app-loading{margin:0 auto 15px;width:fit-content;padding:10px 14px;border-radius:999px;background:var(--ui-primary-soft);color:var(--ui-text)}.app-stale-notice{width:min(720px,100%);margin:0 auto 14px;box-sizing:border-box;padding:10px 14px;border:1px solid rgba(196,137,28,.35);border-radius:8px;background:#fff7d6c7;color:#7a4d08;font-size:.95rem;line-height:1.45}body.dark .app-stale-notice{border-color:#f5c25f59;background:#573f126b;color:#f8d889}:root{--ui-bg: #f6f5f2;--ui-surface: rgba(255, 255, 255, .86);--ui-surface-strong: #ffffff;--ui-surface-muted: #f5f4ef;--ui-border: rgba(64, 51, 36, .12);--ui-border-strong: rgba(64, 51, 36, .22);--ui-text: #2e261f;--ui-text-muted: #70655a;--ui-primary: #2f6fed;--ui-primary-strong: #1f56c3;--ui-primary-soft: rgba(47, 111, 237, .12);--ui-warning: #b85c00;--ui-warning-soft: rgba(255, 176, 73, .18);--ui-danger: #c53f3f;--ui-danger-soft: rgba(197, 63, 63, .14);--ui-success: #1c8f5d;--ui-success-soft: rgba(28, 143, 93, .14);--ui-shadow: 0 18px 42px rgba(35, 26, 20, .08);--ui-radius: 18px}body.dark{--ui-bg: #101318;--ui-surface: #181c23;--ui-surface-strong: #20252d;--ui-surface-muted: #151920;--ui-border: rgba(232, 238, 247, .12);--ui-border-strong: rgba(232, 238, 247, .22);--ui-text: #eef2f8;--ui-text-muted: #aab4c2;--ui-primary: #79a7ff;--ui-primary-strong: #9bbdff;--ui-primary-soft: rgba(121, 167, 255, .2);--ui-warning: #f3c46b;--ui-warning-soft: rgba(243, 196, 107, .14);--ui-danger: #ff8e8e;--ui-danger-soft: rgba(255, 142, 142, .16);--ui-success: #6ed6a6;--ui-success-soft: rgba(110, 214, 166, .16);--ui-shadow: 0 22px 52px rgba(0, 0, 0, .34)}.ui-card{width:min(92vw,400px);margin:0 auto 15px;background:var(--ui-surface);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow);border-radius:var(--ui-radius);padding:18px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-sizing:border-box}.ui-card--flush{padding:0}.ui-button{border:1px solid var(--ui-border);background:var(--ui-surface-strong);color:var(--ui-text);border-radius:12px;min-height:36px;padding:0 14px;font:inherit;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}.ui-button:hover:not(:disabled){border-color:var(--ui-border-strong);transform:translateY(-1px)}.ui-button:disabled{cursor:not-allowed;opacity:.55}.ui-button--primary{background:var(--ui-primary);color:#fff;border-color:transparent}.ui-button--primary:hover:not(:disabled){background:var(--ui-primary-strong)}.ui-button--ghost{background:transparent}.ui-button--icon{width:36px;padding:0}.ui-button--link{border:0;background:transparent;color:var(--ui-primary);min-height:auto;padding:0}.ui-button--danger{color:var(--ui-danger)}.ui-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid transparent;padding:4px 10px;font-size:12px;font-weight:600}.ui-pill--success{background:var(--ui-success-soft);color:var(--ui-success)}.ui-pill--danger{background:var(--ui-danger-soft);color:var(--ui-danger)}.ui-empty-state{min-height:160px;display:grid;place-items:center;text-align:center;color:var(--ui-text-muted);padding:12px}.ui-empty-state__icon{width:46px;height:46px;border:1px solid var(--ui-border);border-radius:14px;display:grid;place-items:center;margin-bottom:14px;color:var(--ui-border-strong)}.ui-empty-state__title{font-weight:600;color:var(--ui-text)}.ui-empty-state__description{margin-top:10px;line-height:1.6;color:var(--ui-text-muted)}.ui-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14100c80;display:grid;place-items:center;z-index:1000;padding:20px}.ui-modal{max-height:min(80vh,640px);overflow:auto;background:var(--ui-surface-strong);color:var(--ui-text);border:1px solid var(--ui-border);border-radius:22px;box-shadow:0 24px 80px #00000047}.ui-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 20px 0}.ui-modal__title{margin:0;font-size:20px}.ui-modal__body{padding:18px 20px 20px}.ui-inline-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.notification-button{margin-bottom:15px;min-height:40px;border:1px solid var(--ui-primary-soft);background:var(--ui-primary-soft);color:var(--ui-text);border-radius:999px;padding:0 16px;cursor:pointer}.notification-content{line-height:1.8;color:var(--ui-text-muted);text-align:left}.notification-content a{color:var(--ui-primary)}.campus-button-group{margin-bottom:15px;display:flex;flex-direction:column;align-items:center;gap:12px}.campus-button-group__toolbar{display:flex;align-items:center;justify-content:center;gap:10px}.campus-button-group__date{font-size:16px;font-weight:600;color:var(--ui-text)}.campus-button-group__settings-button{min-width:56px;white-space:nowrap}.campus-button-group__options{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;width:min(92vw,400px);margin:0 auto}.campus-button-group__option{border:1px solid var(--ui-border);background:var(--ui-surface-strong);color:var(--ui-text);padding:9px 18px;border-radius:999px;cursor:pointer;transition:.15s ease}.campus-button-group__option.is-active{background:var(--ui-primary);color:#fff;border-color:transparent}.campus-settings{display:flex;flex-direction:column;gap:16px}.campus-settings__row{display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--ui-text)}.campus-settings__switch{width:46px;height:28px;background:var(--ui-surface-muted);border:1px solid var(--ui-border);border-radius:999px;padding:3px;cursor:pointer;display:flex;align-items:center}.campus-settings__switch.is-on{justify-content:flex-end;background:var(--ui-primary-soft);border-color:transparent}.campus-settings__knob{width:20px;height:20px;border-radius:50%;background:var(--ui-primary)}.campus-settings__section{padding-top:16px;border-top:1px solid var(--ui-border);display:flex;flex-direction:column;gap:12px}.campus-settings__line{line-height:1.7;color:var(--ui-text-muted)}@media (max-width: 480px){.campus-button-group__options{width:100%;overflow-x:auto;flex-wrap:nowrap;justify-content:center;padding-bottom:4px}}.building-picker{margin-bottom:15px;display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.building-picker__button{border:1px solid var(--ui-border);background:var(--ui-surface-strong);color:var(--ui-text);border-radius:12px;min-width:6em;min-height:38px;padding:0 14px;cursor:pointer}.building-picker__button.primary{background:var(--ui-primary);color:#fff;border-color:transparent}.class-time-picker{margin-bottom:15px}.class-time-picker__grid{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.class-time-picker__button{width:52px;padding:0;border-radius:12px;border:1px solid var(--ui-border);background:var(--ui-surface-strong);color:var(--ui-text);cursor:pointer}.class-time-picker__button.primary{background:var(--ui-primary);color:#fff;border-color:transparent}.class-time-picker__tiny{font-size:.7em}.class-time-picker__tiny--top{margin-bottom:-.5em}.class-time-picker__tiny--bottom{margin-top:-.5em}.empty-classroom-table{margin-bottom:15px}.empty-classroom-table__card{overflow:hidden}.empty-classroom-table__scroll{overflow-x:auto}.empty-classroom-table__table{width:100%;border-collapse:collapse;color:var(--ui-text)}.empty-classroom-table__table th,.empty-classroom-table__table td{padding:14px 12px;text-align:center;border-bottom:1px solid var(--ui-border)}.empty-classroom-table__table th{font-size:14px;color:var(--ui-text-muted);background:#7f6c540f}.empty-classroom-table__table tbody tr:last-child td{border-bottom:none}.empty-classroom-table__header-inline{display:inline-flex;gap:6px;align-items:center}.empty-classroom-table__details{display:grid;gap:14px;margin:0}.empty-classroom-table__details div{display:grid;gap:6px;padding-bottom:12px;border-bottom:1px solid var(--ui-border)}.empty-classroom-table__details div:last-child{border-bottom:none;padding-bottom:0}.empty-classroom-table__details dt{font-weight:600}.empty-classroom-table__details dd{margin:0;color:var(--ui-text-muted);line-height:1.7}.global-empty{margin-bottom:15px}.global-empty__fallback{margin-top:12px;text-align:left}.footer{color:var(--ui-text-muted);line-height:1.8}.footer__link{margin:0 4px}.class-table-warn{width:min(92vw,400px);margin-bottom:15px;box-sizing:border-box;text-align:left;padding:16px 18px;border-radius:18px;background:var(--ui-warning-soft);border:1px solid rgba(184,92,0,.18);color:var(--ui-text);box-shadow:var(--ui-shadow)}.class-table-warn__content{margin-bottom:12px;line-height:1.7}.class-table-warn__confirm{color:var(--ui-text-muted)}.idle-rate-panel{text-align:left}.idle-rate-panel__pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.idle-rate-panel__pill{background:var(--ui-primary-soft);color:var(--ui-primary)}.idle-rate-panel__sections{display:grid;gap:16px}.idle-rate-panel__section{display:grid;gap:8px}.idle-rate-panel__section h3{margin:0;color:var(--ui-text);font-size:14px;line-height:1.4}.idle-rate-panel__chart-scroll{overflow-x:auto;border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-surface-muted)}.idle-rate-panel__chart{display:block;width:100%;min-width:360px;height:auto}.idle-rate-panel__axis{stroke:var(--ui-border-strong);stroke-width:1}.idle-rate-panel__bar-bg{fill:var(--ui-surface-strong)}.idle-rate-panel__bar{fill:var(--ui-primary)}.idle-rate-panel__bar.is-peak{fill:var(--ui-success)}.idle-rate-panel__label{fill:var(--ui-text-muted);font-size:12px}.idle-rate-panel__time-label{fill:var(--ui-text-muted);font-size:10px}.idle-rate-panel__peak-text{fill:var(--ui-success);font-size:12px;font-weight:700}.seat-query-panel{text-align:left}.seat-query-panel__controls{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}.seat-query-panel__field{display:grid;gap:6px;color:var(--ui-text-muted);font-size:13px}.seat-query-panel__field input{min-width:0;height:38px;box-sizing:border-box;border:1px solid var(--ui-border);border-radius:10px;padding:0 11px;background:var(--ui-surface-strong);color:var(--ui-text);font:inherit}.seat-query-panel__field input:focus{outline:2px solid var(--ui-primary-soft);border-color:var(--ui-primary)}.seat-query-panel__results{display:grid;gap:10px}.seat-query-panel__result{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--ui-border);border-radius:12px;padding:12px;background:var(--ui-surface-muted)}.seat-query-panel__room{font-weight:700;color:var(--ui-text)}.seat-query-panel__meta{margin-top:4px;color:var(--ui-text-muted);font-size:12px;line-height:1.5}.seat-query-panel__facts{display:inline-grid;justify-items:end;gap:8px;white-space:nowrap}.seat-query-panel__facts strong{font-size:18px}@media (max-width: 420px){.seat-query-panel__controls{grid-template-columns:1fr}.seat-query-panel__result{align-items:flex-start;flex-direction:column}.seat-query-panel__facts{width:100%;display:flex;align-items:center;justify-content:space-between}}.classroom-tools-panel{text-align:left}.classroom-tools-panel__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.classroom-tools-panel:not(.is-collapsed) .classroom-tools-panel__header{margin-bottom:14px}.classroom-tools-panel__title{margin:0;font-size:18px;line-height:1.3}.classroom-tools-panel__subtitle{margin:6px 0 0;color:var(--ui-text-muted);font-size:13px;line-height:1.5}.classroom-tools-panel__toggle{flex:0 0 auto}.classroom-tools-panel__body{display:grid;gap:14px}.classroom-tools-panel__body[hidden]{display:none}.classroom-tools-panel__tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;border:1px solid var(--ui-border);border-radius:14px;background:var(--ui-surface-muted)}.classroom-tools-panel__tab{min-width:0;min-height:34px;border:0;border-radius:10px;background:transparent;color:var(--ui-text-muted);font:inherit;font-size:14px;cursor:pointer}.classroom-tools-panel__tab.is-active{background:var(--ui-primary);color:#fff;font-weight:700}.classroom-tools-panel__content{min-width:0}body{margin:0;min-width:320px;font-family:PingFang SC,Hiragino Sans GB,Noto Sans SC,sans-serif;background:var(--ui-bg);color:var(--ui-text)}body.dark{background-color:var(--ui-bg)}button,input,select,textarea{font:inherit}a{color:inherit}
