/* Prototype world: natural-aspect neighborhood artwork, independent interactive layers. */
body{background:#273e44;color:#fff0cd}header{position:absolute;top:0;left:0;right:0;z-index:6;max-width:none;padding:14px 18px;border:0;pointer-events:none;background:none}header .brand{pointer-events:auto}.masthead,.year,.christmas-lights{display:none}main{max-width:none;padding:0}.hero.plaza-world{position:relative;isolation:isolate;display:block;width:100%;max-width:860px;height:auto;min-height:0;margin:auto;padding:0;border:0;border-radius:0;overflow:hidden;background:#c69660}.hero:before{display:none}.town-areas{position:relative;z-index:-3}.town-area{position:relative;margin:0;isolation:isolate}.area-art{display:block;width:100%;height:auto;transition:filter 1.1s}.town-area:after{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;transition:background 1s;background:#ffc56008}.town-area+.town-area:before{content:'';position:absolute;top:-12px;left:0;right:0;height:25px;background:linear-gradient(transparent,#c89e6477,transparent);z-index:1;pointer-events:none}.area-sign{position:absolute;top:3%;left:7%;transform:rotate(-6deg);background:#a36a36;color:#ffe5aa;border:2px solid #765133;box-shadow:0 3px 0 #4a362955;padding:7px 12px;font:700 12px 'Trebuchet MS',sans-serif;text-transform:uppercase;letter-spacing:1px;z-index:1}.area-sign:after{content:'';position:absolute;inset:4px;border:1px dashed #f2cc8955;pointer-events:none}.world-sky,.plaza-art,.world-details,.world-garland,.world-glow{display:none!important}.world-stars{z-index:1;bottom:0;pointer-events:none}.hero-copy{position:absolute;top:90px;left:5%;right:auto;max-width:190px;text-align:left;padding:14px 18px;background:#a57442e6;border:2px solid #efd3a088;box-shadow:3px 5px 0 #72503655;transform:rotate(-4deg);z-index:3;pointer-events:none;text-shadow:none}.hero-copy .edition{font:8px 'Trebuchet MS',sans-serif;letter-spacing:1px;color:#ffedba}.hero-copy h1,.hero-copy h1 em{font:700 23px/1.15 'Trebuchet MS',sans-serif;text-transform:none;letter-spacing:-.5px;color:#fff0bb;margin:8px 0}.hero-copy .intro{display:none}.town-walk{font:10px 'Trebuchet MS',sans-serif;color:#fff1ce;min-height:0;padding:0;margin:0;pointer-events:auto}.hero-cupido{right:8%;bottom:2%;z-index:2}.hero-cupido img{width:110px}.hero-cupido span{display:none}.world-caption{bottom:0;background:linear-gradient(transparent,#4b362a77);padding:18px 8px;align-items:center;text-shadow:0 2px 4px #4b362a}.world-progress,.world-hint{font:11px 'Trebuchet MS',sans-serif}.egg-star{left:78%;top:13%}.egg-bell{left:73%;top:29%;bottom:auto}.egg-cat{left:70%;bottom:30%}.egg-message{position:fixed;left:20px;right:20px;bottom:24px;z-index:8;font:700 14px/1.4 'Trebuchet MS',sans-serif;color:#fff0c9;text-shadow:0 2px 4px #39291e,0 0 12px #39291e}.world-comet{top:10%}.world-egg{z-index:4}
/* Invisible, accessible hit areas: numerals and architecture live in the painting. */
.town-objects.doors{position:absolute;inset:0;display:block;margin:0;padding:0;z-index:2;pointer-events:none}
.town-objects .door,.town-objects .door.ready,.town-objects .door:last-child{position:absolute;left:var(--x);top:var(--y);width:var(--object-width);height:var(--object-height);min-width:48px;min-height:48px;margin:0;padding:0;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;outline:0;filter:none;opacity:1;transform:translate(-50%,-50%);pointer-events:auto;transition:none}
.town-objects .door:before,.town-objects .door:after{display:none!important}
.town-objects .door.ready:hover{transform:translate(-50%,-50%)}
.town-objects .door:focus-visible{outline:2px dashed #ffe4a2!important;outline-offset:3px;border-radius:10px!important}
.town-objects .door:disabled{cursor:default;opacity:1;filter:none}
.town-objects .door>.town-day-marker{
  position:absolute;top:50%;left:50%;translate:-50% -50%;
  padding:2px 5px;min-width:19px;border-radius:2px;
  background:#ffe8bb;color:#572b1b;border:1px solid #a76e43;
  box-shadow:1px 2px 3px #42271966;font:700 11px/1.15 Georgia,serif;
}
.town-objects .door.ready>.town-day-marker{display:block!important}
.town-objects .door.opened>.town-day-marker{background:#e6e9c3}
.poster-dialog h2:empty{display:none}
.town-music-credits{position:absolute;bottom:8px;left:10px;z-index:6}
.town-music-credits .record-credits{margin:0;padding:0 8px;border-radius:6px;background:#16352de6;color:#fff0ce}
.town-music-credits .record-credits a{color:#fff0ce}
.resident{position:absolute;z-index:4;translate:-50% -50%;width:clamp(65px,18%,115px);min-width:48px;min-height:90px;background:none;border:0;padding:0;filter:drop-shadow(2px 4px 1px #483b3355)}.resident svg{width:100%;height:auto;display:block;animation:resident-breathe 4s ease-in-out infinite alternate}.resident-callout{position:absolute;top:-8px;right:-12px;padding:6px 10px;background:#fff0ca;border:2px solid #755735;border-radius:60% 60% 60% 0;color:#755735;font:700 11px 'Trebuchet MS',sans-serif;white-space:nowrap}.resident.helped .resident-callout{background:#e2edb3}.resident-dialog{width:min(420px,calc(100% - 24px));max-height:calc(100dvh - 24px);overflow:auto;border:3px solid #765139;border-radius:23px;background:#fff0cf;color:#533d32;padding:20px 24px;box-shadow:0 15px 60px #152c4655}.resident-dialog::backdrop{background:#173c5399;backdrop-filter:blur(3px)}.resident-close{position:absolute;right:10px;top:10px;width:44px;height:44px;border:0;background:none;color:#62432e;font-size:28px}.resident-portrait{width:95px;margin:auto}.resident-portrait svg{width:100%;height:auto}.resident-dialog h2{font:700 24px 'Trebuchet MS',sans-serif;letter-spacing:-.5px;margin:8px 0 16px}.resident-line{font:17px/1.6 'Trebuchet MS',sans-serif}.resident-help{min-height:48px;width:100%;padding:12px 16px;background:#91613b;color:#fff0ca;border:2px solid #6e4c31;border-radius:10px;font:700 14px 'Trebuchet MS',sans-serif}.resident-dialog .resident-line:empty{display:none}.mock-note{font:10px 'Trebuchet MS',sans-serif;color:#82654b;text-align:center;margin:16px 0 0}
.area-decoration{position:absolute;inset:13% 0 auto;display:flex;justify-content:space-around;pointer-events:none;z-index:1;color:#ebbe66;font-size:38px;text-shadow:0 2px 1px #865531;transform:rotate(-4deg)}.area-decoration span{opacity:0;transition:opacity .7s;animation:decoration-sway 4s ease-in-out infinite alternate}.area-decoration span:nth-child(2n){color:#b95153;animation-delay:-2s}body[data-dressing="1"] .area-decoration span:nth-child(-n+2),body[data-dressing="2"] .area-decoration span:nth-child(-n+4),body[data-dressing="3"] .area-decoration span,body[data-dressing="4"] .area-decoration span{opacity:1}.market-cart{position:absolute;left:14%;top:52%;width:100px;height:80px;background:repeating-linear-gradient(0deg,#ad773d 0 13px,#765132 14px 16px);border:3px solid #59412d;z-index:2;display:none;box-shadow:2px 6px 2px #342d2655}.market-cart:before{content:'';position:absolute;top:-36px;left:-8px;width:112px;height:36px;background:repeating-linear-gradient(90deg,#e2c798 0 18px,#b94e45 19px 36px);border:2px solid #6c4a2a;transform:skewY(-6deg)}.market-cart span{font-size:28px}.market-cart:after{content:'●　　　 ●';position:absolute;bottom:-15px;color:#4b382c;white-space:nowrap}.fiesta-bunting{position:absolute;left:0;right:0;top:30%;z-index:2;text-align:center;color:#e3b347;font-size:clamp(35px,8vw,64px);letter-spacing:10px;transform:rotate(6deg);text-shadow:12px 5px #cd5879,-12px -3px #428a8b;display:none;pointer-events:none}body[data-town-event="market"] .market-cart{display:block}body[data-town-event="fiesta"] .fiesta-bunting{display:block}body[data-town-event="fiesta"] .area-decoration span{opacity:1;filter:drop-shadow(0 0 8px #ffe392)}body[data-lighting="night"] .area-art{filter:brightness(.58) saturate(.78)}body[data-lighting="night"] .town-area:after{background:#192f613d}body[data-lighting="twilight"] .area-art{filter:brightness(.78) saturate(1.05)}body[data-lighting="twilight"] .town-area:after{background:#a0485820}body[data-wind="2"] .area-decoration span{animation-duration:1.8s}
.town-settings{position:fixed;right:12px;top:12px;z-index:9;color:#f5dfbc}.town-settings summary{display:grid;place-items:center;cursor:pointer;width:44px;height:44px;list-style:none;border-radius:50%;background:#153447cc;font-size:23px}.town-settings summary::-webkit-details-marker{display:none}.town-settings[open]{max-width:min(340px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:12px;background:#123140f5;border:1px solid #d5b58166;border-radius:18px}.town-settings[open] summary{margin-left:auto}.town-settings .atmosphere-bar{margin:5px 0;padding:6px 0}.town-settings .preview-note{font-size:11px;max-width:29ch}.town-settings .local-preview{font-size:11px}.scene-preview{border-top:1px solid #d9be7955;padding-top:10px;margin-top:15px;font:11px/1.6 'Trebuchet MS',sans-serif}.scene-preview label{display:block;margin:12px 0}.scene-preview input,.scene-preview select{display:block;width:100%;min-height:44px;margin-top:6px}.scene-preview select{font:13px 'Trebuchet MS',sans-serif;background:#fff0cf;color:#493b31}.scene-today{min-height:44px;background:none;border:1px solid #e5c291;color:#fff0cf;border-radius:8px;padding:8px 12px}footer{position:relative;top:auto;max-width:860px;margin:auto;border:0;padding:12px 20px;text-align:center;display:block;background:#8a623e}footer p,footer .footer-heart{display:none}footer>span:first-child{color:#ffedce;font-size:10px}
@keyframes resident-breathe{from{transform:rotate(-2deg) translateY(0)}to{transform:rotate(2deg) translateY(-3px)}}@keyframes decoration-sway{from{rotate:-5deg}to{rotate:5deg}}@media(min-width:800px){.hero-copy{top:140px;left:9%;max-width:250px}.hero-copy h1,.hero-copy h1 em{font-size:31px}.hero-cupido img{width:170px}.resident-callout{font-size:14px}.area-sign{font-size:16px}.door-number{width:43px;height:38px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Keep the entry in the world rather than putting a landing-page card over it. */
.hero-copy{width:1px;height:1px;max-width:none;padding:0;border:0;box-shadow:none;background:none;overflow:hidden;clip-path:inset(50%);pointer-events:none}.hero-copy h1{white-space:nowrap}.town-area:first-child .area-sign{left:16%;top:3%;font-size:13px}
body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-mode{background:#f5e4c3;color:#63482f;border-color:#967047}body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-mode h2{color:#5d432e}body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-mode #day-label,body:is([data-lighting="sunny"],[data-lighting="morning"]) .cupido-name,body:is([data-lighting="sunny"],[data-lighting="morning"]) .cupido-counter{color:#8b603c}body:is([data-lighting="sunny"],[data-lighting="morning"]) .cupido-dialogue{color:#553b2c}body:is([data-lighting="sunny"],[data-lighting="morning"]) .cupido-skip,body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-mode #back{color:#785336}body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-stage{background-image:url('town-entrance-embedded.webp');background-position:center 46%;background-size:cover}body:is([data-lighting="sunny"],[data-lighting="morning"]) .letter-invitation,body:is([data-lighting="sunny"],[data-lighting="morning"]) .envelope-hint,body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-mode .sample-label{color:#795b3d}body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-mode .heart-keepsake{color:#63482f}body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-mode .heart-keepsake h3{color:#765025}body:is([data-lighting="sunny"],[data-lighting="morning"]) .story-mode .heart-keepsake .keepsake-status{color:#795b3d}
.town-poster{position:absolute;left:5%;top:31%;width:14%;min-width:48px;min-height:66px;padding:0;background:none;border:0;transform:rotate(-5deg);filter:drop-shadow(2px 3px 1px #4b392c66);z-index:4}.town-poster img{display:block;width:100%;height:auto}.town-poster:before,.town-poster:after{content:'';position:absolute;top:-5px;width:18px;height:9px;background:#ead9acaa;rotate:-15deg}.town-poster:before{left:-4px}.town-poster:after{right:-4px;rotate:20deg}.resident-portrait:has(img){width:180px}.resident-portrait img{display:block;width:100%;height:auto}
.resident-dialog.poster-dialog{width:min(620px,calc(100% - 20px));padding:18px}.poster-dialog .resident-portrait{width:100%;max-width:500px;margin:16px auto}.poster-dialog .resident-portrait img{width:100%;height:auto}.poster-dialog h2{font-size:20px}.poster-dialog .resident-line{font-size:14px}
.town-jukebox{position:absolute;left:19%;top:30%;width:13%;min-width:50px;min-height:72px;padding:0;border:0;background:none;rotate:-4deg;z-index:4;filter:drop-shadow(3px 4px 1px #47342177)}.town-jukebox svg{display:block;width:100%;height:auto}.resident-dialog.video-dialog{width:min(720px,calc(100% - 20px));padding:18px}.video-dialog .resident-portrait{width:100%;max-width:none}.video-dialog iframe{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:7px}
.video-dialog iframe{min-height:200px}
/* Painted markers replace the temporary vector labels and generic door panels. */
.town-objects .door>span:first-child,.town-objects .object-leaf,.town-objects .door:before{display:none!important}.town-objects .door.opened{background:none!important;box-shadow:none!important}.town-objects .door.ready{outline:0}.town-objects .door:focus-visible{outline:2px dashed #ffe4a2!important}.town-objects .door:not(:first-child).opened{filter:drop-shadow(0 0 5px #ffd27188)}
.area-opening{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;z-index:0;opacity:0;transition:opacity .65s ease}.town-area.has-open-one .area-opening{opacity:1}.coast-description{position:absolute;left:10%;bottom:12%;max-width:150px;font:italic 12px/1.5 'Trebuchet MS',sans-serif;color:#564633;text-shadow:0 1px #fff7dd}
.story-mode .letter:before{content:'FOR ADRIANA'}
/* One master canvas; neighborhood regions are transparent interaction layers. */
.town-master{display:block;width:100%;height:auto;transition:filter 1.1s}
.town-areas{position:absolute;inset:0;z-index:0;pointer-events:none}
.town-area{position:absolute;left:0;width:100%;pointer-events:none}
.town-area:after{display:none}
.resident,.town-poster,.town-jukebox{pointer-events:auto}
.hero-cupido{display:none}




body[data-lighting="night"] .town-master{filter:brightness(.58) saturate(.78)}
body[data-lighting="twilight"] .town-master{filter:brightness(.78) saturate(1.05)}
@media(prefers-reduced-motion:reduce){.town-master{transition:none}}

/* Small illustrated residents retain full-size touch targets. */
.resident{width:48px;min-height:48px}
.resident svg{width:26px;margin:auto}
.resident-callout{top:-13px;right:-8px;font-size:9px;padding:3px 6px}
@media (hover:none) and (pointer:coarse){
  .hero.plaza-world{max-width:none}
}

/* Original town objects keep their registered coordinates below the arrival extension. */
.town-map { position:absolute; left:0; width:100%; pointer-events:none; }

.town-openings { position:absolute; inset:0; z-index:1; pointer-events:none; transition:filter 1.1s; }
@media(prefers-reduced-motion:reduce){.town-openings{transition:none}}
.town-openings img { position:absolute; height:auto; display:block; }
.town-openings img[hidden] { display:none; }
body[data-lighting="night"] .town-openings { filter:brightness(.58) saturate(.78); }
body[data-lighting="twilight"] .town-openings { filter:brightness(.78) saturate(1.05); }
body[data-lighting="overcast"] .town-openings { filter:brightness(.78) saturate(.8); }

.reference-notebook-link { display:flex; align-items:center; min-height:48px; margin-top:12px; text-decoration:underline; font-size:14px; }

/* Original Easter eggs need their own hit targets inside the passive map layer. */
.town-map > .world-egg { pointer-events:auto; }

/* Legacy completion stars have no physical anchors and put glows on faces/facades. */
.town-map>.world-stars{display:none}
.is-detail-opening::after{content:'';position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px;border:3px solid #fff3d4;border-top-color:#be336a;border-radius:50%;background:#183a4870;box-shadow:0 0 0 4px #183a4860;pointer-events:none;animation:detail-opening-spin .85s linear infinite}
@keyframes detail-opening-spin{to{rotate:360deg}}
@media(prefers-reduced-motion:reduce){.is-detail-opening::after{animation:none}}
