/* ============================================================
   NULLBLOOM — THE TERMINAL
   an industrial control terminal growing a flower through its cracks
   machine = monochrome. the bloom is the only saturated thing.
   ============================================================ */

:root{
  --gunmetal:#14161a;
  --steel:#2a2e35;
  --steel-deep:#1e2127;
  --steel-lite:#343943;
  --line:#3c424b;
  --bone:#cfd4c3;
  --bone-dim:#8c9182;
  --orchid:#c84fd4;
  --orchid-dim:#8f3a99;
  --hazard-y:#c9a227;
  --sb-h:46px;
  --pb-h:54px;
  --mono:'IBM Plex Mono', ui-monospace, 'Courier New', monospace;
  --display:'Archivo Black', 'Arial Black', sans-serif;
  --door-ease:steps(9, end);
}

*{margin:0;padding:0;box-sizing:border-box}

html{height:100%}
body{
  min-height:100vh;
  min-height:100dvh;
  background:
    radial-gradient(120% 90% at 50% 0%, rgba(255,255,255,.025), transparent 60%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.012) 0 2px, transparent 2px 7px),
    var(--gunmetal);
  color:var(--bone);
  font-family:var(--mono);
  font-size:15px;
  line-height:1.55;
  overflow-x:hidden;
  padding-top:var(--sb-h);
  padding-bottom:var(--pb-h);
}

::selection{background:var(--orchid);color:var(--gunmetal)}

a{color:var(--orchid)}
button{font-family:var(--mono);color:inherit;background:none;border:none;cursor:pointer}

/* ============ BOOT ============ */
#boot{
  position:fixed;inset:0;z-index:100;
  background:var(--gunmetal);
  display:flex;flex-direction:column;justify-content:flex-start;
  padding:clamp(20px,6vh,64px) clamp(16px,6vw,72px);
  cursor:pointer;
}
#boot-log{
  font-family:var(--mono);
  font-size:clamp(12px,1.6vw,15px);
  line-height:1.9;
  color:var(--bone);
  white-space:pre-wrap;
  word-break:break-word;
}
#boot-log .b-cursor{
  display:inline-block;width:.62em;height:1.05em;
  background:var(--orchid);vertical-align:text-bottom;
  animation:blink 1s steps(1) infinite;
}
.boot-skip{
  margin-top:auto;
  color:var(--bone-dim);
  font-size:11px;letter-spacing:.25em;
}
#boot.boot-out{opacity:0;transition:opacity .3s steps(4,end);pointer-events:none}

@keyframes blink{50%{opacity:0}}

/* ============ STATUS BAR ============ */
#statusbar{
  position:fixed;top:0;left:0;right:0;z-index:70;
  height:var(--sb-h);
  display:flex;align-items:center;gap:18px;
  padding:0 12px;
  background:linear-gradient(180deg, var(--steel-lite), var(--steel) 55%, var(--steel-deep));
  border-bottom:1px solid #0c0d10;
  box-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 3px 10px rgba(0,0,0,.5);
  font-size:11px;letter-spacing:.12em;
  white-space:nowrap;
}
#statusbar b{font-weight:700;color:var(--bone)}
.sb-id{color:var(--bone-dim)}
.sb-flag{color:var(--bone-dim)}

.meter{display:inline-flex;align-items:center;gap:6px;color:var(--bone-dim)}
.meter-label{letter-spacing:.2em}
.meter-track{
  width:64px;height:8px;
  background:#101216;
  border:1px solid #0a0b0d;
  box-shadow:0 1px 0 rgba(255,255,255,.06);
  overflow:hidden;display:inline-block;
}
.meter-fill{
  display:block;height:100%;width:34%;
  background:repeating-linear-gradient(90deg, var(--bone) 0 4px, transparent 4px 6px);
  transition:width .5s steps(5,end);
}
.meter-val{min-width:3.5ch;text-align:right;font-variant-numeric:tabular-nums}

