:root{--paper: #f6f1e7;--paper-2: #efe7d6;--card: #fffdf8;--ink: #1f2a20;--ink-60: rgba(31, 42, 32, .6);--ink-40: rgba(31, 42, 32, .4);--green: #3d6b4f;--green-deep: #2b4e39;--accent: #e85d2f;--accent-deep: #c7491f;--amber: #dd9a2b;--line: #d9cfbb;--serif: "Noto Serif SC", serif;--sans: "Noto Sans SC", sans-serif;--num: "Fraunces", serif;--mono: "IBM Plex Mono", monospace}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-tap-highlight-color:transparent}body{background:var(--paper-2);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit;border:none;outline:none;background:transparent}a{color:inherit;text-decoration:none}.app-shell{max-width:420px;margin:0 auto;min-height:100dvh;background:var(--paper);position:relative;box-shadow:0 0 60px #1f2a201f}@media (min-width: 768px){body{padding:32px 0}.app-shell{min-height:calc(100dvh - 64px);border-radius:28px;overflow:hidden}.app-shell .page{min-height:calc(100dvh - 64px)}}.h-serif{font-family:var(--serif);font-weight:900}.mono{font-family:var(--mono)}.page{min-height:100dvh;display:flex;flex-direction:column;padding-bottom:96px}.page-body{flex:1;padding:0 18px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px 4px}.topbar .title{font-family:var(--serif);font-weight:900;font-size:22px}.receipt{background:var(--card);border:1px solid var(--line);position:relative;padding:4px 14px 14px}.receipt.sawtooth:after{content:"";position:absolute;left:0;right:0;bottom:-10px;height:11px;background:linear-gradient(-45deg,var(--card) 7px,transparent 0) 0 0/14px 11px repeat-x,linear-gradient(45deg,var(--card) 7px,transparent 0) 0 0/14px 11px repeat-x}.receipt-head{display:flex;justify-content:space-between;align-items:center;padding:10px 2px;border-bottom:1.5px solid var(--ink)}.receipt-head .t{font-family:var(--serif);font-weight:900;font-size:15px}.receipt-head .m{font-family:var(--mono);font-size:9px;letter-spacing:.18em;color:var(--ink-40)}.barcode{height:22px;margin-top:10px;background:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 5px,var(--ink) 5px 6px,transparent 6px 10px);opacity:.7}.receipt-no{font-family:var(--mono);font-size:8.5px;letter-spacing:.26em;color:var(--ink-40);text-align:center;margin-top:6px}.item-row{display:flex;align-items:center;gap:11px;padding:12px 2px;border-bottom:1px dashed var(--line)}.item-row:last-child{border-bottom:none}.item-thumb{width:46px;height:46px;border-radius:11px;object-fit:cover;border:1px solid var(--line);background:var(--paper-2);flex:none;display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:18px;color:var(--green-deep)}.item-info{flex:1;min-width:0}.item-name{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}a.item-name{cursor:pointer}a.item-name:active{opacity:.6}.item-meta{font-size:10.5px;color:var(--ink-60);margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.item-price{font-family:var(--num);font-weight:700;font-size:14px;text-align:right;flex:none}.item-price small{font-size:10px;font-weight:500}.item-right{display:flex;align-items:center;gap:10px;flex:none}.checked .item-name{text-decoration:line-through;text-decoration-color:var(--ink-40);color:var(--ink-40)}.checked .item-price{color:var(--ink-40)}.postponed-pill{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--green-deep);background:#3d6b4f14;border-radius:6px;padding:2px 7px;margin-top:4px}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:99px;font-size:10px;letter-spacing:.04em;border:1px solid var(--line);background:var(--card);color:var(--ink-60);white-space:nowrap}.chip.acc{border-color:#e85d2f66;background:#e85d2f14;color:var(--accent-deep)}.chip.amb{border-color:#dd9a2b73;background:#dd9a2b1f;color:#8f5f13}.chip.grn{border-color:#3d6b4f66;background:#3d6b4f14;color:var(--green-deep)}.due-red{color:var(--accent)}.soon-amber{color:var(--amber)}.check-circle{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--ink-40);display:grid;place-items:center;flex:none;transition:transform .18s ease,background .18s ease,border-color .18s ease}.check-circle:active{transform:scale(.85)}.check-circle.hot{border-color:var(--accent);color:var(--accent)}.check-circle.done{background:var(--green);border-color:var(--green);color:var(--card)}.group-head{display:flex;align-items:baseline;gap:8px;margin:18px 2px 8px;font-family:var(--mono);font-size:10px;letter-spacing:.24em;color:var(--ink-60)}.group-head .n{font-family:var(--num);font-size:13px;font-weight:900;letter-spacing:0}.group-head.late{color:var(--accent)}.group-head.soon{color:var(--amber)}.field{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:11px 13px;display:flex;align-items:center;gap:8px;width:100%}.field label{font-size:10px;color:var(--ink-40);letter-spacing:.1em;flex:none}.field input,.field textarea{flex:1;min-width:0;font-size:13px}.btn{display:flex;align-items:center;justify-content:center;gap:8px;border-radius:15px;padding:14px;font-weight:700;font-size:14px;letter-spacing:.12em;width:100%;transition:transform .15s ease,opacity .15s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5}.btn-primary{background:var(--ink);color:var(--paper)}.btn-accent{background:var(--accent);color:#fff4ec}.btn-ghost{border:1px dashed var(--line);background:var(--card);color:var(--ink-60);font-weight:500;letter-spacing:.02em}.cycle-row{display:flex;gap:8px;flex-wrap:wrap}.cycle{padding:7px 14px;border-radius:12px;border:1px solid var(--line);background:var(--card);font-size:12px;color:var(--ink-60)}.cycle.on{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:700}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:420px;display:flex;justify-content:space-around;align-items:center;background:var(--card);border-top:1px dashed var(--line);padding:9px 8px calc(12px + env(safe-area-inset-bottom));z-index:40}.tab{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10px;letter-spacing:.1em;color:var(--ink-40);min-width:52px;position:relative}.tab.active{color:var(--ink)}.tab .dot{width:4px;height:4px;border-radius:50%}.tab.active .dot{background:var(--accent)}.fab{width:52px;height:52px;border-radius:50%;background:var(--accent);color:var(--card);display:grid;place-items:center;margin-top:-26px;box-shadow:0 10px 22px -6px #e85d2f8c,0 0 0 5px var(--paper);transition:transform .18s ease}.fab:active{transform:scale(.92)}.dark-card{background:var(--ink);color:var(--paper);border-radius:22px;padding:18px;display:flex;align-items:center;gap:16px}.ring{position:relative;width:64px;height:64px;flex:none}.ring svg{transform:rotate(-90deg)}.ring .v{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--num);font-weight:900;font-size:17px;line-height:1.1}.ring .v small{font-size:9px;font-family:var(--sans);font-weight:500;color:#f6f1e7a6;display:block;text-align:center}.sheet-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f2a2073;z-index:60;display:flex;align-items:flex-end;justify-content:center;animation:fade .2s ease}.sheet{width:100%;max-width:420px;background:var(--paper);border-radius:24px 24px 0 0;padding:18px 18px calc(20px + env(safe-area-inset-bottom));max-height:86dvh;overflow-y:auto;animation:up .25s cubic-bezier(.19,1,.22,1)}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translateY(60px);opacity:.4}}.toast{position:fixed;bottom:110px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--paper);font-size:12.5px;padding:10px 18px;border-radius:99px;z-index:90;white-space:nowrap;animation:fade .2s ease;box-shadow:0 10px 30px -10px #1f2a2080}.empty{text-align:center;color:var(--ink-40);font-size:12px;padding:36px 0;line-height:2}.spin{display:inline-block;width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:rot .8s linear infinite}@keyframes rot{to{transform:rotate(360deg)}}.coupon{position:relative;background:var(--card);border:1px solid var(--line);margin:4px 0 0;overflow:hidden}.coupon:before,.coupon:after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:var(--paper);border:1px solid var(--line);top:50%;transform:translateY(-50%);z-index:1}.coupon:before{left:-9px}.coupon:after{right:-9px}.coupon-inner{border-bottom:1.5px dashed var(--line);padding:14px 16px;display:flex;align-items:center;gap:14px}.coupon-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px}.code{font-family:var(--mono);font-weight:500;font-size:18px;letter-spacing:.14em;color:var(--ink)}.mini-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 13px;border-radius:9px;font-size:11.5px;font-weight:700;letter-spacing:.04em;line-height:1;transition:transform .15s ease,opacity .15s ease,background .15s ease,border-color .15s ease}.mini-btn:active{transform:scale(.95)}.mini-btn-primary{background:var(--green-deep);color:#f2eee2}.mini-btn-primary:hover{opacity:.88}.mini-btn-ghost{border:1px solid rgba(232,93,47,.45);color:var(--accent-deep);background:transparent;font-weight:500}.mini-btn-ghost:hover{background:#e85d2f14}@media (prefers-color-scheme: dark){:root{--paper: #141b15;--paper-2: #10160f;--card: #1c261e;--ink: #ede7d8;--ink-60: rgba(237, 231, 216, .62);--ink-40: rgba(237, 231, 216, .4);--green: #4d8262;--green-deep: #22382b;--accent: #f0703f;--accent-deep: #f0703f;--amber: #e5aa42;--line: #2c3830}.app-shell{box-shadow:0 0 60px #00000080}.postponed-pill{background:#4d826229}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
