@font-face{font-family:ScrollBrush;src:url('../assets/fonts/sunyang-brush.woff2') format('woff2');font-display:swap}
:root{color-scheme:light;--paper:#e2d4b6;--pale:#ede3cb;--ink:#504d3d;--muted:#81745b;--line:#756a4f40;--seal:#955a43}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Songti SC','Noto Serif SC',serif;height:100dvh;min-height:520px;display:flex;flex-direction:column;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:transparent;border:1px solid transparent;min-height:38px;touch-action:manipulation}button:hover,button[aria-pressed=true]{background:#f3ead344;border-color:var(--line)}button:focus-visible,#stage:focus-visible{outline:2px solid var(--seal);outline-offset:3px}header{display:flex;align-items:center;justify-content:space-between;padding:19px 32px 13px;gap:12px;flex-shrink:0}.title{display:flex;align-items:center;gap:13px}.seal{display:grid;place-items:center;width:27px;height:32px;border:1px solid var(--seal);color:var(--seal);font-size:18px;transform:rotate(-3deg)}h1{font-family:ScrollBrush,'Songti SC',serif;font-size:26px;font-weight:400;letter-spacing:3px;margin:0;white-space:nowrap}h1 span{font-family:'Songti SC',serif;font-size:11px;letter-spacing:3px;margin-left:21px;color:var(--muted)}.tools{display:flex;gap:5px;align-items:center}.tools button{padding:6px 11px;font-size:12px}.tools #zoomIn,.tools #zoomOut{font-family:system-ui,sans-serif;font-size:18px;width:36px;padding:0}main{position:relative;min-height:160px;flex:1;display:flex;flex-direction:column;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.scene-label{position:absolute;top:20px;left:33px;z-index:2;pointer-events:none;display:flex;align-items:center;gap:15px;background:#e8dcc188;padding:6px 10px}.scene-label span{font-size:10px;letter-spacing:2px;color:var(--muted)}.scene-label strong{font-size:16px;letter-spacing:3px;font-weight:400}#stage{position:relative;flex:1;min-height:0;overflow:hidden;cursor:grab;touch-action:none;outline:none}#stage.dragging{cursor:grabbing}#scroll{display:block;width:100%;height:100%}#loading{position:absolute;inset:0;display:grid;place-items:center;background:#e2d4b6d9;font-size:14px;letter-spacing:4px}#loading[hidden]{display:none}#minimap{width:100%;height:100%;display:block;opacity:.85}#viewbox{position:absolute;inset:0 auto 0 0;pointer-events:none;border:1.5px solid var(--seal);background:#fff8e01c;box-shadow:0 0 0 100vw #57473325}.old-range{position:absolute;left:25%;width:50%;top:0;bottom:0;border-left:1px dashed #fff9e9aa;border-right:1px dashed #fff9e9aa;pointer-events:none}
@media(min-width:1600px){header{padding-left:48px;padding-right:48px}}@media(max-width:620px){body{min-height:420px}header{padding:12px 14px;gap:5px}.title{gap:7px}.seal{width:21px;height:27px;font-size:16px}h1{font-size:20px;letter-spacing:1px}h1 span{display:none}.tools{gap:1px}.tools button{font-size:11px;padding:5px 6px}.tools #zoomIn,.tools #zoomOut{width:29px}.scene-label{top:14px;left:14px;gap:10px;padding:5px}.scene-label strong{font-size:14px}.scene-label span{font-size:9px;letter-spacing:1px}}
@media(max-height:580px){body{min-height:300px}header{padding-top:7px;padding-bottom:7px}.scene-label{top:8px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
#stage.over-person{cursor:pointer}#personBubble{position:absolute;transform:translate(-50%,-100%);width:max-content;max-width:210px;padding:10px 14px;background:#f0e5cfee;border:1px solid #8b795c77;box-shadow:0 3px 12px #40361c18;pointer-events:none;font-size:12px;line-height:1.7;z-index:3}#personBubble[hidden]{display:none}#personBubble::after{content:'';position:absolute;bottom:-5px;left:50%;width:8px;height:8px;border-right:1px solid #8b795c77;border-bottom:1px solid #8b795c77;background:#f0e5cf;transform:rotate(45deg)}#personBubble strong{display:block;font-weight:400;color:var(--seal);font-size:11px;letter-spacing:2px}#personBubble span{display:block}.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}
@media(max-width:620px){#personBubble{font-size:11px;max-width:190px}}

.tour-controls{position:absolute;top:20px;right:33px;z-index:4;display:flex;align-items:center;gap:12px}.tour-direction{font-size:10px;letter-spacing:2px;color:var(--muted);pointer-events:none}#autoplay{display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:8px 15px;background:#f0e5cfed;border:1px solid #9a765b80;box-shadow:0 2px 8px #40361c12;color:var(--seal);font-size:12px;letter-spacing:2px;border-radius:3px}#autoplay:hover{background:#f8eed8;border-color:var(--seal)}#autoplay:focus-visible{outline:2px solid var(--seal);outline-offset:3px}#autoplay:disabled{opacity:.5;cursor:wait}#autoplay svg{width:14px;height:14px;fill:currentColor;flex-shrink:0}#autoplay .tour-pause{display:none}#autoplay[aria-pressed=true]{background:var(--seal);color:var(--paper);border-color:var(--seal)}#autoplay[aria-pressed=true] .tour-play{display:none}#autoplay[aria-pressed=true] .tour-pause{display:block}
@media(max-width:620px){.tour-controls{top:auto;bottom:48px;right:14px;gap:8px}.tour-direction{font-size:9px;letter-spacing:1px}#autoplay{min-height:42px;padding:8px 12px;font-size:11px;letter-spacing:1px}}
@media(min-width:621px) and (max-height:580px){.tour-controls{top:8px}#autoplay{min-height:34px;padding:6px 12px}}
#stage.over-rope,#stage.using-prop{cursor:ns-resize}
.scene-hint{position:absolute;left:33px;bottom:12px;z-index:2;pointer-events:none;display:flex;gap:10px;padding:4px 10px;background:#e8dcc1b3;font-size:10px;letter-spacing:2px;color:var(--muted)}.scene-hint span+span::before{content:'·';margin-right:10px}
footer{padding:0 33px 6px;flex-shrink:0}
.dock{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:10px 0}
.dock svg{width:15px;height:15px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.workshop-bar{display:flex;align-items:center;gap:8px;min-width:0;flex:1}
.workshop-tabs{display:inline-flex;padding:2px;gap:2px;border:1px solid var(--line);border-radius:5px;background:#ede3cb55;flex-shrink:0}
.workshop-tabs button,.workshop-tabs button:hover{min-height:30px;padding:3px 12px;border:0;border-radius:3px;background:transparent;font-size:12px;letter-spacing:1px;color:var(--muted)}
.workshop-tabs button:hover{color:var(--ink)}.workshop-tabs button[aria-pressed=true]{background:var(--pale);color:var(--seal);box-shadow:0 1px 2px #40361c1f}
.workshop-tabs button:focus-visible{outline:1px dashed var(--seal);outline-offset:1px}
.workshop-primary{min-height:36px;padding:0 18px;border-radius:5px;background:var(--seal);border-color:var(--seal);color:var(--pale);font-size:12px;letter-spacing:2px;flex-shrink:0;box-shadow:0 1px 3px #5a2e1c33}
.workshop-primary:hover:not(:disabled){background:#82493a;border-color:#82493a}
.icon-only{display:grid;place-items:center;width:36px;min-height:36px;padding:0;border:1px solid var(--line);border-radius:5px;color:var(--muted);flex-shrink:0}
.icon-only:hover:not(:disabled){color:var(--ink);border-color:#756a4f80;background:#f3ead344}
.workshop-bar button:disabled{opacity:.45;cursor:default;box-shadow:none}
#workshopStatus{margin:0 0 0 6px;min-width:0;font-size:11px;letter-spacing:1px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.life-tools{display:inline-flex;border:1px solid var(--line);border-radius:5px;overflow:hidden;flex-shrink:0}
.life-tools button{display:flex;align-items:center;gap:6px;min-height:34px;padding:0 13px;border:0;border-radius:0;font-size:12px;letter-spacing:1px;color:var(--ink)}
.life-tools button+button{border-left:1px solid var(--line)}
.life-tools button:hover:not(:disabled),.life-tools button[aria-pressed=true]{background:#f3ead366}
.life-tools button[aria-pressed=true]{color:var(--seal)}.life-tools button:disabled{opacity:.4;cursor:default}
.life-tools button:focus-visible{outline-offset:-2px}
.life-tools [aria-pressed=true] .i-off,.life-tools [aria-pressed=false] .i-on{display:none}
#map{width:100%;height:clamp(28px,3.2vw,46px);position:relative;cursor:crosshair;touch-action:none;background:#d7c9ac;overflow:hidden;border-radius:3px}
#minimap{width:100%;height:100%;display:block;opacity:.85}
#viewbox{position:absolute;inset:0 auto 0 0;pointer-events:none;border:1.5px solid var(--seal);background:#fff8e01c;box-shadow:0 0 0 100vw #57473325}
.old-range{position:absolute;left:25%;width:50%;top:0;bottom:0;border-left:1px dashed #fff9e9aa;border-right:1px dashed #fff9e9aa;pointer-events:none}
nav{display:flex;justify-content:space-between;gap:3px}
nav button,nav button:hover{min-height:28px;padding:2px 8px;font-size:11px;letter-spacing:2px;white-space:nowrap;color:var(--muted);border:0;background:transparent}
nav button:hover{color:var(--ink)}nav button[aria-current]{color:var(--seal)}
@media(min-width:1600px){footer{padding-left:48px;padding-right:48px}.scene-hint{left:48px}}
@media(max-width:1100px){.life-tools .label,.life-tools #findSinger span,.life-tools #greet span{display:none}.life-tools button{padding:0 11px}}
@media(max-width:760px){.dock{flex-direction:column;align-items:stretch;gap:8px}.workshop-bar{flex-wrap:wrap}#workshopStatus{order:5;flex-basis:100%;margin:0;font-size:10px}.life-tools button{flex:1;justify-content:center}}
@media(max-width:620px){footer{padding:0 14px 6px}.scene-hint{left:14px;bottom:10px;font-size:9px;letter-spacing:1px}#gestureHint{display:none}.tour-controls{bottom:10px}.workshop-tabs button{padding:3px 8px;font-size:11px;letter-spacing:0}.workshop-primary{padding:0 12px;flex:1;letter-spacing:1px}nav{gap:0}nav button,nav button:hover{font-size:10px;letter-spacing:0;padding:2px 3px}}
@media(max-height:580px){.dock{padding:5px 0}#workshopStatus{display:none}.workshop-primary,.icon-only{min-height:30px}.icon-only{width:30px}.life-tools button{min-height:30px}.workshop-tabs button{min-height:26px}#map{height:28px}nav button{min-height:24px}}

/* The title returns to the homepage, where the scroll is entered. */
a.title{color:inherit;text-decoration:none}a.title:hover h1{opacity:.8}a.title:focus-visible{outline:2px solid var(--seal,#984738);outline-offset:4px}
