.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

#dwrap{max-width:1120px;margin:0 auto;padding:calc(var(--tbh) + 28px) 20px 96px}

/* author display rules (.dgate flex etc.) beat the UA [hidden] — re-assert,
   same guard browse.css carries; without it the gate rendered while signed in */
[hidden]{display:none!important}

.dhead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.dh-left h1{font:800 26px var(--font-display);letter-spacing:-.01em;color:var(--c-ink)}
#dsub{display:block;margin-top:4px;font-size:12px;color:var(--c-mut)}

.dgate{max-width:380px;margin:90px auto;padding:22px;background:var(--c-surface2);border:1px solid var(--c-line);display:flex;flex-direction:column;gap:10px}
.dgate h2{font:800 16px var(--font-ui);letter-spacing:.08em}
.dgate-sub,.dgate-msg{color:var(--c-mut);font-size:12.5px}
.dgate-msg.err{color:#FF6B77}
.dgate .ag-input{background:var(--c-surface);border:1px solid var(--c-line);color:var(--c-ink);padding:9px 10px;font:500 13px var(--font-ui)}
.dgate-alt{color:var(--c-mut);font-size:12px;text-decoration:underline}
/* v1.4: gate states (form / link-sent / non-seller / signing-in) stack like the editor gate */
.dgate #dgForm,.dgate #dgSent,.dgate #dgSigned{display:flex;flex-direction:column;gap:10px}
.dgate button{background:transparent;border:1px solid var(--c-line-soft);color:var(--c-mut);padding:10px 14px;font:600 11px var(--font-ui);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;clip-path:polygon(var(--notch) 0,100% 0,100% calc(100% - var(--notch)),calc(100% - var(--notch)) 100%,0 100%,0 var(--notch))}
.dgate button:hover{border-color:var(--c-mut);color:var(--c-ink)}
.dgate button:disabled{opacity:.45;cursor:default}
.dgate .dg-alt{margin-top:2px;padding:4px 0;background:none;border:none;clip-path:none;color:var(--c-mut);font:500 12px var(--font-ui);letter-spacing:0;text-transform:none;text-decoration:underline;text-align:left}
.dgate .dg-alt:hover{color:var(--c-ink);border:none}

#dwrap button,.dacts button,#priceForm button{background:transparent;border:1px solid var(--c-line-soft);color:var(--c-mut);padding:8px 14px;font:600 11px var(--font-ui);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;clip-path:polygon(var(--notch) 0,100% 0,100% calc(100% - var(--notch)),calc(100% - var(--notch)) 100%,0 100%,0 var(--notch))}
#dwrap button:hover,.dacts button:hover,#priceForm button:hover{border-color:var(--c-mut);color:var(--c-ink);background:color-mix(in srgb,#fff 4%,transparent)}
#dwrap button:disabled,.dacts button:disabled,#priceForm button:disabled{opacity:.45;cursor:default}

#stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:22px}
.stat{background:var(--c-surface2);border:1px solid var(--c-line);padding:14px 16px;clip-path:polygon(var(--notch) 0,100% 0,100% calc(100% - var(--notch)),calc(100% - var(--notch)) 100%,0 100%,0 var(--notch))}
.sv{display:block;font:800 24px var(--font-display);color:var(--c-ink);letter-spacing:-.01em}
.sl{display:block;margin-top:3px;font:600 10px var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--c-mut)}

#tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
#tabs button[aria-selected=true]{border-color:var(--c-accent);color:var(--c-ink)}
.tc{color:var(--c-mut);font-weight:500}

.drow{display:flex;gap:14px;align-items:flex-start;background:var(--c-surface2);border:1px solid var(--c-line);padding:14px;margin-bottom:10px;clip-path:polygon(var(--notch) 0,100% 0,100% calc(100% - var(--notch)),calc(100% - var(--notch)) 100%,0 100%,0 var(--notch))}
/* while a row's ⋯ menu is open the chamfer must release (clip-path clips the
   dropdown) and the row must rise above its siblings */
