/* CratePilot — one stylesheet, no framework. */

:root{
  --bg:#0a0b0d;
  --bg-2:#101216;
  --panel:#14171c;
  --panel-2:#191d23;
  --line:#242a32;
  --line-2:#2f3742;
  --text:#e8ecf1;
  --muted:#8d97a5;
  --dim:#5d6774;
  --acid:#c8ff4d;
  --cyan:#4dd8ff;
  --violet:#a98bff;
  --warn:#ffb648;
  --bad:#ff6b6b;
  --good:#4dffa3;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:"Space Grotesk",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --r:10px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);
  font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;
  background-image:
    radial-gradient(900px 500px at 15% -10%, rgba(200,255,77,.06), transparent 60%),
    radial-gradient(800px 500px at 90% 0%, rgba(77,216,255,.06), transparent 60%);
  background-repeat:no-repeat;
}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
code{font-family:var(--mono);font-size:.88em;background:#ffffff0d;padding:.12em .38em;border-radius:4px;color:var(--cyan)}
h1,h2,h3,h4{line-height:1.15;margin:0 0 .5em}
a{color:var(--cyan);text-decoration:none}
a:hover{text-decoration:underline}
.hint{color:var(--dim);font-size:.82rem;font-weight:400}

/* ── header ─────────────────────────────────────────────── */
.top{border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40;
  background:rgba(10,11,13,.82);backdrop-filter:blur(12px)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;height:62px}
.brand{display:flex;align-items:center;gap:10px;font-size:1.15rem;letter-spacing:-.02em;color:var(--acid)}
.brand span{color:var(--text);font-weight:500}
.brand b{font-weight:700;color:var(--acid)}
.mark{width:26px;height:26px;color:var(--acid)}
.top nav{display:flex;gap:22px;font-size:.9rem}
.top nav a{color:var(--muted)}
.top nav a:hover{color:var(--text);text-decoration:none}

/* ── hero ───────────────────────────────────────────────── */
.hero{padding:74px 24px 40px;max-width:1180px}
.hero h1{font-size:clamp(2.6rem,7vw,4.6rem);font-weight:700;letter-spacing:-.045em;margin:0 0 20px}
.hero h1 em{font-style:normal;color:var(--acid)}
.lede{max-width:60ch;color:var(--muted);font-size:1.06rem}
.lede b{color:var(--text);font-weight:500}

/* ── dropzone ───────────────────────────────────────────── */
.dropzone{
  border:1.5px dashed var(--line-2);border-radius:16px;background:linear-gradient(180deg,#12151a,#0d0f13);
  padding:44px 24px;text-align:center;transition:border-color .15s,background .15s,transform .15s;
  outline:none;
}
.dropzone:focus-visible{border-color:var(--acid)}
.dropzone.over{border-color:var(--acid);background:linear-gradient(180deg,#171c14,#0f120d);transform:scale(1.004)}
.dz-icon svg{width:64px;height:auto;color:var(--dim);margin-bottom:10px}
.dropzone.over .dz-icon svg{color:var(--acid)}
.dropzone h2{font-size:1.5rem;letter-spacing:-.02em;margin:0 0 6px}
.dropzone p{color:var(--muted);margin:0 0 22px;font-size:.94rem}
.dz-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.dz-progress{margin-top:26px}
.dz-progress .bar{height:6px;border-radius:99px;background:var(--line);overflow:hidden;max-width:460px;margin:0 auto}
.dz-progress .bar span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--acid),var(--cyan));transition:width .12s linear}
.dz-progress p{margin:10px 0 0;font-family:var(--mono);font-size:.8rem;color:var(--muted)}

/* ── buttons ────────────────────────────────────────────── */
.btn{
  font-family:var(--sans);font-size:.9rem;font-weight:500;color:var(--text);
  background:var(--panel-2);border:1px solid var(--line-2);border-radius:8px;
  padding:9px 16px;cursor:pointer;transition:.13s;line-height:1.3;
}
.btn:hover{border-color:#41505f;background:#20262e}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--acid);color:#0c1000;border-color:var(--acid);font-weight:700}
.btn.primary:hover{background:#d6ff6b;border-color:#d6ff6b}
.btn.ghost{background:transparent}
.btn code{background:#0003;color:inherit}
.btn .hint{color:inherit;opacity:.6}
.btn[disabled]{opacity:.4;cursor:not-allowed}

/* ── paste panel ────────────────────────────────────────── */
.paste-panel{margin-top:18px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px}
.paste-panel label{display:block;font-size:.88rem;color:var(--muted);margin-bottom:8px}
.paste-panel textarea{
  width:100%;background:#0c0e11;border:1px solid var(--line-2);border-radius:8px;color:var(--text);
  font-family:var(--mono);font-size:.85rem;padding:12px;resize:vertical;
}
.paste-panel .row{display:flex;gap:10px;margin-top:12px}

.library-note{
  margin-top:16px;padding:12px 16px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel);font-size:.9rem;color:var(--muted);font-family:var(--mono)
}
.library-note b{color:var(--acid);font-weight:700}

/* ── controls ───────────────────────────────────────────── */
.controls{
  margin-top:22px;display:grid;gap:20px 26px;padding:22px;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  background:var(--panel);border:1px solid var(--line);border-radius:12px;align-items:end;
}
.ctrl label{display:block;font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-bottom:8px}
.ctrl label .hint{text-transform:none;letter-spacing:0}
.ctrl-row{display:flex;align-items:center;gap:12px}
.ctrl output{font-family:var(--mono);font-size:.92rem;color:var(--acid);min-width:42px;text-align:right}
.ctrl select,.ex-field input{
  width:100%;background:#0c0e11;border:1px solid var(--line-2);color:var(--text);
  border-radius:8px;padding:9px 10px;font-family:var(--sans);font-size:.9rem
}
.ctrl.checks{display:flex;flex-direction:column;gap:9px;justify-content:flex-end}
.check{display:flex;align-items:center;gap:8px;font-size:.86rem;color:var(--muted);text-transform:none;letter-spacing:0;margin:0;cursor:pointer}
.check input{accent-color:var(--acid);width:15px;height:15px}
.grow-end{display:flex;gap:10px;align-items:flex-end}
input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;flex:1;height:20px;cursor:pointer}
input[type=range]::-webkit-slider-runnable-track{height:4px;background:var(--line-2);border-radius:99px}
input[type=range]::-moz-range-track{height:4px;background:var(--line-2);border-radius:99px}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:15px;height:15px;border-radius:50%;
  background:var(--acid);margin-top:-5.5px;border:none}
input[type=range]::-moz-range-thumb{width:15px;height:15px;border-radius:50%;background:var(--acid);border:none}

/* ── scorecard ──────────────────────────────────────────── */
.result{margin-top:34px}
.scorecard{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:12px;margin-bottom:22px}
.score{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:15px 17px}
.score .k{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--dim)}
.score .v{font-family:var(--mono);font-size:1.75rem;font-weight:700;letter-spacing:-.03em;margin-top:2px}
.score .s{font-size:.78rem;color:var(--muted)}
.v.good{color:var(--good)} .v.ok{color:var(--acid)} .v.warn{color:var(--warn)} .v.bad{color:var(--bad)}

