.step-list{gap:14px}.step-row{display:grid;grid-template-columns:1fr;gap:12px;padding:16px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}.step-head{display:grid;grid-template-columns:36px 1fr 42px;gap:10px;align-items:center}.step-head .step-index{height:36px}.step-head .step-remove{min-height:36px;height:36px}.step-fields{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);gap:10px}.step-row label{display:grid;gap:5px}.step-row textarea{min-height:72px;font-family:var(--mono);font-size:.82rem}.step-row details{border-top:1px solid var(--line);padding-top:9px}.step-row summary{cursor:pointer;color:var(--muted);font-size:.82rem;font-weight:700}.step-row details>label{margin-top:10px}.step-transition{display:grid;gap:10px;margin-top:2px;padding:12px;border-radius:7px;background:var(--soft);border:1px dashed var(--line2)}
/* Field labels on the soft panel keep AA contrast (dim grey is 4.4:1 on --soft). */
.step-transition label{color:var(--muted)}.edge-title{font-size:.8rem;font-weight:800;color:var(--navy)}.transition-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.step-row input[type=number]{height:44px;border:1px solid var(--line2);border-radius:6px;background:var(--paper);padding:0 12px;color:var(--text);font:500 .92rem var(--font)}html[data-dp-theme="dark"] .step-row input,html[data-dp-theme="dark"] .step-row select,html[data-dp-theme="dark"] .step-row textarea{background:var(--paper);color:var(--text)}@media(max-width:700px){.step-fields,.transition-fields{grid-template-columns:1fr}}

.offer-editor{grid-column:1/-1;display:grid;grid-template-columns:200px 180px minmax(0,1fr);gap:12px;align-items:end;margin-top:6px;padding-top:16px;border-top:1px dashed var(--line2)}
.offer-editor label{display:grid;gap:6px;color:var(--dim);font-size:.72rem;font-weight:750;text-transform:uppercase;letter-spacing:.06em}
.offer-editor input:not([type=checkbox]),.offer-editor select,.offer-editor textarea{min-height:40px;border:1px solid var(--line2);border-radius:6px;background:var(--paper);color:var(--text);padding:8px 10px;font:500 .88rem var(--font)}
.offer-editor .offer-wide{grid-column:1/-1}
.offer-editor .offer-check{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:.86rem;color:var(--text)}
.offer-editor .offer-actions{display:flex;justify-content:flex-end}
.offer-grant{display:grid;grid-template-columns:minmax(0,1fr) 180px auto;gap:12px;align-items:end;padding:14px;border-radius:8px;background:var(--soft)}
.offer-status{grid-column:1/-1}
@media(max-width:800px){.offer-editor,.offer-grant{grid-template-columns:1fr}}

/* ── Visual QA: admin is fully responsive (no horizontal scroll down to 320px) ── */
#admin.catalog-section{padding:40px 0 72px}
.admin-hero{padding:44px 0 32px}
.admin-hero h1{margin-bottom:12px}
.admin-layout{gap:36px}
.admin-layout > *{min-width:0}
.publish-form{margin-top:0}
.publish-form > *,.publish-form label,.form-row > *,.step-fields > *,.step-row > *,.step-transition > *,.offer-editor > *,.offer-grant > *{min-width:0}
.publish-form :is(input[type=text],input[type=number],input[type=email],select,textarea),
.offer-editor :is(input:not([type=checkbox]),select,textarea){width:100%;min-width:0;max-width:100%}
.publish-form input::placeholder{text-overflow:ellipsis}
.admin-card h2{font-size:1.4rem}
.step-head strong{min-width:0}
.step-head .step-remove{border:1px solid var(--line2)!important;background:var(--paper)!important;color:var(--muted)!important}
.step-head .step-remove:hover{border-color:var(--red)!important;color:var(--red)!important}

