*{box-sizing:border-box}body{margin:0;background:#102622;font-family:Arial,"Noto Sans JP",sans-serif;color:white}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,#viewer:focus-visible{outline:3px solid #d7f9ab;outline-offset:4px}#experience{position:relative;height:100svh;min-height:640px;overflow:hidden}#viewer{position:absolute;inset:0;touch-action:none;cursor:grab}#viewer:active{cursor:grabbing}canvas{display:block;width:100%;height:100%}.shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#071b2466 0,transparent 28%,transparent 52%,#051b1470 74%,#071b16d9 100%)}header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:26px 34px}a{color:inherit}.back{font-size:14px;text-decoration:none}.brand{text-align:center;font-size:18px;letter-spacing:4px;font-weight:600}.brand small{display:block;font-size:10px;letter-spacing:3px;margin-top:7px;font-weight:400}button{color:white;background:#10292388;border:1px solid #ffffff50;padding:11px 16px;border-radius:9px;backdrop-filter:blur(12px);font-size:14px}button:hover{background:#234336cc}.topnote{position:absolute;top:104px;left:34px;right:34px;display:flex;align-items:center;justify-content:space-between;gap:10px}.pill{background:#163b31c9;border:1px solid #dcebb55c;font-size:12px;padding:9px 13px;border-radius:22px;backdrop-filter:blur(10px)}.topnote button{font-size:12px;padding:9px 12px}.heading{position:absolute;bottom:208px;left:42px;pointer-events:none}.kicker{font-size:12px;letter-spacing:3px;color:#e6f5d2}h1{font-size:clamp(28px,3.7vw,52px);font-weight:500;letter-spacing:-1px;margin:12px 0 14px}.heading p{font-size:14px;color:#e0e8dc}.reference{position:absolute;right:38px;bottom:210px;width:210px}.reference button{padding:0;border-radius:10px;overflow:hidden;width:100%;text-align:left}.reference img{width:100%;height:85px;object-fit:cover;display:block}.reference span{display:block;padding:12px;font-size:12px}.controls{position:absolute;bottom:54px;left:15px;right:15px;text-align:center}.compass{margin-bottom:13px}#direction{font-size:12px;color:#f5f7e8}.ticks{font-size:16px;letter-spacing:8px;opacity:.5;margin-top:5px}.toolbar{display:flex;align-items:center;gap:6px;justify-content:center}.toolbar button{background:#102b25bf}.toolbar .selected{background:#d9eeb7;color:#203b29;border-color:#d9eeb7}.divider{height:22px;border-left:1px solid #ffffff55;margin:0 5px}.hint{font-size:12px;color:#d1ded0;margin:13px 0 0}footer{position:absolute;left:15px;right:15px;bottom:16px;text-align:center;font-size:11px;color:#c6d4c5;line-height:1.6}#loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:14px;background:#163c30bc;border-radius:10px;text-align:center}dialog{width:min(960px,92vw);max-height:90svh;border:0;border-radius:15px;background:#f4f6f1;color:#1c3b31;padding:26px}dialog::backdrop{background:#071914dd;backdrop-filter:blur(8px)}.dialoghead{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:15px}.dialoghead small{font-size:11px;letter-spacing:2px;color:#687c69}.dialoghead h2{font-size:23px;margin:8px 0 0}.dialoghead button{color:#234333;background:#e1e7dc;border:0}dialog .original{width:100%;display:block;border-radius:8px}dialog p{font-size:15px;line-height:1.9}dialog a{font-size:14px}dialog h3{font-size:16px}.infoGrid{display:grid;grid-template-columns:200px 1fr;gap:25px}.infoGrid img{width:100%;max-height:460px;object-fit:contain}.copyright{color:#738371;font-size:12px!important}@media(max-width:700px){#experience{min-height:700px}header{padding:22px 16px;gap:10px}.brand{font-size:14px;letter-spacing:2px}.brand small{font-size:8px;letter-spacing:1px}.back{font-size:12px}header button{font-size:12px;padding:9px}.topnote{top:86px;left:16px;right:16px;align-items:flex-start}.pill{font-size:10px;padding:8px 10px}.topnote button{font-size:10px;padding:8px}.heading{left:22px;bottom:224px;right:20px}.heading p{max-width:245px;font-size:12px;line-height:1.8}h1{font-size:30px}.reference{width:auto;right:20px;bottom:210px}.reference img{display:none}.reference span{font-size:11px;padding:9px}.toolbar{gap:4px;flex-wrap:wrap;max-width:420px;margin:auto}.toolbar button{font-size:12px;padding:10px}.divider{margin:0 1px}.controls{bottom:70px}.hint{font-size:10px;line-height:1.6;max-width:290px;margin:12px auto 0}footer{font-size:10px;bottom:16px}.infoGrid{grid-template-columns:1fr}.infoGrid img{height:180px}.dialoghead h2{font-size:19px}dialog{padding:20px}}
.points{position:absolute;top:100px;left:50%;transform:translateX(-50%);display:flex;gap:4px;padding:4px;background:#10292388;border:1px solid #ffffff40;border-radius:12px;backdrop-filter:blur(12px)}.points button{background:transparent;border:0;padding:9px 16px;font-size:14px;white-space:nowrap}.points button small{font-size:10px;letter-spacing:1px;opacity:.7;margin-right:7px}.points .selected{background:#d9eeb7;color:#203b29}.points .selected small{opacity:1}@media(max-width:700px){.points{top:134px;left:16px;right:16px;transform:none;justify-content:center}.points button{padding:8px 10px;font-size:12px}.points button small{display:none}}
.caddie{position:absolute;top:150px;right:34px;width:320px;padding:16px 18px;background:#0d2620d9;border:1px solid #ffffff40;border-radius:14px;backdrop-filter:blur(12px)}.caddie[hidden]{display:none}.caddiehead{display:flex;justify-content:space-between;align-items:center;gap:8px}.caddiehead small{font-size:10px;letter-spacing:1.5px;color:#cfe3c4}.caddiehead button{font-size:11px;padding:6px 9px}.caddie h2{font-size:17px;font-weight:600;margin:10px 0 12px}.types{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.types button{padding:8px 4px;font-size:13px;line-height:1.3}.types button small{display:block;font-size:10px;opacity:.75}.types .selected{background:#d9eeb7;color:#203b29;border-color:#d9eeb7}.caddie h3{font-size:15px;margin:14px 0 6px;color:#e9f8cf}.caddie p{font-size:12.5px;line-height:1.75;margin:0;color:#e3ebe0}.caddie .caddienote{font-size:10.5px;color:#b8c9b6;margin-top:10px;line-height:1.6}.linkish{background:none;border:0;padding:0;margin-left:4px;font-size:10.5px;color:#e6f5d2;text-decoration:underline;backdrop-filter:none}.linkish:hover{background:none}@media(max-height:860px){.has-caddie .reference{display:none}}@media(max-width:700px){.caddie{top:180px;left:16px;right:16px;width:auto;padding:12px 14px}.caddie h2,.caddie .caddienote{display:none}.caddie h3{margin-top:10px;font-size:14px}.caddie p{font-size:11.5px;line-height:1.6}.has-caddie .reference{display:none}.has-caddie .heading p{display:none}}
.navsep{width:1px;margin:6px 4px;background:#ffffff40}.points .realbtn:not(.selected){color:#ffe2a8}.pill.real{background:#5a4217d9;border-color:#ffd58a80}@media(max-width:700px){.navsep{margin:5px 1px}}
/* language switch */
.hright{display:flex;align-items:center;gap:8px}
.langs{display:flex;gap:2px;border:1px solid #ffffff40;border-radius:9px;padding:3px;background:#10292388;backdrop-filter:blur(12px)}
.langs button{border:0;background:transparent;padding:6px 9px;font-size:11px;letter-spacing:1px;border-radius:6px;backdrop-filter:none}
.langs button.on{background:#d7f9ab;color:#0f2a22;font-weight:700}
@media(max-width:700px){.langs button{padding:5px 6px;font-size:10px}.hright{gap:5px}}
/* コース図のミニマップ（地点と視線の向き） */
.minimap{position:absolute;left:34px;bottom:40px;width:180px;padding:10px 10px 8px;background:#0b1f1ad9;border:1px solid #ffffff40;border-radius:14px;backdrop-filter:blur(12px)}
.minimap[hidden]{display:none}
.mm-head{font-size:11px;letter-spacing:1px;color:#d7f9ab;margin:0 2px 6px}
#mmSvg{display:block;width:100%;height:auto;overflow:visible}
.mm-cone{fill:#d7f9ab4d;stroke:#d7f9ab;stroke-width:1.5;stroke-linejoin:round}
.mm-pt{cursor:pointer;outline:none}
.mm-dot{fill:#0d2620;stroke:#fff;stroke-width:3}
.mm-pt text{fill:#fff;font:700 15px Arial,sans-serif;pointer-events:none}
.mm-ring{fill:none;stroke:#d7f9ab;stroke-width:3;opacity:0}
.mm-pt:hover .mm-dot,.mm-pt:focus-visible .mm-dot{stroke:#d7f9ab}
.mm-pt.on .mm-dot{fill:#d7f9ab;stroke:#0d2620}
.mm-pt.on text{fill:#0d2620}
.mm-pt.on .mm-ring{opacity:1;transform-box:fill-box;transform-origin:center;animation:mmpulse 1.6s ease-out infinite}
@keyframes mmpulse{from{transform:scale(.7);opacity:1}to{transform:scale(1.6);opacity:0}}
@media(prefers-reduced-motion:reduce){.mm-pt.on .mm-ring{animation:none}}
@media(max-width:700px){.minimap{left:16px;bottom:150px;width:110px;padding:6px 6px 4px}.mm-head{font-size:9px;margin-bottom:4px}.has-caddie .minimap{display:none}}
/* ページ見出し（左上） */
.topnote{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:10px;right:auto}
.topnote .pagetitle{font-size:28px;font-weight:700;letter-spacing:-.3px;margin:0;line-height:1.1;text-shadow:0 2px 16px #000a}
@media(max-width:700px){.topnote .pagetitle{font-size:18px}.topnote{gap:6px}.points{top:150px}.caddie{top:200px}}
/* 隣の地点へ移動するマーカー */
.hotspots{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.hs{position:absolute;left:0;top:0;pointer-events:auto;background:none;border:0;padding:0;backdrop-filter:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;margin:-22px 0 0 -22px}
.hs:hover{background:none}
.hs.off{visibility:hidden}
.hs-ring{width:44px;height:44px;border-radius:50%;border:3px solid #fff;background:#d7f9ab59;box-shadow:0 0 0 0 #d7f9abaa,0 4px 18px #0008;animation:hspulse 1.8s ease-out infinite;transition:transform .2s}
.hs:hover .hs-ring,.hs:focus-visible .hs-ring{transform:scale(1.15);background:#d7f9abcc}
.hs-label{display:flex;align-items:center;gap:6px;white-space:nowrap;font-size:13px;font-weight:600;color:#fff;background:#0b1f1ae0;border:1px solid #ffffff55;border-radius:20px;padding:6px 12px;box-shadow:0 4px 14px #0007}
.hs-label small{font-size:10px;letter-spacing:1px;color:#d7f9ab}
.hs-label i{font-style:normal;color:#d7f9ab;font-size:16px;line-height:1}
@keyframes hspulse{0%{box-shadow:0 0 0 0 #d7f9abaa,0 4px 18px #0008}100%{box-shadow:0 0 0 18px #d7f9ab00,0 4px 18px #0008}}
@media(prefers-reduced-motion:reduce){.hs-ring{animation:none}}
@media(max-width:700px){.hs-ring{width:36px;height:36px}.hs{margin:-18px 0 0 -18px}.hs-label{font-size:11px;padding:5px 10px}}
