/* 新功能沿用最初的小字风格。 */
.note-input-tools{margin:12px 0}.note-photo-actions{display:flex;flex-wrap:wrap;gap:9px}.note-photo-label{position:relative;cursor:pointer;overflow:hidden;min-height:44px}.note-photo-label input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.note-photo-actions button{min-height:44px}.note-photo-preview{display:block;max-width:100%;max-height:200px;object-fit:contain;border-radius:10px;margin-top:12px}.note-photo-status{font-size:13px;line-height:1.9;color:#9a88a9;margin-top:10px}.note-input-tools .voice-entry{margin-bottom:12px}
.notes-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:21px}.note-card{min-width:0;display:flex;flex-direction:column;min-height:190px}.parent-note{border-top:3px solid #c3b0e9}.teacher-note{border-top:3px solid #acd7c7}.note-content{font-size:16px;line-height:2;color:#71657f;white-space:pre-wrap;overflow-wrap:anywhere;margin:18px 0;max-height:300px;overflow-y:auto}.note-content.empty-note{color:#ada3b8}.note-meta{font-size:13px;line-height:1.9;color:#a899b5;margin-top:auto;padding-top:10px}.note-form{margin-top:16px}.note-form .form-field{margin-bottom:8px}.note-form textarea{min-height:140px;line-height:1.9}.note-error{font-size:15px;line-height:1.8;color:#a3536a;background:#fff2f5;padding:10px;border-radius:8px}.note-card .text-button{min-height:44px}.teacher-view .hero-card{grid-column:1/-1}.teacher-view .hero-copy{width:75%}.teacher-view .space-scene{right:30px}.teacher-view .hero-footer{margin-top:25px}
@media(max-width:800px){.notes-grid{gap:16px}.note-card .card-title{flex-wrap:wrap}.note-card{padding:19px}.note-content{font-size:16px}}
@media(max-width:580px){.notes-grid{grid-template-columns:minmax(0,1fr)}.note-card{min-height:170px;padding:20px}.note-content{font-size:16px}.note-meta{font-size:13px}.note-form textarea{font-size:19px}.teacher-view .hero-copy{width:100%}.teacher-view .space-scene{right:-86px}.notes-grid .form-actions{margin-top:12px}}
.login-error{font-size:16px;line-height:1.8;color:#a24c65;background:#fff1f4;border:1px solid #f2d7df;padding:12px;border-radius:9px;overflow-wrap:anywhere}
.login-options{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.remember-option{display:flex;align-items:center;gap:8px;min-height:44px;font-size:15px;color:#847194;cursor:pointer}.remember-option input{width:17px;height:17px;margin:0;accent-color:#7a63d7}.login-session-note{font-size:14px;color:#a28daf;line-height:1.8;margin:0 0 17px}.recovery-section{font-size:16px;line-height:1.9;color:#877393;margin-bottom:20px}.recovery-section h3{font-size:18px;color:#655176}.recovery-section pre{font-size:15px;background:#f7f3fb;padding:14px;border-radius:9px;white-space:pre-wrap;overflow-wrap:anywhere;user-select:text}#forgot-password{min-height:44px;color:#8060b3}#recovery-back{min-height:44px}
.voice-entry{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:-4px 0 18px}.voice-entry>span{flex-basis:100%;font-size:14px;color:#8b789c;line-height:1.8}.voice-entry button{min-height:44px}.date-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:14px;color:#9a89a8;margin-top:7px}.date-controls input{border:1px solid #e5ddee;border-radius:7px;padding:6px;background:#fff;color:#786986;font:inherit;min-height:36px}.routine-row{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:15px 0;border-bottom:1px solid #eee8f4;font-size:15px}.routine-row>div{min-width:0;overflow-wrap:anywhere}.routine-row p{font-size:13px;color:#a490b2;line-height:1.8}.weekday-picker{display:flex;flex-wrap:wrap;gap:14px;font-size:15px;padding:12px 0}.weekday-picker label{min-height:36px;display:flex;gap:5px;align-items:center}.ledger-list{max-height:240px;overflow:auto}.record-line{font-size:14px;color:#8d7a9d;line-height:1.9;border-bottom:1px solid #f2edf7;padding-bottom:10px}.record-line strong{float:right}.record-line small{display:block;font-size:12px;color:#aa9bb5}.attachment-image{display:block;max-width:100%;max-height:60vh;object-fit:contain;margin:auto}.login-brand{font-size:45px;color:#8c6ace}.login-brand+h2{font-size:24px}.review-words{font-size:13px;color:#9a8aaa;border-top:1px dashed #eee7f7;padding-top:15px;line-height:1.9}.hero-copy h2{white-space:pre-line;overflow-wrap:anywhere}.modal-note{overflow-wrap:anywhere}#login-form>.primary-button{width:100%;min-height:44px}#logout-button{font-size:13px;white-space:nowrap}.admin-tiles{margin-bottom:15px}.form-field input[type=date],.form-field input[type=datetime-local]{min-width:0}.task-info{min-width:0;overflow-wrap:anywhere}.task-toolbar{gap:12px;flex-wrap:wrap}.task-row .text-button{font-size:13px}.task-row input:disabled{opacity:.4}.weekly-scroll .modal-note{margin:10px}#modal:has(.weekly-table){width:min(1000px,calc(100% - 32px))}#icp-link{color:#9a8aa8}
@media(max-width:580px){.voice-entry button{min-height:44px;font-size:15px}.date-controls input{font-size:19px;max-width:160px}.form-field input,.form-field textarea,.form-field select{font-size:19px}.routine-row{flex-wrap:wrap}.form-actions{flex-wrap:wrap}.task-toolbar .secondary-button{font-size:14px}.record-line{font-size:15px}.weekday-picker{gap:10px}.weekday-picker label{min-height:44px}.admin-tile{min-height:105px}.task-info{flex:1}.task-points{flex-shrink:0}}
.schedule-legend{display:flex;align-items:center;gap:16px;padding:10px 12px;font-size:13px;color:#8f83a3;border-bottom:1px solid #f0edf6}.schedule-legend>span{display:inline-flex;align-items:center;gap:6px}.schedule-legend i{width:8px;height:8px;border-radius:3px;display:inline-block}.school-key{background:#b9a4dc}.extra-key{background:#70b69c}.weekly-table .is-extra{background:#edf8f2;color:#36765e;box-shadow:inset 3px 0 0 #70b69c}.weekly-table .is-extra.is-today{background:#ddf1e6;box-shadow:inset 3px 0 0 #70b69c,inset 0 3px 0 #9274cb}.weekly-table .extra-course-row .weekly-period{color:#4a9277}.weekly-table .extra-course-heading td{background:#f1f8f4;color:#4a806b}
.note-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.note-actions .text-button{font-size:13px}.task-history-links{display:flex;gap:18px;flex-wrap:wrap}.history-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.history-filters .form-field{min-width:0}.history-keyword,.history-filters>.form-actions{grid-column:1/-1}.history-summary{font-size:14px;color:#93849f}.history-list{display:flex;flex-direction:column;gap:12px}.history-record{padding:14px;border:1px solid #eee7f4;border-radius:12px;background:#fcfaff;font-size:15px;overflow-wrap:anywhere}.history-meta{font-size:13px;color:#9a86ac;margin-bottom:9px}.history-record>p{line-height:1.9;margin:8px 0}.history-record>.history-text{white-space:pre-wrap}.history-record>small{display:block;color:#a593b2;font-size:13px;line-height:1.8}.history-task-title{display:block;font-size:15px;font-weight:500}.history-done{text-decoration:line-through;color:#9c91a6}.history-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;font-size:14px;color:#9a86ac}.history-pagination button{min-height:40px}@media(max-width:400px){.history-filters{grid-template-columns:1fr}.note-actions{gap:8px}.history-pagination{gap:8px}.history-pagination button{padding:8px 10px}}
.week-timeline{min-width:760px;--timeline-axis-width:64px;color:#80708f}.timeline-head,.timeline-canvas{display:grid;grid-template-columns:var(--timeline-axis-width) repeat(7,minmax(0,1fr))}.timeline-head{border-bottom:1px solid #ece6f3;background:#faf8fd}.timeline-corner{position:sticky;left:0;z-index:5;background:#faf8fd;display:grid;place-items:center;font-size:13px;border-right:1px solid #eee8f4}.timeline-day-head{text-align:center;font-size:15px;font-weight:600;padding:11px 4px;border-right:1px solid #eee8f4}.timeline-day-head>span{display:block;font-size:12px;font-weight:400;margin-top:4px;color:#aa9bb8}.timeline-day-head.is-today{color:#806124;background:#f5e4ad;box-shadow:none}.timeline-day-head.is-today>span{color:#9b7a36}.timeline-canvas{padding:12px 0 14px;background:#fff}.timeline-axis{height:var(--timeline-height);position:sticky;left:0;z-index:3;background:#fcfbfe;border-right:1px solid #eee8f4}.timeline-tick{position:absolute;right:9px;transform:translateY(-50%);font-size:13px;line-height:1;color:#a08eae;white-space:nowrap;font-variant-numeric:tabular-nums}.timeline-day{position:relative;height:var(--timeline-height);border-right:1px solid #f0eaf6;background-color:#fff;background-image:repeating-linear-gradient(to bottom,#f0eaf6 0,#f0eaf6 1px,transparent 1px,transparent var(--timeline-half-hour))}.timeline-day.is-today{background-color:#fff9e9;border-right-color:#ead59e}.timeline-course{position:absolute;display:flex;align-items:center;flex-direction:column;justify-content:flex-start;gap:3px;min-width:0;margin:0;padding:5px 4px;border:1px solid #e3d8f2;border-radius:4px;box-shadow:none;text-shadow:none;background-image:none;appearance:none;-webkit-appearance:none;filter:none;transform:none;text-align:center;line-height:1.45;background:#f1eafb;color:#77569f;overflow:hidden;z-index:1}.timeline-course.is-extra{background:#eaf6ef;border-color:#cde6d9;color:#36765e}.timeline-course:focus-visible{z-index:2;outline:2px solid #9274cb;outline-offset:1px}.timeline-course-name{font-size:14px;font-weight:500;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.timeline-course-time{font-size:12px;font-weight:400;line-height:1.4;overflow-wrap:normal;word-break:normal;font-variant-numeric:tabular-nums;flex-shrink:0;color:#9b82b7}.is-extra .timeline-course-time{color:#63927c}.timeline-empty{display:block;text-align:center;color:#b9adc6;font-size:13px;padding:20px 4px}.timeline-routines{padding:11px 13px;border-top:1px solid #eee7f4;color:#a08eab;font-size:13px;line-height:1.9}.timeline-routines summary{cursor:pointer;color:#9580a7;min-height:28px;display:list-item}.timeline-routines p{margin:7px 0}.timeline-warning{margin:10px 12px;color:#a38a64;font-size:14px;line-height:1.8}.schedule-legend{flex-wrap:wrap}.timeline-legend-hint{margin-left:auto;color:#b4a8be}.course-detail-name{font-size:19px;color:#7b6095}.course-detail-text{font-size:15px;line-height:1.9;white-space:pre-wrap;color:#9582a4}#modal:has(.week-timeline){width:min(1000px,calc(100% - 32px))}@media(max-width:580px){.timeline-legend-hint{display:none}}

/* 按已确认预览增大字号，保持时间轴位置和高度。 */
.timeline-course{padding:4px;gap:2px}.timeline-course-name{line-height:1.4}
.home-tasks-card{grid-column:1/-1}.home-task-fraction{font-size:15px;font-weight:400;color:#a595b5;font-variant-numeric:tabular-nums}.home-task-list .task-row{border:0;border-top:1px solid #f0ebf6;border-radius:0;margin:0;padding:17px 2px;background:transparent;gap:14px}.home-task-list .task-row:first-child{border-top:0}.home-task-list .task-info{flex:1;min-width:0}.home-task-list .task-check{flex-shrink:0}.home-task-list .task-points{flex-shrink:0;margin-left:auto}.home-task-note{font-size:12px;line-height:1.8;color:#b1a4bd;margin:5px 0 0}.home-task-empty{font-size:14px;line-height:1.9;color:#a595b5;margin:18px 0 8px}@media(max-width:580px){.home-task-list .task-row{gap:10px;padding:15px 0}.home-task-list .task-metadata{gap:7px}}

/* 保持时间轴位置和高度，稍收紧内边距以容纳大一号的两行课程名。 */
.timeline-course{padding:2px 3px;gap:1px}.timeline-course-name,.timeline-course-time{line-height:1.2}

/* 扁平课程块：学校紫色、课外绿色、今日暖黄色，保留键盘焦点轮廓。 */
.today-key{background:#e8cd7d}.timeline-course:hover{filter:none;transform:none;box-shadow:none;background:#e9e0f7}.timeline-course.is-extra:hover{background:#e0f0e7}.timeline-course:active{filter:none;transform:none;box-shadow:none}
