.companion-portrait.companion-bust{object-fit:contain;background:none;border:0;border-radius:0;image-rendering:auto}.companion-art>.companion-bust{height:100%;width:100%;object-position:center top}.novel-cast>.companion-bust{height:100%;width:100%;max-width:650px;filter:drop-shadow(0 8px 12px #17130b44)}
.setup-pixel-preview{display:flex;justify-content:center;align-items:end;background:#282932;padding:12px}.setup-pixel-preview .cinema-actor{height:150px;width:auto}.modular-player{image-rendering:auto}.cinema-peer{image-rendering:auto}
#lookpreview{display:block}.setup-preview-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(90px,.65fr);gap:20px;align-items:end;background:#202a2d;padding:18px}.setup-preview-pair figure{margin:0;min-width:0;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:end}.setup-preview-pair .setup-portrait{height:260px;max-width:100%;width:auto;aspect-ratio:324/485;object-fit:contain;border:0;border-radius:0;background:none;image-rendering:auto}.setup-preview-pair .cinema-actor{position:static;width:auto;height:160px;max-width:100%}.setup-preview-pair figcaption{font-size:12px;color:#c9c6b9;margin-top:12px}.introform #lookpreview .appearance-editor{margin-top:16px;clear:both;max-width:100%;width:100%}.introform #lookpreview .appearance-editor>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.introform #lookpreview .appearance-editor label{display:grid;gap:5px;min-width:0;font-size:13px}.introform #lookpreview .appearance-editor select{width:100%;min-width:0;font-size:14px;min-height:42px;padding:8px}.setup-portrait,.portrait-large{image-rendering:auto}
@media(max-width:700px){.setup-preview-pair{gap:14px;padding:12px;position:sticky;top:0;z-index:3}.setup-preview-pair .setup-portrait{height:230px}.setup-preview-pair .cinema-actor{height:140px}.introform #lookpreview .appearance-editor>div{grid-template-columns:repeat(2,minmax(0,1fr))}}
.story-cinema{position:relative;isolation:isolate;min-height:100svh;background:#101217;color:#f7e9cf;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;font-family:'Malgun Gothic','Apple SD Gothic Neo',sans-serif}.story-cinema.cinema-cut{animation:cinema-enter .6s ease-out}.cinema-words p{animation:line-in .25s ease-out}@keyframes line-in{from{opacity:0;transform:translateY(3px)}}
.cinema-landscape{position:absolute;top:0;left:50%;height:calc(100% - 180px);aspect-ratio:836/470;transform:translateX(calc(var(--focus,50)*-1%));z-index:-1;background-image:url('./assets/story-spaces-v17.png');background-size:200% 200%;background-repeat:no-repeat;image-rendering:pixelated;-webkit-mask-image:linear-gradient(90deg,#0000,#000 3%,#000 97%,#0000);mask-image:linear-gradient(90deg,#0000,#000 3%,#000 97%,#0000)}.story-cinema:before{content:'';position:absolute;inset:-24px;z-index:-2;background:url('./assets/story-spaces-v17.png') no-repeat;background-size:200% 200%;filter:blur(10px) brightness(.42)}.cinema-gate:before{background-position:left top}.cinema-classroom:before{background-position:right top}.cinema-ground:before{background-position:left bottom}.cinema-locker:before{background-position:right bottom}.cinema-clouds,.cinema-fore{position:absolute;inset:0;background-size:200% 200%;image-rendering:pixelated;pointer-events:none}.cinema-fore{background-image:url('./assets/story-fore-v17.png');background-repeat:no-repeat}.cinema-clouds{background-image:url('./assets/story-clouds-v17.png');background-repeat:repeat-x;animation:cloud-drift 420s linear infinite}.cinema-ground .cinema-clouds{background-position-y:100%}.cinema-classroom .cinema-clouds,.cinema-locker .cinema-clouds{display:none}@keyframes cloud-drift{to{background-position-x:200%}}.cinema-gate .cinema-landscape,.cinema-gate .cinema-fore{background-position:left top}.cinema-classroom .cinema-landscape,.cinema-classroom .cinema-fore{background-position:right top}.cinema-ground .cinema-landscape,.cinema-ground .cinema-fore{background-position:left bottom}.cinema-locker .cinema-landscape,.cinema-locker .cinema-fore{background-position:right bottom}.cinema-landscape:after{content:'';position:absolute;inset:0;background:linear-gradient(#090f2022,transparent 45%,#10121788)}
.cinema-top{position:absolute;top:max(24px,env(safe-area-inset-top));left:4%;right:4%;display:flex;justify-content:space-between;align-items:start;text-shadow:0 2px 4px #0009}.cinema-top small{font-size:11px;letter-spacing:1.5px;color:#f6d6ad}.cinema-top h1{font-size:20px;font-weight:500;line-height:1.5;margin:7px 0}.cinema-top button{background:#11192199;color:#f7e9cf;border:1px solid #d9c6a555;font-size:12px;border-radius:0}.cinema-caption{padding:13px 5%;font-size:11px;letter-spacing:1px;text-shadow:0 2px 3px #000;pointer-events:none}
.cinema-dialogue{background:#101217;min-height:180px;position:relative;padding:27px max(5%,calc((100% - 1050px)/2));display:grid;grid-template-columns:1fr;gap:15px;border-top:1px solid #ccb58966;box-shadow:0 -16px 40px #10121733}.cinema-dialogue.has-face{grid-template-columns:88px 1fr}.cinema-face-frame{width:88px;height:110px;overflow:hidden;align-self:start;background:#22242a}.cinema-face-frame svg{width:100%;height:100%;object-fit:cover;display:block}.cinema-words b{display:table;font:500 .72rem/1.4 Pretendard,'Noto Sans KR','Apple SD Gothic Neo','Malgun Gothic',sans-serif;color:#ffffffeb;letter-spacing:.02em;text-shadow:0 1px 3px #0009;border-bottom:1px solid #ffffff73;padding:0 14px 10px;margin:0 0 14px 2px}.cinema-words p{font:400 .92rem/1.75 'Noto Serif KR','Noto Serif CJK KR','Apple Myungjo','AppleMyungjo','Nanum Myeongjo',Batang,serif;color:#fff;letter-spacing:-.01em;text-shadow:0 1px 3px #000b;word-break:keep-all;white-space:pre-wrap;margin:0;max-width:900px}.cinema-dialogue.narration .cinema-words p{color:#f0eef5f5}.cinema-hud{opacity:0;animation:hud-fade 5.5s ease forwards}@keyframes hud-fade{0%{opacity:0}10%,60%{opacity:1}to{opacity:0}}
.cinema-replies{grid-column:1/-1;display:grid;gap:8px}.cinema-replies button{color:#f4e6d0;background:#1c2028;border:1px solid #786b56;border-radius:0;padding:12px 16px;line-height:1.6;text-align:left;font-size:15px;display:flex;justify-content:space-between;gap:18px;min-height:46px}.cinema-replies button:hover,.cinema-replies button:focus-visible{background:#39372f;border-color:#e4be82}.cinema-replies.single{display:flex;justify-content:flex-end}.cinema-replies.single button{border:0;background:transparent;min-width:100px;padding:3px 0 3px 20px;color:#e4be82;font-size:13px}
.cinema-gate{--floor:.84;--actor-h:.34;--focus:57}.cinema-classroom{--floor:.93;--actor-h:.64;--focus:52}.cinema-ground{--floor:.86;--actor-h:.49;--focus:67}.cinema-locker{--floor:.92;--actor-h:.6;--focus:56}.cinema-actors{position:absolute;left:calc(var(--focus,50)*1%);transform:translateX(-50%);bottom:calc((1 - var(--floor,.9))*100%);height:calc(var(--actor-h,.46)*var(--crowd,1)*100%);display:flex;align-items:flex-end;gap:1.6vmin;z-index:1}.modular-player,.cinema-peer{aspect-ratio:var(--ar,190/550);object-fit:cover;object-position:0 0}.cinema-peer-jieun{--ar:170/550}.cinema-peer-seora{--ar:160/550}.cinema-actors .cinema-actor{animation:actor-idle 2.6s steps(1,end) infinite}@keyframes actor-idle{50%{object-position:100% 0}}.cinema-actors .cinema-actor:not(:first-child){transform:scaleX(-1)}.cinema-drift{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2}.cinema-drift i{position:absolute;top:-4%;width:6px;height:5px;background:#f4b6c8;box-shadow:2px 2px 0 #d98aa4;animation-name:drift-fall,drift-sway;animation-timing-function:linear,ease-in-out;animation-iteration-count:infinite;animation-direction:normal,alternate}.cinema-leaf i{width:7px;height:4px;background:#6d5d2c;box-shadow:2px 1px 0 #4b4120}@keyframes drift-fall{to{top:104%}}.cinema-mote i{top:auto;bottom:8%;width:3px;height:3px;background:#ffe2ad;box-shadow:none;opacity:.55;animation-name:drift-rise,drift-sway}@keyframes drift-rise{to{bottom:92%;opacity:0}}.cinema-light{position:absolute;inset:0;overflow:hidden;pointer-events:none}.cinema-light:after{content:'';position:absolute;inset:0;background:var(--glow,none);animation:glow-breathe 7s ease-in-out infinite alternate}@keyframes glow-breathe{from{opacity:.45}to{opacity:1}}.cinema-gate{--glow:radial-gradient(circle at 78% 25%,#ffc27a6e 0,#ff9a5a26 11%,#0000 24%)}.cinema-classroom{--glow:radial-gradient(ellipse 34% 26% at 63% 40%,#ffb46a40,#0000)}.cinema-ground{--glow:radial-gradient(ellipse 20% 8% at 45% 37%,#ffd38a4a,#0000),radial-gradient(circle at 9% 9%,#fff3c055 0,#0000 5%)}.cinema-ground .cinema-light:after{animation:glow-twinkle 3.4s steps(1,end) infinite}@keyframes glow-twinkle{0%,100%{opacity:.85}30%{opacity:1}55%{opacity:.68}80%{opacity:.95}}.cinema-locker{--glow:radial-gradient(ellipse 30% 14% at 61% 4%,#fff6d455,#0000)}.cinema-locker .cinema-light:after{animation:tube-flicker 7s steps(1,end) infinite}@keyframes tube-flicker{0%,61%,64%,100%{opacity:1}62%{opacity:.25}63%{opacity:.7}}@keyframes drift-sway{from{transform:translateX(-16px) rotate(-25deg)}to{transform:translateX(16px) rotate(30deg)}}.cinema-actors.has-speaker .cinema-actor:not(.is-speaking){filter:brightness(.6) drop-shadow(0 4px 2px #0005)}.cinema-actor{height:100%;width:auto;flex:none;filter:drop-shadow(0 4px 2px #0005)}.cinema-actor>rect,.cinema-actor>ellipse{display:none}.cinema-other{height:103%}
@keyframes cinema-enter{from{opacity:.2}to{opacity:1}}
@media(max-width:700px){.cinema-landscape{top:4%;height:60%;-webkit-mask-image:linear-gradient(#0000,#000 7%);mask-image:linear-gradient(#0000,#000 7%)}.cinema-top{left:20px;right:18px}.cinema-top h1{font-size:18px}.cinema-top small{font-size:10px}.cinema-caption{position:absolute;top:calc(max(24px,env(safe-area-inset-top)) + 66px);left:0;padding:0 20px}.story-cinema:after{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(to top,#06060ccc 0,#06060cb3 18%,#06060c7a 34%,#06060c3d 50%,#06060c12 64%,#0000 74%)}.cinema-top,.cinema-caption{z-index:1}.cinema-dialogue{position:absolute;z-index:1;left:0;right:0;top:61%;bottom:0;overflow:auto;align-content:start;padding:0 32px max(18px,env(safe-area-inset-bottom));gap:12px;background:none;border-top:0;box-shadow:none}.cinema-dialogue.has-face{grid-template-columns:57px 1fr;column-gap:13px}.cinema-face-frame{width:57px;height:78px}.cinema-replies button{font-size:14px;padding:10px 12px}}
@media(max-height:550px) and (min-width:701px){.cinema-landscape{height:calc(100% - 140px)}.cinema-dialogue{min-height:140px;padding-top:15px;padding-bottom:12px}.cinema-words p{font-size:15px}.cinema-face-frame{height:80px;width:65px}.cinema-dialogue.has-face{grid-template-columns:65px 1fr}}
@media(prefers-reduced-motion:reduce){.cinema-hud{opacity:1}.story-cinema,.cinema-hud,.cinema-words p,.cinema-actors .cinema-actor,.cinema-light:after,.cinema-clouds{animation:none}.cinema-drift{display:none}}
.room-home,.activity-scene{position:relative;isolation:isolate;color:#fff2df;background:#423c3a url('./assets/bedroom-v9.png') center/cover no-repeat;overflow:hidden}.room-home{height:calc(100svh - 200px);min-height:560px;margin-bottom:24px}.room-shadow{position:absolute;inset:0;z-index:-1;background:linear-gradient(#10182188,transparent 40%,#101821dd)}.room-home>header,.activity-scene>header{position:absolute;top:32px;left:32px;right:32px;text-shadow:0 2px 5px #0009}.room-home h1,.activity-scene h1{font-size:30px;line-height:1.4;font-weight:500;margin:8px 0}.room-home header>small,.activity-scene header>small{color:#efd0a2;font-size:13px}.room-home header>span{font-size:13px}.room-exit{position:absolute;right:24px;top:28px;background:#162330cc;color:#fff3de;border-color:#fff5}.room-hotspots{position:absolute;bottom:40px;left:26px;right:26px;display:flex;gap:12px}.room-hotspots>button{flex:1;text-align:left;border:1px solid #d9c49b77;border-radius:3px;background:#152433e8;color:#fff2de;padding:16px;display:grid;gap:7px}.room-hotspots small{color:#e2b77b}.room-hotspots b{font-weight:500;font-size:17px}.room-hotspots span{font-size:12px;color:#c4c3bf}.room-pending{position:absolute;bottom:4px;left:26px;right:26px;color:#edcca0;font-size:12px;background:none;border:0;padding:0}.activity-scene{height:100svh;min-height:600px;animation:scene-arrive .55s ease-out}.activity-train{background-image:url('./assets/school-scenes-v6.png');background-position:left top;background-size:200% 200%}.activity-video{background-image:url('./assets/football-spaces-v6.png');background-position:right top;background-size:200% 200%}.activity-complete{position:absolute;bottom:36px;left:max(24px,calc((100% - 780px)/2));right:max(24px,calc((100% - 780px)/2));padding:24px;background:#142331ed;border:1px solid #d9c49b88}.activity-stamp{font-size:12px;letter-spacing:2px;color:#edc68f}.activity-complete>p{font-size:17px;line-height:1.9;margin:14px 0 20px}.activity-metrics{display:grid;grid-template-columns:1.5fr .8fr 1fr;gap:14px;border-top:1px solid #fff3;padding-top:18px}.activity-metrics>div{display:grid;gap:7px}.activity-metrics small{font-size:12px;color:#bfc3c7}.activity-metrics b{font-size:20px;font-weight:500}.activity-metrics span{font-size:11px;color:#e2bd85}.activity-next{width:100%;margin-top:22px;display:flex;justify-content:space-between;background:#d3b17e;color:#15202e;border:0;border-radius:2px;padding:14px;font-size:15px}.activity-endnote{display:block;text-align:right;font-size:11px;margin-top:10px;color:#c5c0b7}.activity-complete>.activity-effect{font-size:12px;color:#e2bd85;margin:14px 0 0}@keyframes scene-arrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.activity-scene{animation:none}}
@media(max-width:700px){.room-home{min-height:590px;height:calc(100svh - 160px);margin:-12px -14px 16px}.room-home>header{left:22px;top:22px}.room-home h1{font-size:28px}.room-exit{top:20px;right:15px;font-size:12px;padding:9px}.room-hotspots{bottom:52px;left:16px;right:16px;flex-direction:column;gap:8px}.room-hotspots>button{padding:13px 16px;grid-template-columns:1fr;gap:4px;background:#142331e8}.room-hotspots b{font-size:16px}.room-hotspots small{font-size:11px}.room-pending{bottom:12px;left:18px;right:18px}.activity-scene{min-height:550px}.activity-scene>header{top:30px;left:22px;right:22px}.activity-scene h1{font-size:25px;max-width:280px}.activity-complete{left:13px;right:13px;bottom:max(20px,env(safe-area-inset-bottom));padding:18px}.activity-complete>p{font-size:15px;line-height:1.8}.activity-metrics{gap:9px}.activity-metrics b{font-size:17px}.activity-metrics small{font-size:11px}.activity-metrics span{font-size:10px}.novel-cast>.companion-bust{max-width:520px}}
.heroine-scene{height:100svh;min-height:600px;position:relative;isolation:isolate;overflow:hidden;background-color:#3b4346;background-image:url('./assets/school-scenes-v6.png');background-size:200% 200%;background-repeat:no-repeat;color:#fff1dc}.heroine-scene>header{position:absolute;top:24px;left:30px;right:30px;display:flex;justify-content:space-between;align-items:start;z-index:2;text-shadow:0 2px 5px #0009}.heroine-scene header small{font-size:12px;color:#e9cc9d}.heroine-scene h1{font-size:28px;font-weight:500;margin-top:8px}.heroine-scene header button{background:#172a38b8;border:1px solid #fff5;color:#f9ead6;font-size:12px}.heroine-cast{position:absolute;bottom:0;left:6%;height:90%;width:48%;display:flex;justify-content:center;align-items:end}.heroine-cast>.companion-bust{width:100%;height:100%;object-fit:contain;object-position:bottom;filter:drop-shadow(0 8px 14px #151b2344)}.heroine-panel{position:absolute;right:5%;bottom:40px;width:42%;padding:24px;background:#142331ed;border:1px solid #d9c49b88}.heroine-speaker{display:flex;justify-content:space-between;align-items:center;gap:12px}.heroine-speaker b{font-size:14px;font-weight:500;color:#edc58d}.heroine-speaker>span{font-size:11px;color:#b9bec3}.heroine-panel>p{font-size:17px;line-height:1.85;margin:16px 0 18px}.heroine-choices>button{display:flex;align-items:center;gap:13px;width:100%;padding:12px 0;border:0;border-radius:0;border-top:1px solid #fff2;background:transparent;color:#fff0d9;text-align:left;font-size:14px;line-height:1.45}.heroine-choices>button>span:last-child{margin-left:auto;font-size:20px;color:#dfbd85}.heroine-choice-number{font-size:11px;color:#e6c794}.heroine-choices small{display:block;font-size:10px;color:#b8c1c6;margin-top:3px}.heroine-choices>button:hover{color:#ffe3aa;background:#ffffff08}.novel-shell:has(.activity-scene)>.main{padding:0!important;min-height:0}.novel-shell:has(.activity-scene) .content{height:100svh}.heroine-scene.scene-park,.heroine-scene.scene-kitchen,.heroine-scene.scene-cafe,.heroine-scene.scene-gallery{background-image:url('./assets/date-venues-v6.png')}
@media(max-width:700px){.heroine-scene{min-height:560px;background-size:auto 200%;background-position-x:11%}.heroine-scene>header{left:20px;right:20px;top:23px}.heroine-scene h1{font-size:25px}.heroine-cast{height:88%;bottom:5%;left:0;width:100%}.heroine-panel{left:13px;right:13px;bottom:18px;width:auto;padding:17px 18px}.heroine-panel>p{font-size:15px;line-height:1.75;margin:13px 0 14px}.heroine-choices>button{font-size:13px;padding:10px 0;gap:10px}.heroine-scene.scene-cafe,.heroine-scene.scene-gallery{background-position-x:88%}}
@media(max-height:700px) and (max-width:700px){.heroine-scene>header{top:14px}.heroine-scene h1{font-size:22px}.heroine-panel{bottom:10px;padding:13px 16px}.heroine-panel>p{font-size:14px;margin:10px 0}.heroine-choices>button{padding:7px 0;font-size:12px}.heroine-choices small{font-size:10px}.heroine-cast{height:88%;bottom:4%}}
.activity-date{background-image:url('./assets/date-venues-v6.png');background-size:200% 200%;background-position:left top}.activity-person{position:absolute;top:110px;bottom:23%;left:20%;right:20%;display:flex;align-items:end;justify-content:center}.activity-person>.companion-bust{height:100%;width:100%;object-fit:contain}.activity-date .activity-complete{background:#142331f5}@media(max-width:700px){.activity-person{top:140px;bottom:20%;left:0;right:0}}
.heroine-choices[data-choice-count="6"]{max-height:248px;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#d9bd8f #142331;scrollbar-width:thin}.heroine-more-hint{display:block;text-align:right;font-size:10px;color:#c6b38f;margin-top:8px}@media(max-width:700px){.heroine-scene .heroine-cast{bottom:14%;height:82%}.heroine-choices[data-choice-count="6"]{max-height:218px}}@media(max-height:700px) and (max-width:700px){.heroine-choices[data-choice-count="6"]{max-height:175px}}

.activity-possession{background-image:url('./assets/residences-v6.png');background-size:200% 200%;background-position:left top}.activity-possession.possession-house{background-position:right top}.activity-possession.possession-villa{background-position:left bottom}.activity-possession.possession-island,.activity-possession.possession-trip{background-position:right bottom}.activity-owned-art{position:absolute;top:18%;left:8%;right:8%;height:40%;display:flex;justify-content:center;align-items:center}.activity-owned-art>.possession-art{max-width:720px;width:80%;height:100%;filter:drop-shadow(0 12px 14px #0008)}.activity-owned-art>.residence-character{height:100%;max-width:60%;object-fit:contain}.activity-possession .activity-complete{background:#142331f5}.activity-possession .activity-metrics b{font-size:20px}@media(max-width:700px){.activity-owned-art{top:20%;left:0;right:0;height:35%}.activity-owned-art>.possession-art{width:95%}.activity-possession .activity-metrics b{font-size:16px}}
/* v17 pro-era and adult places: other 2x2 sheets (768x512 panels). floor/actor-h from each painting's props at eye-level perspective (prolocker benches+lockers, dorm desk+chair, park bench+river horizon, gallery ottoman); cafe/kitchen are provisional because tables cover the floor. bus/press are scenery-only. */
.cinema-actors{left:calc(var(--stand,var(--focus,50))*1%)}
.cinema-prolocker,.cinema-dorm,.cinema-bus,.cinema-press{--sheet:url('./assets/football-spaces-v6.png')}
.cinema-park,.cinema-cafe,.cinema-kitchen,.cinema-gallery{--sheet:url('./assets/date-venues-v6.png')}
.cinema-prolocker .cinema-landscape,.cinema-dorm .cinema-landscape,.cinema-bus .cinema-landscape,.cinema-press .cinema-landscape,.cinema-park .cinema-landscape,.cinema-cafe .cinema-landscape,.cinema-kitchen .cinema-landscape,.cinema-gallery .cinema-landscape{background-image:var(--sheet);aspect-ratio:768/512}
.story-cinema.cinema-prolocker:before,.story-cinema.cinema-dorm:before,.story-cinema.cinema-bus:before,.story-cinema.cinema-press:before,.story-cinema.cinema-park:before,.story-cinema.cinema-cafe:before,.story-cinema.cinema-kitchen:before,.story-cinema.cinema-gallery:before{background-image:var(--sheet)}
.cinema-prolocker .cinema-fore,.cinema-dorm .cinema-fore,.cinema-bus .cinema-fore,.cinema-press .cinema-fore,.cinema-park .cinema-fore,.cinema-cafe .cinema-fore,.cinema-kitchen .cinema-fore,.cinema-gallery .cinema-fore,.cinema-prolocker .cinema-clouds,.cinema-dorm .cinema-clouds,.cinema-bus .cinema-clouds,.cinema-press .cinema-clouds,.cinema-park .cinema-clouds,.cinema-cafe .cinema-clouds,.cinema-kitchen .cinema-clouds,.cinema-gallery .cinema-clouds,.cinema-bus .cinema-actors,.cinema-press .cinema-actors{display:none}
.cinema-prolocker .cinema-landscape,.cinema-prolocker:before,.cinema-park .cinema-landscape,.cinema-park:before{background-position:left top}
.cinema-dorm .cinema-landscape,.cinema-dorm:before,.cinema-cafe .cinema-landscape,.cinema-cafe:before{background-position:right top}
.cinema-bus .cinema-landscape,.cinema-bus:before,.cinema-kitchen .cinema-landscape,.cinema-kitchen:before{background-position:left bottom}
.cinema-press .cinema-landscape,.cinema-press:before,.cinema-gallery .cinema-landscape,.cinema-gallery:before{background-position:right bottom}
.cinema-prolocker{--floor:.8;--actor-h:.58;--focus:48;--glow:radial-gradient(ellipse 40% 12% at 55% 22%,#ffc27a40,#0000)}
.cinema-dorm{--floor:.8;--actor-h:.58;--focus:50;--glow:radial-gradient(circle at 71% 38%,#ffb85a66 0,#ff9a4a22 9%,#0000 20%)}
.cinema-bus{--focus:55}
.cinema-press{--focus:50;--glow:radial-gradient(ellipse 12% 18% at 25% 14%,#cfe0ff30,#0000),radial-gradient(ellipse 12% 18% at 50% 14%,#cfe0ff30,#0000),radial-gradient(ellipse 12% 18% at 76% 14%,#cfe0ff30,#0000)}
.cinema-park{--floor:.84;--actor-h:.44;--focus:45;--stand:40;--glow:radial-gradient(circle at 76% 40%,#ffd08a55 0,#0000 16%)}
.cinema-gallery{--floor:.86;--actor-h:.43;--focus:50;--stand:55}
.cinema-cafe{--floor:.75;--actor-h:.39;--focus:38;--stand:27;--glow:radial-gradient(circle at 51% 14%,#ffc46a5a 0,#0000 14%),radial-gradient(circle at 29% 22%,#ffc46a40 0,#0000 9%)}
.cinema-kitchen{--floor:.6;--actor-h:.43;--focus:72;--stand:85;--glow:radial-gradient(ellipse 22% 12% at 37% 11%,#ffd08a55,#0000)}
/* v17 adult scenes (adult-story.js): first person, the partner's portrait stands over the place; single-image adult backgrounds use cover, not the 2x2 atlas */
.cinema-rooftop .cinema-landscape,.story-cinema.cinema-rooftop:before{background-image:url('./assets/adult-backgrounds-20261021/rooftop-restaurant-evening.png')}
.cinema-street .cinema-landscape,.story-cinema.cinema-street:before{background-image:url('./assets/adult-backgrounds-20261021/rainy-night-street.png')}
.cinema-rooftop .cinema-landscape,.cinema-street .cinema-landscape{aspect-ratio:1672/941;background-size:cover;background-position:center;image-rendering:auto}
.story-cinema.cinema-rooftop:before,.story-cinema.cinema-street:before{background-size:cover;background-position:center}
.adult-cinema .cinema-portrait-stage{position:absolute;left:50%;bottom:180px;transform:translateX(-50%);height:min(62vh,640px);z-index:0;pointer-events:none;transition:filter .35s ease}
.adult-cinema .cinema-portrait-stage .cinema-portrait{display:block;height:100%;width:auto;max-width:none;border:0;border-radius:0;background:none;filter:drop-shadow(0 12px 18px #0008)}
.adult-cinema .cinema-portrait-stage.is-quiet{filter:brightness(.7) saturate(.9)}
@media(max-width:700px){.adult-cinema .cinema-portrait-stage{bottom:35%;height:50%}}
/* more single-image adult places (assets/adult-backgrounds-20261021): cover, no atlas. Airport is also an actor stage: floor/actor-h from the suitcase (0.65 m body) at eye-level perspective, horizon ~47% */
.cinema-hotelRoom{--single:url('./assets/adult-backgrounds-20261021/hotel-room-night.png')}
.cinema-hotelLobby{--single:url('./assets/adult-backgrounds-20261021/hotel-lobby-night.png')}
.cinema-airport{--single:url('./assets/adult-backgrounds-20261021/airport-departure-dawn.png');--floor:.86;--actor-h:.44;--focus:50;--stand:45}
.cinema-resort{--single:url('./assets/adult-backgrounds-20261021/seaside-resort-sunset.png')}
.cinema-bar{--single:url('./assets/adult-backgrounds-20261021/cocktail-bar-night.png')}
.cinema-pub{--single:url('./assets/adult-backgrounds-20261021/neighborhood-pub-night.png')}
.cinema-hotelRoom .cinema-landscape,.cinema-hotelLobby .cinema-landscape,.cinema-airport .cinema-landscape,.cinema-resort .cinema-landscape,.cinema-bar .cinema-landscape,.cinema-pub .cinema-landscape{background-image:var(--single);aspect-ratio:1672/941;background-size:cover;background-position:center;image-rendering:auto}
.story-cinema.cinema-hotelRoom:before,.story-cinema.cinema-hotelLobby:before,.story-cinema.cinema-airport:before,.story-cinema.cinema-resort:before,.story-cinema.cinema-bar:before,.story-cinema.cinema-pub:before{background-image:var(--single);background-size:cover;background-position:center}
.cinema-hotelRoom .cinema-fore,.cinema-hotelLobby .cinema-fore,.cinema-airport .cinema-fore,.cinema-resort .cinema-fore,.cinema-bar .cinema-fore,.cinema-pub .cinema-fore,.cinema-hotelRoom .cinema-clouds,.cinema-hotelLobby .cinema-clouds,.cinema-airport .cinema-clouds,.cinema-resort .cinema-clouds,.cinema-bar .cinema-clouds,.cinema-pub .cinema-clouds{display:none}

/* v17 delivered places (assets/requested-20261021, 1672x941; cafe replaces the atlas cafe whose table hid the floor).
   Stage values from each picture's own perspective, not by eye: horizon from floor-line convergence, pixels per metre from a prop
   of known height near the standing depth (cafe table 75cm, hospital bed 65cm + counter 90cm, vet exam table 90cm + stool 60cm,
   tunnel road case 70cm + door 2.1m, dugout seat 1m, gate door 2.1m, bunk 1.7m + locker 1.8m, hoop 3.05m, banquet table 75cm,
   office desk 75cm + sideboard 80cm), scaled to the chosen standing depth; figure 1.75m; element = figure / (480/550). */
.cinema-hospital{--single:url('./assets/requested-20261021/hospital-room-night.png');--floor:.68;--actor-h:.58;--focus:50;--stand:55}
.cinema-vetclinic{--single:url('./assets/requested-20261021/vet-clinic-evening.png');--floor:.7;--actor-h:.54;--focus:50;--stand:55}
.cinema-tunnel{--single:url('./assets/requested-20261021/stadium-tunnel.png');--floor:.7;--actor-h:.57;--focus:50;--stand:50}
.cinema-bench{--single:url('./assets/requested-20261021/stadium-bench-night.png');--floor:.65;--actor-h:.51;--focus:50;--stand:55}
.cinema-campgate{--single:url('./assets/requested-20261021/military-camp-gate-dawn.png');--floor:.7;--actor-h:.56;--focus:50;--stand:50}
.cinema-barracks{--single:url('./assets/requested-20261021/military-barracks-night.png');--floor:.65;--actor-h:.55;--focus:50;--stand:50}
.cinema-gym{--single:url('./assets/requested-20261021/school-gym-day.png');--floor:.75;--actor-h:.54;--focus:50;--stand:50}
.cinema-wedding{--single:url('./assets/requested-20261021/wedding-small-hall.png');--floor:.72;--actor-h:.53;--focus:50;--stand:50}
.cinema-office{--single:url('./assets/requested-20261021/manager-office.png');--floor:.63;--actor-h:.54;--focus:50;--stand:55}
.cinema-cafe{--single:url('./assets/requested-20261021/cafe-open-floor.png');--floor:.72;--actor-h:.54;--focus:50;--stand:45;--glow:none}
:is(.cinema-hospital,.cinema-vetclinic,.cinema-tunnel,.cinema-bench,.cinema-campgate,.cinema-barracks,.cinema-gym,.cinema-wedding,.cinema-office,.cinema-cafe) .cinema-landscape{background-image:var(--single);aspect-ratio:1672/941;background-size:cover;background-position:center;image-rendering:auto}
.story-cinema:is(.cinema-hospital,.cinema-vetclinic,.cinema-tunnel,.cinema-bench,.cinema-campgate,.cinema-barracks,.cinema-gym,.cinema-wedding,.cinema-office,.cinema-cafe):before{background-image:var(--single);background-size:cover;background-position:center}
:is(.cinema-hospital,.cinema-vetclinic,.cinema-tunnel,.cinema-bench,.cinema-campgate,.cinema-barracks,.cinema-gym,.cinema-wedding,.cinema-office,.cinema-cafe) :is(.cinema-fore,.cinema-clouds){display:none}
/* grown companions: single-frame full bodies at their own aspect (school sprites are two-frame sheets) */
.cinema-actor.cinema-adult{aspect-ratio:auto;object-fit:contain;image-rendering:auto}
/* the earlier adult places now stage full bodies too; same method (resort: true sea horizon .43, lounger 35cm/side table 50cm/rattan
   chair 90cm; rooftop: table 75cm + chair 90cm; street: bollard 90cm, shop door 2.2m, bicycle 1m; hotel room: bed 60cm, desk 75cm,
   luggage rack 55cm; lobby: front desk 1.1m, armchair 85cm, luggage cart 1.9m; bar: stool seat 75cm, counter 1.05m, sofa seat 45cm;
   pub: stool 75cm, table 75cm). The airport keeps its suitcase-based values. */
.cinema-resort{--floor:.78;--actor-h:.44;--focus:50;--stand:45}
.cinema-rooftop{--floor:.76;--actor-h:.52;--focus:50;--stand:50}
.cinema-street{--floor:.75;--actor-h:.54;--focus:50;--stand:45}
.cinema-hotelRoom{--floor:.68;--actor-h:.54;--focus:50;--stand:60}
.cinema-hotelLobby{--floor:.72;--actor-h:.56;--focus:50;--stand:45}
.cinema-bar{--floor:.72;--actor-h:.57;--focus:50;--stand:55}
.cinema-pub{--floor:.72;--actor-h:.56;--focus:50;--stand:50}

/* preloading: the next places of a scene render off screen at 8px so their backgrounds are fetched early */
.story-cinema.cinema-preload{position:fixed!important;left:-9999px!important;top:0!important;width:8px!important;height:8px!important;min-height:0!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important;animation:none!important}
.cinema-preload .cinema-landscape{width:8px!important;height:8px!important;aspect-ratio:auto!important}

/* wedding cinematic (wedding-art.js): the CG keeps its 1672x941 frame (never cropped or pixelated); the stage sits in the picture
   area above the dialogue. Bride: aisle walk with a common scale and foot point, white fade in -> swap at full white -> white fade out. */
.story-cinema.cinema-weddingAisle:before,.story-cinema.cinema-weddingVows:before{background-image:url('./assets/requested-cinematics-20261021/layout-v3/aisle-background-v3.png');background-size:cover;background-position:center}
.wedding-cinema .wedding-stage{position:absolute;z-index:1;left:0;right:0;margin:0 auto;top:max(56px,calc((61svh - min(56.25vw,(61svh - 40px)))/2));width:min(100%,calc((61svh - 40px)*1.777));aspect-ratio:1672/941;overflow:hidden;border-radius:2px;box-shadow:0 18px 50px #0009}
@media(min-width:701px){.wedding-cinema .wedding-stage{top:50%;transform:translateY(-62%);width:min(92%,calc((100svh - 300px)*1.777))}}
.wedding-stage img{image-rendering:auto}
.wedding-aisle,.wedding-front{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.wedding-front{opacity:0}
.wedding-bride{position:absolute;left:50%;transform:translateX(-50%);height:var(--h0);bottom:var(--b0);overflow:hidden}
.wedding-bride img{display:block;height:100%;width:auto}
.shop-wedding-bride{position:absolute;left:50%;bottom:4%;height:76%;width:auto;transform:translateX(-50%)}
.shop-wedding-vows{position:absolute;left:50%;bottom:0;height:82%;width:auto;transform:translateX(-50%)}
.cinema-actors .cinema-actor.shop-child{height:var(--child-height)!important;align-self:flex-end}
@media (orientation:portrait){.shop-wedding-bride{height:56%;bottom:12%}}
.wedding-bride.is-walking img{animation:wedding-step 880ms steps(4) infinite}
@keyframes wedding-step{to{transform:translateX(-100%)}}
.wedding-cinema.is-approaching .wedding-bride.is-walking{animation:wedding-approach 4000ms linear forwards}
@keyframes wedding-approach{from{height:var(--h0);bottom:var(--b0)}to{height:var(--h1);bottom:var(--b1)}}
.wedding-white{position:absolute;inset:0;background:#fffaf2;opacity:0;pointer-events:none;transition:opacity 560ms ease-out}
.wedding-cinema.is-whitening .wedding-white{opacity:1;transition:opacity 420ms ease-in}
.wedding-cinema.is-swapped .wedding-front{opacity:1}
.wedding-cinema.is-swapped .wedding-aisle,.wedding-cinema.is-swapped .wedding-bride{visibility:hidden}
.wedding-cinema.is-reduced .wedding-bride{animation:none!important}.wedding-cinema.is-reduced .wedding-bride img{animation:none}
/* the line and the choice wait for the reveal; a tap before it finishes the transition instead */
.wedding-cinema:not(.is-revealed) .cinema-dialogue,.wedding-cinema:not(.is-revealed) .cinema-caption{opacity:0;pointer-events:none}
.wedding-cinema .cinema-dialogue{transition:opacity .35s ease}
/* short landscape screens: the CG takes the height above the dialogue instead of a desktop-sized margin */
@media(min-width:701px) and (max-height:560px){.wedding-cinema .wedding-stage{top:8px;transform:none;width:min(92%,calc((100svh - 160px)*1.777))}}
/* full-bleed (user, 2026-10-21: "fill the screen"): the 1672x941 stage covers the whole viewport like object-fit:cover, centred on the
   aisle, so only side guests are cut on a tall phone; the bride stays at the centre and the dialogue sits on its gradient below. */
.wedding-cinema .wedding-stage,.wedding-cinema .wedding-stage[class]{position:fixed;z-index:0;left:50%;top:50%;right:auto;margin:0;width:max(100vw,calc(100svh*1.7768));height:auto;aspect-ratio:1672/941;transform:translate(-50%,-50%);border-radius:0;box-shadow:none}
@media(min-width:701px){.wedding-cinema .wedding-stage{transform:translate(-50%,-50%)}}
@media(min-width:701px) and (max-height:560px){.wedding-cinema .wedding-stage{top:50%;transform:translate(-50%,-50%);width:max(100vw,calc(100svh*1.7768))}}
.wedding-cinema .cinema-dialogue,.wedding-cinema .cinema-top,.wedding-cinema .cinema-caption{z-index:2}

/* family-event places (assets/requested-events-20261021), stage values from each picture's props the same way as the others:
   parents' kitchen fridge 1.8 m + counter 90 cm (horizon ~.39); school gate pillars 2 m; academy pitch centre circle 9.15 m + goal 2.44 m
   (wide shot, people small); exam-venue gate pillars 2.5 m; funeral-hall sofa back 85 cm; grave hill tombstone 1.2 m; nursery crib 95 cm +
   dresser 95 cm; wedding preparation room vanity 75 cm + stool 45 cm. */
.cinema-parentsKitchen{--single:url('./assets/requested-events-20261021/parents-home-kitchen.png');--floor:.6;--actor-h:.56;--focus:50;--stand:45}
.cinema-elementaryGate{--single:url('./assets/requested-events-20261021/elementary-gate-morning.png');--floor:.7;--actor-h:.5;--focus:50;--stand:50}
.cinema-academyPitch{--single:url('./assets/requested-events-20261021/youth-academy-pitch.png');--floor:.88;--actor-h:.28;--focus:50;--stand:50}
.cinema-examVenue{--single:url('./assets/requested-events-20261021/exam-venue-dawn.png');--floor:.68;--actor-h:.52;--focus:50;--stand:50}
.cinema-funeralHall{--single:url('./assets/requested-events-20261021/funeral-hall-night.png');--floor:.65;--actor-h:.58;--focus:50;--stand:50}
.cinema-graveHill{--single:url('./assets/requested-events-20261021/family-grave-hill.png');--floor:.72;--actor-h:.55;--focus:50;--stand:45}
.cinema-nursery{--single:url('./assets/requested-events-20261021/nursery-home-evening.png');--floor:.6;--actor-h:.54;--focus:25;--stand:31} /* the crib (0-22%) is what the night feed is about: a phone shows it and the parents stand beside it */
.cinema-weddingPrep{--single:url('./assets/requested-events-20261021/wedding-preparation-room.png');--floor:.58;--actor-h:.52;--focus:50;--stand:50}
/* pro-life places (assets/requested-trophies-20261022/places, 2026-10-23), a 1.8 m player from the props: tryout table 75 cm + far goal
   2.44 m (horizon ~.38, eye ~1.4 m); training-ground far goals 2.44 m (horizon ~.45); locker, dining and trophy rooms from the floor
   lines' vanishing point (~.40-.46) at eye height; bus aisle vanishing ~.42 with the near seats. */
.cinema-proLockerRoom{--single:url('./assets/requested-trophies-20261022/places/pro-locker-room.png');--floor:.8;--actor-h:.5;--focus:50;--stand:50}
.cinema-trainingGround{--single:url('./assets/requested-trophies-20261022/places/pro-training-ground.png');--floor:.85;--actor-h:.48;--focus:50;--stand:50}
.cinema-teamBus{--single:url('./assets/requested-trophies-20261022/places/team-bus-night.png');--floor:.9;--actor-h:.62;--focus:50;--stand:50}
.cinema-hotelDinner{--single:url('./assets/requested-trophies-20261022/places/team-hotel-dinner.png');--floor:.8;--actor-h:.45;--focus:50;--stand:50}
.cinema-tryoutGround{--single:url('./assets/requested-trophies-20261022/places/open-tryout-ground.png');--floor:.82;--actor-h:.58;--focus:55;--stand:55}
.cinema-trophyRoom{--single:url('./assets/requested-trophies-20261022/places/trophy-cabinet-room.png');--floor:.8;--actor-h:.45;--focus:50;--stand:50}
:is(.cinema-parentsKitchen,.cinema-elementaryGate,.cinema-academyPitch,.cinema-examVenue,.cinema-funeralHall,.cinema-graveHill,.cinema-nursery,.cinema-weddingPrep,.cinema-proLockerRoom,.cinema-trainingGround,.cinema-teamBus,.cinema-hotelDinner,.cinema-tryoutGround,.cinema-trophyRoom) .cinema-landscape{background-image:var(--single);aspect-ratio:1672/941;background-size:cover;background-position:center;image-rendering:auto}
.story-cinema:is(.cinema-parentsKitchen,.cinema-elementaryGate,.cinema-academyPitch,.cinema-examVenue,.cinema-funeralHall,.cinema-graveHill,.cinema-nursery,.cinema-weddingPrep,.cinema-proLockerRoom,.cinema-trainingGround,.cinema-teamBus,.cinema-hotelDinner,.cinema-tryoutGround,.cinema-trophyRoom):before{background-image:var(--single);background-size:cover;background-position:center}
:is(.cinema-parentsKitchen,.cinema-elementaryGate,.cinema-academyPitch,.cinema-examVenue,.cinema-funeralHall,.cinema-graveHill,.cinema-nursery,.cinema-weddingPrep,.cinema-proLockerRoom,.cinema-trainingGround,.cinema-teamBus,.cinema-hotelDinner,.cinema-tryoutGround,.cinema-trophyRoom) :is(.cinema-fore,.cinema-clouds){display:none}

/* First-person CG beats (life-ui cgStage): the whole 1672x941 picture, never cropped (both hands sit at the edges); a blurred copy fills the screen around it.
   On a phone held upright the picture sits in the upper stage area, above the dialogue. */
.cg-cinema .cg-stage{position:fixed;inset:0;z-index:0;overflow:hidden;background:#0d0b0c}
.cg-stage img{position:absolute;inset:0;width:100%;height:100%;display:block;image-rendering:auto}
.cg-stage .cg-fill{object-fit:cover;filter:blur(20px) brightness(.55);transform:scale(1.12)}
.cg-stage .cg-whole{object-fit:contain;object-position:50% 50%}
@media(orientation:portrait){.cg-stage .cg-whole{object-position:50% 30%}}
.cg-cinema .cinema-dialogue,.cg-cinema .cinema-top,.cg-cinema .cinema-caption{z-index:2}

/* Home card (residence-ui yards): the yard picture covers the card anchored at the bottom, so feet are never cut; on a phone it pans to the door.
   Full bodies stand on the measured floor line at the shared 550-row scale, like the story stage (no cut-off busts, no small pixel figure). */
.residence-stage{background-image:none!important}
.residence-scene{position:absolute;bottom:0;height:100%;aspect-ratio:3/2;left:calc(var(--pan) * 100%);transform:translateX(calc(var(--pan) * -100%));background:url('./assets/residences-v6.png') 0 0/200% 200% no-repeat;z-index:0}
@media(min-width:701px){.residence-scene{height:auto;width:100%;left:0;transform:none}}
.residence-house .residence-scene{background-position:100% 0}.residence-villa .residence-scene{background-position:0 100%}.residence-island .residence-scene{background-position:100% 100%}
.residence-scene>button{position:absolute;padding:0;margin:0;background:transparent;border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;cursor:pointer;color:var(--v17-accent,#f3dfa8);min-height:0}
.residence-scene>button:focus-visible{outline:3px solid #ffefb3;outline-offset:3px}
.residence-scene>.residence-door{display:flex;align-items:start;justify-content:center;z-index:1} /* label at the top of the doorway: people stand in front of its foot */
.residence-scene>.residence-actor{top:auto;bottom:16%;width:auto;transform:translateX(-50%);z-index:2}
.residence-scene>button>span{display:inline-block;line-height:1.5;font-size:12px;white-space:nowrap;text-shadow:0 1px 2px #000,0 0 7px #000c}
.residence-scene>.residence-actor>span{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:2px}
.residence-stage>button.residence-island{background:transparent!important;border:0!important;-webkit-backdrop-filter:none;backdrop-filter:none;color:var(--v17-accent,#f3dfa8);text-shadow:0 1px 2px #000,0 0 7px #000c} /* no box (design-v17) */

/* Poses on the story stage (life-ui stageActors, assets/requested-poses-20261021). */
.cinema-actors .modular-pose,.cinema-actors .pose-walk,.cinema-actors .cinema-seat .cinema-actor{animation:none}
.pose-walk{display:block;height:100%;overflow:hidden;flex:none}
.pose-walk img{display:block;height:100%;width:auto;animation:pose-step .76s steps(4) infinite}
@keyframes pose-step{to{transform:translateX(-100%)}}
/* side by side, both facing the way they walk; the place slides past slowly while the two keep their place on screen */
.cinema-actors.is-walking .cinema-actor{transform:none}
.story-cinema.is-walking .cinema-landscape{scale:1.06;animation:walk-drift 14s linear forwards}
.story-cinema.is-walking .cinema-actors{animation:walk-hold 14s linear forwards}
@keyframes walk-drift{from{translate:2% 0}to{translate:-2% 0}}
@keyframes walk-hold{from{translate:-1.9% 0}to{translate:1.9% 0}}
/* seats: the prop carries the sitters; the second sitter of a facing pair is mirrored */
.cinema-seat{position:relative;display:block;height:100%;flex:none}
.cinema-seat .seat-prop{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 4px 2px #0005)}
.cinema-seat .seat-sitter{position:absolute;top:0;height:100%}
.cinema-seat .seat-sitter>.cinema-actor{width:100%;height:100%;transform:none}
.cinema-seat .seat-sitter.is-mirrored{transform:scaleX(-1)}
/* the partner walks in from the right edge, then the standing body takes over */
.enter-slot{position:relative;display:block;height:100%;flex:none}
.enter-slot>.cinema-actor{opacity:0;animation:enter-show 1ms linear forwards;animation-delay:calc(1.5s + var(--enter-at,0s))}
.enter-walk{position:absolute;left:0;bottom:0;height:100%;animation:enter-in 1.5s ease-out forwards;animation-delay:var(--enter-at,0s)}
.enter-walk .pose-walk{transform:scaleX(-1)}
@keyframes enter-in{from{translate:70vw 0}99%{opacity:1}to{translate:0 0;opacity:0}}
@keyframes enter-show{to{opacity:1}}
@media (prefers-reduced-motion:reduce){.pose-walk img,.story-cinema.is-walking .cinema-landscape,.story-cinema.is-walking .cinema-actors{animation:none}.enter-walk{display:none}.enter-slot>.cinema-actor{opacity:1;animation:none}}
.cinema-actors .enter-slot>.cinema-actor{transform:scaleX(-1)} /* the partner faces the player, as every second actor does */

/* the home (kitchen) scene stands on the delivered open-floor living room (home-living-open-floor.png) instead of the dining-table atlas cell
   whose table hid the floor. Measured: sofa 0.85 m = 150 rows at the rug (y .32-.64), door 2.2 m at the window plane; feet on the rug at .66. */
.cinema-kitchen{--single:url('./assets/requested-20261021/home-living-open-floor.png');--floor:.66;--actor-h:.56;--focus:50;--stand:52;--glow:none}
.cinema-kitchen .cinema-landscape{background-image:var(--single);aspect-ratio:1672/941;background-size:cover;background-position:center;image-rendering:auto}
.story-cinema.cinema-kitchen:before{background-image:var(--single);background-size:cover;background-position:center}
.cinema-kitchen :is(.cinema-fore,.cinema-clouds){display:none}
/* several people on stage: smaller and closer so the phone window keeps the player in view */
.cinema-actors.crowd{--crowd:.9;gap:.6vmin}
/* 2026-10-22 final wedding (design/ASSET-FINAL-DELIVERY-2026-10-22.md rule 7): the chosen venue fills the screen whole; a portrait screen
   takes the portrait (9:16) picture, shown complete (contain) over a blurred copy instead of cover-cropping the landscape one */
.wedding-cinema .wedding-stage,.wedding-cinema .wedding-stage[class]{position:fixed;inset:0;left:0;top:0;right:0;bottom:0;margin:0;width:auto;height:auto;aspect-ratio:auto;transform:none;border-radius:0;overflow:hidden;z-index:0}
.wedding-fill{position:absolute;inset:-6%;background:var(--bg-l) center/cover no-repeat;filter:blur(18px) brightness(.72)}
.wedding-frame{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);aspect-ratio:1672/941;width:min(100vw,calc(100svh*1672/941));overflow:hidden}
.wedding-frame .wedding-aisle,.wedding-frame .wedding-aisle img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill}
.wedding-cinema.is-swapped .wedding-aisle{visibility:visible}
.wedding-front.wedding-layer{inset:auto;top:auto;left:50%;bottom:0;height:100%;width:auto;transform:translateX(-50%);object-fit:initial}
@media (orientation:portrait){.wedding-fill{background-image:var(--bg-p)}.wedding-frame{aspect-ratio:1080/1920;width:min(100vw,calc(100svh*1080/1920))}
 .wedding-bride{--h0:var(--h0-p);--b0:var(--b0-p);--h1:var(--h1-p);--b1:var(--b1-p)}}
/* bright full-screen pictures (white dress, lit venues, CG): the shared scrim is too light under the text (2026-10-22 check: the
   dialogue was unreadable on the dress). Darker only in the dialogue zone; clear above 62% so faces, the ring and the baby stay visible */
.wedding-cinema:after,.cg-cinema:after{z-index:1;background:linear-gradient(to top,#06060cf2 0,#06060ce6 24%,#06060cc0 34%,#06060c66 46%,#0000 62%)}
.wedding-cinema .cinema-words p,.cg-cinema .cinema-words p{text-shadow:0 1px 2px #000c}
/* the vows layer's hands and ring sat at ~58% of a phone screen, under the speaker name and the scrim; lifted so the ring is clear of
   the dialogue zone (rule 7); the dress edge it uncovers falls in the dark bottom of the scrim */
@media (orientation:portrait){.wedding-front.wedding-layer.is-vows{bottom:9%}}
/* homes by tier (assets/requested-final-20261022 homes: rental, house, luxury, villa, island × living, kitchen × landscape, portrait).
   Feet and size measured by eye on 2026-10-22 from each picture's vanishing point (camera ~ eye height, so a standing adult's height is
   about feet - horizon); the sprite canvas is 550 rows for a 480-row adult, so the actors box is height / .873. */
.home-scene{--glow:none;--floor:.80;--actor-h:.50;--focus:50;--stand:50}
.home-scene .cinema-landscape,.story-cinema.home-scene:before{background-image:var(--home-l)!important;background-size:cover!important;background-position:center!important;aspect-ratio:1672/941;image-rendering:auto}
.home-scene .cinema-fore,.home-scene .cinema-clouds{display:none}
/* checked on a 375x812 screen (2026-10-22) against furniture at the same depth (desk chair, fridge, sofa back, bar stools, dining chairs);
   where a table stands mid-room the people stand behind it, not on it */
.home-rental.home-living{--fp:.48;--hp:.28}.home-rental.home-kitchen{--fp:.52;--hp:.30}
.home-house.home-living{--fp:.455;--hp:.26}.home-house.home-kitchen{--fp:.47;--hp:.27}
.home-luxury.home-living{--fp:.60;--hp:.24}.home-luxury.home-kitchen{--fp:.60;--hp:.29}
.home-villa.home-living{--fp:.58;--hp:.21}.home-villa.home-kitchen{--fp:.58;--hp:.23}
.home-island.home-living{--fp:.58;--hp:.22}.home-island.home-kitchen{--fp:.58;--hp:.25}
@media (orientation:portrait) and (max-width:700px){
 .home-scene{--floor:var(--fp,.6);--actor-h:var(--hp,.24)}
 .home-scene .cinema-landscape{top:0;left:0;width:100%;height:auto;aspect-ratio:1080/1920;transform:none;background-image:var(--home-p)!important;-webkit-mask-image:none;mask-image:none}
 .home-scene .cinema-actors{left:50%}
 .story-cinema.home-scene:before{background-image:var(--home-p)!important}}
/* the home card (2026-10-22): the residence's portrait exterior shown whole (no pan, no crop); a 420 px column on desktop like the
   approved Pandora layout; people stand on the measured ground line (inline height/bottom per picture) */
.residence-stage{aspect-ratio:auto!important;min-height:0!important;background:none!important;overflow:visible;position:relative}
.residence-scene{position:relative!important;left:0!important;bottom:auto!important;transform:none!important;width:100%;max-width:420px;margin:0 auto;height:auto!important;aspect-ratio:1080/1920;background:var(--yard) center/cover no-repeat!important;border-radius:6px;overflow:hidden}
.residence-scene>.residence-actor{top:auto;width:auto;transform:translateX(-50%);z-index:2}
.residence-scene>.residence-actor .cinema-actor{height:100%;width:auto;display:block}
.residence-trips{display:flex;flex-wrap:wrap;gap:8px 14px;justify-content:center;margin-top:10px}
.residence-trips>button{position:static;height:auto;background:transparent;border:0;color:var(--v17-accent,#f3dfa8);font-size:13px;-webkit-backdrop-filter:none;backdrop-filter:none}
.residence-trips .possession-art{height:38px;width:auto;vertical-align:middle;margin-right:6px}
/* a person never fades: while a story is pending the buttons are disabled, and the global disabled style turned the partner into a ghost */
.residence-scene>button:disabled{opacity:1;filter:none;cursor:default}
.residence-scene>.residence-caption{top:12px;bottom:auto;left:14px;right:14px}
/* the protagonist's saved height (heightCm) scales his full body uniformly from the feet (final delivery rule 5) */
.cinema-actor.modular-player,.cinema-actor.modular-pose{height:calc(100% * var(--k,1))!important;align-self:flex-end}
.story-log-button{position:absolute;right:4%;top:calc(max(24px,env(safe-area-inset-top)) + 48px);z-index:5;background:#171c24b3;border:0;color:#eee7d9;padding:9px 10px;font-size:12px;min-height:36px}.story-history{max-height:65svh;overflow:auto;padding:4px 12px 12px 0}.story-history h3{margin-top:24px;font-size:14px;color:#d9dfb2}.story-history article{padding:10px 0;border-bottom:1px solid #ffffff12}.story-history article.my-choice{padding-left:14px;border-left:2px solid #d5df9a}.story-history b{font-size:12px;color:#c4c8bb}.story-history p{line-height:1.8;white-space:pre-wrap;margin:7px 0}.story-history small{color:#bdcb99}.story-choice-result{grid-column:1/-1;padding:10px 0;border-top:1px solid #ffffff30;font-size:12px;display:grid;gap:5px;color:#e6e4d4}.story-choice-result b{color:#d4de98;font-size:11px}.story-choice-result small{color:#c8d0aa}
.recovery-panel{padding:14px 0}.recovery-panel>p{font-size:11px;line-height:1.6;color:#859c9b}.recovery-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.recovery-options button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:100px;padding:12px 5px;border:1px solid #71817250;background:#263d3740;min-width:0}.recovery-options b{font-size:12px}.recovery-options span{font-size:11px}.recovery-options small{font-size:10px;line-height:1.5}.game-phone .recovery-options button{background:#e2e9e4;color:#263c36}.game-phone .recovery-panel h3{font-size:15px}
.residence-scene>.residence-actor{display:flex;align-items:flex-end}
/* CGs as <picture> (landscape + portrait from the catalog): the fit rules move to the inner image; a portrait picture sits at the top
   so the dialogue covers its foot, which the portrait compositions keep free (rule 7) */
.cg-stage picture{position:absolute;inset:0;display:block}
.cg-stage .cg-fill img{object-fit:cover;filter:blur(20px) brightness(.55);transform:scale(1.12)}
.cg-stage picture.cg-fill{filter:none;transform:none}
.cg-stage .cg-whole img{object-fit:contain;object-position:50% 50%}
@media(orientation:portrait){.cg-stage .cg-whole img{object-position:50% 0}}

/* wardrobe (2026-10-22): the headless outfit art, cropped to the clothes */
.life-wardrobe .outfit-thumb{width:56px;height:84px;object-fit:cover;object-position:50% 38%;flex:none}
/* barber (2026-10-22): preview figure beside the style and dye choices */
.barber{display:flex;gap:14px;align-items:flex-start}.barber-preview{flex:none;width:92px;padding:8px 4px;overflow:hidden}.barber-preview .cinema-actor.modular-player{height:190px!important;width:83px!important;max-width:none;object-fit:cover;object-position:0 0;position:static}
.barber-options{min-width:0;flex:1}.barber-options h3{font-size:13px;margin:6px 0}.barber-row{display:flex;flex-wrap:wrap;gap:6px}
.barber-row button{font-size:12px;padding:6px 9px;display:inline-flex;align-items:center;gap:5px}.barber-row button.chosen{outline:2px solid var(--accent,#c6f06a)}
.barber-row i{width:11px;height:11px;border-radius:50%;display:inline-block}.barber-cost{margin:10px 0 6px;font-weight:600}.barber-actions{display:flex;gap:8px}
/* crowd bubbles over the match (2026-10-22): ours in the accent colour, away fans grey; they rise and fade */
.fan-layer{position:absolute;pointer-events:none;overflow:hidden;z-index:3;max-width:100%;max-height:100%} /* never wider than the match box, also right after the phone turns */
.fan-bubble{position:absolute;padding:7px 11px;border-radius:13px;font:600 clamp(11px,1.15vw,14px)/1.4 "Pretendard","Malgun Gothic",sans-serif;white-space:normal;overflow-wrap:anywhere;animation:fan-rise 3.4s ease-out forwards;filter:drop-shadow(0 2px 3px #0005);background:#fff;color:#18202a}
.fan-ours,.fan-theirs{background:#fff;color:#18202a;translate:0 -100%}
.fan-bubble:after{content:"";position:absolute;left:14px;bottom:-5px;border:5px solid transparent;border-top-color:inherit;border-bottom:0}
.fan-ours:after,.fan-theirs:after{border-top-color:#fff}
.fan-angry{padding:14px 20px;border-radius:0;font-weight:800;clip-path:polygon(0 12%,12% 16%,14% 0,25% 13%,37% 2%,45% 12%,61% 0,66% 13%,82% 3%,84% 17%,100% 12%,94% 36%,100% 51%,93% 63%,100% 84%,84% 81%,80% 100%,66% 87%,53% 98%,43% 87%,26% 100%,22% 84%,0 92%,7% 66%,0 52%,6% 32%)}
.fan-angry:after{display:none}
@keyframes fan-rise{0%{opacity:0;transform:translateY(8px) scale(.94)}12%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translateY(-10px)}}
@media (prefers-reduced-motion:reduce){.fan-bubble{animation:none}}

/* Actual owned car and saved passenger identity, framed separately from standing stage actors. */
.driving-stage{position:absolute;inset:0 0 36%;overflow:hidden;background:#b6c4bb;isolation:isolate}.driving-backdrop{position:absolute;inset:0;background:var(--drive-bg) center 55%/cover}.driving-carSchool .driving-backdrop{background-size:200% 200%;background-position:left top}.driving-stage:after{content:'';position:absolute;inset:65% 0 0;background:linear-gradient(transparent,#080e16);pointer-events:none}.driving-car{position:absolute;width:min(92%,900px);left:50%;bottom:3%;transform:translateX(-50%);aspect-ratio:3/2;filter:drop-shadow(0 14px 8px #0004)}.driving-body{position:absolute;inset:0;background:url('./assets/phone/car-convertible-directions-v1.png') left bottom/200% 200% no-repeat}.is-compact .driving-body{background-image:url('./assets/phone/car-compact-directions-v1.png')}.driving-cabin{position:absolute;left:24%;top:1%;width:52%;height:28%;overflow:hidden;clip-path:polygon(12% 0,87% 0,100% 100%,0 100%)}.driving-driver,.driving-passenger{position:absolute;width:32%;height:100%;top:0;overflow:hidden}.driving-driver{left:58%}.driving-passenger{left:8%}.driving-driver>img{display:block;width:200%;height:auto;max-width:none}.driving-passenger>svg,.driving-passenger>img{display:block;width:100%;height:auto;max-width:none}.is-compact .driving-cabin{top:12%;height:24%;left:21%;width:57%;filter:brightness(.82) saturate(.85)}.driving-carHome .driving-backdrop{background-position:center 65%}
@media(min-width:800px){.driving-stage{inset:0 0 25%}.driving-car{width:min(72%,900px);bottom:-1%}}
@media(prefers-reduced-motion:reduce){.driving-stage *{animation:none!important}}

.driving-stage{container-type:size}.driving-car{width:min(92%,125cqh,850px);bottom:1%}.driving-road{position:absolute;inset:68% 0 0;background:linear-gradient(#66645e,#383d40);border-top:7px solid #c0b9a3;box-shadow:0 -3px 0 #686d62}.driving-road:after{content:"";position:absolute;left:0;right:0;top:75%;height:3px;background:#d4ccb5;opacity:.4}.is-compact{aspect-ratio:4/3}.driving-carSchool .driving-road{background:linear-gradient(#737879,#44494a)}
.driving-driver>img{position:relative;width:350%;left:-38%;top:-46%}.is-compact .driving-driver>img{top:-42%}

.story-cinema.is-memory .cinema-landscape{filter:sepia(.82) saturate(.5) contrast(.9);box-shadow:inset 0 0 100px #29180f88}.story-cinema.is-memory:after{content:"";position:absolute;inset:0;pointer-events:none;background:#8e633514;z-index:1}.story-cinema.is-memory .cinema-dialogue{z-index:4}

.is-enclosed .driving-cabin{filter:brightness(.85) saturate(.85)}.is-enclosed .driving-driver>img{top:-42%}

.driving-rear{position:absolute;inset:0 13% 30%;display:flex;justify-content:center;gap:2%;overflow:hidden;filter:brightness(.7)}.driving-rear img{width:28%;height:100%;object-fit:cover;object-position:top}.driving-driver,.driving-passenger{z-index:2;top:14%}.driving-rear:empty{display:none}.driving-sidecar{display:none;position:absolute;inset:20% 5% 0}.is-moving .driving-car{display:none}.is-moving .driving-sidecar{display:block}.moving-car{width:100%;height:100%;overflow:hidden;filter:drop-shadow(0 6px 5px #0005)}.rotating-wheel{animation:wheel-turn .7s steps(8) infinite}.is-moving .driving-backdrop{inset:0 -20%;animation:drive-scenery 6s linear infinite}.is-moving .driving-road:after{background:repeating-linear-gradient(90deg,#eee8 0 30px,transparent 30px 90px);height:5px;animation:drive-road .6s linear infinite}.travel-loading{position:fixed;z-index:10000;inset:0;background:#101922ee;display:grid;place-content:center;text-align:center;pointer-events:all}.travel-loading-road{width:min(80vw,480px);height:220px;overflow:hidden;background:linear-gradient(transparent 70%,#5b6262 70%)}.travel-loading p{font-size:14px;color:#d9e1dd;letter-spacing:.12em}.travel-loading .moving-car{animation:drive-bob 1s ease-in-out infinite}@keyframes wheel-turn{to{transform:rotate(-360deg)}}@keyframes drive-scenery{from{transform:translateX(-8%)}to{transform:translateX(8%)}}@keyframes drive-road{to{transform:translateX(90px)}}@keyframes drive-bob{50%{transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.rotating-wheel,.is-moving .driving-backdrop,.is-moving .driving-road:after,.travel-loading .moving-car{animation:none}}

.story-cinema:is(.cinema-university,.cinema-universityLibrary,.cinema-universityGround){--floor:.84;--actor-h:.55;--focus:50;--stand:58}.story-cinema:is(.cinema-university,.cinema-universityLibrary,.cinema-universityGround):before,.story-cinema:is(.cinema-university,.cinema-universityLibrary,.cinema-universityGround) .cinema-landscape{background-image:url('./assets/phone/university-life-atlas-v1.png');background-size:200% 200%;background-position:left top;image-rendering:auto}.cinema-universityLibrary:before,.cinema-universityLibrary .cinema-landscape{background-position:right top!important}.cinema-universityGround:before,.cinema-universityGround .cinema-landscape{background-position:left bottom!important}.story-cinema:is(.cinema-university,.cinema-universityLibrary,.cinema-universityGround) :is(.cinema-clouds,.cinema-fore){display:none}.campus-table p{display:flex;justify-content:space-between;gap:15px}.campus-table span{opacity:.6}

/* Post-match trophy presentation. Narrative CGs remain in their original story screens. */
.ceremony-modal>.modal{max-width:1000px;width:96vw;padding:16px}
.ceremony-stage{position:relative;aspect-ratio:8/5;overflow:hidden;background:#101b30}
.title-ceremony-canvas{display:block;width:100%;height:auto;aspect-ratio:8/5;opacity:0;transition:opacity .3s;pointer-events:none}
.title-ceremony-canvas[data-ready="true"]{opacity:1}
.ceremony-heading{text-align:center;padding:10px}
.ceremony-heading h2{margin:6px 0;font-size:24px}
.ceremony-next{display:block;margin:14px auto 0;min-height:44px;font-size:15px}
@media(prefers-reduced-motion:reduce){.title-ceremony-canvas{transition:none}}

.view-speed{display:flex;align-items:center;gap:6px;font-size:12px}.view-speed select{width:auto!important}.live-review{display:flex;gap:8px;align-items:center;padding:8px 0;flex-wrap:wrap}.live-review input{flex:1;min-width:90px;accent-color:#d4df8d}.live-review button{font-size:12px;padding:9px}
@media(max-width:700px){.room-home{min-height:710px}.room-hotspots>button{padding:10px 14px}}

.first-week-guide{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:calc(96px + env(safe-area-inset-bottom));width:min(330px,calc(100vw - 28px));padding:16px 18px;background:#f1e8d8;color:#24312c;border:1px solid #9d9e83;box-shadow:0 8px 30px #0005;border-radius:8px;z-index:91;font-size:13px}.first-week-guide b{font-size:15px}.first-week-guide p{margin:8px 0 12px;line-height:1.65}.first-week-guide>div{display:flex;justify-content:space-between;gap:8px}.first-week-guide button{font-size:12px;padding:8px 10px}.guide-target{outline:2px solid #e3d474!important;outline-offset:4px}.modalback~.first-week-guide{display:none}@media(max-width:500px){.first-week-guide{width:250px;bottom:96px;padding:12px 14px;font-size:12px}}

.exp-match .live-controlbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:14px}.exp-match #livestatus{grid-column:1/-1;font-size:12px;line-height:1.5}.exp-match .live-controlbar>select,.exp-match .live-controlbar>button,.exp-match .view-speed{width:100%;min-width:0;margin:0}.exp-match .live-controlbar>button{font-size:13px;line-height:1.4;padding:11px 6px;white-space:normal}.exp-match .view-speed{justify-content:space-between}.exp-match .view-speed select{flex:1;min-width:0}.exp-match .live-review{padding:8px 12px}.exp-match .live-review [hidden]{display:none}

.exp-match.reviewing .fan-layer,.exp-match.reviewing #livefeedback{display:none}

.story-cinema.is-reading-back>.cinema-dialogue,.novel-scene.is-reading-back>.novel-dialogue,.heroine-scene.is-reading-back>.heroine-panel{visibility:hidden}.story-readback{position:absolute;left:0;right:0;bottom:0;z-index:6;min-height:33%;padding:25px max(24px,calc((100% - 740px)/2));background:linear-gradient(#10131bd9,#10131b);color:#eee7dc;box-sizing:border-box;font-family:var(--font-story,serif)}.story-readback>small{font:11px sans-serif;color:#c6cdac;display:block;margin-bottom:12px}.story-readback>b{font-size:13px}.story-readback>p{font-size:16px;line-height:1.9}.story-readback nav{display:flex;justify-content:space-between;gap:8px}.story-readback button{font-size:12px;background:#242e30;color:#f4e9cf;padding:10px 12px}
.approach-options button{position:relative}.approach-options button[aria-pressed="true"]{background:#314b38!important;color:#f4f8d6!important;outline:2px solid #cbd98a;outline-offset:-2px}.approach-options .approach-check{display:none;position:absolute;right:12px;top:10px;color:#e5efae;font-size:18px}.approach-options [aria-pressed="true"] .approach-check{display:inline}.approach-options button>b{padding-right:22px}.approach-feedback{padding:10px 12px;color:#d7e4a5;font-size:14px;background:#22332c;border-radius:6px}

#app .live-pitch-wrap.bench-on .bench-view{max-height:none;min-height:0;object-fit:fill}

.match-resume{position:relative;padding:80px 24px 24px;max-width:860px;margin:24px auto}.match-resume h1{font-size:26px}.match-resume .row{display:flex;flex-wrap:wrap;gap:12px}.match-resume button{min-height:48px}.match-resume>p{line-height:1.7}@media(max-width:700px){.match-resume{padding:70px 16px 20px;margin:12px 0}.match-resume .row{display:grid;grid-template-columns:1fr}.match-resume h1{font-size:22px}}

.setup-preview-pair .setup-fullbody{height:245px}

/* Full-body rival artwork has a wide transparent source canvas; crop the sides without changing the figure height. */
.cinema-actors .cinema-rival-art{height:100%;aspect-ratio:190/550;position:relative;overflow:hidden;flex:none}.cinema-rival-art img{position:absolute;left:50%;top:0;height:100%;width:auto;max-width:none;transform:translateX(-50%)}

.activity-patterns{max-width:860px;margin:20px auto;padding:20px;color:#e9eee9;background:#182822;border:1px solid #395047;border-radius:14px}.activity-patterns header{display:flex;align-items:center;justify-content:space-between;gap:12px}.activity-patterns h2{margin:3px 0;font-size:20px}.activity-patterns header small,.activity-patterns header>span,.activity-patterns p{color:#bdcfc1;font-size:13px}.activity-patterns p{line-height:1.6}.pattern-list{display:grid;gap:8px}.pattern-card{background:#21352b;border-radius:10px}.pattern-card summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px;cursor:pointer;list-style:none}.pattern-card summary::-webkit-details-marker{display:none}.pattern-card summary span:first-child{min-width:0}.pattern-card summary b,.pattern-card summary small{display:block}.pattern-card summary small{margin-top:4px;color:#bdcfc1;line-height:1.45;overflow-wrap:anywhere}.pattern-card form{padding:0 14px 14px}.pattern-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.pattern-steps label{display:flex;align-items:center;gap:8px}.pattern-steps label>span{color:#a9bdac}.pattern-steps select{min-width:0;width:100%;min-height:44px}.pattern-actions{display:flex;gap:8px;margin-top:14px}.pattern-actions button,.activity-patterns>[data-pattern-cancel]{min-height:44px;padding:10px 14px}.pattern-actions button:last-child{background:#c9de91;color:#172118}.activity-patterns>[data-pattern-cancel]{margin-top:12px}@media(max-width:480px){.activity-patterns{margin:16px 0;padding:16px}.pattern-steps{grid-template-columns:1fr}.pattern-actions>*{flex:1}}
.pattern-item{display:flex;align-items:flex-start;gap:8px}.pattern-item .pattern-card{flex:1;min-width:0}.pattern-start{min-height:48px;min-width:62px;background:#c9de91;color:#172118}.pattern-start:disabled{opacity:.45}.pattern-stop{display:block;margin:12px auto;padding:10px 16px;min-height:44px}
.pattern-controls{display:grid;gap:6px}.pattern-controls>[data-pattern-auto]{min-height:38px;min-width:76px;padding:6px 8px;font-size:12px}.pattern-controls>[aria-pressed="true"]{background:#466c50;color:#fff}
.pattern-card summary>span:last-child{flex-shrink:0;white-space:nowrap;font-size:12px}
@media(max-width:650px){.player-shell .topactions>.save-status{display:inline-block}}
#toast{z-index:110}
.heroine-scene.scene-shopTattoo,.heroine-scene.scene-shopHair,.heroine-scene.scene-shopStyle,.heroine-scene.scene-shopCars{background-image:url('./assets/requested-shops-20261102/shop-backgrounds-v1.png');background-size:200% 200%;background-position:0 0}
.heroine-scene.scene-shopHair{background-position:100% 0}.heroine-scene.scene-shopStyle{background-position:0 100%}.heroine-scene.scene-shopCars{background-position:100% 100%}
.cinema-shopTattoo,.cinema-shopHair,.cinema-shopStyle,.cinema-shopCars{--floor:.89;--actor-h:.48;--focus:50;--shop-pos:0 0}
.cinema-shopHair{--shop-pos:100% 0}.cinema-shopStyle{--shop-pos:0 100%}.cinema-shopCars{--shop-pos:100% 100%}
:is(.cinema-shopTattoo,.cinema-shopHair,.cinema-shopStyle,.cinema-shopCars) .cinema-landscape,.story-cinema:is(.cinema-shopTattoo,.cinema-shopHair,.cinema-shopStyle,.cinema-shopCars):before{background-image:url('./assets/requested-shops-20261102/shop-backgrounds-v1.png');background-size:200% 200%;background-position:var(--shop-pos)}
.driving-rear svg.shop-child-portrait{width:28%;height:100%;flex:none}
