/* genhold — the launch form. Kept in its own sheet so the base theme stays untouched. */
.f { display: block; margin-bottom: 14px; }
.f2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.lbl { display: block; font-family: var(--mono); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--fg-3); margin-bottom: 6px; }
#launchForm input,
#launchForm textarea {
  display: block; width: 100%; font-family: var(--sans); font-size: 14px; color: var(--fg);
  background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--r);
  padding: 10px 12px; outline: none; resize: none; transition: border-color .15s;
}
#launchForm input:focus, #launchForm textarea:focus { border-color: var(--pink); }
#launchForm input::placeholder, #launchForm textarea::placeholder { color: var(--fg-3); }
#lSym { font-family: var(--mono); text-transform: uppercase; letter-spacing: .06em; }
.opt { font-family: var(--sans); font-size: 10px; letter-spacing: 0; text-transform: none; color: var(--fg-3); opacity: .7; }

.drop { position: relative; display: grid; place-items: center; min-height: 112px; border: 1.5px dashed var(--line); border-radius: var(--r); background: var(--panel-2); cursor: pointer; overflow: hidden; padding: 12px; text-align: center; transition: border-color .15s; }
.drop:hover, .drop.over { border-color: var(--pink); }
.drop .ph { font-size: 12.5px; color: var(--fg-3); }
.drop img { max-width: 110px; max-height: 110px; border-radius: var(--r); display: block; }

#launchForm .btn.block { display: block; width: 100%; margin-top: 6px; }

.steps { margin-top: 12px; display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; }
.step { display: flex; gap: 8px; color: var(--fg-2); }
.step .i { color: var(--pink); flex: 0 0 auto; }
.step.ok .i { color: var(--green); }
.step.err { color: var(--red); }
.step a { color: var(--pink); }

@media (max-width: 700px) { .f2 { grid-template-columns: 1fr; } }

/* `display:block` above outranks the hidden attribute, which made the raw file input show up
   inside the drop zone — put hidden back in charge. */
#launchForm input[hidden],
#launchForm [hidden] { display: none !important; }

/* ---- owner panel: only the distributor's owner ever sees this ---- */
.owner-card { border-color: #4a2a3d; }
.owner-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 14px 0 4px; }
.ostat { display: flex; flex-direction: column; gap: 4px; padding: 12px; border: 1px solid var(--line); border-radius: 4px; background: #0d0119; }
.ostat .k { font-family: var(--mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--fg-3); }
.ostat .v { font-size: 19px; font-weight: 700; font-family: var(--mono); }
.ostat .v.pink { color: var(--pink); }
.ostat .v.green { color: var(--green); }
.ostat .sub { font-size: 11px; color: var(--fg-3); }
.owner-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.owner-btns .btn { flex: 1 1 auto; }
#oMsg a { color: #ff86b4; }
#oMsg.ok { color: #00ff88; }
#oMsg.warn { color: #ffb44d; }
@media (max-width: 720px) { .owner-grid { grid-template-columns: 1fr; } }
