/* Latchry — a measured elevation. Graphite ground, one phosphor accent, drafting hairlines. */
:root{
  --ground:#0B0E14; --ink:#E6EDF2; --accent:#00E58F;
  --mute:#6D7A89; --faint:#3A4452; --rule:rgba(160,180,200,.14); --grid:rgba(120,150,175,.055);
  --panel:#10141C; --panel2:#141A24;
  --rh:32px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{
  background:var(--ground); color:var(--ink);
  font:400 14px/1.55 "IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:28px 28px;
}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}

.rig{min-height:100vh;display:flex;flex-direction:column}

/* ---- corner mark, no nav bar ---- */
.crest{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 4px;max-width:1180px;width:100%;margin:0 auto}
.mark{display:flex;align-items:center;gap:9px;padding:6px 10px 6px 6px;border:1px solid var(--rule);border-radius:2px;background:rgba(11,14,20,.7)}
.mark .glyph{display:grid;gap:3px;width:15px}
.mark .glyph i{display:block;height:2px;background:var(--faint);border-radius:1px}
.mark .glyph i:nth-child(2){background:var(--accent);box-shadow:0 0 7px rgba(0,229,143,.75)}
.mark .word{font-family:Sora,system-ui,sans-serif;font-weight:800;font-size:13px;letter-spacing:.16em;text-transform:uppercase}
.key{padding:6px 12px;border:1px solid var(--rule);border-radius:2px;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.key[data-on]{color:var(--accent);border-color:rgba(0,229,143,.42)}

/* ---- the stage: one column, then two ---- */
.stage{width:100%;max-width:560px;margin:0 auto;padding:10px 16px 40px;display:grid;gap:14px;align-items:start;flex:1}
.instrument,.column{min-width:0;display:grid;gap:12px;align-content:start}

/* ---- panels ---- */
.panel{border:1px solid var(--rule);background:var(--panel);border-radius:3px;padding:12px 13px}
.cap{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute);margin-bottom:9px}
.cap b{font-weight:500;color:var(--faint);letter-spacing:.14em}
.hush{color:var(--mute);font-size:12.5px;line-height:1.6}

/* ---- the title block ---- */
.block{border:1px solid var(--rule);background:var(--panel);border-radius:3px;display:grid;grid-template-columns:repeat(3,1fr)}
.block .cell{padding:9px 11px;border-right:1px solid var(--rule)}
.block .cell:last-child{border-right:0}
.block .lbl{font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint)}
.block .val{font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:19px;letter-spacing:-.01em;margin-top:2px;line-height:1.1}
.block .val.on{color:var(--accent)}
.block .val.dim{color:var(--mute)}

/* ---- the ladder ---- */
.ladder{position:relative;border:1px solid var(--rule);background:var(--panel);border-radius:3px;padding:12px 10px 12px 40px;touch-action:pan-y}
.gutter{position:absolute;left:0;top:12px;bottom:12px;width:40px;pointer-events:none}
.gutter .dim{position:absolute;left:19px;top:6px;bottom:6px;width:1px;background:var(--faint)}
.gutter .tick{position:absolute;left:13px;width:13px;height:1px;background:var(--faint)}
.gutter .tick.hi{top:6px} .gutter .tick.lo{bottom:6px}
.gutter .note{position:absolute;left:1px;top:50%;transform:translateY(-50%);writing-mode:vertical-rl;text-orientation:mixed;font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);max-height:100%;overflow:hidden}
.carriage{position:absolute;left:26px;width:16px;height:22px;margin-top:-11px;border:1px solid var(--accent);border-radius:2px;
  background:rgba(0,229,143,.16);box-shadow:0 0 12px rgba(0,229,143,.4);cursor:grab;touch-action:none;transition:top .16s ease;z-index:3}
