/* ============================================================================
   rituals.css — Phase 3: modal system, guided rituals, Focus Mode, and the
   dashboard ritual / energy / season surfaces.
   ============================================================================ */

/* ---- Modal shell -------------------------------------------------------- */
body.is-modal-open { overflow: hidden; }

.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgb(0 0 0 / 0.45);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
  opacity: 0;
  transition: opacity var(--dur-2) var(--ease);
}
.modal-overlay.is-open { opacity: 1; }

.modal {
  width: 100%;
  max-width: 480px;
  max-height: min(88vh, 760px);
  overflow-y: auto;
  background: rgb(var(--surface));
  border: 1px solid rgb(var(--border));
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-lg);
  padding: 22px;
  transform: translateY(14px) scale(0.985);
  transition: transform var(--dur-3) var(--ease-out);
  outline: none;
}
.modal-overlay.is-open .modal { transform: none; }

/* Bottom sheet on phones */
@media (max-width: 560px) {
  .modal--sheet { place-items: end center; padding: 0; }
  .modal--sheet .modal {
    max-width: 100%;
    max-height: 92vh;
    border-radius: var(--r-xl) var(--r-xl) 0 0;
    transform: translateY(100%);
    padding-bottom: calc(22px + env(safe-area-inset-bottom));
  }
  .modal--sheet.is-open .modal { transform: none; }
}

