:root{--paper:#e9e3d0;--card:#f5efdd;--wall:#f7f2e3;--sea:#8fb3ae;--sea-deep:#7ca29d;--land:#ede6d1;--coast:#b9ae8f;--ink:#3b372e;--ink-soft:#6b6455;--shu:#c6472e;--roof-fedify:#68808c;--roof-hollo:#b0714f;--roof-hp:#5e7b5a;--tree:#9aae7c;--tree2:#7d9663;--path:#d8cda9;--gold:#e8c168;--thread:#9fd8d2;--panel-bg:#f5efdd;--panel-ink:#3b372e;--code-bg:#2e2a22;--code-ink:#e7dfc9}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:Hiragino Kaku Gothic ProN,Yu Gothic,Noto Sans JP,sans-serif;line-height:1.9}.sheet{max-width:700px;margin:0 auto;padding:26px 18px 70px;animation:.75s both rise}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.backline{margin-bottom:18px;font-size:.8rem}.backline a{color:var(--ink-soft);border-bottom:1px solid var(--shu);text-decoration:none}header.plaque{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;margin-bottom:30px;padding:22px 26px 20px;box-shadow:4px 4px #3b372e29}.plain{background:var(--wall);border:1px dashed #3b372e8c;border-radius:3px;margin-bottom:28px;padding:11px 15px;font-size:.86rem;line-height:1.8}.plain .plabel{letter-spacing:.26em;color:var(--shu);margin-bottom:3px;font-size:.66rem;display:block}.kind{letter-spacing:.28em;color:var(--ink-soft);align-items:center;gap:8px;font-size:.68rem;display:flex}.kind:before{content:"";background:var(--shu);border-radius:50%;flex:none;width:8px;height:8px}h1{letter-spacing:.12em;text-wrap:balance;margin-top:8px;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,serif;font-size:1.7rem;font-weight:600}.sheet h2{letter-spacing:.22em;align-items:center;gap:12px;margin:38px 0 12px;font-family:Hiragino Mincho ProN,Yu Mincho,serif;font-size:1.02rem;font-weight:600;display:flex}.sheet h2:after{content:"";background:var(--ink);opacity:.25;flex:1;height:1px}.sheet p{max-width:65ch;margin-bottom:12px;font-size:.92rem}.sheet ul{flex-direction:column;gap:9px;margin-bottom:12px;list-style:none;display:flex}.sheet ul li{padding-left:1.1em;font-size:.88rem;position:relative}.sheet ul li:before{content:"、";color:var(--shu);position:absolute;left:0}.sheet code{background:#3b372e14;border-radius:2px;padding:1px 4px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.85em}.files{flex-direction:column;gap:10px;display:flex}.file{background:var(--card);border:1px solid #3b372e66;border-radius:3px;padding:9px 13px;font-size:.85rem}.file a{color:var(--ink);border-bottom:1px solid var(--shu);word-break:break-all;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.8rem;text-decoration:none}.file .what{color:var(--ink-soft);margin-top:2px;font-size:.82rem}figure.sutra{margin:0}.sheet pre{background:var(--code-bg);color:var(--code-ink);border-radius:4px;padding:15px 17px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.78rem;line-height:1.7;overflow-x:auto}.sheet pre.shiki{border:1px solid #3b372e73}.sheet pre code{background:0 0;padding:0;font-size:1em}figcaption{color:var(--ink-soft);margin-top:7px;font-size:.75rem}figcaption a{color:var(--ink-soft);border-bottom:1px solid var(--shu);text-decoration:none}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips a{color:var(--ink);background:var(--wall);border:1px solid var(--ink);border-radius:999px;padding:5px 13px;font-size:.8rem;text-decoration:none}.links{flex-direction:column;gap:7px;margin-top:4px;display:flex}.links a{color:var(--ink);border-bottom:1px solid var(--shu);align-self:flex-start;font-size:.85rem;text-decoration:none}.links a:after{content:" ↗";color:var(--shu)}nav.route{border-top:1px solid #3b372e4d;justify-content:space-between;gap:12px;margin-top:46px;padding-top:18px;font-size:.84rem;display:flex}nav.route a{color:var(--ink);border-bottom:1px solid var(--shu);text-decoration:none}nav.route .to-map{color:var(--ink-soft)}.isle{letter-spacing:.05em;white-space:nowrap;margin-left:7px;font-size:.68rem}.chips a.seen:before,.chips a.unseen:before,nav.route a.seen:before,nav.route a.unseen:before{content:"";border:1.5px solid var(--shu);background:var(--wall);vertical-align:0;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.chips a.seen:before,nav.route a.seen:before{background:var(--shu)}mark.chg,.chg{color:var(--ink);background:#f6de6b;border-radius:2px;padding:0 1px}.chg-line{background:#f6de6b55;border-radius:2px;min-width:100%;display:inline-block}.toy{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;flex-direction:column;gap:11px;padding:16px 18px;font-size:.85rem;display:flex;box-shadow:3px 3px #3b372e29}.toy input[type=text],.toy textarea,.toy select{font:inherit;border:1px solid var(--ink);background:var(--wall);color:var(--ink);border-radius:3px;width:100%;padding:7px 10px;font-size:.85rem}.toy textarea{resize:vertical;min-height:56px}.toy button{font:inherit;letter-spacing:.08em;color:var(--ink);background:var(--wall);border:1.5px solid var(--ink);cursor:pointer;border-radius:3px;align-self:flex-start;padding:8px 14px;font-size:.82rem;box-shadow:2px 2px #3b372e2e}.toy button:active{box-shadow:none;transform:translate(1px,1px)}.toy button:disabled{opacity:.35;cursor:default;box-shadow:none}.toy pre{margin:0;font-size:.74rem}.toy .row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toy .row>*{flex:1;min-width:120px}.toy .row button,.toy .row label{flex:none}.toy label{align-items:center;gap:6px;font-size:.8rem;display:flex}.toy .ok{color:#2e7d4f;font-weight:600}.toy .bad{color:var(--shu);font-weight:600}.toy .hint{color:var(--ink-soft);font-size:.75rem}.toy canvas{background:var(--wall);border:1px solid var(--ink);touch-action:none;border-radius:3px;max-width:100%}.toy .mono{word-break:break-all;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.76rem}.toy pre.light{background:var(--wall);color:var(--ink);border:1px solid #3b372e73}.toy .j-key{color:#998418}.toy .j-str{color:#b56959}.toy .j-num{color:#2f798a}.toy .j-punc{color:#6b6455}.toy .qrow{flex-wrap:wrap;align-items:center;gap:6px;min-height:34px;display:flex}.toy .env{border:1px solid var(--ink);background:var(--wall);border-radius:3px;padding:3px 8px;font-size:.75rem}.toy .env.retry{border-color:var(--shu);color:var(--shu)}#door{background:var(--panel-bg);z-index:30;opacity:0;pointer-events:none;color:var(--panel-ink);flex-direction:column;justify-content:center;align-items:center;gap:12px;transition:opacity .45s;display:flex;position:fixed;inset:0}#door.open{opacity:1;pointer-events:auto}#door.night{color:#c9cedf;background:#232b44}#door .d-kind{letter-spacing:.3em;color:var(--ink-soft);align-items:center;gap:8px;font-size:.7rem;display:flex}#door .d-kind:before{content:"";background:var(--shu);border-radius:50%;flex:none;width:8px;height:8px}#door .d-name{letter-spacing:.2em;font-family:Hiragino Mincho ProN,Yu Mincho,serif;font-size:1.4rem;font-weight:600}#door .d-dots{letter-spacing:.5em;color:var(--shu);animation:1.2s infinite dots}@keyframes dots{50%{opacity:.25}}#door .dawnlight{background:var(--panel-bg);clip-path:circle(0%);pointer-events:none;position:absolute;inset:0}#door>div{position:relative}#door .dawnlight{position:absolute}#door.dawn .dawnlight{clip-path:circle(75%);transition:clip-path 1.55s}#door.dawn{color:var(--panel-ink);transition:opacity .45s,color .3s .18s}#door.dawn .d-kind{color:#6b6455;transition:color .3s .18s}.map-root{background:var(--sea);transition:background .9s;position:fixed;inset:0;overflow:hidden}.map-root.lens{--sea:#1c2338;--sea-deep:#161c2e;--land:#242c46;--coast:#39425f;--ink:#c9cedf;--ink-soft:#8b92ab;--wall:#2d3653;--roof-fedify:#3b4666;--roof-hollo:#3b4666;--roof-hp:#3b4666;--tree:#2e3a55;--tree2:#28334c;--path:#2e3a55;--shu:#d96a4f}.map-root #map{touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}.map-root #map.dragging{cursor:grabbing}.map-root #map [data-id],.map-root #map [data-goto]{cursor:pointer}.map-root #map text{pointer-events:none}.f-sea{fill:var(--sea)}.f-land{fill:var(--land);stroke:var(--coast);stroke-width:3px}.f-wall{fill:var(--wall);stroke:var(--ink);stroke-width:1.5px}.f-wave{stroke:var(--sea-deep);fill:none;stroke-width:2px;stroke-linecap:round}.f-path{stroke:var(--path);fill:none;stroke-width:7px;stroke-linecap:round}.f-tree{fill:var(--tree)}.f-tree2{fill:var(--tree2)}.f-ink{fill:var(--ink)}.f-shadow{fill:#3b372e24}.map-root.lens .f-shadow{fill:#00000040}.map-root #map .sw{transition:fill .9s,stroke .9s}.map-root text.name{fill:var(--ink);letter-spacing:.14em;font-family:Hiragino Mincho ProN,Yu Mincho,Noto Serif JP,serif;font-weight:600}.map-root text.lbl{fill:var(--ink);font-weight:600}.map-root text.lbl-soft{fill:var(--ink-soft)}.map-root text.mono{font-family:ui-monospace,SF Mono,Menlo,monospace}.map-root .far text.sm{opacity:0}.map-root text.sm{transition:opacity .4s}#gMath,#gThreads{opacity:0;pointer-events:none;transition:opacity 1.1s}.map-root.lens #gMath{opacity:1;pointer-events:auto}.map-root.lens #gThreads{opacity:1}.m-glow{fill:#2b3557;stroke:var(--gold);stroke-width:2px}.m-line{stroke:var(--gold);fill:none;stroke-width:2px;stroke-linecap:round}.m-text{fill:var(--gold)}.thread{stroke:var(--thread);stroke-width:2.5px;fill:none;opacity:.85;stroke-dasharray:5 11;stroke-linecap:round}.bead{fill:var(--gold);opacity:.95}.surface{transition:opacity 1.1s}.map-root.lens .surface{opacity:.09;pointer-events:none}.signpost{opacity:0;pointer-events:none;transition:opacity .45s}.map-root .near .signpost{opacity:1;pointer-events:auto}.mk{transform:scale(var(--mk-scale,1))}.mkr .base{fill:var(--wall);stroke:var(--shu);stroke-width:1.6px;transition:fill .9s,stroke .9s}.mkr .core{fill:var(--shu);opacity:0;transition:opacity .35s}.mkr.done .core{opacity:1}.mkr .ring{fill:none;stroke:var(--shu);stroke-width:1.5px;opacity:0;transition:opacity .3s}.mkr.sel .ring{opacity:.95}.mknum{fill:var(--shu);pointer-events:none;font-family:ui-monospace,SF Mono,Menlo,monospace;font-weight:600}.mkr.done .base{fill:var(--shu)}.mkr.done .mknum{fill:var(--wall)}#gMath .mkr .base{stroke:var(--gold);fill:#161c2e}#gMath .mkr .core{fill:var(--gold)}#gMath .mkr .ring{stroke:var(--gold)}#gMath .mknum,#gMath .mkr.done .base{fill:var(--gold)}#gMath .mkr.done .mknum{fill:#161c2e}.map-root #map .sel:not(.mkr){filter:drop-shadow(0 0 2px #c6472ecc)drop-shadow(0 0 7px #c6472e80)}.map-root.lens #map .sel:not(.mkr){filter:drop-shadow(0 0 2px #e8c168e6)drop-shadow(0 0 8px #e8c16880)}.map-root #map.gliding .sel:not(.mkr),.map-root #map.dragging .sel:not(.mkr){filter:none}.map-root .plaque{z-index:5;background:var(--panel-bg);border:1.5px solid var(--ink);border-radius:3px;max-width:min(78vw,380px);padding:10px 16px 12px;transition:background .9s,border-color .9s,color .9s;position:absolute;top:14px;left:14px;box-shadow:3px 3px #3b372e2e}.map-root .plaque h1{letter-spacing:.22em;margin-top:0;font-size:1.25rem}.map-root .plaque p{color:var(--ink-soft);letter-spacing:.06em;margin-top:3px;font-size:.72rem}.map-root .plaque .guide-callout{border:1.5px solid var(--shu);color:var(--panel-ink);letter-spacing:.04em;background:var(--wall);border-radius:3px;margin-top:10px;padding:7px 11px;font-size:.78rem;font-weight:600;text-decoration:none;display:block}.map-root .plaque .guide-callout:hover{background:var(--panel-bg)}.map-root.lens .plaque,.map-root.lens .ctrl button,.map-root.lens .panel,.map-root.lens .stamp{color:#c9cedf;--panel-ink:#c9cedf;background:#232b44;border-color:#4a557a}.map-root .ctrl{z-index:5;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:14px;right:14px}.map-root .ctrl button{font:inherit;letter-spacing:.12em;color:var(--panel-ink);background:var(--panel-bg);border:1.5px solid var(--ink);cursor:pointer;border-radius:3px;padding:9px 14px;font-size:.82rem;transition:background .9s,border-color .9s,color .9s;box-shadow:2px 2px #3b372e2e}.map-root .ctrl button:active{box-shadow:none;transform:translate(1px,1px)}.map-root .ctrl button b{color:var(--shu);font-weight:600}.map-root .stamp{z-index:5;background:var(--panel-bg);border:1.5px solid var(--ink);letter-spacing:.1em;color:var(--panel-ink);border-radius:3px;padding:7px 12px;font-size:.75rem;transition:background .9s,border-color .9s;position:absolute;bottom:14px;left:14px;box-shadow:2px 2px #3b372e2e}.map-root .stamp b{color:var(--shu);font-family:ui-monospace,SF Mono,Menlo,monospace}.map-root .stamp .wipe{font:inherit;border:1px solid var(--ink-soft);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:3px;margin-left:8px;padding:1px 6px;font-size:.68rem}.map-root .stamp .wipe:hover{border-color:var(--shu);color:var(--shu)}.map-root .panel{z-index:6;background:var(--panel-bg);border:1.5px solid var(--ink);width:min(340px,100vw - 28px);max-height:calc(100vh - 28px);color:var(--panel-ink);border-radius:3px;padding:16px 18px 15px;transition:transform .35s cubic-bezier(.2,.8,.25,1),background .9s,border-color .9s;position:absolute;top:14px;right:14px;overflow-y:auto;transform:translate(calc(100% + 30px));box-shadow:4px 4px #3b372e2e}.map-root .panel.open{transform:none}.map-root .panel h2{letter-spacing:.1em;text-wrap:balance;margin:7px 0 9px;font-family:Hiragino Mincho ProN,Yu Mincho,serif;font-size:1.15rem;font-weight:600}.map-root .panel p{color:var(--panel-ink);font-size:.83rem;line-height:1.85}.map-root .panel .plinks{flex-direction:column;gap:6px;margin-top:12px;display:flex}.map-root .panel .plinks a{color:var(--panel-ink);border-bottom:1px solid var(--shu);align-self:flex-start;padding-bottom:1px;font-size:.78rem;text-decoration:none}.map-root .panel .plinks a.ext:after{content:" ↗";color:var(--shu)}.map-root .panel .plinks a.roomlink{border:1.5px solid var(--shu);border-radius:3px;padding:5px 10px;font-weight:600}.map-root .panel .plinks a.roomlink:after{content:" →"}.map-root .panel .visitedline{letter-spacing:.14em;color:var(--shu);margin-top:12px;font-size:.68rem}.map-root .pclose{font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:4px 6px;font-size:1rem;position:absolute;top:8px;right:10px}@media (width<=720px){.map-root .panel{width:100%;max-height:46vh;padding-bottom:max(15px,env(safe-area-inset-bottom));border-bottom:none;border-left:none;border-right:none;border-radius:10px 10px 0 0;inset:auto 0 0;transform:translateY(110%)}.map-root .panel.open{transform:none}.map-root .ctrl{top:14px;bottom:auto}.map-root .stamp{bottom:max(14px,env(safe-area-inset-bottom))}.map-root .plaque h1{font-size:1.05rem}}@media (prefers-reduced-motion:reduce){.sheet{animation:none}.map-root .panel{transition:none}#door .d-dots{animation:none}}
