/* ============================================================
   KKbudget – "fintech" téma
   Antracit (charcoal) základ + oranžový akcent.
   Signatúra: veľká oranžová "balance" hero karta.
   ============================================================ */
:root{
  --bg:#191B1F;
  --bg-2:#15171A;
  --surface:#232629;
  --surface-2:#2A2E33;
  --line:#33383E;
  --line-2:#3E444B;
  --text:#F2F1EE;
  --muted:#9AA1A9;
  --muted-2:#727981;
  --orange:#FF7A1A;
  --orange-2:#FF9440;
  --orange-deep:#F26400;
  --orange-soft:rgba(255,122,26,.14);
  --green:#37D399;
  --green-soft:rgba(55,211,153,.15);
  --red:#FF6B5A;
  --red-soft:rgba(255,107,90,.15);
  --shadow:0 2px 6px rgba(0,0,0,.25), 0 14px 34px rgba(0,0,0,.28);
  --shadow-soft:0 1px 3px rgba(0,0,0,.2);
  --r:20px;
  --r-sm:13px;
  --disp:"Space Grotesk",system-ui,sans-serif;
  --body:"Inter",system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  font-family:var(--body);color:var(--text);
  background:
    radial-gradient(1100px 500px at 80% -10%, rgba(255,122,26,.10), transparent 60%),
    var(--bg);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;line-height:1.45;
}
.wrap{max-width:1080px;margin:0 auto;padding:0 18px}
.num{font-family:var(--disp);font-variant-numeric:tabular-nums;letter-spacing:-.02em}

/* ---------- Topbar ---------- */
.topbar{position:sticky;top:0;z-index:20;background:rgba(21,23,26,.82);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;height:62px;gap:12px}
.brand{font-family:var(--disp);font-weight:700;letter-spacing:.01em;font-size:1.15rem;color:var(--text)}
.brand::before{content:"◈";color:var(--orange);margin-right:8px}
.month-nav{display:flex;align-items:center;gap:6px}
.month-label{font-family:var(--disp);font-weight:600;font-size:.95rem;background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:7px 16px;cursor:pointer;min-width:150px;text-transform:capitalize}
.month-label:hover{border-color:var(--orange);color:var(--orange-2)}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:11px;border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer;text-decoration:none;font-size:1.15rem;line-height:1}
.icon-btn:hover{border-color:var(--line-2);background:var(--surface-2)}
.who{display:flex;align-items:center;gap:9px}
.user-chip{font-size:.82rem;color:var(--muted);background:var(--surface);border:1px solid var(--line);padding:6px 12px;border-radius:999px}

/* ---------- Hero (balance card) ---------- */
.hero{
  position:relative;overflow:hidden;margin:22px 0;padding:26px 28px;border-radius:var(--r);
  background:linear-gradient(135deg,var(--orange-2) 0%,var(--orange) 45%,var(--orange-deep) 100%);
  box-shadow:0 14px 40px rgba(242,100,0,.32);
  display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px;
  color:#231200;
}
.hero::after{content:"";position:absolute;right:-40px;top:-60px;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.12)}
.hero-main{position:relative;z-index:1}
.hero-label{display:block;font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;font-weight:700;opacity:.72}
.hero-amount{font-family:var(--disp);font-weight:700;font-size:2.9rem;line-height:1.02;display:block;margin-top:6px;letter-spacing:-.03em}
.hero.ok .hero-label::after{content:" ✓"}
.hero-stats{position:relative;z-index:1;display:flex;gap:10px;flex-wrap:wrap}
.hero-stats>div{background:rgba(25,10,0,.16);border:1px solid rgba(25,10,0,.12);border-radius:14px;padding:10px 14px;min-width:96px}
.hero-stats .k{display:block;font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;font-weight:700;opacity:.66}
.hero-stats .v{font-family:var(--disp);font-weight:700;font-size:1.05rem;margin-top:2px}

