/* The portal's Developers page (web/merchant/developers.js), after the "Developers" design. */

.dev-notes{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.set-note.bad{background:var(--bad-wash);border-color:#fecdca;color:#7a271a}
.set-note.bad .dot{background:var(--bad)}
.dev-off{align-items:center}
.dev-off > span:nth-child(2){flex:1}
.dev-pad{padding:14px 18px 4px;border-top:1px solid var(--line-soft)}
.dev-pad .code{margin-bottom:10px}
.dev-sub{font-size:12px;color:var(--subtle);margin-top:2px;line-height:1.45}
#devBody{display:flex;flex-direction:column;gap:16px}

/* The quick start: three numbered steps, the current one dark. */
.dev-steps{list-style:none;margin:0;padding:0}
.dev-step{display:flex;gap:14px;align-items:flex-start;padding:14px 18px;border-top:1px solid var(--line-soft)}
.dev-step-n{flex:0 0 26px;height:26px;border-radius:50%;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;color:var(--muted);background:#fff}
.dev-step.cur .dev-step-n{background:var(--ink);border-color:var(--ink);color:#fff}
.dev-step.done .dev-step-n{background:var(--good-wash);border-color:#abefc6;color:var(--good)}
.dev-step-b{flex:1;min-width:0}
.dev-step-t{font-size:14px;font-weight:500;color:var(--ink)}
.dev-step.done .dev-step-t{color:var(--muted);font-weight:400}
.dev-step-d{font-size:13px;color:var(--muted);margin-top:2px;line-height:1.5}
.dev-step-a{flex-shrink:0}
.dev-code{position:relative;margin-top:10px}
.dev-code pre{background:#0a0a0a;color:#e5e5e5;border-radius:var(--radius-card);padding:12px 14px;padding-right:84px;font-family:var(--font-mono);font-size:12px;line-height:1.7;overflow-x:auto;margin:0}
.dev-code .btn{position:absolute;top:8px;right:8px}

/* A segmented control and an on/off switch. */
.dev-seg{display:inline-flex;flex-wrap:wrap;gap:2px;background:var(--surface-3);border-radius:8px;padding:2px}
.dev-seg button{border:none;background:none;font:inherit;font-size:13px;font-weight:500;color:var(--muted);padding:5px 12px;border-radius:6px;cursor:pointer}
.dev-seg button[aria-checked="true"]{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.dev-switch{position:relative;width:36px;height:20px;border-radius:999px;border:none;background:var(--line);cursor:pointer;padding:0;flex-shrink:0}
.dev-switch span{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:left .15s}
.dev-switch[aria-checked="true"]{background:var(--ink)}
.dev-switch[aria-checked="true"] span{left:18px}
.dev-switch:disabled{opacity:.4;cursor:not-allowed}

/* The keys table. */
.dev-keys td{vertical-align:top}
.dev-keys .k-key{white-space:nowrap;font-size:12px}
.dev-keys .k-used,.dev-keys .k-status{white-space:nowrap}
.dev-name{font-weight:500}
.dev-dim{opacity:.55}
.dev-acts{display:flex;gap:6px;justify-content:flex-end;flex-wrap:nowrap}
.btn-danger-ghost{background:#fff;color:var(--bad);border-color:#fecdca}
.btn-danger-ghost:hover{background:var(--bad-wash)}
.dev-empty{padding:32px 18px;text-align:center;border-top:1px solid var(--line-soft)}
.dev-empty-t{font-weight:500;margin-bottom:4px}
.dev-empty-d{font-size:13px;color:var(--muted);max-width:420px;margin:0 auto 14px;line-height:1.5}

/* The create form. */
.dev-types{display:flex;flex-direction:column;gap:8px}
.dev-perms > label{display:block;margin-bottom:6px}
.dev-perm{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:8px 0;border-top:1px solid var(--line-soft)}
.dev-perm:first-of-type{border-top:none}
.dev-perm-l{font-size:13px;font-weight:500}
.dev-secret{display:flex;gap:8px;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.dev-secret .mono{flex:1;word-break:break-all;font-size:12px;user-select:all}

@media (max-width:640px){
  .dev-step{flex-wrap:wrap}
  .dev-step-a{width:100%;padding-left:40px}
  .dev-perm{flex-wrap:wrap}
}
/* Below a laptop width each key is a card: name and status, the key,
   what it may do, then its actions. */
@media (max-width:1100px){
  .set-card .table-wrap.flush:has(.dev-keys){overflow:visible}
  .dev-keys,.dev-keys tbody{display:block}
  .dev-keys thead{display:none}
  .dev-keys tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:14px 18px;border-top:1px solid var(--line-soft)}
  .dev-keys td{display:block;padding:0;border:none}
  .dev-keys .k-name{grid-column:1;grid-row:1}
  .dev-keys .k-status{grid-column:2;grid-row:1;text-align:right}
  .dev-keys .k-key,.dev-keys .k-access,.dev-keys .k-used,.dev-keys .k-acts{grid-column:1 / -1}
  .dev-keys .k-key{white-space:normal;word-break:break-all}
  .dev-keys .k-used:not(.never)::before{content:"Last used: "}
  .dev-keys .k-acts:empty{display:none}
  .dev-keys .dev-acts{justify-content:flex-start;flex-wrap:wrap;margin-top:4px}
}

/* Webhooks: one card per endpoint. */
.set-count.dev-count-bad{background:var(--bad-wash);color:var(--bad)}
.dev-hook-head{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;padding:16px 18px 12px}
.dev-hook-id{min-width:0}
.dev-hook-url{font-size:13px;font-weight:500;word-break:break-all}
.dev-hook-state{display:flex;gap:10px;align-items:center;flex-shrink:0}
.dev-hook-note{padding:0 18px 12px}
.dev-hook-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 16px;padding:12px 18px;border-top:1px solid var(--line-soft)}
.dev-stat-k{font-size:12px;color:var(--subtle);margin-bottom:2px}
.dev-stat-v{font-size:13px;color:var(--ink);word-break:break-all}
.dev-stat-v.bad{color:var(--bad)}
.dev-chips{display:flex;flex-wrap:wrap;gap:6px}
.dev-hook > .dev-chips{padding:0 18px 12px}
.dev-chip{font-size:11px;padding:3px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2)}
.dev-chip-pick{cursor:pointer;background:#fff}
.dev-chip-pick.on{background:var(--ink);border-color:var(--ink);color:#fff}
.dev-hook-acts{display:flex;flex-wrap:wrap;gap:6px;padding:12px 18px;border-top:1px solid var(--line-soft)}
.dev-dim-soft .dev-hook-head,.dev-dim-soft .dev-hook-stats,.dev-dim-soft > .dev-chips{opacity:.7}
.dev-evgroup{margin-bottom:10px}
.dev-evgroup-l{font-size:12px;color:var(--subtle);margin-bottom:6px}
.dev-ev-head{display:flex;justify-content:space-between;align-items:baseline}
.dev-link,.dev-hook .btn-link,.dev-ev-head .btn-link,.dev-route .btn-link{background:none;border:none;padding:0;font:inherit;font-size:12px;color:var(--ink);text-decoration:underline;cursor:pointer}

/* A drawer from the right, for an endpoint's deliveries or an event. */
.dev-drawer-bg{position:fixed;inset:0;background:rgba(10,10,10,.28);z-index:60;display:flex;justify-content:flex-end}
.dev-drawer{width:min(560px,100%);height:100%;background:#fff;box-shadow:-8px 0 24px rgba(0,0,0,.12);display:flex;flex-direction:column;overflow:hidden}
.dev-drawer-head{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;padding:18px 20px 6px}
.dev-drawer-t{font-size:14px;font-weight:500;display:flex;flex-wrap:wrap;gap:8px;align-items:center;word-break:break-all;min-width:0}
.dev-drawer-sub{padding:0 20px 12px;font-size:12px;color:var(--subtle);border-bottom:1px solid var(--line-soft)}
.dev-drawer-body{padding:16px 20px;overflow-y:auto;flex:1}
.dev-list-t{font-size:12px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:14px 0 8px}
.dev-list-t:first-child{margin-top:0}
.dev-list{border:1px solid var(--line);border-radius:9px;overflow:hidden}
.dev-row{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-top:1px solid var(--line-soft)}
.dev-row:first-child{border-top:none}
.dev-row-b{flex:1;min-width:0;font-size:12px}
.dev-err{color:var(--bad)}
.dev-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dev-kv{display:flex;gap:12px;justify-content:space-between;font-size:13px;padding:6px 0;border-bottom:1px solid var(--line-soft)}
.dev-kv > span:first-child{color:var(--muted)}
.dev-kv .mono{font-size:12px;word-break:break-all;text-align:right}
.dev-json{margin-top:16px}
.dev-json-h{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:500;color:var(--muted);margin-bottom:6px}
.dev-json pre{background:#0a0a0a;color:#e5e5e5;border-radius:var(--radius-card);padding:12px 14px;font-family:var(--font-mono);font-size:12px;line-height:1.6;overflow:auto;max-height:420px;margin:0}

/* Events: filters over a table of rows that open. */
.dev-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px 18px}
.dev-filters select,.dev-filters input{height:32px;border:1px solid var(--line);border-radius:7px;padding:0 10px;font:inherit;font-size:13px;background:#fff}
.dev-filters input{flex:1;min-width:200px}
.dev-click{cursor:pointer}
.dev-click:hover td{background:var(--surface-2)}
.dev-foot{display:flex;gap:12px;align-items:center;padding:12px 18px;font-size:12px;color:var(--subtle);border-top:1px solid var(--line-soft)}

@media (max-width:760px){
  .dev-hook-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dev-hook-head{flex-wrap:wrap}
  .dev-events th:nth-child(2),.dev-events td:nth-child(2),.dev-events th:nth-child(4),.dev-events td:nth-child(4){display:none}
}
.dev-drawer .m-close{border:none;background:none;font-size:20px;line-height:1;color:var(--muted);cursor:pointer;padding:2px 6px;border-radius:6px}
.dev-drawer .m-close:hover{background:var(--surface-2);color:var(--ink)}

/* Traffic on Overview: four figures, two charts of 24 bars. */
.dev-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line-soft)}
.dev-tile{padding:14px 18px;border-left:1px solid var(--line-soft)}
.dev-tile:first-child{border-left:none}
.dev-tile-v{font-size:22px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:2px 0}
.dev-bad{color:var(--bad)}
.dev-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:14px 18px 16px;border-top:1px solid var(--line-soft)}
.dev-chart-h{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:500;margin-bottom:8px}
.dev-legend{display:flex;gap:10px;align-items:center;font-size:11px;font-weight:400;color:var(--muted)}
.dev-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:-6px}
.dev-legend i.ok,.dev-bar .ok{background:#a3a3a3}
.dev-legend i.e4,.dev-bar .e4{background:#f79009}
.dev-legend i.e5,.dev-bar .e5{background:var(--bad)}
.dev-legend i.p95,.dev-bar .p95{background:#d4d4d4}
.dev-legend i.p50{background:var(--ink)}
.dev-bars{display:flex;align-items:flex-end;gap:3px;height:120px;border-bottom:1px solid var(--line)}
.dev-bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;min-width:0}
.dev-bar span{display:block;width:100%;border-radius:2px 2px 0 0}
.dev-bar span + span{border-radius:0}
.dev-bar .p95{position:relative;border-radius:2px 2px 0 0}
.dev-bar .p95 i{position:absolute;left:0;right:0;height:2px;background:var(--ink)}
.dev-bar:hover span{filter:brightness(.9)}
.dev-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--subtle);margin-top:4px}
.dev-two{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:16px}
.dev-two .set-card{margin:0}
.dev-method{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--muted)}
.dev-list-flush{border:none;border-radius:0;border-top:1px solid var(--line-soft)}

/* Logs. */
.dev-nowrap{white-space:nowrap}
.dev-route{display:inline-flex;gap:4px;align-items:center}
.dev-route .btn-link{font-size:14px;text-decoration:none}
.dev-tail .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--line);margin-right:2px}
.dev-tail[aria-pressed="true"]{background:var(--good-wash);border-color:#abefc6;color:var(--good)}
.dev-tail[aria-pressed="true"] .dot{background:var(--good)}
.dev-log-err{margin-bottom:12px}
.dev-logs td{font-size:13px}

@media (max-width:1000px){
  .dev-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dev-tile:nth-child(3){border-left:none}
  .dev-tile:nth-child(n+3){border-top:1px solid var(--line-soft)}
  .dev-charts,.dev-two{grid-template-columns:minmax(0,1fr)}
  .dev-logs th:nth-child(6),.dev-logs td:nth-child(6),.dev-logs th:nth-child(5),.dev-logs td:nth-child(5){display:none}
}
@media (max-width:640px){
  .dev-top th:nth-child(4),.dev-top td:nth-child(4){display:none}
}
