/* ==========================================================================
   PRIDE ui-v2.css — visual spec v2 (2026-10-25) final layer, loaded after ui-v1.css.
   Materials: stone = base (3 places only) / leather = cards & sheets / metal = earned frames (≤2 per screen + primary button).
   Approved screens (welcome · explanation · basic info), the result reveal and crest/ceremony art are not touched here.
   ========================================================================== */

/* ---- 1. tokens ---------------------------------------------------------- */
:root {
  --input: #0B120E;
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 20px; --sp-6: 24px; --sp-8: 32px; --sp-10: 40px;
  --t1: 22px; --t2: 18px; --t3: 15px; --t4: 13px; --t5: 12px; --t6: 11px; --t-input: 16px;
  --leather: url(data:image/png;base64,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);
  --stone: url(img/stone-v2.webp);
  --metal: linear-gradient(90deg, rgba(108,75,32,.55) 0%, #D6B369 20%, #F4DFA0 50%, #D6B369 80%, rgba(108,75,32,.55) 100%);
  --metal-v: linear-gradient(180deg, #F4DFA0 0%, #D6B369 35%, rgba(108,75,32,.55) 100%);
}
/* every changing number is tabular & lining */
body, .app, .sheet { font-variant-numeric: tabular-nums lining-nums; }

/* ---- 2. leather: the surface people touch every day (cards and sheets) ---- */
.card, .v30-card, .v31-card, .rc-card, .v47-card, .bt-card, .rc-daycard, .pe-card, .id-card, .v47-past, .body-card, .v48-ach,
.v30-big3, .v30-stats, .id-stats, .rc-last, .v30-use-card, .co-card {
  background: var(--leather) repeat, var(--surface-1) !important;
  background-attachment: local, local !important;
}
.sheet { background: var(--leather) repeat, var(--surface-2) !important; background-attachment: local, local !important; }
.v48-ach { border: 1px solid var(--line) !important; } /* the timeline is a record, not a frame: plain line (metal cap: 2 per screen) */

/* ---- 3. metal: hairline gold on earned frames (asset, my rank, MY ID hero, first session) ---- */
.v30-asset, .id-asset, .v31-me, .v30-me, .rk2-me, .v47-handoff, .v31-fin-gain, .v30-big3 {
  border: 1px solid transparent !important;
  background: var(--leather) padding-box, linear-gradient(var(--surface-1), var(--surface-1)) padding-box, var(--metal) border-box !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.04) !important;
}
.v30-asset::before, .v30-asset::after, .v31-me::before, .v31-me::after, .id-asset::before, .id-asset::after { background-image: none !important; box-shadow: none !important; }
/* the lion and the line chart stay on the asset card (spec v1 §8); only the marble photo under the card is gone */

/* ---- 4. stone: the ground that ranks stand on — three places only ---- */
/* ① MY ID top, behind the crest & ring (a cover photo, when set, sits above it) */
.v30-id-bg { background: linear-gradient(180deg, rgba(7,13,9,.80) 0%, rgba(7,13,9,.86) 45%, #070D09 85%), var(--stone) center top / 100% auto no-repeat, #070D09 !important; filter: none !important; }
/* ② the ranking podium */
.v30-podium, .rk2-podium { background: linear-gradient(180deg, #070D09 0%, rgba(7,13,9,.80) 22%, rgba(7,13,9,.84) 80%, #070D09 100%), var(--stone) center 40% / 120% auto no-repeat !important; border-radius: 16px; }
/* ③ my row in the 20-rank ladder */
.lad.cur button, .lad.cur .lad-in { background: linear-gradient(90deg, rgba(7,13,9,.78), rgba(7,13,9,.86)), var(--stone) center / 260% auto, rgba(217,189,124,.08) !important; }
/* everywhere else, no marble photo */
.v30-rk::before { background: radial-gradient(90% 70% at 85% 0%, rgba(30,90,60,.28), transparent 70%), #070D09 !important; }

/* ---- 5. light: no outer glow on cards and buttons; shadows only on floating parts ---- */
.v30-use, .v29-start, .rc-last, .v30-pd-card, .v30-big3, .v29-start::before, .v29-start::after { box-shadow: none !important; }
.v30-pd-card { filter: none !important; }

/* ---- 6. type: the six steps + inputs ---- */
/* inputs: text at least 16px (iOS zooms below it) — enforced by the source transform and checked by the audit */
.sheet input[type="text"], .sheet input:not([type]), .sheet input[inputmode], .sheet select, .sheet textarea { background-color: var(--input); }

/* ---- 7. parts ---- */
/* setting row: 56px, name + current value, chevron */
.v49-row { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 2px 12px; width: 100%; min-height: 56px; padding: 8px 4px; background: none; border: 0; border-bottom: 1px solid var(--line); color: var(--ink); text-align: left; font: 500 var(--t3)/1.4 var(--f-jp); }
.v49-row:last-child { border-bottom: 0; }
.v49-row small { grid-column: 1; font: 400 var(--t4)/1.4 var(--f-jp); color: var(--ink-2); }
.v49-row::after { content: "›"; grid-column: 2; grid-row: 1 / span 2; color: var(--ink-2); font-size: 18px; }
.v49-row:active { background: var(--surface-2); }
.v49-rows { display: block; border-top: 1px solid var(--line); }
/* select card (record style …): fill unchanged; selected = gold line + gold dot */
.rs-opt { position: relative; background: var(--leather) repeat, var(--surface-1) !important; border: 1px solid var(--line) !important; }
.rs-opt::after { content: ""; position: absolute; top: 14px; right: 14px; width: 16px; height: 16px; border-radius: 50%; border: 1.5px solid var(--ink-3); }
.rs-opt.on { background: var(--leather) repeat, var(--surface-1) !important; border-color: var(--line-gold) !important; }
.rs-opt.on::after { border-color: var(--gold); background: radial-gradient(circle, var(--gold) 0 4px, transparent 5px); }
/* unit (kg | lb) and sex choices are chips everywhere */
.v49-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.v49-chips > button { height: 36px; padding: 0 16px; border-radius: 18px; border: 1px solid rgba(241,236,221,.18); background: transparent; color: var(--ink); font: 500 var(--t4) var(--f-jp); }
.v49-chips > button.on, .v49-chips > button[aria-checked="true"] { background: rgba(217,189,124,.14); border-color: rgba(217,189,124,.6); color: var(--gold-text); font-weight: 600; }
/* onboarding unit toggle (BIG3 / body screens — not the approved three) uses the chip */
.v46-unit > button { height: 36px; min-width: 52px; padding: 0 14px; border-radius: 18px !important; border: 1px solid rgba(241,236,221,.18) !important; background: transparent !important; color: var(--ink) !important; font: 500 13px var(--f-jp) !important; box-shadow: none !important; }
.v46-unit > button.on, .v46-unit > button[aria-checked="true"] { background: rgba(217,189,124,.14) !important; border-color: rgba(217,189,124,.6) !important; color: var(--gold-text) !important; font-weight: 600 !important; }
/* "サンプル" marks are a quiet word, not a yellow badge */
.pop-sample, .v31-demo-pill { background: none !important; border: 0 !important; padding: 0 !important; color: var(--ink-2) !important; font-weight: 500 !important; box-shadow: none !important; }
/* v2 §3/§7 fixes found by the audit */
.btn-primary { text-shadow: none !important; }
.v30-pd-card.v30-pd-card.v30-pd-card { box-shadow: none !important; }
.co-in.co-in { box-shadow: none !important; }
.sheet select { font-size: 16px !important; }
/* chips look 36px; their touch area reaches 44px */
.v49-chips > button, .v46-unit > button, .seg > button, .v30-tabs > button, .v47-chip { position: relative; }
.v49-chips > button::before, .v46-unit > button::before, .seg > button::before, .v30-tabs > button::before, .v47-chip::before { content: ""; position: absolute; left: 0; right: 0; top: -4px; bottom: -4px; }
/* comparison rows keep one line after the type step-up (15px body) */
.v47-ps-row { font-size: 13px !important; }
.v47-ps-row > span:first-child { white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.v47-ps-vals { white-space: nowrap; flex: none; }
.v47-ps-vals b { font-size: 15px; }

/* ---- v0.49B: onboarding, training, record tab ---- */
.v49-stale { margin: 0 0 8px; color: var(--gold-text) !important; }
.v49-name-late { margin-top: 16px; }
.bstep-l { display: flex; align-items: center; justify-content: space-between; min-height: 32px; }
.v49-rul { display: inline-grid; place-items: center; width: 44px; height: 32px; padding: 0; border-radius: 16px; border: 1px solid rgba(241,236,221,.18); background: transparent; color: var(--ink-2); }
.v49-rul svg { width: 20px; height: 20px; }
.v49-rul.on { color: var(--gold-text); border-color: rgba(217,189,124,.6); background: rgba(217,189,124,.14); }
.v49-pbline { color: var(--gold-text) !important; }
.v49-pbline b { color: var(--gold); font-weight: 600; }
.ee-sets li b { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.v49-edit { margin-left: 8px; min-height: 32px; padding: 0 6px; color: #E9D6A2; }
.v49-addlater { display: block; margin: 8px auto 0; min-height: 44px; }
.tp.skipped .tp-t b { color: var(--ink-2); }
.v49-danger { color: var(--err-ink) !important; }
/* ---- v0.49B stage 5: while training ---- */
.bstep-l { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.v49-rul { position: relative; width: 32px; height: 28px; display: inline-grid; place-items: center; border-radius: 8px; border: 1px solid var(--line); background: transparent; color: var(--ink-2); }
.v49-rul::before { content: ""; position: absolute; inset: -8px -6px; }
.v49-rul svg { width: 20px; height: 20px; }
.v49-rul.on { color: var(--gold-text); border-color: rgba(217,189,124,.6); background: rgba(217,189,124,.14); }
.ee-prog-row.v49-pbline { color: var(--gold-text); }
.ee-prog-row.v49-pbline b { color: var(--gold); font-weight: 600; }
.v49-edit { margin-left: 10px; font-size: 12px !important; color: var(--ink-2) !important; text-decoration: underline; text-underline-offset: 3px; background: none; border: 0; padding: 0; position: relative; }
.v49-edit::before { content: ""; position: absolute; inset: -14px -10px; }
.v49-addlater { display: block; margin: 8px auto 0; min-height: 44px; }
.tp.skipped .tp-t b { color: var(--ink-2); }
.v49-row.v49-danger { color: var(--err-ink); }
.v49-stale { color: var(--gold-text) !important; margin: 4px 0 8px; }
.v49-name-late { margin-top: 16px; }
/* ---- v0.49B stage 6: the Record tab's one main zone ---- */
.v49-zone, .v49-plan { margin: 16px 0 0; padding: 16px; border-radius: 16px; border: 1px solid var(--line); background: var(--leather) repeat, var(--surface-1); display: grid; gap: 10px; }
.v49-zone.v49-resume, .v49-plan.main { border: 1px solid transparent; background: var(--leather) padding-box, linear-gradient(var(--surface-1), var(--surface-1)) padding-box, var(--metal) border-box; }
.v49-plan-h { font: 600 var(--t2)/1.35 var(--f-jp); color: var(--ink); }
.v49-zone p, .v49-plan p { margin: 0; color: var(--ink-2); font: 400 var(--t4)/1.55 var(--f-jp); }
.v49-plan ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.v49-plan li { display: flex; justify-content: space-between; gap: 12px; font: 500 var(--t3)/1.4 var(--f-jp); color: var(--ink); }
.v49-plan li em { font-style: normal; color: var(--ink-2); font-variant-numeric: tabular-nums; }
.v49-plan li.more { color: var(--ink-2); font-size: var(--t4); }
.v49-plan-acts { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.v49-plan-acts .btn-text, .v49-zone .btn-text { min-height: 44px; }
.v49-review { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 48px; margin: 12px 0 0; padding: 0 4px; background: none; border: 0; border-bottom: 1px solid var(--line); color: var(--ink); font: 500 var(--t4) var(--f-jp); text-align: left; }
.v49-review span { color: var(--ink-2); font-size: 18px; }
.v49-evalcard { margin: 12px 0 0; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--leather) repeat, var(--surface-1); display: grid; gap: 4px; }
.v49-evalcard b { font: 600 var(--t4) var(--f-jp); color: var(--ink); }
.v49-evalcard p { margin: 0; font: 400 var(--t5)/1.5 var(--f-jp); color: var(--ink-2); }
.v49-evalcard .btn-text { justify-self: start; min-height: 44px; }
.v49-notice { position: relative; margin: 12px 0 0; padding: 12px 40px 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface-2); display: grid; gap: 4px; font: 400 var(--t4)/1.5 var(--f-jp); color: var(--ink); }
.v49-notice .del-btn { position: absolute; top: 6px; right: 6px; }
.v49-notice .btn-text { justify-self: start; }
.v49-q { margin: 4px 0 6px; font: 600 var(--t2)/1.4 var(--f-jp); color: var(--ink); }
.v49-opts { display: grid; gap: 8px; margin: 12px 0; }
.v49-opts.row { grid-template-columns: repeat(4, 1fr); }
.v49-opt { min-height: 48px; padding: 10px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface-1); color: var(--ink); font: 500 var(--t3)/1.4 var(--f-jp); text-align: left; }
.v49-opts.row .v49-opt { text-align: center; }
.v49-opt:active { background: var(--surface-2); }
.v49-q-foot { margin-top: 4px; }
.v49-facts { white-space: pre-line; font: 400 var(--t3)/1.8 var(--f-jp); color: var(--ink); }
/* ---- v0.49C stage 7: ranking ---- */
.v46-cond-line { font: 500 12px/1.4 var(--f-jp) !important; min-height: 44px; background: none !important; border: 0 !important; border-bottom: 1px solid var(--line) !important; border-radius: 0 !important; padding: 0 2px !important; color: var(--ink-2) !important; }
.v49-rk-lines { margin: 12px 0 0; display: grid; gap: 4px; }
.v49-rk-chg { margin: 0; font: 500 var(--t4)/1.5 var(--f-jp); color: var(--ink); }
.v49-rk-next { margin: 0; font: 400 var(--t4)/1.5 var(--f-jp); color: var(--ink-2); font-variant-numeric: tabular-nums; }
.v49-rk-week { margin: 8px 0 0; font: 400 var(--t5)/1.5 var(--f-jp); color: var(--ink-2); }
.v49-est { display: block; font: 400 11px/1.3 var(--f-jp) !important; color: var(--ink-3) !important; margin-top: 2px; }
.v30-list .nm .v49-est { display: block; }
.v49-band > button .nm { color: var(--ink-2); font-size: var(--t4) !important; }
.v49-band-l { list-style: none; margin: 0 0 6px; padding: 0 0 0 32px; }
.v49-band-l li button { display: grid; grid-template-columns: 32px 1fr auto; align-items: center; gap: 10px; width: 100%; min-height: 48px; background: none; border: 0; color: var(--ink); text-align: left; }
.v49-band-l .nm small { display: block; font-size: 11px; color: var(--ink-3); }
.v30-list li.v49-band > button .nm { grid-column: 2 / -2; white-space: normal; overflow: visible; text-overflow: clip; }
.v30-list li.v49-band > button .go { grid-column: -2 / -1; }
/* ---- v0.49C stage 9: settings page ---- */
.v49-setpage { position: fixed; inset: 0; z-index: 40; overflow-y: auto; -webkit-overflow-scrolling: touch; background: #070D09; color: var(--ink); padding: 0 max(16px, env(safe-area-inset-right, 0px)) calc(32px + env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px)); }
.v49-set-top { position: sticky; top: 0; z-index: 1; display: grid; grid-template-columns: 44px 1fr 44px; align-items: center; min-height: 56px; padding-top: env(safe-area-inset-top, 0px); margin: 0 -16px; padding-left: 4px; padding-right: 4px; background: #070D09; border-bottom: 1px solid var(--line); }
.v49-set-top h1 { margin: 0; text-align: center; font: 600 var(--t3) var(--f-jp); color: var(--ink); }
.v49-set-back { width: 44px; height: 44px; border: 0; background: none; color: var(--ink); font: 400 32px/1 var(--f-jp); }
.v49-set-in { max-width: 560px; margin: 0 auto; padding-top: 16px; }
.v49-set-sum { padding: 14px 16px 6px; border-radius: 12px; border: 1px solid var(--line-gold, var(--line)); background: var(--surface-1); display: grid; gap: 6px; }
.v49-set-sum > b { font: 600 var(--t4) var(--f-jp); color: var(--gold-text); }
.v49-set-sum > p { margin: 0; font: 400 var(--t4)/1.6 var(--f-jp); color: var(--ink); }
.v49-set-sum dl { margin: 4px 0 0; display: grid; gap: 0; }
.v49-set-sum dl > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 12px; padding: 8px 0; border-top: 1px solid var(--line); }
.v49-set-sum dt { font: 400 var(--t5)/1.5 var(--f-jp); color: var(--ink-2); }
.v49-set-sum dd { margin: 0; font: 500 var(--t5)/1.5 var(--f-jp); color: var(--ink); text-align: right; }
.v49-set-sum .btn-text { justify-self: start; min-height: 44px; }
.v49-set-g { margin-top: 24px; }
.v49-set-h { margin: 0 0 6px 2px; font: 500 var(--t5) var(--f-jp); color: var(--ink-2); letter-spacing: .04em; }
.v49-set-list { border-radius: 12px; border: 1px solid var(--line); background: var(--surface-1); overflow: hidden; }
.v49-set-row { display: grid; grid-template-columns: minmax(0, 1fr) auto 16px; align-items: center; gap: 10px; width: 100%; min-height: 56px; padding: 8px 14px; border: 0; border-top: 1px solid var(--line); background: none; color: var(--ink); text-align: left; font: 500 var(--t4)/1.4 var(--f-jp); }
.v49-set-list > .v49-set-row:first-child { border-top: 0; }
button.v49-set-row:active { background: var(--surface-2); }
.v49-set-row .t small { display: block; margin-top: 2px; font: 400 12px/1.4 var(--f-jp); color: var(--ink-3); }
.v49-set-row .v { font: 400 var(--t4)/1.4 var(--f-jp); color: var(--ink-2); text-align: right; max-width: 52vw; overflow-wrap: anywhere; }
.v49-set-row .go { color: var(--ink-3); font-size: 20px; text-align: right; }
.v49-set-row.sw { grid-template-columns: minmax(0, 1fr) auto 50px; cursor: pointer; }
.v49-set-row.sw input { appearance: none; -webkit-appearance: none; margin: 0; width: 50px; height: 30px; border-radius: 15px; background: #2B3B30; position: relative; transition: background .2s; }
.v49-set-row.sw input::after { content: ""; position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; border-radius: 50%; background: #F3F1E9; transition: transform .2s cubic-bezier(.22,1,.36,1); }
.v49-set-row.sw input:checked { background: #D6B369; }
.v49-set-row.sw input:checked::after { transform: translateX(20px); }
.v49-set-row.sw input:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.v49-set-ver { margin: 24px 0 0; text-align: center; font: 400 12px var(--f-jp); color: var(--ink-3); }
@media (prefers-reduced-motion: reduce) { .v49-set-row.sw input, .v49-set-row.sw input::after { transition: none; } }
/* stage 9: player sheet, profile, posts */
.v49-selfrep { margin: 6px 0 0; font: 400 var(--t5)/1.5 var(--f-jp); color: var(--ink-3); }
.v49-verified { display: inline-block; margin-top: 4px; font: 600 12px var(--f-jp); color: var(--gold-text); }
.v49-ps-where { margin-top: -4px; }
.v49-ps-safety { display: flex; gap: 8px; justify-content: center; margin-top: 8px; }
.v49-ps-safety .btn-text { min-height: 44px; color: var(--ink-3); }
.v49-chips button.arm { border-color: var(--gold) !important; color: var(--gold-text) !important; }
.v49-comm-add { justify-self: start; min-height: 44px; }
.v49-demo-art { display: grid; place-items: center; align-content: center; gap: 10px; width: 100%; aspect-ratio: 4 / 5; border-radius: 12px; background: var(--surface-1); border: 1px solid var(--line); }
.v49-demo-art svg { width: 72px; height: 72px; }
.v49-demo-art small { font: 400 12px var(--f-jp); color: var(--ink-3); }
.v49-demo-art.sm { aspect-ratio: 1 / 1; border-radius: 0; border: 0; }
.v49-demo-art.sm svg { width: 40px; height: 40px; }
.v30-use, .bt-hint .btn-text, .v30-demo-tag, .v30-tabs button { min-height: 44px; }
.v30-rk-demo { min-height: 44px !important; padding: 0 !important; margin: -9px 0 !important; background: none !important; }
.v30-rk-demo > span { display: inline-flex; align-items: center; min-height: 26px; padding: 0 8px; border-radius: 999px; background: var(--gold); color: #1a1407; font: 600 11px var(--f-jp); }
.v30-demo { min-height: 44px; margin-top: -7px; margin-bottom: -7px; }
.v30-big3-l button { min-height: 44px; }
.v49-set-row { box-sizing: border-box; }
.v30-post-media > .v49-demo-art { display: grid; place-items: center; align-content: center; height: 100%; aspect-ratio: auto; border: 0; border-radius: 0; }
.v30-post-media > .v49-demo-art small { display: block; width: auto; height: auto; }
/* ---- v0.49C stage 10: import preview ---- */
.v49-imp { margin: 12px 0 0; display: grid; gap: 8px; }
.v49-imp-t { width: 100%; border-collapse: collapse; font: 400 var(--t4)/1.4 var(--f-jp); }
.v49-imp-t th, .v49-imp-t td { padding: 8px 6px; border-top: 1px solid var(--line); text-align: left; vertical-align: top; color: var(--ink); }
.v49-imp-t thead th { font-weight: 600; color: var(--ink-2); border-top: 0; }
.v49-imp-t tbody th { font-weight: 400; color: var(--ink-2); white-space: nowrap; width: 5.5em; }
.v49-imp-t tr.diff td:last-child { color: var(--gold-text); }
.v49-bk { list-style: none; margin: 0; padding: 0; }
.v49-bk li { display: flex; align-items: center; justify-content: space-between; min-height: 48px; border-top: 1px solid var(--line); font: 400 var(--t4) var(--f-jp); color: var(--ink-2); }
.v49-bk .btn-text { min-height: 44px; }
/* ---- v0.49C stage 11: a failed save is visible everywhere ---- */
.v49-savefail { position: fixed; left: 12px; right: 12px; bottom: calc(88px + env(safe-area-inset-bottom, 0px)); z-index: 30; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); font: 400 var(--t4)/1.5 var(--f-jp); }
.v49-savefail span { flex: 1 1 100%; }
.v49-savefail .btn-text { min-height: 44px; }
