:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f3eedf;--paper-raised:#fffdf5;--ink:#17251f;--muted:#56625b;--evergreen:#174b3b;--evergreen-hover:#0f3a2d;--marker:#b83d22;--ochre:#8e5813;--contour:#c9c1aa;--contour-strong:#9e9a87;--danger:#9c2f2a;--focus:#d94d2c;--shadow:0 18px 45px #2c30271c;--font-field:Georgia, Cambria, "Times New Roman", serif;--font-ui:ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-family:var(--font-ui);color:var(--ink);background:var(--paper);font-synthesis:none}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#111814;--paper-raised:#18231d;--ink:#f5f0e1;--muted:#b8c3bb;--evergreen:#78c2a5;--evergreen-hover:#9ad5be;--marker:#ff8a64;--ochre:#e5b465;--contour:#536158;--contour-strong:#7c8b80;--danger:#ff9b90;--focus:#ff9b74;--shadow:0 20px 50px #00000047}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}body{background-color:var(--paper);background-image:radial-gradient(ellipse at 8% 16%, transparent 0 65px, color-mix(in srgb, var(--contour) 22%, transparent) 66px 67px, transparent 68px), radial-gradient(ellipse at 88% 78%, transparent 0 90px, color-mix(in srgb, var(--contour) 18%, transparent) 91px 92px, transparent 93px);min-width:320px;min-height:100vh;color:var(--ink);text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.55}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:var(--evergreen);text-underline-offset:3px}img{max-width:100%;display:block}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.skip-link{z-index:1000;background:var(--paper-raised);color:var(--ink);border:2px solid var(--focus);padding:10px 16px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:none}.sr-only{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.site-header{z-index:20;border-bottom:1px solid var(--contour);grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;width:min(1440px,100%);min-height:72px;margin:0 auto;padding:12px clamp(20px,4vw,64px);display:grid;position:relative}.brand{width:-moz-fit-content;width:fit-content;color:var(--ink);font-family:var(--font-field);align-items:center;gap:12px;font-size:18px;font-weight:700;text-decoration:none;display:inline-flex}.brand-mark{border:1px solid var(--evergreen);width:38px;height:38px;box-shadow:inset 0 0 0 5px var(--paper), inset 0 0 0 6px var(--evergreen), inset 0 0 0 10px var(--paper), inset 0 0 0 11px var(--evergreen);border-radius:50%;flex:none;display:inline-block;position:relative}.brand-mark i{background:var(--marker);border:2px solid var(--paper);border-radius:50%;width:8px;height:8px;position:absolute;bottom:4px;right:-3px}.brand-mark.small{width:32px;height:32px}.site-header nav{align-items:center;gap:32px;display:flex}.site-header nav a{min-height:44px;color:var(--muted);align-items:center;gap:7px;font-size:14px;font-weight:700;text-decoration:none;display:inline-flex}.site-header nav a:hover{color:var(--ink)}.nav-count{background:var(--marker);color:#fff;font-variant-numeric:tabular-nums;border-radius:20px;place-items:center;min-width:22px;height:22px;padding:0 6px;font-size:12px;display:inline-grid}.icon-button{border:1px solid var(--contour-strong);cursor:pointer;background:0 0;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:inline-grid}.icon-button:hover{background:color-mix(in srgb, var(--evergreen) 9%, transparent)}.icon-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:20px;height:20px}.theme-toggle{justify-self:end}.quiet{color:var(--muted);border-color:#0000}.offline-banner{z-index:15;text-align:center;background:var(--ochre);color:#fff;padding:8px 20px;font-size:14px;position:sticky;top:0}main{overflow:clip}.hero{grid-template-columns:minmax(320px,.83fr) minmax(460px,1.17fr);align-items:center;gap:clamp(36px,7vw,100px);width:min(1440px,100%);margin:0 auto;padding:clamp(40px,6vw,84px) clamp(20px,4vw,64px) clamp(56px,7vw,96px);display:grid}.eyebrow,.map-code{color:var(--evergreen);letter-spacing:.15em;text-transform:uppercase;margin:0 0 12px;font-size:12px;font-weight:800}.waypoint{border:2px solid var(--marker);border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}h1,h2,h3,p{text-wrap:pretty}h1,h2,h3{color:var(--ink);font-family:var(--font-field);line-height:1.08}h1{letter-spacing:-.045em;max-width:680px;margin:0;font-size:clamp(42px,5.2vw,76px);font-weight:500}h2{letter-spacing:-.035em;margin:0;font-size:clamp(31px,4vw,48px);font-weight:500}h3{font-size:23px}.hero-lede{max-width:600px;color:var(--muted);margin:24px 0 0;font-size:clamp(18px,2vw,22px);line-height:1.5}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.button{border:1px solid var(--evergreen);min-height:46px;color:var(--evergreen);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-weight:750;text-decoration:none;transition:transform .16s;display:inline-flex}.button:hover{transform:translateY(-1px)}.button:active{transform:translateY(1px)}.button.primary{background:var(--evergreen);color:var(--paper-raised)}:root[data-theme=dark] .button.primary{color:#102018}.button.primary:hover{background:var(--evergreen-hover)}.button.secondary:hover{background:color-mix(in srgb, var(--evergreen) 10%, transparent)}.field-stats{border-top:1px solid var(--contour);grid-template-columns:repeat(3,1fr);gap:0;margin:42px 0 0;display:grid}.field-stats div{border-right:1px solid var(--contour);padding:16px 8px 0 0}.field-stats div+div{padding-left:16px}.field-stats div:last-child{border:0}.field-stats dt{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:700}.field-stats dd{font-family:var(--font-field);font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:28px}.hero-map{margin:0;position:relative}.hero-map:before,.hero-map:after{content:"";z-index:2;border-color:var(--paper-raised);pointer-events:none;width:20px;height:20px;position:absolute}.hero-map:before{border-top:2px solid;border-left:2px solid;top:14px;left:14px}.hero-map:after{border-bottom:2px solid;border-right:2px solid;bottom:52px;right:14px}.hero-map img{aspect-ratio:3/2;object-fit:cover;border:1px solid var(--contour-strong);width:100%;box-shadow:var(--shadow);filter:saturate(.9)contrast(.98);border-radius:18px 18px 4px}.hero-map figcaption{max-width:570px;color:var(--muted);margin:12px 0 0;font-size:13px;font-style:italic}.survey-section,.meals-section,.shopping-section{padding:clamp(56px,8vw,104px) max(20px,50vw - 656px)}.survey-section{background:var(--paper-raised);border-block:1px solid var(--contour)}.meals-section{background-image:repeating-radial-gradient(ellipse at 96% 5%, transparent 0 31px, color-mix(in srgb, var(--contour) 24%, transparent) 32px 33px, transparent 34px 45px)}.shopping-section{background:var(--paper-raised);border-top:1px solid var(--contour)}.section-heading{justify-content:space-between;align-items:end;gap:28px;margin-bottom:32px;display:flex}.section-heading p:not(.map-code){max-width:650px;color:var(--muted);margin:10px 0 0}.count-badge,.starter-label{border:1px solid var(--contour-strong);color:var(--muted);letter-spacing:.04em;text-transform:uppercase;border-radius:99px;flex:none;padding:6px 11px;font-size:12px;font-weight:750}.count-badge.marker{border-color:var(--marker);color:var(--marker)}.add-pantry-form{border:1px solid var(--contour);background:color-mix(in srgb, var(--paper) 45%, var(--paper-raised));border-radius:12px;grid-template-columns:minmax(180px,1fr) 140px 150px auto;align-items:end;gap:12px;padding:20px;display:grid}.field{gap:6px;display:grid}.field label,.search-field label,fieldset legend{color:var(--ink);font-size:13px;font-weight:800}.field label span,fieldset p{color:var(--muted);font-weight:500}input,select,textarea{border:1px solid var(--contour-strong);background:var(--paper-raised);width:100%;min-height:46px;color:var(--ink);border-radius:7px;padding:9px 11px}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:color-mix(in srgb, var(--muted) 78%, transparent);opacity:1}.form-message{min-height:24px;color:var(--danger);margin:6px 0;font-size:14px}.pantry-list,.shopping-list,.route-ingredients,.gap-preview ul{margin:0;padding:0;list-style:none}.pantry-list{border-top:1px solid var(--contour)}.pantry-row{border-bottom:1px solid var(--contour);grid-template-columns:minmax(160px,1fr) 110px 130px 44px;align-items:center;gap:12px;min-height:68px;display:grid}.pantry-name{font-family:var(--font-field);font-size:19px;font-weight:700}.pantry-row input,.pantry-row select{background:0 0;min-height:42px}.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:200px;padding:32px;display:flex}.empty-state strong{font-family:var(--font-field);font-size:24px}.empty-state p{max-width:500px;color:var(--muted);margin:6px auto 0}.empty-contours{border:1px solid var(--evergreen);width:66px;height:48px;box-shadow:0 0 0 6px var(--paper-raised), 0 0 0 7px var(--evergreen), 0 0 0 13px var(--paper-raised), 0 0 0 14px var(--evergreen);opacity:.7;border-radius:48% 52% 43% 57%;margin-bottom:15px;transform:rotate(-8deg)}.meal-tools{align-items:end;gap:16px;min-height:76px;margin-bottom:24px;display:flex}.search-field{gap:6px;width:min(460px,100%);display:grid;position:relative}.search-field span{font-size:20px;position:absolute;bottom:9px;left:13px}.search-field input{padding-left:40px}.sort-field{width:180px}.text-button{min-height:44px;color:var(--evergreen);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:8px 5px;font-weight:750;text-decoration:underline}.text-button:hover{color:var(--evergreen-hover)}.danger-text{color:var(--danger)}.meal-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.meal-card{border:1px solid var(--contour);background:color-mix(in srgb, var(--paper-raised) 92%, transparent);min-width:0;min-height:410px;box-shadow:0 4px 0 color-mix(in srgb, var(--contour) 42%, transparent);border-radius:12px 12px 3px;grid-template-columns:58px 1fr;gap:16px;padding:22px;display:grid;position:relative}.meal-card:after{content:"";border-right:1px solid var(--contour-strong);border-bottom:1px solid var(--contour-strong);width:8px;height:8px;position:absolute;bottom:10px;right:10px}.score-marker{border:2px solid var(--evergreen);width:58px;height:58px;box-shadow:0 0 0 4px var(--paper-raised), 0 0 0 5px color-mix(in srgb, var(--evergreen) 50%, transparent);font-family:var(--font-field);font-variant-numeric:tabular-nums;border-radius:50%;justify-content:center;align-items:baseline;padding-top:14px;display:flex}.score-marker span{font-size:22px;font-weight:700;line-height:1}.score-marker small{font-size:10px}.meal-card-body{flex-direction:column;min-width:0;display:flex}.meal-card-heading{justify-content:space-between;align-items:start;gap:8px;display:flex}.meal-card h3{margin:4px 0 0;font-size:25px}.route-state{color:var(--marker);letter-spacing:.09em;text-transform:uppercase;margin:0;font-size:11px;font-weight:850}.starter-label{padding:3px 7px;font-size:9px}.starter-label.custom{color:var(--evergreen);border-color:var(--evergreen)}.meal-note{color:var(--muted);margin:12px 0 16px;font-size:14px}.gap-preview{border-top:1px dashed var(--contour-strong);margin-top:auto;padding-top:14px}.gap-label{color:var(--marker);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:850}.gap-label i{border:2px solid;border-radius:50%;width:8px;height:8px;margin-right:5px;display:inline-block}.gap-preview li{justify-content:space-between;gap:8px;padding:3px 0;font-size:14px;display:flex}.gap-preview small{color:var(--muted);font-variant-numeric:tabular-nums}.ready-route{background:color-mix(in srgb, var(--evergreen) 10%, transparent);color:var(--evergreen);margin-top:auto;padding:16px;font-weight:750}.meal-meta{color:var(--muted);justify-content:space-between;gap:8px;margin:14px 0 12px;font-size:11px;display:flex}.route-button{border-color:var(--contour-strong);width:100%;color:var(--ink);justify-content:space-between}.full-span{grid-column:1/-1}.shopping-layout{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:clamp(28px,6vw,88px);display:grid}.shopping-sheet{border:1px solid var(--contour);background:var(--paper);box-shadow:var(--shadow);padding:clamp(18px,3vw,30px)}.shopping-row{border-bottom:1px solid var(--contour);justify-content:space-between;align-items:center;gap:12px;min-height:64px;display:flex}.shopping-row label{cursor:pointer;flex:1;align-items:center;gap:13px;min-height:54px;display:flex}.shopping-row input{opacity:0;width:1px;height:1px;position:absolute}.check-box{border:2px solid var(--evergreen);border-radius:50%;flex:none;place-items:center;width:24px;height:24px;display:grid}.shopping-row input:focus-visible+.check-box{outline:3px solid var(--focus);outline-offset:3px}.shopping-row input:checked+.check-box{background:var(--evergreen)}.shopping-row input:checked+.check-box:after{content:"✓";color:var(--paper-raised);font-size:14px}.shopping-row label>span:last-child{flex-direction:column;display:flex}.shopping-row small{color:var(--muted);font-variant-numeric:tabular-nums}.shopping-row.checked strong{color:var(--muted);text-decoration:line-through}.shopping-actions{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.data-panel{border-left:1px solid var(--contour);padding:28px 0 28px 28px}.data-panel h3{margin:0;font-size:28px}.data-panel p:not(.map-code){color:var(--muted)}.data-panel>div{flex-wrap:wrap;gap:8px;display:flex}.import-label{position:relative}.import-label input{opacity:0;width:1px;height:1px;position:absolute}.import-label:focus-within{outline:3px solid var(--focus);outline-offset:3px}.data-note{font-size:12px}.route-history{border-top:1px dashed var(--contour-strong);margin-top:48px;padding-top:24px}.route-history h3{margin:0 0 12px;font-size:20px}.route-history ol{background:var(--contour);grid-template-columns:repeat(4,1fr);gap:1px;margin:0;padding:0;list-style:none;display:grid}.route-history li{background:var(--paper-raised);flex-direction:column;padding:12px;display:flex}.route-history small{color:var(--muted)}.route-pin{border:3px solid var(--marker);border-radius:50%;width:38px;height:38px;margin-bottom:16px;position:relative}.route-pin:after{content:"";background:repeating-linear-gradient(to bottom, var(--marker) 0 4px, transparent 4px 8px);width:3px;height:28px;position:absolute;top:32px;left:16px}footer{border-top:1px solid var(--contour);color:var(--muted);grid-template-columns:1fr auto 1fr;align-items:center;gap:32px;padding:36px max(20px,50vw - 656px);font-size:13px;display:grid}footer>div{align-items:center;gap:12px;display:flex}footer p{margin:0}footer nav{gap:24px;display:flex}footer a{color:var(--muted)}.art-note{text-align:right;justify-self:end;max-width:260px}dialog{border:1px solid var(--contour-strong);background:var(--paper-raised);width:min(720px,100% - 32px);max-height:min(860px,100dvh - 32px);color:var(--ink);border-radius:14px 14px 4px;padding:0;overflow:auto;box-shadow:0 30px 100px #00000059}dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a110da3}dialog[open]{animation:.22s ease-out sheet-in}.dialog-form,#route-dialog-content{padding:clamp(22px,4vw,38px)}.dialog-heading{justify-content:space-between;align-items:start;gap:20px;margin-bottom:24px;display:flex}.dialog-heading h2{font-size:35px}.dialog-heading .map-code{margin-bottom:7px}.dialog-form>.field{margin-bottom:15px}fieldset{border:1px solid var(--contour);margin:24px 0 0;padding:18px}fieldset legend{padding:0 6px}fieldset>p{margin:0 0 16px;font-size:13px}.ingredient-row{border-top:1px dashed var(--contour);grid-template-columns:minmax(130px,1.3fr) 90px 100px minmax(140px,1fr) 44px;align-items:end;gap:8px;padding:12px 0;display:grid}.ingredient-row:first-child{border-top:0}.ingredient-row label{font-size:11px}.dialog-actions{justify-content:end;gap:10px;margin-top:24px;display:flex}.dialog-actions.split{justify-content:space-between;align-items:center}.dialog-actions.split>div{gap:12px;display:flex}.route-intro{color:var(--muted);margin:-10px 0 22px}.route-score{border:1px solid var(--contour);background:var(--paper);align-items:center;gap:16px;padding:16px;display:flex}.route-score>span{--score:0;background:conic-gradient(var(--evergreen) calc(var(--score) * 1%), var(--contour) 0);border-radius:50%;flex:none;width:52px;height:52px;-webkit-mask:radial-gradient(circle,#0000 52%,#000 53%);mask:radial-gradient(circle,#0000 52%,#000 53%)}.route-score>div{flex-direction:column;display:flex}.route-score strong{font-family:var(--font-field);font-size:21px}.route-score small{color:var(--muted)}.route-ingredients{border-top:1px solid var(--contour);margin-top:18px}.route-ingredient{border-bottom:1px solid var(--contour);grid-template-columns:28px 1fr auto;align-items:center;gap:8px;min-height:62px;display:grid}.route-ingredient>span:nth-child(2){flex-direction:column;display:flex}.route-ingredient small{color:var(--muted)}.route-ingredient>span:last-child{color:var(--muted);font-variant-numeric:tabular-nums}.route-symbol{color:var(--evergreen);font-weight:850}.route-ingredient.has-gap .route-symbol{color:var(--marker)}.responsibility-note{border-left:3px solid var(--ochre);color:var(--muted);padding-left:14px;font-size:13px}.toast{z-index:100;right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));border:1px solid color-mix(in srgb, var(--paper-raised) 45%, transparent);background:var(--ink);max-width:min(420px,100% - 32px);color:var(--paper-raised);box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:16px;padding:13px 15px;animation:.18s ease-out toast-in;display:flex;position:fixed}.toast[hidden]{display:none}.toast.urgent{background:var(--danger);color:#fff}.toast button{min-height:36px;color:inherit;cursor:pointer;background:0 0;border:0;margin-left:auto;font-weight:800;text-decoration:underline}.compact-header{grid-template-columns:1fr auto}.text-link{justify-self:end;font-weight:750}.legal-page{width:min(760px,100% - 40px);min-height:66vh;margin:0 auto;padding:clamp(60px,10vw,120px) 0;overflow:visible}.legal-page h1{font-size:clamp(42px,7vw,68px)}.legal-intro{color:var(--muted);margin:24px 0 56px;font-size:21px}.legal-page section{margin-top:40px}.legal-page h2{font-size:28px}.legal-page section p{color:var(--muted)}@keyframes sheet-in{0%{opacity:0;transform:translateY(12px)scale(.99)}}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}@media (max-width:1060px){.meal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero{grid-template-columns:1fr 1fr;gap:36px}footer{grid-template-columns:1fr auto}.art-note{display:none}.ingredient-row{grid-template-columns:minmax(130px,1fr) 90px 100px 44px}.swaps-field{grid-column:1/-2}}@media (max-width:760px){html{scroll-padding-top:20px}.site-header{grid-template-columns:1fr auto;padding:10px 20px}.site-header nav{border-top:1px solid var(--contour);grid-area:2/1/auto/-1;justify-content:space-between;gap:12px}.site-header nav a{flex:1;justify-content:center}.brand span:last-child{font-size:16px}.hero{grid-template-columns:1fr;padding-top:42px}h1{font-size:clamp(42px,13vw,60px)}.hero-map{margin-inline:-20px}.hero-map img{border-inline:0;border-radius:0;max-height:340px}.hero-map figcaption{padding-inline:20px}.section-heading{flex-direction:column;align-items:start}.add-pantry-form{grid-template-columns:1fr 1fr}.ingredient-field,.add-button{grid-column:1/-1}.pantry-row{grid-template-columns:1fr 84px 108px 44px;gap:7px}.meal-tools{flex-direction:column;align-items:stretch}.sort-field,.search-field{width:100%}.meal-grid{grid-template-columns:1fr}.meal-card{min-height:370px}.shopping-layout{grid-template-columns:1fr}.data-panel{border-top:1px solid var(--contour);border-left:0;padding:24px 0 0}.route-history ol{grid-template-columns:1fr 1fr}footer{padding-bottom:max(36px, env(safe-area-inset-bottom));grid-template-columns:1fr}footer nav{justify-content:space-between}.dialog-actions.split{flex-direction:column-reverse;align-items:stretch}.dialog-actions.split>.button{width:100%}.ingredient-row{grid-template-columns:1fr 80px 90px 44px}.swaps-field{grid-column:1/-1}.remove-ingredient{grid-area:1/4;align-self:end}}@media (max-width:430px){.site-header,.hero,.survey-section,.meals-section,.shopping-section{padding-inline:16px}.hero-map{margin-inline:-16px}.field-stats dd{font-size:24px}.pantry-row{grid-template-columns:1fr 72px 98px 44px}.pantry-name{grid-column:1/-1;padding-top:12px}.quantity-input{grid-column:1/3}.meal-card{grid-template-columns:50px 1fr;gap:12px;padding:18px}.score-marker{width:48px;height:48px;padding-top:12px}.score-marker span{font-size:18px}.shopping-sheet{margin-inline:-4px}.route-history ol{grid-template-columns:1fr}dialog{width:calc(100% - 16px);max-height:calc(100dvh - 16px)}.ingredient-row{grid-template-columns:1fr 1fr 44px}.ingredient-row>.field:first-child{grid-column:1/-1}.ingredient-row>.field:nth-child(3){grid-column:2}.swaps-field{grid-column:1/-1}.remove-ingredient{grid-area:2/3}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
