/* SHIP IT — the 8-step panel (ship.js). Uses the builder's tokens from builder.css. */
#shipBtn .sdot2{width:7px;height:7px;border-radius:50%;background:#55545c;display:inline-block;margin-right:2px}
#shipBtn.on .sdot2{background:var(--sun);box-shadow:0 0 6px var(--sun)}
.drawer.shipit{width:760px;max-width:100%;display:flex;flex-direction:column}
.drawer.shipit.busy{cursor:progress}.drawer.shipit.busy .btn{pointer-events:none;opacity:.7}
.sphead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}
.sphead h3{margin:0;font:400 22px/1.15 var(--serif)}
.spsub{display:block;margin-top:3px;font-size:12px;color:var(--muted)}
.sphr{display:flex;gap:8px;flex:none}
.spbody{flex:1;min-height:0;display:flex}
.sprail{flex:none;width:188px;overflow:auto;padding:10px 8px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:2px}
.spstep{display:flex;align-items:center;gap:10px;width:100%;padding:8px 9px;border:0;border-radius:10px;background:transparent;color:var(--muted);text-align:left;cursor:pointer}
.spstep:hover{background:var(--card2)}.spstep.on{background:var(--card2);color:var(--ink);box-shadow:inset 2px 0 0 var(--sun)}
.spstep i{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:11px;font-weight:700;border:1px solid var(--line);background:var(--bg);color:var(--muted)}
.spstep.done i{background:rgba(92,208,143,.16);border-color:rgba(92,208,143,.5);color:var(--ok)}
.spstep.doing i{border-color:var(--sun);color:var(--sun)}
.spstep.blocked i{border-color:var(--bad);color:var(--bad)}
.spstep span{min-width:0;display:flex;flex-direction:column}.spstep b{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spstep small{font-size:11px;color:var(--faint)}
.spmain{flex:1;min-width:0;overflow:auto;padding:16px 18px 24px}
.spintro .k{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint)}
.spintro h4{margin:2px 0 4px;font:400 24px/1.15 var(--serif);color:var(--ink)}
.spintro p{margin:0 0 14px;font-size:13px;line-height:1.5;color:var(--muted)}
.spcard{padding:14px 15px;margin-bottom:12px;border-radius:14px;background:var(--card2);border:1px solid var(--line)}
.spct{font-weight:600;font-size:14px;margin-bottom:6px;color:var(--ink)}
.spmut{margin:0 0 10px;font-size:12.5px;line-height:1.5;color:var(--muted)}
.spsafe{padding:10px 12px;border-radius:10px;border:1px dashed var(--line)}
.spol{margin:0 0 10px;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:12.5px;line-height:1.45;color:var(--ink)}.spol li::marker{color:var(--sun);font-weight:700}
.spul{margin:0 0 10px;padding-left:16px;display:flex;flex-direction:column;gap:4px;font-size:12.5px;line-height:1.45;color:var(--ink)}
.sprowa{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin:8px 0}
.splink{font-size:12.5px;color:var(--sun);text-decoration:none;align-self:center}.splink:hover{text-decoration:underline}
.spf{display:flex;flex-direction:column;gap:4px;margin:0 0 10px;font-size:12px;color:var(--muted)}
.spf>span{font-weight:600;color:var(--ink);font-size:12px}.spf small{font-size:11.5px;color:var(--faint);line-height:1.4}
.spf input,.spf textarea,.spf select,.sprowa input{background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:8px 10px;color:var(--ink);font:13px var(--sans);width:100%;box-sizing:border-box}
.sprowa input{width:auto;flex:1;min-width:140px}.sprowa .spf{margin:0;flex:1}
.spf textarea{resize:vertical;line-height:1.45}.spf input:focus,.spf textarea:focus,.spf select:focus{outline:none;border-color:var(--sun)}
.spf input[type=file]{padding:6px;font-size:12px;margin-bottom:6px}
.spf input:disabled{opacity:.7}
.spmono{font-family:var(--mono)!important;font-size:12px!important}
.spcounted{position:relative}.spcount{position:absolute;right:8px;bottom:7px;font-style:normal;font-size:10.5px;color:var(--faint);pointer-events:none}.spcount.over{color:var(--bad);font-weight:700}
.spcounted textarea+.spcount{bottom:9px}
.spcounted input{padding-right:64px}
.drawer.shipit a.btn{text-decoration:none}
.sprow{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line)}
.spico{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:11px;font-weight:700;border:1px solid var(--line);color:var(--muted);margin-top:1px}
.sprow.done .spico{background:rgba(92,208,143,.16);border-color:rgba(92,208,143,.5);color:var(--ok)}
.sprow.doing .spico{border-color:var(--sun);color:var(--sun)}
.sprow.blocked .spico{border-color:var(--bad);color:var(--bad)}
.sprm{flex:1;min-width:0}.sprm b{display:block;font-size:13px;font-weight:600}.sprow.done .sprm b{color:var(--muted)}
.sprm p{margin:3px 0 0;font-size:12px;line-height:1.45;color:var(--muted)}.sprm .spnote{color:var(--faint)}
.spra{flex:none;display:flex;gap:6px}
.spwarn{margin:0 0 10px;padding:9px 11px;border-radius:10px;background:rgba(255,215,49,.07);border:1px solid rgba(255,215,49,.35);color:#ffe58a;font-size:12.5px;line-height:1.45}
.sperr{margin:0 0 10px;padding:9px 11px;border-radius:10px;background:rgba(255,92,92,.08);border:1px solid rgba(255,92,92,.35);color:#ffb3b3;font-size:12.5px;line-height:1.45}.sperr a{color:#ffd0d0}
.spok{margin:0 0 8px;font-size:12.5px;color:var(--ok)}.spok a{color:var(--ok)}
.spwork{display:flex;gap:10px;align-items:center;margin:0 0 8px;padding:10px 12px;border-radius:10px;background:var(--bg);border:1px solid var(--line);font-size:12.5px}
.spwork .spin{width:13px;height:13px;border-radius:50%;border:2px solid var(--sun);border-top-color:transparent;animation:fx-spin .8s linear infinite;flex:none}
.spicon{display:flex;gap:14px;align-items:flex-start}.spicon img{flex:none;width:84px;height:84px;border-radius:20px;background:var(--bg);border:1px solid var(--line);object-fit:cover}
.spshots{display:flex;gap:8px;overflow-x:auto;padding:4px 0 8px}.spshots img{height:180px;border-radius:10px;border:1px solid var(--line);display:block}
.spfg{display:block;width:100%;max-width:360px;border-radius:10px;border:1px solid var(--line);margin-bottom:8px}
.spkv{display:grid;grid-template-columns:1fr auto;gap:3px 12px;margin:6px 0 10px;font-size:12px}.spkv dt{color:var(--muted)}.spkv dd{margin:0;color:var(--ink);text-align:right}
.spdet summary{cursor:pointer;font-size:12.5px;color:var(--sun);margin-bottom:6px}
.spcopy{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:8px 0}
.spcopy span{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:9px;background:var(--bg);border:1px solid var(--line);min-width:0}
.spcopy small{font-size:10.5px;color:var(--faint);flex:none}.spcopy b{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.spcount2{display:flex;align-items:baseline;gap:10px;margin:0 0 8px}.spcount2 b{font:400 22px var(--serif);color:var(--sun)}.spcount2 span{font-size:12.5px;color:var(--muted)}
.spsecret{display:inline-flex;gap:6px;align-items:center;margin-left:6px}
.spnav{display:flex;justify-content:space-between;margin-top:6px}
@media (max-width:760px){
  .drawer.shipit{width:100vw;border-left:0}
  .spbody{flex-direction:column}
  .sprail{width:auto;flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);padding:8px}
  .spstep{width:auto;flex:none}.spstep small{display:none}
  .spcopy{grid-template-columns:1fr}
  .sphead{flex-wrap:wrap}
}
