:root{--bg-color: #ffffff;--card-bg: rgba(255, 255, 255, .85);--text-main: #0f172a;--text-muted: #475569;--primary: #3b82f6;--primary-hover: #2563eb;--border-color: rgba(255, 255, 255, .6);--table-header-bg: rgba(241, 245, 249, .5);--row-even: rgba(248, 250, 252, .4);--row-odd: rgba(255, 255, 255, .4);--row-hover: rgba(241, 245, 249, .7);--row-special: rgba(255, 251, 235, .7);--row-special-text: #b45309;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .05), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .05), 0 4px 6px -4px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--app-bg: #f4f7f9;--app-header-bg: #dcebff;--app-border: #e2e8f0;--mobile-bottom-nav-space: calc(112px + env(safe-area-inset-bottom)) ;--transition-fast: all .15s cubic-bezier(.4, 0, .2, 1);--transition-smooth: all .3s cubic-bezier(.4, 0, .2, 1);--card-blue: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);--card-red: linear-gradient(135deg, #ef4444 0%, #b91c1c 100%);--card-purple: linear-gradient(135deg, #a855f7 0%, #7e22ce 100%);--card-orange: linear-gradient(135deg, #f97316 0%, #c2410c 100%);--card-green: linear-gradient(135deg, #22c55e 0%, #15803d 100%);--card-pink: linear-gradient(135deg, #ec4899 0%, #be185d 100%);--card-cyan: linear-gradient(135deg, #06b6d4 0%, #0891b2 100%);--card-indigo: linear-gradient(135deg, #6366f1 0%, #4338ca 100%);--card-teal: linear-gradient(135deg, #14b8a6 0%, #0f766e 100%);--card-amber: linear-gradient(135deg, #f59e0b 0%, #b45309 100%);--icon-blue: #2563eb;--icon-purple: #9333ea;--icon-orange: #d97706;--icon-green: #16a34a;--icon-pink: #db2777;--icon-cyan: #0891b2;--icon-indigo: #4f46e5;--icon-teal: #0d9488;--icon-amber: #d97706;--fq-heat-rgb: 239, 68, 68;--fq-heat-min: .08;--fq-heat-range: .5;--fq-accent: #dc2626;--fq-border: rgba(220, 38, 38, .2);--fq-chip-bg: rgba(220, 38, 38, .12)}.app-update-page{width:min(760px,100%);margin:0 auto;display:flex;flex-direction:column;gap:16px;color:var(--text-main)}.app-update-hero,.app-update-card{border:1px solid rgba(226,232,240,.9);border-radius:18px;background:#fffffff0;box-shadow:var(--shadow-sm)}.app-update-hero{display:flex;align-items:center;gap:14px;padding:18px}.app-update-icon{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;color:#0f766e;background:#0f766e24}.app-update-icon svg{width:30px;height:30px}.app-update-title span,.app-update-eyebrow,.app-update-meta span{display:block;color:var(--text-muted);font-size:13px;font-weight:700;line-height:18px}.app-update-title h2{display:block;margin:2px 0 0;color:var(--text-main);font-size:28px;line-height:34px}.app-update-card{padding:16px}.app-update-version-row,.app-update-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.app-update-version-row strong{display:block;margin-top:2px;font-size:24px;line-height:30px}.app-update-badge{flex:0 0 auto;border-radius:999px;padding:5px 10px;background:#0f766e1f;color:#0f766e;font-size:12px;font-weight:800;line-height:16px}.app-update-badge.is-required{background:#dc26261f;color:#dc2626}.app-update-card h3{margin:14px 0 0;font-size:17px;line-height:24px}.app-update-download{width:100%;margin-top:16px;border:0;border-radius:14px;padding:13px 16px;background:#0f766e;color:#fff;font-size:16px;font-weight:800;line-height:22px;box-shadow:0 10px 18px #0f766e38}.app-update-section-head h3{margin:0}.app-update-section-head span{color:var(--text-muted);font-size:13px;font-weight:700}.app-update-notes{margin:12px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.app-update-notes li{position:relative;padding-left:18px;color:#334155;font-size:15px;line-height:22px}.app-update-notes li:before{content:"";position:absolute;left:2px;top:9px;width:6px;height:6px;border-radius:999px;background:#0f766e}.app-update-state{border-radius:14px;padding:12px 14px;background:#f1f5f9f2;color:var(--text-muted);font-size:14px;font-weight:700;line-height:20px}.app-update-error{background:#fee2e2f2;color:#b91c1c}.app-update-meta div+div{margin-top:12px}.app-update-meta strong{display:block;margin-top:3px;overflow-wrap:anywhere;color:#334155;font-size:13px;line-height:19px}@media (max-width: 768px){.page.page-view-appUpdate.page-mobile-scroll-shell .table-container{padding:12px 14px var(--mobile-bottom-nav-space)}.app-update-page{gap:14px}.app-update-hero{padding:16px}}.theme-colorless{--primary: #475569;--primary-hover: #334155;--app-bg: #f5f5f5;--app-header-bg: #eeeeee;--app-border: #e5e5e5;--row-special: rgba(241, 245, 249, .7);--row-special-text: #475569;--card-blue: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-red: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-purple: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-orange: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-green: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-pink: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-cyan: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-indigo: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-teal: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--card-amber: linear-gradient(135deg, rgba(226, 232, 240, .4) 0%, rgba(203, 213, 225, .2) 100%);--fq-heat-rgb: 185, 28, 28;--fq-heat-min: .05;--fq-heat-range: .22;--fq-accent: #7f1d1d;--fq-border: rgba(127, 29, 29, .18);--fq-chip-bg: rgba(127, 29, 29, .08)}*{box-sizing:border-box}body{font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--app-bg);color:var(--text-main);margin:0;padding:30px 32px;display:flex;flex-direction:column;align-items:center;line-height:1.6;font-weight:400;min-height:100vh;min-height:100svh;min-height:var(--app-height, 100svh);overflow-x:hidden}#root{width:100%;display:flex;flex-direction:column;align-items:center}.glass-panel{background:var(--card-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);box-shadow:0 8px 32px #1f26871a;border-radius:var(--radius-xl)}button,select,input,textarea{font-family:inherit}.page{width:100%;max-width:none}h1{color:var(--primary);margin:0 0 24px;font-size:28px;font-weight:600;letter-spacing:.5px;text-align:center}.desktop-dashboard-header{width:100%;max-width:none;margin-left:0;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:0;margin-bottom:24px}.desktop-dashboard-brand{min-width:0;display:inline-flex;align-items:center;gap:18px}.desktop-dashboard-header h1{margin:0;text-align:left}.desktop-dashboard-account{min-width:0;display:inline-flex;align-items:center;gap:10px;color:var(--text-main);font-size:16px;font-weight:800;white-space:nowrap}.desktop-dashboard-auth-btn{height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(37,99,235,.2);border-radius:999px;background:#dbeafeb8;color:var(--primary);padding:0 13px;font:inherit;font-size:13px;font-weight:800;cursor:pointer}.desktop-dashboard-auth-btn.is-logout{border-color:#94a3b847;background:#f8fafceb;color:var(--text-muted)}.title-meta{font-size:14px;color:var(--text-muted);background:#f8fafc;padding:6px 12px;border-radius:6px;margin:-8px auto 16px;text-align:center}.masonry-container{display:flex;gap:24px;align-items:flex-start;width:100%}.masonry-column{display:flex;flex-direction:column;gap:24px;flex:1;min-width:0}.desktop-home-shell{width:100%;max-width:none;margin:0 auto;display:block}.desktop-home-legacy-shell{max-width:none;display:flex;flex-direction:column}.desktop-home-workbench-page{width:100%;max-width:none;margin:0;box-sizing:border-box;padding:0;background:transparent}.desktop-home-command,.desktop-home-refresh,.desktop-home-mode-toggle button,.desktop-home-section-head button,.desktop-home-recents button,.desktop-home-directory-list button,.desktop-home-priority-row,.desktop-home-panel{font-family:inherit}.desktop-home-command{position:relative;min-width:280px;width:clamp(280px,28vw,460px);height:40px;display:flex;align-items:center;justify-content:flex-start;gap:0;border:1px solid rgba(37,99,235,.32);border-radius:8px;background:#dbeafeb8;color:var(--text-main);padding:0 14px;box-shadow:0 12px 26px -20px #2563eb8c}.desktop-home-search input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text-main);font:inherit;font-size:14px}.desktop-home-search input::placeholder{color:#64748b}.desktop-home-search:focus-within{border-color:#2563eb9e;background:#dbeafef2;box-shadow:0 0 0 3px #2563eb24,0 14px 30px -22px #2563eb9e}.desktop-home-search-dropdown{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:80;display:flex;flex-direction:column;gap:0;padding:6px;border:1px solid var(--border-color);border-radius:12px;background:#fff;box-shadow:0 18px 42px -24px #0f172a7a;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.desktop-home-search:hover{transform:none;border-color:#2563eb75;background:#dbeafee0;box-shadow:0 12px 26px -20px #2563eb8c}.super-search-row{width:100%;display:grid;grid-template-columns:36px minmax(0,1fr) auto 16px;align-items:center;gap:10px;border:0;border-bottom:1px solid rgba(226,232,240,.85);background:transparent;color:var(--text-main);padding:9px 8px;cursor:pointer;text-align:left}.super-search-row:last-of-type{border-bottom:0}.super-search-row:hover,.super-search-row:active{background:#2563eb14;border-radius:10px}.super-search-icon{width:36px;height:36px;border-radius:999px;display:grid;place-items:center}.super-search-icon svg{width:18px;height:18px}.super-search-main{min-width:0;display:flex;flex-direction:column;gap:2px}.super-search-main strong,.super-search-main small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.super-search-main strong{font-size:14px;font-weight:700;line-height:19px}.super-search-main small{color:var(--text-muted);font-size:12px;line-height:16px}.super-search-type{color:#94a3b8;font-size:12px;white-space:nowrap}.super-search-chevron{display:inline-flex;color:#94a3b8}.super-search-more{padding:6px 8px 2px;color:#94a3b8;font-size:11px;text-align:center}.super-search-empty{padding:12px 8px;color:var(--text-muted);font-size:13px;text-align:center}.desktop-home-mode-toggle{height:40px;display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:8px;background:#f1f5f9eb;border:1px solid var(--border-color)}.desktop-home-mode-toggle button{height:30px;min-width:58px;border:0;border-radius:6px;background:transparent;color:var(--text-muted);font-size:13px;font-weight:800;cursor:pointer}.desktop-home-mode-toggle button.active{background:var(--card-bg);color:var(--text-main);box-shadow:0 8px 18px -14px #0f172a6b}.desktop-home-refresh{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-color);border-radius:8px;background:var(--card-bg);color:var(--text-main);font-size:18px;font-weight:800;cursor:pointer}.desktop-home-main-grid{grid-column:1 / -1;display:grid;grid-template-columns:minmax(240px,.82fr) minmax(420px,1.38fr) minmax(250px,.9fr) minmax(280px,.94fr);gap:16px;align-items:start}.desktop-home-left-zone{grid-column:1 / span 2;min-width:0;display:flex;flex-direction:column;gap:16px}.desktop-home-top-pair{display:grid;grid-template-columns:minmax(240px,.82fr) minmax(420px,1.38fr);gap:16px;align-items:start}.desktop-home-panel,.desktop-home-feature-directory{border:1px solid rgba(226,232,240,.82);border-radius:8px;background:#fff;box-shadow:none}.desktop-home-priority-panel{padding:18px}.desktop-home-section-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.desktop-home-section-head span,.desktop-home-panel-kicker{display:block;color:var(--text-muted);font-size:12px;font-weight:800}.desktop-home-section-head strong{display:block;margin-top:3px;color:var(--text-main);font-size:18px;line-height:1.3}.desktop-home-section-head button{border:1px solid rgba(37,99,235,.18);border-radius:7px;background:#2563eb14;color:var(--primary-hover);font-size:13px;font-weight:800;padding:8px 11px;cursor:pointer}.desktop-home-priority-list{display:flex;flex-direction:column;gap:8px}.desktop-home-priority-row{width:100%;min-height:58px;display:grid;grid-template-columns:40px minmax(0,1fr) auto 18px;align-items:center;gap:12px;border:1px solid rgba(226,232,240,.82);border-radius:8px;background:#fff;padding:9px 12px;color:var(--text-main);cursor:pointer;text-align:left;transition:background-color .15s ease,border-color .15s ease}.desktop-home-today-stack{grid-column:4;display:flex;flex-direction:column;gap:0;padding:4px 2px}.desktop-home-today-section{padding:12px 2px 14px;border-bottom:1px solid rgba(148,163,184,.22)}.desktop-home-today-section:last-child{border-bottom:0}.desktop-home-today-section-head{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px}.desktop-home-today-title{min-width:0}.desktop-home-today-title h3{margin:0;color:var(--text-main);font-size:16px;font-weight:850;line-height:1.25}.desktop-home-today-title span{display:block;margin-top:3px;color:var(--text-muted);font-size:12px;font-weight:750}.desktop-home-today-link{border:0;border-radius:999px;background:#f1f5f9e0;color:var(--text-muted);font-size:12px;font-weight:800;padding:5px 9px;cursor:pointer}.desktop-home-today-link:hover{background:#dbeafee6;color:var(--primary)}.desktop-home-today-content{margin-top:10px;padding-left:0}.desktop-home-today-content .dashboard-list{margin:0;padding:0;gap:7px}.desktop-home-today-content .dashboard-list li{min-height:0;padding:0;border:0;background:transparent;color:var(--text-main);font-size:13px;line-height:1.35}.desktop-home-today-content .dashboard-empty,.desktop-home-today-content .dashboard-subtext{color:#94a3b8;font-size:13px;line-height:1.35}.desktop-home-announcement-groups{display:flex;flex-direction:column;gap:10px}.desktop-home-announcement-group{display:flex;flex-direction:column;gap:7px}.desktop-home-announcement-date-label{align-self:flex-start;display:inline-flex;align-items:center;justify-content:center;padding:3px 10px;border:1px solid rgba(203,213,225,.8);border-radius:999px;background:#f1f5f9fa;color:#475569;font-size:12px;font-weight:850;line-height:1.25;white-space:nowrap}.desktop-home-announcement-list{display:flex;flex-direction:column;gap:7px;margin:0;padding:0;list-style:none}.desktop-home-announcement-item{display:block;color:var(--text-main);font-size:13px;line-height:1.35}.desktop-home-announcement-dept{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;background:#d4af3724;color:#b88912;font-size:11px;font-weight:800;line-height:1.25;margin-right:7px;vertical-align:1px;white-space:nowrap}.desktop-home-announcement-title{min-width:0}.desktop-home-command:not(.desktop-home-search):hover,.desktop-home-refresh:hover{transform:none;border-color:#2563eb3d;background:#fff;box-shadow:none}.desktop-home-row-icon,.desktop-home-directory-icon,.desktop-home-recents button span{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:#2563eb1f;color:var(--icon-blue);flex-shrink:0}.desktop-home-row-icon svg,.desktop-home-directory-icon svg,.desktop-home-recents button span svg{width:18px;height:18px}.desktop-home-module-timetables .desktop-home-row-icon,.desktop-home-module-timetables .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-timetables>span,.desktop-home-module-leaves .desktop-home-row-icon,.desktop-home-module-leaves .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-leaves>span{background:#2563eb1f;color:#2563eb}.desktop-home-module-openClasses .desktop-home-row-icon,.desktop-home-module-openClasses .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-openClasses>span,.desktop-home-module-announcements .desktop-home-row-icon,.desktop-home-module-announcements .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-announcements>span,.desktop-home-module-follows .desktop-home-row-icon,.desktop-home-module-follows .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-follows>span,.desktop-home-module-user .desktop-home-row-icon,.desktop-home-module-user .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-user>span{background:#d9770624;color:#d97706}.desktop-home-module-annSchedule .desktop-home-row-icon,.desktop-home-module-annSchedule .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-annSchedule>span,.desktop-home-module-semesterBoard .desktop-home-row-icon,.desktop-home-module-semesterBoard .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-semesterBoard>span{background:#7c3aed21;color:#7c3aed}.desktop-home-module-statusBoard .desktop-home-row-icon,.desktop-home-module-statusBoard .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-statusBoard>span,.desktop-home-module-scienceSchedule .desktop-home-row-icon,.desktop-home-module-scienceSchedule .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-scienceSchedule>span{background:#16a34a21;color:#16a34a}.desktop-home-module-allSchedule .desktop-home-row-icon,.desktop-home-module-allSchedule .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-allSchedule>span{background:#3b82f621;color:#3b82f6}.desktop-home-module-computerSchedule .desktop-home-row-icon,.desktop-home-module-computerSchedule .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-computerSchedule>span,.desktop-home-module-teacherSearch .desktop-home-row-icon,.desktop-home-module-teacherSearch .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-teacherSearch>span{background:#0891b221;color:#0891b2}.desktop-home-module-freeQuery .desktop-home-row-icon,.desktop-home-module-freeQuery .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-freeQuery>span{background:#db277721;color:#db2777}.desktop-home-module-occupyAdvice .desktop-home-row-icon,.desktop-home-module-occupyAdvice .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-occupyAdvice>span,.desktop-home-module-ai-assistant .desktop-home-row-icon,.desktop-home-module-ai-assistant .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-ai-assistant>span{background:#4f46e521;color:#4f46e5}.desktop-home-module-dktk .desktop-home-row-icon,.desktop-home-module-dktk .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-dktk>span{background:#8000201f;color:#800020}.desktop-home-row-label{min-width:0;font-size:15px;font-weight:850;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.desktop-home-row-value{border-radius:999px;background:#f1f5f9f2;color:var(--text-muted);font-size:13px;font-weight:850;padding:6px 10px;white-space:nowrap}.desktop-home-row-arrow,.desktop-home-directory-list i{color:#94a3b8;font-style:normal;font-size:22px;line-height:1}.desktop-home-side-stack,.desktop-home-schedule-stack{display:flex;flex-direction:column;gap:12px}.desktop-home-side-stack .desktop-home-panel,.desktop-home-schedule-stack .desktop-home-panel{width:100%;padding:14px;text-align:left}button.desktop-home-panel{border:1px solid var(--border-color);cursor:pointer}.desktop-home-panel strong{display:block;margin-top:5px;color:var(--text-main);font-size:17px;line-height:1.35}.desktop-home-mini-list,.desktop-home-data-lines{display:flex;flex-direction:column;gap:7px;margin-top:12px}.desktop-home-mini-list span,.desktop-home-data-lines span{display:flex;justify-content:space-between;gap:10px;color:var(--text-muted);font-size:13px;line-height:1.35}.desktop-home-mini-list b,.desktop-home-data-lines b{color:var(--text-main);font-weight:850}.desktop-home-mini-list em{min-width:0;color:var(--text-main);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.desktop-home-teacher-table{width:100%;table-layout:fixed;border-collapse:collapse;margin-top:14px;border:1px solid var(--border-color);border-radius:8px;background:#ffffffa3}.desktop-home-teacher-panel .desktop-home-teacher-table{margin-top:0}.desktop-home-teacher-table th,.desktop-home-teacher-table td{border:1px solid rgba(148,163,184,.34);text-align:center;vertical-align:middle}.desktop-home-teacher-table tr{height:24px}.desktop-home-teacher-table th{height:24px;background:#f1f5f9e6;color:var(--text-muted);font-size:14px;font-weight:600;line-height:1.15;padding:2px 1px}.desktop-home-teacher-table td{position:relative;height:24px;color:var(--text-main);font-size:14px;font-weight:400;line-height:1.15;padding:2px 1px;white-space:nowrap;word-break:normal;overflow-wrap:anywhere}.desktop-home-week-table .section-head,.desktop-home-week-table .section-cell{width:48px;min-width:48px;color:var(--text-muted)}.desktop-home-week-table .section-cell{background:#f1f5f9b8;font-size:14px;font-weight:500}.desktop-home-teacher-table td.is-free{color:#94a3b8}.desktop-home-teacher-table td.has-lesson{background:var(--lesson-accent-bg, rgba(37, 99, 235, .08));border-color:var(--lesson-accent-border, rgba(37, 99, 235, .26));color:var(--lesson-accent, var(--primary));padding-left:4px}.desktop-home-teacher-table td.has-lesson:before{content:"";position:absolute;top:5px;bottom:5px;left:2px;width:2px;border-radius:999px;background:var(--lesson-accent, var(--primary));opacity:.82}.desktop-home-week-table tr.row-special th,.desktop-home-week-table tr.row-special td{background:var(--row-special);color:var(--row-special-text)}.desktop-home-week-table tr.row-special td.has-lesson{background:var(--row-special);border-color:#f59e0b3d;color:var(--row-special-text)}.desktop-home-empty-line{color:#94a3b8}.desktop-home-follow-stack{grid-column:3;min-width:0;min-height:0;display:flex;flex-direction:column;gap:14px;padding:14px;border:1px solid rgba(226,232,240,.82);border-radius:8px;background:#fff}.desktop-home-follow-overview{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.desktop-home-follow-overview span{display:block;color:var(--text-muted);font-size:12px;font-weight:800}.desktop-home-follow-overview strong{display:block;margin-top:3px;color:var(--text-main);font-size:17px;font-weight:850;line-height:1.3}.desktop-home-follow-page{min-height:0;gap:14px;padding:0}.desktop-home-follow-stack .follow-card-grid{grid-template-columns:1fr}.desktop-home-follow-stack .follow-card{padding:14px}.desktop-home-follow-stack .follow-strip{gap:3px}.desktop-home-follow-stack .follow-strip-cell{min-height:46px;padding:7px 1px}.desktop-home-follow-stack .follow-strip-no{font-size:10px}.desktop-home-follow-stack .follow-strip-text{font-size:15px}.desktop-home-follow-stack .follow-strip-cell.is-special .follow-strip-text{font-size:11px}.desktop-home-follow-stack.page-view-follows .follow-page{gap:14px;padding-top:2px}.desktop-home-follow-stack.page-view-follows .follow-card-section-title{margin-left:2px;color:#2563eb;font-size:14px;font-weight:900;letter-spacing:0;text-transform:none}.desktop-home-follow-stack.page-view-follows .follow-card{border:1px solid rgba(226,232,240,.95);background:#fff;box-shadow:0 6px 16px #0f172a0a;padding-inline:10px}.desktop-home-follow-stack.page-view-follows .follow-card-name{color:#172033;font-size:18px;letter-spacing:0}.desktop-home-follow-stack.page-view-follows .follow-current-line{color:#2563eb;font-size:14px}.desktop-home-follow-stack.page-view-follows .follow-current-line.is-free{color:#16a34a}.desktop-home-follow-stack.page-view-follows .follow-chip-main{color:#2563eb;background:#2563eb1a}.desktop-home-follow-stack.page-view-follows .follow-chip-side{color:#0891b2;background:#0891b21a}.desktop-home-follow-stack.page-view-follows .follow-chip-special{color:#d97706;background:#d977061f}.desktop-home-follow-stack.page-view-follows .follow-chip-special.is-empty{color:#64748b;background:#64748b1a}.desktop-home-follow-stack.page-view-follows .follow-strip-cell{border-color:transparent;background:#f1f5f9;color:#334155}.desktop-home-follow-stack.page-view-follows .follow-strip-cell.is-main{background:#2563eb1f;color:#1d4ed8}.desktop-home-follow-stack.page-view-follows .follow-strip-cell.is-side{background:#0891b21f;color:#0e7490}.desktop-home-follow-stack.page-view-follows .follow-strip-cell.is-busy{background:#d9770621;color:#b45309}.desktop-home-follow-stack.page-view-follows .follow-strip-cell.is-special{background:#f43f5e1a;color:#e11d48}.desktop-home-follow-stack.page-view-follows .follow-strip-cell.is-empty{background:#16a34a1a;color:#15803d}.desktop-home-follow-stack.page-view-follows .follow-strip-cell.active{border-color:#2563eb;background:#2563eb;color:#fff;box-shadow:none}.desktop-home-follow-stack.page-view-follows .follow-strip-cell.is-teacher-empty{border-color:#16a34a70;background:transparent;box-shadow:none;color:#15803d}.desktop-home-follow-stack.page-view-follows .follow-strip-cell.is-teacher-empty.active{border-color:#2563eb;background:#2563eb;color:#fff}@media (min-width: 1181px){.desktop-home-follow-stack{height:var(--desktop-home-follow-height, auto);max-height:var(--desktop-home-follow-height, none);overflow:hidden}.desktop-home-follow-stack .desktop-home-follow-page{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding-right:2px}}.desktop-home-feature-directory{grid-column:auto;width:100%;padding:18px}.desktop-home-recents{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}.desktop-home-recents button{min-height:42px;display:inline-flex;align-items:center;gap:9px;border:1px solid rgba(226,232,240,.82);border-radius:8px;background:#fff;color:var(--text-main);font-size:14px;font-weight:850;padding:4px 12px 4px 5px;cursor:pointer}.desktop-home-recents button span{width:32px;height:32px}.desktop-home-directory-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.desktop-home-directory-group{min-width:0}.desktop-home-directory-list{display:flex;flex-direction:column;gap:7px}.desktop-home-directory-list button{min-height:42px;display:grid;grid-template-columns:34px minmax(0,1fr) 14px;align-items:center;gap:9px;border:1px solid rgba(226,232,240,.82);border-radius:8px;background:#fff;color:var(--text-main);padding:4px 9px 4px 4px;cursor:pointer;text-align:left}.desktop-home-directory-list button span:not(.desktop-home-directory-icon){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800}@media (max-width: 1180px){.desktop-home-shell{display:flex;flex-direction:column}.desktop-home-main-grid{grid-column:auto}.desktop-home-main-grid{display:flex;flex-direction:column}.desktop-home-left-zone{width:100%}.desktop-home-top-pair{grid-template-columns:minmax(420px,1fr) minmax(420px,.88fr)}.desktop-home-today-stack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}}.dashboard-card{display:flex;flex-direction:column;align-items:flex-start;padding:24px;border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);text-align:left;gap:16px;position:relative;overflow:hidden;width:100%}.dashboard-card:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:.15;z-index:-1;transition:opacity .3s ease}.dashboard-card-timetables:before{background:var(--card-blue)}.dashboard-card-openClasses:before{background:var(--card-purple)}.dashboard-card-leaves:before{background:var(--card-teal)}.dashboard-card-annSchedule:before{background:var(--card-orange)}.dashboard-card-announcements:before{background:var(--card-pink)}.dashboard-card-allSchedule:before{background:var(--card-green)}.dashboard-card-dktk:before{background:var(--card-red)}.dashboard-card-statusBoard:before{background:var(--card-indigo)}.dashboard-card-semesterBoard:before{background:var(--card-purple)}.dashboard-card-teacherSearch:before{background:var(--card-cyan)}.dashboard-card-user:before{background:var(--card-orange)}.dashboard-card-ai-assistant:before{background:var(--card-indigo)}.dashboard-card-computerSchedule:before{background:var(--card-cyan)}.dashboard-card-scienceSchedule:before{background:var(--card-green)}.dashboard-card-dataStatus:before{background:var(--card-teal)}.dashboard-card-follows:before{background:var(--card-amber)}.dashboard-card-freeQuery:before{background:var(--card-red)}.dashboard-card-occupyAdvice:before{background:var(--card-green)}.dashboard-card:hover{transform:translateY(-6px) scale(1.02)}.dashboard-card:hover:before{opacity:.15}.dashboard-card-header{display:flex;align-items:center;gap:12px;width:100%}.dashboard-card-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--radius-md);background:#ffffffb3;flex-shrink:0;box-shadow:0 4px 6px #0000000d}.dashboard-card-timetables .dashboard-card-icon{color:var(--icon-blue)}.dashboard-card-openClasses .dashboard-card-icon{color:var(--icon-purple)}.dashboard-card-leaves .dashboard-card-icon{color:var(--icon-teal)}.dashboard-card-annSchedule .dashboard-card-icon{color:var(--icon-orange)}.dashboard-card-announcements .dashboard-card-icon{color:var(--icon-pink)}.dashboard-card-allSchedule .dashboard-card-icon{color:var(--icon-green)}.dashboard-card-dktk .dashboard-card-icon{color:var(--fq-accent)}.dashboard-card-statusBoard .dashboard-card-icon{color:var(--icon-indigo)}.dashboard-card-semesterBoard .dashboard-card-icon{color:#7c3aed}.dashboard-card-teacherSearch .dashboard-card-icon{color:var(--icon-cyan)}.dashboard-card-user .dashboard-card-icon{color:var(--icon-orange)}.dashboard-card-ai-assistant .dashboard-card-icon{color:var(--icon-indigo)}.dashboard-card-computerSchedule .dashboard-card-icon{color:var(--icon-cyan)}.dashboard-card-scienceSchedule .dashboard-card-icon{color:var(--icon-green)}.dashboard-card-dataStatus .dashboard-card-icon{color:var(--icon-teal)}.dashboard-card-follows .dashboard-card-icon{color:var(--icon-amber)}.dashboard-card-freeQuery .dashboard-card-icon{color:var(--fq-accent)}.dashboard-card-occupyAdvice .dashboard-card-icon{color:var(--icon-green)}.dashboard-card-title{margin:0;font-size:18px;font-weight:600;color:var(--text-main);flex:1}.dashboard-card-content{width:100%}.dashboard-card-dktk .stats-container{border:1px solid rgba(220,38,38,.14);border-radius:var(--radius-lg);background:#fef2f2ad;padding:12px}.dashboard-card-dktk .dashboard-empty{border:1px solid rgba(220,38,38,.12);background:#fee2e2b8;color:#991b1b}.dashboard-current-subject-card{display:grid;gap:10px}.dashboard-current-subject-head{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--text-muted);font-size:13px;font-weight:700}.dashboard-current-subject-head strong{color:var(--text-main);font-weight:800;white-space:nowrap}.dashboard-current-subject-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.dashboard-current-subject-list li{display:flex;align-items:center;gap:10px;min-width:0;padding:9px 10px;border:1px solid rgba(255,255,255,.45);border-radius:var(--radius-md);background:#ffffff8f;box-shadow:0 2px 4px #00000005}.dashboard-current-subject-main{display:grid;gap:2px;min-width:0}.dashboard-current-subject-main strong,.dashboard-current-subject-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-current-subject-main strong{color:var(--text-main);font-size:14px;font-weight:800}.dashboard-current-subject-main small{color:var(--text-muted);font-size:12px;font-weight:700}.dashboard-current-subject-empty{padding:10px 12px;border-radius:var(--radius-md);background:#ffffff52;color:var(--text-muted);font-size:13px;font-weight:700;text-align:center}.dashboard-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.dashboard-list li{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#fff9;border-radius:var(--radius-md);font-size:14px;color:var(--text-main);border:1px solid rgba(255,255,255,.4);box-shadow:0 2px 4px #00000005}.dashboard-card-timetables .time-badge{background:var(--icon-blue)}.dashboard-card-openClasses .time-badge{background:var(--icon-purple)}.dashboard-card-leaves .time-badge{background:var(--icon-teal)}.dashboard-card-annSchedule .time-badge{background:var(--icon-orange)}.dashboard-card-announcements .time-badge{background:var(--icon-pink)}.dashboard-card-allSchedule .time-badge{background:var(--icon-green)}.dashboard-card-statusBoard .time-badge{background:var(--icon-indigo)}.dashboard-card-semesterBoard .time-badge{background:#7c3aed}.dashboard-card-teacherSearch .time-badge,.dashboard-card-computerSchedule .time-badge{background:var(--icon-cyan)}.dashboard-card-scienceSchedule .time-badge{background:var(--icon-green)}.time-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;background:var(--primary);color:#fff;border-radius:12px;font-size:12px;font-weight:600;white-space:nowrap}.stats-container{display:flex;flex-direction:column;width:100%;background:#fff6;padding:12px;border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.5)}.stats-header{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:16px;border-bottom:1px solid rgba(0,0,0,.05)}.stats-total-num{font-size:42px;font-weight:800;line-height:1;color:var(--text-main);text-shadow:0 2px 10px rgba(0,0,0,.05)}.stats-total-text{font-size:13px;font-weight:500;color:var(--text-muted);margin-top:4px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%}.dashboard-inline-stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;width:100%}.stat-box{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff9;padding:12px 8px;border-radius:var(--radius-md);box-shadow:0 2px 8px #00000005}.stat-label{font-size:12px;font-weight:600;text-transform:uppercase;margin-bottom:4px}.stat-label-blue{color:#1d4ed8}.stat-label-cyan{color:var(--text-main)}.stat-label-purple{color:#7c3aed}.stat-label-red{color:#ef4444}.stat-label-green{color:#10b981}.stat-value{font-size:24px;font-weight:700;color:var(--text-main)}.dashboard-empty{font-size:14px;color:var(--text-muted);padding:12px;background:#fff3;border-radius:var(--radius-md);text-align:center}.dashboard-subtext{font-size:12px;color:var(--text-muted);margin-bottom:8px;display:block}.desktop-detail-header{width:100%;max-width:none;margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;gap:12px}.mobile-home-page{display:none}.back-btn{display:flex;align-items:center;gap:8px;padding:10px 20px;font-size:15px;font-weight:500;color:var(--text-main);cursor:pointer;border:1px solid var(--border-color);transition:all .2s ease}.back-btn:hover{background:#ffffffb3;transform:translate(-2px)}.desktop-theme-toggle{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:999px;border:1px solid var(--border-color)}.desktop-preferences{display:inline-flex;align-items:center;gap:8px}.desktop-dashboard-controls{justify-content:flex-end;flex-wrap:wrap}.desktop-theme-btn{border:none;background:transparent;color:var(--text-muted);border-radius:999px;padding:8px 14px;font-size:13px;font-weight:700;cursor:pointer;transition:var(--transition-fast)}.desktop-theme-btn.active{color:#fff;background:var(--primary)}.desktop-settings-btn{width:38px;height:38px;border-radius:999px;border:1px solid var(--border-color);color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:var(--transition-fast)}.desktop-settings-btn:hover,.desktop-settings-btn.active{color:var(--primary);background:#3b82f61a;border-color:#3b82f638}.bottom-nav-bar,.mobile-menu-page{display:none}.dashboard-container{background:transparent!important;box-shadow:none!important;border:none!important;padding:0!important;min-height:auto}@media (min-width: 769px){.dashboard-container{overflow:visible!important}}.nav-tabs{display:none}.controls{margin-bottom:24px;background:var(--card-bg);padding:16px 24px;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;gap:20px;align-items:center;flex-wrap:wrap;justify-content:center;border:1px solid var(--border-color);width:100%;max-width:1050px;transition:box-shadow .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),background-color .15s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.controls>*{min-width:0}.controls:hover:not(.controls-empty){box-shadow:var(--shadow-md)}.controls-fixed{min-height:72px}.controls-empty{display:none}.all-schedule-page{width:100%}.all-schedule-controls{align-items:center}.all-schedule-search-input{flex:1 1 260px;max-width:360px}.all-schedule-search-empty{width:100%;color:var(--text-muted);font-size:13px;font-weight:700;text-align:center}.all-schedule-table-shell{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.all-schedule-table{margin-bottom:0}.all-schedule-week-stack,.teacher-week-stack{display:flex;flex-direction:column;gap:16px}@media (min-width: 769px){.all-schedule-week-stack,.teacher-week-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.teacher-week-stack .schedule-table-wrapper{margin-bottom:0}.teacher-week-stack .schedule-table,.all-schedule-week-stack .all-schedule-table{min-width:0}}.week-switcher{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-width:300px;padding:6px;border:1px solid rgba(148,163,184,.26);border-radius:14px;background:#ffffffb8;box-shadow:0 8px 22px #0f172a0f}.week-switcher-title{min-width:88px;color:var(--text-main);font-size:15px;font-weight:850;line-height:1.2;text-align:center;white-space:nowrap}.week-switcher-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:86px;min-height:34px;padding:0 12px;border:0;border-radius:10px;background:#2563eb1a;color:var(--primary);cursor:pointer;font-size:13px;font-weight:800;transition:background .18s ease,color .18s ease,opacity .18s ease}.week-switcher-btn:not(:disabled):hover{background:var(--primary);color:#fff}.week-switcher-btn:disabled{cursor:not-allowed;opacity:.42}.subject-schedule-controls{gap:12px}.status-week-switcher,.subject-week-switcher{align-self:flex-start}.status-week-switcher{margin-bottom:16px}@media (max-width: 768px){.week-switcher{display:flex;width:100%;min-width:0;gap:6px;padding:5px;border-radius:13px}.week-switcher-title{flex:1;min-width:0;font-size:14px}.week-switcher-btn{flex:0 0 auto;min-width:72px;min-height:32px;padding:0 9px;font-size:12px}.subject-schedule-controls{flex-direction:column;align-items:stretch!important}.status-week-switcher,.subject-week-switcher{align-self:stretch}}.computer-schedule-table th,.computer-schedule-table td,.subject-schedule-table th,.subject-schedule-table td{border-right:1px solid #cbd5e1;border-bottom:1px solid #cbd5e1}.computer-schedule-table,.subject-schedule-table{border:1px solid #cbd5e1}.teacher-schedule-course-link,.all-schedule-course-link{display:inline;border:0;border-radius:6px;padding:2px 4px;background:transparent;color:inherit;cursor:pointer;font:inherit;font-weight:inherit;line-height:inherit;text-align:center;-webkit-tap-highlight-color:transparent}.teacher-schedule-course-link:hover,.teacher-schedule-course-link:focus-visible,.all-schedule-course-link:hover,.all-schedule-course-link:focus-visible{background:#2563eb1a;color:var(--primary);outline:none}@media (hover: none),(pointer: coarse){.teacher-schedule-course-link,.all-schedule-course-link{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.teacher-schedule-course-link:hover,.teacher-schedule-course-link:active,.teacher-schedule-course-link:focus,.teacher-schedule-course-link:focus-visible,.all-schedule-course-link:hover,.all-schedule-course-link:active,.all-schedule-course-link:focus,.all-schedule-course-link:focus-visible{background:transparent;color:inherit;outline:none;box-shadow:none}.teacher-search-table .row-odd:hover td,.all-schedule-table .row-odd:hover td{background-color:var(--row-odd)}.teacher-search-table .row-even:hover td,.all-schedule-table .row-even:hover td{background-color:var(--row-even)}}.all-schedule-mobile-list-page,.all-schedule-class-list,.all-schedule-detail-bar{display:none}label{font-weight:500;color:var(--text-main)}select{padding:10px 36px 10px 16px;font-size:15px;border-radius:var(--radius-md);border:1px solid var(--border-color);background-color:#fff;color:var(--text-main);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;transition:var(--transition-fast);box-shadow:var(--shadow-sm);max-width:100%}select:hover:not(:disabled){border-color:#94a3b8;box-shadow:var(--shadow-md)}select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #3b82f626}select:disabled{background-color:#f1f5f9;cursor:not-allowed}.meta-info{font-size:14px;color:var(--text-muted);background:#f8fafc;padding:6px 12px;border-radius:6px;margin-left:auto}.table-container{width:100%;max-width:none;background:var(--card-bg);padding:30px;border-radius:var(--radius-xl);box-shadow:var(--shadow-md);border:1px solid var(--border-color);min-height:68vh;transition:box-shadow .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),background-color .15s cubic-bezier(.4,0,.2,1);overflow-x:hidden}.table-container:hover{box-shadow:var(--shadow-lg)}.schedule-table-wrapper{width:100%;max-width:none;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 auto 20px}.schedule-table{width:100%;min-width:800px}@keyframes desktopViewFadeSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (min-width: 769px){.view-switch-surface{animation:desktopViewFadeSlideIn .24s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page.page-view-annSchedule .desktop-detail-header,.page.page-view-annSchedule .table-container{max-width:none}}table{width:100%;border-collapse:separate;border-spacing:0;text-align:center;table-layout:fixed;margin-bottom:40px;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border-color);box-shadow:var(--shadow-sm)}table:last-child{margin-bottom:0}th,td{padding:14px 10px;word-wrap:break-word;vertical-align:middle;font-size:15px;line-height:1.45;border-bottom:1px solid var(--border-color);border-right:1px solid var(--border-color);transition:var(--transition-fast)}th:last-child,td:last-child{border-right:none}tr:last-child td{border-bottom:none}th{background-color:var(--table-header-bg);font-weight:600;color:var(--text-main)}.title-row th{font-size:22px;font-weight:700;color:var(--primary);background:var(--card-bg);border-bottom:none;padding:24px 10px 8px}.teacher-schedule-title-main,.all-schedule-title-main{display:block}.teacher-schedule-title-meta,.all-schedule-class-advisors{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 16px;margin-top:5px;color:#64748b;font-size:13px;font-weight:650;line-height:1.35}.created-row td{font-size:13px;color:var(--text-muted);background:var(--card-bg);padding:0 10px 24px;border-bottom:1px solid var(--border-color)}.col-time{width:90px;color:var(--text-muted);font-size:14px}.col-sec{width:80px;font-weight:500}.row-special .col-sec{white-space:nowrap}.col-day{width:calc((100% - 170px)/5)}.row-odd td{background-color:var(--row-odd)}.row-even td{background-color:var(--row-even)}.row-odd:hover td,.row-even:hover td{background-color:var(--row-hover)}.row-special td{background-color:var(--row-special);color:var(--row-special-text);font-weight:500}td span{display:inline-block;line-height:1.6}td.day-mon,th.day-mon{border-left:2px solid var(--border-color)}.split-bottom td{border-bottom:2px solid #cbd5e1}.pref-schedule-grid-on .schedule-table{border-color:#e2e8f0}.pref-schedule-grid-on .schedule-table th,.pref-schedule-grid-on .schedule-table td{border-right-color:#e2e8f0;border-bottom-color:#e2e8f0}.pref-schedule-grid-on .schedule-table td.day-mon,.pref-schedule-grid-on .schedule-table th.day-mon{border-left:2px solid #e2e8f0}.pref-schedule-grid-on .schedule-table .split-bottom td{border-bottom:2px solid #cbd5e1}.theme-colorless.pref-schedule-grid-on .schedule-table,.theme-colorless.pref-schedule-grid-on .schedule-table th,.theme-colorless.pref-schedule-grid-on .schedule-table td{border-color:#e2e8f0}.pref-schedule-grid-off .schedule-table{border-color:transparent}.pref-schedule-grid-off .schedule-table th,.pref-schedule-grid-off .schedule-table td{border-right-color:transparent;border-bottom-color:transparent}.pref-schedule-grid-off .schedule-table td.day-mon,.pref-schedule-grid-off .schedule-table th.day-mon{border-left-color:transparent}.pref-schedule-grid-off .schedule-table .split-bottom td{border-bottom-color:transparent}.loading{color:var(--text-muted);text-align:center;padding:60px 20px;font-size:16px}.error{color:#ef4444;background:#fef2f2;padding:16px 24px;border-radius:8px;border:1px solid #f87171;text-align:center;font-weight:500}.mobile-topbar{display:none;width:100%;max-width:none;align-items:center;justify-content:space-between;margin-bottom:12px;position:relative;z-index:60}.menu-btn{border:1px solid var(--border-color);background:#fff;color:var(--text-main);border-radius:8px;padding:8px 10px;font-size:18px;line-height:1;cursor:pointer;box-shadow:var(--shadow-sm)}.mobile-drawer{display:none;width:calc(100% - 20px);max-width:380px;background:#fffffff5;border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:10px;position:fixed;left:10px;top:114px;z-index:55;transform:translateY(-8px) scale(.98);opacity:0;transition:transform .18s ease,opacity .18s ease}.mobile-drawer.open{display:block;transform:translateY(0) scale(1);opacity:1}.mobile-drawer button{width:100%;text-align:left;border:none;background:transparent;color:var(--text-main);border-radius:10px;padding:11px 12px;font-size:14px;cursor:pointer;transition:background-color .16s ease,transform .16s ease}.mobile-drawer button:hover{background:#eef2ff}.mobile-drawer button:active{transform:scale(.985)}.mobile-drawer button.active{background:var(--primary);color:#fff}.mobile-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a59;z-index:40}.mobile-overlay.open{display:block}.openclass-table col:nth-child(1){width:30%}.openclass-table col:nth-child(2){width:70%}.openclass-subject{color:#00f;font-weight:500;font-size:15px}.openclass-name{color:#d4af37;font-weight:400;font-size:15px}.dashboard-openclass-subject{color:#00f;font-weight:500}.dashboard-openclass-name{color:#d4af37;font-weight:400}.dashboard-openclass-main{display:inline-flex;align-items:baseline;gap:2px;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-openclass-teacher{margin-left:auto;color:#111827;font-weight:800;white-space:nowrap;flex:0 0 auto}.openclass-spacer{height:20px;background-color:var(--bg-color)}.openclass-spacer td{border:none!important;background-color:var(--bg-color)!important;padding:0}.ann-table{table-layout:fixed}.ann-table col:nth-child(1){width:12%}.ann-table col:nth-child(2){width:36%}.ann-table col:nth-child(3){width:8%}.ann-table col:nth-child(4){width:7%}.ann-table col:nth-child(5){width:23%}.ann-table col:nth-child(6){width:11%}.ann-table col:nth-child(7){width:3%}.ann-date{font-weight:600;background:#f8fafc!important;line-height:1.5;white-space:nowrap}.ann-weekday{display:inline-block;font-size:.88em;color:var(--text-muted)}.ann-event{text-align:left;line-height:1.6}.ann-time{color:#d4af37;font-weight:600;letter-spacing:.1px}.ann-group-end td{border-bottom:2px solid #cbd5e1}.ann-date-spacer td{height:12px;padding:0;border:none!important;background:#eef2ff!important}.ann-week-toolbar{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin:0 0 10px;color:var(--text-muted);font-size:14px}.ann-week-toolbar select{min-width:110px;padding:6px 26px 6px 10px;font-size:14px}.announcements-container{text-align:left;width:100%;background:var(--app-bg)}.announcements-container h2{color:var(--primary);margin-top:0;margin-bottom:8px;font-size:22px;text-align:center}.ann-updated{font-size:13px;color:var(--text-muted);margin-bottom:20px}.announcement-summary-bar{margin-bottom:18px}.announcement-summary-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;background:#3b82f614;border:1px solid rgba(59,130,246,.14);color:var(--primary);font-size:13px;font-weight:600}.announcement-group{margin-bottom:22px}.announcement-card{margin-bottom:16px;border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;background:#fff;box-shadow:var(--shadow-sm);transition:var(--transition-fast)}.announcement-card-notice{background:var(--card-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.announcement-card:hover{box-shadow:var(--shadow-md);border-color:#cbd5e1}.announcement-header{width:100%;border:0;padding:16px 20px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;text-align:left;background:var(--table-header-bg);transition:background var(--transition-fast)}.announcement-header:hover{background:#0f172a08}.announcement-icon{color:var(--text-muted);transition:transform var(--transition-smooth)}.announcement-icon.open{transform:rotate(180deg);color:var(--primary)}.announcement-content-wrapper{max-height:0;overflow:hidden;transition:max-height var(--transition-smooth)}.announcement-content-wrapper.open{max-height:1400px}.announcement-content-inner{overflow:hidden}.announcement-title{font-weight:600;font-size:16px;line-height:1.45;color:var(--text-main);display:flex;align-items:center;flex-wrap:wrap;gap:8px;flex:1;padding-right:16px}.announcement-dept{color:#d4af37;font-weight:700}.announcement-title-stack{flex:1;min-width:0}.announcement-dept-badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#d4af3724;color:#b88912;font-size:12px;font-weight:700;white-space:nowrap}.announcement-main-title{min-width:0;flex:1}.announcement-preview{margin-top:6px;color:var(--text-muted);font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.announcement-date-container{display:flex;align-items:center;gap:12px}.announcement-date{color:var(--text-muted);font-size:14px;white-space:nowrap}.announcement-content{padding:20px;font-size:15px;line-height:1.6;font-weight:400;border-top:1px solid var(--border-color);color:var(--text-main);overflow-x:auto}.announcement-content-notice{background:#ffffff5c}.announcement-content table{margin-bottom:16px;width:100%!important}.announcement-content p{margin-top:0;margin-bottom:10px}.ann-schedule-mobile{width:100%}.ann-calendar-mobile-page,.announcements-mobile-page{display:flex;flex-direction:column;gap:14px}.mobile-list-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:2px 2px 0}.mobile-list-page-head h2{margin:0;color:#172033;font-size:21px;font-weight:900;line-height:1.2;text-align:left}.mobile-list-page-head span{color:#64748b;font-size:13px;font-weight:800;white-space:nowrap}.mobile-week-tabs{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 4px;scrollbar-width:none}.mobile-week-tabs::-webkit-scrollbar{display:none}.mobile-week-tab{flex:0 0 auto;min-height:34px;border:1px solid rgba(191,219,254,.92);border-radius:999px;padding:7px 13px;background:#eff6ffcc;color:#1d4ed8;font-size:13px;font-weight:800;font-family:inherit}.mobile-week-tab.active{border-color:#2563eb;background:#2563eb;color:#fff;box-shadow:0 8px 18px #2563eb2e}.mobile-calendar-list,.mobile-announcement-list{display:flex;flex-direction:column;gap:16px}.mobile-date-section{display:flex;flex-direction:column;gap:9px}.mobile-date-label{align-self:flex-start;padding:5px 10px;border-radius:999px;background:#2563eb1a;color:#1d4ed8;font-size:13px;font-weight:900;line-height:1.25}.mobile-calendar-card,.mobile-announcement-card{overflow:hidden;border:1px solid rgba(226,232,240,.95);border-radius:18px;background:#fff;box-shadow:0 6px 16px #0f172a0a;-webkit-tap-highlight-color:transparent}.mobile-calendar-head,.mobile-announcement-head{width:100%;border:0;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px;padding:14px 15px;background:transparent;color:inherit;text-align:left}.mobile-calendar-main{min-width:0;display:flex;flex:1;align-items:center;gap:9px}.mobile-calendar-time,.mobile-announcement-tag{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:3px 8px;border-radius:999px;background:#2563eb1a;color:#2563eb;font-size:12px;font-weight:600;white-space:nowrap}.mobile-calendar-title,.mobile-announcement-title{flex:1;min-width:0;color:#172033;font-size:16px;font-weight:600;line-height:1.45;overflow-wrap:anywhere}.mobile-announcement-title{font-size:16.5px}.mobile-announcement-preview{flex:1 1 100%;color:#64748b;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;font-weight:500;line-height:1.5}.mobile-announcement-preview.open{display:block;-webkit-line-clamp:unset;-webkit-box-orient:unset;overflow:visible}.mobile-announcement-rich-content{color:#64748b;font-size:14px;font-weight:500;line-height:1.5}.mobile-announcement-rich-content p{margin-top:0;margin-bottom:8px}.mobile-announcement-rich-content p:last-child{margin-bottom:0}.mobile-announcement-more{align-self:flex-start;color:#2563eb;font-size:13px;font-weight:900}.mobile-announcement-more.open{color:#64748b}.mobile-calendar-content,.mobile-announcement-content{padding:13px 15px 15px;background:#f8fafc;font-size:15px;line-height:1.6}.mobile-calendar-content .ann-detail-empty{color:#64748b;font-size:14px;font-weight:700}.openclass-mobile{width:100%}.ann-schedule-mobile-group{margin-bottom:24px}.openclass-mobile-card{background:var(--card-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);-webkit-tap-highlight-color:transparent;pointer-events:none}.openclass-mobile-card:hover,.openclass-mobile-card:active,.openclass-mobile-card:focus-within,.openclass-mobile-card.active,.openclass-mobile-card.selected,.openclass-mobile-card.is-selected{transform:none;box-shadow:var(--shadow-sm);border-color:var(--border-color);background:var(--card-bg)}.openclass-mobile-card .announcement-header{pointer-events:none}.openclass-mobile-card .announcement-header:hover,.openclass-mobile-card .announcement-header:active{background:transparent}.leave-mobile-page{width:100%}.leave-mobile-page h2{margin:0 0 12px;font-size:19px;color:var(--text-main)}.leave-mobile-group{display:flex;flex-direction:column;gap:10px}.leave-mobile-card{display:flex;flex-direction:column;gap:12px;padding:14px 16px;border:1px solid rgba(226,232,240,.95);border-radius:16px;background:#ffffffeb;box-shadow:var(--shadow-sm);-webkit-tap-highlight-color:transparent}.leave-mobile-card:hover,.leave-mobile-card:active,.leave-mobile-card:focus,.leave-mobile-card:focus-within,.leave-mobile-card.active,.leave-mobile-card.selected,.leave-mobile-card.is-selected{transform:none;scale:1;box-shadow:var(--shadow-sm);border-color:#e2e8f0f2;background:#ffffffeb;outline:none}.leave-mobile-card.is-me{border-color:var(--primary);box-shadow:0 6px 16px #0f172a0a}.leave-mobile-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.leave-mobile-type-pill{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:999px;background:#2563eb1f;color:var(--primary);font-size:13px;font-weight:800;white-space:nowrap}.leave-mobile-teacher-badge{display:inline-flex;align-items:center;min-width:0;max-width:68%;padding:6px 11px;border-radius:999px;background:#0ea5e91a;color:#0284c7;font-size:14px;font-weight:800}.leave-mobile-teacher-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leave-mobile-details{display:grid;gap:8px}.leave-mobile-detail{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:15px;font-weight:650;line-height:1.45}.openclass-mobile-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;width:100%}.openclass-mobile-title-block{min-width:0;flex:1;display:flex;flex-direction:column;gap:6px}.openclass-mobile-title{display:flex;flex-wrap:wrap;gap:7px;align-items:flex-start;line-height:1.45;min-width:0;flex:1}.openclass-mobile-subtitle{color:var(--text-main);font-size:18px;font-weight:600;line-height:1.42;overflow-wrap:anywhere}.openclass-mobile-header{cursor:default}.openclass-mobile-subject{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:999px;background:#7c3aed1f;color:#7c3aed;font-size:13px;font-weight:600}.openclass-mobile-teacher{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;max-width:42%;padding:4px 8px;border-radius:999px;background:#2563eb1a;color:var(--primary);font-size:14px;font-weight:600;line-height:1.25;text-align:center;word-break:keep-all}.openclass-mobile-detail-grid{display:grid;grid-template-columns:1fr;gap:8px;margin-top:12px}.openclass-mobile-detail{display:grid;gap:2px;padding:8px 10px;border-radius:8px;background:#f8fafccc;border:1px solid rgba(148,163,184,.16)}.openclass-mobile-detail span{color:var(--text-muted);font-size:13px;font-weight:500}.openclass-mobile-detail strong{color:var(--text-main);font-size:14px;line-height:1.4}.ann-mobile-date{font-size:16px;font-weight:600;color:var(--primary);margin-bottom:12px;padding-left:4px}.ann-detail-list{display:flex;flex-direction:column;gap:8px}.ann-detail-item{display:flex;align-items:flex-start;line-height:1.5}.ann-detail-label{color:var(--text-muted);width:80px;flex-shrink:0}.ann-detail-value{color:var(--text-main);flex:1;word-break:break-word}.teacher-name{font-size:11px;color:var(--text-muted);font-weight:400;line-height:1.35}.special-muted{color:var(--text-muted);font-size:13px}@media (max-width: 768px){.special-muted{font-size:10px;font-weight:400}.special-muted .teacher-name{font-size:9px}}.teacher-search-page{display:flex;flex-direction:column;gap:14px;width:100%}.teacher-search-form{background:#f8fafcbf;border:1px solid var(--border-color);border-radius:12px;padding:12px;width:100%}.teacher-search-mode-switch{display:flex;gap:8px;margin-bottom:10px}.teacher-search-mode-btn{border:1px solid var(--border-color);background:#fff;color:var(--text-main);border-radius:10px;padding:8px 12px;font-size:13px;font-weight:600;cursor:pointer}.teacher-search-mode-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.teacher-search-input-row{display:flex;gap:8px}.teacher-search-input{flex:1;min-width:0;border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;font-size:14px;color:var(--text-main);background:#fff}.teacher-search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #3b82f626}.teacher-search-submit{border:1px solid var(--primary);border-radius:10px;padding:10px 16px;font-size:14px;font-weight:600;color:#fff;background:var(--primary);cursor:pointer}.teacher-search-submit:disabled{opacity:.55;cursor:default}.teacher-search-submit:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.teacher-contact-list,.user-teacher-list{display:grid;gap:0;overflow:hidden;border:1px solid var(--border-color);border-radius:12px;background:#fff}.teacher-contact-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px 8px 8px;border-bottom:1px solid rgba(226,232,240,.9)}.teacher-contact-item:last-child,.user-teacher-item:last-child{border-bottom:0}.teacher-contact-item.active,.user-teacher-item.active{background:#0f172a0a}.teacher-contact-main,.user-teacher-item{min-width:0;display:flex;align-items:center;gap:10px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.teacher-contact-main{width:100%}.teacher-avatar{width:42px;height:42px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#3b82f61f;color:#2563eb;font-size:14px;font-weight:600;box-shadow:inset 0 0 0 1px #ffffffb8}.teacher-contact-text,.user-teacher-item span:last-child{min-width:0;display:grid;gap:3px}.teacher-contact-text{flex:1 1 auto}.teacher-contact-text strong,.user-teacher-item strong{color:var(--text-main);font-size:15px;line-height:1.35;white-space:normal;overflow-wrap:anywhere}.teacher-contact-text small,.user-teacher-item small{color:var(--text-muted);font-size:12px;line-height:1.35;white-space:normal;overflow-wrap:anywhere}.teacher-contact-name-row{min-width:0;width:100%;display:flex;align-items:baseline;justify-content:space-between;gap:10px}.teacher-contact-name-row strong{min-width:0;flex:1 1 auto}.teacher-contact-duty{flex:0 1 auto;min-width:0;margin-left:auto;text-align:right;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis}.teacher-contact-follow,.teacher-contact-star{width:40px;height:40px;border:0;border-radius:50%;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text-muted);cursor:pointer;transition:color .15s ease,background .15s ease,transform .12s ease}.teacher-contact-follow:hover,.teacher-contact-star:hover{background:#f59e0b1a;color:var(--icon-amber)}.teacher-contact-follow:active,.teacher-contact-star:active{transform:scale(.94)}.teacher-contact-follow.followed,.teacher-contact-star.followed{color:var(--icon-amber);background:#f59e0b21}.teacher-search-result-panel{min-width:0}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;position:relative;overflow:hidden}.teacher-schedule-modal{max-width:1000px}.modal-close-btn{position:absolute;top:10px;right:15px;background:none;border:none;font-size:24px;color:var(--text-muted);cursor:pointer;z-index:10;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease}.modal-close-btn:hover{background:#0000000d;color:var(--text-main)}.modal-body{padding:20px;overflow-y:auto;flex:1}.status-board-page{display:flex;flex-direction:column;width:100%}.status-board-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}.status-board-left,.status-board-right{display:flex;flex-direction:column;gap:16px}.status-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.status-summary-card{position:relative;background:#ffffffb3;border:1px solid rgba(255,255,255,.6);border-radius:20px;padding:16px 20px;box-shadow:0 2px 8px #00000005;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:all .25s cubic-bezier(.4,0,.2,1);overflow:hidden;z-index:1}.status-summary-card:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:.15;transition:opacity .25s ease;pointer-events:none}.status-card-blue:before{background:var(--card-blue)}.status-card-cyan:before{background:var(--card-cyan)}.status-card-red:before{background:var(--card-red)}.status-card-purple:before{background:var(--card-purple)}.status-card-green:before{background:var(--card-green)}.status-summary-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);background:#fffc}.status-summary-card:hover:before{opacity:.3}.status-summary-label{font-size:13px;color:var(--text-muted)}.status-summary-value{font-size:30px;font-weight:700;color:var(--text-main);line-height:1.2;margin-top:4px}.status-summary-triple{display:flex;gap:10px;margin-top:10px;font-size:16px;font-weight:500;color:var(--text-main);align-items:center}.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border-radius:12px;font-size:14px;gap:4px;white-space:nowrap}.status-badge b{font-weight:700;font-size:16px}.badge-blue{background:#1d4ed81a;color:var(--text-main)}.badge-red{background:#ef44441a;color:var(--text-main)}.badge-green{background:#10b9811a;color:var(--text-main)}.status-tabs{display:flex;gap:8px;margin-bottom:16px;border-bottom:1px solid rgba(148,163,184,.2);padding-bottom:12px}.status-tab-btn{background:transparent;border:none;font-size:15px;font-weight:600;color:var(--text-muted);padding:6px 12px;cursor:pointer;border-radius:8px;transition:all .2s ease}.status-tab-btn:hover{background:#f1f5f9cc;color:var(--text-main)}.status-tab-btn.active{color:var(--primary);background:#3b82f61a}.status-tab-btn.tab-blue.active{color:#1d4ed8;background:#1d4ed81a}.status-tab-btn.tab-red.active{color:#ef4444;background:#ef44441a}.status-tab-btn.tab-green.active{color:#10b981;background:#10b9811a}.theme-colorless .status-tab-btn.active{color:var(--text-main)!important;background:#94a3b826!important}.status-detail-container{margin-top:16px}.fade-in{animation:fadeIn .3s cubic-bezier(.22,1,.36,1)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.status-section{background:#ffffffad;border:1px solid rgba(255,255,255,.6);border-radius:20px;padding:20px;box-shadow:var(--shadow-sm);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:all .25s cubic-bezier(.4,0,.2,1)}.status-section:hover{background:#ffffffd9;box-shadow:var(--shadow-md)}.status-section h3{margin:0 0 16px;font-size:17px;font-weight:700;color:var(--text-main);display:flex;align-items:center;gap:8px}.semester-board-page{width:min(920px,100%);margin:0 auto;display:flex;flex-direction:column;gap:14px;color:var(--text-main)}.semester-board-empty-card,.semester-summary-card,.semester-week-card,.semester-detail-panel,.semester-rank-panel,.semester-rank-card{border:1px solid rgba(226,232,240,.9);background:#fffffff2;box-shadow:var(--shadow-sm)}.semester-detail-head span,.semester-summary-card span,.semester-week-card small{color:var(--text-muted);font-size:13px;font-weight:700;line-height:18px}.semester-detail-head h3{margin:2px 0 0;color:var(--text-main);font-weight:850}.semester-board-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.semester-summary-card{min-width:0;border-radius:14px;padding:12px}.semester-summary-card strong{display:block;margin-top:3px;color:var(--text-main);font-size:26px;line-height:30px}.semester-tone-blue{--semester-tone: #2563eb;--semester-soft: rgba(37, 99, 235, .12)}.semester-tone-red{--semester-tone: #dc2626;--semester-soft: rgba(220, 38, 38, .12)}.semester-tone-green{--semester-tone: #16a34a;--semester-soft: rgba(22, 163, 74, .12)}.semester-summary-card.semester-tone-blue,.semester-summary-card.semester-tone-red,.semester-summary-card.semester-tone-green{background:linear-gradient(180deg,#fff 0%,var(--semester-soft) 100%)}.semester-summary-card.semester-tone-blue strong,.semester-summary-card.semester-tone-red strong,.semester-summary-card.semester-tone-green strong{color:var(--semester-tone)}.semester-week-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.semester-week-card{display:grid;gap:4px;min-height:88px;padding:12px;border-radius:14px;color:var(--text-main);text-align:left;cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.semester-week-card:active{transform:scale(.99)}.semester-week-card.active{border-color:#0f766e80;box-shadow:0 8px 20px #0f766e24}.semester-week-card span{color:#334155;font-size:15px;font-weight:850;line-height:20px}.semester-week-card strong{color:#0f766e;font-size:24px;line-height:28px}.semester-detail-panel,.semester-rank-panel{border-radius:18px;padding:16px}.semester-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.semester-detail-head h3{font-size:21px;line-height:27px}.semester-detail-head>strong{min-width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:#0f766e1f;color:#0f766e;font-size:22px}.semester-status-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}.semester-status-tabs button{border:1px solid rgba(226,232,240,.95);border-radius:12px;padding:10px;display:flex;align-items:center;justify-content:center;gap:8px;background:#fff;color:var(--semester-tone);font-size:15px;font-weight:850}.semester-status-tabs button.active{border-color:var(--semester-tone);background:var(--semester-soft)}.semester-status-tabs b{font-size:18px}.semester-detail-list{display:flex;flex-direction:column;gap:8px;margin:14px 0 0;padding:0;list-style:none}.semester-detail-list li{display:grid;gap:3px;padding:11px 12px;border:1px solid rgba(226,232,240,.85);border-radius:12px;background:#f8fafcd1}.semester-detail-main{color:#0f172a;font-size:15px;font-weight:850;line-height:21px}.semester-detail-sub{color:#475569;font-size:14px;font-weight:650;line-height:20px}.semester-rank-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.semester-rank-card{--rank-tone: #0f766e;--rank-soft: rgba(15, 118, 110, .1);min-width:0;border-radius:14px;padding:14px}.semester-rank-substitute{--rank-tone: #dc2626;--rank-soft: rgba(220, 38, 38, .1)}.semester-rank-help{--rank-tone: #16a34a;--rank-soft: rgba(22, 163, 74, .1)}.semester-rank-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.semester-rank-head h3{margin:0;color:var(--text-main);font-size:17px;line-height:23px;font-weight:850}.semester-rank-head span{flex:0 0 auto;border-radius:999px;padding:3px 8px;background:var(--rank-soft);color:var(--rank-tone);font-size:12px;font-weight:800;line-height:16px}.semester-rank-list{display:grid;gap:9px;margin:0;padding:0;list-style:none}.semester-rank-list li{display:flex;align-items:center;gap:9px;min-width:0}.semester-rank-position{flex:0 0 26px;width:26px;height:26px;border-radius:9px;display:grid;place-items:center;background:var(--rank-soft);color:var(--rank-tone);font-size:13px;font-weight:850}.semester-rank-main{display:grid;gap:5px;min-width:0;flex:1}.semester-rank-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.semester-rank-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#0f172a;font-size:14px;font-weight:850;line-height:18px}.semester-rank-row em{flex:0 0 auto;color:var(--rank-tone);font-size:12px;font-style:normal;font-weight:800;line-height:16px}.semester-rank-track{height:5px;border-radius:999px;background:#e2e8f0e6;overflow:hidden}.semester-rank-track span{display:block;height:100%;border-radius:inherit;background:var(--rank-tone)}.semester-rank-expand{width:100%;min-height:36px;margin-top:12px;border:1px solid rgba(226,232,240,.95);border-radius:10px;background:#fff;color:var(--rank-tone);display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13px;font-weight:850;line-height:18px}.semester-rank-expand svg{width:15px;height:15px;flex:0 0 auto;fill:currentColor;transition:transform .18s ease}.semester-board-empty-card{border-radius:18px;padding:18px;display:grid;gap:10px}.semester-board-empty-card strong{color:var(--text-main);font-size:19px}.semester-board-empty-card span{color:var(--text-muted);font-size:14px;line-height:20px}.semester-dashboard-card{display:grid;gap:10px;width:100%}.semester-dashboard-main{display:flex;align-items:baseline;justify-content:space-between;gap:12px;border-radius:var(--radius-lg);padding:14px;background:#ffffff94;border:1px solid rgba(255,255,255,.5)}.semester-dashboard-main strong{color:#0f766e;font-size:24px;line-height:30px;font-weight:850;white-space:nowrap}.semester-dashboard-main span{min-width:0;color:var(--text-main);font-size:14px;font-weight:750;line-height:20px;text-align:right}@media (max-width: 768px){.page.page-view-semesterBoard.page-mobile-scroll-shell .table-container{padding:12px 14px var(--mobile-bottom-nav-space)}.semester-board-page{gap:12px}.semester-board-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.semester-summary-card{padding:10px 8px;border-radius:12px}.semester-summary-card span{font-size:12px}.semester-summary-card strong{font-size:22px;line-height:26px}.semester-week-grid{gap:8px}.semester-week-card{min-height:82px;padding:10px}.semester-week-card span{font-size:14px}.semester-week-card strong{font-size:22px}.semester-week-card small{font-size:11px;line-height:16px}.semester-detail-panel,.semester-rank-panel{padding:14px;border-radius:16px}.semester-rank-grid{grid-template-columns:1fr;gap:10px}.semester-rank-card{padding:13px}.semester-detail-main{font-size:15px}.semester-detail-sub{font-size:14px}}.status-section h3:before{content:"";display:block;width:4px;height:16px;background:var(--primary);border-radius:4px}.status-detail-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.status-detail-list li{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;background:#ffffffbf;border-radius:12px;border:1px solid transparent;transition:all .2s ease}.status-detail-list li:hover{background:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #0000000d;border-color:var(--primary)}.content-blue .status-detail-list li:hover{border-color:#1d4ed8}.content-red .status-detail-list li:hover{border-color:#ef4444}.content-green .status-detail-list li:hover{border-color:#10b981}.theme-colorless .status-detail-list li:hover{border-color:var(--border-color)}.status-detail-main{font-size:15px;font-weight:700;color:var(--text-main);flex-shrink:0}.status-detail-sub{font-size:14px;color:var(--text-muted);background:#f1f5f9cc;padding:4px 10px;border-radius:8px;text-align:right}.status-mobile-change-grid{display:contents}.status-mobile-change-head,.status-mobile-inline-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.status-mobile-change-card{display:flex;flex-direction:column;gap:12px}.status-mobile-inline-title{align-items:baseline}.status-mobile-inline-title strong{color:var(--text-main);font-size:15px;line-height:20px}.status-mobile-inline-title span{color:var(--text-muted);font-size:12px;font-weight:700;line-height:18px}.status-rank-grid{display:grid;grid-template-columns:1fr;gap:16px}.status-rank-card{--rank-accent: var(--primary);--rank-accent-soft: rgba(59, 130, 246, .12);--rank-accent-faint: rgba(59, 130, 246, .06);position:relative;overflow:hidden}.status-rank-card:after{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--rank-accent);opacity:.85}.status-rank-card.rank-today{--rank-accent: #2563eb;--rank-accent-soft: rgba(37, 99, 235, .12);--rank-accent-faint: rgba(37, 99, 235, .06)}.status-rank-card.rank-week{--rank-accent: #7c3aed;--rank-accent-soft: rgba(124, 58, 237, .12);--rank-accent-faint: rgba(124, 58, 237, .06)}.status-rank-card.rank-substitute{--rank-accent: #dc2626;--rank-accent-soft: rgba(220, 38, 38, .12);--rank-accent-faint: rgba(220, 38, 38, .06)}.status-rank-card.rank-help{--rank-accent: #16a34a;--rank-accent-soft: rgba(22, 163, 74, .12);--rank-accent-faint: rgba(22, 163, 74, .06)}.theme-colorless .status-rank-card{--rank-accent: #64748b;--rank-accent-soft: rgba(100, 116, 139, .12);--rank-accent-faint: rgba(100, 116, 139, .06)}.status-rank-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.status-rank-header h3{margin:0}.status-rank-header h3:before{background:var(--rank-accent)}.status-rank-count{flex-shrink:0;padding:4px 9px;border-radius:999px;background:var(--rank-accent-soft);color:var(--rank-accent);font-size:12px;font-weight:700;line-height:1}.status-expand-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:10px;margin-top:12px;background:#f1f5f999;border:1px dashed rgba(148,163,184,.4);border-radius:8px;color:var(--text-muted);font-size:14px;cursor:pointer;transition:all .2s ease}.status-expand-btn:hover{background:#f1f5f9;color:var(--text-main);border-style:solid}.status-rank-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.status-rank-list li{background:#ffffffad;border:1px solid rgba(148,163,184,.14);box-shadow:0 1px 2px #0f172a08;transition:all .2s ease;border-radius:12px;overflow:hidden}.status-rank-list li:last-child{border-bottom:none}.status-rank-list li:hover{background:#ffffffeb;border-color:var(--rank-accent-soft);transform:translateY(-1px);box-shadow:0 6px 16px #0f172a0f}.status-rank-trigger{width:100%;display:grid;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:12px;padding:10px 12px;border:0;background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:rgba(59,130,246,.12)}.status-rank-trigger:focus-visible{outline:2px solid var(--rank-accent);outline-offset:-2px}.status-rank-trigger:active{background:#ffffff2e}.status-rank-position{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:#94a3b81f;color:var(--text-muted);font-size:13px;font-weight:800;line-height:1}.status-rank-item.rank-top-1 .status-rank-position{background:#f59e0b29;color:#b45309}.status-rank-item.rank-top-2 .status-rank-position{background:#64748b24;color:#475569}.status-rank-item.rank-top-3 .status-rank-position{background:#d9770621;color:#92400e}.theme-colorless .status-rank-position,.theme-colorless .status-rank-item.rank-top-1 .status-rank-position,.theme-colorless .status-rank-item.rank-top-2 .status-rank-position,.theme-colorless .status-rank-item.rank-top-3 .status-rank-position{background:#64748b1f;color:var(--text-muted)}.status-rank-main{display:flex;min-width:0;flex-direction:column;gap:7px}.status-rank-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.status-rank-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;color:var(--text-main)}.status-rank-hours{display:inline-flex;align-items:baseline;gap:3px;flex-shrink:0;padding:3px 8px;border-radius:999px;background:var(--rank-accent-soft);color:var(--rank-accent);font-size:12px;font-weight:700}.status-rank-hours b{font-size:16px;line-height:1}.status-rank-track{display:block;height:6px;overflow:hidden;border-radius:999px;background:#94a3b824}.status-rank-bar{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--rank-accent),color-mix(in srgb,var(--rank-accent) 58%,white));min-width:10px}@supports not (background: color-mix(in srgb,#000 50%,white)){.status-rank-bar{background:var(--rank-accent)}}.teacher-search-meta{margin-top:8px;font-size:12px;color:var(--text-muted)}.data-status-body{display:flex;flex-direction:column;gap:10px;width:100%}.data-status-summary{display:flex;align-items:center;gap:8px}.data-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-ok{background:#22c55e;box-shadow:0 0 6px #22c55e80}.dot-warn{background:#f59e0b;box-shadow:0 0 6px #f59e0b80}.dot-err{background:#ef4444;box-shadow:0 0 6px #ef444480}.dot-loading{background:#94a3b8;animation:dotPulse 1.2s ease-in-out infinite}@keyframes dotPulse{0%,to{opacity:1}50%{opacity:.25}}.data-status-status-text{font-size:14px;font-weight:500;color:var(--text-main)}.data-status-ago{font-size:13px;color:var(--text-muted);margin-left:auto}.data-status-source{font-size:12px;color:var(--text-muted);padding:4px 8px;background:#0000000a;border-radius:6px;width:fit-content}.data-status-modules{display:flex;flex-direction:column;gap:7px;border-top:1px solid var(--border-color);padding-top:10px}.data-status-row{display:flex;justify-content:space-between;align-items:center}.data-status-row-label{font-size:13px;color:var(--text-muted)}.data-status-row-time{font-size:13px;font-weight:500;color:var(--text-main)}.data-status-loading{font-size:13px;color:var(--text-muted)}@media (max-width: 768px){.table-container,.controls,table,th,td{transition:none!important;animation:none!important}.view-switch-surface{animation:none!important;transition:none!important;will-change:auto}.page.page-mobile-menu{height:var(--app-height, 100dvh);overflow:hidden;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-y:none}body{padding:0;background:var(--app-bg)}.masonry-container{padding:8px 16px 24px;gap:16px}.desktop-dashboard-header{display:none}.desktop-dashboard-header h1{text-align:center}.masonry-column{gap:16px}.dashboard-card{--mobile-card-scale: .996;--mobile-card-glow: .15;padding:20px;border-radius:20px;box-shadow:0 4px 16px #0000001a;scale:var(--mobile-card-scale);transform-origin:center center;backface-visibility:hidden;transition:scale .42s cubic-bezier(.22,1,.36,1)}.dashboard-card:before{transition:opacity .42s cubic-bezier(.22,1,.36,1);opacity:var(--mobile-card-glow)}.dashboard-container.scrolling-active .dashboard-card{transition:none!important;will-change:scale}.dashboard-container.scrolling-active .dashboard-card:before{transition:none!important}.dashboard-card:hover{transform:none;scale:var(--mobile-card-scale);box-shadow:0 4px 16px #0000001a}.dashboard-card:active{transform:none;scale:calc(var(--mobile-card-scale) * .978);box-shadow:0 4px 16px #0000001a;transition:scale .1s ease-in}.dashboard-card:hover:before,.dashboard-card:active:before{opacity:var(--mobile-card-glow)}.dashboard-card-title{font-size:17px}.announcement-icon{display:none}.announcement-date-container{gap:0}.announcement-title{padding-right:8px}.announcement-preview{margin-top:4px;font-size:12px}.announcement-content-wrapper{max-height:none;overflow:visible;transition:none}.announcement-content-wrapper:not(.open){display:none}.announcement-content-wrapper.open{display:block}.page{max-width:none;width:100%}.page.page-mobile-scroll-shell{height:var(--app-height, 100dvh);overflow:hidden;display:flex;flex-direction:column;background:var(--app-bg)}.page.page-mobile-scroll-shell .table-container{flex:1;min-height:0;margin-bottom:0;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;padding-bottom:var(--mobile-bottom-nav-space);background:var(--app-bg);border-color:transparent;box-shadow:none}.page.page-mobile-scroll-shell .mobile-scroll-surface{overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}.page.page-view-openClasses.page-mobile-scroll-shell,.page.page-view-openClasses.page-mobile-scroll-shell .table-container,.page.page-view-allSchedule.page-mobile-scroll-shell,.page.page-view-allSchedule.page-mobile-scroll-shell .table-container,.page.page-view-computerSchedule.page-mobile-scroll-shell,.page.page-view-computerSchedule.page-mobile-scroll-shell .table-container,.page.page-view-scienceSchedule.page-mobile-scroll-shell,.page.page-view-scienceSchedule.page-mobile-scroll-shell .table-container,.page.page-view-teacherSearch.page-mobile-scroll-shell,.page.page-view-teacherSearch.page-mobile-scroll-shell .table-container{overscroll-behavior-y:none}.page.page-mobile-scroll-shell .table-container.dashboard-container{height:auto;padding-bottom:var(--mobile-bottom-nav-space)!important;background:var(--app-bg)!important}html.platform-android .page.page-mobile-scroll-shell .table-container.dashboard-container{background:var(--app-bg)!important}html.platform-android .dashboard-card.glass-panel{background:#ffffffe6;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 4px 12px #0f172a14}html.platform-android .dashboard-card:before{opacity:var(--mobile-card-glow)}h1{display:none}.mobile-topbar{display:flex}.nav-tabs{display:none}.controls{padding:12px;gap:12px;border-radius:8px;margin-bottom:16px;align-items:stretch}.all-schedule-controls{position:sticky;top:0;z-index:5}.all-schedule-search-input{max-width:none;flex-basis:auto}.all-schedule-mobile-list-page{display:flex;flex-direction:column;gap:14px}.all-schedule-mobile-search{position:static;z-index:auto;padding:12px;background:#f8fafcbf}.all-schedule-mobile-search .all-schedule-search-input{width:auto;max-width:none;flex:1;border-radius:10px;border-color:var(--border-color);background:#fff;box-shadow:none}.all-schedule-class-list{display:grid;gap:0;overflow:hidden;border:1px solid var(--border-color);border-radius:12px;background:#fff;box-shadow:none}.all-schedule-class-item{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px 12px 11px 10px;border-bottom:0;background:#fff;-webkit-tap-highlight-color:transparent}.all-schedule-class-item:not(:last-child):after{content:"";position:absolute;left:70px;right:12px;bottom:0;height:1px;background:#e2e8f0e6}.all-schedule-class-main{min-width:0;width:100%;display:flex;align-items:center;gap:12px;padding:0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.all-schedule-class-avatar{width:48px;height:48px;flex:0 0 48px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:16px;font-weight:600;line-height:1}.all-schedule-class-text{min-width:0;flex:1 1 auto;display:grid;gap:3px}.all-schedule-class-text strong{overflow:hidden;color:var(--text-main);font-size:17px;font-weight:500;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.all-schedule-class-text small{min-width:0;overflow:hidden;color:var(--text-muted);font-size:12px;font-weight:400;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.all-schedule-class-item .teacher-contact-star,.all-schedule-detail-bar .teacher-contact-star{flex:0 0 40px;width:40px;height:40px}.all-schedule-detail-mobile{display:flex;flex-direction:column;gap:10px}.all-schedule-detail-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 2px 0}.all-schedule-back-btn{display:inline-flex;align-items:center;gap:4px;min-height:38px;padding:7px 10px 7px 6px;border:0;border-radius:999px;background:#ffffffd1;color:#2563eb;font-size:15px;font-weight:750;box-shadow:0 8px 18px #2563eb1a;cursor:pointer}.all-schedule-detail-mobile .all-schedule-table-shell{border-radius:12px}.all-schedule-title-main{display:block}.all-schedule-class-advisors{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 16px;margin-top:5px;color:#64748b;font-size:12px;font-weight:650;line-height:1.35}.controls-fixed{min-height:62px}.meta-info{margin-left:0;width:100%;text-align:center}.title-meta{width:100%;margin:-4px 0 12px}.table-container{padding:10px;border-radius:8px;min-height:auto}.timetable-table-wrapper{max-width:100%;overflow-x:hidden}.timetable-table{min-width:0}.controls select{width:100%;flex:1 1 auto;min-width:0}.announcement-group{margin-bottom:20px}.ann-date{white-space:normal;word-break:break-word;overflow-wrap:anywhere;font-size:11px;line-height:1.35}.ann-weekday{font-size:10px}.ann-table td{font-size:11px;line-height:1.25}.ann-table col:nth-child(1){width:11%}.ann-table col:nth-child(2){width:41%}.ann-table col:nth-child(3){width:8%}.ann-table col:nth-child(4){width:7%}.ann-table col:nth-child(5){width:25%}.ann-table col:nth-child(6){width:6%}.ann-table col:nth-child(7){width:2%}.openclass-table col:nth-child(1){width:27%!important}.openclass-table col:nth-child(2){width:73%!important}.openclass-table .openclass-subject{font-size:13px;line-height:1.35}.openclass-table .openclass-name{font-size:12px;line-height:1.35}.dashboard-openclass-subject{font-size:14px;line-height:1.4}.dashboard-openclass-name{font-size:inherit;line-height:inherit}.dashboard-card-openClasses .dashboard-list li{font-size:13px;line-height:1.4}.dashboard-card-openClasses .dashboard-list li>span{font-size:inherit;line-height:inherit}table{margin-bottom:20px}.col-time{width:45px;font-size:12px}.col-sec{width:52px;font-size:12px}.col-day{width:calc((100% - 85px)/5)}th,td{padding:8px 2px;font-size:13px;line-height:1.3}.teacher-search-table td,.all-schedule-table td{padding:5px 1px}.teacher-schedule-course-link,.all-schedule-course-link{padding:1px 2px;border-radius:4px}.title-row th{font-size:18px;padding:12px 4px 8px}.created-row td{font-size:12px;padding:0 4px 12px}td.day-mon,th.day-mon{border-left:none}.mobile-menu-page{--mobile-workbench-bottom-extra: 56px;--mobile-workbench-bottom-space: calc(var(--mobile-bottom-nav-space) + var(--mobile-workbench-bottom-extra));display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:10px;width:100%;flex:1;height:100%;min-height:0;padding:8px 4px;margin-bottom:0;border:none!important;box-shadow:none!important;background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-radius:0!important;overflow:visible}.mobile-menu-page:after{content:"";flex:0 0 var(--mobile-workbench-bottom-space);height:var(--mobile-workbench-bottom-space);width:100%;pointer-events:none}.table-container.mobile-menu-container{display:flex;align-items:stretch;justify-content:center;margin-bottom:0;padding:0;height:auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:none;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding-bottom:0!important}.mobile-home-page{display:flex;flex-direction:column;gap:14px;width:100%;max-width:520px;margin:0 auto;padding:10px 8px 0}.mobile-home-login-card{width:100%;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:74px;padding:12px;border:1px solid rgba(255,255,255,.42);border-radius:18px;background:linear-gradient(135deg,#ef4444,#f97316);box-shadow:0 14px 28px #ef444442;color:#fff;text-align:left}.mobile-home-login-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;background:#ffffff3d;color:#fff}.mobile-home-login-icon svg{width:24px;height:24px;stroke-width:2.2}.mobile-home-login-main{min-width:0;display:flex;flex-direction:column;gap:3px}.mobile-home-login-title{font-size:17px;font-weight:900;line-height:22px}.mobile-home-login-copy{color:#ffffffe0;font-size:12px;font-weight:700;line-height:16px}.mobile-home-login-action{min-width:54px;padding:6px 9px;border-radius:999px;background:#ffffff3d;color:#fff;font-size:12px;font-weight:900;line-height:16px;text-align:center;white-space:nowrap}.mobile-home-section,.mobile-home-search{display:flex;flex-direction:column;gap:8px}.mobile-home-search-box{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid rgba(226,232,240,.9);border-radius:16px;background:#ffffffeb;box-shadow:var(--shadow-sm)}.mobile-home-search-box:focus-within{border-color:#2563eb8c;box-shadow:0 0 0 3px #2563eb24}.mobile-home-search-icon{display:inline-flex;color:#94a3b8}.mobile-home-search-input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text-main);font-size:14px;line-height:20px;padding:11px 0}.mobile-home-search-input::placeholder{color:#94a3b8}.mobile-home-search-clear{flex:0 0 auto;width:22px;height:22px;border:0;border-radius:999px;background:#64748b24;color:var(--text-muted);font-size:15px;line-height:1;display:grid;place-items:center}.mobile-home-search-results{display:flex;flex-direction:column;gap:0;padding:6px;border:1px solid rgba(226,232,240,.9);border-radius:16px;background:#fffffff5;box-shadow:var(--shadow-sm)}.mobile-home-search-results .super-search-row{padding:10px 8px}.mobile-home-section-title{margin:0 2px;color:var(--text-main);font-size:15px;font-weight:700;line-height:22px}.mobile-home-card,.mobile-home-summary-card{border:1px solid rgba(226,232,240,.9);border-radius:16px;background:#ffffffeb;box-shadow:var(--shadow-sm)}.mobile-home-priority-card{overflow:hidden}.mobile-home-priority-row{width:100%;min-height:56px;display:flex;align-items:center;gap:10px;padding:10px 12px;border:0;border-bottom:1px solid rgba(226,232,240,.8);background:transparent;color:var(--text-main);text-align:left}.mobile-home-priority-row:last-child{border-bottom:0}.mobile-home-icon{width:36px;height:36px;display:grid;place-items:center;flex:0 0 36px;border-radius:12px;background:#2563eb1f;color:#2563eb}.mobile-home-icon svg{width:21px;height:21px;stroke-width:2}.mobile-home-row-openClasses .mobile-home-icon{background:#d9770624;color:#d97706}.mobile-home-row-leaves .mobile-home-icon{background:#2563eb1f;color:#2563eb}.mobile-home-row-annSchedule .mobile-home-icon{background:#7c3aed21;color:#7c3aed}.mobile-home-row-announcements .mobile-home-icon{background:#d9770624;color:#d97706}.mobile-home-row-statusBoard .mobile-home-icon{background:#16a34a21;color:#16a34a}.mobile-home-row-main{flex:1;min-width:0;font-size:15px;font-weight:600;line-height:20px}.mobile-home-pill{max-width:96px;padding:4px 9px;border-radius:999px;background:#f1f5f9f2;color:var(--text-muted);font-size:12px;font-weight:700;line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-home-chevron{color:#94a3b8;font-size:22px;line-height:1}.mobile-home-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mobile-home-summary-card,.mobile-home-info-card{min-height:168px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px;border:1px solid rgba(226,232,240,.9);border-radius:16px;background:#ffffffeb;box-shadow:var(--shadow-sm);color:var(--text-main);text-align:left}.mobile-home-summary-head{width:100%;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:8px}.mobile-home-summary-title{font-size:15px;font-weight:700;line-height:20px;white-space:nowrap}.mobile-home-summary-value{min-width:0;color:var(--text-muted);font-size:13px;font-weight:600;line-height:18px;overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap}.mobile-home-summary-detail{width:100%;display:flex;flex-direction:column;gap:6px;margin-top:auto}.mobile-home-preview-row{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;color:var(--text-muted);font-size:12px;line-height:16px}.mobile-home-preview-row b{color:var(--text-main);font-size:12px;font-weight:800;white-space:nowrap}.mobile-home-preview-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-home-more,.mobile-home-empty-line{color:var(--text-muted);font-size:12px;font-weight:700;line-height:16px}.mobile-home-status-badges{display:flex;flex-wrap:wrap;gap:5px}.mobile-home-status-badges span{display:inline-flex;align-items:center;min-height:22px;padding:2px 7px;border-radius:999px;font-size:12px;font-weight:800}.mobile-home-status-badges .tone-blue{color:#1d4ed8;background:#1d4ed81a}.mobile-home-status-badges .tone-red{color:#dc2626;background:#dc26261a}.mobile-home-status-badges .tone-green{color:#16a34a;background:#16a34a1a}.mobile-home-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mobile-home-info-card{min-height:138px}.mobile-home-info-title{color:var(--text-main);font-size:15px;font-weight:800;line-height:20px}.mobile-home-info-count{color:var(--text-muted);font-size:12px;font-weight:700;line-height:16px}.mobile-home-follow-card{width:100%;padding:12px;color:var(--text-main);text-align:left}.page.page-mobile-scroll-shell .table-container.mobile-menu-container{display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:none;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding-bottom:0!important}.page.page-mobile-menu .table-container.mobile-menu-container{flex:1 1 auto;height:auto;max-height:none}.page.page-mobile-menu,.page.page-mobile-menu .mobile-menu-page{overscroll-behavior-y:none;touch-action:pan-y}.mobile-menu-title{font-size:18px;font-weight:700;color:var(--primary);margin-top:0;margin-bottom:14px;letter-spacing:.2px}.mobile-menu-card{width:min(430px,calc(100% - 4px));margin:0 auto;padding:18px 8px;border:1px solid rgba(226,232,240,.92);border-radius:16px;background:#fffffff0;box-shadow:var(--shadow-sm)}.mobile-menu-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(88px,auto);column-gap:0;row-gap:10px;width:100%;height:auto}.mobile-menu-item{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(6px,1.5vh,14px) 6px;min-height:0;border:none;background:transparent;cursor:pointer;text-align:center;transition:all .2s ease;border-radius:0;box-shadow:none;gap:7px;position:relative;overflow:hidden}.mobile-menu-item:active{transform:translateY(1px) scale(.99)}.menu-icon{color:var(--workbench-color, var(--primary));display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:0;background:transparent;flex-shrink:0;box-shadow:none}.menu-icon-box{width:52px;height:52px;display:grid;place-items:center;border-radius:16px;background:var(--workbench-soft, rgba(59, 130, 246, .15));color:var(--workbench-color, var(--primary));flex:0 0 auto}.menu-icon svg{width:26px;height:26px;stroke-width:1.9;filter:none}.menu-label{width:100%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;font-weight:600;color:var(--text-main);line-height:17px}.bottom-nav-bar{display:flex;position:fixed;bottom:0;left:0;right:0;width:auto;box-sizing:border-box;justify-content:space-between;gap:2px;padding:8px 6px;padding-bottom:calc(8px + env(safe-area-inset-bottom));z-index:100;border-radius:24px 24px 0 0;border-bottom:none;border-left:none;border-right:none}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;gap:4px;background:transparent;border:none;color:var(--text-muted);font-size:11px;font-weight:600;padding:7px 0;flex:1;min-width:0;border-radius:12px;cursor:pointer;transition:all .2s ease}.bottom-nav-item.active{color:var(--primary);background:#3b82f61a}body:has(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):focus) .bottom-nav-bar,body:has(textarea:focus) .bottom-nav-bar,body.keyboard-open .bottom-nav-bar{display:none!important}body:has(.page.page-view-ai-assistant .ai-assistant-page input:focus) .page.page-view-ai-assistant .bottom-nav-bar,body:has(.page.page-view-ai-assistant .ai-assistant-page textarea:focus) .page.page-view-ai-assistant .bottom-nav-bar,body.keyboard-open .page.page-view-ai-assistant .bottom-nav-bar{display:flex!important}.bottom-nav-item svg{width:22px;height:22px}.desktop-detail-header{display:none}.table-container{margin-bottom:8px}.teacher-search-mode-switch{gap:6px;margin-bottom:8px}.teacher-search-mode-btn{flex:1;padding:8px 6px;font-size:12px}.teacher-search-input-row{gap:6px}.teacher-search-input{font-size:16px;padding:9px 10px}.teacher-search-submit{padding:9px 12px;font-size:14px}.teacher-search-table-wrapper{max-width:100%;overflow-x:hidden}.teacher-search-table{min-width:0}.status-board-layout{grid-template-columns:1fr;gap:16px}.status-summary-grid{grid-template-columns:repeat(2,1fr)}.status-mobile-change-grid{grid-column:1 / -1;display:grid;grid-template-columns:1fr;gap:12px}.status-summary-card:nth-child(3):not(.status-mobile-change-card){grid-column:span 2}.status-summary-card{padding:12px 14px;border-radius:16px}.status-summary-label{font-size:12px}.status-summary-value{font-size:24px}.status-summary-triple{font-size:14px;gap:8px;justify-content:space-around;margin-top:12px}.status-badge{padding:6px 16px;border-radius:14px;flex:1}.status-badge b{font-size:18px}.status-mobile-change-card{gap:10px;background:#fffffff5}.status-mobile-change-count{min-width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:16px;background:#7c3aed1f;color:#6d28d9;font-size:24px;font-weight:900;line-height:1}.status-mobile-change-chip-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.status-mobile-change-chip{min-width:0;min-height:40px;border:0;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;background:#94a3b81f;color:var(--text-muted);font-size:13px;font-weight:800;font-family:inherit;line-height:1.2}.status-mobile-change-chip.active{transform:none;box-shadow:inset 0 0 0 1.5px currentColor}.status-mobile-change-chip.active .status-badge{color:inherit}.status-mobile-change-chip .status-badge{min-width:22px;padding:0;border-radius:0;background:transparent;font-size:13px;font-weight:900}.status-mobile-change-chip.badge-blue{background:#2563eb1a;color:#2563eb}.status-mobile-change-chip.badge-red{background:#dc26261a;color:#dc2626}.status-mobile-change-chip.badge-green{background:#16a34a1a;color:#16a34a}.status-mobile-inline-list{gap:0}.status-mobile-inline-list li{padding:9px 0;border:0;border-top:1px solid rgba(226,232,240,.85);border-radius:0;background:transparent;box-shadow:none}.status-mobile-inline-list li:hover,.status-mobile-inline-list li:active{transform:none;box-shadow:none;background:transparent;border-color:#e2e8f0d9}.status-section{padding:14px;border-radius:16px}.status-section h3{font-size:15px;margin-bottom:12px}.status-rank-header{margin-bottom:12px}.status-rank-header h3{margin-bottom:0}.status-rank-count{padding:4px 8px;font-size:11px}.status-tabs{gap:4px;padding-bottom:8px;margin-bottom:12px}.status-tab-btn{font-size:13px;padding:4px 8px}.status-detail-list li{padding:10px 12px;gap:8px}.status-detail-main{font-size:13px}.status-detail-sub{font-size:12px;padding:2px 8px}.status-rank-list li{padding:0}.status-rank-trigger{grid-template-columns:28px minmax(0,1fr);gap:10px;padding:8px 10px}.status-rank-position{width:28px;height:28px;border-radius:9px;font-size:12px}.status-rank-name{font-size:13px}.status-rank-hours{padding:2px 7px;font-size:12px}.status-rank-hours b{font-size:14px}.status-rank-track{height:5px}}@media (max-width: 480px){body{padding:4px 2px}h1{font-size:20px;margin-bottom:10px}.controls{padding:8px;gap:8px;margin-bottom:10px}.table-container{padding:4px;border-radius:6px}.timetable-table-wrapper{overflow-x:hidden}.timetable-table{min-width:0}table{margin-bottom:15px;border-radius:6px}.col-time{width:34px;font-size:10px}.col-sec{width:48px;font-size:10px}.col-day{width:calc((100% - 66px)/5)}th,td{padding:4px 1px;font-size:11px;letter-spacing:-.2px}.teacher-search-table td,.all-schedule-table td{padding:3px 1px}.teacher-schedule-course-link,.all-schedule-course-link{padding:0 1px}td span{font-size:11px;line-height:1.1}td span .teacher-name{font-size:9px;font-weight:400;color:var(--text-muted)}.openclass-table .openclass-subject{font-size:11px;line-height:1.2}.openclass-table .openclass-name,.ann-table td{font-size:10px;line-height:1.2}.ann-date{font-size:10px}.ann-weekday{font-size:9px}.dashboard-openclass-subject{font-size:13px;line-height:1.3}.dashboard-openclass-name{font-size:inherit;line-height:inherit}.dashboard-card-openClasses .dashboard-list li{font-size:12px;line-height:1.35}.dashboard-card-openClasses .dashboard-list li>span{font-size:inherit;line-height:inherit}.title-row th{font-size:16px;padding:8px 2px 6px}.created-row td{font-size:10px;padding:0 2px 8px}.announcement-summary-pill{width:100%;justify-content:center;font-size:12px}.announcement-header{padding:14px 12px}.announcement-title{gap:6px;font-size:15px}.announcement-preview{font-size:11px;line-height:1.4}.announcement-content{padding:14px 12px;font-size:13px;line-height:1.55}.teacher-search-input{font-size:16px}.teacher-search-submit{font-size:14px}.teacher-search-table-wrapper{overflow-x:hidden}.teacher-search-table{min-width:0}.modal-overlay{padding:10px;align-items:flex-end}.teacher-schedule-modal{width:100%;max-width:100%;max-height:min(92vh,calc(var(--app-height, 100vh) - 20px));border-radius:18px 18px 12px 12px}.teacher-schedule-modal .modal-body{padding:16px 12px 12px}}.mobile-picker-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 16px;font-size:16px;font-family:inherit;font-weight:500;border-radius:12px;border:1.5px solid var(--border-color);background:#ffffffeb;color:var(--text-main);cursor:pointer;text-align:left;box-shadow:var(--shadow-sm);transition:border-color .15s ease,background .15s ease;-webkit-tap-highlight-color:transparent}.mobile-picker-trigger:active:not(:disabled){background:#f1f5f9fa;border-color:var(--primary);scale:.984;transition:scale .1s ease,background .08s ease}.mobile-picker-trigger:disabled{opacity:.45;cursor:not-allowed}.mobile-picker-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-picker-chevron{flex-shrink:0;color:var(--text-muted);margin-left:10px}.mobile-picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000006b;z-index:1000;animation:pickerBackdropIn .22s ease forwards}.mobile-picker-backdrop.closing{animation:pickerBackdropOut .26s ease forwards;pointer-events:none}@keyframes pickerBackdropIn{0%{opacity:0}to{opacity:1}}@keyframes pickerBackdropOut{0%{opacity:1}to{opacity:0}}.mobile-picker-sheet{position:fixed;bottom:0;left:0;right:0;background:var(--bg-color);border-radius:22px 22px 0 0;z-index:1001;max-height:72vh;display:flex;flex-direction:column;box-shadow:0 -6px 32px #00000021;padding-bottom:max(env(safe-area-inset-bottom),12px);animation:pickerSheetUp .32s cubic-bezier(.22,1,.36,1) forwards}.mobile-picker-sheet.closing{animation:pickerSheetDown .26s cubic-bezier(.4,0,1,1) forwards;pointer-events:none}@keyframes pickerSheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pickerSheetDown{0%{transform:translateY(0)}to{transform:translateY(105%)}}.mobile-picker-handle{width:40px;height:4px;border-radius:2px;background:#00000024;margin:12px auto 0;flex-shrink:0}.mobile-picker-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px 10px;flex-shrink:0}.mobile-picker-title{font-size:17px;font-weight:600;color:var(--text-main)}.mobile-picker-close-btn{width:32px;height:32px;border-radius:50%;background:#0000000f;border:none;display:flex;align-items:center;justify-content:center;color:var(--text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;flex-shrink:0;transition:background .12s ease}.mobile-picker-close-btn:active{background:#00000024}.mobile-picker-list{overflow-y:auto;flex:1;padding:0 8px 8px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.mobile-picker-option{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:50px;padding:12px 16px;font-size:16px;font-family:inherit;font-weight:400;color:var(--text-main);background:transparent;border:none;border-radius:12px;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;transition:background .1s ease}.mobile-picker-option:active{background:#3b82f614;transition:background .05s ease}.mobile-picker-option.active{font-weight:600;color:var(--primary);background:#3b82f60f}.mobile-picker-option.active svg{color:var(--primary);flex-shrink:0}.mobile-picker-empty{padding:32px 16px;text-align:center;color:var(--text-muted);font-size:14px}@media (max-width: 768px){.controls{flex-direction:column;align-items:stretch}.controls label{font-size:13px;color:var(--text-muted);font-weight:500;margin-bottom:-4px}}.follow-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:color .18s ease,background .18s ease,scale .12s ease;padding:0;margin-left:8px}.follow-btn:hover{background:#f59e0b1f;color:var(--icon-amber)}.follow-btn:active{scale:.88}.follow-btn.followed{color:var(--icon-amber)}.title-row th{position:relative;text-align:center}.title-row th .follow-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);margin-left:0}.controls .follow-btn{align-self:flex-end;margin-bottom:2px}.follow-page{display:flex;flex-direction:column;gap:16px;padding:8px 0 24px;width:100%}.follow-slot-bar{display:flex;flex-direction:column;gap:10px;padding:14px 16px 12px;border-radius:16px}.follow-slot-info{display:flex;align-items:center;gap:8px}.follow-weekday-label{font-size:15px;font-weight:600;color:var(--text-main)}.follow-weekend-tip{font-size:13px;color:var(--text-muted);font-style:italic}.follow-slot-picker{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}@media (max-width: 600px){.follow-slot-picker{grid-template-columns:repeat(4,1fr)}}.follow-slot-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 6px;border-radius:14px;border:1.5px solid rgba(191,219,254,.95);background:#eff6ff9e;color:#1e3a8a;cursor:pointer;white-space:nowrap;min-width:0;transition:background .15s ease,border-color .15s ease,color .15s ease}.follow-slot-btn:active{scale:.94}.follow-slot-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.follow-slot-label{font-size:13px;font-weight:500}.follow-slot-time{font-size:11px;opacity:.72}.follow-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.follow-section{display:flex;flex-direction:column;padding:14px 16px;border-radius:16px;gap:0}.follow-section-title{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}.follow-section-head{display:flex;align-items:center;gap:8px;padding:0 2px 6px;border-bottom:1px solid var(--border-color);margin-bottom:4px;font-size:12px;color:var(--text-muted);font-weight:500}.follow-row{display:flex;align-items:center;gap:8px;padding:9px 2px;border-bottom:1px solid rgba(var(--border-rgb, 0,0,0),.05);min-height:40px}.follow-row:last-child{border-bottom:none}.follow-col-name{flex:0 0 80px;font-size:14px;font-weight:600;color:var(--text-main)}.follow-col-cur,.follow-col-next{flex:1;min-width:0}.follow-col-teacher{flex:0 0 80px;font-size:14px;font-weight:600;color:var(--text-main)}.follow-col-status{flex:1;min-width:0}.follow-col-action{flex:0 0 28px;display:flex;justify-content:center}.follow-badge-free{display:inline-block;font-size:12px;color:#16a34a;font-weight:500}.follow-badge-busy{display:inline-block;font-size:12px;color:var(--icon-orange);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.follow-badge-next{display:inline-block;font-size:12px;color:var(--text-sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.follow-badge-end{font-size:12px;color:var(--text-muted)}.follow-remove-btn{width:28px;height:28px;border-radius:50%;border:1.5px solid rgba(220,38,38,.5);background:#dc262624;color:#dc2626;font-size:17px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,color .15s ease,transform .1s ease;padding:0;flex-shrink:0;animation:followRemoveAppear .22s cubic-bezier(.34,1.56,.64,1)}.follow-remove-btn:hover{background:#dc262638;color:#b91c1c}.follow-remove-btn:active{transform:scale(.88)}@keyframes followRemoveAppear{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.follow-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:var(--text-muted);text-align:center}.follow-empty p{margin:0;font-size:16px;font-weight:500}.follow-empty-hint{font-size:13px!important;font-weight:400!important;opacity:.7;line-height:1.6}.follow-card-section{display:flex;flex-direction:column;gap:10px}.follow-card-section-title{margin:0 4px;font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.follow-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px;align-items:start}.follow-card{display:flex;flex-direction:column;gap:14px;padding:16px 18px;border-radius:18px;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation;transition:box-shadow .18s ease,transform .18s ease}.follow-card.is-revealing{box-shadow:0 6px 20px #dc26262e;transform:translateY(-1px)}.follow-card:focus-visible{outline:2px solid rgba(37,99,235,.75);outline-offset:2px}.follow-card-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:10px;border-bottom:1px solid rgba(148,163,184,.18)}.follow-card-name{font-size:18px;font-weight:800;color:var(--text-main);letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.follow-card-title-group{min-width:0;display:flex;flex-direction:column;gap:5px}.follow-current-line{color:var(--text-muted);font-size:15px;font-weight:700;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.follow-current-line.is-free{color:var(--icon-green)}.follow-status-hero{display:grid;grid-template-columns:1.15fr 1fr;gap:12px;padding:12px 14px;border-radius:14px;background:#94a3b81a}.follow-status-block{display:flex;flex-direction:column;gap:4px;min-width:0}.follow-status-then{border-left:1px solid rgba(148,163,184,.25);padding-left:12px}.follow-status-tag{display:inline-flex;align-items:baseline;gap:6px;flex-wrap:wrap}.follow-status-tag-key{font-size:12px;font-weight:700;color:var(--text-muted);letter-spacing:.06em}.follow-status-tag-meta{font-size:11px;color:var(--text-muted);opacity:.75;font-weight:500}.follow-status-main{font-size:22px;font-weight:800;color:var(--icon-orange);line-height:1.15;letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.follow-status-main.is-secondary{font-size:18px;font-weight:700;color:var(--text-main);opacity:.85}.follow-status-main.is-free{color:var(--icon-green);font-weight:700}.follow-status-inline-sub{display:inline;margin-left:6px;font-size:13px;font-weight:600;color:var(--text-muted);letter-spacing:.01em;vertical-align:2px}.follow-status-main.is-secondary .follow-status-inline-sub{font-size:12px}.follow-status-sub{font-size:12px;color:var(--text-muted);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.follow-summary-row{display:flex;flex-wrap:wrap;gap:6px}.follow-chip{display:inline-flex;align-items:center;padding:4px 11px;border-radius:999px;font-size:13px;font-weight:600;line-height:1.4;white-space:nowrap}.follow-chip-main{color:var(--icon-blue);background:#2563eb1f}.follow-chip-side{color:var(--text-muted);background:#64748b24}.follow-chip-special{color:#dc2626;background:#dc26261f;font-size:12px;padding:3px 9px;letter-spacing:0}.follow-chip-special.is-empty{color:var(--text-muted);background:#64748b1a;font-weight:500}.follow-strip{display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.follow-strip-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:9px 2px;border-radius:10px;border:1.5px solid transparent;background:#94a3b81a;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .1s ease;min-width:0;font-family:inherit;color:var(--text-main);min-height:52px}.follow-strip-cell:hover{background:#3b82f61a}.follow-strip-cell:active{transform:scale(.94)}.follow-strip-cell.active{background:var(--primary);border-color:var(--primary);color:#fff}.follow-strip-cell.is-empty{background:#16a34a1f;color:var(--icon-green)}.follow-strip-cell.is-teacher-empty{border-color:#16a34a6b;background:transparent;box-shadow:none;color:var(--icon-green)}.follow-strip-cell.is-teacher-empty.active{background:var(--primary);border-color:var(--primary);color:#fff}.follow-strip-cell.is-main{background:#2563eb24}.follow-strip-cell.is-side{background:#64748b24}.follow-strip-cell.is-special{background:#dc262621;color:#dc2626}.follow-strip-cell.is-busy{background:#d9770621}.follow-strip-cell.active,.follow-strip-cell.is-empty.active,.follow-strip-cell.is-main.active,.follow-strip-cell.is-side.active,.follow-strip-cell.is-special.active,.follow-strip-cell.is-busy.active{background:var(--primary);border-color:var(--primary);color:#fff}.follow-strip-no{font-size:11px;font-weight:700;opacity:.6;line-height:1;letter-spacing:.04em}.follow-strip-cell.active .follow-strip-no{opacity:1;color:#fffc}.follow-strip-cell.active .follow-strip-text,.follow-strip-cell.active .follow-strip-no{color:#ffffffe0}.follow-strip-text{font-size:17px;font-weight:800;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.follow-strip-cell.is-special .follow-strip-text{font-size:12px;font-weight:700;letter-spacing:-.02em}.page.page-view-follows{background:var(--app-bg)}.page.page-view-follows .table-container{background:var(--app-bg);border-color:transparent;box-shadow:none}.page-view-follows .follow-page{gap:14px;padding-top:2px}.page-view-follows .follow-slot-bar{border:1px solid rgba(226,232,240,.95);background:#fff;box-shadow:0 6px 16px #0f172a0a}.page-view-follows .follow-weekday-label{color:#1d4ed8;font-weight:900}.page-view-follows .follow-slot-picker{grid-template-columns:repeat(4,1fr)}.page-view-follows .follow-slot-btn{border-color:#bfdbfedb;background:#eff6ffbd;color:#1e3a8a}.page-view-follows .follow-slot-btn.active{border-color:#2563eb;background:#2563eb;color:#fff;box-shadow:0 8px 18px #2563eb33}.page-view-follows .follow-card-section-title{margin-left:2px;color:#2563eb;font-size:14px;font-weight:900;letter-spacing:0;text-transform:none}.page-view-follows .follow-card-grid{grid-template-columns:1fr}.page-view-follows .follow-card{border:1px solid rgba(226,232,240,.95);background:#fff;box-shadow:0 6px 16px #0f172a0a;padding:14px}.page-view-follows .follow-card-section:nth-of-type(2) .follow-card{border-color:#e2e8f0f2;box-shadow:0 6px 16px #0f172a0a}.page-view-follows .follow-card-name{color:#172033;font-size:18px;letter-spacing:0}.page-view-follows .follow-current-line{color:#2563eb;font-size:14px}.page-view-follows .follow-current-line.is-free{color:#16a34a}.page-view-follows .follow-chip-main{color:#2563eb;background:#2563eb1a}.page-view-follows .follow-chip-side{color:#0891b2;background:#0891b21a}.page-view-follows .follow-chip-special{color:#d97706;background:#d977061f}.page-view-follows .follow-chip-special.is-empty{color:#64748b;background:#64748b1a}.page-view-follows .follow-strip{gap:3px}.page-view-follows .follow-strip-cell{min-height:46px;padding:7px 1px;border-color:transparent;background:#f1f5f9;color:#334155}.page-view-follows .follow-strip-no{font-size:10px}.page-view-follows .follow-strip-text{font-size:15px}.page-view-follows .follow-strip-cell.is-main{background:#2563eb1f;color:#1d4ed8}.page-view-follows .follow-strip-cell.is-side{background:#0891b21f;color:#0e7490}.page-view-follows .follow-strip-cell.is-busy{background:#d9770621;color:#b45309}.page-view-follows .follow-strip-cell.is-special{background:#f43f5e1a;color:#e11d48}.page-view-follows .follow-strip-cell.is-special .follow-strip-text{font-size:11px}.page-view-follows .follow-strip-cell.is-empty{background:#16a34a1a;color:#15803d}.page-view-follows .follow-strip-cell.active{border-color:#2563eb;background:#2563eb;color:#fff;box-shadow:none}.page-view-follows .follow-strip-cell.is-teacher-empty{border-color:#16a34a70;background:transparent;box-shadow:none;color:#15803d}.page-view-follows .follow-strip-cell.is-teacher-empty.active{border-color:#2563eb;background:#2563eb;color:#fff}@media (max-width: 600px){.follow-card-grid{grid-template-columns:1fr}.follow-card{padding:14px}.follow-status-hero{grid-template-columns:1fr 1fr;padding:10px 12px}.follow-status-then{padding-left:10px}.follow-status-main{font-size:19px}.follow-status-main.is-secondary{font-size:16px}.follow-strip{gap:3px}.follow-strip-cell{padding:7px 1px;min-height:46px}.follow-strip-text{font-size:15px}.follow-strip-cell.is-special .follow-strip-text{font-size:11px}.follow-strip-no{font-size:10px}}.dashboard-card-follows .time-badge{background:var(--icon-amber)}.follow-class-badge,.follow-teacher-badge{min-width:52px;text-align:center}.follow-dash-course-text{display:flex;align-items:center;gap:4px;min-width:0;flex:1;font-size:14px;color:var(--text-main);overflow:hidden}.follow-dash-course-text strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.follow-dash-free{color:#16a34a;font-weight:500;font-size:13px}.follow-dash-next-inline{color:var(--text-muted);font-size:12px;white-space:nowrap;flex-shrink:0}.fd-panel{width:100%;padding:12px;border-radius:var(--radius-md);background:#ffffff85;border:1px solid rgba(255,255,255,.65);box-shadow:0 6px 18px -14px #0f172a38}.fd-grid{display:grid;grid-template-columns:66px 1fr 1fr;gap:10px;align-items:center}.fd-col-head{padding:0 0 10px;margin-bottom:0;border-bottom:1px dashed rgba(100,116,139,.2)}.fd-head-name{font-size:15px;font-weight:800;color:var(--text-main)}.fd-head-slot{font-size:13px;font-weight:700;text-align:center;padding:5px 0;border-radius:8px;letter-spacing:.5px}.fd-head-cur{color:var(--primary);background:linear-gradient(135deg,#3b82f626,#3b82f60d);border:1px solid rgba(59,130,246,.1)}.fd-head-next{color:var(--text-muted);background:#64748b0f;border:1px solid rgba(100,116,139,.05)}.fd-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0}.fd-row{padding:10px 0;position:relative}.fd-row+.fd-row{border-top:1px solid rgba(100,116,139,.12)}.fd-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary);opacity:0;transition:opacity .2s;border-radius:999px}.fd-name{font-size:12px;font-weight:700;text-align:center;padding:4px 6px;border-radius:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4;box-shadow:inset 0 1px 2px #ffffff80}.fd-name-class{background:linear-gradient(135deg,#3b82f626,#3b82f60d);color:var(--primary);border:1px solid rgba(59,130,246,.1)}.fd-name-teacher{background:linear-gradient(135deg,#f59e0b26,#f59e0b0d);color:var(--icon-amber);border:1px solid rgba(245,158,11,.1)}.fd-slot{display:flex;justify-content:center;align-items:center;min-width:0}.fd-slot-course{font-size:13px;font-weight:600;color:var(--text-main);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;position:relative}.fd-slot-cur .fd-slot-course:not(.fd-free){color:var(--primary);font-weight:700}.fd-slot-course.fd-free{color:var(--text-muted);font-weight:400;font-size:12px;opacity:.8}.theme-dark .fd-panel{background:#1e293b52;border-color:#ffffff0f;box-shadow:0 6px 18px -14px #00000059}.theme-dark .fd-col-head{border-bottom-color:#ffffff1a}.theme-dark .fd-row+.fd-row{border-top-color:#ffffff12}.theme-dark .fd-name{box-shadow:inset 0 1px #ffffff0d}.theme-dark .fd-name-class{background:linear-gradient(135deg,#3b82f633,#3b82f60d);border-color:#3b82f626}.theme-dark .fd-name-teacher{background:linear-gradient(135deg,#f59e0b33,#f59e0b0d);border-color:#f59e0b26}.theme-dark .fd-head-cur{background:linear-gradient(135deg,#3b82f633,#3b82f60d);border-color:#3b82f626}.theme-dark .fd-head-next{background:#64748b26;border-color:#64748b1a}.teacher-follow-panel{width:100%;padding:12px;border-radius:var(--radius-md);background:#ffffff85;border:1px solid rgba(255,255,255,.65);box-shadow:0 6px 18px -14px #0f172a38}.teacher-follow-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px dashed rgba(100,116,139,.2);color:var(--text-muted);font-size:12px;font-weight:800}.teacher-follow-list{display:flex;flex-direction:column}.teacher-follow-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0}.teacher-follow-row+.teacher-follow-row{border-top:1px solid rgba(100,116,139,.12)}.teacher-follow-name{min-width:0;color:var(--text-main);font-size:14px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teacher-follow-lesson{flex-shrink:0;color:var(--icon-cyan);font-size:13px;font-weight:800;white-space:nowrap}.theme-dark .teacher-follow-panel{background:#1e293b52;border-color:#ffffff0f;box-shadow:0 6px 18px -14px #00000059}.theme-dark .teacher-follow-head{border-bottom-color:#ffffff1a}.theme-dark .teacher-follow-row+.teacher-follow-row{border-top-color:#ffffff12}@media (max-width: 768px){.follow-page{padding:4px 0 16px;gap:12px}.follow-columns{grid-template-columns:1fr}.follow-slot-bar{border-radius:14px;padding:12px 14px 10px}.follow-col-name,.follow-col-teacher{flex:0 0 64px;font-size:13px}.follow-badge-busy,.follow-badge-next{font-size:11px}.follow-slot-btn{padding:6px 10px}.follow-slot-label{font-size:12px}.follow-slot-time{font-size:10px}}.fq-page{display:flex;flex-direction:column;gap:16px;width:100%;max-width:100%;padding:0 0 24px}.fq-empty-hint{margin:0;font-size:14px;color:var(--text-muted);line-height:1.5;padding:0 4px}.fq-grid{display:grid;grid-template-columns:76px repeat(5,1fr);grid-auto-rows:minmax(52px,auto);gap:5px;padding:14px;width:100%;max-width:100%;box-sizing:border-box}.fq-corner{background:transparent;min-height:36px;border-radius:8px}.fq-day-head{display:flex;align-items:center;justify-content:center;gap:4px;font-size:13px;font-weight:700;color:var(--text-muted);min-height:36px}.fq-today-pill{display:inline-block;font-size:10px;font-weight:800;padding:0 4px;line-height:1.3;border-radius:4px;background:#3b82f633;color:var(--icon-blue)}.fq-slot-head{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-size:11px;color:var(--text-muted);min-height:52px;text-align:center}.fq-slot-title{font-weight:600;color:var(--text-main);font-size:12px}.fq-slot-time{font-size:10px;opacity:.75}.fq-cell{position:relative;min-height:52px;min-width:0;border:1.5px solid rgba(148,163,184,.25);border-radius:10px;background:#94a3b814;color:var(--text-main);font-family:inherit;cursor:pointer;padding:4px 2px;transition:transform .1s ease,box-shadow .15s ease,border-color .15s ease,background .15s ease;--fq-heat: 0}.fq-cell:not(.is-zero){background:rgba(var(--fq-heat-rgb),calc(var(--fq-heat-min) + var(--fq-heat) * var(--fq-heat-range)));border-color:var(--fq-border)}.fq-cell.is-zero{background:#64748b1f;color:var(--text-muted);border-color:#94a3b840}.fq-cell.is-today{box-shadow:inset 3px 0 0 0 var(--fq-accent)}.fq-cell.is-selected{border-color:var(--fq-accent);box-shadow:0 0 0 1.5px var(--fq-accent);z-index:1}.fq-cell:active{transform:scale(.97)}.fq-cell-count{font-size:18px;font-weight:800;line-height:1.1;display:block}.fq-detail{padding:16px 18px;border-radius:16px;display:flex;flex-direction:column;gap:12px}.fq-detail-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:15px}.fq-detail-day{font-weight:800;color:var(--text-main)}.fq-detail-slot{color:var(--text-muted);font-size:14px;font-weight:500}.fq-detail-count{margin-left:auto;font-size:14px;font-weight:600;color:var(--fq-accent)}.fq-detail-empty{text-align:center;color:var(--text-muted);font-size:15px;padding:12px 8px}.fq-detail-list{display:flex;flex-wrap:wrap;gap:8px}.fq-teacher-chip{display:inline-flex;align-items:center;padding:5px 12px;border-radius:999px;font-size:14px;font-weight:600;background:var(--fq-chip-bg);color:var(--text-main)}.fq-mini-card{display:flex;flex-direction:column;gap:10px;width:100%;padding:12px;border-radius:var(--radius-md);background:#ffffff6b;border:1px solid rgba(255,255,255,.55)}.fq-mini-summary{display:flex;align-items:center;justify-content:space-between;gap:12px}.fq-mini-main{display:flex;align-items:baseline;gap:6px;min-width:0}.fq-mini-number{font-size:36px;line-height:.9;font-weight:850;color:var(--fq-accent);font-variant-numeric:tabular-nums}.fq-mini-unit{font-size:13px;font-weight:700;color:var(--text-main);white-space:nowrap}.fq-mini-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:0}.fq-mini-day{font-size:13px;font-weight:800;color:var(--text-main)}.fq-mini-slot{font-size:12px;font-weight:600;color:var(--text-muted);white-space:nowrap}.fq-mini-meter{position:relative;height:8px;overflow:hidden;border-radius:999px;background:#64748b1f}.fq-mini-meter span{display:block;width:calc(var(--fq-free-ratio, 0) * 100%);height:100%;border-radius:inherit;background:linear-gradient(90deg,rgba(var(--fq-heat-rgb),.45),rgba(var(--fq-heat-rgb),.9))}.fq-mini-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:700;color:var(--text-muted);line-height:1.3}.fq-mini-count{font-size:12px;font-weight:800;color:var(--fq-accent);white-space:nowrap}.fq-mini-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.dashboard-card-freeQuery .fq-teacher-chip,.fq-mini-chips .fq-teacher-chip{font-size:12px;padding:3px 9px;background:rgba(var(--fq-heat-rgb),.1);border:1px solid rgba(var(--fq-heat-rgb),.08)}.fq-mini-empty{padding:9px 10px;border-radius:var(--radius-md);background:#ffffff6b;border:1px dashed rgba(100,116,139,.2);color:var(--text-muted);font-size:13px;font-weight:600;text-align:center}.theme-colorless .fq-mini-card{background:#f8fafc80;border-color:#94a3b838}.theme-colorless .fq-mini-meter span{background:linear-gradient(90deg,rgba(var(--fq-heat-rgb),.22),rgba(var(--fq-heat-rgb),.48))}.user-card-panel{display:flex;flex-direction:column;min-height:42px;justify-content:center}.user-card-greeting{font-size:22px;line-height:1.15;font-weight:800;color:var(--text-main)}.occupy-mini-card{display:flex;flex-direction:column;gap:8px;width:100%}.occupy-mini-main{display:flex;align-items:baseline;gap:6px}.occupy-mini-number{font-size:32px;line-height:1;font-weight:850;color:var(--text-main)}.occupy-mini-unit,.occupy-mini-meta,.occupy-mini-empty{font-size:13px;font-weight:650;color:var(--text-muted)}.occupy-mini-list{display:flex;flex-wrap:wrap;gap:6px}.occupy-mini-list span{padding:4px 8px;border-radius:var(--radius-sm);background:#22c55e1a;color:var(--text-main);font-size:12px;font-weight:700}.occupy-advice-page{display:flex;flex-direction:column;gap:16px;width:100%}.occupy-hero{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px}.occupy-eyebrow{font-size:13px;font-weight:750;color:var(--text-muted);margin-bottom:8px}.occupy-hero h2{margin:0;font-size:26px;color:var(--text-main)}.occupy-hero p{margin:8px 0 0;color:var(--text-muted);line-height:1.55}.occupy-hero-number{min-width:76px;height:76px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;background:#22c55e1f;color:var(--icon-green);font-size:34px;font-weight:900}.occupy-weekday-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:10px}.occupy-weekday-row button{min-height:36px;border:1px solid var(--border-color);border-radius:10px;background:#ffffffb8;color:var(--text-muted);font-size:13px;font-weight:800;cursor:pointer}.occupy-weekday-row button.active{border-color:var(--primary);background:var(--primary);color:#fff}.occupy-group-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.occupy-class-card,.occupy-empty{padding:18px}.occupy-class-card-clickable{cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease}.occupy-class-card-clickable:hover,.occupy-class-card-clickable:focus-visible{border-color:#2563eb57;background:#ffffffc7;box-shadow:0 14px 34px #2563eb1f;outline:none;transform:translateY(-1px)}.occupy-class-card-clickable:active{transform:translateY(0)}.occupy-class-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.occupy-class-head h3{margin:0;font-size:18px;color:var(--text-main)}.occupy-class-head span{color:var(--text-muted);font-size:13px;font-weight:700}.occupy-item-list{display:flex;flex-direction:column;gap:10px}.occupy-item{display:grid;grid-template-columns:74px minmax(0,1fr);gap:10px 12px;padding:12px;border-radius:var(--radius-md);background:#ffffff85;border:1px solid var(--border-color)}.occupy-slot{display:flex;flex-direction:column;gap:2px;font-weight:800;color:var(--text-main)}.occupy-slot small{color:var(--text-muted);font-size:12px}.occupy-course{min-width:0;display:flex;flex-direction:column;gap:3px}.occupy-course strong{font-size:18px;color:var(--icon-green)}.occupy-course span,.occupy-reason{color:var(--text-muted);font-size:13px;line-height:1.45}.occupy-reason{grid-column:1 / -1;padding-top:8px;border-top:1px dashed var(--border-color)}.occupy-empty{text-align:center}.occupy-empty-title{font-size:18px;font-weight:800;color:var(--text-main);margin-bottom:8px}.occupy-empty-text{color:var(--text-muted);line-height:1.6}@media (max-width: 768px){:root{--occupy-mobile-gap: 8px}.occupy-advice-page{gap:var(--occupy-mobile-gap);padding-bottom:16px}.occupy-hero{align-items:flex-start;padding:14px 16px}.occupy-weekday-row{gap:6px;padding:6px}.occupy-weekday-row button{min-height:34px}.occupy-hero h2{font-size:22px}.occupy-hero-number{min-width:52px;height:52px;font-size:26px}.occupy-group-list{grid-template-columns:1fr;gap:var(--occupy-mobile-gap)}.occupy-class-card,.occupy-empty{padding:14px}.occupy-class-head{margin-bottom:10px}.occupy-item-list{gap:6px}.occupy-item{grid-template-columns:64px minmax(0,1fr);padding:8px 10px}}.user-page{display:flex;flex-direction:column;gap:18px}.user-page-desktop{align-items:center}.user-desktop-shell{display:flex;flex-direction:column;gap:16px;width:100%;max-width:820px}.user-desktop-search-header{position:static;padding:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.user-desktop-search-card{padding:14px;border-radius:22px;box-shadow:0 10px 24px #0f172a0d}.user-desktop-profile{align-items:center;gap:20px;padding:20px 22px;border-radius:24px;box-shadow:0 10px 24px #0f172a0d}.user-desktop-profile-main{min-width:0;flex:1}.user-desktop-selected-teacher{width:fit-content;min-width:220px;margin-top:14px}.user-desktop-actions{align-self:center}.user-desktop-teacher-list{max-height:min(560px,58vh)}.user-hero,.user-settings{padding:22px 24px}.user-hero{display:flex;flex-direction:column;gap:10px;background:linear-gradient(135deg,#f973161a,#f9731605)}.theme-colorless .user-hero{background:linear-gradient(135deg,#f1f5f999,#f1f5f940)}.user-hero-eyebrow{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--icon-orange)}.theme-colorless .user-hero-eyebrow{color:var(--text-muted)}.user-hero-title{margin:0;font-size:34px;line-height:1.05;color:var(--text-main)}.user-hero-desc{margin:0;max-width:620px;color:var(--text-muted);font-size:15px}.user-settings{display:flex;flex-direction:column;gap:16px}.user-settings-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.user-settings-head h3{margin:0;font-size:20px}.user-settings-head span{font-size:13px;color:var(--text-muted);font-weight:600}.user-settings-body{display:flex;flex-direction:column;gap:14px}.user-settings-body label{font-size:14px;font-weight:700}.user-selected-teacher{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border-radius:10px;background:#3b82f614;color:var(--text-muted);font-size:13px;font-weight:700}.user-selected-teacher strong{color:var(--text-main);font-size:15px}.user-teacher-list{max-height:min(460px,48vh);overflow-y:auto}.user-teacher-item{width:100%;padding:9px 10px;border-bottom:1px solid rgba(226,232,240,.9)}.user-actions{display:flex;gap:10px;flex-wrap:wrap}.user-primary-btn,.user-secondary-btn{border:none;border-radius:10px;padding:11px 16px;font-size:14px;font-weight:700;cursor:pointer;transition:var(--transition-fast)}.user-primary-btn{background:var(--primary);color:#fff}.user-primary-btn:hover:not(:disabled){background:var(--primary-hover)}.user-primary-btn:disabled{cursor:not-allowed;opacity:.45}.user-login-success{display:flex;align-items:center;min-height:42px;box-sizing:border-box;padding:10px 14px;border:1px solid rgba(34,197,94,.28);border-radius:14px;background:linear-gradient(135deg,#16a34a24,#22c55e14);color:#15803d;font-size:14px;font-weight:800;line-height:1.35;box-shadow:0 10px 22px #15803d1a}.user-page-app-mobile{gap:12px;padding:0 0 4px;width:100%}.user-search-header{position:sticky;top:0;z-index:2;align-self:stretch;width:100%;box-sizing:border-box;padding:0 0 4px;background:linear-gradient(180deg,#f8fafcfa,#f8fafcd1);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.user-mobile-search-card{width:100%;box-sizing:border-box;padding:10px;border:1px solid rgba(226,232,240,.92);border-radius:18px;background:#fffffff0;box-shadow:var(--shadow-sm)}.user-search-input{width:100%;box-sizing:border-box;border-radius:14px;background:#f8fafc}.user-mobile-profile{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px;border:1px solid rgba(226,232,240,.95);border-radius:20px;background:#fff;box-shadow:0 6px 16px #0f172a0a}.user-account-title{margin:0;color:#172033;font-size:20px;font-weight:900;line-height:1.2}.user-mobile-current{margin:6px 0 0;color:#64748b;font-size:13px;font-weight:700;line-height:1.35}.user-mobile-actions{flex:0 0 auto;justify-content:flex-end}.user-mobile-actions .user-primary-btn,.user-mobile-actions .user-secondary-btn{min-height:36px;border-radius:999px;padding:8px 13px;font-size:13px}.user-page-app-mobile .user-login-success{border-radius:18px;background:linear-gradient(135deg,#16a34a,#22c55e);color:#fff;font-size:15px;box-shadow:0 12px 26px #16a34a3d}.user-danger-btn{background:#ef44441a;color:#dc2626}.user-mobile-teacher-list{max-height:none;border:1px solid rgba(226,232,240,.92);border-radius:20px;overflow:hidden;background:#fffffff5;box-shadow:var(--shadow-sm)}.user-mobile-teacher-list .user-teacher-item{min-height:58px;padding:10px 14px;border-bottom-color:#e2e8f0c7}.user-mobile-teacher-list .user-teacher-item.active{background:#0f172a0a}.settings-page{max-width:760px;margin:0 auto}.settings-panel{padding:24px;display:flex;flex-direction:column;gap:18px}.settings-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.settings-eyebrow{font-size:12px;font-weight:800;color:var(--primary);margin-bottom:8px}.settings-head h2{margin:0;font-size:26px;line-height:1.15}.settings-account{flex-shrink:0;padding:6px 10px;border-radius:999px;background:#94a3b81f;color:var(--text-muted);font-size:13px;font-weight:700}.settings-empty{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:12px;background:#f8fafcbf;color:var(--text-muted);font-size:14px}.settings-link-btn{border:1px solid var(--border-color);background:#fff;color:var(--primary);border-radius:10px;padding:8px 12px;font-weight:700;cursor:pointer}.settings-list{display:flex;flex-direction:column;gap:12px}.settings-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:16px;border-radius:14px;border:1px solid var(--border-color);background:#ffffff9e;cursor:pointer;position:relative}.settings-row.disabled{cursor:not-allowed;opacity:.58}.settings-row-main{display:flex;flex-direction:column;gap:6px;min-width:0}.settings-row-title{font-size:16px;font-weight:800;color:var(--text-main)}.settings-row-desc{font-size:13px;line-height:1.5;color:var(--text-muted)}.settings-switch-input{position:absolute;opacity:0;pointer-events:none}.settings-switch{width:46px;height:26px;border-radius:999px;background:#94a3b859;position:relative;transition:background .18s ease}.settings-switch:after{content:"";position:absolute;width:20px;height:20px;top:3px;left:3px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #0f172a2e;transition:transform .18s ease}.settings-switch-input:checked+.settings-switch{background:var(--primary)}.settings-switch-input:checked+.settings-switch:after{transform:translate(20px)}.user-secondary-btn{background:#64748b14;color:var(--text-main);border:1px solid rgba(148,163,184,.25)}.user-secondary-btn:hover{background:#64748b1f}@media (max-width: 600px){.fq-grid{grid-template-columns:60px repeat(5,1fr);gap:3px;padding:10px 8px}.fq-cell{min-height:44px;border-radius:8px}.fq-cell-count{font-size:16px}.fq-day-head{font-size:12px}.fq-slot-head{min-height:44px}.fq-slot-title{font-size:10px}.fq-slot-time{font-size:9px}}.dashboard-card-user.glass-panel{background:linear-gradient(135deg,#ff416c,#ff4b2b)!important;border:1px solid rgba(255,255,255,.2);box-shadow:0 12px 24px -6px #ff4b2b80;color:#fff}.dashboard-card-user.glass-panel:before{display:none}.dashboard-card-user .dashboard-card-title,.dashboard-card-user .user-card-greeting{color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.1)}.dashboard-card-user .dashboard-card-icon{background:#ffffff40!important;color:#fff!important;box-shadow:none}.leave-type-badge{display:inline-block;padding:2px 6px;font-size:12px;border-radius:4px;background-color:var(--primary-light, #e6f7ff);color:var(--primary);border:1px solid var(--primary-border, #91d5ff);margin-right:6px}.ai-follow-action-bar{margin-top:10px;padding:12px 14px;border-radius:var(--radius-lg)}.ai-follow-action-row+.ai-follow-action-row{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-color)}.ai-follow-action-label{font-weight:600;font-size:15px;margin-bottom:6px}.ai-follow-action-desc{font-size:13px;color:var(--text-muted);margin:0 0 10px;line-height:1.45}.ai-follow-action-btns{display:flex;gap:10px;flex-wrap:wrap}.admin-shell{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;grid-template-columns:max-content minmax(0,1fr);background:#f6f8fb;color:#172033;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}.admin-sidebar{border-right:1px solid #d8e0ea;background:#fff;padding:18px 8px}.admin-brand{padding:8px 8px 18px;color:#172033;font-size:16px;font-weight:800;white-space:nowrap}.admin-nav{display:flex;flex-direction:column;gap:4px}.admin-nav-item{padding:10px 8px;border-radius:8px;color:#475569;text-decoration:none;font-size:14px;font-weight:700;white-space:nowrap}.admin-nav-item.active,.admin-nav-item:hover{background:#eaf1ff;color:#2563eb}.admin-main{min-width:0;overflow:auto}.admin-topbar{height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 8px;border-bottom:1px solid #d8e0ea;background:#fff}.admin-topbar span{margin-left:10px;color:#64748b;font-size:13px}.admin-mobile-nav{display:none}.admin-content{width:100%;max-width:none;padding:12px 8px}.admin-page-header,.admin-panel-title-row,.admin-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-page-header{margin-bottom:18px}.admin-page-header h1{margin:0;color:#172033;font-size:22px;font-weight:800}.admin-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}.admin-grid-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:12px}.admin-stat-card,.admin-panel,.admin-login-card,.admin-drawer{border:1px solid #d8e0ea;border-radius:8px;background:#fff}.admin-stat-card{padding:16px}.admin-stat-card-button{width:100%;text-align:left;font:inherit;cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.admin-stat-card-button:hover{border-color:#93c5fd;box-shadow:0 8px 18px #2563eb1f;transform:translateY(-1px)}.admin-stat-card-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.admin-stat-card-button.is-active{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb29}.admin-stat-card span{display:block;color:#64748b;font-size:13px;font-weight:700}.admin-stat-card strong{display:block;margin-top:8px;color:#172033;font-size:22px}.admin-stat-success{border-left:4px solid #16a34a}.admin-stat-warning{border-left:4px solid #d97706}.admin-stat-danger{border-left:4px solid #dc2626}.admin-stat-primary{border-left:4px solid #2563eb}.admin-stat-muted{border-left:4px solid #94a3b8}.admin-panel{margin-bottom:12px;padding:16px}.admin-panel h2{margin:0 0 12px;color:#172033;font-size:16px}.admin-panel-title-row p{margin:4px 0 0;color:#64748b;font-size:13px;font-weight:700;line-height:1.45}.admin-collapsible-panel{padding:0;overflow:hidden}.admin-collapsible-title{width:100%;min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px;border:0;background:transparent;color:#172033;cursor:pointer;text-align:left;font:inherit}.admin-collapsible-title-main{display:inline-flex;align-items:center;gap:8px;min-width:0;font-size:16px;font-weight:900}.admin-collapsible-arrow{display:inline-grid;place-items:center;width:18px;height:18px;color:#64748b;font-size:14px;transition:transform .16s ease;transform:rotate(90deg)}.admin-collapsible-panel.is-collapsed .admin-collapsible-arrow{transform:rotate(0)}.admin-collapsible-count{flex:0 0 auto;color:#64748b;font-size:13px;font-weight:800}.admin-collapsible-content{padding:0 16px 16px}.admin-info-row{display:flex;justify-content:space-between;gap:18px;padding:9px 0;border-top:1px solid #eef2f7;color:#64748b;font-size:14px}.admin-info-row:first-of-type{border-top:0}.admin-info-row strong{color:#172033;text-align:right}.admin-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:800}.admin-badge-success{background:#dcfce7;color:#166534}.admin-badge-warning{background:#fef3c7;color:#92400e}.admin-badge-danger{background:#fee2e2;color:#991b1b}.admin-badge-primary{background:#dbeafe;color:#1d4ed8}.admin-badge-muted{background:#f1f5f9;color:#475569}.admin-primary-button,.admin-secondary-button,.admin-danger-button,.admin-ghost-button,.admin-row-actions button{min-height:36px;border-radius:8px;padding:0 14px;border:1px solid transparent;font-size:14px;font-weight:800;cursor:pointer}.admin-primary-button{background:#2563eb;color:#fff}.admin-secondary-button,.admin-row-actions button{border-color:#d8e0ea;background:#fff;color:#172033}.admin-danger-button,.admin-row-actions button.danger-link{border-color:#fecaca;background:#fff5f5;color:#b91c1c}.admin-ghost-button{background:transparent;color:#64748b}.admin-primary-button:disabled,.admin-secondary-button:disabled,.admin-danger-button:disabled,.admin-row-actions button:disabled{cursor:not-allowed;opacity:.55}.admin-filter-row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.admin-search-field{flex:1;display:grid;gap:6px;color:#172033;font-size:13px;font-weight:800}.admin-search-field input{width:100%;min-height:36px;border:1px solid #d8e0ea;border-radius:8px;padding:8px 10px;color:#172033;background:#fff;font-size:14px}.admin-filter-actions{display:flex;gap:8px}.admin-filter-summary{margin-bottom:10px;color:#64748b;font-size:13px;font-weight:700}.admin-muted-inline{display:block;margin-top:4px;color:#64748b;font-size:12px;font-weight:700}.admin-access-toggle{display:inline-flex;align-items:center;gap:7px;color:#172033;font-size:13px;font-weight:800;cursor:pointer}.admin-access-toggle input{width:15px;height:15px;margin:0;accent-color:#2563eb}.admin-view-mode-row{display:inline-flex;align-items:center;gap:6px;margin:0 0 10px;padding:4px;border:1px solid #d8e0ea;border-radius:8px;background:#fff;color:#64748b;font-size:13px;font-weight:800}.admin-view-mode-row span{padding:0 6px}.admin-view-mode-row button{min-height:28px;border:0;border-radius:6px;padding:0 10px;background:transparent;color:#475569;font-size:13px;font-weight:900;cursor:pointer}.admin-view-mode-row button.active{background:#2563eb;color:#fff}.admin-column-toggle-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:0 0 12px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;color:#64748b;font-size:13px;font-weight:800}.admin-column-toggle{display:inline-flex;align-items:center;gap:6px;color:#172033;font-size:13px;font-weight:800;cursor:pointer}.admin-column-toggle input{width:14px;height:14px;margin:0;accent-color:#2563eb}.admin-nginx-log-list{display:grid;gap:10px}.admin-nginx-log-item{display:grid;gap:9px;padding:12px;border:1px solid #e2e8f0;border-radius:8px;background:#fff}.admin-nginx-card-group-row{display:flex;align-items:center;justify-content:flex-start}.admin-nginx-log-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.admin-nginx-log-main-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;min-width:0;color:#64748b;font-size:13px;font-weight:800}.admin-nginx-log-time{display:inline-flex;align-items:baseline;gap:7px;color:#172033;font-variant-numeric:tabular-nums}.admin-nginx-log-time strong{font-size:13px}.admin-nginx-log-time em{color:#64748b;font-size:12px;font-style:normal}.admin-nginx-log-badges{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:8px}.admin-method-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:900}.admin-nginx-log-user{display:flex;align-items:center;gap:8px;color:#64748b;font-size:13px}.admin-nginx-log-user span{font-weight:800}.admin-nginx-log-user strong{color:#172033;font-size:15px}.admin-nginx-log-path{padding:9px 10px;border-radius:7px;background:#f8fafc;color:#172033;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.45;overflow-wrap:anywhere;word-break:break-word}.admin-nginx-log-detail-grid{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(260px,1.2fr);gap:10px}.admin-nginx-log-detail-grid div{min-width:0;display:grid;gap:4px}.admin-nginx-log-detail-grid span{color:#64748b;font-size:12px;font-weight:800}.admin-nginx-log-detail-grid strong{min-width:0;color:#334155;font-size:13px;font-weight:700;line-height:1.45;overflow-wrap:anywhere;word-break:break-word}.admin-table-wrap{width:100%;max-width:100%;overflow-x:auto}.admin-pager{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 2px}.admin-pager-page{font-size:13px;color:#475569}.admin-pager-total{font-size:12px;color:#94a3b8;margin-left:auto}.admin-table{width:100%;border-collapse:collapse;font-size:14px}.admin-table th{background:#f1f5f9;color:#475569;font-size:12px;text-align:left}.admin-table th,.admin-table td{padding:11px 10px;border-bottom:1px solid #eef2f7;white-space:nowrap}.admin-table tr:hover td{background:#f8fbff}.admin-clickable-row{cursor:pointer}.admin-clickable-row:focus-visible td{outline:2px solid #93c5fd;outline-offset:-2px;background:#eff6ff}.admin-time-cell{display:inline-grid;gap:2px;color:#475569;font-variant-numeric:tabular-nums;line-height:1.25}.admin-collector-users-table{min-width:1130px;table-layout:fixed}.admin-collector-users-table th,.admin-collector-users-table td{vertical-align:middle}.admin-collector-users-table th{white-space:normal;line-height:1.3}.admin-collector-users-table .admin-badge{max-width:100%;white-space:normal;line-height:1.25;text-align:center}.admin-collector-user-name{color:#172033;font-weight:800}.admin-collector-time-cell{white-space:normal!important}.admin-collector-count-cell{color:#172033;font-weight:800;text-align:right}.admin-collector-users-table .admin-row-actions{white-space:normal!important}.admin-collector-users-table .admin-row-actions button{width:100%;min-height:34px;padding:0 10px;font-size:13px}.admin-user-follows-table{min-width:900px;table-layout:fixed}.admin-user-follows-table th,.admin-user-follows-table td{vertical-align:top}.admin-user-follows-table td{white-space:normal}.admin-follow-tag-list{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.admin-follow-tag{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:850;line-height:1.2}.admin-follow-tag-class{background:#eaf1ff;color:#1d4ed8}.admin-follow-tag-teacher{background:#ecfdf5;color:#047857}.admin-follow-total{color:#172033;font-size:13px;font-weight:850;white-space:nowrap}.admin-class-advisors-table{min-width:1010px;table-layout:fixed}.admin-class-advisors-table th,.admin-class-advisors-table td{vertical-align:middle}.admin-class-advisors-table input{width:100%;min-height:34px;box-sizing:border-box;border:1px solid #d8e0ea;border-radius:7px;padding:7px 9px;color:#172033;background:#fff;font-size:13px;font-weight:700}.admin-class-advisors-table input:focus{outline:none;border-color:#93c5fd;box-shadow:0 0 0 3px #2563eb1f}.admin-class-advisors-table .admin-time-cell{white-space:normal}.admin-versions-table{width:max-content;min-width:100%;table-layout:fixed}.admin-versions-table th,.admin-versions-table td{vertical-align:top}.admin-version-name-cell{font-weight:800;color:#172033}.admin-version-notes-cell{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word;color:#475569;line-height:1.45}.admin-version-time-cell{color:#475569;font-variant-numeric:tabular-nums;white-space:normal!important;line-height:1.35}.admin-version-actions-cell{white-space:normal!important}.admin-version-actions-cell button{flex:0 0 auto;min-width:56px;padding:0 10px}.admin-versions-table th:last-child,.admin-version-actions-cell{position:sticky;right:0;z-index:2;background:#fff;box-shadow:-8px 0 12px #0f172a0a}.admin-versions-table th:last-child{z-index:3;background:#f1f5f9}.admin-versions-table tr:hover .admin-version-actions-cell{background:#f8fbff}.admin-ai-calls-table{width:100%;min-width:0;table-layout:fixed}.admin-ai-calls-table th,.admin-ai-calls-table td{vertical-align:top}.admin-ai-time-cell{color:#475569;font-variant-numeric:tabular-nums;white-space:normal!important;line-height:1.35}.admin-ai-text-cell,.admin-ai-answer-cell,.admin-ai-model-cell,.admin-ai-route-cell{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word;line-height:1.45;color:#334155}.admin-ai-answer-cell{color:#172033}.admin-ai-reply-preview{display:block;width:100%;margin:0;padding:0;border:0;background:transparent;color:#172033;font:inherit;line-height:1.45;text-align:left;white-space:normal;overflow-wrap:anywhere;word-break:break-word;cursor:pointer}.admin-ai-reply-preview:hover,.admin-ai-reply-preview:focus-visible{color:#2563eb;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.admin-ai-reply-preview:focus-visible{outline:2px solid #93c5fd;outline-offset:3px;border-radius:4px}.admin-ai-audio-cell audio{width:100%;max-width:180px;height:32px}.admin-ai-reply-backdrop{align-items:center;justify-content:center;padding:24px}.admin-ai-reply-dialog{display:flex;flex-direction:column;width:min(920px,calc(100vw - 48px));max-height:min(82vh,760px);overflow:hidden;border-radius:8px;background:#fff;box-shadow:0 24px 60px #0f172a3d}.admin-ai-reply-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 14px;border-bottom:1px solid #e2e8f0}.admin-ai-reply-dialog-header h2{margin:0 0 6px;color:#172033;font-size:18px;line-height:1.25}.admin-ai-reply-dialog-header p{margin:0;color:#64748b;font-size:13px;font-weight:700;line-height:1.4}.admin-ai-reply-dialog-body{overflow:auto;padding:18px 20px 22px;color:#111827;-webkit-overflow-scrolling:touch}.admin-ai-reply-markdown{color:#111827;font-size:15px;line-height:1.65;overflow-wrap:anywhere}.admin-ai-reply-markdown>:first-child{margin-top:0}.admin-ai-reply-markdown>:last-child{margin-bottom:0}.admin-ai-reply-markdown p{margin:8px 0}.admin-ai-reply-markdown ul,.admin-ai-reply-markdown ol{margin:8px 0;padding-left:24px}.admin-ai-reply-markdown li{margin:4px 0}.admin-ai-reply-markdown code{background:#64748b1f;border-radius:4px;padding:1px 5px;font-size:.92em}.admin-ai-reply-markdown pre{max-width:100%;overflow-x:auto;border-radius:8px;padding:10px 12px;background:#0f172a0f}.admin-ai-reply-markdown pre code{padding:0;background:transparent}.admin-usage-ai-grid{grid-template-columns:minmax(180px,25%)}.admin-usage-date-filter{display:inline-flex;align-items:center;gap:8px;color:#64748b;font-size:13px;font-weight:800}.admin-usage-date-filter input{min-height:34px;border:1px solid #d8e0ea;border-radius:8px;padding:6px 9px;color:#172033;background:#fff;font-size:13px;font-weight:700}.admin-usage-date-filter .admin-secondary-button.is-active{border-color:#2563eb;background:#2563eb;color:#fff}.admin-usage-load-more{min-height:48px;display:grid;place-items:center;color:#64748b;font-size:13px;font-weight:700}.admin-usage-stats-table,.admin-usage-events-table,.admin-usage-ai-preview-table{width:100%;min-width:0;table-layout:fixed}.admin-usage-stats-table th,.admin-usage-stats-table td,.admin-usage-events-table th,.admin-usage-events-table td,.admin-usage-ai-preview-table th,.admin-usage-ai-preview-table td{vertical-align:top}.admin-usage-feature-cell,.admin-usage-user-cell{color:#172033;font-weight:800;white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}.admin-usage-key-cell{color:#64748b;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}.admin-usage-time-cell{color:#475569;font-variant-numeric:tabular-nums;white-space:normal!important;line-height:1.35}.admin-usage-query-cell,.admin-usage-target-cell,.admin-usage-route-cell,.admin-usage-meta-cell{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word;line-height:1.45;color:#334155}.admin-usage-route-cell{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px}.admin-nginx-table{min-width:1120px;table-layout:auto}.admin-nginx-table th,.admin-nginx-table td{vertical-align:top}.admin-nginx-table td{white-space:normal;overflow-wrap:anywhere;word-break:break-word}.admin-nginx-table .admin-nginx-group-summary td{background:#f8fafc}.admin-nginx-table .admin-nginx-group-summary:hover td{background:#f1f5f9}.admin-nginx-group-toggle{display:inline-flex;align-items:center;min-height:24px;margin:0 8px 4px 0;padding:2px 8px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:900;cursor:pointer;white-space:nowrap}.admin-nginx-group-toggle:hover{background:#dbeafe}.admin-nginx-time-cell{width:132px}.admin-nginx-ip-cell{width:130px}.admin-nginx-method-cell,.admin-nginx-status-cell{width:72px}.admin-nginx-user-cell{width:96px;color:#172033;font-weight:800}.admin-nginx-path-cell{min-width:260px;color:#172033;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.45}.admin-nginx-referer-cell{min-width:180px;color:#334155;font-size:13px;line-height:1.45}.admin-nginx-userAgent-cell{min-width:260px;color:#334155;font-size:13px;line-height:1.45}.admin-nginx-path-cell,.admin-nginx-referer-cell,.admin-nginx-userAgent-cell{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}.admin-nginx-time-cell,.admin-nginx-ip-cell,.admin-nginx-method-cell,.admin-nginx-status-cell,.admin-nginx-user-cell{white-space:nowrap!important}.admin-nginx-users-table{min-width:980px;table-layout:auto}.admin-nginx-users-table th,.admin-nginx-users-table td{vertical-align:top}.admin-nginx-user-username-cell{width:110px;color:#172033;font-weight:800;white-space:nowrap!important}.admin-nginx-user-count-cell{width:90px;white-space:nowrap!important}.admin-nginx-user-latestTime-cell{width:132px;white-space:nowrap!important}.admin-nginx-user-latestIp-cell{width:130px;white-space:nowrap!important}.admin-nginx-user-latestPath-cell{min-width:260px;color:#172033;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.45}.admin-nginx-user-latestUserAgent-cell{min-width:260px;color:#334155;font-size:13px;line-height:1.45}.admin-nginx-user-latestPath-cell,.admin-nginx-user-latestUserAgent-cell{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}.admin-nginx-device-groups{display:flex;flex-direction:column;gap:24px}.admin-nginx-device-group{background:#fff;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.admin-nginx-device-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.admin-nginx-device-header strong{font-size:13px;color:#334155;font-family:monospace;word-break:break-all}.admin-nginx-device-header span{font-size:12px;color:#64748b;font-weight:500;white-space:nowrap;margin-left:16px}.admin-nginx-device-group .admin-table{margin:0;border:none;border-radius:0}.admin-nginx-device-group .admin-table th{background:transparent;border-top:none}.admin-table-note{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#475569}.admin-row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.admin-empty,.admin-error,.admin-success{border-radius:8px;padding:12px;font-size:14px}.admin-empty{background:#f1f5f9;color:#64748b}.admin-error{margin-bottom:12px;background:#fee2e2;color:#991b1b}.admin-success{margin-bottom:12px;background:#dcfce7;color:#166534}.admin-upload-field{display:grid;gap:8px;max-width:420px;color:#172033;font-size:13px;font-weight:800}.admin-upload-field input{width:100%;border:1px dashed #94a3b8;border-radius:8px;padding:10px;background:#f8fafc;color:#475569;font-size:13px;font-weight:700}.admin-settings-form{max-width:520px;display:grid;gap:12px}.admin-settings-form label{display:grid;gap:6px;color:#172033;font-size:13px;font-weight:800}.admin-settings-form input{width:100%;border:1px solid #d8e0ea;border-radius:8px;padding:9px 10px;color:#172033;background:#fff}.admin-settings-form input:focus{outline:none;border-color:#93c5fd;box-shadow:0 0 0 3px #2563eb1f}.admin-muted-text{color:#64748b;font-size:12px;font-weight:700}.admin-login-page{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;background:#f6f8fb}.admin-login-card{width:min(360px,calc(100vw - 32px));padding:24px}.admin-login-card h1{margin:0 0 6px;font-size:22px}.admin-login-card p{margin:0 0 18px;color:#64748b}.admin-login-card label,.admin-drawer label{display:grid;gap:6px;margin-bottom:12px;color:#172033;font-size:13px;font-weight:800}.admin-login-card input,.admin-drawer input,.admin-drawer select,.admin-drawer textarea{width:100%;border:1px solid #d8e0ea;border-radius:8px;padding:9px 10px;color:#172033;background:#fff}.admin-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;justify-content:flex-end;background:#0f172a47}.admin-drawer{width:min(460px,100vw);height:100%;overflow:auto;padding:22px;border-radius:0}.admin-checkbox{display:flex!important;grid-template-columns:none!important;flex-direction:row;align-items:center}.admin-version-summary{display:flex;align-items:center;gap:10px;margin:0 0 16px;padding:10px 12px;border-radius:8px;background:#f8fbff;color:#64748b;font-size:13px;font-weight:700}.admin-file-info{display:grid;gap:5px;margin-bottom:12px;padding:11px 12px;border:1px solid #d8e0ea;border-radius:8px;background:#f8fbff}.admin-file-info span{color:#64748b;font-size:12px;font-weight:800}.admin-file-info strong{color:#172033;font-size:13px;overflow-wrap:anywhere}.admin-file-info a{color:#2563eb;font-size:13px;font-weight:800;text-decoration:none}.admin-file-info-selected{border-color:#bfdbfe;background:#eff6ff}@media (max-width: 760px){.admin-filter-row{align-items:stretch;flex-direction:column}.admin-filter-actions{justify-content:flex-end}.admin-ai-reply-backdrop{padding:12px}.admin-ai-reply-dialog{width:100%;max-height:calc(100dvh - 24px)}.admin-ai-reply-dialog-header{flex-direction:column}.admin-ai-reply-dialog-header .admin-secondary-button{align-self:flex-end}.admin-nginx-log-head{flex-direction:column}.admin-nginx-log-badges{justify-content:flex-start}.admin-nginx-log-detail-grid{grid-template-columns:1fr}}.admin-progress{height:8px;overflow:hidden;border-radius:999px;background:#f1f5f9}.admin-progress span{display:block;height:100%;border-radius:inherit;background:#2563eb}@media (max-width: 860px){.admin-shell{grid-template-columns:1fr;background:#eef2f7}.admin-sidebar{display:none}.admin-main{min-height:100dvh;overflow-x:hidden;-webkit-overflow-scrolling:touch}.admin-topbar{position:sticky;top:0;z-index:45;height:auto;min-height:52px;padding:max(8px,env(safe-area-inset-top)) 12px 8px;border-bottom-color:#cbd5e1;box-shadow:0 1px #0f172a0a}.admin-topbar div{min-width:0;display:grid;gap:2px}.admin-topbar strong{font-size:16px;line-height:1.2}.admin-topbar span{margin-left:0;font-size:12px}.admin-mobile-nav{position:sticky;top:calc(52px + env(safe-area-inset-top));z-index:44;display:flex;gap:8px;overflow-x:auto;padding:10px 12px;border-bottom:1px solid #d8e0ea;background:#fffffff5;box-shadow:0 8px 18px #0f172a0f;-webkit-overflow-scrolling:touch;scrollbar-width:none}.admin-mobile-nav::-webkit-scrollbar{display:none}.admin-mobile-nav-item{flex:0 0 auto;min-height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px;border:1px solid #d8e0ea;border-radius:8px;background:#fff;color:#334155;text-decoration:none;font-size:14px;font-weight:800;white-space:nowrap}.admin-mobile-nav-item.active{border-color:#bfdbfe;background:#2563eb;color:#fff}.admin-stat-grid,.admin-grid-two{grid-template-columns:1fr}.admin-content{padding:12px}.admin-page-header{align-items:stretch;flex-direction:column;gap:10px;margin-bottom:12px}.admin-page-header h1{font-size:22px;line-height:1.2}.admin-page-header>:not(h1){width:100%}.admin-panel{margin-bottom:10px;padding:14px}.admin-panel-title-row{align-items:flex-start;flex-direction:column;gap:8px}.admin-actions,.admin-filter-actions,.admin-row-actions{width:100%;align-items:stretch;justify-content:flex-start;flex-wrap:wrap}.admin-primary-button,.admin-secondary-button,.admin-danger-button,.admin-ghost-button,.admin-row-actions button{min-height:42px;font-size:14px}.admin-page-header .admin-primary-button,.admin-page-header .admin-secondary-button,.admin-page-header .admin-danger-button,.admin-page-header .admin-filter-actions>button{flex:1 1 136px}.admin-info-row{align-items:flex-start;flex-direction:column;gap:4px}.admin-info-row strong{text-align:left}.admin-table-wrap{position:relative;margin-inline:-2px;padding-bottom:4px;border:1px solid #e2e8f0;border-radius:8px;background:linear-gradient(90deg,#fff,#fff0) left center / 18px 100% no-repeat,linear-gradient(270deg,#fff,#fff0) right center / 18px 100% no-repeat,#fff;overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-table{width:max-content;min-width:100%;font-size:14px}.admin-table th,.admin-table td{padding:10px 9px}.admin-table th:first-child,.admin-table td:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:8px 0 12px #0f172a0a}.admin-table th:first-child{z-index:3;background:#f1f5f9}.admin-table tr:hover td:first-child{background:#f8fbff}.admin-filter-summary,.admin-column-toggle-row{line-height:1.5}.admin-upload-field,.admin-settings-form{max-width:none}.admin-drawer{width:100vw;padding:18px 14px calc(18px + env(safe-area-inset-bottom))}}@media (max-width: 480px){.admin-content{padding:10px 8px 14px}.admin-stat-card{padding:14px}.admin-stat-card strong{font-size:20px}.admin-mobile-nav{padding-inline:8px}.admin-mobile-nav-item{min-height:34px;padding:0 10px;font-size:13px}.admin-panel{padding:12px}}@media (max-width: 768px){.page-mobile-scroll-shell .bottom-nav-bar{min-height:calc(72px + env(safe-area-inset-bottom));padding:8px 6px;padding-bottom:calc(8px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0}.page-mobile-scroll-shell .bottom-nav-item{min-height:56px;gap:4px;padding:7px 0;font-size:11px;line-height:1.2}.page.page-mobile-scroll-shell:not(.page-view-timetables):not(.page-view-allSchedule):not(.page-view-follows):not(.page-view-teacher){--mobile-readable-font-size: 16px;font-size:var(--mobile-readable-font-size)}.page.page-mobile-scroll-shell:not(.page-view-timetables):not(.page-view-allSchedule):not(.page-view-follows):not(.page-view-teacher) :is(input,select,textarea){font-size:16px;line-height:1.45}.page.page-mobile-scroll-shell:not(.page-view-timetables):not(.page-view-allSchedule):not(.page-view-follows):not(.page-view-teacher) :is(button,.dashboard-list li,.dashboard-empty,.teacher-contact-text strong,.user-teacher-item strong,.leave-mobile-detail,.announcement-title,.status-detail-main){font-size:15px;line-height:1.45}.page.page-mobile-scroll-shell:not(.page-view-timetables):not(.page-view-allSchedule):not(.page-view-follows):not(.page-view-teacher) :is(.settings-row-desc,.occupy-course span,.occupy-slot small,.announcement-preview,.status-detail-sub){font-size:13px;line-height:1.45}.page.page-view-follows.page-mobile-scroll-shell{background:var(--app-bg)}.page.page-view-follows.page-mobile-scroll-shell .table-container{background:var(--app-bg);border-color:transparent;box-shadow:none}.page-view-follows .follow-page{gap:14px;padding-top:2px}.page-view-follows .follow-slot-bar{border:1px solid rgba(226,232,240,.95);background:#fff;box-shadow:0 6px 16px #0f172a0a}.page-view-follows .follow-weekday-label{color:#1d4ed8;font-weight:900}.page-view-follows .follow-slot-btn{border-color:#bfdbfedb;background:#eff6ffbd;color:#1e3a8a}.page-view-follows .follow-slot-btn.active{border-color:#2563eb;background:#2563eb;color:#fff;box-shadow:0 8px 18px #2563eb33}.page-view-follows .follow-card-section-title{margin-left:2px;color:#2563eb;font-size:14px;font-weight:900;letter-spacing:0;text-transform:none}.page-view-follows .follow-card{border:1px solid rgba(226,232,240,.95);background:#fff;box-shadow:0 6px 16px #0f172a0a;padding-inline:10px}.page-view-follows .follow-card-section:nth-of-type(2) .follow-card{border-color:#e2e8f0f2;box-shadow:0 6px 16px #0f172a0a}.page-view-follows .follow-card-name{color:#172033;font-size:18px;letter-spacing:0}.page-view-follows .follow-current-line{color:#2563eb;font-size:14px}.page-view-follows .follow-current-line.is-free{color:#16a34a}.page-view-follows .follow-chip-main{color:#2563eb;background:#2563eb1a}.page-view-follows .follow-chip-side{color:#0891b2;background:#0891b21a}.page-view-follows .follow-chip-special{color:#d97706;background:#d977061f}.page-view-follows .follow-chip-special.is-empty{color:#64748b;background:#64748b1a}.page-view-follows .follow-strip-cell{border-color:transparent;background:#f1f5f9;color:#334155}.page-view-follows .follow-strip-cell.is-main{background:#2563eb1f;color:#1d4ed8}.page-view-follows .follow-strip-cell.is-side{background:#0891b21f;color:#0e7490}.page-view-follows .follow-strip-cell.is-busy{background:#d9770621;color:#b45309}.page-view-follows .follow-strip-cell.is-special{background:#f43f5e1a;color:#e11d48}.page-view-follows .follow-strip-cell.is-empty{background:#16a34a1a;color:#15803d}.page-view-follows .follow-strip-cell.active{border-color:#2563eb;background:#2563eb;color:#fff;box-shadow:none}.page-view-follows .follow-strip-cell.is-teacher-empty{border-color:#16a34a70;background:transparent;box-shadow:none;color:#15803d}.page-view-follows .follow-strip-cell.is-teacher-empty.active{border-color:#2563eb;background:#2563eb;color:#fff}.page-mobile-scroll-shell .bottom-nav-bar{height:calc(79px + env(safe-area-inset-bottom));min-height:calc(79px + env(safe-area-inset-bottom));padding:8px 6px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}.page-mobile-scroll-shell .bottom-nav-item{height:62px;min-height:62px;gap:4px;padding:7px 0;font-size:12px!important;line-height:1.2!important}.page-mobile-scroll-shell .bottom-nav-item span{font-size:12px!important;line-height:14px!important;font-weight:700!important}.page-mobile-scroll-shell .bottom-nav-item svg{width:22px;height:22px;flex:0 0 22px}.page-view-teacherSearch .teacher-contact-item{position:relative;padding:11px 12px 11px 10px;border-bottom:0}.page-view-teacherSearch .teacher-contact-item:not(:last-child):after{content:"";position:absolute;left:70px;right:12px;bottom:0;height:1px;background:#e2e8f0e6}.page-view-teacherSearch .teacher-contact-main{gap:12px}.page-view-teacherSearch .teacher-contact-text strong{font-size:17px!important;line-height:1.35!important;font-weight:500}.page-view-teacherSearch .teacher-contact-duty{font-size:12px!important;line-height:1.35!important}.page-view-teacherSearch .teacher-avatar{width:48px;height:48px;border-radius:8px;font-size:16px;font-weight:600}.page-view-user .user-mobile-teacher-list .user-teacher-item{position:relative;min-height:70px;gap:12px;padding:11px 14px 11px 10px;border-bottom:0}.page-view-user .user-mobile-teacher-list .user-teacher-item:not(:last-child):after{content:"";position:absolute;left:70px;right:14px;bottom:0;height:1px;background:#e2e8f0e6}.page-view-user .user-mobile-teacher-list .user-teacher-item>span:last-child{min-width:0;display:grid;gap:3px}.page-view-user .user-mobile-teacher-list .user-teacher-item strong{font-size:17px!important;line-height:1.35!important;font-weight:500}.page-view-user .user-mobile-teacher-list .teacher-avatar{width:48px;height:48px;border-radius:8px;font-size:16px;font-weight:600}}.personal-timetable-stack{display:flex;flex-direction:column;gap:24px}.ai-assistant-page{display:flex;flex-direction:column;background:var(--app-bg);min-height:0;--ai-robot-avatar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cg fill='none' stroke='%23059669' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='6' y='9' width='16' height='13' rx='4'/%3E%3Cpath d='M14 9V5'/%3E%3Cpath d='M11 5h6'/%3E%3Cpath d='M6 16H4'/%3E%3Cpath d='M24 16h-2'/%3E%3Ccircle cx='11' cy='15' r='1.2' fill='%23059669' stroke='none'/%3E%3Ccircle cx='17' cy='15' r='1.2' fill='%23059669' stroke='none'/%3E%3Cpath d='M11 19h6'/%3E%3C/g%3E%3C/svg%3E")}.ai-chat-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:none;z-index:10;pointer-events:none}.ai-chat-header>*{pointer-events:auto}.ai-chat-heading{display:flex;align-items:center;gap:12px;min-width:0}.notice-badge{font-size:12px;color:#059669;background:#ffffffd6;border:1px solid rgba(5,150,105,.12);box-shadow:0 8px 24px #0f172a0f;padding:4px 8px;border-radius:12px;display:flex;align-items:center;gap:4px}.clear-button{background:transparent;border:none;color:var(--danger);cursor:pointer;padding:6px;border-radius:999px;transition:background .2s ease,transform .2s ease}.clear-button:hover{background:#ef444414;transform:scale(1.04)}.ai-chat-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding:16px;display:flex;flex-direction:column;gap:16px;scroll-padding-bottom:16px}.ai-chat-list.is-empty{gap:0}.ai-empty-state{flex:1 1 auto;min-height:min(420px,calc(100dvh - 260px));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:32px 16px 24px;text-align:center}.ai-empty-logo{width:80px;height:80px;border-radius:50%;background:#ffffffa8;color:#a3e635;display:flex;align-items:center;justify-content:center;margin-bottom:-10px;box-shadow:inset 0 0 0 1px #ffffffb3,0 12px 28px #0f172a0a}.ai-empty-title{color:#111827;font-size:20px;line-height:1.25;font-weight:800}.ai-empty-hints{width:min(100%,340px);display:flex;flex-direction:column;align-items:stretch;gap:10px}.ai-empty-hint-chip{width:100%;min-height:42px;border:none;border-radius:21px;background:#ffffffb8;color:#4b5563;padding:10px 16px;font-size:14px;font-weight:500;line-height:1.35;cursor:pointer;text-align:center;box-shadow:0 8px 22px #0f172a0a;transition:transform .18s ease,background .18s ease,box-shadow .18s ease}.ai-empty-hint-chip:hover{background:#ffffffe6;transform:translateY(-1px);box-shadow:0 12px 26px #0f172a0f}.ai-chat-tail-spacer{flex:0 0 calc(88px + var(--mobile-bottom-nav-space));min-height:calc(88px + var(--mobile-bottom-nav-space));pointer-events:none}.ai-chat-message{display:flex;width:100%;align-items:flex-start}.ai-chat-message-main{position:relative;display:flex;align-items:flex-start;gap:8px;width:100%}.ai-chat-message.assistant .ai-chat-message-main:before{content:"";width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;margin-top:2px;background-color:#ecfdf5;background-image:var(--ai-robot-avatar);background-repeat:no-repeat;background-position:center;background-size:24px 24px;border:1px solid rgba(5,150,105,.18);box-shadow:0 6px 14px #0596691f}.ai-chat-message.user{justify-content:flex-end}.ai-chat-message.assistant{justify-content:flex-start}.ai-chat-bubble-wrap{display:flex;max-width:min(78%,680px)}.ai-chat-bubble-column{display:flex;flex-direction:column;min-width:0;gap:6px;align-items:flex-start}.ai-chat-message.user .ai-chat-bubble-column{align-items:flex-end}.ai-chat-message.user .ai-chat-message-main{justify-content:flex-end}.ai-chat-bubble{position:relative;max-width:100%;padding:8px 10px;border-radius:8px;font-size:14px;line-height:1.45;word-wrap:break-word;overflow-wrap:anywhere}.ai-chat-avatar{width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 1px #ffffffb8;flex-shrink:0}.ai-chat-avatar-user{font-size:13px;font-weight:600;margin-top:2px}.ai-chat-avatar-user span{line-height:1}.ai-chat-message.user .ai-chat-bubble{background:#a3e635;color:#064e3b;border:1px solid #a3e635;box-shadow:0 2px 8px #a3e6352e}.ai-chat-message.assistant .ai-chat-bubble{background:#fff;color:#111827;border:1px solid #ffffff;box-shadow:0 2px 8px #0f172a0f}.ai-chat-message.assistant .ai-chat-bubble:before,.ai-chat-message.user .ai-chat-bubble:after{content:"";position:absolute;top:12px;width:0;height:0;border-style:solid}.ai-chat-message.assistant .ai-chat-bubble:before{left:-6px;border-width:6px 6px 6px 0;border-color:transparent #ffffff transparent transparent}.ai-chat-message.user .ai-chat-bubble:after{right:-6px;border-width:6px 0 6px 6px;border-color:transparent transparent transparent #a3e635}.ai-chat-bubble .plain-text,.ai-chat-bubble .markdown-body{color:inherit;font-size:inherit;line-height:inherit}.ai-chat-bubble .plain-text{white-space:pre-wrap}.ai-chat-bubble .markdown-body>:first-child{margin-top:0}.ai-chat-bubble .markdown-body>:last-child{margin-bottom:0}.ai-chat-bubble .markdown-body p{margin:3px 0}.ai-chat-bubble .markdown-body ul,.ai-chat-bubble .markdown-body ol{margin:5px 0;padding-left:20px}.ai-chat-bubble .markdown-body li{margin:2px 0}.ai-chat-bubble .markdown-body code{background:#64748b1f;border-radius:4px;padding:1px 4px;font-size:.92em}.ai-chat-bubble .markdown-body pre{max-width:100%;overflow-x:auto;border-radius:8px;padding:8px;background:#0f172a0f}.ai-voice-card{position:relative;width:min(100%,320px);min-width:156px;border:none;border-radius:8px;display:flex;align-items:center;gap:12px;padding:9px 12px;cursor:pointer;text-align:left;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}.ai-chat-message.user .ai-voice-card{background:#a3e635;color:#064e3b;box-shadow:0 2px 8px #a3e6352e}.ai-chat-message.assistant .ai-voice-card{background:#fff;color:#065f46;border:1px solid #ffffff;box-shadow:0 2px 8px #0f172a0f}.ai-chat-message.assistant .ai-voice-card:before,.ai-chat-message.user .ai-voice-card:before{content:"";position:absolute;top:12px;width:0;height:0;border-style:solid}.ai-chat-message.assistant .ai-voice-card:before{left:-6px;border-width:6px 6px 6px 0;border-color:transparent #ffffff transparent transparent}.ai-chat-message.user .ai-voice-card:before{right:-6px;border-width:6px 0 6px 6px;border-color:transparent transparent transparent #a3e635}.ai-voice-card.disabled{cursor:default;filter:saturate(.7)}.ai-chat-message.user .ai-voice-card.recognizing{box-shadow:0 10px 22px #10b98147}.ai-chat-message.assistant .ai-voice-card.recognizing{box-shadow:0 12px 32px #10b9811f}.ai-voice-card.recognizing:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.16) 35%,rgba(255,255,255,.32) 50%,rgba(255,255,255,.16) 65%,transparent 100%);animation:ai-voice-recognizing-sheen 1.6s linear infinite}.ai-voice-card:not(.disabled):hover{transform:translateY(-1px)}.ai-voice-play-icon{width:32px;height:32px;border-radius:999px;display:flex;align-items:center;justify-content:center;flex:0 0 32px;background:#ffffff38}.ai-chat-message.assistant .ai-voice-play-icon{background:#10b98124}.ai-voice-wave{display:inline-flex;align-items:flex-end;gap:4px;height:20px;flex:1;min-width:0;min-width:56px}.ai-voice-wave-bar{width:5px;border-radius:999px;background:currentColor;opacity:.82}.ai-voice-wave-bar.bar-1{height:8px}.ai-voice-wave-bar.bar-2{height:15px}.ai-voice-wave-bar.bar-3{height:21px}.ai-voice-wave-bar.bar-4{height:13px}.ai-voice-wave-bar.bar-5{height:18px}.ai-voice-card.playing .ai-voice-wave-bar{opacity:1}.ai-voice-card.recognizing .ai-voice-wave-bar{animation:ai-voice-wave-recognizing 1s ease-in-out infinite}.ai-voice-card.recognizing .ai-voice-wave-bar.bar-2{animation-delay:.1s}.ai-voice-card.recognizing .ai-voice-wave-bar.bar-3{animation-delay:.2s}.ai-voice-card.recognizing .ai-voice-wave-bar.bar-4{animation-delay:.3s}.ai-voice-card.recognizing .ai-voice-wave-bar.bar-5{animation-delay:.4s}.ai-voice-duration{font-size:13px;font-weight:700;white-space:nowrap}.ai-voice-transcript,.ai-voice-error{font-size:12px;line-height:1.45;padding:0 2px}.ai-chat-message.user .ai-voice-transcript{color:#064e3bb8;text-align:right}.ai-chat-message.assistant .ai-voice-transcript{color:var(--text-muted);text-align:left}.ai-message-meta{display:none}.ai-voice-error{color:#dc2626}@keyframes ai-voice-wave-recognizing{0%,to{transform:scaleY(.7);opacity:.6}50%{transform:scaleY(1.15);opacity:1}}@keyframes ai-voice-recognizing-sheen{0%{transform:translate(-120%)}to{transform:translate(120%)}}.ai-status-bubble{background:#fff!important;border:1px solid #ffffff!important;box-shadow:0 2px 8px #0f172a0f!important;color:#6b7280!important;font-size:14px;font-weight:500;padding:10px 14px}.ai-status-hint{display:block;margin-top:4px;color:#94a3b8;font-size:12px;font-weight:400}.ai-send-button.ai-stop-button{background:linear-gradient(135deg,#64748b,#475569);box-shadow:0 10px 24px #47556933}.ai-actions{margin-top:12px;display:flex;flex-direction:column;gap:8px}.ai-action-button{background:#3b82f61a;color:var(--primary);border:1px solid rgba(59,130,246,.2);border-radius:8px;padding:8px 12px;font-size:14px;cursor:pointer}.ai-clarify{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-color)}.ai-clarify-options{display:flex;flex-direction:column;gap:8px;margin-top:8px}.ai-clarify-options button{background:transparent;border:1px solid var(--primary);color:var(--primary);border-radius:8px;padding:8px;font-size:14px;cursor:pointer}.ai-top-composer{position:fixed;top:56px;left:12px;right:12px;z-index:130;pointer-events:none}.ai-top-composer-inner{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:10px;border-radius:24px;background:#fffffff0;border:1px solid rgba(226,232,240,.9);box-shadow:0 18px 40px #0f172a1f;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.ai-bottom-dock{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:120;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;pointer-events:none}.ai-chat-input-area{position:relative;display:flex;align-items:center;justify-content:flex-end;pointer-events:auto}.ai-text-input{flex:1;height:44px;border:1px solid rgba(203,213,225,.9);border-radius:22px;padding:0 16px;font-size:15px;background:#f8fafcf2;color:var(--text-main);transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.ai-text-input:focus{outline:none;border-color:#10b98173;box-shadow:0 0 0 4px #10b9811f;background:#fff}.ai-composer-close{width:44px;height:44px;border-radius:22px;border:none;background:#f1f5f9f5;color:#475569;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:transform .18s ease,background .18s ease}.ai-composer-close:hover{background:#e2e8f0f5;transform:scale(1.03)}.ai-text-trigger{min-width:124px;height:54px;border-radius:27px;border:1px solid rgba(148,163,184,.18);background:#fffffff2;color:#0f172a;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 22px;font-size:16px;font-weight:600;box-shadow:0 14px 34px #0f172a1f;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);pointer-events:auto;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,background .18s ease;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.ai-text-trigger:hover{transform:translateY(-1px);box-shadow:0 18px 40px #0f172a24}.ai-text-trigger.active{background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#065f46}.ai-send-button,.ai-voice-button{width:54px;height:54px;border-radius:27px;border:none;background:linear-gradient(135deg,#10b981,#059669);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;touch-action:none;box-shadow:0 10px 24px #10b98138;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.ai-send-button:hover,.ai-voice-button:hover{transform:translateY(-1px) scale(1.02);box-shadow:0 14px 28px #10b98142}.ai-send-button:active,.ai-voice-button:active{transform:scale(.97)}.ai-voice-button.recording{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 12px 28px #ef444442}.ai-recording-overlay{position:absolute;right:0;bottom:calc(100% + 12px);display:flex;justify-content:flex-end;pointer-events:none}.ai-recording-card{min-width:220px;display:flex;align-items:center;gap:14px;padding:12px 16px;border-radius:22px;background:#0f172ae0;color:#fff;box-shadow:0 14px 34px #0f172a52;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.ai-recording-visual{position:relative;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center}.ai-recording-pulse{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;border:1px solid rgba(248,113,113,.55);animation:ai-recording-pulse 1.8s ease-out infinite}.ai-recording-pulse-2{animation-delay:.9s}.ai-recording-mic-dot{position:absolute;width:11px;height:11px;border-radius:999px;background:#fb7185;box-shadow:0 0 0 5px #fb718524}.ai-recording-bar{position:absolute;bottom:6px;width:3px;border-radius:999px;background:linear-gradient(180deg,#fda4af,#fb7185);animation:ai-recording-bars .9s ease-in-out infinite alternate}.ai-recording-bar-1{left:4px;height:12px}.ai-recording-bar-2{right:4px;height:20px;animation-delay:.18s}.ai-recording-bar-3{right:-2px;height:14px;animation-delay:.36s}.ai-recording-texts{display:flex;flex-direction:column;gap:2px}.ai-recording-title{font-size:14px;font-weight:700}.ai-recording-subtitle{font-size:12px;color:#ffffffc7}.ai-recording-hint{font-size:14px}.ai-recording-overlay.cancel-armed .ai-recording-hint{background:var(--danger)}@media (min-width: 769px){.page.page-view-ai-assistant{max-width:min(1280px,calc(100vw - 40px))}.page.page-view-ai-assistant>h1{margin-bottom:16px}.page.page-view-ai-assistant>.table-container.view-switch-surface{height:calc(100vh - 112px);min-height:680px;padding:0;overflow:hidden;display:flex;flex-direction:column;border-radius:18px;background:#eef3f8}.page.page-view-ai-assistant .ai-assistant-page{flex:1;width:100%;min-height:0;background:#eef3f8}.page.page-view-ai-assistant .ai-desktop-shell{display:grid;grid-template-columns:260px minmax(0,1fr);gap:16px;padding:16px;height:100%;overflow:hidden}.page.page-view-ai-assistant .ai-desktop-sidebar,.page.page-view-ai-assistant .ai-conversation-panel{min-height:0;border:1px solid rgba(203,213,225,.78);background:#ffffffe0;box-shadow:0 18px 48px #0f172a14;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.page.page-view-ai-assistant .ai-desktop-sidebar{display:flex;flex-direction:column;gap:14px;padding:18px;border-radius:16px;overflow:hidden}.page.page-view-ai-assistant .ai-conversation-panel{display:flex;flex-direction:column;position:relative;border-radius:16px;overflow:hidden}.page.page-view-ai-assistant .ai-desktop-brand{display:flex;align-items:center;gap:12px;padding-bottom:4px}.page.page-view-ai-assistant .ai-desktop-brand-mark{width:42px;height:42px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:#0f172a;color:#fff;font-size:13px;font-weight:900;letter-spacing:0;box-shadow:0 14px 28px #0f172a2e}.page.page-view-ai-assistant .ai-desktop-brand-copy,.page.page-view-ai-assistant .ai-desktop-user-copy{display:flex;flex-direction:column;min-width:0;gap:3px}.page.page-view-ai-assistant .ai-desktop-brand-copy strong{color:#0f172a;font-size:16px;line-height:1.2}.page.page-view-ai-assistant .ai-desktop-brand-copy span,.page.page-view-ai-assistant .ai-desktop-user-copy span,.page.page-view-ai-assistant .ai-desktop-privacy-note small{color:#64748b;font-size:12px;line-height:1.35}.page.page-view-ai-assistant .ai-desktop-user-card{display:flex;align-items:center;gap:10px;padding:12px;border-radius:12px;background:#f8fafc;border:1px solid rgba(226,232,240,.92)}.page.page-view-ai-assistant .ai-desktop-user-avatar{width:36px;height:36px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;font-size:13px;font-weight:800}.page.page-view-ai-assistant .ai-desktop-user-copy strong{color:#172033;font-size:14px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page.page-view-ai-assistant .ai-desktop-side-section{display:grid;gap:10px}.page.page-view-ai-assistant .ai-desktop-side-section h2{margin:0;color:#475569;font-size:12px;font-weight:800;line-height:1.2}.page.page-view-ai-assistant .ai-desktop-quick-list{display:grid;gap:8px}.page.page-view-ai-assistant .ai-desktop-quick-list button{width:100%;border:1px solid rgba(203,213,225,.86);border-radius:10px;background:#fff;color:#172033;padding:10px 11px;text-align:left;font-size:13px;font-weight:700;line-height:1.35;cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.page.page-view-ai-assistant .ai-desktop-quick-list button:hover{transform:translateY(-1px);border-color:#10b9816b;box-shadow:0 10px 22px #0f172a12}.page.page-view-ai-assistant .ai-desktop-quick-list button:disabled{cursor:not-allowed;opacity:.58;transform:none}.page.page-view-ai-assistant .ai-desktop-session-section dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}.page.page-view-ai-assistant .ai-desktop-session-section dl>div{min-width:0;padding:10px 8px;border-radius:10px;background:#f8fafc;border:1px solid rgba(226,232,240,.92)}.page.page-view-ai-assistant .ai-desktop-session-section dt{margin:0 0 5px;color:#64748b;font-size:11px;line-height:1}.page.page-view-ai-assistant .ai-desktop-session-section dd{margin:0;color:#0f172a;font-size:13px;font-weight:800;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page.page-view-ai-assistant .ai-desktop-privacy-note{margin-top:auto;display:grid;gap:4px;padding:12px;border-radius:12px;background:#ecfdf5;color:#047857;border:1px solid rgba(16,185,129,.2)}.page.page-view-ai-assistant .ai-desktop-privacy-note span{font-size:13px;font-weight:900;line-height:1.2}.page.page-view-ai-assistant .ai-desktop-clear{min-height:38px;border:1px solid rgba(239,68,68,.18);border-radius:10px;background:#fff7f7;color:#dc2626;font-size:13px;font-weight:800;cursor:pointer;transition:background .16s ease,transform .16s ease}.page.page-view-ai-assistant .ai-desktop-clear:hover{background:#fee2e2;transform:translateY(-1px)}.page.page-view-ai-assistant .ai-chat-header{display:none}.page.page-view-ai-assistant .ai-chat-heading{align-items:center}.page.page-view-ai-assistant .ai-desktop-main-title{display:flex;flex-direction:column;gap:3px;min-width:0}.page.page-view-ai-assistant .ai-desktop-main-title strong{color:#0f172a;font-size:18px;font-weight:900;line-height:1.2}.page.page-view-ai-assistant .ai-desktop-main-title span{color:#64748b;font-size:12px;font-weight:700;line-height:1.2}.page.page-view-ai-assistant .notice-badge{border-radius:8px;box-shadow:none}.page.page-view-ai-assistant .clear-button{border-radius:8px}.page.page-view-ai-assistant .ai-warning-banner{max-width:920px;margin:16px auto 0}.page.page-view-ai-assistant .ai-chat-list{width:100%;max-width:none;margin:0 auto;padding:26px 34px 88px;gap:18px;scroll-padding-bottom:88px;background:#f8fafc}.page.page-view-ai-assistant .ai-chat-list.is-empty{justify-content:center}.page.page-view-ai-assistant .ai-empty-state{min-height:360px;padding:24px}.page.page-view-ai-assistant .ai-empty-logo{background:#fff;color:#4f46e5;box-shadow:0 16px 34px #4f46e51f,inset 0 0 0 1px #e2e8f0e6}.page.page-view-ai-assistant .ai-empty-hints{width:min(100%,600px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.page.page-view-ai-assistant .ai-empty-hint-chip{min-height:72px;border-radius:12px;text-align:left;background:#ffffffdb;border:1px solid rgba(226,232,240,.86)}.page.page-view-ai-assistant .ai-chat-bubble-wrap{max-width:min(76%,720px)}.page.page-view-ai-assistant .ai-chat-bubble{border-radius:8px;font-size:14px}.page.page-view-ai-assistant .ai-chat-avatar{width:36px;height:36px}.page.page-view-ai-assistant .ai-top-composer{position:absolute;left:0;right:0;bottom:18px;top:auto;z-index:4;padding:0 22px;border-top:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none}.page.page-view-ai-assistant .ai-top-composer-inner{pointer-events:auto;width:min(920px,100%);margin:0 auto;padding:9px;border-radius:18px;background:#fffffff0;border:1px solid rgba(203,213,225,.78);box-shadow:0 22px 58px #0f172a2e;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}.page.page-view-ai-assistant .ai-text-input{height:46px;border-radius:10px;padding:0 14px}.page.page-view-ai-assistant .ai-send-button,.page.page-view-ai-assistant .ai-desktop-voice-button{width:46px;height:46px;border-radius:12px}.page.page-view-ai-assistant .ai-desktop-voice-status{max-width:180px;color:#475569;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page.page-view-ai-assistant .ai-bottom-dock{display:none}.page.page-view-ai-assistant .ai-chat-tail-spacer{flex-basis:0;min-height:0}.page.page-view-ai-assistant .ai-recording-overlay{right:22px;bottom:92px}}@keyframes ai-recording-pulse{0%{transform:scale(.8);opacity:.7}to{transform:scale(1.45);opacity:0}}@keyframes ai-recording-bars{0%{transform:scaleY(.55);opacity:.5}to{transform:scaleY(1.15);opacity:1}}@media (max-width: 768px){.ai-assistant-page{background:#f3f4f6}.ai-assistant-page.text-composer-open .ai-chat-list{padding-top:124px!important}.page.page-view-ai-assistant.page-mobile-scroll-shell>.table-container.view-switch-surface{flex:1 1 auto;min-height:0;overflow:hidden!important;padding:0!important;display:flex;flex-direction:column;touch-action:pan-y}.page.page-view-ai-assistant .ai-assistant-page{flex:1 1 auto;min-height:0;height:100%;overflow:hidden;display:flex;flex-direction:column}.page.page-view-ai-assistant .ai-conversation-panel{flex:1 1 auto;min-height:0;height:100%;overflow:hidden;display:flex;flex-direction:column;position:relative}.ai-chat-header{position:absolute;top:0;left:0;right:0;z-index:10}.ai-warning-banner{margin-top:48px}.ai-chat-list{padding-top:48px!important;background:transparent!important;border:none;box-shadow:none;flex:1 1 auto;min-height:0;height:auto;padding-bottom:calc(84px + var(--mobile-bottom-nav-space))!important;scroll-padding-bottom:calc(84px + var(--mobile-bottom-nav-space));overflow-y:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;touch-action:pan-y}.ai-chat-message-main{gap:8px}.ai-chat-message.assistant .ai-chat-message-main:before{width:36px;height:36px;flex-basis:36px;font-size:11px}.ai-chat-bubble-wrap{max-width:min(76%,312px)}.ai-chat-bubble{padding:8px 10px;border-radius:8px;font-size:14px;line-height:1.45}.ai-chat-tail-spacer{flex-basis:calc(84px + var(--mobile-bottom-nav-space));min-height:calc(84px + var(--mobile-bottom-nav-space))}.ai-top-composer{top:calc(54px + env(safe-area-inset-top));left:12px;right:12px}.ai-top-composer-inner{border-radius:22px;background:#f9fafbf5}.ai-bottom-dock{bottom:calc(var(--mobile-bottom-nav-space) + 12px);align-items:center}.ai-chat-input-area{margin-left:auto}.ai-chat-message.user .ai-chat-bubble{background:#a3e635;color:#064e3b;border-color:#a3e635;box-shadow:0 2px 8px #a3e6352e}.ai-chat-message.assistant .ai-chat-bubble{background:#fff;color:#111827;border-color:#fff;box-shadow:0 2px 8px #0f172a0f}.ai-chat-message.assistant .ai-chat-bubble:before{border-right-color:#fff}.ai-chat-message.user .ai-chat-bubble:after{border-left-color:#a3e635}.ai-message-meta{display:block;padding:0 2px;color:#6b7280;font-size:11px;line-height:16px;margin-top:6px;text-align:left}.ai-chat-avatar{width:36px;height:36px}.ai-send-button,.ai-voice-button{background:linear-gradient(135deg,#10b981,#059669)}.ai-voice-button.recording{background:linear-gradient(135deg,#ef4444,#dc2626)}.ai-text-trigger{min-width:112px;height:52px;border-radius:26px}}.dktk-page{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;height:calc(100vh - 120px);min-height:480px;overflow:hidden}.dktk-class-list,.dktk-source-panel,.dktk-table-section,.dktk-candidate-panel{border:1px solid rgba(15,23,42,.14);border-radius:8px;background:#fff}.dktk-class-list{display:flex;flex-direction:column;min-height:0;padding:14px;overflow:hidden}.dktk-class-list h2{margin:0 0 4px;font-size:18px}.dktk-class-list p{margin:0 0 12px;color:#64748b;font-size:13px}.dktk-class-buttons{display:grid;gap:6px;min-height:0;overflow-y:auto;padding-right:4px}.dktk-class-buttons button{border:1px solid rgba(15,23,42,.12);border-radius:6px;background:#f8fafc;padding:8px 10px;text-align:left;cursor:pointer}.dktk-class-buttons button.active{border-color:#2563eb;background:#dbeafe;color:#1d4ed8;font-weight:700}.dktk-workspace{min-width:0;min-height:0;overflow:auto}.dktk-bootstrap-workspace{grid-column:1 / -1;display:grid;place-items:center;min-height:360px}.dktk-bootstrap-panel{width:min(460px,100%);border:1px solid rgba(153,204,204,.5);border-radius:14px;background:#fffffff5;box-shadow:none;padding:18px 16px;text-align:center;color:#033}.dktk-bootstrap-panel h2{margin:0 0 8px;font-size:20px}.dktk-bootstrap-panel p{margin:0;line-height:1.6}.dktk-bootstrap-panel p strong,.dktk-bootstrap-panel p span{display:block}.dktk-bootstrap-panel p strong{margin-bottom:2px;color:#033;font-size:18px}.dktk-bootstrap-panel p span{color:#366}.dktk-bootstrap-loading{display:grid;justify-items:center;gap:8px}.dktk-bootstrap-loader{display:inline-grid;grid-template-columns:repeat(3,8px);align-items:center;justify-content:center;justify-items:center;gap:7px;width:min(280px,100%);min-height:28px;margin-top:0}.dktk-bootstrap-loader span{width:8px;height:8px;border-radius:50%;background:#099;animation:dktkBootstrapPulse .9s ease-in-out infinite}.dktk-bootstrap-loader span:nth-child(2){animation-delay:.12s}.dktk-bootstrap-loader span:nth-child(3){animation-delay:.24s}.dktk-bootstrap-loading strong{color:#033;font-size:16px;line-height:1.4;white-space:nowrap}@keyframes dktkBootstrapPulse{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-5px)}}.dktk-bootstrap-panel button{margin-top:14px;border:1px solid #009999;border-radius:6px;background:#cff;color:#033;padding:8px 12px;font-weight:700;cursor:pointer}.dktk-bootstrap-panel button:hover{background:#9ff}.dktk-source-panel{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;margin-bottom:12px;color:#334155}.dktk-week-stack{display:grid;grid-template-columns:repeat(2,minmax(360px,400px));align-items:start;justify-content:start;gap:0;overflow-x:auto}.dktk-table-section{padding:0;overflow:auto;border:0;border-radius:0;background:transparent}.dktk-table-section h3{margin:0 0 10px;font-size:16px}.dktk-table{width:400px;min-width:400px;border-collapse:separate;border-spacing:0;table-layout:fixed;font-family:SimSun,宋体,serif;font-size:11px;line-height:1.35;color:#000;border:1px solid #000000;border-radius:0;box-shadow:none;margin:0}.dktk-table th,.dktk-table td{height:42px;padding:0;text-align:center;vertical-align:middle;transition:none}.dktk-table th{background:#fff;color:#000;font-weight:400;border-color:#000;border-style:solid none none solid;border-width:1px;height:22px;font-size:12px;line-height:1.35}.dktk-table .dktk-title-row th{height:28px;font-size:15px;line-height:1.35;font-weight:400;border-style:solid solid none solid}.dktk-section-col{width:50px}.dktk-table tbody tr:last-child th{border-style:solid none solid solid}.dktk-table tbody td{border-style:outset;border-width:2px;border-color:#eee;background:#eee}.dktk-table td button{width:100%;height:100%;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;white-space:pre;word-break:keep-all;overflow-wrap:normal;line-break:strict;line-height:1.35;display:flex;align-items:center;justify-content:center;padding:0 2px}.dktk-table td button:disabled{cursor:default}.dktk-table td.empty{background:#eee;color:#999}.dktk-table td.selectable{background:#eee}.dktk-table td.selectable button{color:#000}.dktk-table td.target-candidate{border-style:outset;border-width:2px;border-color:#eee;background:#0f0;color:#000}.dktk-table td.target-candidate button{font-weight:400}.dktk-table td.target-candidate:hover{background:#800020;color:#fff}.dktk-table td.target-candidate:hover button{color:#fff}.dktk-table td.tone-adjust button{color:#00f;font-weight:400}.dktk-table td.tone-substitute button{color:red;font-weight:400}.dktk-table td.tone-assist button{color:#0a0;font-weight:400}.dktk-table td.tone-pending button{color:#999}.dktk-table td.selected{border-style:inset;border-width:2px;border-color:#eee;background:#06c;color:#fff}.dktk-table td.selected button{color:#fff;font-weight:400}.dktk-table td.selected-target{border-style:inset;border-width:2px;border-color:#eee;background:#800020;color:#fff;outline:0}.dktk-table td.selected-target button{color:#fff}.dktk-candidate-panel{margin-top:14px;padding:12px}.dktk-candidate-panel h3{margin:0 0 10px;font-size:16px}.dktk-action-hint,.dktk-selected-target{border:1px solid #99CCCC;border-radius:6px;background:azure;padding:9px 10px;color:#033;font-size:13px}.dktk-selected-target{display:grid;gap:4px}.dktk-selected-target small{color:#475569}.dktk-submit-state{border-radius:6px;padding:9px 10px;font-size:13px;font-weight:700}.dktk-submit-state.running{display:inline-flex;align-items:center;gap:10px;border:1px solid #99CCCC;background:azure;color:#033}.dktk-submit-state.success{border:1px solid #22c55e;background:#ecfdf5;color:#166534}.dktk-submit-state.failed{display:grid;gap:8px;border:1px solid #f87171;background:#fef2f2;color:#991b1b}.dktk-submit-loader{display:inline-flex;align-items:center;gap:5px}.dktk-submit-loader span{width:6px;height:6px;border-radius:50%;background:#099;animation:dktkSubmitPulse .9s ease-in-out infinite}.dktk-submit-loader span:nth-child(2){animation-delay:.12s}.dktk-submit-loader span:nth-child(3){animation-delay:.24s}.dktk-submit-log{max-height:120px;overflow:auto;border-top:1px solid rgba(153,27,27,.2);padding-top:8px;color:#7f1d1d;font-weight:500;line-height:1.5;word-break:break-word}.dktk-submit-confirm-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:16px;background:transparent;pointer-events:none}.dktk-submit-confirm{width:min(360px,100%);border:1px solid rgba(153,204,204,.72);border-radius:12px;background:#fffffffa;box-shadow:0 12px 34px #0f172a2e;padding:12px;color:#0f172a;pointer-events:auto}.dktk-submit-confirm h3{margin:0 0 8px;font-size:16px}.dktk-submit-confirm-summary{display:grid;gap:5px;color:#334155;font-size:13px;font-weight:700;line-height:1.45}.dktk-submit-confirm-summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dktk-submit-confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.dktk-submit-confirm-actions button{min-width:88px;min-height:36px;border:1px solid #2563eb;border-radius:6px;background:#2563eb;color:#fff;padding:8px 12px;font-weight:700;cursor:pointer}.dktk-submit-confirm-actions button.secondary{border-color:#cbd5e1;background:#fff;color:#334155}.dktk-submit-confirm-actions button:disabled{cursor:wait;opacity:.65}@keyframes dktkSubmitPulse{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.dktk-real-submit button{border:1px solid rgba(37,99,235,.35);border-radius:6px;background:#2563eb;color:#fff;padding:8px 12px;font-weight:700;cursor:pointer}.dktk-real-submit button:disabled{opacity:.55;cursor:not-allowed}.dktk-action-status{color:#166534;font-size:13px}.dktk-action-status.running,.dktk-success.running{background:azure;border:1px solid #99CCCC;color:#033}.dktk-action-status.success,.dktk-success.success{color:#166534}.dktk-action-status.failed,.dktk-success.failed{color:#991b1b}.dktk-real-submit{margin-top:10px;padding-top:10px;border-top:1px solid rgba(15,23,42,.1)}.dktk-sealed-action{position:relative;border-radius:9px;overflow:hidden}.dktk-sealed-action:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:repeating-linear-gradient(-38deg,#c8102e1a 0,#c8102e1a 4px,#c8102e00 4px,#c8102e00 18px),#c8102e05}.dktk-sealed-action button,.dktk-mobile-submit-button.dktk-sealed-action button{width:100%;min-height:42px;border:1px solid rgba(148,163,184,.45);border-radius:9px;background:#cbd5e1;color:#475569;font-size:15px;font-weight:900;padding:8px 12px;cursor:not-allowed;opacity:.9}.dktk-seal-note{margin:8px 0 0;color:#64748b;font-size:12px;line-height:1.45}.dktk-error,.dktk-success{margin:8px 0;border-radius:6px;padding:8px 10px;font-size:13px}.dktk-error{background:#fee2e2;color:#991b1b}.dktk-success{background:#dcfce7;color:#166534}@media (max-width: 768px){.dktk-page{display:flex;flex-direction:column;gap:10px;height:auto;min-height:0;overflow:visible}.dktk-page-mobile{padding:0 2px}.dktk-mobile-header{flex:0 0 auto;border:1px solid rgba(15,23,42,.12);border-radius:8px;background:#fff;padding:10px}.dktk-mobile-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.dktk-mobile-title-row h2{margin:0;color:#0f172a;font-size:18px;line-height:1.2}.dktk-mobile-title-row span{display:block;margin-top:2px;color:#64748b;font-size:12px;line-height:1.3}.dktk-mobile-title-row button{flex:0 0 auto;border:1px solid rgba(37,99,235,.35);border-radius:6px;background:#eff6ff;color:#1d4ed8;padding:7px 10px;font-weight:700}.dktk-mobile-class-strip{display:flex;flex-wrap:wrap;gap:6px;overflow:visible;padding-bottom:0;scrollbar-width:none}.dktk-mobile-class-strip::-webkit-scrollbar{display:none}.dktk-mobile-class-strip button,.dktk-mobile-class-grid button{flex:0 0 auto;min-width:58px;border:1px solid rgba(15,23,42,.12);border-radius:6px;background:#f8fafc;color:#334155;padding:7px 9px;font-size:13px;font-weight:700}.dktk-mobile-class-strip button.active,.dktk-mobile-class-grid button.active{border-color:#2563eb;background:#dbeafe;color:#1d4ed8}.dktk-workspace{flex:0 0 auto;min-height:0;overflow:visible;padding-bottom:0}.dktk-source-panel{margin-bottom:8px;padding:8px 10px;font-size:12px}.dktk-week-stack{grid-template-columns:minmax(360px,1fr);justify-content:stretch;gap:10px;overflow:visible}.dktk-table-section{width:100%;overflow-x:auto}.dktk-table{width:100%;min-width:360px;font-size:10px}.dktk-table .dktk-title-row th{height:26px;font-size:14px}.dktk-table th,.dktk-table td{height:40px}.dktk-section-col{width:36px}.dktk-table td button{white-space:pre-line;word-break:keep-all;overflow-wrap:normal;line-height:1.25;padding:0 1px}.dktk-candidate-panel{margin-top:10px;padding:10px}.dktk-candidate-panel h3{font-size:15px}.dktk-mobile-submit-dock{position:static;margin:10px 0 0;pointer-events:none}.dktk-mobile-submit-card{display:grid;gap:8px;border:1px solid rgba(15,23,42,.12);border-radius:8px;background:#fff;max-height:min(42dvh,304px);overflow-y:auto;box-shadow:none;overscroll-behavior:contain;padding:10px;pointer-events:auto}.dktk-mobile-submit-card.is-feedback{gap:10px}.dktk-mobile-submit-row{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:7px;border:1px solid rgba(226,232,240,.9);border-radius:9px;background:#fff;padding:8px 9px}.dktk-mobile-submit-row.source{border-color:#2563eb2e;background:#2563eb0d}.dktk-mobile-submit-row.target{border-color:#8000202e;background:#8000200d}.dktk-mobile-submit-dot{width:12px;height:12px;border-radius:999px;margin-top:3px;background:#2563eb}.dktk-mobile-submit-row.target .dktk-mobile-submit-dot{background:#800020}.dktk-mobile-submit-copy{display:grid;min-width:0;gap:2px}.dktk-mobile-submit-copy strong{color:#1e293b;font-size:13px;line-height:1.2}.dktk-mobile-submit-copy span{overflow:hidden;color:#0f172a;font-size:13px;font-weight:800;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.dktk-mobile-submit-copy small{overflow:hidden;color:#64748b;font-size:12px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.dktk-mobile-submit-button{min-height:42px;border:1px solid #2563eb;border-radius:9px;background:#2563eb;color:#fff;font-size:17px;font-weight:900;letter-spacing:.04em}.dktk-mobile-submit-button:disabled{border-color:#94a3b873;background:#cbd5e1;color:#ffffffd1}.dktk-mobile-submit-button.secondary{border-color:#2563eb57;background:#eff6ff;color:#1d4ed8}.dktk-mobile-submit-progress{display:grid;justify-items:center;gap:7px;padding:8px 4px;text-align:center}.dktk-mobile-submit-progress .dktk-submit-loader{margin:0}.dktk-mobile-submit-progress strong{color:#0f172a;font-size:17px;line-height:1.3}.dktk-mobile-submit-progress small{color:#64748b;font-size:13px;line-height:1.3}.dktk-mobile-submit-result{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:10px;border:1px solid rgba(226,232,240,.9);border-radius:11px;padding:10px}.dktk-mobile-submit-result.success{border-color:#22c55e38;background:#ecfdf5}.dktk-mobile-submit-result.failed{border-color:#ef444438;background:#fef2f2}.dktk-mobile-submit-result-icon{display:inline-flex;width:38px;height:38px;align-items:center;justify-content:center;border-radius:999px;color:#fff;font-size:25px;font-weight:900;line-height:1}.dktk-mobile-submit-result.success .dktk-mobile-submit-result-icon{background:#22c55e}.dktk-mobile-submit-result.failed .dktk-mobile-submit-result-icon{background:#ef4444}.dktk-mobile-submit-result strong{display:block;color:#0f5132;font-size:17px;line-height:1.3}.dktk-mobile-submit-result.failed strong{color:#991b1b}.dktk-mobile-submit-result small{display:block;margin-top:2px;color:#64748b;font-size:13px;line-height:1.3}.dktk-mobile-submit-log{display:grid;gap:3px;max-height:96px;overflow-y:auto;border:1px solid rgba(226,232,240,.95);border-radius:9px;background:#fff;padding:8px 9px;color:#475569;font-size:12px;line-height:1.4}.dktk-submit-confirm{width:min(360px,100%)}.dktk-mobile-class-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:85;display:flex;align-items:flex-end;background:#0f172a61;touch-action:none}.dktk-mobile-class-sheet{width:100%;max-height:78dvh;border-radius:12px 12px 0 0;background:#fff;box-shadow:0 -18px 46px #0f172a3d;padding:10px 12px 16px;overflow:hidden}.dktk-mobile-sheet-handle{width:42px;height:4px;border-radius:999px;background:#cbd5e1;margin:0 auto 10px}.dktk-mobile-sheet-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.dktk-mobile-sheet-title-row h3{margin:0;font-size:17px}.dktk-mobile-sheet-title-row button{border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;padding:6px 10px;font-weight:700}.dktk-mobile-class-groups{display:grid;gap:12px;max-height:calc(78dvh - 74px);overflow-y:auto;overscroll-behavior:contain;padding-right:2px;-webkit-overflow-scrolling:touch;touch-action:pan-y}.dktk-mobile-class-group h4{margin:0 0 6px;color:#475569;font-size:12px}.dktk-mobile-class-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.dktk-mobile-class-grid button{min-width:0}}.personal-home-page{min-height:100vh;padding:24px;background:#f4f6f8;color:#0f172a;box-sizing:border-box}.personal-home-more-link{min-height:42px;display:flex;align-items:center;justify-content:center;margin-bottom:14px;border:1px solid #fca5a5;border-radius:8px;background:#fee2e2;color:#dc2626;font-size:15px;font-weight:700;text-decoration:none}.personal-home-login-page{display:grid;place-items:center}.personal-home-login-panel{width:min(520px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;gap:16px;padding:28px;border:1px solid #e2e8f0;border-radius:8px;background:#fff;box-sizing:border-box}.personal-home-brand{color:#3b82f6;font-size:26px;font-weight:700}.personal-home-login-copy h1,.personal-home-header h1,.personal-home-invalid-user h1{margin:0;letter-spacing:0}.personal-home-login-copy p,.personal-home-invalid-user p{margin:6px 0 0;color:#64748b}.personal-home-search-label{color:#475569;font-size:14px;font-weight:600}.personal-home-search-input{width:100%;height:44px;padding:0 14px;border:1px solid #94a3b8;border-radius:6px;background:#fff;color:#0f172a;font:inherit;box-sizing:border-box}.personal-home-search-input:focus{border-color:#3b82f6;outline:3px solid rgba(59,130,246,.14)}.personal-home-teacher-list{min-height:0;max-height:340px;overflow-y:auto;border:1px solid #e2e8f0;border-radius:6px;background:#fff}.personal-home-teacher-option{width:100%;min-height:54px;display:flex;align-items:center;gap:12px;padding:8px 12px;border:0;border-bottom:1px solid #eef2f7;background:#fff;color:#0f172a;font:inherit;text-align:left;cursor:pointer}.personal-home-teacher-option:last-child{border-bottom:0}.personal-home-teacher-option:hover,.personal-home-teacher-option.selected{background:#eff6ff}.personal-home-teacher-option.selected{color:#2563eb}.personal-home-avatar{width:36px;height:36px;display:grid;flex:0 0 36px;place-items:center;border-radius:6px;font-weight:700}.personal-home-login-button,.personal-home-state button,.personal-home-content-state button,.personal-home-account-actions button{min-height:40px;padding:0 16px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font:inherit;font-weight:600;cursor:pointer}.personal-home-login-button{border-color:#2563eb;background:#2563eb;color:#fff}.personal-home-login-button:disabled{border-color:#cbd5e1;background:#e2e8f0;color:#94a3b8;cursor:not-allowed}.personal-home-state,.personal-home-content-state{display:flex;align-items:center;justify-content:center;gap:12px;padding:24px;color:#64748b;text-align:center}.personal-home-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;max-width:1920px;margin:0 auto 20px}.personal-home-header h1{margin-top:8px;font-size:26px}.personal-home-account-actions{display:flex;gap:8px}.personal-home-account-actions .personal-home-logout-button{color:#dc2626}.personal-home-weeks{width:100%;max-width:1920px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 auto}.personal-home-week{min-width:0;padding:16px;border:1px solid #e2e8f0;border-radius:8px;background:#fff}.personal-home-week-heading h2{margin:0 0 14px;color:#2563eb;font-size:20px;text-align:center}.personal-home-table-scroll{width:100%;overflow-x:auto}.personal-home-week-table{width:100%;min-width:620px;table-layout:fixed;border-collapse:collapse;font-size:14px}.personal-home-week-table th,.personal-home-week-table td{height:42px;padding:4px;border:1px solid #dbe3ec;font-weight:400;text-align:center;vertical-align:middle;box-sizing:border-box}.personal-home-week-table thead th{background:#eff4f9;color:#475569;font-weight:600}.personal-home-week-table th:nth-child(2){width:72px}.personal-home-week-table .personal-home-time-cell{width:70px;color:#64748b}.personal-home-special-row th,.personal-home-special-row td{background:#fffbeb;color:#c25a00}.personal-home-course,.personal-home-special-course{display:block;line-height:1.35}@media (max-width: 768px){.personal-home-page{min-height:100dvh;padding:12px}.personal-home-login-page{align-items:start}.personal-home-login-panel{max-height:calc(100dvh - 24px);padding:20px 16px}.personal-home-brand{font-size:23px}.personal-home-header{align-items:flex-start;margin-bottom:14px}.personal-home-header h1{font-size:21px}.personal-home-account-actions{flex-direction:column}.personal-home-account-actions button{min-height:36px;padding-inline:12px}.personal-home-weeks{grid-template-columns:1fr;gap:12px}.personal-home-week{padding:12px 8px}.personal-home-week-heading h2{font-size:18px}.personal-home-week-table{min-width:590px}}.personal-home-app{min-height:100vh;background:#f3f5f8;color:#0f172a;-webkit-text-size-adjust:100%;text-size-adjust:100%}body:has(.personal-home-app){padding:0;align-items:stretch}#root:has(.personal-home-app){align-items:stretch}.personal-home-topbar{width:100%;height:64px;border-bottom:1px solid #dfe5ec;background:#fff;box-sizing:border-box}.personal-home-topbar-inner{width:100%;max-width:1880px;height:100%;display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 auto;padding:0 28px;box-sizing:border-box}.personal-home-brand{flex:0 0 auto;font-size:24px;line-height:1}.personal-home-topbar-note,.personal-home-current-user{color:#475569;font-size:14px;font-weight:600}.personal-home-account-actions{display:flex;flex-direction:row;align-items:center;gap:8px}.personal-home-account-actions button{min-width:76px;min-height:36px;padding:0 14px;border-color:#d7dee7;background:#f8fafc}.personal-home-account-actions .personal-home-logout-button{border-color:#fecaca;background:#fff;color:#dc2626}.personal-home-page{width:100%;max-width:1880px;min-height:calc(100vh - 64px);margin:0 auto;padding:24px 28px 32px;background:transparent;box-sizing:border-box}.personal-home-content-heading{height:60px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.personal-home-content-heading h1{margin:0;font-size:24px;line-height:30px;letter-spacing:0}.personal-home-content-heading p{margin:2px 0 0;color:#64748b;font-size:13px;line-height:20px}.personal-home-sync-status{width:72px;height:28px;display:grid;place-items:center;margin-top:2px;border:1px solid #dbe5f2;border-radius:6px;background:#eef5ff;color:#2563eb;font-size:12px;font-weight:600;box-sizing:border-box}.personal-home-sync-status.error{border-color:#fecaca;background:#fff5f5;color:#dc2626}.personal-home-weeks{width:100%;max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:18px;margin:0}.personal-home-week-shell{min-width:0;min-height:598px;overflow:hidden;border:1px solid #dfe5ec;border-radius:8px;background:#fff;box-sizing:border-box}.personal-home-week-content{height:100%;padding:18px;box-sizing:border-box}.personal-home-week-heading{height:48px;display:flex;align-items:baseline;gap:10px;padding:0 2px;box-sizing:border-box}.personal-home-week-heading span,.personal-home-week-state-label{color:#2563eb;font-size:13px;font-weight:700}.personal-home-week-heading h2{margin:0;color:#0f172a;font-size:20px;line-height:26px;text-align:left}.personal-home-table-scroll{width:100%;overflow-x:auto;border:1px solid #dbe3ec;border-radius:6px;box-sizing:border-box}.personal-home-week-table{width:100%;min-width:560px;table-layout:fixed;border-collapse:collapse;border-style:hidden;font-size:15px}.personal-home-week-table th,.personal-home-week-table td{height:44px;padding:2px 3px;border:1px solid #dbe3ec;font-weight:400;text-align:center;vertical-align:middle;box-sizing:border-box}.personal-home-week-table thead th{background:#eef3f8;color:#475569;font-weight:700}.personal-home-week-table th:nth-child(2){width:62px}.personal-home-week-table .personal-home-time-cell{width:64px;color:#64748b;font-size:12px}.personal-home-special-row th,.personal-home-special-row td{background:#fffaf0;color:#b45309}.personal-home-course,.personal-home-special-course{display:block;width:100%;overflow:hidden;font-size:14px;line-height:18px;text-overflow:ellipsis;white-space:nowrap}.personal-home-skeleton-line{width:58%;height:8px;display:inline-block;border-radius:4px;background:#e7ecf2}.personal-home-week-state{min-height:596px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;box-sizing:border-box}.personal-home-week-state h2{margin:8px 0 0;font-size:20px}.personal-home-week-state p{margin:10px 0 0;color:#94a3b8}.personal-home-week-state button{min-height:38px;margin-top:18px;padding:0 16px;border:1px solid #bfdbfe;border-radius:6px;background:#eff6ff;color:#2563eb;font:inherit;font-weight:600;cursor:pointer}.personal-home-login-page{min-height:calc(100vh - 64px);display:grid;place-items:center;padding:24px;background:transparent;box-sizing:border-box}.personal-home-login-panel{width:min(560px,100%);height:min(680px,calc(100vh - 112px));max-height:none;display:grid;grid-template-rows:auto auto 44px minmax(0,1fr) auto;gap:12px;padding:24px;border:1px solid #dfe5ec;border-radius:8px;background:#fff;box-sizing:border-box}.personal-home-login-copy h1{font-size:24px;line-height:30px}.personal-home-login-copy p{margin-top:3px;font-size:14px}.personal-home-search-label{align-self:end;font-size:13px}.personal-home-search-input{height:44px}.personal-home-teacher-list{min-height:0;max-height:none;overflow-y:auto}.personal-home-teacher-option{min-height:50px}.personal-home-state{min-height:100%;box-sizing:border-box}.personal-home-login-footer{min-height:44px;display:grid;grid-template-columns:minmax(0,1fr) 112px;align-items:center;gap:16px}.personal-home-login-footer>span{overflow:hidden;color:#64748b;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.personal-home-login-button{width:112px;min-height:40px}@media (max-width: 960px){.personal-home-weeks{grid-template-columns:1fr}.personal-home-week-shell{min-height:598px}}@media (max-width: 640px){.personal-home-topbar-inner{padding:0 14px}.personal-home-brand{font-size:21px}.personal-home-current-user{display:inline-block;max-width:56px;overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.personal-home-account-actions{flex-direction:row;gap:4px}.personal-home-account-actions button{min-width:0;min-height:34px;padding:0 10px;font-size:12px}.personal-home-account-actions .personal-home-logout-button{display:none}.personal-home-page{min-height:calc(100dvh - 64px);padding:16px 12px 24px}.personal-home-content-heading{height:0;overflow:hidden}.personal-home-content-heading h1{font-size:21px}.personal-home-sync-status{display:none}.personal-home-weeks{gap:12px;grid-auto-rows:1fr}.personal-home-week-shell,.personal-home-week-state{min-height:0;height:100%}.personal-home-week-content{height:auto;padding:12px 8px}.personal-home-table-scroll{overflow-x:hidden}.personal-home-week-table{min-width:0;font-size:12px}.personal-home-week-table th,.personal-home-week-table td{height:34px;padding:0;line-height:1.1}.personal-home-week-table tr{height:34px}.personal-home-week-table th:nth-child(2){width:38px}.personal-home-week-table .personal-home-time-cell{width:38px;font-size:10px}.personal-home-course,.personal-home-special-course{font-size:12px;line-height:13px;white-space:normal;overflow-wrap:anywhere}.personal-home-login-page{min-height:calc(100dvh - 64px);padding:12px}.personal-home-login-panel{height:calc(100dvh - 88px);padding:18px 14px}}.clubs-page{display:flex;flex-direction:column;gap:14px;width:100%}.clubs-section{display:flex;flex-direction:column;gap:10px}.clubs-section-title{margin:0;font-size:18px;line-height:24px;font-weight:800;color:var(--text-main);white-space:nowrap}.clubs-section-head{display:flex;align-items:center;gap:10px;min-width:0}.clubs-section-marker{flex:0 0 auto;width:3px;height:16px;border-radius:2px;background:var(--primary)}.clubs-section-pills{margin-left:auto;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.clubs-pill{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;background:#64748b1a;color:var(--text-muted);font-size:12px;line-height:16px;font-weight:600;white-space:nowrap}.clubs-pill-primary{background:#3b82f61f;color:var(--primary-hover)}.clubs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(360px,100%),1fr));gap:14px;align-items:stretch}.clubs-card{min-width:0;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:16px;background:var(--card-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);box-shadow:0 8px 32px #1f26871a}.clubs-card-head{display:flex;align-items:center;gap:10px;min-width:0}.clubs-avatar{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;font-size:17px;font-weight:700}.clubs-card-title{display:flex;flex-direction:column;min-width:0;flex:1}.clubs-card-title h3{margin:0;font-size:17px;line-height:22px;font-weight:700;color:var(--text-main)}.clubs-card-sub{margin-top:1px;color:var(--text-muted);font-size:13px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clubs-card-badge{flex:0 0 auto;align-self:flex-start;padding:5px 10px;border-radius:999px;background:#ea580c1f;color:#ea580c;font-size:12px;line-height:16px;font-weight:700;white-space:nowrap}.clubs-card-details{display:flex;flex-direction:column;gap:6px}.clubs-detail-row{display:flex;align-items:flex-start;gap:6px;min-width:0}.clubs-detail-icon{flex:0 0 auto;margin-top:2px;color:#94a3b8}.clubs-detail-text{flex:1;min-width:0;color:var(--text-muted);font-size:14px;line-height:20px;word-break:break-word}.clubs-slot-list{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.clubs-slot{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:8px}.clubs-slot-day{font-size:14px;line-height:20px;font-weight:600;color:var(--text-main)}.clubs-slot-period{padding:2px 6px;border-radius:6px;background:#64748b1a;color:#475569;font-size:12px;line-height:16px;font-weight:600;white-space:nowrap}.clubs-slot-time{color:var(--text-muted);font-size:14px;line-height:20px;font-variant-numeric:tabular-nums}.clubs-empty{padding:28px;border:1px dashed rgba(203,213,225,.9);border-radius:var(--radius-lg);color:var(--text-muted);font-size:13px;text-align:center}.desktop-usage-monitor{box-sizing:border-box;display:flex;width:100%;height:100vh;min-height:0;flex-direction:column;gap:12px;overflow:hidden;padding:14px;color:#172033;background:radial-gradient(circle at 100% 0%,rgba(186,230,253,.48),transparent 38%),#f1f5f9;font-family:Inter,Segoe UI,Microsoft YaHei,sans-serif}.desktop-usage-monitor__header{display:flex;min-height:48px;align-items:center;justify-content:space-between;gap:12px}.desktop-usage-monitor__eyebrow{margin:0 0 3px;color:#64748b;font-size:9px;font-weight:800;letter-spacing:.12em}.desktop-usage-monitor__header h1{margin:0;color:#0f172a;font-size:20px;line-height:24px;font-weight:750}.desktop-usage-monitor__refresh-label{flex:0 0 auto;padding:5px 8px;border:1px solid #dbe5ef;border-radius:999px;color:#516174;background:#ffffffbf;font-size:10px;line-height:14px;white-space:nowrap}.desktop-usage-monitor__error{margin:-3px 0 0;padding:7px 9px;border:1px solid #fecaca;border-radius:9px;color:#b91c1c;background:#fff1f2;font-size:11px;line-height:15px}.desktop-usage-monitor__metrics{display:grid;flex:0 0 auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.desktop-usage-monitor__metric,.desktop-usage-monitor__recent{min-width:0;border:1px solid rgba(219,229,239,.9);border-radius:14px;background:#fffffff0;box-shadow:0 5px 16px #0f172a0b}.desktop-usage-monitor__metric{min-height:83px;padding:11px 12px 9px}.desktop-usage-monitor__metric h2,.desktop-usage-monitor__section-heading h2{margin:0;color:#5b687a;font-size:11px;line-height:16px;font-weight:650}.desktop-usage-monitor__metric-value{margin:7px 0 0;color:#111c31;font-size:29px;line-height:31px;font-weight:760;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.desktop-usage-monitor__recent{display:flex;min-height:0;flex:1 1 auto;flex-direction:column;padding:11px 12px 6px}.desktop-usage-monitor__section-heading{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:8px;padding-bottom:5px}.desktop-usage-monitor__section-heading span{color:#94a3b8;font-size:10px;font-variant-numeric:tabular-nums}.desktop-usage-monitor__visit-list{min-height:0;margin:0;padding:0;overflow:auto;list-style:none;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}.desktop-usage-monitor__visit{min-width:0;padding:7px 0 6px;border-top:1px solid #edf1f5}.desktop-usage-monitor__visit-main,.desktop-usage-monitor__visit-meta{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px}.desktop-usage-monitor__visit-main strong{overflow:hidden;color:#263449;font-size:11px;line-height:15px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.desktop-usage-monitor__visit-main time{flex:0 0 auto;color:#7b8797;font-size:9px;line-height:13px;font-variant-numeric:tabular-nums}.desktop-usage-monitor__visit-meta{margin-top:2px;color:#8390a1;font-size:9px;line-height:12px}.desktop-usage-monitor__visit-meta>span:first-child{flex:0 0 auto}.desktop-usage-monitor__route{overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap}.desktop-usage-monitor__empty{display:grid;min-height:0;flex:1 1 auto;place-items:center;margin:0;color:#94a3b8;font-size:11px}@media (max-height: 470px){.desktop-usage-monitor{gap:8px;padding:10px}.desktop-usage-monitor__metric{min-height:72px}.desktop-usage-monitor__visit{padding-top:5px;padding-bottom:4px}}.desktop-home-module-clubs .desktop-home-row-icon,.desktop-home-module-clubs .desktop-home-directory-icon,.desktop-home-recents .desktop-home-module-clubs>span{background:#ea580c1f;color:#ea580c}@media (max-width: 768px){.clubs-page{gap:14px;padding-top:2px}.clubs-section-head{gap:8px}.clubs-section-title{font-size:17px;line-height:22px}.clubs-grid{grid-template-columns:minmax(0,1fr);align-items:start}.clubs-card{padding:14px 12px;border:1px solid rgba(226,232,240,.95);background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 6px 16px #0f172a0a;overflow:hidden}.clubs-card-title h3{font-size:16px}}
