@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;1,300&family=Noto+Serif+KR:wght@300;400;500&display=swap');
:root{--ink:#090812;--ink2:#13101b;--panel:#181422;--violet:#8f72b3;--lav:#d7c4e9;--text:#e7dfed;--muted:#b9aec8;--danger:#84394b;--line:rgba(215,196,233,.24);--serif:'Cormorant Garamond','Noto Serif KR',serif;--kr:'Noto Serif KR',serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--ink)}body{margin:0;background:var(--ink);color:var(--text);font-family:var(--kr);font-weight:300;line-height:1.9;overflow-x:hidden}button,a{font:inherit}button{color:inherit}a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.grain{position:fixed;inset:0;z-index:100;pointer-events:none;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E")}
.chrome{position:fixed;z-index:90;top:0;left:0;right:0;padding:22px clamp(18px,3vw,52px);display:flex;justify-content:space-between;pointer-events:none}.chrome button{pointer-events:auto}.icon-button,.text-button,.menu-close{border:0;background:transparent;cursor:pointer}.menu-button{width:44px;height:44px;display:grid;place-content:center;gap:7px}.menu-button span{display:block;width:25px;height:1px;background:var(--lav);transition:.3s}.menu-button span:last-child{width:16px}.menu-button:hover span:last-child{width:25px}.chrome-actions{display:flex;gap:18px}.text-button{font:400 12px var(--serif);letter-spacing:.14em;color:var(--muted);padding:10px}.text-button b{color:var(--lav);font-weight:400}.signal{font-size:18px;margin-right:5px}
.site-menu{position:fixed;z-index:96;inset:0 auto 0 0;width:min(380px,88vw);padding:72px 42px;background:rgba(9,8,18,.97);border-right:1px solid var(--line);transform:translateX(-101%);transition:transform .45s cubic-bezier(.2,.8,.2,1);overflow:auto}.site-menu.open{transform:none}.site-menu ol{list-style:none;margin:36px 0 0;padding:0;border-left:1px solid var(--line)}.site-menu li{margin:0}.site-menu a{display:block;padding:7px 0 7px 20px;color:var(--muted);font:300 18px var(--serif);letter-spacing:.08em;text-decoration:none;transition:.2s}.site-menu a:hover,.site-menu a:focus{color:white;transform:translateX(5px)}.menu-close{position:absolute;right:22px;top:16px;font:300 34px var(--serif)}.menu-scrim{position:fixed;z-index:95;inset:0;border:0;background:rgba(0,0,0,.55)}
.eyebrow{font:400 11px var(--serif);letter-spacing:.24em;color:var(--lav);text-transform:uppercase}.section{position:relative;min-height:100vh;padding:clamp(100px,12vw,190px) clamp(24px,7vw,120px);border-top:1px solid var(--line)}.section-heading{max-width:720px;margin-bottom:clamp(52px,7vw,100px)}h2{font:300 clamp(42px,6vw,86px)/1.05 var(--serif);letter-spacing:-.025em;margin:.15em 0 .45em}h2 em{color:var(--lav);font-weight:300}.section-heading>p:last-child{max-width:600px;color:var(--muted)}.section-no{position:absolute;left:3vw;bottom:3vw;font:300 12px var(--serif);letter-spacing:.15em;color:var(--muted)}
.hero{height:100svh;min-height:680px;position:relative;overflow:hidden;background:#06060d}.hero-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,4,11,.28),rgba(4,4,11,.05) 43%,rgba(4,4,11,.72) 100%),linear-gradient(0deg,rgba(4,4,11,.7),transparent 38%)}.hero-copy{position:absolute;right:7vw;top:50%;transform:translateY(-46%);width:min(520px,43vw);text-align:center;text-shadow:0 2px 24px #05040a}.quote{font-size:clamp(17px,1.55vw,25px);line-height:1.8}.title-art{display:block;width:min(530px,100%);height:auto;margin:3vh auto 1vh;mix-blend-mode:screen;filter:drop-shadow(0 0 24px rgba(177,116,255,.28))}.hero-deck{font-size:13px;color:var(--muted)}.enter-button{border:0;border-bottom:1px solid var(--lav);padding:12px 3px;background:transparent;color:var(--text);letter-spacing:.18em;margin-top:24px;cursor:pointer}.enter-button span{display:inline-block;margin-left:18px;transition:.2s}.enter-button:hover span{transform:translateY(4px)}.scroll-cue{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);font:300 10px var(--serif);letter-spacing:.25em;color:var(--muted);writing-mode:vertical-rl}
.love-section{display:grid;grid-template-columns:.75fr 1.45fr;gap:8vw;align-items:center;padding-right:0;overflow:hidden}.love-copy{max-width:450px;margin-left:2vw}.love-copy h2{font-family:var(--kr);line-height:1.3}.love-copy p:last-child{color:var(--muted)}.portrait{margin:0;position:relative;height:86vh;min-height:620px}.portrait img{width:100%;height:100%;object-fit:cover;object-position:center}.portrait:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--ink) 0,transparent 35%),linear-gradient(0deg,var(--ink),transparent 22%)}.portrait figcaption{position:absolute;right:3vw;bottom:4vw;z-index:2;text-align:right;font:300 11px/1.5 var(--serif);letter-spacing:.18em;color:var(--muted)}
.world-section{min-height:95vh;display:flex;align-items:center;overflow:hidden}.world-sky{position:absolute;inset:0;background:radial-gradient(circle at 76% 28%,rgba(143,114,179,.19),transparent 25%),linear-gradient(#12101d 0,#1d1724 42%,#08070d 75%)}.world-sky:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,6,13,.92),rgba(7,6,13,.18) 70%),radial-gradient(ellipse at 50% 100%,transparent,rgba(0,0,0,.6))}.moon{position:absolute;width:min(25vw,340px);aspect-ratio:1;border-radius:50%;right:12vw;top:11%;background:radial-gradient(circle at 35% 30%,#f7edff,#b18ad9 45%,#6b488f 75%);box-shadow:0 0 80px #725099}.skyline{position:absolute;bottom:22%;left:15%;right:5%;height:34%;clip-path:polygon(0 100%,0 66%,4% 66%,4% 42%,9% 42%,9% 58%,14% 58%,14% 20%,19% 20%,19% 72%,25% 72%,25% 50%,33% 50%,33% 80%,38% 80%,38% 40%,43% 40%,43% 65%,50% 65%,50% 30%,54% 30%,54% 75%,61% 75%,61% 47%,67% 47%,67% 66%,73% 66%,73% 12%,76% 12%,76% 68%,81% 68%,81% 35%,87% 35%,87% 62%,93% 62%,93% 48%,100% 48%,100% 100%);background:#07070c}.road{position:absolute;bottom:-10%;left:38%;width:38%;height:60%;background:linear-gradient(90deg,transparent 48%,rgba(215,196,233,.18) 49%,rgba(215,196,233,.18) 51%,transparent 52%);transform:perspective(300px) rotateX(62deg)}.world-copy{position:relative;z-index:2;max-width:620px}.world-copy h2{font-family:var(--kr);font-size:clamp(34px,4vw,64px)}.world-copy p{max-width:560px;color:var(--muted)}
.map-section{background:linear-gradient(135deg,#0d0b13,#17121f 60%,#0b0910)}.map-shell{display:grid;grid-template-columns:minmax(0,1fr) 340px;border:1px solid var(--line);min-height:590px;position:relative}.map-viewport{overflow:hidden;touch-action:none;cursor:grab;background:#0f0c15;min-height:590px}.map-viewport:active{cursor:grabbing}.map-canvas{position:relative;width:2112px;height:744px;transform-origin:0 0;will-change:transform}.map-canvas svg{display:block;width:100%;height:100%}.ridge{fill:#0b0910;opacity:.85}.artery{fill:none;stroke:#8f72b3;stroke-opacity:.45;stroke-width:4}.artery.minor{stroke-width:2;stroke-dasharray:9 7}.city-grid path{fill:none;stroke:#d7c4e9;stroke-opacity:.14;stroke-width:3}.map-labels text{fill:#d7c4e9;fill-opacity:.33;font:32px var(--serif);letter-spacing:8px}.map-toolbar{position:absolute;z-index:6;left:18px;top:18px;display:flex;background:rgba(9,8,18,.85);border:1px solid var(--line)}.map-toolbar button{width:42px;height:42px;border:0;border-right:1px solid var(--line);background:transparent;cursor:pointer;font-size:20px}.map-toolbar button:last-child{border:0}.map-marker{position:absolute;transform:translate(-50%,-50%);width:38px;height:38px;border:1px solid rgba(255,255,255,.55);background:#8f72b3;color:white;border-radius:50% 50% 50% 0;rotate:-45deg;display:grid;place-items:center;cursor:pointer;box-shadow:0 0 22px rgba(143,114,179,.55)}.map-marker span{rotate:45deg;font:500 12px var(--serif)}.map-marker.active{background:#e4d7ef;color:#271c31;scale:1.15}.map-note{padding:42px 30px;background:rgba(9,8,18,.92);border-left:1px solid var(--line)}.map-note h3{font:300 28px var(--serif);margin:.4em 0}.map-note p{font-size:13px;color:var(--muted)}.map-note .risk{display:inline-block;margin-top:18px;padding-top:12px;border-top:1px solid var(--danger);color:#dbaeb8}.location-index{list-style:none;padding:26px 0 0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:0 28px}.location-index button{width:100%;border:0;border-bottom:1px solid rgba(215,196,233,.13);background:transparent;text-align:left;padding:10px 4px;color:var(--muted);cursor:pointer;font-size:12px}.location-index button:hover,.location-index button.active{color:var(--lav)}.location-index b{font:300 17px var(--serif);margin-right:12px}
.safehouse-section{background:radial-gradient(circle at 65% 45%,rgba(143,114,179,.11),transparent 38%),#0b0910}.floor-tabs{position:absolute;right:7vw;top:150px;display:flex;border:1px solid var(--line)}.floor-tabs button{border:0;background:transparent;padding:10px 20px;color:var(--muted);cursor:pointer}.floor-tabs button[aria-selected=true]{background:var(--lav);color:#17101e}.safehouse-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.65fr);gap:32px;align-items:stretch}.floorplan{position:relative;min-height:560px;border:1px solid var(--line);padding:22px;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(4,1fr);gap:8px;background:linear-gradient(135deg,rgba(215,196,233,.06),transparent),repeating-linear-gradient(90deg,transparent 0 34px,rgba(255,255,255,.02) 35px)}.room{position:relative;border:1px solid rgba(215,196,233,.3);background:rgba(52,43,73,.32);cursor:pointer;padding:14px;text-align:left;min-height:90px;overflow:hidden}.room:before{content:"";position:absolute;inset:8px;border:1px dashed rgba(215,196,233,.08)}.room span{position:relative;z-index:1;font-size:13px}.room:hover,.room.active{background:rgba(143,114,179,.35);border-color:var(--lav)}.room-note{border:1px solid var(--line);padding:42px 34px;background:rgba(8,7,13,.75)}.room-note h3{font:300 38px var(--serif);margin:.4em 0}.room-note p{color:var(--muted)}.room-note .room-type{width:100%;aspect-ratio:16/9;margin-bottom:24px;background:linear-gradient(135deg,#3b3049,#16121d 55%,#74608b);position:relative;overflow:hidden}.room-note .room-type:after{content:"";position:absolute;inset:18%;border:1px solid rgba(255,255,255,.2);box-shadow:18px 18px 0 rgba(0,0,0,.24)}
.corwin-section{display:grid;grid-template-columns:1.12fr .88fr;gap:0;padding:0;background:#0a0810}.corwin-image{min-height:100vh;position:sticky;top:0;display:grid;place-items:center;padding:9vh 3vw;background:radial-gradient(ellipse at 50% 45%,rgba(143,114,179,.2),transparent 52%),linear-gradient(90deg,#09070f,#110d18 70%,#0a0810);overflow:hidden}.oval-frame{position:relative;width:min(37vw,580px);height:min(78vh,760px);border-radius:50%;overflow:hidden;background:#eeeef5;box-shadow:0 0 0 1px rgba(215,196,233,.35),0 0 0 18px rgba(143,114,179,.035),0 35px 100px rgba(0,0,0,.6)}.oval-frame:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 65px rgba(38,24,48,.16);pointer-events:none}.oval-frame img{width:100%;height:100%;object-fit:cover;object-position:50% 42%}.portrait-code{position:absolute;left:4vw;bottom:6vh;font:300 10px/1.8 var(--serif);letter-spacing:.2em;color:var(--muted);writing-mode:vertical-rl}.corwin-copy{padding:14vh 7vw 9vh 4vw}.corwin-copy .lead{font-size:18px;color:var(--lav)}.corwin-copy>p{color:var(--muted)}.profile{display:grid;grid-template-columns:1fr 1fr;margin-top:48px;border-top:1px solid var(--line)}.profile div{padding:14px 0;border-bottom:1px solid var(--line)}.profile dt{font:300 10px var(--serif);letter-spacing:.18em;color:var(--muted)}.profile dd{margin:0;font-size:14px}.corwin-details,.objects{grid-column:1/-1;padding:0 7vw 100px}.corwin-details{display:grid;grid-template-columns:1fr 1fr;gap:0 38px}.corwin-details details{border-top:1px solid var(--line);padding:18px 0}.corwin-details summary{cursor:pointer;color:var(--lav)}.corwin-details p{color:var(--muted);font-size:13px}.object-grid{display:grid;grid-template-columns:repeat(4,1fr);margin-top:30px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.object-card{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(255,255,255,.015);padding:28px 20px;text-align:left;cursor:pointer}.object-card b{display:block;font:300 22px var(--serif);margin:8px 0}.object-card small{color:var(--muted)}.object-card .object-desc{display:none;color:var(--muted);font-size:12px;margin-top:14px}.object-card.active .object-desc{display:block}.object-card.active{background:rgba(143,114,179,.1)}
.cognition-section{background:linear-gradient(180deg,#0a0810,#17121e)}.cognition-track{display:grid;grid-template-columns:repeat(7,1fr);position:relative;margin:80px 0 50px}.cognition-track:before{content:"";position:absolute;left:5%;right:5%;top:20px;height:1px;background:var(--line)}.cog-button{position:relative;border:0;background:transparent;padding:58px 4px 10px;cursor:pointer;color:var(--muted);font:300 13px var(--serif)}.cog-button:before{content:"";position:absolute;top:10px;left:50%;width:20px;height:20px;border-radius:50%;transform:translateX(-50%);background:var(--c);box-shadow:0 0 0 6px #15111d,0 0 22px color-mix(in srgb,var(--c),transparent 45%)}.cog-button.active{color:white}.cog-button.active:before{scale:1.35}.cognition-note{max-width:900px;margin:auto;padding:clamp(28px,5vw,64px);border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(0,0,0,.16)}.cognition-note h3{font:300 32px var(--serif);margin:0 0 28px}.cognition-fields{display:grid;grid-template-columns:repeat(2,1fr);gap:25px 45px}.cognition-fields h4{margin:0;color:var(--lav);font-size:13px}.cognition-fields p{margin:5px 0;color:var(--muted);font-size:13px}
.factions-section{background:#0c0a12}.faction-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line)}.faction-card{background:#0c0a12;padding:35px 28px;min-height:330px}.faction-card h3{font:300 27px var(--serif);margin:35px 0 18px}.faction-card p{font-size:13px;color:var(--muted)}.people-block{margin-top:100px}.people-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:30px}.person-card{border:1px solid var(--line);background:transparent;padding:22px;text-align:left;cursor:pointer}.person-card h3{font:300 22px var(--serif);margin:0}.person-card small,.person-card p{color:var(--muted)}.person-card .person-detail{display:none;margin-top:15px;padding-top:15px;border-top:1px solid var(--line);font-size:12px}.person-card.active .person-detail{display:block}.person-card:hover,.person-card.active{background:rgba(143,114,179,.07)}
.beginning-section{background:radial-gradient(circle at 50% 0,rgba(143,114,179,.16),transparent 45%),#08070d}.beginning-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.beginning-grid article{padding:70px 42px;min-height:430px;border-right:1px solid var(--line);display:flex;flex-direction:column}.beginning-grid article:last-child{border:0}.beginning-grid span,.beginning-grid b{font:300 11px var(--serif);letter-spacing:.2em;color:var(--lav)}.beginning-grid h3{font:300 52px var(--kr);margin:auto 0 5px}.beginning-grid p{color:var(--muted);font-size:13px;margin-top:36px}
.archive-section{background:linear-gradient(150deg,#17121f,#0b0910)}.archive-columns{display:grid;grid-template-columns:.75fr 1.25fr;gap:7vw}.archive-columns h3{font:300 14px var(--serif);letter-spacing:.2em;color:var(--lav)}.accordion{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;padding:20px 0;cursor:pointer}.accordion b{font-weight:400}.accordion span{display:block;max-height:0;overflow:hidden;color:var(--muted);font-size:12px;transition:max-height .35s,padding .35s}.accordion.active span{max-height:180px;padding-top:12px}.radio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.radio-card{border:1px solid var(--line);background:rgba(0,0,0,.12);min-height:150px;padding:20px;text-align:left;cursor:pointer}.radio-card strong{display:block;font:300 28px var(--serif);color:var(--lav)}.radio-card span,.radio-card small{display:block;color:var(--muted);font-size:11px}.radio-card:hover,.radio-card.active{background:rgba(143,114,179,.12)}.radio-log{margin-top:28px;padding:clamp(25px,5vw,60px);background:#0a0810;border:1px solid var(--line);white-space:pre-line;color:var(--muted);font-size:13px}.radio-log h3{font:300 28px var(--serif);color:var(--text)}
.persona-section{background:#0b0910}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:35px}.filters button{border:1px solid var(--line);background:transparent;padding:8px 18px;color:var(--muted);cursor:pointer;font-size:12px}.filters button.active{background:var(--lav);color:#160f1d}.persona-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.persona-card{border:1px solid var(--line);background:rgba(255,255,255,.012);text-align:left;padding:26px;cursor:pointer}.persona-card .num{font:300 12px var(--serif);letter-spacing:.2em;color:var(--violet)}.persona-card h3{font:400 18px var(--kr);margin:12px 0}.persona-card>p{color:var(--muted);font-size:12px}.persona-card .play{display:none;border-top:1px solid var(--line);padding-top:14px;margin-top:16px;color:var(--lav);font-size:12px}.persona-card.active .play{display:block}.persona-card:hover,.persona-card.active{background:rgba(143,114,179,.08)}
.epilogue{height:100svh;min-height:680px;position:relative;display:grid;place-items:center;overflow:hidden}.epilogue>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.epilogue:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,transparent 15%,rgba(4,3,8,.72) 70%),linear-gradient(0deg,#090812,transparent 42%)}.epilogue-copy{position:relative;z-index:1;text-align:center;max-width:760px;padding:30px}.epilogue-copy h2{font-family:var(--kr);font-size:clamp(28px,4vw,54px)}.epilogue blockquote{font-size:clamp(17px,2vw,26px);color:var(--lav);margin:40px 0}.to-top{text-decoration:none;border-bottom:1px solid var(--lav);padding:8px;font-size:12px;letter-spacing:.15em}footer{display:flex;justify-content:space-between;padding:24px 5vw;color:var(--muted);font:300 10px var(--serif);letter-spacing:.2em;border-top:1px solid var(--line)}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .9s,transform .9s}.reveal.visible{opacity:1;transform:none}
@media(max-width:900px){.section{padding-left:24px;padding-right:24px}.hero-shade{background:linear-gradient(0deg,rgba(4,4,11,.9),transparent 64%),linear-gradient(90deg,transparent,rgba(4,4,11,.25))}.hero-image{object-position:45% center}.hero-copy{top:auto;left:24px;right:24px;bottom:8vh;transform:none;width:auto}.quote{font-size:15px}.title-art{width:min(400px,90%);margin:12px auto -8px}.hero-deck{display:none}.love-section{grid-template-columns:1fr;padding:110px 0 0}.love-copy{padding:0 24px;margin:0}.portrait{height:70vh;min-height:520px}.world-copy{padding-top:80px}.moon{width:52vw;right:-6vw}.map-shell{grid-template-columns:1fr}.map-note{border-left:0;border-top:1px solid var(--line)}.location-index{grid-template-columns:repeat(2,1fr)}.floor-tabs{position:static;margin:-25px 0 28px}.safehouse-grid{grid-template-columns:1fr}.floorplan{min-height:440px}.corwin-section{grid-template-columns:1fr}.corwin-image{position:relative;min-height:76vh;padding:8vh 24px}.oval-frame{width:min(78vw,520px);height:min(64vh,650px)}.portrait-code{left:18px;bottom:4vh}.corwin-copy{padding:80px 24px}.corwin-details,.objects{padding-left:24px;padding-right:24px}.object-grid{grid-template-columns:repeat(2,1fr)}.cognition-track{grid-template-columns:repeat(4,1fr);gap:18px 0}.cognition-track:before{display:none}.cognition-fields{grid-template-columns:1fr}.faction-grid{grid-template-columns:1fr 1fr}.people-grid,.persona-grid{grid-template-columns:repeat(2,1fr)}.beginning-grid{grid-template-columns:1fr}.beginning-grid article{border-right:0;border-bottom:1px solid var(--line);min-height:330px}.archive-columns{grid-template-columns:1fr}.radio-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.chrome{padding:12px}.chrome-actions{gap:2px}.text-button{font-size:10px}.hero{min-height:640px}.hero-image{object-position:42% center}.hero-copy{bottom:10vh}.quote{font-size:13px}.title-art{width:95%}.scroll-cue{display:none}.portrait{height:62vh;min-height:460px}.section-heading{margin-bottom:45px}.map-viewport{min-height:420px}.map-shell{min-height:0}.map-canvas{width:1000px;height:570px}.map-note{padding:28px 22px}.location-index{grid-template-columns:1fr}.floorplan{padding:10px;gap:5px;min-height:390px}.room{padding:8px}.room span{font-size:10px}.profile{grid-template-columns:1fr}.corwin-details{grid-template-columns:1fr}.object-grid{grid-template-columns:1fr}.cognition-track{grid-template-columns:repeat(3,1fr)}.faction-grid,.people-grid,.persona-grid{grid-template-columns:1fr}.radio-grid{grid-template-columns:1fr}.beginning-grid article{padding:50px 26px}.epilogue>img{object-position:43% center}.epilogue-copy h2{font-size:28px}footer{flex-direction:column;gap:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}*{animation:none!important;transition-duration:.01ms!important}}

/* Second-pass acceptance fixes: real image environments and in-image overlays. */
body.intro-locked{position:fixed;inset:0;width:100%;height:100svh;overflow:hidden}
body.menu-open{overflow:hidden}
body.intro-locked main>section:not(#intro),body.intro-locked footer{visibility:hidden}
body.intro-locked .site-menu a[aria-disabled=true]{opacity:.35;cursor:not-allowed}
.hero-copy{width:min(460px,40vw)}
.hero-copy.visible{transform:translateY(-46%)}
.title-art{width:min(430px,100%);max-height:220px;object-fit:contain;margin:0 auto -6px}

.world-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.world-sky{background:linear-gradient(90deg,rgba(5,4,11,.94) 0,rgba(5,4,11,.77) 35%,rgba(5,4,11,.18) 69%,rgba(5,4,11,.25) 100%),linear-gradient(0deg,rgba(5,4,11,.66),transparent 45%)}
.world-sky:after{background:linear-gradient(0deg,rgba(5,4,11,.62),transparent 35%),radial-gradient(ellipse at center,transparent 42%,rgba(0,0,0,.48))}
.world-copy{padding:38px 42px 38px 0;text-shadow:0 2px 18px #030207}

.map-shell{display:block;min-height:0;background:#0f0c15}
.map-viewport{position:relative;min-height:clamp(480px,58vw,720px);isolation:isolate;overscroll-behavior:contain;user-select:none;-webkit-user-select:none}
.map-viewport.is-dragging{cursor:grabbing}
.map-canvas{width:2112px;height:744px;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}
.map-art{display:block;width:100%;height:100%;object-fit:cover;user-select:none;pointer-events:none;filter:saturate(.82) contrast(1.06) brightness(.83)}
.map-marker{z-index:2}
.map-popup,.room-popup{position:absolute;z-index:7;width:min(330px,calc(100% - 24px));border:1px solid rgba(215,196,233,.5);background:rgba(8,7,14,.96);box-shadow:0 22px 60px rgba(0,0,0,.58);padding:14px 18px 18px;backdrop-filter:blur(9px)}
.map-popup[hidden],.room-popup[hidden]{display:none}
.map-popup-image,.room-popup-image{height:104px;margin:-14px -18px 14px;background-repeat:no-repeat;background-size:480% auto;border-bottom:1px solid var(--line);filter:saturate(.88) contrast(1.08)}
.map-popup-image{background-image:url('assets/survival-map-desert-v3.png')}
.map-popup h3,.room-popup h3{font:300 26px var(--serif);margin:.2em 26px .35em 0}
.map-popup p,.room-popup p{font-size:11px;line-height:1.65;color:var(--muted);margin:.5em 0}
.map-popup .risk{margin-top:10px;padding-top:9px;border-top:1px solid var(--danger);color:#e1b5be}
.popup-close{position:absolute;right:8px;top:108px;width:30px;height:30px;border:0;background:rgba(8,7,14,.72);font-size:24px;line-height:1;cursor:pointer;color:var(--lav)}
.room-popup .popup-close{top:108px}

.safehouse-grid{display:block;max-width:1320px;margin:auto}
.floorplan{position:relative;display:block;min-height:0;aspect-ratio:16/9;padding:0;overflow:hidden;background:#08070d}
.floorplan>img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.86) contrast(1.04) brightness(.9)}
#roomHotspots{position:absolute;inset:0}
.room{position:absolute;transform:translate(-50%,-50%);width:auto;min-height:0;padding:7px 12px;border:1px solid rgba(255,255,255,.68);border-radius:999px;background:rgba(12,9,18,.74);box-shadow:0 0 0 4px rgba(143,114,179,.12),0 7px 22px rgba(0,0,0,.45);overflow:visible;white-space:nowrap;text-align:center}
.room:before{display:none}.room span{font-size:11px;letter-spacing:.04em}.room:hover,.room.active{background:var(--lav);color:#17101e;box-shadow:0 0 0 5px rgba(215,196,233,.18),0 7px 26px rgba(0,0,0,.55)}
.room-popup-image{background-size:400% auto}

.faction-grid{grid-template-columns:repeat(2,1fr);gap:1px}
.faction-card{display:grid;grid-template-columns:minmax(180px,.9fr) 1.1fr;gap:26px;align-items:center;padding:0;min-height:290px;overflow:hidden}
.faction-card>img{width:100%;height:100%;min-height:290px;object-fit:cover;filter:saturate(.78) contrast(1.06) brightness(.76)}
.faction-card>div{padding:30px 32px 30px 0}.faction-card h3{margin:14px 0 14px}

.epilogue:after{background:linear-gradient(90deg,rgba(4,3,8,.48),rgba(4,3,8,.18) 45%,rgba(4,3,8,.48)),linear-gradient(0deg,#090812,transparent 48%),radial-gradient(circle at 50% 45%,transparent 8%,rgba(4,3,8,.65) 78%)}
.epilogue-copy{max-width:820px;padding:clamp(28px,5vw,64px);background:rgba(7,5,12,.58);border:1px solid rgba(215,196,233,.18);box-shadow:0 22px 80px rgba(0,0,0,.42);backdrop-filter:blur(5px);text-shadow:0 2px 18px #000}

@media(max-width:900px){
  .hero-copy{width:auto}.hero-copy.visible{transform:none}.title-art{width:min(390px,90%);max-height:190px}
  .world-image{object-position:64% center}.world-sky{background:linear-gradient(90deg,rgba(5,4,11,.9),rgba(5,4,11,.38)),linear-gradient(0deg,rgba(5,4,11,.82),transparent 60%)}.world-copy{padding:70px 0 0;max-width:560px}
  .map-viewport{min-height:540px}.faction-card{grid-template-columns:1fr}.faction-card>img{height:220px;min-height:220px}.faction-card>div{padding:6px 24px 30px}
  .floor-tabs{margin-bottom:18px}.safehouse-grid{width:100%}
}
@media(max-width:560px){
  .title-art{width:92%;max-height:150px}
  .map-canvas{width:2112px;height:744px}.map-viewport{min-height:480px}
  .map-popup{width:calc(100% - 24px)}
  .map-popup-image{height:82px}.map-popup .popup-close{top:86px}
  .floorplan{aspect-ratio:4/3}.floorplan>img{object-fit:cover}.room{padding:6px 8px}.room span{font-size:9px}
  .room-popup{bottom:10px!important;top:auto!important;left:10px!important;width:calc(100% - 20px);padding:12px 15px 15px}.room-popup-image{height:72px;margin:-12px -15px 10px}.room-popup .popup-close{top:74px}
  .faction-grid{grid-template-columns:1fr}.faction-card>img{height:205px}.epilogue-copy{margin:0 16px;padding:28px 20px}
}

/* Final position refinements: keep the approved visual treatment unchanged. */
.safehouse-section .floor-tabs{position:static;width:max-content;margin:-72px 0 24px auto}
.corwin-image{grid-column:1;grid-row:1 / span 3;align-self:start}
.corwin-copy{grid-column:2;grid-row:1}
.corwin-details{grid-column:2;grid-row:2;padding:0 7vw 56px 4vw}
.objects{grid-column:2;grid-row:3;padding:0 7vw 110px 4vw;overflow:visible}
.objects .object-grid{grid-template-columns:repeat(2,minmax(0,1fr));height:auto;overflow:visible}
@media(max-width:900px){
  .safehouse-section .floor-tabs{margin:-20px 0 18px auto}
  .corwin-image,.corwin-copy,.corwin-details,.objects{grid-column:1;grid-row:auto}
  .corwin-details,.objects{padding-left:24px;padding-right:24px}
}
@media(max-width:560px){
  .hero-image{object-position:49% center}
  .map-section{padding-left:12px;padding-right:12px}
  .map-section .section-heading{margin-left:12px;margin-right:12px}
  .map-viewport{height:clamp(290px,75vw,320px);min-height:0}
  .location-index{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
  .location-index button{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:6px;min-height:48px;padding:9px 2px;font-size:10px;line-height:1.45}
  .location-index b{margin-right:0;font-size:15px}
  .safehouse-section .floor-tabs{margin:-14px 0 16px 0}
  .objects .object-grid{grid-template-columns:1fr}
}
