@font-face{font-family:"VazirLocal";src:local("Vazirmatn"),local("Vazir"),url("fonts/Vazirmatn.woff2") format("woff2");font-display:swap}
:root{
  --ink:#14231b;--ink2:#1d3328;--pine:#2f6b4f;--pine-soft:#dcebe3;
  --cut:#e9b54a;--cut-deep:#b9821a;--bg:#eceee9;--card:#fff;--line:#d9ddd5;
  --text:#18211c;--mute:#66726a;--red:#b3261e;--red-soft:#fbe6e4;--amber-soft:#fbefd2;--ok-soft:#dcebe3;
  --r:14px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{font-family:"VazirLocal",Vazirmatn,Tahoma,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.6;overscroll-behavior:none}
button,input{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;touch-action:manipulation}
#app{min-height:100%}
.hide{display:none!important}

/* top bar */
.top{display:flex;align-items:center;gap:10px;padding:calc(env(safe-area-inset-top) + 10px) 14px 10px;background:var(--ink);color:#fff}
.top h1{margin:0;font-size:17px;font-weight:700;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .ic{width:40px;height:40px;border-radius:12px;background:rgba(255,255,255,.1);color:#fff;font-size:20px;display:grid;place-items:center}
.logo{width:34px;height:34px;flex:none}

.page{max-width:640px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}
.body{padding:14px;flex:1}

/* login */
.login{min-height:100dvh;display:grid;place-items:center;padding:20px;background:var(--ink)}
.login-card{width:100%;max-width:360px;color:#fff;text-align:center}
.login-card .logo{width:84px;height:84px;margin-bottom:6px}
.login-card h1{margin:0 0 4px;font-size:26px}
.login-card p{margin:0 0 22px;color:#a9bbb0}
.login-card input{display:block;width:100%;height:52px;margin-bottom:10px;border-radius:14px;border:1.5px solid #2f4a3b;background:var(--ink2);color:#fff;padding:0 16px;font-size:16px;text-align:center;outline:0}
.login-card input:focus{border-color:var(--cut)}
.login-card .go{width:100%;height:54px;border-radius:14px;background:var(--cut);color:var(--ink);font-weight:700;font-size:17px;margin-top:6px}
.err{color:#ffb4ab;min-height:24px;margin-top:10px}

/* today strip */
.hero{background:var(--ink);color:#fff;padding:4px 14px 18px}
.hero .lbl{color:#a9bbb0;font-size:13px}
.hero .big{font-size:40px;font-weight:700;color:var(--cut);line-height:1.25;font-variant-numeric:tabular-nums}
.hero .big small{font-size:16px;color:#d9e5dd;font-weight:400;margin-inline-start:6px}
.hero .sub{color:#d9e5dd;font-size:14px}

/* days & bundles */
.day{margin-bottom:18px}
.day-h{display:flex;align-items:baseline;justify-content:space-between;padding:0 4px 6px;border-bottom:2px solid var(--ink)}
.day-h b{font-size:16px}
.day-h span{color:var(--mute);font-size:13px}
.day-h .dt{font-weight:700;color:var(--ink);font-size:14px}
.bcard{display:block;width:100%;text-align:start;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin-top:10px;border-inline-start:6px solid var(--pine)}
.bcard.chg{border-inline-start-color:var(--red)}
.bcard.wait{border-inline-start-color:#b5bdb7}
.bcard .r1{display:flex;justify-content:space-between;align-items:baseline}
.bcard .no{font-weight:700;font-size:16px}
.bcard .tm{color:var(--mute);font-size:13px}
.bcard .vol{display:flex;gap:14px;align-items:baseline;margin-top:2px}
.bcard .vol b{font-size:22px;color:var(--ink);font-variant-numeric:tabular-nums}
.bcard .vol span{color:var(--mute);font-size:13px}
.bd{display:inline-block;font-size:12px;padding:1px 9px;border-radius:99px;margin:6px 0 0 6px}
.bd.ok{background:var(--ok-soft);color:#1d5139}
.bd.warn{background:var(--amber-soft);color:#7a5200}
.bd.red{background:var(--red-soft);color:var(--red)}
.bd.gray{background:#e8ebe7;color:var(--mute)}
.empty{text-align:center;color:var(--mute);padding:40px 10px}
.more{display:block;margin:6px auto 90px;padding:10px 20px;border-radius:12px;background:var(--card);border:1px solid var(--line)}
.fab{position:fixed;inset-inline:0;bottom:0;padding:12px 14px calc(env(safe-area-inset-bottom) + 12px);background:linear-gradient(transparent,var(--bg) 35%);pointer-events:none}
.fab button{pointer-events:auto;display:block;max-width:612px;margin:0 auto;width:100%;height:56px;border-radius:16px;background:var(--cut);color:var(--ink);font-weight:700;font-size:18px;box-shadow:0 6px 18px rgba(20,35,27,.28)}

/* bundle page */
.bpage{display:flex;flex-direction:column;height:100dvh;max-width:640px;margin:0 auto;background:var(--bg)}
.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 0 14px}
.tot{background:var(--ink);color:#fff;padding:2px 14px 14px;display:flex;align-items:flex-end;justify-content:space-between;gap:10px}
.tot .m3{font-size:36px;font-weight:700;color:var(--cut);line-height:1.2;font-variant-numeric:tabular-nums}
.tot .m3 small{font-size:14px;color:#d9e5dd;font-weight:400;margin-inline-start:4px}
.tot .side{text-align:end;font-size:14px;color:#d9e5dd;line-height:1.5}
.tot .side b{font-size:18px;color:#fff;font-variant-numeric:tabular-nums}
.note{margin:12px 14px 0;padding:10px 12px;border-radius:12px;font-size:14px}
.note.ok{background:var(--ok-soft);color:#1d5139}
.note.warn{background:var(--amber-soft);color:#6b4700}
.note.red{background:var(--red-soft);color:var(--red)}
.note.gray{background:#e3e7e2;color:var(--mute)}
.setrow{display:flex;gap:8px;align-items:center;margin:12px 14px 0}
.seg{display:flex;background:#dfe3dc;border-radius:12px;padding:3px;flex:1}
.seg button{flex:1;height:38px;border-radius:10px;font-weight:600;color:var(--mute)}
.seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.tools{display:flex;gap:8px;margin:10px 14px 0}
.tools button{flex:1;height:40px;border-radius:12px;background:#fff;border:1px solid var(--line);font-size:14px}
.tools .del{color:var(--red)}

.plist{margin:12px 14px 0}
.plist h3{margin:0 0 6px;font-size:14px;color:var(--mute);font-weight:600}
.prow{display:grid;grid-template-columns:34px 1fr auto;gap:8px;align-items:center;width:100%;text-align:start;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-bottom:6px}
.prow.sel{border-color:var(--cut-deep);background:#fff8e6}
.prow .n{width:30px;height:30px;border-radius:50%;background:var(--pine-soft);color:var(--pine);display:grid;place-items:center;font-size:13px;font-weight:700}
.prow .dim{font-weight:700;font-size:17px;font-variant-numeric:tabular-nums;direction:rtl}
.prow .dim i{font-style:normal;color:var(--mute);font-weight:400;margin:0 4px}
.prow .v{text-align:end;font-size:13px;color:var(--mute);line-height:1.4}
.prow .v b{color:var(--ink);font-size:14px}
.prow .tag{grid-column:2/4;font-size:12px;color:#7a5200}
.prow .tag.acc{color:var(--red)}

details.log{margin:14px 14px 0;background:#fff;border:1px solid var(--line);border-radius:12px;padding:0 12px}
details.log summary{padding:12px 0;font-weight:600;cursor:pointer}
.lg{padding:8px 0;border-top:1px solid var(--line);font-size:13px}
.lg b{font-size:14px}
.lg .who{color:var(--mute)}
.lg .d{color:#3d4a42;direction:rtl;unicode-bidi:plaintext}

/* entry panel */
.panel{flex:none;background:#fff;border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(20,35,27,.12);padding:8px 10px calc(env(safe-area-inset-bottom) + 8px)}
.handle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:2px 4px 8px;color:var(--mute);font-size:13px}
.handle .bar{width:44px;height:5px;border-radius:3px;background:#c7cdc5;margin:auto}
.flds{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fld{background:#f2f4f0;border:2px solid transparent;border-radius:14px;padding:4px 6px 2px;text-align:center;min-height:62px}
.fld small{display:block;color:var(--mute);font-size:12px}
.fld b{display:block;font-size:28px;line-height:1.25;font-variant-numeric:tabular-nums;min-height:35px}
.fld.on{border-color:var(--cut-deep);background:#fff8e6}
.fld.lock small::after{content:" 🔒"}
.prev{text-align:center;color:var(--mute);font-size:13px;min-height:22px;margin-top:4px}
.prev b{color:var(--ink)}
.pad{direction:ltr;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}
.pad button{height:clamp(50px,8.2vh,68px);border-radius:16px;background:#eef1ec;font-size:28px;font-weight:600;user-select:none;-webkit-user-select:none;transition:transform .05s,background .05s}
.pad button:active{background:#d5dcd3;transform:scale(.96)}
.pad .fn{background:#dfe5dc;font-size:24px}
.act{display:flex;gap:8px;margin-top:8px}
.go{flex:1;height:clamp(52px,8.4vh,64px);border-radius:16px;background:var(--cut);color:var(--ink);font-size:19px;font-weight:700}
.go:active{background:var(--cut-deep)}
.go.dis{opacity:.5}
.sm{height:clamp(52px,8.4vh,64px);padding:0 16px;border-radius:16px;background:#eef1ec;font-weight:600}
.sm.red{background:var(--red-soft);color:var(--red)}

/* sheet & toast */
.ov{position:fixed;inset:0;background:rgba(10,20,14,.55);display:flex;align-items:flex-end;justify-content:center;z-index:20}
.sheet{width:100%;max-width:640px;background:#fff;border-radius:22px 22px 0 0;padding:18px 16px calc(env(safe-area-inset-bottom) + 16px)}
.sheet h3{margin:0 0 10px}
.sheet button.it{display:block;width:100%;text-align:start;padding:14px 10px;border-top:1px solid var(--line);font-size:16px}
.sheet input,.sheet select,.form input,.form select{display:block;width:100%;height:46px;border-radius:12px;border:1.5px solid var(--line);padding:0 12px;margin:8px 0;font-size:16px;background:#fff}
#toast{position:fixed;left:50%;top:calc(env(safe-area-inset-top) + 14px);transform:translate(-50%,-90px);background:#222;color:#fff;padding:10px 18px;border-radius:12px;z-index:50;transition:transform .25s;max-width:90vw;text-align:center}
#toast.show{transform:translate(-50%,0)}
#toast.bad{background:var(--red)}

.ucard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px;display:flex;align-items:center;gap:10px}
.ucard .i{flex:1}.ucard .i small{display:block;color:var(--mute)}
.ucard button{padding:6px 10px;border-radius:10px;background:#eef1ec;font-size:13px}
.form{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:14px}
.form .go{width:100%;margin-top:6px}

@media (prefers-reduced-motion:reduce){*{transition:none!important}}
button:focus-visible,input:focus-visible{outline:3px solid var(--cut);outline-offset:2px}
