:root{color-scheme:dark;--ink: #eef2f4;--panel: rgba(10, 16, 20, .72)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:#0b0f12;color:var(--ink);font:13px/1.5 ui-sans-serif,system-ui,-apple-system,sans-serif}#app,#app canvas{display:block;width:100vw;height:100vh}#app canvas{touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}#app canvas:active{cursor:grabbing}#hud,#hint{position:fixed;z-index:10;padding:10px 14px;border-radius:10px;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none}#hud[hidden],#hint[hidden]{display:none}#hud{top:16px;left:16px;font-variant-numeric:tabular-nums}#hudHead{font-size:20px;font-weight:600}#hudDetail{opacity:.7;white-space:pre;font-size:11px;margin-top:4px}#hint{bottom:16px;left:16px;right:16px;max-width:max-content;display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px;padding:10px 16px}.hint-item{display:flex;align-items:center;gap:8px;white-space:nowrap}.hint-keys{display:flex;align-items:center;gap:3px}.hint-label{opacity:.85}.hint-label small{display:block;margin-top:-2px;opacity:.6;font-size:11px}#hint kbd{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border:1px solid rgba(238,242,244,.35);border-bottom-width:3px;border-radius:6px;background:#eef2f414;color:var(--ink);font:600 12px/1 ui-sans-serif,system-ui,-apple-system,sans-serif}.hint-wasd{display:grid;grid-template-columns:repeat(3,24px);gap:2px}.hint-wasd kbd:first-child{grid-column:2}.hint-wasd kbd:nth-child(2){grid-column:1;grid-row:2}.hint-wasd kbd:nth-child(3){grid-column:2;grid-row:2}.hint-wasd kbd:nth-child(4){grid-column:3;grid-row:2}.hint-wasd kbd{min-width:0;height:20px;padding:0;font-size:11px}.hint-icon.hint-mouse{width:34px}.hint-icon{flex:none;width:26px;height:26px;color:var(--ink)}.hint-spot{position:relative;flex:none;width:22px;height:22px;border:2px solid rgba(238,242,244,.85);border-radius:50%;background:radial-gradient(circle,#eef2f4 0 2px,#8cc8ff29 3px)}.hint-spot:before{content:"";position:absolute;inset:-2px;border:2px solid rgba(140,200,255,.9);border-radius:50%;animation:hotspot-pulse 1.8s ease-out infinite}@media(prefers-reduced-motion:reduce){.hint-spot:before{animation:none}}@media(max-width:720px){#hint{font-size:12px}}#status[hidden]{display:none}#status{position:fixed;inset:0;z-index:15;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 45%,#18242c,#0b0f12 70%);pointer-events:none}.loader{display:grid;justify-items:center;gap:18px;max-width:420px;text-align:center}.loader-wheel{position:relative;width:120px;height:120px;display:grid;place-items:center}.loader-wheel svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}.loader-track,.loader-arc{fill:none;stroke-width:6;stroke-linecap:round}.loader-track{stroke:#eef2f41f}.loader-arc{stroke:var(--ink);stroke-dasharray:326.726;stroke-dashoffset:326.726;transition:stroke-dashoffset .22s linear}.loader-pct{font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.loader-label{margin:0;opacity:.6}.loader.is-indeterminate .loader-arc{stroke-dasharray:72 254.726;stroke-dashoffset:0;transition:none;transform-origin:50% 50%;animation:loader-spin .9s linear infinite}.loader.is-failed .loader-wheel{display:none}.loader.is-failed .loader-label{opacity:1;max-width:32em}@keyframes loader-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loader.is-indeterminate .loader-arc{animation-duration:2.4s}}#hotspots{position:fixed;inset:0;z-index:11;pointer-events:none}.hotspot{--r: 20px;position:absolute;top:0;left:0;transform:translate(-50%,-50%);display:grid;place-items:center;width:calc(var(--r) * 2);height:calc(var(--r) * 2);padding:0;border:0;border-radius:50%;background:none;color:var(--ink);font:inherit;cursor:pointer;pointer-events:auto;transition:opacity .16s linear}.hotspot[hidden]{display:none}.hotspot-ring{width:100%;height:100%;border:2px solid rgba(238,242,244,.85);border-radius:50%;box-shadow:0 0 0 1px #00000073,inset 0 0 0 1px #00000059,0 0 14px #8cc8ff40;background:radial-gradient(circle,rgba(140,200,255,.16) 0%,rgba(140,200,255,.05) 55%,transparent 70%);transition:transform .14s ease-out,border-color .14s ease-out,box-shadow .14s ease-out}.hotspot-ring:after{content:"";position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:#eef2f4e6;box-shadow:0 0 6px #0009}.hotspot:before{content:"";position:absolute;inset:0;border:2px solid rgba(140,200,255,.9);border-radius:50%;pointer-events:none;animation:hotspot-pulse 1.8s ease-out infinite}.hotspot:hover:before,.hotspot:focus-visible:before{animation:none;opacity:0}@keyframes hotspot-pulse{0%{transform:scale(1);opacity:.85}70%,to{transform:scale(1.7);opacity:0}}.hotspot-ring{animation:hotspot-breathe 1.8s ease-in-out infinite}@keyframes hotspot-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.hotspot:hover .hotspot-ring,.hotspot:focus-visible .hotspot-ring{animation:none;transform:scale(1.12);border-color:#fff;box-shadow:0 0 0 1px #00000080,0 0 22px #8cc8ff8c}.hotspot:focus{outline:none}.hotspot-label{position:absolute;top:calc(50% + var(--r) + 8px);left:50%;transform:translate(-50%);padding:4px 9px;border-radius:7px;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;font-size:12px;opacity:0;pointer-events:none;transition:opacity .14s linear}.hotspot.is-near .hotspot-label,.hotspot:hover .hotspot-label,.hotspot:focus-visible .hotspot-label{opacity:1}@media(prefers-reduced-motion:reduce){.hotspot,.hotspot-ring,.hotspot-label{transition:none}.hotspot:before,.hotspot-ring{animation:none}}#detail[hidden]{display:none}#detail{position:fixed;z-index:12;left:50%;top:16px;transform:translate(-50%);display:flex;align-items:center;gap:16px;max-width:calc(100vw - 32px);padding:10px 10px 10px 16px;border-radius:12px;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}#detailText{display:flex;flex-direction:column;min-width:0}#detailTitle{font-size:14px}#detailNote{opacity:.65;font-size:12px}#detail.is-busy #detailNote{opacity:.85}#detailClose{flex:none;padding:7px 12px;border:1px solid rgba(238,242,244,.22);border-radius:8px;background:#eef2f40f;color:var(--ink);font:inherit;font-size:12px;cursor:pointer}#detailClose[hidden]{display:none}#detailClose:hover{background:#eef2f424}.close-x{display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid rgba(238,242,244,.28);border-radius:50%;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink);font:inherit;font-size:24px;line-height:1;cursor:pointer;transition:background .12s linear,transform .12s ease-out}.close-x:hover{background:#3c464ee6;transform:scale(1.08)}.close-x[hidden]{display:none}#detailX{position:fixed;z-index:13;top:16px;right:16px}#photoX{position:absolute;z-index:1;top:10px;right:10px}#photo[hidden]{display:none}#photo{position:fixed;z-index:20;inset:0;display:flex;align-items:center;justify-content:center;padding:16px;background:#05080ab3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}#photoFigure{position:relative;display:flex;flex-direction:column;max-width:min(1200px,100%);max-height:100%;margin:0;overflow:hidden;border-radius:12px;background:var(--panel)}#photoFrame{position:relative;min-height:0;overflow:hidden;background:#000}#photoImg{display:block;max-width:100%;max-height:calc(100vh - 88px);object-fit:contain;cursor:zoom-in;transform-origin:50% 50%;transition:transform .22s ease-out;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}#photo.is-zoomed #photoImg{cursor:zoom-out}#photoZoomHint{opacity:.5;font-size:11px}@media(prefers-reduced-motion:reduce){#photoImg{transition:none}}#photo.is-busy #photoImg{width:min(720px,100vw - 32px);aspect-ratio:4 / 3}#photo figcaption{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 10px 10px 16px}#photoText{display:flex;flex-direction:column;min-width:0}#photoTitle{font-size:14px}#photoNote{opacity:.65;font-size:12px}#photoClose{flex:none;padding:7px 12px;border:1px solid rgba(238,242,244,.22);border-radius:8px;background:#eef2f40f;color:var(--ink);font:inherit;font-size:12px;cursor:pointer}#photoClose:hover{background:#eef2f424}#photo kbd,#detail kbd,#align kbd{padding:1px 4px;border:1px solid rgba(238,242,244,.25);border-radius:4px;font:inherit;font-size:10px;opacity:.8}#align,#pick{position:fixed;z-index:13;right:16px;padding:10px 14px;border-radius:10px;background:var(--panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:12px;pointer-events:none}#align{top:16px;max-width:300px}#pick{bottom:16px;font-variant-numeric:tabular-nums}#align pre{margin:8px 0;font-size:11px;line-height:1.6}#align p{margin:0;opacity:.7;line-height:2}#align{pointer-events:auto;-webkit-user-select:text;user-select:text}#align pre{white-space:pre-wrap;-webkit-user-select:all;user-select:all;cursor:text}#align .align-view{margin:0 0 6px;opacity:.85;line-height:1.5}#align .align-view em{font-style:normal;opacity:.6}
