:root{
  --bg:#e8efe9;
  --ink:#10231b;
  --muted:#5c7268;
  --line:#d3e0d8;
  --card:#fff;
  --ok:#0f6b45;
  --err:#9b2c2c;
  --warn:#8a6a2f;
  --royal:#0B3D2E;
  --royal-mid:#157250;
  --royal-soft:#e7f3ed;
  --gold:#c9a24a;
  --gold-deep:#9d7b2e;
  --gold-soft:#f7efd8;
  --paper:#fbf8f1;
  --shadow:0 18px 40px rgba(11,61,46,.08);
  --radius:20px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{
  font-family:"Vazirmatn",system-ui,sans-serif;color:var(--ink);
  background:
    radial-gradient(ellipse at 8% -12%,rgba(201,162,74,.22) 0%,transparent 42%),
    radial-gradient(ellipse at 92% 0%,rgba(11,61,46,.16) 0%,transparent 38%),
    linear-gradient(165deg,#f4f7f2 0%,#eef4ef 38%,#f7f3ea 100%);
}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
a{color:var(--royal-mid)}
.app{display:grid;grid-template-columns:268px 1fr;min-height:100vh}
.side{
  display:flex;flex-direction:column;
  background:
    linear-gradient(180deg,rgba(201,162,74,.14),transparent 18%),
    linear-gradient(165deg,#07261d 0%,#0b3d2e 42%,#10372c 100%);
  color:#e8f2ed;padding:22px 16px 18px;position:sticky;top:0;height:100vh;
  box-shadow:inset -1px 0 0 rgba(201,162,74,.18)
}
.side .brand{display:flex;align-items:center;gap:12px;padding:6px 8px 22px}
.mark{
  width:46px;height:46px;flex:0 0 46px;border-radius:14px;position:relative;
  background:linear-gradient(145deg,#e8c56a,#c9a24a 46%,#8d6a24);
  box-shadow:0 8px 18px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.45)
}
.mark::before,.mark::after{
  content:"";position:absolute;inset:10px 9px auto;height:3px;border-radius:2px;
  background:rgba(11,61,46,.28)
}
.mark::after{top:18px;left:12px;right:14px;height:2px;opacity:.7}
.side .brand b{display:block;font-size:1.12rem;letter-spacing:.01em;line-height:1.3}
.side .brand span{display:block;font-size:.72rem;color:#c9ddc6;font-weight:500;line-height:1.55;margin-top:2px}
.nav{display:flex;flex-direction:column;gap:5px}
.nav button{
  appearance:none;border:0;background:transparent;color:#d5ebe0;
  text-align:right;padding:11px 14px;border-radius:14px;font-weight:600;
  border:1px solid transparent;transition:background .18s,color .18s,transform .18s
}
.nav button:hover{background:rgba(255,255,255,.07);transform:translateX(-2px)}
.nav button.on{
  background:linear-gradient(90deg,#fff,#f7f1de);
  color:var(--royal);border-color:rgba(201,162,74,.35);
  box-shadow:0 8px 18px rgba(0,0,0,.12)
}
.main{padding:28px 28px 80px;min-width:0}
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;flex-wrap:wrap}
h1{margin:0 0 8px;font-size:1.7rem;color:var(--royal);letter-spacing:-.02em}
.sub{margin:0;color:var(--muted);line-height:1.8;max-width:42rem}
.panel{
  background:rgba(255,255,255,.86);border:1px solid rgba(213,227,219,.9);
  border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);margin-bottom:16px;
  backdrop-filter:blur(10px)
}
.panel h2{margin:0 0 14px;font-size:1.06rem;color:var(--royal);position:relative;padding-bottom:10px}
.panel h2::after{
  content:"";display:block;width:42px;height:3px;margin-top:8px;border-radius:99px;
  background:linear-gradient(90deg,var(--gold),transparent)
}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.stat{
  position:relative;overflow:hidden;
  background:linear-gradient(180deg,#fff,#f7fbf8);border:1px solid var(--line);
  border-radius:18px;padding:16px 16px 14px;
  box-shadow:0 10px 24px rgba(11,61,46,.04)
}
.stat::before{
  content:"";position:absolute;top:0;right:0;left:0;height:3px;
  background:linear-gradient(90deg,var(--royal),var(--gold))
}
.stat .l{font-size:.75rem;color:var(--muted);font-weight:700}
.stat .n{margin-top:8px;font-size:1.18rem;font-weight:800;color:var(--royal);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.stat.gold{background:linear-gradient(180deg,#fffaf0,#fff)}
.stat.gold::before{background:linear-gradient(90deg,var(--gold-deep),var(--gold))}
.grid{display:grid;gap:12px}
.grid.two{grid-template-columns:1fr 1fr}
.grid.three{grid-template-columns:1fr 1fr 1fr}
label{display:block;font-size:.8rem;font-weight:700;margin-bottom:6px;color:#355246}
input,select,textarea{
  width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 13px;background:#fff;
  transition:border-color .15s,box-shadow .15s
}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--royal-mid);
  box-shadow:0 0 0 4px rgba(20,114,80,.12)
}
textarea{min-height:84px;resize:vertical}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.btn{
  border:0;border-radius:13px;padding:11px 18px;font-weight:700;color:#fff;
  background:linear-gradient(135deg,var(--royal),var(--royal-mid));
  box-shadow:0 8px 18px rgba(11,61,46,.18);
  transition:transform .15s,filter .15s
}
.btn:hover{transform:translateY(-1px);filter:brightness(1.05)}
.btn.ghost{background:#fff;color:var(--royal);border:1px solid var(--line);box-shadow:none}
.btn.ghost:hover{border-color:var(--royal-mid);background:var(--royal-soft)}
.btn.warn{background:#fff;color:var(--err);border:1px solid #f0d0d0;box-shadow:none}
.btn.gold{background:linear-gradient(135deg,#b89032,#d4b45d);color:#1d1608}
.table-wrap{overflow:auto;border-radius:14px}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:right;vertical-align:top}
th{color:var(--muted);font-size:.75rem;font-weight:700;background:#f7fbf9}
td.num,th.num{font-variant-numeric:tabular-nums;white-space:nowrap}
tbody tr:hover td{background:#f8fcfa}
.row-btn{
  display:block;width:100%;text-align:right;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:13px 14px;margin-bottom:8px;color:inherit;
  transition:border-color .15s,transform .15s,background .15s
}
.row-btn:hover{border-color:var(--gold);background:#fffdf6;transform:translateY(-1px)}
.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:.7rem;font-weight:700}
.badge.ok{background:#e8f6ef;color:var(--ok)}
.badge.warn{background:var(--gold-soft);color:var(--warn)}
.badge.err{background:#fdecec;color:var(--err)}
.badge.ink{background:var(--royal-soft);color:var(--royal)}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input,.toolbar select{max-width:280px}
.hint{color:var(--muted);font-size:.85rem;line-height:1.7}
.tiny{font-size:.75rem;color:var(--muted)}
.msg{display:none;margin-top:10px;padding:10px 12px;border-radius:12px}
.msg.ok{display:block;background:#e8f6ef;color:var(--ok)}
.msg.err{display:block;background:#fdecec;color:var(--err)}
.hidden{display:none!important}
.toast{
  position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:120;
  min-width:260px;max-width:90vw;padding:13px 18px;border-radius:14px;display:none;
  box-shadow:0 18px 40px rgba(11,61,46,.22);font-weight:700
}
.toast.show{display:block}
.toast.ok{background:#e8f6ef;color:var(--ok);border:1px solid #b7e0c8}
.toast.err{background:#fdecec;color:var(--err)}
.item-card{border:1px solid var(--line);border-radius:16px;padding:14px;background:linear-gradient(180deg,#f9fcfa,#fff);margin-bottom:10px}
.pay-card{border:1px dashed color-mix(in srgb,var(--gold) 50%,var(--line));background:linear-gradient(180deg,#fffdf6,#fff)}
.empty{padding:36px 12px;text-align:center;color:var(--muted);line-height:1.8}
.empty::before{
  content:"";display:block;width:42px;height:4px;margin:0 auto 14px;border-radius:99px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent)
}
.split{display:grid;grid-template-columns:1.4fr .9fr;gap:16px;align-items:start}
input.money{font-variant-numeric:tabular-nums;letter-spacing:.01em}
.sheet{
  background:#fff;border:1.6px solid var(--royal);
  border-radius:4px;padding:12px 14px;color:#10231b
}
.pf-top{display:grid;grid-template-columns:1.3fr auto 1fr;align-items:stretch;gap:12px;padding-bottom:8px;border-bottom:2.5px solid var(--royal);margin-bottom:8px}
.pf-brand b{display:block;color:var(--royal);font-size:1.12rem;line-height:1.4}
.pf-brand span{display:block;font-size:.74rem;color:var(--muted);line-height:1.55}
.pf-title{text-align:center;align-self:center;min-width:180px;padding:4px 16px;border:1px solid var(--gold);border-radius:8px;background:linear-gradient(180deg,#fff8ea,#fff)}
.pf-title b{display:block;color:var(--royal);font-size:1.22rem}
.pf-title small{display:block;margin-top:4px;color:var(--muted);font-size:.75rem}
.pf-meta{display:flex;flex-direction:column;gap:4px;justify-content:center}
.pf-meta span{display:flex;justify-content:space-between;gap:12px;background:#f3f8f5;border:1px solid #d5e0da;border-radius:6px;padding:5px 9px;font-size:.78rem}
.pf-meta em{font-style:normal;color:var(--muted);font-weight:700}
.pf-parties{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.pf-box{border:1px solid var(--royal);border-radius:6px;overflow:hidden}
.pf-box h3,.pf-pay h4{margin:0;padding:5px 10px;background:var(--royal);color:#fff;font-size:.78rem;font-weight:800}
.pf-box .body,.pf-pay .body{padding:8px 10px;background:#f7faf8;font-size:.8rem;line-height:1.7}
.pf-table{width:100%;border:1px solid var(--royal);border-collapse:collapse}
.pf-table th{background:var(--royal);color:#fff;font-size:.72rem;text-align:center;padding:7px 6px}
.pf-table td{font-size:.8rem;padding:6px 8px;border-bottom:1px solid #d7e4dc}
.pf-table .c-row{width:54px}
.pf-table .c-desc{text-align:right}
.pf-table .empty-row{text-align:center;color:var(--muted);padding:16px}
.pf-table td.num{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:left;direction:ltr}
.pf-bottom{display:grid;grid-template-columns:1.45fr .9fr;gap:8px;margin-top:8px;align-items:stretch}
.pf-pay{border:1px solid var(--royal);border-radius:6px;overflow:hidden;background:#fff}
.pf-mini{width:100%;border-collapse:collapse}
.pf-mini th{background:#e7f2ec;color:var(--royal);font-size:.7rem;padding:5px 6px;text-align:center}
.pf-mini td{font-size:.75rem;padding:5px 7px;border-bottom:1px solid #e4eee8}
.pf-mini td.num{text-align:left;direction:ltr;font-variant-numeric:tabular-nums}
.pf-note{padding:7px 10px;font-size:.75rem;color:var(--muted);line-height:1.65;border-top:1px dashed var(--line)}
.pf-sums{border:1px solid var(--royal);border-radius:6px;overflow:hidden;display:flex;flex-direction:column;background:#fff}
.pf-sums div{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px solid #e4eee8;font-size:.82rem}
.pf-sums b{font-variant-numeric:tabular-nums}
.pf-sums .grand{background:var(--royal);color:#fff;font-size:.95rem;margin-top:auto;border:0}
.pf-sums .grand b{color:#f4e3b0}
.pf-sums .sheba{font-size:.72rem;color:var(--muted);border:0}
.pf-signs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px}
.pf-signs div{border:1px dashed #b7c9be;border-radius:6px;min-height:58px;display:flex;align-items:flex-end;justify-content:center;padding:8px;font-size:.74rem;color:var(--muted);background:#fcfefd}
#printDock{display:none;position:fixed;inset:0;z-index:90;background:rgba(7,38,29,.88);overflow:auto;padding:12px 12px 40px}
#printDock.open{display:block}
.print-bar{position:sticky;top:0;z-index:2;display:flex;gap:8px;justify-content:center;flex-wrap:wrap;padding:10px;margin:-12px -12px 8px;background:rgba(7,38,29,.96)}
.print-page{width:297mm;min-height:190mm;margin:8px auto;background:#fff;padding:8mm;box-shadow:0 18px 48px rgba(0,0,0,.28)}
.print-page .sheet{border-radius:0;min-height:174mm;box-sizing:border-box}
.sheet-preview{overflow:auto;padding:4px}
.sheet-preview .sheet{min-width:860px}

@media(max-width:980px){
  .app{grid-template-columns:1fr}
  .side{position:relative;height:auto}
  .nav{flex-direction:row;flex-wrap:wrap}
  .stats,.grid.two,.grid.three,.split,.auth-shell,.kind-grid{grid-template-columns:1fr}
  .kind-grid{grid-template-columns:1fr}
}
@media print{
  @page{size:A4 landscape;margin:8mm}
  html,body{background:#fff!important}
  body *{visibility:hidden}
  #printDock,#printDock *{visibility:visible}
  #printDock .no-print,#printDock .print-bar{display:none!important;visibility:hidden}
  #printDock{
    display:block!important;position:static;inset:auto;background:#fff;padding:0;overflow:visible
  }
  .print-page{width:100%;min-height:auto;margin:0;padding:0;box-shadow:none}
  .print-page .sheet{min-height:0;border-width:1.4px}
  .pf-top{grid-template-columns:1.3fr auto 1fr!important}
  .pf-parties,.pf-bottom{grid-template-columns:1fr 1fr!important}
  .pf-bottom{grid-template-columns:1.45fr .9fr!important}
  .pf-signs{grid-template-columns:1fr 1fr 1fr!important}
}

.auth-gate{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:28px;
  background:
    radial-gradient(ellipse at 20% 0%,rgba(201,162,74,.28),transparent 46%),
    linear-gradient(160deg,#071c16 0%,#0b3d2e 48%,#123328 100%)
}
.auth-shell{
  width:min(860px,100%);display:grid;grid-template-columns:1.05fr .95fr;overflow:hidden;
  border-radius:28px;border:1px solid rgba(201,162,74,.35);
  box-shadow:0 30px 70px rgba(0,0,0,.28)
}
.auth-hero{
  padding:36px 32px;color:#eef6f1;
  background:
    linear-gradient(180deg,rgba(201,162,74,.16),transparent 40%),
    linear-gradient(160deg,#0b3d2e,#145c43)
}
.auth-hero .kicker{font-size:.75rem;letter-spacing:.14em;color:#e4c878;font-weight:800}
.auth-hero h1{color:#fff;font-size:2rem;margin:10px 0 12px;line-height:1.35}
.auth-hero p{margin:0;color:#d5eadc;line-height:1.9}
.auth-hero ul{margin:22px 0 0;padding:0 18px 0 0;color:#e8f2ed;line-height:2;font-size:.92rem}
.auth-card{background:var(--paper);padding:32px 28px}
.auth-card h2{margin:0 0 6px;font-size:1.25rem;color:var(--royal)}
.auth-tabs{display:flex;gap:6px;margin:16px 0 18px;padding:4px;background:#efe8d4;border-radius:14px}
.auth-tabs button{flex:1;box-shadow:none}
.kind-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.kind-card{
  text-align:right;background:#fff;border:1px solid var(--line);border-radius:18px;
  padding:18px 16px;color:inherit;position:relative;overflow:hidden;
  transition:transform .16s,border-color .16s,box-shadow .16s
}
.kind-card::before{
  content:"";position:absolute;inset:0 auto 0 0;width:4px;
  background:linear-gradient(180deg,var(--gold),var(--royal))
}
.kind-card:hover{transform:translateY(-3px);border-color:#e1cc88;box-shadow:0 14px 28px rgba(11,61,46,.08)}
.kind-card.on{border-color:var(--royal);background:linear-gradient(180deg,#f3faf6,#fff);box-shadow:0 0 0 1px var(--royal)}
.kind-card b{display:block;color:var(--royal);font-size:1.05rem}
.kind-card span{display:block;margin-top:7px;color:var(--muted);font-size:.82rem;line-height:1.65;font-weight:500}
.wizard-steps{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.wizard-steps .s{
  flex:1;min-width:96px;padding:9px 10px;border-radius:999px;background:#fff;
  border:1px solid var(--line);color:var(--muted);font-size:.78rem;font-weight:700;text-align:center
}
.pay-gen{
  border:1px solid color-mix(in srgb,var(--gold) 55%,var(--line));
  background:linear-gradient(180deg,#fff8ea,#fff);
  border-radius:16px;
  padding:14px 16px;
  margin:14px 0 8px
}
.pay-gen h3{margin:0 0 6px;font-size:.95rem;color:var(--royal)}
label.chk{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--ink);margin:4px 0 0}
label.chk input{width:auto;accent-color:var(--royal)}
.wizard-steps .s.on{background:linear-gradient(135deg,var(--royal),var(--royal-mid));color:#fff;border-color:transparent}
.wizard-steps .s.done{background:var(--gold-soft);color:var(--gold-deep);border-color:#e4d19a}
.side-user{margin-top:auto;padding:16px 10px 6px;border-top:1px solid rgba(255,255,255,.1)}
.side-user .who{font-size:.86rem;font-weight:800;color:#fff}
.side-user .uid{font-size:.72rem;color:#cfe4d8;margin:3px 0 12px}
.side-user .btn.ghost{width:100%;background:transparent;color:#e8f2ed;border-color:rgba(255,255,255,.18)}
.avatar{
  width:36px;height:36px;border-radius:12px;display:grid;place-items:center;
  background:linear-gradient(145deg,#e8c56a,#c9a24a);color:#1d1608;font-weight:800;margin-bottom:8px
}
