/* ==========================================================================
   STACK BUILDER — wizard + detail page styling
   Reuses ds-* tokens; new component classes only for genuinely new UI.
   ========================================================================== */

/* --- Entry form (hero textarea + examples) ------------------------------ */
.sb-hero{max-width:720px;margin:0 auto;}
.sb-hero .ds-h1{margin-bottom:14px;}
.sb-hero .ds-lead{margin-bottom:32px;}
.sb-textarea{width:100%;min-height:140px;padding:18px 20px;font-size:15.5px;
    line-height:1.5;background:var(--surface);border:1px solid var(--border);
    border-radius:var(--radius);color:var(--text);font-family:var(--font-sans);
    resize:vertical;outline:none;transition:border-color .2s,box-shadow .2s;}
.sb-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);}
.sb-textarea::placeholder{color:var(--text-4);}
.sb-cta-row{display:flex;align-items:center;justify-content:space-between;
    gap:12px;margin-top:14px;}
.sb-loading{font-size:13px;color:var(--text-3);font-family:var(--font-mono);}
.sb-examples{margin-top:36px;}
.sb-examples .ds-overline{margin-bottom:12px;}
.sb-example-row{display:flex;flex-wrap:wrap;gap:8px;}
.sb-example-row button{display:inline-flex;align-items:center;padding:8px 14px;
    font-size:13px;font-weight:450;border-radius:999px;background:var(--surface-2);
    color:var(--text-2);border:1px solid var(--border);cursor:pointer;
    text-align:left;max-width:480px;transition:all .2s var(--ease);
    font-family:var(--font-sans);}
.sb-example-row button:hover{background:var(--accent-soft);color:var(--accent);
    border-color:var(--accent-soft-2);}

/* --- Step row (edit-steps page) ----------------------------------------- */
.stack-step-row{display:flex;align-items:flex-start;gap:14px;padding:16px 18px;
    background:var(--surface);border:1px solid var(--border);
    border-radius:var(--radius-sm);margin-bottom:8px;
    transition:box-shadow .25s var(--ease),border-color .25s var(--ease);}
.stack-step-row:hover{box-shadow:var(--shadow-sm);}
.stack-step-row[data-dragging="true"]{box-shadow:var(--shadow-md);
    opacity:.95;border-color:var(--accent);}
.stack-drag-handle{width:24px;height:24px;display:flex;align-items:center;
    justify-content:center;color:var(--text-3);cursor:grab;flex-shrink:0;
    margin-top:4px;}
.stack-drag-handle:active{cursor:grabbing;}
.stack-step-num{display:inline-flex;align-items:center;justify-content:center;
    min-width:30px;height:28px;padding:0 8px;background:var(--surface-2);
    border-radius:var(--radius-sm);font-size:11px;font-weight:600;
    font-family:var(--font-mono);letter-spacing:.06em;color:var(--text-3);
    text-transform:uppercase;flex-shrink:0;margin-top:2px;}
.stack-step-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;}
.stack-step-title{width:100%;border:0;background:transparent;font-family:var(--font-sans);
    font-size:15.5px;font-weight:500;color:var(--text);line-height:1.4;outline:none;
    padding:2px 0;border-bottom:1px solid transparent;transition:border-color .15s;}
.stack-step-title:focus{border-bottom-color:var(--accent);}
.stack-step-desc{width:100%;border:0;background:transparent;font-family:var(--font-sans);
    font-size:13.5px;line-height:1.5;color:var(--text-2);outline:none;
    resize:none;padding:0;min-height:36px;}
.stack-step-desc::placeholder{color:var(--text-4);}
.stack-step-cats{display:flex;flex-wrap:wrap;gap:6px;}
.stack-step-actions{display:flex;align-items:center;gap:6px;margin-top:2px;}
.stack-step-actions button{display:inline-flex;align-items:center;justify-content:center;
    width:28px;height:28px;background:transparent;border:0;color:var(--text-3);
    cursor:pointer;border-radius:6px;transition:all .2s;}
.stack-step-actions button:hover{background:var(--danger-soft);color:var(--danger);}

/* --- Tool pick (select-tools page) -------------------------------------- */
.stack-step-block{margin-bottom:36px;padding-bottom:36px;
    border-bottom:1px solid var(--border);}
.stack-step-block:last-child{border-bottom:0;padding-bottom:0;}
.stack-step-header{margin-bottom:18px;}
.stack-step-header .ds-overline{margin-bottom:6px;}
.stack-step-header .ds-h3{margin-bottom:6px;}