/* ── panes ──────────────────────────────────────────────── */
.panes{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
@media(max-width:940px){.panes{grid-template-columns:1fr}}
.pane-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;gap:14px;flex-wrap:wrap}
.pane-head h3{margin:0;font-size:1.15rem}

/* ── tracklist ──────────────────────────────────────────── */
.tracklist{list-style:none;margin:0;padding:0;counter-reset:t}
.trk{
  display:grid;grid-template-columns:34px minmax(0,1fr) 60px 52px 74px;gap:12px;align-items:center;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:11px 14px;
  cursor:grab;transition:border-color .12s,background .12s;
}
.trk:hover{border-color:var(--line-2);background:var(--panel-2)}
.trk.dragging{opacity:.35;cursor:grabbing}
.trk.drop-target{border-color:var(--acid)}
.trk .n{font-family:var(--mono);font-size:.82rem;color:var(--dim)}
.trk .meta{min-width:0;display:block}
.trk .title,.trk .artist{display:block}
.trk .title{font-size:.95rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trk .artist{font-size:.8rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trk .bpm{font-family:var(--mono);font-size:.9rem;color:var(--muted);text-align:right}
.trk .cam{
  font-family:var(--mono);font-size:.82rem;font-weight:700;text-align:center;
  border-radius:6px;padding:3px 0;background:#ffffff10;
}
.trk .nrg{display:flex;gap:2px;align-items:flex-end;height:20px;justify-content:flex-end}
.trk .nrg i{width:5px;background:var(--line-2);border-radius:1px}
.trk .nrg i.on{background:var(--acid)}
.trk .x{background:none;border:0;color:var(--dim);cursor:pointer;font-size:1rem;line-height:1;padding:0 2px}
.trk .x:hover{color:var(--bad)}

.tran{display:flex;align-items:center;gap:9px;padding:3px 0 3px 46px;font-family:var(--mono);font-size:.72rem}
.tran .dot{width:7px;height:7px;border-radius:50%;flex:none}
.tran .lbl{color:var(--dim)}
.tran.perfect .dot{background:var(--good)} .tran.perfect .lbl{color:var(--good)}
.tran.smooth  .dot{background:var(--acid)} .tran.smooth  .lbl{color:var(--acid)}
.tran.relative .dot{background:var(--cyan)} .tran.relative .lbl{color:var(--cyan)}
.tran.jump    .dot{background:var(--violet)} .tran.jump   .lbl{color:var(--violet)}
.tran.stretch .dot{background:var(--warn)} .tran.stretch .lbl{color:var(--warn)}
.tran.clash   .dot{background:var(--bad)} .tran.clash   .lbl{color:var(--bad)}

/* ── bench ──────────────────────────────────────────────── */
.bench{margin-top:26px;border-top:1px solid var(--line);padding-top:18px}
.bench h4{margin:0 0 2px;font-size:.95rem}
.bench h4 span{color:var(--dim);font-family:var(--mono);font-weight:400;font-size:.85rem}
.bench-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:7px}
.bench-list li{
  font-size:.8rem;background:var(--panel);border:1px solid var(--line);border-radius:99px;
  padding:5px 12px;cursor:pointer;color:var(--muted);max-width:100%;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.bench-list li:hover{border-color:var(--acid);color:var(--text)}
.bench-list li b{font-family:var(--mono);color:var(--dim);font-weight:400}

/* ── side cards ─────────────────────────────────────────── */
.pane-side{display:flex;flex-direction:column;gap:16px;position:sticky;top:82px}
@media(max-width:940px){.pane-side{position:static}}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}
.card h4{margin:0 0 12px;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.chart{width:100%;height:130px;display:block}
.wheel{width:100%;height:auto;display:block}
.warnings{margin:0;padding-left:18px;font-size:.85rem;color:var(--muted)}
.warnings li{margin-bottom:6px}
.warnings b{color:var(--warn);font-weight:500}

/* ── export ─────────────────────────────────────────────── */
.export{margin-top:34px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:24px}
.export h3{margin:0 0 16px;font-size:1.1rem}
.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:12px}
@media(max-width:700px){.export-grid{grid-template-columns:1fr}}
.ex-field label{display:block;font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-bottom:7px}
.ex-field label .hint{text-transform:none;letter-spacing:0}
.prefix-help{max-width:78ch;margin:0 0 18px}
.export-buttons{display:flex;gap:10px;flex-wrap:wrap}

/* ── explainers ─────────────────────────────────────────── */
.explain{margin:80px 0 0;padding-top:40px;border-top:1px solid var(--line)}
.explain h2{font-size:1.9rem;letter-spacing:-.03em;margin-bottom:24px}
.explain.slim{margin-top:56px}
.explain.slim p{max-width:70ch;color:var(--muted)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:30px}
.cols h4{font-size:1rem;margin-bottom:8px;color:var(--acid)}
.cols p{margin:0;color:var(--muted);font-size:.93rem}

.foot{margin-top:80px;border-top:1px solid var(--line);padding:26px 0;color:var(--dim);font-size:.85rem}

/* ── toast ──────────────────────────────────────────────── */
.toast{
  position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:80;
  background:var(--panel-2);border:1px solid var(--line-2);border-radius:99px;
  padding:10px 20px;font-size:.88rem;box-shadow:0 10px 40px #0009;
}
.toast.bad{border-color:var(--bad);color:var(--bad)}
