@import url("./aurora-tokens.css");
:root { --ease:cubic-bezier(.22,.7,.2,1); --radius:var(--radius-card); color-scheme:light; }
* { box-sizing:border-box; }
/* Keep native scrolling and momentum; hide only its visual chrome. */
html,body,dialog,.table-scroll,textarea { scrollbar-width:none; -ms-overflow-style:none; }
html::-webkit-scrollbar,body::-webkit-scrollbar,dialog::-webkit-scrollbar,dialog *::-webkit-scrollbar,.table-scroll::-webkit-scrollbar,textarea::-webkit-scrollbar { display:none; width:0; height:0; }
dialog,dialog * { scrollbar-width:none; }
html { overflow-anchor:none; }
body { margin:0; background:var(--bg); color:var(--ink); font:var(--text-body)/1.55 var(--font-system); -webkit-tap-highlight-color:transparent; overflow-x:hidden; }
main { max-width:560px; margin:0 auto; padding:calc(22px + env(safe-area-inset-top)) 20px calc(112px + env(safe-area-inset-bottom)); }
header { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; min-height:66px; }
header h1 { font-size:var(--text-title); font-weight:700; letter-spacing:-.8px; line-height:1.3; margin:4px 0; }
.eyebrow { color:var(--muted); font-size:var(--text-meta); font-weight:500; margin:0; }
.header-actions { display:flex; gap:8px; align-items:center; }
.icon-button { width:44px; height:44px; min-height:44px; padding:10px; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; }
#add-lesson { width:48px; height:48px; background:var(--primary); box-shadow:0 4px 12px var(--shadow-action); }
#settings-menu { color:var(--muted); border-color:transparent; background:transparent; }
.notice { font-size:var(--text-xs); color:var(--muted); margin-bottom:15px; }
h2 { font-size:var(--text-section); font-weight:650; letter-spacing:-.3px; margin:0 0 14px; }
h2 small { font-size:var(--text-caption); color:var(--muted); font-weight:400; }
h3 { font-size:var(--text-button); margin:14px 0; }
button,.button-link { min-height:46px; border:1px solid var(--line); background:var(--card); border-radius:13px; padding:10px 14px; color:var(--ink); font:inherit; font-size:var(--text-label); cursor:pointer; touch-action:manipulation; }
button:disabled { opacity:.5; cursor:default; }
/* Individual scale leaves layout and the navigation/page transform animations independent. */
button:not(.sheet-grabber):not(.text-button),.button-link,.glass-nav a { position:relative; transition:scale 120ms var(--ease); }
/* Transparent hit surface compensates the visual 0.98 scale while pressed. */
button:not(.sheet-grabber):not(.text-button)::after,.button-link::after,.glass-nav a::after { content:''; position:absolute; inset:0; }
button:not(:disabled):not(.sheet-grabber):not(.text-button):active::after,.button-link:active::after,.glass-nav a:active::after { inset:-1.03%; }
button:not(:disabled):not(.sheet-grabber):not(.text-button):active,.button-link:active,.glass-nav a:active { scale:.98; }
button[aria-busy="true"] { cursor:progress; }
.task-status { color:var(--muted); font-size:var(--text-meta); margin:12px 0 0; }
button.primary { background:var(--action-bg); color:var(--card); border:0; font-weight:600; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible { outline:2px solid var(--primary); outline-offset:3px; }
.danger { color:var(--danger); }
.wide { width:100%; margin:8px 0; }
.text-button { color:var(--primary-ink); border:0; background:transparent; }
input,select,textarea { font:inherit; width:100%; min-width:0; min-height:48px; border:1px solid var(--line); border-radius:12px; padding:12px; background:var(--surface-subtle); color:var(--ink); font-size:var(--text-body); }
textarea { min-height:140px; resize:vertical; }
label { display:block; color:var(--muted); font-size:var(--text-small); margin:12px 0 7px; }
.field { margin:12px 0; }
.date-time { display:grid; grid-template-columns:1.25fr 1fr; gap:12px; }
.panel { background:var(--card); border:1px solid var(--surface-line); border-radius:var(--radius); padding:18px; margin:16px 0; box-shadow:0 2px 8px var(--shadow-card); }
.subtle { color:var(--muted); font-size:var(--text-meta); line-height:1.7; overflow-wrap:anywhere; }
.row,.toolbar { display:flex; gap:10px; align-items:center; justify-content:space-between; }
.block-item { display:flex; justify-content:space-between; gap:12px; padding:14px 0; border-bottom:1px solid var(--line); font-size:var(--text-small); }
.student-card .row button { flex:1; }
.empty { text-align:center; padding:40px 20px; color:var(--muted); line-height:1.9; }
.salary strong { display:block; font-size:var(--text-number); letter-spacing:-1px; margin:14px 0; color:var(--primary-ink); }
.salary input { max-width:190px; }
.month-row { display:flex; justify-content:space-between; align-items:center; width:100%; padding:16px 0; border:0; border-bottom:1px solid var(--line); border-radius:0; text-align:left; font-size:var(--text-small); gap:12px; }
.month-row small,.candidate small,.draft-card small { display:block; font-size:var(--text-caption); color:var(--muted); margin-top:5px; font-weight:400; }
.draft-card { display:flex; flex-direction:column; align-items:flex-start; width:100%; text-align:left; gap:7px; }
.draft-card span { font-size:var(--text-meta); color:var(--primary-ink); }
.candidate { text-align:left; }
.candidate strong { font-size:var(--text-body); }
.stack { display:grid; gap:10px; }
details { margin:18px 0; color:var(--muted); }
summary { min-height:44px; display:flex; align-items:center; cursor:pointer; font-size:var(--text-small); }
.intent { border:1px solid var(--line); border-radius:15px; margin:18px 0; padding:12px; }
.intent legend { font-size:var(--text-meta); color:var(--muted); }
blockquote { margin:0; background:var(--soft-blue); padding:12px; border-radius:10px; font-size:var(--text-small); white-space:pre-wrap; overflow-wrap:anywhere; }
.course-row { display:grid; grid-template-columns:1fr 1fr 44px; gap:6px; margin:12px 0; }
.course-row button { padding:5px; }
.form-grid { display:block; }
.details dl { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.table-scroll { overflow:auto; }
footer { display:none; }

/* One persistent capsule and one moving indicator, shared by every route. */
.sidebar { position:fixed; inset-inline:0; margin-inline:auto; bottom:calc(12px + env(safe-area-inset-bottom)); width:min(440px,calc(100% - 32px)); z-index:30; }
.glass-nav { position:relative; display:grid; grid-template-columns:repeat(4,1fr); padding:7px; height:76px; border-radius:34px; border:1px solid var(--glass-edge); background:var(--glass-bg); -webkit-backdrop-filter:blur(20px) saturate(135%); backdrop-filter:blur(20px) saturate(135%); box-shadow:0 10px 32px var(--shadow-nav),0 2px 6px var(--shadow-nav-near),inset 0 1px 0 var(--card); isolation:isolate; }
.glass-nav a { position:relative; z-index:1; display:flex; flex-direction:column; justify-content:center; align-items:center; min-width:0; gap:3px; color:var(--muted); text-decoration:none; font-size:var(--text-caption); font-weight:500; border-radius:25px; }
.glass-nav a svg { width:23px; height:23px; }
.glass-nav a.active { color:var(--primary-ink); font-weight:650; }
.tab-indicator { position:absolute; inset:7px auto 7px 7px; width:calc((100% - 14px)/4); border-radius:25px; background:linear-gradient(155deg,var(--glass-top),var(--glass-bottom)); border:1px solid var(--glass-stroke); box-shadow:0 2px 8px var(--shadow-indicator),inset 0 1px 1px var(--card); transform:translateX(0); transition:transform 280ms var(--ease); }
.glass-nav[data-active="1"] .tab-indicator { transform:translateX(100%); }
.glass-nav[data-active="2"] .tab-indicator { transform:translateX(200%); }
.glass-nav[data-active="3"] .tab-indicator { transform:translateX(300%); }
#page-stage { position:relative; }
#content { min-width:0; }
.page-ghost { position:fixed; pointer-events:none; z-index:20; }

/* Calendar uses solid cards, colour for identity and text badges for status. */

main[data-page="calendar"] .notice { font-size:var(--text-caption); }
.week-picker { margin:0 0 19px; }
.week-tools { display:flex; align-items:center; justify-content:space-between; gap:4px; min-height:36px; margin-bottom:9px; }
.week-tools > span { color:var(--muted); font-size:var(--text-caption); white-space:nowrap; }
.today-button { padding:5px 0; border:0; background:transparent; min-height:36px; color:var(--primary-ink); font-size:var(--text-caption); font-weight:600; }
.week-arrows { display:flex; gap:2px; }
.week-arrows .icon-button { width:36px; height:36px; min-height:36px; padding:8px; background:transparent; border:0; }
.week-arrows svg { width:19px; height:19px; }
.week-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:4px; touch-action:pan-y pinch-zoom; }
.pending-tasks { margin:0 0 16px; color:var(--primary-ink); }
.pending-tasks summary { gap:8px; min-height:44px; font-size:var(--text-meta); }
.pending-tasks summary svg { width:17px; height:17px; flex-shrink:0; }
.pending-tasks summary svg:last-child { margin-left:auto; }
.pending-list { display:grid; gap:6px; margin-top:6px; }
.pending-list button { display:flex; align-items:center; justify-content:space-between; gap:10px; text-align:left; padding:10px 12px; font-size:var(--text-meta); }
.pending-list strong { font-weight:600; }
.pending-list small { display:block; color:var(--muted); font-size:var(--text-caption); margin-top:2px; }
.pending-reason { color:var(--primary-ink); font-size:var(--text-caption); white-space:nowrap; }
.pending-retry { font-size:var(--text-caption); margin-bottom:10px; }
.week-date { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; padding:9px 0 6px; min-height:76px; border-radius:18px; border:1px solid transparent; background:transparent; }
.week-date > span { font-size:var(--text-caption); font-weight:500; color:var(--muted); }
.week-date strong { font-size:var(--text-subtitle); font-weight:600; line-height:1.25; }
.week-date.is-today strong { color:var(--primary-ink); }
.week-date.selected { background:var(--soft-blue); border-color:var(--selected-line); box-shadow:inset 0 1px 0 var(--glass-highlight); }
.week-date.selected > span { color:var(--primary-ink); }
.date-dot { display:block; width:4px; height:4px; border-radius:50%; background:transparent; }
.date-dot.has-lessons { background:var(--decorative-ink); }
.selected .date-dot.has-lessons { background:var(--primary-ink); }
.agenda-heading { display:flex; align-items:center; justify-content:space-between; margin:0 0 14px; gap:8px; }
.agenda-heading h2 { font-size:var(--text-body); margin:0; }
.agenda-heading > span { color:var(--muted); font-size:var(--text-caption); }
.agenda-date { font-size:var(--text-meta); color:var(--muted); font-weight:600; margin:20px 0 12px 78px; }
.timeline-item { display:grid; grid-template-columns:52px 12px minmax(0,1fr); gap:7px; align-items:start; margin-bottom:10px; position:relative; }
.timeline-item:not(:last-child)::after { content:''; position:absolute; top:28px; bottom:-40px; left:64px; width:1px; background:var(--line); z-index:0; }
.timeline-dot,.timeline-time,.lesson { position:relative; z-index:1; }
.timeline-time { display:flex; flex-direction:column; align-items:flex-start; padding-top:15px; font-variant-numeric:tabular-nums; }
.timeline-time time { font-size:var(--text-body); font-weight:650; letter-spacing:-.4px; }
.timeline-time small { color:var(--muted); font-size:var(--text-caption); font-weight:500; margin-top:3px; white-space:nowrap; }
.timeline-dot { margin-top:22px; width:11px; height:11px; border-radius:50%; border:2px solid var(--bg); background:var(--student-color); box-shadow:0 0 0 1px var(--student-tint); }
.lesson { width:100%; min-height:96px; border:1px solid var(--surface-line); border-left:3px solid var(--student-color); border-radius:17px; padding:13px 14px; background:var(--card); text-align:left; box-shadow:0 3px 12px var(--shadow-card); }
.lesson-top { display:flex; align-items:center; justify-content:space-between; gap:6px; }
.lesson-top strong { font-size:var(--text-label); font-weight:650; letter-spacing:-.2px; overflow-wrap:anywhere; }
.lesson-subject { display:block; font-size:var(--text-meta); color:var(--muted); margin:3px 0 5px; }
.lesson-meta { display:flex; align-items:center; gap:4px; color:var(--muted); font-size:var(--text-caption); font-weight:500; }
.lesson-meta svg { width:13px; height:13px; }
.meta-dot { margin:0 2px; }
.badge { flex-shrink:0; font-size:10px; white-space:nowrap; padding:3px 7px; border-radius:7px; font-weight:500; background:var(--pending-bg); color:var(--pending-ink); }
.badge.confirmed { background:var(--confirmed-bg); color:var(--confirmed-ink); }
.badge.completed { background:var(--completed-bg); color:var(--completed-ink); }
.badge.cancelled { background:var(--cancelled-bg); color:var(--cancelled-ink); }
main[data-page="calendar"] .badge { font-size:var(--text-xs); font-weight:600; }
.color-blue { --student-color:var(--student-blue); --student-tint:var(--student-blue-tint); --student-ink:var(--student-blue-ink); }
.color-sage { --student-color:var(--student-sage); --student-tint:var(--student-sage-tint); --student-ink:var(--student-sage-ink); }
.color-lavender { --student-color:var(--student-lavender); --student-tint:var(--student-lavender-tint); --student-ink:var(--student-lavender-ink); }
.color-sand { --student-color:var(--student-sand); --student-tint:var(--student-sand-tint); --student-ink:var(--student-sand-ink); }
.color-rose { --student-color:var(--student-rose); --student-tint:var(--student-rose-tint); --student-ink:var(--student-rose-ink); }
.color-teal { --student-color:var(--student-teal); --student-tint:var(--student-teal-tint); --student-ink:var(--student-teal-ink); }
.calendar-empty { text-align:center; padding:46px 0 60px; }
.calendar-empty > svg { width:34px; height:34px; color:var(--decorative-ink); }
.calendar-empty h3 { font-size:var(--text-button); margin:16px 0 6px; }
.calendar-empty p { color:var(--muted); font-size:var(--text-meta); margin:0 0 20px; }
.soft-button { background:var(--soft-blue); color:var(--primary-ink); border:0; display:inline-flex; align-items:center; gap:6px; font-size:var(--text-small); }
.soft-button svg { width:18px; height:18px; }

/* Existing editors retained; course details use the glass bottom sheet. */
dialog { position:fixed; border:1px solid var(--card); border-radius:25px; width:min(540px,calc(100vw - 24px)); max-height:calc(92dvh - env(safe-area-inset-top)); padding:22px 20px calc(22px + env(safe-area-inset-bottom)); color:var(--ink); background:var(--card); overflow:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain; box-shadow:0 20px 80px var(--shadow-dialog); }
dialog:focus { outline:none; }
dialog::backdrop { background:var(--scrim); }
dialog[data-presentation="sheet"] { inset:auto 0 0; margin:0 auto; width:min(560px,100vw); max-height:calc(92dvh - env(safe-area-inset-top)); border-radius:30px 30px 0 0; background:var(--sheet-bg); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); padding:12px 24px calc(24px + env(safe-area-inset-bottom)); }
.sheet-grabber { display:flex; align-items:center; justify-content:center; width:100%; height:28px; min-height:28px; margin:0 auto 8px; padding:0; background:transparent; border:0; touch-action:none; cursor:grab; }
.sheet-grabber::before { content:''; width:34px; height:4px; background:var(--handle); border-radius:4px; }
dialog[data-dragging="true"] .sheet-grabber { cursor:grabbing; }
.dialog-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:18px; }
.dialog-head h2 { margin:0; font-size:var(--text-section); }
.dialog-head button { width:44px; min-height:44px; height:44px; padding:0; font-size:var(--text-large); line-height:1; border-radius:50%; background:var(--surface-subtle); border:0; color:var(--muted); }
.dialog-actions { display:flex; gap:10px; margin-top:22px; }
.dialog-actions button { flex:1; }
.check-label { display:flex; align-items:center; gap:10px; line-height:1.6; }
.check-label input { width:22px; min-height:22px; flex-shrink:0; }
.sheet-student { display:flex; gap:12px; align-items:center; margin:12px 0 24px; }
.sheet-student > div { flex:1; min-width:0; }
.student-avatar { display:grid; place-items:center; width:46px; height:46px; flex-shrink:0; border-radius:15px; background:var(--student-tint); color:var(--student-ink); font-size:var(--text-subtitle); font-weight:600; }
.sheet-student h3 { font-size:var(--text-subtitle); margin:0 0 3px; overflow-wrap:anywhere; }
.sheet-student p { font-size:var(--text-meta); color:var(--muted); margin:0; }
.lesson-facts { display:grid; grid-template-columns:1fr 1fr; gap:20px 14px; padding:18px; margin-bottom:22px; border:1px solid var(--line); border-radius:18px; background:var(--surface-translucent); }
.lesson-facts span { display:block; color:var(--muted); font-size:var(--text-xs); margin-bottom:5px; }
.lesson-facts strong { font-size:var(--text-small); font-weight:600; font-variant-numeric:tabular-nums; }
button.complete-primary { background:var(--action-bg); font-size:var(--text-subtitle); font-weight:650; min-height:54px; display:flex; justify-content:center; align-items:center; gap:8px; }
.completion-hint { font-size:var(--text-caption); color:var(--muted); text-align:center; margin:-1px 0 0; }
.lesson-facts span { font-size:var(--text-caption); color:var(--muted); }
.sheet-secondary { display:flex; gap:10px; margin-top:16px; }
.sheet-secondary button { flex:1; background:var(--surface-button); }
.earned-note { display:flex; align-items:center; gap:8px; font-size:var(--text-small); margin:0 0 20px; color:var(--confirmed-ink); }
.earned-note svg { width:18px; height:18px; }
.settings-list { display:grid; gap:6px; }
.settings-list > button { display:flex; gap:12px; align-items:center; text-align:left; background:transparent; border:0; min-height:56px; }
.settings-list > button svg:first-child { color:var(--primary-ink); width:22px; height:22px; }
.settings-list > button svg:last-child { margin-left:auto; width:17px; height:17px; color:var(--muted); }
.error { background:var(--error-bg); color:var(--error-ink); border-radius:12px; padding:12px; line-height:1.7; font-size:var(--text-small); }
[hidden] { display:none !important; }
#toast { position:fixed; bottom:calc(103px + env(safe-area-inset-bottom)); left:50%; transform:translateX(-50%); max-width:calc(100vw - 32px); width:max-content; background:var(--toast-bg); color:var(--card); padding:10px 16px; border-radius:18px; display:none; align-items:center; gap:16px; z-index:40; font-size:var(--text-meta); line-height:1.6; box-shadow:0 8px 24px var(--shadow-toast); }
#toast button { min-height:36px; border:0; padding:4px 8px; background:var(--toast-button); color:var(--card); font-size:var(--text-meta); font-weight:600; border-radius:10px; }
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) { .glass-nav { background:var(--bg); } dialog[data-presentation="sheet"] { background:var(--sheet-fallback); } }
@media (max-width:360px) { main { padding-left:14px; padding-right:14px; } header h1 { font-size:var(--text-title-small); } .header-actions { gap:2px; } .week-days { gap:1px; } .timeline-item { grid-template-columns:46px 10px minmax(0,1fr); gap:5px; } .timeline-item:not(:last-child)::after { left:55px; } .lesson { padding:12px 10px; } .lesson-top strong { font-size:var(--text-small); } .badge { font-size:9px; padding:3px 5px; } .date-time { gap:6px; } dialog[data-presentation="sheet"] { padding-left:18px; padding-right:18px; } }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after,dialog::backdrop { animation:none !important; transition:none !important; scroll-behavior:auto !important; } button,.button-link,.glass-nav a { scale:1 !important; } }
dialog[data-shared-phase="open"]::backdrop { animation:shared-backdrop-in 350ms var(--ease) both; }
dialog[data-shared-phase="close"]::backdrop { animation:shared-backdrop-out 350ms var(--ease) both; }
@keyframes shared-backdrop-in { from { opacity:0; } to { opacity:1; } }
@keyframes shared-backdrop-out { from { opacity:1; } to { opacity:0; } }

