:root {
  color-scheme: dark;
  --bg: #142629;
  --text: #f5e8cb;
  --muted: #bcc1ad;
  --accent: #e7b97c;
  --line: #f2dca727;
  --paper: #eee5d2;
  --ink: #3f493c;
  --serif: 'Noto Serif CJK KR', 'Nanum Myeongjo', Georgia, serif;
  --sans: 'Noto Sans CJK KR', 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --safe-left: env(safe-area-inset-left, 0px);
  --safe-right: env(safe-area-inset-right, 0px);
}
* { box-sizing: border-box; }
html, body { width: 100%; height: 100%; margin: 0; overflow: hidden; overscroll-behavior: none; }
body { background: #000; color: var(--text); font: 14px/1.65 var(--sans); -webkit-tap-highlight-color: transparent; }
body, button { -webkit-user-select: none; user-select: none; }
button, input, a { touch-action: manipulation; }
button { min-height: 44px; border: 1px solid var(--line); border-radius: 9px; padding: 10px 16px; color: inherit; background: #ffffff08; cursor: pointer; font: inherit; }
button:hover:not(:disabled) { filter: brightness(1.12); }
button:active:not(:disabled) { transform: scale(.98); }
button:disabled { opacity: .48; cursor: default; }
button:focus-visible, input:focus-visible, a:focus-visible { outline: 3px solid #edba76; outline-offset: 3px; }
h1, h2, h3, h4, p { margin: 0; }
h1, h2, h3 { font-family: var(--serif); font-weight: 500; }
[hidden] { display: none !important; }
.primary { display: flex; align-items: center; justify-content: space-between; gap: 25px; background: linear-gradient(#efc58c, #d9a468); color: #3b3429; border: 1px solid #f6dba1; font-weight: 700; box-shadow: 0 4px 0 #6e4930, 0 8px 20px #0005; }
.primary span { font-size: 20px; }
.round-button { width: 44px; height: 44px; padding: 0; border-radius: 50%; display: grid; place-items: center; font-size: 24px; flex-shrink: 0; }
.eyebrow { font: 9px var(--sans); letter-spacing: 2px; color: #9d865e; }
/* A single game stage, with controls anchored to the device's safe area. */
.game-app, .restaurant, .scene { position: fixed; inset: 0; width: 100%; height: 100%; height: 100dvh; }
.game-app { background: var(--bg); animation: enter-game .65s ease-out; }
.scene { isolation: isolate; overflow: hidden; background: radial-gradient(ellipse at 50% 45%, #96785066, transparent 72%), linear-gradient(#34433e 0%, #66533e 45%, #292d29 75%, #142629 100%); }
.scene::before { content: ''; position: absolute; inset: -40px; z-index: -1; background: url('./assets/interior.svg') center/cover; filter: blur(24px) brightness(.45); transform: scale(1.15); }
.scene::after { content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 4; background: linear-gradient(#10212688, transparent 24%, transparent 65%, #102126ed); }
.world { position: absolute; top: 46%; left: 50%; transform: translate(-50%, -50%); width: min(100vw, 156.25dvh); aspect-ratio: 1000/640; }
.interior-art { position: absolute; width: 100%; height: 100%; display: block; }
.is-prep .interior-art { filter: brightness(.78); }
.game-hud { position: fixed; z-index: 5; top: calc(var(--safe-top) + 16px); left: calc(var(--safe-left) + 22px); right: calc(var(--safe-right) + 22px); display: flex; align-items: center; gap: 14px; pointer-events: none; }
.game-hud > * { pointer-events: auto; }
.night-hud, .wallet-hud { display: flex; align-items: center; background: #14282de8; border: 1px solid #d6bd8238; box-shadow: 0 5px 20px #0003; backdrop-filter: blur(14px); }
.night-hud { gap: 15px; padding: 8px 20px 8px 15px; border-radius: 14px; }
.hud-moon { font: 32px var(--serif); color: var(--accent); }
.night-hud b { font-size: 13px; font-weight: 500; }
#open-status { display: block; font-size: 9px; color: #bac5aa; }
#clock { border-left: 1px solid var(--line); margin-left: 6px; padding-left: 17px; font-size: 18px; letter-spacing: 2px; font-variant-numeric: tabular-nums; }
.wallet-hud { margin-left: auto; gap: 24px; padding: 10px 22px; border-radius: 14px; }
.wallet-hud > div + div { border-left: 1px solid var(--line); padding-left: 24px; }
.wallet-hud span { display: block; color: #b6c0a7; font-size: 9px; line-height: 1.3; }
.wallet-hud strong { font-size: 19px; font-weight: 500; line-height: 1.5; }
.wallet-hud small { font-size: 9px; color: #b6c0a7; }
.game-hud .round-button { background: #14282de8; border-color: #d6bd8238; color: #dbc99f; }
.service-bar { position: fixed; z-index: 5; left: 50%; bottom: calc(var(--safe-bottom) + 110px); transform: translateX(-50%); display: flex; align-items: center; flex-direction: column; gap: 12px; width: min(90vw, 650px); pointer-events: none; }
.service-bar p { font-size: 12px; color: #eee2c4; text-shadow: 0 2px 6px #000, 0 0 12px #000; text-align: center; }
.service-bar button { pointer-events: auto; min-width: 240px; min-height: 53px; border-radius: 25px; font-size: 14px; padding: 11px 28px; }
.service-bar button:disabled { pointer-events: none; min-height: 32px; min-width: 140px; padding: 3px 16px; font-size: 12px; background: #142b2dd9; border-color: #dbc5973a; color: #c7d1b8; box-shadow: none; opacity: 1; }
.game-dock { position: fixed; z-index: 5; bottom: calc(var(--safe-bottom) + 15px); left: 50%; transform: translateX(-50%); display: flex; gap: 12px; padding: 8px 16px; border-radius: 22px; border: 1px solid #dbc59738; background: #172d31ee; box-shadow: 0 8px 28px #0006, inset 0 1px 0 #ffffff0c; backdrop-filter: blur(15px); }
.game-dock button { border: 0; background: transparent; width: 84px; min-height: 63px; padding: 0 6px; position: relative; }
.game-dock button > span { display: block; color: #e9be7d; font: 27px/1.3 var(--serif); }
.game-dock b { font-size: 10px; font-weight: 500; color: #d4ceb6; }
.game-dock button.active { background: #e3c79817; border-radius: 12px; }
#story-badge { position: absolute; right: 14px; top: 3px; height: 8px; width: 8px; border-radius: 50%; background: #f0bd78; box-shadow: 0 0 13px #ecae60; }
.steam { position: absolute; top: 37%; left: 22%; height: 35px; width: 13px; border-radius: 50%; border-left: 3px solid #faf0c866; filter: blur(2px); animation: steam 4s infinite ease-out; z-index: 1; pointer-events: none; }
.steam-two { margin-left: 10px; animation-delay: 2s; }
.extra-lantern { position: absolute; right: 5%; top: 13%; font-size: 46px; filter: drop-shadow(0 0 23px #f6a04b); }
.extra-plants { position: absolute; right: 4%; bottom: 10%; font-size: 53px; }
.customer { position: absolute; bottom: 5%; width: 16%; height: 39%; text-align: center; z-index: 3; filter: drop-shadow(0 5px 3px #0002); }
.customer svg { width: 100%; height: 100%; display: block; }
.seat-0 { left: 19%; } .seat-1 { left: 41.5%; } .seat-2 { left: 64%; }
.customer-name { position: absolute; left: 50%; bottom: -4%; transform: translateX(-50%); font-size: 11px; white-space: nowrap; border: 1px solid var(--line); background: #183035ed; border-radius: 20px; padding: 2px 12px; }
.thought { position: absolute; bottom: 94%; left: 50%; transform: translateX(-50%); min-width: 73px; min-height: 76px; padding: 6px 13px; background: #f8edd4; color: #4f4b3f; border: 2px solid #c5b697; border-radius: 23px; box-shadow: 0 4px 10px #0002; }
.thought::after { content: ''; position: absolute; bottom: -9px; left: 22px; height: 12px; width: 12px; background: inherit; border-radius: 0 0 3px 0; transform: rotate(45deg); border-right: 2px solid #c5b697; border-bottom: 2px solid #c5b697; }
.thought > span { font-size: 29px; display: block; line-height: 1.25; animation: bob 4s infinite ease-in-out; }
.thought small { font-size: 10px; display: block; white-space: nowrap; }
.thought:disabled { opacity: 1; }
.thought:active:not(:disabled) { transform: translateX(-50%); }
.thought.happy { background: #d8e6cf; min-height: 56px; }
.happy > span { color: #658365; font-size: 23px; }
.selected .thought { outline: 3px solid #e9bb78; outline-offset: 4px; }
.customer.arriving { animation: guest-enter 1.5s ease-out both; }
/* Tools are game overlays, never sections below the play area. */
.sheet { color-scheme: light; color: var(--ink); background: var(--paper); border: 1px solid #e6cd9c; border-radius: 20px; padding: 0; width: min(92vw, 720px); max-width: none; max-height: calc(100dvh - var(--safe-top) - var(--safe-bottom) - 40px); box-shadow: 0 20px 90px #0008; overflow: auto; overscroll-behavior: contain; }
.sheet::backdrop { background: #0a2029a8; backdrop-filter: blur(6px); }
.sheet-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 19px 24px; position: sticky; top: 0; z-index: 5; background: #eee5d2f7; border-bottom: 1px solid #72795530; }
.sheet-header h2 { font-size: 22px; margin-top: 3px; }
.sheet .round-button { background: #686e5410; border-color: #6e795332; font-size: 27px; }
.sheet-body { padding: 22px 25px 26px; }
.kitchen { width: min(92vw, 580px); }
.kitchen-idle { text-align: center; padding: 20px 0; }
.big-icon { font-size: 44px; display: block; color: #ab8b57; margin-bottom: 12px; }
.kitchen h3 { font-size: 18px; }
.kitchen-idle p { font-size: 12px; color: #7b7e69; line-height: 1.9; margin-top: 12px; }
.how-to { list-style: none; padding: 18px 0 0; margin: 0; border-top: 1px dashed #545b3633; }
.how-to li { display: flex; gap: 13px; padding: 9px 0; color: #777966; font-size: 12px; }
.how-to b { font-size: 10px; color: #a18561; }
.guest-order h3 { display: flex; align-items: center; justify-content: space-between; margin: 7px 0; font-size: 22px; }
.guest-order h3 > span { font-size: 29px; }
.guest-line { font-size: 12px; color: #797a66; line-height: 1.8; margin-bottom: 17px; }
.recipe-slip { padding: 13px 17px; background: #fff8e8; border-left: 3px solid #b5986d; }
.recipe-slip > span { display: block; color: #9b886c; font-size: 10px; }
.recipe-slip strong { font: 600 20px/1.8 var(--serif); }
.recipe-slip small { display: block; font-size: 11px; color: #8d8871; }
.recipe-slip p { font-size: 11px; color: #71725c; border-top: 1px dashed #88805f33; margin-top: 9px; padding-top: 9px; }
.prep-step, .cook-step { padding-top: 21px; }
.step-title { display: flex; align-items: center; gap: 9px; }
.step-title > b { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; background: #d8d9c1; color: #607156; font-size: 10px; font-weight: 500; }
.step-title h4 { font-size: 13px; font-weight: 500; }
.step-title > small { margin-left: auto; font-size: 10px; color: #8c8d78; }
.ingredient-picker { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; margin-top: 13px; }
.ingredient { border: 1px solid #c9c8b4; background: #e8e3d3; display: flex; flex-direction: column; align-items: center; padding: 8px 0 6px; font-size: 10px; border-radius: 7px; min-height: 77px; }
.ingredient > span { font-size: 22px; line-height: 1.5; }
.ingredient small { font-size: 10px; color: #7c7b69; }
.ingredient.picked { background: #d4dfc8; border-color: #74896b; box-shadow: inset 0 0 0 1px #74896b; }
.fine-print { font-size: 10px; color: #848671; line-height: 1.8; margin-top: 10px; }
.cook-method { font-size: 11px; color: #82816c; margin-top: 10px; }
.heat-label { display: flex; justify-content: space-between; font-size: 10px; color: #8d8876; margin: 14px 0 7px; }
.heat-label > span:nth-child(2) { padding-left: 45px; color: #5f7d60; }
.heat-meter { height: 14px; border-radius: 6px; background: linear-gradient(90deg, #d6cfae, #d5b270 50%, #b77c61); position: relative; margin: 0 6px 13px; }
.perfect-zone { position: absolute; left: 55%; width: 20%; background: #7e9b76; height: 100%; border-left: 1px solid #f5f0d1; border-right: 1px solid #f5f0d1; }
.heat-meter i { height: 25px; width: 4px; border-radius: 2px; background: #3c493d; position: absolute; left: 0; top: -6px; transform: translateX(-2px); box-shadow: 0 0 0 2px #eee7d7; }
.slow-option { display: flex; align-items: center; gap: 6px; font-size: 11px; color: #797e6a; margin-top: 8px; cursor: pointer; min-height: 38px; }
.slow-option input { accent-color: #70876b; width: 17px; height: 17px; }
.heat-slider { display: flex; align-items: center; gap: 12px; font-size: 11px; margin-top: 10px; }
.heat-slider input { width: 100%; accent-color: #6d8868; min-height: 32px; }
.cook-button { width: 100%; margin-top: 13px; padding: 13px 20px; background: #627c64; color: #fff4db; border-color: #768e6e; box-shadow: 0 4px 0 #405b46; }
.receipt { text-align: center; padding: 20px 0 27px; }
.receipt > span { font-size: 12px; color: #8d7e61; }
.receipt h3 { margin-top: 12px; }
.receipt-score { font: 54px/1.6 var(--serif); color: #6b8462; }
.receipt-score small { font: 13px var(--sans); color: #99907a; }
.receipt p { font-size: 12px; color: #8e846d; }
.receipt p b { color: #677f60; margin-left: 12px; }
.summary { text-align: center; }
.summary h3 { font-size: 23px; }
.summary > p { font-size: 12px; color: #8e8572; margin-top: 10px; }
.summary dl { text-align: left; margin: 24px 0 15px; }
.summary dl > div { display: flex; justify-content: space-between; border-top: 1px dashed #6c6b4d33; padding: 13px 0; font-size: 14px; }
.summary dt { color: #89816b; }
.summary dt small { font-size: 9px; }
.summary dd { margin: 0; font-weight: 600; }
.management-note { font-size: 12px; color: #777e68; line-height: 1.9; margin-bottom: 17px; }
.management-note > span { display: block; font-size: 11px; color: #9a815a; }
.stock-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.stock-card { display: flex; align-items: center; gap: 13px; padding: 15px; border: 1px solid #babf9f77; border-radius: 10px; background: #f9f0dc; }
.stock-icon { font-size: 29px; }
.stock-card h3 { font: 500 14px var(--sans); }
.stock-card div > span { font-size: 10px; color: #898974; }
.stock-card b { color: #667c5b; font-weight: 500; }
.stock-card button { margin-left: auto; padding: 6px 12px; border-color: #b7bc9d; color: #6f7657; background: #e4e5ce; min-width: 57px; font-size: 13px; }
.stock-card small { display: block; font-size: 10px; }
.menu-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.menu-card { border: 1px solid #babe9e77; border-radius: 10px; padding: 21px 15px; background: #f8f0dd; display: flex; align-items: center; flex-direction: column; }
.menu-icon { font-size: 39px; }
.menu-card > small { font-size: 10px; color: #9d8d6b; margin-top: 8px; }
.menu-card h3 { font-size: 18px; margin: 6px 0; }
.menu-card p { font-size: 10px; color: #828870; }
.menu-price { font-size: 12px; color: #987e4f; margin-top: 10px; }
.menu-card button { width: 100%; margin-top: 15px; font-size: 11px; border-color: #b6bb99; background: #e4e7cf; color: #64774f; }
.menu-card.locked { border-style: dashed; background: #e4dfce; }
.upgrade-grid { display: grid; gap: 14px; }
.upgrade-card { display: flex; align-items: center; gap: 18px; border: 1px solid #b6bd9e77; background: #f8f0dd; border-radius: 10px; padding: 20px; }

.upgrade-card h3 { font-size: 21px; margin-bottom: 6px; }
.upgrade-card p { font-size: 11px; color: #7b8269; }
.upgrade-card button { margin-left: auto; white-space: nowrap; font-size: 11px; border-color: #b6bb99; background: #e4e7cf; color: #64774f; }
.rescue-box { padding: 14px; border: 1px solid #c9a96c99; background: #ddc89f33; border-radius: 7px; margin-bottom: 18px; font-size: 12px; }
.rescue-box button { margin-top: 10px; background: #ddd8bb; border-color: #bbb18c; font-size: 11px; }
.story { background: #233b3b; color-scheme: dark; color: #f0e4c3; border-color: #8e967566; width: min(92vw, 770px); }
.story .sheet-header { background: #233b3bf7; border-bottom-color: #b9bd9633; }
.story .eyebrow { color: #b9bf9d; }
.story-dialogue { font-size: 15px; line-height: 2.1; }
.story-dialogue p + p { margin-top: 9px; }
.story-dialogue b { color: #edbd7d; font-size: 13px; margin-right: 8px; }
.story-narration { font-size: 12px; color: #b3bfa5; padding-top: 9px; }
.story-choices { display: grid; gap: 10px; margin-top: 23px; }
.story-choices button { background: #b9b58a0c; border-color: #babd8f44; text-align: left; font-size: 13px; padding: 15px 20px; }
.story-choices small { color: #e4bc80; white-space: nowrap; margin-left: 15px; font-size: 11px; }
.story-memory { font-size: 14px; color: #c7cfb5; line-height: 2; }
.story-memory b { color: #e4bd7e; white-space: nowrap; }
.settings { width: min(90vw, 440px); }
.settings-list { display: grid; gap: 12px; }
.settings-list button { display: flex; justify-content: space-between; border-color: #a5af8a77; background: #e2e2cb; font-size: 14px; padding: 15px 19px; }
.settings-list p { font-size: 11px; color: #84866e; line-height: 1.7; }
.confirm-dialog { width: min(90vw, 450px); }
.confirm-dialog h2 { font-size: 22px; margin-bottom: 15px; }
.confirm-dialog p { font-size: 12px; color: #80836c; }
.confirm-dialog form { display: flex; justify-content: flex-end; gap: 10px; margin-top: 25px; }
.confirm-dialog button { border-color: #a8ac8c77; font-size: 12px; }
#toast { width: max-content; position: fixed; left: 50%; bottom: calc(var(--safe-bottom) + 205px); transform: translate(-50%, 12px); background: #f2e5c9; color: #3e493c; box-shadow: 0 4px 20px #0005; border: 1px solid #b8b58a66; border-radius: 30px; padding: 11px 22px; font-size: 12px; max-width: 90vw; text-align: center; opacity: 0; pointer-events: none; z-index: 20; transition: opacity .25s, transform .25s; }
#toast.visible { opacity: 1; transform: translate(-50%, 0); }
/* Original photorealistic portrait scenes, animated effects, and baked-in captions. */
.cinema { padding: 0; margin: 0; border: 0; border-radius: 0; max-width: none; max-height: none; width: 100vw; height: 100vh; height: 100dvh; background: #000; color: #eee5d3; overflow: hidden; }
.cinema::backdrop { background: #000; }
.cinema video { display: block; width: 100%; height: 100%; object-fit: contain; background: #000; }
.cinema-actions { position: absolute; top: calc(var(--safe-top) + 15px); right: calc(var(--safe-right) + 20px); display: flex; gap: 10px; }
.cinema-actions button { min-height: 40px; font-size: 11px; padding: 9px 15px; border-color: #ffffff26; background: #0007; border-radius: 25px; color: #ded9c8; }
.cinema-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; align-items: center; gap: 22px; padding: 18px 28px; border-radius: 40px; background: #17292ce8; backdrop-filter: blur(8px); font-size: 15px; box-shadow: 0 5px 25px #0008; }
.cinema-play:active:not(:disabled) { transform: translate(-50%, -50%) scale(.98); }
.cinema-play span { color: #edbd7d; }
.cinema-pause { position: absolute; bottom: calc(var(--safe-bottom) + 12px); left: calc(var(--safe-left) + 18px); border: 0; border-radius: 50%; background: #0006; width: 44px; padding: 0; font-size: 15px; color: #cac5b5; }
.cinema-progress { position: absolute; bottom: 0; height: 2px; left: 0; right: 0; background: #fff1; }
.cinema-progress span { display: block; width: 0; height: 100%; background: #caaf7b; }
#video-status { position: absolute; left: 20px; right: 20px; bottom: calc(var(--safe-bottom) + 65px); text-align: center; font-size: 12px; color: #c2baa7; pointer-events: none; }
.rotate-hint { display: none; }
/* The browser URL is the installation entry; play starts in the installed app. */
.install-screen { position: fixed; inset: 0; background: #10252b; display: grid; place-items: center; isolation: isolate; overflow: auto; padding: calc(var(--safe-top) + 30px) 20px calc(var(--safe-bottom) + 30px); }
.install-backdrop { position: fixed; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; filter: brightness(.33); }
.install-screen::before { content: ''; position: fixed; inset: 0; z-index: -1; background: linear-gradient(#10252b44, #10252b22 45%, #10252b); }
.install-content { text-align: center; width: min(90vw, 400px); }
.app-seal { display: inline-grid; place-items: center; width: 56px; height: 68px; border-radius: 22px 22px 7px 7px; border: 1px solid #d3b37b77; font: 34px var(--serif); color: #e4bc7f; margin-bottom: 18px; }
.install-overline { font: 11px var(--serif); letter-spacing: 4px; color: #c8c3a6; }
.install-content h1 { font-size: 48px; letter-spacing: 9px; margin: 15px 0 8px; }
.install-description { font: 15px/2 var(--serif); color: #d6ccb0; }
.install-button { margin: 43px auto 0; width: 255px; border-radius: 28px; padding: 14px 25px; font-size: 14px; }
#install-hint { font-size: 11px; color: #b5bca4; line-height: 1.9; margin-top: 20px; }
#install-guide { margin-top: 20px; padding: 18px 22px; border: 1px solid #d6c29a33; background: #172f32ed; border-radius: 15px; font-size: 12px; line-height: 2; color: #d5d5bc; }
#install-guide p + p { margin-top: 8px; }
#install-status { margin-top: 18px; font-size: 10px; color: #aeb9a0; }
@keyframes steam { 0% { transform: translateY(5px) scale(.7); opacity: 0; } 30% { opacity: .7; } 100% { transform: translateY(-28px) scale(1.6); opacity: 0; } }
@keyframes bob { 50% { transform: translateY(-3px); } }
@keyframes guest-enter { from { transform: translateX(120px) scale(.8); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes enter-game { from { opacity: 0; } to { opacity: 1; } }
@media (orientation: portrait) {
  .world { width: 150vw; top: 47%; }
  .game-hud { left: calc(var(--safe-left) + 12px); right: calc(var(--safe-right) + 12px); top: calc(var(--safe-top) + 12px); gap: 8px; flex-wrap: wrap; }
  .night-hud { padding: 7px 12px; gap: 9px; }
  .hud-moon { font-size: 25px; }
  .night-hud b { font-size: 11px; }
  #clock { font-size: 14px; padding-left: 10px; margin-left: 2px; letter-spacing: 1px; }
  .wallet-hud { gap: 13px; padding: 8px 12px; }
  .wallet-hud > div + div { padding-left: 13px; }
  .wallet-hud strong { font-size: 15px; }
  .wallet-hud span { font-size: 8px; }
  .wallet-hud small { font-size: 8px; }
  .game-hud .round-button { position: absolute; right: 0; top: 65px; }
  .customer-name { font-size: 10px; }
  .thought { min-width: 58px; min-height: 63px; padding: 5px 9px; border-radius: 19px; }
  .thought > span { font-size: 25px; }
  .thought small { font-size: 9px; }
  .extra-lantern { font-size: 33px; }
  .extra-plants { font-size: 39px; }
  .game-dock { bottom: calc(var(--safe-bottom) + 13px); padding: 8px 12px; gap: 5px; }
  .game-dock button { width: 70px; }
  .service-bar { bottom: calc(var(--safe-bottom) + 117px); gap: 13px; }
  .service-bar p { font-size: 11px; max-width: 310px; }
  .sheet { position: fixed; inset: auto 0 0; margin: 0 auto; width: 100vw; border-radius: 23px 23px 0 0; max-height: calc(92dvh - var(--safe-top)); padding-bottom: var(--safe-bottom); }
  .sheet-header { padding: 16px 20px; }
  .sheet-header h2 { font-size: 21px; }
  .sheet-body { padding: 20px 20px 27px; }
  .ingredient-picker { grid-template-columns: repeat(4, 1fr); }
  .stock-card { gap: 9px; padding: 12px 10px; }
  .stock-icon { font-size: 24px; }
  .stock-card h3 { font-size: 12px; }
  .stock-card div > span { font-size: 9px; }
  .stock-card button { min-width: 45px; padding: 7px; }
  .menu-card { padding: 17px 10px; }
  .menu-card h3 { font-size: 16px; }
  .menu-card button { font-size: 10px; padding: 9px 6px; }
  .upgrade-card { flex-wrap: wrap; padding: 18px; gap: 13px; }
  .upgrade-card button { width: 100%; }
  .upgrade-card h3 { font-size: 19px; }
  .story-dialogue { font-size: 13px; }
  .story-choices button { font-size: 12px; padding: 13px 15px; }
  .settings, .confirm-dialog { inset: 0; margin: auto; width: 90vw; border-radius: 20px; height: fit-content; padding-bottom: 0; }
  .rotate-hint { display: block; position: absolute; bottom: calc(var(--safe-bottom) + 84px); width: 100%; text-align: center; font-size: 10px; color: #aaa28f; pointer-events: none; }
}
@media (max-height: 550px) and (orientation: landscape) {
  .game-hud { top: calc(var(--safe-top) + 9px); left: calc(var(--safe-left) + 12px); right: calc(var(--safe-right) + 12px); }
  .night-hud { padding: 4px 13px; gap: 9px; border-radius: 12px; }
  .hud-moon { font-size: 25px; }
  .night-hud b { font-size: 11px; }
  #clock { font-size: 14px; margin-left: 0; padding-left: 11px; }
  .wallet-hud { padding: 6px 15px; gap: 15px; }
  .wallet-hud > div + div { padding-left: 15px; }
  .wallet-hud strong { font-size: 15px; }
  .wallet-hud span { font-size: 8px; }
  .game-hud .round-button { height: 40px; width: 40px; min-height: 40px; }
  .world { width: min(102vw, 150dvh); top: 44%; }
  .game-dock { left: auto; right: calc(var(--safe-right) + 14px); bottom: calc(var(--safe-bottom) + 10px); transform: none; gap: 2px; padding: 4px 8px; border-radius: 16px; }
  .game-dock button { width: 61px; min-height: 48px; }
  .game-dock button > span { font-size: 21px; }
  .game-dock b { font-size: 8px; }
  .service-bar { left: calc(var(--safe-left) + 18px); bottom: calc(var(--safe-bottom) + 12px); transform: none; width: auto; max-width: 48vw; align-items: start; gap: 6px; }
  .service-bar p { font-size: 9px; text-align: left; max-width: 340px; }
  .service-bar button { min-width: 185px; min-height: 43px; padding: 7px 20px; font-size: 12px; }
  .service-bar button:disabled { min-height: 25px; min-width: 115px; font-size: 10px; }
  .customer-name { font-size: 8px; padding: 1px 9px; }
  .thought { min-width: 54px; min-height: 57px; padding: 4px 8px; border-radius: 17px; }
  .thought > span { font-size: 22px; }
  .thought small { font-size: 8px; }
  .extra-lantern { font-size: 31px; }
  .extra-plants { font-size: 36px; }
  .sheet { max-height: calc(100dvh - var(--safe-top) - var(--safe-bottom) - 16px); }
  .sheet-header { padding: 10px 22px; }
  .sheet-header h2 { font-size: 19px; }
  .sheet-header .eyebrow { font-size: 8px; }
  .sheet-body { padding: 17px 23px 22px; }
  #toast { bottom: calc(var(--safe-bottom) + 92px); font-size: 11px; padding: 9px 18px; }
  .install-content h1 { font-size: 35px; margin: 8px 0; }
  .app-seal { width: 38px; height: 45px; font-size: 25px; margin-bottom: 8px; }
  .install-overline { font-size: 9px; }
  .install-description { font-size: 12px; }
  .install-button { margin-top: 18px; padding: 10px 22px; min-height: 43px; }
  #install-hint { margin-top: 12px; font-size: 10px; }
}
@media (max-width: 350px) and (orientation: portrait) {
  .wallet-hud { gap: 7px; padding: 8px; }
  .wallet-hud > div + div { padding-left: 7px; }
  .night-hud { gap: 5px; padding: 7px 9px; }
  .wallet-hud strong { font-size: 13px; }
  .game-dock button { width: 62px; }
  .stock-grid { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media (max-height: 550px) and (orientation: landscape) {
  .kitchen { width: min(94vw, 980px); }
  .kitchen #order-panel { display: grid; grid-template-columns: minmax(180px, .85fr) minmax(300px, 1.5fr); gap: 0 24px; }
  .kitchen .guest-order { grid-row: span 2; }
  .kitchen .prep-step { padding-top: 0; }
  .kitchen .cook-step { padding-top: 10px; }
  .kitchen .fine-print, .kitchen .cook-method { display: none; }
  .kitchen .ingredient-picker { margin-top: 8px; }
  .kitchen .ingredient { min-height: 61px; padding: 4px 0; font-size: 9px; }
  .kitchen .ingredient > span { font-size: 19px; }
  .kitchen .ingredient small { font-size: 9px; }
  .kitchen .heat-label { margin: 8px 0 5px; }
  .kitchen .heat-meter { height: 11px; margin-bottom: 5px; }
  .kitchen .slow-option { min-height: 26px; font-size: 10px; margin-top: 4px; }
  .kitchen .cook-button { min-height: 43px; padding: 7px 16px; margin-top: 8px; }
  .kitchen .heat-slider { margin-top: 3px; }
  .kitchen .receipt, .kitchen .summary, .kitchen .kitchen-idle { grid-column: 1 / -1; }
  .kitchen .how-to { grid-column: 1 / -1; }
}

@media (max-aspect-ratio: 9/16) {
  .cinema video { object-fit: cover; }
}
/* Living diner: one scrollable room, articulated portraits and visible upgrades. */
.scene { touch-action:pan-y; background:#141b19; }
.scene::before { background-image:url('./assets/restaurant-counter.webp'); filter:blur(22px) brightness(.48); }
.scene::after { background:linear-gradient(#0c1b1ecc,transparent 30%,transparent 70%,#0d2024f5 96%); }
.world { width:max(880px,115vw); max-width:1500px; aspect-ratio:3/2; top:49%; transform:translate(calc(-50% + var(--pan,0px)),-50%); transition:transform .12s ease-out; }
.interior-art { object-fit:cover; }
.is-prep .interior-art { filter:none; }
.exterior-art { display:none; position:absolute; inset:0; background:url('./assets/intro-world.webp') left top / 200% 200%; }
.exterior-world { width:min(100vw,70dvh); aspect-ratio:470/836; top:50%; }
.exterior-world .interior-art,.exterior-world .steam,.exterior-world .counter-front { display:none; }
.exterior-world .exterior-art { display:block; }
.scene-controls { position:fixed; z-index:6; top:calc(var(--safe-top) + 130px); left:16px; right:16px; display:flex; align-items:center; flex-wrap:wrap; justify-content:space-between; gap:6px; pointer-events:none; }
.scene-controls button { background:#122629d9; border-color:#d5b77d50; border-radius:22px; min-height:38px; padding:6px 14px; font-size:11px; pointer-events:auto; }
#pan-hint { width:100%; order:2; text-align:center; font-size:10px; color:#e8d7b8; text-shadow:0 2px 8px #000; }
.pan-controls { display:flex; gap:10px; align-items:center; }
.pan-controls button { width:38px; padding:0; font-size:24px; }
#pan-position { font-size:10px; text-shadow:0 2px 5px #000; }
.progress-hud { position:fixed; z-index:5; top:calc(var(--safe-top) + 83px); left:16px; max-width:calc(100vw - 90px); display:flex; align-items:center; gap:9px; flex-wrap:wrap; background:#13292cde; border:1px solid #d8bb8233; border-radius:12px; padding:6px 11px; font-size:10px; }
.progress-hud b { color:#edbd7d; }
.progress-hud progress { width:62px; height:5px; accent-color:#d3ad70; border:0; border-radius:9px; }
.owner { position:absolute; z-index:1; bottom:40%; width:15%; aspect-ratio:3/4; transform:translateX(-50%); transition:left 1.7s ease-in-out; }
.actor { position:relative; display:block; width:100%; height:100%; transform-origin:50% 85%; animation:actor-breathe 4.5s ease-in-out infinite; will-change:transform; backface-visibility:hidden; }
.actor-art { position:absolute; inset:0; background-image:url('./assets/characters-animated.webp'); background-size:400% 200%; background-position:var(--sprite-x) var(--sprite-y); background-repeat:no-repeat; }
.pleased .actor { animation:actor-content 4s ease-in-out infinite; }
.disappointed .actor { animation:actor-thoughtful 5s ease-in-out infinite; }
.talking .actor { animation:actor-converse 2.4s ease-in-out infinite; }
.cooking .actor { animation:actor-work 2s ease-in-out infinite; }
.owner-caption { position:absolute; bottom:0; left:50%; transform:translateX(-50%); font-size:9px; white-space:nowrap; color:#e8d1ac; padding:2px 9px; background:#27302ae0; border-radius:15px; }
.customer { bottom:10%; width:15%; height:auto; aspect-ratio:3/4; filter:none; }
.customer-avatar { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:none; overflow:visible; border-radius:0; }
.customer-avatar:hover:not(:disabled){filter:none;}
.customer-avatar:disabled{opacity:1;}
.customer-avatar:active:not(:disabled){transform:none;}
.seat-0 { left:28%; }.seat-1 { left:43%; }.seat-2 { left:58%; }
.customer-name { bottom:-8%; background:#172d2de6; border:1px solid #c7b68d55; padding:2px 10px; border-radius:12px; font-size:10px; }
.thought { z-index:5; top:-24%; min-height:55px; padding:5px 12px; box-shadow:0 4px 14px #0005; }
.thought.happy { opacity:1; }
.ambient-line { position:absolute; z-index:8; width:185px; max-width:42vw; left:50%; bottom:108%; transform:translateX(-50%); background:#fff0d9f2; color:#4c4838; padding:10px 13px; border:1px solid #bba47c; border-radius:14px 14px 14px 2px; font-size:11px; line-height:1.6; text-align:left; box-shadow:0 5px 18px #0004; pointer-events:none; }
.customer .ambient-line { bottom:73%; left:80%; }
.placed-decoration { position:absolute; z-index:2; pointer-events:none; filter:drop-shadow(3px 5px 5px #0007); }
.placed-decoration svg { display:block; width:100%; height:auto; }
.decor-lantern { filter:drop-shadow(0 0 20px #ffb555aa); }
.decor-noren { transform-origin:top center; animation:cloth 7s ease-in-out infinite; }
.decor-sign { filter:drop-shadow(0 0 12px #f7c274); }
.guest-profile { display:grid; grid-template-columns:120px 1fr; gap:17px; align-items:center; margin-bottom:20px; padding-bottom:18px; border-bottom:1px solid #9b8a6038; }
.profile-portrait { aspect-ratio:3/4; background:radial-gradient(ellipse at 50% 40%,#ad9876,#655d49); border-radius:55px 55px 12px 12px; overflow:hidden; }
.guest-profile h3 { display:block; font-size:24px; margin:2px 0 8px; }
.guest-profile p { font-size:11px; margin:4px 0; color:#69735c; }
.guest-profile .profile-bio { margin:9px 0; color:#767563; line-height:1.8; }
.guest-profile small { font-size:10px; line-height:1.7; color:#8b7859; }
.regular-badge { display:inline-block; padding:2px 9px; border:1px solid #9d7248; border-radius:13px; background:#e9d8b5; color:#8e6037!important; vertical-align:middle; }
.gift-button { margin-bottom:16px; width:100%; color:#6a774f; background:#d5ddbf; border-color:#aeb891; font-size:11px; }
.decor-thumbnail { display:block; width:65px; min-width:65px; height:70px; border-radius:12px; background:#d4c3a330; }
.decor-thumbnail svg { width:100%;height:100%; }
.upgrade-card small,.unlock-condition { font-size:10px; color:#8b7558; line-height:1.7; margin-top:6px; }
.upgrade-card.locked { background:#dfdacb; border-style:dashed; }
.upgrade-card.locked .decor-thumbnail { filter:saturate(.35); }
.close-ready { animation:close-pulse 1.8s ease-in-out infinite; outline:2px solid #f7ce89; outline-offset:4px; }
.conversation-cast { display:flex; gap:20px; justify-content:center; margin-bottom:15px; }
.conversation-cast > div { width:110px; aspect-ratio:3/4; background:#172b29; border-radius:50px 50px 10px 10px; overflow:hidden; }
.report { width:min(94vw,620px); background:#eee3cb; }
.report-heading { text-align:center; }
.report-heading > span { letter-spacing:5px;font:12px var(--serif);color:#99784c; }
.report-heading h3 { font-size:24px;margin:12px 0; }
.report-heading p { font-size:12px;color:#7c7c64; }
.report-level { text-align:center;font-size:10px;letter-spacing:2px;color:#97754c;background:#dfd4b7;padding:14px;margin-top:20px;border:1px solid #aa956344;border-radius:12px; }
.report-level strong { display:block;font:20px/1.7 var(--serif);letter-spacing:0;color:#556e51; }
.report-stats { margin:16px 0; }
.report-stats > div { display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed #99845c44;padding:12px 0; }
.report-stats dt { font-size:12px;color:#77745d; }
.report-stats dt small { display:block;font-size:9px; }
.report-stats dd { text-align:right;margin:0;font-size:17px; }
.report-stats em { display:block;font:10px var(--sans);color:#64805c; }
.report-unlocks { background:#faf1df;padding:16px;border-radius:12px; }
.report-unlocks h4 { font-size:13px;color:#6d7858; }
.report-unlocks p { font-size:12px;margin-top:9px;color:#6e735e; }
.report-unlocks small { display:block;font-size:10px;color:#918169;margin-top:10px; }
@keyframes actor-breathe {50%{transform:translate3d(0,-1px,0)}}
@keyframes actor-content {50%{transform:translate3d(0,1px,0) rotate(.4deg)}}
@keyframes actor-thoughtful {50%{transform:translate3d(0,1px,0) rotate(-.5deg)}}
@keyframes actor-converse {25%{transform:translate3d(0,-1px,0) rotate(-.5deg)}75%{transform:translate3d(0,0,0) rotate(.5deg)}}
@keyframes actor-work {50%{transform:translate3d(-2px,1px,0) rotate(1deg)}}
@keyframes close-pulse {50%{box-shadow:0 0 28px #efbd7299,0 4px 0 #6e4930;filter:brightness(1.08)}}
@keyframes story-pulse {50%{background:#e7bc7d22}}
@keyframes cloth {50%{transform:skewX(.8deg)}}
@media (orientation:landscape) {
 .world { width:max(900px,106vw);top:48%;max-width:1500px; }
 .scene-controls { top:calc(var(--safe-top) + 125px);left:20px;right:20px; }
 .progress-hud { top:calc(var(--safe-top) + 88px); }
 .exterior-world {width:min(55vw,65dvh);}
}
@media (max-height:550px) and (orientation:landscape) {
 .world{width:max(700px,108vw);top:49%}.scene-controls{top:68px}.progress-hud{top:65px;left:40%;font-size:9px}#pan-hint{display:none}.service-bar{max-width:40vw}.customer-name{font-size:9px}.ambient-line{font-size:10px;max-width:180px}.exterior-world{width:50dvh}
}
@media (max-width:360px) {.guest-profile{grid-template-columns:96px 1fr;gap:12px}.guest-profile .profile-bio{font-size:10px}.progress-hud{font-size:9px;gap:5px}}
@media (prefers-reduced-motion:reduce) {.actor,.actor *,.placed-decoration,.close-ready,.story-waiting{animation:none!important}.owner,.world{transition:none!important}}



.new-decoration { animation:decor-arrive 1s ease-out; }
@keyframes decor-arrive { from {opacity:.2; transform:translateY(-8px) scale(.88)} to {opacity:1; transform:none} }

/* One connected mesh carries the original painted image and all local morphs. */
.actor-morph { position:absolute;inset:0;width:100%;height:100%;display:none;pointer-events:none; }
.actor.morph-ready { animation:none!important;will-change:auto; }
.morph-ready > .actor-morph { display:block; }
.actor-art {background-image:var(--sprite-image);background-size:var(--sprite-size,400% 300%);}

/* Grounded seating and a service camera that always keeps the owner centred. */
.world {width:max(580px,140vw);max-width:1300px;}
.owner {left:calc(50% - var(--pan,0px));transition:none;}
.customer {bottom:23%;width:15%;transform:translateX(-50%);}
.seat-0 {left:26.7%;}.seat-1 {left:52%;}.seat-2 {left:76.8%;}
.customer.arriving {animation:seated-arrival 1.2s ease-out both;}
.customer-name {bottom:-76%;min-height:28px;padding:3px 8px;font-size:9px;white-space:nowrap;}
.wait-meter {position:absolute;bottom:-83%;height:3px;width:55%;left:23%;background:#173130;border-radius:5px;overflow:hidden;}
.wait-meter i {display:block;height:100%;background:#d7b574;transition:width .4s linear;}
.waiting-long .wait-meter i {background:#c57962;}
.placed-decoration {aspect-ratio:3/4;filter:none;isolation:isolate;}
.prop-art {display:block;position:absolute;inset:0;background:url('./assets/decor-real.webp') var(--prop-x) var(--prop-y)/400% 200% no-repeat;}
.decor-thumbnail {position:relative;overflow:hidden;background:none;aspect-ratio:3/4;}
.decor-plants::after,.decor-bench::after,.decor-bonsai::after {content:'';position:absolute;bottom:5%;left:12%;width:76%;height:4%;background:#0f1b1688;border-radius:50%;filter:blur(2px);z-index:-1;}
.decor-lantern {filter:drop-shadow(0 0 13px #f4ad4b44);}
.decor-sign {filter:drop-shadow(0 1px 3px #0008);}
.has-lantern:not(.outside) .interior-art {filter:brightness(1.04) saturate(1.04);}
.outside #owner,.outside #customers {display:none;}
@media(orientation:landscape){.world{width:max(680px,105vw)}.exterior-world{width:min(55vw,65dvh)}}
@media(orientation:portrait){.exterior-world{width:min(100vw,70dvh)}}

.food-art {display:inline-block;width:48px;height:48px;background:url('./assets/food-clean.webp') var(--food-x) var(--food-y)/400% 400% no-repeat;vertical-align:middle;}
.ingredient>.food-art {width:43px;height:43px;flex-shrink:0;}
.ingredient {min-height:96px;}
.stock-icon .food-art {width:49px;height:49px;}
.menu-icon .food-art {width:94px;height:94px;}
.guest-order h3 .food-art {width:57px;height:57px;flex-shrink:0;}
.cook-method {min-height:20px;}
.perfect-zone {transition:left .2s,width .2s;}

.world {transition:none;}

/* First-person counter: visitors are behind the bar; no owner avatar or chairs. */
.customer {bottom:40%;width:15%;transform:none;z-index:auto;}
.seat-0 {left:24.5%;}.seat-1 {left:42.5%;}.seat-2 {left:60.5%;}
.customer-avatar {z-index:2;}
.counter-front {display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;clip-path:inset(58.7% 0 0 0);z-index:4;pointer-events:none;}
.customer-name {bottom:-30%;z-index:6;}
.wait-meter {bottom:-36%;z-index:6;}
.customer.arriving {animation:none;}
.customer.arriving .customer-avatar {animation:counter-arrival .9s ease-out both;}
@keyframes counter-arrival {from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}
.has-lantern:not(.outside) .counter-front {filter:brightness(1.04) saturate(1.04);}

.morph-ready > .actor-art {visibility:hidden;}
.food-art {clip-path:inset(3%);}
.ingredient-slot {display:flex;flex-direction:column;gap:6px;min-width:0;}
.ingredient-slot .ingredient {width:100%;height:auto;flex:1;padding:9px 3px;min-height:133px;}
.ingredient strong {font-size:11px;font-weight:500;}
.ingredient .ingredient-state {font-size:9px;line-height:1.5;margin-top:5px;color:#7d765d;}
.ingredient-slot.required .ingredient {border-color:#9caa80;}
.ingredient:disabled {opacity:1;background:#e0ddcf;color:#9a9988;}
.ingredient:disabled .food-art {opacity:.6;}
.refill-button {padding:6px 3px;min-height:35px;font-size:10px;color:#53694e;background:#dce3c9;border-color:#a9b38b;}
.prep-guidance {font-size:12px;line-height:1.8;margin:12px 0;padding:10px 12px;border-left:3px solid #8d9b70;background:#e1e3ce;color:#667255;}
.jump-cook {width:100%;margin-top:12px;background:#d8dfc6;color:#586c4e;font-size:12px;}
.cook-step {scroll-margin-top:95px;}

.ingredient>.food-art {width:56px;height:56px;}

/* Fixed surface slots: crop only the object, never its atlas padding. */
.placed-decoration {aspect-ratio:auto;isolation:auto;}
.prop-crop {position:absolute;inset:0;overflow:hidden;}
.prop-crop .prop-art {display:block;position:absolute;background-size:400% 200%;background-repeat:no-repeat;}
.placed-decoration::after {display:none!important;}
.fridge-patch {position:absolute;inset:0;background:url('./assets/restaurant-fridge.webp') 0% 40.57971%/833.33333% 322.58065% no-repeat;}
.fixture-light {position:absolute;inset:-25%;background:radial-gradient(ellipse,#f7bc632b,transparent 70%);pointer-events:none;}
.decor-thumbnail {height:auto;aspect-ratio:3/4;position:relative;background:#d2c2a32a;}
.decor-thumbnail .prop-crop {inset:7%;}
.scene-preview {position:relative;margin:0;width:100%;aspect-ratio:3/2;overflow:hidden;border-radius:12px;background:#30271f;}
.scene-preview.outdoor {aspect-ratio:470/836;}
.preview-base {position:absolute;inset:0;background:url('./assets/restaurant-counter.webp') center/100% 100%;}
.outdoor .preview-base {background:url('./assets/intro-world.webp') left top/200% 200%;}
.preview-prop {position:absolute;filter:drop-shadow(0 2px 2px #0006);}
.scene-preview figcaption {position:absolute;left:4px;right:4px;bottom:4px;font-size:9px;background:#11282de6;color:#f4dfb7;padding:5px;border-radius:6px;}
.placement-pending {opacity:0;}
.placement-installing {animation:install-object 1.35s cubic-bezier(.2,.8,.2,1) both;}
.placement-halo {position:absolute;inset:-9px;border-radius:12px;pointer-events:none;opacity:0;}
.placement-installing .placement-halo,.placement-shining .placement-halo {opacity:1;border:2px solid #ffe1a2;box-shadow:0 0 25px #ffcf8188,inset 0 0 14px #ffdda655;}
.placement-shining .placement-halo {animation:installed-glow 1.2s ease-in-out 3;}
.placement-banner {position:fixed;left:50%;bottom:calc(var(--safe-bottom) + 215px);transform:translateX(-50%);z-index:12;width:min(90vw,380px);padding:13px 18px;border:1px solid #edc685;background:#172d30ed;color:#f6e1b9;border-radius:15px;text-align:center;box-shadow:0 8px 30px #0005;}
.placement-banner b,.placement-banner span {display:block;}.placement-banner b {font-size:14px;}.placement-banner span {font-size:11px;margin-top:4px;color:#d6c8a8;}
@keyframes install-object {from {opacity:0;transform:translateY(-18px) scale(.88);filter:brightness(1.4)}65% {opacity:1;transform:translateY(2px) scale(1.015)}to {opacity:1;transform:none;filter:brightness(1)}}
@keyframes installed-glow {50% {box-shadow:0 0 38px #ffd38cbb,inset 0 0 22px #ffdf7d77;border-color:#fff1ce}}
@media(prefers-reduced-motion:reduce){.placement-installing,.placement-shining .placement-halo{animation:none!important}.placement-pending{opacity:0}}

/* Each food keeps its sprite cell's proportions; all 100 dishes have their own art. */
.food-art {background-image:var(--food-file);background-size:400% var(--food-rows);aspect-ratio:var(--food-ratio,1);height:auto;}
.ingredient>.food-art,.stock-icon .food-art,.menu-icon .food-art,.guest-order h3 .food-art {height:auto;}
.menu-picture {position:relative;display:grid;place-items:center;width:100%;min-height:126px;margin-bottom:5px;}
.menu-picture .food-art {width:92px;}
.menu-card.locked .menu-picture .food-art {filter:blur(1.8px) saturate(.3);opacity:.6;}
.menu-card.available .menu-picture .food-art {filter:none;opacity:1;}
.menu-lock {position:absolute;left:5px;right:5px;bottom:6px;padding:5px;background:#4b5045dd;color:#f6ecd4;font-size:11px;text-align:center;border-radius:16px;}
.menu-filters {display:flex;gap:7px;overflow-x:auto;padding:6px 0 13px;scrollbar-width:thin;}
.menu-filters button {flex-shrink:0;min-height:36px;padding:6px 12px;font-size:11px;color:#667653;background:#e0e3cb;border-color:#b5bd9b;}
.menu-filters button.active {background:#647e61;color:#fff4dc;}
#menu-search {width:100%;padding:12px 14px;font:13px var(--sans);background:#faf3e3;color:#4c5c43;border:1px solid #b3b999;border-radius:10px;margin:0 0 17px;}
.menu-card h3 {text-align:center;}
.upcoming {margin-top:26px;border-top:1px dashed #8e805a66;padding-top:22px;}
.upcoming h3 {font-size:20px;margin:6px 0 9px;color:#647752;}
.upcoming>p {font-size:11px;color:#897958;line-height:1.8;}
.reward-foods {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 18px;}
.reward-foods>div {display:flex;flex-direction:column;align-items:center;min-width:0;background:#f7efdc;border:1px solid #d4c7a6;border-radius:9px;padding:6px 2px;}
.reward-foods .food-art {width:52px;}
.reward-foods small {display:block;text-align:center;font-size:9px;line-height:1.5;color:#736c55;}
.unlock-decor-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start;}
.unlock-decor-grid article {background:#f7efdc;border:1px solid #d3c7a9;padding:10px;border-radius:11px;}
.unlock-decor-grid article>b {display:block;font-size:12px;color:#647553;margin-bottom:9px;}
.unlock-decor-grid p {font-size:10px;color:#79765f;line-height:1.7;margin-top:8px;}
.unlock-decor-grid small {font-size:10px;color:#9b7952;}
.item-preview {margin:10px 0;}.item-preview summary {cursor:pointer;font-size:11px;color:#667c59;}.item-preview .scene-preview {margin-top:9px;max-width:240px;}
.upgrade-card>div {min-width:0;flex:1;}.upgrade-card details[open] {min-width:190px;}
.guest-speech {position:relative;padding:17px 19px;background:#fff8e9;border:1px solid #c1aa7c;border-radius:18px 18px 18px 3px;margin:15px 0 23px;box-shadow:0 4px 0 #c5b48e26;}
.guest-speech::before {content:'';position:absolute;top:-9px;left:24px;width:16px;height:16px;transform:rotate(45deg);border-left:1px solid #c1aa7c;border-top:1px solid #c1aa7c;background:#fff8e9;}
.guest-speech>span {position:relative;display:block;font-size:10px;letter-spacing:1px;color:#ad895c;margin-bottom:7px;}
.guest-speech p {position:relative;font:15px/1.9 var(--serif);color:#555b43;}
.heat-label {position:relative;display:block;height:20px;margin:15px 6px 7px;padding:0;}
.heat-label>span {position:absolute;left:0;top:0;font-size:10px;white-space:nowrap;}
.heat-label>span:last-child {left:auto;right:0;}
.heat-label>.heat-target {transform:translateX(-50%);padding:0!important;color:#567752;}
.story-scene,.story-result {font:15px/2 var(--serif);color:#ebdfbf;margin:10px 0 18px;}
.story-result {padding:17px;border:1px solid #a6ad7944;border-radius:12px;background:#c3ba8810;}
.story-step {display:block;color:#dfba80;font-size:11px;margin:20px 0 6px;letter-spacing:1px;}
.story-choices small {display:block;margin:8px 0 0;white-space:normal;color:#c6cba5;}
.story-next {font-size:12px;color:#e3b982;padding:15px 0;}
.story-journal {margin-top:20px;border-top:1px dashed #9da67a55;padding-top:18px;}
.story-journal h4 {font-size:12px;color:#d5bf95;margin-bottom:9px;}.story-journal details {font-size:12px;margin:10px 0;}.story-journal summary {cursor:pointer;color:#d0d2b1;}.story-journal p {font-size:12px;line-height:1.9;color:#b9c7ac;margin-top:9px;}
.story-followups {padding:15px;border-radius:12px;background:#d7bb7d19;border:1px solid #cbb07355;color:#ebd5aa;margin-bottom:19px;font-size:13px;line-height:1.9;}
@media(max-width:420px){.reward-foods{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}.reward-foods .food-art{width:46px}.unlock-decor-grid{gap:8px}.unlock-decor-grid article{padding:8px}.guest-speech p{font-size:14px}.menu-card{padding:12px 8px}}

.other-ingredients {margin-top:15px;color:#7a8068;font-size:11px;}
.other-ingredients summary {cursor:pointer;padding:9px 0;}
.other-ingredients[open] .ingredient-picker {margin-top:10px;}

#scene-rain {position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;}

/* A compact visual-novel conversation, with clear speakers and generous choices. */
#story-dialog{width:min(96vw,620px);max-height:94dvh;border:1px solid #a98e60;border-radius:25px;background:radial-gradient(ellipse at 10% 10%,#5c5a3b44,transparent 60%),#18312f;color:#f5e7cb;box-shadow:0 24px 80px #0009;}
#story-dialog .sheet-header{padding:20px 22px;position:sticky;top:0;z-index:5;background:linear-gradient(115deg,#28423a,#172e2d);border-bottom:1px solid #a8905b66;}
#story-dialog .sheet-header h2{font:25px/1.4 var(--serif);margin-top:7px;letter-spacing:.4px;}#story-dialog .eyebrow{font-size:10px;color:#d7bb84;letter-spacing:1.4px;}#story-dialog .round-button{background:#f4e2b619;border-color:#bca77666;color:#f5e2b9;min-width:40px;width:40px;height:40px;font-size:28px;}
#story-content{padding:18px 20px 24px;}
.story-cast-strip{display:flex;gap:10px;padding:0 0 15px;border-bottom:1px solid #d9bb7b33;margin-bottom:16px;}.story-cast-chip{display:flex;gap:8px;align-items:center;flex:1;min-width:0;}.story-cast-chip b{font-size:13px;color:#f0dcae;}.story-cast-chip small{display:block;font-size:10px;line-height:1.6;color:#b2c1ab;}
.story-mini-face{position:relative;width:40px;height:46px;border-radius:50%;background:#102925;overflow:hidden;flex-shrink:0;display:block;}.story-mini-face .actor{position:absolute;width:100%;height:160%;top:0;left:0;}
#story-content .story-scene{margin:0 0 20px;padding:15px 17px;border-left:3px solid #c9a56c;background:#9ea97412;border-radius:0 12px 12px 0;font:14px/1.9 var(--sans);color:#d4dec8;}.story-scene>span{display:block;font:10px var(--sans);color:#d3b987;margin-bottom:8px;}.story-scene p{margin:0;}
.story-chat{display:flex;flex-direction:column;gap:18px;margin:4px 0 25px;}.story-message{display:flex;gap:10px;align-items:flex-start;max-width:96%;}.story-message.from-right{align-self:flex-end;flex-direction:row-reverse;}.story-chat-face{position:relative;flex:0 0 48px;height:62px;background:#0d2523;border:1px solid #c7a86a66;border-radius:20px 20px 14px 14px;overflow:hidden;}.story-chat-face .actor{position:absolute;inset:0;width:100%;height:145%;}
.story-message-body{min-width:0;}.story-message-body>b{display:block;font:700 12px var(--sans);color:#edc58a;margin:0 0 6px 3px;}.from-right .story-message-body>b{text-align:right;margin-right:3px;}.story-message-body p{position:relative;margin:0;padding:13px 15px;font:15px/1.8 var(--sans);color:#31463d;background:#f5e9cb;border:1px solid #ead7aa;border-radius:0 17px 17px 17px;box-shadow:0 4px 12px #0002;word-break:keep-all;overflow-wrap:anywhere;}.from-right .story-message-body p{background:#d7e4ca;border-color:#b7c9a7;border-radius:17px 0 17px 17px;}
.story-choice-heading{margin:24px 0 12px;}.story-choice-heading>span{font-size:10px;color:#d0ad73;letter-spacing:1px;}.story-choice-heading h3{font:21px/1.5 var(--serif);color:#fae7bc;margin:7px 0;}.story-choice-heading p{font:12px var(--sans);color:#b9c6b1;margin:0;}
#story-content .story-choices{gap:11px;margin-top:15px;}#story-content .story-choice-card{width:100%;min-height:85px;display:flex;align-items:center;gap:12px;padding:15px 14px;background:linear-gradient(115deg,#f5e6c2,#e8c795);color:#33473c;border:1px solid #f5d7a0;border-radius:15px;box-shadow:0 4px 0 #735c3b,0 7px 16px #0003;text-align:left;white-space:normal;transition:filter .2s,transform .2s;}
#story-content .story-choice-card:active:not(:disabled){transform:translateY(2px);box-shadow:0 2px 0 #735c3b;}.choice-number{font:14px var(--serif);border:1px solid #9c854a66;color:#76643d;border-radius:50%;width:30px;height:30px;display:grid;place-items:center;flex-shrink:0;}.choice-copy{flex:1;min-width:0;}.choice-copy b{font:700 14px/1.7 var(--sans);word-break:keep-all;display:block;}.story-choices .choice-copy small{font:11px/1.6 var(--sans);color:#657456;margin:5px 0 0;display:block;white-space:normal;}.choice-arrow{font-size:23px;color:#8b6a3b;}
#story-content .story-choice-card:disabled{opacity:1;background:#223c37;color:#9bae9d;border-color:#5b7160;box-shadow:none;}.story-choice-card:disabled .choice-number{font:9px var(--sans);color:#adbca9;}.story-choice-card:disabled .choice-copy small{color:#9eb29a;}.story-choice-card:disabled .choice-arrow{color:#92a18a;}
#story-content .story-result{padding:19px;background:linear-gradient(135deg,#e7d2a6,#f3e8ca);color:#35463c;border:1px solid #d7ba7b;border-radius:17px;font:15px/1.9 var(--sans);}.story-result>span{font:10px var(--sans);letter-spacing:1px;color:#917449;display:block;margin-bottom:10px;}.story-result p{margin:0;}.story-finish{width:100%;font-size:13px;margin:15px 0 4px;min-height:48px;}.story-journal{color:#b8c4ad;}
@media(min-width:650px){#story-content{padding:22px 28px 30px}.story-message-body p{font-size:16px}.choice-copy b{font-size:15px}}

.story-answer-jump{width:100%;padding:12px;background:#436251;color:#f5e4ba;border:1px solid #b79b65;border-radius:13px;font:700 13px var(--sans);margin:0 0 2px;min-height:46px;}#story-decision{scroll-margin-top:120px;}.process-heading p{word-break:keep-all;}

/* Before opening, shopping is part of the main play scene. */
.stock-prep{position:fixed;z-index:8;left:16px;right:16px;bottom:calc(var(--safe-bottom) + 210px);width:min(calc(100% - 32px),470px);max-height:45dvh;margin:0 auto;overflow:auto;padding:17px 18px;background:linear-gradient(135deg,#f5e9cd,#e2d1ab);color:#344b3e;border:1px solid #c8a467;border-radius:20px;box-shadow:0 10px 40px #0007;}
.stock-prep-heading>span{font-size:10px;color:#8b754b;letter-spacing:1px;}.stock-prep-heading h3{font:21px/1.4 var(--serif);margin:6px 0;}.stock-prep-heading p{font:12px/1.7 var(--sans);color:#65745c;}.stock-prep-list{display:flex;gap:9px;overflow-x:auto;padding:10px 0 13px;}.stock-prep-list>span{flex:0 0 82px;display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 5px;background:#fff5dc88;border:1px solid #abb18c77;border-radius:12px;}.stock-prep-list .food-art{width:48px;}.stock-prep-list b{font-size:11px;}.stock-prep-list small{font-size:9px;white-space:nowrap;color:#64805b;}.stock-prep-list .stock-short{border-color:#bd905b;}.stock-prep-list .stock-short small{color:#9c663f;}.stock-bulk-main{width:100%;font-size:12px;padding:12px 7px;min-height:45px;}.stock-bulk-small{display:block;width:100%;font-size:11px;margin-top:8px;padding:9px 7px;background:#3a5947;color:#f3e2b9;border-color:#839268;}.stock-budget-note{display:block;font-size:10px;line-height:1.7;color:#866e4b;margin-top:7px;}
/* Story actors keep the native 3:4 portrait ratio, with no frames or backplates. */
.story-mini-face{width:40px;height:auto;aspect-ratio:3/4;background:transparent;border:0;border-radius:0;overflow:visible;box-shadow:none;}.story-mini-face .actor{position:absolute;inset:0;width:100%;height:100%;}
.story-chat-face{flex:0 0 58px;width:58px;height:auto;aspect-ratio:3/4;background:transparent;border:0;border-radius:0;overflow:visible;box-shadow:none;}.story-chat-face .actor{position:absolute;inset:0;width:100%;height:100%;}.story-chat-face .actor-art,.story-mini-face .actor-art{border:0;border-radius:0;box-shadow:none;}
@media(max-height:720px){.stock-prep{max-height:41dvh;bottom:calc(var(--safe-bottom) + 195px);padding:12px 15px}.stock-prep-heading h3{font-size:18px}.stock-prep-heading p{font-size:11px}.stock-prep-list{padding:6px 0 8px}.stock-prep-list .food-art{width:37px}}

/* Opening the restaurant turns on its real fixtures before the first arrival. */
.interior-closed{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;z-index:0;pointer-events:none;transition:opacity 1.35s ease;}.scene.is-prep .interior-closed{opacity:1;}.counter-front{transition:opacity 1.35s ease;}.scene.is-prep .counter-front{opacity:0;}.scene.is-prep #decorations{filter:brightness(.33) saturate(.65);}#decorations{transition:filter 1.35s ease;}.scene.is-prep .steam{opacity:0!important;}.scene.is-prep .exterior-art{filter:brightness(.3) saturate(.7);}.exterior-art{transition:filter 1.35s ease;}
@media(prefers-reduced-motion:reduce){.interior-closed,.counter-front,#decorations,.exterior-art{transition:none}}

.exterior-world .interior-closed{display:none;}

.scene.is-prep .exterior-art{filter:none;}.exterior-art::after{content:'';position:absolute;inset:0;background:url('./assets/exterior-closed.webp') center/100% 100% no-repeat;opacity:0;transition:opacity 1.35s ease;pointer-events:none;}.scene.is-prep .exterior-art::after{opacity:1;}
@media(prefers-reduced-motion:reduce){.exterior-art::after{transition:none}}

/* Tactile inventory controls and collectable furnishing pictures. */
.furnishing-art{display:block;width:112px;aspect-ratio:1;background-size:400% 200%;background-repeat:no-repeat;clip-path:inset(2%);margin:8px auto;}
.quantity-stepper{display:grid;grid-template-columns:34px minmax(34px,1fr) 34px;align-items:center;border:1px solid #aab18e;border-radius:11px;overflow:hidden;background:#fbf2dd;}
.quantity-stepper button{padding:0!important;margin:0!important;min-width:0!important;min-height:36px;border:0!important;border-radius:0!important;background:#d9dfc9!important;color:#344e40!important;font:20px var(--sans)!important;}
.quantity-stepper input{width:100%;min-width:0;height:36px;border:0;background:#fff8e7;color:#314a3d;font:700 15px var(--sans);text-align:center;padding:0;border-radius:0;}
.stock-quantity-card{display:grid;grid-template-columns:58px minmax(0,1fr);gap:10px;padding:13px 10px;align-items:center;}
.stock-card.stock-quantity-card .quick-stock{width:58px;height:66px;padding:0;margin:0;min-width:0;border:0;background:transparent;display:grid;place-items:center;}.quick-stock .food-art{width:55px;}
.stock-quantity-card .quantity-stepper,.stock-quantity-card .stock-buy,.stock-lock-note{grid-column:1/-1;width:100%;margin:0;}.stock-quantity-card .stock-buy{padding:10px 4px;font:700 11px var(--sans);min-height:40px;border-radius:11px;background:#49694d;color:#fff0d0;white-space:normal;}.stock-quantity-card h3{font-size:13px;word-break:keep-all;}.stock-copy{min-width:0;}.stock-lock-note{font-size:10px;line-height:1.7;color:#858b73;}
.item-shop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}.item-shop-grid .upgrade-card{position:relative;display:flex;flex-direction:column;gap:7px;padding:14px 12px;align-items:center;text-align:center;min-width:0;}.item-shop-grid .upgrade-card h3{font-size:15px;margin:0;}.item-shop-grid .upgrade-card p{font-size:11px;line-height:1.7;margin:0;}.item-shop-grid .upgrade-card button{width:100%;margin:auto 0 0;padding:11px 4px;font-size:11px;min-height:43px;white-space:normal;border-radius:12px;background:#3d6050;color:#f8e7bf;}.item-shop-grid .locked .furnishing-art{filter:grayscale(.5) blur(.7px);opacity:.7;}
.ambience-reward{display:inline-block;padding:5px 9px;border:1px solid #94af7d;border-radius:20px;font:700 11px var(--sans);background:#e1ead3;color:#3f6945;white-space:nowrap;}.item-level-tag{display:inline-block;font:700 10px var(--sans);padding:4px 7px;color:#6b805c;background:#e1e5cf;border-radius:7px;align-self:flex-start;}
.reward-heading{display:flex;align-items:center;gap:12px;margin-bottom:12px;}.level-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;width:58px;height:65px;flex:0 0 58px;border:1px solid #c3a670;background:linear-gradient(135deg,#3d5e4c,#193831);color:#f6deb0;border-radius:12px;font:11px var(--sans);box-shadow:0 3px 0 #142d27;}.level-tile b{font:700 29px var(--serif);line-height:1.2;}.reward-heading small{font:9px var(--sans);letter-spacing:1.5px;color:#9b814e;}.reward-heading h3{font:19px/1.5 var(--serif);margin:4px 0;color:#4b654b;}.reward-conditions{font:11px/1.8 var(--sans);color:#7b805f;}.upcoming-items{margin:22px 0 0;}.upcoming-items>h3{font:20px var(--serif);color:#51694c;margin:0 0 12px;}.next-item-note{font:12px/1.8 var(--sans);color:#898568;}.unlock-item-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}.unlock-item-grid article{padding:13px 10px;border:1px solid #cbb98e;background:#fcf4df;border-radius:15px;text-align:center;}.unlock-item-grid .item-level-tag{display:table;}.unlock-item-grid h4{font:700 13px var(--sans);margin:7px 0 9px;}.unlock-item-grid article>small{display:block;font:11px/1.6 var(--sans);color:#8b7956;margin-top:9px;}
.stock-prepared-check{padding:12px 8px;text-align:center;background:#dce7cf;border-radius:12px;color:#3c6944;font:700 12px/1.7 var(--sans);}.change-prep-plan{display:block;margin:9px auto 0;border:0;background:transparent;color:#6f7959;text-decoration:underline;font-size:11px;min-height:33px;}.hud-atmosphere{color:#cde3ae;font-weight:700;}.atmosphere-earned{animation:ambience-earned .7s ease-out 3;}@keyframes ambience-earned{50%{box-shadow:0 0 22px #d2e6a6;border-color:#d9eda7;}}

/* A nightly celebration: large gains, readable losses, and actual guest voices. */
#report-dialog{background:linear-gradient(145deg,#29443b,#132c2c 70%);border:1px solid #b79a65;color:#f5e6c7;width:min(95vw,650px);border-radius:24px;}
#report-dialog .sheet-header{background:linear-gradient(115deg,#29443b,#172e2d);color:#f4dfb8;border-color:#bba16d66;padding:18px 22px;}#report-dialog .sheet-header .eyebrow{color:#c4a56e;font-size:9px;}#report-dialog .sheet-header h2{font-size:24px;}#report-dialog .round-button{color:#f6dfb2;border-color:#b09a6c77;background:#f4dfae0d;}
#report-content{padding:20px 18px 26px;}#report-content .report-heading{text-align:center;margin:0 0 21px;}#report-content .report-heading h3{font:26px/1.5 var(--serif);margin:10px 0 7px;color:#fae6b9;}#report-content .report-heading p{font:12px var(--sans);color:#b8c9ad;}.night-stamp{display:inline-block;padding:5px 14px;border:1px solid #b89a5e88;border-radius:24px;color:#d7b37b;font:12px var(--serif);letter-spacing:2px;}
.growth-banner{display:flex;align-items:center;gap:16px;padding:19px 17px;margin:0 0 18px;border:1px solid #b49a6288;background:radial-gradient(ellipse at 0% 0%,#ad955733,#0d23252b);border-radius:20px;}.growth-banner>.level-tile{width:72px;height:83px;flex-basis:72px;background:linear-gradient(135deg,#f4db9e,#d6ac67);color:#344d3a;border-color:#f4deb4;box-shadow:0 4px 0 #8a6c3b;}.growth-banner .level-tile b{font-size:37px;}.growth-banner>div>small{font:10px var(--sans);letter-spacing:1.2px;color:#cdb27a;}.growth-banner h3{font:20px/1.5 var(--serif);margin:6px 0;color:#f7e1b5;}.growth-banner p{font-size:11px;color:#c9c8a3;margin:0 0 4px;}.level-up{box-shadow:0 0 25px #ddbf5022;}
.score-delta{display:inline-block;font:800 29px/1.3 var(--sans);white-space:nowrap;position:relative;}.score-delta small{font:12px var(--sans);margin-left:4px;}.score-delta.gain{color:#288148;animation:score-shine 1.1s ease-out 3;}.score-delta.loss{color:#bd4940;}.score-delta.no-change{font-size:20px;color:#8a8f78;}.growth-banner .score-delta.gain,.till-heading .score-delta.gain{color:#a7e894;}.growth-banner .score-delta.loss,.till-heading .score-delta.loss{color:#ff9e87;}
@keyframes score-shine{0%,100%{filter:brightness(1);transform:scale(1)}50%{filter:brightness(1.3);transform:scale(1.035);text-shadow:0 0 12px #84d37766;}}
.report-metric{padding:18px 16px;background:linear-gradient(135deg,#fcf2d9,#eadcba);border:1px solid #d6bb84;border-radius:19px;color:#344b3f;box-shadow:0 4px 0 #0a20212b;margin-bottom:15px;}.report-metric h4{font:700 13px var(--sans);color:#657356;margin:0 0 8px;}.report-metric strong{font:700 29px var(--sans);}.report-metric strong>small{font:13px var(--sans);color:#78836a;}.metric-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;}.report-metric-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px;}.report-metric-pair .report-metric>.score-delta{display:block;margin-top:8px;font-size:26px;}
.night-reviews{display:grid;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid #b7b58c66;}.night-review{display:flex;gap:9px;align-items:flex-start;}.review-face{position:relative;display:block;flex:0 0 36px;width:36px;aspect-ratio:3/4;}.review-face .actor{position:absolute;inset:0;width:100%;height:100%;}.night-review>div{flex:1;min-width:0;background:#fffcf0;border:1px solid #d4c9a5;border-radius:0 13px 13px 13px;padding:10px 12px;}.night-review:nth-child(even)>div{background:#e3ebd6;}.night-review header{display:flex;justify-content:space-between;gap:8px;font:10px var(--sans);color:#627553;}.night-review header>span{color:#b38739;white-space:nowrap;}.night-review p{font:13px/1.8 var(--sans);color:#3a5142;margin:7px 0 5px;word-break:keep-all;}.night-review small{font:9px var(--sans);color:#929379;}.review-note{font-size:20px;color:#a9945c;}.review-empty{font:12px/1.8 var(--sans);color:#81896a;margin-top:13px;}
.till-summary{padding:19px;border:1px solid #849b7655;background:#0f2522aa;border-radius:20px;margin:0 0 19px;}.till-heading>span{display:block;font-size:11px;letter-spacing:1px;color:#b4cba5;}.till-heading>strong{display:block;font:700 32px var(--sans);color:#f5dfae;margin:8px 0 4px;}.till-heading>.score-delta{font-size:25px;}.till-lines{margin-top:18px;padding-top:12px;border-top:1px solid #9cb08a33;}.till-lines p{display:flex;align-items:center;justify-content:space-between;gap:8px;font:12px/1.8 var(--sans);margin:7px 0;color:#c7d2b9;}.till-lines b{font-size:15px;color:#efd6a5;}.till-lines .expense{color:#ff9d89;}.till-lines .income,.till-lines .tip-income b{color:#b2e6a0;}.till-lines small{display:block;font-size:9px;color:#8ca087;}.till-summary>small{display:block;color:#98af8a;margin-top:16px;font-size:11px;}
.next-goal{padding:17px;border-radius:18px;border:1px solid #b99c6455;background:#78926b17;margin:0 0 20px;}.next-goal h4{font:19px var(--serif);color:#f2ddb0;margin:0 0 13px;}.goal-chips{display:grid;grid-template-columns:1fr 1fr;gap:8px;}.goal-chips>span{background:#0d2726;border:1px solid #a4b07b44;padding:10px;border-radius:10px;}.goal-chips small{display:block;font-size:10px;color:#b2b996;}.goal-chips b{display:block;font:700 13px var(--sans);color:#d6ca9f;margin-top:4px;}.goal-chips .met{border-color:#a8cd7b88;}.goal-chips .met b{color:#b9e39d;}.next-goal p{font:12px/1.8 var(--sans);color:#b1c3a3;margin:12px 0 0;}.next-goal>button{width:100%;font-size:11px;margin-top:12px;background:#d8c493;color:#334b3d;border-color:#ebd6a8;border-radius:10px;}
#report-content .upcoming{border-top:1px dashed #bc9b6655;margin-top:22px;padding-top:22px;}#report-content .reward-heading h3,#report-content .upcoming-items>h3{color:#f2ddac;}#report-content .reward-heading small,#report-content .reward-conditions,#report-content .next-item-note{color:#b5c3a1;}#report-content .earned-gallery h4{color:#e9d1a0;font:19px var(--serif);margin-bottom:12px;}#report-content .reward-foods>div{background:#f7ecd2;color:#53674c;border-color:#d3bc86;}#report-content #report-next{width:100%;margin-top:24px;background:linear-gradient(#f0d39b,#d9aa69);color:#304937;border:1px solid #f8d9a0;box-shadow:0 5px 0 #8d6a3f;border-radius:15px;font-size:15px;min-height:54px;}.max-level-message{text-align:center;color:#dfc68b;font-size:14px;}
@media(prefers-reduced-motion:reduce){.score-delta.gain,.atmosphere-earned{animation:none}.score-delta.gain::after{display:none}}

/* v19: upgrades are painted into architectural surfaces, never floating sprites. */
.scene::before{background-image:url('./assets/room-bare-v19.webp')}.exterior-art{background-image:url('./assets/exterior-bare-v19.webp');background-position:center;background-size:100% 100%}.exterior-art::after{background-image:url('./assets/exterior-closed-v19.webp')!important}
.surface-upgrade{position:absolute;inset:0;display:block;background-repeat:no-repeat;mask-image:linear-gradient(to right,transparent,#000 3px,#000 calc(100% - 3px),transparent),linear-gradient(to bottom,transparent,#000 3px,#000 calc(100% - 3px),transparent);mask-composite:intersect}.placed-decoration{filter:none!important;animation:none;transform:none}.decor-noren{animation:none}.placement-pending{opacity:0}.placed-decoration.placement-installing{animation:surface-reveal .55s ease-out both!important}.placement-halo{inset:-12px;border:0!important;background:radial-gradient(ellipse,#ffd58a22,transparent 72%);box-shadow:none!important;color:#ffe2a1;font-size:24px;text-shadow:0 0 8px #fff4ba;overflow:visible}.placement-halo i,.placement-halo em{position:absolute;font-style:normal}.placement-halo i{right:0;top:22%;font-size:15px}.placement-halo em{left:24%;bottom:2%;font-size:19px}.placement-shining .placement-halo{opacity:1;animation:surface-sparkle .75s ease-in-out 4!important}.placement-gain{position:absolute;left:50%;top:0;transform:translate(-50%,-110%);white-space:nowrap;opacity:0;background:#203c2eee;border:1px solid #ebd4a0;color:#d9f3b7;font:700 15px/1.4 var(--sans);padding:8px 13px;border-radius:18px;box-shadow:0 0 18px #f8d07d55;z-index:6}.placement-shining .placement-gain{animation:ambience-pop 2.8s ease-out both}.scene.is-prep .placement-shining .placement-gain{filter:brightness(2.4)}
.installation-flight{position:fixed;z-index:100;pointer-events:none;filter:drop-shadow(0 12px 25px #0008) drop-shadow(0 0 22px #f5d19077)}.installation-flight .furnishing-art{width:100%;height:100%;aspect-ratio:1;margin:0;background-size:400% 200%}.installation-aura{position:fixed;z-index:99;pointer-events:none;inset:0;background:radial-gradient(circle at 50% 43%,#ffdf8f2b,transparent 40%);animation:purchase-aura 1.9s ease both}.placement-banner{bottom:calc(var(--safe-bottom) + 170px);pointer-events:none}.world{transition:transform .65s cubic-bezier(.2,.8,.2,1)}
@keyframes surface-reveal{from{opacity:0;filter:brightness(1.3)}to{opacity:1;filter:none}}@keyframes surface-sparkle{50%{opacity:.35;filter:brightness(1.8);transform:scale(1.04)}}@keyframes ambience-pop{0%{opacity:0;transform:translate(-50%,0) scale(.75)}18%,78%{opacity:1;transform:translate(-50%,-110%) scale(1)}100%{opacity:0;transform:translate(-50%,-150%) scale(.98)}}@keyframes purchase-aura{0%,100%{opacity:0}20%,65%{opacity:1}}
@media(prefers-reduced-motion:reduce){.world{transition:none}.placed-decoration.placement-installing,.placement-shining .placement-halo,.placement-shining .placement-gain,.installation-aura{animation:none!important}.placement-shining .placement-gain{opacity:1}}
.surface-closed{position:absolute;inset:0;background-size:inherit;background-position:inherit;background-repeat:no-repeat;opacity:0;transition:opacity 1.35s ease}.scene.is-prep .surface-closed{opacity:1}.scene.is-prep #decorations{filter:none}.scene.is-prep .decor-fridge .surface-upgrade{filter:brightness(.28) saturate(.6)}.scene.is-prep .placement-shining .placement-gain{filter:none}.has-lantern:not(.outside):not(.is-prep) .interior-art,.has-lantern:not(.outside):not(.is-prep) .counter-front{filter:brightness(1.12) saturate(1.13)}
@media(prefers-reduced-motion:reduce){.surface-closed{transition:none}}
.unlock-item-grid h4{color:#405c46!important}.upcoming .reward-foods,.earned-gallery .reward-foods{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.upcoming .reward-foods .food-art,.earned-gallery .reward-foods .food-art{width:min(100%,84px)}.upcoming .reward-foods small,.earned-gallery .reward-foods small{font-size:11px;line-height:1.6}.quantity-stepper{grid-template-columns:40px minmax(30px,1fr) 40px}.quantity-stepper button{min-height:44px}.quantity-stepper input{height:44px}
#customers{transition:opacity .3s ease}.scene.installation-focus #customers{opacity:0;pointer-events:none}.placement-banner{background:#172d30}body:has(.installation-flight) .scene-controls,body:has(.installation-flight) .game-dock,body:has(.installation-flight) .service-bar{pointer-events:none}
@media(prefers-reduced-motion:reduce){#customers{transition:none}}
.stock-prep{transition:opacity .3s ease}.scene.installation-focus~.stock-prep{opacity:0;pointer-events:none}
@media(prefers-reduced-motion:reduce){.stock-prep{transition:none}}

/* v20: readable mobile shop, exact installed item photography and real collections. */
.item-shop-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:100%}.item-shop-grid .furnish-card{min-width:0;max-width:100%;overflow:hidden;padding:13px 10px;gap:8px;align-items:stretch}.item-shop-grid .furnish-card>span{font-size:12px;line-height:1.5;max-width:100%}.furnish-card .item-level-tag{font-size:11px!important;padding:4px 7px;align-self:flex-start}.furnish-card .ambience-reward{font-size:12px!important;align-self:center;white-space:normal;padding:5px 7px}.item-shop-grid .furnish-card h3{font:700 14px/1.5 var(--sans);min-height:42px;word-break:keep-all;overflow-wrap:anywhere}.item-shop-grid .furnish-card p{font:12px/1.6 var(--sans);word-break:keep-all;overflow-wrap:anywhere}.item-shop-grid .furnish-card .item-benefit{color:#45674d;min-height:38px}.item-shop-grid .furnish-card .item-location{color:#82846d;font-size:11px}.item-shop-grid .furnish-card>div{flex:none;min-width:0}.item-shop-grid .furnish-card>button{font:700 12px/1.5 var(--sans);white-space:normal;padding:10px 5px;min-height:46px;margin-top:auto}.furnish-card .item-installed{font:11px var(--sans);color:#54784e}.furnishing-picture{height:132px;display:grid;place-items:center;width:100%}.furnishing-art{position:relative;display:block;width:120px;max-width:100%;height:120px;aspect-ratio:1;background:none!important;clip-path:none;margin:0 auto;overflow:visible}.installed-item-picture{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-repeat:no-repeat;border-radius:10px;box-shadow:0 2px 7px #17251c15}.installation-flight .furnishing-art{width:100%;height:100%;max-width:none}.installation-flight .installed-item-picture{border-radius:13px}.lamp-quantity{width:100%;grid-template-columns:36px minmax(26px,1fr) 36px}.shop-benefits{padding:16px;border:1px solid #b4bb96;border-radius:16px;background:linear-gradient(135deg,#e1e7d1,#f8eed8);color:#395843;margin-bottom:14px}.shop-benefits>b{display:flex;justify-content:space-between;gap:10px;font:700 15px var(--sans)}.shop-benefits strong{font-size:21px}.shop-benefits p{font:13px/1.7 var(--sans);margin:10px 0 6px}.shop-benefits small{display:block;font:11px/1.7 var(--sans);color:#6b7b60}.collection-filters{display:flex;gap:7px;overflow:auto;padding:3px 0 12px;scrollbar-width:thin}.collection-filters button{flex:none;min-height:40px;font:12px var(--sans);padding:8px 12px;color:#647956;background:#eee7d2;border-radius:20px}.collection-filters .active{background:#3a5d49;color:#fff0ce;border-color:#617f59}.collection-goal{padding:13px;background:#24443d;border:1px solid #8c9c6d;border-radius:16px;color:#f2dfb8;margin-bottom:17px}.collection-goal>div{display:flex;justify-content:space-between;gap:8px;font-size:13px}.collection-goal>div span{white-space:nowrap;color:#c4dda8}.collection-goal p{font:12px/1.7 var(--sans);margin:8px 0;color:#c2d2b0}.collection-goal progress{display:block;width:100%;height:7px;accent-color:#d7c47c;margin:10px 0 13px}.collection-goal img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:10px}.exterior-art::after{background-image:var(--exterior-closed-image,url('./assets/exterior-closed-v19.webp'))!important}.has-lantern:not(.outside):not(.is-prep) .interior-art,.has-lantern:not(.outside):not(.is-prep) .counter-front{filter:brightness(var(--lamp-ambient,1)) saturate(1.02)}
#app:not(.in-kitchen) .needs-payment .customer-payment{animation:payment-ready 1.6s ease-in-out infinite;border-color:#f7d68e;box-shadow:0 0 18px #e9be6377}#app:not(.in-kitchen) .needs-payment .customer-name{border-color:#f1d58d;color:#ffe8ab}@keyframes payment-ready{50%{transform:translateX(-50%) translateY(-3px);box-shadow:0 0 28px #ffda83aa;filter:brightness(1.12)}}
.story-voice-controls{padding:12px;border:1px solid #b9a36e66;background:#172e29;border-radius:13px;margin:15px 0 20px;display:flex;gap:8px;flex-wrap:wrap}.story-voice-controls button{font:12px var(--sans);min-height:42px;padding:9px 12px;border-radius:20px;color:#ecd6a8;background:#3e5f4c;border-color:#b7a16b88}.story-voice-controls p{width:100%;font:12px/1.6 var(--sans);color:#b8cdaa;margin:3px 0}.story-message.is-speaking .story-message-body p{box-shadow:0 0 0 3px #e7c77a,0 0 25px #e7c77a66;transition:box-shadow .2s}.story-message.is-speaking .story-message-body>b::after{content:' ▂▄▆';display:inline-block;color:#f5d689;animation:speaker-bars .6s ease-in-out infinite alternate}@keyframes speaker-bars{to{opacity:.4;transform:scaleY(.5)}}
@media(max-width:359px){.item-shop-grid{grid-template-columns:minmax(0,1fr)}.furnish-card .furnishing-picture{height:160px}.furnish-card .furnishing-art{width:150px;height:150px}.item-shop-grid .furnish-card h3{min-height:0}}
@media(prefers-reduced-motion:reduce){#app .needs-payment .customer-payment,.story-message.is-speaking .story-message-body>b::after{animation:none}}
.scene.installation-overview .world:not(.exterior-world){width:min(100vw,1500px)}.world{transition:width .65s cubic-bezier(.2,.8,.2,1),transform .65s cubic-bezier(.2,.8,.2,1)}
@media(prefers-reduced-motion:reduce){.world{transition:none}}
body:has(#app.in-kitchen) #toast{display:none}.replace-delta{font:700 11px/1.5 var(--sans);color:#426b47}.replace-delta.negative{color:#ac5a45}
.slot-lantern .surface-upgrade{clip-path:polygon(43% 0,57% 0,57% 36%,83% 43%,96% 65%,88% 88%,66% 100%,34% 100%,12% 88%,4% 65%,17% 43%,43% 36%)}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}.quantity-stepper input{font-size:16px}
.placement-gain.loss{color:#ffbdac;background:#51382e}.served-dish.uncooked-dish>.dish-steam{display:none}.served-dish.overdone-dish>.dish-steam{opacity:.2;filter:sepia(1) brightness(.6)}
.furnishing-art{height:auto;aspect-ratio:1}
