/* Extracted from ecosystem.css — Shared cards, filters, deal form and collapsible form chrome. */
/* Load after ecosystem.css and before existing ecosystem feature sheets; original order preserved. */

    .cards { display:flex; gap:6px; overflow-x:auto; padding-bottom:2px; }
    .kc { flex:0 0 auto; min-width:84px; padding:6px 10px; border-radius:10px;
          background: var(--tg-theme-secondary-bg-color,#f2f2f2); }
    .kl { font-size:11px; color:var(--tg-theme-hint-color,#888); }
    .kv { font-size:16px; font-weight:700; }
    .fin { font-size:12px; color:var(--tg-theme-hint-color,#777); margin-top:4px; white-space:nowrap;
           overflow-x:auto; }
    /* deals cards / dcard / bulk → ecosystem_deals.css. */
    /* contact cards (mobile-friendly references list) */
    .rcard { border:1px solid var(--tg-theme-hint-color,#e0e0e0); border-radius:10px; padding:10px 11px;
             margin-bottom:7px; background: var(--tg-theme-bg-color,#fff); }
    #refs-list { margin-top:8px; }
    /* filters */
    #filters { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
    #filters > input { flex:1 1 100%; }  /* search gets its own full-width row on phones */
    #filters select, #filters input { font:inherit; padding:5px 8px; border-radius:8px;
        border:1px solid #8883; background:var(--tg-theme-bg-color,#fff); color:inherit; }
    #f-q { flex:1; min-width:0; }
    /* new-deal form */
    #new-btn { font:inherit; padding:5px 10px; border-radius:8px; border:none; font-weight:600;
        background: var(--tg-theme-button-color,#3390ec); color: var(--tg-theme-button-text-color,#fff); }
    #form-slot { display: none; }
    #deal-form-modal #form { margin-bottom:8px; padding:10px; border-radius:10px;
        background: var(--tg-theme-secondary-bg-color,#f2f2f2); }
    #nf-cross {
        display:grid; grid-template-columns:repeat(auto-fit, minmax(min(220px, 100%), 1fr));
        gap:6px 10px; margin:2px 0 4px; min-width:0; max-width:100%; width:100%;
        box-sizing:border-box;
    }
    .nf-core-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:6px 12px; margin:2px 0 6px; }
    .frow { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
    .frow > label { flex:0 0 36%; font-size:12px; color:var(--tg-theme-hint-color,#777); }
    .frow > input, .frow > select { flex:1; min-width:0; font:inherit; padding:5px 8px;
        border-radius:8px; border:1px solid #8883; background:var(--tg-theme-bg-color,#fff); color:inherit; }
    /* Advanced numeric rows (cost/commissions/flats): stack label over input in a responsive grid,
 so Pro fixed-width labels don't squeeze controls into unreadable slivers. */
    .nf-adv-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:6px 10px; margin:2px 0 4px; }
    .nf-adv-fk-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:6px 10px; margin:2px 0 4px; }
    .nf-preview-bar {
        display:grid; grid-template-columns:1fr; gap:3px;
        margin:4px 0 2px; padding:4px 8px; border-radius:8px;
        background:rgba(127,127,127,.08);
    }
    .nf-preview-bar #rate-hint, .nf-preview-bar #nf-preview { margin:0; min-height:0; white-space:normal; overflow:visible; }
    .frow.req > label { color: inherit; font-weight:600; }
    .fbtns { display:flex; gap:8px; margin-top:8px; }
    .fbtns button { flex:1; font:inherit; padding:8px; border-radius:8px; border:none; font-weight:600; }
    #nf-submit { background: var(--tg-theme-button-color,#3390ec); color: var(--tg-theme-button-text-color,#fff); }
    /* Cancel tone: shared with .rk.ecosystem-secondary (ecosystem.css) — no #8883 black block. */
    /* §opt deal form: inline validation (required field left empty) + sticky submit row */
    .nf-missing { border-color:#d11 !important; box-shadow:0 0 0 1px #d11 inset; }
    .nf-actions-sticky { position:sticky; bottom:0; z-index:5; padding-top:8px; margin-top:8px;
        background:var(--tg-theme-secondary-bg-color,#f2f2f2); }
    /* §opt queue: «Открытые заявки» split into pending / ready-to-dispatch sections */
    .req-section-h { font-weight:600; font-size:13px; color:var(--tg-theme-hint-color,#888);
        margin:12px 2px 6px; }
    .req-section-h:first-child { margin-top:2px; }
    /* Dashboard .dash-sec panel → ecosystem_dashboard.css. */
    /* §visual-refresh v2 (owner 2026-07-04): lift the card set — a soft shadow + a fainter border +
 a slightly rounder corner reads as depth, not a flat bordered box. One rule for all cards. */
    .dcard, .rcard, .dash-sec, .doc-sec {
        border-color: var(--tg-theme-hint-color,#ededed); border-radius:12px;
        box-shadow: 0 1px 3px rgba(0,0,0,.05), 0 1px 2px rgba(0,0,0,.03); }
    /* §visual-refresh v2: sheet-picker hierarchy — the group row stays solid; the 2nd-row sub-sheets
 become quiet OUTLINE chips so two chip rows don't read as one grey wall. Active still pops blue. */
    .led-shs .rk:not(.active) { background:transparent;
        box-shadow: inset 0 0 0 1px var(--tg-theme-hint-color,#e2e2e2);
        color: var(--tg-theme-hint-color,#777); }
    /* collapsible section header (dashboard / settings / deal card) */
    .collap-h { display:flex; align-items:center; gap:6px; width:100%; padding:0; border:0;
        cursor:pointer; color:inherit; background:transparent; text-align:left; font:inherit;
        font-weight:600; user-select:none; }
    .collap-h:focus-visible { outline:2px solid var(--tg-theme-link-color,#3390ec);
        outline-offset:3px; border-radius:6px; }
    .collap-h .caret { transition:transform .15s; font-size:11px; opacity:.6; }
    .collap.closed .caret { transform:rotate(-90deg); }
    .collap.closed .collap-body { display:none; }
    /* settings-bar collap / set-* helpers → ecosystem_cabinet.css. */
