/* CRM Biały Kruk - pełny system designu (1:1 z CRM_design.html). */
/* ============================ TOKENS ============================ */
:root{
  --navy:#2f2873; --navy-600:#3a3290; --navy-500:#4a3fb0; --navy-800:#241d57; --navy-900:#191347;
  --navy-050:#eeedf7; --navy-100:#dedbef;
  --crimson:#d4213e; --crimson-600:#b81a34; --crimson-700:#9c1530; --crimson-050:#fdecef; --crimson-100:#fbd6dc;
  --ink:#1b1733; --ink-2:#56526e; --ink-3:#8b88a3; --ink-4:#b6b3c8;
  --paper:#f7f5f1; --paper-2:#fbfaf7; --card:#ffffff; --line:#e9e6f1; --line-2:#f0eef6;
  --gold:#a9823f; --gold-050:#f6efe2;
  --green:#15915f; --green-050:#e6f5ee; --amber:#c9821a; --amber-050:#fbf1df; --red:#d4213e;
  --sky:#2b6fb5;
  --shadow-sm:0 1px 2px rgba(27,23,51,.06),0 1px 3px rgba(27,23,51,.05);
  --shadow:0 4px 14px -4px rgba(27,23,51,.10),0 2px 6px -2px rgba(27,23,51,.06);
  --shadow-lg:0 24px 50px -16px rgba(27,23,51,.22),0 8px 20px -8px rgba(27,23,51,.12);
  --shadow-navy:0 18px 40px -14px rgba(47,40,115,.45);
  --r-sm:8px; --r:12px; --r-lg:16px; --r-xl:22px;
  --sb:268px;
  --sans:'Inter',system-ui,-apple-system,sans-serif;
  --serif:'Inter',system-ui,sans-serif;   /* nagłówki/liczby - czysty, czytelny sans */
  --book:'Fraunces',Georgia,serif;         /* szeryfowy tylko dla treści (korekta tekstu AI) */
  --mono:'JetBrains Mono',monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans); color:var(--ink); background:var(--paper);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  font-size:14px; line-height:1.5; overflow-x:hidden;
  background-image:radial-gradient(circle at 1px 1px, rgba(47,40,115,.035) 1px, transparent 0);
  background-size:22px 22px;
}
::selection{background:var(--crimson-100); color:var(--crimson-700)}
a{color:inherit; text-decoration:none}
button{font-family:inherit; cursor:pointer; border:none; background:none; color:inherit}
input,select,textarea{font-family:inherit; font-size:inherit; color:inherit}
svg{display:block}
.mono{font-family:var(--mono); font-feature-settings:"tnum"}
.tnum{font-variant-numeric:tabular-nums}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line); border-radius:20px; border:2px solid var(--paper)}
::-webkit-scrollbar-thumb:hover{background:var(--ink-4)}

