:root{--bg:#0b0c0b;--surface:#171a19;--surface-2:#212523;--border:#2a2f2c;--text:#f1f4f2;--muted:#8d9490;--green:#27dd6d;--green-soft:#27dd6d24;--red:#ff4d4f;--red-soft:#ff4d4f21;--yellow:#f2b430;--yellow-soft:#f2b43021;--radius-sm:12px;--radius:16px;--control-h:52px;--gutter:20px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=light]{--bg:#f3f5f3;--surface:#fff;--surface-2:#ecefed;--border:#d5dad6;--text:#121613;--muted:#5f6764;--green-soft:#27dd6d2e;--red-soft:#ff4d4f1f;--yellow-soft:#f2b43029;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--bg);margin:0}body{min-height:100dvh;color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:15px;line-height:1.4}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}:focus-visible{outline:2px solid var(--green);outline-offset:2px}.form{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:7px;display:flex}.field__label{color:var(--muted);font-size:13px}.field__control{align-items:center;display:flex;position:relative}.field__input{width:100%;height:var(--control-h);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);outline:none;padding:0 16px;transition:border-color .15s,box-shadow .15s}.field__input::placeholder{color:#5f6764}.field__input:focus{box-shadow:0 0 0 3px var(--green-soft);border-color:#27dd6d80}.field__textarea{resize:vertical;height:auto;min-height:128px;padding:14px 16px}.field__input--with-action{padding-right:52px}.field--invalid .field__input{border-color:#ff4d4f8c}.field--invalid .field__input:focus{box-shadow:0 0 0 3px var(--red-soft)}.field__toggle{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--muted);place-items:center;transition:color .15s,background .15s;display:grid;position:absolute;right:6px}.field__toggle:hover{color:var(--text);background:var(--surface-2)}.field__hint,.field__error{font-size:12px}.field__hint{color:var(--muted)}.field__error{color:var(--red)}.btn{width:100%;height:var(--control-h);border-radius:var(--radius);justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:15px;font-weight:600;transition:transform .12s,background .15s,opacity .15s;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--green);color:#06210f;box-shadow:0 8px 20px #27dd6d38}.btn--ghost{border:1px solid var(--border);background:var(--surface);color:var(--text)}.btn--ghost:hover:not(:disabled){background:var(--surface-2)}.btn--link{width:auto;height:auto;color:var(--green);padding:0;font-size:14px;font-weight:600}.icon-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);width:36px;height:36px;color:var(--muted);place-items:center;transition:transform .12s,background .12s,color .12s;display:grid;position:relative}.icon-btn--danger{background:var(--red-soft);color:var(--red);border-color:#ff4d4f47}.icon-btn:active:not(:disabled){transform:scale(.92)}.icon-btn:disabled{cursor:not-allowed;opacity:.38}.alert{border-radius:var(--radius-sm);background:var(--red-soft);color:#ffb3b4;border:1px solid #ff4d4f4d;align-items:center;gap:10px;padding:12px 14px;font-size:13px;display:flex}.alert svg{width:18px;height:18px;color:var(--red);flex:none}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.dialog{z-index:50;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.dialog__backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0009;position:absolute;inset:0}.dialog__sheet{width:100%;max-width:430px;max-height:92dvh;padding:10px 20px calc(24px + env(safe-area-inset-bottom));border:1px solid var(--border);background:var(--surface);border-bottom:0;border-radius:24px 24px 0 0;animation:.22s sheet-in;position:relative;overflow-y:auto}@keyframes sheet-in{0%{transform:translateY(100%)}to{transform:none}}.dialog__grabber{background:var(--border);border-radius:2px;width:40px;height:4px;margin:0 auto 14px}.dialog__title{letter-spacing:-.01em;margin:0 0 18px;font-size:20px;font-weight:700}.dialog__subtitle{color:var(--muted);margin:-12px 0 18px;font-size:14px}.radios{border:0;flex-direction:column;gap:10px;margin:0;padding:0;display:flex}.radios .field__label{margin-bottom:4px;padding:0}.radio__option{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;align-items:center;gap:12px;padding:14px 16px;font-size:15px;display:flex}.radio__option:has(.radio__input:checked){background:var(--green-soft);border-color:#27dd6d80}.radio__input{width:20px;height:20px;accent-color:var(--green);flex:none;margin:0}.radio__extra{padding:14px 2px 4px}.writeoff{flex-direction:column;gap:14px;display:flex}.writeoff__product{align-items:center;gap:12px;display:flex}.writeoff__name{margin:0;font-size:18px;font-weight:700}.writeoff__stock{color:var(--muted);margin:4px 0 0;font-size:13px}.writeoff__label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:0;padding:0;font-size:11px;font-weight:700}.writeoff__note{color:var(--muted);margin:0;font-size:13px}.bulk-consume__list{flex-direction:column;gap:10px;max-height:min(48vh,360px);margin:0;padding:0;list-style:none;display:flex;overflow:auto}.bulk-consume__row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);align-items:center;gap:12px;padding:10px 12px;display:flex}.bulk-consume__body{min-width:0}.bulk-consume__name{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;font-weight:600;overflow:hidden}.writeoff__presets{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.preset{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);flex-direction:column;align-items:center;gap:2px;min-height:56px;padding:8px 4px;font-size:13px;font-weight:700;display:flex}.preset__amount{color:var(--muted);font-size:11px;font-weight:500}.preset.is-active{background:var(--green);color:#06210f;border-color:#0000}.preset.is-active .preset__amount{color:#06210f}.writeoff__counter{grid-template-columns:44px 1fr 44px auto;align-items:center;gap:8px;display:grid}.stepper{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);width:44px;height:44px;color:var(--text);place-items:center;display:grid}.stepper svg{width:18px;height:18px}.writeoff__input{border:2px solid var(--green);border-radius:var(--radius);background:var(--bg);width:100%;height:52px;color:var(--text);text-align:center;outline:none;font-size:28px;font-weight:700}.writeoff__counter.is-invalid .writeoff__input{border-color:var(--red)}.writeoff__unit{color:var(--muted);font-size:16px;font-weight:600}.writeoff__track{background:var(--surface-2);border-radius:999px;height:8px;overflow:hidden}.writeoff__fill{border-radius:inherit;background:var(--green);height:100%;display:block}.consume__row{align-items:center;gap:10px;display:flex}.consume__row .field__control{flex:1;min-width:0}.btn--compact{flex:none;width:auto;padding:0 16px}.field__input--with-suffix{padding-right:52px}.field__suffix{color:var(--muted);pointer-events:none;font-size:14px;position:absolute;right:16px}.dialog__row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.dialog__actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:6px;display:grid}.field__select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 20px) 22px,calc(100% - 14px) 22px;background-repeat:no-repeat;background-size:6px 6px,6px 6px;padding-right:38px}.field__stepper{grid-template-columns:var(--control-h) 1fr var(--control-h);gap:8px;display:grid}.field__stepper .stepper{width:var(--control-h);height:var(--control-h);border-radius:var(--radius)}.field__stepper .field__input,.field__stepper .field__date{min-width:0}.field__date{align-items:center;width:100%;min-width:0;display:flex;position:relative}.field__date .field__toggle{pointer-events:none}.field__date-picker{opacity:0;cursor:pointer;border:0;width:40px;height:40px;padding:0;position:absolute;right:6px}.field__date-picker::-webkit-calendar-picker-indicator{cursor:pointer;width:40px;height:40px}.dialog--page{background:var(--bg);align-items:stretch}.dialog--page .add{width:100%;max-width:430px;padding:calc(10px + env(safe-area-inset-top)) 16px calc(20px + env(safe-area-inset-bottom));margin:0 auto;overflow-y:auto}.add__head{align-items:center;gap:12px;margin-bottom:16px;display:flex}.add__head .icon-btn{width:40px;height:40px;color:var(--text);border-radius:50%}.add__title{letter-spacing:-.01em;margin:0;font-size:20px;font-weight:700}.method{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);grid-template-columns:1fr 1fr 1fr;gap:6px;margin-bottom:18px;padding:5px;display:grid}.method__item{border-radius:var(--radius-sm);height:40px;color:var(--muted);justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.method__item svg{width:16px;height:16px}.method__item.is-active{background:var(--green);color:#06210f}.add__form .field__label{letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:700}.add__form{padding-bottom:8px}.places{border:0;margin:0;padding:0}.places__grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.place{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:76px;color:var(--text);text-align:center;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;font-size:11px;font-weight:600;display:flex}.place__icon{width:28px;height:28px;color:var(--muted);place-items:center;display:grid}.place__icon svg{width:20px;height:20px}.place.is-active{background:var(--green);color:#06210f;border-color:#0000}.place.is-active .place__icon{color:#06210f}@media (width>=480px){.dialog--page{background:#0000008c;align-items:center}.dialog--page .add{border:1px solid var(--border);background:var(--bg);border-radius:24px;max-height:92dvh;padding:20px;box-shadow:0 30px 70px #00000080}}.notifications__panel{flex-direction:column;gap:22px;min-height:140px;margin-top:14px;margin-bottom:18px;display:flex}.notifications__empty{color:var(--muted);margin:0;font-size:15px}.notifications__head{letter-spacing:.05em;text-transform:uppercase;align-items:center;gap:6px;margin:0 0 10px;font-size:12px;font-weight:700;display:flex}.notifications__head svg{width:15px;height:15px}.notifications__group--expired .notifications__head{color:var(--red)}.notifications__group--soon .notifications__head{color:var(--yellow)}.notifications__list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.notifications__item{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:12px 14px;font-size:15px}.news__head{align-items:flex-start;gap:12px;margin-bottom:18px;display:flex}.news__head .icon-btn{width:40px;height:40px;color:var(--text);border-radius:50%;flex:none}.news__head .dialog__title{margin:4px 0 0}.news__list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.news__item{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--text);text-align:left;align-items:center;gap:12px;padding:14px 16px;display:flex}.news__item--seen{color:var(--muted)}.news__dot{background:var(--green);border-radius:50%;flex:none;width:8px;height:8px}.news__item--seen .news__dot{box-shadow:inset 0 0 0 1.5px var(--border);background:0 0}.news__header{font-size:15px;font-weight:600}.news__item--seen .news__header{font-weight:500}.news__body{color:var(--text);white-space:pre-wrap;margin:0;font-size:15px;line-height:1.5}.field:has(.suggest){z-index:6;position:relative}.suggest{position:relative}.suggest__list{z-index:8;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);max-height:240px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 18px 40px #00000080}.suggest__option{border-radius:var(--radius-sm);text-align:left;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:10px 12px;display:flex}.suggest__option.is-active{background:var(--green-soft)}.suggest__name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.suggest__meta{color:var(--muted);flex:none;font-size:12px}.feedback__photos{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.feedback__photo,.feedback__add{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);position:relative;overflow:hidden}.feedback__photo img{object-fit:cover;width:100%;height:100%;display:block}.feedback__remove{color:#fff;background:#0000009e;border-radius:50%;place-items:center;width:28px;height:28px;display:grid;position:absolute;top:6px;right:6px}.feedback__remove svg{width:14px;height:14px}.feedback__add{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex}.feedback__add svg{width:20px;height:20px}.feedback__add span{align-items:center;gap:2px;display:inline-flex}.feedback__add span svg{width:12px;height:12px}.feedback__file{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}@media (width>=480px){.dialog{align-items:center}.dialog__sheet{border:1px solid var(--border);border-radius:24px;max-width:420px;padding:24px;animation:none;box-shadow:0 30px 70px #00000080}.dialog__grabber{display:none}}.pantry{--gutter:16px;--app-max:430px;--tabbar-h:62px;--version-h:18px;--dock-h:calc(var(--tabbar-h) + var(--version-h));min-height:100dvh}.pantry__app{max-width:var(--app-max);padding-bottom:calc(var(--dock-h) + 96px + env(safe-area-inset-bottom));margin:0 auto}.app-header{z-index:20;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0}.topbar{padding:calc(14px + env(safe-area-inset-top)) var(--gutter) 12px;justify-content:space-between;align-items:center;gap:12px;display:flex}.topbar__name{letter-spacing:-.01em;margin:0;font-size:22px;font-weight:700}.topbar__actions{gap:8px;display:flex}.icon-btn--round{width:40px;height:40px;color:var(--text);border-radius:50%}.icon-btn__badge{border:2px solid var(--bg);background:var(--red);color:#fff;text-align:center;border-radius:9px;min-width:18px;height:18px;padding:0 4px;font-size:10px;font-weight:700;line-height:14px;position:absolute;top:-3px;right:-3px}.app-header__plan{padding:0 var(--gutter) 12px}.plan-banner{flex-direction:column;gap:10px;display:flex}.plan-card{border-radius:var(--radius);background:linear-gradient(90deg, #27dd6d14, transparent 62%), var(--surface);border:1px solid #27dd6d29;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex}.plan-card__info{text-align:left;align-items:center;gap:12px;min-width:0;display:flex}.plan-card__icon{color:var(--green);flex-shrink:0;place-items:center;display:grid}.plan-card__icon svg{width:22px;height:22px}.plan-card__text{flex-direction:column;gap:2px;min-width:0;display:flex}.plan-card__date{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;overflow:hidden}.plan-card__eta{color:var(--muted);font-size:12px}.plan-card__calc{background:var(--green);color:#06210f;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;gap:6px;height:36px;padding:0 14px;font-size:13px;font-weight:700;display:inline-flex}.plan-card__calc svg{width:16px;height:16px}.plan-card__calc:active{transform:scale(.96)}.content{padding:0 var(--gutter);flex-direction:column;gap:16px;display:flex}.stats{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.stat{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:center;padding:14px 8px}.stat__value{margin:0;font-size:24px;font-weight:700;line-height:1}.stat__value--ok{color:var(--green)}.stat__value--warning{color:var(--yellow)}.stat__value--danger{color:var(--red)}.stat__label{color:var(--muted);margin:6px 0 0;font-size:11px}.search{align-items:center;display:flex;position:relative}.search__icon{color:var(--muted);pointer-events:none;position:absolute;left:14px}.search__input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);outline:none;width:100%;height:48px;padding:0 14px 0 44px}.search__input::placeholder{color:var(--muted)}.search__input:focus{border-color:#27dd6d73}.search__input::-webkit-search-cancel-button{filter:grayscale()brightness(2.4)}.chips{margin:0 calc(var(--gutter) * -1);padding:2px var(--gutter);overscroll-behavior-x:contain;scrollbar-width:none;scroll-snap-type:x proximity;scroll-padding:0 var(--gutter);-webkit-overflow-scrolling:touch;gap:8px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.filters{flex-direction:column;gap:8px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);height:34px;color:var(--text);scroll-snap-align:start;border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;transition:transform .12s;display:inline-flex}.chip:active{transform:scale(.95)}.chip.is-active{background:var(--green);color:#06210f;border-color:#0000;font-weight:600}.groups{flex-direction:column;gap:22px;display:flex}.group__head{letter-spacing:.05em;text-transform:uppercase;align-items:center;gap:6px;margin:0 0 10px;font-size:12px;font-weight:700;display:flex}.group__head svg{width:15px;height:15px}.group--expired .group__head{color:var(--red)}.group--soon .group__head{color:var(--yellow)}.group--fresh .group__head{color:var(--muted)}.group__list{flex-direction:column;gap:10px;display:flex}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px;display:grid}.card--expired{background:linear-gradient(180deg, #ff4d4f12, transparent), var(--surface);border-color:#ff4d4f66}.card--selected{border-color:color-mix(in srgb, var(--green) 55%, var(--border));background:linear-gradient(180deg, #27dd6d1a, transparent), var(--surface);box-shadow:0 0 0 1px color-mix(in srgb, var(--green) 35%, transparent)}.selection-hint{color:var(--green);margin:-4px 0 12px;font-size:12px;font-weight:600}.chip--move:not(:disabled){border-style:dashed}.card__thumb{border-radius:var(--radius-sm);border:2px solid #0000;place-items:center;width:44px;height:44px;font-size:20px;transition:border-color .12s,transform .12s,box-shadow .12s;display:grid}.card__thumb:active{transform:scale(.94)}.card__thumb.is-selected{border-color:var(--green);box-shadow:0 0 0 2px color-mix(in srgb, var(--green) 35%, transparent)}.card__thumb--dairy{background:#3884ff2e}.card__thumb--meat{background:#ff4d4f2e}.card__thumb--grocery{background:#f2b4302e}.card__thumb--sauce{background:#a855f733}.card__thumb--eggs{background:#facc152e}.card__thumb--bread{background:#d9770638}.card__body{min-width:0}.card__title{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:15px;font-weight:600;overflow:hidden}.card__title-btn{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:block}.card__title-btn:disabled{cursor:default}.card__title-btn:not(:disabled):hover,.card__title-btn:not(:disabled):focus-visible{text-decoration:underline}.card__place{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:12px;overflow:hidden}.card__meta{color:var(--muted);align-items:center;gap:6px;margin:5px 0 0;font-size:12px;display:flex}.card__badge{white-space:nowrap;border-radius:7px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.card__badge--expired{background:var(--red-soft);color:var(--red)}.card__badge--soon{background:var(--yellow-soft);color:var(--yellow)}.card__badge--fresh{background:var(--green-soft);color:var(--green)}.card__actions{gap:6px;display:flex}.pantry__message{color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:14px;margin:32px 0;font-size:13px;display:flex}.pantry__message .btn{width:auto;height:44px}.dock{z-index:30;pointer-events:none;justify-content:center;display:flex;position:fixed;inset:auto 0 0}.dock__inner{width:100%;max-width:var(--app-max);pointer-events:auto;position:relative}.fab-group{right:var(--gutter);bottom:calc(100% + 16px + env(safe-area-inset-bottom));align-items:center;gap:10px;display:flex;position:absolute}.fab{background:var(--green);color:#06210f;border-radius:50%;place-items:center;width:56px;height:56px;transition:transform .12s;display:grid;box-shadow:0 10px 24px #27dd6d4d}.fab--surface{background:var(--surface-2);color:var(--text);box-shadow:0 10px 24px #0000002e}.fab--danger{background:var(--red-soft);color:var(--red);box-shadow:0 10px 24px #ff4d4f38}.fab svg{stroke-width:2.4px;width:26px;height:26px}.fab:active{transform:scale(.92)}.dock__panel{padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);background:color-mix(in srgb, var(--bg) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.tabbar{grid-template-columns:repeat(var(--tabbar-cols,4), 1fr);height:var(--tabbar-h);display:grid}.tab{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:0 6px;font-size:10px;display:flex}.tab span{text-align:center;line-height:1.15}.tab svg{width:22px;height:22px}.tab.is-active{color:var(--green);font-weight:600}.dock__version{height:var(--version-h);color:var(--muted);letter-spacing:.04em;place-items:center;margin:0;font-size:10px;display:grid}.toast{left:50%;bottom:calc(var(--dock-h) + 96px + env(safe-area-inset-bottom));z-index:40;max-width:calc(var(--app-max) - 48px);border:1px solid var(--border);background:var(--surface-2);opacity:0;pointer-events:none;border-radius:999px;padding:10px 16px;font-size:13px;transition:opacity .2s,transform .2s;position:fixed;transform:translate(-50%,8px)}.toast.is-visible{opacity:1;transform:translate(-50%)}@media (width<=359px){.pantry{--gutter:12px}.stat__value{font-size:21px}}.settings__title{letter-spacing:-.03em;margin:0;font-size:28px;font-weight:700}.settings-profile{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:center;gap:14px;padding:14px;display:flex}.settings-profile__avatar{background:linear-gradient(180deg, #4af084 0%, var(--green) 100%);color:#06210f;border-radius:14px;flex-shrink:0;place-items:center;width:52px;height:52px;font-size:24px;font-weight:800;display:grid}.settings-profile__text{min-width:0}.settings-profile__name{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:16px;font-weight:700;overflow:hidden}.settings-profile__meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0;font-size:13px;overflow:hidden}.settings-block{flex-direction:column;gap:10px;display:flex}.settings-block__title{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:8px 0 0;font-size:11px;font-weight:700}.settings-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding:12px 14px;display:flex}.settings-row__label{align-items:center;gap:10px;font-size:15px;font-weight:600;display:inline-flex}.settings-row__label svg{width:20px;height:20px}.theme-switch{background:var(--surface-2);width:48px;height:28px;box-shadow:inset 0 0 0 1px var(--border);border-radius:999px;flex-shrink:0;position:relative}.theme-switch.is-on{background:var(--green);box-shadow:none}.theme-switch__thumb{background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .16s;position:absolute;top:3px;left:3px}.theme-switch.is-on .theme-switch__thumb{transform:translate(20px)}.pantry--settings .pantry__app{flex-direction:column;min-height:100dvh;display:flex}.pantry--settings .content{flex:1}.settings-footer{flex-direction:column;gap:12px;margin-top:auto;display:flex}.settings-about{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:10px;padding:16px 14px;display:flex}.settings-about__head{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.settings-about__icon{color:var(--green);flex-shrink:0;place-items:center;display:grid}.settings-about__icon svg{width:20px;height:20px}.settings-about__title{letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:16px;font-weight:700;overflow:hidden}.settings-about__badge{background:var(--surface-2);color:var(--muted);letter-spacing:.02em;border-radius:999px;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:700}.settings-about__text{color:var(--muted);margin:0;font-size:13px;font-weight:400;line-height:1.45}.settings-logout{border-radius:var(--radius);background:var(--red-soft);width:100%;min-height:52px;color:var(--red);border:1px solid #ff4d4f47;justify-content:center;align-items:center;gap:8px;padding:12px 16px;font-size:15px;font-weight:600;display:inline-flex}.settings-logout svg{width:18px;height:18px}.settings-logout:active{transform:scale(.98)}.pantry--admin{--tabbar-h:72px}.pantry--admin .pantry__app{flex-direction:column;min-height:100dvh;display:flex}.pantry--admin .content{flex:1}.admin-form{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:240px}.pantry--admin .news__list{margin-bottom:8px}.admin-news__item{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.admin-news__open{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-width:0;color:var(--text);text-align:left;align-items:center;padding:14px 16px;display:flex}.admin-news__open .news__header{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.admin-news__actions{gap:8px;display:flex}.admin-news__viewers{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.admin-news__viewer{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.admin-news__viewer-login{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.admin-news__viewer-time{color:var(--muted);flex-shrink:0;font-size:13px}.admin-news__confirm-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.admin-news__delete{background:var(--red-soft);color:var(--red);border:1px solid #ff4d4f47}.admin-feedback__list{margin-bottom:8px}.admin-feedback__item{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;color:inherit;text-align:left;cursor:pointer;flex-direction:column;gap:8px;padding:14px 16px;display:flex}.admin-feedback__item--unread{border-color:#27dd6d47}.admin-feedback__head{align-items:center;gap:10px;min-width:0;display:flex}.admin-feedback__item .news__dot{box-shadow:inset 0 0 0 1.5px var(--border);background:0 0;flex-shrink:0}.admin-feedback__item--unread .news__dot{background:var(--green);box-shadow:none}.admin-feedback__login{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.admin-feedback__time{color:var(--muted);flex-shrink:0;margin-left:auto;font-size:12px}.admin-feedback__preview{color:var(--muted);white-space:pre-wrap;margin:0;font-size:14px;line-height:1.45}.admin-feedback__item--unread .admin-feedback__login,.admin-feedback__item--unread .admin-feedback__preview{color:var(--text)}.admin-feedback__item--unread .admin-feedback__preview{font-weight:500}.admin-feedback__detail{flex-direction:column;gap:16px;display:flex}.admin-feedback__detail-head{align-items:center;gap:10px;min-width:0;display:flex}.admin-feedback__text{white-space:pre-wrap;margin:0;font-size:15px;line-height:1.5}.admin-feedback__photos{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.admin-feedback__photo-btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;width:100%;padding:0;display:block;overflow:hidden}.admin-feedback__photo-btn:disabled{opacity:.6;cursor:wait}.admin-feedback__reply-btn{width:100%;margin-top:1rem}.admin-feedback__reply-form{flex-direction:column;gap:.75rem;display:flex}.admin-feedback__photo{aspect-ratio:1;object-fit:cover;width:100%;display:block}.admin-users__list{margin-bottom:8px}.admin-users__item{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:12px;padding:14px 16px;display:flex}.admin-users__main{align-items:center;gap:10px;min-width:0;display:flex}.admin-users__login{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.admin-users__time{color:var(--muted);flex-shrink:0;margin-left:auto;font-size:12px}.admin-users__password-btn{align-self:flex-start}.admin-users__dialog-login{color:var(--muted);margin:0 0 4px;font-size:14px}.admin-users__dialog-login strong{color:var(--text);font-weight:600}.pantry--shop .pantry__app{flex-direction:column;min-height:100dvh;display:flex}.pantry--shop .content{flex:1}.shop__toolbar{justify-content:flex-end;display:flex}.shop__actions{flex-direction:column;gap:10px;display:flex}.shop__actions .btn{height:48px;font-size:14px}.btn--accent{background:var(--green-soft);color:var(--text);border:1px solid #27dd6d59}.btn--accent svg{color:var(--green)}.btn--accent:hover{background:#27dd6d33}.shop__actions .btn--ghost{color:var(--muted)}.empty{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;min-height:200px;display:flex}.empty__icon{border-radius:var(--radius);background:var(--surface-2);width:64px;height:64px;color:var(--muted);place-items:center;margin-bottom:12px;display:grid}.empty__icon svg{width:26px;height:26px}.empty__title{margin:0;font-size:15px;font-weight:600}.empty__hint{color:var(--muted);margin:0;font-size:12px}.shop__list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.shop__item{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);grid-template-columns:1fr auto;align-items:center;gap:12px;padding:12px;display:grid}.shop__body{flex-direction:column;gap:4px;min-width:0;display:flex}.shop__name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.shop__meta{color:var(--muted);font-size:12px}.composer{left:0;right:0;bottom:calc(var(--dock-h) + 14px + env(safe-area-inset-bottom));z-index:28;padding:0 var(--gutter);pointer-events:none;justify-content:center;display:flex;position:fixed}.composer__inner{width:100%;max-width:calc(var(--app-max) - var(--gutter) * 2);pointer-events:auto}.planner{flex-direction:column;min-height:100dvh;display:flex}.planner__top{margin-bottom:18px}.planner__title{letter-spacing:-.03em;margin:0 0 6px;font-size:28px;font-weight:700}.planner__hint{color:var(--muted);margin:0 0 22px;font-size:14px}.cal{background:var(--surface);border-radius:22px;padding:16px 14px 18px}.cal__nav{grid-template-columns:40px 1fr 40px;align-items:center;gap:8px;margin-bottom:16px;display:grid}.cal__nav .icon-btn{width:36px;height:36px}.cal__month{text-align:center;margin:0;font-size:16px;font-weight:700}.cal__week,.cal__grid{grid-template-columns:repeat(7,1fr);display:grid}.cal__week{color:var(--muted);text-align:center;margin-bottom:8px;font-size:12px;font-weight:600}.cal__grid{gap:6px}.cal__empty{aspect-ratio:1}.cal__day{aspect-ratio:1;color:var(--text);border-radius:12px;font-size:15px;font-weight:600}.cal__day:hover:not(.is-selected){background:var(--surface-2)}.cal__day.is-today:not(.is-selected){border:1.5px solid var(--green);color:var(--green)}.cal__day.is-selected{background:var(--green);color:#06210f}.planner__submit{margin-top:auto}.checkout-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:12px;padding:14px;display:flex}.checkout-card.is-off{opacity:.55}.checkout-card__head{align-items:center;gap:12px;display:flex}.checkout-card__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:15px;font-weight:600;overflow:hidden}.add__form .checkout-card .field__label{color:var(--muted);letter-spacing:0;text-transform:none;font-size:12px;font-weight:400}.checkout-card .field{gap:5px}.checkout-card__check{border:1.5px solid var(--border);background:var(--surface-2);color:#06210f;border-radius:8px;flex-shrink:0;place-items:center;width:28px;height:28px;display:grid}.checkout-card__check svg{stroke-width:2.4px;width:16px;height:16px}.checkout-card__check.is-on{background:var(--green);border-color:#0000}.segmented{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);grid-template-columns:1fr 1fr;gap:6px;padding:5px;display:grid}.segmented__item{border-radius:var(--radius-sm);height:40px;color:var(--muted);justify-content:center;align-items:center;gap:8px;font-size:14px;font-weight:600;transition:background .15s,color .15s;display:flex}.segmented__item svg{width:17px;height:17px}.segmented__item.is-active{background:var(--green);color:#06210f}.usage{flex-direction:column;gap:10px;display:flex}.usage__label{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;margin:0;font-size:12px;font-weight:700}.panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:14px}.panel__head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.panel__title{align-items:center;gap:7px;margin:0;font-size:15px;font-weight:700;display:flex}.panel__title svg{width:16px;height:16px;color:var(--green)}.panel__note{color:var(--muted);font-size:11px}.usage__list{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.usage__row{grid-template-columns:auto 1fr auto;align-items:center;gap:4px 8px;display:grid}.usage__emoji{font-size:17px;line-height:1}.usage__name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.chip--waste.is-active{background:var(--red);color:#2b0708}.usage__values{align-items:center;gap:8px;display:flex}.usage__value{white-space:nowrap;font-size:12px;font-weight:600}.usage__value--waste{color:var(--red)}.usage__track{background:var(--surface-2);border-radius:999px;grid-column:1/-1;height:5px;overflow:hidden}.usage__fill{border-radius:inherit;background:var(--green);height:100%;display:block}.usage__fill--waste{background:var(--red)}.ucard{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:12px}.ucard__head{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.ucard__title{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;font-weight:600;overflow:hidden}.ucard__badge{background:var(--green-soft);color:var(--green);white-space:nowrap;border-radius:8px;padding:3px 8px;font-size:11px;font-weight:600}.ucard__badge--waste{background:var(--red-soft);color:var(--red)}.ucard__meta{color:var(--muted);margin:8px 0 0;font-size:12px}.ucard__tag{color:var(--green);margin-right:6px;font-weight:600}.ucard__meta--waste .ucard__tag{color:var(--red)}.spark{align-items:flex-end;gap:4px;height:36px;margin-top:8px;display:flex}.spark__bar{background:var(--green);border-radius:4px;flex:1;min-height:2px}.spark__bar--waste{background:var(--red)}.fcard{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px;display:grid}.fcard--expired{background:linear-gradient(180deg, #ff4d4f12, transparent), var(--surface);border-color:#ff4d4f66}.fcard__body{min-width:0}.fcard__deadline{align-items:center;gap:5px;margin:5px 0 0;font-size:12px;font-weight:600;display:flex}.fcard__deadline svg{width:14px;height:14px}.fcard__deadline--expired{color:var(--red)}.fcard__deadline--soon{color:var(--yellow)}.fcard__deadline--fresh{color:var(--green)}.fcard__meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:5px 0 0;font-size:12px;overflow:hidden}.fcard__counter{text-align:right;flex-direction:column;align-items:flex-end;gap:2px;margin:0;padding-left:4px;display:flex}.fcard__value{font-size:22px;font-weight:700;line-height:1}.fcard__label{font-size:11px}.fcard__counter--expired{color:var(--red)}.fcard__counter--soon{color:var(--yellow)}.fcard__counter--fresh{color:var(--green)}.auth{min-height:100dvh;padding:calc(24px + env(safe-area-inset-top)) var(--gutter) calc(24px + env(safe-area-inset-bottom));background:radial-gradient(120% 60% at 50% -10%, #27dd6d1f, transparent 60%), var(--bg);justify-content:center;display:flex}.auth__card{flex-direction:column;gap:24px;width:100%;max-width:400px;margin:auto;display:flex}.auth__head{flex-direction:column;gap:10px;display:flex}.auth__logo{border:1px solid var(--border);background:var(--surface);border-radius:18px;width:60px;height:60px}.auth__title{letter-spacing:-.02em;margin:6px 0 0;font-size:26px;font-weight:700}.auth__subtitle{color:var(--muted);margin:0;font-size:14px}.auth__back{height:40px;color:var(--muted);border-radius:999px;align-self:flex-start;align-items:center;gap:6px;margin-left:-8px;padding:0 12px 0 8px;font-size:14px;display:inline-flex}.auth__back:hover{color:var(--text);background:var(--surface)}.auth__submit{margin-top:4px}.auth__divider{color:var(--muted);align-items:center;gap:12px;font-size:12px;display:flex}.auth__divider:before,.auth__divider:after{content:"";background:var(--border);flex:1;height:1px}.auth__footer{text-align:center;flex-direction:column;align-items:center;gap:14px;display:flex}.auth__note{color:var(--muted);margin:0;font-size:13px}.auth__install{border:1px dashed var(--border);height:40px;color:var(--muted);border-radius:999px;align-self:center;align-items:center;gap:8px;padding:0 16px;font-size:13px;font-weight:500;display:inline-flex}.auth__install:hover{color:var(--text);border-color:#27dd6d73}.auth__install svg{width:17px;height:17px}@media (width>=480px){.auth__card{border:1px solid var(--border);background:var(--surface);border-radius:26px;gap:26px;padding:32px;box-shadow:0 24px 60px #00000073}.auth__logo,.field__input,.btn--ghost,.auth__back:hover{background:var(--surface-2)}}
