:root{--bg: #1a0f24;--bg-2: #241636;--card: #2d1c42;--card-hover: #3a2356;--accent: #ff69b4;--accent-2: #c084fc;--text: #f3e8ff;--text-dim: #b89cd1;--border: #4a2f6b;--done: #34d399;--font: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "幼圆", sans-serif;--font-art: "楷体", "KaiTi", "STKaiti", "华文行楷", cursive;--radius: 14px;--bg-image: url(/assets/bg_pink-BGBKvDAP.jpg)}*{scrollbar-width:thin;scrollbar-color:var(--accent-2) var(--bg)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--accent-2);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--accent)}[data-theme=dark]{--bg: #120609;--bg-2: #1e0a13;--card: #2a0d18;--card-hover: #3c1322;--accent: #ff2d78;--accent-2: #ff5c9d;--text: #ffe4ee;--text-dim: #d294a8;--border: #5c1a30;--done: #ff6b9d;--font: "Segoe UI", "Microsoft YaHei", "黑体", sans-serif;--radius: 6px;--bg-image: url(/assets/bg_dark-CKN-o63b.jpg)}[data-theme=dream]{--bg: #1a1034;--bg-2: #241a4a;--card: #2e1f58;--card-hover: #3d2a70;--accent: #c084fc;--accent-2: #e0b3ff;--text: #f6eeff;--text-dim: #c0a8ea;--border: #4a2f7e;--done: #7de0c4;--font: "PingFang SC", "Microsoft YaHei", "幼圆", sans-serif;--radius: 20px;--bg-image: url(/assets/bg_dream-CR-OVNdy.jpg)}[data-theme=neon]{--bg: #140008;--bg-2: #260018;--card: #300021;--card-hover: #440030;--accent: #ff00aa;--accent-2: #ff66cc;--text: #ffe6f6;--text-dim: #d188ba;--border: #700050;--done: #33ffcc;--font: "Segoe UI", "Microsoft YaHei", sans-serif;--radius: 10px;--bg-image: url(/assets/bg_neon-BJ_2Fkzp.jpg)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:linear-gradient(#08041085,#08041085),var(--bg-image) center center / cover no-repeat fixed,linear-gradient(160deg,var(--bg),var(--bg-2));color:var(--text);height:100vh;overflow:hidden;line-height:1.6}#app{max-width:1000px;margin:0 auto;padding:16px;height:100vh;display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box}.header{padding:14px 0 8px;text-align:center;flex:none}.schedule-countdown{text-align:center;padding:10px 14px;margin-bottom:10px;background:var(--card);border:1px solid var(--accent);border-radius:12px;color:var(--accent);font-weight:600;font-size:.95rem}.schedule-day{margin-bottom:18px;padding:12px;background:var(--card);border:1px solid var(--border);border-radius:14px}.schedule-today{border-color:var(--accent);box-shadow:0 0 16px #ff69b426}.schedule-day-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.schedule-day-label{font-weight:600;color:var(--accent-2)}.schedule-today .schedule-day-label{color:var(--accent)}.schedule-day-count{font-size:.8rem;color:var(--text-dim)}.header h1{font-size:2.2rem;font-family:var(--font-art);font-weight:700;letter-spacing:3px;background:linear-gradient(180deg,#ffe3f1,#ff69b4 45%,#c084fc);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 10px rgba(255,105,180,.55)) drop-shadow(0 2px 3px rgba(0,0,0,.6))}.header:after{content:"";display:block;height:16px;margin:8px auto 0;width:62%;background:url(/assets/ui_nav_strip-Bvycv9bL.png) center / auto 100% repeat-x;opacity:.65}.subtitle{color:var(--text-dim);margin-top:4px}.back{color:var(--text-dim);text-decoration:none;font-size:.9rem;display:inline-block;margin-right:12px}.back:hover{color:var(--accent)}.nav{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap;padding:10px 16px 18px;margin-bottom:14px;position:relative;z-index:10;flex:none;background:linear-gradient(180deg,#1a0f24f5,#2d1a42f0);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:3px solid transparent;border-image:linear-gradient(90deg,rgba(255,105,180,0),var(--accent),var(--accent-2),rgba(255,105,180,0)) 1}.nav:after{content:"";position:absolute;left:0;right:0;bottom:-18px;height:26px;background:url(/assets/ui_nav_strip-Bvycv9bL.png) center / auto 100% repeat-x;opacity:.9;pointer-events:none}.nav-tab{display:inline-flex;align-items:center;gap:5px;color:var(--text);text-decoration:none;padding:8px 18px;border-radius:var(--radius);font-size:.92rem;border:1px solid var(--border);transition:all .18s;background:linear-gradient(180deg,#ff69b433,#c084fc1a);text-shadow:0 1px 2px rgba(0,0,0,.6)}.nav-tab:hover{color:#fff;border-color:var(--accent);background:#ff69b41f;box-shadow:0 0 16px #ff69b447}.nav-tab.active{color:#fff;border-color:transparent;background:linear-gradient(90deg,var(--accent),var(--accent-2));box-shadow:0 4px 18px #ff69b473}.layout{display:flex;gap:16px;align-items:flex-start;flex:1;min-height:0;overflow:hidden}.sidebar{width:148px;flex:none;position:relative;display:flex;flex-direction:column;gap:4px;padding:34px 10px 10px;background:var(--card);border:1px solid var(--border);border-radius:14px;overflow-y:auto}.sidebar-toggle{position:absolute;top:8px;right:8px;width:22px;height:22px;padding:0;border-radius:6px;background:transparent;border:1px solid var(--border);color:var(--text-dim);cursor:pointer;font-size:.8rem;line-height:1}.sidebar-toggle:hover{color:var(--accent);border-color:var(--accent)}.sidebar a{display:block;color:var(--text-dim);text-decoration:none;padding:8px 12px;border-radius:10px;font-size:.9rem;transition:all .15s;border:none}.sidebar a:hover{color:#fff;background:var(--card-hover)}.sidebar a.active{color:#fff;background:linear-gradient(90deg,var(--accent),var(--accent-2));font-weight:600}.content{flex:1;min-width:0;overflow-y:auto;padding-right:4px;height:100%}.sidebar-expand{position:fixed;left:0;top:50%;transform:translateY(-50%);width:26px;height:64px;border-radius:0 12px 12px 0;background:var(--card);border:1px solid var(--accent);border-left:none;color:var(--accent);cursor:pointer;font-size:1.1rem;display:none;align-items:center;justify-content:center;z-index:20}body.sidebar-collapsed .sidebar{display:none}body.sidebar-collapsed .sidebar-expand{display:flex}#app>.login-wrap,#app>.admin-wrap,#app>.detail{flex:1;min-height:0;overflow-y:auto}.user-menu{margin-left:auto;position:relative;display:flex;align-items:center;gap:8px}.user-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border:none;cursor:pointer;font-size:1rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;overflow:hidden;text-decoration:none}.user-avatar img{width:100%;height:100%;object-fit:cover;display:block}.user-avatar:hover{opacity:.9}.user-dropdown{position:absolute;right:0;top:46px;background:var(--card);border:1px solid var(--border);border-radius:12px;min-width:168px;padding:8px;display:none;flex-direction:column;box-shadow:0 8px 24px #00000073;z-index:20}.user-menu.open .user-dropdown{display:flex}.user-dropdown-name{padding:8px 12px;font-weight:600;border-bottom:1px solid var(--border);margin-bottom:6px;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-dropdown a{color:var(--text);text-decoration:none;padding:8px 12px;border-radius:8px;font-size:.9rem}.user-dropdown a:hover{background:var(--card-hover)}.user-logout-btn{margin-top:6px;padding:8px 12px;border-radius:8px;cursor:pointer;background:transparent;border:1px solid #ff5c5c;color:#ff5c5c;font-size:.9rem;text-align:left}.user-logout-btn:hover{background:#ff5c5c26}.theme-btn{width:38px;height:38px;border-radius:50%;background:#ff69b41f;color:#fff;border:1px solid var(--accent);cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none;box-shadow:0 2px 10px #ff69b466;transition:transform .15s;overflow:hidden;padding:0}.theme-btn img{width:100%;height:100%;object-fit:cover;display:block}.theme-btn:hover{transform:rotate(20deg) scale(1.08)}.logout-btn{height:38px;padding:0 14px;border-radius:19px;background:transparent;border:1px solid #ff5c5c;color:#ff5c5c;cursor:pointer;font-size:.85rem;flex:none;white-space:nowrap;transition:all .15s}.logout-btn:hover{background:#ff5c5c2e;transform:scale(1.04)}.theme-panel{position:fixed;top:0;left:0;right:0;bottom:0;z-index:200;display:none;align-items:center;justify-content:center;background:#0a0510b8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.theme-panel.open{display:flex}.theme-panel-inner{width:min(440px,92vw);background:var(--card);border:1px solid var(--accent);border-radius:18px;padding:18px;box-shadow:0 12px 40px #0009,0 0 30px #ff69b440}.theme-panel-inner h3{text-align:center;margin-bottom:14px;font-size:1.05rem;color:var(--accent)}.theme-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.theme-option{padding:14px 10px;border-radius:14px;text-align:center;cursor:pointer;border:2px solid var(--border);background:var(--bg-2);transition:all .15s}.theme-option:hover{border-color:var(--accent)}.theme-option.active{border-color:var(--accent);box-shadow:0 0 16px #ff69b480}.theme-option .to-swatch{display:flex;gap:4px;justify-content:center;margin-bottom:8px}.theme-option .to-swatch i{width:14px;height:14px;border-radius:50%;display:block}.theme-option .to-name{font-weight:600;font-size:.9rem}.theme-option .to-desc{font-size:.72rem;color:var(--text-dim);margin-top:2px}.theme-panel-close{display:block;margin:14px auto 0;padding:8px 22px;border-radius:20px;cursor:pointer;background:transparent;border:1px solid var(--border);color:var(--text-dim);font-size:.88rem}.theme-panel-close:hover{color:var(--text);border-color:var(--accent)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;padding:8px 0}.grid.small{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.grid-3{grid-template-columns:repeat(3,1fr)}.card{display:block;background:var(--card);border-radius:var(--radius);text-decoration:none;color:var(--text);border:14px solid transparent;border-image:url(/assets/ui_frame-DQZQ7WDA.png) 128 round;position:relative;transition:transform .15s,filter .15s,background .15s}.card:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;z-index:3;pointer-events:none;background:url(/assets/lace_corner_tl-B_0X942l.png) top left / 30px auto no-repeat,url(/assets/lace_corner_tr-CeKALsWM.png) top right / 30px auto no-repeat,url(/assets/lace_corner_bl-BQ7lrTo7.png) bottom left / 30px auto no-repeat,url(/assets/lace_corner_br-BLzzk8le.png) bottom right / 30px auto no-repeat}.card:hover{transform:translateY(-3px);background:var(--card-hover);filter:drop-shadow(0 0 12px rgba(255,105,180,.45))}.card-img{aspect-ratio:3/4;background:#1a0f24;position:relative;padding:8px;overflow:hidden;border-radius:4px 4px 0 0}.card-img img{width:100%;height:100%;object-fit:cover;display:block;border-radius:4px}.card-img .ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:2.4rem;color:var(--accent-2);font-weight:700}.card-body{padding:10px 12px;border-radius:0 0 4px 4px}.card-title{font-weight:700;font-size:1rem;font-family:var(--font-art);letter-spacing:1px}.card-desc{color:var(--text-dim);font-size:.8rem;margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.tag{font-size:.7rem;padding:1px 8px;border-radius:10px;background:#ff69b426;color:var(--accent-2)}.detail{padding:8px 0}.degree-card{position:relative;background:var(--card);border:16px solid transparent;border-image:url(/assets/ui_frame-DQZQ7WDA.png) 128 round;border-radius:8px;box-shadow:0 0 24px #ff69b42e;margin-bottom:18px}.degree-card:before{content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;z-index:3;pointer-events:none;background:url(/assets/lace_corner_tl-B_0X942l.png) top left / 38px auto no-repeat,url(/assets/lace_corner_tr-CeKALsWM.png) top right / 38px auto no-repeat,url(/assets/lace_corner_bl-BQ7lrTo7.png) bottom left / 38px auto no-repeat,url(/assets/lace_corner_br-BLzzk8le.png) bottom right / 38px auto no-repeat}.degree-card-img{overflow:hidden;border-radius:4px 4px 0 0;background:#1a0f24}.degree-card-img img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover;object-position:center 30%}.degree-card-body{padding:16px 18px;background:linear-gradient(180deg,#1a0f2459,#1a0f24d9)}.degree-card-body .detail-desc{margin:0 0 12px}.degree-card-body .meta{margin:4px 0}.degree-card-body .degree-status{margin-bottom:0}.degree-card-body .lock-hint,.degree-card-body .skip-btn{margin:10px 0 0}.detail-img{max-width:340px;margin:12px auto;padding:10px;border:14px solid transparent;border-image:url(/assets/lace_black-DrTbE1QY.png) 128 round;background:var(--card)}.detail-img img{width:100%;display:block;border-radius:4px}.detail-desc{color:var(--text-dim);margin:8px 0 16px}.detail h3{margin:18px 0 8px;color:var(--accent-2)}.meta{color:var(--text-dim);font-size:.9rem}.enroll-btn{display:block;width:100%;padding:12px;font-size:1rem;cursor:pointer;border:none;border-radius:12px;color:#fff;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:opacity .15s}.enroll-btn:hover{opacity:.9}.task-list{display:flex;flex-direction:column;gap:8px}.task{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px}.task.done{border-color:var(--done);opacity:.75}.task-desc{flex:1 1 100%;font-size:.92rem}.task-credit{font-size:.75rem;color:var(--accent);opacity:.9;margin-right:8px;align-self:center}.task-reqs{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:6px}.task-actions{flex:1 1 100%;display:flex;gap:8px;align-items:center}.task-btn{margin-left:auto;padding:6px 14px;border-radius:10px;cursor:pointer;font-size:.85rem;border:1px solid var(--accent);background:transparent;color:var(--accent);transition:all .15s;white-space:nowrap}.task-btn:hover{background:var(--accent);color:#fff}.task.done .task-btn{border-color:var(--done);color:var(--done)}.task.done .task-btn:hover{background:var(--done);color:#fff}.task-actions .task-btn{margin-left:0}.fail-btn{padding:6px 14px;border-radius:10px;cursor:pointer;font-size:.85rem;white-space:nowrap;border:1px solid rgba(255,100,100,.6);background:transparent;color:#ff8a8a;transition:all .15s}.fail-btn:hover{background:#ff6464d9;color:#fff}.skip-btn{display:inline-block;margin:8px 0;padding:8px 16px;border-radius:10px;cursor:pointer;font-size:.9rem;border:1px solid rgba(255,160,60,.6);background:transparent;color:#ffb35c;transition:all .15s}.skip-btn:hover{background:#ffa03cd9;color:#fff}.task-start-btn{padding:6px 14px;border-radius:10px;cursor:pointer;font-size:.85rem;white-space:nowrap;border:1px solid var(--accent-2);background:transparent;color:var(--accent-2);transition:all .15s}.task-start-btn:hover{background:var(--accent-2);color:#fff}.task-timeout-btn{padding:6px 14px;border-radius:10px;cursor:pointer;font-size:.85rem;white-space:nowrap;border:1px solid rgba(255,100,100,.6);background:transparent;color:#ff8a8a;transition:all .15s}.task-timeout-btn:hover{background:#ff6464d9;color:#fff}.task-timer{font-size:.8rem;color:var(--accent-2);white-space:nowrap;align-self:center;font-variant-numeric:tabular-nums}.req{font-size:.72rem;padding:2px 8px;border-radius:8px;background:#34d39926;color:var(--done)}.req.no{background:#ff64642e;color:#ff8a8a}.empty{color:var(--text-dim);text-align:center;padding:24px}.list{display:flex;flex-direction:column;gap:12px}.list-item{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px}.dressup-layout{display:flex;gap:16px}.dressup-preview{flex:0 0 280px;position:sticky;top:60px;align-self:flex-start}.dressup-canvas{position:relative;width:100%;aspect-ratio:3/4;background:#1a0f24;border:1px solid var(--border);border-radius:14px;overflow:hidden}.dressup-base,.dressup-layer{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain}.dressup-rating{position:absolute;top:6px;left:6px;z-index:3;padding:4px 8px;background:#1a0f24d9;border:1px solid var(--accent);border-radius:8px;font-size:.72rem;color:var(--accent);max-width:calc(100% - 12px);line-height:1.5;pointer-events:none}.dressup-wearing{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.worn-tag{cursor:pointer;transition:all .12s}.worn-tag:hover{border-color:#ff5c5c;color:#ff8a8a;background:#ff5c5c2e}.dressup-groups{flex:1;display:flex;flex-direction:column;gap:14px}.dressup-group-title{font-weight:600;color:var(--accent-2);margin-bottom:8px;font-size:.95rem}.dressup-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}.dressup-item{position:relative;background:var(--card);border:2px solid var(--border);border-radius:10px;padding:6px;text-align:center;cursor:pointer;transition:all .12s}.dressup-item:hover{border-color:var(--accent);transform:translateY(-2px);z-index:5}.dressup-item.equipped{border-color:var(--accent);background:#ff69b41f}.dressup-item img{width:100%;aspect-ratio:1;object-fit:contain;display:block}.dressup-item .ph{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:var(--accent-2)}.dressup-item-name{display:block;font-size:.62rem;color:var(--text-dim);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-tooltip{display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);width:200px;background:var(--card);border:1px solid var(--accent);border-radius:12px;padding:10px 12px;z-index:60;box-shadow:0 8px 28px #0000008c,0 0 16px #ff69b42e;pointer-events:none;text-align:left}.dressup-item:hover .item-tooltip{display:block}.tt-name{font-weight:600;font-size:.85rem;color:#fff;margin-bottom:4px}.tt-stats{font-size:.78rem;color:var(--accent);margin-bottom:4px}.tt-stats.dim{color:var(--text-dim)}.tt-desc{font-size:.72rem;color:var(--text-dim);line-height:1.5;max-height:110px;overflow-y:auto}.partner-card.selected{border-color:var(--accent);box-shadow:0 0 0 2px #ff69b466}.badge-ok{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:8px;background:#34d39926;color:var(--done)}.badge-no{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:8px;background:#ff64642e;color:#ff8a8a}.badge-info{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:8px;background:#c084fc2e;color:var(--accent-2)}.badge-go{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:8px;background:#fbbf2429;color:var(--accent)}.tier-head{margin:22px 0 10px;padding-left:14px;border-left:3px solid transparent;border-image:linear-gradient(180deg,var(--accent),var(--accent-2)) 1;color:var(--accent);font-size:1.08rem;font-weight:700;font-family:var(--font-art);letter-spacing:1px;text-shadow:0 0 12px rgba(255,105,180,.5)}.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;margin:10px 0 20px}.ach-item{text-align:center;padding:12px 6px;border-radius:12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08)}.ach-on{border-color:#fbbf2480;background:#fbbf241a}.ach-off{opacity:.45;filter:grayscale(.7)}.ach-icon{font-size:1.6rem;line-height:1.3}.ach-name{font-size:.78rem;margin-top:4px;color:var(--text)}.ach-toast{position:fixed;top:72px;left:50%;transform:translate(-50%) translateY(-20px);background:#fbbf24f2;color:#1a1a1a;font-weight:600;padding:10px 18px;border-radius:24px;font-size:.9rem;z-index:9999;opacity:0;pointer-events:none;transition:all .3s ease;max-width:90vw;text-align:center;box-shadow:0 6px 24px #0006}.ach-toast.show{opacity:1;transform:translate(-50%) translateY(0)}.profile-h{margin:26px 0 12px;font-size:1.05rem;font-weight:600;color:var(--accent)}.perk-card{display:flex;align-items:center;gap:12px;margin:12px 0;padding:12px 14px;border-radius:12px;background:#c084fc1a;border:1px solid rgba(192,132,252,.3)}.perk-icon{font-size:1.6rem}.perk-name{font-weight:600;color:var(--accent-2)}.perk-desc{font-size:.82rem;color:var(--text-dim);margin-top:2px}.exam-box{max-width:520px;margin:0 auto;padding:22px}.exam-q{font-size:1.25rem;margin-bottom:18px;color:var(--accent);font-family:var(--font-art)}.exam-options{display:flex;flex-direction:column;gap:10px}.exam-opt{padding:14px 16px;border-radius:var(--radius);cursor:pointer;text-align:left;background:var(--bg-2);border:1px solid var(--border);color:var(--text);font-size:.95rem;transition:all .15s;font-family:inherit}.exam-opt:hover{border-color:var(--accent);background:#ff69b41a;transform:translate(4px)}.exam-progress{height:6px;background:var(--bg-2);border-radius:3px;margin-top:20px;overflow:hidden}.exam-progress .progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:3px}.exam-rec{margin-bottom:18px}.rec-label{font-size:.9rem;color:var(--accent);font-weight:600;margin-bottom:8px}.cur-course{margin-bottom:16px;padding:12px 14px;border-radius:var(--radius);background:var(--card);border:1px solid var(--border)}.cur-course.cur-done{border-color:var(--done)}.cur-course-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.cur-course-name{font-weight:700;font-size:1rem;font-family:var(--font-art);letter-spacing:1px}.cur-badge{font-size:.72rem;padding:2px 8px;border-radius:10px}.cur-badge.ok{background:#34d39926;color:var(--done)}.cur-badge.go{background:#fbbf2429;color:var(--accent)}.cur-badge.no{background:#ff64642e;color:#ff8a8a}.cur-classes{display:flex;flex-direction:column;gap:6px}.cur-class{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;background:var(--bg-2);border:1px solid var(--border);text-decoration:none;color:var(--text);transition:all .15s}.cur-class:hover{border-color:var(--accent);transform:translate(3px)}.cur-class.done{opacity:.6;border-color:var(--done)}.cur-class.locked{opacity:.45}.cur-class-tier{font-size:.75rem;color:var(--text-dim);flex:none}.cur-class-name{flex:1;font-size:.9rem}.cur-class-state{flex:none;font-size:.85rem;color:var(--accent)}.degree-status{display:flex;align-items:center;gap:10px;margin:8px 0 16px}.prereq-card{position:relative}.prereq-card .badge-ok,.prereq-card .badge-no{position:absolute;top:8px;right:8px}.card-wrap{position:relative}.card-wrap .card-badge{position:absolute;top:8px;right:8px;z-index:2}.prereq-done .card{border-color:var(--done)}.progress{color:var(--text-dim);font-size:.8rem;font-weight:400}.lock-hint{margin:10px 0;padding:10px 14px;border-radius:10px;background:#ffa03c1f;border:1px solid rgba(255,160,60,.35);color:#ffb45e;font-size:.88rem}.progress-bar{height:8px;background:var(--bg-2);border-radius:6px;overflow:hidden;margin:8px 0}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:6px;transition:width .3s}.status-pill{font-size:.72rem;padding:2px 8px;border-radius:8px;background:#c084fc2e;color:var(--accent-2);margin-left:6px}a.list-item{display:block;text-decoration:none;color:var(--text);transition:border-color .15s,background .15s}a.list-item:hover{border-color:var(--accent);background:var(--card-hover)}.list-title{font-weight:600;font-size:1.05rem;margin-bottom:4px;color:var(--accent-2)}.list-sub{color:var(--text-dim);font-size:.85rem}.list-sub.dim{font-size:.78rem;opacity:.75;margin-top:2px}.join-btn{margin-top:10px;padding:6px 16px;border-radius:10px;cursor:pointer;font-size:.85rem;border:1px solid var(--accent);background:transparent;color:var(--accent);transition:all .15s}.join-btn:hover{background:var(--accent);color:#fff}.join-btn.joined{border-color:var(--done);color:var(--done)}.card-wrap .card-join{position:absolute;bottom:10px;right:10px;z-index:2;margin-top:0;background:var(--card)}.card-wrap .card-join.joined{background:var(--card)}.section{margin-bottom:20px}.section h3{margin:16px 0 8px;color:var(--accent-2)}.stat-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border);font-size:.92rem}.stat-label{color:var(--text-dim)}.rating-row,.wearing{display:flex;flex-wrap:wrap;gap:6px}.more-links{display:flex;flex-wrap:wrap;gap:8px}.more-links a{color:var(--accent-2);text-decoration:none;padding:6px 14px;border:1px solid var(--border);border-radius:10px;font-size:.85rem;transition:all .15s}.more-links a:hover{border-color:var(--accent);color:var(--text)}.profile-wrap{padding:8px 0}.profile-card{display:flex;flex-wrap:wrap;align-items:center;gap:16px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px}.profile-avatar{width:84px;height:84px;border-radius:50%;flex:none;background:linear-gradient(135deg,var(--accent),var(--accent-2));display:flex;align-items:center;justify-content:center;font-size:2rem;color:#fff;font-weight:700;overflow:hidden;border:2px solid var(--border);cursor:pointer;position:relative;transition:filter .15s}.profile-avatar:hover{filter:brightness(.85)}.profile-avatar:after{content:"📷";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000073;color:#fff;font-size:1.3rem;opacity:0;transition:opacity .15s}.profile-avatar:hover:after{opacity:1}.profile-avatar img{width:100%;height:100%;object-fit:cover;display:block}.profile-avatar.readonly{cursor:default}.profile-avatar.readonly:after{display:none}.profile-avatar.readonly:hover{filter:none}.profile-info{flex:1;min-width:160px}.profile-name{font-size:1.3rem;font-weight:700}.profile-sub{color:var(--text-dim);font-size:.85rem;margin-top:2px}.profile-actions{display:flex;flex-wrap:wrap;gap:8px;width:100%}.profile-actions .enroll-btn,.profile-actions .danger-btn{width:auto;padding:8px 16px;font-size:.88rem}.profile-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.pstat{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px;text-align:center}.pstat-n{font-size:1.4rem;font-weight:700;color:var(--accent)}.pstat-dim{font-size:.75rem;font-weight:400;color:var(--text-dim)}.pstat-l{color:var(--text-dim);font-size:.8rem;margin-top:2px}.profile-h{margin:18px 0 8px;color:var(--accent-2)}.activity{display:flex;flex-direction:column;gap:6px}.act-item{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 12px}.act-icon{font-size:1.1rem;flex:none}.act-avatar{width:40px;height:40px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;font-weight:700;font-size:1rem;text-decoration:none;transition:transform .15s,box-shadow .15s}.act-avatar:hover{transform:scale(1.1);box-shadow:0 0 12px #ff69b480}.act-avatar img{width:100%;height:100%;object-fit:cover;display:block}.act-body{flex:1;min-width:0}.act-text{flex:1;font-size:.9rem}.act-tag{display:inline-block;padding:1px 7px;border-radius:6px;font-size:.68rem;margin-right:6px;vertical-align:1px;white-space:nowrap;background:#ff69b429;color:var(--accent)}.act-wear{font-size:.76rem;color:var(--text-dim);margin-top:3px}.act-time{color:var(--text-dim);font-size:.72rem;flex:none;white-space:nowrap}.text-input{width:100%;padding:10px;border-radius:10px;border:1px solid var(--border);background:var(--bg-2);color:var(--text);font-size:.95rem;font-family:inherit}.text-input:focus{outline:none;border-color:var(--accent)}textarea.text-input{resize:vertical}.settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:10px 0}.settings-field{display:flex;flex-direction:column;gap:4px}.settings-field label{font-size:.78rem;color:var(--text-dim)}.danger-btn{display:block;width:100%;padding:12px;font-size:1rem;cursor:pointer;border:1px solid #ff5c5c;border-radius:12px;color:#ff8a8a;background:#ff5c5c14;transition:all .15s}.danger-btn:hover{background:#ff5c5c33}.wardrobe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.wardrobe-item{display:block;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px;text-decoration:none;color:var(--text);transition:all .15s}.wardrobe-item:hover{border-color:var(--accent)}.wardrobe-item.worn{border-color:var(--accent);background:#ff69b41a}.wardrobe-name{font-weight:600;font-size:.9rem}.wardrobe-stats{font-size:.72rem;color:var(--done);margin-top:4px}.wardrobe-desc{font-size:.75rem;color:var(--text-dim);margin-top:4px}.metro-display{text-align:center;font-size:3rem;font-weight:700;color:var(--accent);margin:12px 0}.metro-slider{width:100%;margin:12px 0;accent-color:var(--accent)}.rhythm-game{display:flex;flex-direction:column;gap:14px;align-items:center;padding:12px 0}.rhythm-stat{display:flex;gap:20px;font-size:1rem;color:var(--accent-2)}.rhythm-circle{width:180px;height:180px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--card);border:3px solid var(--border);font-size:1.4rem;font-weight:700;color:var(--text);transition:transform .08s,border-color .08s,box-shadow .08s}.rhythm-circle.beat{border-color:var(--accent);box-shadow:0 0 30px #ff69b499;transform:scale(1.06)}.rhythm-tap{width:100%;max-width:320px;padding:18px;font-size:1.1rem;cursor:pointer;border:none;border-radius:14px;color:#fff;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:opacity .15s,transform .05s}.rhythm-tap:active{transform:scale(.97)}.rhythm-tap:disabled{opacity:.4;cursor:not-allowed}.city-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-top:12px}.city-loc{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 10px;background:var(--card);border:1px solid var(--border);border-radius:14px;cursor:pointer;color:var(--text);transition:all .15s}.city-loc:hover{border-color:var(--accent);transform:translateY(-3px);background:var(--card-hover)}.city-icon{font-size:2.2rem}.city-name{font-size:.95rem;font-weight:600}.city-event{margin:12px 0}.city-event-card{background:#ff69b41f;border:1px solid var(--accent);border-radius:12px;padding:14px}.city-event-text{font-size:.95rem}.city-event-money{font-size:1.1rem;font-weight:700;color:var(--accent);margin-top:6px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-box{width:100%;max-width:340px;background:var(--card);border:1px solid var(--border);border-radius:18px;padding:32px 28px;text-align:center;display:flex;flex-direction:column;gap:12px}.login-logo{font-size:3rem}.login-title{font-size:1.8rem;font-weight:700;background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.login-sub{color:var(--text-dim);font-size:.9rem}.login-tabs{display:flex;gap:8px;justify-content:center}.login-tab{flex:1;padding:8px 0;border-radius:10px;cursor:pointer;font-size:.9rem;background:transparent;border:1px solid var(--border);color:var(--text-dim);transition:all .15s}.login-tab.active{background:linear-gradient(90deg,var(--accent),var(--accent-2));color:#fff;border-color:transparent}.login-err{color:#ff8a8a;font-size:.85rem}.login-hint{color:var(--text-dim);font-size:.75rem;opacity:.7}.avatar-pick{display:flex;align-items:center;gap:12px}.avatar-preview{width:64px;height:64px;border-radius:50%;flex:none;background:var(--bg-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:1.6rem;overflow:hidden;color:var(--text-dim)}.avatar-preview img{width:100%;height:100%;object-fit:cover;display:block}.avatar-btn{flex:1;padding:9px 12px;border-radius:10px;cursor:pointer;font-size:.85rem;background:transparent;border:1px dashed var(--border);color:var(--text-dim);transition:all .15s}.avatar-btn:hover{border-color:var(--accent);color:var(--text)}.admin-wrap{padding:16px 0}.admin-loading{text-align:center;color:var(--text-dim);padding:40px}.admin-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.admin-top-left{display:flex;align-items:center;gap:12px}.admin-title{font-size:1.4rem;margin:0}.admin-back{color:var(--accent);text-decoration:none;font-size:.9rem}.admin-exit{color:var(--text-dim);text-decoration:none;font-size:.85rem}.admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.admin-cat{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px;text-align:center;cursor:pointer;transition:all .15s}.admin-cat:hover{border-color:var(--accent);background:var(--card-hover)}.admin-cat-icon{font-size:2rem}.admin-cat-label{font-weight:600;margin:6px 0 2px}.admin-cat-count{color:var(--text-dim);font-size:.8rem}.admin-hint{color:var(--text-dim);font-size:.8rem;margin-top:16px;opacity:.8}.admin-add{margin-bottom:12px}.admin-list{display:flex;flex-direction:column;gap:8px}.admin-item{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 14px;cursor:pointer;transition:all .15s}.admin-item:hover{border-color:var(--accent)}.admin-item-id{font-weight:600;font-size:.9rem;color:var(--accent);margin-bottom:4px}.admin-item-brief{color:var(--text-dim);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-edit{display:flex;flex-direction:column;gap:10px;max-width:720px}.admin-edit-id{font-weight:600;color:var(--accent)}.admin-field-label{color:var(--text-dim);font-size:.8rem}.admin-textarea{width:100%;background:var(--card);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:10px;font-size:.9rem;font-family:inherit;resize:vertical}.admin-json{font-family:monospace;font-size:.8rem}.admin-json-wrap{margin-top:4px}.admin-json-toggle{color:var(--text-dim);font-size:.8rem;cursor:pointer}.admin-actions{display:flex;align-items:center;gap:12px;margin-top:6px}.admin-save-msg{font-size:.85rem}.admin-save-msg.ok{color:#6fcf97}.admin-save-msg.err{color:#ff8a8a}@media (max-width: 600px){.grid{grid-template-columns:repeat(2,1fr)}.dressup-layout{flex-direction:column}.dressup-preview{position:static;flex:none;width:100%}.admin-grid{grid-template-columns:repeat(2,1fr)}}#chat-root{position:fixed;z-index:9999}.chat-fab,.nav-icon{width:38px;height:38px;border-radius:50%;border:1px solid var(--border);cursor:pointer;background:var(--card);color:#fff;display:flex;align-items:center;justify-content:center;flex:none;transition:transform .15s,border-color .15s,background .15s;text-decoration:none}.chat-fab:hover,.nav-icon:hover{transform:scale(1.08);border-color:var(--accent);background:var(--card-hover)}.chat-fab img,.nav-icon img{width:20px;height:20px;display:block;object-fit:contain}.nav-ico{width:18px;height:18px;vertical-align:-3px;margin-right:5px;display:inline-block;object-fit:contain}.chat-panel{position:fixed;right:18px;top:64px;width:320px;height:440px;max-height:calc(100vh - 84px);background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:0 12px 40px #00000080;display:flex;flex-direction:column;overflow:hidden;opacity:0;transform:translateY(-8px) scale(.97);pointer-events:none;transition:opacity .2s,transform .2s}.chat-panel.open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.chat-panel.minimized{height:auto}.chat-panel.minimized .chat-messages,.chat-panel.minimized .chat-input-row{display:none}.chat-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:linear-gradient(90deg,var(--accent),var(--accent-2));color:#fff;font-weight:600;cursor:move;-webkit-user-select:none;user-select:none;touch-action:none}.chat-head-btns{display:flex;align-items:center;gap:6px;flex-shrink:0}.chat-min,.chat-close{border:none;background:#ffffff40;color:#fff;width:24px;height:24px;border-radius:50%;cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center}.chat-min:hover,.chat-close:hover{background:#fff6}.chat-messages{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px}.chat-loading{color:var(--text-dim);text-align:center;font-size:.85rem;padding:20px 0}.chat-msg{display:flex;flex-direction:column;align-items:flex-start;max-width:85%}.chat-msg.mine{align-self:flex-end;align-items:flex-end}.chat-msg-meta{display:flex;gap:6px;font-size:.72rem;color:var(--text-dim);margin-bottom:2px}.chat-msg-name{color:var(--accent-2)}.chat-msg-bubble{background:var(--bg-2);border:1px solid var(--border);border-radius:12px 12px 12px 4px;padding:8px 12px;font-size:.9rem;word-break:break-word;white-space:pre-wrap}.chat-msg.mine .chat-msg-bubble{background:linear-gradient(135deg,var(--accent),var(--accent-2));border:none;color:#fff;border-radius:12px 12px 4px}.chat-input-row{display:flex;gap:8px;padding:10px;border-top:1px solid var(--border)}.chat-input{flex:1;background:var(--bg-2);border:1px solid var(--border);border-radius:20px;padding:8px 14px;color:var(--text);font-size:.9rem;outline:none}.chat-input:focus{border-color:var(--accent)}.chat-send{border:none;background:linear-gradient(90deg,var(--accent),var(--accent-2));color:#fff;border-radius:20px;padding:0 16px;cursor:pointer;font-size:.9rem}.chat-send:hover{filter:brightness(1.1)}@media (max-width: 600px){.chat-panel{right:10px;left:10px;width:auto}}.chat-img-btn{border:1px solid var(--border);background:var(--bg-2);color:var(--text);border-radius:50%;width:36px;height:36px;cursor:pointer;font-size:15px;flex-shrink:0}.chat-img-btn:hover{border-color:var(--accent)}.chat-img{max-width:200px;max-height:200px;border-radius:8px;display:block;cursor:pointer}.chat-msg.mine .chat-msg-bubble{padding:4px}.chat-msg .chat-msg-bubble:has(.chat-img){background:transparent;border:none;padding:0}.roulette-wrap{display:flex;flex-direction:column;align-items:center;gap:14px;padding:24px 16px}.roulette-wheel{font-size:6rem;line-height:1}.roulette-wheel.spinning{animation:roulette-spin .9s linear infinite}@keyframes roulette-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.roulette-result{font-size:1rem;color:var(--accent);min-height:1.5em;text-align:center}
