:root{--wk-ink:#16294A;--wk-paper:#FAF8F3;--wk-ground:#EEF0EE;--wk-white:#FFFFFF;--wk-leaf:#5DAE4B;--wk-leaf-text:#3E7F30;--wk-orange:#F39237;--wk-berry:#EC6B5F;--wk-sage:#D5E6CB;--wk-leaf-soft:#D5E6CB;--wk-orange-soft:#FCE3CC;--wk-berry-soft:#FADAD6;--wk-font-display:"Outfit",sans-serif;--wk-font-body:"DM Sans",sans-serif;--wk-radius-s:12px;--wk-radius-m:20px;--wk-radius-l:28px;--wk-radius-pill:999px;--wk-line:2px;--wk-space:4px;--wk-shadow-card:0 1px 0 rgba(22,41,74,.06);--wk-shadow-float:0 24px 60px rgba(22,41,74,.16)}*{box-sizing:border-box}body{margin:0;background:var(--wk-ground);color:var(--wk-ink);font-family:var(--wk-font-body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--wk-font-display);color:var(--wk-ink)}.app{max-width:560px;margin:0 auto;padding:calc(32px + env(safe-area-inset-top)) 16px calc(112px + env(safe-area-inset-bottom))}.logo{display:block;width:168px;height:auto;margin:0 auto 24px}.top{margin-bottom:24px}h1{margin:6px 0 0;font-size:clamp(32px,9vw,40px);line-height:1.1;font-weight:700;text-wrap:balance}.label{display:block;margin:0;font-family:var(--wk-font-display);font-weight:600;font-size:12px;letter-spacing:.14em;text-transform:uppercase}.label-leaf{color:var(--wk-leaf-text)}.meta{margin:4px 0 0;font-size:14px;opacity:.75}.muted{opacity:.75}.error{color:#b3261e;font-size:14px;margin:16px 0 0;white-space:pre-line}.line-icon,.chevron,.icon-btn svg,.check-box svg,.tab svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:14px 24px;border:0;border-radius:var(--wk-radius-pill);background:var(--wk-ink);color:var(--wk-paper);font-family:var(--wk-font-display);font-weight:600;font-size:16px;line-height:1;cursor:pointer}.btn:hover{background:#24406e}.btn:disabled{opacity:.5;cursor:default}.btn-secondary{background:transparent;color:var(--wk-ink);border:var(--wk-line) solid var(--wk-ink);padding:12px 22px}.btn-secondary:hover{background:var(--wk-ground)}.btn-small{min-height:36px;padding:8px 16px;font-size:14px;white-space:nowrap}.btn-secondary.btn-small{padding:6px 14px}.btn:focus-visible,.link-btn:focus-visible,.icon-btn:focus-visible,.recipe-toggle:focus-visible{outline:var(--wk-line) solid var(--wk-leaf);outline-offset:3px}.link-btn{margin-left:8px;padding:0;border:none;background:none;color:inherit;font:inherit;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.link-btn:hover{color:var(--wk-leaf-text)}.icon-btn{flex:none;display:grid;place-items:center;width:44px;height:44px;margin:-4px -6px -4px 0;border:none;border-radius:var(--wk-radius-pill);background:none;color:var(--wk-ink);cursor:pointer}.icon-btn svg{width:20px;height:20px}.icon-btn:hover{background:var(--wk-ground)}.card{background:var(--wk-paper);border-radius:var(--wk-radius-m);box-shadow:var(--wk-shadow-card)}.scan{display:flex;flex-direction:column;align-items:center;gap:clamp(8px,2dvh,20px);height:calc(100dvh - 144px - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:420px}.scan .logo{flex:none;width:auto;height:clamp(88px,24dvh,220px);margin:0}.scan-title{margin:0;text-align:center;font-size:clamp(24px,4.2dvh,36px)}.scan-drop{flex:1 1 auto;min-height:0;width:100%;border-radius:var(--wk-radius-l);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:20px;text-align:center;overflow-y:auto}.scan-pick{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:var(--wk-line) dashed rgba(22,41,74,.25);border-radius:var(--wk-radius-m);cursor:pointer}.scan-pick:hover{border-color:var(--wk-ink)}.scan-pick:focus-within{outline:var(--wk-line) solid var(--wk-leaf);outline-offset:3px}.scan-icon{width:clamp(36px,7dvh,56px);height:clamp(36px,7dvh,56px);fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.scan-icon.done{color:var(--wk-leaf-text);stroke-width:2.5}.scan-icon.busy{animation:pulse 1.2s ease-in-out infinite}.scan-main{margin:4px 0 0;font-family:var(--wk-font-display);font-weight:600;font-size:20px}.scan-sub{margin:0 0 12px;font-size:14px;opacity:.7}.scan-more{margin:12px 0 0;font-size:14px}.scan-error{margin-top:12px;font-size:13px}.paste-btn{margin-top:12px;flex:none}.paste-btn .line-icon{width:18px;height:18px}.paste-target{flex:none;width:100%;margin-top:12px;padding:14px;border:var(--wk-line) dashed var(--wk-leaf);border-radius:var(--wk-radius-m);background:var(--wk-white);font-size:14px;opacity:.8;caret-color:transparent}.paste-target:focus{outline:none;border-style:solid}.empty{margin-top:24px;padding:40px 24px;text-align:center;border-radius:var(--wk-radius-l)}.empty-art{width:96px;height:96px;border-radius:22px;box-shadow:0 12px 32px #16294a1f}.empty h2{margin:20px 0 8px;font-size:22px;font-weight:600}.empty p{margin:0 auto;max-width:20rem;font-size:15px;text-wrap:pretty}.empty .btn{margin-top:20px}.date-card{padding:16px 20px}.date-field{display:flex;align-items:center;justify-content:space-between;gap:16px}.date-field input{min-height:44px;padding:8px 16px;border:var(--wk-line) solid var(--wk-ink);border-radius:var(--wk-radius-pill);background:var(--wk-white);color:var(--wk-ink);font-family:var(--wk-font-display);font-size:16px;font-weight:600}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:32px 0 4px}.section-head .link-btn{font-size:14px}.section-title{font-size:22px;font-weight:600;margin:0}.section-title small{margin-left:6px;font-family:var(--wk-font-body);font-weight:400;font-size:14px;opacity:.75}.week-total{margin:0 0 16px}.empty-hint{margin-top:32px;text-align:center}.recipe{padding:16px 16px 16px 20px;margin-bottom:12px;border-radius:var(--wk-radius-l)}.library{margin-top:12px;padding:16px 16px 16px 20px}.recipe-head{display:flex;align-items:center;gap:4px}.recipe-toggle{flex:1;min-width:0;display:flex;align-items:center;gap:12px;min-height:44px;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:12px}.recipe-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.recipe h3,.library h3{margin:0;font-size:18px;font-weight:600;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recipe.open h3{white-space:normal;font-size:22px}.recipe .label-leaf{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.price{font-family:var(--wk-font-display);font-weight:600;font-size:16px;white-space:nowrap}.chevron{width:20px;height:20px;flex:none;transition:transform .15s}.recipe.open .chevron,.library.open .chevron{transform:rotate(90deg)}.portions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}.stepper{display:flex;align-items:center;border:var(--wk-line) solid var(--wk-ink);border-radius:var(--wk-radius-pill);overflow:hidden}.stepper button{width:44px;height:40px;border:none;background:none;color:var(--wk-ink);font-family:var(--wk-font-display);font-size:20px;font-weight:500;cursor:pointer}.stepper button:hover:not(:disabled){background:var(--wk-ground)}.stepper button:disabled{opacity:.3;cursor:default}.stepper output{min-width:32px;text-align:center;font-family:var(--wk-font-display);font-weight:600}.stepper.small{flex:none}.stepper.small button{width:32px;height:32px;font-size:17px}.stepper.small output{min-width:22px;font-size:14px}.stats{display:grid;grid-template-columns:repeat(4,1fr);margin:16px 0 4px;padding:12px 0;border-block:1px solid rgba(22,41,74,.1)}.stats div{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}.stats div+div{border-left:1px solid rgba(22,41,74,.1)}.stats .label{font-size:10px}.stats strong{font-family:var(--wk-font-display);font-weight:600;font-size:15px}.library-list{list-style:none;margin:12px 0 0;padding:0}.library-list>li,.suggestion-list>li{display:flex;align-items:center;gap:8px;padding:10px 0;border-top:1px solid rgba(22,41,74,.1)}.suggestion-list{list-style:none;margin:0;padding:0}.suggestion-list>li.suggestion{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 12px;padding:14px 0}.suggestion-title{font-family:var(--wk-font-display);font-weight:600;font-size:17px;line-height:1.3}.suggestion-saving{justify-self:end;font-family:var(--wk-font-display);font-weight:600;font-size:15px;color:var(--wk-leaf-text);white-space:nowrap}.suggestion-saving.none{color:var(--wk-ink);opacity:.5;font-weight:500;font-size:13px}.suggestion-meta{font-size:13px;opacity:.75}.suggestion-action{justify-self:end}.suggestion .highlights{grid-column:1 / -1;margin-top:6px}.in-week{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-family:var(--wk-font-display);font-weight:600;font-size:13px;color:var(--wk-leaf-text)}.in-week svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.library-name{font-weight:600}.library-list>li{flex-wrap:wrap}.library-list>li>.recipe-title{flex:1 1 150px}.cat-dot{flex:none;width:8px;height:8px;border-radius:50%;margin-left:-4px}.library-list .meta,.suggestion-list .meta{font-size:13px}.highlights{list-style:none;margin:4px 0 0;padding:0}.highlights li{font-size:13px;opacity:.8;padding:1px 0}.highlights li:before{content:"↓ ";color:var(--wk-leaf-text);font-weight:600}.group{margin-top:20px}.group-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 4px 8px}.group-total{font-family:var(--wk-font-display);font-weight:600;font-size:15px}.rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.row{display:flex;align-items:center;gap:14px;min-height:52px;padding:12px 14px;background:var(--wk-white);border-radius:16px;box-shadow:var(--wk-shadow-card)}.recipe .row{background:var(--wk-white)}.row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.row-name{font-size:16px;font-weight:500;line-height:1.3}.row-product{font-size:13px;line-height:1.4;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-meta{font-size:12px;line-height:1.4;opacity:.55}.row-link{margin:2px 0 0;align-self:flex-start;font-size:13px}.row-price{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:1px;min-width:56px}.row-price strong{font-family:var(--wk-font-display);font-weight:600;font-size:16px;white-space:nowrap}.row-price strong.estimate{font-weight:500;opacity:.6}.row-price s{font-size:12px;opacity:.55;white-space:nowrap}.row-price small{font-size:11px;opacity:.55;white-space:nowrap}.row.done .row-text,.row.done .row-price{opacity:.45}.row.done .row-name{text-decoration:line-through}.check{position:relative;flex:none;display:grid;place-items:center;width:44px;height:44px;margin:-10px -10px -10px -12px;cursor:pointer}.check input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.check-box{display:grid;place-items:center;width:24px;height:24px;border:var(--wk-line) solid var(--wk-ink);border-radius:8px;background:transparent;transition:background .15s}.check-box svg{width:16px;height:16px;stroke:var(--wk-paper);stroke-width:3;opacity:0}.check input:checked+.check-box{background:var(--wk-ink)}.check input:checked+.check-box svg{opacity:1}.check input:focus-visible+.check-box{outline:var(--wk-line) solid var(--wk-leaf);outline-offset:2px}.list-summary{padding:20px;border-radius:var(--wk-radius-l)}.list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.list-sum{display:block;font-family:var(--wk-font-display);font-size:32px;font-weight:700;line-height:1.1;margin-top:4px}.progress{height:8px;margin-top:16px;border-radius:var(--wk-radius-pill);background:var(--wk-ground);overflow:hidden}.progress-fill{height:100%;border-radius:var(--wk-radius-pill);background:var(--wk-leaf);transition:width .3s}.price-dialog h2{margin-top:4px}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.field{display:flex;flex-direction:column;gap:6px}.field .label{font-size:11px}.field input,.field select{width:100%;min-height:44px;padding:8px 14px;border:var(--wk-line) solid var(--wk-ink);border-radius:var(--wk-radius-s);background:var(--wk-white);color:var(--wk-ink);font:inherit;font-size:16px}.field input:focus-visible,.field select:focus-visible{outline:var(--wk-line) solid var(--wk-leaf);outline-offset:2px}.settings{padding:20px;margin-bottom:12px}.settings .label{margin-bottom:8px}.settings p{margin:0 0 8px}.settings .btn{margin-top:4px}.periods-title{margin-top:16px;padding-top:16px;border-top:1px solid rgba(22,41,74,.1)}.periods{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.period{display:grid;grid-template-columns:84px minmax(0,1fr) auto;align-items:baseline;gap:8px}.period .label{font-size:11px}.period-range{font-size:13px;line-height:1.4}.period-later{display:block;font-size:12px;opacity:.6}.period-ok{display:inline-flex;align-items:center;gap:2px;font-family:var(--wk-font-display);font-weight:600;font-size:13px;color:var(--wk-leaf-text)}.period-ok svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.period-off{font-size:12px;font-weight:600;white-space:nowrap;padding:2px 8px;border-radius:var(--wk-radius-pill);background:var(--wk-berry-soft)}.confirm{width:min(400px,calc(100vw - 32px));padding:0;border:none;border-radius:var(--wk-radius-l);background:var(--wk-paper);color:var(--wk-ink);box-shadow:var(--wk-shadow-float)}.confirm::backdrop{background:#16294a59;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.confirm-card{padding:28px 24px 24px}.confirm h2{margin:0 0 8px;font-size:22px;font-weight:600;line-height:1.25}.confirm p{margin:0;font-size:15px;text-wrap:pretty}.confirm-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;flex-wrap:wrap}.splash{display:grid;place-items:center;min-height:80dvh}.splash-icon{width:96px;height:96px;border-radius:22px;box-shadow:var(--wk-shadow-float);animation:pulse 1.4s ease-in-out infinite}.auth{max-width:420px;margin:0 auto}.auth .logo{width:140px;margin-bottom:20px}.auth-card{padding:28px 24px 24px;border-radius:var(--wk-radius-l)}.auth-title{margin:6px 0 8px;font-size:clamp(26px,7vw,32px)}.auth-text{margin:0 0 16px;font-size:15px;text-wrap:pretty}.auth-notice{margin:8px 0 0;padding:14px 16px;border-radius:var(--wk-radius-m);background:var(--wk-leaf-soft);font-size:15px}.auth-form{display:flex;flex-direction:column;gap:14px;margin-top:8px}.auth-form .error{margin:0}.auth-submit{width:100%;margin-top:4px}.auth-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:18px}.auth-links .link-btn{margin:0;font-size:14px}.password{display:flex;align-items:center;gap:8px}.password input{flex:1}.password .link-btn{margin:0;font-size:13px;white-space:nowrap}.offline-note{margin:0 0 16px;padding:10px 14px;border-radius:var(--wk-radius-m);background:var(--wk-orange-soft);font-size:14px}.household-name{display:flex;align-items:baseline;gap:4px;font-size:18px}.household-name strong{font-family:var(--wk-font-display);font-weight:600}.household-switch{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:4px 0 8px}.household-switch .meta{margin:0}.members{list-style:none;margin:8px 0 0;padding:0}.members li{display:flex;align-items:center;gap:8px;padding:10px 0;border-top:1px solid rgba(22,41,74,.1)}.member-text{flex:1;min-width:0;display:flex;flex-direction:column}.member-name{font-weight:600}.members .meta{margin:0;font-size:13px}.invite-label{margin-top:16px}.inline-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0}.inline-form input{flex:1 1 180px;min-height:40px;padding:6px 14px;border:var(--wk-line) solid var(--wk-ink);border-radius:var(--wk-radius-s);background:var(--wk-white);color:var(--wk-ink);font:inherit;font-size:16px}.invite-result{margin-top:8px}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;justify-content:center;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:#faf8f3f0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 -1px #16294a14}.tabbar-inner{display:grid;grid-template-columns:repeat(5,1fr);width:100%;max-width:560px}.tab{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:52px;padding:4px 0;border:none;background:none;color:var(--wk-ink);opacity:.6;font-family:var(--wk-font-display);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap}.tab svg{width:24px;height:24px}.tab-icon{display:grid;place-items:center;width:52px;height:32px;border-radius:var(--wk-radius-pill);transition:background .15s}.tab.active{opacity:1}.tab.active .tab-icon{background:var(--wk-sage)}.tab:focus-visible{outline:var(--wk-line) solid var(--wk-leaf);outline-offset:2px;border-radius:12px}.tab-count{position:absolute;top:2px;right:calc(50% - 30px);min-width:18px;height:18px;padding:0 5px;border-radius:var(--wk-radius-pill);background:var(--wk-berry);color:var(--wk-white);font-family:var(--wk-font-body);font-size:11px;font-weight:600;line-height:18px}.scan-more-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid rgba(22,41,74,.1)}.scan-more-row .meta{margin:0}.scan-more-row .line-icon{width:18px;height:18px}.tab-count-quiet{background:var(--wk-ink)}.library-list.flat{margin-top:0}.library-list.flat>li:first-child{border-top:none}@keyframes pulse{50%{transform:scale(.9)}}
