:root{
  --panel-bg: rgba(12, 24, 20, 0.55);
  --panel-edge: rgba(255,255,255,0.14);
  --ink: #eef6ee;
  --ink-dim: #b9cfc4;
  --accent: #ffd54a;
  --green: #7be382;
  --red: #ff7a6b;
}
*{box-sizing:border-box; margin:0; padding:0;}
html,body{width:100%;height:100%;overflow:hidden;background:#87b7e8;}
body{font-family:"Avenir Next","Segoe UI",system-ui,-apple-system,sans-serif;color:var(--ink);
  -webkit-user-select:none;user-select:none;touch-action:none;}
#app,#app canvas{position:fixed;inset:0;width:100%;height:100%;display:block;}
#app canvas{cursor:grab;}
#app canvas.dragging{cursor:grabbing;}

#hud{position:fixed;inset:0;pointer-events:none;z-index:10;}
.panel{position:absolute;background:var(--panel-bg);border:1px solid var(--panel-edge);
  border-radius:14px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  box-shadow:0 6px 24px rgba(0,20,10,.25);}

/* ---------- top bar ---------- */
#topbar{position:absolute;top:10px;left:50%;transform:translateX(-50%);display:flex;
  flex-direction:column;align-items:center;gap:6px;}
#title-chip{display:flex;flex-direction:column;align-items:center;padding:7px 22px 8px;
  background:linear-gradient(180deg,rgba(20,40,32,.72),rgba(10,24,18,.62));
  border:1px solid var(--panel-edge);border-radius:12px;letter-spacing:.14em;}
#title-chip .school{font-size:12px;font-weight:700;color:var(--accent);}
#title-chip .lesson{font-size:10px;color:var(--ink-dim);letter-spacing:.08em;margin-top:1px;}
#phase-chip{padding:3px 16px;border-radius:999px;background:rgba(10,30,20,.55);
  border:1px solid rgba(255,255,255,.12);font-size:11px;font-weight:700;letter-spacing:.18em;
  color:var(--green);transition:color .3s;}
#phase-chip.warn{color:var(--red);}