/* ---------- Layout ---------- */
.grid{display:grid;grid-template-columns:1fr 350px;gap:20px;align-items:start}
@media(max-width:860px){.grid{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-soft);padding:18px 20px;margin-bottom:20px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}
.card-head h2{font-family:var(--disp);font-size:1.05rem;font-weight:600;margin:0}
.head-actions{display:flex;gap:14px}
.sticky{position:sticky;top:84px}
@media(max-width:860px){.sticky{position:static}}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:var(--body);font-weight:600;font-size:.92rem;padding:12px 18px;border-radius:12px;border:1px solid var(--line-2);background:var(--surface-2);color:var(--text);cursor:pointer;text-decoration:none;transition:transform .05s}
.btn:hover{border-color:var(--muted-2)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:linear-gradient(135deg,var(--orange-2),var(--orange-deep));border:none;color:#231200;width:100%;box-shadow:0 6px 18px rgba(242,100,0,.32)}
.btn.primary:hover{filter:brightness(1.05)}
.btn.danger{color:var(--red);border-color:var(--red-soft);background:var(--red-soft)}
.link-btn{background:none;border:none;color:var(--orange-2);font-weight:600;font-size:.86rem;cursor:pointer;padding:2px;font-family:var(--body)}
.link-btn:hover{color:var(--orange);text-decoration:underline}

/* ---------- Forms ---------- */
.stack{display:flex;flex-direction:column;gap:13px}
label{display:flex;flex-direction:column;gap:6px;font-size:.8rem;font-weight:600;color:var(--muted)}
input,select{font-family:var(--body);font-size:.95rem;color:var(--text);padding:11px 13px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface-2);width:100%}
input::placeholder{color:var(--muted-2)}
input:focus,select:focus{outline:none;border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-soft)}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* ---------- Income ---------- */
.income-list{display:flex;flex-direction:column;gap:2px}
.income-row{display:flex;align-items:center;gap:10px;padding:11px 4px;border-bottom:1px solid var(--line)}
.income-row:last-child{border-bottom:none}
.income-row .nm{flex:1;font-weight:500}
.income-row .amt{font-family:var(--disp);font-weight:600;color:var(--green)}
.income-row .mini{opacity:0;transition:opacity .15s}
.income-row:hover .mini{opacity:1}
.mini{background:none;border:none;color:var(--muted);cursor:pointer;font-size:.85rem;padding:2px 5px;border-radius:7px}
.mini:hover{color:var(--red);background:var(--surface-2)}

/* ---------- Budget groups ---------- */
.grp{margin-bottom:18px}
.grp-title{font-family:var(--disp);font-size:.76rem;letter-spacing:.07em;text-transform:uppercase;color:var(--orange-2);font-weight:700;display:flex;justify-content:space-between;padding:7px 2px;border-bottom:1px solid var(--line-2);margin-bottom:4px}
.grp-title .g-rem{font-family:var(--disp);color:var(--muted)}
.cat-row{display:grid;grid-template-columns:1fr 104px 92px;gap:10px;align-items:center;padding:9px 2px;border-bottom:1px solid var(--line)}
.cat-row:last-child{border-bottom:none}
.cat-name{font-weight:500;display:flex;align-items:center;gap:8px;min-width:0}
.cat-name .txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-name .gear{opacity:0;transition:opacity .15s;background:none;border:none;cursor:pointer;color:var(--muted);font-size:.8rem}
.cat-row:hover .gear{opacity:1}
.plan-input{font-family:var(--disp);font-weight:600;text-align:right;padding:8px 10px}
.cat-meta{text-align:right;font-family:var(--disp);font-size:.82rem}
.cat-meta .rem{font-weight:700;display:block}
.cat-meta .spent{color:var(--muted-2);font-size:.72rem;font-family:var(--body)}
.rem.pos{color:var(--green)}
.rem.zero{color:var(--muted)}
.rem.neg{color:var(--red)}
.cat-head-labels{display:grid;grid-template-columns:1fr 104px 92px;gap:10px;font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted-2);font-weight:700;padding:0 2px 8px}
.cat-head-labels span:nth-child(2),.cat-head-labels span:nth-child(3){text-align:right}