.stack-tool-pick{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;
    background:var(--surface);border:1.5px solid var(--accent);
    border-radius:var(--radius);box-shadow:var(--shadow-accent);
    transition:box-shadow .3s var(--ease);position:relative;}
.stack-tool-pick:hover{box-shadow:var(--shadow-accent-hover);}
.stack-tool-pick-logo{width:48px;height:48px;border-radius:10px;
    background:var(--surface-2);border:1px solid var(--border);padding:5px;
    display:flex;align-items:center;justify-content:center;overflow:hidden;
    flex-shrink:0;}
.stack-tool-pick-logo img{max-width:100%;max-height:100%;object-fit:contain;}
.stack-tool-pick-logo-fb{width:100%;height:100%;background:linear-gradient(135deg,
    var(--accent-soft),var(--accent-soft-2));color:var(--accent);
    display:flex;align-items:center;justify-content:center;font-size:18px;
    font-weight:600;border-radius:7px;}
.stack-tool-pick-body{flex:1;min-width:0;}
.stack-tool-pick-name{font-size:16px;font-weight:600;color:var(--text);
    line-height:1.3;letter-spacing:-.01em;}
.stack-tool-pick-name a{color:inherit;text-decoration:none;}
.stack-tool-pick-name a:hover{color:var(--accent);}
/* Description preview: fade-out mask вместо «...» от line-clamp */
.stack-tool-pick-sub{font-size:13.5px;color:var(--text-2);line-height:1.5;margin-top:6px;
    position:relative;max-height:calc(1.5em * 2);overflow:hidden;
    -webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 14px),transparent 100%);
    mask-image:linear-gradient(180deg,#000 calc(100% - 14px),transparent 100%);}
.stack-tool-pick-why{font-size:12px;color:var(--text-3);font-style:italic;margin-top:8px;
    font-family:var(--font-mono);letter-spacing:.01em;}
.stack-tool-pick-meta{display:flex;align-items:center;gap:8px;margin-top:10px;}

/* --- Alternative chips row --------------------------------------------- */
.stack-alts-toggle{margin-top:14px;}
.stack-alt-chip-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;}
.stack-alt-chip{display:flex;flex-direction:column;align-items:center;gap:6px;
    padding:11px 14px;min-width:96px;max-width:140px;background:var(--surface-2);
    border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;
    transition:border-color .2s,background .2s,transform .15s;
    text-decoration:none;color:var(--text);}
.stack-alt-chip:hover{border-color:var(--accent);background:var(--surface);
    transform:translateY(-1px);}
.stack-alt-chip-logo{width:28px;height:28px;border-radius:6px;background:var(--surface);
    border:1px solid var(--border);padding:2px;display:flex;align-items:center;
    justify-content:center;overflow:hidden;}
.stack-alt-chip-logo img{max-width:100%;max-height:100%;object-fit:contain;}
.stack-alt-chip-name{font-size:12px;font-weight:500;color:var(--text);text-align:center;
    line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
    overflow:hidden;}

/* --- URL field ---------------------------------------------------------- */
.stack-url-field{display:flex;align-items:center;gap:8px;margin-top:18px;
    padding:12px 14px;background:var(--surface-2);border:1px dashed var(--border-2);
    border-radius:var(--radius-sm);}
.stack-url-field label{font-size:12px;color:var(--text-3);font-family:var(--font-mono);
    letter-spacing:.04em;text-transform:uppercase;flex-shrink:0;}
.stack-url-field input{flex:1;border:0;background:transparent;font-size:13.5px;
    color:var(--text);outline:none;font-family:var(--font-sans);
    min-width:0;}
.stack-url-pending{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;
    margin-top:10px;font-size:12px;color:var(--warning);background:var(--warning-soft);
    border-radius:999px;font-family:var(--font-mono);}
.stack-url-pending .pulse{width:8px;height:8px;border-radius:50%;background:currentColor;
    animation:sb-pulse 1.4s ease-in-out infinite;}
@keyframes sb-pulse{0%,100%{opacity:.4;transform:scale(.85);}50%{opacity:1;transform:scale(1);}}

/* --- Sticky CTA --------------------------------------------------------- */
.stack-sticky-cta{position:sticky;bottom:24px;display:flex;justify-content:flex-end;
    margin-top:32px;z-index:5;pointer-events:none;}
.stack-sticky-cta .ds-btn{pointer-events:auto;padding:14px 28px;font-size:15px;
    box-shadow:var(--shadow-accent);}

/* --- Public detail timeline -------------------------------------------- */
.stack-detail-hero{padding-bottom:32px;border-bottom:1px solid var(--border);
    margin-bottom:48px;}
