:root{--bg:#F4ECDB;--card:#FFFBF2;--ink:#2B2118;--muted:#7A6A58;--line:#E3D4B6;--hay:#E9C46A;--green:#2A9D8F;--soil:#6B4F3A;--red:#C8553D;--amber:#D99A2B;--soft:#F1E6CF}
.dark{--bg:#15110D;--card:#211B15;--ink:#F3E9D7;--muted:#A8987F;--line:#3A2F25;--soft:#2A231B;--soil:#C9A27E}
*{box-sizing:border-box}
body{margin:0;font-family:'Vazirmatn',sans-serif;color:var(--ink);background:var(--bg);
background-image:radial-gradient(circle at 10% 0%,rgba(233,196,106,.25),transparent 40%),radial-gradient(circle at 100% 30%,rgba(42,157,143,.12),transparent 40%),repeating-linear-gradient(135deg,rgba(107,79,58,.035) 0 2px,transparent 2px 14px);background-attachment:fixed;font-feature-settings:"tnum"}
.disp{font-family:'Lalezar','Vazirmatn',sans-serif;font-weight:400;letter-spacing:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 2px 0 var(--line),0 10px 30px -18px rgba(60,40,20,.35)}
.btn{border-radius:12px;padding:.5rem .9rem;font-weight:700;font-size:.85rem;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;transition:transform .12s,box-shadow .12s;white-space:nowrap}
.btn:hover{transform:translateY(-1px);box-shadow:0 4px 0 var(--line)}
.btn:active{transform:translateY(1px)}
.btn-p{background:var(--green);color:#fff;border-color:#1f7a6f}
.btn-h{background:var(--hay);color:#2B2118;border-color:#c9a648}
.btn-r{background:transparent;color:var(--red);border-color:var(--red)}
.btn-s{padding:.25rem .55rem;font-size:.75rem;border-radius:9px}
.inp{width:100%;background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:.4rem .6rem;color:var(--ink);font-family:inherit;font-size:.85rem;outline:none}
.inp:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(42,157,143,.2)}
.inp-s{padding:.2rem .3rem;font-size:.75rem;width:3.6rem;text-align:center}
.chip{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.7rem;font-weight:700}
.tbl{width:100%;border-collapse:collapse;font-size:.82rem}
.tbl th{font-weight:700;color:var(--muted);text-align:right;padding:.5rem .4rem;border-bottom:2px solid var(--line);white-space:nowrap;cursor:default}
.tbl td{padding:.45rem .4rem;border-bottom:1px dashed var(--line);white-space:nowrap}
.tbl tr:hover td{background:var(--soft)}
.muted{color:var(--muted)}
.tab{padding:.45rem .9rem;border-radius:12px;font-weight:700;font-size:.9rem;color:var(--muted);cursor:pointer;border:0;background:transparent;white-space:nowrap}
.tab.on{background:var(--soil);color:var(--card)}
.ok{color:var(--green)}.warn{color:var(--amber)}.bad{color:var(--red)}
.bg-ok{background:var(--green)}.bg-warn{background:var(--amber)}.bg-bad{background:var(--red)}
.fade{animation:fade .5s ease both}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.prog{height:6px;border-radius:9px;background:var(--soft);overflow:hidden}
.prog>div{height:100%;width:40%;background:linear-gradient(90deg,var(--hay),var(--green));animation:slide 0.9s linear infinite}
@keyframes slide{from{transform:translateX(150%)}to{transform:translateX(-250%)}}
.conf{position:fixed;top:-20px;width:10px;height:14px;z-index:90;animation:fall 2.2s ease-in forwards;pointer-events:none}
@keyframes fall{to{transform:translateY(105vh) rotate(720deg);opacity:.7}}
.bob{animation:bob 2.6s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-4px) rotate(-2deg)}}
input[type=range]{accent-color:var(--green);width:100%}
input[type=checkbox]{accent-color:var(--green);width:16px;height:16px}
::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-thumb{background:var(--line);border-radius:9px}
@media print{.no-print{display:none!important}body{background:#fff}.card{box-shadow:none;border-color:#ccc}}