:root{--accent:#752123;--accent-hover:#5c1a1b;--accent-light:#75212314;--accent-subtle:#75212324;--accent-border:#75212338;--bg:#fdf8f7;--surface:#fff;--surface-hover:#f8f2f2;--surface-card:#fff;--border:#e6dad9;--text:#1c1b1b;--text-secondary:#5e5053;--text-tertiary:#8e7c80;--success:#16a34a;--error:#ba1a1a;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-full:9999px;--shadow-sm:0 1px 3px #0000000d, 0 1px 2px #00000008;--shadow-md:0 4px 14px #75212314, 0 2px 4px #00000008;--shadow-lg:0 12px 32px #0000001f, 0 4px 10px #0000000d;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--nav-height:64px}[data-theme=dark]{--accent:#ff8286;--accent-hover:#ff9c9f;--accent-light:#ff828633;--accent-subtle:#ff828647;--accent-border:#ff828661;--bg:#141212;--surface:#1f1c1c;--surface-hover:#2a2626;--surface-card:#221f1f;--border:#383233;--text:#f7f2f2;--text-secondary:#d1c5c7;--text-tertiary:#9c8e90;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 16px #0006;--shadow-lg:0 12px 36px #0009}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{background:var(--bg);width:100%;min-height:100%;color:var(--text);font:400 14px/1.5 var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s,color .2s}.top-bar{color:#fff;height:var(--nav-height);padding:0 max(16px, env(safe-area-inset-right)) 0 max(16px, env(safe-area-inset-left));z-index:100;background:#752123;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #00000026}.top-bar-brand{align-items:center;gap:10px;display:flex}.brand-logo-icon{border-radius:var(--radius-sm);color:#fff;background:#5c1a1b;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.brand-logo-icon svg{width:18px;height:18px}.brand-title{font:700 18px/1.2 var(--font);letter-spacing:-.01em;color:#fff;white-space:nowrap}.user-area{align-items:center;gap:10px;display:flex}.theme-toggle-btn{color:#fff;cursor:pointer;background:#5c1a1b;border:1.5px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;transition:all .2s;display:flex}.theme-toggle-btn:hover{background:#451314;transform:scale(1.05)}.theme-toggle-btn svg{width:18px;height:18px}.avatar-btn{color:#fff;width:38px;height:38px;font:700 14px/1 var(--font);cursor:pointer;background:#5c1a1b;border:1.5px solid #fff;border-radius:50%;justify-content:center;align-items:center;transition:background .15s;display:flex;overflow:hidden}.avatar-btn:hover{background:#451314}.avatar-img{object-fit:cover;width:100%;height:100%}.btn-outlined-on-primary{color:#fff;border-radius:var(--radius-full);font:700 13px/1 var(--font);cursor:pointer;background:#5c1a1b;border:1.5px solid #fff;padding:8px 18px;transition:all .15s}.btn-outlined-on-primary:hover{background:#ffffff26;border-color:#fff}.app-wrap{min-height:calc(100vh - var(--nav-height));width:100%;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);width:250px;top:var(--nav-height);height:calc(100vh - var(--nav-height));z-index:40;flex-direction:column;flex-shrink:0;padding:16px 12px;display:flex;position:sticky}.sidebar-nav{flex-direction:column;flex:1;gap:4px;display:flex}.sidebar-item{border-radius:var(--radius-md);font:500 14px/1.3 var(--font);color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:12px;width:100%;padding:11px 14px;transition:all .15s;display:flex}.sidebar-item:hover{background:var(--surface-hover);color:var(--text)}.sidebar-item.active{background:var(--accent-light);color:var(--accent);font-weight:600}.sidebar-item svg{flex-shrink:0;width:20px;height:20px}.main{flex:1;width:100%;max-width:940px;margin:0 auto;padding:32px 40px 64px}.page-title{font:700 24px/1.2 var(--font);color:var(--text);letter-spacing:-.02em;margin-bottom:20px}.filters-row{flex-wrap:wrap;gap:12px;margin-bottom:20px;display:flex}.filter-select{flex:1;min-width:160px}.day-pills-bar{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;margin-bottom:20px;padding:2px 2px 10px;display:flex;overflow-x:auto}.day-pills-bar::-webkit-scrollbar{display:none}.day-pill{border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font:600 13px/1 var(--font);cursor:pointer;white-space:nowrap;flex-shrink:0;padding:8px 16px;transition:all .15s}.day-pill:hover{background:var(--surface-hover);color:var(--text)}.day-pill.active{color:#fff;background:#752123;border-color:#752123;font-weight:700;box-shadow:0 2px 8px #75212340}.custom-select-container{-webkit-user-select:none;user-select:none;position:relative}.custom-select-trigger{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);width:100%;color:var(--text);font:500 14px/1.4 var(--font);cursor:pointer;box-shadow:var(--shadow-sm);outline:none;justify-content:space-between;align-items:center;gap:8px;min-height:42px;padding:10px 14px;transition:all .15s;display:flex}.custom-select-trigger-content{flex:1;align-items:center;gap:8px;display:flex;overflow:hidden}.custom-select-trigger:hover:not(:disabled){border-color:var(--accent-border);background:var(--surface-hover)}.custom-select-trigger.open,.custom-select-trigger:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.custom-select-trigger:disabled{opacity:.5;cursor:not-allowed}.custom-select-icon{color:var(--accent);flex-shrink:0;align-items:center;display:flex}.custom-select-icon svg{width:18px;height:18px}.custom-select-label{text-overflow:ellipsis;white-space:nowrap;text-align:left;flex:1;overflow:hidden}.custom-select-chevron{color:var(--text-tertiary);flex-shrink:0;align-items:center;transition:transform .2s;display:flex}.custom-select-chevron svg{width:16px;height:16px}.custom-select-chevron.up{transform:rotate(180deg)}.custom-select-dropdown{z-index:200;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);max-height:280px;box-shadow:var(--shadow-lg);padding:6px;animation:.15s selectFadeIn;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}@keyframes selectFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.custom-select-item{border-radius:var(--radius-sm);width:100%;font:400 13.5px/1.4 var(--font);color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;transition:background .1s;display:flex}.custom-select-item:hover{background:var(--surface-hover)}.custom-select-item.selected{background:var(--accent-light);color:var(--accent);font-weight:600}.custom-select-check{color:var(--accent);align-items:center;display:flex}.custom-select-check svg{width:16px;height:16px}.select-sheet-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:400;background:#0000008c;justify-content:center;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.select-sheet{background:var(--surface);padding:16px 20px calc(20px + env(safe-area-inset-bottom));width:100%;max-height:75vh;box-shadow:var(--shadow-lg);border-radius:24px 24px 0 0;flex-direction:column;animation:.25s cubic-bezier(.16,1,.3,1) slideUp;display:flex}.sheet-handle-bar{background:var(--border);border-radius:2px;flex-shrink:0;width:38px;height:4px;margin:0 auto 14px}.select-sheet-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:12px;display:flex}.select-sheet-title{font:600 16px/1.3 var(--font);color:var(--text);align-items:center;gap:8px;display:flex}.btn-close-sheet{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:6px;display:flex}.btn-close-sheet svg{width:20px;height:20px}.select-sheet-list{flex-direction:column;gap:4px;padding-right:2px;display:flex;overflow-y:auto}.select-sheet-item{border-radius:var(--radius-md);font:500 14px/1.4 var(--font);color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;padding:14px 12px;display:flex}.select-sheet-item:active{background:var(--surface-hover)}.select-sheet-item.selected{background:var(--accent-light);color:var(--accent);font-weight:700}.btn{border-radius:var(--radius-md);font:600 14px/1 var(--font);cursor:pointer;white-space:nowrap;border:none;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:10px 20px;transition:all .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);box-shadow:0 2px 8px var(--accent-light)}.btn-outline{background:var(--surface);border:1px solid var(--border);color:var(--text)}.btn-outline:hover{background:var(--surface-hover);border-color:var(--accent-border)}.btn-ghost{color:var(--text-secondary);background:0 0;min-height:36px;padding:8px 12px}.btn-ghost:hover{background:var(--surface-hover);color:var(--text)}.search-input-wrapper{width:100%;margin-bottom:16px;position:relative}.search-input{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:400 15px/1.4 var(--font);box-shadow:var(--shadow-sm);outline:none;padding:12px 42px 12px 16px;transition:all .2s}.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.search-clear-btn{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:6px;display:flex;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.search-clear-btn svg{width:18px;height:18px}.results-count-text{font:500 13px/1 var(--font);color:var(--text-secondary);margin-bottom:16px}.card-list{flex-direction:column;gap:10px;display:flex}.card{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;box-shadow:var(--shadow-sm);align-items:stretch;gap:14px;padding:14px;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex;overflow:hidden}.card:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md);transform:translateY(-1px)}.card:active{transform:scale(.985)}.card-time-badge{background:var(--accent-light);border-radius:var(--radius-md);color:var(--accent);text-align:center;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;min-width:105px;padding:8px 12px;font-weight:700;display:flex}.card-day-name{opacity:.85;text-transform:uppercase;letter-spacing:.02em;margin-bottom:2px;font-size:11px}.card-time-text{letter-spacing:-.01em;font-size:13px;font-weight:700}.card-content{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.card-header-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.card-tags{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tag{border-radius:10px;padding:2px 8px;font-size:11px}.tag-dept{background:var(--accent-light);color:var(--accent);font-weight:700}.tag-sem{background:var(--surface-hover);color:var(--text-secondary);font-weight:600}.bookmark-toggle-btn{border-radius:var(--radius-sm);width:28px;min-width:28px;height:28px;color:var(--accent);background:var(--accent-light);cursor:pointer;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:all .15s;display:flex}.bookmark-toggle-btn svg{width:16px;height:16px}.card-title{font:700 15px/1.35 var(--font);color:var(--text);word-break:break-word}.card-meta{color:var(--text-secondary);justify-content:space-between;align-items:center;gap:10px;margin-top:2px;font-size:12px;display:flex}.card-professor{flex:1;align-items:center;gap:5px;min-width:0;font-weight:500;display:flex;overflow:hidden}.card-professor .meta-icon{color:var(--accent);flex-shrink:0;display:inline-flex}.card-professor .meta-icon svg{width:15px;height:15px}.professor-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.room-badge{color:var(--accent);background:var(--accent-light);border-radius:6px;flex-shrink:0;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.room-badge svg{width:14px;height:14px}.empty-state{text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius-lg);margin-top:12px;padding:48px 16px}.empty-state-icon{background:var(--accent-light);border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin-bottom:16px;display:inline-flex}.empty-state-icon svg{width:28px;height:28px;color:var(--accent)}.empty-state h3{font:600 17px/1.3 var(--font);color:var(--text);margin-bottom:6px}.empty-state p{font:400 14px/1.5 var(--font);color:var(--text-secondary);max-width:360px;margin:0 auto 16px}.toast{border-radius:var(--radius-md);font:600 13px/1.4 var(--font);cursor:pointer;box-shadow:var(--shadow-md);margin-bottom:16px;padding:12px 18px;animation:.2s fadeIn}.toast-success{color:#1b5e20;background:#e8f5e9;border:1px solid #c8e6c9}.toast-error{color:#9b1c1c;background:#fde8e8;border:1px solid #f8b4b4}.overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:300;background:#0000008c;justify-content:center;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.sheet{background:var(--surface);padding:18px 24px calc(24px + env(safe-area-inset-bottom));width:100%;max-width:540px;max-height:85vh;box-shadow:var(--shadow-lg);border-radius:24px 24px 0 0;animation:.25s cubic-bezier(.16,1,.3,1) slideUp;overflow-y:auto}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.sheet-header h3{font:700 18px/1.3 var(--font);color:var(--text);letter-spacing:-.01em}.sheet-body{flex-direction:column;display:flex}.sheet-field{border-bottom:1px solid var(--border);padding:12px 0}.sheet-field label{font:700 11px/1 var(--font);color:var(--text-tertiary);letter-spacing:.05em;margin-bottom:4px;display:block}.sheet-field .value{font:500 15px/1.4 var(--font);color:var(--text)}.sheet-action-footer{justify-content:center;margin-top:24px;display:flex}.btn-remove-extra{border-radius:var(--radius-md);color:var(--error);border-color:var(--error);width:100%;padding:10px 20px;font-size:13px;font-weight:600}.btn-add-extra{border-radius:var(--radius-md);width:100%;padding:10px 20px;font-size:13px;font-weight:600}.menu-wrap{position:relative}.menu-drop{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);width:270px;box-shadow:var(--shadow-lg);z-index:200;animation:.15s ease-out selectFadeIn;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}.menu-drop-header{border-bottom:1px solid var(--border);background:var(--surface-hover);align-items:center;gap:12px;padding:14px;display:flex}.menu-drop-header .avatar-circle{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;font-weight:600;display:flex;overflow:hidden}.menu-drop-header .email{font:600 13px/1.3 var(--font);color:var(--text);word-break:break-all}.menu-drop-header .sub{font:400 11px/1.3 var(--font);color:var(--text-tertiary)}.menu-drop-item{font:500 13.5px/1 var(--font);cursor:pointer;text-align:left;width:100%;color:var(--text);background:0 0;border:none;align-items:center;gap:10px;padding:12px 14px;transition:background .1s;display:flex}.menu-drop-item:hover{background:var(--surface-hover)}.menu-drop-item svg{width:18px;height:18px;color:var(--text-secondary);flex-shrink:0}.menu-divider{background:var(--border);height:1px}.menu-drop-footer{padding:6px}.action-bar{background:var(--surface);border-top:1px solid var(--border);box-shadow:var(--shadow-md);z-index:90;gap:12px;margin-top:16px;padding:12px 16px;display:flex;position:sticky;bottom:0}.action-bar .btn{flex:1}.card-time-text{letter-spacing:-.01em;white-space:nowrap;font-size:13px;font-weight:700}.skeleton{background:linear-gradient(90deg, var(--surface) 25%, var(--border) 50%, var(--surface) 75%);border-radius:var(--radius-md);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{height:72px;margin-bottom:8px}@media (width>=641px){.overlay{align-items:center;padding:24px}.sheet{border-radius:20px;margin:auto;animation:.2s cubic-bezier(.16,1,.3,1) dialogPop}@keyframes dialogPop{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}}@media (width<=768px){.app-wrap{flex-direction:column}.sidebar{width:100%;height:auto;min-height:calc(58px + env(safe-area-inset-bottom));padding-bottom:max(6px, env(safe-area-inset-bottom));border-right:none;border-top:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(16px);z-index:150;flex-direction:row;padding-top:4px;padding-left:8px;padding-right:8px;position:fixed;inset:auto 0 0;box-shadow:0 -2px 12px #0000001a}.sidebar-nav{flex-direction:row;flex:1;justify-content:space-around;gap:6px}.sidebar-item{border-radius:var(--radius-md);flex-direction:column;justify-content:center;align-items:center;gap:3px;width:100%;min-height:48px;padding:6px 10px;font-size:11px;font-weight:500;transition:all .15s}.sidebar-item.active{background:var(--accent-light);color:var(--accent);font-weight:700}.sidebar-item.active svg{transform:scale(1.08)}.sidebar-item svg{width:22px;height:22px;transition:transform .15s}.sidebar-footer{display:none!important}.main{padding:20px 14px calc(84px + env(safe-area-inset-bottom))}.page-title{margin-bottom:16px;font-size:20px}.menu-drop{max-width:calc(100vw - 32px);right:0}.action-bar{bottom:calc(58px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-lg);z-index:140;padding:12px 16px;position:fixed;left:0;right:0}}@media (width<=540px){.filters-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.filters-row .filter-select.day-filter-select{grid-column:span 2}.card{gap:10px;padding:12px}.card-time-badge{min-width:82px;padding:6px 8px}.card-day-name{font-size:10px}.card-time-text{white-space:nowrap;font-size:11.5px}.card-title{font-size:14px}.card-meta{flex-wrap:wrap;gap:6px}.card-professor{font-size:11.5px}.room-badge{padding:2px 6px;font-size:10.5px}}
