:root{color-scheme:light;--ink:#352c27;--muted:#8c7769;--paper:#fffaf5;--card:#fff;--peach:#f3dcc5;--orange:#d97648;--orange-dark:#b95e35;--line:#f0e5dc;--danger:#bd584d}*{box-sizing:border-box}html{background:#f1ece7}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);min-height:100vh}.app-shell{width:min(100%,520px);margin:0 auto;min-height:100vh;padding-bottom:max(40px,env(safe-area-inset-bottom));background:var(--paper)}button,input,select{font:inherit}.hero{position:relative;overflow:hidden;padding:calc(22px + env(safe-area-inset-top)) 24px 31px;background:linear-gradient(145deg,#f8e9d9 0%,#f1d4b8 100%);border-radius:0 0 36px 36px}.hero:after{content:"";position:absolute;width:180px;height:180px;right:-80px;top:45px;border:1px solid rgba(177,112,72,.16);border-radius:50%;box-shadow:0 0 0 24px rgba(255,255,255,.09),0 0 0 48px rgba(255,255,255,.06)}.topline{position:relative;z-index:1;display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:1.8px;color:#90684e}.brand-dot{width:8px;height:8px;background:var(--orange);border-radius:50%}.link-button{margin-left:auto;border:0;background:transparent;color:#9f755b;font-size:12px;letter-spacing:0}.hero h1{position:relative;z-index:1;margin:24px 0 26px;font-size:37px;line-height:1.2;letter-spacing:-1.5px}.hero h1 em{font-style:normal;color:var(--orange-dark)}.progress-copy{display:flex;justify-content:space-between;align-items:center;color:#735f52;font-size:13px}.progress-copy strong{font-size:17px;color:#a95e3d}.progress-track{height:9px;margin-top:11px;background:rgba(255,255,255,.63);border-radius:10px;overflow:hidden}.progress-bar{height:100%;width:0;background:linear-gradient(90deg,#dc8d5f,#ce663c);border-radius:10px;transition:width .35s ease}.quick-actions{display:grid;grid-template-columns:1.35fr .8fr;gap:11px;padding:20px 18px 16px}.quick-actions button,.primary-action{display:flex;justify-content:center;align-items:center;height:50px;border-radius:17px;border:0;font-weight:650;font-size:14px;cursor:pointer}.primary-action{background:var(--orange);color:#fff;box-shadow:0 8px 20px rgba(197,102,59,.23)}.secondary-action{background:#f8ebde;color:#9c5939}.section-heading{display:flex;align-items:end;justify-content:space-between;padding:9px 21px 12px}.section-heading h2{margin:4px 0 0;font-size:24px}.eyebrow{font-size:9px;letter-spacing:1.8px;color:#a4775c}.muted{font-size:12px;color:var(--muted)}.category-list{padding:0 17px}.category-card{background:var(--card);border:1px solid rgba(226,207,192,.52);border-radius:24px;padding:18px 17px 13px;margin-bottom:14px;box-shadow:0 8px 28px rgba(92,62,42,.055)}.category-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.category-title{display:flex;align-items:center;gap:10px}.category-icon{display:grid;place-items:center;width:35px;height:35px;border-radius:12px;background:#fff1e4;font-size:17px}.category-title h3{font-size:17px;margin:0}.category-title small{display:block;margin-top:2px;color:var(--muted);font-size:10px;font-weight:400}.category-menu{border:0;background:transparent;color:#a98e7c;font-size:18px;padding:8px}.item-row{display:flex;align-items:center;min-height:56px;border-top:1px solid var(--line);cursor:pointer}.check{display:grid;place-items:center;flex:0 0 23px;width:23px;height:23px;border:1.5px solid #dfb28f;border-radius:50%;color:#fff;font-size:14px;transition:.18s}.check.checked{background:var(--orange);border-color:var(--orange);transform:scale(.96)}.item-copy{flex:1;min-width:0;padding:11px 12px}.item-name{font-size:14px;font-weight:560}.item-name.done{text-decoration:line-through;color:#af9f95}.quantity{color:#b06b4c;font-size:12px}.item-note{margin-top:4px;color:#a08a7c;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chevron{color:#c7b2a4;font-size:21px}.add-item{width:100%;height:38px;margin-top:6px;border:0;border-radius:12px;background:#fff5ed;color:#b96743;font-size:13px}.empty-category{text-align:center;color:#b19d90;font-size:12px;padding:14px 0 7px}dialog{border:0;margin:0}dialog::backdrop{background:rgba(48,34,27,.46);backdrop-filter:blur(2px)}.sheet{width:min(100%,520px);max-width:none;top:auto;bottom:0;border-radius:28px 28px 0 0;padding:11px 22px calc(22px + env(safe-area-inset-bottom));background:#fff}.sheet[open]{animation:slideUp .2s ease}.sheet-handle{width:38px;height:4px;border-radius:4px;background:#e5d9d0;margin:0 auto 17px}.sheet-head{display:flex;justify-content:space-between;align-items:center}.sheet h3,.scan-head h3{margin:0;font-size:21px}.icon-close,.back-button{border:0;background:#f7efe9;border-radius:50%;width:34px;height:34px;color:#8b7161;font-size:24px;line-height:28px}.sheet label{display:block;margin-top:17px;color:#806d60;font-size:12px}.sheet input,.sheet select{display:block;width:100%;height:47px;margin-top:7px;padding:0 13px;border:1px solid #ede1d8;border-radius:13px;background:#fcf8f5;color:var(--ink);outline:none}.sheet input:focus,.sheet select:focus{border-color:#d89572}.form-row{display:grid;grid-template-columns:.65fr 1.35fr;gap:12px}.sheet-actions{display:flex;align-items:center;justify-content:space-between;margin-top:23px}.save-button{height:48px;border:0;border-radius:15px;padding:0 34px;background:var(--orange);color:#fff;font-weight:650}.danger-button{border:0;background:transparent;color:var(--danger);font-size:13px}.full-button{width:100%;margin-top:22px}.scan-sheet{width:min(100%,520px);max-width:none;height:100dvh;max-height:none;padding:calc(19px + env(safe-area-inset-top)) 18px calc(88px + env(safe-area-inset-bottom));background:var(--paper);overflow:auto}.scan-sheet[open]{animation:fadeIn .2s ease}.scan-head{display:flex;align-items:center;gap:14px}.scan-head h3{margin-top:3px}.scan-preview{position:relative;height:148px;margin:21px 0 15px;display:grid;place-items:center;overflow:hidden;border-radius:22px;background:linear-gradient(135deg,#ead5c5,#cda88d);background-size:cover;background-position:center;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.3);font-size:13px}.scan-preview:after{content:"";position:absolute;inset:0;background:rgba(72,45,31,.18)}.scan-preview span{position:relative;z-index:2}.scan-line{position:absolute;z-index:2;left:12%;right:12%;height:2px;background:#fff;box-shadow:0 0 12px #fff;animation:scan 1.4s infinite alternate ease-in-out}.scan-tip{font-size:12px;color:var(--muted)}.scan-results{margin-top:14px}.scan-row{display:grid;grid-template-columns:25px 1fr 30px;gap:10px;align-items:center;padding:13px;background:#fff;border:1px solid var(--line);border-radius:17px;margin-bottom:10px}.scan-fields input,.scan-fields select{width:100%;border:0;background:transparent;outline:none}.scan-fields input{font-weight:600;font-size:14px}.scan-fields select{margin-top:6px;color:#a06648;font-size:11px}.remove-scan{border:0;background:transparent;color:#bd8972;font-size:23px}.sticky-button{position:fixed;left:max(18px,calc((100vw - 520px)/2 + 18px));right:max(18px,calc((100vw - 520px)/2 + 18px));bottom:calc(17px + env(safe-area-inset-bottom));width:auto;box-shadow:0 8px 24px rgba(197,102,59,.25)}.toast{position:fixed;z-index:20;left:50%;bottom:32px;transform:translate(-50%,20px);padding:11px 17px;border-radius:12px;background:#3c322d;color:#fff;font-size:13px;opacity:0;pointer-events:none;transition:.2s;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%,0)}@keyframes slideUp{from{transform:translateY(50px);opacity:.5}}@keyframes fadeIn{from{opacity:0}}@keyframes scan{from{top:22%}to{top:78%}}@media(min-width:600px){body{padding:28px 0}.app-shell{border-radius:36px;overflow:hidden;box-shadow:0 24px 70px rgba(70,48,34,.15)}.hero{border-radius:0 0 36px 36px}.sheet,.scan-sheet{left:50%;transform:translateX(-50%)}.sheet[open]{animation:none}}
