:root {
  --bg: #0d1117; --panel: rgba(16, 22, 31, 0.92); --panel2: rgba(24, 32, 44, 0.95);
  --line: rgba(255, 255, 255, 0.09); --text: #e6edf3; --muted: #9aa7b4; --accent: #ffb347; --maroon: #8a1538;
  --font: "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; overflow: hidden; background: var(--bg); color: var(--text); font-family: var(--font); font-size: 14px; }
#scene { position: fixed; inset: 0; }
#scene canvas { display: block; }
#labels { position: fixed; inset: 0; pointer-events: none; }
#labels > div { pointer-events: none; }

.label { pointer-events: auto; cursor: pointer; font-size: 11px; letter-spacing: .02em; color: #fff; background: rgba(10, 14, 20, 0.72);
  border: 1px solid rgba(255,255,255,0.18); padding: 3px 8px; border-radius: 4px; white-space: nowrap; transform: translateY(-50%); transition: background .15s; }
.label::after { content: ""; position: absolute; left: 50%; top: 100%; width: 1px; height: 14px; background: rgba(255,255,255,0.45); }
.label:hover, .label.active { background: var(--accent); color: #111; border-color: var(--accent); }

#sidebar { position: fixed; top: 0; left: 0; bottom: 0; width: 320px; background: var(--panel); border-right: 1px solid var(--line);
  display: flex; flex-direction: column; backdrop-filter: blur(8px); z-index: 5; transition: transform .25s; }
#sidebar.collapsed { transform: translateX(-100%); }
#sidebar header { padding: 16px 18px 12px; border-bottom: 1px solid var(--line); }
#sidebar h1 { margin: 0; font-size: 17px; font-weight: 600; letter-spacing: .01em; }
#sidebar h1 span { display: block; font-size: 11px; color: var(--muted); font-weight: 400; margin-top: 3px; text-transform: uppercase; letter-spacing: .12em; }
.specs { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; margin-top: 12px; font-size: 12px; }
.specs div { color: var(--muted); }
.specs b { color: var(--text); font-weight: 500; }
#list { flex: 1; overflow-y: auto; padding: 8px 0 12px; }
#list h3 { margin: 12px 18px 4px; font-size: 11px; text-transform: uppercase; letter-spacing: .12em; color: var(--muted); font-weight: 600; }
#list button { display: block; width: 100%; text-align: left; background: none; border: 0; color: var(--text); padding: 7px 18px 7px 30px; font: inherit; font-size: 13px; cursor: pointer; position: relative; }
#list button::before { content: ""; position: absolute; left: 18px; top: 50%; width: 6px; height: 6px; border-radius: 50%; background: var(--muted); transform: translateY(-50%); opacity: .6; }
#list button:hover { background: rgba(255,255,255,0.05); }
#list button.active { background: rgba(255,179,71,0.14); color: var(--accent); }
#list button.active::before { background: var(--accent); opacity: 1; }
#list button.hidden-sec { opacity: .4; }
.controls { padding: 12px 18px 14px; border-top: 1px solid var(--line); display: grid; grid-template-columns: 1fr 1fr; gap: 6px 10px; font-size: 12.5px; }
.controls label { display: flex; align-items: center; gap: 7px; cursor: pointer; color: var(--text); }
.controls input { accent-color: var(--accent); }
.hint { padding: 0 18px 14px; font-size: 11px; color: var(--muted); line-height: 1.5; }

#toggleSidebar { position: fixed; top: 12px; left: 332px; z-index: 6; background: var(--panel2); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 6px 10px; cursor: pointer; font: inherit; transition: left .25s; }
#sidebar.collapsed ~ #toggleSidebar { left: 12px; }

#views { position: fixed; top: 12px; right: 12px; z-index: 5; display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
#views button, #info button { background: var(--panel2); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 6px 11px; cursor: pointer; font: inherit; font-size: 12.5px; }
#views button:hover, #info button:hover { border-color: var(--accent); color: var(--accent); }

#info { position: fixed; right: 12px; bottom: 12px; width: 380px; max-width: calc(100vw - 24px); background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px 12px; z-index: 5; backdrop-filter: blur(8px); display: none; }
#info.show { display: block; }
#info .area { font-size: 11px; text-transform: uppercase; letter-spacing: .12em; color: var(--accent); }
#info h2 { margin: 2px 0 8px; font-size: 17px; font-weight: 600; }
#info p { margin: 0 0 12px; line-height: 1.55; color: #d4dbe3; font-size: 13px; }
#info .row { display: flex; gap: 6px; flex-wrap: wrap; }
#info .close { position: absolute; right: 8px; top: 6px; border: 0; background: none; color: var(--muted); font-size: 18px; cursor: pointer; }

#loading { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--bg); z-index: 20; flex-direction: column; gap: 10px; color: var(--muted); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; }
#loading .bar { width: 220px; height: 3px; background: rgba(255,255,255,0.1); overflow: hidden; border-radius: 2px; }
#loading .bar i { display: block; width: 40%; height: 100%; background: var(--accent); animation: slide 1.1s infinite ease-in-out; }
@keyframes slide { 0% { transform: translateX(-100%); } 100% { transform: translateX(350%); } }

.inspect { padding: 10px 18px 6px; border-top: 1px solid var(--line); font-size: 12.5px; }
.inspect h3 { margin: 0 0 6px; font-size: 11px; text-transform: uppercase; letter-spacing: .12em; color: var(--muted); font-weight: 600; }
.inspect label { display: flex; align-items: center; gap: 7px; cursor: pointer; margin: 4px 0; }
.inspect input[type=range] { width: 100%; margin: 0 0 6px; accent-color: var(--accent); }
.inspect input[type=range]:disabled { opacity: .35; }
#toolbar { position: fixed; left: 50%; bottom: 14px; transform: translateX(-50%); display: flex; gap: 6px; z-index: 5; }
#toolbar button { background: var(--panel2); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 6px 12px; cursor: pointer; font: inherit; font-size: 13px; min-width: 36px; }
#toolbar button:hover { border-color: var(--accent); color: var(--accent); }

@media (max-width: 760px) {
  #sidebar { width: 260px; }
  #toggleSidebar { left: 272px; }
  #info { width: calc(100vw - 24px); }
}

#sidebar:not(.collapsed) ~ #toolbar { left: calc(50% + 160px); }
@media (max-width: 760px) { #sidebar:not(.collapsed) ~ #toolbar { left: calc(50% + 130px); } }

.label.inside { border-style: dashed; background: rgba(60, 30, 10, 0.78); }

.controls label.wide { grid-column: 1 / -1; }
.controls select { flex: 1; background: var(--panel2); color: var(--text); border: 1px solid var(--line); border-radius: 5px; padding: 3px 6px; font: inherit; font-size: 12px; }
