:root{
  --navy:#123A5A;
  --navy2:#0d2d46;
  --cyan:#2d718d;
  --paper:#fff;
  --bg:#eef2f5;
  --line:#d6dee4;
  --muted:#6e7b85;
  --edit:#fff8e9;
  --danger:#a83636;
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Arial,Helvetica,sans-serif;background:var(--bg);color:#1f2a31}
button,input,select{font:inherit}
.app-header{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:22px;
  padding:14px 22px;background:var(--navy);color:#fff;position:sticky;top:0;z-index:10;
  box-shadow:0 2px 10px rgba(0,0,0,.12)
}
.app-brand{display:flex;align-items:center;gap:12px}.app-mark{width:42px;height:42px;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:20px}
.app-brand h1{margin:0;font-size:19px}.app-brand p{margin:3px 0 0;opacity:.75;font-size:12px}
.period-box{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.09);padding:8px 11px;border-radius:9px}
.period-box label{font-size:12px;font-weight:700}.period-box select{border:0;border-radius:6px;padding:7px 10px;font-weight:700;color:var(--navy)}
.header-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.btn{border:1px solid #bcc8d0;background:#fff;color:var(--navy);padding:9px 13px;border-radius:8px;cursor:pointer;font-weight:600}
.btn:hover{filter:brightness(.98)}.btn.primary{background:#f2c879;border-color:#f2c879;color:#2a2a2a}.btn.small{padding:7px 10px;font-size:13px}.btn.danger{color:var(--danger)}
.layout{display:grid;grid-template-columns:315px 1fr;min-height:calc(100vh - 70px)}
.sidebar{background:#f8fafb;border-right:1px solid var(--line);padding:16px;display:flex;flex-direction:column;gap:14px}
.sidebar-top{display:grid;grid-template-columns:1fr;gap:8px}.sidebar input,.sidebar select{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:white}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stats div{background:#fff;border:1px solid var(--line);border-radius:9px;padding:10px}.stats span{display:block;font-size:11px;color:var(--muted)}.stats strong{font-size:15px}
.invoice-list{display:flex;flex-direction:column;gap:8px;overflow:auto;min-height:180px}
.invoice-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:10px;cursor:pointer}.invoice-card.active{border-color:var(--navy);box-shadow:0 0 0 1px var(--navy)}
.invoice-card-top{display:flex;justify-content:space-between;gap:8px}.invoice-card small{color:var(--muted)}.invoice-card .paid{color:#2e7d32}.invoice-card .unpaid{color:#a05a00}
.profile-pill{display:inline-block;margin-top:5px;padding:2px 6px;border-radius:999px;background:#eef3f6;color:#48606f;font-size:10px}
.backup{margin-top:auto;display:flex;gap:8px;flex-wrap:wrap}.file-label{display:inline-flex;align-items:center}
.workspace{padding:18px;overflow:auto}.toolbar{max-width:1050px;margin:0 auto 10px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.toolbar-left{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.toolbar label{display:grid;gap:3px;font-size:11px;color:var(--muted);font-weight:700}.toolbar select{padding:7px;border:1px solid var(--line);border-radius:7px;background:#fff}
.save-state{font-size:12px;color:var(--muted)}
.invoice{max-width:1050px;margin:0 auto;background:var(--paper);padding:40px 46px 34px;box-shadow:0 8px 28px rgba(23,42,54,.12);min-height:1050px;--accent:var(--navy);--soft:#eef3f6;--field:#fff8e9}
.invoice.profile-it{--accent:#163f56;--soft:#eaf3f6;--field:#f2f8fa}
.invoice.profile-plain{--accent:#30363a;--soft:#f0f1f2;--field:#fff}
.invoice.profile-erp{--accent:#0b3440;--soft:#e9fbfa;--field:#f4fffe;--helios:#55d3cf;--helios-dark:#082d39}
.invoice-header{display:grid;grid-template-columns:1.2fr .8fr;gap:30px;align-items:start}
.supplier-title h2{font-size:32px;color:var(--accent);letter-spacing:.5px;margin:0}.supplier-title p{font-size:13px;color:var(--muted);font-weight:700;letter-spacing:1.35px}
.profile-visual{color:var(--accent);margin-top:21px;width:300px}.hidden{display:none!important}
.personal-visual{text-align:center}.sun-rays{font-size:19px;font-weight:bold}.sun-line{font-size:13px;font-weight:bold}
.it-visual{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.it-visual span{border:1px solid var(--accent);padding:5px 7px;font-size:11px;font-weight:700;letter-spacing:.8px}
.invoice-title-box>h2{margin:0;background:var(--accent);color:white;text-align:center;padding:15px;font-size:30px}.meta-grid{margin-top:10px;display:grid;gap:6px}
.meta-grid label,.customer label{display:grid;grid-template-columns:135px 1fr;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--accent)}
.print-field{width:100%;border:1px solid #d9dfe3;background:var(--field);padding:7px 8px;border-radius:5px;color:#1f2a31}
.parties{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:34px}.party h3{background:var(--accent);color:#fff;margin:0 0 10px;padding:8px 10px;font-size:14px}.party p{line-height:1.55;margin:0}.customer{display:grid;gap:7px}
.items{margin-top:34px}.items-head,.item-row{display:grid;grid-template-columns:minmax(250px,1fr) 100px 130px 130px 34px;gap:8px;align-items:center}
.items-head{background:var(--accent);color:#fff;padding:9px 10px;font-weight:700;font-size:13px}.item-row{padding:7px 10px;border-bottom:1px solid #e5eaee}.item-total{text-align:right}
.remove-item{border:0;background:transparent;color:var(--danger);font-size:24px;cursor:pointer}.add-item{margin-top:10px}
.totals{margin:24px 0 0 auto;width:min(420px,100%)}.totals>div{display:flex;justify-content:space-between;padding:9px 12px;border-bottom:1px solid var(--line)}
.grand-total{background:var(--accent);color:#fff;font-size:17px}.payment-note{margin-top:24px;padding:12px;background:var(--soft);text-align:center;color:var(--accent)}
.invoice-footer{margin-top:55px;text-align:center;color:var(--muted);display:grid;gap:16px;font-size:12px}.invoice-footer em{font-size:14px}
.profile-plain .supplier-title p,.profile-plain .profile-visual{display:none}
@media(max-width:980px){.app-header{grid-template-columns:1fr;position:static}.header-actions{justify-content:flex-start}.period-box{justify-self:start}.layout{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line)}}
@media(max-width:900px){.invoice-header,.parties{grid-template-columns:1fr}.invoice{padding:26px 20px}.items-head,.item-row{grid-template-columns:minmax(160px,1fr) 75px 100px 100px 28px}}
@media print{
  @page{size:A4;margin:10mm}
  body{background:#fff}.no-print{display:none!important}.layout{display:block}.workspace{padding:0;overflow:visible}
  .invoice{box-shadow:none;max-width:none;min-height:auto;padding:0;font-size:11pt}
  .invoice-header{grid-template-columns:1.15fr .85fr;gap:18px}.supplier-title h2{font-size:25pt}.invoice-title-box>h2{font-size:24pt;padding:10px}
  .print-field{border:0;background:transparent;padding:0;appearance:none;-webkit-appearance:none}.meta-grid label,.customer label{grid-template-columns:120px 1fr;font-size:10pt}
  .parties{gap:18px;margin-top:22px}.items{margin-top:24px}.items-head,.item-row{grid-template-columns:1fr 70px 95px 95px;gap:6px}
  .items-head span:last-child,.item-row>*:last-child{display:none}.invoice-footer{margin-top:35px}
}


/* Typografie osobního profilu: lokální font-stack ve stylu textu na mlejnek.guru.
   Montserrat je preferován, pokud je v systému; jinak se použije podobný lokální sans-serif. */
.invoice.profile-personal{
  font-family:"Montserrat","Avenir Next","Segoe UI","Helvetica Neue",Arial,sans-serif;
}
.invoice.profile-personal .party p,
.invoice.profile-personal .customer,
.invoice.profile-personal .items,
.invoice.profile-personal .payment-note{
  font-weight:400;
  letter-spacing:.01em;
  line-height:1.55;
}
.invoice.profile-personal .supplier-title h2{
  font-weight:600;
  letter-spacing:.035em;
}


.erp-visual{margin-top:20px}
.helios-lockup{
  display:flex;
  align-items:center;
  gap:14px;
}
.helios-h{
  position:relative;
  width:52px;
  height:42px;
}
.helios-h span{
  position:absolute;
  display:block;
  background:var(--helios);
  border-radius:8px;
}
.helios-h .h-left{
  left:2px;
  top:3px;
  width:10px;
  height:36px;
}
.helios-h .h-right{
  right:2px;
  top:3px;
  width:10px;
  height:36px;
}
.helios-h .h-mid{
  left:10px;
  right:10px;
  top:16px;
  height:10px;
}
.helios-word{
  display:flex;
  align-items:baseline;
  gap:9px;
  line-height:1;
}
.helios-word strong{
  color:var(--helios);
  font-size:31px;
  letter-spacing:.2px;
  font-weight:700;
}
.helios-word small{
  color:var(--helios-dark);
  font-size:15px;
  letter-spacing:.5px;
  font-weight:700;
}
.profile-erp{
  border-top:5px solid var(--helios);
}
.profile-erp .supplier-title h2{
  color:var(--helios-dark);
}
.profile-erp .supplier-title p{
  color:#4d6670;
}
.profile-erp .invoice-title-box>h2{
  background:var(--helios-dark);
  color:var(--helios);
  border-bottom:4px solid var(--helios);
}
.profile-erp .party h3,
.profile-erp .items-head,
.profile-erp .grand-total{
  background:var(--helios-dark);
  color:#fff;
  border-left:5px solid var(--helios);
}
.profile-erp .payment-note{
  background:var(--soft);
  color:var(--helios-dark);
  border-left:4px solid var(--helios);
}
.profile-erp .meta-grid label,
.profile-erp .customer label{
  color:var(--helios-dark);
}



/* --- v5: legislativní a workflow doplňky --- */
.vat-note{font-size:11px;color:var(--muted)}
.signature-image{
  display:block;
  width:220px;
  max-width:45%;
  height:auto;
  margin:2px auto 0;
  opacity:.95;
}
.lock-btn.locked{
  background:#18384c;
  color:#fff;
  border-color:#18384c;
}
.invoice.locked{
  box-shadow:0 8px 28px rgba(23,42,54,.12), inset 0 0 0 2px rgba(18,58,90,.12);
}
.invoice.locked .print-field:disabled{
  color:#1f2a31;
  opacity:1;
  -webkit-text-fill-color:#1f2a31;
  cursor:not-allowed;
}
.invoice.locked .print-field:disabled,
.invoice.locked select.print-field:disabled{
  background:#f5f6f7;
}
.invoice-card .lock-indicator{
  margin-left:6px;
  font-size:12px;
}
.profile-plain #footerPrimary,
.profile-plain #footerSecondary{
  display:none;
}
.profile-plain .invoice-footer{
  display:grid;
}
@media print{
  .signature-image{max-width:38%;width:190px}
  .invoice.locked{box-shadow:none}
  .invoice.locked .print-field:disabled,
  .invoice.locked select.print-field:disabled{
    background:transparent;
  }
}


/* ARES lookup odběratele */
.ico-lookup{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:6px;
  align-items:center;
}
.ares-btn{
  border:1px solid var(--accent);
  background:var(--soft);
  color:var(--accent);
  padding:7px 9px;
  border-radius:5px;
  cursor:pointer;
  font-size:11px;
  font-weight:700;
  white-space:nowrap;
}
.ares-btn:hover{filter:brightness(.97)}
.ares-btn:disabled{opacity:.5;cursor:not-allowed}
.ares-status{
  margin:-3px 0 0 143px;
  min-height:14px;
  color:var(--muted);
  font-size:10px;
  line-height:1.25;
}
.ares-status.success{color:#2e7d32}
.ares-status.error{color:#a83636}
.ares-status.loading{color:var(--accent)}
@media(max-width:900px){
  .ares-status{margin-left:0}
}
@media print{
  .ico-lookup{grid-template-columns:1fr}
}


/* ---------- v7: jednotné funkční ovládání ---------- */
.btn.action-btn{
  min-width:118px;
  height:38px;
  padding:0 12px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  border-radius:7px;
  font-size:13px;
  line-height:1;
  white-space:nowrap;
}
.header-actions .action-btn{min-width:124px}

.toolbar{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:end;
  gap:10px 16px;
}
.toolbar-main,
.toolbar-state-actions{
  display:flex;
  align-items:end;
  gap:8px;
  flex-wrap:wrap;
}
.toolbar-state-actions{
  justify-content:flex-end;
  padding-left:14px;
  border-left:1px solid var(--line);
}
.toolbar .save-state{
  grid-column:1 / -1;
  justify-self:end;
}

/* Zámek jako jediný barevný stavový ovladač: jemná červená / zelená. */
.state-lock{
  background:#fff3f3;
  border-color:#e5b7b7;
  color:#8a2f2f;
}
.state-lock.locked{
  background:#f0f8f1;
  border-color:#b8d9bd;
  color:#2f6f3a;
}
.state-payment{
  background:#fff;
  border-color:#c8d1d7;
  color:#314957;
}

/* Stavové symboly přímo v seznamu faktur. */
.invoice-card-top{
  align-items:center;
}
.invoice-card-actions{
  display:flex;
  align-items:center;
  gap:3px;
}
.card-state-btn{
  width:25px;
  height:25px;
  padding:0;
  border:0;
  border-radius:5px;
  background:transparent;
  color:#52636d;
  cursor:pointer;
  display:grid;
  place-items:center;
  font-size:14px;
}
.card-state-btn:hover{background:#eef2f4}
.card-state-btn.locked{color:#2f6f3a}
.card-state-btn.unlocked{color:#8a2f2f}
.card-state-btn.payment{font-weight:800}
.card-state-btn.payment.paid{color:#52636d}
.card-state-btn.payment.unpaid{color:#52636d}
.invoice-card .card-text-status{
  display:none;
}

/* PDF/email generator status */
.pdf-working{
  opacity:.65;
  pointer-events:none;
}

@media(max-width:980px){
  .toolbar{grid-template-columns:1fr}
  .toolbar-state-actions{
    justify-content:flex-start;
    padding-left:0;
    border-left:0;
    padding-top:8px;
    border-top:1px solid var(--line);
  }
  .toolbar .save-state{grid-column:1;justify-self:start}
}


/* ---------- v8: výrazné stavové symboly + QR Platba ---------- */
.state-lock,
.state-payment{
  font-weight:750;
  border-width:1px;
  transition:background .12s ease,border-color .12s ease,color .12s ease;
}
.state-lock:not(.locked),
.state-payment.unpaid{
  background:#fff1f1;
  border-color:#dda9a9;
  color:#9a3030;
}
.state-lock.locked,
.state-payment.paid{
  background:#eff8f0;
  border-color:#abd1b0;
  color:#27713a;
}
.card-state-btn{
  width:31px;
  height:31px;
  border:1px solid transparent;
  border-radius:50%;
  font-size:16px;
  font-weight:800;
  box-shadow:0 1px 2px rgba(0,0,0,.05);
}
.card-state-btn.locked,
.card-state-btn.payment.paid{
  background:#edf8ef;
  border-color:#a9d2b0;
  color:#247239;
}
.card-state-btn.unlocked,
.card-state-btn.payment.unpaid{
  background:#fff0f0;
  border-color:#dfabab;
  color:#a02e2e;
}
.card-state-btn:hover{filter:brightness(.97)}

.payment-area{
  margin-top:24px;
  display:grid;
  grid-template-columns:minmax(0,1fr) 190px;
  gap:20px;
  align-items:center;
}
.payment-area .payment-note{margin-top:0}
.qr-payment-box{
  display:flex;
  align-items:center;
  gap:10px;
  border:1px solid #d4dde2;
  border-radius:9px;
  padding:8px;
  background:#fff;
}
.qr-payment-box img{
  width:112px;
  height:112px;
  image-rendering:pixelated;
  display:block;
}
.qr-payment-box>div{display:grid;gap:4px;min-width:0}
.qr-payment-box strong{font-size:13px;color:#22353f}
.qr-payment-box span{font-size:11px;color:#65747d;white-space:nowrap}
.qr-payment-box.qr-empty{opacity:.45}

@media(max-width:760px){
  .payment-area{grid-template-columns:1fr}
  .qr-payment-box{justify-self:start}
}
@media print{
  .payment-area{grid-template-columns:1fr 145px;gap:12px}
  .qr-payment-box img{width:100px;height:100px}
}

/* ---------- v9: ergonomie ovládání ---------- */
.toolbar{display:block}
.toolbar-row{
  max-width:1050px;
  margin:0 auto;
  display:flex;
  align-items:end;
  gap:8px;
  flex-wrap:wrap;
}
.profile-control{display:grid;gap:4px;min-width:290px}
.profile-control > span{font-size:11px;color:var(--muted);font-weight:700}
.profile-select-strong{
  height:38px;
  border:1px solid var(--navy);
  border-radius:7px;
  background:#fff;
  color:var(--navy);
  font-weight:700;
  padding:0 36px 0 12px;
  box-shadow:0 0 0 1px rgba(18,58,90,.05)
}
.profile-select-strong:focus{
  outline:2px solid rgba(18,58,90,.18);
  outline-offset:1px
}
.toolbar-row .save-state{margin-left:auto;align-self:center}
.item-desc-area{
  resize:vertical;
  min-height:52px;
  line-height:1.35;
  padding-top:8px;
  padding-bottom:8px
}
.item-row{align-items:start}
.item-row .item-total{padding-top:10px}
.item-row .remove-item{margin-top:3px}
.plain-custom-text{
  margin-top:9px;
  max-width:430px;
  font-size:14px;
  background:#fff
}
.profile-plain .plain-custom-text{display:block!important}
.profile-plain #brandSubtitle{display:none}
@media(max-width:980px){
  .toolbar-row{align-items:stretch}
  .profile-control{min-width:100%}
  .toolbar-row .action-btn{flex:1 1 140px}
  .toolbar-row .save-state{width:100%;margin-left:0}
}
@media print{
  .item-desc-area{min-height:auto;height:auto;overflow:visible;resize:none}
  .plain-custom-text{
    border:0!important;background:transparent!important;padding:0!important;
    margin-top:8px!important;font-size:13px
  }
}

.storage-notice{margin:12px 24px;padding:12px 16px;background:#eef4f3;border:1px solid #c8d9d5;border-radius:10px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px}.storage-notice span{flex:1;min-width:220px}.storage-notice [hidden]{display:none}

[hidden]{display:none!important}
.auth-pending > .app-header,.auth-pending > .storage-notice,.auth-pending > main{display:none!important}
.login-panel{min-height:100vh;display:grid;place-items:center;padding:24px;background:#eef4f3}
.login-card{width:min(100%,420px);background:white;border:1px solid #c8d9d5;border-radius:18px;padding:32px;box-shadow:0 12px 40px #162d2912;display:grid;gap:14px}
.login-card h1{font-size:25px;margin:4px 0}.login-card p{margin:0;color:#526661;line-height:1.5}
.login-card label{font-size:14px;font-weight:600}.login-card input{width:100%;padding:12px;border:1px solid #aebfba;border-radius:8px;font-size:16px}
.login-card #loginMessage{color:#a52a2a;font-size:14px;min-height:24px}.login-card button{margin-top:8px;min-height:44px}

.password-dialog{border:0;padding:0;border-radius:18px;width:min(95vw,440px);max-height:90vh;overflow:auto}.password-dialog::backdrop{background:#13272099}.password-dialog .login-card{width:100%;box-shadow:none}.password-dialog #passwordMessage{color:#a52a2a;font-size:14px}

/* Soukromý pronájem: vlastní neutrální vzhled a text smlouvy. */
.invoice.profile-rental{--accent:#30363a;--soft:#f0f1f2;--field:#fff}
.profile-rental .profile-visual,.profile-rental #brandSubtitle,.profile-rental .invoice-footer{display:none}
.profile-rental .plain-custom-text{display:block!important}

.rental-artwork{display:none;width:320px;max-width:100%;height:auto}
.profile-rental #brandTitle{display:none}
.profile-rental .rental-artwork{display:block}

/* Workspace controls and account actions stay apart from document actions. */
.app-header{grid-template-columns:minmax(230px,1fr) auto minmax(300px,1fr);gap:14px 24px}
.workspace-actions{grid-column:1/3;display:flex;align-items:end;gap:10px;flex-wrap:wrap}
.workspace-actions .action-btn,.header-actions .action-btn{min-height:42px;min-width:124px;font-size:14px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
#companyLabel{display:flex;align-items:center;gap:10px;font-size:13px}
#companySelect{max-width:280px}
.account-actions{grid-column:3;display:flex;gap:10px;justify-content:flex-end;border-left:1px solid #ffffff40;padding-left:24px}
.account-actions .btn{background:transparent;color:white;border-color:#ffffff60;font-size:13px;min-height:42px}
.license-notice{padding:10px 22px;background:#e9f5fc;color:#06325e;border-bottom:1px solid #06325e26;font-size:14px}
#loginPanel{background:radial-gradient(ellipse at 10% 90%,#51b4be33,transparent 55%),#e9f5fc;color:#06325e;padding:120px 24px 48px;position:relative}
.login-masthead{position:absolute;top:0;left:0;right:0;min-height:80px;background:#06325e;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 6vw;border-bottom:4px solid #51b4be;color:white}
.login-masthead strong{font-size:22px;letter-spacing:-.5px}.login-masthead span{font-size:13px;color:#e9f5fc}
#loginForm{border-color:#06325e26;border-radius:16px;padding:40px;box-shadow:0 18px 60px #06325e15}
#loginForm .login-eyebrow{color:#0878cf;font-size:11px;font-weight:700;letter-spacing:1.4px}
#loginForm h1{font-size:29px;letter-spacing:-1px}#loginForm input{border-color:#06325e40;color:#06325e}
#loginForm input:focus{outline:3px solid #51b4be50;border-color:#0878cf}
#loginSubmit{background:#0878cf;color:white;border-color:#0878cf;border-radius:8px}
#loginForm p{color:#486781}#loginForm #loginMessage{color:#a52a2a}
@media(max-width:1100px){.app-header{grid-template-columns:1fr auto}.header-actions{grid-column:1/-1}.workspace-actions{grid-column:1}.account-actions{grid-column:2}.period-box{justify-self:end}}
@media(max-width:650px){.app-header{grid-template-columns:1fr;position:static}.header-actions,.workspace-actions,.account-actions{grid-column:1;justify-content:flex-start}.account-actions{border-left:0;border-top:1px solid #ffffff40;padding:16px 0 0;margin-top:8px}.period-box{justify-self:start}.login-masthead span{display:none}#loginForm{padding:26px}.workspace-actions{align-items:center}#companyLabel{flex-wrap:wrap}}
.session-loading{color:#06325e;background:white;padding:28px;border:1px solid #06325e26;border-radius:16px}
.auth-pending>.license-notice{display:none!important}
.file-label:has(input:disabled){opacity:.5;cursor:not-allowed}
button:disabled{opacity:.45;cursor:not-allowed}
@media(min-width:1101px){.header-actions{display:grid;grid-template-columns:repeat(2,minmax(124px,1fr));justify-self:end}}
