/* Mobile first. Keep every grid child shrinkable and every label wrappable. */
:root{--paper:#f5f6f3;--ink:#17352d;--muted:#63736c;--line:#dce3dc;--accent:#25644b;--white:#fff;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;font-size:16px;line-height:1.55;padding-bottom:env(safe-area-inset-bottom)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.18;letter-spacing:-.035em;margin:12px 0}h2{font-size:1.12rem;margin:0 0 8px}h3{font-size:1rem}p{margin:8px 0 16px}button,.button{min-height:48px;padding:12px 18px;border:1px solid var(--line);border-radius:9px;display:inline-flex;align-items:center;justify-content:center;text-align:center;font-weight:650;white-space:normal;overflow-wrap:anywhere}button:disabled{background:#edf0eb;color:#69766d;cursor:not-allowed}input,select{width:100%;min-width:0;max-width:100%;min-height:50px;padding:12px;border:1px solid #bdcbc0;border-radius:8px;background:white;color:var(--ink);font-size:16px}input:disabled,select:disabled{opacity:1;background:#f5f7f3;color:var(--muted)}label{display:block;font-weight:600;margin-bottom:7px}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ce8a2d;outline-offset:4px}.container,.header-inner{width:min(1080px,100%);margin-inline:auto;padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}.header{border-bottom:1px solid var(--line);background:white;padding-top:env(safe-area-inset-top)}.header-inner{min-height:84px;display:flex;align-items:center;justify-content:space-between;gap:10px}.brand{font-size:27px;font-weight:800;letter-spacing:-1px;color:var(--ink)}.brand span{color:#c39342}.header nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.header nav a{display:flex;align-items:center;min-height:44px;font-size:13px;padding:8px 6px;font-weight:600}.header .nav-add{border:1px solid var(--line);border-radius:8px;padding-inline:10px}.header a[aria-current]{color:#153d28;background:#eef3ed}.install-action{min-height:44px;padding:8px 10px;background:white;color:var(--accent);font-size:12px}.install-action[hidden],.pwa-status[hidden]{display:none}.pwa-status{position:fixed;z-index:40;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));max-width:520px;margin-inline:auto;padding:10px 14px;border:1px solid #c39342;border-radius:8px;background:#fff8e8;color:#5a4a28;box-shadow:0 5px 18px #17352d1c;font-size:14px;font-weight:650}main.container{padding-top:28px;padding-bottom:48px;min-height:72vh}.search-block{margin:0 0 28px}.search-block input{background:white}.small{font-size:13px}.muted{color:var(--muted)}.intro{margin-bottom:28px;max-width:700px}.panel{background:white;border:1px solid var(--line);border-radius:13px;padding:20px;margin-bottom:22px;min-width:0}.table-head{display:none}.city-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:20px 0;border-bottom:1px solid var(--line);color:var(--ink);overflow-wrap:anywhere}.city-row>*{min-width:0}.city-row>strong{font-size:18px}.city-row>span:nth-child(2){color:var(--muted);text-align:right}.mobile-label{display:block;color:var(--muted);font-size:12px}.empty{text-align:center;padding:32px 6px 38px;color:var(--muted)}.empty h3{color:var(--ink)}.empty-mark{display:inline-flex;border:1px solid var(--line);border-radius:50%;width:48px;height:48px;align-items:center;justify-content:center;font-size:24px}.primary{background:var(--accent);color:white;border-color:var(--accent)}.full{width:100%;margin-top:16px}.footer{border-top:1px solid var(--line);padding-top:24px;padding-bottom:max(30px,env(safe-area-inset-bottom));display:flex;flex-wrap:wrap;gap:10px 28px;color:var(--muted);font-size:13px}.footer strong{color:var(--ink)}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.metric{background:var(--paper);border-radius:9px;padding:16px;min-width:0;overflow-wrap:anywhere}.metric strong{display:block;font-size:30px;font-weight:500}.metric small{font-size:12px;color:var(--muted)}.breadcrumbs{display:flex;flex-wrap:wrap;gap:7px;font-size:13px;margin-bottom:16px;overflow-wrap:anywhere}.breadcrumbs a{min-width:0;max-width:100%;padding-block:8px}.category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.category{background:white;border:1px solid var(--line);padding:16px;border-radius:8px;overflow-wrap:anywhere}.chart-heading{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between}.chart-heading>div{min-width:0;max-width:100%}.chart-placeholder{min-height:200px;display:grid;place-items:center;text-align:center;background:var(--paper);border:1px dashed var(--line);border-radius:8px;padding:24px;margin-top:20px;color:var(--muted);width:100%}.link-list a{display:flex;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.badge{font-size:12px;background:#e9efdf;color:#49612f;border-radius:5px;padding:5px 9px;display:inline-block}.workflow{max-width:680px;margin:auto}.step{display:grid;grid-template-columns:32px minmax(0,1fr);gap:14px}.step-number{width:32px;height:32px;background:#edf2e9;border-radius:50%;text-align:center;padding-top:3px;font-weight:700}.step button{width:100%}.skip{position:absolute;top:-100px;left:max(12px,env(safe-area-inset-left));background:white;padding:12px;z-index:50}.skip:focus{top:max(8px,env(safe-area-inset-top))}.autocomplete-results{max-height:40vh;overflow-y:auto;width:100%;max-width:100%;overflow-wrap:anywhere}.camera-container{width:100%;max-width:100%}.camera-container video,.camera-container img{max-width:100%;height:auto}
@media(min-width:768px){.container,.header-inner{padding-left:max(32px,env(safe-area-inset-left));padding-right:max(32px,env(safe-area-inset-right))}main.container{padding-top:40px}.header nav a{font-size:14px;padding:10px 16px}.panel{padding:28px}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.category-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.table-head,.city-row{display:grid;grid-template-columns:1.25fr 1fr .65fr .65fr 1.3fr .65fr;gap:14px}.table-head{border-block:1px solid var(--line);padding:14px 0;margin-top:22px;font-size:12px;color:var(--muted)}.city-row>strong{font-size:16px}.city-row>span:nth-child(2){text-align:left}.mobile-label{display:none}.search-block{max-width:640px}.empty{padding-block:48px}}

/* Discovery: independent semantic item links above the stretched city link. */
.search-control{position:relative;min-width:0}.search-status{min-height:1.55em;margin-bottom:0}
.autocomplete-results{position:absolute;z-index:20;top:calc(100% + 5px);left:0;margin:0;padding:5px;list-style:none;background:white;border:1px solid var(--line);border-radius:9px;box-shadow:0 8px 20px #17352d12;max-height:min(40vh,320px)}
.autocomplete-results[hidden]{display:none}.autocomplete-results li{padding:13px 12px;min-height:48px;border-radius:5px;cursor:pointer;overflow-wrap:anywhere}.autocomplete-results li:hover,.autocomplete-results li[aria-selected="true"]{background:#eaf1e7}
.city-row{position:relative;isolation:isolate;align-items:start;border:1px solid var(--line);border-radius:10px;padding:16px;margin-top:12px;gap:14px}
.city-row>div{min-width:0;overflow-wrap:anywhere}.city-row .country-name{color:var(--muted);grid-column:1/-1;margin-top:-10px;font-size:14px}
.city-row>div:first-child{grid-column:1/-1}.city-link{font-size:18px;font-weight:700;display:inline-block;min-height:44px;padding-block:8px}
.city-link::after{content:"";position:absolute;inset:0;border-radius:10px;z-index:1}.city-link:focus-visible::after{outline:3px solid #ce8a2d;outline-offset:3px}
.item-link{position:relative;z-index:2;display:inline-flex;align-items:center;min-height:44px;padding-block:8px;overflow-wrap:anywhere;max-width:100%}.metric-value{font-variant-numeric:tabular-nums;font-weight:600}.is-missing{font-size:12px;font-weight:400;color:var(--muted)}
.mobile-label{margin-bottom:4px}.methodology{max-width:850px}.table-head{overflow-wrap:anywhere}
@media(min-width:768px){.city-row{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:14px 0;margin-top:0;align-items:center}.city-row>div:first-child,.city-row .country-name{grid-column:auto;margin-top:0}.city-link{font-size:16px}.table-head,.city-row{grid-template-columns:1.15fr 1.1fr .9fr .9fr 1.3fr .8fr}.item-link{padding-block:8px}.is-missing{font-size:12px}}

/* Prompt 3 analytics and exploration pages. */
.detail-title{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.detail-title>div{min-width:0}.detail-title h1{margin-top:2px}.eyebrow{text-transform:uppercase;letter-spacing:.09em;font-size:12px;font-weight:750;color:var(--muted);margin:0}.share-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.share-button{background:white;color:var(--accent);min-width:110px}.analytics-metrics{margin-bottom:28px}.analytics-metrics .metric strong{font-size:clamp(1.05rem,4vw,1.65rem);line-height:1.25;margin-top:8px}.analytics-metrics .metric strong.is-missing{font-size:.8rem;line-height:1.4;color:var(--muted)}.metric-note{margin-top:18px;margin-bottom:0}.selector-form,.product-controls form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;min-width:min(100%,230px)}.selector-form label,.product-controls form label{grid-column:1/-1}.selector-form select,.product-controls select{min-width:130px}.compact{min-height:50px;padding:10px 14px}.product-controls{display:grid;gap:24px}.current-price{padding-top:20px;border-top:1px solid var(--line)}.current-price>span{display:block;color:var(--muted);font-size:14px}.current-price>strong{display:block;font-size:clamp(1.5rem,6vw,2.35rem);line-height:1.2;margin-top:7px;overflow-wrap:anywhere}.current-price strong small{font-size:.48em;font-weight:550;color:var(--muted)}.current-price>strong.is-missing{font-size:1rem}.category-section{margin:30px 0}.category-card{background:white;border:1px solid var(--line);border-radius:10px;padding:18px;display:flex;flex-direction:column;min-width:0}.category-card span{font-weight:700;overflow-wrap:anywhere}.category-card strong{font-size:1.45rem;margin-top:18px;font-variant-numeric:tabular-nums}.category-card strong.is-missing{font-size:.85rem;line-height:1.4;color:var(--muted)}.category-card small{color:var(--muted);margin-top:2px}.chart-panel{overflow:hidden}.chart-heading{align-items:flex-end}.chart{width:100%;min-width:0;margin-top:20px;background:var(--paper);border-radius:9px;padding:8px 4px 0}.chart svg{display:block;width:100%;height:auto;min-height:230px;overflow:visible}.chart-grid{stroke:#d9e0da;stroke-width:1}.chart-axis{fill:#63736c;font-size:11px}.chart-line{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.chart-point{fill:white;stroke:var(--accent);stroke-width:2}.compact-empty{padding:20px}.place-grid{display:grid;gap:20px}.price-table{margin-top:14px}.price-head{display:none}.price-row{border-top:1px solid var(--line);padding:16px 0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.price-row>*{min-width:0;overflow-wrap:anywhere}.price-row>*::before{content:attr(data-label);display:block;font-size:12px;color:var(--muted);font-weight:400}.price-row>*:last-child{grid-column:1/-1}.autocomplete-results li strong,.autocomplete-results li span{display:inline;overflow-wrap:anywhere}.breadcrumbs span[aria-current]{font-weight:650}.breadcrumbs>*{overflow-wrap:anywhere;min-width:0}
@media(max-width:389px){.category-grid{grid-template-columns:1fr}}
.notice{background:#fff8e8;border-left:4px solid #c39342;padding:12px 14px;border-radius:5px;color:#5a4a28;margin:-12px 0 24px;overflow-wrap:anywhere}
@media(min-width:768px){.detail-title{align-items:center}.product-controls{grid-template-columns:minmax(240px,.7fr) minmax(0,1.3fr);align-items:end}.current-price{border-top:0;border-left:1px solid var(--line);padding:0 0 0 28px}.place-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.price-head,.price-row{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:20px}.price-head{padding:10px 0;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line)}.price-row>*:last-child{grid-column:auto}.price-row>*::before{display:none}.chart svg{min-height:260px}}

/* Prompt 4: anonymous contribution location. */
.contribution-workflow .step{transition:border-color .15s ease,background .15s ease}.contribution-workflow .step>div{min-width:0}.location-step{border-color:#b7caba}.location-step.is-complete{border-color:#75a27f}.location-step.is-complete .step-number{background:#dcebdd}.location-action{text-transform:uppercase;letter-spacing:.025em;margin-top:8px;max-width:100%}.location-status{min-height:1.55em;color:#8b3c2f;font-weight:600;overflow-wrap:anywhere}.location-result{background:#eef5ed;border:1px solid #cadcca;border-radius:10px;padding:16px;margin:16px 0;overflow-wrap:anywhere}.location-result[hidden]{display:none}.location-result h3{font-size:1.45rem;margin:4px 0}.location-result p{margin:3px 0 10px}.location-success{display:inline-block;color:#2d6743;font-size:.82rem;font-weight:750;text-transform:uppercase;letter-spacing:.05em}.privacy-note{border-top:1px solid #d3e0d2;padding-top:12px;margin-top:14px!important}.provider-attribution{margin-bottom:0!important}.provider-attribution a{text-decoration:underline}.future-step.is-locked{opacity:.62}.future-step.is-ready{border-color:#c39342;background:#fffdf8}.future-step.is-ready .step-number{background:#f3e5c7}.future-step button:disabled{width:100%}@media(min-width:520px){.location-action{width:auto;min-width:250px}}

/* Prompt 5: temporary photo and identification. */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.photo-step.is-ready,.identification-step.is-ready{border-color:#c39342;background:#fffdf8}.photo-step.is-complete,.identification-step.is-complete{border-color:#75a27f;background:#fff}.camera-action{width:100%;cursor:pointer;text-align:center}.photo-preview{margin-top:16px}.photo-preview[hidden],.correction[hidden]{display:none}.photo-preview img{display:block;width:100%;max-height:min(68vh,620px);object-fit:contain;border-radius:10px;background:#eef1ec}.photo-actions,.identification-actions{display:grid;grid-template-columns:1fr;gap:10px;margin-top:14px}.flow-status{min-height:1.55em;color:#8b3c2f;font-weight:600;overflow-wrap:anywhere}.recognized-name{font-size:clamp(1.3rem,5vw,1.8rem);line-height:1.25;margin:8px 0}.recognized-unit{font-weight:650}.likely-choices{display:grid;gap:9px}.likely-choices button{text-align:left;justify-content:flex-start;background:white}.correction{position:relative;border-top:1px solid var(--line);padding-top:16px;margin-top:16px}.correction-results{position:static;margin-top:6px}.correction-results li{padding:0}.result-button{width:100%;border:0;background:white;justify-content:flex-start;text-align:left}.correction label{margin-top:12px}.correction-confirm{width:100%;margin-top:14px}.future-step.is-ready{opacity:1}.future-step.is-ready input:disabled{border-color:#c39342;background:#fffdf8}.photo-step.is-locked .camera-action{pointer-events:none;background:#edf0eb;color:#69766d;border-color:var(--line)}
@media(min-width:520px){.photo-actions,.identification-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.camera-action{width:auto;min-width:280px}}

/* Prompt 6: exact price entry, submission, and success. */
.price-identity{display:flex;flex-direction:column;gap:2px;padding:12px 14px;margin:8px 0 16px;background:#eef5ed;border-radius:8px;overflow-wrap:anywhere}.price-identity[hidden]{display:none}.price-identity strong{font-size:1.15rem}.price-identity span{color:var(--muted);font-weight:650}.price-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}.price-entry strong{min-width:52px;text-align:center;font-size:1.05rem}.submission-success{text-align:center;padding-block:32px}.submission-success[hidden]{display:none}.submission-success h2{font-size:clamp(1.7rem,7vw,2.4rem);margin:8px 0}.submission-success h3{font-size:clamp(1.25rem,5vw,1.7rem);margin:18px 0 4px}.success-mark{display:inline-grid;place-items:center;width:54px;height:54px;border-radius:50%;background:#dcebdd;color:#25644b;font-size:1.8rem;font-weight:800}.success-price{font-size:1.2rem;font-weight:700;overflow-wrap:anywhere}.success-actions{display:grid;gap:10px;margin-top:24px}.success-actions .button{width:100%}
@media(min-width:520px){.success-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Prompt 9: public commerce and private operations. */
.desktop-nav{display:flex;align-items:center;gap:clamp(12px,2vw,28px)}.mobile-nav{display:none;position:relative}.mobile-nav summary{cursor:pointer;font-size:1.4rem;list-style:none}.mobile-nav div{position:absolute;right:0;top:38px;z-index:20;width:min(280px,82vw);display:grid;gap:4px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px #17352d24}.mobile-nav a{padding:10px}.footer{display:flex;align-items:center;gap:18px}.footer-links{display:flex;flex-wrap:wrap;gap:10px 20px}.footer-handle{margin-left:auto;font-weight:750}.page-heading{max-width:720px;margin:32px 0}.commerce-panel,.support-card,.checkout-summary,.payment-state{max-width:720px}.dataset-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.dataset-form label,.admin-login label{display:grid;gap:6px}.dataset-form .button{align-self:end}.commercial-price{display:block;font-size:clamp(1.7rem,5vw,2.5rem);margin:18px 0}.payment-buttons{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.payment-state{text-align:center;margin:50px auto}.admin-header small{font-size:.72rem;color:var(--muted)}.text-button{border:0;background:none;color:inherit;text-decoration:underline}.admin-container{max-width:1320px}.admin-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:28px 0}.usable-count{display:flex;flex-direction:column;text-align:right}.usable-count strong{font-size:2rem}.admin-section{padding:22px 0;border-top:1px solid var(--line)}.admin-section h2{display:flex;gap:10px;align-items:center}.count{font-size:.8rem;background:#e6eee4;border-radius:99px;padding:3px 8px}.review-grid,.pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}.review-card{display:grid;grid-template-columns:120px 1fr;gap:16px;padding:16px;border:1px solid var(--line);border-radius:10px;background:#fff}.review-card img{width:120px;height:120px;object-fit:cover;border-radius:8px}.review-card dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;font-size:.9rem}.review-card dd{margin:0}.admin-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:start}.admin-actions details{width:100%;padding-top:6px}.admin-actions details label{display:grid;gap:4px;margin:7px 0}.danger{color:#8b2d25}.compact{padding:16px}.pricing-grid .compact{margin:0}.price-row{display:grid;grid-template-columns:1fr 84px auto;gap:8px;align-items:center;margin:12px 0}.check{display:flex;align-items:center;gap:5px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:9px;border-bottom:1px solid var(--line);white-space:nowrap}.admin-login{max-width:460px;margin:64px auto}.admin-login form{display:grid;gap:16px}.legal-page{max-width:760px;margin:40px auto}
@media(max-width:760px){
/* Prompt 10: compact mobile shell. The .header qualifier intentionally beats the earlier .header nav rule. */
.header-inner{min-height:70px;gap:16px;padding-top:0;padding-bottom:0}
.brand{font-size:26px;line-height:1;flex-shrink:0}
.header .desktop-nav{display:none}
.mobile-nav{display:block;margin-left:auto}
.mobile-nav summary{width:48px;height:48px;display:grid;place-items:center;padding:0;cursor:pointer;font-size:0;line-height:1;list-style:none;color:var(--ink);border-radius:8px}
.mobile-nav summary::-webkit-details-marker{display:none}
.mobile-nav summary::before{content:"☰";font-size:30px;line-height:1;font-weight:400}
.mobile-nav[open] summary::before{content:"×";font-size:36px;font-weight:300}
.mobile-nav div{right:0;top:54px;z-index:50;width:min(300px,calc(100vw - 40px));gap:0;padding:8px;border-radius:12px;box-shadow:0 14px 35px #17352d24}
.mobile-nav a{display:block;min-height:46px;padding:12px 14px;border-radius:7px;font-size:16px;font-weight:600}
.mobile-nav a:hover{background:var(--paper);text-decoration:none}
main.container{min-height:0;padding-bottom:36px}
.footer{display:block;padding-top:28px;padding-bottom:max(32px,env(safe-area-inset-bottom));font-size:14px}
.footer-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 24px}
.footer-links a{display:block;line-height:1.35}
.footer-handle{display:block;margin:30px 0 0;text-align:right;font-size:15px;font-weight:750}
.dataset-form{grid-template-columns:1fr}
.review-card{grid-template-columns:1fr}
.review-card img{width:100%;height:auto;max-height:280px}
.admin-heading{align-items:flex-start}
.price-row{grid-template-columns:minmax(0,1fr) 78px}
.price-row .check{grid-column:1/-1}
.payment-buttons{display:grid}
.payment-buttons .button{width:100%}
}

/* Prompt 8: installable shell, connection state, and offline fallback. */
.offline-page{min-height:100vh;display:grid;place-items:center;padding:max(24px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));background:var(--paper)}.offline-card{width:min(520px,100%);padding:clamp(24px,7vw,44px);background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 34px #17352d12}.offline-card .brand{display:inline-block;margin-bottom:26px}.offline-card h1{margin-bottom:16px}.offline-card p{color:var(--muted);margin-bottom:28px}.offline-card .button{width:100%}