/* Full-screen focus */
.modal--focus { padding: 0; background: rgb(var(--bg) / 0.97); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.modal--focus .modal {
  max-width: 100%; width: 100%; height: 100%; max-height: 100%;
  border: none; border-radius: 0; background: transparent; box-shadow: none;
  display: grid; place-items: center; padding: 24px;
  transform: scale(1.03);
}
.modal--focus.is-open .modal { transform: none; }

/* ---- Ritual common ------------------------------------------------------ */
.ritual { display: flex; flex-direction: column; }
.wiz__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.ritual__eyebrow { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: rgb(var(--area, var(--primary))); }
.ritual__title { font-size: 21px; font-weight: 700; letter-spacing: -0.02em; }
.ritual__sub { color: rgb(var(--text-2)); font-size: 14px; margin-top: 6px; line-height: 1.45; }
.ritual__head { margin-bottom: 16px; }
.ritual__footer { display: flex; gap: 10px; justify-content: flex-end; margin-top: 22px; }
.ritual__footer--center { justify-content: center; }
.ritual__footer .btn { min-width: 96px; justify-content: center; }
.ritual__note { font-size: 13px; margin-top: 12px; line-height: 1.4; }
.ritual__meter { display: flex; align-items: center; gap: 12px; margin: 4px 0 14px; }
.ritual__meter .bar { flex: 1; }
.ritual__count { font-size: 13px; font-weight: 700; color: rgb(var(--text-2)); font-variant-numeric: tabular-nums; }

/* ---- Morning briefing --------------------------------------------------- */
.brief { display: flex; flex-direction: column; gap: 13px; margin: 10px 0 4px; }
.brief__line { display: flex; gap: 12px; align-items: flex-start; font-size: 15px; line-height: 1.45; }
.brief__line .icon { color: rgb(var(--area, var(--primary))); margin-top: 2px; flex: none; }
.brief__signoff { margin-top: 18px; font-weight: 600; font-size: 15px; }

/* ---- Wizard ------------------------------------------------------------- */
.wiz__progress { display: flex; gap: 6px; margin-bottom: 20px; }
.wiz__dot { height: 4px; flex: 1; border-radius: var(--r-full); background: rgb(var(--border-strong)); transition: background var(--dur-2) var(--ease); }
.wiz__dot.is-active { background: rgb(var(--primary)); }
.wiz__dot.is-done { background: rgb(var(--primary) / 0.5); }
.wiz__body { min-height: 132px; }

.startup-inputs { display: flex; flex-direction: column; gap: 10px; }
.startup-chores { display: flex; flex-direction: column; gap: 8px; }
.rlist__toggle {
  display: flex; align-items: center; gap: 12px; width: 100%;
  padding: 11px 12px; border-radius: var(--r-md);
  border: 1px solid rgb(var(--border)); background: rgb(var(--surface-2));
  text-align: left; cursor: pointer;
  transition: border-color var(--dur-1) var(--ease), background var(--dur-1) var(--ease);
}
.rlist__toggle:hover { border-color: rgb(var(--area, var(--primary))); }
.rlist__toggle.is-done { border-color: rgb(var(--area, var(--primary)) / 0.5); background: rgb(var(--area, var(--primary)) / 0.07); }
.rlist__label { font-size: 14.5px; font-weight: 500; flex: 1; }

.startup-agenda { display: flex; flex-direction: column; gap: 7px; margin-bottom: 14px; }
.startup-agenda li { display: flex; gap: 10px; font-size: 14px; color: rgb(var(--text-2)); }
.startup-agenda__time { font-weight: 600; color: rgb(var(--text)); min-width: 70px; }

.startup-done { text-align: center; padding: 8px 0; }
.startup-done__mark { display: grid; place-items: center; width: 62px; height: 62px; margin: 0 auto 14px; border-radius: 50%; background: rgb(var(--health) / 0.14); color: rgb(var(--health)); animation: pop var(--dur-3) var(--ease-spring); }
.startup-done__focus { margin: 18px auto 0; }

/* ---- Checklist rituals (shutdown / reset) ------------------------------ */
.rlist { display: flex; flex-direction: column; gap: 3px; }
.rlist__item { display: flex; align-items: center; gap: 12px; padding: 8px 6px; border-radius: var(--r-sm); }
.rlist__item .check { cursor: pointer; }
.rlist__item .rlist__label { flex: 1; font-size: 14.5px; font-weight: 500; }
.rlist__item.is-done .rlist__label { color: rgb(var(--text-2)); }
.rlist__auto { font-size: 11.5px; font-weight: 600; color: rgb(var(--area, var(--primary))); background: rgb(var(--area, var(--primary)) / 0.12); padding: 2px 8px; border-radius: var(--r-full); }

/* ---- Celebration -------------------------------------------------------- */
.ritual--celebrate { text-align: center; align-items: center; padding: 16px 8px 8px; }
.celebrate__burst { display: grid; place-items: center; width: 74px; height: 74px; margin: 0 auto 16px; border-radius: 50%; color: rgb(var(--area, var(--primary))); background: rgb(var(--area, var(--primary)) / 0.14); animation: pop var(--dur-3) var(--ease-spring); }
.ritual--celebrate .ritual__title { margin-bottom: 6px; }

/* ---- Focus Mode --------------------------------------------------------- */
.focus { display: flex; flex-direction: column; align-items: center; gap: 18px; text-align: center; max-width: 440px; }
.focus__exit { position: fixed; top: calc(14px + env(safe-area-inset-top)); right: 14px; }
.focus__eyebrow { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: rgb(var(--area, var(--primary))); }
.focus__ring { position: relative; display: inline-grid; place-items: center; }
.focus__ring .ring__track { stroke: rgb(var(--ring-track)); fill: none; }
.focus__ring .ring__fill { stroke: rgb(var(--area, var(--primary))); fill: none; stroke-linecap: round; transition: stroke-dashoffset 1s linear; }
.focus__center { position: absolute; inset: 0; display: grid; place-items: center; }
.focus__time { font-size: 52px; font-weight: 700; letter-spacing: -0.03em; font-variant-numeric: tabular-nums; line-height: 1; }
.focus__of { font-size: 13px; color: rgb(var(--text-3)); margin-top: 4px; }
.focus__title { font-size: 22px; font-weight: 650; letter-spacing: -0.01em; }
.focus__next { font-size: 14px; color: rgb(var(--text-2)); display: inline-flex; align-items: center; gap: 6px; }
.focus__next--empty { color: rgb(var(--text-3)); }
.focus__controls { display: flex; align-items: center; gap: 14px; margin-top: 6px; }
.focus__play { min-width: 132px; justify-content: center; font-size: 15px; padding: 12px 22px; }
.focus__ctrl { width: 48px; height: 48px; border: 1px solid rgb(var(--border-strong)); font-weight: 700; font-size: 14px; }
.focus__done { margin-top: 2px; }
.focus.is-running .focus__ring { animation: focusPulse 3.2s var(--ease) infinite; }
.focus.is-complete .focus__time { color: rgb(var(--health)); }
@keyframes focusPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.015); } }

