@font-face{font-family:DM Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/dm-sans.ttf) format("truetype")}@font-face{font-family:Libre Caslon Display;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/libre-caslon-display.ttf) format("truetype")}:root{font-family:DM Sans,sans-serif;color:#333c32;background:#f4efe3;font-synthesis:none;--cream: #f4efe3;--paper: #faf7ed;--paper-deep: #ebe5d4;--sage: #62765b;--sage-dark: #354f41;--sage-pale: #dfe7d9;--ink: #333c32;--muted: #7e7b6b;--line: #d9d3c5;--copper: #a96940;--copper-soft: #bb7641}*{box-sizing:border-box}*[hidden]{display:none!important}html,body{min-height:100%}body{margin:0;overflow-x:hidden;background:var(--cream)}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--copper-soft);outline-offset:3px}button{transition:background .2s,border-color .2s,color .2s,transform .2s}button:active{transform:translateY(1px)}.game-shell{display:grid;grid-template-rows:88px minmax(0,1fr);height:100dvh;min-height:560px}.masthead{z-index:3;display:flex;align-items:center;justify-content:space-between;gap:26px;min-width:0;padding:0 30px;border-bottom:1px solid var(--line);background:#f7f3e9}.brand-lockup{flex:0 0 auto}.brand{color:var(--ink);font-family:Libre Caslon Display,Georgia,serif;font-size:30px;letter-spacing:.075em;line-height:1;white-space:nowrap}.brand em{color:var(--copper);font-style:italic}.tagline{margin-top:4px;color:var(--muted);font-size:9px;letter-spacing:.15em;text-transform:uppercase}.chapter{display:flex;align-items:center;gap:12px;min-width:0;margin-right:auto}.chapter-mark{display:grid;width:31px;height:31px;flex:0 0 31px;place-items:center;border:1px solid #bdae95;border-radius:50%;color:var(--copper);font-family:Georgia,serif;font-size:16px}.eyebrow{color:#7b7d6c;font-size:9px;font-weight:700;letter-spacing:.2em;line-height:1.2;text-transform:uppercase}.chapter-title{margin-top:4px;color:var(--ink);font-family:Libre Caslon Display,Georgia,serif;font-size:22px;line-height:1;white-space:nowrap}.chapter-title span{color:#93927f}.instruction{margin-top:5px;color:var(--muted);font-size:10px;line-height:1.3}.debug-line{margin-top:5px;color:var(--muted);font:9px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace}.debug-line b{color:var(--copper)}.header-actions{display:flex;flex:0 0 auto;align-items:center;gap:14px}.live{color:var(--sage);font-size:9px;letter-spacing:.13em;text-transform:uppercase;white-space:nowrap}.live:before{display:inline-block;width:6px;height:6px;margin-right:8px;border-radius:50%;background:var(--sage);box-shadow:0 0 0 4px #738d6610;content:""}.live-status{display:none;max-width:190px;padding:7px 10px;border:1px solid #c8835d;border-radius:3px;color:#8b4d35;font-size:9px;line-height:1.3}body.debug .live-status,body.status-error .live-status{display:inline-block}.game-layout{position:relative;min-width:0;min-height:0;overflow:hidden}.map-frame{width:100%;height:100%;min-width:0;min-height:0;background:#b6a489}.stage{position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;background:#b6a489}.stage canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}.stage canvas:active{cursor:grabbing}.scene-vignette{position:absolute;inset:0;box-shadow:inset 0 0 90px #3227192c;pointer-events:none}.scene-caption{position:absolute;bottom:25px;left:310px;display:grid;gap:5px;color:#fff8dc;pointer-events:none;text-shadow:0 1px 9px #352a1d}.scene-caption .eyebrow{color:#fff8dcaa}.scene-caption>span:last-child{font-family:Libre Caslon Display,Georgia,serif;font-size:25px}.controls-tip{position:absolute;bottom:28px;left:50%;padding:9px 16px;border-radius:30px;background:#faf7ede8;color:#666c5d;font-size:10px;white-space:nowrap;transform:translate(-50%);pointer-events:none}.controls-tip i{margin:0 8px;color:#b5ad98;font-style:normal}.map-help{position:absolute;right:25px;bottom:29px;padding:9px 12px;border:1px solid #fff9;border-radius:4px;background:#faf7ede8;color:#666c5d;font-size:10px;box-shadow:0 4px 24px #352b2520;pointer-events:none}.note{position:absolute;left:25px;bottom:25px;max-width:230px;padding:7px 10px;border:1px solid #fff9;border-radius:3px;background:#faf7edcf;color:#7f7b6b;font-size:9px;line-height:1.3;pointer-events:none}.panel{position:absolute;z-index:2;top:20px;left:20px;display:flex;width:min(270px,calc(100% - 40px));max-height:calc(100% - 40px);min-width:0;flex-direction:column;overflow:auto;border:1px solid #fff9;border-radius:3px;background:#faf7edf2;box-shadow:0 8px 35px #352b251c;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--ink);pointer-events:none}.panel>*{pointer-events:auto}.panel .hunt{order:1}.panel .controls{order:2}.panel .debug-inspector{order:3}.hunt{margin:0;padding:19px;background:transparent}.hunt>b{display:flex;align-items:center;justify-content:space-between;color:#8b6b44;font-size:9px;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.hunt>b:after{display:grid;width:23px;height:23px;place-items:center;border:1px solid #c5baa3;border-radius:50%;color:var(--copper);content:"✦";font-size:11px;letter-spacing:0}.hunt #cluePortrait{display:block;width:70px;height:70px;margin:13px auto 8px;border:1px solid #cdbf9f;border-radius:50%;background:radial-gradient(ellipse,#e2dbc777,transparent 68%)}.hunt #clue{margin:8px 0 14px;color:var(--ink);font-family:Libre Caslon Display,Georgia,serif;font-size:22px;line-height:1.08}.hunt ol{display:grid;gap:5px;margin:0;padding:0;list-style:none;counter-reset:discovery}.hunt li{display:flex;align-items:center;gap:9px;min-height:27px;padding:3px 4px;border-bottom:1px solid #dbd4c3;color:#747565;font-size:11px}.hunt li:before{display:grid;width:21px;height:21px;flex:0 0 21px;place-items:center;border:1px solid #c5baa3;border-radius:50%;color:#9b6841;content:counter(discovery);counter-increment:discovery;font-size:9px}.hunt li.found,.hunt li[style*="80dda7"]{color:var(--sage)!important;font-weight:700}.hunt li.found:before,.hunt li[style*="80dda7"]:before{border-color:var(--sage);background:var(--sage);color:var(--paper)}.hunt #found{display:block;margin-top:12px;color:var(--sage);font-size:9px;font-weight:700;letter-spacing:.13em;text-align:right;text-transform:uppercase}.hunt .game-controls{display:grid;grid-template-columns:minmax(0,1fr) 35px 35px;gap:5px;margin-top:14px;padding-top:11px;border-top:1px solid #dbd4c3}.hunt .game-controls button{min-height:29px;border:1px solid #c8bda2;border-radius:3px;background:transparent;color:#6b7565;cursor:pointer;font-size:10px}.hunt .game-controls button:hover,.hunt .game-controls button:focus-visible{border-color:var(--copper);background:#e5e9db;color:var(--sage-dark)}.hunt .game-controls #hint{color:var(--copper);font-weight:700}.hunt .game-controls #win{grid-column:1 / -1;border-color:var(--sage);background:var(--sage-dark);color:var(--paper)}.hunt .game-controls #win:disabled{cursor:not-allowed;opacity:.42}.controls{display:flex;align-items:center;gap:3px;margin:0 15px 14px;padding:4px;border:1px solid #d9d3c5;border-radius:4px;background:#f7f3e9e8}.controls button{flex:1;min-width:0;border:0;border-radius:3px;background:transparent;padding:7px 4px;color:#697361;font-size:9px}.controls button:hover,.controls button:focus-visible{background:#e5e9db;color:var(--sage-dark)}.debug-only{display:none!important}body.debug .debug-only,body.debug .debug-inspector{display:block!important}.debug-inspector{margin:0 15px 15px;padding:12px;border:1px dashed #aaa58f;border-radius:4px;background:#eeeadc;color:var(--ink)}.panel-top{display:flex;align-items:center;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid #d9d3c5}.panel-top strong{font-size:10px;letter-spacing:.1em}.panel-top span{color:var(--copper);font-size:9px;text-transform:uppercase}.metrics{margin:10px 0 12px;padding:8px;border-radius:4px;background:#e2dccb;color:#59685b;font:9px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-line}label{display:block;margin-bottom:5px;color:#7b7d6c;font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}select{width:100%;padding:7px;border:1px solid #c8bda2;border-radius:3px;background:var(--paper);color:var(--ink);font-size:10px}.card{margin-top:9px;padding:9px;border-left:2px solid var(--copper);border-radius:2px;background:var(--paper);color:#717666;font-size:10px;line-height:1.45}details{margin-top:11px;color:#777866;font-size:9px;line-height:1.45}summary{cursor:pointer;color:var(--sage);font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}@media(max-width:850px){.masthead{padding:0 20px}.chapter{gap:9px}.chapter-mark{display:none}.chapter-title{font-size:19px}.live{display:none}.panel{width:min(245px,calc(100% - 30px));top:15px;left:15px;max-height:calc(100% - 30px)}.hunt{padding:15px}.hunt #clue{font-size:19px}.scene-caption{bottom:20px;left:280px}.scene-caption>span:last-child{font-size:20px}.controls-tip{bottom:22px}.map-help{display:none}}@media(max-width:600px){.game-shell{grid-template-rows:84px minmax(0,1fr);height:auto;min-height:100dvh}.masthead{display:block;padding:11px 15px 9px}.brand-lockup{display:inline-block;vertical-align:top}.brand{font-size:24px}.tagline{margin-top:3px;font-size:8px}.chapter{display:inline-block;margin-left:11px;vertical-align:top}.chapter-title{margin-top:2px;font-size:15px}.chapter-title span,.instruction{display:none}.game-layout{overflow:visible}.map-frame{height:44vh;min-height:320px}.stage{height:100%}.panel{position:absolute;top:calc(44vh + 12px);left:12px;width:calc(100% - 24px);max-height:none;overflow:visible}.hunt{padding:12px 13px 10px}.hunt #cluePortrait{float:right;width:54px;height:54px;margin:1px 0 4px 8px}.hunt #clue{min-height:40px;margin:7px 0 8px;font-size:18px}.hunt ol{gap:2px}.hunt li{min-height:22px;padding:2px 3px;font-size:10px}.hunt li:before{width:19px;height:19px;flex-basis:19px}.hunt #found{margin-top:8px}.hunt .game-controls{margin-top:9px;padding-top:8px}.hunt .game-controls button{min-height:27px}.controls{margin:0 12px 12px}.note{left:13px;bottom:13px;max-width:155px}.scene-caption{display:none}.controls-tip{right:13px;bottom:13px;left:auto;padding:8px 11px;font-size:9px;transform:none}}@media(max-width:380px){.game-shell{grid-template-rows:96px minmax(0,1fr)}.chapter-title{max-width:135px;white-space:normal;line-height:1.15}.map-frame{height:43vh}.panel{top:calc(43vh + 12px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important}}body[data-scene-theme=frost-fair]{--ink:#243f49;--paper:#f9f3e6;--paper-deep:#e7dfcc;--accent:#97613b;--line:#c5c9c1;--sage:#496969;--sage-dark:#294b55;--muted:#627274}html,body{height:100%;overflow:hidden}.game-shell{height:100dvh;min-height:0;grid-template-rows:64px minmax(0,1fr)}.masthead{padding:0 max(20px,env(safe-area-inset-right)) 0 max(20px,env(safe-area-inset-left));background:var(--paper)}.brand{font-size:25px}.tagline,.instruction,.live,.scene-caption,.map-help,.note{display:none}.chapter-title{font-size:21px}.stage,.map-frame{height:100%;min-height:0;background:#aabec0}.game-layout{overflow:hidden}.panel{top:18px;left:max(18px,env(safe-area-inset-left));width:292px;max-height:calc(100% - 36px);border:1px solid #fff9;border-radius:12px;background:var(--paper);box-shadow:0 8px 30px #17323d30;pointer-events:auto}.hunt{padding:16px}.case-heading{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;border-bottom:1px solid var(--line)}.case-heading .eyebrow{font-size:9px;color:var(--accent);letter-spacing:.14em}.edition{font:italic 16px Georgia,serif;color:var(--accent)}.target-summary{display:flex;gap:12px;align-items:center;margin-top:12px}.portrait-button{padding:0;flex:0 0 76px;border:1px solid #c8bfaa;border-radius:40px 40px 8px 8px;background:#e7e6da;overflow:hidden}.hunt #cluePortrait{width:74px;height:92px;margin:0;border:0;border-radius:0;background:transparent;float:none}.portrait-button span{display:block;padding:4px;color:var(--ink);font-size:10px;background:#fff6}#caseToggle{flex:1;min-width:0;padding:8px 0;border:0;background:transparent;text-align:left}#caseToggle .eyebrow{font-size:8px;letter-spacing:.12em}#targetName{display:block;margin:5px 0;font:27px/1 Libre Caslon Display,Georgia,serif}.hunt #found{margin:6px 0;font-size:10px;text-align:left;letter-spacing:0;text-transform:none}#toggleLabel{color:var(--accent);font-size:11px}.hunt #clue{margin:16px 0;min-height:0;font:19px/1.25 Libre Caslon Display,Georgia,serif}.target-roster{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}.target-roster button{padding:3px 0 7px;border:1px solid transparent;border-radius:6px;background:#e7dfcc70}.target-roster button[aria-pressed=true]{border-color:var(--accent);background:#eee1c8}.target-roster button.found{background:#dce6dd}.target-roster canvas{width:100%;height:auto;display:block}.target-roster span{display:block;font-size:9px;overflow:hidden;text-overflow:ellipsis}.hint-button,#win{width:100%;min-height:44px;margin-top:12px;border:1px solid var(--sage-dark);border-radius:7px;background:var(--sage-dark);color:var(--paper);font-size:12px}button:disabled{opacity:.5;cursor:default}.case-note{margin:12px 0 0;color:var(--muted);text-align:center;font-size:10px;line-height:1.5}.controls{margin:0 16px 14px;padding:0;background:transparent;border:0;border-top:1px solid var(--line);border-radius:0}.controls button{min-height:44px;font-size:11px}.is-compact .case-heading,.is-compact .controls{display:none}.is-compact .hunt{padding:8px 12px}.is-compact .target-summary{margin:0}.is-compact .portrait-button{flex-basis:46px;border-radius:24px 24px 5px 5px}.is-compact #cluePortrait{width:44px;height:55px}.is-compact .portrait-button span{display:none}.is-compact #targetName{font-size:22px}.is-compact #caseToggle .eyebrow{display:none}.is-compact #caseToggle{padding:0}.is-compact #found{display:inline;margin-right:8px}.map-tools{position:absolute;right:max(16px,env(safe-area-inset-right));top:16px;display:grid;gap:6px}.map-tools button{width:46px;height:46px;border:1px solid #fff9;border-radius:9px;background:var(--paper);color:var(--ink);font-size:24px;box-shadow:0 3px 12px #1233}.map-tools #overviewButton{font-size:11px}.controls-tip{bottom:max(18px,env(safe-area-inset-bottom));font-size:11px}.has-explored .controls-tip{display:none}.discovery-notice{position:absolute;top:18px;left:50%;transform:translate(-50%);padding:12px 18px;border-radius:24px;background:var(--sage-dark);color:var(--paper);opacity:0;pointer-events:none;font-size:13px;text-align:center;transition:opacity .2s}.discovery-notice.visible{opacity:1}dialog{color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:20px;max-height:calc(100dvh - 32px);box-shadow:0 20px 100px #14252a66}dialog::backdrop{background:#142c36aa;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}dialog header{display:flex;justify-content:space-between;align-items:center;gap:16px}dialog h2{margin:5px 0 12px;font:30px/1.1 Libre Caslon Display,Georgia,serif}dialog header button{flex-shrink:0;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:transparent;font-size:27px}.outfit-dialog{width:min(440px,calc(100% - 24px))}.outfit-scroll{width:100%;height:min(45dvh,430px);overflow:auto;background:radial-gradient(ellipse,#eee4cc,#d8e3e0);border-radius:90px 90px 10px 10px;overscroll-behavior:contain}#outfitPortrait{display:block;width:100%;height:auto}#outfitClue{font-size:14px;line-height:1.5}.outfit-controls{display:flex;align-items:center;gap:12px}.outfit-controls label{margin:0;letter-spacing:0;text-transform:none;font-size:12px;white-space:nowrap}.outfit-controls input{flex:1;min-width:0;min-height:44px;accent-color:var(--sage-dark)}.outfit-controls output{width:28px;font-size:12px}.viewer-note{color:var(--muted);font-size:11px;line-height:1.5}.overview-dialog{width:min(800px,calc(100% - 24px))}.overview-dialog p{font-size:13px}#overviewMap{display:block;width:100%;max-height:65dvh;object-fit:contain;cursor:crosshair}@media(max-width:700px),(max-height:500px){.game-shell{grid-template-rows:50px minmax(0,1fr)}.masthead{display:flex;gap:10px;padding:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left))}.brand{font-size:19px;letter-spacing:.025em}.chapter{display:block;margin:0 0 0 auto}.chapter .eyebrow,.chapter-mark,.header-actions{display:none}.chapter-title{max-width:150px;font-size:13px;line-height:1.1;white-space:normal;margin:0}.chapter-title span{display:inline}.panel{top:auto;bottom:max(12px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));width:calc(100% - max(12px,env(safe-area-inset-left)) - max(12px,env(safe-area-inset-right)));max-height:calc(100% - 24px);overflow:auto}.panel.is-compact{width:min(340px,calc(100% - 24px))}.hunt{padding:12px 16px}.hunt #clue{font-size:20px;margin:12px 0}.target-roster canvas{max-height:65px;object-fit:contain}.case-note{display:none}.controls-tip{inset:18px 75px auto 12px;transform:none;white-space:normal;max-width:215px}.discovery-notice{top:18px;width:max-content;max-width:70%}}@media(max-height:500px){.panel,.panel.is-compact{width:280px}.outfit-dialog{width:min(680px,calc(100% - 24px))}.outfit-scroll{height:36dvh}}#outfitPortrait{margin-inline:auto;max-width:none}.sights{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:12px}.sights summary{min-height:36px;padding:10px 0;font-size:10px;color:var(--accent)}.sight-roster{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.sight-roster button{background:#e7dfcc70;border:1px solid var(--line);border-radius:6px;padding:4px}.sight-roster button[aria-pressed=true]{border-color:var(--accent)}.sight-roster button.found{background:#dce6dd}.sight-roster canvas{width:100%;height:auto;display:block}.sight-roster span{display:block;font-size:10px;margin-top:5px}#peopleMode{min-height:44px;width:100%;margin-top:8px;background:transparent;border:1px solid var(--line);border-radius:6px;font-size:12px}body.status-error .header-actions,body.is-loading .header-actions{display:block;position:absolute;top:70px;left:50%;transform:translate(-50%)}body.status-error .live-status,body.is-loading .live-status{display:block;background:var(--paper)}#overviewMap{width:min(100%,97.5dvh);height:auto;max-height:none;margin-inline:auto}