.drow.menu-open{clip-path:none;position:relative;z-index:50}
.dthumb{width:64px;height:64px;object-fit:contain;background:var(--c-bg);border:1px solid var(--c-line);flex:none}
.dinfo{flex:1;min-width:0}
.dtitle{font:700 15px var(--font-display);color:var(--c-ink);margin-bottom:6px;overflow-wrap:anywhere}
.dmeta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:11.5px;color:var(--c-mut)}
.dmeta .sep{opacity:.5}
.dsub2{margin-top:6px;font-size:11px;color:var(--c-mut);letter-spacing:.04em}

.chip{display:inline-block;padding:3px 8px;font:700 9.5px var(--font-ui);letter-spacing:.14em;text-transform:uppercase;border:1px solid transparent}
.st-available{color:#3DD68C;border-color:rgba(61,214,140,.4);background:rgba(61,214,140,.08)}
.st-pending{color:#ffc45e;border-color:rgba(255,196,94,.4);background:rgba(255,196,94,.08)}
.st-sold{color:#FF6B77;border-color:rgba(255,70,85,.4);background:rgba(255,70,85,.08)}
.st-archived{color:var(--c-mut);border-color:var(--c-line);background:transparent}
.st-featured{color:#ffc45e;border-color:rgba(255,196,94,.5);background:rgba(255,196,94,.1)}

.dacts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center;flex:none}
#dwrap .dacts button{padding:7px 10px;font-size:10px;letter-spacing:.1em}
/* the way back into the editor is the row's second-in-command action */
#dwrap .dacts button[data-act=edit]{border-color:color-mix(in srgb,var(--c-accent) 45%,var(--c-line-soft));color:var(--c-accent)}
#dwrap .dacts button[data-act=edit]:hover{border-color:var(--c-accent);color:var(--c-accent);background:transparent}
#dwrap .dacts button.danger{color:#FF6B77;border-color:rgba(255,70,85,.35)}
#dwrap .dacts button.danger:hover{border-color:#FF4655;background:rgba(255,70,85,.08)}
#dwrap .dacts button.on{border-color:var(--c-accent);color:var(--c-ink)}
/* per-row overflow menu — the other ten actions live here, grouped */
.dmore-wrap{position:relative;display:inline-flex}
#dwrap .dmore-btn{min-width:34px;padding:7px 8px}
.dmore{position:absolute;right:0;top:calc(100% + 6px);z-index:45;min-width:190px;background:var(--c-surface);border:1px solid var(--c-line);box-shadow:0 14px 34px rgba(0,0,0,.5);padding:4px 0;
clip-path:polygon(var(--notch) 0,100% 0,100% calc(100% - var(--notch)),calc(100% - var(--notch)) 100%,0 100%,0 var(--notch))}
.dmore[hidden]{display:none}
.dmore .dm-group{padding:4px 0;border-top:1px solid var(--c-line-soft)}
.dmore .dm-group:first-child{border-top:0}
.dmore .dm-label{display:block;font:600 9px var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--c-mut);padding:6px 12px 5px}
#dwrap .dmore button{display:flex;width:100%;height:auto;align-items:center;justify-content:flex-start;background:transparent;border:0;color:var(--c-ink);font:700 11px var(--font-display);letter-spacing:.12em;text-transform:uppercase;padding:9px 12px;cursor:pointer;clip-path:none}
#dwrap .dmore button:hover{background:var(--c-surface2);color:var(--c-accent)}
#dwrap .dmore button[hidden]{display:none}
#dwrap .dmore button.danger{color:var(--c-mut);border-color:transparent}
#dwrap .dmore button.danger:hover{color:#FF6B77;background:rgba(255,70,85,.08)}
#dwrap .dmore button.on{color:#ffc45e}

#priceForm,.priceForm{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
.priceForm input[type=number]{width:110px;background:var(--c-bg);border:1px solid var(--c-line);color:var(--c-ink);padding:7px 10px;font:600 12px var(--font-ui)}
.priceForm select{background:var(--c-bg);border:1px solid var(--c-line);color:var(--c-ink);padding:7px 8px;font:600 11px var(--font-ui)}
.priceForm label{display:flex;gap:6px;align-items:center;font-size:11px;color:var(--c-mut);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}

#dempty,#derror{text-align:center;padding:56px 20px;border:1px dashed var(--c-line);background:var(--c-surface2)}
#dempty h2,#derror h2{font:800 18px var(--font-display);color:var(--c-ink);margin-bottom:8px}
#dempty p,#derror p{font-size:13px;color:var(--c-mut);max-width:480px;margin:0 auto 16px;line-height:1.55}
#derror{border-color:rgba(255,70,85,.4)}
#derror h2{color:#FF6B77}

@media (max-width:900px){#stats{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){
  #dwrap{padding-left:14px;padding-right:14px}
  .drow{flex-wrap:wrap}
  .dacts{justify-content:flex-start;max-width:none;width:100%}
  /* the ⋯ sits at the row's left edge on phones — anchor the menu rightwards */
  .dmore{left:0;right:auto}
  #stats{grid-template-columns:repeat(2,1fr)}
  .dhead{align-items:flex-start}
}
.dgate .primary{background:var(--c-accent-btn);border-color:var(--c-accent-btn);color:#fff;padding:9px 14px;font:600 12px var(--font-ui);letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
/* tb-link styling is scoped to #topbar in shared.css — restyle the empty-state CTA to match */
#dempty a.tb-link{display:inline-block;margin-top:14px;background:transparent;border:1px solid var(--c-line-soft);color:var(--c-mut);padding:8px 16px;font:600 11px var(--font-ui);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;clip-path:polygon(var(--notch) 0,100% 0,100% calc(100% - var(--notch)),calc(100% - var(--notch)) 100%,0 100%,0 var(--notch))}
#dempty a.tb-link:hover{border-color:var(--c-mut);color:var(--c-ink)}
.dgate .ag-label{color:var(--c-mut);font-size:11px;letter-spacing:.14em;text-transform:uppercase}

/* ── owner-set card thumbnail picker ── */
.thumbForm{display:flex;flex-direction:column;gap:14px;margin:10px 0 0;padding:14px;background:var(--c-surface);border:1px solid var(--c-line)}
.tf-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.tf-label{font:700 11px var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--c-ink)}
#dwrap .tf-head button{padding:5px 10px;font-size:9px;letter-spacing:.12em}
.tf-sec{display:flex;flex-direction:column;gap:8px}
.tf-cap{font:600 9.5px var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--c-mut)}
.tf-picks{display:flex;flex-wrap:wrap;gap:8px;max-height:118px;overflow-y:auto}
#dwrap .tf-pick{padding:3px;width:46px;height:46px;display:flex;align-items:center;justify-content:center}
.tf-pick img{width:100%;height:100%;object-fit:contain}
.tf-row{display:flex;gap:8px;align-items:center}
.tf-url{flex:1;min-width:0;background:var(--c-bg);border:1px solid var(--c-line);color:var(--c-ink);padding:7px 10px;font:600 12px var(--font-ui)}
.tf-url:focus{outline:1px solid var(--c-mut);outline-offset:1px}
.tf-foot{display:flex;align-items:center;gap:10px;border-top:1px solid var(--c-line-soft);padding-top:12px}
.tf-hint{font-size:10.5px;color:var(--c-mut);letter-spacing:.04em}

.tf-mode{display:flex;gap:8px}
#dwrap .tf-mode button{flex:1}
#dwrap .tf-mode button.on{border-color:var(--c-accent);color:var(--c-ink)}

/* private seller note — dashboard only. The value lives in a column outside
   listing_public, so it never reaches the marketplace or the public card. */
.dnote{margin-top:8px}
.dnote-in{width:100%;background:var(--c-surface);border:1px solid var(--c-line);color:var(--c-ink);font:500 12px var(--font-ui);letter-spacing:0;padding:7px 9px;border-radius:6px}
.dnote-in::placeholder{color:var(--c-mut)}
.dnote-in:focus{outline:none;border-color:var(--c-accent)}
.dnote-in.saved{border-color:var(--c-accent)}