.sb-credit{
  margin-left:auto;
  color:var(--bone-dim);
  text-decoration:none;
  letter-spacing:.14em;
  overflow:hidden;text-overflow:ellipsis;
}
.sb-credit b{color:var(--orchid);font-weight:700}
.sb-credit:hover{color:var(--bone)}
.sb-credit:hover b{text-decoration:underline}

.sb-exit{
  flex:none;
  display:inline-flex;align-items:center;
  height:26px;padding:0 7px;
  font-weight:700;letter-spacing:.22em;font-size:10px;
  text-decoration:none;
  background:repeating-linear-gradient(45deg, var(--hazard-y) 0 9px, #17181c 9px 18px);
  border:1px solid #0c0d10;
  box-shadow:0 1px 0 rgba(255,255,255,.12) inset;
}
.sb-exit b{
  background:var(--gunmetal);
  color:var(--hazard-y);
  padding:2px 8px 1px;
  font-weight:700;
}
.sb-exit:hover{filter:brightness(1.18)}

/* ============ HOME ============ */
#home{
  max-width:980px;
  margin:0 auto;
  padding:clamp(28px,7vh,84px) clamp(18px,5vw,48px) 40px;
}
.home-kicker{
  color:var(--bone-dim);
  font-size:11px;letter-spacing:.3em;
  margin-bottom:1.4em;
}
.artist-name{
  font-family:var(--display);
  font-size:clamp(2.6rem, 11.5vw, 7.6rem);
  line-height:1;
  letter-spacing:-.015em;
  color:var(--bone);
  transform:scaleY(1.55);
  transform-origin:left center;
  margin:.34em 0 .40em;
  text-shadow:3px 0 0 var(--steel-deep), 6px 0 0 #0d0e11;
  user-select:none;
}
.home-status{
  font-size:13px;letter-spacing:.22em;
  border:1px solid var(--line);
  border-left:4px solid var(--bone);
  background:var(--steel-deep);
  display:inline-block;
  padding:.5em 1em;
  margin-bottom:2em;
}
.home-status b{color:var(--bone)}
.home-copy{max-width:56ch;color:var(--bone-dim)}
.home-copy p+p{margin-top:1em}
.linkish{
  color:var(--orchid);
  text-decoration:underline dotted;
  text-underline-offset:3px;
  font-size:inherit;font-family:inherit;
  padding:0;
}
.linkish:hover{text-decoration-style:solid}