/* ============================ LOGIN ============================ */
#login{
  position:fixed; inset:0; z-index:200; display:grid; grid-template-columns:1.1fr .9fr;
  background:var(--navy); color:#fff; transition:opacity .7s ease, visibility .7s;
}
#login.hide{opacity:0; visibility:hidden; pointer-events:none}
.login-art{
  position:relative; overflow:hidden; padding:54px 60px; display:flex; flex-direction:column; justify-content:space-between;
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(212,33,62,.38) 0%, transparent 52%),
    radial-gradient(100% 80% at 0% 100%, rgba(74,63,176,.6) 0%, transparent 55%),
    linear-gradient(160deg,#241d57,#16113e 70%);
}
.login-art::before{
  content:""; position:absolute; inset:0;
  background-image:radial-gradient(circle at 1px 1px, rgba(255,255,255,.06) 1px, transparent 0);
  background-size:26px 26px; mask:linear-gradient(180deg,#000,transparent 80%);
}
.login-art::after{
  content:"卄"; position:absolute; right:-40px; bottom:-60px; font-size:420px; line-height:1;
  font-family:var(--serif); color:rgba(255,255,255,.03); font-weight:700; pointer-events:none;
}
.login-logo{display:flex; align-items:center; gap:14px; position:relative; z-index:2}
.login-logo img{height:40px; filter:drop-shadow(0 2px 8px rgba(0,0,0,.3))}
.login-quote{position:relative; z-index:2; max-width:440px}
.login-quote .eyebrow{font-family:var(--mono); font-size:11px; letter-spacing:.22em; text-transform:uppercase; color:rgba(255,255,255,.55); margin-bottom:20px; display:flex; align-items:center; gap:10px}
.login-quote .eyebrow::before{content:""; width:30px; height:1px; background:var(--crimson)}
.login-quote h1{font-family:var(--serif); font-weight:500; font-size:42px; line-height:1.1; letter-spacing:-.01em; font-optical-sizing:auto}
.login-quote h1 em{font-style:italic; color:#f4c9d0}
.login-quote p{margin-top:22px; color:rgba(255,255,255,.7); font-size:15px; line-height:1.6; max-width:400px}
.login-meta{position:relative; z-index:2; display:flex; gap:30px; font-size:12.5px; color:rgba(255,255,255,.5)}
.login-meta b{color:#fff; font-weight:600; display:block; font-size:18px; font-family:var(--serif)}
.login-form-wrap{background:var(--paper-2); color:var(--ink); display:flex; align-items:center; justify-content:center; padding:40px}
.login-mhead{display:none}
.login-card{width:100%; max-width:368px}
.login-card .badge-2fa{display:inline-flex; align-items:center; gap:7px; font-size:11.5px; font-weight:600; color:var(--green); background:var(--green-050); padding:6px 11px; border-radius:30px; margin-bottom:22px}
.login-card h2{font-family:var(--serif); font-weight:600; font-size:27px; letter-spacing:-.01em; margin-bottom:6px}
.login-card .sub{color:var(--ink-3); font-size:13.5px; margin-bottom:28px}
.field{margin-bottom:16px}
.field label{display:block; font-size:12px; font-weight:600; color:var(--ink-2); margin-bottom:7px; letter-spacing:.01em}
.field input{width:100%; height:46px; padding:0 15px; border:1.5px solid var(--line); border-radius:var(--r); background:#fff; font-size:14.5px; transition:border-color .15s, box-shadow .15s}
.field input:focus{outline:none; border-color:var(--navy-500); box-shadow:0 0 0 4px var(--navy-050)}
.otp{display:flex; gap:9px; margin-top:7px}
.otp input{width:100%; height:52px; text-align:center; font-family:var(--mono); font-size:20px; font-weight:600; border:1.5px solid var(--line); border-radius:var(--r); background:#fff; transition:.15s}
.otp input:focus{outline:none; border-color:var(--crimson); box-shadow:0 0 0 4px var(--crimson-050)}
.btn-login{width:100%; height:48px; margin-top:10px; background:var(--navy); color:#fff; border-radius:var(--r); font-weight:600; font-size:14.5px; letter-spacing:.01em; display:flex; align-items:center; justify-content:center; gap:9px; transition:.2s; box-shadow:var(--shadow-navy)}
.btn-login:hover{background:var(--navy-800); transform:translateY(-1px)}
.login-card .badge-2fa svg{width:16px; height:16px; flex-shrink:0}
.btn-login svg{width:18px; height:18px; flex-shrink:0}
.login-foot{margin-top:24px; padding-top:20px; border-top:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; font-size:12px; color:var(--ink-3)}
.login-foot a{color:var(--navy-500); font-weight:600}

/* ============================ APP SHELL ============================ */
.app{display:grid; grid-template-columns:var(--sb) 1fr; min-height:100vh; opacity:0; transition:opacity .6s ease .1s}
.app.ready{opacity:1}

/* ---- Sidebar ---- */
.sidebar{
  position:fixed; top:0; left:0; bottom:0; width:var(--sb); z-index:80; display:flex; flex-direction:column;
  background:linear-gradient(176deg,#2a2368 0%,#221b54 60%,#1c1648 100%); color:#fff;
  box-shadow:var(--shadow-navy);
}
.sidebar::after{content:""; position:absolute; top:0; right:0; bottom:0; width:1px; background:linear-gradient(180deg,transparent,rgba(255,255,255,.08),transparent)}
.sb-head{padding:20px 20px 16px; display:flex; align-items:center; justify-content:space-between}
.sb-brand{display:flex; align-items:center; gap:12px}
.sb-brand img{height:34px; width:auto}
.sb-brand .div{width:1px; height:26px; background:rgba(255,255,255,.16)}
.sb-brand .tag{font-size:9.5px; font-family:var(--mono); letter-spacing:.18em; text-transform:uppercase; color:rgba(255,255,255,.55); line-height:1.5}
.sb-brand .tag b{display:block; color:#fff; font-size:11px; letter-spacing:.12em}
.sb-collapse{display:none}
.sb-nav{flex:1; overflow-y:auto; padding:6px 12px 20px; scrollbar-width:thin}
.sb-nav::-webkit-scrollbar{width:5px}
.sb-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14); border:none}
.nav-group{margin-top:16px}
.nav-group-label{font-size:10px; font-family:var(--mono); letter-spacing:.16em; text-transform:uppercase; color:rgba(255,255,255,.38); padding:0 12px 7px; display:flex; align-items:center; gap:8px}
.nav-item{
  display:flex; align-items:center; gap:12px; padding:9px 12px; border-radius:10px; color:rgba(255,255,255,.74);
  font-size:13.5px; font-weight:500; position:relative; transition:.16s; margin-bottom:2px;
}
.nav-item svg{width:18px; height:18px; flex-shrink:0; stroke-width:1.7; opacity:.85}
.nav-item .np-count{margin-left:auto; font-size:10.5px; font-family:var(--mono); background:rgba(255,255,255,.1); color:rgba(255,255,255,.8); padding:1px 7px; border-radius:20px}
.nav-item .np-dot{margin-left:auto; width:7px; height:7px; border-radius:50%; background:var(--crimson); box-shadow:0 0 0 3px rgba(212,33,62,.25)}
.nav-item:hover{background:rgba(255,255,255,.07); color:#fff}
.nav-item:hover svg{opacity:1}
.nav-item.active{background:rgba(255,255,255,.12); color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.nav-item.active svg{opacity:1; color:#fff}
.nav-item.active::before{content:""; position:absolute; left:-12px; top:50%; transform:translateY(-50%); width:4px; height:20px; background:var(--crimson); border-radius:0 4px 4px 0; box-shadow:0 0 12px rgba(212,33,62,.6)}
.sb-foot{padding:14px; border-top:1px solid rgba(255,255,255,.08)}
.sb-upgrade{background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); border-radius:var(--r); padding:13px 14px; position:relative; overflow:hidden}
.sb-upgrade::before{content:""; position:absolute; right:-20px; top:-20px; width:80px; height:80px; background:radial-gradient(circle,rgba(212,33,62,.35),transparent 70%)}
.sb-upgrade .t{font-size:12.5px; font-weight:600; display:flex; align-items:center; gap:7px; position:relative}
.sb-upgrade .s{font-size:11px; color:rgba(255,255,255,.55); margin:5px 0 10px; position:relative; line-height:1.5}
.sb-upgrade .bar{height:5px; background:rgba(255,255,255,.12); border-radius:10px; overflow:hidden; position:relative}
.sb-upgrade .bar i{display:block; height:100%; width:62%; background:linear-gradient(90deg,var(--crimson),#ff6b80); border-radius:10px}

/* ---- Main / Topbar ---- */
.main{grid-column:2; min-width:0; display:flex; flex-direction:column}
.topbar{
  position:sticky; top:0; z-index:60; height:66px; display:flex; align-items:center; gap:18px; padding:0 28px;
  background:rgba(247,245,241,.82); backdrop-filter:blur(14px) saturate(1.4); border-bottom:1px solid var(--line);
}
.tb-btn.tb-mob{display:none}
.tb-title h1{font-family:var(--serif); font-weight:600; font-size:21px; letter-spacing:-.01em; line-height:1.15}
.tb-title .crumb{font-size:11.5px; color:var(--ink-3); font-family:var(--mono); letter-spacing:.04em; display:flex; align-items:center; gap:6px}
.tb-search{
  margin-left:auto; display:flex; align-items:center; gap:10px; width:300px; height:40px; padding:0 14px;
  background:#fff; border:1px solid var(--line); border-radius:var(--r); color:var(--ink-3); font-size:13px; transition:.18s;
}
.tb-search:hover{border-color:var(--ink-4)}
.tb-search svg{width:16px;height:16px}
.tb-filter{height:40px; max-width:240px; padding:0 30px 0 12px; border:1px solid var(--line); border-radius:var(--r); font-size:12.5px; background:#fff; color:var(--ink-2); cursor:pointer; transition:.16s}
.tb-filter:hover{border-color:var(--ink-4)}
.tb-filter:focus{outline:none; border-color:var(--navy-500); box-shadow:0 0 0 4px var(--navy-050)}
input.tb-filter{padding-right:12px; cursor:auto} /* inputy (miasto/data/wartość) bez select-owego paddingu na strzałkę */
.filter-note{padding:10px 16px 0; display:flex; align-items:center; gap:8px; font-size:13px; color:var(--ink-3)}
.filter-note .chip a{margin-left:6px; color:inherit; text-decoration:none; font-weight:800; opacity:.7}
.filter-note .chip a:hover{opacity:1}
.tb-search .kbd{margin-left:auto; font-family:var(--mono); font-size:10.5px; background:var(--paper); border:1px solid var(--line); border-radius:5px; padding:2px 6px; color:var(--ink-3)}
.tb-btn{width:40px; height:40px; border-radius:var(--r); background:#fff; border:1px solid var(--line); display:flex; align-items:center; justify-content:center; color:var(--ink-2); position:relative; transition:.16s}
.tb-btn:hover{border-color:var(--ink-4); color:var(--ink); transform:translateY(-1px)}
.tb-btn svg{width:18px;height:18px}
.tb-btn .dot{position:absolute; top:9px; right:10px; width:7px; height:7px; background:var(--crimson); border-radius:50%; border:1.5px solid #fff}
.tb-user{display:flex; align-items:center; gap:11px; padding:5px 7px 5px 5px; border-radius:30px; border:1px solid var(--line); background:#fff; transition:.16s}
.tb-user:hover{border-color:var(--ink-4); box-shadow:var(--shadow-sm)}
.avatar{width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:12.5px; color:#fff; background:linear-gradient(135deg,var(--navy-500),var(--navy)); flex-shrink:0; letter-spacing:.02em}
.tb-user .who{line-height:1.25; text-align:left}
.tb-user .who b{font-size:12.5px; font-weight:600; display:block}
.tb-user .who span{font-size:10.5px; color:var(--ink-3)}
.tb-user .chev{width:15px;height:15px; color:var(--ink-3)}

/* ---- View container ---- */
.view-scroll{flex:1; overflow-y:auto; padding:28px}
.view{display:block}

.anim{animation:rise .55s cubic-bezier(.2,.7,.2,1) backwards}
@keyframes rise{from{opacity:0; transform:translateY(14px)}to{opacity:1; transform:none}}
.anim:nth-child(1){animation-delay:.02s}
.anim:nth-child(2){animation-delay:.07s}
.anim:nth-child(3){animation-delay:.12s}
.anim:nth-child(4){animation-delay:.17s}
.anim:nth-child(5){animation-delay:.22s}
.anim:nth-child(6){animation-delay:.27s}

/* ---- Page header ---- */
.page-head{display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:24px; flex-wrap:wrap}
.page-head .ph-l .eyebrow{font-family:var(--mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--crimson); font-weight:500; margin-bottom:8px; display:flex; align-items:center; gap:9px}
.page-head .ph-l .eyebrow::before{content:""; width:22px; height:1px; background:var(--crimson)}
.page-head h2{font-family:var(--serif); font-weight:600; font-size:31px; letter-spacing:-.015em; line-height:1.1}
.page-head .ph-l p{color:var(--ink-3); margin-top:6px; font-size:13.5px; max-width:520px}
.ph-actions{display:flex; gap:10px; align-items:center}

/* ---- Buttons / chips ---- */
.btn{display:inline-flex; align-items:center; gap:8px; height:40px; padding:0 16px; border-radius:var(--r); font-weight:600; font-size:13px; transition:.16s; white-space:nowrap; border:1px solid transparent}
.btn svg{width:16px;height:16px}
.btn-pri{background:var(--navy); color:#fff; box-shadow:0 6px 16px -6px rgba(47,40,115,.5)}
.btn-pri:hover{background:var(--navy-800); transform:translateY(-1px)}
.btn-cri{background:var(--crimson); color:#fff; box-shadow:0 6px 16px -6px rgba(212,33,62,.5)}
.btn-cri:hover{background:var(--crimson-600); transform:translateY(-1px)}
.btn-ghost{background:#fff; border-color:var(--line); color:var(--ink-2)}
.btn-ghost:hover{border-color:var(--ink-4); color:var(--ink)}
.btn-grad{background:linear-gradient(135deg,var(--navy-500),var(--navy-800)); color:#fff; border-color:transparent; box-shadow:0 6px 16px -7px rgba(47,40,115,.55)}
.btn-grad:hover{filter:brightness(1.1); transform:translateY(-1px); color:#fff}
/* Paginacja (pierwsza/ostatnia/numery) */
.pager{position:relative; display:flex; align-items:center; justify-content:center; gap:5px; flex-wrap:wrap; padding:14px 16px; border-top:1px solid var(--line-2)}
.pager>span{position:absolute; left:16px; top:50%; transform:translateY(-50%); font-size:12px; color:var(--ink-3)}
.pg-ctrls{display:flex; align-items:center; justify-content:center; gap:5px; flex-wrap:wrap}
@media(max-width:720px){.pager{flex-direction:column}.pager>span{position:static; transform:none; margin-bottom:8px}}
.pager a{display:inline-flex; align-items:center; justify-content:center; min-width:33px; height:33px; padding:0 10px; border:1px solid var(--line); border-radius:9px; font-size:12.5px; font-weight:600; color:var(--ink-2); background:#fff; transition:.12s}
.pager a:hover{border-color:var(--navy-500); color:var(--navy-500)}
.pager a.on{background:var(--navy); color:#fff; border-color:var(--navy)}
.pager a.disabled{opacity:.38; pointer-events:none}
.pager .pg-gap{color:var(--ink-4); padding:0 3px}
/* Sortowalne nagłówki tabeli */
.tbl thead th.sortable a{color:inherit; display:inline-flex; align-items:center; gap:4px; cursor:pointer}
.tbl thead th.sortable a:hover{color:var(--navy-500)}
.tbl thead th .sort-ar{font-size:11px; color:var(--ink-4); margin-left:2px; transition:.12s}
.tbl thead th.sortable a:hover .sort-ar{color:var(--navy-500)}
.tbl thead th.sort-on .sort-ar{color:var(--navy-500); font-weight:700}
/* Kolor wiersza wg salda: dodatnie saldo = DŁUG → czerwony; ujemne saldo = NADPŁATA → zielony */
.tbl tbody tr.bal-pos>td{background:var(--crimson-050)}
.tbl tbody tr.bal-neg>td{background:var(--green-050)}
.tbl tbody tr.bal-pos:hover>td{background:var(--crimson-100)}
.tbl tbody tr.bal-neg:hover>td{background:#d8efe3}
.btn-sm{height:34px; padding:0 13px; font-size:12.5px}
.seg{display:inline-flex; background:#fff; border:1px solid var(--line); border-radius:10px; padding:3px}
.seg button{padding:6px 13px; border-radius:7px; font-size:12.5px; font-weight:600; color:var(--ink-3); transition:.14s}
.seg button.on{background:var(--navy); color:#fff; box-shadow:var(--shadow-sm)}
.chip{display:inline-flex; align-items:center; gap:6px; font-size:11.5px; font-weight:600; padding:4px 10px; border-radius:30px; line-height:1}
.chip svg{width:12px;height:12px}
.chip.green{background:var(--green-050); color:var(--green)}
.chip.amber{background:var(--amber-050); color:var(--amber)}
.chip.red{background:var(--crimson-050); color:var(--crimson)}
.chip.navy{background:var(--navy-050); color:var(--navy-500)}
.chip.gray{background:var(--line-2); color:var(--ink-2)}
.chip.gold{background:var(--gold-050); color:var(--gold)}
.chip .led{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 22%,transparent)}

/* ---- Cards / grids ---- */
.card{background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--shadow-sm)}
.card-h{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:18px 20px; border-bottom:1px solid var(--line-2)}
.card-h .t{font-weight:700; font-size:14.5px; display:flex; align-items:center; gap:9px}
.card-h .t .ic{width:30px; height:30px; border-radius:9px; background:var(--navy-050); color:var(--navy-500); display:flex; align-items:center; justify-content:center}
.card-h .t .ic svg{width:16px;height:16px}
.card-h .s{font-size:12px; color:var(--ink-3); margin-top:2px; font-weight:400}
.card-b{padding:20px}
.grid{display:grid; gap:18px}
.g-kpi{grid-template-columns:repeat(4,1fr)}
.g-2{grid-template-columns:repeat(2,1fr)}
.g-3{grid-template-columns:repeat(3,1fr)}
.g-dash{grid-template-columns:2fr 1fr}
.g-dash2{grid-template-columns:1.4fr 1fr 1fr}
.g-dash, .g-dash2, .g-2, .g-3{margin-bottom:18px}
.g-dash .card, .g-dash2 .card{align-self:start}
.span2{grid-column:span 2}

/* ---- KPI ---- */
.kpi{background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:18px 19px; position:relative; overflow:hidden; box-shadow:var(--shadow-sm); transition:.2s}
.kpi:hover{box-shadow:var(--shadow); transform:translateY(-2px); border-color:var(--navy-100)}
.kpi .top{display:flex; align-items:center; justify-content:space-between; margin-bottom:14px}
.kpi .ic{width:38px; height:38px; border-radius:11px; display:flex; align-items:center; justify-content:center}
.kpi .ic svg{width:19px;height:19px}
.kpi .ic.navy{background:var(--navy-050); color:var(--navy-500)} .kpi .ic.cri{background:var(--crimson-050); color:var(--crimson)}
.kpi .ic.green{background:var(--green-050); color:var(--green)} .kpi .ic.gold{background:var(--gold-050); color:var(--gold)}
.kpi .delta{display:inline-flex; align-items:center; gap:3px; font-size:11.5px; font-weight:700; padding:3px 8px; border-radius:30px}
.kpi .delta.up{background:var(--green-050); color:var(--green)} .kpi .delta.down{background:var(--crimson-050); color:var(--crimson)}
.kpi .delta svg{width:12px;height:12px}
.kpi .lab{font-size:12.5px; color:var(--ink-3); font-weight:500}
.kpi .val{font-family:var(--serif); font-weight:600; font-size:30px; letter-spacing:-.02em; line-height:1.1; margin-top:3px}
.kpi .val small{font-size:15px; color:var(--ink-3); font-weight:500; font-family:var(--sans)}
.kpi .spark{position:absolute; right:0; bottom:0; width:100%; height:42px; opacity:.5}

/* ---- Tables ---- */
.tbl-wrap{overflow-x:auto}
table.tbl{width:100%; border-collapse:collapse; font-size:13px}
.tbl thead th{text-align:left; font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-3); padding:11px 16px; border-bottom:1px solid var(--line); white-space:nowrap; background:var(--paper-2)}
.tbl tbody td{padding:13px 16px; border-bottom:1px solid var(--line-2); vertical-align:middle}
.tbl tbody tr{transition:.12s}
.tbl tbody tr:hover{background:var(--navy-050)}
.tbl tbody tr.clickable{cursor:pointer}
.tbl tbody tr:last-child td{border-bottom:none}
/* Podświetlenie stanu magazynowego: brak = czerwono, niski = bursztyn (cały wiersz/kafelek) */
.tbl tbody tr.stock-out>td{background:var(--crimson-050)}
.tbl tbody tr.stock-low>td{background:var(--amber-050)}
.tbl tbody tr.stock-out:hover>td{background:var(--crimson-100)}
.tbl tbody tr.stock-low:hover>td{background:#f6e7c6}
.kpi.stock-out{background:var(--crimson-050); border-color:var(--crimson-100)}
.kpi.stock-low{background:var(--amber-050); border-color:#eccf86}
/* Magazyn: kafelki alertów (rozwijane) + spinner AJAX */
.alert-tiles{display:flex; flex-wrap:wrap; gap:8px}
.alert-tiles.collapsed>.alert-tile:nth-child(n+13){display:none}
.alert-tile{flex:1 1 230px; max-width:340px; display:block; padding:9px 12px; border-radius:11px; border:1px solid var(--line); text-decoration:none; color:inherit; transition:.12s}
.alert-tile:hover{box-shadow:var(--shadow-sm); transform:translateY(-1px)}
.alert-tile.is-out{background:var(--crimson-050); border-color:var(--crimson-100)}
.alert-tile.is-low{background:var(--amber-050); border-color:#eccf86}
.alert-tile .at-badge{font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase}
.alert-tile.is-out .at-badge{color:var(--crimson-600)}
.alert-tile.is-low .at-badge{color:var(--amber)}
.alert-tile b{display:block; font-size:12.5px; line-height:1.25; margin:2px 0}
.alert-tile .at-sub{font-size:11px; color:var(--ink-3)}
.bk-spin{display:inline-block; width:16px; height:16px; border:2.5px solid var(--line); border-top-color:var(--navy-500); border-radius:50%; animation:bkspin .7s linear infinite; vertical-align:middle}
@keyframes bkspin{to{transform:rotate(360deg)}}
#stockResults.loading{opacity:.45; pointer-events:none; transition:opacity .1s}
.tbl .r{text-align:right}
.tbl .num{font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:12.5px; white-space:nowrap}
.cellname{display:flex; align-items:center; gap:11px}
.cellname .av{width:30px;height:30px;border-radius:8px; display:flex;align-items:center;justify-content:center; font-weight:700;font-size:11px;color:#fff; flex-shrink:0}
.cellname b{font-weight:600; display:block; font-size:13px}
.cellname span{font-size:11.5px; color:var(--ink-3)}
.bookcover{width:30px;height:40px;border-radius:4px; flex-shrink:0; box-shadow:var(--shadow-sm); position:relative; overflow:hidden}
.bookcover::after{content:""; position:absolute; left:3px; top:0; bottom:0; width:1.5px; background:rgba(255,255,255,.25)}

/* ---- misc bits ---- */
.bar-h{height:8px; background:var(--line-2); border-radius:10px; overflow:hidden}
.bar-h i{display:block; height:100%; border-radius:10px; transition:width 1s cubic-bezier(.3,.8,.3,1)}
.dotline{display:flex; align-items:center; gap:8px}
.legend{display:flex; flex-direction:column; gap:13px}
.legend .li{display:flex; align-items:center; gap:10px; font-size:13px}
.legend .li .sw{width:10px;height:10px;border-radius:3px; flex-shrink:0}
.legend .li b{margin-left:auto; font-family:var(--mono); font-weight:600; font-size:12.5px}
.legend .li span{color:var(--ink-3); font-size:11px}
.divider{height:1px; background:var(--line-2); margin:16px 0}

/* feed */
.feed{display:flex; flex-direction:column}
.feed .fi{display:flex; gap:13px; padding:13px 0; border-bottom:1px solid var(--line-2)}
.feed .fi:last-child{border-bottom:none}
.feed .fi .fic{width:32px;height:32px;border-radius:9px; display:flex;align-items:center;justify-content:center; flex-shrink:0}
.feed .fi .fic svg{width:15px;height:15px}
.feed .fi .ft{font-size:13px; line-height:1.45}
.feed .fi .ft b{font-weight:600}
.feed .fi .fm{font-size:11px; color:var(--ink-3); margin-top:3px; font-family:var(--mono)}

/* role banner */
.role-banner{display:flex; align-items:center; gap:12px; padding:11px 16px; background:linear-gradient(90deg,var(--navy-050),transparent); border:1px solid var(--navy-100); border-left:3px solid var(--navy-500); border-radius:var(--r); margin-bottom:22px; font-size:13px}
.role-banner svg{width:17px;height:17px; color:var(--navy-500); flex-shrink:0}
.role-banner b{color:var(--navy)}
.role-banner .x{margin-left:auto; color:var(--ink-3); font-size:12px}

/* tabs */
.tabs{display:flex; gap:4px; border-bottom:1px solid var(--line); margin-bottom:22px}
.tabs button{padding:11px 16px; font-size:13.5px; font-weight:600; color:var(--ink-3); position:relative; transition:.14s}
.tabs button:hover{color:var(--ink)}
.tabs button.on{color:var(--navy)}
.tabs button.on::after{content:""; position:absolute; left:12px; right:12px; bottom:-1px; height:2.5px; background:var(--crimson); border-radius:3px}
.tabpane{display:none} .tabpane.on{display:block; animation:rise .4s backwards}

/* empty hint */
.hint{font-size:12px; color:var(--ink-3); display:flex; align-items:center; gap:7px}
.hint svg{width:14px;height:14px}

/* hide by role */
.app[data-role="handlowiec"] [data-roles]:not([data-roles~="handlowiec"]){display:none!important}
.app[data-role="ksiegowa"] [data-roles]:not([data-roles~="ksiegowa"]){display:none!important}
.app[data-role="kierownik"] [data-roles]:not([data-roles~="kierownik"]){display:none!important}

/* ============================ DROPDOWNS / PALETTE / TOAST ============================ */
.pop{position:fixed; z-index:120; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--shadow-lg); padding:8px; opacity:0; transform:translateY(-8px) scale(.98); pointer-events:none; transition:.16s}
.pop.open{opacity:1; transform:none; pointer-events:auto}
.pop-h{padding:10px 12px 8px; font-size:11px; font-family:var(--mono); letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3)}
.pop-i{display:flex; align-items:center; gap:11px; padding:9px 11px; border-radius:9px; font-size:13px; transition:.12s; cursor:pointer}
.pop-i:hover{background:var(--navy-050)}
.pop-i svg{width:16px;height:16px; color:var(--ink-2)}
.pop-i .av{width:30px;height:30px}
.pop-i b{display:block; line-height:1.35}
.pop-i.red{color:var(--crimson)} .pop-i.red svg{color:var(--crimson)}
.notif .ni{display:flex; gap:8px; padding:11px; border-radius:10px; align-items:flex-start}
.notif .ni:hover{background:var(--paper)}
.notif .ni .ni-go{display:flex; gap:11px; flex:1; min-width:0; text-decoration:none; color:inherit}
.notif .ni .nd{width:9px;height:9px;border-radius:50%;margin-top:5px;flex-shrink:0}
.notif .ni .nt{font-size:12.5px; line-height:1.4}
.notif .ni .nm{font-size:11px;color:var(--ink-3); margin-top:3px; font-family:var(--mono)}
.notif .ni .nx{flex-shrink:0; width:24px;height:24px; padding:0; border:none; background:transparent; color:var(--ink-4); border-radius:7px; cursor:pointer; font-size:19px; line-height:1; display:flex; align-items:center; justify-content:center; transition:.12s}
.notif .ni .nx:hover{background:var(--crimson-050); color:var(--crimson)}
.notif .notif-empty{cursor:default}
.pop-h-flex{display:flex; align-items:center; justify-content:space-between}
.nclear{border:none; background:transparent; color:var(--navy-500); font-size:10.5px; font-weight:700; cursor:pointer; padding:2px 7px; border-radius:6px; font-family:var(--mono); letter-spacing:.06em}
.nclear:hover{background:var(--navy-050)}

.scrim{position:fixed; inset:0; background:rgba(20,16,44,.42); backdrop-filter:blur(3px); z-index:110; opacity:0; pointer-events:none; transition:.2s}
.scrim.open{opacity:1; pointer-events:auto}
.palette{position:fixed; top:14vh; left:50%; transform:translateX(-50%) scale(.97); width:min(620px,92vw); background:#fff; border:1px solid var(--line); border-radius:var(--r-xl); box-shadow:var(--shadow-lg); z-index:115; opacity:0; pointer-events:none; transition:.2s; overflow:hidden}
.palette.open{opacity:1; pointer-events:auto; transform:translateX(-50%) scale(1)}
.palette .pin{display:flex; align-items:center; gap:13px; padding:18px 20px; border-bottom:1px solid var(--line-2)}
.palette .pin svg{width:20px;height:20px; color:var(--ink-3)}
.palette .pin input{flex:1; border:none; outline:none; font-size:16px; background:none}
.palette .pin .esc{font-family:var(--mono); font-size:10.5px; color:var(--ink-3); border:1px solid var(--line); border-radius:5px; padding:2px 7px}
.palette .pbody{max-height:50vh; overflow-y:auto; padding:8px}
.palette .pcat{font-size:10.5px; font-family:var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--ink-4); padding:10px 12px 5px}
.palette .pr{display:flex; align-items:center; gap:13px; padding:11px 13px; border-radius:11px; cursor:pointer}
.palette .pr.sel,.palette .pr:hover{background:var(--navy-050)}
.palette .pr .pic{width:34px;height:34px;border-radius:9px; background:var(--navy-050); color:var(--navy-500); display:flex;align-items:center;justify-content:center}
.palette .pr .pic svg{width:17px;height:17px}
.palette .pr b{font-size:13.5px; font-weight:600} .palette .pr span{font-size:11.5px; color:var(--ink-3); display:block}
.palette .pr .go{margin-left:auto; font-family:var(--mono); font-size:10px; color:var(--ink-4); border:1px solid var(--line); padding:2px 6px; border-radius:5px}

#toasts{position:fixed; bottom:24px; right:24px; z-index:140; display:flex; flex-direction:column; gap:10px}
.toast{display:flex; align-items:center; gap:12px; background:var(--ink); color:#fff; padding:13px 16px 13px 14px; border-radius:var(--r); box-shadow:var(--shadow-lg); font-size:13px; font-weight:500; animation:toastin .3s cubic-bezier(.2,.8,.2,1); max-width:340px}
.toast .ti{width:26px;height:26px;border-radius:8px; display:flex;align-items:center;justify-content:center; flex-shrink:0}
.toast .ti svg{width:15px;height:15px}
@keyframes toastin{from{opacity:0; transform:translateX(40px)}to{opacity:1;transform:none}}

/* charts */
.linechart{width:100%; height:auto; overflow:visible}
.linechart .area{opacity:0; transition:opacity .8s ease .2s}
.linechart.drawn .area{opacity:1}
.linechart .pl{fill:none; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; transition:stroke-dashoffset 1.3s cubic-bezier(.4,.6,.2,1)}
.linechart .dot{opacity:0; transition:opacity .3s}
.linechart.drawn .dot{opacity:1; transition:opacity .3s ease 1s}
.bars rect.b{transform:scaleY(0); transform-origin:bottom; transition:transform .9s cubic-bezier(.3,.8,.3,1)}
.bars.drawn rect.b{transform:scaleY(1)}
.donut{position:relative; width:170px; height:170px; flex-shrink:0}
.donut .ring{width:100%;height:100%;border-radius:50%; transform:rotate(-90deg) scale(.6); opacity:0; transition:transform .7s cubic-bezier(.3,.8,.3,1), opacity .5s}
.donut.drawn .ring{transform:rotate(-90deg) scale(1); opacity:1}
.donut .hole{position:absolute; inset:26px; background:#fff; border-radius:50%; display:flex; flex-direction:column; align-items:center; justify-content:center; box-shadow:inset 0 0 0 1px var(--line-2)}
.donut .hole b{font-family:var(--serif); font-size:25px; font-weight:600; line-height:1}
.donut .hole span{font-size:10px; color:var(--ink-3); font-family:var(--mono); letter-spacing:.06em; margin-top:3px; text-transform:uppercase}

/* gauge */
.miniprog{display:flex;flex-direction:column;gap:14px}
.miniprog .mp .top{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:7px}
.miniprog .mp .top b{font-weight:600} .miniprog .mp .top span{font-family:var(--mono);color:var(--ink-3)}

/* integration tiles */
.integ-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px}
.integ{background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:18px; transition:.18s; position:relative; box-shadow:var(--shadow-sm)}
.integ:hover{transform:translateY(-3px); box-shadow:var(--shadow); border-color:var(--navy-100)}
.integ .ih{display:flex; align-items:center; gap:13px; margin-bottom:14px}
.integ .logo{width:46px;height:46px;border-radius:12px; display:flex;align-items:center;justify-content:center; font-weight:800; font-size:15px; color:#fff; flex-shrink:0; font-family:var(--serif)}
.integ .nm{font-weight:700; font-size:14.5px} .integ .ds{font-size:11.5px; color:var(--ink-3)}
.integ .meta{display:flex; align-items:center; justify-content:space-between; font-size:11.5px; color:var(--ink-3); margin-top:14px; padding-top:13px; border-top:1px solid var(--line-2); font-family:var(--mono)}
.switch{width:38px;height:22px;border-radius:20px;background:var(--green); position:relative; transition:.2s; flex-shrink:0}
.switch.off{background:var(--ink-4)}
.switch i{position:absolute; top:2px; left:2px; width:18px;height:18px;border-radius:50%;background:#fff; transition:.2s; box-shadow:var(--shadow-sm)}
.switch.off i{left:2px} .switch:not(.off) i{left:18px}

/* AI studio */
.ai-tool{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:18px; box-shadow:var(--shadow-sm); transition:.18s; cursor:pointer}
.ai-tool:hover{transform:translateY(-3px); box-shadow:var(--shadow); border-color:var(--crimson-100)}
.ai-tool .ic{width:46px;height:46px;border-radius:13px; display:flex;align-items:center;justify-content:center; margin-bottom:14px; color:#fff}
.ai-tool .ic svg{width:22px;height:22px}
.ai-tool h4{font-size:15px; font-weight:700; margin-bottom:5px}
.ai-tool p{font-size:12.5px; color:var(--ink-3); line-height:1.5}
.ai-panel{background:linear-gradient(165deg,#fff,var(--paper-2)); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--shadow-sm)}
.ai-doc{font-family:var(--book); font-size:15px; line-height:1.9; color:var(--ink)}
.ai-doc .del{background:var(--crimson-050); color:var(--crimson-700); text-decoration:line-through; text-decoration-color:var(--crimson); border-radius:3px; padding:0 2px}
.ai-doc .ins{background:var(--green-050); color:var(--green); border-radius:3px; padding:0 2px; font-weight:500}
.typed::after{content:"▋"; color:var(--crimson); animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.gen-card{background:var(--navy); color:#fff; border-radius:var(--r); padding:16px 18px; position:relative; overflow:hidden}
.gen-card::before{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;background:radial-gradient(circle,rgba(212,33,62,.4),transparent 70%)}
.swatch-img{aspect-ratio:1; border-radius:var(--r); position:relative; overflow:hidden; display:flex; align-items:flex-end; padding:12px; color:#fff; font-size:11px; font-weight:600}

/* settings list */
.set-row{display:flex; align-items:center; gap:16px; padding:16px 0; border-bottom:1px solid var(--line-2)}
.set-row:last-child{border:none}
.set-row .si{width:40px;height:40px;border-radius:11px;background:var(--navy-050);color:var(--navy-500);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.set-row .st b{font-size:13.5px;font-weight:600;display:block} .set-row .st span{font-size:12px;color:var(--ink-3)}
.set-row .sa{margin-left:auto}
.field select{width:100%; height:46px; padding:0 12px; border:1.5px solid var(--line); border-radius:var(--r); background:#fff; font-size:14px; color:var(--ink); cursor:pointer}
.field select:focus{outline:none; border-color:var(--navy-500); box-shadow:0 0 0 4px var(--navy-050)}
.sa select{height:36px; padding:0 10px; border:1.5px solid var(--line); border-radius:9px; font-size:12.5px; background:#fff; color:var(--ink); cursor:pointer}
.pw-req{display:flex; flex-wrap:wrap; gap:6px; margin-top:8px}
.pw-req span{font-size:11px; color:var(--ink-3); background:var(--paper); border:1px solid var(--line); border-radius:20px; padding:3px 9px}
/* user edit */
.perm{width:34px; height:26px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; border:1.5px solid var(--line); color:var(--ink-4); transition:.14s}
.perm svg{width:14px; height:14px}
.perm.on{background:var(--green-050); border-color:transparent; color:var(--green)}
.perm:hover{border-color:var(--ink-4)}
.kv{display:flex; justify-content:space-between; align-items:center; gap:12px; padding:11px 0; border-bottom:1px solid var(--line-2); font-size:13px}
.kv:last-child{border:none}
.kv .k{color:var(--ink-3)} .kv .v{font-weight:600; text-align:right}
.chipset{display:flex; flex-wrap:wrap; gap:7px; margin-top:9px}
.tbl td.permc{text-align:center}
/* client card timeline */
.tl{margin-top:2px}
.tl .ti{position:relative; padding:0 0 20px 36px}
.tl .ti::before{content:""; position:absolute; left:12px; top:6px; bottom:-2px; width:2px; background:var(--line)}
.tl .ti:last-child::before{display:none}
.tl .ti:last-child{padding-bottom:0}
.tl .ti .dot{position:absolute; left:0; top:0; width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff}
.tl .ti .dot svg{width:13px; height:13px}
.tl .ti .hh{display:flex; align-items:center; gap:9px; flex-wrap:wrap}
.tl .ti .hh b{font-size:13px; font-weight:600}
.tl .ti .hh .tm{font-size:11px; color:var(--ink-3); font-family:var(--mono); margin-left:auto}
.tl .ti .bd{font-size:12.5px; color:var(--ink-2); margin-top:5px; line-height:1.55}
.note-add{display:flex; gap:9px; margin-bottom:20px}
.note-add input{flex:1; height:42px; padding:0 14px; border:1.5px solid var(--line); border-radius:var(--r); font-size:13.5px; background:#fff}
.note-add input:focus{outline:none; border-color:var(--navy-500); box-shadow:0 0 0 4px var(--navy-050)}
/* Pola formularza (selecty, daty, textarea) - spojne z .note-add input */
.inp{height:42px; padding:0 12px; border:1.5px solid var(--line); border-radius:var(--r); font-size:13px; background:#fff; color:var(--ink); font-family:inherit}
.inp:focus{outline:none; border-color:var(--navy-500); box-shadow:0 0 0 4px var(--navy-050)}
textarea.inp{height:auto; padding:10px 12px; line-height:1.5}
select.inp{cursor:pointer}

/* Statystyki - poziome paski udzialu + trend miesieczny */
.sbar{display:flex; align-items:center; gap:12px; padding:7px 0; border-bottom:1px solid var(--line)}
.sbar:last-child{border-bottom:none}
.sbar-l{width:38%; font-size:12.5px; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.sbar-t{flex:1; height:9px; background:var(--navy-050); border-radius:6px; overflow:hidden}
.sbar-t i{display:block; height:100%; background:linear-gradient(90deg,var(--navy-500),var(--crimson)); border-radius:6px}
.sbar-v{width:128px; text-align:right; font-size:12.5px; font-weight:600; font-family:var(--mono)}
.sbar-v small{display:block; font-weight:400; color:var(--ink-3); font-size:11px; font-family:inherit}
/* Trend miesięczny: przewijalny poziomo pasek. Kolumny mają stałą bazę (flex-basis), więc się nie ściskają
   ani nie nachodzą etykietami; gdy miesięcy mało - rozciągają się na całość, gdy dużo - pojawia się scroll. */
.trend{display:flex; align-items:flex-end; justify-content:flex-start; gap:10px; height:190px; padding:10px 2px 4px;
  overflow-x:auto; overflow-y:hidden; scrollbar-width:thin; scrollbar-color:#c7c1da transparent; scroll-snap-type:x proximity}
.trend::-webkit-scrollbar{height:9px}
.trend::-webkit-scrollbar-track{background:transparent}
.trend::-webkit-scrollbar-thumb{background:#cdc8de; border-radius:6px; border:2px solid transparent; background-clip:padding-box}
.trend::-webkit-scrollbar-thumb:hover{background:#b1aacb; background-clip:padding-box}
.trend-col{display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:7px;
  flex:1 0 96px; max-width:180px; scroll-snap-align:start}
.trend-col i{display:block; width:56%; max-width:56px; min-width:34px; background:linear-gradient(180deg,var(--navy-500),#241d57); border-radius:6px 6px 0 0; transition:height .25s}
.trend-col span{font-size:11px; color:var(--ink-3); font-family:var(--mono); white-space:nowrap}
.trend-col b{font-size:12px; color:var(--ink-2); font-weight:600; font-family:var(--mono); white-space:nowrap; letter-spacing:-.2px}
/* Pulpit: kompaktowy trend (mieści ~12-18 mies. bez scrolla - wersja przeglądowa, bez etykiet wartości) */
.trend.compact{overflow:visible; height:150px; padding:6px 2px 0}
.trend.compact .trend-col{flex:1 1 0; min-width:0; max-width:none}
/* Pulpit: trójka kompaktowych statystyk w karcie (lejek zamówień) */
.mini3{display:flex; gap:10px; text-align:center}
.mini3>div{flex:1; background:var(--navy-050); border-radius:12px; padding:15px 8px}
.mini3 .mk-v{display:block; font-size:23px; font-weight:700; font-family:var(--mono); letter-spacing:-.5px; color:var(--ink-2); line-height:1}
.mini3 .mk-v.green{color:var(--green)}
.mini3 .mk-v.amber{color:var(--amber)}
.mini3 .mk-l{display:block; font-size:11px; color:var(--ink-3); margin-top:6px}

/* Rekomendacje / cross-sell (karta klienta) */
.rec-intro{font-size:12px; color:var(--ink-3); line-height:1.55; margin:-2px 0 14px; max-width:820px}
.rec-intro b{color:var(--ink-2); font-weight:600}
.rec-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(225px,1fr)); gap:12px}
.rec{display:flex; flex-direction:column; gap:7px; padding:14px; border:1.5px solid var(--line); border-radius:var(--r); background:#fff; text-decoration:none; color:inherit; transition:border-color .15s, box-shadow .15s, transform .15s}
.rec:hover{border-color:var(--navy-500); box-shadow:0 6px 18px rgba(47,40,115,.10); transform:translateY(-2px)}
.rec-why{align-self:flex-start; font-size:10.5px; padding:3px 9px}
.rec-title{font-size:13.5px; font-weight:700; line-height:1.3; color:var(--ink)}
.rec-author{font-size:11.5px; color:var(--ink-3); margin-top:-3px}
.rec-foot{display:flex; align-items:center; justify-content:space-between; gap:6px; margin-top:auto; padding-top:8px}
.rec-foot .mono{font-size:13px; font-weight:700; color:var(--ink)}
.rec-cta{display:flex; align-items:center; gap:3px; padding-top:9px; border-top:1px solid var(--line-2); font-size:11px; font-weight:600; color:var(--navy-500); opacity:.72; transition:opacity .15s}
.rec-cta svg{width:13px; height:13px}
.rec:hover .rec-cta{opacity:1}

/* Kolejka kampanii (telemarketing) */
.qitem{display:flex; flex-wrap:wrap; gap:12px; align-items:center; justify-content:space-between; padding:12px 14px; border:1px solid var(--line); border-radius:var(--r); background:#fff; margin-bottom:10px}
.qitem-info{display:flex; flex-direction:column; gap:4px; min-width:230px; flex:1}
.qitem-info .meta{display:flex; gap:7px; flex-wrap:wrap; align-items:center; font-size:11.5px; color:var(--ink-3)}
.qitem-action{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
.qitem-action .inp{height:38px}

/* ============================ RESPONSIVE ============================ */
@media(max-width:1180px){
  .g-kpi{grid-template-columns:repeat(2,1fr)}
  .g-dash,.g-dash2,.g-2,.g-3{grid-template-columns:1fr}
  .span2{grid-column:auto}
  .integ-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:900px){
  :root{--sb:0px}
  .sidebar{transform:translateX(-100%); transition:transform .3s ease; width:280px}
  .app.nav-open .sidebar{transform:none}
  .app{grid-template-columns:1fr}
  .main{grid-column:1}
  .tb-btn.tb-mob{display:flex}
  .tb-search{display:none}
  .login{grid-template-columns:1fr}
  #login{grid-template-columns:1fr; grid-template-rows:auto 1fr}
  .login-art{display:none}
  .login-mhead{display:flex; align-items:center; gap:12px; padding:18px 22px; background:linear-gradient(120deg,#241d57,#1c1648); position:relative; overflow:hidden}
  .login-mhead::after{content:""; position:absolute; right:-30px; top:-40px; width:120px; height:120px; background:radial-gradient(circle,rgba(212,33,62,.4),transparent 70%)}
  .login-mhead img{height:28px; position:relative; z-index:1}
  .tb-title h1{font-size:17px}
}
@media(max-width:560px){
  .g-kpi{grid-template-columns:1fr}
  .integ-grid{grid-template-columns:1fr}
  .view-scroll{padding:18px}
  .topbar{padding:0 16px}
  .page-head h2{font-size:25px}
  .ph-actions{width:100%;flex-wrap:wrap}
  .seg{overflow-x:auto;max-width:100%}
  .role-banner{flex-wrap:wrap}
  .role-banner .x{margin-left:0}
  .login-form-wrap{padding:24px}
}
.nav-scrim{position:fixed;inset:0;background:rgba(20,16,44,.4);z-index:79;opacity:0;pointer-events:none;transition:.25s}
.app.nav-open .nav-scrim{opacity:1;pointer-events:auto}
@media(min-width:901px){.nav-scrim{display:none}}