/* ---- Dashboard: rituals card ------------------------------------------- */
.rituals-card .rituals-list { display: flex; flex-direction: column; gap: 8px; }
.ritual-btn {
  display: flex; align-items: center; gap: 12px; width: 100%;
  padding: 12px 14px; border-radius: var(--r-md);
  border: 1px solid rgb(var(--border)); background: rgb(var(--surface-2));
  text-align: left; cursor: pointer;
  transition: border-color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease), background var(--dur-1) var(--ease);
}
.ritual-btn:hover { border-color: rgb(var(--area, var(--primary))); transform: translateY(-1px); }
.ritual-btn__icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: var(--r-sm); background: rgb(var(--area, var(--primary)) / 0.13); color: rgb(var(--area, var(--primary))); flex: none; }
.ritual-btn__text { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.ritual-btn__title { font-size: 14.5px; font-weight: 600; }
.ritual-btn__sub { font-size: 12px; color: rgb(var(--text-3)); margin-top: 1px; }
.ritual-btn__done { color: rgb(var(--health)); flex: none; }
.ritual-btn .icon.ritual-btn__go { color: rgb(var(--text-3)); flex: none; }

/* ---- Dashboard: energy recommendations --------------------------------- */
.energy-recs { display: flex; flex-direction: column; gap: 6px; }
.energy-rec { display: flex; align-items: center; gap: 12px; padding: 9px 10px; border-radius: var(--r-sm); transition: background var(--dur-1) var(--ease); }
.energy-rec:hover { background: rgb(var(--surface-2)); }
.energy-rec__icon { display: grid; place-items: center; width: 34px; height: 34px; border-radius: var(--r-sm); background: rgb(var(--area, var(--primary)) / 0.13); color: rgb(var(--area, var(--primary))); flex: none; }
.energy-rec__label { font-size: 14px; font-weight: 500; }

/* ---- Adaptive work-load control ---------------------------------------- */
.workload { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.workload__label { font-size: 13px; font-weight: 600; color: rgb(var(--text-2)); }
.workload__note { display: flex; gap: 7px; align-items: flex-start; font-size: 13px; color: rgb(var(--text-2)); background: rgb(var(--home) / 0.1); border-radius: var(--r-sm); padding: 9px 11px; margin-bottom: 12px; }
.workload__note .icon { color: rgb(var(--home)); margin-top: 1px; flex: none; }

/* ---- Season chip + picker ---------------------------------------------- */
.season-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius: var(--r-full); font-size: 12px; font-weight: 600; background: rgb(var(--area, var(--primary)) / 0.12); color: rgb(var(--area, var(--primary))); }

.season-picker { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; }
.season-opt {
  display: flex; align-items: center; gap: 12px; width: 100%;
  padding: 12px; border-radius: var(--r-md); cursor: pointer; text-align: left;
  border: 1px solid rgb(var(--border)); background: rgb(var(--surface-2));
  transition: border-color var(--dur-1) var(--ease), background var(--dur-1) var(--ease);
}
.season-opt:hover { border-color: rgb(var(--area, var(--primary))); }
.season-opt.is-active { border-color: rgb(var(--area, var(--primary))); background: rgb(var(--area, var(--primary)) / 0.08); }
.season-opt__icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: var(--r-sm); background: rgb(var(--area, var(--primary)) / 0.14); color: rgb(var(--area, var(--primary))); flex: none; }
.season-opt__text { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.season-opt__name { font-weight: 650; font-size: 14.5px; }
.season-opt__note { font-size: 12.5px; color: rgb(var(--text-2)); margin-top: 2px; }
.season-opt__check { margin-left: auto; color: rgb(var(--area, var(--primary))); opacity: 0; flex: none; }
.season-opt.is-active .season-opt__check { opacity: 1; }
