@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f4f0e9;--surface:#fffdf9;--surface-2:#ece6dc;--ink:#1f1c18;--muted:#6d665c;--faint:#9d958a;--line:#e3dccf;--photo:#f1ede6;--accent:#a24f29;--accent-ink:#fff8f2;--accent-soft:#f2e1d5;--good:#2b7553;--good-soft:#dcefe4;--up:#9a5b12;--up-soft:#f6e8d2;--danger:#b3261e;--shadow:0 1px 2px #1f1c180d, 0 6px 20px #1f1c180f;--shadow-lg:0 20px 60px #1f1c1838;--radius:18px;--display:"Fraunces Variable", "Iowan Old Style", Georgia, serif;--sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#141210;--surface:#1e1b18;--surface-2:#2a2622;--ink:#f2ede6;--muted:#aaa196;--faint:#7d756b;--line:#2f2b27;--photo:#e9e4dc;--accent:#e3916a;--accent-ink:#1e120b;--accent-soft:#3b271b;--good:#72c79f;--good-soft:#1b3428;--up:#e6b46d;--up-soft:#3a2d18;--danger:#ff8a80;--shadow:0 1px 2px #0000004d;--shadow-lg:0 20px 60px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{background:var(--bg);min-height:100dvh;color:var(--ink);font:15px/1.45 var(--sans);-webkit-font-smoothing:antialiased;margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:13px}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.btn{white-space:nowrap;border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 20px;font-weight:600;text-decoration:none;transition:transform .15s,background .2s,opacity .2s;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:default}.btn--primary{background:var(--accent);color:var(--accent-ink)}.btn--soft{background:var(--surface-2);color:var(--ink)}.btn--ghost{color:var(--muted);background:0 0}.btn--danger{color:var(--danger)}.btn--sm{min-height:38px;padding:0 14px;font-size:14px}.btn--block{width:100%}.icon-btn{width:40px;height:40px;color:var(--muted);background:0 0;border:0;border-radius:999px;flex:none;place-items:center;transition:background .2s;display:inline-grid}.icon-btn:hover{background:var(--surface-2)}.icon-btn:disabled{opacity:.3}.icon-btn--soft{background:var(--surface-2);color:var(--ink)}.icon-btn--danger{color:var(--danger)}.link-btn{color:var(--accent);background:0 0;border:0;align-items:center;gap:6px;padding:4px 0;font-size:14px;font-weight:500;display:inline-flex}.link-btn--danger{color:var(--danger)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.input{border:1px solid var(--line);background:var(--surface);appearance:none;border-radius:12px;width:100%;min-height:46px;padding:11px 14px;font-size:16px;transition:border-color .2s}.input:focus{border-color:var(--accent);outline:none}textarea.input{resize:vertical;min-height:84px}select.input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%239d958a' stroke-width='1.8'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;padding-right:36px}.input--sm{min-height:40px;padding:8px 12px}.input--icon{padding-left:40px}.input--currency{flex:none;width:96px}.input--emoji{text-align:center;flex:none;width:48px;min-height:40px;padding:6px}.input-row{align-items:center;gap:8px;display:flex;position:relative}.input-icon{color:var(--faint);pointer-events:none;display:flex;position:absolute;top:50%;left:13px;transform:translateY(-50%)}.form{gap:18px;display:grid}.field{gap:6px;min-width:0;display:grid}.field__label{color:var(--muted);font-size:13px;font-weight:600}.field__hint{color:var(--faint);font-size:12px}.grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=420px){.grid-2{grid-template-columns:1fr}}.form-error{color:var(--danger);font-size:14px}.note{color:var(--muted);font-size:13px}.note--ok{color:var(--good)}.link-box{background:var(--accent-soft);border-radius:16px;justify-items:start;gap:10px;padding:14px;display:grid}.link-box .field{width:100%}.photo-edit{align-items:center;gap:14px;display:flex}.photo-edit__preview{border-radius:14px;flex:none;width:104px}.photo-edit__actions{flex:1;justify-items:start;gap:6px;min-width:0;display:grid}.segmented{background:var(--surface-2);border-radius:14px;grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;padding:4px;display:grid}.segmented button{min-height:38px;color:var(--muted);background:0 0;border:0;border-radius:10px;padding:6px 8px;font-size:13px;font-weight:600;line-height:1.2}.segmented button.is-on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.switch-row{border:1px solid var(--line);cursor:pointer;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.switch-row__text{grid-template-columns:auto 1fr;align-items:center;column-gap:10px;font-weight:500;display:grid}.switch-row__text small{color:var(--faint);grid-column:2;font-size:12px;font-weight:400}.switch{appearance:none;background:var(--surface-2);cursor:pointer;border-radius:999px;flex:none;width:50px;height:30px;margin:0;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.switch:checked{background:var(--accent)}.switch:checked:after{transform:translate(20px)}.auth{place-items:center;min-height:100dvh;padding:24px;display:grid}.auth__card{text-align:center;justify-items:center;gap:14px;width:min(380px,100%);display:grid}.auth__card .input{text-align:center}.auth__title{font:600 32px/1.1 var(--display);letter-spacing:-.02em;margin-top:6px}.auth__text{color:var(--muted);margin-bottom:8px}.logo{border-radius:24%;flex:none;box-shadow:0 6px 18px #a24f2940}.app{max-width:1240px;padding-bottom:calc(110px + var(--safe-b));margin:0 auto}.top{z-index:10;padding:calc(10px + var(--safe-t)) 16px 0;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(18px);position:sticky;top:0}.top__row{justify-content:space-between;align-items:center;gap:12px;padding:4px 0 10px;display:flex}.top__actions{align-items:center;gap:2px;display:flex}.top__actions .btn{margin-left:8px}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand .logo{box-shadow:none;border-radius:10px}.brand__title{font:600 28px/1 var(--display);letter-spacing:-.025em;font-variation-settings:"opsz" 72}.sync-ok{color:var(--good)}.sync-warn{color:var(--up)}.tabs{border-bottom:1px solid var(--line);gap:22px;display:flex}.tabs button{color:var(--faint);background:0 0;border:0;padding:8px 0 11px;font-size:16px;font-weight:600;position:relative}.tabs button span{margin-left:3px;font-size:13px;font-weight:500}.tabs button.is-on{color:var(--ink)}.tabs button.is-on:after{content:"";background:var(--ink);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:0;right:0}.toolbar{gap:8px;padding-top:12px;display:flex}.search{background:var(--surface-2);min-width:0;height:42px;color:var(--faint);border-radius:12px;flex:1;align-items:center;gap:8px;padding:0 12px;display:flex}.search input{min-width:0;height:100%;color:var(--ink);background:0 0;border:0;outline:none;flex:1;font-size:16px}.search input::-webkit-search-cancel-button{display:none}.search button{color:var(--faint);background:0 0;border:0;padding:4px;display:flex}.sort{background:var(--surface-2);height:42px;color:var(--muted);border-radius:12px;align-items:center;display:flex;position:relative}.sort svg{pointer-events:none;position:absolute;left:12px}.sort select{max-width:170px;height:100%;color:var(--ink);appearance:none;background:0 0;border:0;outline:none;padding:0 12px 0 34px;font-size:14px;font-weight:500}@media (width<=480px){.sort{width:42px}.sort select{opacity:0;max-width:none;position:absolute;inset:0}}.chips{scrollbar-width:none;gap:8px;margin:0 -16px;padding:12px 16px;scroll-padding:16px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--line);background:var(--surface);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:6px;height:36px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex}.chip span:last-child{color:var(--faint);font-size:12px}.chip.is-on{border-color:var(--ink);background:var(--ink);color:var(--bg)}.chip.is-on span:last-child{color:inherit;opacity:.6}.content{padding:4px 16px 0}.summary{color:var(--muted);margin:4px 0 14px;font-size:14px}.summary strong{color:var(--ink);font:600 15px var(--display)}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (width>=640px){.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}}@media (width>=980px){.grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}}@media (width>=1200px){.grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.card{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);text-align:left;border:0;flex-direction:column;padding:0;transition:transform .2s;animation:.35s both rise;display:flex;overflow:hidden}.card:active{transform:scale(.98)}@media (hover:hover){.card:hover{transform:translateY(-2px)}.card:hover .photo img{transform:scale(1.04)}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.card--done .photo img{filter:grayscale(.35)}.card__media{position:relative}.card__badges{gap:4px;display:flex;position:absolute;top:8px;left:8px}.card__badges--end{left:auto;right:8px}.badge{color:#3b352e;background:#ffffffeb;border-radius:999px;justify-content:center;align-items:center;gap:3px;min-width:24px;height:24px;padding:0 6px;font-size:11.5px;font-weight:700;display:inline-flex;box-shadow:0 1px 3px #00000014}.badge--accent{color:#fff;background:#a24f29}.badge--good{color:#fff;background:#2b7553}.badge--up{color:#8a4f0c;background:#f6e8d2}.photo{aspect-ratio:4/5;background:var(--photo);place-items:center;display:grid;position:relative;overflow:hidden}.photo img{object-fit:contain;mix-blend-mode:multiply;width:100%;height:100%;padding:9%;transition:transform .4s}.photo__fallback{color:#b0a89c;place-items:center;font-size:40px;display:grid}.card__body{gap:2px;padding:11px 13px 13px;display:grid}.card__brand{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:700;overflow:hidden}.card__name{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14.5px;line-height:1.3;display:-webkit-box;overflow:hidden}.card__meta{justify-content:space-between;align-items:baseline;gap:8px;margin-top:5px;display:flex}.card__price{font:600 17px var(--display);letter-spacing:-.01em;white-space:nowrap}.card__store{color:var(--faint);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.empty{text-align:center;color:var(--muted);justify-items:center;gap:12px;padding:60px 24px;display:grid}.empty h2{font:600 24px var(--display);color:var(--ink);margin-top:4px}.empty p{max-width:340px}.empty .btn{margin-top:8px}.empty--full{place-items:center;min-height:100dvh}.fab{right:20px;bottom:calc(22px + var(--safe-b));z-index:20;background:var(--accent);width:60px;height:60px;color:var(--accent-ink);border:0;border-radius:50%;place-items:center;transition:transform .15s;display:grid;position:fixed;box-shadow:0 10px 28px #a24f2966}.fab:active{transform:scale(.92)}@media (width>=760px){.mobile-only{display:none!important}.top,.content{padding-left:32px;padding-right:32px}.chips{margin:0 -32px;padding:14px 32px}.brand__title{font-size:32px}}@media (width<=759px){.desktop-only{display:none!important}}.sheet-backdrop{z-index:50;background:#1412106b;justify-content:center;align-items:flex-end;animation:.2s fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.sheet{width:100%;max-height:calc(100dvh - var(--safe-t) - 18px);background:var(--surface);box-shadow:var(--shadow-lg);border-radius:24px 24px 0 0;flex-direction:column;animation:.32s cubic-bezier(.2,.9,.3,1) up;display:flex}@keyframes up{0%{opacity:.4;transform:translateY(40px)}}.sheet__grip{background:var(--line);border-radius:3px;width:38px;height:5px;margin:8px auto 0}.sheet__head{justify-content:space-between;align-items:center;gap:12px;padding:6px 12px 6px 20px;display:flex}.sheet__title{color:var(--muted);font-size:15px;font-weight:600}.sheet__body{overscroll-behavior:contain;flex:1;padding:8px 20px 24px;overflow-y:auto}.sheet__foot{padding:12px 20px calc(12px + var(--safe-b));border-top:1px solid var(--line);justify-content:flex-end;gap:8px;display:flex}.sheet__foot .btn--primary{flex:1;max-width:260px}.sheet__body:last-child{padding-bottom:calc(28px + var(--safe-b))}@media (width>=760px){.sheet-backdrop{align-items:center;padding:32px}.sheet{border-radius:24px;width:560px;max-height:min(880px,100dvh - 64px);animation-name:pop}.sheet--lg{width:920px}.sheet__grip{display:none}.sheet__head{padding-top:12px}@keyframes pop{0%{opacity:0;transform:scale(.97)}}}.detail{gap:20px;display:grid}.detail__photo{aspect-ratio:1;border-radius:18px;width:100%;max-height:46dvh}.detail__main{align-content:start;gap:10px;display:grid}.detail__brand{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.detail__name{font:600 26px/1.15 var(--display);letter-spacing:-.02em}.detail__variant{color:var(--muted)}.detail__price-row{flex-wrap:wrap;align-items:center;gap:10px;margin:4px 0 2px;display:flex}.detail__price{font:600 28px var(--display);letter-spacing:-.02em}.pill{border-radius:999px;padding:4px 10px;font-size:12.5px;font-weight:600}.pill--good{background:var(--good-soft);color:var(--good)}.pill--up{background:var(--up-soft);color:var(--up)}.detail__target{color:var(--muted);align-items:center;gap:7px;margin-bottom:6px;font-size:14px;display:flex}.detail__target.is-hit{color:var(--good);font-weight:600}.actions,.row-actions{flex-wrap:wrap;gap:8px;display:flex}.actions{margin-top:4px}.buy-box{background:var(--good-soft);border-radius:16px;grid-template-columns:1fr 1fr;gap:10px;padding:14px;display:grid}.facts{border-top:1px solid var(--line);margin:8px 0 0;display:grid}.facts div{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;padding:11px 0;font-size:14px;display:flex}.facts dt{color:var(--muted)}.facts dd{text-align:right;align-items:center;gap:6px;margin:0;font-weight:500;display:flex}.detail__block{gap:8px;margin-top:8px;display:grid}.detail__h{letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-size:13px;font-weight:700}.detail__notes{white-space:pre-wrap}.chart{width:100%;height:auto;overflow:visible}.history{margin:0;padding:0;font-size:14px;list-style:none}.history li{color:var(--muted);justify-content:space-between;padding:6px 0;display:flex}.history strong{color:var(--ink);font-weight:600}@media (width>=760px){.detail{grid-template-columns:1fr 1fr;gap:28px}.detail__photo{max-height:none;position:sticky;top:0}}.settings{gap:28px;display:grid}.settings section{gap:10px;display:grid}.settings__h{letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-size:13px;font-weight:700}.sync-card{background:var(--surface-2);border-radius:16px;align-items:center;gap:12px;padding:12px 12px 12px 14px;display:flex}.sync-card>div{flex:1;min-width:0}.sync-card__title{font-size:14px;font-weight:500}.sync-card__icon{color:var(--up);display:flex}.sync-card__icon.is-ok{color:var(--good)}.cat-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.cat-row{align-items:center;gap:4px;display:flex}.cat-row .input--sm{flex:1;min-width:0;margin-left:4px}.cat-row__count{text-align:center;min-width:28px;color:var(--faint);font-size:12px}.cat-row .icon-btn{width:34px;height:34px}.bookmarklet{border:1.5px dashed var(--accent);color:var(--accent);cursor:grab;border-radius:999px;justify-self:start;padding:8px 16px;font-weight:600;text-decoration:none}.pwd-form{grid-template-columns:1fr 1fr auto;gap:8px;display:grid}@media (width<=560px){.pwd-form{grid-template-columns:1fr}}.toast{left:50%;bottom:calc(96px + var(--safe-b));z-index:80;background:var(--ink);max-width:calc(100vw - 32px);color:var(--bg);box-shadow:var(--shadow-lg);border-radius:14px;padding:12px 18px;font-size:14px;font-weight:500;animation:.3s toast;position:fixed;transform:translate(-50%)}@keyframes toast{0%{opacity:0;transform:translate(-50%,10px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
