/* Chapter 1 (2026-11-05): stamina/satiety meters in the screen header and the 내 상태 screen.
   Uses the approved screen tokens (--other-*) so it matches the existing UI. */
.life-chips{display:flex;gap:1.2cqw;align-items:center}
.life-chip{display:inline-flex;align-items:center;gap:.5cqw;font-family:'Segoe UI','Malgun Gothic',sans-serif;font-size:1cqw;color:var(--other-ink);font-variant-numeric:tabular-nums}
.life-chip-label{color:var(--other-muted)}
.life-chip-bar{position:relative;display:inline-block;width:6cqw;height:.6cqw;border-radius:1cqw;background:var(--other-tint);border:1px solid var(--other-border);overflow:hidden}
.life-chip-fill{position:absolute;inset:0 auto 0 0;background:var(--other-primary)}
.life-chip.satiety .life-chip-fill{background:#b07a2a}
.life-chip.is-low .life-chip-fill{background:#b3442f}
.life-chip.is-low .life-chip-value{color:#b3442f;font-weight:700}
.status-panel h2{margin:.4cqw 0 1.2cqw}
.status-list{display:grid;gap:.6cqw;margin:0 0 1.6cqw}
.status-row{display:grid;grid-template-columns:9cqw 1fr;gap:1.2cqw;align-items:baseline;padding:.7cqw 1cqw;border:1px solid var(--other-border);border-radius:.5cqw;background:var(--other-paper)}
.status-row dt{font-weight:700;color:var(--other-ink)}
.status-row dd{margin:0;display:flex;flex-wrap:wrap;gap:.4cqw 1.2cqw;align-items:baseline}
.status-row strong{font-variant-numeric:tabular-nums;font-size:1.3cqw}
.status-row span{color:var(--other-muted);font-size:1cqw}
.status-meal{display:grid;gap:.8cqw;justify-items:start;padding-top:1cqw;border-top:1px solid var(--other-border)}
.status-meal h3{margin:0}
@media (forced-colors:active){.life-chip-fill,.life-chip.satiety .life-chip-fill,.life-chip.is-low .life-chip-fill{background:CanvasText}}

/* Lodging screen: picker + "go there on the minimap" (user 2026-11-05). */
.lodging-pick{display:grid;gap:.6cqw}.lodging-go{justify-self:start}

/* lodging screen v2 (user 2026-11-06): no scroll, minimap look — left picked lodging, right list + tonight + one next step */
.game-screen[data-screen="lodging"]{background:radial-gradient(110% 90% at 28% 30%,#fff3f7 0%,#ffe9f0 38%,#e6f1ff 100%)}
.lg-stage{position:absolute;inset:11% 40% 13% 1%}
.lg-hero{position:absolute;inset:0;margin:0;overflow:hidden;border-radius:2.2cqw;background:#2b2228;box-shadow:0 .5cqw 1.6cqw rgba(160,90,120,.18),0 0 0 .35cqw #fff}
.lg-room{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lg-hero-shade{position:absolute;inset:0;background:linear-gradient(transparent 55%,rgba(25,14,20,.62))}
.lg-cap{position:absolute;left:2.2cqw;bottom:1.8cqw;color:#fff;text-shadow:0 .1cqw .5cqw rgba(0,0,0,.4)}
.lg-cap h2{margin:.4cqw 0 .2cqw;font:800 2.3cqw/1.2 'Malgun Gothic',sans-serif;color:#fff}
.lg-cap p{margin:0;font-size:1cqw;opacity:.92}
.lg-tier{display:inline-block;padding:.15cqw .8cqw;border-radius:2cqw;background:var(--tier);color:#fff;font:800 .9cqw 'Malgun Gothic',sans-serif;text-shadow:none}
.lg-outside{position:absolute;right:1.6cqw;top:1.6cqw;width:24%;aspect-ratio:4/3;border-radius:1.2cqw;overflow:hidden;box-shadow:0 0 0 .3cqw #fff,0 .4cqw 1cqw rgba(0,0,0,.3)}
.lg-outside-img{width:100%;height:100%;object-fit:cover;display:block}
.lg-outside-tag{position:absolute;left:.5cqw;top:.5cqw;padding:.05cqw .6cqw;border-radius:1cqw;background:rgba(255,255,255,.9);color:#5b4a52;font:800 .75cqw 'Malgun Gothic',sans-serif}
.lg-credit{position:absolute;left:0;right:0;bottom:0;padding:.15cqw .5cqw;background:rgba(0,0,0,.45);color:#fff;font-size:.6cqw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lg-side{position:absolute;inset:11% 3% 13% 61%;display:flex;flex-direction:column;gap:.8cqw;padding:1.4cqw 1.6cqw;border-radius:2cqw;background:rgba(255,254,250,.94);box-shadow:0 .5cqw 1.6cqw rgba(160,90,120,.14),inset 0 0 0 .15cqw #f6dfe7;color:#3f3338;font-family:'Malgun Gothic',sans-serif;overflow:hidden}
.lg-eyebrow{margin:0;font-size:.9cqw;color:#a08b8f}
.lg-list{display:grid;gap:.35cqw}
.lg-row{display:grid;grid-template-columns:5.6cqw 1fr auto 4.6cqw;align-items:center;gap:.6cqw;min-height:2.5cqw;padding:.25cqw .7cqw;border:0;border-radius:1cqw;background:#fff;box-shadow:inset 0 0 0 .12cqw #f1e6ea;color:#3f3338;font:600 .9cqw 'Malgun Gothic',sans-serif;text-align:left;cursor:pointer;transition:transform .12s}
.lg-row:hover{transform:translateX(.2cqw)}
.lg-row.is-sel{background:#fff1f5;box-shadow:inset 0 0 0 .18cqw var(--tier)}
.lg-row-tier{justify-self:start;padding:.05cqw .55cqw;border-radius:1cqw;background:var(--tier);color:#fff;font:800 .72cqw 'Malgun Gothic',sans-serif;white-space:nowrap}
.lg-row-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lg-row-price{font-weight:800}
.lg-row-where{justify-self:end;font-size:.75cqw;color:#a08b8f}.lg-row.is-here .lg-row-where{color:#e4467d;font-weight:800}
.lg-row:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
.lg-sum{display:grid;grid-template-columns:1fr 1fr;gap:.5cqw .8cqw;padding:.8cqw 1cqw;border-radius:1.2cqw;background:#fdf7f9}
.lg-stat{display:grid;gap:.1cqw}.lg-stat span{font-size:.75cqw;color:#a08b8f}.lg-stat strong{font-size:1.3cqw}.lg-stat small{font-size:.72cqw;color:#7b6a70}
.lg-stat s{color:#b9a8ad;font-weight:400;font-size:.9cqw}
.lg-stat-wide{grid-column:1/-1}
.lg-bar{position:relative;height:.6cqw;border-radius:1cqw;background:#efe6ea;overflow:hidden}.lg-bar i{position:absolute;top:0;bottom:0}
.lg-bar-now{left:0;background:#7cc3a0}.lg-bar-gain{background:repeating-linear-gradient(45deg,#ffb3cb 0 .4cqw,#ff8fb3 .4cqw .8cqw)}
.lg-note{grid-column:1/-1;margin:0;font-size:.78cqw;color:#7b6a70}
.lg-cta{margin-top:auto;display:grid;gap:.5cqw}
.lg-stay{min-height:3.2cqw;border:0;border-radius:1.6cqw;background:#ff6f9f;color:#fff;font:800 1.15cqw 'Malgun Gothic',sans-serif;box-shadow:0 .3cqw 0 #e45a8a;cursor:pointer}
.lg-stay:disabled{background:#d9c9cf;box-shadow:none;cursor:not-allowed}
.lg-why{margin:0;font-size:.85cqw;color:#a05a75}
.lg-moves{display:flex;flex-wrap:wrap;gap:.4cqw}
.lg-move{flex:1 1 auto;min-height:2.4cqw;padding:.25cqw .8cqw;border:0;border-radius:1.2cqw;font:700 .85cqw 'Malgun Gothic',sans-serif;cursor:pointer;background:#e8f4ec;color:#2f6b4a}
.lg-move-bus{background:#e6efff;color:#2f4f8f}.lg-move-taxi{background:#fff3d6;color:#8a6212}
.lg-move:disabled{opacity:.45;cursor:not-allowed}
.lg-map{justify-self:start;padding:.2cqw .8cqw;border:0;border-radius:1cqw;background:transparent;color:#a05a75;font:700 .8cqw 'Malgun Gothic',sans-serif;text-decoration:underline;cursor:pointer}
.lg-stay:focus-visible,.lg-move:focus-visible,.lg-map:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}

/* lodging v2: 숙박 / 장기숙박 (user 2026-11-06) */
.lg-side[data-seg] .lg-list{gap:.25cqw}.lg-side[data-seg] .lg-row{min-height:2.1cqw}
.lg-body{display:grid;gap:.6cqw}
.lg-seg{display:grid;grid-template-columns:1fr 1fr;gap:.3cqw;padding:.3cqw;border-radius:1.4cqw;background:#f6eef1}
.lg-seg-btn{display:grid;gap:.05cqw;padding:.35cqw .6cqw;border:0;border-radius:1.1cqw;background:transparent;color:#7b6a70;font-family:'Malgun Gothic',sans-serif;cursor:pointer;text-align:center}
.lg-seg-btn strong{font-size:1cqw}.lg-seg-btn small{font-size:.7cqw}
.lg-seg-btn.is-on{background:#fff;color:#e4467d;box-shadow:0 .2cqw .6cqw rgba(200,90,130,.18)}
.lg-plans{display:grid;grid-template-columns:repeat(5,1fr);gap:.35cqw}
.lg-plan{display:grid;gap:.05cqw;justify-items:center;padding:.45cqw .2cqw;border:0;border-radius:1cqw;background:#fff;box-shadow:inset 0 0 0 .12cqw #f1e6ea;color:#3f3338;font-family:'Malgun Gothic',sans-serif;cursor:pointer}
.lg-plan strong{font-size:1cqw}.lg-plan span{font-size:.78cqw;font-weight:700}.lg-plan small{font-size:.68cqw;color:#e4467d;font-weight:800}
.lg-plan.is-on{background:#fff1f5;box-shadow:inset 0 0 0 .2cqw #ff6f9f}
.lg-plan:focus-visible,.lg-seg-btn:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
.lg-booked{display:grid;gap:.1cqw;padding:.5cqw .8cqw;border-radius:1cqw;background:#eef7f1;box-shadow:inset 0 0 0 .12cqw #bfe0cb;color:#2f6b4a}
.lg-booked strong{font-size:.95cqw}.lg-booked span{font-size:.75cqw}
.lg-stay.is-rest{background:#4fa877;box-shadow:0 .3cqw 0 #3b8a5f}
.lg-row{grid-template-columns:5.6cqw 1fr auto auto}.lg-row-where{min-width:3.6cqw;text-align:right;white-space:nowrap}

/* top bar v2 (user 2026-11-06): date / time / city chips + icon gauges */
.screen-date.top-chips{display:inline-flex;align-items:center;gap:.45cqw;font-size:.95cqw}
.top-chip{display:inline-flex;align-items:center;gap:.4cqw;padding:.2cqw .8cqw .2cqw .25cqw;border-radius:2cqw;background:rgba(255,254,250,.92);box-shadow:0 .15cqw .5cqw rgba(160,90,120,.12),inset 0 0 0 .1cqw #f3e3ea;color:#4a3c42;font-family:'Malgun Gothic',sans-serif;white-space:nowrap;font-variant-numeric:tabular-nums}
.top-chip strong{font-size:1.05cqw}
.top-ico{display:grid;place-items:center;width:1.9cqw;height:1.9cqw;border-radius:50%;background:color-mix(in srgb,var(--ico) 16%,#fff);color:var(--ico);flex:none}
.top-ico-svg{width:1.15cqw;height:1.15cqw}
.top-time.is-night{background:#eef0fb}
.life-chips{gap:.6cqw}
.life-chip{gap:.45cqw;padding:.25cqw .9cqw .25cqw .25cqw;border-radius:2cqw;background:rgba(255,254,250,.92);box-shadow:0 .15cqw .5cqw rgba(160,90,120,.12),inset 0 0 0 .1cqw #f3e3ea}
.life-chip-main{display:grid;gap:.15cqw;min-width:7.5cqw}
.life-chip-head{display:flex;justify-content:space-between;align-items:baseline;gap:.6cqw;font-size:.72cqw;line-height:1.1}
.life-chip-label{color:#8a777e;font-weight:700}
.life-chip-value{color:#8a777e}.life-chip-value strong{color:#3f3338;font-size:.9cqw}
.life-chip-bar{width:100%;height:.65cqw;border:0;background:#efe6ea;box-shadow:inset 0 .05cqw .15cqw rgba(0,0,0,.08)}
.life-chip-fill{border-radius:1cqw;transition:width .4s ease}
.life-chip.stamina .life-chip-fill{background:linear-gradient(90deg,#7dd3a3,#3fae74)}
.life-chip.satiety .life-chip-fill{background:linear-gradient(90deg,#ffc38a,#f08a3c)}
.life-chip.is-low .life-chip-fill{background:linear-gradient(90deg,#ff9a9a,#e0505a)}
.life-chip.is-low{box-shadow:0 0 0 .12cqw #f3a0a8,0 .15cqw .5cqw rgba(200,60,80,.18)}
.life-chip.is-low .life-chip-value strong{color:#c43d4b}
@media (prefers-reduced-motion:reduce){.life-chip-fill{transition:none}}
@media (forced-colors:active){.top-chip,.life-chip{border:1px solid CanvasText}.life-chip-fill,.life-chip.stamina .life-chip-fill,.life-chip.satiety .life-chip-fill,.life-chip.is-low .life-chip-fill{background:CanvasText}}
.screen-current{display:inline-flex;align-items:center;gap:.4cqw;padding:.2cqw 1cqw;border-radius:2cqw;background:linear-gradient(90deg,#ff8fb3,#ff6f9f);color:#fff;font-weight:800;box-shadow:0 .2cqw .6cqw rgba(228,90,138,.25)}
.screen-current::before{content:'♥';font-size:.8em;opacity:.9}
.game-screen[data-screen^=hybrid] .top-chip:first-child,.game-screen[data-screen^=hybrid] .life-chip-head .life-chip-label{display:none}
.game-screen[data-screen^=hybrid] .life-chip-main{min-width:5cqw}
/* gauges stand out more (user 2026-11-06 "좀 더 눈에 들어오게") */
.life-chips{gap:.8cqw}
.life-chip{gap:.6cqw;padding:.35cqw 1.1cqw .35cqw .35cqw;background:#fff;box-shadow:0 .25cqw .9cqw rgba(160,90,120,.18),inset 0 0 0 .14cqw var(--gauge-ring,#f3e3ea)}
.life-chip.stamina{--gauge-ring:#bfe6cf}.life-chip.satiety{--gauge-ring:#ffd7b5}
.life-chip .top-ico{width:2.5cqw;height:2.5cqw;background:var(--ico);color:#fff;box-shadow:0 .15cqw .4cqw color-mix(in srgb,var(--ico) 45%,transparent)}
.life-chip .top-ico-svg{width:1.45cqw;height:1.45cqw}
.life-chip-main{min-width:10cqw;gap:.25cqw}
.life-chip-head{font-size:.9cqw}
.life-chip-label{color:#5b4a52;font-weight:800}
.life-chip-value strong{font-size:1.25cqw;font-weight:900}
.life-chip-bar{height:1cqw;background:#f1e8ec}
.life-chip-fill{box-shadow:inset 0 .2cqw 0 rgba(255,255,255,.35)}
.game-screen[data-screen^=hybrid] .life-chip-main{min-width:6cqw}
/* gauges aligned over the right panel (user 2026-11-06 마크한 곳에 정렬) */
.game-screen:not([data-screen^=hybrid]) .screen-top{padding-right:3cqw}
.game-screen:not([data-screen^=hybrid]) .life-chips{display:grid;grid-template-columns:1fr 1fr;width:32cqw;flex:none;margin-left:1.2cqw;gap:.7cqw}
.game-screen:not([data-screen^=hybrid]) .life-chip{min-width:0}
.game-screen:not([data-screen^=hybrid]) .life-chip-main{min-width:0;flex:1}
.life-chip-head{white-space:nowrap}
.screen-top .screen-back.in-top{position:static;margin-left:.6cqw;padding:.3cqw 1cqw;font-size:.9cqw;border:0;background:rgba(255,254,250,.92);box-shadow:0 .15cqw .5cqw rgba(160,90,120,.12),inset 0 0 0 .1cqw #f3e3ea;color:#7b5a68;font-weight:700;pointer-events:auto;cursor:pointer}
.screen-top .screen-back.in-top::before{content:'‹ ';font-weight:900}
.screen-date.top-chips{flex:none}
/* date chip = schedule button */
.top-date{border:0;font:inherit;cursor:pointer;pointer-events:auto;transition:transform .12s,box-shadow .12s}
.top-date:hover{transform:translateY(-.1cqw);box-shadow:0 .25cqw .7cqw rgba(228,90,138,.22),inset 0 0 0 .12cqw #ffb3cb}
.top-date[aria-expanded="true"]{box-shadow:0 0 0 .15cqw #ff6f9f}
.top-date:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
.cal-pop.from-date{bottom:auto}

/* 아르바이트 v2 (user 2026-11-06) — reuses the lodging layout (.lg-*) */
.game-screen[data-screen="regional-job-selection"],.game-screen[data-screen="work-detail"]{background:radial-gradient(110% 90% at 28% 30%,#fff3f7 0%,#ffe9f0 38%,#e6f1ff 100%)}
.jb-pay-badge{position:absolute;right:1.6cqw;top:1.6cqw;padding:.4cqw 1.1cqw;border-radius:2cqw;background:#fff;color:#e4467d;font:900 1.5cqw 'Malgun Gothic',sans-serif;box-shadow:0 .3cqw 1cqw rgba(0,0,0,.25)}
.jb-pay-badge small{font-size:.8cqw;color:#a08b8f;font-weight:700}
.jb-row{grid-template-columns:6.6cqw 1fr auto auto}
.jb-bar-use{background:repeating-linear-gradient(45deg,#ffc0a8 0 .4cqw,#ff9f7f .4cqw .8cqw)}
.jb-go{background:#ff8a3d;box-shadow:0 .3cqw 0 #e06f22}
.jb-montage{z-index:3;overflow:hidden;border-radius:inherit;background:#2b2228}
.jb-montage-cap{z-index:4;left:2.2cqw;bottom:1.8cqw;background:rgba(255,254,250,.92);color:#e4467d;font-weight:800;border-radius:2cqw}
.jb-side.is-working{pointer-events:none;opacity:.55;transition:opacity .2s}
.jb-early{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:.4cqw;padding:.35cqw .6cqw;border-radius:1cqw;background:#eef7f1;color:#2f6b4a;font-size:.8cqw}
.jb-early strong{padding:.05cqw .5cqw;border-radius:1cqw;background:#fff;color:#2f8a5a;font-size:.8cqw}
.jb-early-ico{font-size:1cqw}

/* per-job end time (user 2026-11-06) */
.jb-row{grid-template-columns:6.6cqw 1fr auto auto auto}
.jb-end{padding:.05cqw .5cqw;border-radius:1cqw;background:#eef0fb;color:#4b5bb8;font:800 .75cqw 'Malgun Gothic',sans-serif;white-space:nowrap}
.jb-end.is-clash{background:#ffe3e6;color:#c43d4b}
.jb-appt{grid-column:1/-1;margin:0;padding:.3cqw .6cqw;border-radius:1cqw;background:#eef0fb;color:#4b5bb8;font-size:.78cqw}
.jb-appt.is-clash{background:#ffe3e6;color:#c43d4b;font-weight:700}

/* 연락 주소록 v2 (user 2026-11-06) */
.game-screen[data-screen="contacts"]{background:radial-gradient(110% 90% at 28% 30%,#fff3f7 0%,#ffe9f0 38%,#e6f1ff 100%)}
.ct-book{position:absolute;inset:11% 52% 13% 3%;display:flex;flex-direction:column;gap:.8cqw;padding:1.4cqw 1.6cqw;border-radius:2cqw;background:rgba(255,254,250,.94);box-shadow:0 .5cqw 1.6cqw rgba(160,90,120,.14),inset 0 0 0 .15cqw #f6dfe7;font-family:'Malgun Gothic',sans-serif;color:#3f3338;overflow:hidden}
.ct-book-head{display:flex;align-items:center;justify-content:space-between}.ct-book-head h2{margin:0;font-size:1.6cqw}
.ct-count{padding:.15cqw .8cqw;border-radius:2cqw;background:#fff1f5;color:#e4467d;font-weight:800;font-size:.9cqw}
.ct-list{display:grid;gap:.5cqw;overflow:auto;padding:.2cqw}
.ct-row{position:relative;display:grid;grid-template-columns:4.2cqw 1fr auto;align-items:center;gap:.8cqw;padding:.5cqw .8cqw;border:0;border-radius:1.4cqw;background:#fff;box-shadow:inset 0 0 0 .12cqw #f1e6ea;color:#3f3338;text-align:left;font-family:inherit;cursor:pointer;transition:transform .12s}
.ct-row:hover{transform:translateX(.2cqw)}.ct-row.is-sel{background:#fff1f5;box-shadow:inset 0 0 0 .2cqw #ff8fb3}
.ct-row:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
.ct-face{width:4.2cqw;height:4.2cqw;border-radius:50%;overflow:hidden;background:linear-gradient(#ffe9f0,#fff6f9);box-shadow:0 0 0 .15cqw #fff,0 0 0 .3cqw #ffc2d4}
.ct-face-img{width:100%;height:100%;object-fit:cover;object-position:50% 30%}
.ct-row-main{display:grid;gap:.2cqw}.ct-row-main strong{font-size:1.1cqw}
.ct-row-sub{display:flex;align-items:center;gap:.5cqw;font-size:.8cqw;color:#8a777e}
.ct-new{margin-left:.4cqw;padding:0 .4cqw;border-radius:1cqw;background:#ff4f8b;color:#fff;font:800 .65cqw 'Malgun Gothic',sans-serif;font-style:normal;vertical-align:middle}
.ct-rel{padding:.05cqw .55cqw;border-radius:1cqw;font-weight:800;font-size:.75cqw;background:#eef0fb;color:#4b5bb8}
.ct-rel.is-love{background:#ffe3ec;color:#e4467d}.ct-rel.is-like{background:#fff1f5;color:#e4467d}.ct-rel.is-friend{background:#eef7f1;color:#2f8a5a}.ct-rel.is-sad{background:#fff3d6;color:#a06a12}.ct-rel.is-off{background:#efe6ea;color:#8a777e}
.ct-gauge{position:relative;display:block;height:.7cqw;border-radius:1cqw;background:#f3e8ec;overflow:visible}
.ct-gauge i{position:absolute;inset:0 auto 0 0;border-radius:1cqw;background:linear-gradient(90deg,#ffb3cb,#ff4f8b)}
.ct-gauge b{position:absolute;right:-.3cqw;top:50%;translate:0 -50%;color:#ff4f8b;font-size:.9cqw;line-height:1}
.ct-appt-dot{font-size:1.1cqw}
.ct-empty{display:grid;justify-items:center;gap:.4cqw;padding:3cqw 1cqw;text-align:center;color:#8a777e}
.ct-empty-face{font-size:3cqw}.ct-empty strong{color:#3f3338;font-size:1.2cqw}.ct-empty p{margin:0;font-size:.9cqw}
.ct-card{position:absolute;inset:11% 3% 13% 50%;display:flex;flex-direction:column;gap:1cqw;padding:1.6cqw;border-radius:2cqw;background:rgba(255,254,250,.94);box-shadow:0 .5cqw 1.6cqw rgba(160,90,120,.14),inset 0 0 0 .15cqw #f6dfe7;font-family:'Malgun Gothic',sans-serif;color:#3f3338;overflow:hidden}
.ct-hero{display:grid;grid-template-columns:14cqw 1fr;align-items:end;gap:1.2cqw;padding:1cqw;border-radius:1.6cqw;background:linear-gradient(160deg,#ffe9f0,#fff6f9 60%,#eef0fb)}
.ct-hero-img{width:14cqw;height:14cqw;object-fit:contain;filter:drop-shadow(0 .4cqw .8cqw rgba(160,90,120,.25))}
.ct-hero-copy{display:grid;gap:.4cqw;padding-bottom:.6cqw}.ct-hero-copy h2{margin:0;font-size:2cqw}.ct-hero-copy p{margin:0;font-size:.9cqw;color:#8a777e}.ct-hero-copy .ct-rel{justify-self:start;font-size:.9cqw}
.ct-aff{display:grid;gap:.3cqw;font-size:.8cqw;color:#8a777e}.ct-aff .ct-gauge{height:1cqw}
.ct-offer{display:grid;gap:.4cqw;padding:.9cqw 1.1cqw;border-radius:1.4cqw;background:#fff1f5;box-shadow:inset 0 0 0 .15cqw #ffc2d4}.ct-offer.is-set{background:#eef0fb;box-shadow:inset 0 0 0 .15cqw #c9d0f3}
.ct-offer strong{font-size:1.05cqw}.ct-offer p{margin:0;font-size:.95cqw}
.ct-actions{display:flex;flex-wrap:wrap;gap:.5cqw}.ct-actions-main{margin-top:auto}
.ct-btn{flex:1 1 auto;min-height:2.8cqw;padding:.3cqw 1.2cqw;border:0;border-radius:1.6cqw;background:#fff;color:#7b5a68;font:800 1cqw 'Malgun Gothic',sans-serif;box-shadow:inset 0 0 0 .15cqw #f1d6df;cursor:pointer}
.ct-btn.is-main{background:#ff6f9f;color:#fff;box-shadow:0 .3cqw 0 #e45a8a}
.ct-btn:disabled{background:#e6dde1;color:#fff;box-shadow:none;cursor:not-allowed}
.ct-btn:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
.ct-note{margin:0;font-size:.8cqw;color:#8a777e}
.ct-card-empty{margin:auto;color:#8a777e;font-size:1cqw;text-align:center}
.nav-new{position:absolute;top:-.3cqw;right:-.3cqw;min-width:1.3cqw;height:1.3cqw;padding:0 .3cqw;border-radius:1cqw;background:#ff4f8b;color:#fff;font:800 .75cqw/1.3cqw 'Malgun Gothic',sans-serif;text-align:center;box-shadow:0 0 0 .15cqw #fff}
.game-actions .game-nav-button{position:relative}
.ct-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:.6cqw;margin:0}
.ct-facts div{padding:.7cqw .9cqw;border-radius:1.2cqw;background:#fdf7f9;box-shadow:inset 0 0 0 .1cqw #f3e3ea}
.ct-facts dt{font-size:.75cqw;color:#a08b8f}.ct-facts dd{margin:.2cqw 0 0;font-size:1.05cqw;font-weight:800;color:#3f3338}

/* 주소록 12칸 + 파스텔 실루엣 (user 2026-11-06) */
.ct-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr;gap:.6cqw;flex:1;min-height:0}
.ct-tile{position:relative;display:grid;justify-items:center;align-content:center;gap:.25cqw;padding:.5cqw .3cqw;border:0;border-radius:1.4cqw;background:#fff;box-shadow:inset 0 0 0 .12cqw #f1e6ea;color:#3f3338;font-family:inherit;cursor:pointer;transition:transform .12s;min-height:0}
.ct-tile:hover{transform:translateY(-.15cqw)}.ct-tile.is-sel{background:#fff1f5;box-shadow:inset 0 0 0 .2cqw #ff8fb3}
.ct-tile.is-locked{background:#fbf8fa}.ct-tile.is-locked.is-sel{box-shadow:inset 0 0 0 .2cqw #c9b8c0}
.ct-tile:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
.ct-tile .ct-face{width:4.6cqw;height:4.6cqw}
.ct-tile-name{font-size:.95cqw}.ct-tile.is-locked .ct-tile-name{color:#b9a8ad;letter-spacing:.2em}
.ct-tile-sub{font-size:.7cqw;color:#a08b8f}
.ct-tile .ct-gauge{width:80%;height:.5cqw}
.ct-tile .ct-new{position:absolute;left:.4cqw;top:.4cqw;margin:0}
.ct-tile .ct-appt-dot{position:absolute;right:.4cqw;top:.3cqw}
.ct-face.is-locked{background:linear-gradient(#fff,#fbf5f8);box-shadow:0 0 0 .15cqw #fff,0 0 0 .3cqw color-mix(in srgb,var(--pastel) 70%,#fff)}
.ct-sil{display:block;width:100%;height:100%;background:linear-gradient(160deg,var(--pastel),color-mix(in srgb,var(--pastel) 55%,#fff));-webkit-mask-size:cover;mask-size:cover;-webkit-mask-position:50% 30%;mask-position:50% 30%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.ct-hero-sil{display:block;width:14cqw;height:14cqw}
.ct-hero-sil .ct-sil{-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;filter:drop-shadow(0 .4cqw .8cqw rgba(160,90,120,.2))}
.ct-card.is-locked .ct-hero{background:linear-gradient(160deg,#f7f2f5,#fbf8fa 60%,#f1f2f8)}
.ct-card.is-locked .ct-hero-copy h2{color:#b9a8ad;letter-spacing:.3em}
.ct-lock-note{margin:0;padding:.9cqw 1.1cqw;border-radius:1.2cqw;background:#fdf7f9;box-shadow:inset 0 0 0 .1cqw #f3e3ea;color:#7b6a70;font-size:.9cqw;line-height:1.6}
/* 주소록: 위에서 아래로 가로 카드, 밀어서 찾기 (user 2026-11-06) */
.ct-grid.ct-swipe{display:flex;flex-direction:column;gap:.55cqw;overflow-y:auto;overscroll-behavior:contain;scroll-snap-type:y mandatory;scrollbar-width:none;padding:.3cqw .2cqw;-webkit-mask-image:linear-gradient(transparent,#000 .8cqw,#000 calc(100% - 1.6cqw),transparent);mask-image:linear-gradient(transparent,#000 .8cqw,#000 calc(100% - 1.6cqw),transparent);cursor:grab;touch-action:pan-y}
.ct-grid.ct-swipe::-webkit-scrollbar{display:none}
.ct-grid.ct-swipe.is-dragging{cursor:grabbing;scroll-snap-type:none}
.ct-swipe .ct-tile{flex:none;display:grid;grid-template-columns:5.2cqw 1fr auto;justify-items:start;align-items:center;gap:1cqw;padding:.6cqw 1.1cqw;min-height:6.4cqw;scroll-snap-align:start;text-align:left}
.ct-swipe .ct-tile:hover{transform:translateX(.2cqw)}
.ct-swipe .ct-tile .ct-face{width:5.2cqw;height:5.2cqw}
.ct-tile-main{display:grid;gap:.3cqw;width:100%}
.ct-swipe .ct-tile-name{font-size:1.2cqw}
.ct-tile-city{font-size:.8cqw;color:#8a777e}
.ct-swipe .ct-tile .ct-gauge{width:100%;height:.6cqw}
.ct-swipe .ct-tile .ct-new{position:static;justify-self:end}
.ct-swipe .ct-tile .ct-appt-dot{position:static;font-size:1.3cqw}
.ct-swipe-hint{margin:0;text-align:center;font-size:.75cqw;color:#b9a8ad}
/* canvas SD (optimised) */
.ct-face canvas,.ct-sil-c{display:block;width:100%;height:100%;object-fit:cover}
.ct-face .ct-sil-c{object-position:50% 30%}
.ct-hero-sil .ct-sil-c{filter:drop-shadow(0 .4cqw .8cqw rgba(160,90,120,.2))}
canvas.ct-hero-img{width:14cqw;height:14cqw}
/* keep the top bar on one line when the back button sits next to the title */
.screen-top .screen-brand,.screen-top .screen-current,.screen-top .screen-back.in-top{white-space:nowrap;flex:none}
.screen-top .screen-back.in-top{font-size:.85cqw;padding:.25cqw .8cqw}

/* booking cues (user 2026-11-06) */
.top-stay{border:0;font:inherit;cursor:pointer;pointer-events:auto;background:#f3edff;box-shadow:0 .15cqw .5cqw rgba(106,79,184,.18),inset 0 0 0 .12cqw #c9b4ff;color:#5a3fa8;font-weight:800}
.top-stay-ico{display:grid;place-items:center;width:1.9cqw;height:1.9cqw;border-radius:50%;background:#8f6fe0;color:#fff;font-size:.95cqw}
.top-stay.is-tonight{animation:top-stay-glow 1.8s ease-in-out infinite}
@keyframes top-stay-glow{50%{box-shadow:0 0 0 .3cqw rgba(143,111,224,.25),inset 0 0 0 .12cqw #c9b4ff}}
@media (prefers-reduced-motion:reduce){.top-stay.is-tonight{animation:none}}
.top-stay:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
.screen-date.top-chips{gap:.35cqw}
.top-chip{padding-right:.65cqw}
/* very busy top bar (back button + booking chip): the brand text steps aside so nothing overflows */
.screen-top:has(.top-stay):has(.screen-back.in-top) .screen-brand{display:none}

/* money chip (user 2026-11-07): third chip next to stamina / satiety; the date · time · place chips move left */
.game-screen:not([data-screen^=hybrid]) .life-chips{grid-template-columns:1fr 1fr 1fr;width:43cqw;gap:.6cqw}
.life-chip.money{--gauge-ring:#ffe39a}
.life-chip-money{display:block;white-space:nowrap;color:#5b4a52;font-size:.9cqw;line-height:1.3}
.life-chip-money strong{font-size:1.25cqw;font-weight:900;color:#3f3338;margin-right:.15cqw}
.game-screen[data-screen^=hybrid] .life-chip.money{display:none}

/* top-left mini BGM player (user 2026-11-07) */
.bgm-player{display:inline-flex;align-items:center;gap:.5cqw;flex:none;padding:.35cqw .9cqw .35cqw .4cqw;border-radius:2cqw;background:#fff;box-shadow:0 .25cqw .9cqw rgba(160,90,120,.18),inset 0 0 0 .14cqw #f6dfe7}
.bgm-note{display:grid;place-items:center;width:2.2cqw;height:2.2cqw;border-radius:50%;background:linear-gradient(135deg,#ff9cc0,#b48cff);color:#fff;font-size:1.1cqw;font-weight:900;animation:bgm-bob 1.6s ease-in-out infinite}
.bgm-player.is-off .bgm-note{background:#d9cdd3;animation:none}
@keyframes bgm-bob{50%{transform:translateY(-.15cqw) rotate(-8deg)}}
.bgm-toggle{display:grid;place-items:center;width:2cqw;height:2cqw;padding:0;border:0;border-radius:50%;background:#fff1f5;color:#e4467d;font-size:.8cqw;font-weight:900;cursor:pointer}
.bgm-volume{-webkit-appearance:none;appearance:none;width:7.5cqw;height:.55cqw;border-radius:1cqw;background:linear-gradient(90deg,#ff8db3 0,#b48cff var(--v,70%),#f1e3ea var(--v,70%));cursor:pointer;margin:0}
.bgm-volume::-webkit-slider-thumb{-webkit-appearance:none;width:1.2cqw;height:1.2cqw;border-radius:50%;background:#fff;box-shadow:0 0 0 .14cqw #ff8db3,0 .1cqw .3cqw rgba(0,0,0,.2)}
.bgm-volume::-moz-range-thumb{width:1.2cqw;height:1.2cqw;border:0;border-radius:50%;background:#fff;box-shadow:0 0 0 .14cqw #ff8db3}
.bgm-player.is-off .bgm-volume{filter:grayscale(1);opacity:.6}
@media(prefers-reduced-motion:reduce){.bgm-note{animation:none}}

/* current-city pill (user 2026-11-07): same look as the BGM player */
.city-pill{display:inline-flex;align-items:center;gap:.5cqw;flex:none;white-space:nowrap;padding:.35cqw 1.1cqw .35cqw .4cqw;border-radius:2cqw;background:#fff;box-shadow:0 .25cqw .9cqw rgba(160,90,120,.18),inset 0 0 0 .14cqw #f6dfe7}
.city-pin{display:grid;place-items:center;width:2.2cqw;height:2.2cqw;border-radius:50%;background:linear-gradient(135deg,#ff9cc0,#b48cff);font-size:1cqw}
.city-name{font-size:1.3cqw;font-weight:900;color:#3f3338;letter-spacing:-.02em}
.city-ja{font-size:.85cqw;font-weight:700;color:#b08a9a}

/* money chip: amount only, filling the chip (user 2026-11-07) */
.life-chip.money .life-chip-main{display:flex;align-items:center;justify-content:center}
.life-chip-money{font-size:1.15cqw;line-height:1}
.life-chip-money strong{font-size:2cqw;letter-spacing:-.04em;margin-right:.25cqw}
.life-chip.money.is-long .life-chip-money strong{font-size:1.6cqw}/* 10,000,000엔 이상도 칸 안에 */

/* money chip: bigger yen coin, no 엔 suffix (user 2026-11-07) */
.life-chip.money .top-ico{width:3.1cqw;height:3.1cqw;margin:-.3cqw 0 -.3cqw -.15cqw}
.life-chip.money .top-ico-svg{width:2cqw;height:2cqw;stroke-width:2.4}
.life-chip-money strong{margin-right:0}

/* pace hint on the contact card (user 2026-11-07) */
.ct-pace-hint{margin:.6cqw 0 0;padding:.6cqw .9cqw;border-radius:1cqw;background:#fff6fa;box-shadow:inset 0 0 0 .12cqw #f6dfe7;color:#a0607e;font-size:.95cqw;font-weight:700;line-height:1.5}

/* call + text buttons side by side (user 2026-11-07) */
.ct-actions-main{display:flex;gap:.6cqw}
.ct-actions-main .ct-btn.is-main{flex:1.4}
.ct-btn.is-text{flex:1;border:0;border-radius:2cqw;background:linear-gradient(90deg,#b48cff,#9a7cf0);color:#fff;font-weight:900;box-shadow:0 .25cqw .8cqw rgba(140,100,230,.3)}

/* contact card portrait: the root face original in a soft frame (user 2026-11-07) */
.ct-hero-photo{position:relative;width:14cqw;height:14cqw;margin:0;border-radius:50%;padding:.35cqw;background:conic-gradient(from 200deg,#ff9cc0,#ffd1e0,#b48cff,#ff9cc0);box-shadow:0 .5cqw 1.4cqw rgba(160,90,120,.28)}
.ct-hero-photo img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:50% 22%;border:.25cqw solid #fff;box-sizing:border-box;background:#fff}
.ct-hero-photo::after{content:'';position:absolute;right:.6cqw;bottom:.9cqw;width:1.6cqw;height:1.6cqw;border-radius:50%;background:#7bd389;border:.25cqw solid #fff;box-shadow:0 .1cqw .3cqw rgba(0,0,0,.15)}
.ct-hero{align-items:center}

/* face-centred portrait (user 2026-11-07) */
.ct-hero-photo-in{position:relative;display:block;width:100%;height:100%;border-radius:50%;overflow:hidden;border:.25cqw solid #fff;box-sizing:border-box;background:#fff}
.ct-hero-photo-in img{position:absolute;max-width:none;border:0;border-radius:0;object-fit:fill}

/* locked card: photo silhouette (user 2026-11-07) */.ct-hero-photo.is-sil{background:linear-gradient(160deg,#e9dde3,#f4eef1 60%,#e3e5ef);box-shadow:0 .4cqw 1cqw rgba(150,110,130,.18)}.ct-hero-photo.is-sil::after{display:none}.ct-hero-photo.is-sil .ct-hero-photo-in{background:linear-gradient(#fbf8fa,#f3eef2)}.ct-hero-photo-in canvas{position:absolute;max-width:none}

/* top bar alignment (user 2026-11-07 "상단 UI 상하 좌우 정렬"): one height for every pill, centred on one line, even gaps, stats pushed to the right edge without overflow */
.game-screen:not([data-screen^=hybrid]) .screen-top{--top-h:3cqw;align-items:center;gap:.8cqw;padding-left:3cqw;padding-right:3cqw}
.screen-top>.bgm-player,.screen-top>.city-pill,.screen-top .top-chip,.screen-top .life-chip,.top-talk-slot .mm-talk-hide{height:var(--top-h,3cqw);box-sizing:border-box;padding-top:0;padding-bottom:0;align-items:center}
.screen-top .screen-date.top-chips{gap:.8cqw}
.screen-top .top-chip{padding-left:.4cqw;padding-right:1cqw;font-size:1cqw}
.screen-top .top-chip .top-ico{width:2.2cqw;height:2.2cqw}
.screen-top .life-chip .top-ico{width:2.3cqw;height:2.3cqw}
.screen-top .life-chip.money .top-ico{width:2.6cqw;height:2.6cqw;margin:0}
.game-screen:not([data-screen^=hybrid]) .life-chips{margin-left:auto;width:auto;display:flex;gap:.8cqw}
.game-screen:not([data-screen^=hybrid]) .life-chip{width:11cqw;min-width:0}
.top-talk-slot{display:inline-flex;align-items:center;flex:none}
.game-screen:not(:has(.mm-talk)) .top-talk-slot{display:none}
.top-talk-slot .mm-talk-hide{position:static;display:inline-flex;gap:.3cqw;padding:0 1.1cqw;border-radius:2cqw;background:#fff;color:#7b5a68;font:700 1cqw/1 'Malgun Gothic',sans-serif;box-shadow:0 .25cqw .9cqw rgba(160,90,120,.18),inset 0 0 0 .14cqw #f6dfe7;-webkit-backdrop-filter:none;backdrop-filter:none}
.top-talk-slot .mm-talk-hide[aria-pressed=true]{background:#ffeef4;color:#c2457a}
/* stat chip text fit (user 2026-11-07 "스태미너·포만도 숫자가 삐져나감"): wider stamina / satiety / money, shorter BGM volume slider */
.game-screen:not([data-screen^=hybrid]) .life-chip.stamina,.game-screen:not([data-screen^=hybrid]) .life-chip.satiety{width:12.3cqw}
.game-screen:not([data-screen^=hybrid]) .life-chip.money{width:11.8cqw}
.game-screen:not([data-screen^=hybrid]) .screen-top,.screen-top .screen-date.top-chips,.game-screen:not([data-screen^=hybrid]) .life-chips{gap:.65cqw}
.screen-top .bgm-player .bgm-volume{width:4.4cqw}
.game-screen:not([data-screen^=hybrid]) .screen-top>.screen-date.top-chips{margin-left:0;margin-right:0}

/* known daily spots of a heroine on her contact card (pilot Maho, user 2026-11-10) */
.ct-memo{margin:.5cqw 0 0;padding:.5cqw .9cqw;border-radius:1cqw;background:#fff3f8;box-shadow:inset 0 0 0 .12cqw #ffc2d6;color:#7a5a6a;font-size:.9cqw;font-weight:700;line-height:1.5}

/* next chapter locked by charm, shown greyed on the contact card (maho pilot ③, user 2026-11-10) */
.ct-next.is-locked{margin:.5cqw 0 0;padding:.5cqw .9cqw;border-radius:1cqw;background:#f3f1f2;box-shadow:inset 0 0 0 .12cqw #ddd5d9;color:#8d8188;font-size:.9cqw;font-weight:700;line-height:1.5}

/* memories on the contact card (maho pilot ⑤, user 2026-11-10): only what happened, oldest first */
.ct-mem{margin:.7cqw 0 0;padding:.6cqw .9cqw;border-radius:1cqw;background:#fffaf0;box-shadow:inset 0 0 0 .12cqw #f3dcae}
.ct-mem h3{margin:0 0 .2cqw;font-size:.9cqw;color:#a2742a}
.ct-mem p{margin:0;font-size:.9cqw;line-height:1.6;color:#5c4a3a;font-weight:700}
.ct-mem-day{color:#a2742a;font-weight:700}
/* the contact card scrolls when locked lines, known places and memories do not fit (maho pilot ⑤) */
.ct-card{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#f3c6d6 transparent;overscroll-behavior:contain}

/* a text she sent first, on her contact card (maho pilot ④, user 2026-11-10) */
.ct-inbox{display:block;width:100%;margin:.5cqw 0 0;padding:.6cqw .9cqw;border:0;border-radius:1cqw;background:#fff;box-shadow:inset 0 0 0 .14cqw #e6d9f5;color:#6a4fa3;font:inherit;font-size:.95cqw;font-weight:700;text-align:left;cursor:pointer}
.ct-inbox.is-new{background:#f4ecff;box-shadow:inset 0 0 0 .16cqw #b79cf0;animation:ct-inbox-pulse 1.6s ease-in-out infinite}
.ct-inbox:hover,.ct-inbox:focus-visible{outline:none;box-shadow:inset 0 0 0 .2cqw #9b7be8}
@keyframes ct-inbox-pulse{50%{box-shadow:inset 0 0 0 .16cqw #b79cf0,0 0 0 .35cqw rgba(183,156,240,.25)}}
@media (prefers-reduced-motion:reduce){.ct-inbox.is-new{animation:none}}

/* contact card layout (user 2026-11-12 "UI 레이아웃 재정렬"): profile, facts, then call · text · album right below, then the note and her texts / plans — no empty gap in the middle */
.ct-card>.ct-hero{order:0}.ct-card>.ct-facts{order:1}.ct-card>.ct-actions-main{order:2;margin-top:.2cqw}.ct-card>.ct-note{order:3}.ct-card>*{order:4}
.ct-card>.ct-hero,.ct-card>.ct-facts,.ct-card>.ct-actions-main,.ct-card>.ct-note{flex:none}
.ct-actions-main .ct-btn.is-album{flex:.8;background:linear-gradient(135deg,#ffe3ee,#ffd0e2);color:#b04a74;box-shadow:inset 0 0 0 .14cqw #f6a9c6}
/* user 2026-11-13 "이런경우 하단 UI 버튼이 잘리지 않게": when a booking card and move buttons make the panel taller than
   the screen, the panel scrolls and the action area stays pinned at the bottom instead of being cut off. */
.lg-side{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#f1c9d8 transparent}
.lg-side>*{flex-shrink:0}
.lg-side>.lg-cta{position:sticky;bottom:-1.4cqw;margin-bottom:-1.4cqw;padding:.6cqw 0 1.4cqw;background:linear-gradient(rgba(255,254,250,0),rgba(255,254,250,.97) .6cqw);z-index:2}
