@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--color-bg:#fafafa;--color-surface:#fff;--color-border:#e5e5e5;--color-text:#18181b;--color-text-secondary:#71717a;--color-accent:#752123;--color-accent-hover:#5c1a1b;--color-accent-light:#fef1f1;--color-success:#16a34a;--color-error:#dc2626;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 2px 8px #0000000f;--font:"Inter", -apple-system, BlinkMacSystemFont, sans-serif;--spacing:8px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font:400 14px/1.6 var(--font);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-wrap{min-height:100vh;display:flex}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;flex-shrink:0;width:240px;height:100vh;padding:24px 12px;display:flex;position:sticky;top:0}.sidebar-brand{font:700 16px/1.3 var(--font);color:var(--color-accent);letter-spacing:-.01em;padding:0 12px 24px}.sidebar-nav{flex-direction:column;flex:1;gap:2px;display:flex}.sidebar-item{border-radius:var(--radius-md);font:500 13px/1.3 var(--font);color:var(--color-text-secondary);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:10px 12px;transition:all .12s;display:flex}.sidebar-item:hover{background:var(--color-accent-light);color:var(--color-text)}.sidebar-item.active{background:var(--color-accent-light);color:var(--color-accent);font-weight:600}.sidebar-item svg{flex-shrink:0;width:20px;height:20px}.sidebar-footer{border-top:1px solid var(--color-border);margin-top:8px;padding-top:12px}.sidebar-user{border-radius:var(--radius-md);font:500 12px/1.3 var(--font);color:var(--color-text-secondary);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:8px 12px;display:flex}.sidebar-user:hover{background:var(--color-accent-light)}.sidebar-user .avatar{background:var(--color-accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:600;display:flex;overflow:hidden}.sidebar-user .avatar img{object-fit:cover;width:100%;height:100%}.main{flex:1;width:100%;max-width:880px;margin:0 auto;padding:32px 48px 64px}.page-title{font:600 22px/1.3 var(--font);color:var(--color-text);letter-spacing:-.02em;margin-bottom:24px}.filters-row{flex-wrap:wrap;gap:10px;margin-bottom:20px;display:flex}.filter-select{border:1px solid var(--color-border);border-radius:var(--radius-sm);font:400 13px/1.4 var(--font);color:var(--color-text);background:var(--color-surface);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%2371717a' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding:10px 38px 10px 14px;transition:border-color .12s}.filter-select-dept{flex:2;min-width:200px}.filter-select-grade{flex:1;min-width:140px}.filter-select-day{flex:.8;min-width:120px}.filter-select:hover{border-color:#d4d4d8}.filter-select:focus{border-color:var(--color-accent);outline:none;box-shadow:0 0 0 3px #75212314}.filter-select:disabled{opacity:.4;cursor:default}.btn{border-radius:var(--radius-sm);font:500 13px/1 var(--font);cursor:pointer;white-space:nowrap;border:none;justify-content:center;align-items:center;gap:6px;padding:9px 20px;transition:all .12s;display:inline-flex}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover{background:var(--color-accent-hover)}.btn-outline{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text)}.btn-outline:hover{background:#f4f4f5;border-color:#d4d4d8}.btn-ghost{color:var(--color-text-secondary);background:0 0;padding:8px 12px}.btn-ghost:hover{background:#f4f4f5}.card-list{flex-direction:column;gap:6px;display:flex}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color .12s,box-shadow .12s;display:flex;overflow:hidden}.card:hover{box-shadow:var(--shadow-md);border-color:#d4d4d8}.card-time-badge{min-width:88px;font:600 12px/1 var(--font);color:var(--color-accent);background:var(--color-accent-light);letter-spacing:.01em;flex-shrink:0;justify-content:center;align-items:center;padding:12px;display:flex}.card-body{flex-direction:column;flex:1;gap:3px;min-width:0;padding:14px 16px;display:flex}.card-title{font:600 14px/1.4 var(--font);color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card-subtitle{font:400 13px/1.4 var(--font);color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card-room{font:500 12px/1 var(--font);color:var(--color-accent);align-items:center;gap:4px;margin-top:2px;display:flex}.card-room svg{flex-shrink:0;width:14px;height:14px}.empty-state{text-align:center;color:var(--color-text-secondary);padding:64px 16px}.empty-state svg{color:#d4d4d8;margin:0 auto 12px;display:block}.empty-state h3{font:600 16px/1.4 var(--font);color:var(--color-text);margin-bottom:6px}.empty-state p{font:400 14px/1.5 var(--font);max-width:360px;margin:0 auto 16px}.skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg,#f4f4f5 25%,#e4e4e7 50%,#f4f4f5 75%) 0 0/200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{height:62px;margin-bottom:6px}.toast{border-radius:var(--radius-sm);font:500 13px/1.4 var(--font);cursor:pointer;margin-bottom:16px;padding:10px 16px}.toast-success{color:#166534;background:#f0fdf4}.toast-error{color:#991b1b;background:#fef2f2}.overlay{z-index:100;background:#0000004d;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.sheet{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:480px;max-height:80vh;padding:24px;animation:.2s ease-out sheetIn;overflow-y:auto;box-shadow:0 16px 48px #0000001f}@keyframes sheetIn{0%{opacity:0;transform:scale(.96)translateY(8px)}}.sheet h3{font:600 18px/1.3 var(--font);letter-spacing:-.01em;margin-bottom:20px}.sheet-field{border-bottom:1px solid var(--color-border);padding:12px 0}.sheet-field label{font:500 11px/1 var(--font);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px;display:block}.sheet-field .value{font:500 15px/1.4 var(--font)}.sheet-actions{gap:8px;margin-top:20px;display:flex}.sheet-actions .btn{flex:1}.menu-wrap{position:relative}.menu-drop{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);z-index:200;width:250px;animation:.12s ease-out menuIn;position:fixed;bottom:16px;left:16px;overflow:hidden;box-shadow:0 4px 24px #0000001f,0 0 0 1px #0000000a}@keyframes menuIn{0%{opacity:0;transform:translateY(4px)}}.menu-drop-header{border-bottom:1px solid var(--color-border);align-items:center;gap:12px;padding:12px 14px;display:flex}.menu-drop-header .avatar{width:36px;height:36px;font-size:15px}.menu-drop-header .email{font:500 13px/1.3 var(--font);word-break:break-all}.menu-drop-header .sub{font:400 11px/1.3 var(--font);color:var(--color-text-secondary)}.menu-drop-item{font:500 13px/1 var(--font);cursor:pointer;text-align:left;width:100%;color:var(--color-text);background:0 0;border:none;align-items:center;gap:10px;padding:10px 14px;transition:background 80ms;display:flex}.menu-drop-item:hover{background:#f4f4f5}.menu-drop-item svg{width:16px;height:16px;color:var(--color-text-secondary);flex-shrink:0}.menu-divider{background:var(--color-border);height:1px}.menu-drop-footer{padding:6px}@media (width<=768px){.app-wrap{flex-direction:column}.sidebar{border-right:none;border-top:1px solid var(--color-border);z-index:50;flex-direction:row;width:100%;height:auto;padding:0;position:fixed;top:auto;bottom:0}.sidebar-brand{display:none}.sidebar-nav{flex-direction:row;flex:1;justify-content:center;gap:0}.sidebar-item{flex-direction:column;gap:2px;width:auto;padding:6px 12px;font-size:10px}.sidebar-item svg{width:22px;height:22px}.sidebar-footer{display:none}.main{padding:24px 16px 80px}}
