:root{--bg-color: #222;--panel-bg: rgba(20, 20, 20, .85);--text-color: #eee;--accent: #4fa;--accent-dark: #296}*{box-sizing:border-box;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0;width:100%;height:100%;overflow:hidden;font-family:Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--bg-color);color:var(--text-color);display:flex}.app-container{display:flex;flex-direction:row;width:100vw;height:100vh;overflow:hidden}.viewport-area{position:relative;flex-grow:1;height:100%;overflow:hidden;background-color:#2a2a2a}#canvas-container{width:100%;height:100%;display:block;touch-action:none}#canvas-container canvas{cursor:grab}#canvas-container canvas:active{cursor:grabbing}#compass-container{position:absolute;top:20px;right:20px;width:120px;height:120px;pointer-events:none;z-index:10}.zoom-controls{position:absolute;bottom:30px;right:30px;display:flex;flex-direction:column;gap:10px;z-index:20}.zoom-btn{width:44px;height:44px;background-color:var(--panel-bg);color:var(--text-color);border:1px solid rgba(255,255,255,.2);border-radius:8px;font-size:24px;font-weight:300;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;padding:0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 4px 10px #0000004d}.zoom-btn:hover{background-color:var(--accent);color:#000;border-color:var(--accent);transform:translateY(-1px)}.zoom-btn:active{transform:translateY(1px)}.sidebar{width:300px;min-width:300px;background:var(--panel-bg);border-left:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;z-index:20;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:-4px 0 20px #0000004d}.sidebar-header{padding:20px;background:#0003;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.sidebar-header h1{margin:0;font-size:1.2rem;font-weight:800;color:#fff;letter-spacing:.05em;text-transform:uppercase}.controls-scroll{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px;scrollbar-width:thin;scrollbar-color:var(--accent) rgba(255,255,255,.05)}.controls-scroll::-webkit-scrollbar{width:6px}.controls-scroll::-webkit-scrollbar-track{background:#ffffff0d}.controls-scroll::-webkit-scrollbar-thumb{background-color:var(--accent);border-radius:3px}#ui-container,.header,.controls-panel{position:static;width:auto;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding:0;border:none;box-shadow:none;transform:none;display:block;pointer-events:auto}.header{display:none}.control-group{display:grid;grid-template-columns:1fr 1.5fr;align-items:center;gap:12px;min-height:36px}@media(max-width:850px){.app-container{flex-direction:column}.sidebar{width:100%;min-width:0;height:45vh;border-left:none;border-top:1px solid rgba(255,255,255,.1)}.viewport-area{height:55vh}#compass-container{top:10px;right:10px;width:100px;height:100px}}.dynamic-group{display:flex;flex-direction:column;gap:12px;margin:5px -20px 10px;padding:15px 20px;background:#ffffff0a;border-left:4px solid var(--accent);border-radius:0}.hidden{display:none!important}.control-group label{font-size:.9rem;font-weight:600;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=range]{width:100%;accent-color:var(--accent);height:6px;border-radius:3px}input[type=number]{background:#1e1e1e99;border:1px solid rgba(255,255,255,.2);color:#fff;padding:6px 8px;border-radius:6px;font-family:inherit;font-size:.9rem;width:100%;transition:border-color .2s,background-color .2s}input[type=number]:focus{border-color:var(--accent);background-color:#1e1e1ee6;outline:none}select{background:#1e1e1ecc;border:1px solid rgba(255,255,255,.2);color:#fff;padding:8px 12px;border-radius:8px;font-size:.95rem;width:100%;cursor:pointer;outline:none}select:focus{border-color:var(--accent)}select option{background-color:#333;color:#fff}input[type=color]{border:none;width:100%;height:32px;background:none;cursor:pointer;border-radius:4px;justify-self:end}input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent);cursor:pointer;justify-self:end}.actions{display:flex;flex-direction:column;gap:10px;margin-top:10px}.actions-row{display:flex;gap:10px;width:100%}button{flex:1;padding:12px;border:none;border-radius:12px;font-weight:700;font-size:1rem;cursor:pointer;transition:transform .1s}button:active{transform:scale(.96)}.primary-btn{background:var(--accent);color:#123}.secondary-btn{background:#ffffff26;color:#fff}@media(max-width:600px){.controls-panel{padding-bottom:30px}}
