/* Shared semantic surfaces keep every control readable in all six themes. */
:root{--on-accent:#111a30;--danger:#ffb3ba;--success:#a8ddbc}
html[data-theme=pearl],html[data-theme=peach]{--danger:#a92043;--success:#216643}
.message.assistant{background:var(--panel2);border-color:var(--line);color:var(--ink)}
.message.user{background:var(--accent);border-color:var(--line);color:var(--on-accent)}
.message.assistant:before{content:'🫶 小柏';color:var(--muted)}
.message.user:before{color:inherit;opacity:.8}
.composer textarea{color:var(--ink);caret-color:var(--ink);background:transparent}
.composer .pill{background:var(--field);color:var(--ink);border-color:var(--line)}
.primary{color:var(--on-accent)}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
input:disabled,textarea:disabled,select:disabled{color:var(--muted);-webkit-text-fill-color:var(--muted)}
.file-button,.composer .file-button,.text-button{color:var(--ink)}
.text-button{background:none;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}
.text-button:hover{color:var(--ink);text-decoration-color:var(--accent)}
.status-card{background:var(--panel);border-color:var(--line);color:var(--ink)}
.status-card .status-name{color:var(--ink)}
.status-card p,.status-card .tiny{color:var(--muted)}
.section-emoji{background:var(--panel2);border-color:var(--line)}
nav button:hover{background:var(--panel2);color:var(--ink)}
nav button.active,nav button.active:hover{background:rgba(var(--accent-rgb),.18);color:var(--ink)}
.circle-button{color:var(--ink);border-color:var(--muted)}
.circle-button:hover{color:var(--ink);background:var(--panel2);border-color:var(--ink)}
nav i{background:var(--panel2);color:var(--ink)}
.error,.overdue{color:var(--danger)}
.pair-code,.search-result a{color:var(--ink)}
.search-result a{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px}
.cat-area[data-mood] .cat-tag{color:var(--ink);border-color:var(--line);background:var(--panel2)}
.toast{background:var(--panel);color:var(--ink);border-color:var(--line)}
.empty,.empty p,details summary,.check{color:var(--muted)}
.summary-note,.camera-item{border-color:var(--line)}
.sidebar-label{margin-top:25px}
.sidebar nav{overflow-y:auto;min-height:0;scrollbar-width:thin;padding-right:3px}
.sidebar nav button{padding-top:10px;padding-bottom:10px}
.sidebar-bottom{flex-shrink:0}
.sidebar-bottom button{color:var(--muted)}
/* Compact categories leave room to see the memories themselves. */
.category-controls{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:5px 0 16px}
.category-controls input{width:230px;max-width:60%}
.memory-categories{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:16px}
.memory-category{padding:15px 16px;border-radius:18px;display:grid;grid-template-columns:30px minmax(0,1fr);gap:2px 10px;align-items:center}
.memory-category .category-emoji{grid-row:1/3;font-size:25px;margin:0;line-height:1.4}
.memory-category strong{font-size:13px;line-height:1.4}
.memory-category small{font-size:10px}
.record-source .text-button{margin:0;font-size:12px}
.memory-receipt{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 22px;padding-left:4px}
.memory-receipt .small-chip{color:var(--ink);background:var(--field);white-space:normal}
.custom-field{padding:15px 18px;border:1px solid var(--line);border-radius:17px;margin:12px 0;background:var(--field)}
.custom-field label{margin-top:0}
.custom-field-footer{display:flex;justify-content:space-between;align-items:center;gap:12px}
.custom-field-footer label{margin:0}
/* Daylight scheduling: actual astronomy and the two independent offsets. */
.solar-offsets{margin-top:22px;border:1px solid var(--line);padding:16px;border-radius:18px;background:var(--field)}
.solar-preview{margin:18px 0 8px}
.solar-hours{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;margin-bottom:6px;font-variant-numeric:tabular-nums}
.solar-bar{height:13px;border-radius:20px;border:1px solid var(--line);box-shadow:inset 0 1px 3px #0001}
#solar-status,#quick-solar-status{white-space:pre-line;line-height:1.9;font-variant-numeric:tabular-nums;margin-top:12px}
/* A calendar for the things that happened, as well as the things planned. */
.calendar-layout{display:grid;grid-template-columns:minmax(290px,360px) minmax(0,1fr);gap:24px;align-items:start}
.calendar-month{position:sticky;top:24px;min-width:0;padding:22px}
.calendar-month-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:22px}
.calendar-month-nav .pill{font-size:23px;line-height:1;padding:7px 14px}
.calendar-month-nav h2{font-size:19px;font-variant-numeric:tabular-nums}
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.calendar-weekdays{color:var(--muted);font-size:11px;text-align:center;margin-bottom:8px}
.calendar-cell{min-width:0;aspect-ratio:.92;border:1px solid transparent;border-radius:12px;padding:6px 2px 2px;font-size:13px;color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-variant-numeric:tabular-nums}
.calendar-cell:hover{background:var(--panel2)}
.calendar-cell.other-month{opacity:.42}
.calendar-cell.today{border-color:var(--line);font-weight:700}
.calendar-cell.selected{background:var(--accent);color:var(--on-accent);border-color:var(--accent);opacity:1}
.calendar-dots{height:7px;display:flex;gap:3px;justify-content:center;align-items:center}
.calendar-dots i{display:block;width:4px;height:4px;border-radius:50%}
.dot-plan{background:#ad78ef}.dot-memory{background:#5f9ce8}.dot-record{background:#65b894}
.calendar-cell.selected .calendar-dots i{box-shadow:0 0 0 1px var(--on-accent)}
.calendar-key{display:flex;gap:10px;flex-wrap:wrap;font-size:10px;margin:20px 0 10px}
.calendar-jump{display:flex;gap:12px;align-items:center;justify-content:space-between;padding-bottom:10px;border-bottom:1px solid var(--line)}
.calendar-jump label{font-size:10px;margin:0;max-width:160px}.calendar-jump input{padding:7px;margin-top:4px;font-size:12px}
.calendar-day{min-width:0}
.calendar-day-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:5px 0 22px}
.calendar-day-heading h2{font-size:28px;font-weight:500;letter-spacing:-.7px;margin-top:5px;font-variant-numeric:tabular-nums}
.calendar-day .card{border-radius:24px}
.calendar-day .card-title h2{font-size:16px}
.calendar-day .empty{padding:20px 10px}
.calendar-day .empty-emoji{font-size:25px}
.day-schedule{display:flex;gap:15px;align-items:center;padding:14px 0;border-top:1px solid var(--line)}
.day-schedule:first-child{border-top:0;padding-top:0}
.day-schedule h3,.day-memory h3{font-size:15px;font-weight:550;margin:4px 0}
.day-schedule p{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:5px;color:var(--muted)}
.day-schedule.cancelled h3{text-decoration:line-through;color:var(--muted)}
.daily-summary{white-space:pre-wrap;line-height:1.9;font-size:14px;overflow-wrap:anywhere}
.day-memory{padding:15px 0;border-top:1px solid var(--line)}
.day-memory:first-child{border-top:0;padding-top:0}
.day-memory p{font-size:13px;white-space:pre-wrap;line-height:1.8;margin:9px 0;color:var(--ink);overflow-wrap:anywhere}
.day-memory .text-button{margin-top:4px}
.day-records{margin-top:18px}
.day-record{border-top:1px solid var(--line);padding:13px 0}
.day-record summary{display:flex;justify-content:space-between;gap:12px;font-size:12px;cursor:pointer;color:var(--ink)}
.day-record summary .tiny{font-size:10px}
.day-record p{white-space:pre-wrap;font-size:13px;line-height:1.85;overflow-wrap:anywhere;padding-top:15px}
.calendar-search-hit{display:flex;flex-direction:column;gap:5px;padding:12px 0;border-bottom:1px solid var(--line);width:100%;text-align:left;line-height:1.6}
.calendar-search-hit strong{color:var(--ink);font-size:11px}.calendar-search-hit span{overflow-wrap:anywhere;color:var(--muted);font-size:11px}
@media(max-width:1150px){.calendar-layout{grid-template-columns:1fr}.calendar-month{position:static;max-width:none}.calendar-grid{gap:6px}.calendar-cell{aspect-ratio:auto;min-height:55px}.calendar-month-nav{margin-bottom:16px}}
@media(max-width:760px){.sidebar nav{overflow-y:visible}.calendar-layout{gap:22px}.calendar-month{padding:18px}.calendar-day-heading h2{font-size:24px}.calendar-day-heading .pill{font-size:10px;padding:8px 11px}.calendar-cell{min-height:45px}.calendar-key{font-size:9px}.calendar-day .card{padding:20px}.calendar-day .card-title{gap:8px}.calendar-day .card-title .tiny{font-size:10px}.day-schedule{align-items:flex-start}.day-schedule .pill{font-size:10px;padding:6px 10px}.category-controls{gap:8px}.category-controls .pill{font-size:11px;padding:9px 11px}.memory-categories{grid-template-columns:repeat(2,minmax(0,1fr))}.memory-category{padding:12px 11px;grid-template-columns:24px minmax(0,1fr);gap:3px 8px}.memory-category strong{font-size:11px}.memory-category .category-emoji{font-size:22px}.day-record summary{flex-direction:column;gap:3px}.category-controls input{font-size:12px}.custom-field{padding:12px}.solar-offsets{padding:13px}}
