/* =======================================================================
   $ALTAIR — Front Panel page
   ======================================================================= */
.emu{padding:clamp(2rem,5vw,3.6rem) 0 4rem}
.emu__title{font-size:clamp(2rem,5vw,3.2rem);font-weight:900}
.emu__foot{margin-top:2.4rem;text-align:center;font-size:.85rem;color:var(--muted)}
.emu__foot a{color:var(--blue);font-weight:600}

.tabs{display:flex;gap:.5rem;justify-content:center;margin-bottom:1.6rem}
.tab{font-family:var(--display);font-size:.78rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);background:rgba(9,16,32,.7);
  border:1px solid var(--line);border-radius:999px;padding:.6rem 1.3rem;cursor:pointer;transition:.2s}
.tab:hover{color:var(--text);border-color:var(--line-strong)}
.tab.is-active{color:#03101f;background:linear-gradient(135deg,#7fd0ff,#2f7fe0);border-color:transparent;
  box-shadow:0 6px 24px rgba(47,127,224,.4)}

.view{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1.4rem;align-items:start}
.view.is-hidden{display:none}

/* ---------------- front panel ---------------- */
.panel{border:1px solid var(--line-strong);border-radius:18px;padding:clamp(1.1rem,2.5vw,1.8rem);
  background:linear-gradient(180deg,#0d1526,#070c17);box-shadow:0 30px 80px rgba(0,0,0,.6),var(--glow)}
.panel__brand{display:flex;align-items:baseline;gap:.6rem;font-family:var(--display);font-size:1.2rem;
  font-weight:900;letter-spacing:.16em;color:#c9d8ee;padding-bottom:1rem;margin-bottom:1.2rem;
  border-bottom:1px solid var(--line)}
.panel__brand b{background:var(--silver);-webkit-background-clip:text;background-clip:text;color:transparent}
.panel__sub{margin-left:auto;font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;color:var(--muted)}

.panel__lamps{display:flex;flex-wrap:wrap;gap:1.4rem 2rem;margin-bottom:1.6rem}
.lampset--wide{flex:1 1 100%}
.lampset__label{font-family:var(--mono);font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--muted);margin:0 0 .5rem}
.lamps{display:flex;gap:.42rem;flex-wrap:wrap}
.lamp{position:relative;width:15px;height:15px;border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#5a1416,#26090b 70%);
  border:1px solid #3a1013;transition:background .07s linear,box-shadow .07s linear}
.lamp.is-on{background:radial-gradient(circle at 34% 30%,#ffd0cc,#ff3b30 55%,#8d1109);
  box-shadow:0 0 12px rgba(255,59,48,.85),0 0 26px rgba(255,59,48,.35)}
.lamp::after{content:attr(data-label);position:absolute;top:19px;left:50%;transform:translateX(-50%);
  font-family:var(--mono);font-size:.44rem;letter-spacing:.02em;color:#5c6f8c;white-space:nowrap}
.lamps{padding-bottom:.9rem}
#statusLamps{gap:1.35rem}          /* the labels are wider than the lamps */

.panel__switches{margin-bottom:1.5rem}
.switches{display:flex;gap:.4rem;flex-wrap:wrap;padding-bottom:.4rem}
.sw{display:flex;flex-direction:column;align-items:center;gap:.3rem;background:none;border:0;
  padding:.15rem;cursor:pointer}
.sw__lever{width:15px;height:30px;border-radius:8px;position:relative;
  background:linear-gradient(180deg,#5b6674,#2b333f);border:1px solid #1b2129;
  box-shadow:inset 0 -8px 10px rgba(0,0,0,.5)}
.sw__lever::after{content:"";position:absolute;left:50%;top:3px;transform:translateX(-50%);
  width:9px;height:11px;border-radius:5px;background:linear-gradient(180deg,#eaf1fb,#93a3b8);
  transition:top .12s ease,background .12s ease}
.sw.is-on .sw__lever::after{top:16px;background:linear-gradient(180deg,#9fd8ff,#3f8fe0);
  box-shadow:0 0 10px rgba(77,184,255,.7)}
.sw__num{font-family:var(--mono);font-size:.5rem;color:#5c6f8c}
.sw.is-on .sw__num{color:var(--blue)}
.sw:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:6px}

.panel__buttons{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.2rem}
.pbtn{font-family:var(--display);font-size:.66rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:#cfe0f6;background:linear-gradient(180deg,#1d2739,#131a27);
  border:1px solid var(--line);border-radius:8px;padding:.6rem 1rem;cursor:pointer;transition:.18s}
.pbtn:hover{border-color:var(--line-strong);color:#fff;transform:translateY(-1px)}
.pbtn:active{transform:translateY(1px)}
.pbtn--go{background:linear-gradient(135deg,#7fd0ff,#2f7fe0);color:#03101f;border-color:transparent}
.pbtn--warn{color:#ffb4a8;border-color:rgba(255,120,100,.35)}

.panel__readout{margin:0;font-family:var(--mono);font-size:.76rem;letter-spacing:.06em;color:#7fe3a0;
  background:rgba(0,0,0,.45);border:1px solid var(--line);border-radius:8px;padding:.7rem .9rem;
  text-shadow:0 0 10px rgba(127,227,160,.35);overflow-wrap:anywhere}

/* ---------------- side rail ---------------- */
.side{border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:1.3rem}
.side h2{font-size:.76rem;letter-spacing:.16em;color:var(--blue);margin:0 0 .7rem}
.side h2:not(:first-child){margin-top:1.6rem}
.side__note{font-size:.8rem;color:var(--muted);margin-bottom:.8rem}
.progs{display:grid;gap:.5rem}
.prog{display:block;text-align:left;background:rgba(9,16,32,.7);border:1px solid var(--line);
  border-radius:10px;padding:.7rem .85rem;cursor:pointer;transition:.2s;color:inherit;font:inherit}
.prog:hover{border-color:var(--line-strong);transform:translateX(3px)}
.prog b{display:block;font-family:var(--display);font-size:.74rem;letter-spacing:.08em;
  text-transform:uppercase;color:#dbe8ff;margin-bottom:.2rem}
.prog span{font-size:.76rem;color:var(--muted);line-height:1.5}
.howto,.cmds{margin:0;padding-left:1.1rem;font-size:.8rem;color:var(--muted);line-height:1.7}
.cmds{list-style:none;padding-left:0}
.cmds b,.howto b{color:var(--blue);font-family:var(--mono);font-size:.76rem}
.regs{display:flex;flex-wrap:wrap;gap:.4rem}
.regs span{font-family:var(--mono);font-size:.72rem;color:#cfe0f6;background:rgba(0,0,0,.4);
  border:1px solid var(--line);border-radius:6px;padding:.3rem .5rem}
.regs b{color:var(--muted);margin-right:.35rem;font-weight:400}

/* ---------------- BASIC console ---------------- */
.crt{border:1px solid var(--line-strong);border-radius:16px;overflow:hidden;background:#020609;
  box-shadow:0 30px 80px rgba(0,0,0,.6),var(--glow);display:flex;flex-direction:column;min-height:520px}
.crt__bar{display:flex;align-items:center;gap:.4rem;padding:.65rem .9rem;background:rgba(77,184,255,.08);
  border-bottom:1px solid var(--line)}
.crt__bar span{width:9px;height:9px;border-radius:50%;background:#2a3a55}
.crt__bar span:first-child{background:#ff5f57}
.crt__bar b{margin-left:auto;font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;color:var(--muted)}
.crt__screen{flex:1;overflow-y:auto;padding:1rem 1.1rem;font-family:var(--mono);font-size:.86rem;
  line-height:1.6;color:#7fe3a0;text-shadow:0 0 10px rgba(127,227,160,.35);max-height:56vh;
  scrollbar-width:thin;scrollbar-color:rgba(127,227,160,.3) transparent}
.crt__line{white-space:pre-wrap;word-break:break-word;min-height:1.35em}
.crt__input{display:flex;align-items:center;gap:.6rem;padding:.7rem .9rem;border-top:1px solid var(--line);
  background:rgba(77,184,255,.05)}
.crt__prompt{font-family:var(--mono);font-size:.9rem;color:#7fe3a0}
.crt__input input{flex:1;min-width:0;background:transparent;border:0;outline:none;
  font-family:var(--mono);font-size:.9rem;color:#cfe0f6;caret-color:#7fe3a0}
.crt__input input::placeholder{color:#3f5570}

/* ---------------- responsive ---------------- */
@media (max-width:1000px){
  .view{grid-template-columns:1fr}
  .side{order:2}
}
@media (max-width:620px){
  .lamp{width:12px;height:12px}
  .lamp::after{font-size:.4rem;top:15px}
  .sw__lever{width:13px;height:26px}
  .switches{display:grid;grid-template-columns:repeat(8,1fr);gap:.45rem .2rem;justify-items:center}
  .panel__buttons{gap:.4rem}
  .pbtn{flex:1 1 calc(50% - .4rem);padding:.6rem .5rem;font-size:.6rem}
  .crt{min-height:440px}
}

/* ---------------- cartridges ---------------- */
.cart{display:grid;gap:.55rem}
.cart input{width:100%;background:rgba(0,0,0,.45);border:1px solid var(--line);border-radius:8px;
  padding:.6rem .75rem;color:#cfe0f6;font-family:var(--mono);font-size:.8rem;outline:none}
.cart input:focus{border-color:var(--line-strong);box-shadow:0 0 0 3px rgba(77,184,255,.12)}
.cart input::placeholder{color:#4a627f}
.cart__btns{display:flex;gap:.4rem}
.cart__btns .pbtn{flex:1;padding:.55rem .5rem;font-size:.6rem}
.cart__msg{margin:0;min-height:1.1em;font-size:.74rem;color:#7fe3a0;line-height:1.5}
.cart__msg.is-bad{color:#ffb4a8}
.shelf{display:grid;gap:.4rem;margin-top:.2rem}
.shelf__empty{margin:0;font-size:.76rem}
.cartridge{display:flex;gap:.35rem;align-items:stretch}
.cartridge__load{flex:1;min-width:0;text-align:left;background:rgba(9,16,32,.7);
  border:1px solid var(--line);border-radius:8px;padding:.55rem .7rem;cursor:pointer;
  color:inherit;font:inherit;transition:.18s}
.cartridge__load:hover{border-color:var(--line-strong);transform:translateX(2px)}
.cartridge__load b{display:block;font-family:var(--display);font-size:.7rem;letter-spacing:.06em;
  color:#dbe8ff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cartridge__load span{font-family:var(--mono);font-size:.66rem;color:var(--muted)}
.cartridge__del{width:32px;flex:0 0 auto;background:rgba(9,16,32,.7);border:1px solid var(--line);
  border-radius:8px;color:#8fa3c0;font-size:1.05rem;line-height:1;cursor:pointer;transition:.18s}
.cartridge__del:hover{border-color:rgba(255,120,100,.45);color:#ffb4a8}

/* ---------------- quick bar ---------------- */
.quickbar{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.7rem .9rem;
  border-top:1px solid var(--line);background:rgba(9,16,32,.7)}
.quick__label{font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);margin-right:.15rem}
.quick{font-family:var(--display);font-size:.62rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:#cfe0f6;background:rgba(77,184,255,.1);
  border:1px solid var(--line-strong);border-radius:999px;padding:.42rem .8rem;cursor:pointer;
  transition:.18s;white-space:nowrap}
.quick:hover{background:var(--blue);color:#03101f;transform:translateY(-1px)}
.quick--cmd{background:rgba(127,227,160,.09);border-color:rgba(127,227,160,.35);color:#9ff0bd}
.quick--cmd:hover{background:#7fe3a0;color:#03101f}
@media (max-width:620px){
  .crt__input .pbtn{padding:.6rem .7rem;font-size:.58rem}
  .quickbar{gap:.35rem;padding:.6rem .7rem}
  .quick{padding:.4rem .65rem;font-size:.58rem}
}

/* ---------------- start here ---------------- */
.start{border:1px solid var(--line-strong);border-radius:18px;background:var(--panel);
  padding:clamp(1.2rem,2.6vw,1.8rem);margin-bottom:1.6rem}
.start__steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.start__steps li{position:relative;padding-left:2.9rem}
.start__n{position:absolute;left:0;top:-2px;width:2rem;height:2rem;border-radius:50%;
  display:grid;place-items:center;font-family:var(--display);font-weight:900;font-size:.9rem;
  color:#03101f;background:linear-gradient(135deg,#7fd0ff,#2f7fe0);
  box-shadow:0 4px 16px rgba(47,127,224,.45)}
.start__steps h2{font-size:.86rem;letter-spacing:.1em;margin:0 0 .35rem;color:#dbe8ff}
.start__steps p{margin:0;font-size:.88rem;color:var(--muted);line-height:1.6}
.start__steps code{font-family:var(--mono);font-size:.82rem;color:#7fe3a0;
  background:rgba(0,0,0,.45);border-radius:5px;padding:.1rem .35rem}
.start__cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.8rem;
  margin-top:1.4rem;padding-top:1.2rem;border-top:1px solid var(--line)}
.start__hint{font-size:.8rem;color:var(--muted)}

.tab{display:flex;flex-direction:column;align-items:center;gap:.15rem;line-height:1.2}
.tab small{font-family:var(--font);font-size:.58rem;font-weight:600;letter-spacing:.08em;
  text-transform:none;opacity:.75}

.panel__intro{margin:-.4rem 0 1.3rem;font-size:.86rem;color:var(--muted);line-height:1.6;
  border-left:2px solid var(--line-strong);padding-left:.9rem}
.panel__intro b{color:#dbe8ff}

@media (max-width:900px){
  .start__steps{grid-template-columns:1fr;gap:1rem}
  .start__cta{flex-direction:column;gap:.5rem}
  .start__cta .btn{width:100%}
}
@media (max-width:1000px){
  #viewPanel .side{order:-1}      /* on a phone, the program list is the way in */
}
