/* Today: one shared daily view. Identity colors bind to UIDs in today.js. */
:root {
  --identity-self: var(--sky-accent, #a63962);
  --identity-partner: var(--sky-accentSecondary, #785196);
  --identity-us: var(--color-ink-soft);
  --identity-self-soft: color-mix(in srgb, var(--identity-self) 12%, var(--surface-raised));
  --identity-partner-soft: color-mix(in srgb, var(--identity-partner) 12%, var(--surface-raised));
  --identity-us-soft: var(--surface-soft);
}
#v2-page-today { gap: 0; }
#v2-page-today .v2-today-header { display: grid; gap: .25rem; margin-bottom: .25rem; }
#v2-page-today .v2-page-context { display:flex; align-items:baseline; justify-content:space-between; gap:.5rem; }
#v2-page-today .v2-page-context h1 { font-size:1.25rem; }
#v2TodayDate { font-size:.75rem; }
#todayGreeting { margin:0; font-size:.9rem; color:var(--color-ink-soft); }
#todayOverview { padding:0; border:0; background:none; box-shadow:none; gap:.75rem; }
#todayOverview .v2-days-together { padding:.15rem 0 .25rem; gap:0; }
#todayDays { font-family:var(--rhythm-display,var(--font-sans)); font-size:4.25rem; line-height:1; letter-spacing:-.055em; }
#todayDaysNote { margin:.2rem 0 0; font-size:.85rem; }
#todayOverview .today-clocks { gap:1rem; }
#todayOverview .today-clock { gap:.15rem; }
.today-presence { display:grid; justify-items:center; gap:.3rem; padding:0 .25rem; width:100%; min-width:0; border:0; background:none; color:var(--color-ink); cursor:pointer; }
#todayOverview .today-avatar { width:3.5rem; height:3.5rem; border:2px solid var(--surface-raised); box-shadow:0 3px 12px color-mix(in srgb,var(--identity-self) 12%,transparent); }
.today-clock[data-identity="partner"] .today-avatar { box-shadow:0 3px 12px color-mix(in srgb,var(--identity-partner) 12%,transparent); }
.today-status-bubble { display:block; max-width:100%; min-width:0; padding:.3rem .65rem; border-radius:1rem 1rem .6rem 1rem; font-size:.8rem; line-height:1.4; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; background:var(--identity-self-soft); color:var(--identity-self); }
[data-identity="partner"] .today-status-bubble { background:var(--identity-partner-soft); color:var(--identity-partner); border-radius:1rem 1rem 1rem .6rem; }
#todayCurrentName, #todayPartnerName { font-size:.85rem; font-weight:600; }
#todayOverview .today-clock > strong { font-size:1.35rem; letter-spacing:-.02em; }
#todayCurrentPeriod, #todayPartnerPeriod { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
#todayOverview .today-context { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.65rem; }
#todayOverview .today-context button { min-width:0; min-height:4.5rem; padding:.65rem .4rem; border-radius:1rem; border:1px solid var(--surface-border); background:color-mix(in srgb,var(--surface-raised) 62%,transparent); align-content:center; }
#todayOverview .today-context button > span { font-size:.8rem; color:var(--color-ink); }
#todayOverview .today-context strong { font-size:1rem; }
#todayOverview .today-context small { font-size:.7rem; color:var(--color-ink-soft); }
.today-plane, .today-globe { display:inline-block; width:1.35rem; height:1.15rem; position:relative; vertical-align:middle; margin-right:.2rem; }
.today-plane { width:1.65rem; overflow:hidden; perspective:120px; }
.plane-craft { width:100%; height:100%; overflow:visible; filter:drop-shadow(0 2px 1px #0002); }
.plane-wing { fill:#fffaf0; stroke:color-mix(in srgb,var(--identity-self) 40%,#8c8294); stroke-width:.7; }
.plane-fold { fill:color-mix(in srgb,var(--identity-self) 12%,#fff); }
.plane-shade { fill:color-mix(in srgb,var(--identity-self) 35%,#c4c7d2); }
.airliner-drift,.airliner-altitude,.airliner-roll { position:absolute; inset:.3px; transform-style:preserve-3d; }
.airliner-drift { animation:airliner-travel 28s -4s ease-in-out infinite; }
.airliner-altitude { animation:airliner-altitude 7.3s -.8s ease-in-out infinite; }
.airliner-roll { animation:airliner-roll 8.1s -2.1s ease-in-out infinite; }
.airliner-craft { display:block; width:100%; height:100%; filter:drop-shadow(0 1px .5px #17253655); animation:airliner-pitch 5.1s -.4s ease-in-out infinite; }
.airliner-body { fill:url(#airlinerBody); stroke:#607c8e; stroke-width:.55; }
.airliner-wing,.airliner-tail { fill:#cfdee7; stroke:#678599; stroke-width:.6; }
.airliner-tail { fill:color-mix(in srgb,var(--identity-self) 32%,#d7e8ef); }
.airliner-engines { fill:#9fb6c5; stroke:#4f6e80; stroke-width:.8; }
.airliner-windows { fill:none; stroke:#405e70; stroke-width:1.2; stroke-linecap:round; }
.airliner-airflow { stroke:color-mix(in srgb,var(--identity-self) 30%,#c7f3ff); stroke-width:.9; stroke-linecap:round; transform-origin:24px 21px; animation:airliner-airflow 7s -1.3s ease-in-out infinite; }
.today-globe { width:1.15rem; border-radius:50%; overflow:hidden; rotate:-18deg; background:#719fb7; box-shadow:0 0 0 1px #fff8,0 0 5px color-mix(in srgb,var(--identity-partner) 25%,transparent); }
.earth-texture { display:block; width:400%; height:100%; max-width:none; fill:#c0d2ab; animation:today-earth-turn 28s linear infinite; }
.today-globe::after { content:''; position:absolute; inset:0; border-radius:inherit; background:radial-gradient(circle at 30% 28%,#fff8,transparent 38%,#18304b22 60%,#101a39ad 100%); box-shadow:inset -2px -1px 3px #152b5555; }
/* Different phases compose into calm, non-identical passes. No frame RNG. */
@keyframes airliner-travel { 0%,100% {transform:translateX(-.7px);} 37% {transform:translateX(1.1px);} 68% {transform:translateX(.3px);} }
@keyframes airliner-altitude { 0%,100% {transform:translateY(.35px);} 38% {transform:translateY(-.45px);} 66% {transform:translateY(-.1px);} 79% {transform:translateY(-.3px);} }
@keyframes airliner-roll { 0%,100% {transform:rotateX(7deg);} 44% {transform:rotateX(-6deg);} 73% {transform:rotateX(2deg);} }
@keyframes airliner-pitch { 0%,100% {transform:rotate(-1.5deg) rotateY(-3deg);} 35% {transform:rotate(1.5deg) rotateY(4deg);} 76% {transform:rotate(-.5deg) rotateY(1deg);} }
@keyframes airliner-airflow { 0%,100% {opacity:.2;transform:scaleX(.7);} 42% {opacity:.6;transform:scaleX(1.08);} 77% {opacity:.28;transform:scaleX(.85);} }
@keyframes today-earth-turn { to {transform:translateX(-50%);} }
#v2-page-today[hidden] .today-plane *, #v2-page-today[hidden] .earth-texture, .page-hidden .today-plane *, .page-hidden .earth-texture { animation-play-state:paused; }
#v2-page-today[hidden] .v2-question-card[data-answer-state="one"], .page-hidden .v2-question-card[data-answer-state="one"] { animation-play-state:paused; }
#v2-page-today .v2-question-card { position:relative; margin-top:.75rem; padding:.8rem; gap:.5rem; border:1px solid var(--surface-border); background:color-mix(in srgb,var(--surface-raised) 72%,transparent); border-radius:1rem; transition:border-color 220ms ease,background-color 220ms ease,box-shadow 220ms ease; }
#v2-page-today .v2-question-card[data-answer-state="one"] { border-color:color-mix(in srgb,var(--identity-us) 62%,var(--surface-border)); background:linear-gradient(112deg,transparent 18%,color-mix(in srgb,var(--identity-us) 10%,transparent) 48%,transparent 78%),color-mix(in srgb,var(--identity-us) 7%,var(--surface-raised)); background-size:230% 100%,auto; animation:question-awaiting 5.6s ease-in-out infinite; }
#v2-page-today .v2-question-card[data-answer-state="revealed"] { border-color:color-mix(in srgb,var(--identity-us) 42%,var(--surface-border)); background:color-mix(in srgb,var(--identity-us) 7%,var(--surface-raised)); box-shadow:0 5px 18px color-mix(in srgb,var(--identity-us) 9%,transparent); }
@keyframes question-awaiting { 0%,100% {background-position:100% 0,0 0;box-shadow:0 4px 14px color-mix(in srgb,var(--identity-us) 8%,transparent);} 50% {background-position:0 0,0 0;box-shadow:0 6px 22px color-mix(in srgb,var(--identity-us) 18%,transparent);} }
.today-question-toggle { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.35rem; min-height:44px; width:100%; border:0; padding:0; text-align:left; background:none; color:var(--color-ink); cursor:pointer; }
#todayQuestionHeading { font-size:.85rem; font-weight:650; }
#todayQuestionText { grid-column:1/-1; max-width:none; font-size:1rem; line-height:1.35; letter-spacing:-.01em; }
.today-question-chevron { transition:transform 240ms ease; }
[aria-expanded="true"] .today-question-chevron { transform:rotate(180deg); }
#v2-page-today .today-answer-presence { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.4rem; font-size:.72rem; }
#v2-page-today .today-answer-presence span { border:0; border-radius:.6rem; padding:.35rem .45rem; overflow-wrap:anywhere; color:var(--identity-self); background:var(--identity-self-soft); }
#v2-page-today .today-answer-presence [data-identity="partner"] { color:var(--identity-partner); background:var(--identity-partner-soft); }
#todayQuestionContent[hidden], #questionAnswerForm[hidden], #questionReplaceControls[hidden], #questionEditButton[hidden], #questionWithdrawButton[hidden], #questionKeepButton[hidden] { display:none; }
.question-answer-actions { display:flex; align-items:center; gap:.85rem; }
.question-edit-action,.question-withdraw-action { min-height:44px; padding:.25rem 0; color:var(--identity-self); }
.question-withdraw-action { color:var(--color-ink-soft); }
.question-keep-action { position:absolute; z-index:1; top:.38rem; right:.45rem; display:inline-flex; align-items:center; justify-content:center; gap:.28rem; min-height:44px; min-width:44px; max-width:9.25rem; padding:.25rem .48rem; border:0; border-radius:.7rem; background:color-mix(in srgb,var(--identity-us) 9%,transparent); color:var(--identity-us); font:inherit; font-size:.72rem; cursor:pointer; }
.question-keep-action[aria-pressed="true"] { background:color-mix(in srgb,var(--identity-us) 15%,transparent); }
.question-keep-action:disabled { cursor:default; opacity:.65; }
#questionKeepIcon { font-size:1.12rem; line-height:1; }
.v2-question-card[data-answer-state="revealed"] .today-question-toggle { padding-right:8.5rem; }
.question-keep-action.is-celebrating { animation:question-star-keep 560ms cubic-bezier(.2,.8,.2,1); }
.question-keep-action.is-celebrating::after { content:'· ✦ ·'; position:absolute; inset:-.35rem -.1rem auto; color:var(--identity-us); font-size:.62rem; letter-spacing:.38rem; pointer-events:none; animation:question-star-sparkle 560ms ease-out both; }
@keyframes question-star-keep { 0%,100% {transform:scale(1);} 45% {transform:scale(1.15);} }
@keyframes question-star-sparkle { 0% {opacity:0;transform:translateY(.2rem) scale(.8);} 42% {opacity:.8;} 100% {opacity:0;transform:translateY(-.45rem) scale(1.08);} }
.today-question-options { display:flex; align-items:center; justify-content:space-between; gap:.5rem; min-height:2rem; }
.today-question-options .text-action { min-height:44px; padding:.25rem 0; font-size:.78rem; }
#questionReplaceStatus { color:var(--color-ink-soft); font-size:.75rem; text-align:right; }
#questionAnswerForm { display:grid; gap:.5rem; margin-top:.6rem; }
#questionAnswerInput, #todayStatusText { box-sizing:border-box; width:100%; min-width:0; font-size:1rem; min-height:44px; padding:.65rem; border:1px solid var(--surface-border); border-radius:.75rem; background:var(--surface-raised); color:var(--color-ink); }
#questionAnswerInput { resize:vertical; }
#questionRevealBody section { padding:.6rem 0; color:var(--identity-self); }
#questionRevealBody [data-identity="partner"] { color:var(--identity-partner); }
#questionRevealBody h3 { font-size:.85rem; }
#questionRevealBody p { white-space:pre-wrap; overflow-wrap:anywhere; font-size:.95rem; color:var(--color-ink); }
#v2-page-today .v2-our-day { margin-top:.75rem; padding:.75rem .8rem; background:color-mix(in srgb,var(--surface-raised) 55%,transparent); border-radius:1rem; }
.v2-our-day > header { display:flex; justify-content:space-between; align-items:baseline; gap:.5rem; }
#todayOurDayHeading { font-size:.95rem; margin:0; }
#todayOurDayDate { font-size:.7rem; color:var(--color-ink-soft); }
#todayOurDayPreview { font-size:.8rem; color:var(--color-ink-soft); margin:.4rem 0 0; }
#todayOurDayPreview:empty { display:none; }
#todayOurDayList { max-height:8.5rem; overflow-y:auto; overscroll-behavior-y:contain; padding:0 .1rem; margin:.35rem 0 0; list-style:none; scrollbar-width:thin; }
#todayOurDayList:empty { margin:0; }
#todayOurDayList li { padding:.4rem 0; min-width:0; }
#todayOurDayList small { color:var(--color-ink-soft); font-size:.72rem; }
#todayOurDayList p { margin:.1rem 0 0; font-size:.82rem; line-height:1.4; overflow-wrap:anywhere; }
#todayOurDayList strong { color:var(--identity-self); font-weight:600; }
#todayOurDayList [data-identity="partner"] strong { color:var(--identity-partner); }
#v2-page-today .today-sheet.ui-dialog { inset:0; margin:auto; width:min(calc(100% - 2rem),28rem); max-height:calc(100dvh - 2rem - env(safe-area-inset-top) - env(safe-area-inset-bottom)); border-radius:1.5rem; padding:1.25rem; }
#todayStatusForm { display:grid; gap:.6rem; }
#todayStatusForm label { font-size:.85rem; }
#todayStatusForm .mood-options { gap:.4rem; }
#todayStatusForm .mood-options button { padding:.4rem; min-height:44px; }
#todayPresenceGroup { position:relative; isolation:isolate; }
#todayPartnerPresence { touch-action:manipulation; }
.today-presence { position:relative; --thinking-color:var(--identity-self); }
#todayPartnerPresence { --thinking-color:var(--identity-partner); }
.today-presence.is-thinking .today-avatar { box-shadow:0 0 0 3px color-mix(in srgb,var(--thinking-color) 45%,transparent),0 0 14px color-mix(in srgb,var(--thinking-color) 20%,transparent); }
.today-presence.is-thinking .today-avatar::after { content:'♥'; position:absolute; right:1px; bottom:1px; display:grid; place-items:center; width:18px; height:18px; border-radius:50%; font:12px/1 sans-serif; background:var(--surface-raised); color:var(--thinking-color); }
.today-thinking-label { display:block; height:14px; font-size:10px; white-space:nowrap; color:var(--thinking-color); pointer-events:none; }
#todayPresenceGroup .today-avatar { position:relative; z-index:2; }
#todayPresenceEffects { position:absolute; inset:0; pointer-events:none; z-index:1; overflow:visible; }
#todayPresenceEffects > svg { position:absolute; left:0; top:0; overflow:visible; }
.today-mutual-rope { stroke:color-mix(in srgb,var(--identity-self) 50%,var(--identity-partner)); stroke-width:1.8; stroke-linecap:round; filter:drop-shadow(0 1px 1px #fff8); }
.today-flight-trail { stroke:var(--identity-partner); stroke-width:1.3; stroke-dasharray:3 6; stroke-linecap:round; opacity:.55; }
#todayPresenceEffects .today-arrival-plane { width:32px; height:26px; transform-origin:center; }
.today-presence-message { position:absolute; pointer-events:none; z-index:3; font-size:.72rem; text-align:center; line-height:1.35; color:var(--identity-self); }
.today-presence-message:empty { display:none; }
.today-presence-message.is-arrival-copy { width:max-content; max-width:47%; padding:.35rem .5rem; border-radius:.8rem; transform:translateX(-50%); background:var(--identity-self-soft); }
.has-arrival #todayMoodCurrent { opacity:0; }
.today-presence-message.is-mutual-copy { left:50%; width:max-content; max-width:50%; transform:translateX(-50%); font-size:.67rem; }
.today-thinking-status { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
#v2-page-today :focus-visible { outline:2px solid var(--identity-self); outline-offset:3px; }
.together-todos .todo-filters button { --filter-ink:var(--identity-us); --filter-soft:var(--identity-us-soft); height:44px; padding:.25rem .4rem; gap:.25rem; border-radius:999px; color:var(--filter-ink); background:var(--filter-soft); }
.together-todos .todo-filters [data-todo-filter="me"] { --filter-ink:var(--identity-self); --filter-soft:var(--identity-self-soft); }
.together-todos .todo-filters [data-todo-filter="partner"] { --filter-ink:var(--identity-partner); --filter-soft:var(--identity-partner-soft); }
.together-todos .todo-filters button[aria-pressed="true"] { border-color:var(--filter-ink); box-shadow:inset 0 0 0 1px var(--filter-ink); }
.together-todos .todo-filters button small { font-size:.65rem; }
:root[data-density="compact"] #todayOverview { gap:.6rem; }
#todayDetailSheet.is-meeting-editor { text-align:center; }
.today-meeting-fields { display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:10px; width:min(100%,20rem); justify-self:center; }
.today-meeting-fields label { min-width:0; text-align:center; font-size:.85rem; }
.today-meeting-fields input,.today-meeting-fields select { min-height:44px; text-align:center; font-variant-numeric:tabular-nums; font-size:16px; padding:10px 4px!important; }
.today-meeting-fields input { appearance:textfield; -moz-appearance:textfield; }
.today-meeting-fields input::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
#todayMeetingForm .ui-actions { justify-content:center; }
#todayMeetingForm button { min-height:44px; }
#todayDetailTitle:focus:not(:focus-visible) { outline:none; }
@keyframes today-meeting-fade { from {opacity:0;} to {opacity:1;} }
@media (prefers-reduced-motion:reduce) { #todayDetailSheet.is-meeting-editor[open] { animation:today-meeting-fade 180ms ease-out!important; } }
@media (prefers-reduced-motion:reduce) { .today-plane *,.earth-texture,#v2-page-today .v2-question-card[data-answer-state="one"],.question-keep-action.is-celebrating,.question-keep-action.is-celebrating::after { animation:none !important; } #v2-page-today .v2-question-card[data-answer-state="one"] { background-position:50% 0,0 0; box-shadow:0 5px 18px color-mix(in srgb,var(--identity-us) 16%,transparent); } .today-question-chevron,#todayPresenceGroup .today-avatar { transition:none; } }
