:root{--bg:#0a1420;--surface:#101e2c;--panel:#0c1926;--ink:#e8edf2;--muted:#8ba0b4;--line:#1c3244;--accent:#7fb8d8;--accent-ink:#06121c;}
*{box-sizing:border-box;}
html,body{height:100%;margin:0;background:#000;color:var(--ink);font:14px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;}
.app{display:flex;height:100%;width:100%;}
.stage{position:relative;flex:1;min-width:0;background:#000;overflow:hidden;}
#view{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;}
#minimap{position:absolute;right:10px;bottom:64px;width:150px;height:150px;border-radius:50%;background:rgba(6,14,22,0.72);border:1px solid var(--line);z-index:5;}

.topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:linear-gradient(rgba(3,8,13,0.72),rgba(3,8,13,0));z-index:6;gap:8px;}
.brand{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,0.6);}
.brand b{font-size:0.95rem;}
.brand span{font-size:0.85rem;color:#dfe9f2;}
.brand small{font-size:0.72rem;color:#bcd0de;}
.topbtns{display:flex;gap:6px;}
.topbtns button{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:rgba(10,20,30,0.6);color:#fff;font-size:1rem;cursor:pointer;}

.sunbar{position:absolute;top:44px;left:10px;font-size:0.72rem;color:#cfe0ec;background:rgba(6,14,22,0.55);border:1px solid var(--line);border-radius:8px;padding:3px 8px;z-index:6;}
.sunbar span{color:#fff;font-weight:600;}

.helm{position:absolute;left:10px;bottom:14px;display:grid;grid-template-columns:repeat(3,40px);grid-template-rows:repeat(2,40px);gap:6px;z-index:6;}
.hbtn{grid-column:2;border-radius:9px;border:1px solid var(--line);background:rgba(10,20,30,0.62);color:#fff;font-size:1rem;cursor:pointer;}
#th-up{grid-row:1;}
#th-dn{grid-row:2;}
#rd-l{grid-column:1;grid-row:1/3;}
#rd-r{grid-column:3;grid-row:1/3;}
.hint{position:absolute;left:10px;bottom:2px;font-size:0.66rem;color:#9fb2c2;z-index:6;text-shadow:0 1px 2px rgba(0,0,0,0.7);}

.lockbar{position:absolute;inset:0;display:none;align-items:flex-start;justify-content:center;background:rgba(4,10,16,0.34);padding-top:18px;z-index:20;}
.slide{position:relative;width:min(80%,340px);height:54px;border-radius:27px;background:rgba(10,18,26,0.86);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.slidelbl{color:var(--muted);font-size:0.85rem;letter-spacing:0.05em;}
.knob{position:absolute;left:3px;top:3px;width:48px;height:48px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-weight:800;cursor:grab;touch-action:none;box-shadow:0 2px 10px rgba(0,0,0,0.5);}

.panel{width:280px;flex:0 0 280px;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;overflow-y:auto;padding:12px;gap:10px;}
.pnl{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px;}
.pnl h2{margin:0 0 8px;font-size:0.64rem;letter-spacing:0.09em;text-transform:uppercase;color:var(--muted);}
.blurb{margin:0 0 8px;font-size:0.78rem;color:#c6d5e0;}
.jump{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.jump button{font:inherit;font-size:0.74rem;padding:8px 4px;min-height:38px;cursor:pointer;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:9px;}
.jump button[aria-pressed="true"]{border-color:var(--accent);color:var(--accent);}
.row{display:flex;align-items:center;gap:8px;font-size:0.78rem;}
.row label{flex:0 0 auto;color:var(--muted);}
.row input[type="range"]{flex:1;}
.val{width:56px;text-align:right;color:var(--accent);font-variant-numeric:tabular-nums;}
.btns{display:flex;gap:8px;margin-top:8px;}
.btn{font:inherit;font-size:0.78rem;padding:8px 10px;cursor:pointer;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:9px;}
#species{display:flex;flex-direction:column;gap:4px;font-size:0.74rem;max-height:340px;overflow-y:auto;}
.splabel{color:var(--muted);font-size:0.64rem;text-transform:uppercase;letter-spacing:0.06em;margin:6px 0 2px;}
.sprow{display:flex;align-items:center;gap:6px;}
.sprow i{width:9px;height:9px;border-radius:3px;flex:0 0 auto;}
.sprow .spn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sprow .state{font-size:0.64rem;color:var(--muted);}
.sprow .state.on{color:#8fd88f;}
.sprow .state.off{color:#c98a6a;}
.hint2{margin:0;font-size:0.72rem;color:var(--muted);}
.foot{margin:2px 2px 8px;font-size:0.68rem;color:var(--muted);}

@media (max-width:760px){
  .app{flex-direction:column;}
  .panel{width:100%;flex:0 0 auto;max-height:46vh;border-left:none;border-top:1px solid var(--line);}
  #minimap{width:110px;height:110px;bottom:96px;}
}
