:root{
  --navy:#0c1f3a;--navy2:#0a1a31;--navy-line:#1c3454;--navy-mut:#8aa0bd;
  --ink:#1b2533;--mut:#64748b;--line:#e6eaf0;--bg:#f4f6fa;--card:#fff;
  --acc:#2563eb;--acc2:#1d4ed8;--ok:#16a34a;--okbg:#dcfce7;--warn:#d97706;--warnbg:#fef3c7;--bad:#dc2626;--badbg:#fee2e2;
  --fill:#e7f7ec;--fill-line:#34d399;
  --sb:236px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font:14px/1.5 system-ui,"Segoe UI",Roboto,Arial;color:var(--ink);background:var(--bg)}
a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}
button{font:inherit}

/* ---------- App shell ---------- */
.app{display:flex;min-height:100vh}
.sidebar{width:var(--sb);flex:0 0 var(--sb);background:var(--navy);color:#cdd9ea;display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;z-index:30}
.sb-brand{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--navy-line)}
.sb-brand .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#3b82f6,#2563eb);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800}
.sb-brand .t{font-weight:800;color:#fff;font-size:15px;line-height:1.1}
.sb-brand .s{font-size:11px;color:var(--navy-mut)}
.sb-nav{flex:1;overflow-y:auto;padding:10px 10px 16px}
.sb-nav a{display:flex;align-items:center;gap:11px;color:#b9c7dc;padding:9px 12px;border-radius:9px;margin:2px 0;font-size:13.5px;font-weight:500}
.sb-nav a:hover{background:#13294780;color:#fff;text-decoration:none}
.sb-nav a.active{background:var(--acc);color:#fff;box-shadow:0 4px 14px -4px var(--acc)}
.sb-nav a .ic{width:18px;text-align:center;opacity:.95}
.sb-nav a .badge{margin-left:auto;background:var(--bad);color:#fff;border-radius:999px;font-size:11px;padding:1px 7px;font-weight:700}
.sb-sec{color:var(--navy-mut);font-size:10.5px;letter-spacing:.12em;font-weight:700;padding:14px 14px 6px}
.sb-foot{padding:12px 14px;border-top:1px solid var(--navy-line);font-size:12px;color:var(--navy-mut)}
.sb-foot .bar{height:6px;background:#13294a;border-radius:5px;margin:6px 0;overflow:hidden}
.sb-foot .bar > i{display:block;height:100%;width:24%;background:#3b82f6;border-radius:5px}
.sb-foot .up{display:flex;align-items:center;justify-content:space-between;margin-top:8px}
.sb-foot .up b{color:#dbe6f5}
.btn-up{background:#13294a;color:#cdd9ea;border:1px solid var(--navy-line);border-radius:8px;padding:5px 12px;cursor:pointer;font-size:12px}

.main{margin-left:var(--sb);flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;background:#fffffff2;backdrop-filter:blur(6px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:11px 22px}
.period{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 12px;font-size:13px;color:var(--ink);font-weight:600}
.topbar .sp{flex:1}
.tb-btn{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 13px;font-size:13px;color:var(--ink);cursor:pointer;font-weight:600}
.tb-btn:hover{background:#f7f9fc;text-decoration:none}
.tb-icon{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;color:var(--mut);cursor:pointer}
.userchip{display:flex;align-items:center;gap:9px;padding-left:6px}
.userchip .av{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px}
.userchip .nm{font-size:13px;font-weight:700;line-height:1.1}
.userchip .rl{font-size:11px;color:var(--mut)}
.content{padding:22px;max-width:1480px;width:100%}

h1{font-size:23px;margin:0 0 3px;font-weight:800}
.subtitle{color:var(--mut);margin:0 0 18px;font-size:13.5px}
h2{font-size:16px;margin:0 0 12px;font-weight:700}

/* ---------- cards / kpis ---------- */
.grid{display:grid;gap:15px}
.grid.c2{grid-template-columns:1fr 1fr}.grid.c3{grid-template-columns:repeat(3,1fr)}
.grid.c4{grid-template-columns:repeat(4,1fr)}.grid.c5{grid-template-columns:repeat(5,1fr)}.grid.c6{grid-template-columns:repeat(6,1fr)}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 1px 2px #0b1f3a08}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 17px;box-shadow:0 1px 2px #0b1f3a08}
.kpi .l{color:var(--mut);font-size:12.5px;font-weight:600;margin-bottom:7px;display:flex;align-items:center;gap:8px}
.kpi .n{font-size:23px;font-weight:800;letter-spacing:-.01em}
.kpi .sub{font-size:11.5px;color:var(--mut);margin-top:5px}
.kpi .ic{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px}
.kpi.head .l{justify-content:flex-start}
.ic-green{background:var(--okbg);color:var(--ok)}.ic-red{background:var(--badbg);color:var(--bad)}
.ic-blue{background:#dbeafe;color:var(--acc)}.ic-violet{background:#ede9fe;color:#7c3aed}.ic-amber{background:var(--warnbg);color:var(--warn)}
.up{color:var(--ok);font-weight:700}.down{color:var(--bad);font-weight:700}
.pos{color:var(--ok)}.neg{color:var(--bad)}

/* ---------- tables ---------- */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{color:var(--mut);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;background:#fafbfd}
tbody tr:hover{background:#f9fbfe}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
tr.off{opacity:.4}
.foot-sum{font-weight:800;background:#f6f8fc}

/* ---------- badges / pills ---------- */
.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}
.pill.ok,.pill.in,.pill.matched,.pill.bereit{background:var(--okbg);color:#166534}
.pill.out,.pill.no_receipt,.pill.no_payment,.pill.fehlt{background:var(--badbg);color:#991b1b}
.pill.warn,.pill.unmatched,.pill.pruefen,.pill.info2{background:var(--warnbg);color:#92400e}
.pill.info{background:#dbeafe;color:#1e40af}
.pill.cat{background:#eef2ff;color:#3730a3}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;background:var(--acc);color:#fff;border:0;border-radius:9px;padding:9px 15px;font-size:13.5px;cursor:pointer;font-weight:600}
.btn:hover{background:var(--acc2);text-decoration:none}
.btn.sec{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn.sec:hover{background:#f7f9fc}
.btn.ok{background:var(--ok)}.btn.ok:hover{filter:brightness(.95)}
.btn.ghost{background:transparent;color:var(--mut);border:1px solid var(--line)}
.btn.lg{padding:11px 18px;font-size:14px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
input,select{font:inherit;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
label{font-size:12.5px;color:var(--mut)}
.muted{color:var(--mut)}
.flash{padding:11px 15px;border-radius:10px;margin-bottom:16px}
.flash.ok{background:var(--okbg);color:#166534}.flash.err{background:var(--badbg);color:#991b1b}

/* ---------- circular progress ---------- */
.donut{--p:0;--c:var(--ok);width:64px;height:64px;border-radius:50%;
  background:radial-gradient(closest-side,#fff 78%,transparent 79%),conic-gradient(var(--c) calc(var(--p)*1%),#e6eaf0 0);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:var(--ink);flex:0 0 auto}

/* ---------- check / status ---------- */
.chk{color:var(--ok)}
.notice{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;border-radius:10px;padding:11px 14px;font-size:13px;display:flex;gap:9px;align-items:flex-start}
.notice .i{font-size:15px}

/* ---------- sticky action bar ---------- */
.sticky-bar{position:sticky;bottom:0;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 -4px 20px -8px #0b1f3a30;padding:13px 18px;display:flex;align-items:center;gap:18px;margin-top:16px}

/* ---------- EÜR official form preview ---------- */
.formdoc{background:#fff;border:1px solid #cdd5e2;border-radius:6px;padding:22px 24px;font-size:12.5px;color:#0f172a}
.formdoc .fhead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}
.formdoc .ftitle{font-size:20px;font-weight:800}
.formdoc .fsub{font-size:12px;color:#334155;max-width:330px}
.formdoc .fyear{font-size:26px;font-weight:800}
.formdoc .fbox{border:1px solid #94a3b8;border-radius:3px;padding:6px 9px;min-width:200px}
.formdoc .fbox .lbl{font-size:9.5px;color:#64748b}
.formrow{display:grid;grid-template-columns:38px 1fr 132px;align-items:center;border-bottom:1px dotted #cbd5e1}
.formrow > .z{color:#475569;padding:7px 8px;font-variant-numeric:tabular-nums}
.formrow > .f{padding:7px 8px}
.formrow > .v{padding:6px;text-align:right}
.formrow.sec{background:#eef2f7;font-weight:700;border-bottom:1px solid #94a3b8}
.formrow.sec > .f{grid-column:1 / 3;padding-left:8px}
.formrow.sum > .f,.formrow.sum > .z{font-weight:800}
.formrow.result{background:var(--fill);border:1px solid var(--fill-line);border-radius:6px;margin-top:6px}
.amtbox{display:inline-block;width:118px;text-align:right;border:1px solid #94a3b8;border-radius:3px;padding:5px 8px;font-variant-numeric:tabular-nums;background:#fff}
.amtbox.filled{background:var(--fill);border-color:var(--fill-line)}
.amtbox.sum{background:#fff;font-weight:800;border-color:#475569}
.formrow.hl .amtbox{outline:2px solid var(--acc);outline-offset:1px}
.formrow.hl{background:#eff6ff}

/* PDF viewer chrome */
.pdfwrap{background:#e9edf3;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.pdftools{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--line);font-size:13px}
.pdftools .sp{flex:1}
.pdfpage{padding:18px;max-height:760px;overflow:auto}
.toggle{position:relative;width:38px;height:21px;border-radius:999px;background:#cbd5e1;cursor:pointer;transition:.15s;border:0}
.toggle.on{background:var(--acc)}
.toggle::after{content:"";position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;transition:.15s}
.toggle.on::after{left:19px}

/* ---------- page layout: main column + right rail ---------- */
.layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start;margin-top:2px}
.col-main{min-width:0;display:flex;flex-direction:column;gap:16px}
.rail{display:flex;flex-direction:column;gap:16px;position:sticky;top:74px}
.rpanel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:15px 16px;box-shadow:0 1px 2px #0b1f3a08}
.rpanel > .h{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}
.rpanel > .h h3{font-size:13.5px;font-weight:700;margin:0}
.rpanel > .h .cnt{background:#eef2f7;color:var(--mut);border-radius:999px;font-size:11px;font-weight:700;padding:2px 9px}
.rpanel > .h .cnt.red{background:var(--badbg);color:var(--bad)}
.ritem{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:13px;border-bottom:1px solid #f1f4f8}
.ritem:last-child{border-bottom:0}
.ritem .dot{flex:0 0 auto}
.ritem .lbl{flex:1;color:var(--ink)}
.ritem .lbl small{display:block;color:var(--mut);font-size:11px;font-weight:400}
.ritem .val{font-weight:700;font-variant-numeric:tabular-nums}
.ritem .val.mut{color:var(--mut);font-weight:600}
.more{display:inline-block;margin-top:10px;font-size:12.5px;font-weight:600}
.dot-red{background:var(--bad)}.dot-amber{background:var(--warn)}.dot-blue{background:var(--acc)}
.dot-green{background:var(--ok)}.dot-violet{background:#7c3aed}.dot-gray{background:#94a3b8}.dot-pink{background:#ec4899}.dot-cyan{background:#06b6d4}

/* ---------- KPI extras: trend + sparkline + circular ---------- */
.kpi .top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.kpi .trend{font-size:11.5px;font-weight:700;margin-top:6px;display:inline-flex;align-items:center;gap:3px}
.kpi .spark{margin-top:8px}
.kpi.icv .l{margin-bottom:9px}
.kpicirc{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:15px 16px;box-shadow:0 1px 2px #0b1f3a08;display:flex;align-items:center;gap:13px}
.kpicirc .ring{width:52px;height:52px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:var(--acc);
  background:radial-gradient(closest-side,#fff 76%,transparent 77%),conic-gradient(var(--rc,var(--acc)) calc(var(--rp,75)*1%),#e6eaf0 0)}
.kpicirc .l{color:var(--mut);font-size:12px;font-weight:600}
.kpicirc .n{font-size:19px;font-weight:800;letter-spacing:-.01em}
.kpicirc .sub{font-size:11px;color:var(--mut);margin-top:2px}

/* ---------- donut + legend ---------- */
.donutbig{width:150px;height:150px;border-radius:50%;flex:0 0 auto;position:relative;
  background:conic-gradient(var(--seg));}
.donutbig::after{content:"";position:absolute;inset:26px;border-radius:50%;background:#fff;display:block}
.donutbig .ctr{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1}
.donutbig .ctr b{font-size:15px;font-weight:800}
.donutbig .ctr span{font-size:10.5px;color:var(--mut)}
.legend{list-style:none;margin:0;padding:0;flex:1;min-width:0}
.legend li{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:13px}
.legend li .dot{width:9px;height:9px;border-radius:3px;flex:0 0 auto}
.legend li .nm{flex:1;color:var(--ink)}
.legend li .pc{color:var(--mut);font-weight:600;width:38px;text-align:right}
.legend li .am{font-weight:700;width:88px;text-align:right;font-variant-numeric:tabular-nums}

/* ---------- progress bar ---------- */
.prog{height:7px;border-radius:5px;background:#eef2f7;overflow:hidden;min-width:90px}
.prog > i{display:block;height:100%;border-radius:5px;background:var(--ok)}
.progwrap{display:flex;align-items:center;gap:9px}
.progwrap .pct{font-size:12.5px;font-weight:700;width:38px;text-align:right;font-variant-numeric:tabular-nums}

/* ---------- bar / line charts ---------- */
.bars{display:flex;align-items:flex-end;gap:14px;height:150px;padding:6px 4px 0}
.bars .grp{flex:1;display:flex;align-items:flex-end;justify-content:center;gap:5px;height:100%}
.bars .grp i{width:14px;border-radius:4px 4px 0 0;background:var(--ok);display:block}
.bars .grp i.b{background:var(--acc)}
.barx{display:flex;gap:14px;margin-top:6px}
.barx span{flex:1;text-align:center;font-size:11px;color:var(--mut)}
.linechart{width:100%;height:auto;display:block}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin-bottom:16px}
.tabs a{padding:10px 2px;font-size:13.5px;font-weight:600;color:var(--mut);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a:hover{color:var(--ink);text-decoration:none}
.tabs a.active{color:var(--acc);border-bottom-color:var(--acc)}

/* ---------- filter bar ---------- */
.filterbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.filterbar .srch{position:relative;flex:1;min-width:180px;max-width:300px}
.filterbar .srch input{width:100%;padding-left:32px}
.filterbar .srch::before{content:"🔍";position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.5}
.filterbar .fld{display:flex;flex-direction:column;gap:2px}
.filterbar .fld label{font-size:10.5px;color:var(--mut);font-weight:600}
.filterbar select{min-width:130px}
.filterbar .sp{flex:1}

/* ---------- table extras ---------- */
.tbl-wrap{overflow-x:auto}
.t-amt{font-variant-numeric:tabular-nums;font-weight:600}
.t-amt.neg{color:var(--bad)}.t-amt.pos{color:var(--ok)}
.arrow-up{color:var(--ok)}.arrow-down{color:var(--bad)}
.acts{display:flex;gap:5px;align-items:center;justify-content:flex-end}
.iconbtn{width:28px;height:28px;border-radius:7px;border:1px solid var(--line);background:#fff;color:var(--mut);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:13px}
.iconbtn:hover{background:#f5f8fc;color:var(--ink);text-decoration:none}
.tag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:7px;font-size:12px;font-weight:600;background:#eef2ff;color:#3730a3}
.tag.t-blue{background:#dbeafe;color:#1e40af}.tag.t-amber{background:#fef3c7;color:#92400e}
.tag.t-violet{background:#ede9fe;color:#6d28d9}.tag.t-green{background:#dcfce7;color:#166534}
.tag.t-gray{background:#eef2f7;color:#475569}.tag.t-pink{background:#fce7f3;color:#9d174d}.tag.t-cyan{background:#cffafe;color:#155e75}
.subc{color:var(--mut);font-size:11.5px}
.colsub{font-size:11px;color:var(--mut);font-weight:400}
.fileico{display:inline-flex;align-items:center;gap:5px;color:var(--bad);font-weight:600;font-size:12.5px}
.miniprog{display:flex;align-items:center;gap:8px}
.cb{width:16px;height:16px;accent-color:var(--acc);cursor:pointer}

/* ---------- selection bottom bar ---------- */
.selbar{position:sticky;bottom:0;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 -6px 22px -10px #0b1f3a40;padding:13px 18px;display:flex;align-items:center;gap:22px;margin-top:4px;flex-wrap:wrap}
.selbar .cnt{display:flex;align-items:center;gap:9px;font-weight:700}
.selbar .cnt .b{width:24px;height:24px;border-radius:7px;background:var(--acc);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:12px}
.selbar .seg{display:flex;flex-direction:column}
.selbar .seg .k{font-size:11px;color:var(--mut)}
.selbar .seg .v{font-weight:700;font-variant-numeric:tabular-nums}
.selbar .sp{flex:1}

/* ---------- dropzone (upload) ---------- */
.dropzone{border:2px dashed #b9c7e0;border-radius:14px;background:#f7faff;padding:34px 20px;text-align:center}
.dropzone .ico{width:54px;height:54px;border-radius:50%;background:#e0ecff;color:var(--acc);display:flex;align-items:center;justify-content:center;font-size:24px;margin:0 auto 12px}
.dropzone h3{font-size:16px;margin:0 0 4px}
.dropzone .types{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:16px}
.dropzone .types .chip{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 13px;font-size:12.5px;font-weight:600;color:var(--ink);display:inline-flex;gap:6px;align-items:center}

/* ---------- small stat tiles (dashboard tasks row) ---------- */
.tasks{display:flex;align-items:center;gap:0;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:4px 0;box-shadow:0 1px 2px #0b1f3a08}
.tasks .t{flex:1;padding:12px 18px;border-right:1px solid var(--line);display:flex;align-items:center;gap:11px}
.tasks .t:last-child{border-right:0}
.tasks .t .num{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;font-size:13px;flex:0 0 auto}
.tasks .t .tx b{display:block;font-size:13.5px}
.tasks .t .tx small{color:var(--mut);font-size:11.5px}

/* ---------- quick action tiles ---------- */
.qacts{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.qacts a{border:1px solid var(--line);border-radius:11px;padding:13px;text-align:center;color:var(--ink);background:#fff}
.qacts a:hover{background:#f7f9fc;text-decoration:none;border-color:#cdd9ea}
.qacts a .i{font-size:18px;display:block;margin-bottom:5px}
.qacts a b{font-size:12.5px;display:block}
.qacts a small{color:var(--mut);font-size:11px}

.period{white-space:nowrap}
select.lg,input.lg{padding:9px 13px}

/* responsive */
@media(max-width:1280px){.layout{grid-template-columns:1fr}.rail{position:static;flex-direction:row;flex-wrap:wrap}.rail .rpanel{flex:1;min-width:240px}}
@media(max-width:1100px){.grid.c6,.grid.c5{grid-template-columns:repeat(3,1fr)}.grid.c4{grid-template-columns:repeat(2,1fr)}.qacts{grid-template-columns:repeat(3,1fr)}}
@media(max-width:860px){
  .sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}
  .main{margin-left:0}.grid.c4,.grid.c3,.grid.c2,.grid.c5,.grid.c6{grid-template-columns:1fr}
  .menu-toggle{display:flex!important}.tasks{flex-direction:column}.tasks .t{border-right:0;border-bottom:1px solid var(--line);width:100%}
  .qacts{grid-template-columns:repeat(2,1fr)}.rail{flex-direction:column}
}
.menu-toggle{display:none;width:36px;height:36px;border-radius:9px;border:1px solid var(--line);background:#fff;align-items:center;justify-content:center;cursor:pointer}