.carriage:active{cursor:grabbing}
.carriage::after{content:"";position:absolute;left:3px;right:3px;top:9px;height:2px;background:var(--accent);border-radius:1px}
.carriage[data-drag]{transition:none;box-shadow:0 0 18px rgba(0,229,143,.7)}

.rungs{position:relative;display:grid}
.rungs::before,.rungs::after{content:"";position:absolute;top:-4px;bottom:-4px;width:1px;background:var(--rule)}
.rungs::before{left:2px} .rungs::after{right:2px}
.rung{position:relative;display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:8px;height:var(--rh);padding:0 8px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.rung .n{font-family:Sora,system-ui,sans-serif;font-weight:600;font-size:12px;color:var(--faint);text-align:right;letter-spacing:.01em}
.rung .bar{position:relative;height:3px;background:var(--faint);border-radius:2px;opacity:.5}
.rung .bar i{position:absolute;inset:0;width:0%;background:var(--accent);border-radius:2px;transition:width .9s linear}
.rung .tag{display:flex;align-items:center;gap:6px;font-size:10.5px;letter-spacing:.06em;color:var(--mute);white-space:nowrap}
.rung .pip{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--faint)}
.rung .pip+.pip{margin-left:-2px}

.rung[data-s="lit"] .n{color:var(--accent)}
.rung[data-s="lit"] .bar{opacity:1;background:rgba(0,229,143,.18)}
.rung[data-s="lit"] .tag{color:var(--accent)}
.rung[data-s="lit"] .pip{background:var(--accent);box-shadow:0 0 6px rgba(0,229,143,.9)}
.rung[data-s="dark"]::after{content:"";position:absolute;left:30px;right:8px;top:50%;height:1px;background:var(--mute);opacity:.55;transform:rotate(-1.6deg)}
.rung[data-s="dark"] .n,.rung[data-s="dark"] .tag{color:var(--mute)}
.rung[data-s="dark"] .pip{background:var(--mute)}
.rung[data-me]{background:rgba(0,229,143,.05)}
.rung[data-pick]{background:rgba(0,229,143,.1);outline:1px solid rgba(0,229,143,.45);outline-offset:-1px;border-radius:2px}
.rung:hover .n{color:var(--ink)}

/* ---- the dock: the one action ---- */
.dock{position:sticky;bottom:0;z-index:4;border:1px solid var(--rule);border-radius:3px;background:rgba(16,20,28,.97);
  backdrop-filter:blur(8px);padding:10px 12px;display:grid;gap:9px}
.dock .read{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:11px;letter-spacing:.06em;color:var(--mute)}
.dock .read b{font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:15px;color:var(--ink);letter-spacing:0}
.dock .read b.on{color:var(--accent)}
.pull{width:100%;padding:13px 14px;border:1px solid var(--accent);border-radius:2px;background:rgba(0,229,143,.12);
  font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:14px;letter-spacing:.09em;text-transform:uppercase;color:var(--accent)}
.pull:disabled{border-color:var(--rule);background:transparent;color:var(--faint);cursor:not-allowed}
.pull.plain{border-color:var(--rule);background:transparent;color:var(--ink)}

/* ---- rows ---- */
.rows{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:2px;overflow:hidden}
.row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;background:var(--panel2);padding:8px 10px;font-size:12px}
.row .lead{font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:13px;min-width:34px}
.row .lead.on{color:var(--accent)}
.row .sub{color:var(--mute);font-size:11px;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis}
.row .fig{font-family:Sora,system-ui,sans-serif;font-weight:600;font-size:13px;white-space:nowrap}
.row a{text-decoration:none}
.row a:hover{color:var(--accent)}
.row[data-me]{background:rgba(0,229,143,.07)}

.strip{display:flex;gap:2px;align-items:flex-end;height:20px}
.strip i{flex:1;background:var(--faint);opacity:.45;border-radius:1px;min-height:3px}
.strip i[data-lit]{background:var(--accent);opacity:1}