/* the monitoring feed: the one saturated thing the shell will admit to */
.tray-feed{
  margin:2.2em 0 0;
  max-width:280px;
  border:1px solid var(--line);
  background:var(--steel-deep);
  padding:10px 10px 8px;
  box-shadow:0 8px 22px rgba(0,0,0,.5);
}
.tray-feed img{ width:100%; display:block; border:1px solid #0d0e11; }
.tray-feed figcaption{
  padding-top:8px;
  font-size:10px; letter-spacing:.2em;
  color:var(--bone-dim);
}

.hazard-row{
  display:flex;flex-wrap:wrap;gap:14px;
  margin:2.6em 0 1.6em;
}
.hz-btn{
  position:relative;
  min-width:150px;
  padding:14px 18px 12px;
  text-align:left;
  background:linear-gradient(170deg, var(--steel-lite), var(--steel) 60%, var(--steel-deep));
  border:1px solid var(--line);
  box-shadow:0 1px 0 rgba(255,255,255,.07) inset, 0 4px 10px rgba(0,0,0,.45);
  color:var(--bone);
}
.hz-btn::before{
  content:"";
  position:absolute;top:0;left:0;right:0;height:5px;
  background:repeating-linear-gradient(45deg, var(--hazard-y) 0 8px, var(--gunmetal) 8px 16px);
  opacity:.85;
}
.hz-btn b{
  display:block;
  font-size:17px;font-weight:700;letter-spacing:.24em;
}
.hz-btn span{
  display:block;margin-top:4px;
  font-size:10px;letter-spacing:.3em;color:var(--bone-dim);
}
.hz-btn:hover, .hz-btn:focus-visible{
  border-color:var(--bone);
  transform:translateY(1px);
  box-shadow:0 1px 0 rgba(255,255,255,.07) inset, 0 2px 5px rgba(0,0,0,.5);
}
.hz-btn:focus-visible{outline:2px solid var(--orchid);outline-offset:2px}

.home-hint{color:var(--bone-dim);font-size:12px;letter-spacing:.18em}
.home-hint b{color:var(--orchid)}

/* ============ PANELS (blast doors) ============ */
.panel{
  position:fixed;
  top:var(--sb-h);bottom:var(--pb-h);left:0;right:0;
  z-index:40;
  transform:translateY(104%);
  visibility:hidden;
  transition:transform .5s var(--door-ease), visibility 0s linear .5s;
  padding:clamp(6px,1.5vw,16px);
  background:var(--gunmetal);
}
.panel.open{
  transform:translateY(0);
  visibility:visible;
  transition:transform .5s var(--door-ease), visibility 0s;
}

.panel-plate{
  position:relative;
  height:100%;
  display:flex;flex-direction:column;
  background:
    linear-gradient(165deg, rgba(46,51,59,.72), rgba(42,46,53,.6) 45%, rgba(35,39,48,.74)),
    url("img/steel-plate-texture.webp") center / cover; /* brushed gunmetal under the tone */
  border:1px solid #454c56;
  outline:4px solid var(--steel-deep);
  outline-offset:-8px;
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset, 0 -14px 40px rgba(0,0,0,.55);
}

.rivet{
  position:absolute;z-index:3;
  width:11px;height:11px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #4d545f, #22262c 72%);
  box-shadow:inset 0 -1px 2px #000, 0 0 0 1.5px #101215;
}
.r-tl{top:14px;left:14px}
.r-tr{top:14px;right:14px}
.r-bl{bottom:14px;left:14px}
.r-br{bottom:14px;right:14px}

.panel-head{
  display:flex;align-items:center;gap:16px;
  padding:16px 34px 12px;
}
.stencil{
  font-weight:700;font-size:clamp(12px,1.6vw,15px);
  letter-spacing:.26em;
  color:var(--bone);
  border:1px solid #0c0d10;
  /* riveted nameplate behind the stencil text */
  background:url("img/stencil-plate.webp") center / 100% 100% no-repeat;
  padding:.55em 1em;
  box-shadow:2px 2px 0 rgba(0,0,0,.35);
  text-shadow:0 1px 2px rgba(0,0,0,.7);
}
.panel-sub{
  color:var(--bone-dim);
  font-size:11px;letter-spacing:.24em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.seal-btn{
  margin-left:auto;
  font-size:11px;font-weight:700;letter-spacing:.22em;
  color:var(--bone);
  border:1px solid var(--line);
  background:var(--steel-deep);
  padding:.55em 1em;
}
.seal-btn:hover{border-color:var(--bone)}
.seal-btn:focus-visible{outline:2px solid var(--orchid);outline-offset:2px}

.hazard-strip{
  height:9px;
  margin:0 34px;
  background:repeating-linear-gradient(45deg, var(--hazard-y) 0 11px, var(--gunmetal) 11px 22px);
  border-top:1px solid #0d0e11;
  border-bottom:1px solid #0d0e11;
  opacity:.82;
}

.panel-body{
  flex:1;
  overflow-y:auto;
  padding:22px 34px 30px;
  scrollbar-color:var(--line) var(--steel-deep);
}
.panel-lede{
  color:var(--bone-dim);
  font-size:12px;letter-spacing:.14em;
  max-width:74ch;
  margin-bottom:1.8em;
}
.panel-foot{
  margin-top:2.2em;
  color:var(--bone-dim);
  font-size:11px;letter-spacing:.18em;
  border-top:1px dashed var(--line);
  padding-top:1.2em;
}

/* ============ PANEL 01 // PATCH BAY ============ */
#patchbay{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1.6fr) minmax(200px,1fr);
  gap:26px;
  padding:22px;
  background:var(--steel-deep);
  border:1px solid var(--line);
  box-shadow:inset 0 2px 12px rgba(0,0,0,.5);
}
#cable-svg{
  position:absolute;inset:0;
  width:100%;height:100%;
  pointer-events:none;
  z-index:4;
  opacity:0;
}
#cable-svg.live{opacity:1}
#cable-path{
  stroke:var(--orchid);
  stroke-width:5;
  stroke-linecap:round;
  filter:drop-shadow(0 3px 3px rgba(0,0,0,.6));
}
#plug-a,#plug-b{fill:var(--orchid);stroke:#0d0e11;stroke-width:2}