/* ---------- instruments ---------- */
#panel-left{top:12px;left:12px;width:212px;padding:10px 12px 11px;}
.gauge-row{display:flex;gap:10px;justify-content:space-between;}
.gauge{width:88px;text-align:center;position:relative;}
.gauge svg{width:88px;height:88px;display:block;}
.gauge .dial{fill:rgba(0,0,0,.35);stroke:rgba(255,255,255,.25);stroke-width:1.5;}
.gauge .band{stroke:#39d97e;stroke-width:5;opacity:.85;}
.gauge .needle{stroke:#ffd54a;stroke-width:3;stroke-linecap:round;transform-origin:50px 50px;}
.gauge .needle.eng{stroke:#7ec8ff;}
.gauge .hub{fill:#111;}
.gauge .tick{stroke:rgba(255,255,255,.55);stroke-width:1.5;}
.gauge .dial-label{fill:var(--ink-dim);font-size:8.5px;text-anchor:middle;letter-spacing:.08em;}
.gauge .dial-label.small{font-size:7px;fill:rgba(255,255,255,.4);}
.gauge-num{font-size:13px;font-weight:700;margin-top:-4px;color:var(--ink);font-variant-numeric:tabular-nums;}
.bars{display:flex;gap:12px;margin-top:9px;padding:0 4px;}
.bar-block{flex:1;text-align:center;}
.bar{height:56px;width:16px;margin:0 auto;background:rgba(0,0,0,.4);border-radius:8px;
  border:1px solid rgba(255,255,255,.15);position:relative;overflow:hidden;}
.bar-fill{position:absolute;bottom:0;left:0;right:0;height:0%;border-radius:7px;
  transition:none;}
.bar-fill.coll{background:linear-gradient(180deg,#ffe082,#ff9d3f);}
.bar-fill.skids{background:linear-gradient(180deg,#8fd0ff,#3f7dc9);}
.bar-block label{font-size:8.5px;letter-spacing:.1em;color:var(--ink-dim);display:block;margin-top:3px;}
.readouts{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px;margin-top:10px;}
.ro{display:flex;align-items:baseline;gap:5px;font-variant-numeric:tabular-nums;}
.ro label{font-size:8.5px;color:var(--ink-dim);letter-spacing:.08em;width:26px;}
.ro span{font-size:14px;font-weight:700;min-width:34px;text-align:right;}
.ro em{font-size:8.5px;color:var(--ink-dim);font-style:normal;}
.eng-state{margin-top:9px;text-align:center;font-size:10.5px;letter-spacing:.06em;
  padding:5px 6px;border-radius:8px;background:rgba(255,213,74,.12);color:var(--accent);
  border:1px solid rgba(255,213,74,.25);}
.eng-state.running{background:rgba(123,227,130,.12);color:var(--green);border-color:rgba(123,227,130,.3);}

/* ---------- instructor ---------- */
#panel-right{top:12px;right:12px;width:236px;padding:10px 12px;}
.inst-head{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--accent);margin-bottom:6px;}
.inst-name{color:var(--ink-dim);font-weight:600;}
#inst-line{font-size:12.5px;line-height:1.45;min-height:36px;color:#fff;
  border-left:3px solid var(--accent);padding-left:8px;margin-bottom:8px;}
#checklist{list-style:none;font-size:11px;color:var(--ink-dim);}
#checklist li{padding:3px 0 3px 20px;position:relative;transition:color .3s;}
#checklist li::before{content:"○";position:absolute;left:4px;color:rgba(255,255,255,.35);}
#checklist li.done{color:var(--green);}
#checklist li.done::before{content:"✔";color:var(--green);}
#checklist li.active{color:#fff;font-weight:600;}
#checklist li.active::before{content:"▸";color:var(--accent);}
kbd{display:inline-block;min-width:15px;padding:0 4px;margin:0 1px;border-radius:4px;
  background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);
  border-bottom-width:2px;font-size:9.5px;font-family:inherit;text-align:center;color:#fff;}

/* ---------- help ---------- */
#panel-help{left:12px;bottom:12px;width:315px;padding:8px 12px 10px;font-size:10.5px;}
.help-head{font-size:10px;font-weight:800;letter-spacing:.14em;color:var(--ink-dim);margin-bottom:6px;
  display:flex;justify-content:space-between;align-items:center;}
.help-head button{pointer-events:auto;background:none;border:none;color:var(--ink-dim);
  font-size:14px;cursor:pointer;padding:0 2px;}
.help-head button:hover{color:#fff;}
.help-cols{display:flex;gap:14px;}
.help-cols>div{flex:1;}
.help-cols>div>div{display:flex;align-items:center;gap:2px;margin:3px 0;color:var(--ink-dim);}
.help-cols span{margin-left:5px;}
.mouse-ico{font-size:11px;}

/* ---------- on-screen controls ---------- */
#controls-ui{position:absolute;right:12px;bottom:12px;display:flex;gap:10px;align-items:flex-end;
  pointer-events:none;}
.ctl-group{display:flex;gap:6px;pointer-events:auto;}
#ctl-cyclic{display:grid;grid-template-areas:". up ." "lt . rt" ". dn .";gap:4px;position:relative;
  padding-bottom:14px;}
.pad-label{position:absolute;bottom:-1px;left:0;right:0;text-align:center;font-size:8px;
  letter-spacing:.14em;color:var(--ink-dim);}
.ctl{pointer-events:auto;width:46px;height:40px;border-radius:10px;border:1px solid var(--panel-edge);
  background:rgba(12,26,20,.62);color:var(--ink);cursor:pointer;display:flex;flex-direction:column;
  align-items:center;justify-content:center;backdrop-filter:blur(6px);font-family:inherit;
  transition:background .12s, transform .06s;}
.ctl span{font-size:12px;font-weight:800;line-height:1;}
.ctl label{font-size:6.5px;letter-spacing:.06em;color:var(--ink-dim);line-height:1.1;text-align:center;}
.ctl.tall{height:64px;width:52px;}
.ctl.wide{width:56px;}
.ctl.held{background:rgba(255,213,74,.4);border-color:var(--accent);transform:scale(.95);}
.ctl:active{transform:scale(.95);}
#ctl-sys{flex-wrap:wrap;width:120px;}
#ctl-sys .ctl{width:55px;}
#btn-engine.running{background:rgba(123,227,130,.3);border-color:var(--green);}

/* ---------- misc ---------- */
#hint{position:absolute;left:50%;bottom:118px;transform:translateX(-50%);padding:7px 18px;
  background:rgba(8,20,14,.72);border:1px solid var(--panel-edge);border-radius:999px;
  font-size:12.5px;opacity:0;transition:opacity .4s;white-space:nowrap;}
#hint.show{opacity:1;}
#hint b{color:var(--accent);}
#paused{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  padding:14px 34px;background:rgba(8,18,14,.8);border-radius:14px;font-size:16px;
  border:1px solid var(--panel-edge);letter-spacing:.1em;}
#corner-btns{position:absolute;top:12px;left:236px;display:flex;gap:6px;pointer-events:auto;}
#corner-btns button{width:34px;height:34px;border-radius:9px;border:1px solid var(--panel-edge);
  background:var(--panel-bg);color:var(--ink);font-size:15px;cursor:pointer;backdrop-filter:blur(6px);}
#corner-btns button:hover{background:rgba(255,255,255,.15);}

/* ---------- responsive / touch ---------- */
@media (max-width: 900px){
  #panel-left{transform:scale(.82);transform-origin:top left;}
  #panel-right{width:200px;transform:scale(.86);transform-origin:top right;}
  #panel-help{display:none;}
  #corner-btns{left:auto;right:12px;top:auto;bottom:150px;flex-direction:column;}
}
@media (max-width: 700px){
  #panel-left{transform:scale(.68);}
  #panel-right{transform:scale(.72);width:236px;}
  #controls-ui{left:8px;right:8px;bottom:8px;justify-content:space-between;}
  .ctl{width:52px;height:48px;}
  .ctl.tall{height:76px;width:60px;}
  #hint{bottom:170px;font-size:11px;}
  #topbar{transform:translateX(-50%) scale(.85);transform-origin:top center;}
}
@media (pointer:coarse){
  .ctl{width:54px;height:50px;}
  .ctl.tall{height:80px;width:62px;}
}
