/* Chapter 2 city minimap: a cute, tilted 3D city board (dating-sim UI, pastel, rounded) with upright pins.
   The board is tilted with CSS; pins/decor live in a flat overlay positioned by the same projection (minimap-view.js). */
.game-screen[data-screen="city-minimap"]{background:radial-gradient(110% 90% at 28% 30%,#fff3f7 0%,#ffe9f0 38%,#e6f1ff 100%)}
.mm-stage{position:absolute;inset:11% 40% 13% 1%;display:grid;place-items:center}
.mm-board,.mm-pins{grid-area:1/1}
.mm-board{position:relative;width:38cqw;height:38cqw;transform:rotateZ(-38deg) rotateX(52deg) scaleY(1);transform:rotateX(52deg) rotateZ(-38deg);border-radius:3.2cqw;
 background:linear-gradient(135deg,#c9efd6,#b6e6c8);box-shadow:0 .6cqw 0 #9fd3b4,0 1.2cqw 0 #8dc6a4,0 2.2cqw 3cqw rgba(80,120,100,.35);animation:mm-in .55s cubic-bezier(.2,.9,.3,1.2) both}
.mm-ground{position:absolute;inset:5%;border-radius:2.4cqw;background:repeating-linear-gradient(0deg,transparent 0 3.2cqw,rgba(255,255,255,.6) 3.2cqw 3.4cqw),repeating-linear-gradient(90deg,transparent 0 3.2cqw,rgba(255,255,255,.6) 3.2cqw 3.4cqw),#dff5e6}
.mm-road{position:absolute;background:#fff4d6;box-shadow:inset 0 0 0 .25cqw #f5dfa4}
.mm-road-h{left:3%;right:3%;top:46%;height:8%;border-radius:2cqw}
.mm-road-v{top:3%;bottom:3%;left:46%;width:8%;border-radius:2cqw}
.mm-river{position:absolute;left:-3%;right:-3%;top:77%;height:8%;border-radius:3cqw;background:linear-gradient(90deg,#a9d6f5,#cfe8fb,#a9d6f5);transform:rotate(-8deg)}
.mm-pins{position:relative;width:100%;height:100%;pointer-events:none}
.mm-pins>*{pointer-events:auto}
.mm-plaque{position:absolute;left:50%;top:50%;transform:translate(-50%,-115%);display:grid;justify-items:center;padding:.4cqw 1.2cqw;border-radius:1.4cqw;background:#fffefa;
 box-shadow:0 .35cqw 0 #f5bfd1,0 .9cqw 1.4cqw rgba(170,90,125,.25);font-family:'Malgun Gothic',sans-serif;z-index:500;pointer-events:none}
.mm-plaque strong{font-size:1.45cqw;color:#7a3a59}.mm-plaque span{font-size:.85cqw;color:#a46a85}
/* Decor: tiny houses and trees standing on the board. */
.mm-deco{position:absolute;transform:translate(-50%,-100%);pointer-events:none}
.mm-house{width:2cqw;height:1.6cqw;background:#ffd9e4;border-radius:.3cqw;box-shadow:0 .25cqw 0 #f0b4c6}
.mm-house::before{content:'';position:absolute;left:-.2cqw;right:-.2cqw;top:-.9cqw;height:1cqw;background:#ff9fbd;clip-path:polygon(50% 0,100% 100%,0 100%)}
.mm-tree{width:1.5cqw;height:2cqw;background:radial-gradient(circle at 50% 35%,#8fd17a 0 .75cqw,transparent .78cqw),linear-gradient(#b08868,#b08868) 50% 100%/.3cqw .7cqw no-repeat}
/* Pins: upright balloon heads on a stem with a soft floor shadow. */
.mm-pin{position:absolute;width:0;height:0;padding:0;border:0;background:none;cursor:pointer}
.mm-pin::after{content:'';position:absolute;left:-1.1cqw;top:-.45cqw;width:2.2cqw;height:.9cqw;border-radius:50%;background:rgba(60,90,75,.22)}
.mm-pin-head{position:absolute;left:0;bottom:1.9cqw;translate:-50% 0;display:grid;place-items:center;width:2.8cqw;height:2.8cqw;border-radius:50%;background:#fffefa;color:var(--pin);
 box-shadow:0 0 0 .28cqw var(--pin),0 .4cqw 0 rgba(0,0,0,.12);transition:scale .18s,background .18s}
.mm-pin-stem{position:absolute;left:0;bottom:0;translate:-50% 0;width:.4cqw;height:2cqw;border-radius:.2cqw;background:var(--pin)}
.mm-pin.is-active .mm-pin-head{background:var(--pin);color:#fff;animation:mm-bob 1.6s ease-in-out infinite}
.mm-pin.is-soon .mm-pin-head{filter:saturate(.35);opacity:.8}
.mm-pin:not(.is-active):not(.is-here) .mm-pin-head{scale:.82}
.mm-pin.is-here .mm-pin-head{box-shadow:0 0 0 .3cqw #ff6f9f,0 0 0 .8cqw rgba(255,111,159,.25),0 .4cqw 0 rgba(0,0,0,.12)}
.mm-pin.is-here::before{content:'나';position:absolute;left:0;bottom:5.4cqw;translate:-50% 0;padding:.1cqw .5cqw;border-radius:1cqw;background:#ff6f9f;color:#fff;font:700 .8cqw 'Malgun Gothic',sans-serif}
.mm-pin:hover .mm-pin-head,.mm-pin:focus-visible .mm-pin-head{scale:1.12}
.mm-pin:focus-visible{outline:none}.mm-pin:focus-visible .mm-pin-head{box-shadow:0 0 0 .3cqw #326f86}
.mm-pin-label{position:absolute;left:0;bottom:5.2cqw;translate:-50% 0;white-space:nowrap;padding:.2cqw .7cqw;border-radius:1cqw;background:#fffefa;color:#4a3d44;font:600 .9cqw 'Malgun Gothic',sans-serif;box-shadow:0 .2cqw .6cqw rgba(120,80,100,.22)}
.mm-pin.is-here .mm-pin-label{bottom:7.2cqw}
/* Side panel */
.mm-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 .4cqw 0 #f6cfdc,0 1.2cqw 2.4cqw rgba(150,90,120,.18);font-family:'Malgun Gothic',sans-serif;min-height:0}
.mm-eyebrow{margin:0;font-size:.95cqw;color:#a46a85}
.mm-tabs{display:flex;flex-wrap:wrap;gap:.45cqw}
.mm-tab{display:inline-flex;align-items:center;gap:.35cqw;min-height:2.6cqw;padding:.3cqw .9cqw;border:0;border-radius:2cqw;background:#f7f0f3;color:#5b4a52;font:600 .95cqw 'Malgun Gothic',sans-serif;cursor:pointer;transition:transform .15s,background .15s}
.mm-tab svg{color:var(--pin)}
.mm-tab:hover{transform:translateY(-.15cqw)}
.mm-tab.is-current{background:var(--pin);color:#fff;box-shadow:0 .25cqw 0 rgba(0,0,0,.12)}.mm-tab.is-current svg{color:#fff}
.mm-tab.is-empty{opacity:.45}
.mm-tab:focus-visible,.mm-go:focus-visible{outline:.2cqw solid #326f86;outline-offset:.15cqw}
.mm-title{margin:.2cqw 0 0;font-size:1.7cqw;color:#4a3d44}
.mm-hint{margin:0;font-size:.95cqw;color:#8b7680}
.mm-list{display:grid;gap:.6cqw;overflow:auto;min-height:0;padding:.2cqw;align-content:start}
.mm-card{display:grid;grid-template-columns:2.8cqw 1fr auto;gap:.8cqw;align-items:center;padding:.7cqw .9cqw;border-radius:1.2cqw;background:#fff;box-shadow:inset 0 0 0 .15cqw #f1e6ea}
.mm-card.is-focus{box-shadow:inset 0 0 0 .2cqw var(--pin)}
.mm-card.is-here{background:#fff4f8;box-shadow:inset 0 0 0 .2cqw #ff9bbd}
.mm-card-icon{display:grid;place-items:center;width:2.8cqw;height:2.8cqw;border-radius:50%;background:var(--pin);color:#fff}
.mm-card-body{display:grid;gap:.15cqw;min-width:0}.mm-card-body strong{font-size:1.1cqw;color:#3f3338}.mm-card-body span{font-size:.9cqw;color:#8b7680}
.mm-card-actions{display:flex;gap:.35cqw;flex-wrap:wrap;justify-content:flex-end}
.mm-go{min-height:2.4cqw;padding:.3cqw 1cqw;border:0;border-radius:1.4cqw;background:#ff8fb3;color:#fff;font:700 .95cqw 'Malgun Gothic',sans-serif;box-shadow:0 .25cqw 0 #e46e97;cursor:pointer;transition:transform .12s}
.mm-go:hover{transform:translateY(-.12cqw)}.mm-go:active{transform:translateY(.12cqw);box-shadow:0 .1cqw 0 #e46e97}
.mm-go:disabled{background:#d9cfd3;box-shadow:0 .25cqw 0 #c4b8bd;cursor:not-allowed}
.mm-go-small{padding:.3cqw .7cqw;font-size:.85cqw}
.mm-soon{padding:.3cqw .8cqw;border-radius:1.4cqw;background:#f3eef0;color:#a0909a;font-size:.85cqw}
.mm-empty{color:#a0909a;font-size:1cqw}
.mm-foot{margin:0;font-size:.8cqw;color:#b09aa5}
@keyframes mm-bob{0%,100%{translate:-50% 0}50%{translate:-50% -.4cqw}}
@keyframes mm-in{from{opacity:0;transform:rotateX(70deg) rotateZ(-38deg) translateY(3cqw)}}
@media (prefers-reduced-motion:reduce){.mm-board,.mm-pin.is-active .mm-pin-head{animation:none}.mm-tab,.mm-go{transition:none}}
/* Real-map cities (pilot Fukuoka, OSM): the map fills the whole map area (flat, rounded, north up) and moves like a
   phone map. Image and pins move with GPU transforms set in minimap-view.js. */
.mm-stage-map{display:block}
.mm-map-board{position:absolute;inset:0;overflow:hidden;border-radius:2.2cqw;background:#fff6e6;cursor:grab;touch-action:none;user-select:none;outline:none;
 box-shadow:0 0 0 .35cqw #fffdf7,0 .6cqw 0 .35cqw #f3d9c0,0 1.6cqw 2.6cqw rgba(140,100,80,.25);}
.mm-map-board.is-intro{animation:mm-map-in .4s ease-out both}
.mm-map-board:focus-visible{box-shadow:0 0 0 .35cqw #326f86,0 1.6cqw 2.6cqw rgba(140,100,80,.25)}
.mm-map-board.is-dragging{cursor:grabbing}
.mm-map-img{position:absolute;left:0;top:0;max-width:none;transform-origin:0 0;pointer-events:none;user-select:none}
.mm-map-pins{position:absolute;inset:0;pointer-events:none}
.mm-map-pins .mm-pin{left:0;top:0;pointer-events:auto;transition:opacity .18s ease}
.mm-map-board.is-moving .mm-map-img,.mm-map-board.is-moving .mm-pin{will-change:transform}
.mm-map-pins .mm-pin.is-out{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,visibility 0s linear .18s}
.mm-map-board.is-dragging .mm-pin{pointer-events:none}
.mm-pin.is-edge .mm-pin-stem{display:none}.mm-pin.is-edge::after{display:none}
.mm-pin.is-edge .mm-pin-head{bottom:-1.4cqw;border-radius:1cqw;box-shadow:0 0 0 .28cqw var(--pin),0 0 0 .6cqw rgba(255,255,255,.7)}
.mm-pin.is-edge .mm-pin-label{bottom:2cqw;background:#fff8e6;color:#8a6420}
.mm-map-ui{position:absolute;right:1.2cqw;top:1.2cqw;display:grid;gap:.5cqw;z-index:2000}
.mm-zoom{width:3cqw;height:3cqw;border:0;border-radius:50%;background:#fffefa;color:#7a3a59;font:700 1.6cqw/1 'Malgun Gothic',sans-serif;box-shadow:0 .25cqw 0 #f5bfd1,0 .6cqw 1cqw rgba(170,90,125,.2);cursor:pointer;transition:transform .12s}
.mm-zoom-home{font-size:1cqw}.mm-zoom:disabled{opacity:.4;cursor:default}
.mm-zoom:hover:not(:disabled){transform:translateY(-.12cqw)}.mm-zoom:focus-visible{outline:.2cqw solid #326f86;outline-offset:.15cqw}
.mm-compass{position:absolute;left:1.2cqw;top:1.2cqw;display:grid;justify-items:center;width:3.2cqw;padding:.3cqw 0;border-radius:1.4cqw;background:#fffefa;box-shadow:0 .25cqw 0 #f5bfd1;z-index:2000;font:700 .9cqw 'Malgun Gothic',sans-serif;color:#ff6f9f;pointer-events:none}
.mm-compass i{width:0;height:0;border-left:.5cqw solid transparent;border-right:.5cqw solid transparent;border-bottom:1cqw solid #ff8fb3;order:-1}
.mm-credit{position:absolute;right:1cqw;bottom:.7cqw;margin:0;padding:.15cqw .6cqw;border-radius:1cqw;background:rgba(255,254,250,.85);color:#8b7680;font:.75cqw 'Malgun Gothic',sans-serif;z-index:2000;pointer-events:none}
@keyframes mm-map-in{from{opacity:0;transform:scale(.97)}}
@media (prefers-reduced-motion:reduce){.mm-map-board.is-intro{animation:none}.mm-map-pins .mm-pin{transition:none}}

/* City transport on the real map (user 2026-11-05): bus lines, bus stops, taxi stands, a clear "you are here", move buttons. */
.mm-map-lines{position:absolute;left:0;top:0;transform-origin:0 0;pointer-events:none;overflow:visible}
.mm-line{fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;opacity:.75;vector-effect:non-scaling-stroke}
.mm-stop,.mm-taxi{position:absolute;left:0;top:0;display:grid;place-items:center;transition:opacity .18s ease}
.mm-stop i{width:1cqw;height:1cqw;margin:-.5cqw 0 0 -.5cqw;border-radius:50%;background:#fff;box-shadow:0 0 0 .22cqw var(--c),0 .15cqw .3cqw rgba(0,0,0,.2)}
.mm-taxi i{display:grid;place-items:center;width:1.3cqw;height:1.3cqw;margin:-.65cqw 0 0 -.65cqw;border-radius:.35cqw;background:#ffd64d;color:#5a4400;font:800 .8cqw/1 'Malgun Gothic',sans-serif;font-style:normal;box-shadow:0 .15cqw .3cqw rgba(0,0,0,.25)}
.mm-stop b,.mm-taxi b{position:absolute;left:.9cqw;top:-.55cqw;display:none;white-space:nowrap;padding:.05cqw .45cqw;border-radius:.8cqw;background:rgba(255,254,250,.92);color:#5b4a52;font:600 .72cqw 'Malgun Gothic',sans-serif}
.mm-map-board.is-zoomed .mm-stop b,.mm-map-board.is-zoomed .mm-taxi b{display:block}
.mm-stop.is-out,.mm-taxi.is-out{opacity:0;visibility:hidden;transition:opacity .18s ease,visibility 0s linear .18s}
/* You are here: a big pulsing halo under the pin, always labelled, always on top. */
.mm-map-pins .mm-pin.is-here{z-index:5000!important}
.mm-here-pulse{position:absolute;left:0;top:0;width:5cqw;height:5cqw;margin:-2.5cqw 0 0 -2.5cqw;border-radius:50%;background:radial-gradient(circle,rgba(255,111,159,.45) 0 30%,rgba(255,111,159,.18) 31% 100%);animation:mm-here 1.8s ease-out infinite;pointer-events:none}
.mm-pin.is-here .mm-pin-head{width:3.4cqw;height:3.4cqw;background:#ff6f9f;color:#fff;box-shadow:0 0 0 .35cqw #fff,0 0 0 .7cqw #ff6f9f,0 .5cqw .8cqw rgba(200,60,110,.35)}
.mm-pin.is-here .mm-pin-stem{background:#ff6f9f;width:.5cqw;height:2.3cqw}
.mm-pin.is-here .mm-pin-label{bottom:6.6cqw;background:#ff6f9f;color:#fff;font-weight:700}
.mm-pin.is-here::before{bottom:9.2cqw}
@keyframes mm-here{0%{transform:scale(.45);opacity:1}100%{transform:scale(1.25);opacity:0}}
.mm-legend{position:absolute;left:1.2cqw;bottom:.8cqw;display:flex;gap:.8cqw;padding:.25cqw .8cqw;border-radius:1cqw;background:rgba(255,254,250,.9);font:600 .72cqw 'Malgun Gothic',sans-serif;color:#6b5a62;z-index:2000;pointer-events:none}
.mm-legend span::before{content:'';display:inline-block;vertical-align:-.1cqw;margin-right:.3cqw;width:.8cqw;height:.8cqw;border-radius:50%}
.mm-legend-here::before{background:#ff6f9f;box-shadow:0 0 0 .2cqw rgba(255,111,159,.3)}
.mm-legend-bus::before{background:#fff;box-shadow:0 0 0 .18cqw #8fc3ef}
.mm-legend-taxi::before{background:#ffd64d;border-radius:.2cqw!important}
/* Move buttons on facility cards. */
.mm-moves{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:.4cqw}
.mm-move{min-height:2.2cqw;padding:.25cqw .8cqw;border:0;border-radius:1.2cqw;font:700 .82cqw 'Malgun Gothic',sans-serif;cursor:pointer;transition:transform .12s}
.mm-move:hover:not(:disabled){transform:translateY(-.1cqw)}.mm-move:disabled{opacity:.45;cursor:not-allowed}
.mm-move:focus-visible{outline:.2cqw solid #326f86;outline-offset:.15cqw}
.mm-move-walk{background:#eef7ea;color:#3f6b33;box-shadow:inset 0 0 0 .12cqw #bfe0b3}
.mm-move-bus{background:#e8f3fd;color:#2f5f86;box-shadow:inset 0 0 0 .12cqw #a9d0f0}
.mm-move-taxi{background:#fff6d6;color:#7a5b00;box-shadow:inset 0 0 0 .12cqw #f3d57a}
@media (prefers-reduced-motion:reduce){.mm-here-pulse{animation:none}}

.mm-card-body .mm-lodge{color:#5f7fa8;font-weight:600}
.mm-card-body .mm-ja{font-weight:500;font-size:.8cqw;color:#a0909a;margin-left:.3cqw}
/* Label declutter: stacked labels get a thin leader, crowded ones hide until their pin is hovered or focused. */
.mm-pin-label{transition:transform .15s ease}
.mm-pin-label.is-stacked{box-shadow:0 .2cqw .6cqw rgba(120,80,100,.22),0 0 0 .1cqw rgba(255,143,179,.5)}
.mm-pin.is-label-hidden .mm-pin-label{opacity:0;pointer-events:none}
.mm-pin.is-label-hidden:hover .mm-pin-label,.mm-pin.is-label-hidden:focus-visible .mm-pin-label{opacity:1;z-index:10}
.mm-map-pins .mm-pin:hover{z-index:6000!important}
/* 근교 spot cards (user 2026-11-06): representative image on the left, chips for distance/time/stamina/hours. */
.mm-spot-card{grid-template-columns:7.2cqw 1fr;grid-template-rows:auto auto;align-items:start;gap:.5cqw .9cqw;padding:.8cqw}
.mm-spot-card .mm-card-actions{grid-column:2;justify-content:flex-start}
.mm-spot-card .mm-moves{grid-column:1/-1}
.mm-spot-thumb{position:relative;grid-row:1/3;margin:0;width:7.2cqw;aspect-ratio:1;border-radius:1.2cqw;overflow:hidden;
 background:linear-gradient(145deg,hsl(var(--h) 85% 90%),hsl(calc(var(--h) + 40) 80% 82%));box-shadow:inset 0 0 0 .12cqw rgba(255,255,255,.7),0 .25cqw .6cqw rgba(150,90,120,.18)}
.mm-spot-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.mm-spot-ph-icon{position:absolute;left:50%;top:38%;translate:-50% -50%;display:grid;place-items:center;width:3cqw;height:3cqw;border-radius:50%;background:rgba(255,255,255,.85);color:hsl(var(--h) 55% 50%)}
.mm-spot-ph-ja{position:absolute;left:.4cqw;right:.4cqw;bottom:1.7cqw;text-align:center;font:700 .78cqw/1.2 'Yu Gothic','Meiryo',sans-serif;color:hsl(var(--h) 40% 35%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mm-spot-fee{position:absolute;left:.35cqw;bottom:.35cqw;padding:.05cqw .45cqw;border-radius:.8cqw;background:rgba(255,254,250,.94);color:#c2457a;font:700 .75cqw 'Malgun Gothic',sans-serif}
.mm-spot-body{gap:.25cqw}.mm-spot-body strong{font-size:1.15cqw}
.mm-spot-ja{font-size:.78cqw;color:#a0909a}
.mm-spot-chips{display:flex;flex-wrap:wrap;gap:.3cqw}
.mm-spot-chips span{padding:.05cqw .5cqw;border-radius:.9cqw;background:#f4f0ff;color:#5f5a86;font-size:.75cqw}
.mm-spot-chips .is-plus{background:#eaf7e6;color:#3f6b33}.mm-spot-chips .is-minus{background:#ffeef3;color:#b0456f}
.mm-spot-note{font-size:.82cqw;color:#7a6a72}
.mm-spot-here{font-size:.8cqw;color:#ff6f9f;font-weight:700}
.mm-spot-card.is-here .mm-spot-thumb{box-shadow:0 0 0 .2cqw #ff9bbd,0 .25cqw .6cqw rgba(150,90,120,.18)}
.mm-spot-credit{font-size:.66cqw;color:#a99aa2;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mm-spot-credit:hover{color:#7a6a72;text-decoration:underline}
.mm-spot-thumb img{filter:saturate(1.05)}

/* Inside a shop (user 2026-11-06): a small cosy room drawn with CSS; menus come with the food chapter. */
.mm-inside-room{position:relative;margin:0;height:13cqw;border-radius:1.6cqw;overflow:hidden;background:linear-gradient(#fff3e3 0 62%,#e9c9a3 62% 100%);box-shadow:inset 0 0 0 .15cqw #f1dcc4}
.mm-inside-cafe{background:linear-gradient(#f3ecff 0 62%,#d9c3a8 62% 100%)}
.mm-inside-sign{position:absolute;left:50%;top:.9cqw;translate:-50% 0;padding:.25cqw 1cqw;border-radius:1cqw;background:#fffefa;color:#7a3a59;font:700 .95cqw 'Malgun Gothic',sans-serif;box-shadow:0 .2cqw 0 #f5bfd1;white-space:nowrap}
.mm-inside-counter{position:absolute;left:8%;right:8%;bottom:28%;height:16%;border-radius:.6cqw;background:#c99a6e;box-shadow:0 .3cqw 0 #a87b52}
.mm-inside-cafe .mm-inside-counter{background:#b9a0d9;box-shadow:0 .3cqw 0 #9a80bd}
.mm-inside-lamp{position:absolute;top:0;left:30%;width:.2cqw;height:3.4cqw;background:#c9b8a8}
.mm-inside-lamp::after{content:'';position:absolute;left:-1cqw;bottom:-1cqw;width:2.2cqw;height:1.2cqw;border-radius:1.2cqw 1.2cqw .3cqw .3cqw;background:#ffd27a;box-shadow:0 .6cqw 1.6cqw rgba(255,200,90,.7)}
.mm-inside-lamp.is-2{left:68%}
.mm-inside-table{position:absolute;bottom:6%;left:14%;width:22%;height:12%;border-radius:50%;background:#f4e1c8;box-shadow:0 .2cqw 0 #d8bf9f}
.mm-inside-table.is-2{left:62%}
.mm-inside-line{margin:0;font-size:1cqw;color:#7a6a72}
.mm-inside-menu{display:grid;gap:.3cqw;padding:.9cqw 1.1cqw;border-radius:1.2cqw;background:#f7f0f3;font-size:.9cqw;color:#8b7680}.mm-inside-menu strong{color:#4a3d44;font-size:1.05cqw}
.mm-inside-exit{margin-top:auto;align-self:stretch;min-height:3cqw}
.mm-inside-photo{height:auto;aspect-ratio:16/8;background:#2b2228}
.mm-inside-photo img{width:100%;height:100%;object-fit:cover;object-position:60% 40%;display:block}
.mm-inside-photo .mm-inside-sign{top:auto;bottom:.8cqw}
/* Inside photo uses the original wide room frame (user 2026-11-06: "처음의 가로구조"): same height as the drawn room. */
.mm-inside-photo{height:13cqw;aspect-ratio:auto}
.mm-inside-photo img{object-position:62% 32%}

/* Shop screen (user 2026-11-06, reference: interior on top, MENU cards, cancel/confirm): uses the whole content area. */
.shop-screen{position:absolute;inset:11% 3% 13% 3%;display:grid;grid-template-columns:42% 1fr;grid-template-rows:1fr auto;gap:1.2cqw 1.6cqw;font-family:'Malgun Gothic',sans-serif}
.game-screen[data-screen="city-minimap"] .shop-screen ~ *{z-index:1}
.shop-hero{display:flex;flex-direction:column;gap:.8cqw;min-height:0}
.shop-photo{position:relative;flex:1;margin:0;border-radius:2cqw;overflow:hidden;background:#2b2228;box-shadow:0 .5cqw 0 #e9c9ab,0 1.4cqw 2.4cqw rgba(140,90,60,.25)}
.shop-photo img{width:100%;height:100%;object-fit:cover;object-position:62% 35%;display:block}
.shop-photo-ph{display:grid;place-items:center;height:100%;color:#fff;font-size:2cqw}
.shop-photo figcaption{position:absolute;left:0;right:0;bottom:0;display:grid;gap:.2cqw;padding:2.6cqw 1.4cqw 1.1cqw;background:linear-gradient(transparent,rgba(30,20,25,.72));color:#fff}
.shop-kind{font-size:.85cqw;opacity:.85}.shop-photo figcaption strong{font-size:1.9cqw}.shop-photo figcaption span:last-child{font-size:.95cqw;opacity:.9}
.shop-stats{display:flex;gap:.5cqw;flex-wrap:wrap}.shop-stats span{padding:.35cqw .9cqw;border-radius:1.2cqw;background:#fffefa;color:#5b4a52;font-size:.95cqw;box-shadow:0 .2cqw 0 #f1e2d2}
.shop-stats .is-cash{background:#fff4d6;color:#8a6420;font-weight:700}
.shop-menu{position:relative;display:flex;flex-direction:column;gap:1cqw;padding:2.4cqw 1.6cqw 1.2cqw;border-radius:2cqw;background:linear-gradient(#fffaf2,#fff3e6);box-shadow:inset 0 0 0 .2cqw #f0d9bf,0 .5cqw 0 #e9c9ab;min-height:0}
.shop-ribbon{position:absolute;left:50%;top:-1.1cqw;translate:-50% 0;padding:.35cqw 3cqw;border-radius:.8cqw;background:linear-gradient(#ff9d6b,#f07a45);color:#fff;font:800 1.2cqw/1.2 'Malgun Gothic',sans-serif;letter-spacing:.2cqw;box-shadow:0 .3cqw 0 #c95a2c}
.shop-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.9cqw;min-height:0}
.shop-card{position:relative;display:grid;grid-template-columns:3.6cqw 1fr;grid-template-rows:auto auto auto 1fr;gap:.15cqw .7cqw;align-items:start;text-align:left;padding:.8cqw;border:0;border-radius:1.3cqw;background:#fffefa;box-shadow:inset 0 0 0 .15cqw #efdcc6,0 .25cqw 0 #e8d1b6;cursor:pointer;font-family:inherit;transition:transform .12s,box-shadow .12s}
.shop-card:hover{transform:translateY(-.15cqw)}
.shop-card.is-picked{background:#fff1f5;box-shadow:inset 0 0 0 .22cqw #ff8fb3,0 .25cqw 0 #f3b6c9}
.shop-plate{grid-row:1/4;display:grid;place-items:center;width:3.6cqw;height:3.6cqw;border-radius:50%;background:radial-gradient(circle,#fff 55%,#f3e4d2 56%);font-size:1.9cqw;box-shadow:0 .2cqw .4cqw rgba(120,80,40,.18)}
.shop-name{font-size:1cqw;color:#3f3338;line-height:1.25}
.shop-eff{display:flex;gap:.3cqw;flex-wrap:wrap;font-size:.75cqw}.shop-eff span{padding:0 .4cqw;border-radius:.7cqw}.shop-eff .is-sat{background:#fff0e0;color:#b0612a}.shop-eff .is-sta{background:#eaf7e6;color:#3f6b33}
.shop-note{grid-column:1/-1;font-size:.72cqw;color:#9a8a92;line-height:1.3}
.shop-price{grid-column:1/-1;justify-self:end;align-self:end;padding:.15cqw .8cqw;border-radius:1cqw;background:linear-gradient(#ffb36b,#f08a3c);color:#fff;font-weight:800;font-size:.9cqw;box-shadow:0 .2cqw 0 #c96a22}
.shop-check{position:absolute;right:.6cqw;top:.6cqw;display:none;place-items:center;width:1.4cqw;height:1.4cqw;border-radius:50%;background:#ff6f9f;color:#fff;font-size:.8cqw;font-weight:800}.shop-card.is-picked .shop-check{display:grid}
.shop-card:focus-visible,.shop-cancel:focus-visible,.shop-confirm:focus-visible{outline:.2cqw solid #326f86;outline-offset:.15cqw}
.shop-dots{display:flex;justify-content:center;gap:.4cqw}.shop-dots i{width:.6cqw;height:.6cqw;border-radius:50%;background:#e8d6c2}.shop-dots i.is-on{width:1.6cqw;border-radius:.4cqw;background:#f08a3c}
.shop-bar{grid-column:1/-1;display:flex;align-items:center;gap:1cqw;padding:.8cqw 1.2cqw;border-radius:1.6cqw;background:#fffefa;box-shadow:0 .3cqw 0 #f1e2d2}
.shop-total{flex:1;margin:0;font-size:1cqw;color:#5b4a52}
.shop-cancel,.shop-confirm{min-height:3cqw;padding:.3cqw 2.2cqw;border:0;border-radius:1.6cqw;font:700 1.1cqw 'Malgun Gothic',sans-serif;cursor:pointer}
.shop-cancel{background:#f3eef0;color:#6b5a62;box-shadow:0 .25cqw 0 #d9cfd3}
.shop-confirm{background:linear-gradient(120deg,#ff8fb3,#ff6f9f);color:#fff;box-shadow:0 .3cqw 0 #e45a8a}.shop-confirm:disabled{background:#d9cfd3;box-shadow:0 .3cqw 0 #c4b8bd;cursor:not-allowed}
/* Menu cards fill the panel height (no empty space under the grid). */
.shop-grid{flex:1;grid-auto-rows:1fr}
.shop-card{grid-template-rows:auto auto 1fr auto;padding:1cqw}
.shop-plate{width:4.4cqw;height:4.4cqw;font-size:2.4cqw}.shop-card{grid-template-columns:4.4cqw 1fr}
.shop-name{font-size:1.1cqw}.shop-eff{font-size:.82cqw}.shop-note{font-size:.8cqw}.shop-price{font-size:1cqw;padding:.2cqw 1cqw}
/* 알바 cards reuse the spot layout; the pay badge is a little wider. */
.mm-job-card .mm-spot-fee{background:rgba(234,244,255,.95);color:#2f5f86}
.mm-job-card .mm-spot-thumb img{object-position:50% 40%}

/* Restaurant/cafe cards use the shop interior image (user 2026-11-06): keep the master in frame. */
.mm-spot-thumb img.is-inside{object-position:62% 35%}
.mm-spot-chips .is-enter{background:#fff1f5;color:#c2477a;font-weight:700}
.shop-photo figcaption .shop-credit{font-size:.7cqw;opacity:.75}
.shop-eff .is-later{background:#eef0fb;color:#5a63a6}
.shop-card.is-locked{cursor:not-allowed;filter:grayscale(.55);opacity:.62}.shop-card.is-locked:hover{transform:none}
.shop-card.is-locked .shop-price{background:#c9bfc4;box-shadow:none}
.shop-eff .is-charm{background:#ffe3ec;color:#c2477a}
/* shop category tabs beside the MENU ribbon (user 2026-11-06) */
.shop-tabs{position:absolute;right:1.4cqw;top:-1.15cqw;display:flex;gap:.35cqw;padding:.25cqw;border-radius:1.2cqw;background:#fff7ee;box-shadow:inset 0 0 0 .15cqw #f0d9bf,0 .25cqw 0 #e9c9ab}
.shop-tab{min-width:5cqw;padding:.25cqw 1cqw;border:0;border-radius:1cqw;background:transparent;color:#a0785a;font:800 .95cqw 'Malgun Gothic',sans-serif;cursor:pointer}
.shop-tab.is-on{background:linear-gradient(#ff9d6b,#f07a45);color:#fff;box-shadow:0 .2cqw 0 #c95a2c}
.shop-tab:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
.shop-eff .is-soc{background:#e8edfb;color:#4d5fa8}.shop-eff .is-mat{background:#e6f4f7;color:#2f7486;font-weight:700}
.shop-empty{grid-column:1/-1;align-self:center;justify-self:center;max-width:70%;margin:0;padding:1.2cqw 1.6cqw;border-radius:1.2cqw;background:#fff7ee;box-shadow:inset 0 0 0 .12cqw #f0d9bf;color:#a0785a;font-size:.95cqw;text-align:center;line-height:1.5}
/* 8-item tabs (gift 8종, GIFT-001): 4×2 compact cards */
.shop-grid.is-8{grid-template-columns:repeat(4,1fr);gap:.7cqw}.shop-grid.is-8 .shop-card{grid-template-columns:2.8cqw 1fr;padding:.6cqw}.shop-grid.is-8 .shop-plate{width:2.8cqw;height:2.8cqw;font-size:1.5cqw}.shop-grid.is-8 .shop-name{font-size:.88cqw}
.shop-eff .is-gift{background:#fff1f5;color:#c2477a;font-weight:700}
/* first-meeting candidate (MEET-004, user 2026-11-06): heroine silhouette inside the round head of the map pin */
.mm-pin.is-meet .mm-pin-head,.mm-pin.is-meet.is-active .mm-pin-head{position:absolute;overflow:hidden;background:#fff;box-shadow:0 0 0 .22cqw #ff4f8b} /* same pin, same size: only the round head shows the heroine silhouette (user 2026-11-06), back to normal after the meeting */
.mm-pin-meet{position:absolute;width:142%;height:142%;left:-20%;top:-1%;max-width:none;pointer-events:none;filter:grayscale(1) brightness(.85) contrast(8)} /* display only: pink pin art → black silhouette on white (user 2026-11-06) */
.mm-pin-meet-heart{color:#ff4f8b;font-weight:900}
.mm-pin.is-meet .mm-pin-stem{z-index:1}.mm-pin.is-meet .mm-pin-head{z-index:2} /* stem stays under the head */
.mm-pin-meet-tag{position:absolute;left:50%;bottom:calc(100% + 4px);translate:-50% 0;white-space:nowrap;padding:1px 8px;border-radius:999px;background:#ff4f8b;color:#fff;font:800 11px/1.4 'Malgun Gothic',sans-serif;box-shadow:0 0 0 2px #fff;pointer-events:none}
.mm-pin.is-meet.is-active .mm-pin-meet-tag{display:none}


.mm-card.is-meet{box-shadow:inset 0 0 0 .2cqw #ff6f9f,0 .3cqw 0 #f3b6c9}
.mm-meet-badge{position:absolute;right:.6cqw;top:.6cqw;z-index:2;padding:.1cqw .6cqw;border-radius:999px;background:#ff4f8b;color:#fff;font:800 .75cqw/1.4 'Malgun Gothic',sans-serif}
.mm-card{position:relative}

.mm-zoom-meet{background:#ff4f8b!important;color:#fff!important;font-weight:900;box-shadow:0 0 0 3px rgba(255,79,139,.25)!important;animation:mm-meet-pulse-btn 1.8s ease-in-out infinite}@keyframes mm-meet-pulse-btn{50%{box-shadow:0 0 0 7px rgba(255,79,139,.12)}}@media (prefers-reduced-motion:reduce){.mm-zoom-meet{animation:none}}
/* in-map first meeting talk (user 2026-11-06) */
.mm-talk{position:absolute;inset:0;z-index:5000;overflow:hidden;border-radius:inherit;background:#2b2228;cursor:default}
.mm-talk-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.05)}
.mm-talk-shade{position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(20,12,16,.55))}
.mm-talk-portrait{position:absolute;left:4%;right:auto;bottom:0;height:92%;width:auto;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(0,0,0,.35));animation:mm-talk-in .45s ease-out}
.mm-talk-box{position:absolute;left:3%;right:3%;bottom:4%;padding:1cqw 1.4cqw;border-radius:1.4cqw;background:rgba(255,254,250,.58);-webkit-backdrop-filter:blur(.35cqw);backdrop-filter:blur(.35cqw);box-shadow:0 .4cqw 1.2cqw rgba(0,0,0,.18),inset 0 0 0 .08cqw rgba(255,255,255,.6);color:#3f3338;font-family:'Malgun Gothic',sans-serif}
.mm-talk-place{margin:0 0 .2cqw;font-size:.75cqw;color:#a08b8f}
.mm-talk-name{display:inline-block;margin-bottom:.3cqw;padding:.1cqw .7cqw;border-radius:1cqw;background:#ff8fb3;color:#fff;font-size:.9cqw}
.mm-talk-text{margin:0;font-size:1.15cqw;line-height:1.6}
.mm-talk-box.is-narr .mm-talk-text{font-style:italic;color:#5b4a52}
.mm-talk-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5cqw;margin-top:.6cqw}
.mm-talk-next{padding:.3cqw 1.2cqw;border:0;border-radius:1.2cqw;background:#ff6f9f;color:#fff;font:800 .9cqw 'Malgun Gothic',sans-serif;cursor:pointer;box-shadow:0 .2cqw 0 #e45a8a}
.mm-talk-choice{flex:1 1 100%;text-align:left;padding:.5cqw 1cqw;border:0;border-radius:1cqw;background:rgba(255,241,245,.62);color:#3f3338;font:700 .95cqw 'Malgun Gothic',sans-serif;cursor:pointer;box-shadow:inset 0 0 0 .15cqw #ff8fb3}
.mm-talk-choice:hover{background:rgba(255,227,236,.9)}
.mm-talk-next:focus-visible,.mm-talk-choice:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
@keyframes mm-talk-in{from{opacity:0;translate:0 3%}to{opacity:1;translate:0 0}}
@media (prefers-reduced-motion:reduce){.mm-talk-portrait{animation:none}}
/* in-map talk (user 2026-11-06): full body on her first line only, then a bust shot (same approved cutout, display crop) */
.mm-talk-portrait.is-bust{top:3%;bottom:auto;right:auto;left:30%;translate:-50% 0;height:200%;animation:mm-talk-bust .35s ease-out}
@keyframes mm-talk-bust{from{opacity:.4}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.mm-talk-portrait.is-bust{animation:none}}

/* gym inside (user 2026-11-06) */
.mm-gym .mm-inside-room{position:relative}
.mm-gym-credit{position:absolute;left:0;right:0;bottom:0;padding:.1cqw .5cqw;background:rgba(0,0,0,.45);color:#fff;font-size:.6cqw}
.mm-gym-passes{display:grid;grid-template-columns:repeat(3,1fr);gap:.5cqw}
.mm-gym-pass{display:grid;gap:.15cqw;justify-items:center;padding:.6cqw .4cqw;border:0;border-radius:1.2cqw;background:#fff;box-shadow:inset 0 0 0 .15cqw #cfe7d7,0 .25cqw 0 #cfe7d7;color:#2f6b4a;font-family:'Malgun Gothic',sans-serif;cursor:pointer;transition:transform .12s}
.mm-gym-pass:hover:not(:disabled){transform:translateY(-.15cqw)}
.mm-gym-pass strong{font-size:1.05cqw}.mm-gym-price{font-size:.95cqw;font-weight:800;color:#3f3338}.mm-gym-eff{font-size:.68cqw;color:#7b6a70;text-align:center;line-height:1.35}
.mm-gym-pass small{font-size:.68cqw;color:#c0526f}
.mm-gym-pass:disabled{opacity:.5;cursor:not-allowed}
.mm-gym-pass:focus-visible{outline:.2cqw solid #326f86;outline-offset:.1cqw}
/* first-meeting pin = the heroine's approved SD as a black silhouette (user 2026-11-06 "SD 히로인 실루엣이면 귀엽겠다") */
.mm-pin-meet{left:-9%;top:6%;width:118%;height:118%;object-fit:contain;object-position:50% 100%;filter:brightness(0)}

/* booked lodging on the minimap (user 2026-11-06) */
.mm-pin.is-booked .mm-pin-head{box-shadow:0 0 0 .25cqw #8f6fe0,0 0 0 .55cqw rgba(143,111,224,.25)}
.mm-card.is-booked{box-shadow:inset 0 0 0 .2cqw #8f6fe0,0 .3cqw 0 #d6c8f7}
.mm-stay-badge{background:#8f6fe0}
/* real approved bust image (not a crop) for heroines without a scene-layers cutout */
.mm-talk-portrait.is-bustimg{top:4%;bottom:auto;right:auto;left:30%;translate:-50% 0;height:118%;animation:mm-talk-bust .35s ease-out}

/* approved seated guitar art (user 2026-11-07): sits on the ground at the left, a little smaller than a standing full body */
.mm-talk-portrait.is-seated{height:82%;left:3%}
.mm-talk-portrait.is-seated.is-still{animation:none}

/* mystical first appearance (user 2026-11-07): blurred bright silhouette clears over 2.4 s, warm aura + light motes behind */
.mm-talk-portrait.is-seated.is-reveal{animation:mm-seat-reveal 2.4s cubic-bezier(.2,.6,.2,1) both}
@keyframes mm-seat-reveal{0%{opacity:0;transform:translateY(10px) scale(.985);filter:blur(16px) brightness(2) saturate(.3) drop-shadow(0 6px 14px rgba(0,0,0,0))}
 40%{opacity:.7;filter:blur(6px) brightness(1.45) saturate(.75) drop-shadow(0 6px 14px rgba(0,0,0,.15))}
 100%{opacity:1;transform:none;filter:blur(0) brightness(1) saturate(1) drop-shadow(0 6px 14px rgba(0,0,0,.35))}}
.mm-talk-portrait.is-seated.is-look{animation:mm-seat-look .8s ease-out both}
@keyframes mm-seat-look{from{opacity:.35;filter:blur(3px) drop-shadow(0 6px 14px rgba(0,0,0,.2))}to{opacity:1;filter:blur(0) drop-shadow(0 6px 14px rgba(0,0,0,.35))}}
.mm-talk-aura{position:absolute;left:0;bottom:0;width:46%;height:92%;pointer-events:none;opacity:0;
 background:radial-gradient(ellipse 52% 46% at 42% 58%,rgba(255,246,226,.9),rgba(255,214,228,.4) 46%,transparent 72%);mix-blend-mode:screen;animation:mm-aura 3.4s ease-out both}
@keyframes mm-aura{0%{opacity:0;transform:scale(.8)}30%{opacity:1;transform:scale(1)}100%{opacity:.18;transform:scale(1.06)}}
.mm-aura-dot{position:absolute;left:var(--x);bottom:12%;width:var(--s);height:var(--s);border-radius:50%;background:rgba(255,250,236,.95);box-shadow:0 0 10px 2px rgba(255,236,200,1);opacity:0;animation:mm-mote 3.2s var(--d) ease-out both}
@keyframes mm-mote{0%{opacity:0;transform:translateY(0)}25%{opacity:1}100%{opacity:0;transform:translate(14px,-180px)}}
@media (prefers-reduced-motion:reduce){.mm-talk-portrait.is-seated.is-reveal,.mm-talk-portrait.is-seated.is-look{animation:mm-talk-fade .6s ease-out both}.mm-talk-aura,.mm-aura-dot{display:none}}
@keyframes mm-talk-fade{from{opacity:0}to{opacity:1}}

/* 2nd/3rd meetings until contact (user 2026-11-07): same mystical reveal for her first full body and the first bust */
.mm-talk-portrait.is-reveal-full{animation:mm-seat-reveal 2.4s cubic-bezier(.2,.6,.2,1) both}
.mm-talk-portrait.is-reveal-bust{animation:mm-bust-reveal 1.6s cubic-bezier(.2,.6,.2,1) both}
@keyframes mm-bust-reveal{0%{opacity:0;filter:blur(12px) brightness(1.8) saturate(.4) drop-shadow(0 6px 14px rgba(0,0,0,0))}45%{opacity:.75;filter:blur(4px) brightness(1.3) saturate(.8) drop-shadow(0 6px 14px rgba(0,0,0,.15))}100%{opacity:1;filter:blur(0) brightness(1) saturate(1) drop-shadow(0 6px 14px rgba(0,0,0,.35))}}
@media (prefers-reduced-motion:reduce){.mm-talk-portrait.is-reveal-full,.mm-talk-portrait.is-reveal-bust{animation:mm-talk-fade .6s ease-out both}}

/* gig poster (user 2026-11-07): approved art A + flyer layout; taped slightly tilted on the left of the talk panel */
.mm-poster{position:absolute;left:5%;top:5%;height:72%;aspect-ratio:2/3;margin:0;transform:rotate(-2.5deg);box-shadow:0 10px 24px rgba(0,0,0,.45);background:#111;container-type:size;overflow:visible}
.mm-poster.is-new{animation:mm-poster-in .9s cubic-bezier(.2,.7,.3,1) both}
@keyframes mm-poster-in{from{opacity:0;transform:rotate(-6deg) translateY(12px) scale(.96)}to{opacity:1;transform:rotate(-2.5deg)}}
.mm-poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.mm-poster-top{position:absolute;left:0;right:0;top:0;height:18%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4cqh;color:#fff;text-align:center}
.mm-poster-kicker{font:800 3.2cqh/1 'Malgun Gothic',sans-serif;letter-spacing:.5em;color:#ffb3cf;padding-left:.5em}
.mm-poster-venue{font:900 7.2cqh/1 'Malgun Gothic',sans-serif;letter-spacing:.08em;text-shadow:0 0 1.4cqh rgba(255,90,160,.75)}
.mm-poster-sub{font:600 2.2cqh/1 'Malgun Gothic',sans-serif;color:#d9c9d2;letter-spacing:.12em}
.mm-poster-bottom{position:absolute;left:0;right:0;bottom:0;height:22%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.7cqh;color:#fff;text-align:center}
.mm-poster-act{font:900 4.6cqh/1.05 'Malgun Gothic',sans-serif}.mm-poster-act em{font-style:normal;font-weight:600;font-size:.62em;color:#ffcf8a;margin-left:.2em}
.mm-poster-date{font:900 5.6cqh/1 'Malgun Gothic',sans-serif;color:#ffd84d;letter-spacing:.06em}
.mm-poster-time,.mm-poster-ticket{font:700 2.4cqh/1.1 'Malgun Gothic',sans-serif;color:#f1e6ec;letter-spacing:.06em}
.mm-poster-tape{position:absolute;top:-2.2cqh;width:24cqw;height:4.6cqh;background:rgba(255,246,214,.78);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.mm-poster-tape.is-l{left:-4cqw;transform:rotate(-24deg)}.mm-poster-tape.is-r{right:-4cqw;transform:rotate(22deg)}
/* approved stage art B as the scene during the gig lines */
.mm-talk-portrait.is-scene{left:0;right:0;top:0;bottom:0;width:100%;height:100%;object-fit:cover;filter:none;animation:mm-scene-in 1.4s ease-out both}
.mm-talk-portrait.is-scene.is-still{animation:none}
@keyframes mm-scene-in{from{opacity:0;filter:brightness(.3) blur(4px)}to{opacity:1;filter:none}}
@media (prefers-reduced-motion:reduce){.mm-poster.is-new,.mm-talk-portrait.is-scene{animation:none}}
.mm-poster-venue.is-ja{font-family:'Yu Gothic','Meiryo','Malgun Gothic',sans-serif;font-size:6.2cqh;letter-spacing:.04em}.mm-poster-act,.mm-poster-ticket,.mm-poster-sub{font-family:'Yu Gothic','Meiryo','Malgun Gothic',sans-serif}

/* user 2026-11-07: the talk box fills the whole bottom band of the map panel, edge to edge (the panel clips the rounded corners) */
.mm-talk-box{left:0;right:0;bottom:0;min-height:28%;box-sizing:border-box;padding:1.3cqw 2.2cqw 1.1cqw;border-radius:0;display:flex;flex-direction:column;justify-content:center;gap:.3cqw;background:rgba(255,253,250,.66);box-shadow:0 -.5cqw 1.6cqw rgba(0,0,0,.18),inset 0 .1cqw 0 rgba(255,255,255,.75)}
.mm-talk-box .mm-talk-actions{align-self:flex-end}
.mm-talk-box .mm-talk-name,.mm-talk-box .mm-talk-place{align-self:flex-start}
/* user 2026-11-07: round only the top corners of the full-width talk box */
.mm-talk-box{border-radius:1.8cqw 1.8cqw 0 0}

/* mirrored map copies around the real map (user 2026-11-07: no empty edge when the map bounces) */
.mm-map-mirror{opacity:.92}

/* standing busking bust, wide 3:2 art (user 2026-11-07): guitar neck fully in frame */.mm-talk-portrait.is-seated[src*="h11-busk"]{height:96%;left:-3%}

/* text box hide toggle (user 2026-11-07) */.mm-talk-hide{position:absolute;top:1.2cqw;right:1.2cqw;z-index:6;padding:.45cqw .9cqw;border:0;border-radius:99px;background:rgba(255,255,255,.78);color:#6b4b58;font:700 .85cqw/1 inherit;cursor:pointer;box-shadow:0 .2cqw .6cqw rgba(0,0,0,.18);-webkit-backdrop-filter:blur(.3cqw);backdrop-filter:blur(.3cqw)}.mm-talk-hide:hover{background:#fff}.mm-talk.is-ui-off .mm-talk-box,.mm-talk.is-ui-off .mm-talk-shade{opacity:0;pointer-events:none}.mm-talk-box,.mm-talk-shade{transition:opacity .25s ease}.mm-talk.is-ui-off{cursor:zoom-out}

/* route travel animation (user 2026-11-07) */
.mm-trip-line{fill:none;stroke:#ff5c93;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.9;filter:drop-shadow(0 0 3px rgba(255,92,147,.55));transition:opacity .6s ease}
.mm-trip-line.is-walk{stroke-dasharray:2 9;stroke-width:5}.mm-trip-line.is-bus{stroke:#7b6cff;filter:drop-shadow(0 0 3px rgba(123,108,255,.55))}.mm-trip-line.is-taxi{stroke:#f5a623;filter:drop-shadow(0 0 3px rgba(245,166,35,.55))}
.mm-trip-line.is-fade{opacity:0}
.mm-trip-dot{position:absolute;left:0;top:0;z-index:7;pointer-events:none;will-change:transform}
.mm-trip-dot i{display:grid;place-items:center;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;background:#fff;font-style:normal;font-size:17px;box-shadow:0 0 0 3px #ff5c93,0 4px 10px rgba(0,0,0,.25)}
.mm-trip-dot.is-bus i{box-shadow:0 0 0 3px #7b6cff,0 4px 10px rgba(0,0,0,.25)}.mm-trip-dot.is-taxi i{box-shadow:0 0 0 3px #f5a623,0 4px 10px rgba(0,0,0,.25)}
.mm-trip-dot.is-arrived i{animation:mm-trip-hop .55s ease-out both}
@keyframes mm-trip-hop{0%{transform:translateY(0)}40%{transform:translateY(-10px)}100%{transform:translateY(0);opacity:0}}
.mm-stage-map .is-tripping .mm-pin.is-here{opacity:.25;transition:opacity .3s}
.mm-talk.is-trip-wait{opacity:0;pointer-events:none}.mm-talk{transition:opacity .35s ease}
@media (prefers-reduced-motion:reduce){.mm-trip-line,.mm-trip-dot{display:none}}

/* tapped pin → its card in the list (user 2026-11-07) */.mm-card.is-focus{box-shadow:inset 0 0 0 .25cqw var(--pin,#ff8db3),0 .3cqw 1cqw rgba(160,90,120,.18)}.mm-card.is-flash{animation:mm-card-flash 1.1s ease-out}@keyframes mm-card-flash{0%,40%{background:#fff0f6}100%{background:inherit}}@media (prefers-reduced-motion:reduce){.mm-card.is-flash{animation:none}}

/* slot-machine reel while the list spins to a tapped pin (user 2026-11-07) */.mm-list.is-spinning{scroll-behavior:auto!important;pointer-events:none}.mm-list.is-spinning .mm-card{filter:blur(var(--spin-blur,0px))}
.mm-trip-line.is-ferry{stroke:#2f9fd8;stroke-dasharray:10 6;filter:drop-shadow(0 0 3px rgba(47,159,216,.55))}.mm-trip-dot.is-ferry i{box-shadow:0 0 0 3px #2f9fd8,0 4px 10px rgba(0,0,0,.25)}.mm-move-ferry{background:#e3f3fc}/* ferry (user 2026-11-09) */

/* daily routine (pilot Maho, user 2026-11-10): she is at this place now */
.mm-card.has-daily{box-shadow:0 0 0 2px #ff8fb3 inset}
.mm-daily-note{margin:4px 0 0;font-size:.82em;font-weight:700;color:#e0457b}
.mm-go.mm-daily{background:#ff6f9f;color:#fff;border-color:#ff6f9f}

/* meeting scene + ring menu (pilot Maho ④, user 2026-11-10; approved look docs/phase-11/bust-menu-mockup-v1) */
.mm-talk.mm-meet .mm-talk-portrait.is-click{cursor:pointer;pointer-events:auto}
.mm-talk.mm-meet.is-quiet .mm-talk-portrait{animation:none!important}
.mm-meet-note{display:inline-block;margin-left:.6em;padding:0 .7em;border-radius:999px;background:#fff0f5;color:#e0457b;font-size:.8em;font-weight:700;vertical-align:middle}
.mm-ring{position:absolute;inset:0;z-index:6;pointer-events:none}
.mm-ring-arc{position:absolute;inset:0;pointer-events:none}
.mm-ring-line{position:absolute;left:0;top:0;overflow:visible;opacity:0;transition:opacity .35s ease .05s;pointer-events:none}
.mm-ring-arc.is-open .mm-ring-line{opacity:1}
.mm-ring-line path{fill:none;stroke:#ff8fb3;stroke-width:3;stroke-dasharray:2 9;stroke-linecap:round;filter:drop-shadow(0 0 1.5px #fff)}
.mm-orb{position:absolute;left:var(--ox);top:var(--oy);width:var(--s);height:var(--s);margin:calc(var(--s)/-2) 0 0 calc(var(--s)/-2);padding:0;border-radius:50%;border:2.5px solid #ffc2d6;background:#fff;color:#ff6f9f;box-shadow:0 4px 12px rgba(255,111,159,.25);display:grid;place-items:center;font-size:calc(var(--s)*.42);cursor:pointer;pointer-events:auto;touch-action:none;
 transform:translate(var(--fx),var(--fy)) scale(.2);opacity:0;transition:transform .42s cubic-bezier(.2,1.35,.4,1) var(--d),opacity .25s ease var(--d),box-shadow .15s,background .15s}
.mm-ring-arc.is-open .mm-orb{transform:translate(0,0) scale(1);opacity:var(--fade,1)}
.mm-ring-arc .mm-orb.is-off{opacity:0!important;pointer-events:none}
.mm-orb:hover,.mm-orb:focus-visible{outline:none;border-color:#ff8fb3;box-shadow:0 0 0 4px rgba(255,143,179,.25),0 6px 14px rgba(255,111,159,.28)}
.mm-orb.is-on{background:#ff8fb3;border-color:#fff;color:#fff}
.mm-orb.is-on .mm-orb-ic svg [fill="#fff"]{fill:#ff8fb3}
.mm-orb[aria-disabled=true]{background:#f6f2f4;border-color:#e3d8de;color:#b9aab2;box-shadow:none}
.mm-orb[aria-disabled=true]::after{content:'🔒';position:absolute;right:-12%;bottom:-12%;font-size:calc(var(--s)*.24);background:#fff;border-radius:50%;width:38%;height:38%;display:grid;place-items:center;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.mm-orb-ic{display:grid;place-items:center;width:58%;height:58%;line-height:1}
.mm-orb-ic svg{width:100%;height:100%}
.mm-orb-lb{position:absolute;top:calc(100% + 2px);left:50%;transform:translateX(-50%);white-space:nowrap;font-size:max(9px,calc(var(--s)*.2));font-weight:700;color:#3a2a33;background:rgba(255,255,255,.9);border-radius:999px;padding:0 .6em}
.mm-orb-ct{position:absolute;right:-12%;top:-12%;font-size:max(8px,calc(var(--s)*.2));font-weight:700;background:#ff6f9f;color:#fff;border-radius:999px;padding:0 .45em}
.mm-ring-title{position:absolute;right:2%;top:2%;margin:0;font-size:max(9px,.9cqw);color:#8a6f7c;background:rgba(255,255,255,.9);border-radius:999px;padding:.1em .8em}
.mm-ring-hint{position:absolute;right:2%;top:9%;margin:0;font-size:max(9px,.8cqw);color:#e0457b;background:rgba(255,255,255,.9);border-radius:999px;padding:.1em .8em}
@media (prefers-reduced-motion:reduce){.mm-orb{transition:none}}

/* beach date panel (pilot Maho ⑧): no location photo approved yet → a plain sea-and-sand backdrop drawn with CSS */
.mm-talk.mm-beach{background:linear-gradient(180deg,#9fd8f5 0%,#c9ecfb 38%,#5fb6d9 39%,#8fd0e6 58%,#f3e2b8 59%,#ecd6a0 100%)}
.mm-talk.mm-beach .mm-talk-shade{opacity:.25}
.mm-talk.mm-beach.mm-npc{background:radial-gradient(120% 90% at 50% 20%,#fbf3f6 0%,#efe1e8 55%,#dccbd5 100%)}/* special NPC scenes without a place photo: soft studio backdrop, not the beach */
.mm-talk-next.mm-beach-pick{background:#fff;color:#e0457b;box-shadow:inset 0 0 0 2px #ffc2d6}
.mm-talk.mm-beach .mm-talk-portrait.is-bustimg{top:auto;bottom:0;height:98%}

/* beach date with the approved photos: the photo replaces the drawn backdrop; credit in the corner (CC BY / CC BY-SA) */
.mm-talk.mm-beach.has-photo{background:#1f2a33}
.mm-talk.mm-beach.has-photo .mm-talk-shade{opacity:.35}
.mm-beach-credit{position:absolute;right:1.2%;top:1.2%;margin:0;z-index:3;font-size:max(9px,.75cqw);color:#fff;background:rgba(0,0,0,.45);border-radius:999px;padding:.1em .8em;pointer-events:none}