/* ---------- Group bars ---------- */
.group-bars{display:flex;flex-direction:column;gap:13px}
.gb-top{display:flex;justify-content:space-between;margin-bottom:5px;font-size:.85rem}
.gb-top .nm{font-weight:600}
.gb-top .val{font-family:var(--disp);color:var(--muted)}
.gb-track{height:9px;background:var(--surface-2);border-radius:99px;overflow:hidden}
.gb-fill{height:100%;background:linear-gradient(90deg,var(--orange-2),var(--orange));border-radius:99px;transition:width .3s}
.gb-fill.over{background:linear-gradient(90deg,#FF8A6B,var(--red))}

/* ---------- Transactions ---------- */
.txn-list{display:flex;flex-direction:column}
.txn-row{display:flex;align-items:center;gap:11px;padding:11px 2px;border-bottom:1px solid var(--line)}
.txn-row:last-child{border-bottom:none}
.txn-row::before{content:"";width:38px;height:38px;flex:none;border-radius:11px;background:var(--orange-soft);border:1px solid rgba(255,122,26,.2)}
.txn-row .info{flex:1;min-width:0}
.txn-row .t1{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.txn-row .t2{font-size:.72rem;color:var(--muted-2)}
.txn-row .amt{font-family:var(--disp);font-weight:700}
.txn-row .mini{opacity:0}
.txn-row:hover .mini{opacity:1}
.empty{color:var(--muted-2);font-size:.88rem;padding:10px 2px}

/* ---------- Modal ---------- */
.modal{position:fixed;inset:0;background:rgba(10,11,13,.66);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:40;padding:20px}
.modal[hidden]{display:none}
.modal-box{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);box-shadow:var(--shadow);width:100%;max-width:420px;padding:22px}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}
.modal-head h3{font-family:var(--disp);margin:0;font-size:1.15rem}

/* ---------- Auth pages ---------- */
.auth-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);width:100%;max-width:400px;padding:32px}
.auth-card .brand{font-size:1.05rem;margin-bottom:6px}
.auth-card h1{font-family:var(--disp);font-size:1.55rem;margin:0 0 20px}
.auth-card .btn+.btn{margin-top:10px}
.muted{color:var(--muted);font-size:.9rem}
.note{margin-top:18px;font-size:.8rem;color:var(--orange-2);background:var(--orange-soft);border:1px solid rgba(255,122,26,.2);padding:11px 13px;border-radius:12px}
.note code{font-family:var(--disp)}
.flash{padding:11px 13px;border-radius:12px;font-size:.9rem;margin:0 0 14px}
.flash.ok{background:var(--green-soft);color:var(--green)}
.flash.err{background:var(--red-soft);color:var(--red)}

.foot{text-align:center;color:var(--muted-2);font-size:.76rem;padding:16px 0 34px}

@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---------- Záložky / views ---------- */
.tabs{display:inline-flex;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:5px;margin-bottom:20px}
.tab{font-family:var(--body);font-weight:600;font-size:.9rem;color:var(--muted);background:none;border:none;border-radius:999px;padding:9px 20px;cursor:pointer}
.tab:hover{color:var(--text)}
.tab.active{background:linear-gradient(135deg,var(--orange-2),var(--orange-deep));color:#231200;box-shadow:0 4px 12px rgba(242,100,0,.3)}
.view[hidden]{display:none}
.hint{color:var(--muted);font-size:.85rem;margin:0 0 14px}

/* ---------- Platby ---------- */
.bill-list{display:flex;flex-direction:column}
.bill-row{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line)}
.bill-row:last-child{border-bottom:none}
.bill-check{flex:none;width:26px;height:26px;border-radius:8px;border:2px solid var(--line-2);background:var(--surface-2);color:#231200;cursor:pointer;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1}
.bill-check:hover{border-color:var(--orange)}
.bill-check.on{background:var(--green);border-color:var(--green)}
.bill-row .info{flex:1;min-width:0}
.bill-row .t1{font-weight:500}
.bill-row .t2{font-size:.72rem;color:var(--muted-2)}
.bill-row .amt{font-family:var(--disp);font-weight:700}
.bill-row .mini{opacity:0}
.bill-row:hover .mini{opacity:1}
.bill-row.paid .t1{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--muted-2)}
.bill-row.paid .amt{color:var(--muted)}

/* ---------- Súhrn ---------- */
.summary{display:flex;flex-direction:column;gap:2px}
.sum-row{display:flex;justify-content:space-between;align-items:center;padding:11px 2px;border-bottom:1px solid var(--line)}
.sum-row:last-child{border-bottom:none}
.sum-row .k{color:var(--muted);font-size:.88rem}
.sum-row .v{font-family:var(--disp);font-weight:700}