.jack-col{display:flex;flex-direction:column;gap:8px;min-width:0}
.jack-row{
  display:flex;align-items:center;gap:16px;
  min-width:0;
  text-align:left;
  padding:9px 12px;
  background:linear-gradient(180deg, var(--steel), var(--steel-deep));
  border:1px solid var(--line);
}
.jack-row:hover, .jack-row:focus-visible, .jack-row.live{
  border-color:var(--bone);
}
.jack-row:focus-visible{outline:2px solid var(--orchid);outline-offset:1px}

.jack-hole{
  flex:none;
  width:28px;height:28px;border-radius:50%;
  background:
    radial-gradient(circle, #08090b 0 33%, #22262c 34% 52%, #434a55 53% 66%, #23262b 67% 82%, #383e48 83%);
  box-shadow:0 0 0 2px #101215, 0 1px 0 rgba(255,255,255,.08);
}
.jack-hole--out{
  width:40px;height:40px;
  box-shadow:0 0 0 3px #101215, 0 0 0 5px #3c424b, 0 1px 0 rgba(255,255,255,.08);
}
.jack-label{min-width:0;flex:1 1 auto}
.jack-label strong{
  display:block;
  font-size:13px;font-weight:600;letter-spacing:.14em;
  color:var(--bone);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.jack-label em{
  display:block;font-style:normal;
  font-size:10px;letter-spacing:.22em;color:var(--bone-dim);
}
.jack-led{
  margin-left:auto;flex:none;
  width:8px;height:8px;border-radius:50%;
  background:#0e1013;
  box-shadow:0 0 0 1px #0a0b0d;
}
.jack-row.live .jack-led{
  background:var(--bone);
  box-shadow:0 0 6px rgba(207,212,195,.7);
}

.out-col{display:flex;align-items:center;justify-content:center;min-width:0}
#out-jack{
  display:flex;flex-direction:column;align-items:center;gap:14px;
  padding:26px 20px;
  border:1px dashed var(--line);
  text-align:center;
}
.out-label strong{
  display:block;font-size:14px;font-weight:700;letter-spacing:.3em;color:var(--bone);
}
.out-label em{
  display:block;margin-top:5px;font-style:normal;
  font-size:10px;letter-spacing:.2em;color:var(--bone-dim);
}

/* ============ PANEL 02 // MANIFEST ============ */
.manifest{
  width:100%;
  border-collapse:collapse;
  font-size:13px;
}
.manifest th{
  text-align:left;
  font-size:11px;font-weight:700;letter-spacing:.3em;
  color:var(--bone-dim);
  padding:0 14px 10px;
  border-bottom:3px double var(--line);
}
.manifest td{
  padding:16px 14px;
  border-bottom:1px solid var(--line);
  vertical-align:top;
  letter-spacing:.06em;
}
.manifest td[data-k="DATE"]{white-space:nowrap;font-weight:600;font-variant-numeric:tabular-nums}
.manifest td[data-k="SITE"]{font-weight:700;letter-spacing:.14em;white-space:nowrap}
.manifest td[data-k="CARGO"]{color:var(--bone-dim);font-size:12px}
.manifest tbody tr:hover{background:rgba(255,255,255,.025)}

.stamp{
  display:inline-block;
  font-size:11px;font-weight:700;letter-spacing:.24em;
  padding:.3em .7em;
  transform:rotate(-3deg);
}
.stamp--confirmed{
  color:var(--bone);
  border:2px solid var(--bone);
  box-shadow:0 0 0 1px var(--steel-deep), 2px 2px 0 rgba(0,0,0,.35);
}
.stamp--loading{
  color:var(--bone-dim);
  border:2px dashed var(--bone-dim);
}

/* ============ PANEL 03 // VISUALS ============ */
.clamp-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
  gap:34px 26px;
  padding-top:16px;
  align-items:start;
}
.clamp{
  min-width:0; /* grid item must shrink below the nowrap exif line so it ellipsizes instead of widening the track */
  position:relative;
  background:linear-gradient(175deg, var(--steel-lite), var(--steel) 55%, var(--steel-deep));
  border:1px solid #454c56;
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset, 0 8px 22px rgba(0,0,0,.5);
  padding:16px 16px 12px;
}
.clip{
  position:absolute;
  top:-19px;left:50%;
  width:54px;height:36px;
  transform:translateX(-50%) rotate(-2deg);
  filter:drop-shadow(0 3px 3px rgba(0,0,0,.5));
  z-index:2;
}
.clamp:nth-child(even) .clip{transform:translateX(-50%) rotate(2.5deg)}
.clamp img{
  display:block;
  width:100%;height:auto;
  border:1px solid #0d0e11;
  filter:grayscale(.88) contrast(1.06);
  transition:filter .25s steps(5,end);
}
.clamp:hover img, .clamp:focus-within img{filter:grayscale(0) contrast(1)}
.clamp--specimen img{filter:none}
.clamp figcaption{padding-top:10px}
.exif{
  display:block;
  font-size:10px;letter-spacing:.16em;
  color:var(--bone-dim);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.credit{
  display:block;margin-top:4px;
  font-size:11px;font-weight:600;letter-spacing:.1em;
  color:var(--bone);
}
.clamp--specimen .exif{color:var(--orchid)}

/* ============ PANEL 04 // TRANSMISSION ============ */
.tx-grid{
  display:grid;
  grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr);
  gap:30px;
  align-items:start;
}
.tx-field-label{
  display:block;
  font-size:10px;font-weight:700;letter-spacing:.3em;
  color:var(--bone-dim);
  margin:1.6em 0 .6em;
}
.tx-form .tx-field-label:first-child{margin-top:0}

