:root{--bg: #fff9e9;--card: #ffffff;--ink: #2b2118;--muted: #7a6a58;--line: #eadfc8;--brand: #f2a93b;--brand-ink: #5a3a06;--green: #2f7d4f;--red: #c8372d;--amber: #c77c00;--amber-bg: #fff1d1;--red-bg: #fde3e0;--radius: 14px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--nav-h: 64px;color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);overscroll-behavior-y:none}body{-webkit-tap-highlight-color:transparent}button,input{font:inherit;color:inherit}input{font-size:16px}h1{font-size:26px;margin:0}h2{font-size:17px;margin:0 0 8px}.muted{color:var(--muted)}.small{font-size:13px}.center{text-align:center}.hint{color:var(--muted);font-size:13px}.error{color:var(--red)}.notice{color:var(--green)}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:12px;align-items:flex-end}.grow{flex:1;min-width:0}.label-text{display:block;font-size:14px;color:var(--muted);margin-bottom:4px}label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--muted)}input[type=text],input[type=email],input[type=password],input[type=search],input[type=date],input:not([type]){width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);min-height:46px;-webkit-appearance:none;appearance:none}input[type=date]{display:block}input:focus{outline:2px solid var(--brand);outline-offset:0}.btn,.btn-primary{border:0;border-radius:12px;padding:12px 18px;min-height:46px;font-weight:600;cursor:pointer;background:#f1e7d3;color:var(--ink)}.btn-primary{background:var(--brand);color:var(--brand-ink)}.btn-primary:disabled,.btn:disabled{opacity:.6}.btn.danger{background:var(--red-bg);color:var(--red)}.link{background:none;border:0;color:var(--green);font-weight:600;padding:8px;cursor:pointer}.icon{background:#f1e7d3;border:0;border-radius:8px;width:34px;height:34px}.icon:disabled{opacity:.35}.row-buttons{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.row-buttons>*{flex:1}.banner{padding:calc(8px + var(--safe-top)) 14px 8px;font-size:13px;text-align:center}.banner+.banner{padding-top:8px}.banner-offline{background:#333;color:#fff}.banner-demo{background:#fff3b0;color:#5a4a00}.banner-install{display:flex;align-items:center;gap:8px;text-align:left;margin:0 16px 8px;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:12px}.banner-install span{flex:1}.auth{max-width:420px;margin:0 auto;padding:calc(40px + var(--safe-top)) 24px 40px;display:flex;flex-direction:column;gap:14px;text-align:center}.auth form{text-align:left}.auth-logo{border-radius:24px;align-self:center}.segmented{display:flex;background:#f1e7d3;border-radius:12px;padding:4px;gap:4px}.segmented button{flex:1;border:0;background:none;padding:9px 4px;border-radius:9px;font-size:14px}.segmented button.active{background:#fff;font-weight:600;box-shadow:0 1px 2px #00000014}.main{padding-bottom:calc(var(--nav-h) + var(--safe-bottom) + 90px)}.page{max-width:640px;margin:0 auto}.top{padding:calc(14px + var(--safe-top)) 16px 10px}.banner~.main .top{padding-top:14px}.card{background:var(--card);margin:0 16px 14px;padding:14px;border-radius:var(--radius);border:1px solid var(--line);display:flex;flex-direction:column;gap:10px}.card .btn{align-self:flex-start}.tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 16px 10px;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button,.chip{flex:none;border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;font-size:15px;min-height:38px;cursor:pointer}.tabs button.active,.chip.active{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}.chip.suggested:not(.active){border:2px dashed var(--green)}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.search-row{display:flex;gap:8px;padding:0 16px 10px;align-items:center}.list{list-style:none;margin:0;padding:0 16px;display:flex;flex-direction:column;gap:8px}.item-row,.shop-row{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 10px 10px 8px}.item-main{flex:1;min-width:0}.item-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px}.loc-tag{font-size:12px;color:var(--muted);background:#f6efe0;border-radius:6px;padding:2px 6px}.badge{font-size:12px;border-radius:6px;padding:2px 6px;background:#eef5ef;color:var(--green);font-weight:600}.badge-soon{background:var(--amber-bg);color:var(--amber)}.badge-expired{background:var(--red-bg);color:var(--red)}.check{width:36px;height:36px;border-radius:50%;border:2px solid var(--line);background:#fff;color:var(--green);font-weight:700;flex:none}.stepper{display:flex;align-items:center;background:#f6efe0;border-radius:12px;flex:none}.stepper button{width:40px;height:40px;border:0;background:none;font-size:22px;font-weight:600;cursor:pointer}.stepper .qty{min-width:26px;text-align:center;font-weight:700}.stepper.big button{width:48px;height:46px}.empty{text-align:center;color:var(--muted);padding:40px 24px;display:flex;flex-direction:column;align-items:center;gap:10px}.fab{position:fixed;right:18px;bottom:calc(var(--nav-h) + var(--safe-bottom) + 16px);z-index:20;background:var(--brand);color:var(--brand-ink);text-decoration:none;font-weight:700;font-size:18px;padding:16px 24px;border-radius:999px;box-shadow:0 6px 18px #7846004d}.add-row{display:flex;gap:8px;padding:0 16px 12px}.card .add-row{padding:0}.shop-check{flex:1;flex-direction:row;align-items:center;gap:12px;color:var(--ink);font-size:16px;min-height:36px}.shop-check input{width:24px;height:24px;accent-color:var(--green)}.shop-row.done .shop-check span{text-decoration:line-through;color:var(--muted)}.del{border:0;background:none;color:var(--muted);width:36px;height:36px;font-size:16px}.section-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px 6px;color:var(--muted);font-size:14px}.shop-row{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.loc-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.loc-row{display:flex;align-items:center;gap:6px}.loc-row input{min-height:40px;padding:8px 10px}.loc-row .days{width:52px;text-align:center;flex:none}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;background:#fffffff5;border-top:1px solid var(--line);padding-bottom:var(--safe-bottom);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.bottom-nav a{flex:1;height:var(--nav-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12px;color:var(--muted);text-decoration:none;position:relative}.bottom-nav a span[aria-hidden]{font-size:22px}.bottom-nav a.active{color:var(--green);font-weight:700}.bottom-nav .count{position:absolute;top:6px;left:56%;background:var(--red);color:#fff;border-radius:999px;font-size:11px;padding:1px 6px;font-weight:700}.backdrop{position:fixed;inset:0;background:#1e140a73;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}.backdrop-sheet{align-items:flex-end;padding:0}.dialog{max-height:calc(100dvh - 40px);overflow-y:auto;background:#fff;border-radius:18px;padding:20px;width:100%;max-width:380px}.dialog-title{font-size:19px;margin-bottom:10px}.sheet{background:#fff;width:100%;max-width:640px;border-radius:20px 20px 0 0;padding:18px 16px calc(18px + var(--safe-bottom));max-height:92vh;overflow-y:auto;animation:up .18s ease-out}@keyframes up{0%{transform:translateY(30px);opacity:.6}to{transform:none;opacity:1}}.toast{position:fixed;left:12px;right:12px;bottom:calc(var(--nav-h) + var(--safe-bottom) + 84px);z-index:60;margin:0 auto;max-width:520px;background:#2b2118;color:#fff;border-radius:12px;padding:12px 14px;display:flex;align-items:center;gap:12px;box-shadow:0 6px 20px #00000040}.toast span{flex:1}.toast-error{background:var(--red)}.toast-action{background:none;border:0;color:var(--brand);font-weight:700;padding:4px 6px}.scan{position:fixed;inset:0;background:#000;color:#fff}.scan-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.scan-frame{position:absolute;left:10%;width:80%;top:50%;aspect-ratio:5 / 3;transform:translateY(-50%);border:3px solid rgba(255,255,255,.85);border-radius:16px;box-shadow:0 0 0 9999px #00000059;transition:border-color .15s,transform .15s;display:flex;align-items:center;justify-content:center}.scan-frame.bark{border-color:#3ddc84;border-width:5px;transform:translateY(-50%) scale(1.04)}.bark-pip{width:72px;height:72px;border-radius:50%;animation:bark .6s ease-out}@keyframes bark{0%{transform:scale(.4);opacity:0}40%{transform:scale(1.15);opacity:1}to{transform:scale(1);opacity:.9}}.rotate-overlay{position:absolute;inset:0;z-index:70;background:var(--bg);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;font-size:20px;font-weight:700}.rotate-overlay img{border-radius:28px;animation:tilt 1.6s ease-in-out infinite}.rotate-overlay p{margin:0}@keyframes tilt{0%,to{transform:rotate(-90deg)}50%{transform:rotate(0)}}@media(orientation:landscape){.scan-video,.scan-frame,.scan-msg{visibility:hidden}}.scan-top{position:absolute;top:calc(12px + var(--safe-top));left:12px;right:12px;display:flex;justify-content:space-between}.scan-msg{position:absolute;top:calc(50% + 27vw);left:16px;right:16px;text-align:center;font-size:15px;text-shadow:0 1px 3px #000}.scan-bottom{position:absolute;left:12px;right:12px;bottom:calc(20px + var(--safe-bottom));display:flex;gap:8px}.scan-bottom .scan-btn{flex:1}.scan-btn{background:#0000008c;color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:12px;padding:12px 10px;font-weight:600;font-size:15px;min-height:46px}.scan-btn.on{background:var(--brand);color:var(--brand-ink)}.scan .toast{bottom:calc(96px + var(--safe-bottom))}.scan .sheet,.scan .dialog{color:var(--ink)}.member-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.member-row{display:flex;align-items:center;gap:8px;min-height:36px;word-break:break-all}.invite-box{background:#f6efe0;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:6px}.invite-code{font-size:26px;font-weight:800;letter-spacing:2px;font-family:ui-monospace,SF Mono,Menlo,monospace;text-align:center;padding:6px 0}.divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;margin:8px 0}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}.auth h2{margin:0}.barcode-digits{display:flex;align-items:baseline;gap:8px;margin:-4px 0 10px}.barcode-digits .digits{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:20px;font-weight:700;letter-spacing:1px}.source-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:-6px}.link.small{font-size:14px;padding:4px 0}.stat-row{display:flex;gap:8px}.stat{flex:1;background:#f6efe0;border-radius:12px;padding:10px;text-align:center}.stat-num{font-size:22px;font-weight:800}.correction-row{display:flex;flex-direction:column;gap:2px;padding:6px 0;border-bottom:1px solid var(--line)}.strike{text-decoration:line-through;color:var(--muted)}.date-row{display:flex;gap:8px;align-items:center}.date-row input{flex:1;min-width:0}.date-row .btn{white-space:nowrap;padding:12px}input.ocr-filled{outline:3px solid var(--brand);background:#fff6dd}.warn{color:var(--amber)}.quick-chips{margin-top:8px}.small-chip{padding:6px 10px;min-height:32px;font-size:13px}.date-capture{position:absolute;inset:0;z-index:40}.date-frame{position:absolute;left:5%;width:90%;top:50%;aspect-ratio:100 / 35;transform:translateY(-50%);border:3px dashed #ffd36b;border-radius:12px;box-shadow:0 0 0 9999px #00000073}.date-msg{position:absolute;top:calc(50% - 27vw);left:16px;right:16px;text-align:center;color:#fff;font-weight:600;text-shadow:0 1px 3px #000}.is-hidden{visibility:hidden}.pip-reaction{position:fixed;left:50%;bottom:calc(150px + var(--safe-bottom));z-index:80;pointer-events:none;transform:translate(-50%);display:flex;align-items:center;gap:6px}.pip-reaction img{width:76px;height:76px;border-radius:50%;background:#fff9e9;box-shadow:0 4px 14px #0000004d}.pip-wag img{animation:pip-wag .55s ease-in-out;transform-origin:50% 90%}.pip-bark img{animation:pip-bark .55s ease-out}.pip-spin img{animation:pip-spin .55s ease-in-out}.pip-woof{background:#fff;color:var(--ink);font-weight:800;border-radius:12px;padding:4px 10px;animation:pip-bark .55s ease-out}@keyframes pip-wag{0%,to{transform:rotate(0)}20%{transform:rotate(-14deg)}45%{transform:rotate(12deg)}70%{transform:rotate(-8deg)}}@keyframes pip-bark{0%{transform:scale(.5);opacity:0}35%{transform:scale(1.18);opacity:1}to{transform:scale(1)}}@keyframes pip-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.pip-reaction,.bark-pip{display:none}.scan-frame,.sheet{animation:none!important;transition:none!important}}.chip-count{display:inline-block;min-width:20px;padding:0 6px;margin-left:4px;border-radius:999px;background:#00000014;font-size:12px;font-weight:700}.tabs button.active .chip-count{background:#ffffff40}.store-tag{background:#e9f3ec;color:var(--green)}.btn-current{outline:2px solid var(--green)}.store-picker form{margin:0}.store-results{display:flex;flex-direction:column;max-height:46vh;overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:#fff}.store-option{text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:12px 14px;font-size:16px;min-height:46px}.store-option:last-child{border-bottom:0}.store-option:active{background:#f6efe0}.list-header{display:flex;align-items:center;gap:10px;position:relative}.list-header h1{flex:1}.list-menu-btn{font-size:20px}.list-tabs{padding-bottom:4px}.recipe-card{gap:8px}textarea.notes{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px;font:inherit;font-size:16px;resize:vertical}.themed{background:var(--th-page);min-height:100vh;color:var(--th-ink)}.th-header{position:relative;overflow:hidden;background-color:var(--th-header);color:var(--th-header-ink);height:max(210px,30vh);padding:calc(34px + var(--safe-top)) 16px 16px;display:flex;flex-direction:column;justify-content:center}.th-header.pattern-snowflake{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cg stroke='%23ffffff' stroke-opacity='.18' stroke-width='1.6' stroke-linecap='round' fill='none'%3E%3Cg transform='translate(28 30)'%3E%3Cpath d='M0-11V11M-9.5-5.5 9.5 5.5M-9.5 5.5 9.5-5.5M0-11-3-14M0-11 3-14M0 11-3 14M0 11 3 14'/%3E%3C/g%3E%3Cg transform='translate(88 84) scale(.7)'%3E%3Cpath d='M0-11V11M-9.5-5.5 9.5 5.5M-9.5 5.5 9.5-5.5M0-11-3-14M0-11 3-14M0 11-3 14M0 11 3 14'/%3E%3C/g%3E%3Cg transform='translate(96 22) scale(.45)'%3E%3Cpath d='M0-11V11M-9.5-5.5 9.5 5.5M-9.5 5.5 9.5-5.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.th-header.pattern-tile{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='22' viewBox='0 0 44 22'%3E%3Cg fill='none' stroke='%23FBF6EE' stroke-opacity='.14' stroke-width='1.2'%3E%3Crect x='.6' y='.6' width='42.8' height='10.4' rx='1.5'/%3E%3Crect x='-21.4' y='11.6' width='42.8' height='10.4' rx='1.5'/%3E%3Crect x='22.6' y='11.6' width='42.8' height='10.4' rx='1.5'/%3E%3C/g%3E%3C/svg%3E")}.th-static{position:absolute;inset:0;pointer-events:none;z-index:1}.th-static-confetti{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='70' viewBox='0 0 90 70'%3E%3Cg opacity='.75'%3E%3Crect x='8' y='10' width='7' height='3' rx='1' fill='%23F2668B' transform='rotate(25 11 11)'/%3E%3Crect x='50' y='6' width='6' height='3' rx='1' fill='%23F4C430' transform='rotate(-30 53 7)'/%3E%3Ccircle cx='72' cy='30' r='2' fill='%235CC8A8'/%3E%3Crect x='28' y='40' width='7' height='3' rx='1' fill='%235CC8A8' transform='rotate(60 31 41)'/%3E%3Ccircle cx='16' cy='56' r='1.8' fill='%23FFF8F2'/%3E%3Crect x='62' y='56' width='6' height='3' rx='1' fill='%23F2668B' transform='rotate(-15 65 57)'/%3E%3Ccircle cx='40' cy='22' r='1.6' fill='%23FFF8F2'/%3E%3Ccircle cx='84' cy='62' r='1.8' fill='%23F4C430'/%3E%3C/g%3E%3C/svg%3E")}.th-static-embers{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='110' viewBox='0 0 120 110'%3E%3Cg fill='%23E3A72F'%3E%3Ccircle cx='18' cy='80' r='1.8' opacity='.8'/%3E%3Ccircle cx='64' cy='40' r='1.4' opacity='.55'/%3E%3Ccircle cx='96' cy='88' r='2' opacity='.7'/%3E%3Ccircle cx='40' cy='100' r='1.4' opacity='.6'/%3E%3Ccircle cx='104' cy='24' r='1.2' opacity='.4'/%3E%3C/g%3E%3Cg fill='%23F08A24' opacity='.25'%3E%3Ccircle cx='18' cy='80' r='4.5'/%3E%3Ccircle cx='96' cy='88' r='5'/%3E%3C/g%3E%3C/svg%3E")}.th-titles{position:relative;z-index:2;max-width:66%;display:flex;flex-direction:column;align-items:center}.th-title{margin:0;text-align:center;text-wrap:balance;font-family:ui-rounded,SF Pro Rounded,Nunito,Varela Round,system-ui,sans-serif;font-weight:800;font-size:clamp(26px,7.6vw,38px);line-height:1.08;color:var(--th-header-ink);text-shadow:0 2px 0 rgba(0,0,0,.18)}.th-subtitle{margin-top:6px;font-family:ui-rounded,SF Pro Rounded,Nunito,system-ui,sans-serif;font-weight:700;font-size:16px;color:var(--th-header-ink);opacity:.92}.th-menu{position:absolute;z-index:4;top:calc(30px + var(--safe-top));left:10px;background:#fff8ec29;color:var(--th-header-ink);border:0;border-radius:10px;width:36px;height:32px;font-size:18px}.th-top{position:absolute;z-index:3;top:calc(var(--safe-top) - 2px);left:0;width:100%;height:44px;pointer-events:none;overflow:visible}.th-top-lights{height:30px}.th-top-utensils{height:80px}.th-gingham{height:16px;top:var(--safe-top);background-color:#fff;background-image:linear-gradient(90deg,rgba(215,55,47,.55) 50%,transparent 50%),linear-gradient(rgba(215,55,47,.55) 50%,transparent 50%);background-size:16px 16px;box-shadow:0 2px 4px #00000059}.th-header.th-bbq{padding-top:calc(40px + var(--safe-top))}.th-top.moving .th-bit{transform-box:fill-box;transform-origin:50% 0}.th-top-lights.moving .th-bit{animation:th-twinkle var(--th-motion, 2.6s) ease-in-out infinite}.th-top-leaves.moving .th-bit,.th-top-bunting.moving .th-bit{animation:th-sway var(--th-motion, 3s) ease-in-out infinite}.th-top-pennants.moving .th-bit{animation:th-flutter var(--th-motion, 2s) ease-in-out infinite}@keyframes th-twinkle{0%,to{opacity:1}50%{opacity:.45}}@keyframes th-sway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@keyframes th-flutter{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}.th-particles{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}.th-counter{position:absolute;z-index:2;left:0;right:0;bottom:0;height:9px;background:linear-gradient(#c9a27a,#9a6233);box-shadow:0 -1px #ffffff40;pointer-events:none}.th-pip{position:absolute;z-index:3;right:4px;bottom:-10px;width:132px;height:170px;padding:0;border:0;background:none;pointer-events:none;transform-origin:50% 100%}.th-recipe .th-pip{bottom:2px;height:164px}.th-pip.settled{pointer-events:auto;cursor:pointer}.th-pip-hit{display:none}.th-header.th-gameday{overflow:visible;z-index:2;background-color:#2e7d32;height:calc(max(210px,30vh) + var(--safe-top))}.th-art{position:absolute;left:0;right:0;top:var(--safe-top);bottom:0;width:100%;height:calc(100% - var(--safe-top));object-fit:cover;object-position:left center;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0}.th-gameday .th-titles{position:absolute;left:calc(58 / 390 * 100%);top:calc(var(--safe-top) + (100% - var(--safe-top)) / 2);transform:translateY(-50%);max-width:min(300px,calc(100% - 58 / 390 * 100% - 12px));align-items:flex-start}.th-gameday .th-title{font-size:30px;line-height:1.15;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;color:#fff8ec;text-wrap:nowrap}.th-gameday .th-pip{bottom:-33px;height:min(132px,calc(50% - var(--safe-top) / 2 + 14px));width:120px;right:2px}.th-gameday .th-pip.settled{pointer-events:none}.th-gameday .th-pip-hit{display:block;position:absolute;left:0;right:0;top:0;height:75%}.th-gameday .th-pip.settled .th-pip-hit{pointer-events:auto}.th-gameday .th-pip img{pointer-events:none}.th-gameday .th-menu{top:calc(26px + var(--safe-top));left:6px;background:#0b2e148c}.th-pip img{position:absolute;bottom:0;right:0;height:100%;width:auto;max-width:none;opacity:0;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.th-pip img.on{opacity:1}.th-pip.entering{animation:th-runin .6s ease-out both}.th-pip.wiggle{animation:th-wiggle .45s ease-in-out}@keyframes th-runin{0%{transform:translate(110vw)}70%{transform:translate(-10px) translateY(-8px)}85%{transform:translate(0) translateY(0)}92%{transform:translateY(-4px)}to{transform:none}}@keyframes th-wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-6deg)}50%{transform:rotate(5deg)}75%{transform:rotate(-3deg)}}.themed .tabs button{background:var(--th-page);border-color:color-mix(in srgb,var(--th-circle) 55%,transparent);color:var(--th-ink);font-weight:600}.themed .tabs button.active{background:var(--th-accent);border-color:var(--th-accent);color:var(--th-accent-ink);font-weight:700}.themed .shop-row{background:var(--th-page);border-color:color-mix(in srgb,var(--th-circle) 35%,transparent)}.themed .add-row input{background:#fff;border-color:color-mix(in srgb,var(--th-circle) 45%,transparent)}.th-add{flex:none;width:48px;height:48px;border-radius:50%;border:0;background:var(--th-add);color:var(--th-add-ink);font-size:30px;line-height:1;font-weight:700;box-shadow:0 4px 10px color-mix(in srgb,var(--th-add) 45%,transparent)}.th-check{position:relative}.th-check input{position:absolute;opacity:0;width:34px;height:36px;margin:0;left:0}.th-checkicon{flex:none;pointer-events:none;overflow:visible}.themed .shop-check .item-text{color:var(--th-ink)}.themed .shop-row.done .shop-check .item-text{color:var(--th-ink);text-decoration:line-through;text-decoration-thickness:2px;text-decoration-color:color-mix(in srgb,var(--th-strike) 70%,transparent);opacity:.9}.themed .loc-tag{background:color-mix(in srgb,var(--th-circle) 18%,transparent);color:var(--th-ink)}.themed .card{background:var(--th-page);border-color:color-mix(in srgb,var(--th-circle) 35%,transparent)}.themed .section-head,.themed .hint{color:color-mix(in srgb,var(--th-ink) 70%,transparent)}body[data-list-theme=christmas] .bottom-nav a.active{color:#b8862a}body[data-list-theme=thanksgiving] .bottom-nav a.active{color:#e07a2e}body[data-list-theme=birthday] .bottom-nav a.active{color:#f2668b}body[data-list-theme=gameday] .bottom-nav a.active{color:#c79600}body[data-list-theme=bbq] .bottom-nav a.active{color:#d7372f}body[data-list-theme=recipe] .bottom-nav a.active{color:#c8643b}.themed .chip-count{background:none;padding:0 0 0 4px;font-size:inherit;font-weight:700}.themed .tabs button.active .chip-count{background:none}.themed .shop-row{padding:8px 6px 8px 10px;gap:6px}.themed .shop-row .del{width:28px;height:32px;color:color-mix(in srgb,var(--th-ink) 55%,transparent)}.themed .shop-check .item-text{font-size:16px}.themed .store-tag{font-size:11px;padding:2px 5px}.starter-list{list-style:none;margin:6px 0 0;padding:0 0 0 34px;display:grid;gap:2px;max-height:32vh;overflow-y:auto}.starter-list .shop-check{font-size:15px;min-height:32px}@media(prefers-reduced-motion:reduce){.th-particles{display:none}.th-top .th-bit,.th-pip.entering,.th-pip.wiggle{animation:none!important}}.owned-note{border:1px solid #e6c46a;background:#fff8e1;border-radius:12px;padding:10px 12px;display:grid;gap:8px;font-size:15px}.owned-actions{justify-content:flex-start;flex-wrap:wrap}.owned-qty .row{gap:10px;flex-wrap:wrap}.owned-hint{margin:-4px 2px 8px;font-size:14px;color:var(--muted)}.have-results{list-style:none;margin:0;padding:0;display:grid;gap:6px}.have-results li{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff}.have-summary{margin:0 2px 8px;font-size:14px}.have-link{display:flex;justify-content:flex-end;margin:-6px 2px 6px}.expiry-block{display:grid;gap:8px}.scan-date-review button{min-height:44px;min-width:44px}.scan-date-review:focus{outline:2px solid currentColor;outline-offset:2px}.expiry-block .date-row{align-items:stretch}.expiry-text{flex:1;min-width:0;font:inherit;font-size:16px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;resize:none;text-transform:uppercase}.expiry-buttons{display:flex;flex-direction:column;gap:6px}.expiry-buttons .btn{white-space:nowrap;padding:6px 10px}.expiry-chip{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:8px 12px;border-radius:12px;background:#e8f5e9;border:1px solid #a5d6a7;font-size:15px}.expiry-chip.flagged{background:#fff8e1;border-color:#e6c46a}.expiry-chip>div{flex-basis:100%}.expiry-block .date-row{align-items:center}.scan-date-btn{white-space:nowrap}.reading-date{display:flex;align-items:center;gap:8px;font-size:15px;color:var(--muted)}.reading-pip{border-radius:50%;animation:reading-spin .9s linear infinite}@keyframes reading-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.reading-pip{animation:none}}.pip-state{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 8px;text-align:center}.pip-state-title{margin:0;font-weight:600}.pip-face{border-radius:22%}.pip-spin{animation:reading-spin 1.1s linear infinite}@media(prefers-reduced-motion:reduce){.pip-spin{animation:none}}.settings-links{display:grid;gap:2px}.row-link{display:flex;justify-content:space-between;align-items:center;width:100%;padding:12px 4px;background:none;border:0;border-top:1px solid var(--line);font:inherit;font-size:16px;color:var(--ink);text-decoration:none;text-align:left;cursor:pointer;min-height:44px}.settings-links h2+.row-link{border-top:0}.danger-text span:first-child{color:var(--red, #b3261e)}.back-link{display:inline-block;margin-bottom:4px;text-decoration:none}.trash-row,.code-row{display:flex;align-items:center;gap:8px;padding:10px 8px;border:1px solid var(--line);border-radius:12px;background:#fff;margin-bottom:8px}.small-btn{padding:6px 10px;font-size:14px;min-height:36px}.code-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:17px;font-weight:700;letter-spacing:1px}.plain-list{margin:0;padding-left:20px;display:grid;gap:8px}.item-row .item-del{flex:none;width:30px;height:36px;color:var(--muted)}.app-update{position:fixed;top:max(12px,env(safe-area-inset-top));left:12px;right:12px;z-index:1000;text-align:center}.scan-camera-help{position:absolute;top:calc(76px + var(--safe-top));bottom:calc(100px + var(--safe-bottom));left:12px;right:12px;overflow-y:auto;color:var(--ink);z-index:2}.scan-camera-help .pip-state{padding:12px}.password-field{display:flex;align-items:flex-end;gap:8px}.password-field label{flex:1;min-width:0}.password-field button,.auth button,.google-sign-in button{min-height:44px}.google-sign-in{margin-top:20px}.google-sign-in>div{min-height:44px}.google-sign-in>div[aria-label="Continue with Google"]{zoom:1.1}.inventory-sort{display:flex;align-items:center;gap:12px;margin:12px 0}.inventory-sort select{min-height:44px}.item-row{-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}.card.stack label{display:flex;flex-direction:column;gap:6px}.card.stack label.shop-check{flex-direction:row;min-height:44px}.card.stack select{min-height:44px}.card.stack input:not([type=checkbox]),.dialog input[type=number],.card.stack select{min-height:46px;font:inherit;padding:10px}.item-row .item-del{min-width:44px;min-height:44px}.dialog .chip,.dialog .link{min-height:44px}button:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:2px}.store-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:0 0 20px;border-radius:50%;font-size:12px;font-weight:700;margin-right:6px;vertical-align:middle}.store-color{font-size:12px}.store-color input{min-width:44px;min-height:44px;padding:3px}.card .link{min-height:44px}.quick-tour svg{width:100%;max-height:200px}.quick-tour button,.invite-actions a,.invite-actions button{min-height:44px;min-width:44px}.quick-tour{touch-action:pan-y}.tour-animated .tour-item{animation:tour-land 3.6s ease both}.tour-animated .scan-line{animation:tour-scan 1.8s ease-in-out infinite}@keyframes tour-land{0%{transform:translateY(-12px);opacity:.3}40%,to{transform:translateY(0);opacity:1}}@keyframes tour-scan{50%{transform:translateY(25px)}}@media(prefers-reduced-motion:reduce){.quick-tour *{animation:none!important;transition:none!important}}.invite-actions{flex-wrap:wrap}.invite-actions input{width:100%}.install-steps summary{min-height:44px;cursor:pointer;display:list-item;padding:12px 0}.auth>.link{min-height:44px;min-width:44px}a:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid var(--green);outline-offset:2px}.code-row{display:flex;flex-direction:column;align-items:stretch;min-width:0}.code-header{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.code-text{white-space:nowrap;flex-shrink:0}.code-controls{display:flex;gap:6px;flex-shrink:0}.code-meta{width:100%;overflow-wrap:anywhere}.invite-actions{display:flex;flex-direction:column;gap:8px;width:100%;min-width:0}.invite-buttons{display:flex;flex-wrap:wrap;gap:8px}.invite-buttons .btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;min-height:44px}.invite-actions input{width:100%;min-width:0;text-overflow:ellipsis}.household-link .code-text{font-size:14px}.usage-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.85rem}.usage-table th,.usage-table td{text-align:left;padding:8px 4px;overflow-wrap:anywhere;border-bottom:1px solid var(--border, #ddd)}