/* Round 4: shared visual language; calendar and navigation remain unchanged. */
.student-list,.income-list {background:var(--card);border:1px solid var(--line);border-radius:20px;overflow:hidden;}
.student-row {display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--card);border:0;border-radius:0;padding:16px 14px;min-height:88px;}
.student-row+.student-row {border-top:1px solid var(--surface-line);}
.student-row-name {flex:1;min-width:0;}.student-row-name strong {display:block;font-size:var(--text-body);font-weight:650;overflow-wrap:anywhere;}
.student-row small,.detail-lesson-row small {display:block;font-size:var(--text-caption);color:var(--muted);margin-top:4px;}
.student-balance {font-size:var(--text-meta);font-weight:600;text-align:right;font-variant-numeric:tabular-nums;}.student-balance small {font-weight:400;}
.student-row>svg {width:14px;height:14px;color:var(--muted);flex-shrink:0;}.archived-students {margin-top:20px;background:transparent;box-shadow:none;}
.detail-section-title {font-size:var(--text-label);margin:24px 0 10px;}.detail-lesson-row {display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:13px 0;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;}.detail-lesson-row strong {font-size:var(--text-small);}.student-history {margin-top:20px;}.student-history summary {padding:12px 0;}
.salary-summary {padding:12px 4px 26px;}.salary-summary>span,.salary-summary>small {display:block;color:var(--muted);font-size:var(--text-meta);}.salary-summary>strong {display:block;font-size:var(--text-money);letter-spacing:-1.5px;font-weight:650;margin:8px 0; font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.income-history-heading {display:flex;align-items:center;justify-content:space-between;gap:8px;margin:24px 2px 12px;}.income-history-heading h2 {font-size:var(--text-body);margin:0;}.income-history-heading>span {font-size:var(--text-caption);color:var(--muted);font-variant-numeric:tabular-nums;}
.income-list summary {display:flex;align-items:center;gap:8px;list-style:none;min-height:62px;padding:16px;cursor:pointer;}.income-list summary::-webkit-details-marker {display:none;}.income-list summary>span:first-child {flex:1;}.income-list summary strong {font-size:var(--text-body);font-variant-numeric:tabular-nums;}.income-list summary svg {width:15px;height:15px;color:var(--muted);}.income-list details[open]>summary svg {rotate:90deg;}.income-list details+details {border-top:1px solid var(--line);}
.income-lesson {display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;width:calc(100% - 32px);margin:0 16px;padding:13px 0;border:0;border-top:1px solid var(--surface-line);border-radius:0;text-align:left;background:var(--card); font-variant-numeric:tabular-nums;}.income-lesson time {color:var(--muted);font-size:var(--text-caption);}.income-lesson small {display:block;font-size:var(--text-caption);color:var(--muted);margin-top:3px;}.income-lesson strong {font-size:var(--text-small);}.income-empty {padding:0 16px 16px;}.income-footnote {font-size:var(--text-caption);color:var(--muted);margin:18px 2px;}
.ai-intro-icon {display:grid;place-items:center;background:var(--soft-blue);color:var(--primary-ink);width:42px;height:42px;border-radius:14px;margin-bottom:16px;}.ai-intro-icon svg {width:25px;height:25px;}.ai-overview,.ai-steps {display:flex;gap:8px;align-items:center;justify-content:space-between;margin:18px 0;}.ai-overview span {font-size:var(--text-meta);color:var(--muted);}.ai-steps span {display:flex;align-items:center;gap:6px;font-size:var(--text-meta);color:var(--muted);}.ai-steps b {display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--surface-subtle);font-size:var(--text-caption);}.ai-steps .active {color:var(--primary-ink);font-weight:600;}.ai-steps .active b {background:var(--soft-blue);}.ai-back {padding-left:0;margin-bottom:12px;min-height:40px;}.draft-card {width:100%;text-align:left;border:1px solid var(--line);box-shadow:none;}.draft-card>span {color:var(--primary-ink);font-size:var(--text-caption);}.draft-card>small {color:var(--muted);}.intent {background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px;margin:16px 0;}.intent blockquote {margin:0 0 16px;border-left:3px solid var(--soft-blue);padding:8px 12px;color:var(--muted);font-size:var(--text-meta);}.candidate {background:var(--card);border:1px solid var(--line);margin:10px 0;text-align:left;}.candidate strong,.candidate small {display:block;}.candidate small {color:var(--muted);margin-top:5px;}.chat-image-preview {display:flex;gap:10px;overflow-x:auto;padding:8px 0 12px;}.chat-image-item {position:relative;flex-shrink:0;width:84px;}.chat-image-item img {width:84px;height:112px;object-fit:cover;border-radius:12px;border:1px solid var(--soft-blue);}.chat-image-item button {position:absolute;right:-5px;top:-5px;width:30px;min-height:30px;padding:0;border-radius:50%;background:var(--surface-subtle);color:var(--ink);}
@media(max-width:360px){.student-row {gap:8px;padding:14px 10px;}.student-row .student-avatar {width:38px;height:38px;}.student-balance {font-size:var(--text-caption);}.salary-summary>strong {font-size:var(--text-number);}.income-history-heading>span {font-size:var(--text-xs);}}
.ai-check-note {background:var(--soft-blue);color:var(--primary-ink);padding:12px 14px;border-radius:14px;font-size:var(--text-caption);line-height:1.7;}

