:root{--text:#1c1917;--muted:#78716c;--hint:#a8a29e;--hair:#e7e5e4;--accent:#E85A5A;--accent-soft:rgba(232,90,90,.1);--accent-grad:linear-gradient(145deg,#E85A5A 0%,#F08484 100%);--success:#059669;--success-soft:rgba(5,150,105,.12);--danger:#dc2626;--danger-soft:rgba(220,38,38,.1);--safeT:env(safe-area-inset-top,0px);--safeB:env(safe-area-inset-bottom,0px);--maxW:428px;--navH:68px;
      --font-body:"Noto Sans SC","PingFang SC","Hiragino Sans GB",sans-serif;--font-display:"Noto Serif SC","Songti SC",serif;
      --page-bg:#fafaf9;--page-mesh:radial-gradient(ellipse 100% 70% at 100% -15%,rgba(232,90,90,.07),transparent 52%),radial-gradient(ellipse 70% 50% at -5% 105%,rgba(28,25,23,.04),transparent 48%),#fafaf9;
      --glass-bg:rgba(255,255,255,.78);--sheet-bg:rgba(255,255,255,.98);--card-bg:#fff;--btn-bg:#fff;--input-bg:#fff;--overlay-dim:rgba(28,25,23,.42);--tab-bg:transparent;--tab-active-bg:rgba(232,90,90,.1);--ai-chat-bg:rgba(250,250,249,.88);
      --card-shadow:0 1px 2px rgba(28,25,23,.04),0 8px 28px rgba(28,25,23,.05);--card-shadow-hover:0 2px 4px rgba(28,25,23,.06),0 12px 32px rgba(28,25,23,.08);--shadow-modal:0 -8px 40px rgba(28,25,23,.12);
      --radius-sm:10px;--radius-md:14px;--radius-lg:16px;--radius-nav-top:22px;--ease-spring:cubic-bezier(.22,1,.36,1);--tap-transition:transform .22s var(--ease-spring),opacity .22s ease,box-shadow .22s ease;
      --fabTodoGrad:linear-gradient(145deg,#E85A5A,#C94545);--fabNotesGrad:linear-gradient(145deg,#F08484,#E85A5A)}
    *,*::before,*::after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
    html{-webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-x:hidden;width:100%;max-width:100vw}
    html,body{min-height:100%;height:100%;margin:0}
    body{font-family:var(--font-body);font-size:15px;color:var(--text);background:var(--page-mesh);overflow-x:hidden;width:100%;max-width:100vw;position:relative;-webkit-font-smoothing:antialiased}
    img,video,canvas,svg{max-width:100%;height:auto}
    .app{min-height:100%;width:100%;max-width:100vw;padding:calc(12px + var(--safeT)) 0 calc(var(--navH) + 20px + var(--safeB));display:flex;justify-content:center;overflow-x:hidden}.container{width:100%;max-width:100%;margin:0 auto;padding:0 16px;overflow-x:hidden}
    .screen,.panel,.glass,.sheet,.overlay{max-width:100%;min-width:0}
    .screen.active{width:100%}
    .sheet{width:100%;max-width:min(100%,100vw);box-sizing:border-box}
    .topbar,.sheetTop,.scheduleTopActions,.notesTop,.journal-date-nav{max-width:100%;min-width:0}
    .scheduleTopActions{flex-wrap:wrap}
    #screenSchedule .panel,#screenNotes .panel,#screenMe .panel,#screenNoteDetail .panel,#screenCalendar .panel,#screenTools .panel{width:100%;max-width:100%;box-sizing:border-box;overflow-x:hidden}
    .glass{background:var(--glass-bg);border:1px solid var(--hair);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);backdrop-filter:blur(10px)}
    .screen{display:none}.screen.active{display:block}.panel{padding:16px;margin-top:10px;border-radius:var(--radius-lg)}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;gap:10px}
    .topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
    #btnOpenAiChat{display:inline-flex;align-items:center;justify-content:center;height:36px;line-height:1.2;padding:0 12px;vertical-align:middle;white-space:nowrap}
    .kicker{margin:0 0 6px;font-size:12px;color:var(--muted)}.title{margin:0;font-size:18px;font-weight:600}.hint{margin:6px 0 0;font-size:12px;color:var(--muted)}
    .chip,.pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--hair);background:var(--card-bg);font-size:12px;font-weight:700}.chip{padding:6px 10px;gap:8px}.pill{padding:4px 10px}
    .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;height:44px;padding:0 22px;border-radius:999px;border:1px solid rgba(226,232,240,.95);background:linear-gradient(180deg,#fff 0%,#fafbfc 100%);color:var(--text);font-weight:700;font-size:15px;box-shadow:0 1px 0 rgba(255,255,255,.9) inset,0 2px 8px rgba(15,23,42,.06);cursor:pointer}.btn.primary{background:var(--accent-grad);border:0;color:#fff;box-shadow:0 6px 18px rgba(232,90,90,.3),inset 0 1px 0 rgba(255,255,255,.28)}.btn.danger{background:linear-gradient(180deg,rgba(254,242,242,.98),rgba(254,226,226,.9));border-color:rgba(248,113,113,.42);color:#dc2626;box-shadow:0 1px 0 rgba(255,255,255,.65) inset}
    input,textarea,select,button{max-width:100%}
    input,textarea,select{width:100%;border:1px solid var(--hair);border-radius:12px;padding:10px 12px;background:var(--input-bg);color:var(--text);font-size:15px} textarea{min-height:110px;word-break:break-word}
    pre,code{max-width:100%;overflow-x:auto}
    .nav{position:fixed;left:0;right:0;bottom:0;padding-bottom:var(--safeB);display:flex;justify-content:center;z-index:40;pointer-events:none}.nav .inner{width:100%;max-width:var(--maxW);margin:0 16px 0;height:var(--navH);display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:8px 10px;pointer-events:auto;border-radius:var(--radius-nav-top) var(--radius-nav-top) 0 0;box-shadow:0 -2px 12px rgba(0,0,0,.04);background:var(--card-bg);border:1px solid var(--hair);border-bottom:0}
    .tab{border-radius:var(--radius-lg);border:1px solid var(--hair);background:var(--tab-bg);color:var(--muted);font-size:11px;font-weight:800;padding:6px 4px;line-height:1.25;transition:transform .2s var(--ease-spring),color .2s ease,background .2s ease,border-color .2s ease}.tab.active{background:var(--tab-active-bg);border-color:rgba(255,138,138,.42);color:var(--accent);transform:translateY(-4px)}
    .fab{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--navH) + 14px + var(--safeB));z-index:35;width:min(var(--maxW),100%);padding:0 16px;display:none}.fabInner{display:flex;justify-content:flex-end;gap:10px}.fabBtn{width:56px;height:56px;border:0;border-radius:20px;color:#fff;font-size:24px;font-weight:900}
    #btnTodoFab{background:var(--fabTodoGrad)}
    .fabNotes{justify-content:flex-end}
    #btnNotesFab{background:var(--fabNotesGrad)}
    .weekdayTabs,.weekColumns{display:flex;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}.weekdayTabs::-webkit-scrollbar,.weekColumns::-webkit-scrollbar{display:none}
    .weekdayTabs{gap:8px}.weekdayBtn{border:1px solid var(--hair);background:#fff;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:800;white-space:nowrap;color:var(--muted)}.weekdayBtn.active{background:var(--accent-soft);color:var(--accent);border-color:rgba(255,138,138,.42)}.weekdayBtn.today{border-color:rgba(232,90,90,.45);box-shadow:0 0 0 2px rgba(232,90,90,.12) inset}
    .weekColumns{gap:10px;padding-top:8px}.dayCol{flex:0 0 130px;min-width:130px;min-height:360px;border:1px solid var(--hair);border-radius:var(--radius-lg);background:var(--card-bg);padding:10px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--card-shadow)}
    .dayHead{border-bottom:1px dashed rgba(122,139,158,.25);padding-bottom:8px}.dayTitle{font-size:13px;font-weight:900;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dayEmpty{margin:auto 0;text-align:center;color:var(--muted);font-size:12px}
    .todayTag{font-size:10px;font-weight:800;padding:2px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}
    .weekendTag{font-size:10px;font-weight:800;padding:2px 6px;border-radius:999px;background:rgba(122,139,158,.14);color:#64748b}
    .dayEmptyHint{flex:1;min-height:140px;margin:6px 0;display:flex;align-items:center;justify-content:center;text-align:center;padding:14px 10px;border:1px dashed rgba(122,139,158,.38);border-radius:16px;background:rgba(255,255,255,.5);color:var(--muted);font-size:13px;font-weight:650;line-height:1.5}
    .emptyStateTasks{text-align:center;padding:26px 14px 18px;color:var(--muted);font-size:14px;font-weight:650;line-height:1.55}
    .emptyStateTasks::before,.emptyStateNotes::before{display:block;font-size:40px;line-height:1.2;margin-bottom:10px;opacity:.88}
    .emptyStateTasks::before{content:"✨"}
    .emptyStateNotes::before{content:"📝"}
    .emptyStateReview{padding:14px 10px;text-align:center;color:var(--muted);font-size:13px;font-weight:650;line-height:1.55}
    .emptyStateTasks .bouncePlus{display:block;font-size:30px;font-weight:900;margin-top:12px;animation:bouncePlus 1s ease-in-out infinite;color:rgba(232,90,90,.45)}
    @keyframes bouncePlus{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
    .emptyStateNotes{padding:22px 12px;text-align:center;color:var(--muted);font-size:14px;font-weight:650;line-height:1.55}
    .courseCard,.course-card{border-radius:var(--radius-lg);padding:10px 12px;border:1px solid var(--hair);background:var(--card-bg);box-shadow:var(--card-shadow);position:relative;-webkit-touch-callout:none;user-select:none;cursor:pointer;min-width:0;height:auto;min-height:60px}.courseCode{font-size:11px;font-weight:600;color:var(--muted)}.courseName,.course-name{margin-top:4px;font-size:14px;font-weight:600;line-height:1.35;word-break:break-word;white-space:normal;overflow:visible;text-overflow:clip;display:block;max-width:100%;color:var(--text)}.courseMeta{margin-top:4px;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.courseTimeMeta{font-size:11px;color:var(--muted)}
    .dayCol:has(.todayTag) .courseCard:not(.conflictCard):not(.leaveCard){border-left:4px solid var(--accent)}
    /* 关键修改：课表卡片上午/下午视觉分层（左边框色） */
    .courseCard.amCard{border-left:4px solid rgba(96,165,250,.75)}
    .courseCard.pmCard{border-left:4px solid rgba(251,146,60,.75)}
    .courseCard.conflictCard{border:2px dashed #FF3B30 !important;background:rgba(255,59,48,.12) !important}
    .courseCard.attWarn{box-shadow:0 0 0 2px rgba(245,158,11,.55) inset}
    .attWarnBadge{margin-top:6px;display:inline-block;padding:2px 8px;border-radius:999px;background:rgba(245,158,11,.2);color:#B45309;font-size:10px;font-weight:900}
    .attWarnSummary{margin-top:6px;padding:8px 10px;border-radius:12px;border:1px solid rgba(245,158,11,.35);background:rgba(255,247,237,.85);font-size:12px;color:#92400E}
    .inProgress::after{content:"";position:absolute;inset:-1px;border-radius:18px;border:2px solid rgba(248,113,113,.9);animation:pulse 1.7s infinite}@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}
    .course-next::after{content:"";position:absolute;inset:-1px;border-radius:18px;border:2px solid rgba(34,197,94,.65);animation:breathGreen 2.2s ease-in-out infinite}
    @keyframes breathGreen{0%,100%{opacity:.4}50%{opacity:1}}
    .progressBadge{margin-top:6px;display:inline-block;padding:2px 8px;border-radius:999px;background:rgba(255,99,71,.18);color:#D84A36;font-size:10px;font-weight:900}
    .nextSoonBadge{margin-top:6px;display:inline-block;padding:2px 8px;border-radius:999px;background:rgba(34,197,94,.16);color:#15803d;font-size:10px;font-weight:900}
    .leaveCard{filter:grayscale(1);opacity:.55}.course-card--ended{opacity:.58;filter:grayscale(.3)}.breakTip{text-align:center;font-size:11px;color:#6E7D90;border:1px dashed rgba(122,139,158,.28);border-radius:10px;padding:6px}
    .absentBadge{margin-top:6px;display:inline-block;padding:2px 8px;border-radius:999px;background:rgba(255,59,48,.18);color:#D93025;font-size:10px;font-weight:900}
    .dayTodoDivider{margin-top:2px;padding-top:8px;border-top:1px dashed rgba(122,139,158,.28)}
    .dayTodoTitle{font-size:11px;font-weight:900;color:#64748b}
    .dayTodoCard{border-radius:12px;padding:8px 10px;border:1px solid rgba(122,139,158,.22);background:rgba(248,250,252,.92);display:flex;gap:8px;align-items:flex-start;font-size:12px}
    .dayTodoCard .dot{font-weight:900;color:#64748b;line-height:1.2}
    .dayTodoMore{margin-top:4px;border:1px dashed rgba(122,139,158,.38);background:rgba(255,255,255,.7);border-radius:10px;padding:5px 8px;font-size:11px;color:#64748b}
    .calHead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}
    .calNavBtn{height:34px;padding:0 10px;border-radius:12px;border:1px solid var(--hair);background:#fff;font-weight:800}
    .calTitle{font-size:16px;font-weight:900}
    .calGrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:10px}
    .calWeek{font-size:11px;color:#7A8B9E;text-align:center;font-weight:800}
    .calCell{min-height:68px;border-radius:12px;border:1px solid var(--hair);background:rgba(255,255,255,.88);padding:6px;display:flex;flex-direction:column;gap:3px}
    .calCell.muted{opacity:.42}
    .calCell.today{border-color:rgba(232,90,90,.42);box-shadow:0 0 0 2px rgba(232,90,90,.1) inset}
    .calCell .d{font-size:12px;font-weight:900}
    .calMeta{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:10px}
    .calTodo{color:#5278b8;background:rgba(82,120,184,.12);padding:1px 6px;border-radius:999px;font-weight:800}
    .calExam{color:#D84A36;font-weight:900}
    .calCourseDot{display:inline-block;width:6px;height:6px;border-radius:999px;background:#9aa7b8}
    .list{display:flex;flex-direction:column;gap:12px;margin-top:10px}
    .taskRow{position:relative;border-radius:var(--radius-lg);padding:12px 36px 12px 32px;background:var(--card-bg);border:1px solid var(--hair);box-shadow:var(--card-shadow);touch-action:pan-y;-webkit-touch-callout:none;user-select:none;transition:opacity .35s ease,transform .35s ease,filter .35s ease}
    .taskPin{position:absolute;top:10px;right:10px;font-size:14px;line-height:1;opacity:.9;pointer-events:none}
    .taskRow .bar{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;background:var(--muted)}
    .taskTitle{font-size:15px;font-weight:600;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:6px;color:var(--text)}
    /* 关键修改：地点信息显示完整，不再只显示图标 */
    .taskMeta{margin-top:5px;font-size:11px;color:var(--muted);display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}
    .taskLoc{font-size:11px;color:var(--muted);white-space:normal;word-break:break-word;line-height:1.35}
    .taskRow.task-completing{opacity:0;transform:scale(.88);filter:blur(1px)}
    .overlay{position:fixed;inset:0;z-index:60;display:none;background:var(--overlay-dim);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.overlay.show{display:block !important}.sheet{position:absolute;left:0;right:0;bottom:0;max-height:88vh;overflow:auto;padding:16px 16px calc(16px + var(--safeB));border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--sheet-bg);color:var(--text);box-shadow:var(--shadow-modal);transform:translateY(100%);opacity:.98;transition:transform .25s ease,opacity .25s ease}.overlay.show .sheet{transform:translateY(0);opacity:1}.sheetTop{display:flex;justify-content:space-between;align-items:center}.iconBtn{height:36px;padding:0 12px;border-radius:40px;border:1px solid var(--hair);background:var(--btn-bg);color:var(--text)}
    button,.tab,.courseCard,.taskRow,.noteGroupCard,.calCell,.me-setting-row,.iconBtn,.noteItem,.dayTodoCard{transition:transform .2s ease,opacity .2s ease,box-shadow .2s ease}
    .btn:active,.courseCard:active,.taskRow:active{transform:scale(.97)}
    .pressing{transform:scale(.97)!important}
    .list-enter{animation:fadeInUp .35s ease both}
    .iconBtn-ghost,.btn-share-schedule{background:transparent!important;border-color:transparent!important;box-shadow:none!important;color:#64748b;font-size:18px;padding:0 8px;min-width:36px}
    .btn-share-schedule:active{transform:scale(.97)}
    .ai-quick-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:12px}
    .ai-quick-btn{text-align:left;padding:14px 16px;font-weight:800;border-radius:16px}
    @keyframes fadeInUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
    .scheduleTopActions{display:flex;align-items:center;justify-content:flex-end;gap:12px}
    .scheduleActionGroup{display:flex;align-items:center;gap:6px}
    .scheduleTopActions .importBtn{padding:8px 10px;font-size:16px;line-height:1}
    #btnScheduleEdit{font-size:12px;font-weight:800;gap:4px;white-space:nowrap}
    #btnScheduleEdit.active{background:rgba(255,59,48,.14);border-color:rgba(255,59,48,.45);color:#D93025}
    .scheduleEditBar{display:none;gap:8px;margin-top:10px;flex-wrap:wrap}
    .scheduleEditBar .btn{flex:1;min-width:0}
    .courseCard.schedule-edit{touch-action:manipulation}
    .courseCard.schedule-selected{box-shadow:0 0 0 2px rgba(255,59,48,.75) inset}
    .courseDeleteBadge{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border:0;border-radius:50%;background:#FF3B30;color:#fff;font-size:18px;font-weight:900;line-height:22px;text-align:center;padding:0;box-shadow:0 2px 8px rgba(255,59,48,.35);z-index:3;cursor:pointer}
    .importBtn{height:36px;padding:0 12px;border-radius:40px;border:0;background:var(--accent-grad);color:#fff;font-weight:800;box-shadow:0 4px 14px rgba(232,90,90,.22)}
    #todoBubbleBackdrop{position:fixed;inset:0;z-index:69;background:rgba(15,23,42,.28);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .28s ease}
    #todoBubbleBackdrop.show{opacity:1;pointer-events:auto}
    #todoBubblePanel{position:fixed;left:50%;top:50%;z-index:70;width:min(300px,92vw);border-radius:22px;padding:12px;background:rgba(255,255,255,.97);display:none;opacity:0;transform:translate(-50%,-46%) scale(.9);transition:opacity .32s cubic-bezier(.22,1,.36,1),transform .32s cubic-bezier(.22,1,.36,1);box-shadow:0 20px 50px rgba(28,25,23,.14);border:1px solid var(--hair)}
    #todoBubblePanel.show{display:block}
    #todoBubblePanel.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}
    .tbTimeHint{font-size:11px;color:var(--muted);margin-top:4px}
    .todoLocBlock{margin-top:8px}
    #tbMapWrap{margin-top:8px}
    #tbMapFrame{width:100%;height:140px;border:1px solid var(--hair);border-radius:12px;background:#f8fafc}
    .taskLocLink{color:#5278b8;text-decoration:underline;cursor:pointer}
    .taskHistoryToggle{display:flex;gap:8px;margin-top:10px}
    .taskHistoryToggle .btn{flex:1;font-size:12px}
    #tasksHome{display:flex;flex-direction:column;gap:12px}
    #tasksHistory{display:none;flex-direction:column;gap:8px;margin-top:10px}
    #tasksHistory.show{display:flex}
    .taskHistoryRow{position:relative;border-radius:var(--radius-lg);padding:12px 12px 12px 32px;background:var(--card-bg);border:1px solid var(--hair);font-size:13px;box-shadow:var(--card-shadow)}
    .taskHistoryRow::before{content:"✓";position:absolute;left:12px;top:12px;font-size:13px;font-weight:700;color:var(--success);line-height:1}
    .taskHistoryRow strong{text-decoration:line-through;color:var(--muted);font-weight:600}
    .taskHistoryRow .doneAt{font-size:11px;color:var(--muted);margin-top:4px}
    .taskMemorialPreview{margin-top:6px;font-size:12px;color:#4B5A6C;line-height:1.45}
    .ai-action-card{align-self:stretch;padding:10px 12px;border-radius:14px;border:1px dashed rgba(139,92,246,.45);background:rgba(255,252,248,.95);font-size:12px}
    .ai-action-card .ai-action-btns{display:flex;gap:8px;margin-top:8px}
    .ai-action-card .ai-action-btns .btn{flex:1;font-size:12px;padding:8px}
    .importRow.conflict{border-color:rgba(255,59,48,.55);background:rgba(255,59,48,.06)}
    .ai-result-text{max-height:36vh;overflow:auto;border:1px solid var(--hair);background:#fff;border-radius:12px;padding:10px;white-space:pre-wrap;font-size:13px;line-height:1.6;color:#314155}
    .dowMulti{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
    .dowBtn{padding:8px 12px;border-radius:999px;border:1px solid var(--hair);background:#fff;font-size:12px;font-weight:800}
    .dowBtn.on{background:rgba(139,92,246,.16);border-color:rgba(139,92,246,.48);color:#6D3FD3}
    .copyList{max-height:42vh;overflow:auto;margin-top:10px;display:flex;flex-direction:column;gap:8px}
    .copyRow{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--hair);border-radius:12px;background:rgba(255,255,255,.86)}
    .weekTools{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
    .weekToolBtn{padding:6px 10px;border-radius:999px;border:1px solid var(--hair);background:#fff;font-size:11px;font-weight:800}
    .weekChips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
    .weekChip{min-width:42px;padding:7px 10px;border-radius:999px;border:1px solid var(--hair);background:#fff;font-size:11px;font-weight:800}
    .weekChip.on{background:rgba(139,92,246,.16);border-color:rgba(139,92,246,.48);color:#6D3FD3}
    .toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--navH) + 72px + var(--safeB));padding:8px 14px;border-radius:999px;background:rgba(46,58,75,.88);color:#fff;font-size:13px;display:none;z-index:90}.toast.show{display:block}
    .snackbar{position:fixed;top:12px;left:50%;transform:translateX(-50%);padding:10px 14px;border-radius:14px;background:rgba(255,255,255,.95);border:1px solid var(--hair);font-size:13px;display:none;z-index:90}.snackbar.show{display:block}.error{margin-top:8px;padding:8px;border-radius:12px;background:rgba(255,59,48,.1);color:#C62828;display:none}.error.show{display:block}
    .notesTop{display:flex;justify-content:space-between;align-items:center}.iconGhost{width:40px;height:40px;border-radius:12px;border:1px dashed var(--hair);background:rgba(255,255,255,.6);display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--muted)}
    .coursePickCard{border-radius:18px;padding:12px;background:rgba(255,255,255,.92);border:1px solid var(--hair);margin-bottom:10px;display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
    .coursePickCard h3{margin:0;font-size:15px;font-weight:800}.coursePickCard .meta{font-size:12px;color:var(--muted);margin-top:4px}.badgeCount{font-size:11px;font-weight:800;padding:3px 8px;border-radius:999px;background:rgba(16,185,129,.14);color:#047857}
    .noteTabs{display:flex;gap:8px;margin-top:12px;border-bottom:1px solid var(--hair);padding-bottom:8px}
    .noteTab{flex:1;padding:8px;border-radius:12px;border:1px solid transparent;background:transparent;font-weight:800;font-size:13px;color:var(--muted)}
    .noteTab.active{background:rgba(255,255,255,.9);border-color:var(--hair);color:var(--text)}
    .dateGroup{margin-top:14px}.dateGroup h4{margin:0 0 8px;font-size:12px;color:var(--muted);font-weight:800}
    .noteItem{border-radius:14px;padding:10px 12px;background:rgba(255,255,255,.88);border:1px solid var(--hair);margin-bottom:8px;font-size:13px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,.06)}
    .noteItem .d{font-size:11px;color:var(--muted);margin-bottom:4px}.noteItem .preview{color:#4B5A6C;font-size:12px;line-height:1.45;max-height:4.5em;overflow:hidden}
    .noteGroupGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px}
    .noteGroupCard{border-radius:var(--radius-lg);background:var(--card-bg);border:1px solid var(--hair);padding:16px;box-shadow:var(--card-shadow);transition:transform .15s ease,box-shadow .15s ease}
    .noteGroupCard:active{transform:scale(.97)}
    .noteGroupCard.note-course-card{text-align:left;width:100%;cursor:pointer}
    .noteGroupCard.note-course-card--empty{background:#faf9f8;border-color:var(--hair)}
    .note-course-card .note-course-name{font-size:16px;font-weight:700;line-height:1.4;white-space:normal;word-break:break-word;overflow:visible;text-overflow:unset}
    .note-course-card .note-course-code{display:block;margin-top:2px;font-size:11px;font-weight:600;color:var(--muted)}
    .note-course-card .note-course-meta{font-size:12px;color:#94a3b8;margin-top:8px}
    .noteGroupTitle{font-size:13px;font-weight:900;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .noteGroupSub{margin-top:5px;font-size:11px;color:#7A8B9E;display:flex;justify-content:space-between;align-items:center}
    .groupAiBox{margin-top:10px}
    .btn-leave{width:100%;margin-top:8px;border-radius:14px;border:1px solid rgba(255,180,120,.55);background:rgba(255,248,240,.95);color:#B85C30;font-weight:800}
    .btn-leave-cancel{width:100%;margin-top:8px;border-radius:14px;border:1px solid var(--hair);background:rgba(248,250,252,.95);color:var(--text);font-weight:800}
    .attachRow{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.attachChip{font-size:11px;padding:4px 8px;border-radius:8px;border:1px solid var(--hair);background:#fff}
    .previewImg{max-width:72px;max-height:72px;border-radius:10px;object-fit:cover;border:1px solid var(--hair)}
    #guideOverlay{z-index:100;background:rgba(15,23,42,.5)}#guideOverlay .sheet{max-height:82vh;border-radius:22px;padding-bottom:18px}
    .guide-slides-wrap{position:relative;margin-top:8px;border-radius:18px;overflow:hidden;border:1px solid var(--hair);background:rgba(255,255,255,.55)}
    .guide-slides{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;touch-action:pan-x}
    .guide-slides::-webkit-scrollbar{display:none}
    .guide-slide{flex:0 0 100%;scroll-snap-align:start;min-height:200px;padding:14px 14px 18px;box-sizing:border-box}
    .guide-slide-ill{font-size:42px;text-align:center;margin:6px 0 10px;line-height:1.2}
    .guide-dots{display:flex;justify-content:center;gap:8px;margin-top:12px}
    .guide-dot{width:8px;height:8px;border-radius:999px;background:rgba(122,139,158,.35);transition:background .2s,transform .2s}
    .guide-dot.on{background:var(--accent);transform:scale(1.15)}
    .guideCard{margin-top:0;padding:0;border:none;background:transparent;font-size:13px;line-height:1.55}
    .guideCard strong{display:block;margin-bottom:6px;font-size:14px}
    input[type="file"]{display:none}
    /* 「我的」页：可滚动设置区 + 底部固定退出（提升留存，减少误触退出） */
    .me-page{display:flex;flex-direction:column;min-height:calc(100dvh - var(--safeT) - var(--safeB) - 108px);max-height:calc(100dvh - var(--safeT) - var(--safeB) - 108px);overflow-y:auto}
    .me-profile-card{display:flex;align-items:center;gap:12px;margin-top:8px;padding:12px 14px;border-radius:16px;border:1px solid var(--hair);background:rgba(255,255,255,.92)}
    .me-avatar-wrap{flex-shrink:0;width:56px;height:56px;border-radius:50%;border:2px solid rgba(232,90,90,.35);background:linear-gradient(135deg,rgba(255,200,180,.5),rgba(255,240,230,.9));padding:0;overflow:hidden;cursor:pointer}
    .me-avatar-letter{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:22px;font-weight:900;color:#C62828}
    .me-avatar-img{width:100%;height:100%;object-fit:cover;display:block}
    .me-profile-meta{flex:1;min-width:0}
    .me-nickname-row{display:flex;align-items:center;gap:8px;width:100%}
    .me-nickname-row .me-nickname-input{flex:1;min-width:0}
    .me-nickname-row .btn{flex:0 0 auto;padding:6px 12px;font-size:12px}
    .me-nickname-input{width:100%;margin:0;padding:6px 8px;border-radius:10px;border:1px solid transparent;background:transparent;font:inherit;font-size:17px;font-weight:800;color:var(--text)}
    .me-nickname-input:focus{border-color:var(--hair);background:rgba(255,255,255,.9);outline:none}
    .me-profile-email{margin:4px 0 0;font-size:12px}
    .me-actions-col{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:10px;width:100%}
    .me-section{margin-top:12px}
    .me-section-title{margin:0 0 8px;text-align:center}
    .me-action-btn{display:block;width:90%;max-width:90%;margin:0 auto;padding:12px 16px;border-radius:40px;border:1px solid var(--hair);background:rgba(255,255,255,.92);font:inherit;font-size:14px;font-weight:700;color:var(--text);cursor:pointer;text-align:center;box-shadow:0 4px 14px rgba(40,60,90,.06)}
    .me-action-btn:active{opacity:.9;transform:scale(.98)}
    .me-action-btn-muted{color:#B42318;border-color:rgba(220,53,69,.25);background:rgba(255,248,248,.9)}
    .me-bundle-collapse{display:flex;flex-direction:column;align-items:center;width:100%;gap:8px}
    .me-bundle-collapse .me-collapse-toggle{display:flex;align-items:center;justify-content:center;gap:8px}
    .me-collapse-chevron{font-size:11px;color:var(--hint);transition:transform .22s cubic-bezier(.2,.9,.4,1.1)}
    .me-bundle-collapse.me-collapse-open .me-collapse-chevron{transform:rotate(180deg)}
    .me-collapse-body{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;max-height:0;overflow:hidden;opacity:0;transition:max-height .28s ease,opacity .2s ease}
    .me-collapse-body-open{max-height:200px;opacity:1}
    .me-account-collapse-wrap .me-collapse-body-open{max-height:280px}
    .about-contact{margin:12px 0 0;font-size:13px}
    .about-contact a{color:var(--muted);text-decoration:none}
    .about-contact a:hover{text-decoration:underline}
    .gpa-sheet{max-height:90vh;overflow:auto}
    .gpa-section{margin-top:14px;padding-top:12px;border-top:1px solid var(--hair)}
    .gpa-section:first-of-type{margin-top:0;padding-top:0;border-top:none}
    .gpa-hint{margin:0 0 10px}
    .gpa-course-list{display:flex;flex-direction:column;gap:8px}
    .gpa-course-row{display:grid;grid-template-columns:1fr 72px 108px 36px;gap:6px;align-items:center}
    .gpa-course-row input,.gpa-course-row select{width:100%;font-size:13px;padding:8px;border-radius:10px;border:1px solid var(--hair);background:var(--input-bg)}
    .gpa-row-del{padding:0;min-width:36px;height:36px;line-height:1;border-radius:10px}
    .gpa-actions-row{display:flex;gap:8px;margin-top:10px}
    .gpa-actions-row .btn{flex:1}
    .gpa-result{margin:10px 0 0;font-weight:700;color:var(--text)}
    .gpa-target-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
    .gpa-target-grid label{display:flex;flex-direction:column;gap:4px;font-size:12px}
    .gpa-target-grid input{width:100%;padding:8px;border-radius:10px;border:1px solid var(--hair);background:var(--input-bg)}
    .journal-open-list-btn{width:100%;margin:0 0 10px;font-size:13px}
    .journal-list-all{display:flex;flex-direction:column;gap:8px;max-height:58vh;overflow-y:auto;margin-top:8px}
    .journal-list-row{display:flex;align-items:center;gap:8px;width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--hair);background:#fff;text-align:left;cursor:pointer;transition:transform .15s ease}
    .journal-list-row:active{transform:scale(.98)}
    .journal-list-date{font-size:12px;font-weight:800;color:var(--text);flex:0 0 92px}
    .journal-list-mood{font-size:18px;flex:0 0 28px}
    .journal-list-preview{flex:1;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    @keyframes journalMoodFloat{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,calc(-50% - 56px)) scale(1.15)}}
    .schedule-holiday-banner{margin:8px 0;padding:10px 12px;border-radius:12px;background:linear-gradient(90deg,#f1f5f9,#e2e8f0);color:#475569;font-size:13px;font-weight:700;text-align:center}
    .holidayColHint{margin-top:8px;padding:12px 8px;border-radius:12px;background:linear-gradient(145deg,#e2e8f0,#f1f5f9);color:#64748b;font-size:12px;font-weight:700;text-align:center;line-height:1.5}
    .tools-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:8px}
    .tools-util-list{margin-top:14px;display:flex;flex-direction:column;gap:8px}
    .tools-page{display:flex;flex-direction:column;gap:0;padding-bottom:8px}
    .tools-tasks-head{margin-bottom:6px}
    .tools-tasks-title-row{display:flex;justify-content:space-between;align-items:flex-end;gap:8px}
    .tools-tasks-main{flex:1;min-height:42vh;max-height:52vh;overflow-y:auto;-webkit-overflow-scrolling:touch;margin:4px 0 12px}
    .tools-secondary{margin-top:4px;padding-top:12px}
    .tools-secondary-kicker{margin:0 0 8px;font-size:12px;color:var(--muted)}
    .tools-compact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
    .tool-card-compact{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:10px 6px;border-radius:12px;border:0;background:rgba(255,255,255,.55);cursor:pointer;text-align:center;min-height:72px}
    .tool-card-compact-icon{font-size:20px;line-height:1}
    .tool-card-compact-title{font-size:12px;font-weight:800;color:var(--text)}
    .tool-card-compact-hint{font-size:10px;color:var(--muted);line-height:1.2}
    .tool-card-compact:active{opacity:.88;transform:scale(.98)}
    .me-collapse-wrap{width:100%;margin-top:8px}
    .tool-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;border-radius:16px;border:1px solid var(--hair);background:var(--card-bg);box-shadow:var(--card-shadow);cursor:pointer;transition:transform .15s ease;text-align:left;width:100%}
    .tool-card-icon{font-size:22px}.tool-card-title{font-weight:800;font-size:16px;color:var(--text)}.tool-card-hint{font-size:12px;color:var(--muted)}
    .tool-pick-list{display:flex;flex-direction:column;gap:8px;max-height:50vh;overflow:auto}
    .tool-pick-row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px;border-radius:12px;border:1px solid var(--hair);background:var(--card-bg);cursor:pointer;width:100%;text-align:left}
    .me-account-card{background:#f1f5f9;border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:8px;width:100%;max-width:320px}
    .me-account-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px;border-radius:12px;border:1px solid var(--hair);background:#fff;color:#64748b;font-weight:700;cursor:pointer;transition:transform .12s ease}
    .me-account-btn-danger{color:#dc2626;border-color:#fecaca;background:#fff5f5}
    .journal-stats-chart{display:flex;align-items:flex-end;justify-content:space-between;gap:6px;min-height:120px;padding:8px 4px 0}
    .journal-stat-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
    .journal-stat-bar-outer{width:100%;height:30px;display:flex;align-items:flex-end;justify-content:center}
    .journal-stat-bar-inner{width:72%;max-width:36px;border-radius:8px 8px 4px 4px;min-height:4px;transition:height .35s ease}
    .journal-stat-emoji{font-size:16px}.journal-stat-val{font-size:11px;font-weight:800;color:var(--text)}.journal-stat-pct{font-size:10px;color:var(--muted)}
    .journal-stats-empty{text-align:center;padding:16px;color:var(--muted);font-size:13px}
    .me-account-footer{margin-top:auto;padding:16px 0 8px;flex-shrink:0;width:100%}
    .me-account-divider{border:0;border-top:1px solid var(--hair);margin:0 auto 10px;width:90%;opacity:.85}
    .me-account-footer .me-danger-btn{display:block;width:100%;margin:0;padding:8px 10px;border:0;background:transparent;font:inherit;font-size:12px;font-weight:500;color:var(--hint);cursor:pointer;text-align:center}
    .me-account-footer .me-danger-btn-strong{color:#94a3b8;font-weight:600}
    .me-account-footer .me-danger-btn:active{opacity:.75}
    .me-settings{flex:1 1 auto;overflow-y:auto;min-height:0;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:8px}
    .me-setting-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:16px;background:rgba(255,255,255,.72);border:1px solid var(--hair)}
    .me-setting-row label{font-size:13px;font-weight:700}
    .me-setting-row select{max-width:55%;font-size:13px}
    .note-detail-panel{display:flex;flex-direction:column;max-height:calc(100dvh - var(--safeT) - 132px)}
    .btn-latest-note{align-self:center;margin:6px 0 2px;padding:7px 16px;border-radius:999px;border:1px solid var(--hair);background:rgba(255,255,255,.9);font-size:12px;font-weight:800;color:var(--text);box-shadow:0 4px 14px rgba(40,60,90,.06)}
    .noteDetailScroll{flex:1;min-height:100px;max-height:52vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:6px}
    .actionSheetBtns{display:flex;flex-direction:column;gap:8px;margin-top:14px}
    .actionSheetBtns .btn{width:100%}
    .confirm-delete-text{margin:0 0 16px;font-size:14px;color:var(--text);line-height:1.55;font-weight:650}
    .confirm-delete-actions{display:flex;gap:10px}
    .confirm-delete-actions .btn{flex:1}
    .skin-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px}
    .skin-card{border-radius:18px;padding:14px 10px;border:1px solid var(--hair);background:rgba(255,255,255,.82);font-size:13px;font-weight:800;text-align:center}
    .skin-card:active{opacity:.92;transform:scale(.98)}
    .skin-preview-bubble{width:118px;height:118px;margin:18px auto;border-radius:50%;box-shadow:0 18px 44px rgba(40,60,90,.14);animation:skinPop .48s cubic-bezier(.34,1.56,.64,1)}
    @keyframes skinPop{0%{transform:scale(.35);opacity:.45}100%{transform:scale(1);opacity:1}}
    .skin-preview-actions{display:flex;gap:10px;margin-top:18px}
    .skin-preview-actions .btn{flex:1}
    #confirmDeleteOverlay,#taskMenuOverlay,#skinShopOverlay,#skinPreviewOverlay{z-index:68}
    #reviewOverlay{z-index:72}
    .me-sprint-card{width:100%;margin-top:0;padding:14px 14px;border-radius:18px;border:1px solid var(--hair);background:linear-gradient(135deg,rgba(255,248,230,.95),rgba(255,236,240,.9));text-align:left;font-size:14px;font-weight:800;cursor:pointer}
    .me-sprint-card:active{opacity:.92}
    .me-review-block{margin-top:10px;padding:12px 14px;border-radius:18px;background:rgba(255,255,255,.72);border:1px solid var(--hair)}
    .me-review-row{font-size:12px;color:var(--text);padding:8px 0;border-bottom:1px dashed rgba(122,139,158,.25)}
    .me-review-row:last-child{border-bottom:0}
    .note-detail-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end;width:100%;max-width:120px;flex-wrap:wrap;justify-content:flex-end}
    .btn-mini-review{padding:6px 8px;font-size:11px;border-radius:12px;border:1px solid var(--hair);background:rgba(255,255,255,.92);font-weight:800;white-space:nowrap}
    #btnQuickCourseReview{background:linear-gradient(135deg,rgba(139,92,246,.88),rgba(167,139,250,.88));color:#fff;border:0}
    .review-stream{font-size:13px;line-height:1.55;color:#4B5A6C;min-height:48px;max-height:28vh;overflow:auto;padding:10px;border-radius:14px;background:rgba(248,250,252,.9);border:1px dashed rgba(122,139,158,.35);white-space:pre-wrap;font-family:ui-monospace,monospace}
    .review-stream::after{content:"▍";animation:blinkC 1s step-end infinite;color:#E85A5A;opacity:.85}
    .review-stream.done::after{content:none;animation:none}
    #taskMemorialOverlay.memorial-readonly #btnMemorialPick,
    #taskMemorialOverlay.memorial-readonly #btnMemorialSave{display:none !important}
    @keyframes blinkC{50%{opacity:0}}
    @keyframes aiCursorBlink{50%{opacity:0}}
    .ai-stream-cursor{display:inline;font-weight:300;color:#64748b;animation:aiCursorBlink 1s step-end infinite;margin-left:1px}
    .ai-msg-streaming::after{content:none}
    .ai-typing-placeholder{color:#7A8A9C;font-size:13px}
    /* AI 等待：3×3 点阵转圈 */
    .ai-thinking-wrap{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
    .ai-thinking-text{font-size:13px;color:#64748b;font-weight:700}
    .ai-dot-loader{display:inline-grid;grid-template-columns:repeat(3,5px);grid-template-rows:repeat(3,5px);gap:3px;padding:2px 0;vertical-align:middle}
    .ai-dot-loader i{display:block;width:5px;height:5px;border-radius:50%;background:#A78BFA;opacity:.22;animation:aiDotPulse 1.05s ease-in-out infinite}
    .ai-dot-loader i:nth-child(1){animation-delay:0s}
    .ai-dot-loader i:nth-child(2){animation-delay:.12s}
    .ai-dot-loader i:nth-child(3){animation-delay:.24s}
    .ai-dot-loader i:nth-child(4){animation-delay:.36s}
    .ai-dot-loader i:nth-child(5){animation-delay:.48s}
    .ai-dot-loader i:nth-child(6){animation-delay:.6s}
    .ai-dot-loader i:nth-child(7){animation-delay:.72s}
    .ai-dot-loader i:nth-child(8){animation-delay:.84s}
    .ai-dot-loader i:nth-child(9){animation-delay:.96s}
    @keyframes aiDotPulse{0%,100%{opacity:.18;transform:scale(.82)}50%{opacity:1;transform:scale(1.05)}}
    .review-stream .ai-dot-loader{margin:6px 0}
    .review-card-grid{display:flex;flex-direction:column;gap:10px;margin-top:12px}
    .ai-chat-sheet{max-height:95vh;position:relative}
    .ai-chat-top{align-items:center;gap:6px}
    .ai-chat-top strong{flex:1;text-align:center}
    .ai-chat-top-actions{display:flex;gap:4px;align-items:center}
    .ai-session-drawer{display:none;margin:8px 0;padding:10px;border:1px solid var(--hair);border-radius:14px;background:rgba(255,255,255,.92);max-height:38vh;overflow:hidden;flex-direction:column}
    .ai-session-drawer.show{display:flex}
    .ai-session-drawer-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
    .ai-session-list{overflow:auto;display:flex;flex-direction:column;gap:6px}
    .ai-session-item{display:flex;align-items:center;gap:6px;border-radius:12px;border:1px solid rgba(148,163,184,.25);background:rgba(248,250,252,.9)}
    .ai-session-item-active{border-color:rgba(139,92,246,.45);background:rgba(139,92,246,.08)}
    .ai-session-item-main{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 12px;border:0;background:transparent;font-size:13px;font-weight:700;color:inherit;cursor:pointer}
    .ai-session-title{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .ai-session-time{font-size:11px;font-weight:500;color:var(--muted);opacity:.85}
    .ai-session-rename,.ai-session-delete{flex:0 0 auto;padding:8px 10px;border:0;background:transparent;font-size:14px;opacity:.7;cursor:pointer}
    .ai-session-delete{font-size:13px;opacity:.55}
    .ai-session-delete:hover{opacity:1;color:#B42318}
    .ai-chat-body{max-height:62vh;overflow:auto;padding:8px;border:1px solid var(--hair);border-radius:14px;background:var(--ai-chat-bg);display:flex;flex-direction:column;gap:10px}
    body.theme-night .dayCol,body.theme-night .taskRow,body.theme-night .courseCard,body.theme-night .calCell,body.theme-night .weekdayBtn,body.theme-night .journal-mood-btn,body.theme-night .journal-stats-collapse,body.theme-night .me-profile-card,body.theme-night .me-setting-row,body.theme-night .me-review-block{background:var(--card-bg);color:var(--text)}
    body.theme-night .courseMeta,body.theme-night .taskMeta,body.theme-night .dayEmptyHint,body.theme-night .dayTodoCard{color:var(--muted)}
    body.theme-night .weekdayBtn.active{background:var(--tab-active-bg)}
    body.theme-night .chip,body.theme-night .pill{background:var(--card-bg)}
    body.theme-night .journal-content,body.theme-night input,body.theme-night textarea,body.theme-night select{background:var(--input-bg);color:var(--text);border-color:var(--hair)}
    body.theme-night .ai-msg-assistant{background:rgba(55,55,72,.95);border-color:var(--hair);color:var(--text)}
    body.theme-night .ai-msg-user{background:rgba(99,102,241,.18);border-color:rgba(99,102,241,.35)}
    body.theme-night .ai-chat-quick-btn,body.theme-night .ai-chat-input input{background:var(--input-bg);color:var(--text)}
    body.theme-night .journal-stats-collapse{background:var(--card-bg)}
    .ai-msg{max-width:86%;padding:10px 12px;border-radius:18px;font-size:13px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
    .ai-msg-user{align-self:flex-end;background:rgba(255,236,240,.95);border:1px solid rgba(255,138,138,.25)}
    .ai-msg-assistant{align-self:flex-start;background:#f0f2f5;border:1px solid var(--hair)}
    .ai-reroll{align-self:flex-start;height:30px;padding:0 10px;border-radius:999px;border:1px solid var(--hair);background:#fff;font-size:11px;font-weight:800;color:#64748b}
    .ai-chat-quick-row{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
    .ai-chat-quick-btn{flex:1;min-width:0;padding:8px 6px;font-size:12px;font-weight:700;border-radius:12px;background:rgba(241,245,249,.9);border:1px solid rgba(148,163,184,.28);color:#475569}
    .ai-chat-quick-btn:active{transform:scale(0.97)}
    .ai-chat-input{display:flex;gap:8px;margin-top:8px;align-items:stretch}
    .ai-chat-input input,.ai-chat-field{flex:1;background:rgba(241,245,249,.95);border:1px solid rgba(148,163,184,.35);border-radius:14px;padding:10px 12px;font-size:14px;color:#334155;font-style:italic}
    .ai-chat-input input::placeholder,.ai-chat-field::placeholder{color:#94a3b8;font-style:italic}
    .ai-chat-send{min-width:88px;font-weight:800;box-shadow:0 4px 14px rgba(232,90,90,.25)}
    .journal-guide-sheet{max-height:80vh}
    .journal-guide-list{margin:10px 0 0;padding-left:18px;font-size:13px;line-height:1.65;color:#4B5A6C}
    .journal-guide-list li{margin-bottom:8px}
    .glass-tooltip{position:fixed;z-index:220;max-width:240px;padding:10px 12px;border-radius:14px;font-size:12px;font-weight:700;line-height:1.45;color:#1e293b;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.65);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 8px 28px rgba(40,60,90,.18);pointer-events:none}
    .reviewCenterCard{border-radius:16px;padding:12px;border:1px solid var(--hair);background:rgba(255,255,255,.86);box-shadow:0 8px 20px rgba(40,60,90,.06);margin-top:10px}
    .reviewCenterCard:active{transform:scale(.99)}
    /* 关键修改：课表文本批量导入预览浮层 */
    .importRows{max-height:60vh;overflow:auto;display:flex;flex-direction:column;gap:8px;margin-top:10px}
    .importRow{display:flex;align-items:flex-start;gap:10px;padding:10px;border-radius:12px;border:1px solid var(--hair);background:rgba(255,255,255,.9)}
    .importRow input[type="checkbox"]{width:18px;height:18px;margin-top:2px}
    .importRow .meta{font-size:12px;color:#4B5A6C;line-height:1.45}
    .betaNoticeBlock{margin-top:6px}
    .betaNotice{display:block;width:100%;padding:8px 10px;border-radius:999px;background:rgba(254,243,199,.78);border:1px solid rgba(245,158,11,.28);font-size:12px;color:#92400e;text-align:center}
    .me-app-version{margin:4px 0 0;font-size:11px;line-height:1.35;color:var(--hint);text-align:center}
    .dev-bypass-row{margin-top:12px;padding-top:10px;border-top:1px dashed var(--hair)}
    .dev-bypass-btn{width:100%;font-size:13px;background:rgba(56,189,248,.12);border:1px solid rgba(56,189,248,.35);color:#0369a1}
    .dev-bypass-hint{margin:6px 0 0;font-size:11px;text-align:center}
    /* 登录页 */
    .auth-card{padding:16px;border-radius:24px}
    #authTabBar{display:flex;gap:8px}
    #authTabBar .btn{flex:1}
    .auth-input-wrap{position:relative;margin-top:8px}
    .auth-input-wrap .auth-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:14px;opacity:.75}
    .auth-input-wrap input{padding:12px 12px 12px 34px;background:rgba(255,255,255,.92);border-radius:14px}
    #screenAuth > .panel.glass.auth-card + .panel.glass.auth-card{margin-top:10px}
    #screenAuth input:not([type="checkbox"]){width:100%;margin-top:8px}
    .auth-login-btn{width:100%;margin-top:10px}
    .auth-agreement-slot + .auth-login-btn{margin-top:8px}
    .auth-agreement-wrap{margin:10px 0 0;font-size:12px;line-height:1.5;color:#94a3b8}
    .auth-agreement-wrap[hidden]{display:none!important}
    .auth-agreement-template:not(.auth-agreement-mounted){display:none!important}
    .auth-agreement-label{display:flex;align-items:flex-start;gap:8px;cursor:pointer;margin:0}
    .auth-agreement-label input[type="checkbox"]{width:14px;height:14px;margin:2px 0 0;flex-shrink:0;accent-color:var(--accent)}
    .auth-agreement-label a{color:var(--accent);font-weight:700;text-decoration:none}
    .auth-gradient-btn{background:var(--accent-grad)!important;border:0!important;color:#fff}
    .auth-switch{margin-top:10px;font-size:12px;color:var(--muted);text-align:center}
    .auth-link-btn{background:none;border:0;color:#6D3FD3;font-weight:800;padding:0 4px;cursor:pointer;font-size:inherit}
    .auth-forgot-title{margin:0 0 10px;font-size:17px;text-align:center}
    .auth-hint{margin:8px 0 0;font-size:12px;color:#64748b;font-weight:650;line-height:1.45;min-height:0}
    .auth-hint.ok{color:#15803d}
    .auth-hint.err{color:#C62828}
    .auth-field-hint{margin-top:6px;font-size:12px;color:#64748b;font-weight:650;line-height:1.4}
    .auth-field-hint.err{color:#C62828}
    .auth-field-hint:empty,.auth-hint:empty{display:none;margin:0}
    .auth-sending-code{color:#94a3b8!important;background:#f8fafc!important;border-color:#e2e8f0!important;cursor:default}
    .taskHistoryToolbar{display:flex;gap:8px;margin:10px 0 6px;flex-wrap:wrap}
    .taskHistoryToolbar input[type="month"],.taskHistoryToolbar input[type="search"]{flex:1;min-width:120px;padding:8px 10px;border-radius:12px;border:1px solid var(--hair);background:rgba(255,255,255,.9);font-size:13px}
    .attachPreviewBtn{cursor:pointer}
    #attachPreviewBody img,#attachPreviewBody iframe{display:block;margin:0 auto}
    .course-meta-block{padding:10px 12px;border-radius:12px;border:1px solid var(--hair);background:rgba(255,255,255,.75);font-size:12px;line-height:1.5}
    .course-meta-row{margin-bottom:8px}.course-meta-row:last-child{margin-bottom:0}
    .course-meta-row p{margin:4px 0 0;white-space:pre-wrap;color:#4B5A6C}
    .me-item{display:block;width:100%;margin-top:8px;padding:12px 14px;border-radius:14px;border:1px solid var(--hair);background:rgba(255,255,255,.92);text-align:left;font:inherit;font-weight:700;cursor:pointer;color:inherit}
    .me-item:active{transform:scale(.99)}
    .about-body{margin-top:10px;text-align:center;padding:4px 8px 12px}
    .about-app-name{margin:0 0 8px;font-size:20px;font-weight:900;text-align:center}
    .about-lead,.about-foot{text-align:center;line-height:1.55}
    .about-list{margin:12px auto 0;padding:0;max-width:320px;list-style:none;text-align:center}
    .about-list li{margin:6px 0;font-size:14px;line-height:1.5;color:var(--muted)}
    #aboutOverlay .hint{text-align:center}
    .about-lead{margin:10px 0;line-height:1.55;color:#4B5A6C;font-size:13px}
    .about-list{margin:10px 0 0;padding-left:18px;line-height:1.6;font-size:13px;color:#4B5A6C}
    .about-foot{margin-top:14px}
    #noteEditOverlay .sheet input[type="date"],#noteEditOverlay .sheet select,#noteEditOverlay .sheet textarea{margin-top:6px}
    #noteEditOverlay .hint{margin-top:4px}
    .schedule-date-row{display:flex;align-items:center;gap:8px;margin-top:4px}
    .journal-date-hint{flex:1;cursor:pointer;border-radius:12px;padding:6px 8px;margin:0}
    .journal-date-hint:active{background:rgba(139,92,246,.08)}
    .journal-sheet{overflow:auto;position:relative;max-height:92vh;background:var(--sheet-bg)}
    .journal-mood-counter-tray{display:flex;flex-wrap:wrap;gap:8px;min-height:36px;align-items:center;margin:6px 0 4px;padding:8px 10px;border-radius:14px;border:1px dashed var(--hair);background:rgba(255,255,255,.45)}
    .journal-mood-counter-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;border:1px solid;font-size:14px;font-weight:800}
    .journal-mood-counter-chip em{font-style:normal;font-size:12px;font-weight:900;min-width:18px;text-align:center;padding:2px 6px;border-radius:999px;background:rgba(255,255,255,.75)}
    .journal-session-mood-bars{margin-bottom:8px}
    .journal-stats-collapse{margin:4px 0 10px;border-radius:14px;border:1px solid var(--hair);background:rgba(255,255,255,.55)}
    .journal-stats-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;border:0;background:transparent;font:inherit;font-size:13px;font-weight:700;color:inherit;cursor:pointer}
    .journal-stats-chevron{font-size:11px;color:var(--hint);transition:transform .22s ease}
    .journal-stats-open .journal-stats-chevron{transform:rotate(180deg)}
    .journal-stats-body{max-height:0;overflow:hidden;opacity:0;padding:0 12px;transition:max-height .28s ease,opacity .2s ease,padding .22s ease}
    .journal-stats-body-open{max-height:320px;opacity:1;padding:0 12px 12px}
    .journal-stats-bars{display:flex;flex-direction:column;gap:8px;margin-top:8px}
    .journal-stat-row{display:flex;align-items:center;gap:8px;font-size:12px}
    .journal-stat-emoji{flex:0 0 28px;font-size:18px}
    .journal-stat-bar-wrap{flex:1;height:10px;border-radius:999px;background:rgba(148,163,184,.2);overflow:hidden}
    .journal-stat-bar{height:100%;border-radius:999px;min-width:2px;transition:width .4s ease}
    .journal-stat-pct{flex:0 0 72px;text-align:right;font-size:11px;color:var(--muted);font-weight:700}
    .journal-ai-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px;padding-top:10px;border-top:1px dashed var(--hair)}
    .journal-ai-actions .btn{width:100%}
    .journal-date-nav{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
    .journal-date-title{flex:1;font-weight:800;font-size:14px;text-align:center;min-width:120px}
    .journal-save-hint{margin-left:auto;font-size:11px}
    .journal-mood-row{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 10px}
    .journal-mood-btn{width:48px;height:48px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:var(--card-bg);font-size:28px;line-height:1;transition:transform .15s ease,border-color .15s ease,background .15s ease}
    .journal-mood-btn:active{transform:scale(1.1)}
    .journal-mood-btn.on{border-color:rgba(255,138,138,.55);background:var(--accent-soft);box-shadow:0 0 0 2px rgba(255,138,138,.18)}
    .journal-content{width:100%;min-height:96px;margin-top:4px;border-radius:14px;border:1px solid var(--hair);padding:10px;font-size:14px;resize:vertical}
    .journal-photo-toolbar{margin-top:8px}
    .journal-photo-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
    .journal-photo{position:relative;width:72px;height:72px;border-radius:12px;overflow:hidden;border:1px solid var(--hair)}
    .journal-photo img{width:100%;height:100%;object-fit:cover}
    .journal-photo-rm{position:absolute;top:2px;right:4px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:14px;line-height:1}
    .journal-section-title{margin-top:14px;font-weight:800}
    .journal-list{display:flex;flex-direction:column;gap:8px;margin-top:6px}
    .journal-task-row{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;text-align:left;padding:10px 12px;border-radius:14px;border:1px solid var(--hair);background:rgba(255,255,255,.92)}
    .journal-task-title{font-weight:800;font-size:13px}
    .journal-task-tag{font-size:10px;color:#7c3aed;font-weight:800}
    .journal-task-snippet{font-size:12px;color:#64748b;line-height:1.4}
    .journal-course-row{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:10px 12px;border-radius:14px;border:1px solid var(--hair);background:rgba(255,255,255,.9);font-size:13px}
    .journal-course-row.leave{opacity:.55}
    .journal-course-row em{font-style:normal;font-size:11px;color:#D93025;font-weight:800}
    .share-preview-wrap{max-height:58vh;overflow:auto;margin-top:8px;border-radius:14px;border:1px solid var(--hair);background:#fff}
    .share-preview-wrap img{display:block;width:100%;height:auto}
    .global-loading{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.35);backdrop-filter:blur(4px)}
    .global-loading.show{display:flex !important}
    .global-loading-card{padding:20px 24px;border-radius:18px;text-align:center;min-width:140px;box-shadow:0 12px 40px rgba(40,60,90,.15)}
    .global-loading-spinner{width:32px;height:32px;margin:0 auto 12px;border:3px solid rgba(232,90,90,.22);border-top-color:var(--accent);border-radius:50%;animation:globalSpin .75s linear infinite}
    @keyframes globalSpin{to{transform:rotate(360deg)}}
    #globalLoadingText{margin:0;font-size:13px;font-weight:700;color:#4B5A6C}

    /* ========== UI 质感优化 2026-05-22 ========== */

    /* 一、基础视觉 */
    .kicker{color:var(--hint)}
    .hint{color:var(--hint)}
    .glass{background:rgba(255,255,255,.92);border:1px solid var(--hair);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
    .panel{border-radius:var(--radius-lg);background:var(--card-bg);box-shadow:var(--card-shadow)}
    .btn,.iconBtn,.importBtn,.calNavBtn,.weekdayBtn,.dowBtn,.weekChip,.weekToolBtn,.journal-mood-btn,.ai-chat-quick-btn,.auth-subtab,.gpa-mode-btn,.auth-gradient-btn{transition:transform .18s var(--ease-spring),box-shadow .18s ease,background .18s ease,border-color .18s ease,opacity .18s ease}
    .btn:focus-visible,.iconBtn:focus-visible,.importBtn:focus-visible,.calNavBtn:focus-visible,.fabBtn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,138,138,.28),0 2px 8px rgba(15,23,42,.06)}
    .btn:disabled,.btn[disabled]{opacity:.48;pointer-events:none}
    .btn.primary:active{box-shadow:0 3px 10px rgba(232,90,90,.24),inset 0 1px 0 rgba(255,255,255,.2)}
    .btn.ghost,.btn-ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--muted)}
    .iconBtn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--hair);background:linear-gradient(180deg,#fff,#f8fafc);font-weight:800;font-size:14px;box-shadow:0 2px 6px rgba(15,23,42,.05)}
    .importBtn,.calNavBtn{min-height:38px;height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--hair);background:#fff;font-weight:800;font-size:13px;box-shadow:0 2px 6px rgba(15,23,42,.05)}
    .fabBtn{border-radius:18px;box-shadow:0 8px 22px rgba(15,23,42,.16),inset 0 1px 0 rgba(255,255,255,.22)}
    .auth-gradient-btn{min-height:48px!important;border-radius:999px!important;box-shadow:0 8px 22px rgba(232,90,90,.28),inset 0 1px 0 rgba(255,255,255,.25)!important}
    .auth-subtab{border-radius:999px}.auth-subtab.primary{box-shadow:0 4px 14px rgba(232,90,90,.24)}
    .gpa-mode-btn.active{background:var(--accent-soft);border-color:rgba(255,138,138,.42);color:var(--accent);box-shadow:0 0 0 2px rgba(255,138,138,.1)}
    .ai-chat-quick-btn{border-radius:999px;border:1px solid rgba(226,232,240,.9);background:linear-gradient(180deg,#fff,#f8fafc);font-weight:700}
    .ai-chat-quick-btn:active{background:var(--accent-soft);border-color:rgba(255,138,138,.35);color:var(--accent)}
    input,textarea,select{border-radius:var(--radius-md);transition:border-color .2s ease,box-shadow .2s ease}
    input:focus,textarea:focus,select:focus{outline:none;border-color:rgba(232,90,90,.45);box-shadow:0 0 0 3px rgba(255,138,138,.12)}
    .chip,.pill{border-radius:999px}
    .courseCard,.taskRow,.noteGroupCard,.noteItem,.coursePickCard,.dayTodoCard,.calCell,.journal-task-row,.journal-course-row,.reviewCenterCard,.skin-card,.me-setting-row,.copyRow,.importRow{
      box-shadow:var(--card-shadow);transition:var(--tap-transition)}
    @media (hover:hover){
      .courseCard:hover,.taskRow:hover,.noteGroupCard:hover,.noteItem:hover{box-shadow:var(--card-shadow-hover)}
    }
    .overlay{background:rgba(15,23,42,0);backdrop-filter:blur(0);transition:background .22s ease}
    .overlay.show{background:rgba(30,42,58,.38);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:overlayBgIn .22s ease both}
    @keyframes overlayBgIn{from{background:rgba(30,42,58,0)}to{background:rgba(30,42,58,.38)}}
    .sheet{border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:rgba(254,254,254,.96);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow-modal);transition:transform .28s var(--ease-spring),opacity .22s ease}
    .sheet::before{content:"";display:block;width:40px;height:4px;margin:2px auto 14px;border-radius:999px;background:rgba(148,163,184,.42)}
    .overlay.show .sheet{animation:sheetSlideUp .3s var(--ease-spring) both}
    @keyframes sheetSlideUp{from{transform:translateY(100%);opacity:.92}to{transform:translateY(0);opacity:1}}
    .nav .inner{border-radius:var(--radius-nav-top) var(--radius-nav-top) 0 0;margin-bottom:0;box-shadow:0 -2px 12px rgba(0,0,0,.04);background:var(--card-bg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
    .dayCol{border-radius:var(--radius-md);background:var(--card-bg);box-shadow:var(--card-shadow)}

    /* 二、交互反馈 */
    .screen.active{display:block;animation:screenFadeIn .15s ease both}
    @keyframes screenFadeIn{from{opacity:0}to{opacity:1}}
    button,.tab,.courseCard,.taskRow,.noteGroupCard,.calCell,.me-setting-row,.iconBtn,.noteItem,.dayTodoCard,.weekdayBtn,.journal-date-hint,.fabBtn{transition:var(--tap-transition)}
    .btn:active,.iconBtn:active,.importBtn:active,.tab:active,.weekdayBtn:active,.fabBtn:active,.ai-chat-send:active{transform:scale(.96)}
    .courseCard:active,.taskRow:active,.noteGroupCard:active,.noteItem:active,.dayTodoCard:active,.calCell:active{transform:scale(.985)}
    .pressing{transform:scale(.96)!important;opacity:.94}
    .courseCard.pressing,.taskRow.pressing{background:rgba(241,245,249,.95)!important}
    @keyframes listEnterFlash{0%{background-color:rgba(255,228,230,.5)}70%{background-color:rgba(255,248,248,.2)}100%{background-color:transparent}}
    .list-enter{animation:fadeInUp .32s ease both,listEnterFlash 1.1s ease .04s}
    *{scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.45) transparent}
    *::-webkit-scrollbar{width:4px;height:4px}
    *::-webkit-scrollbar-thumb{background:rgba(148,163,184,.4);border-radius:999px}
    *::-webkit-scrollbar-track{background:transparent}
    .ai-chat-body,.noteDetailScroll,.me-settings,.importRows,.review-stream{scrollbar-width:thin}

    /* 三、组件打磨 */
    .courseCard,.course-card{border-radius:var(--radius-md);padding:8px 4px;height:auto;min-height:60px}
    .courseCard .courseName,.course-card .course-name{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;word-break:break-word!important}
    .courseCard.amCard{border-left-width:4px;border-left-style:solid;border-radius:var(--radius-md)}
    .courseCard.pmCard{border-left-width:4px;border-left-style:solid;border-radius:var(--radius-md)}
    .courseCard .courseMeta,.courseCard .courseCode{font-variant-numeric:tabular-nums}
    .courseCard.conflictCard{border:1.5px dashed rgba(248,113,113,.55)!important;background:rgba(254,242,242,.75)!important;box-shadow:var(--card-shadow),inset 0 0 0 1px rgba(254,202,202,.35)!important}
    .courseCard.conflictCard .courseName::before{content:"⚠ ";font-size:11px;opacity:.85}
    .schedule-date-row .hint{color:var(--muted)}
    #todoBubblePanel{border-radius:var(--radius-lg);box-shadow:0 20px 50px rgba(15,23,42,.14)}
    #todoBubblePanel input,#todoBubblePanel textarea,#todoBubblePanel select{border-radius:var(--radius-md)}
    #todoBubblePanel input:focus,#todoBubblePanel textarea:focus{border-color:rgba(232,90,90,.5);box-shadow:0 0 0 3px rgba(232,90,90,.12)}
    #tbMapFrame{border-radius:var(--radius-md)}
    .tab{position:relative;overflow:hidden;border-radius:var(--radius-lg);color:var(--muted);background:var(--tab-bg);border:1px solid var(--hair)}
    .tab.active{background:var(--tab-active-bg);border-color:rgba(255,138,138,.35);color:var(--accent);transform:translateY(-4px);box-shadow:none}
    .tab::after{display:none}
    .ai-chat-body{border-radius:var(--radius-md);background:rgba(248,250,252,.65)}
    .ai-msg{border-radius:20px}
    .ai-msg-user{align-self:flex-end;background:rgba(255,236,240,.95);border:1px solid rgba(255,138,138,.25);box-shadow:none}
    .ai-msg-assistant{align-self:flex-start;background:#f8fafc;border:1px solid var(--hair);color:var(--text)}
    .ai-chat-input{align-items:center}
    .ai-chat-field{border-radius:24px!important;font-style:normal!important;background:#fff!important;box-shadow:var(--card-shadow);padding:11px 16px!important}
    .ai-chat-send{min-width:48px!important;width:48px;height:48px;padding:0!important;border-radius:50%!important;font-size:0!important;color:transparent!important;background:var(--accent-grad)!important;border:0!important;box-shadow:0 4px 14px rgba(232,90,90,.25)!important;position:relative;overflow:hidden}
    .ai-chat-send::after{content:"↑";font-size:18px;font-weight:900;line-height:48px;display:block;text-align:center;color:#fff}
    .ai-action-card{border-radius:var(--radius-md);border-style:solid;border-color:rgba(226,232,240,.9)}
    .ai-action-card .ai-action-btns .btn.ai-act-ok{background:var(--accent-grad);border:0;color:#fff}
    .ai-action-card .ai-action-btns .btn.ai-act-cancel{background:rgba(248,250,252,.95);color:var(--muted)}

    /* 启动页 */
    .splash{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;background:linear-gradient(165deg,#fffaf5 0%,#fff 45%,#f8fafc 100%);opacity:1;transition:opacity .4s ease;pointer-events:none}
    .splash.splash-hide{opacity:0}
    .splash-inner{text-align:center;padding:24px}
    .splash-logo{font-size:42px;font-weight:900;letter-spacing:0;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
    .splash-tagline{margin:8px 0 0;font-size:13px;color:var(--hint);font-weight:650}
    .splash-spinner{width:32px;height:32px;margin:22px auto 0;border:3px solid rgba(232,90,90,.18);border-top-color:var(--accent);border-radius:50%;animation:splashSpin .85s linear infinite}
    @keyframes splashSpin{to{transform:rotate(360deg)}}

    /* 登录页：顶栏隐藏，圆形居中品牌 */
    body.auth-mode .topbar,body:has(#screenAuth.active) .topbar{display:none!important}
    #screenAuth{max-width:400px;margin:0 auto;padding:0 4px 24px}
    .auth-brand{text-align:center;margin:8px 0 16px;padding:8px 0}
    .auth-brand-circle{width:72px;height:72px;margin:0 auto 12px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:900;color:#fff;background:var(--accent-grad);box-shadow:0 8px 24px rgba(255,138,138,.32)}
    .auth-brand-title{margin:0;font-size:26px;font-weight:900;line-height:1.2;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
    .auth-brand-tag{margin:6px 0 0;font-size:13px;color:var(--muted);font-weight:650}
    .auth-phone-mode-tabs{display:flex;gap:8px;margin-bottom:10px}
    .auth-subtab{flex:1;height:38px;border-radius:12px;font-size:13px;font-weight:800;padding:0 8px}
    .auth-subtab.primary{background:var(--accent-grad);border:0;color:#fff}
    .auth-subtab:not(.primary){background:rgba(255,255,255,.85);border:1px solid var(--hair);color:var(--muted)}
    .auth-phone-sms-forgot{margin-top:8px}
    .auth-code-row{display:flex;gap:8px;margin-top:8px;align-items:stretch}
    .auth-code-row input{flex:1;min-width:0;margin-top:0}
    .auth-code-row .btn{flex:0 0 120px;width:120px;padding:0 8px;font-size:13px}

    /* 协议 / 隐私浮层 */
    .legal-overlay .legal-sheet{border-radius:var(--radius-lg) var(--radius-lg) 0 0}
    .legal-body{margin-top:8px;max-height:62vh;overflow-y:auto;padding-right:4px;font-size:13px;line-height:1.65;color:#475569;-webkit-overflow-scrolling:touch}
    .legal-body h4{margin:14px 0 6px;font-size:14px;color:var(--text)}
    .legal-body p,.legal-body li{margin:0 0 8px}
    .legal-body ul{margin:0 0 8px;padding-left:18px}
    .legal-updated{font-size:12px;color:var(--hint)}

    .schedule-academic-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}
    .uni-profile-chip{flex:1;min-width:120px;padding:10px 12px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:var(--card-bg);font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}
    .uni-profile-chip.has-uni{border-color:rgba(255,138,138,.35);color:var(--accent)}
    .semester-select{flex:1;min-width:140px;padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--hair);background:var(--input-bg);font:inherit;font-size:13px}
    .btn-mini-semester{padding:10px 12px;font-size:12px;height:auto}
    .uni-ref-panel{margin:0 0 10px;padding:12px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:rgba(255,255,255,.65)}
    .uni-ref-body{white-space:pre-wrap;line-height:1.55;margin-top:6px;max-height:120px;overflow-y:auto}
    .uni-picker-list{max-height:50vh;overflow-y:auto;margin-top:10px;display:flex;flex-direction:column;gap:6px}
    .uni-pick-row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px;border-radius:var(--radius-md);border:1px solid var(--hair);background:var(--card-bg);cursor:pointer;width:100%;text-align:left;font:inherit}
    .uni-pick-name{font-weight:800;font-size:14px}
    .uni-pick-tier{font-size:11px;color:var(--muted)}
    .gpa-records-list{display:flex;flex-direction:column;gap:8px;max-height:55vh;overflow-y:auto;margin-top:8px}
    .gpa-rec-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:var(--card-bg);cursor:pointer;width:100%;text-align:left;font:inherit}
    .gpa-rec-badge{font-size:12px;font-weight:800;color:var(--accent);white-space:nowrap}
    .gpa-rec-badge.muted{color:var(--muted);font-weight:600}
    .gpa-mode-toggle{display:flex;gap:8px}.gpa-mode-btn{flex:1;height:38px;font-size:13px}.gpa-mode-btn.active{background:var(--accent-soft);border-color:rgba(255,138,138,.42);color:var(--accent)}.gpa-mode-pane-hidden{display:none!important}
    .courseGpaTag{margin-top:6px;font-size:11px;font-weight:800;color:var(--accent)}

    /* v0.4.5 主 Tab 指示 + 我的页快捷入口 */
    .main-tab-dots{display:flex;justify-content:center;align-items:center;gap:6px;padding:4px 0 8px;margin:0}
    .main-tab-dots span{display:block;width:6px;height:6px;border-radius:999px;background:rgba(148,163,184,.38);transition:width .22s ease,background .22s ease}
    .main-tab-dots span.active{width:18px;background:var(--accent)}
    .me-quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0 4px}
    .me-quick-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:12px 4px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:var(--card-bg);box-shadow:var(--card-shadow);font:inherit;cursor:pointer;transition:var(--tap-transition)}
    .me-quick-btn:active{transform:scale(.96);opacity:.92}
    .me-quick-icon{font-size:22px;line-height:1}
    .me-quick-label{font-size:11px;font-weight:800;color:var(--muted)}
    .me-swipe-hint{text-align:center;margin:0 0 8px;font-size:12px;color:var(--hint)}
    .me-section-card{margin-top:10px;padding:12px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:rgba(255,255,255,.72);box-shadow:var(--card-shadow)}
    .screen.tab-swipe-in{animation:tabSwipeIn .22s ease both}
    @keyframes tabSwipeIn{from{opacity:.55;transform:translateX(var(--tab-swipe-x,0))}to{opacity:1;transform:none}}

    /* v0.90.0 公告栏 + 赞赏 */
    .announcement-bar{display:flex;align-items:flex-start;gap:10px;width:100%;margin:0 0 12px;padding:12px 14px;border-radius:var(--radius-lg);cursor:pointer;text-align:left;font:inherit;transition:var(--tap-transition)}
    .announcement-bar:active{transform:scale(.985);opacity:.95}
    .announcement-bar-icon{font-size:18px;line-height:1.2;flex-shrink:0}
    .announcement-bar-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
    .announcement-bar-title{display:block;font-size:14px;font-weight:800;color:var(--text);line-height:1.35}
    .announcement-bar-preview{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:12px;color:var(--muted);line-height:1.45}
    .announcement-bar-chevron{font-size:20px;color:var(--hint);flex-shrink:0;line-height:1.2}
    .announcement-list{display:flex;flex-direction:column;gap:12px;max-height:62vh;overflow-y:auto;margin-top:8px}
    .announcement-item{padding:12px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:rgba(248,250,252,.85)}
    .announcement-item-title{margin:0 0 4px;font-size:15px;font-weight:800;color:var(--text)}
    .announcement-item-date{margin:0 0 8px;font-size:11px;color:var(--hint)}
    .announcement-item-body{font-size:13px;line-height:1.6;color:var(--muted);word-break:break-word}
    .announcement-empty{text-align:center;padding:24px 0}
    .me-donate-btn{display:flex;align-items:center;justify-content:center;width:100%;margin-top:14px;padding:14px 16px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:var(--card-bg);color:var(--text);font-size:15px;font:inherit;cursor:pointer;box-shadow:var(--card-shadow);transition:var(--tap-transition)}
    .me-donate-btn:active{transform:scale(.98);opacity:.94}
    .donate-lead{margin:10px 0 6px;font-size:15px;font-weight:700;color:var(--text);line-height:1.5}
    .donate-note{margin:0 0 12px;font-size:12px;line-height:1.5}
    .donate-qr-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}
    .donate-qr-card{margin:0;padding:10px;border-radius:var(--radius-lg);border:1px solid var(--hair);background:var(--card-bg);text-align:center}
    .donate-qr-card img{display:block;margin:0 auto;border-radius:var(--radius-md)}
    .donate-qr-card figcaption{margin-top:8px;font-size:12px;font-weight:800;color:var(--muted)}
    .me-collapse-body-open{max-height:480px}
    .me-support-collapse .me-collapse-body-open{max-height:520px}

    /* ═══ v0.91 Editorial Minimal — ui-design skill 重构 ═══ */
    .kicker{font-family:var(--font-display);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:none;color:var(--hint)}
    .title{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em}
    .panel.glass{border:0;background:var(--glass-bg);box-shadow:var(--card-shadow);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2)}
    .screen.active .panel.glass{animation:panelReveal .38s var(--ease-spring) both}
    @keyframes panelReveal{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
    .topbar{padding:10px 16px 6px;background:transparent}
    .chip{border-color:var(--hair);background:rgba(255,255,255,.65);font-weight:600;font-size:11px;letter-spacing:.02em}
    .btn{border:1px solid var(--hair);background:var(--card-bg);box-shadow:none;font-weight:600;letter-spacing:.01em}
    .btn.primary{box-shadow:0 6px 20px rgba(232,90,90,.24)}
    input,textarea,select{border-color:var(--hair);border-radius:var(--radius-md);background:var(--input-bg);transition:border-color .2s ease,box-shadow .2s ease}
    input:focus,textarea:focus,select:focus{outline:none;border-color:rgba(232,90,90,.45);box-shadow:0 0 0 3px rgba(232,90,90,.1)}
    .nav .inner{margin:0 12px 8px;height:var(--navH);padding:6px 8px;border-radius:var(--radius-nav-top);border:1px solid rgba(231,229,228,.9);background:rgba(255,255,255,.92);box-shadow:0 8px 32px rgba(28,25,23,.08),0 1px 0 rgba(255,255,255,.8) inset;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
    .tab{border:0;background:transparent;color:var(--hint);font-weight:600;font-size:10px;letter-spacing:.04em;padding:8px 4px}
    .tab.active{background:var(--tab-active-bg);color:var(--accent);transform:none;box-shadow:inset 0 0 0 1px rgba(232,90,90,.15);border-radius:14px}
    .main-tab-dots span.active{background:var(--accent);width:16px}
    .fabBtn{box-shadow:0 10px 28px rgba(232,90,90,.32);border-radius:18px}
    .dayCol{border:0;background:var(--card-bg);box-shadow:var(--card-shadow)}
    .weekdayBtn{border:0;background:rgba(255,255,255,.8);box-shadow:inset 0 0 0 1px var(--hair)}
    .weekdayBtn.active{box-shadow:inset 0 0 0 1px rgba(232,90,90,.35);background:var(--accent-soft)}
    .courseCard,.course-card{border:0;box-shadow:inset 0 0 0 1px var(--hair),var(--card-shadow)}
    .courseCard.amCard{border-left:3px solid rgba(120,113,108,.35)!important}
    .courseCard.pmCard{border-left:3px solid rgba(232,90,90,.45)!important}
    .taskRow{border:0;box-shadow:inset 0 0 0 1px var(--hair),0 2px 12px rgba(28,25,23,.03)}
    .noteGroupCard,.me-profile-card,.me-section-card,.me-quick-btn{border:0;box-shadow:inset 0 0 0 1px var(--hair),var(--card-shadow)}
    .me-profile-card{padding:16px;border-radius:var(--radius-lg);background:var(--card-bg)}
    .me-avatar-letter{font-family:var(--font-display);font-weight:600}
    .me-nickname-input{font-family:var(--font-body);border-radius:var(--radius-md)}
    .overlay{background:var(--overlay-dim)}
    .sheet{border:0;box-shadow:var(--shadow-modal)}
    .auth-brand-title{font-family:var(--font-display);letter-spacing:-.03em}
    .splash{background:var(--page-mesh)}
    .splash-logo{font-family:var(--font-display);letter-spacing:-.04em;-webkit-text-fill-color:var(--accent);background:none;color:var(--accent)}
    .announcement-bar{border:0;border-left:3px solid var(--accent);background:var(--card-bg);box-shadow:var(--card-shadow);padding:14px 16px 14px 13px}
    .announcement-bar-title{font-family:var(--font-display);font-weight:600;font-size:15px}
    .announcement-bar-chevron{color:var(--accent);font-weight:300;font-size:22px}
    .me-donate-btn{font-family:var(--font-display);font-weight:600;letter-spacing:.02em}
    .donate-sheet .donate-lead{font-family:var(--font-display)}
    .tools-page .title{font-size:20px}
    .emptyStateTasks,.emptyStateNotes{font-family:var(--font-body);color:var(--muted)}
    .ai-msg-user{background:rgba(232,90,90,.08);border:1px solid rgba(232,90,90,.12)}
    .ai-msg-assistant{background:#fff;border:1px solid var(--hair)}
    .iconBtn{border-radius:999px;border-color:var(--hair);background:rgba(255,255,255,.85)}
    #btnOpenAiChat{border-radius:999px;font-weight:600;font-size:13px;letter-spacing:.02em;border:1px solid rgba(232,90,90,.25);background:rgba(255,255,255,.9);color:var(--accent)}
    .betaNoticeBlock{margin-top:16px;padding-top:4px}
    .betaNotice{display:block;width:100%;padding:10px 14px;border-radius:999px;background:rgba(254,243,199,.55);border:1px solid rgba(245,158,11,.22);font-size:12px;font-weight:600;color:#92400e;text-align:center;cursor:pointer;transition:var(--tap-transition)}
    .betaNotice:active{transform:scale(.99);opacity:.92}
    .betaNoticeBlock .me-app-version{margin:6px 0 0}
    .me-action-btn{border-radius:var(--radius-md);border:0;box-shadow:inset 0 0 0 1px var(--hair);background:var(--card-bg);font-weight:600}
    .tool-card-compact{border:0;box-shadow:inset 0 0 0 1px var(--hair),var(--card-shadow);background:var(--card-bg)}

    /* ═══ v0.92 Atelier — 高审美编辑风 + 卡片/操作优化 ═══ */
    :root{
      --page-bg:#f4f1ec;
      --page-mesh:radial-gradient(ellipse 120% 80% at 100% -20%,rgba(232,90,90,.06),transparent 55%),radial-gradient(ellipse 80% 60% at -10% 110%,rgba(28,25,23,.05),transparent 50%),linear-gradient(180deg,#faf8f5 0%,#f4f1ec 100%);
      --hair:rgba(28,25,23,.08);
      --card-shadow:0 1px 0 rgba(255,255,255,.85) inset,0 12px 40px rgba(28,25,23,.06);
      --card-shadow-hover:0 1px 0 rgba(255,255,255,.9) inset,0 18px 48px rgba(28,25,23,.1);
      --radius-sm:12px;--radius-md:16px;--radius-lg:20px;--radius-nav-top:24px;
      --ink-soft:#57534e;--surface-elevated:rgba(255,255,255,.94);
    }
    body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px}
    .app,.nav{position:relative;z-index:1}
    .container{padding:0 18px}
    .topbar{padding:14px 4px 8px}
    .topbar>div:first-child{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:-.03em}
    .panel{padding:18px;margin-top:12px}
    .title{font-size:22px;line-height:1.25}
    .kicker{letter-spacing:.14em;font-size:10px}
    .me-page-kicker,.me-section-kicker{margin:0 0 10px;color:var(--hint)}
    .glass{background:var(--surface-elevated);border:1px solid rgba(255,255,255,.65);box-shadow:var(--card-shadow)}

    /* 公告 */
    .announcement-bar{align-items:center;gap:12px;margin:0 0 14px;padding:16px 18px;border-radius:var(--radius-lg);background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(255,248,246,.92));box-shadow:var(--card-shadow);border:1px solid rgba(232,90,90,.12);position:relative;overflow:hidden}
    .announcement-bar::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 40%,rgba(232,90,90,.04) 100%);pointer-events:none}
    .announcement-bar-badge{flex-shrink:0;padding:4px 10px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);background:rgba(232,90,90,.1);border:1px solid rgba(232,90,90,.18)}
    .announcement-bar-icon{display:none}
    .announcement-bar-title{font-family:var(--font-display);font-size:16px;line-height:1.35;letter-spacing:-.01em}
    .announcement-bar-preview{font-size:13px;color:var(--ink-soft);line-height:1.5;-webkit-line-clamp:2}
    .announcement-bar-chevron{align-self:center;font-size:24px;opacity:.75}
    .announcement-sheet-top{align-items:flex-start;gap:12px}
    .announcement-sheet-head{display:flex;flex-direction:column;gap:2px}
    .announcement-kicker{margin:0;font-size:10px;letter-spacing:.16em;color:var(--hint)}
    .announcement-sheet-title{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:-.02em}
    .announcement-list{gap:14px;padding:4px 0 8px}
    .announcement-item{position:relative;padding:16px 16px 14px;border-radius:var(--radius-md);background:var(--card-bg);box-shadow:inset 0 0 0 1px var(--hair)}
    .announcement-item--pinned{background:linear-gradient(160deg,rgba(255,252,250,.98),rgba(255,245,242,.95));box-shadow:inset 0 0 0 1px rgba(232,90,90,.16),0 8px 24px rgba(232,90,90,.06)}
    .announcement-item-badge{display:inline-block;margin-bottom:8px;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.06em;color:var(--accent);background:rgba(232,90,90,.1)}
    .announcement-item-title{font-family:var(--font-display);font-size:17px;font-weight:600;line-height:1.35;margin:0 0 6px}
    .announcement-item-body{font-size:14px;line-height:1.75;color:var(--ink-soft)}
    .announcement-sheet-actions{margin-top:4px;padding-top:12px;border-top:1px solid var(--hair)}
    .announcement-sheet-actions .btn{width:100%}

    /* 我的 · 资料卡 + 快捷操作 */
    .me-profile-card{gap:14px;padding:18px;border-radius:var(--radius-lg);background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(250,247,243,.95));box-shadow:var(--card-shadow)}
    .me-avatar-wrap{width:60px;height:60px;border:2px solid rgba(232,90,90,.28);background:linear-gradient(145deg,#fff7f4,#fff)}
    .me-nickname-input{font-size:18px;font-weight:600}
    .me-nickname-row .btn{height:36px;min-height:36px;padding:0 14px;font-size:12px;border-radius:999px}
    .me-quick-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0 6px}
    .me-quick-btn{align-items:center;justify-content:center;padding:14px 10px;border-radius:var(--radius-md);background:var(--card-bg);box-shadow:inset 0 0 0 1px var(--hair),0 4px 16px rgba(28,25,23,.03);text-align:center}
    .me-quick-btn--accent{grid-column:1/-1;flex-direction:row;justify-content:flex-start;gap:14px;padding:16px 18px;background:linear-gradient(160deg,rgba(232,90,90,.96),rgba(200,69,69,.92));box-shadow:0 14px 32px rgba(232,90,90,.28);color:#fff}
    .me-quick-btn--accent .me-quick-icon,.me-quick-btn--accent .me-quick-label,.me-quick-btn--accent .me-quick-hint{color:#fff;text-align:left}
    .me-quick-btn--accent .me-quick-text-wrap{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:2px}
    .me-quick-btn--accent .me-quick-hint{opacity:.88;margin-top:0}
    .me-quick-icon{font-size:20px;font-weight:300;line-height:1;color:var(--accent)}
    .me-quick-label{font-size:13px;font-weight:700;color:var(--text);margin-top:4px}
    .me-quick-hint{display:none}
    .me-quick-btn--accent .me-quick-hint{display:block}
    .me-app-version{margin:0 0 12px;text-align:center;font-size:11px;letter-spacing:.1em;color:var(--hint)}
    .me-section-card{padding:16px;border-radius:var(--radius-md);background:rgba(255,255,255,.72)}
    .me-action-btn{width:100%;max-width:100%;padding:14px 16px;border-radius:var(--radius-md);font-size:14px}
    .me-donate-btn{border-radius:var(--radius-md);padding:16px;background:linear-gradient(180deg,#fff,rgba(255,252,250,.95))}

    /* 课表 / 待办 / 笔记卡片 */
    .dayCol{border-radius:var(--radius-md);padding:12px;box-shadow:var(--card-shadow)}
    .courseCard,.course-card{padding:12px 12px 11px;border-radius:var(--radius-md);transition:transform .22s var(--ease-spring),box-shadow .22s ease}
    .courseCard:active,.taskRow:active,.noteGroupCard:active{transform:scale(.985);box-shadow:var(--card-shadow-hover)}
    .taskRow{padding:14px 36px 14px 34px;border-radius:var(--radius-md)}
    .taskRow .bar{width:6px;height:6px;left:16px;background:var(--accent);opacity:.65}
    .taskTitle{font-size:16px;font-weight:600;letter-spacing:-.01em}
    .noteGroupCard{padding:18px 16px;border-radius:var(--radius-md)}
    .noteGroupCard.note-course-card .note-course-name{font-family:var(--font-display);font-size:17px;font-weight:600}
    .tool-card-compact{min-height:78px;border-radius:var(--radius-md);padding:12px 8px;background:var(--card-bg)}
    .tool-card-compact-title{font-size:13px;font-weight:700}

    /* 底部导航 + 浮层 */
    .nav .inner{border-radius:var(--radius-nav-top);padding:8px 10px 10px;box-shadow:0 -4px 24px rgba(28,25,23,.06),0 1px 0 rgba(255,255,255,.9) inset}
    .tab{font-size:10px;padding:10px 4px}
    .tab.active{box-shadow:inset 0 0 0 1px rgba(232,90,90,.2),0 4px 12px rgba(232,90,90,.08)}
    .sheet{border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:18px 18px calc(18px + var(--safeB))}
    .fabBtn{width:54px;height:54px;font-size:22px}
    .btn{min-height:46px;font-size:14px;border-radius:999px}
    .btn.primary{letter-spacing:.02em}
    .iconBtn{height:38px;font-size:13px;font-weight:600}

    /* 登录页 */
    .auth-brand-title{font-size:32px}
    .auth-card{border-radius:var(--radius-lg);padding:18px}
    .me-swipe-hint{display:none!important}
    .main-tab-dots--hidden{display:none!important}
