/* One section per destination; a shared shell keeps the old-web world connected. */
html{scroll-padding-top:0}
section[id],details[id]{scroll-margin-top:20px}
.web-shell>main{max-width:1320px;padding:24px}
.world-location{max-width:1272px;font-size:12px}
.section-heading{padding:12px 0 26px;max-width:850px}
.section-heading .micro{color:var(--accent)}
.section-heading p:last-child{margin:0;font-size:19px;max-width:65ch}
.section-heading h1{margin-bottom:12px}
.frontpage{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:24px;align-items:start}
.front-welcome{border:1px solid var(--accent);background:var(--paper);box-shadow:3px 3px var(--wash)}
.welcome-art{position:relative;overflow:hidden;background:#70e4ff}
.welcome-art>img{display:block;width:100%;height:auto}
.welcome-art>span{position:absolute;bottom:2.2%;right:.6%;width:14.4%;height:6.2%;background:#70e4ff}
.front-intro{padding:22px 26px}
.front-intro h1{font-size:clamp(25px,2.6vw,36px);letter-spacing:-1px}
.front-intro p:last-child{margin:0;max-width:65ch}
.front-note .panel,.front-links .panel{margin:0}
.front-note .panel-bar,.front-links .panel-bar{font-size:16px;letter-spacing:1px}
.front-doors{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.front-door{display:flex;flex-direction:column;border:1px solid var(--accent);background:var(--paper);border-radius:8px;text-decoration:none;overflow:hidden;box-shadow:3px 3px var(--wash);color:var(--ink)}
.front-door:hover{outline:2px solid var(--accent);outline-offset:2px}
.door-bar{padding:10px 14px;background:linear-gradient(#b898ed,#7752ae);color:#fff;font:12px/1.7 var(--pixel);letter-spacing:1px;border-bottom:3px double #fff}
.door-art{display:flex;align-items:center;justify-content:center;gap:0;padding:15px 12px;height:168px;background:radial-gradient(#fff9 1px,transparent 1.5px) 0 0/12px 12px,linear-gradient(130deg,#fce5f9,#e5e0fa)}
.door-art img{max-width:33%;max-height:140px;object-fit:contain}
.door-art img:nth-child(2){transform:scale(1.13)}
.yokai-door{gap:16px;background:radial-gradient(#fff8 1px,transparent 1.5px) 0 0/12px 12px,linear-gradient(130deg,#d7f6f8,#e6e2fa)}
.yokai-door .cropped-sprite{height:80px;max-width:28%}
.yokai-door .cropped-sprite img{max-width:none;max-height:none;object-fit:fill;transform:none}
.door-copy{display:grid;gap:8px;padding:20px}
.door-copy strong{font:19px/1.4 Dela,sans-serif;color:var(--accent)}
.door-copy>b{font:12px/1.8 var(--pixel);margin-top:10px;text-decoration:underline;text-underline-offset:4px}
.front-link-list{display:grid;gap:18px}
.front-link-list a{display:grid;gap:4px;text-decoration:none;border-bottom:1px dashed #b9a4d3;padding-bottom:18px}
.front-link-list a:last-child{border:0;padding:0}
.front-link-list b{font:14px/1.5 var(--pixel)}
.front-link-list span{font-size:16px;line-height:1.6}
.character-directory{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.character-directory .resident{padding:16px;min-height:150px}
.character-directory .resident-copy small{font-size:10px}
.visiting-book{margin-top:28px;background:var(--paper);border:1px solid var(--accent)}
.visiting-book>summary{display:flex;justify-content:space-between;gap:15px;cursor:pointer;padding:16px 20px;font:13px/1.8 var(--pixel);background:var(--wash)}
.visiting-book>summary span{font-size:11px}
.visiting-book>.panel{border:0;margin:0;box-shadow:none}
.visiting-book .panel-bar{display:none}
.visiting-book .passport-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
.house-place{color:var(--accent);font:22px/1.5 var(--reading)}
.house-hero h1{font-size:clamp(36px,4vw,56px)}
.hero-copy>p:not(.micro){margin-bottom:12px}
.house-navigation{font-size:12px}
.house-layout .panel-bar{font-size:16px}
.house-right .panel-body,.house-left .panel-body{line-height:1.7}
.game-intro{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:30px;align-items:center;background:linear-gradient(120deg,var(--wash),var(--sky));padding:30px;border:3px double #fff;box-shadow:0 0 0 1px var(--accent);margin:2px 0 28px}
.game-intro .fine{margin:18px 0 0}
.game-portrait{height:340px;width:100%;object-fit:contain}
.site-footer{font-size:16px;margin-top:24px}
.site-footer .fine{margin:12px auto;max-width:680px}
@media(max-width:1100px){.frontpage{grid-template-columns:minmax(0,1fr) 240px;gap:18px}.character-directory{grid-template-columns:repeat(2,minmax(0,1fr))}.door-art{height:140px}.door-art img{max-height:110px}.door-copy{padding:16px}.door-copy strong{font-size:17px}}
@media(max-width:760px){
  .web-shell>main{padding:16px}.frontpage{grid-template-columns:1fr;gap:18px}
  .front-note{display:none}.front-doors{gap:14px}.front-links .front-link-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  .front-link-list a{border:0;padding:0}.front-link-list span{font-size:14px}
  .front-intro{padding:20px}.front-intro h1{font-size:28px}
  .character-directory .resident{padding:15px 10px;gap:10px}.resident-art{flex-basis:90px}
  .section-heading{padding:8px 0 22px}.section-heading p:last-child{font-size:17px}
  .visiting-book .passport-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .visiting-book>summary{flex-wrap:wrap;padding:14px}
  .house-layout{display:flex;flex-direction:column}.house-left,.house-center,.house-right{width:100%}
  .house-center{order:1}.house-left{order:2}.house-right{order:3}.house-hero h1{font-size:38px}
  .game-intro{grid-template-columns:1fr;padding:24px}.game-portrait{display:none}
}
@media(max-width:440px){
  .web-shell>main{padding:12px}.front-intro{padding:16px}.front-intro h1{font-size:25px}
  .front-doors{grid-template-columns:1fr}.front-door{display:grid;grid-template-columns:110px minmax(0,1fr)}
  .door-bar{grid-column:1/-1;font-size:11px;padding:8px 12px}.door-art{height:100%;min-height:170px;padding:10px;flex-wrap:wrap;align-content:center;gap:0}.door-art img{max-width:50%;width:50%;height:68px}.door-art img:nth-child(2){order:-1;max-width:90%;width:90%;height:82px;transform:none}.yokai-door{gap:12px}.yokai-door .cropped-sprite{height:40px;max-width:45%}
  .door-copy{padding:16px 12px;font-size:16px}.door-copy strong{font-size:17px}.door-copy>b{font-size:10px}
  .front-links .front-link-list{grid-template-columns:1fr}.front-link-list a{grid-template-columns:64px minmax(0,1fr);gap:12px;padding-bottom:12px;border-bottom:1px dashed #b9a4d3}
  .character-directory{gap:10px}.resident-copy strong{font-size:16px}.resident-copy>span{font-size:14px}.resident-copy b{font-size:9px}
}

/* Collected visits become character stickers, empty slots remain invitations. */
.visiting-book .passport-grid{gap:12px}
.visiting-book .passport-stamp{display:flex;flex-direction:column;align-items:center;gap:7px;padding:14px 8px 12px;border:1px dashed #c9b9dc;border-radius:10px;background:#fcfaff;position:relative;transition:background .2s,box-shadow .2s}
.visiting-book .passport-stamp:hover{background:#f3eafb;box-shadow:0 3px 0 #e5d8ef}
.visiting-book .stamp-art{display:grid;place-items:center;position:relative;width:90px;max-width:100%;height:88px;border-radius:50%;background:#f0eaf7}
.stamp-empty{color:#b8a1cb;font:36px/1 Georgia,serif}
.stamp-character{display:none;width:80px;height:80px;object-fit:contain;filter:drop-shadow(1px 2px 0 #fff)}
.stamp-check{display:none;position:absolute;right:0;bottom:2px;width:22px;height:22px;border-radius:50%;background:#7654a0;color:white;border:2px solid white;font:12px/18px system-ui,sans-serif}
.visiting-book .stamp-name{font-size:14px;line-height:1.4;min-height:2.8em;display:grid;place-items:center}
.visiting-book .stamp-state{font:8px/1.6 var(--pixel);letter-spacing:.5px;color:#897997}
.visiting-book .passport-stamp.collected{border:1px solid #aa86cc;background:linear-gradient(145deg,#fff7fc,#eee3ff);box-shadow:inset 0 0 0 3px #fff,0 3px 0 #e3d1f0;color:#654583}
.passport-stamp.collected .stamp-empty{display:none}.passport-stamp.collected .stamp-character,.passport-stamp.collected .stamp-check{display:block}
.visiting-book .collected .stamp-art{background:#e5d7f5}.visiting-book .collected .stamp-state{color:#7654a0}
@media(max-width:440px){.visiting-book .passport-grid{gap:8px}.visiting-book .passport-stamp{padding:12px 5px 10px}.visiting-book .stamp-art{width:72px;height:72px}.stamp-character{width:66px;height:66px}.visiting-book .stamp-name{font-size:12px}.visiting-book .stamp-state{font-size:7px;letter-spacing:0}}
@media(prefers-reduced-motion:reduce){.visiting-book .passport-stamp{transition:none}}
.visiting-book .passport-stamp>.stamp-art{display:grid}