.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12px}
.kv dt{color:var(--mute);letter-spacing:.06em}
.kv dd{margin:0;text-align:right;font-family:Sora,system-ui,sans-serif;font-weight:600}
.kv dd.on{color:var(--accent)}

.prose p{margin:0 0 11px;font-size:13px;line-height:1.68;color:#C3CED9}
.prose h3{font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:14px;letter-spacing:.02em;margin:18px 0 7px;color:var(--ink)}
.prose h3:first-child{margin-top:0}
.prose strong{color:var(--accent);font-weight:600}

.lede{font-family:Sora,system-ui,sans-serif;font-weight:800;font-size:23px;line-height:1.2;letter-spacing:-.018em;margin:0 0 8px}
.lede em{font-style:normal;color:var(--accent)}
.sub{color:var(--mute);font-size:13px;line-height:1.6;margin:0}

/* ---- sheet ---- */
.scrim{position:fixed;inset:0;background:rgba(4,6,10,.72);z-index:20}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:21;background:var(--panel);border-top:1px solid var(--rule);
  border-radius:4px 4px 0 0;padding:16px;display:grid;gap:14px;max-height:80vh;overflow:auto}
.shut{justify-self:end;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);border:1px solid var(--rule);border-radius:2px;padding:5px 10px}
.ways{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:2px;overflow:hidden}
.ways a{background:var(--panel2);padding:12px 13px;text-decoration:none;font-family:Sora,system-ui,sans-serif;font-weight:600;font-size:14px}
.ways a[data-on]{color:var(--accent);background:rgba(0,229,143,.07)}
.sheetnote{font-size:12px;color:var(--mute);line-height:1.6}
.sheetnote a{color:var(--accent)}

/* ---- say ---- */
.say{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:30;max-width:min(92vw,460px);
  border:1px solid var(--accent);background:rgba(11,14,20,.97);border-radius:2px;padding:10px 14px;font-size:12px;text-align:center}
.say[data-bad]{border-color:#FF6B6B;color:#FFD3D3}

/* ---- plinth ---- */
.plinth{border-top:1px solid var(--rule);padding:16px;max-width:1180px;width:100%;margin:0 auto;
  display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;font-size:11px;color:var(--mute);letter-spacing:.04em}
.plinth a{color:var(--mute);text-decoration:none;border-bottom:1px solid var(--rule)}
.plinth a:hover{color:var(--accent)}
.plinth .buy{color:var(--accent);border-color:rgba(0,229,143,.45);padding:5px 11px;border:1px solid rgba(0,229,143,.45);border-radius:2px}
.plinth .addr{font-size:10.5px;word-break:break-all;color:var(--faint)}

/* ---- wider ---- */
@media (min-width:720px){
  :root{--rh:36px}
  .stage{max-width:760px;padding:14px 22px 48px;gap:16px}
  .lede{font-size:29px}
  .block .val{font-size:23px}
  .crest,.plinth{padding-left:22px;padding-right:22px}
}
@media (min-width:1000px){
  :root{--rh:40px}
  .stage{max-width:1180px;grid-template-columns:minmax(0,1fr) 380px;gap:20px;padding:16px 28px 56px}
  .lede{font-size:34px}
  .block .val{font-size:26px}
  .ladder{padding-left:52px}
  .gutter{width:52px} .gutter .dim{left:26px} .gutter .tick{left:19px;width:15px}
  .carriage{left:32px;width:20px;height:26px;margin-top:-13px}
  .rung{grid-template-columns:34px 1fr auto;padding:0 12px}
  .rung .n{font-size:14px}
  .rung .tag{font-size:11.5px}
  .dock{position:static}
  .crest,.plinth{padding-left:28px;padding-right:28px}
  .sheet{left:auto;right:16px;bottom:16px;top:16px;width:380px;border:1px solid var(--rule);border-radius:4px;max-height:none}
}
@media (min-width:1280px){
  .stage{grid-template-columns:minmax(0,1fr) 420px}
}