.chip-row{display:flex;flex-wrap:wrap;gap:10px}
.chip{
  font-size:12px;font-weight:700;letter-spacing:.2em;
  color:var(--bone-dim);
  border:1px solid var(--line);
  background:var(--steel-deep);
  padding:.6em 1.1em;
}
.chip:hover{border-color:var(--bone);color:var(--bone)}
.chip[aria-pressed="true"]{
  color:var(--gunmetal);
  background:var(--bone);
  border-color:var(--bone);
  box-shadow:2px 2px 0 rgba(0,0,0,.4);
}
.chip:focus-visible{outline:2px solid var(--orchid);outline-offset:2px}

#tx-callsign, #tx-payload{
  width:100%;
  font-family:var(--mono);
  font-size:14px;
  color:var(--bone);
  background:var(--gunmetal);
  border:1px solid var(--line);
  padding:.7em .9em;
  caret-color:var(--orchid);
}
#tx-callsign:focus, #tx-payload:focus{outline:none;border-color:var(--bone)}
#tx-payload{resize:vertical;min-height:120px}
::placeholder{color:#5d6255;opacity:1}

.tx-readback{
  border:1px solid var(--line);
  background:var(--steel-deep);
  padding:18px 18px 22px;
}
.tx-readback .tx-field-label{margin-top:0}
.rb-line{
  font-size:12px;letter-spacing:.1em;
  color:var(--bone);
  padding:.45em 0;
  border-bottom:1px dotted #33383f;
  word-break:break-word;
}
.rb-dim{color:var(--bone-dim);border-bottom:none}
#rb-size{font-variant-numeric:tabular-nums}
.tx-send{
  display:block;
  margin-top:18px;
  text-align:center;
  font-size:14px;font-weight:700;letter-spacing:.3em;
  color:var(--orchid);
  text-decoration:none;
  border:2px solid var(--orchid);
  padding:.8em 1em;
  box-shadow:3px 3px 0 rgba(0,0,0,.4);
}
.tx-send:hover{background:var(--orchid);color:var(--gunmetal)}
.tx-send:focus-visible{outline:2px solid var(--bone);outline-offset:2px}

/* ============ THE VINE ============ */
#vine{
  position:fixed;inset:0;
  width:100%;height:100%;
  z-index:35; /* under the blast doors — the vine grows on the shell, panels close in front of it */
  pointer-events:none;
}
#vine-path{
  stroke:var(--orchid);
  stroke-width:2.5;
  stroke-linecap:round;
  stroke-dasharray:100;
  stroke-dashoffset:100;
  transition:stroke-dashoffset 1.6s steps(24,end);
  filter:drop-shadow(0 0 4px rgba(200,79,212,.35));
}
#vine .leaf{fill:var(--orchid);opacity:0;transition:opacity .9s steps(6,end) .8s}
#vine .leaf circle{fill:var(--orchid-dim)}
#vine.stage-1 .leaf-1{opacity:.9}
#vine.stage-2 .leaf-2{opacity:.9}
#vine.stage-3 .leaf-3{opacity:.9}
#vine.stage-4 .leaf-4{opacity:.9}
#vine-flower{
  fill:var(--orchid);
  opacity:0;
  transform:scale(.1);
  transform-box:fill-box;
  transform-origin:center;
  transition:opacity .7s steps(5,end) 1.2s, transform 1.1s steps(10,end) 1.2s;
}
#vine .flower-core{fill:var(--bone)}
#vine.stage-4 #vine-flower{opacity:1;transform:scale(1)}