/* ---------- Reporty ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
@media(max-width:720px){.stat-grid{grid-template-columns:repeat(2,1fr)}}
.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.stat-card .k{font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted-2);font-weight:700}
.stat-card .v{font-family:var(--disp);font-weight:700;font-size:1.25rem}
.chart-wrap{position:relative;height:300px}
.chart-wrap.tall{height:380px}

/* ---------- Rýchle pridanie výdavku pri kategórii ---------- */
.cat-name .add{color:var(--orange-2);font-weight:700;font-size:.95rem}
.cat-name .add:hover{color:var(--orange)}

/* ---------- Veľký button v hero lište (ladený s dlaždicami) ---------- */
.hero-add{position:relative;z-index:1;font-family:var(--body);font-weight:700;font-size:1rem;color:#231200;background:rgba(25,10,0,.16);border:1px solid rgba(25,10,0,.14);border-radius:16px;padding:15px 22px;cursor:pointer;display:inline-flex;align-items:center;gap:11px;white-space:nowrap;transition:background .15s,transform .05s}
.hero-add:hover{background:rgba(25,10,0,.28)}
.hero-add:active{transform:translateY(1px)}
.hero-add .plus{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:10px;background:#231200;color:var(--orange-2);font-size:1.15rem;line-height:1}
@media(max-width:640px){.hero-add{order:3;width:100%;justify-content:center}}

/* ---------- Rozbaľovacie menu + responzivita ---------- */
html,body{overflow-x:hidden}
.month-nav,.who{position:relative}
.month-label{display:inline-flex;align-items:center;gap:8px}
.caret{font-size:.68rem;opacity:.65}
.user-chip{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-family:var(--body)}
.user-chip:hover{border-color:var(--line-2);color:var(--text)}
.dropdown{position:absolute;top:calc(100% + 8px);left:0;min-width:190px;max-width:calc(100vw - 28px);max-height:340px;overflow-y:auto;background:var(--surface);border:1px solid var(--line-2);border-radius:14px;box-shadow:var(--shadow);padding:6px;z-index:50}
.dropdown.right{left:auto;right:0}
.dd-item{display:block;width:100%;text-align:left;background:none;border:none;color:var(--text);font-family:var(--body);font-size:.9rem;font-weight:500;padding:10px 12px;border-radius:9px;cursor:pointer;text-decoration:none}
.dd-item:hover{background:var(--surface-2)}
.dd-item.active{color:var(--orange-2);background:var(--orange-soft)}

@media(max-width:560px){
  .wrap{padding:0 14px}
  .topbar-inner{height:56px;gap:8px}
  .topbar-inner>*{min-width:0}
  .brand{font-size:1.15rem}
  .month-label{min-width:auto;padding:7px 12px;font-size:.9rem}
  .user-chip{padding:6px 10px;font-size:.8rem}
  .hero{padding:20px 18px}
  .hero-amount{font-size:2.1rem}
  .hero-label{font-size:.72rem}
  #monthMenu{left:50%;transform:translateX(-50%)}
}
@media(max-width:400px){
  .cat-row,.cat-head-labels{grid-template-columns:1fr 82px 84px;gap:8px}
  .plan-input{padding:7px 8px}
}

/* ---------- Import CSV ---------- */
.modal-box.wide{max-width:720px}
.import .hint{margin:0 0 12px}
.map-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:14px 0}
@media(max-width:560px){.map-grid{grid-template-columns:1fr}}
.imp-table{max-height:340px;overflow:auto;border:1px solid var(--line);border-radius:12px;margin-top:6px}
.imp-h,.imp-r{display:grid;grid-template-columns:34px 76px 1fr 96px 156px;gap:8px;align-items:center;padding:8px 10px}
.imp-h{position:sticky;top:0;background:var(--surface-2);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-2);font-weight:700;z-index:1}
.imp-r{border-top:1px solid var(--line);font-size:.82rem}
.imp-r.inc{opacity:.45}
.imp-note{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-cat{padding:6px 8px;font-size:.8rem}
.imp-chk{width:17px;height:17px;accent-color:var(--orange)}
.import .btn.primary{margin-top:14px}
@media(max-width:560px){
  .imp-h{display:none}
  .imp-r{grid-template-columns:24px 1fr auto;grid-row-gap:6px}
  .imp-note{grid-column:2/4}
  .imp-cat{grid-column:1/-1}
}
