/* 第二版新增样式。保留第一版 style.css，便于对照学习。 */
[hidden] { display: none !important; }

/* 登录与注册页面：未登录时隐藏计划操作区。 */
body.signed-out main,
body.signed-out footer,
body.signed-out .nav,
body.signed-out .account-menu { display: none !important; }
body:not(.signed-out) .auth-page { display: none; }
.auth-page { min-height: calc(100vh - 90px); display: grid; place-items: center; padding: 35px 0; }
.auth-card { width: min(430px, 100%); padding: 34px; background: #fff; border: 1px solid #e6edf2; border-radius: 20px; box-shadow: 0 14px 44px #284b6a12; }
.auth-card h1 { font-size: 2rem; margin-bottom: 9px; }
.auth-intro { font-size: .85rem; color: #8292a2; line-height: 1.65; }
.auth-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; padding: 4px; margin: 24px 0; background: #f1f5f8; border-radius: 12px; }
.auth-tabs button { border: 0; border-radius: 9px; padding: 10px; background: transparent; color: #8192a2; }
.auth-tabs button.active { background: #fff; color: #356e92; box-shadow: 0 2px 8px #284b6a12; font-weight: 700; }
.password-wrap { position: relative; display: block; }
.password-wrap input { padding-right: 47px; }
.password-wrap button { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); border: 0; border-radius: 7px; background: transparent; color: #6c8da4; width: 36px; height: 35px; font-size: 1.15rem; }
.password-wrap button:hover { background: #eef5f9; }
.auth-submit { width: 100%; margin-top: 9px; }
.account-menu { display: flex; align-items: center; gap: 10px; color: #617a8d; font-size: .82rem; white-space: nowrap; }

/* 单次删除和整套删除并列，按钮始终位于任务信息下方。 */
.event-card .card-actions { flex-direction: column; align-items: flex-end; }
.event-card .card-actions button { padding: 3px 0; }
.event-card .card-actions .delete-event { color: #a87563; }

/* 时间方式的圆形选项与文字固定在同一行。 */
.radio-field label { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
.radio-field label input { width: 16px; height: 16px; margin: 0; flex: none; order: 2; }

/* 手动重复模块沿用第一版输入框、标签与浅色面板风格。 */
.repeat-field { padding: 15px; margin: 4px 0 15px; background: #f7fafc; border: 1px solid #e4edf2; border-radius: 12px; }
.repeat-field > label { color: #536c7f; font-size: .83rem; font-weight: 700; }
.repeat-field select { margin: 3px 0 2px; }
.repeat-weekdays { margin-top: 12px; }
.repeat-weekdays > span { display: block; margin-bottom: 8px; color: #667f91; font-size: .77rem; }
.repeat-weekdays > div { display: flex; flex-wrap: wrap; gap: 7px; }
.repeat-weekdays label { display: inline-flex; align-items: center; gap: 5px; padding: 6px 8px; background: #fff; border: 1px solid #dbe7ee; border-radius: 8px; color: #637b8c; font-size: .76rem; cursor: pointer; }
.repeat-weekdays input { width: 14px; height: 14px; margin: 0; accent-color: #4e86aa; }

.export-tutorial { margin-top: 18px; color: #6d8192; line-height: 1.7; font-size: .83rem; }
.export-panel .import-guide { display: none; }
.export-tutorial h3 { color: #365b75; }
.export-tutorial p { margin: 15px 0 5px; }
.export-tutorial ol { margin: 0; padding-left: 22px; }
.export-tutorial li { margin: 5px 0; }
.export-memory-note { padding: 10px 12px; background: #f2f8fb; border-radius: 9px; color: #51758c; }

/* 课表识别确认区沿用浅色卡片与原有表单控件风格。 */
.ocr-panel { max-width: 900px; }
.ocr-source-buttons { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 12px; }
.ocr-source-buttons .button { display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.ocr-file-input { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; clip-path: inset(50%); }
.ocr-source-buttons label:has(.ocr-file-input:focus-visible) { outline: 3px solid #9bc4df; outline-offset: 2px; }
.ocr-source-buttons label:has(.ocr-file-input:disabled) { opacity: .45; pointer-events: none; }
.ocr-preview { display: block; max-width: 100%; max-height: 250px; object-fit: contain; margin: 14px 0; border: 1px solid #e6edf2; border-radius: 11px; background: #f7fafc; }
.ocr-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin: 20px 0 16px; color: #6e8191; font-size: .83rem; }
.ai-schedule-draft { margin: 18px 0; padding: 20px; border: 1px solid #dbe8ef; border-radius: 13px; background: #f7fafc; }
.ai-schedule-draft h3 { margin-bottom: 15px; color: #365b75; }
.ai-schedule-draft .muted { margin-bottom: 14px; }
.ai-select-all, .ai-course-heading { display: inline-flex; align-items: center; gap: 7px; color: #365b75; font-size: .86rem; }
.ai-course-list { display: grid; gap: 12px; margin: 12px 0 20px; }
.ai-course-row { padding: 14px; border: 1px solid #dbe8ef; border-radius: 11px; background: #fff; }
.ai-course-fields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 10px; }
.ai-course-fields .field:first-child { grid-column: span 2; }
.ai-course-fields .field { min-width: 0; }
.ai-course-fields input, .ai-course-fields select { width: 100%; }
.ai-term-settings { border-top: 1px solid #dbe8ef; padding-top: 16px; }
.ai-term-settings .field { max-width: 260px; }
.ai-section-times { display: grid; gap: 9px; margin: 10px 0 22px; }
.ai-section-row { display: grid; grid-template-columns: 110px repeat(2, minmax(0, 200px)); align-items: end; gap: 12px; padding: 10px 12px; border-radius: 9px; background: #fff; }
.ai-section-row strong { align-self: center; color: #365b75; font-size: .84rem; }
.ocr-hint { margin: 16px 0 0; }

/* 便签只显示在桌面版左侧，宽度为上一版的两倍。 */
.notes-sidebar { display: none; position: fixed; top: 100px; bottom: 95px; width: 300px; overflow-y: auto; padding: 12px; background: #fff; border: 1px solid #e6edf2; border-radius: 15px; box-shadow: 0 8px 28px #284b6a08; z-index: 5; }
.notes-left { left: 10px; }
.notes-sidebar h2 { font-size: .9rem; margin-bottom: 13px; }
.notes-sidebar h2 small { float: right; color: #91a0af; font-size: .72rem; }
.notes-list { display: grid; gap: 9px; margin-bottom: 12px; }
.note-card { padding: 10px; background: #fffdf5; border: 1px solid #f0e8ca; border-radius: 10px; }
.note-card p { margin: 0 0 8px; color: #5d6170; font-size: .78rem; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
.note-actions { display: flex; justify-content: flex-end; gap: 4px; }
.notes-sidebar textarea { width: 100%; padding: 8px; resize: vertical; border: 1px solid #dce5eb; border-radius: 8px; font-size: .78rem; }
.notes-add-form .button { width: 100%; margin-top: 6px; padding: 8px 5px; font-size: .76rem; }
.notes-message { color: #b45151; font-size: .73rem; line-height: 1.5; }
body.signed-out .notes-sidebar { display: none !important; }
@media (min-width: 1180px) { .app-shell { max-width: min(1220px, calc(100vw - 340px)); margin-left: 330px; margin-right: 10px; } .notes-sidebar { display: block; } }
@media (min-width: 1180px) and (max-width: 1499px) { .site-header { gap: 10px; } .nav { gap: 2px; } .nav-button { padding: 9px 8px; font-size: .8rem; } }
@media (min-width: 1500px) { .app-shell { max-width: min(1220px, calc(100vw - 430px)); margin-left: 410px; } .notes-sidebar { width: 380px; padding: 15px; } .notes-left { left: 15px; } }

/* AI 阶段与任务列表在确认前只存在于浏览器内存。 */
.ai-plan-panel { max-width: 900px; }
.ai-plan-date-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
#ai-plan-status { margin-left: 12px; color: #6d8192; font-size: .82rem; }
#ai-plan-result { border-top: 1px solid #e6edf2; margin-top: 22px; padding-top: 20px; }
#ai-plan-result-title { color: #365b75; }
#ai-plan-stages { display: grid; gap: 14px; }
.ai-plan-stage { padding: 16px; border: 1px solid #dbe8ef; border-radius: 12px; background: #f7fafc; }
.ai-plan-stage h4 { margin: 0 0 4px; color: #365b75; }
.ai-plan-task { display: grid; grid-template-columns: minmax(170px, 1fr) minmax(300px, 1.5fr); gap: 12px; align-items: center; margin-top: 9px; padding: 11px; background: #fff; border: 1px solid #e5edf2; border-radius: 9px; }
.ai-plan-task-title, .ai-plan-review { display: flex; align-items: center; gap: 7px; font-size: .82rem; }
.ai-plan-task-title strong { overflow-wrap: anywhere; }
.ai-plan-task-controls { display: grid; grid-template-columns: 1fr 1fr auto; gap: 10px; align-items: center; }
.ai-plan-task-controls .field { margin: 0; }
.ai-plan-task-controls .field input { padding: 8px; }
.ai-plan-review { white-space: nowrap; }
.ai-plan-clock { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 8px 12px; width: fit-content; max-width: 100%; padding: 12px 15px; border: 1px solid #dbe8ef; border-radius: 10px; }
.ai-plan-clock-options { display: inline-flex; align-items: center; justify-content: flex-end; gap: 8px 16px; flex-wrap: wrap; }
.ai-plan-clock label, .ai-plan-group-review { display: inline-flex; align-items: center; justify-content: flex-end; gap: 7px; }
.ai-plan-clock input[type="radio"] { width: auto; margin: 0; padding: 0; flex: none; accent-color: #4e86aa; }
.task-search-panel { margin-bottom: 18px; }
.task-search-panel .field { margin-bottom: 8px; }
.task-search-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.task-search-results { display: grid; gap: 8px; margin-top: 12px; max-height: 360px; overflow: auto; }
.task-search-row { display: flex; align-items: center; gap: 10px; padding: 9px 11px; border: 1px solid #e5edf2; border-radius: 9px; background: #f9fbfc; }
.task-search-row input { flex: none; }
.task-search-row span { overflow-wrap: anywhere; }
.ai-plan-group-review { margin-top: 18px; padding: 12px 14px; background: #f0f7fb; border-radius: 10px; }
.ai-plan-actions { display: flex; flex-wrap: wrap; gap: 9px; margin: 18px 0; }
@media (max-width: 750px) { .ai-plan-task, .ai-plan-task-controls { grid-template-columns: 1fr; } .ai-plan-date-grid { grid-template-columns: 1fr; } }

/* 右下角署名与无交互遮挡的三秒花瓣动画。 */
.app-shell { padding-bottom: 78px; } /* 页面底部留出空间，署名不会压住最后一行操作内容。 */
.developer-credit { position: fixed; right: 14px; bottom: 13px; z-index: 20; display: flex; align-items: center; gap: 9px; max-width: 330px; padding: 9px 10px; background: #ffffffed; border: 1px solid #e8dfe8; border-radius: 13px; box-shadow: 0 5px 18px #284b6a18; }
.developer-credit div { display: grid; gap: 3px; color: #755b71; font-size: .66rem; line-height: 1.4; pointer-events: none; }
.developer-credit strong { font-weight: 650; }
.developer-credit span { color: #a2889a; }
.developer-credit button { flex: none; width: 35px; height: 35px; border: 0; border-radius: 50%; background: #fff0f7; font-size: 1.2rem; cursor: pointer; }
.developer-credit button:hover { background: #fce0ed; }
.petal-layer { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: 19; }
.petal { position: absolute; top: -35px; left: var(--x); color: #e39fbd; font-size: var(--size); opacity: .7; text-shadow: 0 1px 3px #fff; will-change: transform; animation: petal-fall var(--duration) linear var(--delay) forwards; }
@keyframes petal-fall { from { transform: translate3d(0, -20px, 0) rotate(0deg); opacity: 0; } 15% { opacity: .72; } to { transform: translate3d(var(--drift), 105vh, 0) rotate(var(--spin)); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .petal { animation: none; opacity: 0; } }

@media (max-width: 700px) {
  .site-header { flex-wrap: wrap; }
  .account-menu { margin-left: auto; }
  .auth-card { padding: 25px; }
  .event-card .card-actions { flex-direction: row; align-items: center; flex-wrap: wrap; }
  .developer-credit { max-width: 260px; padding: 7px; }
  .developer-credit div { font-size: .57rem; }
  .ai-course-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ai-section-row { grid-template-columns: 1fr 1fr; }
  .ai-section-row strong { grid-column: 1 / -1; }
}
