:root{--bg: #ffffff;--bg-subtle: #f9fafb;--card: #ffffff;--card-solid: #ffffff;--primary: #18181b;--primary-fg: #ffffff;--primary-hover: #27272a;--primary-light: #f4f4f5;--primary-glow: rgba(24, 24, 27, .08);--accent: #6d5cff;--accent-light: rgba(109, 92, 255, .08);--accent-border: rgba(109, 92, 255, .2);--free: #16a34a;--free-bg: #f0fdf4;--free-border: #bbf7d0;--busy: #dc2626;--busy-bg: #fef2f2;--busy-border: #fecaca;--text: #09090b;--text-secondary: #71717a;--border: #e4e4e7;--ring: #a1a1aa;--radius: 12px;--radius-sm: 8px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 1px 3px rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.06);--shadow-lg: 0 4px 6px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.06);--ease: cubic-bezier(.4, 0, .2, 1);--duration: .15s;--sidebar-width: 220px;--sidebar-collapsed-width: 56px;--sidebar-bg: #ffffff;--content-bg: #f5f5f0;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-right: env(safe-area-inset-right, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px)}[data-theme=dark]{--bg: #09090b;--bg-subtle: #18181b;--card: #09090b;--card-solid: #18181b;--primary: #fafafa;--primary-fg: #18181b;--primary-hover: #e4e4e7;--primary-light: #27272a;--primary-glow: rgba(250, 250, 250, .06);--accent: #8b7aff;--accent-light: rgba(139, 122, 255, .1);--accent-border: rgba(139, 122, 255, .25);--free: #4ade80;--free-bg: rgba(74, 222, 128, .1);--free-border: rgba(74, 222, 128, .2);--busy: #f87171;--busy-bg: rgba(248, 113, 113, .1);--busy-border: rgba(248, 113, 113, .2);--text: #fafafa;--text-secondary: #a1a1aa;--border: #27272a;--ring: #52525b;--shadow-sm: 0 1px 2px rgba(0,0,0,.3);--shadow-md: 0 1px 3px rgba(0,0,0,.4), 0 1px 2px rgba(0,0,0,.3);--shadow-lg: 0 4px 6px rgba(0,0,0,.4), 0 2px 4px rgba(0,0,0,.3);--sidebar-bg: #0f0f11;--content-bg: #09090b}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh}#root{min-height:100vh}.app-layout{display:flex;min-height:100vh}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);background:var(--sidebar-bg);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:100;transition:width .2s var(--ease),transform .25s var(--ease);overflow:hidden}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:20px 16px 16px;gap:8px}.sidebar-logo{font-size:1.15rem;font-weight:800;color:var(--accent);letter-spacing:-.03em;white-space:nowrap;overflow:hidden;transition:opacity .15s var(--ease)}.sidebar-close{display:none;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease)}.sidebar-close:hover{background:var(--primary-light)}.sidebar-collapse-btn{display:flex;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:var(--radius-sm);flex-shrink:0;transition:background var(--duration) var(--ease)}.sidebar-collapse-btn:hover{background:var(--primary-light);color:var(--text)}.sidebar-nav{flex:1;padding:4px 8px;display:flex;flex-direction:column;gap:2px}.sidebar-nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;font-family:inherit;text-align:left;transition:all var(--duration) var(--ease)}.sidebar-nav-item:hover{background:var(--primary-light);color:var(--text)}.sidebar-nav-item.active{background:var(--primary-light);color:var(--text);font-weight:600}.sidebar-footer{padding:16px 12px;border-top:1px solid var(--border)}.sidebar-user{padding:8px 10px 14px;font-size:.95rem;font-weight:700;color:var(--text)}.sidebar-actions{display:flex;flex-direction:column;gap:4px}.sidebar-action-btn{display:flex;align-items:center;gap:12px;padding:11px 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:.88rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.sidebar-action-btn:hover{background:var(--primary-light);color:var(--text)}.sidebar-action-btn.logout{color:var(--busy)}.sidebar-action-btn.logout:hover{background:var(--busy-bg);color:var(--busy)}.sidebar-action-btn .flag-icon{font-size:1.15rem;line-height:1}.nav-label,.action-label{white-space:nowrap;overflow:hidden;transition:opacity .15s var(--ease)}@media(min-width:769px){.sidebar.collapsed{width:var(--sidebar-collapsed-width)}.sidebar.collapsed .sidebar-logo,.sidebar.collapsed .nav-label,.sidebar.collapsed .action-label,.sidebar.collapsed .sidebar-user{opacity:0;width:0;overflow:hidden}.sidebar.collapsed .sidebar-header{justify-content:center;padding:20px 8px 16px}.sidebar.collapsed .sidebar-nav{padding:4px 6px}.sidebar.collapsed .sidebar-nav-item{justify-content:center;padding:10px;gap:0}.sidebar.collapsed .sidebar-footer{padding:8px 6px}.sidebar.collapsed .sidebar-actions{align-items:center}.sidebar.collapsed .sidebar-suggestion{width:100%;margin-bottom:0;padding-top:0}.sidebar.collapsed .sidebar-suggestion .suggestion-cta{width:34px;min-height:34px;justify-content:center;padding:0;margin:0 auto;gap:0}.sidebar.collapsed .sidebar-suggestion .suggestion-cta span{display:none}.sidebar.collapsed .sidebar-action-btn{justify-content:center;padding:7px;gap:0}.sidebar-collapsed .main-content{margin-left:var(--sidebar-collapsed-width)}}.main-content{flex:1;margin-left:var(--sidebar-width);min-width:0;min-height:100vh;background:var(--content-bg);transition:margin-left .2s var(--ease)}.page-content{width:100%;max-width:680px;margin:0 auto;padding:24px 20px 40px;min-width:0;box-sizing:border-box}.page-content-wide{max-width:1180px}.page-content-main{max-width:1320px}.mobile-header{display:none;align-items:center;justify-content:space-between;padding:calc(12px + var(--safe-area-top)) max(16px,var(--safe-area-right)) 12px max(16px,var(--safe-area-left));min-height:calc(56px + var(--safe-area-top));border-bottom:1px solid var(--border);background:var(--content-bg);position:sticky;top:0;z-index:50}.mobile-logo{font-size:1.1rem;font-weight:800;color:var(--accent)}.menu-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text);cursor:pointer;width:44px;height:44px;padding:0;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease);-webkit-tap-highlight-color:transparent;touch-action:manipulation}.menu-btn:hover{background:var(--primary-light)}.sidebar-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:99;animation:fade-in .15s var(--ease)}@media(max-width:768px){.sidebar{transform:translate(-100%);width:var(--sidebar-width);padding-top:var(--safe-area-top)}.sidebar.collapsed{width:var(--sidebar-width)}.sidebar.open{transform:translate(0)}.sidebar-close{display:flex}.sidebar-collapse-btn{display:none}.sidebar-overlay{display:block}.main-content,.sidebar-collapsed .main-content{margin-left:0}.mobile-header{display:flex}.page-content{padding:16px max(12px,var(--safe-area-right)) calc(40px + var(--safe-area-bottom)) max(12px,var(--safe-area-left))}.sidebar-suggestion{margin:0}.sidebar-suggestion .suggestion-cta{width:100%;min-height:44px;justify-content:flex-start;padding:0 12px;gap:12px;border-radius:var(--radius-sm);background:transparent;color:var(--busy);font-size:.88rem;font-weight:500;box-shadow:none}.sidebar-suggestion .suggestion-cta:hover,.sidebar-suggestion .suggestion-cta:active{background:var(--busy-bg);color:var(--busy);transform:none;box-shadow:none}.sidebar-suggestion .suggestion-cta svg{width:18px;height:18px}}.loading-screen{text-align:center;color:var(--text-secondary);padding:80px 20px;font-size:.9rem}.loading-inline{text-align:center;color:var(--text-secondary);padding:40px 20px;font-size:.9rem}.main-greeting{text-align:center;padding:16px 0 20px}.main-greeting h2{font-size:1.4rem;font-weight:800;color:var(--text)}.main-dashboard-grid{display:grid;grid-template-columns:1fr;gap:12px;align-items:start}.main-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.main-card-head .section-title{margin-bottom:0}.main-card-controls{display:inline-flex;align-items:center;gap:5px;flex-shrink:0}.main-card-date{flex-shrink:0;padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.76rem;font-weight:700;line-height:1.2;background:var(--bg-subtle)}button.main-card-date,.main-card-step{cursor:pointer;font-family:inherit;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),color var(--duration) var(--ease)}button.main-card-date.active{color:var(--accent);border-color:var(--accent-border);background:var(--accent-light)}button.main-card-date:hover,.main-card-step:hover{border-color:var(--ring);color:var(--text)}.main-card-step{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle);color:var(--text-secondary)}.main-compact-loading{padding:20px 12px}.main-inline-error{display:flex;align-items:center;justify-content:center;gap:6px;min-height:52px;border:1px solid var(--busy-border);border-radius:var(--radius-sm);color:var(--busy);background:var(--busy-bg);font-size:.86rem;font-weight:700}.main-meal-list{display:grid;gap:8px}.main-meal-panel{display:grid;gap:5px;padding:11px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle)}.main-meal-name{color:var(--accent);font-size:.82rem;font-weight:800}.main-meal-menu{color:var(--text);font-size:.86rem;line-height:1.55;word-break:keep-all}.main-academic-list{max-height:430px;overflow:auto;padding-right:2px}.main-academic-day{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid var(--border)}.main-academic-day:first-child{border-top:0;padding-top:0}.main-academic-day.today{padding-inline:8px;border:1px solid var(--accent-border);border-radius:var(--radius-sm);background:var(--accent-light)}.main-academic-date{display:flex;flex-direction:column;gap:5px;color:var(--text);font-size:.82rem}.main-academic-date strong{font-weight:800}.main-academic-date span{width:fit-content;padding:2px 6px;border-radius:999px;background:var(--accent);color:var(--primary-fg);font-size:.68rem;font-weight:800}.main-academic-day ul{display:grid;gap:4px;list-style:none;min-width:0}.main-academic-day li{position:relative;padding-left:10px;color:var(--text);font-size:.86rem;line-height:1.45;word-break:keep-all}.main-academic-day li:before{content:"";position:absolute;left:0;top:.68em;width:4px;height:4px;border-radius:50%;background:var(--text-secondary)}@media(min-width:1024px){.main-dashboard-grid{grid-template-columns:minmax(600px,1.45fr) minmax(340px,.85fr);grid-template-areas:"timetable meal" "timetable academic";gap:16px}.main-timetable-card{grid-area:timetable;display:flex;flex-direction:column}.main-timetable-card:has(.compact-timetable){align-self:stretch}.main-meal-card{grid-area:meal}.main-academic-card{grid-area:academic}.main-timetable-card,.main-meal-card,.main-academic-card{margin-bottom:0}.main-timetable-card .compact-timetable{flex:1;display:flex}.main-timetable-card .timetable-grid{height:100%}.main-timetable-card .timetable-grid tbody tr{height:calc(100% / 7)}.main-timetable-card .no-class-msg,.main-timetable-card .loading-inline{flex:1;display:flex;align-items:center;justify-content:center}.main-greeting{padding-bottom:24px}}@media(max-width:640px){.main-card-head{align-items:stretch;flex-direction:column}.main-card-controls{width:100%}.main-card-date{flex:1;text-align:center}}.card{width:100%;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:12px;min-width:0;box-sizing:border-box}.section-title{font-size:.95rem;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:8px;color:var(--text)}.now-card{text-align:center;padding:20px 16px;background:var(--accent-light);border-color:var(--accent-border)}.now-card .slot-label{font-size:1.35rem;font-weight:800;color:var(--accent);letter-spacing:-.01em}.now-card .slot-detail{color:var(--text-secondary);font-size:.82rem;margin-top:4px}.time-selector-card{padding:14px 16px}.time-selector-header{display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity var(--duration) var(--ease)}.time-selector-header:hover{opacity:.7}.time-selector-title{font-size:.9rem;font-weight:600;display:flex;align-items:center;gap:8px}.time-selector-badge{font-size:.72rem;font-weight:600;background:var(--accent-light);color:var(--accent);padding:2px 10px;border-radius:999px;border:1px solid var(--accent-border)}.time-selector-header .arrow{color:var(--text-secondary);font-size:.7rem;transition:transform .2s var(--ease)}.time-selector-header .arrow.open{transform:rotate(180deg)}.time-selector-body{margin-top:12px;animation:slide-down .2s var(--ease)}.time-reset-btn{display:flex;align-items:center;gap:4px;background:var(--primary-light);color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 10px;font-size:.75rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.time-reset-btn:hover{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}.day-selector{display:flex;justify-content:center;gap:4px;margin-bottom:8px}.day-btn{flex:1;padding:7px 0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-secondary);font-size:.85rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.day-btn:hover{border-color:var(--ring);color:var(--text)}.day-btn.active{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}.period-selector{display:flex;flex-wrap:wrap;justify-content:center;gap:4px}.period-btn{width:36px;height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-secondary);font-size:.82rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.period-btn:hover{border-color:var(--ring);color:var(--text)}.period-btn.active{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}.selected-time-indicator{margin-top:10px;text-align:center;font-size:.85rem;font-weight:600;color:var(--accent);display:flex;align-items:center;justify-content:center;gap:8px}.search-card{display:flex;gap:8px;overflow:hidden}.search-card input{flex:1;min-width:0;border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;font-size:.875rem;outline:none;font-family:inherit;background:var(--bg);color:var(--text);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.search-card input:focus{border-color:var(--ring);box-shadow:0 0 0 2px var(--primary-glow)}.search-card button{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--primary);color:var(--primary-fg);border:none;border-radius:var(--radius-sm);padding:9px 16px;font-size:.875rem;font-weight:500;cursor:pointer;font-family:inherit;white-space:nowrap;flex-shrink:0;transition:background var(--duration) var(--ease)}.search-card button:hover{background:var(--primary-hover)}.search-card button:active{background:var(--primary)}.class-search{align-items:center;gap:10px}.class-search input{border:none;padding:8px 0;background:transparent;font-size:.875rem}.class-search input:focus{border:none;box-shadow:none;background:transparent}.search-icon-static{color:var(--text-secondary);flex-shrink:0}.result-card{transition:box-shadow var(--duration) var(--ease)}.result-card:hover{box-shadow:var(--shadow-md)}.result-card.free{border-left:3px solid var(--free)}.result-card.busy{border-left:3px solid var(--busy)}.result-header{display:flex;justify-content:space-between;align-items:flex-start}.result-name{font-size:1rem;font-weight:600}.result-id{color:var(--text-secondary);font-size:.82rem}.result-count{text-align:center;color:var(--text-secondary);font-size:.82rem;padding:4px 0 0}.room-page-header p{margin-top:6px;color:var(--text-secondary);font-size:.9rem}.room-search-card button:disabled{opacity:.8;cursor:progress}.room-free-card{padding:14px 16px}.room-free-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.room-free-card .section-title{margin-bottom:6px}.room-free-slot{color:var(--accent);font-size:.92rem;font-weight:700}.room-free-slot-detail{display:block;margin-top:4px;color:var(--text-secondary);font-size:.8rem;font-weight:500}.room-free-count{margin:0}.room-inline-loading{padding:8px 0}.room-free-list{display:flex;flex-wrap:wrap;gap:8px}.room-free-btn{display:inline-flex;align-items:center;gap:6px;background:var(--free-bg);color:var(--free);border:1px solid var(--free-border);border-radius:var(--radius-sm);padding:8px 12px;font-size:.82rem;font-weight:600;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.room-free-btn:hover{background:var(--free-border);color:var(--free)}.room-match-card{padding:14px 16px}.room-match-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.room-match-note{color:var(--text-secondary);font-size:.82rem}.room-match-list{display:flex;flex-wrap:wrap;gap:8px}.room-match-btn{display:inline-flex;align-items:center;gap:6px;background:var(--primary-light);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;font-size:.82rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.room-match-btn:hover{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}.room-status-card.free{border-left:3px solid var(--free)}.room-status-card.busy{border-left:3px solid var(--busy)}.room-status-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.room-name{font-size:1.25rem;font-weight:800;color:var(--text)}.room-status-slot{display:flex;align-items:center;gap:6px;margin-top:8px;color:var(--text-secondary);font-size:.82rem;font-weight:600}.room-status-card .slot-detail{margin-top:4px;color:var(--accent);font-size:1rem;font-weight:700}.room-status-detail{margin-top:4px;color:var(--text-secondary);font-size:.82rem}.room-status-body{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.room-class-list{display:grid;gap:10px}.room-class-item{background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px}.room-class-name{font-size:.95rem;font-weight:700;color:var(--text)}.room-class-name-en{margin-top:2px;color:var(--text-secondary);font-size:.76rem}.room-class-detail{margin-top:8px}.room-empty-state{padding:6px 0 0;text-align:left}.status-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:500;margin:8px 0 4px}.status-badge.free{background:var(--free-bg);color:var(--free);border:1px solid var(--free-border)}.status-badge.busy{background:var(--busy-bg);color:var(--busy);border:1px solid var(--busy-border)}.class-detail{margin-top:8px;font-size:.85rem;display:grid;grid-template-columns:auto 1fr;gap:2px 12px}.class-detail dt{color:var(--text-secondary);font-weight:500}.timetable-btn{background:var(--primary-light);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px 12px;font-size:.78rem;font-weight:500;cursor:pointer;font-family:inherit;flex-shrink:0;transition:all var(--duration) var(--ease)}.timetable-btn:hover{background:var(--primary);color:var(--primary-fg);border-color:var(--primary)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px;animation:fade-in .15s var(--ease)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg);border:1px solid var(--border);border-radius:16px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;padding:24px;box-shadow:var(--shadow-lg);animation:modal-in .2s var(--ease)}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-header h2{font-size:1.05rem;font-weight:600}.modal-stu-id{color:var(--text-secondary);font-size:.82rem;font-weight:400}.modal-close{background:none;border:none;cursor:pointer;color:var(--text-secondary);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.modal-close:hover{background:var(--primary-light);color:var(--text)}.suggestion-cta-wrap{width:100%;max-width:680px;margin:-12px auto 48px;padding:0 20px;box-sizing:border-box}.page-content-wide+.suggestion-cta-wrap{max-width:1180px}.suggestion-cta{width:100%;min-height:64px;display:flex;align-items:center;justify-content:center;gap:10px;border:none;border-radius:var(--radius-sm);background:#dc2626;color:#fff;font-family:inherit;font-size:1.05rem;font-weight:800;cursor:pointer;box-shadow:0 10px 22px #dc262638;transition:transform var(--duration) var(--ease),background var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.suggestion-cta:hover{background:#b91c1c;box-shadow:0 12px 28px #dc262647;transform:translateY(-1px)}.suggestion-cta:active{transform:translateY(0)}.sidebar-suggestion{max-width:none;margin:0;padding:0}.sidebar-nav .sidebar-suggestion{margin-top:auto;padding-top:10px}.sidebar-suggestion .suggestion-cta{min-height:40px;justify-content:flex-start;padding:0 12px;gap:12px;border-radius:var(--radius-sm);background:transparent;color:var(--busy);font-size:.875rem;font-weight:500;box-shadow:none}.sidebar-suggestion .suggestion-cta:hover,.sidebar-suggestion .suggestion-cta:active{background:var(--busy-bg);color:var(--busy);transform:none;box-shadow:none}.sidebar-suggestion .suggestion-cta svg{width:18px;height:18px}.suggestion-modal{max-width:520px}.suggestion-form{display:grid;gap:14px}.suggestion-requester{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle);font-size:.86rem}.suggestion-requester span{color:var(--text-secondary);font-weight:600}.suggestion-requester strong{color:var(--text);font-weight:700;text-align:right;overflow-wrap:anywhere}.suggestion-field{display:grid;gap:7px;color:var(--text);font-size:.88rem;font-weight:700}.suggestion-field textarea,.suggestion-field input{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit;font-weight:500;outline:none;transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.suggestion-field textarea{min-height:150px;resize:vertical;padding:11px 12px}.suggestion-field input{min-width:0;padding:10px 12px}.suggestion-field textarea:focus,.suggestion-field input:focus{border-color:var(--ring);box-shadow:0 0 0 2px var(--primary-glow)}.suggestion-bot-row{display:grid;grid-template-columns:minmax(112px,auto) 1fr 40px;gap:8px;align-items:center}.suggestion-question{min-height:40px;display:flex;align-items:center;justify-content:center;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--primary-light);color:var(--text);font-weight:800;white-space:nowrap}.suggestion-refresh{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease)}.suggestion-refresh:hover:not(:disabled){background:var(--primary-light);color:var(--text)}.suggestion-refresh:disabled{opacity:.55;cursor:progress}.suggestion-status{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px 12px;border-radius:var(--radius-sm);font-size:.86rem;font-weight:700;text-align:center}.suggestion-status.success{color:var(--free);background:var(--free-bg);border:1px solid var(--free-border)}.suggestion-status.error{color:var(--busy);background:var(--busy-bg);border:1px solid var(--busy-border)}.suggestion-submit{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--radius-sm);background:var(--primary);color:var(--primary-fg);font-family:inherit;font-size:.94rem;font-weight:800;cursor:pointer;transition:background var(--duration) var(--ease),opacity var(--duration) var(--ease)}.suggestion-submit:hover:not(:disabled){background:var(--primary-hover)}.suggestion-submit:disabled{opacity:.7;cursor:progress}.timetable-grid-wrapper{width:100%;max-width:100%;overflow-x:auto;border-radius:var(--radius-sm)}.timetable-grid{width:100%;border-collapse:collapse;font-size:.78rem;border:1px solid var(--border);border-radius:var(--radius-sm)}.timetable-grid th,.timetable-grid td{border:1px solid var(--border);padding:8px 4px;text-align:center;min-width:80px}.timetable-grid th{background:var(--primary-light);color:var(--text);font-weight:600;padding:10px 4px}.period-label{font-weight:600;color:var(--text-secondary);white-space:nowrap;min-width:30px!important;width:30px;background:var(--bg-subtle)}.has-class{background:var(--accent-light)}.free-cell{background:var(--free-bg)}.cell-subject{font-weight:600;font-size:.76rem;word-break:keep-all}.cell-detail{color:var(--text-secondary);font-size:.68rem}.cell-free{color:var(--free);font-size:.72rem;font-weight:500}.room-timetable-grid td{vertical-align:top}.room-slot-stack{display:grid;gap:6px}.room-slot-entry{display:grid;gap:2px}.room-slot-stack.multi .room-slot-entry+.room-slot-entry{border-top:1px dashed var(--accent-border);padding-top:6px}.compact-timetable .timetable-grid{table-layout:fixed}.compact-timetable .timetable-grid th,.compact-timetable .timetable-grid td{min-width:0;overflow-wrap:break-word}@media(max-width:768px){.compact-timetable .timetable-grid{width:max-content;min-width:520px;font-size:.76rem}.compact-timetable .timetable-grid th,.compact-timetable .timetable-grid td{padding:7px 4px;min-width:82px;word-break:keep-all}.compact-timetable .timetable-grid th{padding:9px 4px;font-size:.74rem}.compact-timetable .period-label{width:30px;min-width:30px!important;font-size:.74rem;word-break:normal}.compact-timetable .cell-subject{font-size:.73rem;line-height:1.3}.compact-timetable .cell-detail{font-size:.64rem;line-height:1.2}.compact-timetable .cell-free{font-size:.68rem}.room-timetable-grid,.modal-content .timetable-grid{width:max-content;min-width:520px}.room-timetable-grid th,.room-timetable-grid td,.modal-content .timetable-grid th,.modal-content .timetable-grid td{min-width:82px}.search-card:not(.class-search){flex-direction:column}.search-card:not(.class-search) button{width:100%}.room-match-header,.room-free-header,.room-status-head{flex-direction:column;align-items:flex-start}.room-free-list,.room-match-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.room-free-btn,.room-match-btn{justify-content:center}.suggestion-cta-wrap{margin:-12px auto 36px;padding:0 16px max(0px,var(--safe-area-bottom))}.suggestion-cta{min-height:58px;font-size:.98rem}.suggestion-requester{align-items:flex-start;flex-direction:column}.suggestion-requester strong{text-align:left}.suggestion-bot-row{grid-template-columns:1fr 40px}.suggestion-question{grid-column:1 / -1;justify-content:flex-start}}.free-section .section-title{font-size:.95rem;font-weight:600;margin-bottom:4px}.free-section .grade-header,.grade-header{display:flex;justify-content:space-between;align-items:center;cursor:pointer;padding:10px 0;-webkit-user-select:none;user-select:none;transition:opacity var(--duration) var(--ease)}.free-section .grade-header:hover,.grade-header:hover{opacity:.7}.free-section .grade-header h3,.grade-header h3{font-size:.9rem;font-weight:600}.free-section .grade-header .count,.grade-header .count{background:var(--primary-light);color:var(--text-secondary);font-size:.78rem;font-weight:500;padding:2px 10px;border-radius:999px;border:1px solid var(--border)}.free-section .grade-header .arrow,.grade-header .arrow{color:var(--text-secondary);font-size:.7rem;transition:transform .2s var(--ease)}.free-section .grade-header .arrow.open,.grade-header .arrow.open{transform:rotate(180deg)}.free-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:4px;padding-bottom:8px;animation:slide-down .2s var(--ease)}@keyframes slide-down{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.free-list li{background:var(--free-bg);color:var(--free);padding:5px 10px;border-radius:var(--radius-sm);font-size:.82rem;font-weight:500;border:1px solid var(--free-border);cursor:pointer;transition:background var(--duration) var(--ease)}.free-list li:hover{background:var(--free-border)}.free-list li .stu-id{color:var(--text-secondary);font-weight:400;font-size:.72rem}.error-msg{color:var(--busy);font-size:.85rem;text-align:center;padding:10px 16px;background:var(--busy-bg);border:1px solid var(--busy-border);border-radius:var(--radius-sm);margin-bottom:12px;white-space:pre-wrap}.no-class-msg{text-align:center;color:var(--text-secondary);padding:12px;font-size:.875rem}.divider{border:none;border-top:1px solid var(--border);margin:0}.icon-inline{display:inline-block;vertical-align:-.15em;flex-shrink:0}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.icon-spin{animation:spin 1.2s linear infinite}.class-card{padding:0;overflow:hidden}.class-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--duration) var(--ease)}.class-header:hover{background:var(--primary-light)}.class-header-left{display:flex;align-items:center;gap:10px;min-width:0}.class-name{font-size:.9rem;font-weight:600}.class-name-en{font-size:.75rem;color:var(--text-secondary);margin-top:1px}.class-count{flex-shrink:0;font-size:.78rem;font-weight:500;color:var(--text-secondary);display:flex;align-items:center;gap:4px}.class-sections{border-top:1px solid var(--border);animation:slide-down .2s var(--ease)}.class-section{padding:12px 16px}.class-section+.class-section{border-top:1px dashed var(--border)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:8px}.section-name{font-size:.85rem;font-weight:600;color:var(--accent)}.section-info{display:flex;gap:12px;font-size:.75rem;color:var(--text-secondary)}.section-students{display:flex;flex-wrap:wrap;gap:5px}.student-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.student-chip:hover{filter:brightness(.95);box-shadow:var(--shadow-sm)}.student-chip-id{font-weight:400;font-size:.7rem;opacity:.65}.teacher-match-card,.teacher-profile-card{display:grid;gap:12px}.teacher-match-header,.teacher-profile-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.teacher-match-help,.teacher-profile-subtitle{color:var(--text-secondary);font-size:.82rem}.teacher-match-list,.teacher-subject-list{display:flex;flex-wrap:wrap;gap:8px}.teacher-match-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle);color:var(--text);cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.teacher-match-btn:hover{background:var(--primary-light);border-color:var(--accent-border)}.teacher-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.teacher-info-item{padding:12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-subtle)}.teacher-info-item dt{color:var(--text-secondary);font-size:.76rem;font-weight:600}.teacher-info-item dd{margin-top:4px;color:var(--text);font-size:.92rem;font-weight:600;word-break:break-word}.teacher-subject-section{display:grid;gap:8px}.teacher-subject-title{font-size:.82rem;font-weight:700;color:var(--text-secondary)}.teacher-subject-chip{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:var(--accent-light);border:1px solid var(--accent-border);color:var(--accent);font-size:.8rem;font-weight:600}.teacher-empty-msg{padding:4px 0 0}.teacher-timetable-grid td{vertical-align:top}.dorm-match-card,.dorm-summary-card,.dorm-floor-card{display:grid;gap:12px}.dorm-match-header,.dorm-summary-head,.dorm-floor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dorm-match-help,.dorm-floor-hint{color:var(--text-secondary);font-size:.82rem}.dorm-match-list{display:grid;gap:8px}.dorm-match-btn{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle);color:var(--text);padding:10px 12px;cursor:pointer;font-family:inherit;text-align:left;transition:all var(--duration) var(--ease)}.dorm-match-btn:hover{background:var(--primary-light);border-color:var(--accent-border)}.dorm-match-name{font-size:.9rem;font-weight:700}.dorm-match-meta{margin-top:4px;color:var(--text-secondary);font-size:.78rem}.dorm-room-badge{margin:0}.dorm-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.dorm-summary-item{padding:12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-subtle)}.dorm-summary-item dt{color:var(--text-secondary);font-size:.76rem;font-weight:600}.dorm-summary-item dd{margin-top:4px;color:var(--text);font-size:.94rem;font-weight:700;word-break:break-word}.dorm-layout-scroll{overflow:auto;border-radius:calc(var(--radius) - 2px);background:var(--bg-subtle)}.dorm-layout-paper{min-width:720px;padding:12px;background:var(--card)}.dorm-layout-grid{display:grid;min-width:720px;background:#fff}.dorm-layout-cell{background:transparent;border:1px solid transparent}.dorm-layout-cell.highlighted{background:#6d5cff26;border-color:var(--accent)}.dorm-photo-wrap{display:grid;gap:10px}.dorm-photo-meta{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 2px}.dorm-photo-title{color:var(--text);font-size:1rem;font-weight:800}.dorm-photo-subtitle{color:var(--text-secondary);font-size:.8rem;font-weight:600}.dorm-photo-stage{position:relative;width:100%;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:#fff;box-shadow:var(--shadow-sm)}.dorm-photo-image{display:block;width:100%;height:auto}.dorm-photo-highlight{position:absolute;border:3px solid var(--accent);border-radius:8px;background:#6d5cff1f;box-shadow:0 0 0 9999px #ffffff24;pointer-events:none}.shared-free-search-card{display:grid;gap:12px}.shared-free-search-card textarea{width:100%;min-height:120px;resize:vertical;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;font-size:.9rem;line-height:1.5;outline:none;font-family:inherit;background:var(--bg);color:var(--text);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.shared-free-search-card textarea:focus{border-color:var(--ring);box-shadow:0 0 0 2px var(--primary-glow)}.shared-free-form-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.shared-free-form-hint{color:var(--text-secondary);font-size:.8rem}.shared-free-message-list{display:grid;gap:6px}.shared-free-inline-message{margin:0}.shared-free-selection-card,.shared-free-summary-card,.shared-free-pending-card{display:grid;gap:12px}.shared-free-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.shared-free-section-actions{display:flex;align-items:center;gap:8px}.shared-free-count-badge{margin:0;flex-shrink:0}.shared-free-clear-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-secondary);padding:6px 10px;font-size:.8rem;font-weight:600;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.shared-free-clear-btn:hover{border-color:var(--busy);color:var(--busy);background:var(--busy-bg)}.shared-free-chip-list{display:flex;flex-wrap:wrap;gap:8px}.shared-free-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 8px 6px 10px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:999px}.shared-free-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:999px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.shared-free-chip-remove:hover{background:var(--primary-light);color:var(--text)}.shared-free-pending-list{display:grid;gap:10px}.shared-free-pending-item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle);padding:12px}.shared-free-pending-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.shared-free-pending-token{font-size:.92rem;font-weight:700;color:var(--text)}.shared-free-pending-help{margin-top:3px;color:var(--text-secondary);font-size:.78rem}.shared-free-candidate-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.shared-free-candidate-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);padding:7px 10px;cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.shared-free-candidate-btn:hover{border-color:var(--primary);background:var(--primary-light)}.shared-free-slot-list{display:flex;flex-wrap:wrap;gap:8px}.shared-free-slot-chip{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;background:var(--free-bg);border:1px solid var(--free-border);color:var(--free);font-size:.8rem;font-weight:600}.shared-free-empty-slots{padding:2px 0 0}.shared-free-grid-card{max-width:680px;margin-left:auto;margin-right:auto}.shared-free-grid td{vertical-align:top}.shared-free-grid{table-layout:fixed}.shared-free-grid th,.shared-free-grid td{min-width:0;padding:6px 4px}.shared-free-cell{background:linear-gradient(180deg,var(--free-bg) 0%,color-mix(in srgb,var(--free-bg) 70%,var(--bg) 30%) 100%)}.shared-free-badge{display:flex;align-items:center;justify-content:center}.shared-cell-stack{display:grid;gap:5px}.shared-student-block{display:grid;gap:3px;padding:5px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--bg-subtle) 72%,var(--accent-light) 28%);border:1px solid var(--border)}.shared-student-link{display:inline-flex;align-items:center;gap:6px;width:fit-content;border:none;padding:0;background:transparent;color:var(--text);cursor:pointer;font-size:.76rem;font-weight:700;font-family:inherit;text-align:left}.shared-student-link:hover{color:var(--accent)}.shared-student-id{color:var(--text-secondary);font-size:.66rem;font-weight:500}.shared-free-inline{color:var(--free);font-size:.74rem;font-weight:600;text-align:left}.seminar-control-card,.seminar-reserve-card{display:grid;gap:14px;padding:18px;margin-bottom:16px}.seminar-control-main,.seminar-grid-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.seminar-control-title .section-title{margin-bottom:5px}.seminar-sheet-name,.seminar-selected-slot{color:var(--text-secondary);font-size:.82rem;font-weight:600}.seminar-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}.seminar-status-badge{margin:0;flex-shrink:0}.seminar-summary-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle);padding:10px}.seminar-summary-item{display:grid;gap:4px;min-width:0}.seminar-summary-item span{color:var(--text-secondary);font-size:.72rem;font-weight:600}.seminar-summary-item strong{color:var(--text);font-size:.9rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seminar-sheet-link{min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--primary);color:var(--primary-fg);padding:7px 11px;text-decoration:none;font-size:.82rem;font-weight:700;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease)}.seminar-sheet-link:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.seminar-grid-card{display:grid;gap:16px;padding:18px;margin-bottom:16px}.seminar-grid{width:100%;min-width:820px;table-layout:fixed;border-collapse:collapse;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.78rem}.seminar-grid th,.seminar-grid td{border:1px solid var(--border);padding:6px;text-align:center;vertical-align:middle}.seminar-grid th{background:var(--primary-light);color:var(--text);font-weight:800}.seminar-grid th:first-child{width:124px}.seminar-grid th span,.seminar-grid th small,.seminar-time-cell strong,.seminar-time-cell span{display:block}.seminar-grid th small{margin-top:3px;color:var(--text-secondary);font-size:.66rem;font-weight:600;line-height:1.25}.seminar-time-cell{background:var(--bg-subtle)}.seminar-time-cell strong{color:var(--text);font-size:.76rem}.seminar-time-cell span{margin-top:3px;color:var(--text-secondary);font-size:.72rem}.seminar-cell{min-height:48px;background:var(--bg)}.seminar-cell.available{background:var(--free-bg)}.seminar-cell.reserved{background:var(--accent-light)}.seminar-cell.blocked{background:var(--bg-subtle);color:var(--text-secondary)}.seminar-cell.selected{box-shadow:inset 0 0 0 2px var(--primary)}.seminar-row-current>td{border-top:3px solid #ef3b2d}.seminar-row-current .seminar-time-cell strong{color:#ef3b2d}.seminar-slot-btn{width:100%;min-height:34px;border:1px solid var(--free-border);border-radius:var(--radius-sm);background:var(--free-bg);color:var(--free);font-family:inherit;font-size:.76rem;font-weight:800;cursor:pointer;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease)}.seminar-slot-btn:hover:not(:disabled){background:var(--free-border)}.seminar-slot-btn:disabled{opacity:.55;cursor:not-allowed}.seminar-cell-value{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.3;font-weight:700}.seminar-reserve-card input{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit;font-weight:600;outline:none;padding:10px 12px;transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.seminar-reserve-card input:focus{border-color:var(--ring);box-shadow:0 0 0 2px var(--primary-glow)}.seminar-direct-note{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle);color:var(--text-secondary);padding:10px 12px;font-size:.84rem;font-weight:600;line-height:1.45}.guestbook-write-card,.guestbook-list-card{display:grid;gap:14px;padding:18px;margin-bottom:16px}.guestbook-write-head{gap:12px}.guestbook-collapse-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-secondary);cursor:pointer;transition:background var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease)}.guestbook-collapse-btn:hover{background:var(--primary-light);color:var(--text);border-color:var(--accent-border)}.guestbook-collapse-icon{transition:transform var(--duration) var(--ease)}.guestbook-collapse-icon.open{transform:rotate(180deg)}.guestbook-write-body{display:grid;gap:14px}.guestbook-form-meta{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:-6px;color:var(--text-secondary);font-size:.78rem;font-weight:600}.guestbook-form-meta strong{color:var(--text);font-weight:800;white-space:nowrap}.guestbook-turnstile{min-height:65px}.guestbook-entry-list{display:grid;gap:10px}.guestbook-entry{display:grid;gap:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-subtle);padding:12px}.guestbook-entry-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.guestbook-entry-head strong{color:var(--text);font-size:.9rem;font-weight:800}.guestbook-entry-head span{color:var(--text-secondary);font-size:.76rem;font-weight:600;white-space:nowrap}.guestbook-entry p{color:var(--text);font-size:.9rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:768px){.teacher-match-header,.teacher-profile-head{flex-direction:column;align-items:stretch}.teacher-match-list,.teacher-subject-list{display:grid}.dorm-match-header,.dorm-summary-head,.dorm-floor-head{flex-direction:column;align-items:stretch}.dorm-summary-grid{grid-template-columns:1fr}.dorm-layout-grid{min-width:max-content}.teacher-match-btn{width:100%;justify-content:space-between}.teacher-info-grid{grid-template-columns:1fr}.page-content-wide{max-width:680px}.shared-free-form-footer,.shared-free-section-head,.shared-free-pending-head{flex-direction:column;align-items:stretch}.shared-free-section-actions{justify-content:space-between}.shared-free-form-footer button,.shared-free-candidate-btn,.shared-free-clear-btn{width:100%;justify-content:center}.shared-free-chip-list,.shared-free-slot-list,.shared-free-candidate-list{display:grid}.shared-free-chip{justify-content:space-between}.seminar-control-main,.seminar-grid-head,.seminar-actions{flex-direction:column;align-items:stretch}.seminar-actions .shared-free-clear-btn,.seminar-sheet-link{width:100%}.seminar-summary-strip{grid-template-columns:1fr}.seminar-grid{min-width:760px}.guestbook-form-meta,.guestbook-entry-head{align-items:flex-start;flex-direction:column}.guestbook-write-head{flex-direction:row;align-items:flex-start;justify-content:space-between}.guestbook-write-head .section-title{margin-bottom:0}.guestbook-collapse-btn{flex-shrink:0}}.login-page{max-width:480px;margin:0 auto;padding:20px 16px 40px;min-height:100vh}.login-card{max-width:380px;margin:0 auto 12px;padding:24px}.login-logo{text-align:center;margin-bottom:16px}.ksain-logo{height:36px;width:auto}.login-guide{text-align:center;color:var(--text-secondary);font-size:.85rem;margin-bottom:20px}.login-contact{text-align:center;color:var(--text-secondary);font-size:.75rem;margin-top:16px}.login-contact a{color:var(--accent);text-decoration:none}.login-contact a:hover{text-decoration:underline}.login-divider{display:flex;align-items:center;margin:16px 0;gap:12px}.login-divider:before,.login-divider:after{content:"";flex:1;border-top:1px solid var(--border)}.login-divider span{color:var(--text-secondary);font-size:.75rem;font-weight:500}.google-btn-wrapper{display:flex;justify-content:center;width:100%;max-width:332px;margin:0 auto 8px}.login-field{margin-bottom:12px}.login-field input{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;font-size:.875rem;outline:none;font-family:inherit;background:var(--bg);color:var(--text);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.login-field input:focus{border-color:var(--ring);box-shadow:0 0 0 2px var(--primary-glow)}.login-field input:disabled{opacity:.6;cursor:not-allowed}.login-checkbox{display:inline-flex;align-items:center;gap:8px;margin:4px 0 12px;color:var(--text-secondary);font-size:.85rem;cursor:pointer}.login-checkbox input{width:16px;height:16px;margin:0;accent-color:var(--primary);cursor:pointer}.login-checkbox input:disabled,.login-checkbox input:disabled+span{cursor:not-allowed;opacity:.6}.legal-checkbox{width:100%;margin:0;align-items:flex-start;line-height:1.45}.legal-checkbox span{min-width:0}.legal-link{border:0;background:transparent;color:var(--accent);padding:0;font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.legal-link:hover{color:var(--text)}.login-submit{width:100%;background:var(--primary);color:var(--primary-fg);border:none;border-radius:var(--radius-sm);padding:10px 20px;font-size:.875rem;font-weight:500;cursor:pointer;font-family:inherit;margin-top:4px;transition:background var(--duration) var(--ease),opacity var(--duration) var(--ease)}.login-submit:hover:not(:disabled){background:var(--primary-hover)}.login-submit:disabled{opacity:.6;cursor:not-allowed}.login-card .error-msg{margin-bottom:12px}.legal-gate-page{min-height:100vh;background:var(--content-bg)}.legal-gate-overlay{align-items:center;cursor:default}.legal-modal{max-width:780px}.legal-consent-modal{display:grid;grid-template-rows:auto minmax(0,1fr) auto;max-height:min(88vh,880px);padding-bottom:0}.legal-effective-date{margin-top:4px;color:var(--text-secondary);font-size:.78rem;font-weight:600}.legal-modal-body{overflow:auto;padding-right:4px}.legal-summary{padding:10px 12px;border:1px solid var(--accent-border);border-radius:var(--radius-sm);background:var(--accent-light);color:var(--text);font-size:.9rem;font-weight:700;line-height:1.55;margin-bottom:14px}.legal-document-block{padding:14px 0 6px;border-top:1px solid var(--border)}.legal-document-block:first-of-type{border-top:0}.legal-document-head{display:grid;gap:5px;padding-bottom:8px}.legal-document-head h3{color:var(--accent);font-size:1.02rem;font-weight:900}.legal-document-head p{color:var(--text-secondary);font-size:.84rem;line-height:1.55}.legal-section{padding:14px 0;border-top:1px solid var(--border)}.legal-section h4{color:var(--text);font-size:.94rem;font-weight:800;margin-bottom:6px}.legal-section-body{display:grid;gap:8px}.legal-section-body p,.legal-contact-note{color:var(--text-secondary);font-size:.86rem;line-height:1.65;word-break:keep-all}.legal-contact-note{padding-top:12px;border-top:1px solid var(--border)}.legal-contact-note a{color:var(--accent);text-decoration:none;font-weight:700}.legal-contact-note a:hover{text-decoration:underline}.legal-consent-actions{display:grid;gap:10px;padding:14px 0 18px;margin-top:12px;border-top:1px solid var(--border);background:var(--card)}.legal-action-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:10px}.legal-decline-btn{width:100%;min-height:40px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-secondary);font:inherit;font-size:.875rem;font-weight:700;cursor:pointer;transition:background var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease)}.legal-decline-btn:hover:not(:disabled){background:var(--busy-bg);color:var(--busy);border-color:var(--busy-border)}.legal-accept-btn{margin-top:0}@media(max-width:640px){.legal-consent-modal{max-height:94vh;width:min(94vw,780px)}.legal-action-row{grid-template-columns:1fr}}.toolbar{display:flex;justify-content:flex-end;align-items:center;gap:6px;padding:4px 0 0}.toolbar-btn{display:flex;align-items:center;gap:5px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px 10px;font-size:.8rem;font-weight:500;color:var(--text-secondary);cursor:pointer;font-family:inherit;transition:all var(--duration) var(--ease)}.toolbar-btn:hover{background:var(--primary-light);color:var(--text)}.toolbar-label{font-size:.75rem}.header{text-align:center;padding:24px 0 16px}.header h1{font-size:1.6rem;font-weight:800;color:var(--accent);letter-spacing:-.02em}.header p{color:var(--text-secondary);font-size:.82rem;margin-top:2px}.site-footer{text-align:center;color:var(--text-secondary);font-size:.72rem;padding:24px 0 8px;margin-top:20px;border-top:1px solid var(--border)}.site-footer p{margin:2px 0}.site-footer a{color:var(--accent);text-decoration:none}.site-footer a:hover{text-decoration:underline}[data-theme=dark] .student-chip:hover{filter:brightness(1.2)}