/* ============ BLOOM OVERLAY ============ */
#bloom-overlay{
  position:fixed;inset:0;z-index:90;
  background:rgba(20,22,26,.9);
  cursor:pointer;
}
#bloom-overlay svg{position:absolute;inset:0;width:100%;height:100%}
#bloom-overlay .stem{
  stroke:var(--orchid);
  stroke-width:5;
  stroke-linecap:round;
  stroke-dasharray:100;
  stroke-dashoffset:100;
  filter:drop-shadow(0 0 8px rgba(200,79,212,.4));
}
#bloom-overlay .blossom{
  fill:var(--orchid);
  opacity:0;
  transform:scale(.05);
  transform-box:fill-box;
  transform-origin:center;
  filter:drop-shadow(0 0 14px rgba(200,79,212,.5));
}
#bloom-overlay .flower-core{fill:var(--bone)}
#bloom-overlay.active .stem-1{transition:stroke-dashoffset 1.5s steps(20,end);stroke-dashoffset:0}
#bloom-overlay.active .stem-2{transition:stroke-dashoffset 1.7s steps(22,end) .25s;stroke-dashoffset:0}
#bloom-overlay.active .stem-3{transition:stroke-dashoffset 1.4s steps(18,end) .5s;stroke-dashoffset:0}
#bloom-overlay.active .blossom-1{transition:opacity .5s steps(4,end) 1.4s, transform 1s steps(9,end) 1.4s;opacity:1;transform:scale(1)}
#bloom-overlay.active .blossom-2{transition:opacity .5s steps(4,end) 1.8s, transform 1s steps(9,end) 1.8s;opacity:1;transform:scale(1)}
#bloom-overlay.active .blossom-3{transition:opacity .5s steps(4,end) 1.75s, transform 1s steps(9,end) 1.75s;opacity:1;transform:scale(1)}
.bloom-caption{
  position:absolute;
  top:clamp(16px,7vh,70px);left:50%;transform:translateX(-50%);
  width:max-content;max-width:90vw;
  text-align:center;
  font-size:12px;letter-spacing:.26em;
  color:var(--bone);
  background:rgba(20,22,26,.75);
  padding:.6em 1em;
}
.bloom-caption span{display:block;margin-top:.5em;font-size:10px;color:var(--bone-dim)}

