*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
:root{--bg:#111418;--card:#1b2027;--card2:#161a20;--line:#222831;--mut:#8a95a3;--yel:#ffcc00;--grn:#35d07f;--red:#ff7a8a;--blu:#6fb3ff;--amb:#ffb347}
html,body{height:100%;background:var(--bg);color:#eef1f4;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow-x:hidden}
a{color:var(--yel)}
button{border:0;border-radius:14px;background:#262d36;color:#eef1f4;font-size:clamp(22px,6.5vw,30px);font-weight:600;font-family:inherit;cursor:pointer}
button:active{transform:scale(.96);filter:brightness(1.3)}

/* ---------- вход / регистрация ---------- */
.auth{min-height:100dvh;max-width:420px;margin:0 auto;padding:28px 18px calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;justify-content:center}
.logo{font-size:34px;font-weight:800;text-align:center;color:#fff;letter-spacing:.01em}
.logo span{color:var(--yel)}
.tabs{display:grid;grid-template-columns:1fr 1fr;background:var(--card);border-radius:14px;padding:4px}
.tabs a{text-align:center;padding:11px;border-radius:11px;color:var(--mut);text-decoration:none;font-weight:700}
.tabs a.on{background:var(--yel);color:#111}
.auth form{display:flex;flex-direction:column;gap:12px}
.auth label{display:flex;flex-direction:column;gap:5px;font-size:14px;color:var(--mut)}
.auth label em{font-style:normal;opacity:.7}
.auth input{font-size:20px;background:var(--card);border:1px solid #2a323c;border-radius:12px;color:#fff;padding:12px 14px;font-family:inherit;width:100%}
.auth input:focus{outline:0;border-color:var(--yel)}
.auth small{font-size:12px;color:#6d7784}
.auth .pwl{text-align:center}
.pw{position:relative;display:block;background:var(--card);border:1px solid #2a323c;border-radius:14px;padding:16px 8px 12px;cursor:text}
.pw.focus{border-color:var(--yel)}
.auth .pw input{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:0;padding:0;background:none;font-size:16px}
.pw-view{display:none;justify-content:center;align-items:flex-end;gap:8px;pointer-events:none}
.pw.js .pw-view{display:flex}
.pw.js input{caret-color:transparent}
.sl{width:46px;height:58px;line-height:58px;border-bottom:3px solid #3a424d;font-size:42px;font-weight:800;color:#fff;text-align:center}
.sl.l{color:var(--yel);margin-right:12px}
.sl.f{border-color:#8a95a3}
.pw.focus .sl.cur{border-color:var(--yel);animation:blink 1s steps(2,start) infinite}
@keyframes blink{to{border-color:#3a424d}}
.auth small b{color:var(--red)}.auth small b.good{color:var(--grn)}
.go:disabled{opacity:.35;cursor:default}
.err{background:#3a1f24;color:var(--red);border-radius:12px;padding:10px 12px;font-size:15px}
.go{background:var(--yel);color:#111;font-size:19px;font-weight:800;padding:15px;margin-top:4px}
.foot{font-size:13px;color:var(--mut);text-align:center;line-height:1.5}
.foot .aph{display:block;margin-top:6px;font-size:22px;font-weight:800;text-decoration:none;white-space:nowrap}

/* ---------- калькулятор ---------- */
.app{height:100vh;height:100dvh;min-height:520px;display:flex;flex-direction:column;padding:8px 12px calc(64px + env(safe-area-inset-bottom));gap:8px;max-width:520px;margin:0 auto;user-select:none}
.top{display:flex;align-items:center;gap:8px;flex-shrink:0;font-size:14px;color:var(--mut)}
.top #who{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top button{font-size:20px;width:38px;height:32px;padding:0;border-radius:10px;background:var(--card);color:var(--yel)}
.chip{font-size:12px;font-weight:700;padding:5px 10px;border-radius:99px;white-space:nowrap;background:var(--card)}
.c-green{background:#15321f;color:var(--grn)}.c-blue{background:#1c2b40;color:var(--blu)}.c-amber{background:#3a2e1c;color:var(--amb)}.c-red{background:#3a1f24;color:var(--red)}
.banner{flex-shrink:0;font-size:13px;line-height:1.35;padding:8px 12px;border-radius:12px}
.banner.amber{background:#2f2715;color:#ffdc73}.banner.red{background:#3a1f24;color:#ffb3bd}
.banner[hidden]{display:none}
.totals{display:grid;grid-template-columns:1fr 1fr;gap:8px;flex-shrink:0}
.card{background:var(--card);border-radius:16px;padding:10px 14px}
.card small{display:block;font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.card b{display:block;font-size:clamp(24px,7.5vw,38px);font-weight:800;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sm{padding:6px 14px}.sm b{font-size:clamp(19px,5.6vw,26px)}
.firm b{color:var(--red)}.me b{color:var(--blu)}
.all b{color:var(--yel)}.left b{color:var(--grn)}
.sum{grid-column:1/-1;display:flex;justify-content:space-between;font-size:13px;color:var(--mut);padding:0 4px}
.log{flex:1;min-height:50px;overflow-y:auto;background:var(--card2);border-radius:16px;padding:6px 12px;font-size:17px}
.log div{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line)}
.log div:last-child{border:0}.log i{font-style:normal;color:#5d6875;font-size:14px}
.log .l{color:var(--grn)}.empty{color:#5d6875;text-align:center;padding:16px 0!important;border:0!important;display:block!important}
.disp{background:var(--card);border-radius:16px;padding:6px 16px;text-align:right;font-size:clamp(28px,9vw,42px);font-weight:700;min-height:1.4em;flex-shrink:0;line-height:1.4;white-space:nowrap;overflow:hidden}
.disp .s{color:var(--grn)}
.keys{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;height:min(33vh,270px);height:min(33dvh,270px);flex-shrink:0}
.op{background:#1f3a2c;color:var(--grn)}.bk{background:#3a2626;color:#ff7a6b;font-size:24px}
.ok{grid-row:span 2;background:var(--yel);color:#111;font-size:26px;font-weight:800}
.z{grid-column:span 2}
.bar{position:fixed;left:0;right:0;bottom:0;z-index:8;display:flex;max-width:520px;margin:0 auto;background:var(--card2);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
.bar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border-radius:10px;font-size:11px;line-height:1.1;font-weight:700;padding:6px 2px;min-height:52px}
.bar button i{font-style:normal;font-size:21px;line-height:1}
.bar button:active{transform:none;background:var(--card)}
#hist{color:var(--blu)}#undo{color:var(--amb)}#calc{color:var(--grn)}#days{color:#b99cff}#reset{color:var(--red)}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.7);display:none;align-items:flex-end;justify-content:center;z-index:9}
.modal.on{display:flex}
.mbox{background:var(--card2);width:100%;max-width:520px;max-height:88dvh;border-radius:20px 20px 0 0;display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom)}
.mhead{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;font-size:20px;border-bottom:1px solid var(--line)}
.mhead button{background:none;font-size:24px;color:var(--mut);padding:0 6px}
.mtab{overflow-y:auto;padding:0 12px 12px}
table{width:100%;border-collapse:collapse;font-size:17px}
th{position:sticky;top:0;background:var(--card2);color:var(--mut);font-size:12px;text-transform:uppercase;font-weight:600;padding:10px 4px;text-align:right}
td{padding:9px 4px;border-bottom:1px solid var(--line);text-align:right}
th:nth-child(-n+2),td:nth-child(-n+2){text-align:left;color:var(--mut)}
td.l{color:var(--grn)}
tfoot td{font-weight:800;color:var(--yel)!important;border:0;position:sticky;bottom:0;background:var(--card2);padding-top:12px}
tfoot td.l{color:var(--grn)!important}
.dt{font-size:14px}.dt th,.dt td{padding:7px 3px}
.rs{padding:8px 4px 16px;font-size:18px}
.rs div{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}
.rs span{color:var(--mut)}.rs b{font-size:24px}
.rs .big{border:0;padding-top:16px}.rs .big b{font-size:34px;color:var(--grn)}
.menu{padding:8px 4px 12px;display:flex;flex-direction:column;gap:10px;font-size:15px}
.mrow{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}
.mrow span{color:var(--mut)}.mrow b{text-align:right;font-weight:600}
.mset{display:flex;align-items:center;gap:8px}.mset span{flex:1;color:var(--mut)}
.mset input{width:70px;font-size:18px;text-align:center;background:var(--card);border:1px solid #2a323c;border-radius:10px;color:#fff;padding:8px}
.mset button,.mbtn{font-size:15px;font-weight:700;padding:11px 14px;background:var(--yel);color:#111;border-radius:12px;text-align:center;text-decoration:none;display:block}
.mbtn.out{background:#262d36;color:var(--red)}
.ref{background:var(--card);border-radius:14px;padding:12px 14px;line-height:1.45;font-size:14px}
.ref b:first-child{color:var(--yel);font-size:16px}.ref p{margin-top:6px;color:#b5bdc8}
.ref p b{color:#fff}

/* ---------- админка ---------- */
.adm{max-width:760px;margin:0 auto;padding:12px 12px 40px}
.adm h1{font-size:22px;display:flex;justify-content:space-between;align-items:center;margin:4px 0 12px}
.adm h1 a{font-size:14px;font-weight:600}
.adm h2{font-size:15px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;margin:22px 0 8px}
.adm button{font-size:15px;font-weight:700;padding:9px 14px;border-radius:10px}
.adm button.y{background:var(--yel);color:#111}
.adm button.r{background:#3a1f24;color:var(--red)}
.flash{background:#15321f;color:var(--grn);border-radius:12px;padding:10px 14px;margin-bottom:10px}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.tile{background:var(--card);border-radius:14px;padding:10px 12px}
.tile small{display:block;color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.tile b{font-size:24px;font-weight:800}
.tile.y b{color:var(--yel)}.tile.g b{color:var(--grn)}.tile.b b{color:var(--blu)}.tile.a b{color:var(--amb)}.tile.r b{color:var(--red)}
.filters{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}
.filters a{white-space:nowrap;background:var(--card);color:var(--mut);text-decoration:none;padding:7px 12px;border-radius:99px;font-size:14px;font-weight:600}
.filters a.on{background:var(--yel);color:#111}
.search{display:flex;gap:6px;margin:10px 0}
.search input{flex:1;font-size:16px;background:var(--card);border:1px solid #2a323c;border-radius:10px;color:#fff;padding:10px 12px;min-width:0}
.ucard{background:var(--card);border-radius:14px;margin-bottom:8px;overflow:hidden}
.ucard summary{list-style:none;cursor:pointer;padding:11px 14px;display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center}
.ucard summary::-webkit-details-marker{display:none}
.ucard .n{font-weight:700;font-size:16px}
.ucard .s{font-size:13px;color:var(--mut);grid-column:1/-1}
.ucard .s b{color:#d3d9e0;font-weight:600}
.ucard .body{border-top:1px solid var(--line);padding:12px 14px;display:flex;flex-direction:column;gap:10px;font-size:14px}
.ucard .info{color:var(--mut);line-height:1.6}.ucard .info b{color:#e4e8ed;font-weight:600}
.frm{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.frm input{font-size:15px;background:var(--card2);border:1px solid #2a323c;border-radius:10px;color:#fff;padding:8px 10px;min-width:0;flex:1}
.frm input[type=date]{flex:none}
.list .row{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--card);border-radius:12px;padding:10px 14px;margin-bottom:6px;font-size:14px}
.list .row small{display:block;color:var(--mut)}
.list .amt{color:var(--yel);font-weight:800;font-size:18px;white-space:nowrap}
.none{color:#5d6875;padding:8px 2px}
@media(max-width:420px){.tiles{grid-template-columns:repeat(2,1fr)}}

.inst{position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:50;display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--yel);border-radius:14px;padding:10px 12px;box-shadow:0 6px 24px #000a}
.inst[hidden]{display:none}
.inst-t{flex:1;display:flex;flex-direction:column;gap:3px;font-size:13px;line-height:1.3}
.inst-t b{color:var(--yel);font-size:14px}.inst-t span{color:var(--mut)}
.inst-t .sh{font-style:normal;color:var(--blu);font-weight:700}
.inst-go{margin-top:6px;align-self:flex-start;background:var(--yel);color:#111;border:0;border-radius:10px;padding:8px 16px;font-weight:700;font-size:14px}
.inst-x{background:none;border:0;color:var(--mut);font-size:18px;padding:6px;align-self:flex-start}
.rs .fuel{align-items:center;gap:12px}
.rs .fuel input{width:120px;font-size:22px;font-weight:700;text-align:right;background:var(--card);border:1px solid #2a323c;border-radius:10px;color:#fff;padding:8px 10px;font-family:inherit;user-select:text}
.rs .fuel input:focus{outline:0;border-color:var(--yel)}
.dt{font-size:13px}.dt th,.dt td{padding:7px 2px}
.dr{cursor:pointer}.dr:active{background:var(--card)}
.hint{text-align:center;color:#5d6875;font-size:12px;padding:10px 0 4px}
.mbtn.back{margin-top:12px;background:#262d36;color:#eef1f4}
.mbtn.inst-btn{background:#1e2c3d;color:var(--blu);border:1px solid #2b4260;width:100%;font-size:15px}
.inst-help{background:var(--card);border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.5;color:#dfe5ec}
.inst-help[hidden]{display:none}.inst-help b{color:var(--yel)}.inst-help small{color:var(--mut)}
.nw{white-space:nowrap}.mrow span{flex:1}
