/*
 * WolfStorm — Wolf Territories Grid Web Viewer
 * Copyright (C) 2026 Wolf Territories Grid / IntelligentWolf Ltd.
 * All rights reserved.
 *
 * An original work. Interoperates with OpenSimulator grids by implementing the
 * publicly documented LLUDP and HTTP capability protocols; protocol
 * interoperability does not imply shared authorship or a shared code base.
 *
 * Unauthorised copying, redistribution or modification of this file, in whole or
 * in part, is prohibited without the written permission of IntelligentWolf Ltd.
 * See COPYRIGHT in the project root. https://wolfterritories.org
 */
#camera-controls{position:fixed;inset:0;z-index:995;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#camera-controls .cam-panel{position:absolute;pointer-events:auto;touch-action:none;right:calc(16px + env(safe-area-inset-right, 0px));bottom:calc(var(--ws-toolbar-h, 60px) + 14px + env(safe-area-inset-bottom, 0px));display:flex;flex-direction:column;gap:8px;padding:8px 10px 10px;border-radius:14px;background:rgba(20, 26, 38, 0.52);border:1px solid rgba(160, 200, 255, 0.4);box-shadow:0 6px 22px rgba(0, 0, 0, 0.5);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#camera-controls .cam-presets{display:flex;justify-content:center;gap:4px}#camera-controls .cam-btn{display:flex;align-items:center;justify-content:center;padding:0;border-radius:8px;border:1px solid rgba(160, 200, 255, 0.45);background:rgba(20, 26, 38, 0.62);color:#e8f1ff;cursor:pointer;transition:background 0.12s,border-color 0.12s,transform 0.08s}#camera-controls .cam-preset{width:34px;height:34px}#camera-controls .cam-btn:hover{background:rgba(42, 62, 96, 0.82);border-color:rgba(190, 225, 255, 0.7)}#camera-controls .cam-btn.active{background:rgba(60, 100, 180, 0.92);border-color:rgba(180, 220, 255, 0.9);color:#fff}#camera-controls .cam-btn.pressed,#camera-controls .cam-btn:active{transform:scale(0.94)}#camera-controls .cam-btn:focus-visible{outline:2px solid #9ccfff;outline-offset:2px}#camera-controls .cam-ico{width:20px;height:20px;display:block}#camera-controls .cam-sticks{display:flex;align-items:flex-start;justify-content:center;gap:10px}#camera-controls .cam-stick-wrap{display:flex;flex-direction:column;align-items:center;gap:3px}#camera-controls .cam-stick{position:relative;width:104px;height:104px;border-radius:50%;background:rgba(20, 26, 38, 0.42);border:1px solid rgba(160, 200, 255, 0.45);box-shadow:inset 0 0 14px rgba(0, 0, 0, 0.35)}#camera-controls .cam-stick.active{background:rgba(30, 44, 68, 0.6);border-color:rgba(190, 225, 255, 0.75)}#camera-controls .cam-stick-ring{position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;border:1px dashed rgba(200, 225, 255, 0.3)}#camera-controls .cam-stick-dot{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:rgba(200, 225, 255, 0.45)}#camera-controls .cam-stick-knob{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#16233a;background:radial-gradient(circle at 35% 30%,
        rgba(235, 245, 255, 0.98), rgba(120, 165, 220, 0.95));border:1px solid rgba(255, 255, 255, 0.85);box-shadow:0 3px 10px rgba(0, 0, 0, 0.55);pointer-events:none}#camera-controls .cam-stick-knob .cam-ico{width:22px;height:22px}#camera-controls .cam-stick-label{font:500 10px/1 system-ui,-apple-system,"Segoe UI",sans-serif;letter-spacing:0.04em;text-transform:uppercase;color:rgba(215, 232, 255, 0.75)}#camera-controls .cam-zoom{display:flex;flex-direction:column;align-items:center;gap:4px;padding-top:4px;align-self:stretch}#camera-controls .cam-zoom-btn{width:34px;height:30px}#camera-controls .cam-zoom-rail{width:4px;flex:1 1 auto;min-height:12px;border-radius:2px;background:linear-gradient(to bottom,
        rgba(160, 200, 255, 0.5), rgba(160, 200, 255, 0.15))}@media (max-height: 480px){#camera-controls .cam-panel{bottom:calc(64px + env(safe-area-inset-bottom, 0px));gap:5px;padding:5px 7px 7px}#camera-controls .cam-preset{width:28px;height:28px}#camera-controls .cam-ico{width:17px;height:17px}#camera-controls .cam-stick{width:78px;height:78px}#camera-controls .cam-stick-knob{width:36px;height:36px;margin:-18px 0 0 -18px}#camera-controls .cam-stick-knob .cam-ico{width:18px;height:18px}#camera-controls .cam-stick-label{display:none}#camera-controls .cam-zoom-btn{width:28px;height:26px}}@media (max-width: 400px){#camera-controls .cam-panel{right:calc(8px + env(safe-area-inset-right, 0px));padding:6px 7px 8px;gap:6px}#camera-controls .cam-preset{width:30px;height:30px}#camera-controls .cam-stick{width:92px;height:92px}#camera-controls .cam-stick-knob{width:42px;height:42px;margin:-21px 0 0 -21px}}@media (prefers-reduced-motion: reduce){#camera-controls .cam-btn{transition:none}}