/* V2.1 AI-only simplification; other accepted pages remain untouched. */
main[data-page="ai"] #date-label {display:none;}
main[data-page="ai"] header {margin-bottom:18px;}
.ai-simple-form {margin-top:16px;}
.ai-simple-form>fieldset {border:0;padding:0;margin:0;min-width:0;}
.ai-simple-form textarea {background:var(--card);min-height:142px;resize:vertical;}
.ai-simple-form .field {margin-bottom:16px;}
.ai-simple-form label {color:var(--muted);font-size:var(--text-meta);}
.ai-upload {display:flex;align-items:center;justify-content:center;min-height:48px;border:1px dashed var(--selected-line);border-radius:14px;background:var(--soft-blue);color:var(--primary-ink) !important;font-size:var(--text-small) !important;cursor:pointer;}
.ai-upload input {position:absolute;width:1px;height:1px;min-height:1px;opacity:0;overflow:hidden;}
.ai-upload:focus-within {outline:2px solid var(--primary);outline-offset:3px;}
.ai-simple-form .chat-image-preview:empty {display:none;}
.ai-simple-form .chat-image-preview {margin:10px 0 2px;}
#ai-analyze {margin-top:16px;min-height:52px;font-weight:650;font-size:var(--text-button);}
#ai-inline-result {margin-top:24px;}
#ai-inline-result:empty {display:none;}
.ai-result-card {background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px;}
.ai-result-heading {display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px;}
.ai-result-heading h2 {font-size:var(--text-body);margin:0;}
.ai-selected-student {font-size:var(--text-small);margin:0 0 12px;color:var(--muted);}
.ai-best-date {font-size:var(--text-subtitle);font-weight:650;display:block;}
.ai-best-time {display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:var(--text-time);font-weight:650;font-variant-numeric:tabular-nums;margin:5px 0 16px;}
.ai-best-time span {font-size:var(--text-caption);font-weight:500;color:var(--muted);}
.ai-result-card .ai-check-note {padding:10px 12px;margin:12px 0 18px;}
.ai-detail {border-top:1px solid var(--surface-line);}
.ai-detail summary {font-size:var(--text-meta);color:var(--muted);cursor:pointer;min-height:46px;padding:12px 0;}
.ai-detail p {font-size:var(--text-meta);color:var(--muted);}
.ai-detail form {padding-bottom:14px;}
.ai-reply-region {padding-top:16px;}
.ai-reply-region textarea {background:var(--surface-subtle);min-height:128px;}
.ai-template-row {display:flex;align-items:center;gap:8px;margin-bottom:12px;}
.ai-template-row select {flex:1;min-width:0;font-size:var(--text-small);}
.ai-template-row button {flex-shrink:0;padding:8px;font-size:var(--text-meta);}
.ai-agreement {font-size:var(--text-meta);margin:18px 0 14px;color:var(--muted);}
.ai-clarification {font-size:var(--text-small);line-height:1.8;color:var(--muted);}
.ai-template-list .block-item {gap:8px;}.ai-template-list .block-item>span {flex:1;overflow-wrap:anywhere;}
.ai-template-list button {padding:8px;font-size:var(--text-meta);}
@media(max-width:360px){.ai-result-card {padding:15px;}.ai-best-time {font-size:21px;}.ai-best-time span {font-size:var(--text-xs);}}

