:root{color-scheme:dark;font-family:system-ui,"Microsoft YaHei",sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;touch-action:none}body{background:#142230;user-select:none;-webkit-user-select:none}#stage,#scene{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#photos{position:absolute;inset:0;background:#101820;opacity:0;pointer-events:none;transition:opacity .3s ease;touch-action:none}#photos.visible{opacity:1;pointer-events:auto}#photos img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .3s ease;pointer-events:none}#photos img.current{opacity:1}#dock{position:fixed;z-index:5;left:50%;bottom:max(14px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:24px;padding:7px 10px;border:1px solid #ffffff12;border-radius:32px;background:#12212da0;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);opacity:.35;transition:opacity .22s ease;touch-action:none}#dock.awake,#dock:focus-within{opacity:1}@media(hover:hover){#dock:hover{opacity:1}}.cluster{display:flex;gap:6px}button{display:grid;place-items:center;padding:0;width:40px;height:40px;flex:none;border:1px solid #ffffff18;border-radius:50%;background:#ffffff05;color:#e8eef3;cursor:pointer;font:22px/1 system-ui;touch-action:none;transition:background .2s,border-color .2s,color .2s}button svg{width:23px;height:23px;fill:currentColor}button.active{background:#b9d9ed28;border-color:#d5e6ee65;color:#fff}button:active{background:#ffffff32}button:focus-visible{outline:2px solid #d4e3ef;outline-offset:3px}button[aria-busy="true"]{opacity:.65}.main-photo{font-size:13px}@media(max-width:540px){#dock{gap:14px;padding:6px 8px;bottom:max(10px,env(safe-area-inset-bottom))}.cluster{gap:4px}button{width:34px;height:34px;font-size:20px}.main-photo{font-size:12px}}@media(prefers-reduced-motion:reduce){#dock{transition:none}}

/* Observation buttons begin dim even before the module finishes loading. */
button[data-view]{opacity:.23;filter:grayscale(1);cursor:default;transition:opacity .4s ease,filter .4s ease,background .2s,border-color .2s,color .4s ease}
button[data-view]:disabled{color:#7e8991;border-color:#ffffff10;background:#ffffff03}
#dock.positions-ready button[data-view]{opacity:1;filter:grayscale(0);cursor:pointer}
