#coinProgress{white-space:nowrap;display:inline-flex;align-items:center;gap:6px}#coinProgress img{width:23px;height:23px}
#coinCard{position:fixed;left:50%;bottom:calc(90px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:60;display:flex;gap:18px;align-items:center;width:min(360px,calc(100vw - 36px));padding:18px 24px;box-sizing:border-box;color:#efe2c6;background:linear-gradient(135deg,#201a11f5,#0d0c09f5);border:1px solid #877044;box-shadow:0 10px 45px #000b;pointer-events:none}#coinCard img{width:76px;height:76px;filter:drop-shadow(0 3px 4px #000)}#coinCard strong{font:24px Georgia,serif}#coinCard p{margin:8px 0 0;font:14px system-ui,sans-serif}#coinCard[hidden]{display:none}
.discovery-coin-target,.discovery-doll-target{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;padding:0;border:0;background:transparent;pointer-events:none;z-index:12}.discovery-coin-target:focus-visible,.discovery-doll-target:focus-visible{outline:2px solid #e6c68b;outline-offset:3px;pointer-events:auto;border-radius:50%}.discovery-coin-target[hidden],.discovery-doll-target[hidden]{display:none}
#fallbackCoin{position:absolute;pointer-events:none;transform:translate(-50%,-50%);z-index:4;object-fit:fill}
.coin-collection{display:flex;align-items:center;gap:24px;margin:20px 0}.coin-collection>img{width:min(32vw,145px);filter:drop-shadow(0 8px 8px #0008)}.coin-collection p{line-height:1.6}.coin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;list-style:none;padding:0}.coin-grid li{border-bottom:1px solid #9b875032;padding:9px 0;font-size:14px}.coin-grid .unfound{opacity:.65}
.eleanor-page{box-sizing:border-box;width:100%;max-width:640px;margin:20px auto;padding:0;background:none;color:#2f2118;transform:none;clip-path:none;box-shadow:none}
.eleanor-letter-image{display:block;width:100%;height:auto;max-height:none;object-fit:contain;box-shadow:0 10px 28px #0006}
.eleanor-letter-image[hidden],.eleanor-letter-fallback[hidden]{display:none}
.eleanor-letter-fallback{padding:clamp(20px,5vw,40px);background:#e7d4ac;font:19px/1.7 Georgia,serif}
.eleanor-letter-fallback p{color:inherit}.eleanor-letter-fallback p:last-child{text-align:right}
#modal:has(.eleanor-page){box-sizing:border-box;width:min(740px,calc(100vw - 20px));max-width:calc(100vw - 20px);max-height:calc(100dvh - 20px);padding:clamp(12px,3vw,24px);overflow-y:auto;overflow-x:hidden}
#modal:has(.eleanor-page) #modalBody{max-height:none;overflow:visible}
.discovery-score{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:min(560px,100%);gap:8px;margin:0}.discovery-score div{padding:14px 8px;border-block:1px solid #b5956060;background:#120c10a0}.discovery-score dt{font:11px/1.5 system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase}.discovery-score dd{margin:6px 0 0;font:clamp(23px,4vw,34px) Georgia,serif}.discovery-score-note{font:14px/1.5 system-ui,sans-serif;max-width:38em}.cellar-finale-credits:has(.discovery-score){justify-content:safe center;gap:16px}
#mirrorGrudgeDialog{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#171411;color:#efdfba;overflow:hidden}#mirrorGrudgeDialog::backdrop{background:#080806}.grudge-dust{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.grudge-shade{position:absolute;inset:0;background:linear-gradient(#0006,transparent 30%,transparent 70%,#0009)}.grudge-layout{position:relative;min-height:100%;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:calc(45px + env(safe-area-inset-top)) 24px calc(40px + env(safe-area-inset-bottom));box-sizing:border-box;text-align:center}.grudge-layout h2{font:clamp(26px,5vw,42px) Georgia,serif;font-weight:400;margin:0}.grudge-word{width:min(84vw,680px);height:150px;overflow:visible}.grudge-word path{fill:none;stroke:white;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:grudge-wipe 2.7s .4s ease-out forwards}.grudge-layout button{padding:14px 22px;border:1px solid #a88c54;color:#f1e1bc;background:#18120c;font:16px Georgia,serif;cursor:pointer}.grudge-layout p{font:17px/1.5 Georgia,serif}.grudge-actions{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}@keyframes grudge-wipe{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.grudge-word path{animation:none;stroke-dashoffset:0}}
@media(max-width:520px){.coin-grid{font-size:13px}.cellar-finale-credits:has(.discovery-score){padding-inline:16px}.discovery-score div{padding:12px 4px}.grudge-word{height:120px}.grudge-layout{padding-inline:15px}#coinCard{bottom:calc(80px + env(safe-area-inset-bottom))}}

#resumeCrowd{position:fixed;z-index:25;bottom:100px;left:50%;transform:translateX(-50%);padding:12px 18px;background:#211511e8;color:#eee0c1;border:1px solid #b59560;cursor:pointer}#resumeCrowd[hidden]{display:none}#cellarContinueExploring{background:#725027!important}
.story-discovered{font:13px/1.6 system-ui,sans-serif;opacity:.8;text-align:center}
.cellar-exit-invitation{font:clamp(20px,4.5vw,28px)/1.4 Georgia,serif;color:#f2d8a7;max-width:28em}.cellar-exit-directions{font:14px/1.5 system-ui,sans-serif;color:#d3c2a5;max-width:34em}

.discovery-challenge{box-sizing:border-box;width:min(560px,100%);padding:14px 18px;border:1px solid #b5956060;background:#201510c9;color:#efdfba;text-align:center}
.discovery-challenge strong{font:22px/1.3 Georgia,serif}.discovery-challenge p{margin:7px 0 0;font:14px/1.5 system-ui,sans-serif}
#modal:has(.eleanor-page) .actions,#modal:has(.discovery-score) .actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.cellar-finale-credits:has(.discovery-score){justify-content:flex-start;padding-top:max(28px,env(safe-area-inset-top));padding-bottom:max(28px,env(safe-area-inset-bottom))}
.cellar-finale-credits:has(.discovery-score)::before,.cellar-finale-credits:has(.discovery-score)::after{content:"";flex:1 0 0}
@media(max-width:520px){.cellar-end-actions{width:100%;display:grid;grid-template-columns:1fr;gap:10px}.cellar-end-actions button{width:100%;min-height:48px}.discovery-score dt{letter-spacing:.03em;font-size:10px}}

/* The gate's world-space outline handles mouse/touch. Keep the named button for keyboard access. */
#hotspots .gate{pointer-events:none!important}
#modal.car-cinema:has(#carFilm[src*="gate-exit"]) .close,
#modal.car-cinema:has(#carFilm[src*="gate-exit"]) .film-skip,
#modal.car-cinema:has(#carFilm[src*="gate-exit"]) h2,
#modal.car-cinema:has(#carFilm[src*="gate-exit"]) .actions{display:none!important}
#modal.car-cinema:has(#carFilm[src*="gate-exit"]) #carPlay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5}
#modal.car-cinema:has(#carFilm[src*="gate-exit"]):has(#carPlay:not([hidden])) #carSkip{display:block!important;position:absolute;left:50%;top:calc(50% + 65px);transform:translateX(-50%);z-index:5}

/* Car entry follows only the physical side door, with no broad DOM hitbox. */
#hotspots .car{pointer-events:none!important}
#hiddenCoinTarget{pointer-events:auto;z-index:8;cursor:pointer}
#hiddenCoinCard{position:absolute;z-index:12;bottom:80px;left:50%;transform:translateX(-50%);background:#17130ee8;color:#eee0c1;border:1px solid #877044;padding:12px 18px;pointer-events:none}

/* The hidden coin is drawn in the panorama; its touch target must stay invisible. */
#hiddenRoom #hiddenCoinTarget{appearance:none;-webkit-appearance:none;background:transparent;border:0;padding:0;box-shadow:none;-webkit-tap-highlight-color:transparent}
/* Suppress mobile callouts/selection on scene surfaces, not journal text or controls. */
#view,#fallback,#hotspots,#hiddenRoom,.object-exploration,.discovery-coin-target,.discovery-doll-target{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
#hiddenRoom #hiddenCoinTarget:focus:not(:focus-visible),.discovery-coin-target:focus:not(:focus-visible),.discovery-doll-target:focus:not(:focus-visible){outline:none}

/* A larger invisible target around the book, clear of the music box below. */
#game #hotspots .bookcaseTrigger{width:64px;height:88px}
