body,html{overscroll-behavior:none}.app,body,html{height:100%;overflow:hidden}.app>.appbar{position:-webkit-sticky;position:sticky;top:0;z-index:40;background:var(--paper);padding-top:calc(9px + env(safe-area-inset-top))}.app>.appbar.dark{background:var(--ink);padding-top:calc(13px + env(safe-area-inset-top))}.app>.tabbar{position:-webkit-sticky;position:sticky;bottom:0;z-index:40}@media (min-width:768px){.app{max-width:720px}.app>.body{padding-left:24px;padding-right:24px}}@media (min-width:1100px){.app{max-width:860px}}.shopgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.app>.auth,.app>.body{flex:1 1 auto;min-height:0;overflow-y:auto}.app>.body{padding-bottom:20px}.app a{text-decoration:none}.cfm-wrap{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-end;justify-content:center}.cfm-back{position:absolute;inset:0;background:rgba(16,42,67,.45)}.cfm{position:relative;width:100%;max-width:440px;background:#fff;border-radius:22px 22px 0 0;padding:20px 18px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -12px 40px rgba(16,42,67,.25);animation:cfmUp .24s cubic-bezier(.22,.7,.3,1);text-align:center}@media (min-width:520px){.cfm-wrap{align-items:center;padding:20px}.cfm{border-radius:22px;padding-bottom:18px}}@keyframes cfmUp{0%{transform:translateY(40px);opacity:0}}.cfm-ic{width:46px;height:46px;margin:0 auto 10px;border-radius:15px;display:grid;place-items:center;background:var(--accent-soft,#e3f4fd);color:var(--accent-press,#0f8fd0)}.cfm-ic.danger{background:var(--disc-bg,#fdeaee);color:var(--disc,#e2446a)}.cfm-ic svg{width:24px;height:24px}.cfm h3{margin:0 0 6px;font-size:15.5px;font-weight:800;color:var(--ink)}.cfm p{margin:0 0 16px;font-size:12.5px;font-weight:600;color:var(--muted);line-height:1.9}.cfm-acts{display:flex;gap:10px;margin-top:14px}.cfm-acts button{flex:1 1;border:0;font-family:var(--font);font-weight:800;font-size:13.5px;padding:12px 10px;border-radius:13px;cursor:pointer;transition:.14s}.cfm-acts button:active{transform:scale(.97)}.cfm-cancel{background:var(--paper);border:1px solid var(--line)!important;color:var(--ink)}.cfm-ok{background:var(--accent);color:#fff}.cfm-ok.danger{background:var(--disc,#e2446a)}.cqty.row{flex-direction:row;padding:4px;gap:8px}.cqty.row span{min-width:22px;text-align:center}