*{box-sizing:border-box;margin:0;padding:0}html,body,#root{touch-action:none;width:100%;height:100%;overflow:hidden}body{background:#000;font-family:system-ui,sans-serif}.compass-overlay{z-index:10;pointer-events:none;padding-top:env(safe-area-inset-top,12px);flex-direction:column;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.compass-direction{color:#fff;text-shadow:0 1px 4px #000c;margin-top:8px;font-size:22px;font-weight:700}.compass-degrees{color:#ffffffb3;text-shadow:0 1px 3px #000c;margin-bottom:6px;font-size:13px}.compass-bar{width:240px;position:relative;overflow:hidden}.compass-bar:after{content:"";background:#f44;width:2px;height:100%;position:absolute;top:0;left:50%;transform:translate(-50%)}.compass-bar-inner{justify-content:space-between;width:200%;transition:transform .1s ease-out;display:flex}.compass-bar-label{color:#ffffff80;text-shadow:0 1px 2px #000c;text-align:center;flex-shrink:0;width:11.1111%;font-size:12px;font-weight:600}.compass-bar-label.is-north{color:#f44}.toggle-button{z-index:10;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;background:#00000080;border:1px solid #fff6;border-radius:24px;padding:10px 28px;font-size:16px;font-weight:600;position:fixed;bottom:30px;left:50%;transform:translate(-50%)}.toggle-button:active{background:#fff3}.threed-mode-toggle{z-index:10;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;background:#00000080;border:1px solid #fff6;border-radius:24px;padding:10px 20px;font-size:15px;font-weight:600;position:fixed;bottom:30px;left:24px}.threed-mode-toggle:active{background:#fff3}.threed-return-button{z-index:20;pointer-events:auto;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;background:#00000080;border:1px solid #fff6;border-radius:24px;padding:10px 20px;font-size:15px;font-weight:600;position:fixed;bottom:30px;right:24px}.threed-return-button:active{background:#fff3}.threed-placement-hint{z-index:10;color:#fff;pointer-events:none;-webkit-backdrop-filter:blur(8px);background:#0009;border:1px solid #ffffff59;border-radius:12px;padding:10px 20px;font-size:14px;font-weight:600;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.orientation-mode-toggle{top:calc(env(safe-area-inset-top,0px) + 12px);right:calc(env(safe-area-inset-right,0px) + 12px);z-index:11;color:#fff;letter-spacing:.02em;cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;background:#00000073;border:1px solid #ffffff73;border-radius:17px;min-width:58px;height:34px;font-size:12px;font-weight:700;position:fixed}.orientation-mode-toggle:active{background:#ffffff40}.orientation-mode-toggle:disabled{opacity:.55;cursor:default}.permission-screen{z-index:100;background:#000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.permission-content{text-align:center;color:#fff;max-width:340px;padding:24px}.permission-content h1{color:#fff;margin-bottom:16px;font-size:28px}.permission-content p{color:#ffffffb3;margin-bottom:28px;font-size:15px;line-height:1.6}.permission-content button{color:#000;cursor:pointer;touch-action:manipulation;background:#fff;border:none;border-radius:28px;padding:14px 32px;font-size:16px;font-weight:600}.permission-content button:active{background:#ddd}.pins-layer{z-index:12;pointer-events:none;position:fixed;inset:0}.pin-button{color:#fff;cursor:pointer;pointer-events:auto;text-shadow:0 1px 4px #000000d9;background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute}.pin-button-anchored{transform-origin:50%;position:relative}.pin-dot{background:#ff4d4d;border:2px solid #fff;border-radius:999px;width:14px;height:14px;box-shadow:0 0 0 3px #ff4d4d4d}.pin-button.is-selected .pin-dot{background:#ffd84d;box-shadow:0 0 0 4px #ffd84d59}.pin-label{white-space:nowrap;background:#0000009e;border:1px solid #ffffff5c;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:700}.pins-status-banner{left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 86px);z-index:30;color:#fff;background:#00000094;border:1px solid #ffffff47;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:600;position:fixed;transform:translate(-50%)}.pins-status-banner.is-error{background:#820c0cb8;border-color:#ffa0a073}.pin-debug-panel{top:calc(env(safe-area-inset-top,0px) + 10px);left:calc(env(safe-area-inset-left,0px) + 10px);z-index:200;width:min(340px,100vw - 20px);max-height:calc(100vh - 20px - env(safe-area-inset-top,0px));color:#fff;-webkit-backdrop-filter:blur(10px);background:#0a0c10db;border:1px solid #ffffff59;border-radius:14px;padding:12px;position:fixed;overflow:auto}.pin-debug-panel h2{margin-bottom:8px;font-size:14px}.pin-debug-toolbar{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:10px;display:grid}.pin-debug-toolbar button,.pin-debug-list-title-row button,.pin-debug-array-item button{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff59;border-radius:8px;height:32px}.pin-debug-field{color:#ffffffd9;flex-direction:column;gap:4px;margin-bottom:8px;font-size:12px;display:flex}.pin-debug-field input,.pin-debug-field select,.pin-debug-field textarea,.pin-debug-array-item input{color:#fff;background:#00000059;border:1px solid #ffffff4d;border-radius:8px;padding:7px 8px;font-size:13px}.pin-debug-list{margin-top:12px}.pin-debug-list-title-row{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.pin-debug-list-title-row h3{font-size:13px}.pin-debug-list-title-row button{width:32px}.pin-debug-array-item{background:#ffffff0f;border-radius:8px;grid-template-columns:1fr;gap:6px;margin-bottom:8px;padding:8px;display:grid}.pin-debug-array-item button{width:48px}.pin-debug-error{color:#ffb7b7;margin-bottom:8px;font-size:12px}.pin-debug-hint{color:#b8defd;margin-bottom:8px;font-size:12px}.pin-debug-empty{color:#ffffffb3;font-size:12px}@media (width<=640px){.pin-debug-panel{width:calc(100vw - 12px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));left:calc(env(safe-area-inset-left,0px) + 6px);top:calc(env(safe-area-inset-top,0px) + 6px);max-height:54vh}.pins-status-banner{bottom:calc(env(safe-area-inset-bottom,0px) + 74px)}}