/* ============ STDOUT ============ */
#stdout{
  position:fixed;
  left:12px;right:12px;bottom:calc(var(--pb-h) + 8px);
  z-index:65;
  pointer-events:none;
  font-size:12px;
  line-height:1.7;
}
#stdout .out-line{
  display:block;
  width:fit-content;
  max-width:min(72ch, 100%);
  background:rgba(20,22,26,.92);
  border-left:3px solid var(--line);
  padding:.15em .8em .15em .6em;
  color:var(--bone-dim);
  white-space:pre-wrap;
  word-break:break-word;
}
#stdout .out-line.out-echo{color:var(--bone);border-left-color:var(--bone)}
#stdout .out-line.out-accent{color:var(--orchid);border-left-color:var(--orchid)}

/* ============ PROMPT BAR ============ */
#promptbar{
  position:fixed;left:0;right:0;bottom:0;z-index:72;
  height:var(--pb-h);
  background:linear-gradient(180deg, var(--steel-lite), var(--steel) 50%, var(--steel-deep));
  border-top:1px solid #0c0d10;
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset, 0 -4px 14px rgba(0,0,0,.5);
  padding:0 16px;
}
#prompt-form{
  height:100%;
  display:flex;align-items:center;gap:12px;
  max-width:1100px;margin:0 auto;
}
#prompt-label{
  flex:none;
  font-size:14px;font-weight:600;
  color:var(--bone);
  letter-spacing:.02em;
  cursor:text;
}
.prompt-wrap{
  position:relative;
  flex:1;min-width:0;
  display:flex;align-items:center;
}
#prompt-input{
  width:100%;
  font-family:var(--mono);
  font-size:16px;
  color:var(--bone);
  background:transparent;
  border:none;
  caret-color:var(--orchid);
  padding:.4em 0 .4em .9em;
}
#prompt-input:focus{outline:none}
.fake-cursor{
  position:absolute;left:0;top:50%;
  width:.62em;height:1.15em;
  transform:translateY(-50%);
  background:var(--orchid);
  animation:blink 1.1s steps(1) infinite;
  pointer-events:none;
}
.prompt-wrap:focus-within .fake-cursor,
.prompt-wrap.has-text .fake-cursor{display:none}

/* ============ RESPONSIVE ============ */
@media (max-width:940px){
  .sb-credit{font-size:10px}
  .meter-track{width:44px}
}
@media (max-width:760px){
  :root{--sb-h:42px;--pb-h:52px}
  #statusbar{gap:12px}
  .sb-rain, .meter{display:none}
  .sb-credit{letter-spacing:.08em}
  .panel-head{padding:14px 20px 10px;flex-wrap:wrap;gap:10px}
  .panel-sub{display:none}
  .hazard-strip{margin:0 20px}
  .panel-body{padding:18px 20px 26px}

  #patchbay{grid-template-columns:minmax(0,1fr);gap:18px;padding:14px}
  .out-col{justify-content:stretch}
  #out-jack{flex-direction:row;width:100%;justify-content:center;padding:16px;min-width:0}
  .out-label{min-width:0}
  .out-label strong, .out-label em{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  .tx-grid{grid-template-columns:1fr}

  .clamp-grid{grid-template-columns:1fr;gap:30px}
}
@media (max-width:680px){
  .manifest thead{display:none}
  .manifest, .manifest tbody, .manifest tr, .manifest td{display:block}
  .manifest tr{
    border:1px solid var(--line);
    margin-bottom:14px;
    padding:10px 12px;
    background:var(--steel-deep);
  }
  .manifest td{
    display:flex;justify-content:space-between;align-items:baseline;gap:16px;
    border-bottom:none;
    padding:5px 0;
    white-space:normal !important;
    text-align:right;
  }
  .manifest td::before{
    content:attr(data-k);
    flex:none;
    font-size:10px;letter-spacing:.28em;
    color:var(--bone-dim);
  }
  .manifest td[data-k="CARGO"]{text-align:right}
}
@media (max-width:520px){
  .sb-flag{display:none}
  .hazard-row{gap:10px}
  .hz-btn{flex:1 1 42%;min-width:0}
  .artist-name{transform:scaleY(1.45);letter-spacing:0}
}

/* ============ REDUCED MOTION ============ */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    transition-delay:0s !important;
  }
  .fake-cursor, #boot-log .b-cursor{animation:none}
}