/* German file picker (native control text depends on the browser language). */
.file-field{display:grid;gap:8px}
.file-field-label{color:var(--dim);font-size:.75rem;font-weight:750;text-transform:uppercase;letter-spacing:.06em}
.file-picker{position:relative;display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;min-height:52px;padding:6px;border:1px dashed var(--line2);border-radius:8px;background:var(--soft)}
.file-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0)}
.file-button{min-height:40px;padding:8px 16px;text-transform:none;letter-spacing:0;font-size:.88rem}
.file-input:focus-visible + .file-button{outline:2px solid var(--navy);outline-offset:2px}
.file-name{min-width:0;flex:1 1 160px;color:var(--muted);font-size:.86rem;overflow-wrap:anywhere}
.file-field .hint{margin:0}

/* Catalog rows. */
.catalog-head{flex-wrap:wrap}
.catalog-head > div{min-width:0}
.admin-row{grid-template-columns:minmax(0,1fr) 170px auto auto;gap:12px 16px}
.admin-row-info{min-width:0}
.admin-row-info .hint{overflow-wrap:anywhere}
.admin-row-plan select{width:100%}
.admin-row-status{justify-self:start;align-self:center;white-space:nowrap}
.admin-row-status.status-published{background:color-mix(in srgb,var(--green) 12%,transparent);border-color:color-mix(in srgb,var(--green) 35%,transparent);color:var(--green);font-weight:700}
.admin-row-status.status-pending{background:color-mix(in srgb,var(--amber) 12%,transparent);border-color:color-mix(in srgb,var(--amber) 35%,transparent);color:var(--amber);font-weight:700}
.admin-row-actions{min-width:0}
.admin-row-actions > *{min-height:40px;padding:8px 14px}
.btn-danger{color:var(--red)!important}
.btn-danger:hover{border-color:var(--red)!important}
html[data-dp-theme="dark"] .admin-row select{background-color:#06111f}
@media(max-width:1100px){
  .admin-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"info info" "plan status" "actions actions"}
  .admin-row-info{grid-area:info}.admin-row-plan{grid-area:plan;max-width:260px}.admin-row-status{grid-area:status}
  .admin-row-actions{grid-area:actions;justify-content:flex-start}
}
@media(max-width:700px){
  .admin-hero{padding:32px 0 24px}
  #admin.catalog-section{padding:28px 0 56px}
  .admin-card{padding:20px 16px}
  .step-row{padding:14px 12px}
  .step-transition{padding:12px 10px}
  .admin-row{padding:14px;grid-template-columns:minmax(0,1fr) auto}
  .admin-row-plan{max-width:none}
  .admin-row-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
  .offer-grant{padding:12px}
  .offer-editor .offer-actions{justify-content:stretch}.offer-editor .offer-actions > *{width:100%}
  .dialog-actions .btn-primary{width:100%}
}
.publish-form label.file-button{display:inline-flex;align-items:center;justify-content:center;gap:0;text-transform:none;letter-spacing:0;font:700 .88rem/1 var(--font);color:var(--text)}
@media(max-width:1100px){
  .admin-row{grid-template-areas:"info status" "plan plan" "actions actions"}
  .admin-row-status{align-self:start;justify-self:end}
}
@media(min-width:701px) and (max-width:1100px){.step-fields:not(.transition-fields){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media(max-width:700px){.admin-row-actions{display:flex;flex-wrap:wrap}.admin-row-actions > *{flex:1 1 auto}}
html[data-dp-theme="dark"] .admin-row .btn-danger{color:var(--red)!important}
/* Form head: tag, heading and help text keep the normal text rhythm (grid gaps do not collapse margins). */
.publish-form > .section-tag{margin:0}
.publish-form > h2{margin:-8px 0 -6px}
.publish-form > .hint,.steps-block > .hint{margin:0}

/* Touch targets: 44px on tablet and phone (summary rows grow their hit area without moving the form). */
@media(max-width:1023.98px){
  .publish-form summary{padding-block:11.5px;margin-block:-11.5px}
  .step-remove{min-height:44px!important;height:44px!important;width:44px!important}
  .publish-form select,.offer-editor select,.admin-row select{min-height:44px}
}
