:root{--brown: #6f4e37;--brown-dark: #54382a;--cream: #faf6f0;--cream-2: #f1e9dd;--ink: #2d2a26;--muted: #8a8177;--wechat: #07c160;--alipay: #1677ff;--danger: #d9483b;--ok: #1f9d55;--card: #ffffff;--radius: 16px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;background:var(--cream);color:var(--ink);overscroll-behavior:none}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:16px;padding:10px 20px;background:var(--brown);color:#fff;flex-shrink:0}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:20px}.brand .en{font-weight:500;opacity:.75;font-size:13px;letter-spacing:2px}.tabs{display:flex;gap:8px;margin-left:auto}.tabs button{border:none;cursor:pointer;font-size:16px;padding:10px 22px;border-radius:999px;background:#ffffff24;color:#fff;font-weight:600}.tabs button.on{background:#fff;color:var(--brown)}.mock-badge{font-size:12px;padding:4px 10px;border-radius:999px;background:#ffd66b;color:#7a5200;font-weight:700}.logout-btn{border:1px solid rgba(255,255,255,.35);background:transparent;color:#fff;font-size:13px;padding:6px 14px;border-radius:999px;cursor:pointer}.logout-btn:hover{background:#ffffff1f}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#6f4e37,#54382a 55%,#3d2a1f)}.login-card{width:360px;max-width:92vw;background:#fff;border-radius:20px;padding:34px 32px 30px;box-shadow:0 20px 60px #00000059;display:flex;flex-direction:column}.login-logo{font-size:44px;text-align:center}.login-card h2{margin:8px 0 2px;text-align:center;color:var(--brown-dark)}.login-sub{text-align:center;color:var(--muted);font-size:12px;letter-spacing:3px;margin-bottom:22px}.login-card label{font-size:13px;color:var(--muted);margin:10px 0 5px}.login-card input{font-size:16px;padding:12px 14px;border-radius:12px;border:1.5px solid var(--cream-2);outline:none}.login-card input:focus{border-color:var(--brown)}.login-err{margin-top:12px;font-size:13px;color:var(--danger);background:#fdecea;border-radius:10px;padding:9px 12px}.login-card .btn-primary{margin-top:18px}.cashier{display:flex;flex:1;min-height:0}.menu-area{flex:1;overflow-y:auto;padding:16px 18px 90px}.cat-tabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}.cat-tabs button{border:1.5px solid var(--cream-2);background:var(--card);color:var(--ink);font-size:15px;font-weight:600;padding:10px 20px;border-radius:999px;cursor:pointer}.cat-tabs button.on{background:var(--brown);border-color:var(--brown);color:#fff}.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.menu-card{background:var(--card);border-radius:var(--radius);padding:14px 12px;text-align:center;cursor:pointer;border:1.5px solid transparent;box-shadow:0 1px 3px #503c1e14;transition:transform .06s ease,border-color .12s;-webkit-user-select:none;user-select:none}.menu-card:active{transform:scale(.96);border-color:var(--brown)}.menu-card .emoji{font-size:40px;line-height:1.15}.menu-img{width:100%;height:78px;object-fit:cover;border-radius:10px;display:block}.menu-card .name{font-size:16px;font-weight:700;margin-top:6px}.menu-card .en{font-size:11px;color:var(--muted);letter-spacing:.5px}.menu-card .price{margin-top:6px;color:var(--brown);font-weight:800;font-size:16px}.cart{width:340px;flex-shrink:0;display:flex;flex-direction:column;background:var(--card);border-left:1px solid var(--cream-2)}.cart h3{margin:0;padding:14px 16px;font-size:16px;color:var(--brown-dark);border-bottom:1px solid var(--cream-2)}.cart-list{flex:1;overflow-y:auto;padding:8px 12px}.cart-empty{color:var(--muted);text-align:center;margin-top:60px;font-size:14px}.cart-item{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px dashed var(--cream-2)}.cart-item .info{flex:1;min-width:0}.cart-item .nm{font-weight:700;font-size:15px}.cart-item .sub{font-size:12px;color:var(--muted);margin-top:2px}.qty-ctl{display:flex;align-items:center;gap:8px}.qty-ctl button{width:34px;height:34px;border-radius:10px;border:1.5px solid var(--cream-2);background:#fff;font-size:18px;font-weight:700;color:var(--brown);cursor:pointer}.qty-ctl .q{min-width:22px;text-align:center;font-weight:700}.cart-foot{padding:14px 16px 16px;border-top:1px solid var(--cream-2)}.cart-total{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}.cart-total .amt{font-size:28px;font-weight:800;color:var(--brown)}.btn-primary{width:100%;border:none;cursor:pointer;background:var(--brown);color:#fff;font-size:18px;font-weight:700;padding:16px;border-radius:14px}.btn-primary:disabled{background:#cbbfb2;cursor:not-allowed}.btn-ghost{width:100%;border:1.5px solid var(--cream-2);background:#fff;color:var(--muted);font-size:14px;padding:10px;border-radius:12px;cursor:pointer;margin-top:8px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#281c0f73;display:flex;align-items:center;justify-content:center;z-index:50}.sheet{background:#fff;border-radius:20px;padding:22px;width:360px;max-width:92vw;box-shadow:0 12px 40px #0000002e}.sheet h3{margin:0 0 14px;font-size:18px}.opt-row{margin-bottom:12px}.opt-row .lbl{font-size:13px;color:var(--muted);margin-bottom:6px}.chips{display:flex;gap:8px;flex-wrap:wrap}.chips button{padding:10px 18px;border-radius:12px;border:1.5px solid var(--cream-2);background:#fff;font-size:15px;cursor:pointer}.chips button.on{border-color:var(--brown);background:#f4ece2;color:var(--brown-dark);font-weight:700}.pay-sheet{width:480px;max-width:94vw;text-align:center}.pay-order-no{color:var(--muted);font-size:13px;letter-spacing:1px}.pay-amount{font-size:54px;font-weight:800;color:var(--brown);margin:8px 0 2px}.pay-amount small{font-size:20px}.pay-items{color:var(--muted);font-size:13px;margin-bottom:18px;max-height:56px;overflow:hidden}.scan-box{border:2px dashed var(--cream-2);border-radius:14px;padding:16px;background:var(--cream);text-align:left}.scan-box .hint{font-size:13px;color:var(--muted);margin-bottom:8px}.scan-input{width:100%;font-size:22px;padding:12px 14px;border-radius:10px;border:2px solid var(--cream-2);font-family:ui-monospace,Consolas,monospace;letter-spacing:2px;outline:none}.scan-input:focus{border-color:var(--brown)}.channel-badge{display:inline-block;margin-top:10px;font-size:14px;font-weight:700;padding:5px 14px;border-radius:999px;color:#fff}.channel-badge.wechat{background:var(--wechat)}.channel-badge.alipay{background:var(--alipay)}.pay-status{padding:28px 0 10px}.pay-status .big{font-size:56px}.pay-status .msg{font-size:17px;font-weight:700;margin-top:10px}.pay-status .sub{font-size:13px;color:var(--muted);margin-top:6px}.spinner{width:44px;height:44px;margin:0 auto;border-radius:50%;border:5px solid var(--cream-2);border-top-color:var(--brown);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pay-actions{display:flex;gap:10px;margin-top:18px}.pay-actions button{flex:1;padding:13px;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer}.btn-danger{background:#fff;border:1.5px solid #f0c6c2;color:var(--danger)}.btn-ok{background:var(--brown);border:none;color:#fff}.mock-tools{margin-top:14px;border-top:1px dashed var(--cream-2);padding-top:12px}.mock-tools .t{font-size:12px;color:var(--muted);margin-bottom:8px}.mock-tools .row{display:flex;gap:8px}.mock-tools button{flex:1;font-size:12.5px;padding:9px 4px;border-radius:10px;border:1.5px solid var(--cream-2);background:#fff;cursor:pointer;color:var(--ink)}.page{flex:1;overflow-y:auto;padding:18px 22px 60px}.summary-cards{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.scard{background:var(--card);border-radius:var(--radius);padding:14px 20px;min-width:150px;box-shadow:0 1px 3px #503c1e14}.scard .k{font-size:12.5px;color:var(--muted)}.scard .v{font-size:24px;font-weight:800;margin-top:4px}.scard .v.wx{color:var(--wechat)}.scard .v.ali{color:var(--alipay)}table.orders-tb{width:100%;border-collapse:collapse;background:var(--card);border-radius:var(--radius);overflow:hidden}.orders-tb th,.orders-tb td{padding:10px 12px;text-align:left;font-size:14px;border-bottom:1px solid var(--cream-2)}.orders-tb th{background:var(--cream-2);color:var(--brown-dark);font-size:13px}.st{font-size:12.5px;font-weight:700;padding:3px 10px;border-radius:999px}.st.paid{background:#e2f4ea;color:var(--ok)}.st.created{background:#fff4dc;color:#a4700a}.st.cancelled{background:#eee;color:#888}.st.refunded{background:#fde8e6;color:var(--danger)}.chip-wx{color:var(--wechat);font-weight:700}.chip-ali{color:var(--alipay);font-weight:700}.row-actions button{font-size:12.5px;padding:6px 12px;border-radius:8px;border:1px solid var(--cream-2);background:#fff;cursor:pointer;margin-right:6px}.row-actions button.ref{color:var(--danger);border-color:#f0c6c2}.date-bar{display:flex;align-items:center;gap:10px;margin-bottom:14px}.date-bar input{font-size:15px;padding:8px 12px;border-radius:10px;border:1.5px solid var(--cream-2)}.admin-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.admin-bar .btn-new{background:var(--brown);color:#fff;border:none;font-size:15px;font-weight:700;padding:11px 22px;border-radius:12px;cursor:pointer}.admin-thumb{width:44px;height:32px;object-fit:cover;border-radius:6px;display:block}.admin-thumb.big{width:84px;height:60px;border-radius:10px}.admin-thumb.big.empty{display:flex;align-items:center;justify-content:center;font-size:30px;background:var(--cream)}.img-upload-row{display:flex;gap:14px;align-items:center}.upload-btn{font-size:13px;padding:8px 16px;border-radius:10px;cursor:pointer;border:1.5px solid var(--cream-2);background:#fff;color:var(--ink)}.upload-btn:disabled{opacity:.5;cursor:wait}.upload-btn.remove{color:var(--danger);border-color:#f0c6c2}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;text-align:left}.form-grid .full{grid-column:1 / -1}.form-grid label{font-size:13px;color:var(--muted);display:block;margin-bottom:4px}.form-grid input,.form-grid select{width:100%;font-size:15px;padding:10px 12px;border-radius:10px;border:1.5px solid var(--cream-2)}.form-actions{display:flex;gap:10px;margin-top:18px}.form-actions button{flex:1;padding:13px;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer}@media (max-width: 860px){.cart{width:280px}.pay-amount{font-size:44px}}
