/* ---------- FORMS REFINEMENT LAYER (v2.6) ---------- */
/* card-to-card motion: forward enters from the right, back from the left */
.wz.anim-f{animation:wzf .2s ease both}
.wz.anim-b{animation:wzb .2s ease both}
@keyframes wzf{from{opacity:0;transform:translateX(26px)}to{opacity:1;transform:none}}
@keyframes wzb{from{opacity:0;transform:translateX(-26px)}to{opacity:1;transform:none}}
/* inline parse feedback */
.wz-err{font-family:var(--courier);font-size:11px;letter-spacing:.05em;color:var(--accent);text-align:left;margin-top:10px;min-height:15px;line-height:1.5}
.wz-shake{animation:wzshake .3s ease}
@keyframes wzshake{0%,100%{transform:none}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
/* date quick-picks */
.wz-quickrow{display:flex;gap:8px;justify-content:center;margin-bottom:14px;width:100%}
.wz-mac{display:grid;grid-template-columns:1fr 1fr;gap:16px 26px;width:100%}
.wz-mac .wz-input{font-size:26px}
@media(max-width:520px){.wz-mac{gap:12px 16px}.wz-mac .wz-input{font-size:22px}}
.wz-when{display:flex;gap:22px;width:100%;flex-wrap:wrap}
.wz-when>span{flex:1 1 180px;min-width:0}
.wz-when .wz-input{font-size:26px}
.wz-when-l{display:block;font-family:var(--courier);font-size:11px;font-weight:500;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:2px}
.pw-time:empty{display:none}
.wz-qp{border:1px solid var(--line);background:var(--paper);font-family:var(--courier);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:10px 16px;min-height:44px;border-radius:var(--r-choice);margin:0 -1px 0 0;transition:.12s var(--ease)}
.wz-qp:hover{border-color:var(--ink)}
/* branded confirm sheet (replaces native confirm/prompt) */
#cfc{position:fixed;inset:0;z-index:230;background:rgba(10,10,10,.5);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px}
.cfc-card{background:var(--paper);border-radius:var(--radius);max-width:360px;width:100%;padding:24px 24px 20px;animation:pop .25s ease}
.cfc-t{font-family:var(--helv);font-weight:900;font-size:19px;letter-spacing:-.01em;line-height:1.15;margin-bottom:8px}
.cfc-m{font-size:14px;color:var(--muted);line-height:1.55;margin-bottom:18px}
.cfc-row{display:flex;gap:10px;justify-content:flex-end}
.cfc-keep{font-family:var(--courier);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink);padding:12px 16px;min-height:44px;border:1px solid var(--line);border-radius:var(--radius)}
.cfc-go{background:var(--accent);color:var(--paper);font-weight:900;font-size:15px;letter-spacing:-.02em;padding:12px 20px;min-height:44px;border-radius:var(--r-action)}
/* fast-finish escape hatch (onboarding) */
.wz-fast{font-family:var(--courier);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);text-decoration:underline;text-underline-offset:3px;padding:10px}
.wz-fast:hover{color:var(--ink)}
/* all-at-once edit form */
.ef{max-width:440px;margin:0 auto}
.ef .opts button{flex:0 1 auto;min-width:0}
/* keyboard & assistive polish */
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.ut-switch:focus-visible{outline:2px solid var(--volt-ink);outline-offset:2px}
.vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ═══ BRAND-SYSTEM-CF v1.0 · detail language ═══ */
.wordmark::before,.si-word::before,.ft-brand::before{content:"//";color:var(--accent);margin-right:1px}
/* v2.22p2 — the 64° lattice texture is retired from empty states (Arrick, round 2): plain ground. */
.badge,.race-tag,.tag,.wh-badge{border-radius:var(--r-fact)}
.lf-chip,.ut-switch,.wseg,.opts>*,.chooser .ci{border-radius:var(--r-choice)}
button,.btn-primary,.btn-line,.wz-next,.pw-add{border-radius:var(--r-action)}
.card{transition:box-shadow var(--t-touch) var(--ease),transform var(--t-touch) var(--ease)}
.btn-primary:active,.btn-line:active,.wz-next:active{transform:translateY(1px) scale(.985)}
.btn-saved{background:var(--volt) !important;color:var(--ink) !important}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--volt-ink);outline-offset:2px}
.wz-input:focus{border-bottom-color:var(--volt-ink)}

/* ═══ BRAND-SYSTEM-CF v1.0 · fields — rule, not box ═══ */
input[type=text],input[type=email],input[type=number],input[type=tel],
input[type=password],input[type=date],input[type=time],input:not([type]),select,textarea{
  border:0 !important;border-bottom:1.5px solid var(--ink) !important;
  border-radius:0 !important;background:transparent !important;
  min-height:48px;font-size:16px;padding-left:0 !important;padding-right:0 !important;
  transition:border-color var(--t-touch) var(--ease)}
input:focus,select:focus,textarea:focus{
  border-bottom-color:var(--volt-ink) !important;border-bottom-width:2.5px !important;
  outline:none;box-shadow:none !important}
