/* ==========================================================================
   Elementy interfejsu na stronach modułów (docs/27). Źródło: Figma CRE Prototyp, strona „16 Web · elementy”.
   Tokeny = motyw „Jasny neutralny” prototypu. Stany = klasy is-s0/is-s1/is-s2 (js/elements.js), przejścia jak Smart Animate.
   ========================================================================== */
.el{--e-surface:#FFFFFF;--e-alt:#F7F7F5;--e-ink:#1C1C1B;--e-t1:#1C1C1B;--e-t2:#6B6B69;--e-t3:#9C9C99;--e-accent:#2F5670;--e-accent-soft:#E1EAF0;--e-risk:#B8322C;--e-risk-soft:#F7E4E1;--e-warn:#B9781F;--e-warn-soft:#FBEFD9;--e-opp:#237A46;--e-line:#EBEBE8;--e-ease:cubic-bezier(.2,.8,.2,1);font-family:var(--sans);color:var(--e-t1);font-size:13px;line-height:18px}
.el .lucide{flex:none}
/* ---- web/crm/karta-klienta (D56, 29.10): klony bloków ekranu Klient / ACME, 800 px, płótno #EDEDEB + białe karty r24 ---- */
.el{--e-canvas:#EDEDEB;--e-card-line:rgba(255,255,255,.8)}
.b-win.el{display:flex;flex-direction:column;gap:16px;padding:16px;width:800px;max-width:none;height:528px;box-sizing:border-box;background:var(--e-canvas);border-radius:20px;box-shadow:none;overflow:hidden;color:var(--e-t1);font-size:13px;line-height:18px}
.page-winzoom .b-card__screen .b-win.el{width:800px;max-width:none;flex:none}
.el-karta .el-card{background:var(--e-surface);border-radius:24px;box-shadow:inset 0 0 0 1px var(--e-card-line)}
.el-card__t{display:block;font-size:16px;line-height:24px;font-weight:600;color:var(--e-t1)}
/* nagłówek klienta */
.el-head{display:flex;align-items:center;gap:16px}
.el-av{width:48px;height:48px;border-radius:12px;background:var(--e-ink);color:#fff;display:grid;place-items:center;font-size:14px;font-weight:600;flex:none}
.el-texts{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0}
.el-tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.el-chip{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;background:var(--e-alt);color:var(--e-t2);font-size:11px;line-height:16px;font-weight:700;letter-spacing:.5px;white-space:nowrap}
.el-chip--risk{background:var(--e-risk-soft);color:var(--e-risk)}
.el-tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:999px;font-size:12px;line-height:16px;white-space:nowrap}
.el-tag--soft{background:var(--e-alt);color:var(--e-t2)}
.el-tag--line{box-shadow:inset 0 0 0 1px #DFDFDC;color:var(--e-t2)} .el-tag--line .lucide{width:12px;height:12px}
.el-tag--measured{background:var(--e-ink);color:#fff;font-weight:600}
.el-tag--estimated{box-shadow:inset 0 0 0 1px #C9C9C5;color:var(--e-t1)}
.el-x{max-width:0;padding:0;opacity:0;overflow:hidden;margin-left:-8px;box-shadow:none;transition:max-width .45s var(--e-ease),padding .45s var(--e-ease),opacity .35s var(--e-ease),margin .45s var(--e-ease)}
.el.is-s1 .el-x,.el.is-s2 .el-x{max-width:240px;padding:0 8px;opacity:1;margin-left:0}
.el.is-s1 .el-tag--line.el-x,.el.is-s2 .el-tag--line.el-x{box-shadow:inset 0 0 0 1px #DFDFDC}
.el-contact{font-size:13px;line-height:18px;color:var(--e-t2)}
.el-actions{display:flex;align-items:center;gap:8px;flex:none}
.el-btn{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;border-radius:12px;font-size:14px;line-height:20px;font-weight:600;white-space:nowrap;flex:none}
.el-btn--primary{background:var(--e-ink);color:#fff}
.el-btn--soft{background:var(--e-accent-soft);color:var(--e-accent)}
.el-btn--s{height:32px;padding:0 12px;border-radius:8px;font-size:12px;line-height:16px;background:#fff;box-shadow:inset 0 0 0 1px #DFDFDC;color:var(--e-t1)}
.el-ibtn{width:40px;height:40px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1px #DFDFDC;display:grid;place-items:center;color:var(--e-t2);flex:none} .el-ibtn .lucide{width:20px;height:20px}
/* siatka 2×2 realnych paneli (Aktywność w 2ClickShop · Finanse i warunki ERP · Oferty · Mapa kontaktów), stałe okna 200 px z przycięciem */
.el-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.el-panel{display:flex;flex-direction:column;gap:12px;flex:none;box-sizing:border-box;padding:20px;background:var(--e-surface);border-radius:24px;box-shadow:inset 0 0 0 1px var(--e-card-line);min-width:0}
.el-panel__body{display:flex;flex-direction:column;gap:12px;flex:1;min-height:0;overflow:hidden} /* okno listy kończy się na wewnętrznej krawędzi panelu, bez przeciętych wierszy */
.el-karta .el-panel{height:200px} .el-panel--oferty .el-panel__body{gap:6px} .el-panel--kontakty{gap:10px} .el-panel--kontakty .el-panel__body{gap:10px}
.el-ph{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:none}
.el-ph>span{display:inline-flex;align-items:center;gap:4px;font-size:13px;line-height:18px;color:var(--e-accent);white-space:nowrap} .el-ph .lucide{width:14px;height:14px}
.el-ft{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.el-ft>span:first-child{font-size:14px;line-height:20px;color:var(--e-t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-ft>span:last-child{font-size:12px;line-height:16px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* wiersz „fact”: kafelek ikony 28 r10 + tytuł/meta + wartość */
.el-fact{flex:none} .el-fact__in{display:flex;align-items:center;gap:12px;padding:6px 0;border-top:1px solid var(--e-line)}
.el-sq{width:28px;height:28px;border-radius:10px;display:grid;place-items:center;flex:none} .el-sq .lucide{width:14px;height:14px}
.el-sq--opp{background:#E3F1E8;color:var(--e-opp)} .el-sq--accent{background:var(--e-accent-soft);color:var(--e-accent)} .el-sq--mute{background:#F1F1EF;color:var(--e-t2)} .el-sq--warn{background:var(--e-warn-soft);color:var(--e-warn)} .el-sq--risk{background:var(--e-risk-soft);color:var(--e-risk)}
.el-v{font-size:14px;line-height:20px;font-weight:600;white-space:nowrap;flex:none}
.el-v--opp{color:var(--e-opp)} .el-v--accent{color:var(--e-accent)} .el-v--mute{color:var(--e-t2)} .el-v--warn{color:var(--e-warn)} .el-v--risk{color:var(--e-risk)}
/* oferta: numer/kwota + StatusPill */
.el-offer{flex:none} .el-offer__in{display:flex;align-items:center;gap:12px}
.el-pill{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 10px 0 8px;border-radius:999px;font-size:12px;line-height:16px;font-weight:600;white-space:nowrap;flex:none}
.el-pill i{width:6px;height:6px;border-radius:50%;background:currentColor}
.el-pill--waiting{background:var(--e-warn-soft);color:var(--e-warn)} .el-pill--sent{background:#E3F1E8;color:var(--e-opp)} .el-pill--todo{background:var(--e-alt);color:var(--e-t2)} .el-pill--todo i{background:#939BA4}
/* osoba: Avatar 36 + imię z rolą + meta + status z kropką */
.el-person{display:flex;align-items:center;gap:12px;padding:6px 0;border-top:1px solid var(--e-line);flex:none}
.el-ava{width:36px;height:36px;border-radius:999px;background:var(--e-accent-soft);color:var(--e-accent);display:grid;place-items:center;font-size:12px;font-weight:600;flex:none}
.el-pn{display:flex;align-items:center;gap:8px;white-space:nowrap} .el-pn b{font-size:14px;line-height:20px;font-weight:600;color:var(--e-t1)}
.el-pn em{font-style:normal;font-size:12px;line-height:16px;padding:1px 8px;border-radius:6px;background:var(--e-alt);color:var(--e-t2)}
.el-st{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:16px;white-space:nowrap;flex:none} .el-st i{width:8px;height:8px;border-radius:50%;background:currentColor}
.el-st--warn{color:var(--e-warn)} .el-st--opp{color:var(--e-opp)} .el-st--mute{color:var(--e-t2)}
/* stany: nowy wiersz wjeżdża na górę panelu i spycha dolny pod przycięcie; licznik ofert 2 → 3 */
.el-swap{display:inline-grid} .el-swap>span{grid-area:1/1;white-space:nowrap;transition:opacity .45s var(--e-ease)}
.el .t-risk{opacity:0} .el.is-s2 .t-risk{opacity:1} .el.is-s2 .t-start{opacity:0}
.el-new{overflow:hidden;max-height:0;opacity:0;transform:translateY(-8px);margin-bottom:calc(var(--gap,0px) * -1);transition:max-height .5s var(--e-ease),opacity .4s var(--e-ease),transform .5s var(--e-ease),margin .5s var(--e-ease)}
.el-karta .el-new{--gap:12px} .el-karta .el-panel--oferty .el-new{--gap:6px}
.el.is-s1 .el-panel--b2b .el-new,.el.is-s2 .el-panel--b2b .el-new,.el.is-s2 .el-panel--oferty .el-new{max-height:60px;opacity:1;transform:none;margin-bottom:0}
/* bez ruchu (?qa=1, prefers-reduced-motion) */
html.qa .el *,.el.el-noanim *{transition:none!important}

/* ==========================================================================
   Zestaw wspólny dla 13 elementów CRM (29.10, D59): klony komponentów prototypu — KpiTile, PanelHeader, TypeChip, StatusPill, Tag, Button, FactRow, DataTable/Cell, Chip.
   Przełączniki stanów: .el-sw / .el-swb (tekst w miejscu), .el-new[data-s] (wiersz wjeżdża), .el-off1/.el-off2 (znika), .el-h1/.el-h2 (pojawia się bez zmiany wysokości).
   ========================================================================== */
.el-sw{display:inline-grid;vertical-align:top;max-width:100%} .el-swb{display:grid;min-width:0}
.el-sw>span,.el-swb>span{grid-area:1/1;opacity:0;transition:opacity .45s var(--e-ease)} .el-sw>span{white-space:nowrap}
.el-sw>.s0,.el-swb>.s0{opacity:1}
.el.is-s1 .el-sw:has(>.s1)>.s0,.el.is-s1 .el-swb:has(>.s1)>.s0,.el.is-s2 .el-sw:has(>.s1)>.s0,.el.is-s2 .el-swb:has(>.s1)>.s0,.el.is-s2 .el-sw:has(>.s2)>.s0,.el.is-s2 .el-swb:has(>.s2)>.s0{opacity:0}
.el.is-s1 .el-sw>.s1,.el.is-s1 .el-swb>.s1,.el.is-s2 .el-sw>.s1,.el.is-s2 .el-swb>.s1{opacity:1}
.el.is-s2 .el-sw:has(>.s2)>.s1,.el.is-s2 .el-swb:has(>.s2)>.s1{opacity:0} .el.is-s2 .el-sw>.s2,.el.is-s2 .el-swb>.s2{opacity:1}
.el.is-s1 .el-new[data-s="1"],.el.is-s2 .el-new[data-s="1"],.el.is-s2 .el-new[data-s="2"]{max-height:var(--nh,120px);opacity:1;transform:none;margin-bottom:0}
.el-off1,.el-off2{overflow:hidden;max-height:var(--nh,120px);transition:max-height .5s var(--e-ease),opacity .4s var(--e-ease),margin .5s var(--e-ease)}
.el.is-s1 .el-off1,.el.is-s2 .el-off1,.el.is-s2 .el-off2{max-height:0!important;opacity:0;margin-bottom:calc(var(--gap,0px) * -1)}
.el-h1,.el-h2{opacity:0;transition:opacity .45s var(--e-ease)} .el.is-s1 .el-h1,.el.is-s2 .el-h1,.el.is-s2 .el-h2{opacity:1}
/* Budżet wierszy (D87, 3.11): js/elements.js zwija wiersze .el-tr/.el-fact, które w danym stanie nie mieszczą się w panelu (tak jak w Figmie: tabela ma 4 wiersze, panel faktów przycina).
   .el-foldable = wiersz statyczny z --fh (zmierzona wysokość), .el-fold = zwinięty w tym stanie; wiersze .el-new/.el-off mają własne reguły wysokości. */
.el-foldable{overflow:hidden;max-height:var(--fh,var(--nh,120px));transition:max-height .5s var(--e-ease),opacity .4s var(--e-ease),margin .5s var(--e-ease)}
.el .el-fold{max-height:0!important;opacity:0!important;margin-bottom:calc(var(--gap,0px) * -1)!important}
/* klocki */
.el-chip{text-transform:uppercase} .el-chip--opp{background:#E3F1E8;color:var(--e-opp)} .el-chip--accent{background:var(--e-accent-soft);color:var(--e-accent)} .el-chip--warn{background:var(--e-warn-soft);color:var(--e-warn)}
.el-pill--info{background:var(--e-accent-soft);color:var(--e-accent)}
.el-fchip{display:inline-flex;align-items:center;height:32px;padding:0 12px;border-radius:999px;box-shadow:inset 0 0 0 1px #DFDFDC;font-size:13px;line-height:18px;white-space:nowrap;color:var(--e-t1);transition:background .35s var(--e-ease),color .35s var(--e-ease),box-shadow .35s var(--e-ease)}
.el-fchip--on,.el-fchip--a0,.el.is-s1 .el-fchip--a1,.el.is-s2 .el-fchip--a1{background:var(--e-ink);color:#fff;box-shadow:none}
.el.is-s1 .el-fchip--a0,.el.is-s2 .el-fchip--a0{background:transparent;color:var(--e-t1);box-shadow:inset 0 0 0 1px #DFDFDC}
.el-btn--line{background:#fff;box-shadow:inset 0 0 0 1px #DFDFDC;color:var(--e-t1);border-radius:999px;padding:0 18px}
.el-btn--sec{background:#fff;box-shadow:inset 0 0 0 1px #DFDFDC;color:var(--e-t1)} .el-btn--ghost{background:transparent;color:var(--e-t1)}
.el-btn--primary.el-btn--s{background:var(--e-ink);color:#fff;box-shadow:none} .el-btn--sec.el-btn--s{background:#fff}
.el-btn--r{border-radius:999px;height:44px;flex:1;gap:8px} .el-btn--r .lucide{width:16px;height:16px}
.el.is-s2 .el-btn--done2{background:#E3F1E8;color:var(--e-opp);box-shadow:none}
.el-tagt{font-style:normal;font-size:11px;line-height:16px;font-weight:600;white-space:nowrap} .el-tagt--measured{background:var(--e-ink);color:#fff;padding:1px 6px;border-radius:999px} .el-tagt--estimated{color:var(--e-accent)}
.el-contact{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-kpis{display:flex;gap:16px;flex:none}
.el-kpi{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;padding:20px;height:138px;box-sizing:border-box;background:var(--e-surface);border-radius:24px;box-shadow:inset 0 0 0 1px var(--e-card-line)}
.el-kpi__l{font-size:13px;line-height:18px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-kpi__v{font-size:36px;line-height:40px;font-weight:300;letter-spacing:-.5px;white-space:nowrap}
.el-kpi__m{display:flex;align-items:center;gap:8px;font-size:13px;line-height:18px;color:var(--e-t2);min-width:0} .el-kpi__m .el-tag{flex:none} .el-kpi__m>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-ava--sq{width:32px;height:32px;border-radius:10px;background:var(--e-alt);color:var(--e-t2);font-size:12px}
.el-ava--ai{width:28px;height:28px;border-radius:50%;background:var(--e-accent);color:#fff} .el-ava--ai .lucide{width:14px;height:14px} .el-ava--l{width:36px;height:36px;background:var(--e-accent-soft);color:var(--e-accent)} .el-ava--l .lucide{width:18px;height:18px}
.el-who{display:flex;align-items:center;gap:12px;min-width:0}
.el-sq--none{background:transparent;color:var(--e-t2)} .el-sq--ink{background:var(--e-alt);color:var(--e-ink)} .el-v--ink{color:var(--e-t1)}
.el-dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--e-t3);transition:background .4s var(--e-ease)} .el-dot--opp{background:var(--e-opp)} .el-dot--warn{background:var(--e-warn)} .el.is-s1 .el-dot1-opp .el-dot,.el.is-s2 .el-dot1-opp .el-dot{background:var(--e-opp)}
.el.is-s1 .el-tone1-risk .el-sq,.el.is-s2 .el-tone1-risk .el-sq{background:var(--e-risk-soft);color:var(--e-risk)} .el.is-s2 .el-tone2-warn .el-sq{background:var(--e-warn-soft);color:var(--e-warn)} .el.is-s2 .el-tone2-warn .el-v{color:var(--e-warn)}
.el-sq,.el-v,.el-kpi__v{transition:background .4s var(--e-ease),color .4s var(--e-ease)}
/* tabele (DataTable) */
.el-tb{gap:0;padding:4px 16px;overflow:hidden;min-height:0} .el-tb .el-card__t{padding:10px 0 6px}
.el-th{display:grid;grid-template-columns:var(--cols);gap:16px;padding:10px 0 8px;font-size:11.5px;line-height:16px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--e-t3);border-bottom:1px solid var(--e-line);flex:none}
.el-tr{flex:none} .el-tr__in{display:grid;grid-template-columns:var(--cols);gap:16px;align-items:center;padding:12px 0;border-bottom:1px solid var(--e-line)}
.el-td{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:14px;line-height:20px}
.el-td>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-td>span:nth-child(2){font-size:12px;line-height:16px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-td--r{text-align:right;align-items:flex-end}
.el-td--next{gap:4px;align-items:flex-start} .el-td--next>span:first-child{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:18px}
/* ---- web/crm/lejek: dwie kolumny tablicy ---- */
.el-kanrow{display:flex;gap:16px;flex:1;min-height:0}
.el-kan{--gap:12px;flex:1;min-width:0;display:flex;flex-direction:column;gap:12px;padding:10px;background:#F2F2F0;border-radius:16px;overflow:hidden}
.el-kan__h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:2px 0 2px 4px;flex:none} .el-kan__tt{min-width:0;flex:1}
.el-kan__t{display:flex;align-items:center;gap:8px;font-size:14px;line-height:20px} .el-kan__t b{font-weight:600}
.el-cnt{display:inline-flex;align-items:center;height:20px;padding:0 6px;border-radius:6px;background:#E6E6E3;font-size:12px;font-weight:600;color:var(--e-t2)} .el-cnt--warn{background:var(--e-warn-soft);color:var(--e-warn)}
.el-kan__s{display:block;font-size:12px;line-height:16px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-kan__acts{display:flex;gap:6px;color:var(--e-t3);padding-top:4px} .el-kan__acts .lucide{width:16px;height:16px}
.el-kcard{flex:none;--nh:190px} .el-kcard__in{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:var(--e-surface);border-radius:14px}
.el-kcard__top{display:flex;justify-content:space-between;gap:8px;font-size:14px;line-height:20px} .el-kcard__top b{font-weight:600}
.el-kcard__t{font-size:12px;line-height:16px;font-weight:600;color:var(--e-opp)} .el-kcard__m{font-size:12px;line-height:16px;color:var(--e-t2)}
.el-att{display:flex;align-items:flex-start;gap:6px;padding:6px 8px;border-radius:8px;font-size:12px;line-height:16px;margin-top:2px;min-height:28px;box-sizing:border-box} .el-att .lucide{width:14px;height:14px;flex:none;margin-top:1px}
.el-att--warn{background:var(--e-warn-soft)} .el-att--warn .lucide{color:var(--e-warn)} .el-att--accent{background:var(--e-accent-soft)} .el-att--accent .lucide{color:var(--e-accent)} .el-att--mute{background:var(--e-alt)} .el-att--mute .lucide{color:var(--e-t2)}
.el-kcard__f{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:6px;font-size:12px;color:var(--e-t3)}
/* ---- web/crm/plan-dnia ---- */
.el-pd__panel{height:496px;padding:20px;gap:16px;overflow:hidden}
.el-pd__head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex:none}
.el-pd__title b{display:block;font-size:26px;line-height:32px;font-weight:400} .el-pd__title span{display:flex;align-items:center;gap:8px;font-size:14px;line-height:20px;color:var(--e-t2);white-space:nowrap}
.el-tabs{display:flex;gap:2px;padding:4px;background:var(--e-alt);border-radius:999px;flex:none} .el-tabs>span{padding:8px 16px;border-radius:999px;font-size:14px;line-height:20px;white-space:nowrap} .el-tabs>.is-on{background:var(--e-ink);color:#fff} .el-tabs .el-sw>span{padding:0;border-radius:0;background:none}
.el-os{position:relative;height:112px;flex:none}
.el-os__t{position:absolute;top:0;font-size:12px;line-height:16px;color:var(--e-t3);transform:translateX(-50%)}
.el-call{position:absolute;top:32px;width:138px;height:76px;border-radius:12px;padding:12px 12px 12px 14px;box-sizing:border-box;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.el-call__r{display:flex;align-items:center;gap:6px;font-size:12px;line-height:16px} .el-call__r .lucide{width:14px;height:14px} .el-call__n{font-size:14px;line-height:20px;white-space:nowrap} .el-call__v{font-size:12px;line-height:16px;opacity:.75;white-space:nowrap}
.el-call--dark{background:var(--e-ink);color:#fff} .el-call--risk{background:var(--e-risk-soft)} .el-call--accent{background:var(--e-accent-soft)} .el-call--opp{background:#E3F1E8}
.el-pd__sub{display:flex;align-items:baseline;gap:8px;flex:none} .el-pd__sub b{font-size:16px;line-height:24px;font-weight:600} .el-pd__sub span{font-size:13px;color:var(--e-t2)}
.el-pd__list{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.el-task{flex:none;--nh:72px} .el-task__in{display:flex;align-items:center;gap:14px;padding:14px 4px;border-top:1px solid var(--e-line)}
.el-sq--l{width:40px;height:40px;border-radius:12px} .el-sq--l .lucide{width:20px;height:20px}
.el-task__v{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none} .el-task__v b{font-size:14px;line-height:20px;font-weight:600} .el-task__v span{font-size:12px;line-height:16px;color:var(--e-t3)}
/* ---- web/crm/kalendarz ---- */
.el-cal__panel{height:496px;padding:0;gap:0;overflow:hidden}
.el-cal__days,.el-cal__all{display:grid;grid-template-columns:64px 1fr 1fr 1fr;border-bottom:1px solid var(--e-line);flex:none}
.el-cal__days{padding:12px 0 10px} .el-cal__days>div{padding-left:12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.el-cal__d{display:flex;align-items:center;gap:8px;font-size:13px;line-height:18px} .el-cal__d em{font-style:normal;color:var(--e-t2)} .el-cal__d b{font-weight:600} .el-cal__d i{font-style:normal;width:28px;height:28px;border-radius:50%;background:var(--e-ink);color:#fff;display:grid;place-items:center;font-weight:600;font-size:13px}
.el-cal__ds{font-size:12px;line-height:16px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-cal__all{padding:8px 0;min-height:40px} .el-cal__g{font-size:12px;line-height:16px;color:var(--e-t2);padding-left:12px} .el-cal__all>div{padding:0 6px;min-width:0}
.el-cal__ad{display:block;padding:3px 8px;border-radius:6px;font-size:12px;line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-cal__ad--risk{background:var(--e-risk-soft);color:var(--e-risk)} .el-cal__ad--warn{background:var(--e-warn-soft);color:var(--e-warn)}
.el-cal__grid{display:grid;grid-template-columns:64px 1fr 1fr 1fr;flex:1;min-height:0;overflow:hidden}
.el-cal__hours{position:relative} .el-cal__h{position:absolute;right:10px;font-size:12px;line-height:16px;color:var(--e-t3)}
.el-cal__col{position:relative;border-left:1px solid var(--e-line)} .el-cal__ln{position:absolute;left:0;right:0;height:1px;background:var(--e-line)}
.el-cb{position:absolute;left:6px;right:6px;border-radius:8px;padding:6px 10px;box-sizing:border-box;overflow:hidden;display:flex;flex-direction:column;gap:2px;font-size:12px;line-height:16px;border-left:3px solid}
.el-cb b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-cb>span{color:var(--e-t2)}
.el-cb__i{display:flex;align-items:center;gap:6px;white-space:nowrap} .el-cb__i::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--e-t3);flex:none} .el-cb__i--risk::before{background:var(--e-risk)} .el-cb__i--accent::before{background:var(--e-accent)} .el-cb__i--opp::before{background:var(--e-opp)}
.el-cb--dark{background:#F1F1EF;border-color:var(--e-ink)} .el-cb--accent{background:var(--e-accent-soft);border-color:var(--e-accent)} .el-cb--accent b{color:var(--e-accent)}
.el-cb--meet{background:var(--e-accent-soft);border-color:var(--e-accent)} .el-cb--meet b{color:var(--e-accent)}
.el-cb--dash{border:1px dashed var(--e-warn);background:transparent} .el-cb--dash b{color:var(--e-accent)}
.el-cb--warn{background:var(--e-warn-soft);border-color:var(--e-warn)} .el-cb--warn b,.el-cb--warn>span{color:var(--e-warn)}
/* ---- web/crm/historia ---- */
.el-hist__panel .el-panel__body{gap:0}
.el-legend{display:flex;gap:16px;padding:8px 0 10px;flex:none;font-size:12px;line-height:16px;color:var(--e-t2)} .el-lg{display:flex;align-items:center;gap:6px} .el-lg i{width:8px;height:8px;border-radius:50%;background:var(--e-t3)}
.el-lg--opp{background:var(--e-opp)!important} .el-lg--accent{background:var(--e-accent)!important} .el-lg--warn{background:var(--e-warn)!important} .el-lg--ink{background:var(--e-ink)!important} .el-lg--risk{background:var(--e-risk)!important}
.el-ev{flex:none;--nh:60px} .el-ev__in{display:flex;align-items:center;gap:12px;padding:7px 0;height:53px;box-sizing:border-box;border-top:1px solid var(--e-line)} .el-ev__d{width:48px;flex:none;font-size:13px;line-height:18px;color:var(--e-t2)}
/* ---- web/crm/prospekty · segmenty · raporty · plan-i-prognoza (tabele) ---- */
.el-prosp__tb{--cols:minmax(0,1fr) 150px 140px 200px;flex:1}
.el-fchips{display:flex;gap:8px;flex:none;overflow:hidden}
.el-dyn{--nh:60px;flex:none} .el-dyn__in{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--e-accent-soft);border-radius:12px;color:var(--e-accent)} .el-dyn__in b{font-size:14px;line-height:20px;font-weight:600;white-space:nowrap} .el-dyn__in>span{flex:1;min-width:0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-seg__tb{--cols:minmax(0,1fr) 180px 150px 180px;flex:1}
.el-cyc{gap:6px} .el-cyc>span:first-child{font-size:12px;color:var(--e-t2)} .el-cyc b{font-size:14px;color:var(--e-t1);font-weight:400}
.el-cyc__b{display:block;height:4px;width:100%;background:var(--e-line);border-radius:2px} .el-cyc__f{display:block;height:4px;border-radius:2px;background:#B4B4B0} .el-cyc__f--risk{background:var(--e-risk)}
.el-seg .el-off1{--nh:72px;--gap:0px}
.el-pp__p1{flex:none;gap:12px} .el-pp__head{display:flex;align-items:baseline;gap:12px} .el-pp__head span{font-size:13px;color:var(--e-t2)}
.el-bar{display:flex;flex-direction:column;gap:8px;flex:none} .el-bar__l{display:flex;justify-content:space-between;font-size:12px;line-height:16px;color:var(--e-t2);padding-right:14px} .el-bar__l span{display:flex;align-items:center;gap:6px}
.el-bar__row{display:flex;gap:6px;height:44px;align-items:center;position:relative;padding-right:14px}
.el-bar__done{width:71%;height:44px;border-radius:999px;background:var(--e-ink);color:#fff;display:flex;align-items:center;padding:0 18px;box-sizing:border-box;font-size:13px;font-weight:600;white-space:nowrap;flex:none;transition:width .6s var(--e-ease)} .el.is-s1 .el-bar__done,.el.is-s2 .el-bar__done{width:75%}
.el-bar__exp{flex:1;min-width:0;height:44px;border-radius:999px;border:1px dashed var(--e-accent);background:var(--e-accent-soft);color:var(--e-accent);display:flex;align-items:center;padding:0 18px;box-sizing:border-box;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden}
.el-bar__plan{position:absolute;right:12px;top:-6px;width:2px;height:56px;background:var(--e-ink)}
.el-bigs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px;flex:none}
.el-big__n{display:flex;align-items:baseline;gap:6px} .el-big__n b{font-size:48px;line-height:56px;font-weight:300;letter-spacing:-1px;white-space:nowrap} .el-big__n em{font-style:normal;font-size:14px;color:var(--e-t2)}
.el-big__c{display:flex;align-items:center;gap:6px;font-size:12px;line-height:16px;color:var(--e-t2);white-space:nowrap}
.el-pp__p2{--cols:minmax(0,1fr) 150px 150px 150px;flex:1;padding:8px 16px;gap:0} .el-pp__p2 .el-th{padding:8px 0 6px} .el-pp__p2 .el-tr__in{padding:8px 0}
.el-rap__p1{flex:none;gap:12px} .el-rap__sum{display:flex;align-items:center;gap:8px;font-size:13px;line-height:18px;color:var(--e-t2);min-width:0} .el-rap__sum>span{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.el-flow{display:flex;align-items:flex-start;gap:8px}
.el-stage{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;padding:12px 14px;background:var(--e-alt);border-radius:12px;min-height:102px;box-sizing:border-box}
.el-stage__l{display:flex;align-items:center;gap:6px;font-size:11px;line-height:16px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap} .el-stage__l i{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
.el-stage__l--accent{color:var(--e-accent)} .el-stage__l--risk{color:var(--e-risk)} .el-stage__l--opp{color:var(--e-opp)}
.el-stage>b{font-size:20px;line-height:24px;font-weight:600;white-space:nowrap} .el-stage__b{display:block;height:4px;background:var(--e-line);border-radius:2px} .el-stage__f{display:block;height:4px;border-radius:2px} .el-stage__f--accent{background:var(--e-accent)} .el-stage__f--risk{background:var(--e-risk)} .el-stage__f--opp{background:var(--e-opp)}
.el-stage>span:last-child{font-size:12px;line-height:16px;color:var(--e-t2)}
.el-arr{display:flex;align-items:center;height:102px;color:var(--e-t3);flex:none} .el-arr .lucide{width:16px;height:16px}
.el-rap__p2{--cols:minmax(0,1fr) 110px 80px 130px 150px;flex:1;padding:16px 16px 0;gap:10px}
.el-rap__head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none} .el-rap__chips{display:flex;gap:8px;align-items:center}
.el-rap__p2 .el-tr__in{padding:12px 0;height:65px;box-sizing:border-box} .el-rap__p2 .el-tr{--nh:66px}
/* ---- web/crm/mobile (393 × 852) ---- */
.b-win.el-phone,.page-winzoom .b-card__screen .b-win.el-phone{width:393px;height:852px;padding:0;gap:0;display:block;position:relative;border-radius:44px;background:#F1F1EF radial-gradient(circle at 20% 15%,rgba(47,86,112,.12),transparent 45%),#F1F1EF;box-shadow:0 0 0 8px var(--e-ink),0 0 0 9px rgba(0,0,0,.25);overflow:hidden;font-size:14px;line-height:20px}
.el-ph__top{position:absolute;top:0;left:0;right:0;height:111px;background:rgba(241,241,239,.92);backdrop-filter:blur(12px);z-index:2}
.el-ph__status{height:54px;display:flex;align-items:center;justify-content:space-between;padding:16px 28px 0 32px;box-sizing:border-box;position:relative} .el-ph__status b{font-size:15px;font-weight:600}
.el-ph__island{position:absolute;left:50%;top:11px;transform:translateX(-50%);width:126px;height:37px;border-radius:20px;background:#111}
.el-ph__sig{display:flex;gap:6px;color:var(--e-ink)} .el-ph__sig .lucide{width:16px;height:16px}
.el-ph__bar{height:56px;display:flex;align-items:center;gap:10px;padding:0 16px}
.el-ph__logo{width:36px;height:36px;border-radius:50%;background:var(--e-accent);color:#fff;display:grid;place-items:center;font-weight:600;font-size:15px;flex:none}
.el-ph__bar .el-ft{flex:1} .el-ph__bar .el-ft b{display:block;font-size:15px;line-height:18px;font-weight:600} .el-ph__bar .el-ft span{font-size:12px;color:var(--e-t2)}
.el-ph__ib{width:40px;height:40px;border-radius:50%;background:#fff;display:grid;place-items:center;position:relative;color:var(--e-t2);flex:none} .el-ph__ib .lucide{width:18px;height:18px} .el-ph__ib--on{background:var(--e-accent-soft);color:var(--e-accent)}
.el-ph__ib i{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;border-radius:9px;background:var(--e-accent);color:#fff;font-size:11px;font-style:normal;display:grid;place-items:center;padding:0 4px;box-sizing:border-box}
.el-ph__ava{width:40px;height:40px;border-radius:50%;background:var(--e-accent-soft);color:var(--e-accent);font-size:13px;font-weight:600;display:grid;place-items:center;flex:none}
.el-ph__content{position:absolute;top:122px;left:16px;right:16px;bottom:84px;overflow:hidden}
.el-ph__card{background:#fff;border-radius:20px;padding:16px;display:flex;flex-direction:column;gap:12px}
.el-ph__eyebrow{display:flex;align-items:center;justify-content:space-between;gap:6px} .el-ph__eyebrow b{font-size:11px;line-height:16px;letter-spacing:.06em;text-transform:uppercase;color:var(--e-t2);font-weight:700;white-space:nowrap}
.el-ph__card h4{margin:0;font-size:22px;line-height:28px;font-weight:600} .el-ph__meta{margin:0;font-size:14px;line-height:20px;color:var(--e-t2)}
.el-ph__val{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap} .el-ph__val b{font-size:30px;line-height:34px;font-weight:300} .el-ph__val span{font-size:14px;color:var(--e-t2)} .el-ph__val em{font-style:normal;font-size:12px;color:var(--e-t2)}
.el-ph__acts{display:flex;gap:8px} .el-ph__lbl{font-size:11px;line-height:16px;letter-spacing:.06em;text-transform:uppercase;color:var(--e-t3);font-weight:600;margin-top:2px}
.el-why{display:flex;flex-direction:column;gap:2px;padding-left:18px;position:relative;font-size:14px;line-height:20px} .el-why::before{content:"";position:absolute;left:0;top:7px;width:8px;height:8px;border-radius:50%;background:var(--e-warn)} .el-why--risk::before{background:var(--e-risk)} .el-why em{font-style:normal;font-size:12px;line-height:16px;color:var(--e-t2)}
.el-note{--nh:220px;flex:none} .el-note__in{background:var(--e-accent-soft);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px} .el-note__h{display:flex;align-items:center;gap:8px} .el-note__h b{display:block;font-size:14px;line-height:18px;font-weight:600} .el-note__h span{font-size:12px;color:var(--e-t2)}
.el-note p{margin:0;font-size:14px;line-height:20px} .el-note__ok{color:var(--e-opp)} .el-note__q{font-size:13px;line-height:18px;color:var(--e-t2)}
.el-ph__nav{position:absolute;left:0;right:0;bottom:0;height:84px;background:rgba(241,241,239,.94);backdrop-filter:blur(12px);z-index:2}
.el-ph__tabs{display:flex;padding:6px 8px 0;height:49px} .el-ph__tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;line-height:14px;color:var(--e-t2)} .el-ph__tab .lucide{width:20px;height:20px;padding:4px 16px;border-radius:14px;box-sizing:content-box} .el-ph__tab.is-on .lucide{background:var(--e-ink);color:#fff} .el-ph__tab em{font-style:normal}
.el-ph__home{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);width:134px;height:5px;border-radius:3px;background:var(--e-ink)}
.el-ph__fab{position:absolute;right:16px;bottom:100px;width:56px;height:56px;border-radius:50%;background:var(--e-ink);color:#fff;display:grid;place-items:center;z-index:3} .el-ph__fab .lucide{width:24px;height:24px}
/* ---- web/crm/warunki ---- */
.el-war__panel .el-fact__in{padding:3px 0}
/* ---- web/crm/sekwencje ---- */
.el-mail__panel{height:496px;padding:20px;gap:16px;overflow:hidden}
.el-mail__head{display:flex;align-items:center;gap:12px;flex:none} .el-mail__head .el-ft b{display:block;font-size:20px;line-height:28px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-mail__head .el-ft span{font-size:13px;line-height:18px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-mail__f{display:grid;grid-template-columns:96px 1fr;gap:12px;font-size:14px;line-height:20px;flex:none} .el-mail__f span:first-child{font-size:13px;color:var(--e-t3)}
.el-seq{--nh:40px;flex:none} .el-seq__in{padding:8px 12px;background:var(--e-alt);border-radius:10px;font-size:13px;line-height:18px;min-width:0} .el-seq .el-swb>span{display:flex;align-items:center;gap:12px;min-width:0} .el-seq b{font-weight:600;white-space:nowrap} .el-seq .el-swb span>span{color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.el-mail__body{background:var(--e-alt);border-radius:16px;padding:18px 20px;display:flex;flex-direction:column;gap:12px;font-size:14px;line-height:20px;flex:none} .el-mail__body p{margin:0}
.el-mail__ai{display:flex;align-items:center;gap:6px;font-size:12px;line-height:16px;color:var(--e-t3);padding-top:8px} .el-mail__ai .lucide{width:14px;height:14px}
.el-attach{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:8px;box-shadow:inset 0 0 0 1px #DFDFDC;font-size:12px;align-self:flex-start;flex:none;white-space:nowrap} .el-attach .lucide{width:14px;height:14px}
.el-mail__acts{display:flex;gap:8px;flex:none}
/* ---- web/crm/uprawnienia ---- */
.el-upr__p .el-panel__body{gap:0} .el-srow{flex:none;--nh:70px}
.el-srow__in{display:grid;grid-template-columns:minmax(0,1fr) 110px 190px 100px;gap:16px;align-items:center;padding:8px 0;border-top:1px solid var(--e-line)}
.el-srow__s{font-size:13px;line-height:18px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-srow__v{font-size:14px;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;gap:8px;align-items:center} .el-srow__c{font-size:12px;line-height:16px;color:var(--e-t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-srow--warn .el-srow__in{background:var(--e-warn-soft);border-radius:8px;padding:8px 10px;border-top:0} .el-srow--ok .el-srow__in{background:#E3F1E8;border-radius:8px;padding:8px 10px;border-top:0}
/* ---- web/crm/integracje ---- */
.el-int__p .el-panel__body{gap:0} .el-src{flex:none;--nh:64px}
.el-src__in{display:flex;align-items:center;gap:12px;padding:7px 0;min-height:51px;box-sizing:border-box} .el-src__st{font-size:13px;line-height:18px;color:var(--e-t2);white-space:nowrap;flex:none}
.el-src--ok .el-src__in{background:#E3F1E8;border-radius:8px;padding:6px 10px}
/* mobile: elementy zostają w szerokości projektowej i są skalowane zoomem do pola (js/crm.js), jak sceny .c-scene */
@media (max-width:700px){
  .page-winzoom .b-card__screen .b-win.el{width:800px;max-width:none;flex:none}
  .page-winzoom .b-card__screen .b-win.el-phone{width:393px}
}
/* ==========================================================================
   Revenue Flow na Home (30.10, D60, docs/27 §5): osiem etapów, jeden klient Nowak-Bud; klocki wspólne jak wyżej, poniżej tylko reguły per element.
   Źródło: design/sitegen/elements/_css/flow-0N.css (sklejane tutaj; edytuj tam i sklej ponownie).
   ========================================================================== */
/* ---- web/flow/01-prospecting (Figma set 600:11713): KPI ×3 + tabela Prospekty, lead Nowak-Bud wjeżdża na górę, potem sygnał SLA ---- */
.el-f01 .el-tb{--cols:minmax(0,1fr) 150px 140px 200px;flex:1}
.el-f01 .el-tr{--nh:110px}
.el-f01 .el-kpi__m .el-sw{width:100%} .el-f01 .el-kpi__m .el-sw>span{overflow:hidden;text-overflow:ellipsis;min-width:0}
/* ---- web/flow/02-sales (Figma set 601:12034): dwie kolumny tablicy, karta Nowak-Bud dostaje NBA, potem przechodzi do W działaniu ---- */
.el-f02 .el-f02__att1{background:var(--e-accent-soft);transition:background .4s var(--e-ease)} .el-f02 .el-f02__att1 .lucide{color:var(--e-accent);transition:color .4s var(--e-ease)}
.el-f02.is-s1 .el-f02__att1,.el-f02.is-s2 .el-f02__att1{background:var(--e-warn-soft)} .el-f02.is-s1 .el-f02__att1 .lucide,.el-f02.is-s2 .el-f02__att1 .lucide{color:var(--e-warn)}
.el-f02 .el-f02__att1 .el-swb>span{display:flex;align-items:flex-start;gap:6px}
.el-f02 .el-kcard.el-off2{--gap:12px}
/* ---- web/flow/03-offer (Figma set 602:12636): KPI ×3 + tabela Oferty; wiersz 2024/1241 Nowak-Bud zmienia aktywność, status i następny krok ---- */
.el-f03 .el-tb{--cols:minmax(0,1fr) 170px 140px 190px;flex:1}
.el-f03 .el-tr__in{min-height:65px;box-sizing:border-box}
.el-f03 .el-f03__delta{font-style:normal;display:inline-block;background:#E3F1E8;color:var(--e-opp);padding:1px 6px;border-radius:999px;font-size:11px;line-height:16px;font-weight:600;margin-right:6px;vertical-align:top}
.el-f03 .el-act>span:first-child{transition:color .4s var(--e-ease)} .el-f03 .el-act--risk>span:first-child{color:var(--e-risk)}
.el-f03.is-s1 .el-act--nb>span:first-child{color:var(--e-opp)} .el-f03.is-s2 .el-act--nb>span:first-child{color:var(--e-risk)}
.el-f03 .el-act .el-sw{width:100%} .el-f03 .el-act .el-sw>span{overflow:hidden;text-overflow:ellipsis;min-width:0}
.el-f03 .el-nx{display:flex;gap:8px;align-items:flex-start;flex-direction:row} .el-f03 .el-nx .lucide{width:16px;height:16px;color:var(--e-t2);margin-top:1px}
.el-f03 .el-nx>span:not(.el-swb){display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;font-size:14px;line-height:18px}
.el-f03 .el-nx .el-swb{width:100%} .el-f03 .el-nx .el-swb>span{display:flex;gap:8px;align-items:flex-start} .el-f03 .el-nx .el-swb>span>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;font-size:14px;line-height:18px;min-width:0}
.el-f03 .el-kpi__m .el-sw{width:100%} .el-f03 .el-kpi__m .el-sw>span{overflow:hidden;text-overflow:ellipsis;min-width:0}
/* ---- web/flow/04-commerce (Figma set 603:13239): KPI ×3 + tabela zamówień; koszyk znika, zamówienie 2026/0931 wjeżdża na górę ---- */
.el-f04 .el-tb{--cols:110px 140px 100px 130px minmax(0,1fr);flex:1}
.el-f04 .el-tr{--nh:66px;--gap:0px} .el-f04 .el-tr__in{min-height:65px;box-sizing:border-box}
.el-f04 .el-th--r{text-align:right} .el-f04 .el-td--r>span{max-width:100%}
.el-f04 .el-td .el-sw{width:100%} .el-f04 .el-td .el-sw>span{overflow:hidden;text-overflow:ellipsis;min-width:0}
.el-f04 .el-kpi__m .el-sw{width:100%} .el-f04 .el-kpi__m .el-sw>span{overflow:hidden;text-overflow:ellipsis;min-width:0}
/* ---- web/flow/05-fulfillment (Figma set 605:13689) ---- */
.el-f05 .el-panel__body{gap:0} .el-f05 .el-ev{--gap:0px}
.el-f05 .el-ph .el-card__t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* ---- web/flow/06-service (Figma set 606:14044) ---- */
.el-f06 .el-fact__in{padding:3px 0} .el-f06 .el-new{--gap:6px} .el-f06 .el-fact{--nh:48px}
.el-f06 .el-sq--dark{background:var(--e-ink);color:#fff} .el-f06 .el-v--dark{color:var(--e-t1)}
.el-f06 .el-ph .el-card__t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.el-f06 .el-f06__st{transition:background .4s var(--e-ease),color .4s var(--e-ease)} .el.is-s2 .el-f06__st{background:#E3F1E8;color:var(--e-opp)}
.el-f06__status .el-sq .lucide:nth-child(2){display:none}
.el.is-s2 .el-f06__status .el-sq .lucide:first-child{display:none} .el.is-s2 .el-f06__status .el-sq .lucide:nth-child(2){display:block}
.el.is-s2 .el-f06__status .el-sq{background:#E3F1E8;color:var(--e-opp)} .el.is-s2 .el-f06__status .el-v{color:var(--e-opp)}
/* ---- web/flow/07-retention (Figma set 607:14808) ---- */
.el-f07 .el-new{--gap:16px;flex:none} .el-f07__why{--nh:170px} .el-f07__act{--nh:220px}
.el-f07__why .el-panel{gap:8px} .el-f07__why p{margin:0;font-size:13px;line-height:18px;color:var(--e-t2)} .el-f07__why .el-ph{padding-bottom:4px}
.el-f07__act .el-panel{padding:12px 20px;gap:0}
.el-f07__ah{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 0 2px} .el-f07__ah b{font-size:16px;line-height:24px;font-weight:600;white-space:nowrap}
.el-f07__ah span{font-size:12px;line-height:16px;color:var(--e-t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-f07 .el-task__in{padding:12px 0 6px;border-top:0}
.el-f07__eb{font-style:normal;display:block;font-size:11px;line-height:16px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--e-risk)}
.el-f07__main>span:nth-child(2){font-size:16px;line-height:24px;font-weight:500;color:var(--e-t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-f07__rhythm .el-panel__body{gap:0} .el-f07 .el-ev{--gap:0px}
.el-f07 .el-kpi__m>.el-sw:first-child{flex:none}
/* ---- web/flow/08-revenue-again (Figma set 612:15154) ---- */
.el-f08__row{display:flex;gap:16px;flex:1;min-height:0;align-items:flex-start} .el-f08__row>.el-panel{flex:1;min-width:0} .el-f08__cats .el-panel__body{gap:18px;flex:none}
.el-f08__right{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px;overflow:hidden} .el-f08__right .el-new{--gap:16px;flex:none} .el-f08__q{--nh:190px}
.el-f08__cat{display:grid;grid-template-columns:118px minmax(0,1fr) auto;gap:12px;align-items:center;font-size:13px;line-height:18px;flex:none}
.el-f08__cat>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-f08__cat>span:last-child{font-size:12px;color:var(--e-t2);white-space:nowrap}
.el-f08__bar{display:block;height:6px;border-radius:3px;background:var(--e-line);overflow:hidden} .el-f08__fill{display:block;height:6px;border-radius:3px;background:var(--e-accent)}
.el-f08__cat--miss>span:first-child{color:var(--e-opp)} .el-f08__cat--miss .el-f08__fill{background:var(--e-opp)}
.el-f08__q__in{background:var(--e-surface);border-radius:20px;padding:16px;display:flex;flex-direction:column;gap:6px;box-shadow:inset 0 0 0 1px var(--e-card-line)}
.el-f08__qr{display:flex;align-items:center;justify-content:space-between;gap:8px} .el-f08__qr b{font-size:14px;line-height:20px;font-weight:600;white-space:nowrap}
.el-f08__qn{font-size:16px;line-height:24px;font-weight:600} .el-f08__qt{font-size:13px;line-height:18px} .el-f08__qm{font-size:12px;line-height:16px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-f08__sr{display:flex;justify-content:space-between;gap:12px;font-size:14px;line-height:20px;flex:none} .el-f08__sr span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.el-f08__sr span:last-child{font-size:12px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-f08 .el-ph .el-card__t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* ==========================================================================
   Revenue Pulse (1.11, docs/27 §6): sześć elementów web/pulse/01…06, klony ekranów Dziś, Klient / ACME, Analityka, Symulator, Do zatwierdzenia, Wyniki.
   ========================================================================== */
/* ---- web/pulse/01-dzis (Figma set 660:15579): karta w fokusie ACME + Od wczoraj (rząd dwóch zdarzeń) ---- */
.el-p01__focus{flex:none;gap:16px;padding:24px}
.el-p01__top{display:flex;align-items:flex-start;gap:24px} .el-p01__left{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.el-p01__title{font-size:24px;line-height:32px;font-weight:500;letter-spacing:-.2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.el-tag--opp{background:#E3F1E8;color:var(--e-opp)}
.el-p01__val{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.el-p01__n{font-size:36px;line-height:40px;font-weight:300;letter-spacing:-.5px;white-space:nowrap} .el-p01__n em{font-style:normal;font-size:14px;margin-left:6px;color:var(--e-t2)}
.el-p01__conf{display:inline-flex;align-items:center;gap:8px;font-size:12px;line-height:16px;color:var(--e-t2);white-space:nowrap}
.el-p01__lbl{font-size:11px;line-height:16px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--e-t3)}
.el-p01__r{display:flex;align-items:center;gap:10px;margin-top:-6px} .el-p01__r>span{flex:1;min-width:0;font-size:14px;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-p01__r>em{font-style:normal;font-size:12px;line-height:16px;color:var(--e-t3);white-space:nowrap}
.el-dot--risk{background:var(--e-risk)}
.el-p01__acts{display:flex;align-items:center;gap:10px;padding-top:4px} .el-p01__acts .el-btn .lucide{width:16px;height:16px;margin-right:8px} .el-p01__why{color:var(--e-accent);padding:0 8px}
.el-p01__stream{flex:1;min-height:0;gap:12px;padding:20px 24px}
.el-p01__sh{display:flex;flex-direction:column;gap:2px} .el-p01__sh>span{font-size:13px;line-height:18px;color:var(--e-t2)}
.el-p01__evs{display:grid;grid-template-columns:1fr 1fr;gap:16px;min-height:0}
.el-p01__ev{display:flex;align-items:center;gap:12px;min-width:0} .el-p01__ev .el-sq{width:40px;height:40px;border-radius:12px} .el-p01__ev .el-sq .lucide{width:18px;height:18px}
.el-p01__ev .el-ft>span:first-child{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:20px} .el-p01__ev b{font-weight:600} .el-p01__ev .el-v{font-weight:600}
/* ---- web/pulse/02-klient (662:15534): customer-header + KPI ×3 + prognoza + kategorie ---- */
.el-p02 .el-head{flex:none} .el-p02 .el-chip--risk{text-transform:uppercase}
.el-p02__delta{font-style:normal;display:inline-flex;align-items:center;height:20px;padding:0 6px;border-radius:999px;font-size:12px;font-weight:600;margin-right:8px;flex:none}
.el-p02__delta--risk{background:var(--e-risk-soft);color:var(--e-risk)} .el-p02__delta--opp{background:#E3F1E8;color:var(--e-opp)}
.el-p02__row{display:flex;gap:16px;flex:1;min-height:0} .el-p02__prog{flex:1;min-width:0;gap:16px} .el-p02__cats{width:280px;flex:none;gap:14px} .el-p02__cats .el-panel__body{gap:12px}
.el-p02__big{display:flex;flex-direction:column;gap:6px} .el-p02__vr{display:flex;align-items:center;gap:12px} .el-p02__vr>b{font-size:28px;line-height:34px;font-weight:300;letter-spacing:-.4px;white-space:nowrap}
.el-p02__sub{font-size:13px;line-height:18px;color:var(--e-t2)} .el-p02__sub>span{white-space:normal}
.el-p02__facts{display:grid;grid-template-columns:1fr 1fr;gap:12px} .el-p02__cell{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--e-alt);border-radius:12px;min-width:0}
.el-p02__cell b{font-size:14px;line-height:20px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-p02__cell span{font-size:12px;line-height:16px;color:var(--e-t2)}
/* ---- web/pulse/03-intelligence (662:16997): mapa przychodu (4 etapy) + rejestr (3 kolumny) + czynniki ---- */
.el-p03__map{flex:none;gap:12px} .el-p03__row{display:flex;gap:16px;flex:1;min-height:0}
.el-p03__reg{--cols:minmax(0,1fr) 92px 124px;flex:1;min-width:0;padding:4px 16px;gap:0} .el-p03__reg .el-tr__in{padding:12px 0;height:65px;box-sizing:border-box} .el-p03__reg .el-tr{--nh:66px;--gap:0px} .el-p03__reg .el-off1{--nh:66px}
.el-p03__fac{width:316px;flex:none;gap:14px} .el-p03__fac .el-panel__body{gap:10px}
.el-p03__node{display:flex;align-items:center;gap:10px;font-size:14px;line-height:20px} .el-p03__node>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-p03__node>b{font-weight:600;white-space:nowrap}
.el-p03__node--sub{padding-left:28px;position:relative;font-size:13px} .el-p03__node--sub::before{content:"";position:absolute;left:0;top:50%;width:16px;height:1px;background:var(--e-line)} .el-p03__node--sub>span{color:var(--e-t2)}
.el-p03__d{font-style:normal;display:inline-flex;align-items:center;height:20px;padding:0 6px;border-radius:999px;font-size:12px;font-weight:600;flex:none} .el-p03__d--opp{background:#E3F1E8;color:var(--e-opp)} .el-p03__d--risk{background:var(--e-risk-soft);color:var(--e-risk)}
/* ---- web/pulse/04-symulator (665:16690): chipy scenariuszy + dźwignie + wynik ---- */
.el-p04__head{display:flex;align-items:center;gap:8px;flex:none;overflow:hidden} .el-p04__lbl{font-size:14px;line-height:20px;font-weight:600;margin-right:4px;white-space:nowrap}
.el-p04 .el-p04__c1,.el.is-s2 .el-p04 .el-p04__c2,.el-p04.is-s2 .el-p04__c2{background:var(--e-ink);color:#fff;box-shadow:none} .el-p04.is-s2 .el-p04__c1{background:transparent;color:var(--e-t1);box-shadow:inset 0 0 0 1px #DFDFDC}
.el-p04__row{display:flex;gap:16px;flex:1;min-height:0} .el-p04__levers{flex:1;min-width:0;gap:16px} .el-p04__levers .el-panel__body{gap:22px;overflow:visible}
.el-p04__lever{display:flex;flex-direction:column;gap:12px} .el-p04__lr{display:flex;align-items:center;gap:12px} .el-p04__lr>b:first-child{flex:1;min-width:0;font-size:14px;line-height:20px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-p04__now{font-size:13px;color:var(--e-t2);white-space:nowrap} .el-p04__now::after{content:"›";margin-left:10px;color:var(--e-t3)} .el-p04__v{font-size:16px;line-height:20px;font-weight:600;white-space:nowrap}
.el-p04__d{font-style:normal;display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:600;flex:none} .el-p04__d--opp{background:#E3F1E8;color:var(--e-opp)}
.el-p04__slider{position:relative;height:16px} .el-p04__track{position:absolute;left:0;right:0;top:7px;height:3px;border-radius:2px;background:var(--e-line)} .el-p04__fill{position:absolute;left:0;top:7px;height:3px;border-radius:2px;background:var(--e-ink)}
.el-p04__knob{position:absolute;top:0;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--e-ink) inset}
.el-p04__note{font-size:12px;line-height:16px;color:var(--e-t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none}
.el-p04__result{width:300px;flex:none;gap:14px}
.el-p04__cur{display:flex;flex-direction:column;gap:4px} .el-p04__cur>span,.el-p04__scen>span{font-size:12px;line-height:16px;color:var(--e-t2)} .el-p04__cur>b{font-size:18px;line-height:24px;font-weight:600} .el-p04__cur .el-tag{align-self:flex-start}
.el-p04__scen{display:flex;flex-direction:column;gap:4px} .el-p04__big{display:flex;align-items:center;gap:10px} .el-p04__big>b{font-size:32px;line-height:38px;font-weight:300;letter-spacing:-.5px;white-space:nowrap}
.el-p04__diff{display:flex;align-items:center;flex-wrap:wrap;gap:8px} .el-p04__diff>b{font-size:16px;line-height:22px;font-weight:600} .el-p04__diff>span{font-size:12px;color:var(--e-t2);white-space:nowrap}
.el-p04__hr{display:block;height:1px;background:var(--e-line)} .el-p04__lbl2{font-size:14px;line-height:20px;font-weight:600}
.el-p04__c{display:flex;flex-direction:column;gap:6px;flex:none;--nh:34px} .el-p04__cl{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;line-height:16px} .el-p04__cl>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--e-t2)} .el-p04__cl>b{font-weight:600;white-space:nowrap}
.el-p04 .el-off2{--gap:14px}
/* ---- web/pulse/05-agent (665:17573): CRE Pulse + wysłane dziś | podgląd szkicu ---- */
.el-p05__row{display:flex;gap:16px;flex:1;min-height:0} .el-p05__left{width:380px;flex:none;display:flex;flex-direction:column;gap:16px;min-height:0}
.el-p05__pulse{position:relative;overflow:hidden;border-radius:24px;padding:24px;display:flex;flex-direction:column;gap:16px;color:#fff;background:linear-gradient(135deg,#22272c 0%,#2c4a60 60%,#4f7e9e 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);flex:none}
.el-p05__pulse::before{content:"";position:absolute;left:-80px;top:-110px;width:420px;height:220px;border-radius:50%;background:rgba(255,255,255,.16);filter:blur(60px);pointer-events:none}
.el-p05__pulse::after{content:"";position:absolute;right:-80px;bottom:-80px;width:300px;height:200px;border-radius:50%;background:rgba(143,179,201,.35);filter:blur(70px);pointer-events:none}
.el-p05__pulse>*{position:relative;z-index:1}
.el-p05__ph{display:flex;align-items:center;gap:12px} .el-p05__ph .el-ava{background:rgba(255,255,255,.18);color:#fff} .el-p05__ph .el-ft b{font-size:20px;line-height:24px;font-weight:600;color:#fff} .el-p05__ph .el-ft span{color:rgba(255,255,255,.72)}
.el-p05__tabs{display:inline-flex;padding:3px;border-radius:999px;background:rgba(255,255,255,.14);flex:none} .el-p05__tabs i{font-style:normal;padding:4px 12px;border-radius:999px;font-size:13px;line-height:18px;color:rgba(255,255,255,.85)} .el-p05__tabs i.is-on{background:#fff;color:var(--e-ink);font-weight:600}
.el-p05__q{margin:0;font-size:22px;line-height:28px;font-weight:300;color:#fff;min-height:84px} .el-p05__q>span{white-space:normal}
.el-p05__field{display:flex;align-items:center;gap:10px;height:52px;padding:0 8px 0 18px;border-radius:999px;background:rgba(255,255,255,.95);color:var(--e-t3);font-size:14px} .el-p05__field>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-p05__field>span>span{white-space:nowrap}
.el-p05.is-s1 .el-p05__field,.el-p05.is-s2 .el-p05__field{color:var(--e-t1)}
.el-p05__mic,.el-p05__send{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none;color:var(--e-t2)} .el-p05__send{background:var(--e-ink);color:#fff} .el-p05__mic .lucide,.el-p05__send .lucide{width:18px;height:18px}
.el-p05__sent{flex:none;gap:12px;padding:20px 24px} .el-p05__sent .el-panel__body{gap:10px}
.el-p05__preview{flex:1;min-width:0;gap:14px;padding:24px;overflow:hidden}
.el-p05__mh{display:flex;align-items:center;gap:12px} .el-p05__mh b{font-size:16px;line-height:24px;font-weight:600;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-p05__status{display:flex} .el-p05 .el-mail__f{grid-template-columns:72px 1fr} .el-p05 .el-mail__f span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-p05__body{padding:16px 18px;gap:10px} .el-p05__why{display:flex;flex-direction:column;gap:4px;padding:2px 0 2px 14px;border-left:2px solid var(--e-accent)} .el-p05__why b{font-size:14px;line-height:20px;font-weight:600} .el-p05__why span{font-size:13px;line-height:18px;color:var(--e-t2)}
/* ---- web/pulse/06-wyniki (665:18574): KPI ×3 + tabela wyników + nauka systemu ---- */
.el-tag--attributed{background:var(--e-accent-soft);color:var(--e-accent);font-weight:600}
.el-p06__row{display:flex;gap:16px;flex:1;min-height:0} .el-p06__left{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.el-p06__tb{--cols:minmax(0,1fr) 150px 90px;flex:1;padding:4px 16px} .el-p06__tb .el-tr__in{padding:12px 0;height:63px;box-sizing:border-box} .el-p06__tb .el-td>span:first-child{font-weight:600}
.el-p06__nauka{width:282px;flex:none;gap:14px} .el-p06__nauka .el-panel__body{gap:12px}
.el-p06__reason{display:flex;flex-direction:column;gap:6px;flex:none} .el-p06__rl{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px;line-height:20px} .el-p06__rl>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-p06__rl>b{font-size:12px;font-weight:600;white-space:nowrap}
.el-p06__reason .el-f08__fill{transition:width .6s var(--e-ease)} .el-p06.is-s2 .el-p06__r1 .el-f08__fill{width:26%!important}
/* ==========================================================================
   Ofertowanie (1.11, docs/27 §7): dwanaście elementów web/oferty/01…12 na ofertowanie.html, klony ekranów ofertownika i biblioteki hi-fi (KpiTile, DataTable, FactRow, PanelHeader).
   ========================================================================== */
.el-of .el-panel{flex:1;min-height:0} .el-of .el-of__p .el-panel__body{gap:0;flex:1;min-height:0;overflow:hidden}
.el-of .el-fact{--nh:66px;--gap:0px} .el-of .el-fact__in{padding:9px 0;border-top:1px solid var(--e-line)} .el-of .el-fact:first-child .el-fact__in{border-top:0}
.el-of .el-of__p .el-fact:first-child .el-fact__in,.el-of .el-of__p .el-new.el-fact .el-fact__in{border-top:0} .el-of .el-of__p .el-new.el-fact+.el-fact .el-fact__in{border-top:1px solid var(--e-line)}
.el-of .el-fact .el-ft>span:first-child{font-weight:500}
.el-of .el-tb{flex:1;min-height:0;padding:4px 16px;gap:0;overflow:hidden} .el-of .el-tr__in{padding:12px 0;height:65px;box-sizing:border-box} .el-of .el-tr{--nh:66px;--gap:0px}
.el-of .el-td .el-sw>span{text-align:inherit}
.el-of__foot{font-size:12px;line-height:16px;color:var(--e-t2);padding:10px 0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none} .el-of__foot .el-sw{max-width:100%}
.el-tag--attributed{background:var(--e-accent-soft);color:var(--e-accent);font-weight:600}
/* komórki tabel: kit cell() daje .el-cell, więc stylujemy je jak .el-td; przełączniki tekstu w stopce i KPI przycięte z wielokropkiem */
.el-of .el-cell{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:14px;line-height:20px} .el-of .el-cell>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-of .el-cell>span:nth-child(2){font-size:12px;line-height:16px;color:var(--e-t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-of__foot .el-sw,.el-of .el-kpi__m .el-sw{display:grid;grid-template-columns:minmax(0,1fr);width:100%;min-width:0} .el-of__foot .el-sw>span,.el-of .el-kpi__m .el-sw>span{overflow:hidden;text-overflow:ellipsis}
.el-of .el-kpi__m>.el-sw{flex:1}
.el.is-s0 .el-new.el-off2{max-height:0} /* wiersz, który wjeżdża w stanie 1 i znika w 2, w stanie 0 nie zostawia pustego miejsca */
/* ---- 01 oferta z cen ERP · 04 warianty · 06 zapytania · 07 partner (tabele) ---- */
.el-of01__tb{--cols:minmax(0,1fr) 80px 100px 120px 200px}
.el-of04__tb{--cols:minmax(0,1fr) 150px 170px 170px}
.el-of06__tb{--cols:minmax(0,1fr) 130px 160px 150px} .el-of06 .el-pill{max-width:100%} .el-of06 .el-td .el-sw{display:inline-grid}
.el-of07__tb{--cols:minmax(0,1fr) 80px 130px 140px 170px}
/* ---- 03 akceptacja: karta widoku klienta ---- */
.el-of03__card{flex:1;min-height:0;padding:20px 24px;gap:14px;overflow:hidden}
.el-of03__head{display:flex;align-items:flex-start;gap:16px} .el-of03__head .el-ft{gap:4px} .el-of03__title{display:block;font-size:24px;line-height:30px;font-weight:300;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-of03__head .el-ft>span:last-child{font-size:13px;color:var(--e-t2)}
.el-of03__rows{display:flex;flex-direction:column}
.el-of03__row{display:flex;align-items:center;gap:14px;padding:13px 0;border-top:1px solid var(--e-line)} .el-of03__row .el-ft>span:first-child{font-size:15px} .el-of03__row .el-ft b{font-weight:600}
.el-of03__cb{width:22px;height:22px;border-radius:6px;background:var(--e-ink);display:grid;place-items:center;color:#fff;flex:none;transition:background .35s var(--e-ease),box-shadow .35s var(--e-ease)} .el-of03__cb .lucide{width:14px;height:14px;transition:opacity .3s}
.el.is-s1 .el-of03__cb--off1,.el.is-s2 .el-of03__cb--off1{background:#fff;box-shadow:inset 0 0 0 1.5px #C9C9C5} .el.is-s1 .el-of03__cb--off1 .lucide,.el.is-s2 .el-of03__cb--off1 .lucide{opacity:0}
.el-of03__row .el-v{font-size:15px}
.el-of03__sum{display:flex;align-items:center;gap:12px;padding:16px 20px;border-radius:16px;background:var(--e-alt);margin-top:auto} .el-of03__sum .el-ft b{display:block;font-size:17px;line-height:24px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .el-of03__sum .el-ft>span:last-child{font-size:12px;color:var(--e-t2)}
.el-of03__sum .el-off2{--nh:40px;max-height:40px;overflow:visible;transition:opacity .35s var(--e-ease),max-width .45s var(--e-ease),padding .45s var(--e-ease)} .el.is-s2 .el-of03__sum .el-off2{opacity:0;max-width:0!important;padding:0!important;margin:0!important;overflow:hidden}
/* ---- 11 analityka: dwa panele ---- */
.el-of11__row{display:flex;gap:16px;flex:1;min-height:0} .el-of11__row .el-panel{flex:1;min-width:0} .el-of11__right{flex:none!important;width:340px}

/* ==========================================================================
   Strony modułów CI · Obsługa klienta · Retention · Integracje (1.11, docs/27 §8, D64): 40 elementów z danych (_gen.py + *_elements.py); klocki wspólne z sekcji Ofertowanie (.el-of), poniżej tylko kolumny tabel per element.
   ========================================================================== */
.el-ci01__tb{--cols:minmax(0,1fr) 70px 130px 170px 140px}
.el-ci03__tb{--cols:minmax(0,1fr) 90px 100px 110px 170px}
.el-ci06__tb{--cols:minmax(0,1fr) 80px 120px 160px 150px}
.el-k02__tb{--cols:minmax(0,1fr) 60px 90px 190px 140px}
.el-k03__tb{--cols:minmax(0,1fr) 80px 100px 70px 200px}
.el-k05__tb{--cols:minmax(0,1fr) 90px 70px 130px 200px}
.el-k09__tb{--cols:minmax(0,1fr) 90px 70px 100px 230px}
.el-t01__tb{--cols:minmax(0,1fr) 70px 60px 90px 110px 150px}
.el-t03__tb{--cols:minmax(0,1fr) 140px 80px 80px 170px}
.el-t05__tb{--cols:minmax(0,1fr) 100px 90px 100px 210px}
.el-t09__tb{--cols:minmax(0,1fr) 90px 80px 90px 220px}
.el-n01__tb{--cols:minmax(0,1fr) 100px 150px 80px 120px}
.el-n03__tb{--cols:minmax(0,1fr) 100px 190px 70px 130px}
.el-n05__tb{--cols:minmax(0,1fr) 180px 60px 120px 130px}
.el-n07__tb{--cols:minmax(0,1fr) 80px 90px 200px 130px}
.el-n09__tb{--cols:minmax(0,1fr) 110px 190px 60px 130px}

/* ==========================================================================
   Platforma B2B (2.11, docs/27 §9, D66): 20 elementów z danych (b2b_elements.py); klocki wspólne z sekcji Ofertowanie (.el-of), poniżej tylko kolumny tabel per element.
   ========================================================================== */
.el-m01__tb{--cols:minmax(0,1fr) 100px 70px 80px 90px 120px}
.el-m12__tb{--cols:minmax(0,1fr) 200px 90px 120px}
.el-m08__tb{--cols:minmax(0,1fr) 80px 100px 70px 120px}
.el-m09__tb{--cols:minmax(0,1fr) 130px 80px 90px 120px}
.el-m18__tb{--cols:minmax(0,1fr) 90px 100px 100px 110px}
.el-m02__tb{--cols:minmax(0,1fr) 110px 120px 70px 110px}
.el-m05__tb{--cols:minmax(0,1fr) 110px 90px 90px 130px}
.el-m19__tb{--cols:minmax(0,1fr) 80px 70px 110px 130px}
.el-m14__tb{--cols:minmax(0,1fr) 130px 140px 90px 90px}
.el-m15__tb{--cols:minmax(0,1fr) 90px 120px 100px 110px}
.el-m16__tb{--cols:minmax(0,1fr) 120px 90px 120px 100px}
.el-m17__tb{--cols:minmax(0,1fr) 90px 110px 80px 120px}

/* ==========================================================================
   Sklep B2C / D2C (2.11, docs/27 §10, D67): 10 elementów z danych (b2c_elements.py); klocki wspólne z sekcji Ofertowanie (.el-of), poniżej tylko kolumny tabel per element.
   ========================================================================== */
.el-s01__tb{--cols:minmax(0,1fr) 80px 120px 120px 70px}
.el-s03__tb{--cols:minmax(0,1fr) 100px 110px 80px 120px}
.el-s07__tb{--cols:minmax(0,1fr) 150px 90px 130px 110px}
.el-s08__tb{--cols:minmax(0,1fr) 80px 130px 110px 120px}
.el-s09__tb{--cols:minmax(0,1fr) 70px 100px 170px 120px}
.el-s12__tb{--cols:minmax(0,1fr) 100px 160px 80px 110px}

/* ==========================================================================
   PIM (2.11, docs/27 §10, D67): 12 elementów z danych (pim_elements.py); klocki wspólne z sekcji Ofertowanie (.el-of), poniżej tylko kolumny tabel per element.
   ========================================================================== */
.el-pm01__tb{--cols:minmax(0,1fr) 210px 110px 110px}
.el-pm02__tb{--cols:minmax(0,1fr) 110px 90px 90px 150px}
.el-pm04__tb{--cols:minmax(0,1fr) 170px 110px 100px}
.el-pm05__tb{--cols:minmax(0,1fr) 80px 140px 110px 120px}
.el-pm07__tb{--cols:minmax(0,1fr) 110px 80px 150px 120px}
.el-pm08__tb{--cols:minmax(0,1fr) 50px 50px 70px 190px}
.el-pm09__tb{--cols:minmax(0,1fr) 100px 200px 120px}
.el-pm10__tb{--cols:minmax(0,1fr) 170px 160px 100px}
.el-pm12__tb{--cols:minmax(0,1fr) 240px 100px 120px}

/* ==========================================================================
   Asystent AI w modułach (2.11, docs/27 §11, D71) · D72: komponent .el-pulse = port bloku „CRE Pulse” (324:1536) z animacją stanów (pisanie pytania, fala i mikrofon) · D73: odpowiedź nie w bloku, tylko w panelu „CRE Pulse na żywo” (klon 418:4968) wsuwanym z prawej nad przyciemnionym blokiem; dane w asystent_elements.py (PULSE_CSS, PANEL).
   ========================================================================== */
.el-pulse{padding:16px}
.el-pulse__card{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:18px;height:100%;padding:24px;border-radius:28px;color:#fff;background:linear-gradient(135deg,#22272c 0%,#2c4a60 60%,#4f7e9e 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.el-pulse__glow{position:absolute;border-radius:50%;filter:blur(70px);pointer-events:none}
.el-pulse__glow--a{width:300px;height:200px;right:-40px;top:-70px;background:rgba(143,179,201,.35)}
.el-pulse__glow--b{width:420px;height:220px;left:28%;bottom:-130px;background:rgba(255,255,255,.16)}
.el-pulse__head{position:relative;display:flex;justify-content:space-between;align-items:center}
.el-pulse__l{display:flex;align-items:center;gap:10px}
.el-pulse__ic{flex:none;width:40px;height:40px;border-radius:20px;background:rgba(255,255,255,.25);display:grid;place-items:center} .el-pulse__ic svg{width:20px;height:20px}
.el-pulse__t{display:flex;flex-direction:column;min-width:0} .el-pulse__t b{font-size:16px;line-height:22px;font-weight:600} .el-pulse__t span{font-size:12px;line-height:16px;color:rgba(255,255,255,.75);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:520px}
.el-pulse__seg{flex:none;display:flex;gap:2px;padding:3px;border-radius:999px;background:rgba(255,255,255,.2)} .el-pulse__seg span{padding:6px 14px;border-radius:999px;font-size:12px;line-height:16px;font-weight:600;color:#fff} .el-pulse__seg .is-on{background:#fff;color:#1c1c1b}
.el-pulse__msg{position:relative;margin:0;font-size:26px;line-height:34px;font-weight:300;letter-spacing:-.2px}
.el-pulse__wave{position:relative;display:flex;justify-content:center;align-items:center;gap:4px;height:44px;max-height:44px;transition:opacity .4s var(--e-ease),max-height .5s var(--e-ease),margin .5s var(--e-ease)} .el-pulse__wave i{display:block;width:3px;height:calc(var(--h)*1px);border-radius:2px;background:#fff;opacity:.55;transform-origin:center;transition:opacity .4s var(--e-ease)}
.el.is-s1 .el-pulse__wave i{opacity:.95;animation:elpw 1.1s ease-in-out infinite alternate;animation-delay:calc(var(--i)*-.09s)}
@keyframes elpw{from{transform:scaleY(.35)}to{transform:scaleY(1.05)}}
.el-pulse__field{position:relative;display:flex;align-items:center;gap:8px;padding:6px 6px 6px 18px;border-radius:999px;background:rgba(255,255,255,.95);color:#1c1c1b}
.el-pulse__q{position:relative;flex:1;min-width:0;height:20px;font-size:14px;line-height:20px;display:grid} .el-pulse__q>span{grid-area:1/1}
.el-pulse__ph{color:#9c9c99;transition:opacity .3s var(--e-ease)} .el-pulse__ph>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.el-pulse__typed{display:block;max-width:0;overflow:hidden;white-space:nowrap;color:#1c1c1b;border-right:2px solid transparent;transition:none}
.el.is-s1 .el-pulse__ph{opacity:0} .el.is-s1 .el-pulse__typed{max-width:100%;border-right-color:#1c1c1b;transition:max-width 1.8s steps(48,end) .25s;animation:elpc .7s steps(1) infinite 2.1s}
.el.is-s2 .el-pulse__typed{max-width:0;transition:none}
@keyframes elpc{50%{border-right-color:transparent}}
.el-pulse__mic,.el-pulse__send{flex:none;width:40px;height:40px;border-radius:20px;display:grid;place-items:center} .el-pulse__mic{background:#e8edf1;color:#1c1c1b} .el-pulse__send{background:#1c1c1b;color:#fff} .el-pulse__mic svg,.el-pulse__send svg{width:20px;height:20px}
.el.is-s1 .el-pulse__mic{animation:elpm 1.2s ease-in-out infinite} @keyframes elpm{50%{box-shadow:0 0 0 7px rgba(47,86,112,.2)}}
.el.is-s2 .el-pulse__send{animation:elps .5s var(--e-ease) both} @keyframes elps{from{transform:scale(.8)}50%{transform:scale(1.12)}}
.el-pulse__chips{position:relative;min-height:30px} .el-pulse__chips>span{display:flex;flex-wrap:wrap;gap:6px}
.el-pulse__card{position:relative} .el-pulse{position:relative;overflow:hidden}
.el-pulse__chip{display:inline-block;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.2);box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);font-size:12px;line-height:16px;font-weight:600;font-style:normal;color:#fff;white-space:nowrap} .el-pulse__chip.is-primary{background:#fff;color:#1c1c1b;box-shadow:none}
.el.is-s2 .el-pulse__chips .s2 .el-pulse__chip{animation:elpi .45s var(--e-ease) both;animation-delay:calc(.2s + var(--i)*.14s)} @keyframes elpi{from{opacity:0;transform:translateY(10px)}}
.el-pulse__note{position:relative;margin:auto 0 0;font-size:12px;line-height:16px;color:rgba(255,255,255,.8)}
/* D73: panel „CRE Pulse na żywo” (klon 418:4968) wsuwa się z prawej nad blokiem w stanie „gotowe”; blok nie pokazuje odpowiedzi */
.el-pulse__scrim{position:absolute;inset:0;background:rgba(28,28,27,.14);opacity:0;transition:opacity .5s var(--e-ease);pointer-events:none}
.el.is-s2 .el-pulse__scrim{opacity:1}
.el-pulse__panel{position:absolute;top:12px;right:12px;bottom:12px;width:444px;display:flex;flex-direction:column;border-radius:24px;overflow:hidden;background:rgba(255,255,255,.92);backdrop-filter:blur(36px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),0 24px 80px rgba(28,28,27,.18);color:#1c1c1b;transform:translateX(112%);transition:transform .65s var(--e-ease)}
.el.is-s2 .el-pulse__panel{transform:none}
.el-pulse__ph2{display:flex;align-items:center;gap:10px;padding:12px 16px;background:linear-gradient(135deg,#22272c 0%,#2c4a60 60%,#4f7e9e 100%);color:#fff} .el-pulse__ph2 .el-pulse__ic{width:32px;height:32px;border-radius:16px;background:rgba(255,255,255,.2)} .el-pulse__ph2 .el-pulse__ic svg{width:16px;height:16px} .el-pulse__ph2 .el-pulse__t{flex:1} .el-pulse__ph2 .el-pulse__t b{font-size:15px;line-height:20px} .el-pulse__ph2 .el-pulse__t span{font-size:11px;line-height:14px;max-width:300px}
.el-pulse__x{flex:none;width:28px;height:28px;border-radius:14px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);display:grid;place-items:center} .el-pulse__x svg{width:14px;height:14px}
.el-pulse__pb{display:flex;flex-direction:column;gap:8px;padding:12px 16px 14px}
.el-pulse__me{display:flex;justify-content:flex-end;align-items:center;gap:8px} .el-pulse__bubble{max-width:86%;padding:8px 12px;border-radius:14px 14px 4px 14px;background:#1c1c1b;color:#fff;font-size:12px;line-height:16px} .el-pulse__av{flex:none;width:28px;height:28px;border-radius:50%;background:#e1eaf0;color:#2f5670;font-size:11px;font-weight:600;display:grid;place-items:center}
.el-pulse__lbl{display:block;font-size:11px;line-height:16px;font-weight:600;letter-spacing:.3px;color:#9c9c99}
.el-pulse__steps{display:flex;flex-direction:column;gap:4px} .el-pulse__step{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:10px;background:#f7f7f5;font-size:12px;line-height:16px;font-style:normal} .el-pulse__step em{flex:none;width:16px;height:16px;border-radius:8px;background:#e3f1e8;color:#237a46;font-size:10px;font-style:normal;font-weight:700;display:grid;place-items:center}
.el-pulse__brief{display:flex;flex-direction:column;gap:4px;padding:10px;border-radius:16px;background:#fff;box-shadow:inset 0 0 0 1px #ebebe8}
.el-pulse__tldr{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:12px;background:linear-gradient(135deg,#22272c 0%,#2c4a60 60%,#4f7e9e 100%);color:#fff;font-size:12px;line-height:16px;font-weight:600} .el-pulse__tldr small{font-size:11px;line-height:14px;font-weight:400;opacity:.85}
.el-pulse__row{display:grid;grid-template-columns:1fr auto;column-gap:10px;padding:6px 0;border-top:1px solid #ebebe8;font-size:12px;line-height:16px} .el-pulse__row b{font-weight:600} .el-pulse__row>span{grid-column:1;color:#6b6b69;font-size:11px;line-height:14px} .el-pulse__row strong{grid-column:2;grid-row:1/3;align-self:center;font-weight:600;color:#237a46;white-space:nowrap}
.el-pulse__acts{display:flex;gap:8px;padding-top:4px} .el-pulse__btn{padding:7px 12px;border-radius:999px;font-size:12px;line-height:16px;font-weight:600;background:#f7f7f5;color:#1c1c1b;white-space:nowrap} .el-pulse__btn.is-primary{background:#1c1c1b;color:#fff}
.el.is-s2 .el-pulse__me,.el.is-s2 .el-pulse__steps,.el.is-s2 .el-pulse__brief{animation:elpi .45s var(--e-ease) both} .el.is-s2 .el-pulse__me{animation-delay:.5s} .el.is-s2 .el-pulse__steps{animation-delay:.8s} .el.is-s2 .el-pulse__brief{animation-delay:1.3s}
.el.is-s2 .el-pulse__step{animation:elpi .4s var(--e-ease) both;animation-delay:calc(.9s + var(--i)*.25s)}
.el.is-s2 .el-pulse__chips .s2 .el-pulse__chip{animation:none}
@media (prefers-reduced-motion:reduce){.el-pulse *{animation:none!important;transition:none!important}}