/* Aurora: typography and local accents; navigation and sheet timings are unchanged. */
body { font-variant-numeric:tabular-nums; }
header h1 { font-weight:var(--weight-title); letter-spacing:-1.1px; }
.eyebrow { letter-spacing:.04em; }
header { margin-bottom:var(--space-3); }
.notice { font-size:var(--text-caption); line-height:1.6; margin-bottom:var(--space-4); }
button,input,select,textarea { border-radius:var(--radius-control); }
button.primary { background:var(--action-bg); }
.calendar-day-number { font-size:var(--text-number); line-height:1.15; font-weight:var(--weight-title); }
.calendar-day-number small { font-size:var(--text-large); margin-left:2px; }
.calendar-weekday { display:block; font-size:var(--text-label); color:var(--muted); letter-spacing:0; font-weight:var(--weight-medium); margin-top:var(--space-1); }
.week-date strong { font-size:var(--text-large); font-weight:var(--weight-emphasis); }
.badge.ai_suggested { background:var(--lavender-soft); color:var(--lavender-ink); }
.badge.negotiating { background:var(--soft-blue); color:var(--primary-ink); }
.badge.pending { background:var(--pending-bg); color:var(--pending-ink); }
main[data-page="ai"] .ai-upload { background:var(--lavender-soft); color:var(--lavender-ink) !important; border-color:var(--lavender-line); }
main[data-page="ai"] .ai-upload:focus-within { outline-color:var(--lavender-ink); }
main[data-page="ai"] .ai-check-note { background:var(--lavender-soft); color:var(--lavender-ink); }
main[data-page="ai"] .ai-best-date { color:var(--lavender-ink); }
main[data-page="ai"] .ai-detail summary::after { color:var(--lavender-ink); }
main[data-page="students"] #new-student { background:var(--mint-soft); color:var(--mint-ink); }
.student-row { min-height:76px; padding:var(--space-3); gap:var(--space-3); }
.student-row .student-avatar { width:42px; height:42px; border-radius:14px; }
.student-row-name strong { font-size:var(--text-body); font-weight:var(--weight-emphasis); }
.student-row small { margin-top:3px; }
.student-balance { font-size:var(--text-small); white-space:nowrap; }
.archived-students { margin:var(--space-4) 0 0; border:0; border-top:1px solid var(--line); padding:0; background:transparent; }
.archived-students summary { justify-content:space-between; min-height:48px; }
.archived-students summary svg { width:15px; height:15px; }
.archived-students[open] summary svg { rotate:90deg; }
.salary-summary { padding:var(--space-3) 0 var(--space-6); }
.salary-summary>span::before { content:''; display:inline-block; width:18px; height:3px; background:var(--champagne); vertical-align:middle; margin-right:var(--space-2); border-radius:2px; }
.salary-summary>strong { font-size:clamp(38px,10.5vw,var(--text-money)); font-weight:var(--weight-title); letter-spacing:-1.6px; line-height:1.25; margin:var(--space-3) 0; }
.income-list { border:0; border-radius:0; background:transparent; }
.income-list details { margin:0; }
.income-list summary { padding:var(--space-4) 0; border-bottom:1px solid var(--line); }
.income-list details+details { border-top:0; }
.income-lesson { width:100%; margin:0; background:transparent; }
.income-history-heading { align-items:baseline; flex-wrap:wrap; }
.income-footnote { line-height:1.7; }
.income-history-heading h2::before { content:''; display:inline-block; width:5px; height:5px; border-radius:50%; background:var(--champagne); margin-right:var(--space-2); vertical-align:middle; }
@media(max-width:360px) {
  .calendar-day-number { font-size:36px; }
  .student-row { gap:var(--space-2); padding:var(--space-3) 10px; }
  .student-row .student-avatar { width:36px; height:36px; font-size:var(--text-button); }
  .student-row-name strong { font-size:var(--text-label); }
  .student-balance { font-size:var(--text-meta); }
}
