body,#root{display:flex;min-height:100vh;margin:0}:root{--blue-50: #EFF6FF;--blue-100: #DBEAFE;--blue-200: #BFDBFE;--blue-300: #93C5FD;--blue-400: #60A5FA;--blue-500: #3B82F6;--blue-600: #2563EB;--blue-700: #1D4ED8;--blue-800: #1E40AF;--green-50: #ECFDF5;--green-100: #D1FAE5;--green-400: #34D399;--green-500: #10B981;--green-600: #059669;--amber-50: #FFFBEB;--amber-400: #FBBF24;--amber-500: #F59E0B;--amber-600: #D97706;--red-50: #FEF2F2;--red-400: #F87171;--red-500: #EF4444;--red-600: #DC2626;--slate-50: #F8FAFC;--slate-100: #F1F5F9;--slate-200: #E2E8F0;--slate-300: #CBD5E1;--slate-400: #94A3B8;--slate-500: #64748B;--slate-600: #475569;--slate-700: #334155;--slate-800: #1E293B;--slate-900: #0F172A;--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--radius-xl: 20px;--shadow-sm: 0 1px 3px rgba(0,0,0,.04), 0 1px 2px rgba(0,0,0,.06);--shadow: 0 1px 3px rgba(0,0,0,.06), 0 2px 8px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.06), 0 2px 6px rgba(0,0,0,.04);--shadow-lg: 0 10px 25px rgba(0,0,0,.06), 0 4px 10px rgba(0,0,0,.04);--transition: .2s cubic-bezier(.4,0,.2,1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,Helvetica Neue,sans-serif;background:#f0f4f8;color:var(--slate-800);line-height:1.6;font-variant-numeric:tabular-nums;overflow:hidden;height:100vh;width:100vw;display:flex;user-select:none;-webkit-user-select:none}.sidebar{width:220px;min-width:220px;height:100vh;background:#fff;border-right:1px solid var(--slate-200);display:flex;flex-direction:column;z-index:100;padding:0;position:relative;transition:width .25s ease,min-width .25s ease}.sidebar.collapsed{width:64px;min-width:64px}.sidebar.collapsed .sidebar-logo .text{display:none}.sidebar.collapsed .sidebar-logo{justify-content:center;padding:16px 8px}.sidebar.collapsed .nav-section,.sidebar.collapsed .nav-item span:not(.nav-icon),.sidebar.collapsed .nav-badge,.sidebar.collapsed .nav-collapse-arrow,.sidebar.collapsed .sidebar-footer .user-info,.sidebar.collapsed .nav-collapse-trigger span:first-child{display:none}.sidebar.collapsed .nav-item{justify-content:center;padding:12px 8px}.sidebar.collapsed .nav-collapse-trigger{justify-content:center}.sidebar.collapsed .nav-collapse-group{max-height:none;opacity:1;overflow:visible}.sidebar.collapsed .nav-collapse-group .nav-item{padding-left:8px}.sidebar.collapsed .nav-drag-handle{display:none}.sidebar.collapsed .sidebar-footer .user-card{justify-content:center}.sidebar.collapsed .sidebar-toggle{transform:rotate(180deg)}.sidebar-logo{padding:16px 20px;border-bottom:1px solid var(--slate-100);display:flex;align-items:center;gap:10px;flex-shrink:0}.sidebar-toggle{position:absolute;top:20px;right:-14px;width:28px;height:28px;border-radius:50%;background:#fff;border:1px solid var(--slate-200);box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:101;font-size:12px;color:var(--slate-500);transition:all .2s}.sidebar-toggle:hover{color:var(--blue-500);border-color:var(--blue-300);box-shadow:var(--shadow-md)}.sidebar-logo .icon{width:36px;height:36px;background:linear-gradient(135deg,var(--blue-500),var(--blue-700));border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px;font-weight:700}.sidebar-logo .text{font-size:15px;font-weight:700;color:var(--slate-800);letter-spacing:.3px}.sidebar-logo .text span{color:var(--blue-600)}.sidebar-nav{flex:1;padding:8px 12px;display:flex;flex-direction:column;gap:2px;overflow:visible}.sidebar-nav::-webkit-scrollbar-thumb{background:var(--slate-200);border-radius:4px}.sidebar-nav::-webkit-scrollbar-track{background:transparent}.sidebar-nav .nav-section{font-size:11px;color:var(--slate-400);text-transform:uppercase;letter-spacing:.8px;padding:14px 12px 6px;font-weight:600}.sidebar-nav .nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;color:var(--slate-600);transition:background .15s,color .15s,opacity .15s;position:relative;font-weight:500;line-height:1.4;user-select:none;-webkit-user-select:none;text-decoration:none}.sidebar-nav .nav-item:hover{background:var(--slate-50);color:var(--slate-800)}.sidebar-nav .nav-item.active{background:var(--blue-50);color:var(--blue-600);font-weight:600}.sidebar-nav .nav-item.active:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;background:var(--blue-500);border-radius:0 3px 3px 0}.nav-drag-handle{position:absolute;right:6px;top:50%;transform:translateY(-50%);opacity:0;cursor:grab;font-size:14px;color:var(--slate-300);transition:opacity .15s;line-height:1}.nav-item:hover .nav-drag-handle{opacity:1}.nav-drag-handle:active{cursor:grabbing}.nav-item.dragging{opacity:.4}.nav-item.drag-over-top{box-shadow:0 -2px 0 var(--blue-400)}.nav-item.drag-over-bottom{box-shadow:0 2px 0 var(--blue-400)}.nav-item.drag-not-allowed{box-shadow:0 0 0 1px var(--red-300);cursor:not-allowed}.nav-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.nav-badge{margin-left:auto;background:var(--red-500);color:#fff;font-size:11px;padding:2px 7px;border-radius:10px;font-weight:600;min-width:20px;text-align:center;font-variant-numeric:tabular-nums}.sidebar-nav .nav-collapse-trigger{cursor:pointer;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);font-size:14px;color:var(--slate-600);font-weight:500;line-height:1.4;user-select:none;-webkit-user-select:none;transition:background .15s,color .15s}.sidebar-nav .nav-collapse-trigger:hover{color:var(--slate-600)}.nav-collapse-arrow{font-size:10px;transition:transform .2s ease;margin-right:4px}.nav-collapse-trigger.collapsed .nav-collapse-arrow{transform:rotate(-90deg)}.nav-collapse-group{overflow:hidden;transition:max-height .3s ease,opacity .3s ease;max-height:500px;opacity:1}.nav-collapse-group.collapsed{max-height:0;opacity:0}.nav-collapse-group .nav-item{padding-left:28px;font-size:13px}.sidebar-footer{padding:12px;border-top:1px solid var(--slate-100);flex-shrink:0}.sidebar-footer .user-card{display:flex;align-items:center;gap:10px;padding:8px;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition)}.sidebar-footer .user-card:hover{background:var(--slate-50)}.user-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#ffd54f,#ff8a65);display:flex;align-items:center;justify-content:center;font-size:16px;color:#fff;font-weight:600}.user-info .name{font-size:13px;font-weight:600;color:var(--slate-700);line-height:1.3}.user-info .role{font-size:11px;color:var(--slate-400);margin-top:1px}.main{flex:1;height:100vh;overflow-y:auto;overflow-x:hidden;padding:24px 28px;-webkit-overflow-scrolling:touch}.main::-webkit-scrollbar{width:6px}.main::-webkit-scrollbar-track{background:transparent}.main::-webkit-scrollbar-thumb{background:var(--slate-300);border-radius:10px}.main::-webkit-scrollbar-thumb:hover{background:var(--slate-400)}.page{display:none}.page.active{display:block;animation:pageIn .3s ease}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.topbar-left .greeting{font-size:22px;font-weight:700;color:var(--slate-800);letter-spacing:.3px;line-height:1.3}.topbar-left .sub{font-size:13px;color:var(--slate-500);margin-top:4px}.topbar-right{display:flex;align-items:center;gap:12px}.weather-strip{display:flex;align-items:center;gap:6px;background:#fff;padding:6px 14px;border-radius:16px;box-shadow:var(--shadow-sm);font-size:12px;white-space:nowrap}.ws-icon{font-size:16px}.ws-temp{font-weight:800;color:var(--slate-800);font-size:15px}.ws-desc{color:var(--slate-500);font-size:11px}.ws-sep{width:1px;height:16px;background:var(--slate-200);margin:0 4px}.ws-meta{display:flex;align-items:center;gap:2px;color:var(--slate-400);font-size:11px}.ws-fc{display:flex;align-items:center;gap:2px;font-size:11px;padding:0 2px}.ws-fc span{color:var(--slate-400)}.date-badge{font-size:13px;color:var(--slate-500);background:#fff;padding:8px 14px;border-radius:20px;box-shadow:var(--shadow-sm);font-weight:500}.card{background:#fff;border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm);transition:all var(--transition);border:1px solid transparent}.card:hover{border-color:var(--slate-200);box-shadow:var(--shadow-md)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-title{font-size:15px;font-weight:700;color:var(--slate-800);display:flex;align-items:center;gap:8px;letter-spacing:.2px}.card-title .dot{width:8px;height:8px;border-radius:50%;background:var(--blue-500);flex-shrink:0}.card-action{font-size:12px;color:var(--blue-500);cursor:pointer;font-weight:600;white-space:nowrap}.card-action:hover{color:var(--blue-600)}.bento-grid{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:auto auto auto;gap:16px}.bento-grid .span-row-2{grid-row:span 2}.bento-grid .span-row-3{grid-row:span 3}.bento-grid .span-col-2{grid-column:span 2}.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.stat-card{background:#fff;border-radius:var(--radius-lg);padding:18px 20px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow-sm);border:1px solid transparent;transition:all var(--transition);cursor:pointer}.stat-card:hover{box-shadow:var(--shadow-md);border-color:var(--slate-200)}.stat-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.stat-icon.blue{background:var(--blue-50);color:var(--blue-500)}.stat-icon.green{background:var(--green-50);color:var(--green-500)}.stat-icon.amber{background:var(--amber-50);color:var(--amber-500)}.stat-icon.red{background:var(--red-50);color:var(--red-500)}.stat-icon.purple{background:#f3e8ff;color:#9333ea}.stat-value{font-size:24px;font-weight:800;color:var(--slate-800);line-height:1.1;font-variant-numeric:tabular-nums}.stat-label{font-size:12px;color:var(--slate-500);margin-top:4px}.progress-bar{height:6px;background:var(--slate-100);border-radius:6px;overflow:hidden;margin-top:8px}.progress-fill{height:100%;border-radius:6px;transition:width .6s cubic-bezier(.4,0,.2,1)}.progress-fill.blue{background:var(--blue-500)}.progress-fill.green{background:var(--green-500)}.progress-fill.amber{background:var(--amber-500)}.progress-fill.red{background:var(--red-500)}.tag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600;white-space:nowrap;letter-spacing:.2px}.tag.school{background:var(--blue-50);color:var(--blue-600)}.tag.extra{background:#f3e8ff;color:#9333ea}.tag.review{background:var(--amber-50);color:var(--amber-600)}.tag.exam{background:#fef2f2;color:#dc2626}.error-mark-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;z-index:9999;display:flex;align-items:center;justify-content:center;flex-direction:column}.error-mark-overlay .em-close{position:absolute;top:16px;right:24px;width:40px;height:40px;border-radius:50%;background:#fff3;border:none;color:#fff;font-size:20px;cursor:pointer;z-index:10;transition:transform .15s}.error-mark-overlay .em-close:hover{transform:scale(1.1)}.error-mark-overlay .em-canvas-wrap{position:relative;max-width:90vw;max-height:80vh;overflow:hidden;box-shadow:0 8px 40px #0006}.error-mark-overlay .em-canvas-wrap img{display:block;max-width:100%;max-height:80vh;object-fit:contain}.error-mark-overlay .em-canvas-wrap canvas{position:absolute;top:0;left:0}.error-mark-overlay .em-marker{position:absolute;width:24px;height:24px;border-radius:50%;background:var(--red-500);border:3px solid #fff;box-shadow:0 2px 8px #0000004d;transform:translate(-50%,-50%);cursor:pointer;z-index:5;transition:transform .15s}.error-mark-overlay .em-marker:hover{transform:translate(-50%,-50%) scale(1.2)}.error-mark-overlay .em-marker .em-num{position:absolute;top:-18px;left:50%;transform:translate(-50%);background:#fff;color:var(--red-600);font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;white-space:nowrap;box-shadow:0 1px 4px #00000026}.error-mark-overlay .em-toolbar{display:flex;align-items:center;gap:12px;margin-top:16px;padding:12px 24px;background:#fffffff2;border-radius:16px;box-shadow:0 4px 16px #0000001a}.error-mark-overlay .em-toolbar .em-btn{padding:8px 18px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:all .15s}.error-mark-overlay .em-toolbar .em-btn.primary{background:var(--red-500);color:#fff}.error-mark-overlay .em-toolbar .em-btn.primary:hover{background:var(--red-600)}.error-mark-overlay .em-toolbar .em-btn.secondary{background:var(--slate-100);color:var(--slate-600)}.error-mark-overlay .em-toolbar .em-btn.secondary:hover{background:var(--slate-200)}.error-mark-overlay .em-toolbar .em-hint{font-size:12px;color:var(--slate-400)}.em-popup{position:fixed;z-index:10001;background:#fff;border-radius:16px;box-shadow:0 12px 40px #0003;padding:20px;width:300px;animation:fadeIn .2s ease}.em-popup h4{margin:0 0 14px;font-size:15px;color:var(--slate-700)}.em-popup label{display:block;font-size:12px;color:var(--slate-400);margin-bottom:3px;font-weight:600}.em-popup select,.em-popup input{width:100%;padding:8px 10px;border:1px solid var(--slate-200);border-radius:8px;font-size:13px;margin-bottom:10px;box-sizing:border-box}.em-popup select:focus,.em-popup input:focus{outline:none;border-color:var(--blue-400)}.em-popup .em-popup-btns{display:flex;gap:8px;margin-top:4px}.em-popup .em-popup-btn{padding:7px 16px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;border:none;transition:all .15s}.em-popup .em-popup-btn.save{background:var(--red-500);color:#fff;flex:1}.em-popup .em-popup-btn.save:hover{background:var(--red-600)}.em-popup .em-popup-btn.delete{background:var(--slate-100);color:var(--red-500)}.em-popup .em-popup-btn.delete:hover{background:var(--red-50)}.em-popup .em-popup-btn.cancel{background:var(--slate-100);color:var(--slate-500)}.em-popup .em-popup-btn.cancel:hover{background:var(--slate-200)}.paper-card-badges{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap}.paper-card-badges .pcb{margin:0;display:inline-flex}.tag.must{background:var(--red-50);color:var(--red-500)}.tag.done{background:var(--green-50);color:var(--green-600)}.task-item{display:flex;align-items:center;gap:12px;padding:12px;border-radius:var(--radius-sm);transition:all var(--transition);cursor:pointer;border:1px solid transparent;margin-bottom:6px}.task-item:hover{background:var(--slate-50);border-color:var(--slate-200)}.task-item.done{opacity:.6}.task-item.done .task-title{text-decoration:line-through}.task-check{width:22px;height:22px;border-radius:50%;border:2px solid var(--slate-300);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--transition);font-size:12px;color:transparent}.task-item.done .task-check{background:var(--green-500);border-color:var(--green-500);color:#fff}.task-info{flex:1;min-width:0}.task-title{font-size:13px;font-weight:500;color:var(--slate-700);line-height:1.4}.task-meta{font-size:11px;color:var(--slate-400);margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.task-points{font-size:12px;font-weight:700;color:var(--amber-500);flex-shrink:0;font-variant-numeric:tabular-nums}.kg-container{position:relative;height:280px;background:var(--slate-50);border-radius:var(--radius);overflow:hidden}.kg-node{position:absolute;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;cursor:pointer;transition:all .3s;border:3px solid;z-index:2}.kg-node:hover{transform:scale(1.15);z-index:10}.kg-node.excellent{border-color:var(--green-500);background:var(--green-50);color:var(--green-700)}.kg-node.good{border-color:#86efac;background:var(--green-50);color:#16a34a}.kg-node.fair{border-color:var(--amber-400);background:var(--amber-50);color:var(--amber-700)}.kg-node.weak{border-color:var(--red-400);background:var(--red-50);color:var(--red-700)}.kg-node.locked{border-color:var(--slate-300);background:#fff;color:var(--slate-400)}.kg-edge{position:absolute;height:2px;background:var(--slate-300);transform-origin:left center;z-index:1}.kg-legend{display:flex;gap:16px;margin-top:12px;font-size:11px;color:var(--slate-500);flex-wrap:wrap}.kg-legend span{display:flex;align-items:center;gap:4px}.kg-legend .dot{width:10px;height:10px;border-radius:50%;display:inline-block}.chart-area{height:160px;position:relative}.bar-chart{display:flex;align-items:flex-end;gap:8px;height:130px;padding-top:10px}.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}.bar{width:100%;max-width:36px;border-radius:6px 6px 0 0;background:var(--blue-500);transition:height .5s cubic-bezier(.4,0,.2,1);min-height:4px}.bar.weak{background:var(--red-400)}.bar-label{font-size:10px;color:var(--slate-400);text-align:center}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-day{aspect-ratio:1;border-radius:4px;background:var(--slate-100);cursor:pointer;transition:all var(--transition);font-size:10px;display:flex;align-items:center;justify-content:center;color:var(--slate-400)}.cal-day.done{background:var(--green-400);color:#fff}.cal-day.partial{background:var(--green-200);color:var(--green-700)}.cal-day.today{border:2px solid var(--blue-500);font-weight:700;color:var(--blue-600)}.timer-display{font-size:64px;font-weight:800;color:var(--slate-800);text-align:center;font-variant-numeric:tabular-nums;letter-spacing:-2px;line-height:1}.timer-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 28px;border-radius:25px;border:none;font-size:15px;font-weight:600;cursor:pointer;transition:all var(--transition)}.timer-btn.primary{background:var(--blue-500);color:#fff}.timer-btn.primary:hover{background:var(--blue-600);transform:translateY(-1px)}.timer-btn.secondary{background:var(--slate-100);color:var(--slate-700)}.timer-btn.secondary:hover{background:var(--slate-200)}.subject-tabs{display:flex;gap:4px;background:var(--slate-100);padding:4px;border-radius:10px;margin-bottom:16px;width:fit-content}.subject-tab{padding:7px 18px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;color:var(--slate-500);transition:all var(--transition);border:none;background:none}.subject-tab.active{background:#fff;color:var(--blue-600);box-shadow:var(--shadow-sm)}.subject-tab:hover:not(.active){color:var(--slate-700)}.empty-state{text-align:center;padding:40px 20px;color:var(--slate-400)}.empty-state .icon{font-size:40px;margin-bottom:12px}.empty-state .text{font-size:13px}.mini-table{width:100%;font-size:12px;border-collapse:collapse}.mini-table th{text-align:left;padding:8px 12px;color:var(--slate-400);font-weight:600;font-size:11px;border-bottom:1px solid var(--slate-100);text-transform:uppercase;letter-spacing:.5px}.mini-table td{padding:10px 12px;border-bottom:1px solid var(--slate-50);color:var(--slate-600)}.eye-banner{background:linear-gradient(135deg,var(--blue-50),#E8F0FE);border-radius:var(--radius);padding:12px 20px;display:flex;align-items:center;gap:12px;font-size:13px;color:var(--blue-700);margin-bottom:16px;border:1px solid var(--blue-100);line-height:1.5}.eye-banner .icon{font-size:22px;flex-shrink:0}.eye-banner strong{font-weight:600}.courses-layout{display:flex;gap:16px;min-height:calc(100vh - 160px)}.courses-sidebar{width:260px;min-width:260px;background:var(--slate-50);border-radius:var(--radius-lg);padding:0;display:flex;flex-direction:column;position:sticky;top:0;max-height:calc(100vh - 120px);transition:width .25s ease,min-width .25s ease;flex-shrink:0}.courses-sidebar.collapsed{width:56px;min-width:56px}.courses-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--slate-200);flex-shrink:0}.courses-sidebar.collapsed .courses-sidebar-header{justify-content:center;padding:10px 8px}.courses-sidebar-title{font-size:12px;font-weight:600;color:var(--slate-500);letter-spacing:.3px;text-transform:uppercase}.courses-sidebar.collapsed .courses-sidebar-title{display:none}.sidebar-collapse-btn{width:24px;height:24px;border:none;background:var(--slate-200);border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--slate-600);transition:all .15s;flex-shrink:0}.sidebar-collapse-btn:hover{background:var(--slate-300);color:var(--slate-800)}.courses-sidebar.collapsed .sidebar-collapse-btn{transform:rotate(180deg)}.courses-nav-list{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px;display:flex;flex-direction:column;gap:6px}.courses-nav-list::-webkit-scrollbar{width:4px}.courses-nav-list::-webkit-scrollbar-thumb{background:var(--slate-300);border-radius:4px}.courses-nav-list::-webkit-scrollbar-track{background:transparent}.course-select{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:var(--radius);cursor:grab;transition:background .15s,border-color .15s,opacity .15s;border:1px solid transparent;position:relative}.course-select:hover{background:var(--blue-50);border-color:var(--blue-200)}.course-select.active{background:var(--blue-50);border-color:var(--blue-400)}.course-select.dragging{opacity:.4;cursor:grabbing}.course-select.drag-over{border-color:var(--blue-500);border-style:dashed;background:var(--blue-50)}.courses-sidebar.collapsed .course-select{justify-content:center;padding:10px 8px}.courses-sidebar.collapsed .course-select>div{display:none}.course-select .course-icon{font-size:20px;flex-shrink:0;line-height:1;margin-top:1px;width:22px;text-align:center}.courses-sidebar.collapsed .course-select .course-icon{margin-top:0}.course-select>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.course-select>div .title-row{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.course-select>div .title-row strong{font-size:13px;color:var(--slate-900);font-weight:600;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-select>div .title-row .course-sub{font-size:11px;color:var(--slate-500);flex-shrink:0}.course-prog-mini{width:100%;height:4px;background:var(--slate-200);border-radius:2px;margin-top:2px}.course-prog-mini div{height:100%;background:var(--blue-500);border-radius:2px;transition:width .3s}.course-drag-handle{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:14px;height:20px;opacity:0;transition:opacity .15s;display:flex;align-items:center;justify-content:center;color:var(--slate-300);font-size:10px;cursor:grab;flex-shrink:0}.course-select:hover .course-drag-handle{opacity:1}.courses-sidebar.collapsed .course-drag-handle{display:none}.courses-main{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.courses-header{display:flex;justify-content:space-between;align-items:center}.courses-header h3{font-size:16px;font-weight:700;color:var(--slate-900);letter-spacing:.2px}.course-stat{font-size:12px;color:var(--blue-600);background:var(--blue-50);padding:4px 10px;border-radius:100px;font-weight:600}.video-player-card{background:#fff;border:1px solid var(--slate-200);border-radius:var(--radius-lg);overflow:hidden;flex-shrink:0}.video-wrapper{position:relative;aspect-ratio:16/9;background:#0f172a;cursor:pointer}.video-controls-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.play-btn-big{width:64px;height:64px;border-radius:50%;background:#ffffffe6;display:flex;align-items:center;justify-content:center;font-size:24px;color:var(--blue-600);pointer-events:auto;cursor:pointer;transition:transform .15s}.play-btn-big:hover{transform:scale(1.1)}.resume-toast{position:absolute;bottom:16px;left:50%;transform:translate(-50%);background:#fff;border-radius:var(--radius-lg);padding:12px 20px;box-shadow:0 4px 20px #00000026;display:flex;align-items:center;gap:16px;z-index:5;white-space:nowrap}.resume-toast-text{font-size:13px;color:var(--slate-700);line-height:1.4}.resume-toast-text strong{color:var(--blue-600);font-weight:600}.resume-toast-btns{display:flex;gap:8px}.resume-btn-yes{background:var(--blue-600);color:#fff;border:none;padding:7px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}.resume-btn-yes:hover{background:var(--blue-700)}.resume-btn-no{background:var(--slate-100);color:var(--slate-600);border:none;padding:7px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}.resume-btn-no:hover{background:var(--slate-200)}.watched-badge{position:absolute;top:12px;right:12px;background:#10b981;color:#fff;padding:4px 12px;border-radius:100px;font-size:12px;font-weight:600;z-index:3}.video-info-bar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--slate-50);gap:12px}.video-info-left{display:flex;align-items:center;gap:12px}.video-ch-label{font-size:14px;font-weight:600;color:var(--slate-900);line-height:1.3}.video-dur{font-size:12px;color:var(--slate-500);font-variant-numeric:tabular-nums}.video-info-right{display:flex;align-items:center;gap:8px}.speed-select{padding:4px 10px;border:1px solid var(--slate-300);border-radius:var(--radius);font-size:12px;background:#fff;color:var(--slate-700);cursor:pointer}.mark-done-btn{padding:6px 14px;background:var(--green-500);color:#fff;border:none;border-radius:var(--radius);font-size:12px;font-weight:500;cursor:pointer;white-space:nowrap}.mark-done-btn:hover{background:var(--green-600)}.lesson-list{padding:0}.lesson-list h4{font-size:14px;font-weight:700;color:var(--slate-900);margin-bottom:12px}.lesson-group{margin-bottom:16px}.lesson-group-title{font-size:12px;font-weight:600;color:var(--slate-500);padding:8px 0;margin-bottom:4px;border-bottom:1px solid var(--slate-100);letter-spacing:.2px}.lesson-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius);cursor:pointer;transition:all .15s;font-size:13px;color:var(--slate-700);line-height:1.4}.lesson-item:hover{background:var(--slate-50)}.lesson-item.active{background:var(--blue-50)}.lesson-item.playing{background:var(--blue-50);border:1px solid var(--blue-300);font-weight:500;color:var(--blue-700)}.lesson-item.watched{color:var(--slate-400)}.lesson-item .lesson-num{font-size:11px;color:var(--slate-400);min-width:22px;font-weight:500}.lesson-item.playing .lesson-num{color:var(--blue-500)}.lesson-item>span:nth-child(2){flex:1}.lesson-check{color:var(--green-500);font-weight:600}.lesson-dur{font-size:11px;color:var(--slate-400);min-width:44px;text-align:right;font-variant-numeric:tabular-nums}.lesson-prog{width:60px;height:4px;background:var(--slate-200);border-radius:2px;flex-shrink:0}.lesson-prog div{height:100%;background:var(--blue-500);border-radius:2px}.courses-actions{display:flex;align-items:center;gap:8px}.server-panel{background:#fff;border:1px solid var(--slate-200);border-radius:var(--radius-lg);padding:0;margin-bottom:12px;overflow:visible;flex-shrink:0;transition:all .3s}.server-panel-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s}.server-panel-header:hover{background:var(--slate-50)}.server-panel-toggle{font-size:11px;color:var(--slate-400);transition:transform .2s;padding:4px;line-height:1}.server-panel.collapsed .server-panel-toggle{transform:rotate(-90deg)}.server-panel.collapsed .server-body{display:none}.server-panel-left{display:flex;align-items:center;gap:10px}.server-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;transition:all .4s;box-shadow:0 0 #10b98100}.server-dot.online{background:var(--green-500);box-shadow:0 0 0 4px #10b98140;animation:dotPulse 2s infinite}.server-dot.offline{background:var(--red-400)}.server-dot.checking{background:var(--amber-400);animation:spin 1s linear infinite}@keyframes dotPulse{0%,to{box-shadow:0 0 #10b9814d}50%{box-shadow:0 0 0 8px #10b98100}}@keyframes spin{to{transform:rotate(360deg)}}.server-label{font-size:13px;font-weight:600;color:var(--slate-700);letter-spacing:.2px}.server-label small{font-size:11px;color:var(--slate-400);font-weight:400;margin-left:6px}.server-body{border-top:1px solid var(--slate-100);padding:14px 16px;display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.server-hint{font-size:12px;color:var(--slate-500);margin-bottom:12px;line-height:1.7;padding:10px 12px;background:var(--slate-50);border-radius:var(--radius-sm)}.server-hint strong{color:var(--blue-600);font-weight:600}.server-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.server-input{flex:1;min-width:180px;padding:8px 12px;border:1px solid var(--slate-300);border-radius:var(--radius-sm);font-size:13px;color:var(--slate-800);background:#fff;transition:border-color .15s;font-family:inherit}.server-input:focus{outline:none;border-color:var(--blue-400);box-shadow:0 0 0 3px #3b82f61a}.server-input::placeholder{color:var(--slate-400)}.server-btn{padding:8px 18px;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.server-btn-check{background:var(--blue-500);color:#fff}.server-btn-check:hover{background:var(--blue-600)}.server-btn-check:disabled{opacity:.6;cursor:not-allowed}.server-btn-setup{background:var(--slate-100);color:var(--slate-600)}.server-btn-setup:hover{background:var(--slate-200)}.server-status-msg{font-size:12px;margin-top:8px;padding:6px 0;display:flex;align-items:center;gap:6px}.server-status-msg.success{color:var(--green-600)}.server-status-msg.error{color:var(--red-500)}.server-status-msg.finding{color:var(--amber-600)}.server-arch{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--slate-400);margin-top:8px;padding:8px 0;border-top:1px dashed var(--slate-200);font-weight:500}.server-arch span{display:flex;align-items:center;gap:4px}.server-arch .arch-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.server-arch .arch-dot.mac{background:var(--slate-500)}.server-arch .arch-dot.wifi{background:var(--blue-400)}.server-arch .arch-dot.ipad{background:var(--blue-500)}.server-arch .arch-arrow{color:var(--slate-300);font-size:10px}.server-mode-switch{display:flex;background:var(--slate-100);border-radius:var(--radius);padding:3px;margin-bottom:12px;gap:2px}.server-mode-tab{flex:1;text-align:center;padding:8px 10px;border-radius:calc(var(--radius) - 2px);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;color:var(--slate-500);border:1px solid transparent;display:flex;align-items:center;justify-content:center;gap:5px}.server-mode-tab.active{background:#fff;color:var(--slate-800);border-color:var(--slate-200);box-shadow:0 1px 3px #0000000f}.server-mode-tab:hover:not(.active){color:var(--slate-700);background:#ffffff80}.server-mode-tab .mode-icon{font-size:14px}.tailscale-guide{background:linear-gradient(135deg,#f0f4ff,#e8f0fe);border:1px solid var(--blue-100);border-radius:var(--radius);padding:12px 14px;margin-bottom:12px;font-size:12px;line-height:1.8;color:var(--slate-600)}.tailscale-guide strong{color:var(--blue-700);font-weight:600}.tailscale-guide ol{margin:8px 0 0;padding-left:18px}.tailscale-guide ol li{margin-bottom:4px;line-height:1.7}.tailscale-guide .ts-badge{display:inline-block;background:var(--blue-500);color:#fff;font-size:10px;padding:1px 6px;border-radius:10px;margin:0 2px;font-weight:600}.tailscale-guide code{font-family:SF Mono,Menlo,Monaco,monospace;font-size:11px;background:var(--slate-100);color:var(--slate-700);padding:1px 6px;border-radius:4px}.arch-dot.tailscale{background:#7c3aed}.timetable-controls{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.timetable-week-selector{display:flex;align-items:center;gap:8px;background:#fff;border-radius:var(--radius);padding:6px 16px;box-shadow:var(--shadow-sm);font-size:14px;font-weight:600;color:var(--slate-700);border:1px solid var(--slate-200)}.timetable-week-selector .arrow{cursor:pointer;color:var(--slate-400);font-size:18px;line-height:1;padding:0 4px;transition:color var(--transition)}.timetable-week-selector .arrow:hover{color:var(--blue-500)}.timetable-edit-btn{background:var(--blue-500);color:#fff;border:none;padding:8px 18px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer;transition:all var(--transition);display:flex;align-items:center;gap:6px}.timetable-edit-btn:hover{background:var(--blue-600)}.timetable-edit-btn.editing{background:var(--green-500)}.timetable-edit-btn.editing:hover{background:var(--green-600)}.timetable-legend{display:flex;align-items:center;gap:16px;margin-left:auto;font-size:12px;color:var(--slate-500)}.timetable-legend .dot{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:4px}.timetable-wrapper{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;border:1px solid var(--slate-200)}.timetable-grid{display:grid;grid-template-columns:72px repeat(5,1fr);width:100%}.timetable-corner{background:var(--slate-50);border-bottom:1px solid var(--slate-200);border-right:1px solid var(--slate-200);padding:12px 8px;font-size:11px;font-weight:700;color:var(--slate-400);text-align:center;display:flex;align-items:center;justify-content:center}.timetable-day-header{background:var(--blue-500);color:#fff;padding:10px 6px;text-align:center;font-size:13px;font-weight:700;border-bottom:1px solid var(--blue-600);border-right:1px solid rgba(255,255,255,.15)}.timetable-day-header:last-child{border-right:none}.timetable-day-header .day-date{font-size:11px;font-weight:400;opacity:.8;display:block;margin-top:2px}.timetable-day-header.today{background:var(--blue-700);box-shadow:inset 0 -3px #ffffff4d}.timetable-period-label{background:var(--slate-50);border-bottom:1px solid var(--slate-100);border-right:1px solid var(--slate-200);padding:6px;text-align:center;font-size:11px;color:var(--slate-500);font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:64px}.timetable-period-label .time{font-size:10px;font-weight:400;color:var(--slate-400);margin-top:2px}.timetable-cell{border-bottom:1px solid var(--slate-100);border-right:1px solid var(--slate-100);padding:6px 8px;min-height:64px;display:flex;flex-direction:column;justify-content:center;cursor:pointer;transition:all var(--transition);position:relative}.timetable-cell:last-child{border-right:none}.timetable-cell:hover{background:#3b82f60a}.timetable-cell.has-course{border-radius:6px;margin:2px;border:none;min-height:58px}.timetable-cell.editing:hover{background:#3b82f614;outline:2px dashed var(--blue-400);outline-offset:-2px;border-radius:6px}.cell-subject{font-size:13px;font-weight:700;color:var(--slate-800);line-height:1.3}.cell-detail{font-size:10px;color:var(--slate-500);margin-top:2px;line-height:1.4}.cell-empty{font-size:11px;color:var(--slate-300);text-align:center;font-style:italic}.tag-chinese{background:#ef444414;border-left:3px solid var(--red-500)}.tag-math{background:#3b82f614;border-left:3px solid var(--blue-500)}.tag-english{background:#10b98114;border-left:3px solid var(--green-500)}.tag-science{background:#f59e0b14;border-left:3px solid var(--amber-500)}.tag-morality{background:#8b5cf614;border-left:3px solid #8B5CF6}.tag-pe{background:#ec489914;border-left:3px solid #EC4899}.tag-art{background:#0ea5e914;border-left:3px solid #0EA5E9}.tag-music{background:#a855f714;border-left:3px solid #A855F7}.tag-it{background:#22c55e14;border-left:3px solid #22C55E}.tag-self{background:#94a3b814;border-left:3px solid var(--slate-400)}.timetable-picker{display:none;position:absolute;top:100%;left:0;z-index:50;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--slate-200);padding:8px;min-width:160px;margin-top:4px}.timetable-picker.show{display:block}.timetable-period-label.editing-label{background:#3b82f60f;border-radius:6px;cursor:pointer;transition:background .15s}.timetable-period-label.editing-label:hover{background:#3b82f61f;outline:2px dashed var(--blue-300)}.picker-item{padding:8px 12px;font-size:13px;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;gap:8px;transition:background var(--transition)}.picker-item:hover{background:var(--slate-50)}.picker-item .picker-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}.picker-item .picker-dot.chinese{background:var(--red-500)}.picker-item .picker-dot.math{background:var(--blue-500)}.picker-item .picker-dot.english{background:var(--green-500)}.picker-item .picker-dot.science{background:var(--amber-500)}.picker-item .picker-dot.morality{background:#8b5cf6}.picker-item .picker-dot.pe{background:#ec4899}.picker-item .picker-dot.art{background:#0ea5e9}.picker-item .picker-dot.music{background:#a855f7}.picker-item .picker-dot.it{background:#22c55e}.orientation-indicator{position:fixed;bottom:10px;right:10px;background:#0009;color:#fff;font-size:10px;padding:3px 8px;border-radius:10px;z-index:9999;pointer-events:none}@media (orientation: landscape) and (max-width: 1190px){.courses-layout{flex-direction:column;min-height:auto}.courses-sidebar{width:100%;min-width:100%;max-height:none;position:static}.courses-sidebar-header{display:none}.courses-nav-list{flex-direction:row;overflow-x:auto;overflow-y:hidden;padding:8px;gap:6px}.course-select{flex-shrink:0;min-width:130px}.course-select .course-sub,.course-prog-mini,.course-drag-handle{display:none}}@media (orientation: portrait) and (max-width: 767px){.timetable-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.timetable-grid{min-width:600px;grid-template-columns:60px repeat(5,minmax(90px,1fr))}.timetable-controls{flex-wrap:wrap;gap:8px}.timetable-legend{display:none}.timetable-day-header{padding:8px 4px;font-size:11px}.timetable-cell{padding:4px 6px;min-height:52px}.cell-subject{font-size:11px}.cell-detail{font-size:9px}.courses-layout{flex-direction:column;min-height:auto}.courses-sidebar{width:100%;min-width:100%;flex-direction:row;overflow-x:auto;padding:8px;gap:6px;position:static}.course-select{flex-shrink:0;min-width:140px;padding:8px}.course-select .course-sub,.course-prog-mini{display:none}.courses-header,.video-info-bar{flex-direction:column;align-items:flex-start;gap:8px}.video-info-right{width:100%;justify-content:space-between}.resume-toast{flex-direction:column;gap:8px;width:90%;text-align:center}.resume-toast-text{white-space:normal}.lesson-list h4{font-size:13px}.server-panel-header{padding:8px 12px}.server-form{flex-direction:column;align-items:stretch}.server-input{min-width:auto;width:100%}.server-arch{flex-wrap:wrap;gap:4px}.server-panel-header .server-label small{display:none}}@media (min-width: 1401px){.bento-grid{grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;min-height:calc(100vh - 280px)}.main{padding:32px 40px}.stat-row{grid-template-columns:repeat(4,1fr)}}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%);background:var(--slate-800);color:#fff;padding:10px 24px;border-radius:20px;font-size:13px;font-weight:600;z-index:999;opacity:0;transition:opacity .3s;pointer-events:none}.toast.show{opacity:1}.ai-bubble{background:linear-gradient(135deg,var(--blue-500),var(--blue-600));color:#fff;border-radius:var(--radius-lg);padding:14px 18px;font-size:13px;line-height:1.7;position:relative;margin-bottom:16px;font-weight:400}.ai-bubble strong{font-weight:600}.ai-bubble:after{content:"";position:absolute;bottom:-8px;left:24px;width:16px;height:16px;background:var(--blue-600);transform:rotate(45deg);border-radius:2px}.essay-card{background:#fffdf7;border:1px solid #f0e6c0;border-radius:var(--radius);padding:16px;font-size:13px;line-height:1.8;color:var(--slate-700);font-family:KaiTi,STKaiti,serif}.essay-card .highlight{background:#ffeb3b50;border-bottom:2px solid var(--amber-400);padding:0 2px}.essay-card .error{background:#ff000015;border-bottom:2px wavy var(--red-400);padding:0 2px}.essay-review{margin-top:12px;padding:12px;background:var(--blue-50);border-radius:var(--radius-sm);font-size:12px;color:var(--blue-700);line-height:1.6}.book-card{display:flex;gap:14px;padding:12px;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);border:1px solid transparent;margin-bottom:8px}.book-card:hover{background:var(--slate-50);border-color:var(--slate-200)}.book-cover{width:48px;height:64px;border-radius:4px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff;font-weight:700}.book-info{flex:1}.book-title{font-size:13px;font-weight:600;color:var(--slate-700)}.book-meta{font-size:11px;color:var(--slate-400);margin-top:2px}.book-pages{font-size:11px;color:var(--blue-500);font-weight:600}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:8px;top:0;bottom:0;width:2px;background:var(--slate-200)}.tl-item{position:relative;padding-bottom:20px;font-size:13px}.tl-item:before{content:"";position:absolute;left:-20px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--blue-500);border:2px solid #fff;box-shadow:0 0 0 2px var(--blue-200)}.tl-date{font-size:11px;color:var(--slate-400);margin-bottom:2px}.tl-content{color:var(--slate-600);line-height:1.5}.tl-tag{display:inline-block;font-size:10px;padding:2px 8px;border-radius:8px;margin-right:6px}.tl-tag.exam{background:var(--red-50);color:var(--red-500)}.tl-tag.achieve{background:var(--amber-50);color:var(--amber-600)}.tl-tag.learn{background:var(--blue-50);color:var(--blue-500)}.tl-tag.reading{background:var(--green-50);color:var(--green-500)}.notice-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px}.notice-topbar h3{margin:0;font-size:20px;font-weight:700;color:var(--slate-800)}.notice-btn-add{padding:8px 16px;background:var(--blue-500);color:#fff;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition);display:inline-flex;align-items:center;gap:6px}.notice-btn-add:hover{background:var(--blue-600);transform:translateY(-1px);box-shadow:var(--blue-200) 0 4px 12px}.notice-stats{display:flex;gap:14px;margin-bottom:16px;flex-wrap:wrap}.notice-stat-card{flex:1;min-width:140px;background:#fff;border:1px solid var(--slate-100);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:4px}.notice-stat-card .ns-num{font-size:28px;font-weight:700;color:var(--slate-700);line-height:1.1;font-variant-numeric:tabular-nums}.notice-stat-card .ns-label{font-size:12px;color:var(--slate-400)}.notice-stat-card.pending .ns-num{color:var(--amber-500)}.notice-stat-card.done .ns-num{color:var(--green-500)}.notice-stat-card.urgent .ns-num{color:var(--red-500)}.notice-filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.notice-filter-tag{padding:6px 14px;border-radius:16px;border:1px solid var(--slate-200);background:#fff;color:var(--slate-500);font-size:13px;cursor:pointer;transition:all var(--transition);font-weight:500;white-space:nowrap}.notice-filter-tag:hover{border-color:var(--blue-300);color:var(--blue-600)}.notice-filter-tag.active{background:var(--blue-500);color:#fff;border-color:var(--blue-500)}.notice-list{display:flex;flex-direction:column;gap:10px}.notice-card{background:#fff;border:1px solid var(--slate-100);border-radius:var(--radius);padding:16px;display:flex;gap:14px;transition:all var(--transition);cursor:pointer;position:relative}.notice-card:hover{box-shadow:0 2px 12px #0000000f;border-color:var(--slate-200)}.notice-card.unread{border-left:3px solid var(--blue-500)}.notice-card-left{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:52px}.notice-card-date{font-size:20px;font-weight:700;color:var(--slate-600);line-height:1;font-variant-numeric:tabular-nums}.notice-card-month{font-size:11px;color:var(--slate-400)}.notice-card-cat{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;text-align:center;white-space:nowrap;letter-spacing:.2px}.notice-card-cat.exam{background:var(--red-50);color:var(--red-500)}.notice-card-cat.activity{background:var(--blue-50);color:var(--blue-500)}.notice-card-cat.meeting{background:var(--amber-50);color:var(--amber-600)}.notice-card-cat.holiday{background:var(--green-50);color:var(--green-500)}.notice-card-cat.fee{background:#f3e8ff;color:#7c3aed}.notice-card-cat.other{background:var(--slate-100);color:var(--slate-500)}.notice-card-body{flex:1;min-width:0}.notice-card-title{font-size:15px;font-weight:600;color:var(--slate-700);margin-bottom:4px;line-height:1.4}.notice-card-desc{font-size:13px;color:var(--slate-400);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notice-card-meta{display:flex;align-items:center;gap:12px;margin-top:8px;flex-wrap:wrap}.notice-card-meta span{font-size:11px;color:var(--slate-400);display:inline-flex;align-items:center;gap:4px}.notice-card-badge{position:absolute;top:12px;right:12px;width:8px;height:8px;border-radius:50%;background:var(--red-400)}.notice-empty{text-align:center;padding:60px 20px;color:var(--slate-300)}.notice-empty-icon{font-size:48px;margin-bottom:12px}.notice-empty-text{font-size:14px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:100;display:flex;align-items:center;justify-content:center;display:none}.modal-overlay.show{display:flex}.notice-modal{background:#fff;border-radius:var(--radius-lg);padding:24px;width:90%;max-width:480px;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #00000026}.notice-modal h4{margin:0 0 16px;font-size:17px;font-weight:700;color:var(--slate-700)}.notice-modal .form-group{margin-bottom:14px}.notice-modal .form-group label{display:block;font-size:13px;color:var(--slate-500);margin-bottom:5px;font-weight:600}.notice-modal .form-group input,.notice-modal .form-group select,.notice-modal .form-group textarea{width:100%;padding:9px 12px;border:1px solid var(--slate-200);border-radius:var(--radius-sm);font-size:14px;color:var(--slate-700);box-sizing:border-box;font-family:inherit;transition:border-color .15s}.notice-modal .form-group textarea{min-height:80px;resize:vertical;line-height:1.6}.notice-modal .form-group input:focus,.notice-modal .form-group select:focus,.notice-modal .form-group textarea:focus{outline:none;border-color:var(--blue-400);box-shadow:0 0 0 3px #3b82f61a}.notice-modal .modal-btns{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.notice-modal .btn-cancel{padding:8px 16px;border:1px solid var(--slate-200);border-radius:var(--radius-sm);background:#fff;color:var(--slate-500);cursor:pointer;font-size:13px}.notice-modal .btn-save{padding:8px 20px;background:var(--blue-500);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:500}.notice-modal .btn-save:hover{background:var(--blue-600)}.notice-modal .form-hint{font-size:11px;color:var(--slate-400);margin-top:2px;display:flex;align-items:center;gap:4px}@media (orientation: landscape) and (max-width: 1190px){.sidebar{width:64px;min-width:64px}.sidebar .nav-item span:not(.nav-icon),.sidebar .nav-collapse-trigger span:first-child,.sidebar .nav-collapse-arrow,.sidebar .nav-badge,.sidebar .nav-drag-handle,.sidebar .sidebar-logo .text,.sidebar .sidebar-footer .user-info{display:none}.sidebar .nav-item,.sidebar .sidebar-logo{justify-content:center;padding:12px 8px}.sidebar .nav-collapse-group{max-height:none;opacity:1;overflow:visible}.sidebar .nav-collapse-group .nav-item{padding-left:8px}.main{padding:14px}}@media (orientation: portrait) and (min-width: 768px){.bento-grid{grid-template-columns:1fr 1fr}.stat-row{grid-template-columns:repeat(2,1fr)}.main{padding:16px}}@media (orientation: portrait) and (max-width: 767px){.sidebar{width:200px;min-width:200px}.bento-grid{grid-template-columns:1fr;height:auto}.stat-row{grid-template-columns:1fr}.main{padding:12px}.page>div[style*="grid-template-columns:"]{grid-template-columns:1fr!important}}
