:root{
  --bg:#eeeae3;
  --card:#f6f2eb;
  --ink:#1c1a16;
  --mute:#5a564d;
  --line:#ddd6cc;
  --brand:#2c332f;
  --acc:#3d5a45;
  --acc2:#d4e0d6;
  --ok:#2f6b45;
  --okbg:#d7e6db;
  --bad:#9a3f3a;
  --badbg:#f3ddda;
  --work:#d4e0d6;
  --work-ink:#1c3226;
  --work-line:#c3d1c6;
  --work-deep:#3d5a45;
  --obj:#d7e3ee;
  --obj-ink:#1b2c3d;
  --obj-line:#c3d0dc;
  --obj-deep:#3d5a72;
  --sklad:#efe0cc;
  --sklad-ink:#3a2c1c;
  --sklad-line:#e0d0b8;
  --sklad-deep:#8a5a32;
  --check:#e8dce8;
  --check-ink:#322430;
  --check-line:#d8ced9;
  --check-deep:#6d4e68;
  --r:16px
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.35 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
.boot{padding:40px;text-align:center;color:var(--mute)}
header.top{position:sticky;top:0;z-index:5;background:var(--brand);color:#fff;padding:calc(env(safe-area-inset-top) + 12px) 16px 12px;display:flex;align-items:center;gap:10px}
header.top .t{font-weight:700;font-size:18px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
header.top .s{font-size:13px;opacity:.75}
header.top img.logo{width:32px;height:32px;border-radius:9px;object-fit:cover;flex:none;background:#3d5a45}
main{padding:14px 14px 110px;max-width:720px;margin:0 auto}
nav.tabs{position:fixed;bottom:0;left:0;right:0;z-index:6;background:#f4f0ea;border-top:1px solid var(--line);display:flex;padding:6px 4px calc(env(safe-area-inset-bottom) + 6px)}
nav.tabs button{flex:1;border:0;background:none;padding:6px 2px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;color:var(--mute);border-radius:12px;min-height:54px}
nav.tabs button .i{font-size:22px;line-height:1}
nav.tabs button.on{font-weight:600}
nav.tabs button.on[data-tab=today],
nav.tabs button.on[data-tab=day],
nav.tabs button.on[data-tab=sum]{color:var(--work-ink);background:var(--work)}
nav.tabs button.on[data-tab=sklad]{color:var(--sklad-ink);background:var(--sklad)}
nav.tabs button.on[data-tab=checks],
nav.tabs button.on[data-tab=check]{color:var(--check-ink);background:var(--check)}
nav.tabs button.on[data-tab=more]{color:var(--brand);background:#e4e0d8}
h2{font-size:20px;margin:6px 2px 12px}
h3{font-size:16px;margin:18px 2px 8px;color:var(--mute);font-weight:600;text-transform:uppercase;letter-spacing:.03em;font-size:13px}
.card{background:var(--card);border-radius:var(--r);padding:14px;margin-bottom:12px;box-shadow:0 1px 2px rgba(40,36,20,.06)}
.row{display:flex;align-items:center;gap:10px}
.row>.grow{flex:1;min-width:0}
.mute{color:var(--mute);font-size:14px}
.big{font-size:22px;font-weight:700}
.btn{border:0;border-radius:14px;min-height:52px;padding:12px 18px;font-weight:600;background:#e6e1d8;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;color:var(--ink)}
.btn.primary{background:var(--acc);color:#fff}
.btn.dark{background:var(--brand);color:#fff}
.btn.ok{background:var(--ok);color:#fff}
.btn.danger{background:var(--badbg);color:var(--bad)}
.btn.block{width:100%}
.btn.sm{min-height:40px;padding:8px 12px;font-size:14px;border-radius:11px}
.btn:disabled{opacity:.45}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:2px solid var(--line);background:var(--card);border-radius:999px;padding:10px 16px;min-height:46px;font-weight:500;cursor:pointer}
.chip.on{border-color:var(--brand);background:var(--brand);color:#fff}
.chip small{opacity:.75;font-size:12px;display:block}
.chips.tone-obj .chip{background:var(--obj);border-color:var(--obj-line);color:var(--obj-ink)}
.chips.tone-obj .chip.on{background:var(--obj-deep);border-color:var(--obj-deep);color:#fff}
.chips.tone-sklad .chip{background:#f6ecde;border-color:var(--sklad-line);color:var(--sklad-ink)}
.chips.tone-sklad .chip.on{background:var(--sklad-deep);border-color:var(--sklad-deep);color:#fff}
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px;background:#e6e1d8;padding:5px;border-radius:14px}
.seg button{border:0;background:none;border-radius:10px;min-height:44px;font-weight:600;color:var(--mute)}
.seg button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px rgba(40,36,20,.08)}
.sec-sum .seg button.on,.sec-today .seg button.on{background:var(--work);color:var(--work-ink);box-shadow:none}
.sec-sklad .seg button.on{background:var(--sklad);color:var(--sklad-ink);box-shadow:none}
.sec-checks .seg button.on{background:var(--check);color:var(--check-ink);box-shadow:none}
.kinds{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.kinds button{border:2px solid var(--line);background:var(--card);border-radius:14px;min-height:72px;font-weight:700;font-size:15px;padding:6px}
.kinds button small{display:block;font-weight:400;color:var(--mute);font-size:12px;margin-top:2px}
.kinds button.on{border-color:var(--work-deep);background:var(--work);color:var(--work-ink)}
label.f{display:block;margin:12px 0 6px;font-size:14px;color:var(--mute);font-weight:500}
input.in,select.in,textarea.in{width:100%;border:2px solid var(--line);border-radius:12px;padding:12px;min-height:50px;background:#faf8f4;font-size:17px}
input.in:focus,select.in:focus,textarea.in:focus{outline:none;border-color:var(--acc)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.status{border-radius:14px;padding:12px 14px;font-weight:600}
.status.ok{background:var(--okbg);color:#1e4a32}
.status.no{background:#f0e4d0;color:#6a4a20}
.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;background:#e6e1d8;color:var(--mute);white-space:nowrap}
.badge.ok{background:var(--okbg);color:#1e4a32}
.badge.half{background:#d5e0ee;color:#1e3a58}
.badge.no{background:#f0e4d0;color:#6a4a20}
.list .it{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.list .it:last-child{border-bottom:0}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.mat{background:var(--sklad);border-radius:var(--r);overflow:hidden;position:relative;box-shadow:0 1px 2px rgba(40,36,20,.06);border:3px solid transparent;cursor:pointer}
.mat.on{border-color:var(--sklad-deep)}
.mat .ph{aspect-ratio:1/1;background:#efe8db center/cover no-repeat}
.mat .nm{padding:8px 10px 2px;font-weight:600;font-size:15px;line-height:1.2;color:var(--sklad-ink)}
.mat .un{padding:0 10px 8px;color:var(--mute);font-size:13px}
.mat .q{position:absolute;top:8px;right:8px;background:var(--sklad-deep);color:#fff;font-weight:800;border-radius:999px;min-width:34px;height:34px;display:grid;place-items:center;padding:0 8px;font-size:16px}
.stepper{display:flex;align-items:center;gap:6px;padding:0 8px 10px}
.stepper button{width:44px;height:44px;border-radius:12px;border:0;background:#e6d8c4;font-size:22px;font-weight:700;color:var(--sklad-ink)}
.stepper input{flex:1;min-width:0;text-align:center;border:2px solid var(--sklad-line);border-radius:10px;height:44px;font-size:18px;font-weight:700;background:#faf8f4}
.cartbar{position:fixed;left:12px;right:12px;bottom:calc(env(safe-area-inset-bottom) + 80px);z-index:7;max-width:696px;margin:0 auto}
.cartbar .btn{box-shadow:0 2px 8px rgba(40,30,20,.18)}
.search{position:relative}
.search input{padding-left:42px}
.search:before{content:"🔍";position:absolute;left:14px;top:13px;font-size:17px;opacity:.6}
.sheet-bg{position:fixed;inset:0;background:rgba(28,26,22,.45);z-index:20;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}
.sheet{background:var(--bg);width:100%;max-width:720px;max-height:92vh;overflow:auto;border-radius:22px 22px 0 0;padding:10px 16px calc(env(safe-area-inset-bottom) + 18px);animation:up .2s}
.sheet .grab{width:44px;height:5px;border-radius:3px;background:#cfc8bc;margin:2px auto 10px}
.sheet .hd{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.sheet .hd h2{flex:1;margin:0}
.x{border:0;background:#e6e1d8;width:40px;height:40px;border-radius:50%;font-size:18px}
@keyframes up{from{transform:translateY(40px);opacity:.4}}
@keyframes fade{from{opacity:0}}
#toast{position:fixed;left:50%;top:calc(env(safe-area-inset-top) + 66px);transform:translateX(-50%);background:var(--brand);color:#fff;padding:12px 18px;border-radius:14px;font-weight:600;z-index:50;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;text-align:center}
#toast.on{opacity:1}
#toast.err{background:var(--bad)}
.rc{background:var(--check);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px rgba(40,36,20,.06);cursor:pointer}
.rc .ph{aspect-ratio:3/4;background:#efe8ef center/cover no-repeat}
.rc .cap{padding:8px 10px;font-size:13px;color:var(--check-ink)}
.rc .cap b{font-size:15px}
.preview{width:100%;max-height:340px;object-fit:contain;border-radius:14px;background:#e6e1d8}
.camera{min-height:120px;font-size:20px;flex-direction:column}
.camera .i{font-size:40px}
table.t{width:100%;border-collapse:collapse;font-size:15px}
table.t th{text-align:left;color:var(--mute);font-weight:600;font-size:13px;padding:6px 4px;border-bottom:1px solid var(--line)}
table.t td{padding:10px 4px;border-bottom:1px solid var(--line)}
table.t td.n,table.t th.n{text-align:right;white-space:nowrap}
.checks{display:flex;gap:10px}
.checks label{flex:1;display:flex;align-items:center;gap:10px;border:2px solid var(--check-line);border-radius:14px;padding:12px;background:var(--check);font-weight:600;min-height:56px;color:var(--check-ink)}
.checks input{width:24px;height:24px;accent-color:var(--check-deep)}
.link{word-break:break-all;font-size:13px;color:var(--mute);background:#efebe4;border-radius:10px;padding:8px 10px;margin-top:6px}
.objcard{background:var(--obj);color:var(--obj-ink)}
.objcard .who{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.center{text-align:center}
.hello{font-size:24px;font-weight:800;margin:4px 2px 2px}
.empty{color:var(--mute);text-align:center;padding:24px 10px}
.take{background:var(--sklad);color:var(--sklad-ink)}
.take .items{margin-top:6px;font-size:15px}

/* v2: нажимаемые цифры, календарь, карточки */
.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
button.stat{border:0;text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;display:block;position:relative;padding:14px 28px 14px 14px;-webkit-appearance:none;appearance:none}
button.stat::after{content:"›";position:absolute;right:12px;top:50%;transform:translateY(-54%);color:var(--mute);font-size:24px;font-weight:400;line-height:1}
.tap{cursor:pointer}
.list .it.tap{border-radius:10px}
.chev{color:var(--mute);font-size:20px;margin-left:2px;font-weight:400}
table.t tr.tap{cursor:pointer}

/* v3: матовые пастельные тона по разделам */
.tone-work,.card.tone-work{background:var(--work);color:var(--work-ink)}
.tone-obj,.card.tone-obj{background:var(--obj);color:var(--obj-ink)}
.tone-sklad,.card.tone-sklad{background:var(--sklad);color:var(--sklad-ink)}
.tone-check,.card.tone-check{background:var(--check);color:var(--check-ink)}
.tone-more,.card.tone-more{background:#eae6de;color:var(--ink)}
[data-stat=worked],
[data-stat=hours],
[data-stat=sum-days],
[data-stat=sum-hours],
[data-stat=absent]{background:var(--work);color:var(--work-ink)}
[data-stat=takes],
[data-stat=takes-period]{background:var(--sklad);color:var(--sklad-ink)}
[data-stat=receipts],
[data-stat=receipts-period]{background:var(--check);color:var(--check-ink)}
[data-stat=worked]:active,
[data-stat=hours]:active,
[data-stat=sum-days]:active,
[data-stat=sum-hours]:active,
[data-stat=absent]:active,
.tone-work .it.tap:active{background:var(--work-line)}
[data-stat=takes]:active,
[data-stat=takes-period]:active,
.tone-sklad .it.tap:active{background:var(--sklad-line)}
[data-stat=receipts]:active,
[data-stat=receipts-period]:active,
.tone-check .it.tap:active{background:var(--check-line)}
.objcard.tap:active{background:var(--obj-line)}
.list .it.tap:active{background:#efebe4}
table.t tr.tap:active td{background:#efebe4}
.tone-work .list .it,.tone-obj .list .it,.tone-sklad .list .it,.tone-check .list .it{border-bottom-color:rgba(28,26,22,.1)}
.sheet:has([data-sheet=worked]),
.sheet:has([data-sheet=absent]),
.sheet:has([data-sheet=hours]),
.sheet:has([data-sheet=worker-days]){background:#e7ece8}
.sheet:has([data-sheet=takes]),
.sheet:has([data-sheet=cart]){background:#f3ebe0}
.sheet:has([data-sheet=object-people]){background:#e8eef3}
.sheet:has([data-sheet=receipt]),
.sheet:has([data-sheet=receipts]){background:#efeaf0}
[data-sheet=worked],[data-sheet=absent],[data-sheet=hours],[data-sheet=worker-days]{background:var(--work);color:var(--work-ink)}
[data-sheet=takes],[data-sheet=cart]{background:var(--sklad);color:var(--sklad-ink)}
[data-sheet=object-people]{background:var(--obj);color:var(--obj-ink)}
[data-sheet=receipt],[data-sheet=receipts]{background:var(--check);color:var(--check-ink)}

.dayhead{margin:2px 2px 12px}
.dayhead .when{font-weight:800;font-size:20px}

.cal{background:var(--work);border-radius:var(--r);padding:8px 6px 10px;margin-bottom:12px;box-shadow:0 1px 2px rgba(40,36,20,.06)}
.cal .ch{display:flex;align-items:center;gap:4px;margin-bottom:2px;padding:0 2px;min-height:36px}
.cal .ch .tit{flex:1;font-weight:700;font-size:15px;text-align:center;text-transform:capitalize;border:0;background:none;padding:6px 4px;color:var(--work-ink);line-height:1.2}
.cal .ch .btn.sm{min-width:40px;min-height:36px;padding:4px 8px;font-size:22px;font-weight:600;background:var(--work-line);color:var(--work-ink);flex:none;line-height:1}
.cal .wdrow,.cal .days{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}
.cal .wd{font-size:11px;color:var(--mute);font-weight:600;padding:0 0 4px}
.cal .d{position:relative;border:0;background:none;height:36px;border-radius:10px;font-weight:600;font-size:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--work-ink);cursor:pointer;padding:0 0 5px;-webkit-appearance:none;appearance:none}
.cal .d.muted{color:#546058}
.cal .d.today:not(.on){box-shadow:inset 0 0 0 2px var(--work-deep)}
.cal .d.on{background:var(--work-deep);color:#fff}
.cal .d .dot{width:4px;height:4px;border-radius:50%;background:var(--work-deep);position:absolute;bottom:4px;display:block}
.cal .d.on .dot{background:#fff}
.cal .d:active{background:var(--work-line)}
.cal .d.on:active{background:var(--work-deep)}
.cal .tools{display:flex;gap:8px;margin-top:8px;padding:0 4px;align-items:center}
.cal .tools .grow{flex:1}

.photo-prev{width:140px;height:140px;border-radius:16px;flex:none;background:#e6e1d8 center/cover no-repeat;border:2px dashed var(--line)}
.photo-prev.has{border-style:solid;border-color:transparent}
.mat .ph{background-color:#efe8db;background-size:cover;background-position:center;background-repeat:no-repeat}

.cal .ch .tit .arr{color:var(--mute);font-weight:500;margin-left:4px;text-transform:none}
.chips.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:8px -14px 12px;padding:2px 14px 8px}
.chips.scroll::-webkit-scrollbar{display:none}
.chips.scroll .chip{flex:none;white-space:nowrap}

/* v4: language switcher + longer FR labels at 390px */
.langs{display:inline-flex;gap:2px;background:rgba(255,255,255,.14);border-radius:10px;padding:2px;flex:none}
.langs button{border:0;background:none;color:#fff;opacity:.72;font-weight:700;font-size:12px;letter-spacing:.03em;min-height:32px;min-width:36px;padding:4px 8px;border-radius:8px;cursor:pointer}
.langs button.on{background:#fff;color:var(--brand);opacity:1}
.langs.light{background:#e6e1d8}
.langs.light button{color:var(--mute);opacity:1}
.langs.light button.on{background:var(--brand);color:#fff}
nav.tabs button{font-size:11px;line-height:1.15;padding:6px 1px;white-space:normal;text-align:center;overflow:visible}
.seg button{font-size:13px;padding:6px 4px;line-height:1.15;white-space:normal}
.kinds button{font-size:13px;line-height:1.2;white-space:normal;overflow-wrap:break-word}
.btn{white-space:normal;text-align:center;line-height:1.25;overflow-wrap:break-word}
button.stat .mute{white-space:normal}
.badge{max-width:100%}
.cal .wd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* v5: landing, auth, admin, install banner, suspended */
.brand-link{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none;min-width:0;flex:1}
.brand-link .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.landing,.auth{max-width:520px;margin:0 auto;padding:8px 4px 48px}
.landing h1{font-size:1.7rem;line-height:1.25;margin:6px 0 12px;font-weight:800;letter-spacing:-.02em;overflow-wrap:break-word}
.landing .kicker{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--acc);margin:18px 2px 0}
.landing .lede{margin:0 2px 22px;line-height:1.5;color:var(--mute);overflow-wrap:break-word}
.hero-btns{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}
.hero-btns .btn{text-decoration:none}
.feats{list-style:none;padding:0;margin:0 0 24px;display:flex;flex-direction:column;gap:10px}
.feats li{padding:12px 14px 12px 40px;background:var(--work,#d4e0d6);border-radius:14px;position:relative;line-height:1.4;overflow-wrap:break-word}
.feats li::before{content:"✓";position:absolute;left:14px;top:12px;font-weight:800;color:var(--acc)}
.get-key{margin:8px 2px;text-align:center}
.get-key a{font-weight:700;color:var(--acc);text-decoration:underline}
.contact a{color:inherit}
.auth .card{padding:20px}
.auth a{color:var(--acc);font-weight:600;text-decoration:none}
.key-in{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em;text-transform:uppercase}
.suspended .big{color:#7a3b3b}
.suspended p{line-height:1.5;margin:10px 0}

.install-banner{position:fixed;left:12px;right:12px;bottom:calc(72px + env(safe-area-inset-bottom,0px));z-index:40;background:#fff;border:1px solid var(--line,#ddd);border-radius:16px;padding:12px 14px;box-shadow:0 10px 28px rgba(40,50,40,.16);display:flex;flex-wrap:wrap;gap:10px;align-items:center}
body:not([data-tab]) .install-banner{bottom:calc(16px + env(safe-area-inset-bottom,0px))}
.ib-text{flex:1 1 160px;min-width:0;display:flex;flex-direction:column;gap:2px}
.ib-text b{font-size:14px}
.ib-text span{font-size:12px;color:var(--mute);line-height:1.35;overflow-wrap:break-word}
.install-banner .ghost{background:transparent;border:0;font-size:20px;min-width:36px;min-height:36px;color:var(--mute)}
.ios-steps{display:flex;align-items:center;gap:8px;flex:1 1 100%;padding-top:2px}
.ios-step{display:flex;align-items:center;gap:6px;background:#f3f0ea;border-radius:10px;padding:6px 10px;font-size:12px;font-weight:600}
.ios-step em{font-style:normal}
.ios-arrow{opacity:.5;font-weight:700}
.ios-glyph{width:22px;height:22px;flex:none;color:var(--acc)}

.admin{max-width:860px;margin:0 auto;padding:8px 4px 64px}
.admin h2{font-size:1.1rem;margin:24px 2px 12px}
.admin-list{display:flex;flex-direction:column;gap:12px}
.admin-card{background:#fff;border:1px solid var(--line,#ddd);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.admin-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;flex-wrap:wrap}
.admin-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.admin-acts .btn{min-height:36px}
.key-show{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;letter-spacing:.03em;background:#f3f0ea;padding:8px 10px;border-radius:8px;word-break:break-all;cursor:pointer}
.key-show.sm{font-size:13px;padding:4px 8px}
.issued{margin-top:16px;padding:12px;border-radius:12px;background:var(--work,#d4e0d6)}
.issued .key-show{margin:8px 0;font-size:16px}
.pill{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:#e6e1d8}
.pill.active{background:#d4e0d6;color:#2c332f}
.pill.unused{background:#e8eef6;color:#2a3a55}
.pill.blocked,.pill.revoked,.pill.expired{background:#f3d9d6;color:#6a2a2a}
.admin-card.st-blocked,.admin-card.st-revoked,.admin-card.st-expired{opacity:.92}
.in.sm{min-height:36px;padding:6px 8px;font-size:14px}
@media(min-width:720px){
  .landing h1{font-size:2.1rem}
  .hero-btns{flex-direction:row}
  .hero-btns .btn{flex:1}
}
