/* One transparent likeness stays consistent across the seasonal rooms.
   The waist meets the rear counter edge; the original room art is untouched. */
.room-canvas .kaitlyn-shopkeeper{position:absolute;left:22%;bottom:38.7%;width:14%;aspect-ratio:1199/1312;z-index:2;display:block;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;min-width:44px;min-height:44px;cursor:pointer;overflow:visible}
.kaitlyn-shopkeeper>img{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(2px 2px 2px #34200c55)}
.kaitlyn-shopkeeper>span{position:absolute;left:50%;top:calc(100% + 4px);transform:translateX(-50%);white-space:nowrap;color:#fff3d8;background:#3b3528;border:1px solid #c9ad77;padding:7px 10px;font:clamp(11px,1.1cqw,15px)/1.2 Georgia,serif;box-shadow:0 2px 4px #28190d55}
.kaitlyn-shopkeeper:hover>span{background:#526048}
.room-canvas .kaitlyn-shopkeeper:focus-visible{outline:3px solid #ffdfa0;outline-offset:4px}
/* Match only the character's ambient lighting, never change scene-state logic. */
body[data-scene-light=night] .kaitlyn-shopkeeper>img{filter:brightness(.75) saturate(.8) drop-shadow(2px 2px 2px #34200c55)}
#kaitlynStoryDialog{width:min(760px,calc(100vw - 28px));max-width:calc(100vw - 28px);max-height:calc(100dvh - 24px);box-sizing:border-box;overscroll-behavior:contain;padding:24px;border-radius:6px}
#kaitlynStoryDialog .dialog-close{margin-bottom:16px;color:#fff4dc}
.kaitlyn-story-layout{display:grid;grid-template-columns:minmax(120px,.65fr) minmax(0,1.35fr);gap:24px;align-items:center}
.kaitlyn-story-portrait{width:100%;height:auto;align-self:center;background:linear-gradient(transparent,#e7d9bc);border-bottom:1px solid #bca278}
.kaitlyn-story-copy h2{font:clamp(25px,4vw,36px)/1.12 Georgia,serif;margin:10px 0 16px}
.kaitlyn-story-copy p{font:16px/1.6 Georgia,serif;margin:0 0 16px}
.kaitlyn-story-copy .eyebrow{font:12px/1.4 Georgia,serif;letter-spacing:.1em;text-transform:uppercase}
.kaitlyn-story-copy .welcome-mark{font:26px Georgia;color:#596445;margin-bottom:8px}
.kaitlyn-story-copy .script-note{display:block;margin-top:16px;font:italic 18px/1.5 Georgia,serif;color:#67563b}
.kaitlyn-story-copy .text-link{display:inline-flex;align-items:center;min-height:44px;margin-top:16px;font:15px/1.5 Georgia,serif;color:#334c3c;text-underline-offset:4px}
#kaitlynStoryDialog :focus-visible{outline:3px solid #526f52;outline-offset:3px}
@media(max-width:760px){
 /* Phone shelves are registered separately. Use the clear lower-shelf gap. */
 .room-canvas .kaitlyn-shopkeeper{left:15%;width:30%;bottom:38.7%}
 .kaitlyn-shopkeeper>span{font-size:11px;padding:7px 8px}
 .room-canvas .placed-soap{z-index:3}
}
@media(max-width:520px){
 #kaitlynStoryDialog{padding:18px}
 .kaitlyn-story-layout{display:block}
 .kaitlyn-story-portrait{float:right;width:95px;margin:0 0 12px 16px}
 .kaitlyn-story-copy h2{font-size:27px}
 .kaitlyn-story-copy p{font-size:15px;line-height:1.65;clear:both}
}
@media(prefers-reduced-motion:reduce){.kaitlyn-shopkeeper,.kaitlyn-shopkeeper>img,#kaitlynStoryDialog{animation:none;transition:none;scroll-behavior:auto}}