textarea{min-height:80px}

.si-ghost,.si-ghost *,.jc-tip b,.pw-add,.ft-fine a{color:var(--accent-text)}

/* ═══ round 1 revisions ═══ */
.sheet{border-radius:var(--radius) !important}
.sheet-note{border-radius:var(--r-choice)}
.wz-input{font-weight:400;letter-spacing:.01em}
.opts button:hover{background:var(--wash);border-color:var(--ink);position:relative;z-index:1}
.opts button.sel{position:relative;z-index:2}
.gr-bar>i,.gr-bar>span{border-radius:0 !important}
.tl-marker{transition:left 1s var(--ease)}

/* ═══ round 1 · the wizard carries the record edge ═══ */
.sheet{position:relative;overflow-x:hidden}
.sheet>.sheet-h,.sheet>.sheet-b{padding-left:30px}
/* the sheet edge bar was removed in v2.8.9 — the modal reads as paper, not as a tabbed folder */
.wz-nav{border-top:1px solid var(--line);padding-top:14px}
.wz-control label,.wz-numwrap label{font-family:var(--courier);font-size:10.5px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);text-align:left}

/* ═══ v2.8.9 · mobile vertical rhythm ═══
   One rule: objects on the canvas break wider than blocks inside one object.
   · between cards ............ 20px  (matches the card's own 20px padding)
   · around the weather block .. 24px, equal above and below
   Appended last so it wins over the base rules it is tuning. */
@media(max-width:760px){
  .mb16{margin-bottom:20px}
  .g-2,.g-3{gap:20px;margin-bottom:20px}

  /* descriptive card metadata drops to its own line rather than squeezing the
     title into a wrap. Status pills (.tag, .wh-badge) stay inline — they are
     short and they belong beside the thing they qualify. */
  .card-h{flex-wrap:wrap;gap:3px 10px}
  .card-h>span.cmeta{flex:1 0 100%;text-align:left}   /* action metas (buttons — Cancel, Plan, Edit Goals) stay on the title row */
}

/* ═══ v3.15 · THE CHIP RULE + THE SCHEDULE CARD (Arrick, 2026-09-07) ═══
   Up to three choices: one row of equal segments. Four or more: a list of full-width rows,
   the chosen one marked. Applies to every .opts.seg / .opts.list the wizard and the edit
   form draw — no wrapping tile grid anywhere, so nothing orphans onto a second line. */
.opts.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:0}
.opts.seg button{flex:none;min-width:0;margin:0 -1px 0 0;padding:12px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.opts.seg button:last-child{margin-right:0}
.opts.list{display:flex;flex-direction:column;gap:0}
.opts.list button{flex:none;width:100%;text-align:left;margin:0 0 -1px 0;padding:13px 44px 13px 16px;position:relative;min-height:46px}
.opts.list button:last-child{margin-bottom:0}
.opts.list button::after{content:'';position:absolute;right:16px;top:50%;width:6px;height:11px;margin-top:-8px;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);opacity:0;transition:opacity .12s}
.opts.list button.sel::after{opacity:1}
/* the Schedule card: Day · Time · Length on a line, dropdown rows beneath, an optional chip row above.
   The inputs name their colour and their scheme: a host that renders the page in a dark colour
   scheme (a preview frame, a browser setting) would otherwise paint native date/time text white
   on our paper — Arrick saw exactly that: three empty-looking fields. */
.wz-sched input,.wz-sched select,.wz-input,.ef input,.ef select{color:var(--ink);-webkit-text-fill-color:var(--ink);color-scheme:light}
.wz-sched{display:flex;flex-direction:column;gap:18px;width:100%;text-align:left}
.wz-sched-row{display:flex;gap:22px;width:100%;flex-wrap:wrap}
.wz-sched-row>span{flex:1 1 120px;min-width:0}
.wz-sched-row .wz-input{font-size:19px;width:100%;padding:6px 0}
.wz-sched-sel{display:flex;flex-direction:column}
.wz-sched-sel{position:relative}
.wz-sched-sel::after{content:'';position:absolute;right:7px;bottom:15px;width:7px;height:7px;border:solid var(--ink);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);pointer-events:none}
.wz-sched-sel select{appearance:none;-webkit-appearance:none;width:100%;border:none;border-bottom:1.5px solid var(--ink);border-radius:0;background:transparent;font-family:var(--courier);font-size:15px;padding:8px 28px 8px 0;color:var(--ink);cursor:pointer}
.wz-sched-sel select:focus{outline:none;border-bottom-color:var(--volt-ink)}
.wz-sched-chips .opts{margin-top:4px}
.ef .wz-sched-field>label{margin-bottom:12px}
.ef .wz-sched .wz-input{font-size:18px;border-bottom:1px solid var(--line);padding:9px 0;min-height:0}
.ef .wz-sched .wz-input:focus{border-bottom-color:var(--ink)}
.ef .wz-sched-sel select{font-size:14px;border-bottom:1px solid var(--line)}