.stack-detail-hero .ds-overline{margin-bottom:12px;}
.stack-detail-hero .ds-h1{margin-bottom:18px;}
.stack-detail-hero .ds-lead{margin-bottom:18px;}
.stack-detail-meta{font-size:13px;color:var(--text-3);font-family:var(--font-mono);
    display:flex;align-items:center;gap:14px;flex-wrap:wrap;}

.stack-detail-grid{display:grid;grid-template-columns:1fr 280px;gap:48px;
    align-items:flex-start;}
@media(max-width:900px){.stack-detail-grid{grid-template-columns:1fr;gap:24px;}}

.stack-timeline{position:relative;padding-left:36px;}
.stack-timeline::before{content:"";position:absolute;left:11px;top:24px;bottom:24px;
    width:2px;background:var(--border);border-radius:1px;}
.stack-timeline-step{position:relative;margin-bottom:28px;}
.stack-timeline-step:last-child{margin-bottom:0;}
.stack-timeline-bullet{position:absolute;left:-36px;top:0;width:24px;height:24px;
    border-radius:50%;background:var(--surface);border:2px solid var(--border);
    display:flex;align-items:center;justify-content:center;font-size:10px;
    font-weight:600;font-family:var(--font-mono);color:var(--text-3);
    letter-spacing:.04em;}
.stack-timeline-step--active .stack-timeline-bullet{border-color:var(--accent);
    color:var(--accent);background:var(--accent-soft);}
.stack-timeline-title{font-size:18px;font-weight:500;color:var(--text);line-height:1.35;
    letter-spacing:-.015em;margin-bottom:6px;}
.stack-timeline-desc{font-size:14px;color:var(--text-2);line-height:1.6;margin-bottom:12px;}
.stack-timeline-tool{display:flex;align-items:center;gap:12px;padding:11px 14px;
    background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);
    text-decoration:none;color:inherit;transition:border-color .2s,background .2s;}
.stack-timeline-tool:hover{border-color:var(--accent);background:var(--surface);}
.stack-timeline-tool-logo{width:32px;height:32px;border-radius:7px;background:var(--surface);
    border:1px solid var(--border);padding:3px;display:flex;align-items:center;
    justify-content:center;overflow:hidden;flex-shrink:0;}
.stack-timeline-tool-logo img{max-width:100%;max-height:100%;object-fit:contain;}
.stack-timeline-tool-meta{flex:1;min-width:0;}
.stack-timeline-tool-name{font-size:14px;font-weight:600;color:var(--text);}
.stack-timeline-tool-cat{font-size:11.5px;color:var(--text-3);font-family:var(--font-mono);
    text-transform:uppercase;letter-spacing:.04em;margin-top:2px;}
.stack-timeline-tool-pending{font-size:13px;color:var(--warning);font-style:italic;
    padding:11px 14px;background:var(--warning-soft);border-radius:var(--radius-sm);}

.stack-detail-side{position:sticky;top:80px;}
.stack-detail-side h3{margin-bottom:14px;}
.stack-detail-instructions{font-size:14px;line-height:1.65;color:var(--text-2);
    white-space:pre-wrap;}
.stack-detail-actions{display:flex;flex-direction:column;gap:8px;margin-top:24px;}

/* --- Save form ---------------------------------------------------------- */
.sb-save-form{max-width:640px;margin:0 auto;}
.sb-save-form label{display:block;font-size:13px;font-weight:500;color:var(--text-2);
    margin-bottom:6px;letter-spacing:-.005em;}
.sb-save-form .field{margin-bottom:24px;}
.sb-save-form input[type="text"],
.sb-save-form textarea{width:100%;padding:12px 16px;font-size:15px;
    background:var(--surface);border:1px solid var(--border);
    border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-sans);
    line-height:1.5;outline:none;transition:border-color .2s;}
.sb-save-form input:focus,.sb-save-form textarea:focus{border-color:var(--accent);
    box-shadow:0 0 0 3px var(--accent-glow);}
.sb-save-form textarea{resize:vertical;min-height:80px;}
.sb-counter{font-size:12px;color:var(--text-3);font-family:var(--font-mono);
    text-align:right;margin-top:4px;}
.sb-save-form .field-help{font-size:12.5px;color:var(--text-3);margin-top:4px;}

/* --- Error banner ------------------------------------------------------- */
.sb-error{padding:12px 16px;background:var(--danger-soft);color:var(--danger);
    border-radius:var(--radius-sm);font-size:13.5px;margin-bottom:18px;
    border:1px solid transparent;}
