/* Layout: app shell, sticky top bar with tabs, language switch and user menu; one working area per screen */
:root{
  --bg:#F3F5F1; --paper:#FFFFFF; --ink:#16302B; --muted:#5E6D68; --line:#DCE1DB;
  --teal:#0F4C45; --teal-ink:#FFFFFF; --amber:#B9772A; --soft:#E7EEE9;
  --good:#2F7A4F; --bad:#B0412C; --badbg:#F8E6E1; --goodbg:#E2F1E7;
  --font:"CairoLa","CairoAr",Tahoma,"Segoe UI",Arial,sans-serif;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0E1614; --paper:#15201D; --ink:#E3ECE8; --muted:#9AABA5; --line:#2A3833;
  --teal:#5FB8A8; --teal-ink:#0B1A17; --amber:#E0A458; --soft:#1B2A26;
  --good:#6CC08E; --bad:#EE8670; --badbg:#3A1F19; --goodbg:#17301F; color-scheme:dark}}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.65}
.top{position:sticky;top:0;z-index:5;background:var(--paper);border-bottom:1px solid var(--line)}
.top-in{max-width:1240px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:10px 16px}
.brand{font-size:1.3rem;font-weight:800;color:var(--teal);white-space:nowrap}
nav{display:flex;gap:4px;overflow-x:auto;max-width:100%;flex:1 1 auto}
nav a{white-space:nowrap;text-decoration:none;color:var(--muted);padding:6px 12px;border-radius:8px;font-weight:600}
nav a:hover{background:var(--soft);color:var(--ink)}
nav a.on{background:var(--teal);color:var(--teal-ink)}
.tools{display:flex;gap:8px;align-items:center}
.lang{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.lang button{border:0;border-radius:0;padding:5px 12px;font-weight:700;background:var(--paper);color:var(--muted)}
.lang button.on{background:var(--amber);color:#fff}
.user{font-weight:700}
main{max-width:1240px;margin:0 auto;padding:20px 16px 60px;display:flex;flex-direction:column;gap:16px}
h1{font-size:1.6rem;font-weight:800;margin:0;color:var(--teal)}
h2{font-size:1.15rem;font-weight:700;margin:0}
p{margin:0}
.muted{color:var(--muted)}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.between{justify-content:space-between}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}
label.f{display:flex;flex-direction:column;gap:3px;font-size:.85rem;font-weight:600;color:var(--muted);min-width:0}
input,select,textarea{font:inherit;font-weight:500;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:7px 9px;min-width:0}
input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--amber);outline-offset:1px}
input[type=number]{font-variant-numeric:tabular-nums}
button{font:inherit;font-weight:600;cursor:pointer;border-radius:8px;padding:7px 14px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}
button.pri{background:var(--teal);border-color:var(--teal);color:var(--teal-ink);font-weight:700}
button:disabled{opacity:.45;cursor:not-allowed}
button.lnk{border:0;background:none;color:var(--teal);padding:2px 6px}
button.del{color:var(--bad)}
.tbl{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
table{border-collapse:collapse;width:100%}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:start;vertical-align:middle}
th{background:var(--soft);font-weight:700;font-size:.85rem;color:var(--muted);position:sticky;top:0}
td.n,th.n{text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}
td.code{font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}
tr.tot td{font-weight:800;background:var(--soft)}
tr.l1 td{font-weight:800} tr.l2 td{font-weight:700}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.stat{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px}
.stat span{font-size:.85rem;color:var(--muted);font-weight:600}
.stat b{display:block;font-size:1.4rem;font-weight:800;font-variant-numeric:tabular-nums}
.pill{display:inline-block;font-size:.8rem;border-radius:99px;padding:1px 10px;font-weight:700}
.pill.ok{background:var(--goodbg);color:var(--good)} .pill.no{background:var(--badbg);color:var(--bad)}
.msg{border-radius:10px;padding:10px 14px;background:var(--soft)}
.msg.err{background:var(--badbg);color:var(--bad)}
.msg.ok{background:var(--goodbg);color:var(--good)}
.tree li{list-style:none}
.tree{margin:0;padding:0}
.tree ul{margin:0;padding-inline-start:20px;border-inline-start:1px dashed var(--line)}
.node{display:flex;align-items:center;gap:8px;padding:3px 4px;border-radius:6px;flex-wrap:wrap;cursor:pointer}
.node:hover{background:var(--soft)}
.node .tog{width:22px;border:0;background:none;padding:0;color:var(--muted)}
.node .c{font-variant-numeric:tabular-nums;color:var(--muted);min-width:64px}
.node .nm{font-weight:600}
.node.sel{background:var(--soft);outline:1px solid var(--teal)}
.lines td{padding:4px 6px}
.lines input{width:100%}
.lines .acc{min-width:220px}
.grid2{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:16px}
@media (max-width:820px){.grid2{grid-template-columns:1fr}}
.empty{padding:28px;text-align:center;color:var(--muted)}
.login{max-width:420px;margin:8vh auto 0;width:100%}
.login h1{text-align:center}
.bar{height:8px;border-radius:99px;background:var(--soft);overflow:hidden}
.bar i{display:block;height:100%;background:var(--teal)}
@media print{.top,button,.noprint{display:none!important}.panel{border:0;padding:0}body{background:#fff;color:#000}}
.modeopt{display:flex;gap:8px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:10px;cursor:pointer}
.modeopt:has(input:checked){outline:2px solid var(--teal)}
.modeopt input{margin-top:6px}
.f>span{font-size:.85rem;font-weight:600;color:var(--muted)}
div.f{display:flex;flex-direction:column;gap:3px;min-width:0}
.dfield{display:inline-flex;align-items:stretch;gap:4px;position:relative}
.dfield .dtext{width:8.5em;text-align:center;font-variant-numeric:tabular-nums}
.dfield .dtext.bad{border-color:var(--bad);background:var(--badbg)}
.dfield .dpick{padding:4px 8px;display:inline-flex;align-items:center;color:var(--teal)}
.dfield .dnative{position:absolute;inset-inline-start:0;bottom:0;width:1px;height:1px;opacity:0;pointer-events:none;border:0;padding:0}
.monthbox{font-weight:800!important;color:var(--teal)!important;text-align:center;background:var(--soft)!important}
.accwrap{display:flex;gap:4px}
.accwrap .acc{flex:1}
.treebtn{padding:4px 8px;display:inline-flex;align-items:center;color:var(--teal)}
.node .addunder{margin-inline-start:auto;font-weight:800;font-size:1.05rem;opacity:.55}
.node:hover .addunder,.node.sel .addunder{opacity:1}
.side{align-self:start;position:sticky;top:76px}
.modal{position:fixed;inset:0;z-index:20;background:rgba(10,20,18,.45);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px}
.modal-in{background:var(--paper);border-radius:14px;width:min(640px,100%);max-height:84vh;display:flex;flex-direction:column;gap:10px;padding:16px;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.crumbs{font-size:.9rem;color:var(--muted)}
.pklist{overflow-y:auto;display:flex;flex-direction:column;gap:4px;min-height:120px}
.pkitem{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;text-align:start;padding:9px 12px}
.pkitem:hover{background:var(--soft)}
.pkitem .c{font-variant-numeric:tabular-nums;color:var(--muted);min-width:64px}
.pkitem .pkhint{font-size:.8rem;color:var(--muted)}
.pkitem.leaf{border-color:var(--teal)}
.pkitem.leaf .pkhint{color:var(--teal);font-weight:700}
.rtabs{gap:6px}
table.rep tr.sec td{font-weight:800;color:var(--teal);background:var(--paper)}
table.rep tr.net td{font-weight:800;background:var(--teal);color:var(--teal-ink)}
table.rep tr.muted td{color:var(--muted);font-size:.85rem}
table.rep td.n{min-width:96px}
.printonly{display:none}
@media print{.printonly{display:block}}
table.rep td:first-child{min-width:190px}
table.rep th.n,table.rep td.n{white-space:nowrap}
/* vouchers */
tr.void td{color:var(--muted);text-decoration:line-through}
tr.void td:nth-last-child(-n+2){text-decoration:none}
.vprint{position:relative;background:#fff;color:#111;border:2px solid #0F4C45;border-radius:12px;padding:22px 26px;display:flex;flex-direction:column;gap:14px;max-width:900px;width:100%;margin:0 auto}
.vprint .muted{color:#555}
.vhead{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;border-bottom:2px solid #0F4C45;padding-bottom:12px}
.vco{font-size:1.25rem;font-weight:800;color:#0F4C45}
.vtitle{font-size:1.5rem;font-weight:800;border:2px solid #0F4C45;border-radius:10px;padding:4px 18px;text-align:center;color:#0F4C45}
.vno{text-align:end}
.vcode{font-size:1.45rem;font-weight:800;color:#B9772A;letter-spacing:.5px}
.vamount{display:flex;align-items:center;gap:10px;font-size:1.05rem}
.vamount b{font-size:1.5rem;border:2px solid #111;border-radius:8px;padding:2px 16px;font-variant-numeric:tabular-nums}
.vwords{background:#F1F5F2;border-radius:8px;padding:8px 12px;font-weight:700}
.vtable{border-collapse:collapse;width:100%}
.vtable th,.vtable td{border:1px solid #bbb;padding:8px 12px;text-align:start;background:#fff;color:#111;position:static}
.vtable th{width:30%;background:#F1F5F2;font-weight:700;font-size:.95em}
.vsign{display:grid;gap:18px;margin-top:26px}
.vsign div{display:flex;flex-direction:column;align-items:center;gap:34px;font-weight:700}
.vsign i{display:block;width:85%;border-bottom:1.5px dotted #111}
.vfoot{font-size:.78rem;border-top:1px solid #ddd;padding-top:6px}
.vstamp{position:absolute;inset:40% 0 auto 0;text-align:center;font-size:4rem;font-weight:800;color:rgba(176,65,44,.28);transform:rotate(-12deg);pointer-events:none}
@media (max-width:640px){.vhead{grid-template-columns:1fr}.vno{text-align:start}}
@media print{
  @page{size:A5 landscape;margin:8mm}
  .printing-voucher .msg{display:none!important}
  .printing-voucher .vprint{border-width:1.5px;padding:12px 16px;gap:9px;max-width:none}
  .printing-voucher .vsign{margin-top:8px}
  .printing-voucher .vprint{font-size:12px;line-height:1.45}
  .printing-voucher .vhead{padding-bottom:6px}
  .printing-voucher .vco{font-size:1.1rem}.printing-voucher .vtitle{font-size:1.2rem;padding:2px 12px}.printing-voucher .vcode{font-size:1.2rem}
  .printing-voucher .vamount b{font-size:1.2rem;padding:0 12px}
  .printing-voucher .vwords{padding:4px 10px}
  .printing-voucher .vtable th,.printing-voucher .vtable td{padding:3px 8px}
  .printing-voucher .vsign div{gap:22px}
  .printing-voucher .vfoot{padding-top:3px;font-size:.7rem}
  main{padding:0!important}
}
.vgrid th{width:auto;text-align:start}
.vgrid th.n,.vgrid td.n{text-align:end;white-space:nowrap}
.vgrid tr.vtot td{font-weight:800;background:#F1F5F2}
.vlines td{vertical-align:top}
.vlines .vnet{display:inline-block;padding-top:8px;font-variant-numeric:tabular-nums}
@media print{.printing-voucher .vgrid th,.printing-voucher .vgrid td{padding:2px 6px}}

/* permissions editor */
.permgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin:8px 0}
.permbox{border:1px solid var(--line,#ddd);border-radius:10px;padding:8px 12px;display:flex;flex-direction:column;gap:6px;margin:0}
.permbox legend{font-weight:700;padding:0 6px}
.chk{display:flex;align-items:center;gap:8px;cursor:pointer}
.chk input{width:18px;height:18px}

/* tabs */
.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tabs button.on{background:var(--teal);color:var(--teal-ink);border-color:var(--teal)}
/* phones */
.menubtn{display:none;font-size:1.3rem;line-height:1;padding:6px 12px}
@media (max-width:760px){
  body{font-size:15px}
  .top-in{padding:8px 12px;gap:8px}
  .menubtn{display:inline-block;margin-inline-start:auto}
  nav{display:none;order:5;flex:1 1 100%;flex-direction:column;gap:2px}
  nav.open{display:flex}
  nav a{padding:10px 12px}
  .tools{flex:1 1 100%;justify-content:space-between}
  main{padding:12px 10px 40px;gap:12px}
  .panel{padding:12px;border-radius:10px}
  h1{font-size:1.3rem}
  .row>.f{flex:1 1 100%!important}
  .row>button{flex:1 1 auto}
  .tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}
  input,select,textarea,button{font-size:16px}
}

/* brand */
.brand{display:flex;align-items:center;gap:8px}
.brandicon{width:30px;height:30px;border-radius:8px}
.loginlogo{display:flex;align-items:center;gap:12px;justify-content:center;margin:6px 0}
.loginlogo img{width:64px;height:64px}
.loginlogo div{display:flex;flex-direction:column;line-height:1.2}
.loginlogo b{font-size:2.2rem;font-weight:800;color:var(--teal)}
.loginlogo span{color:var(--muted);font-size:.95rem}
