:root{--bg: #f5f7fb;--surface: #ffffff;--surface-2: #f0f4fa;--line: #e3e8f0;--text: #15315e;--muted: #6b7a93;--faint: #9aa6ba;--accent: #2563eb;--accent-ink: #ffffff;--cta: #f5a623;--cta-ink: #3a2600;--navy: #15315e;--info: #2563eb;--chip: #eef3fb}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{width:100%;max-width:100%;overflow-x:hidden}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}.app{width:100%;max-width:460px;margin:0 auto;min-height:100vh;background:var(--bg)}.header{padding:16px 18px 0;position:sticky;top:0;background:var(--navy);z-index:5}.brand{display:flex;align-items:center;gap:8px}.brand .basket{font-size:22px}.listbtn{display:flex;align-items:center;gap:8px;background:#ffffff1f;border:1px solid rgba(255,255,255,.22);color:#fff;font-size:18px;font-weight:600;padding:8px 12px;border-radius:11px}.listbtn .chev{font-size:12px;color:var(--cta)}.listbtn .lists-ico{font-size:16px;color:var(--cta)}.count{margin-left:auto;font-size:12px;color:#cdd9ee;background:#ffffff24;padding:4px 10px;border-radius:20px}.tabs{display:flex;gap:6px;margin-top:14px}.tab{flex:1;height:38px;border:1px solid rgba(255,255,255,.18);background:transparent;border-radius:9px 9px 0 0;font-size:14px;color:#a9c0e6;border-bottom:none}.tab.active{background:var(--bg);color:var(--navy);border-color:var(--bg);font-weight:600}.body{padding:12px 16px 96px}.addbar{display:flex;gap:8px;margin:6px 0 4px;position:relative}.addbar input{flex:1;min-width:0;height:46px;border:1px solid var(--line);border-radius:12px;padding:0 14px;font-size:16px;background:var(--surface);color:var(--text)}.addbar input::placeholder{color:var(--faint)}.addbar input:focus{outline:none;border-color:var(--accent)}.addbar .add{width:46px;border:none;background:var(--cta);color:var(--cta-ink);border-radius:12px;font-size:24px;line-height:1;font-weight:600;flex:none}.addbar .scan-btn{width:46px;flex:none;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:12px;font-size:20px;line-height:1}.addbar .qty-in{flex:none;width:58px;text-align:center}.addbar .unit-in{flex:none;width:54px;text-align:center}.recat-btn{background:none;border:none;font-size:15px;padding:4px;flex:none}.addbar .day-in{flex:none;width:74px;height:46px;border:1px solid var(--line);border-radius:12px;padding:0 8px;font-size:14px;background:var(--surface);color:var(--text)}.due-tag{font-size:11px;color:var(--accent);margin-left:8px;white-space:nowrap}.due-tag.overdue{color:#e05a5a}.seg3 button{font-size:13px;padding:0 6px}.addbar .time-in{flex:none;width:92px;height:46px;border:1px solid var(--line);border-radius:12px;padding:0 8px;font-size:14px;background:var(--surface);color:var(--text)}.time-tag{font-size:12px;font-weight:600;color:var(--navy);margin-right:8px}.day-nav{display:flex;align-items:center;justify-content:space-between;margin:12px 0 4px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:6px 8px}.day-nav button{width:38px;height:34px;border:none;background:var(--chip);color:var(--navy);border-radius:9px;font-size:18px;line-height:1}.day-nav-label{font-size:15px;font-weight:600;color:var(--navy)}.timetable{margin-top:10px}.tt-hour{display:flex;gap:10px;border-top:1px solid var(--line);min-height:42px;padding:2px 0}.tt-time{width:46px;flex:none;font-size:12px;color:var(--faint);padding-top:12px}.tt-tasks{flex:1;min-width:0}.tt-tasks .item{border-bottom:none;padding:7px 4px}.suggest{position:absolute;top:52px;left:0;right:58px;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;z-index:10;box-shadow:0 6px 20px #15315e1a}.suggest div{padding:12px 14px;font-size:15px;border-bottom:1px solid var(--line);text-transform:capitalize;color:var(--text)}.suggest div:last-child{border-bottom:none}.suggest div:active{background:var(--chip)}.suggest .suggest-off{display:flex;align-items:center;gap:10px;text-transform:none}.suggest .suggest-off img{width:30px;height:30px;object-fit:contain;border-radius:6px;background:#fff;flex:none}.suggest .suggest-off span{text-transform:none}.suggest .suggest-spon{display:flex;align-items:center;gap:10px;text-transform:none;background:#fff8ec}.spon-mark{width:34px;height:34px;border-radius:8px;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:16px;overflow:hidden}.spon-mark img{width:100%;height:100%;object-fit:contain;background:#fff}.spon-name{flex:1;font-weight:600;color:var(--navy)}.spon-tag{font-size:11px;font-weight:700;color:var(--cta-ink);background:var(--cta);padding:2px 8px;border-radius:20px;white-space:nowrap}.spon-badge{margin-left:auto;font-size:11px;font-weight:700;color:var(--cta-ink);background:var(--cta);padding:2px 9px;border-radius:20px}.spon-strip{display:flex;gap:8px;flex-wrap:wrap;padding:4px 2px 12px}.spon-chip{display:inline-flex;align-items:center;gap:8px;background:#fff8ec;border:1px solid #f3d49b;color:var(--navy);border-radius:22px;padding:6px 12px 6px 6px;font-size:13px;font-weight:600}.spon-cmark{width:26px;height:26px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:13px;overflow:hidden}.spon-cmark img{width:100%;height:100%;object-fit:contain;background:#fff}.list-actions{display:flex;gap:8px;margin:8px 0 4px}.list-actions button{flex:1;height:46px;border-radius:12px;font-size:15px;font-weight:700}.shop-go{background:var(--cta);color:var(--cta-ink);border:none}.shelf-open{background:var(--chip);border:1px solid var(--line);color:var(--navy);font-weight:600}.shopmode{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;background:var(--bg);display:flex;flex-direction:column}.shopmode-top{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--navy);color:#fff}.shopmode-x{background:#ffffff29;border:none;color:#fff;width:38px;height:38px;border-radius:50%;font-size:22px;flex:none}.shopmode-title{font-size:19px;font-weight:700}.shopmode-prog{margin-left:auto;font-size:14px;font-weight:600;background:#ffffff29;padding:6px 13px;border-radius:20px}.shopmode-body{flex:1;overflow-y:auto;padding:8px 12px calc(40px + env(safe-area-inset-bottom))}.shopmode-dept{font-size:14px;font-weight:700;margin:18px 4px 8px}.shopmode-item{display:flex;align-items:center;gap:14px;width:100%;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:15px 14px;margin-bottom:8px;text-align:left}.shopmode-check{width:30px;height:30px;border-radius:9px;border:2px solid var(--faint);flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px}.shopmode-check.on{background:var(--accent);border-color:var(--accent)}.shopmode-img{width:46px;height:46px;object-fit:contain;border-radius:9px;background:#fff;border:1px solid var(--line);flex:none;padding:2px}.shopmode-name{font-size:18px;color:var(--text);text-transform:capitalize}.shopmode-item.done .shopmode-name{text-decoration:line-through;color:var(--faint)}.shopmode-empty{text-align:center;color:var(--muted);margin-top:50px;font-size:17px}.shelf{background:var(--surface);border-radius:18px;width:94%;max-width:560px;height:88vh;display:flex;flex-direction:column;overflow:hidden}.shelf-top{display:flex;gap:8px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}.shelf-search{flex:1;min-width:0;height:42px;border:1px solid var(--line);border-radius:12px;padding:0 14px;font-size:16px;background:var(--surface);color:var(--text)}.shelf-body{flex:1;overflow-y:auto;padding:8px 14px 12px}.shelf-head{font-size:13px;font-weight:700;color:var(--muted);margin:14px 2px 8px}.shelf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.shelf-card{position:relative;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:8px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}.shelf-card.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.shelf-card.spon{border-color:#f3d49b;background:#fff8ec}.shelf-img{width:100%;aspect-ratio:1 / 1;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:20px;overflow:hidden}.shelf-img img{width:100%;height:100%;object-fit:contain;background:#fff}.shelf-name{font-size:12px;color:var(--text);text-transform:capitalize;line-height:1.2}.shelf-badge{position:absolute;top:6px;left:6px;z-index:1;font-size:9px;font-weight:700;background:var(--cta);color:var(--cta-ink);padding:1px 6px;border-radius:20px}.shelf-check{position:absolute;top:6px;right:6px;z-index:1;width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center}.shelf-have{font-size:10px;color:var(--muted)}.shelf-foot{padding:12px 14px;border-top:1px solid var(--line)}.shelf-add{width:100%;height:48px;border:none;border-radius:12px;background:var(--cta);color:var(--cta-ink);font-weight:700;font-size:16px}.shelf-add:disabled{opacity:.5}.badge{display:inline-block;font-size:11px;color:var(--muted);background:var(--chip);padding:4px 10px;border-radius:20px;margin:8px 0 0}.group{margin-top:18px}.group-head{display:flex;align-items:center;gap:7px;margin-bottom:2px}.group-head .emoji{font-size:15px}.group-head .name{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.item{display:flex;align-items:center;gap:12px;padding:13px 4px;border-bottom:1px solid var(--line)}.check{width:24px;height:24px;border-radius:7px;border:2px solid var(--faint);display:flex;align-items:center;justify-content:center;flex:none;color:#fff;font-size:14px}.item .label{flex:1;font-size:16px;text-transform:capitalize;color:var(--text)}.item.done .label{text-decoration:line-through;color:var(--faint)}.item .del{color:var(--faint);font-size:20px;background:none;border:none;padding:4px}.assign-chip{width:26px;height:26px;border-radius:50%;background:var(--navy);color:#fff;border:none;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;flex:none}.assign-add{width:26px;height:26px;border-radius:50%;background:transparent;border:1px dashed var(--faint);color:var(--faint);font-size:14px;display:flex;align-items:center;justify-content:center;flex:none}.points-badge{background:var(--chip);color:var(--navy);border:1px solid var(--line);border-radius:20px;font-size:11px;font-weight:600;padding:3px 9px;flex:none;white-space:nowrap}.points-options{display:flex;gap:8px;flex-wrap:wrap}.points-opt{flex:1;min-width:52px;height:46px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;font-size:17px;font-weight:600}.points-opt.on{border-color:var(--accent);color:var(--accent);background:var(--chip)}.leaderboard{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:12px 0 6px}.lb-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.lb-title{font-size:13px;font-weight:600;color:var(--navy)}.lb-toggle{display:flex;gap:4px}.lb-toggle button{height:28px;padding:0 10px;border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:8px;font-size:12px}.lb-toggle button.on{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:600}.rec-tag{font-size:11px;color:var(--muted);margin-left:8px;white-space:nowrap}.rec-options{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.rec-opt{height:44px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;font-size:14px}.rec-opt.on{border-color:var(--accent);color:var(--accent);background:var(--chip);font-weight:600}.lb-row{display:flex;align-items:center;gap:10px;padding:6px 0}.lb-rank{width:16px;font-size:13px;color:var(--muted);font-weight:600}.lb-name{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-points{font-size:13px;font-weight:600;color:var(--accent);white-space:nowrap}.empty{text-align:center;color:var(--faint);font-size:14px;margin-top:48px}.recipe{display:flex;align-items:center;gap:14px;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:16px;margin-bottom:10px}.recipe .icon{width:48px;height:48px;border-radius:13px;background:var(--chip);display:flex;align-items:center;justify-content:center;font-size:26px;flex:none}.recipe .meta{flex:1;min-width:0}.recipe .title{font-size:16px;font-weight:600}.recipe .sub{font-size:13px;color:var(--muted);margin-top:2px}.recipe .btn{border:1px solid var(--accent);color:var(--accent);background:transparent;border-radius:10px;height:38px;padding:0 13px;font-size:14px;font-weight:500;white-space:nowrap}.back{background:none;border:none;color:var(--accent);font-size:15px;padding:6px 0;margin-bottom:6px}.recipe-hero{height:150px;border-radius:16px;background:var(--chip);display:flex;align-items:center;justify-content:center;font-size:80px;margin-bottom:14px}.recipe-h{font-size:22px;font-weight:600;margin:4px 0 2px}.recipe-sub2{font-size:13px;color:var(--muted)}.recipe-section{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);margin:20px 0 8px}.serv{display:flex;align-items:center;gap:12px;margin:14px 0 4px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.serv-label{font-size:15px;font-weight:500}.stepper{margin-left:auto;display:flex;align-items:center;gap:14px}.stepper button{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface-2);color:var(--accent);font-size:20px;line-height:1}.serv-num{font-size:17px;font-weight:600;min-width:20px;text-align:center}.ing-list{list-style:none;padding:0;margin:0}.ing-list li{display:flex;align-items:center;justify-content:space-between;padding:10px 4px;border-bottom:1px solid var(--line);font-size:15px}.ing-name{text-transform:capitalize}.ing-qty{color:var(--muted);font-size:14px;white-space:nowrap;padding-left:12px}.steps{margin:0;padding-left:22px}.steps li{padding:6px 0;font-size:15px;line-height:1.55}.add-recipe-btn{width:100%;margin-top:22px;height:50px;background:var(--cta);color:var(--cta-ink);border:none;border-radius:12px;font-size:16px;font-weight:600}.match-tag{font-size:12px;color:var(--accent);margin-top:3px}.cat-row{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px;margin:4px -2px 0}.cat-chip{flex:0 0 auto;height:34px;padding:0 14px;border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:20px;font-size:13px;white-space:nowrap}.cat-chip.on{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:600}.stars{font-size:13px;color:#f0b429;letter-spacing:1px}.stars.muted{color:var(--faint);letter-spacing:normal}.stars-num{color:var(--muted);font-size:12px;margin-left:4px;letter-spacing:normal}.rate{display:flex;gap:6px}.star-btn{background:none;border:none;font-size:30px;line-height:1;color:var(--line);padding:2px}.star-btn.on{color:#f0b429}.reel{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 6px;margin:0 -2px}.reel-card{flex:0 0 auto;width:96px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--text)}.reel-emoji{font-size:32px}.reel-name{font-size:12px;text-align:center;line-height:1.25}.recipe-author{font-size:13px;color:var(--muted);margin-top:4px}.recipe-author a{color:var(--accent)}.frow{display:flex;gap:8px;margin-bottom:10px}.frow input,.ing-row input,.ftext{height:44px;border:1px solid var(--line);border-radius:10px;padding:0 12px;font-size:15px;background:var(--surface);color:var(--text)}.frow input::placeholder,.ing-row input::placeholder,.ftext::placeholder{color:var(--faint)}.frow input:focus,.ing-row input:focus,.ftext:focus{outline:none;border-color:var(--accent)}.femoji{width:56px;text-align:center;font-size:22px}.fname{flex:1}.serv-inline{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}.serv-inline input{height:44px;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:var(--surface);color:var(--text)}.ing-row{display:flex;gap:6px;align-items:center;margin-bottom:8px}.ftext{height:auto;width:100%;padding:12px;line-height:1.5;font-family:inherit;resize:vertical}.ghost-btn{width:100%;margin-top:8px;height:44px;background:transparent;border:1px dashed var(--accent);color:var(--accent);border-radius:12px;font-size:15px}.ghost-btn.danger{border-style:solid;border-color:var(--line);color:#e05a5a;margin-top:10px}.seg{display:flex;gap:8px}.seg button{flex:1;height:44px;border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:10px;font-size:14px}.seg button.on{border-color:var(--accent);color:var(--accent);background:var(--chip);font-weight:600}.sheet-bg.center{align-items:center;justify-content:center}.modal{width:340px;max-width:88%;max-height:80vh;overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 16px}.modal-label{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:14px 2px 8px}.list-select{width:100%;height:44px;border:1px solid var(--line);border-radius:10px;padding:0 12px;font-size:15px;background:var(--surface);color:var(--text)}.ing-check-list{display:flex;flex-direction:column;gap:6px}.ing-check{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:11px 12px;font-size:15px;color:var(--text);text-transform:capitalize}.ing-check.on{border-color:var(--accent)}.ing-check .box{width:20px;height:20px;border-radius:6px;border:2px solid var(--faint);display:flex;align-items:center;justify-content:center;flex:none;color:#fff;font-size:12px}.ing-check.on .box{background:var(--accent);border-color:var(--accent)}.pick-row{display:flex;width:100%;align-items:center;justify-content:space-between;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:8px;color:var(--text);font-size:16px}.pick-row:active{border-color:var(--accent)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--navy);color:#fff;font-size:14px;font-weight:500;padding:12px 18px;border-radius:12px;z-index:50;box-shadow:0 6px 24px #15315e40}.sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#15315e73;z-index:40;display:flex;align-items:stretch;justify-content:flex-start}.sheet{width:320px;max-width:85%;height:100%;background:var(--surface);border-right:1px solid var(--line);border-radius:0 18px 18px 0;padding:18px 16px 28px;overflow-y:auto;animation:slidein .18s ease-out}@keyframes slidein{0%{transform:translate(-100%)}to{transform:translate(0)}}.sheet h2{font-size:17px;font-weight:600;margin:0 0 14px;display:flex;align-items:center}.sheet h2 .x{margin-left:auto;background:none;border:none;color:var(--muted);font-size:22px}.sheet-label{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:16px 2px 8px}.primary-btn{width:100%;height:46px;background:var(--cta);color:var(--cta-ink);border:none;border-radius:12px;font-size:15px;font-weight:600}.create-box{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px}.lrow2{display:flex;align-items:center;gap:11px;padding:9px 8px;border-radius:12px}.lrow2.active{background:var(--chip)}.ltype{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex:none}.linfo{flex:1;min-width:0}.tpl-link{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:none;color:var(--text);font-size:15px;padding:14px 8px;border-top:1px solid var(--line);margin-top:10px}.tellfriend-btn{width:100%;margin-top:16px;height:44px;background:var(--chip);border:1px solid var(--line);color:var(--navy);border-radius:12px;font-size:14px;font-weight:600}.scan-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#000;display:flex;flex-direction:column;align-items:center;justify-content:center}.scan-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scan-frame{position:relative;width:78%;max-width:360px;aspect-ratio:5 / 3;border:2px solid rgba(255,255,255,.9);border-radius:16px;box-shadow:0 0 0 100vmax #00000073}.scan-line{position:absolute;left:6%;right:6%;top:50%;height:2px;background:var(--cta);box-shadow:0 0 8px var(--cta);animation:scanmove 2s ease-in-out infinite}@keyframes scanmove{0%,to{top:12%}50%{top:88%}}.scan-close{position:absolute;top:14px;right:14px;width:44px;height:44px;border:none;border-radius:50%;background:#0000008c;color:#fff;font-size:26px;line-height:1}.scan-hint{position:absolute;top:22px;left:0;right:0;text-align:center;color:#fff;font-size:14px;text-shadow:0 1px 3px rgba(0,0,0,.7)}.scan-error{position:absolute;bottom:120px;left:16px;right:16px;text-align:center;color:#fff;background:#b42828eb;padding:12px 14px;border-radius:12px;font-size:14px}.scan-panel{position:absolute;left:0;right:0;bottom:0;padding:14px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}.scan-feed{display:flex;flex-direction:column;gap:6px}.scan-feed-row{display:flex;align-items:center;gap:8px;background:#fffffff0;color:var(--navy);border-radius:10px;padding:8px 12px;font-size:14px}.scan-feed-row span{font-weight:700}.scan-feed-img{width:28px;height:28px;object-fit:contain;border-radius:6px;background:#fff;flex:none}.item-img{width:52px;height:52px;object-fit:contain;border-radius:10px;background:#fff;border:1px solid var(--line);flex:none;padding:3px}.scan-feed-row.ok span{color:#16a34a}.scan-feed-row.miss span,.scan-feed-row.dup span{color:var(--muted)}.scan-done{width:100%;height:48px;border:none;border-radius:12px;background:var(--cta);color:var(--cta-ink);font-size:16px;font-weight:700}.scan-photo{width:100%;min-height:46px;border:1px solid rgba(255,255,255,.6);border-radius:12px;background:#00000073;color:#fff;font-size:14px;font-weight:600;padding:8px 12px}.scan-photo:disabled{opacity:.7}.muted-p{color:var(--muted);font-size:14px;margin:4px 0 14px}.receipt-modal{max-width:460px}.receipt-reading{text-align:center;padding:20px 0}.progress-bar{height:8px;background:var(--surface-2);border-radius:8px;overflow:hidden;margin:10px 0}.progress-bar>div{height:100%;background:var(--cta);transition:width .2s}.receipt-meta{display:flex;gap:8px;margin-bottom:10px}.receipt-meta .dialog-input{flex:1;min-width:0}.receipt-items{display:flex;flex-direction:column;gap:6px;max-height:44vh;overflow-y:auto}.receipt-row{display:flex;gap:6px;align-items:center}.receipt-row input{flex:1;min-width:0;height:40px;border:1px solid var(--line);border-radius:10px;padding:0 10px;font-size:15px;background:var(--surface);color:var(--text)}.receipt-row .receipt-price{flex:none;width:74px;text-align:right}.receipt-del{flex:none;width:34px;height:34px;border:none;background:var(--surface-2);color:var(--muted);border-radius:9px;font-size:18px}.receipt-addrow{width:100%;margin-top:8px;height:40px;background:transparent;border:1px dashed var(--line);border-radius:10px;color:var(--accent);font-size:14px;font-weight:600}.receipt-total{display:flex;align-items:center;gap:8px;margin:12px 0;font-weight:700}.receipt-total span:first-child{flex:1}.receipt-total input{width:90px;height:40px;text-align:right;border:1px solid var(--line);border-radius:10px;padding:0 10px;font-size:15px;background:var(--surface);color:var(--text)}.spend-summary{display:flex;flex-direction:column;gap:2px;background:var(--chip);border-radius:14px;padding:14px 16px;margin:12px 0}.spend-label{font-size:13px;color:var(--muted)}.spend-big{font-size:26px;font-weight:800;color:var(--navy)}.spend-item{border-bottom:1px solid var(--line)}.spend-head{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:none;padding:14px 4px;color:var(--text);font-size:15px}.spend-store{font-weight:600;text-transform:capitalize}.spend-date{color:var(--muted);font-size:13px}.spend-amt{margin-left:auto;font-weight:700}.spend-chev{color:var(--muted);font-size:12px}.spend-lines{padding:0 4px 12px;display:flex;flex-direction:column;gap:6px}.spend-line{display:flex;justify-content:space-between;gap:12px;font-size:14px;color:var(--text)}.spend-line.muted{color:var(--muted)}.ad-wrap{position:relative;margin:12px 0 6px}.ad-label{position:absolute;top:-7px;left:12px;background:var(--bg);color:var(--faint);font-size:10px;letter-spacing:.05em;padding:0 6px;text-transform:uppercase;z-index:1}.ad-banner{width:100%;display:flex;align-items:center;gap:12px;border:none;border-radius:14px;padding:12px 14px;text-align:left;min-height:76px;animation:adfade .5s ease}.ad-banner.ad-image{padding:0;overflow:hidden}.ad-banner.ad-image img{width:100%;height:90px;object-fit:cover;display:block}.ad-mark{width:42px;height:42px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:20px;color:#fff}.ad-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ad-brand{font-size:15.5px;font-weight:800}.ad-text{font-size:12.5px;opacity:.92}.ad-cta{flex:none;font-size:12px;font-weight:700;border:1px solid;border-radius:999px;padding:6px 12px}.ad-dots{display:flex;gap:5px;justify-content:center;margin-top:7px}.ad-dots span{width:6px;height:6px;border-radius:50%;background:var(--line);transition:background .2s}.ad-dots span.on{background:var(--cta)}@keyframes adfade{0%{opacity:.25}to{opacity:1}}.action-row{display:block;width:100%;text-align:left;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:13px 14px;margin-bottom:8px;font-size:15px;color:var(--text)}.action-row.danger{color:#e05a5a}.dialog-input{width:100%;height:46px;border:1px solid var(--line);border-radius:10px;padding:0 14px;font-size:16px;background:var(--surface);color:var(--text);margin-bottom:14px}.dialog-input:focus{outline:none;border-color:var(--accent)}.dialog-actions{display:flex;gap:10px}.dialog-cancel{flex:1;height:46px;background:transparent;border:1px solid var(--line);color:var(--text);border-radius:11px;font-size:15px}.dialog-ok{flex:1;height:46px;background:var(--cta);color:var(--cta-ink);border:none;border-radius:11px;font-size:15px;font-weight:600}.dialog-ok.danger{background:#e05a5a;color:#fff}.lrow{display:flex;align-items:center;gap:8px;padding:13px 12px;border:1px solid var(--line);border-radius:12px;margin-bottom:8px;background:var(--surface-2)}.lrow.active{border-color:var(--accent)}.lrow .lname{flex:1;font-size:16px}.lrow .lcount{font-size:12px;color:var(--muted)}.lrow .ico{background:none;border:none;color:var(--muted);font-size:18px;padding:4px}.lrow .ico.share{color:var(--accent)}.newrow{display:flex;gap:8px;margin-top:12px}.newrow input{flex:1;height:44px;border:1px solid var(--line);border-radius:12px;padding:0 14px;font-size:16px;background:var(--surface-2);color:var(--text)}.newrow input:focus{outline:none;border-color:var(--accent)}.newrow button{background:var(--cta);color:var(--cta-ink);border:none;border-radius:12px;padding:0 16px;font-size:15px;font-weight:600}.shared-tag{font-size:10px;color:var(--accent);background:var(--chip);padding:2px 7px;border-radius:20px;margin-left:6px}.tpl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tpl-card{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 6px;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text)}.tpl-card:active{border-color:var(--accent)}.tpl-emoji{font-size:24px}.tpl-name{font-size:11px;text-align:center;line-height:1.2}.sheet-footer{margin-top:22px;padding-top:16px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px}.sheet-user{flex:1;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.signout-btn{background:transparent;border:1px solid var(--line);color:var(--text);border-radius:10px;padding:9px 14px;font-size:14px}.auth{max-width:360px;margin:80px auto;padding:0 24px;text-align:center}.auth input{width:100%;height:46px;border:1px solid var(--line);border-radius:12px;padding:0 14px;font-size:16px;margin:10px 0;background:var(--surface);color:var(--text)}.auth button{width:100%;height:46px;border:none;background:var(--cta);color:var(--cta-ink);border-radius:12px;font-size:16px;font-weight:600}.landing{max-width:480px;margin:0 auto;padding:36px 20px 48px}.hero{text-align:center}.hero-logo{font-size:56px;line-height:1}.hero h1{font-size:32px;font-weight:700;color:var(--navy);margin:8px 0 4px}.tagline{font-size:17px;color:var(--text);font-weight:500;margin:0 0 8px}.lead{font-size:15px;color:var(--muted);margin:0 auto;max-width:360px;line-height:1.5}.signin-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px 18px;margin:26px 0 32px;box-shadow:0 10px 30px #15315e14;text-align:center}.signin-title{font-size:16px;font-weight:600;margin:0 0 12px;color:var(--navy)}.signin-card input{width:100%;height:48px;border:1px solid var(--line);border-radius:11px;padding:0 14px;font-size:16px;background:var(--surface);color:var(--text);margin-bottom:10px}.signin-card input:focus{outline:none;border-color:var(--accent)}.signin-card button{width:100%;height:48px;border:none;background:var(--cta);color:var(--cta-ink);border-radius:11px;font-size:16px;font-weight:600}.signin-note{font-size:13px;color:var(--muted);margin:12px 0 0}.signin-error{font-size:13px;color:#d8452f;margin:10px 0 0}.link-btn{background:none;border:none;color:var(--accent);font-size:13px;font-weight:600;padding:0;text-decoration:underline}.features-head{font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 14px;text-align:center}.features{display:flex;flex-direction:column;gap:16px}.feature{display:flex;gap:14px;align-items:flex-start}.feature-ico{font-size:24px;width:46px;height:46px;flex:none;background:var(--chip);border-radius:12px;display:flex;align-items:center;justify-content:center}.feature-title{font-size:15px;font-weight:600;color:var(--navy)}.feature-text{font-size:14px;color:var(--muted);line-height:1.45;margin-top:2px}.landing-foot{text-align:center;font-size:12px;color:var(--faint);margin-top:30px}.profile-avatar{width:64px;height:64px;border-radius:50%;margin:0 auto;display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;font-weight:600}.color-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:6px 0 14px}.color-dot{width:34px;height:34px;border-radius:50%;border:2px solid transparent;padding:0}.color-dot.on{border-color:var(--navy);box-shadow:0 0 0 2px #fff inset}
