:root{
  --green:#2F6B3A; --green-d:#234f2b; --amber:#F2A81D; --clay:#B5532F;
  --cream:#FBF6EC; --sand:#F1E8D6; --ink:#2A2623; --muted:#6b625a;
  --wa:#25D366; --line:#e3d8c3; --neon:#E8FF1F;
  --head:"Bricolage Grotesque",Georgia,serif; --body:"DM Sans",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
body{font:400 1rem/1.55 var(--body);background:var(--cream);color:var(--ink)}
h1,h2,h3{font-family:var(--head);line-height:1.1;letter-spacing:-.01em}
a{color:inherit}
:focus-visible{outline:3px solid var(--amber);outline-offset:2px}
.wrap{width:min(1120px,100% - 2rem);margin-inline:auto}

/* header */
.top{background:var(--green);color:#fff;position:sticky;top:0;z-index:20}
.top-row{display:flex;align-items:center;gap:1rem;padding:.7rem 0;flex-wrap:wrap}
.logo{display:flex;align-items:center;gap:.6rem;text-decoration:none;font:800 1.2rem var(--head)}
.logo-mark{display:grid;place-items:center;width:2.2rem;height:2.2rem;border-radius:.5rem;background:var(--amber);color:var(--ink);font-size:.95rem}
.search{display:flex;flex:1;min-width:260px;background:#fff;border-radius:.6rem;overflow:hidden}
.search input,.search select{border:0;padding:.7rem .8rem;font:inherit;color:var(--ink);background:#fff;min-width:0}
.search input{flex:1}
.search select{border-left:1px solid var(--line);max-width:9.5rem}
.search button{border:0;background:var(--amber);color:var(--ink);font:700 1rem var(--body);padding:0 1.1rem;cursor:pointer}
.search button:hover{background:#ffba3a}

/* the market-stall awning: the one bold element */
.awning{height:20px;background:
  radial-gradient(circle at 20px 0,var(--green) 19px,transparent 20px) 0 0/40px 20px,
  var(--cream);position:relative}
.awning::before{content:"";position:absolute;inset:0;background:
  radial-gradient(circle at 60px 0,var(--amber) 19px,transparent 20px) 0 0/80px 20px;
  mix-blend-mode:normal;opacity:0}
.awning{background:
  radial-gradient(circle at 20px 0,var(--green) 19px,transparent 20px) 0 0/80px 20px,
  radial-gradient(circle at 60px 0,var(--amber) 19px,transparent 20px) 0 0/80px 20px,
  var(--cream)}

/* buttons */
.btn{display:inline-block;border:2px solid transparent;border-radius:.6rem;padding:.7rem 1.2rem;font:700 1rem var(--body);cursor:pointer;text-decoration:none;text-align:center}
.btn-main{background:var(--green);color:#fff}
.btn-main:hover{background:var(--green-d)}
.btn-ghost{background:transparent;border-color:currentColor;color:inherit}
.top .btn-ghost:hover{background:#ffffff1f}
.hero .btn-ghost{color:var(--green)}
.hero .btn-ghost:hover{background:var(--sand)}
.link{background:none;border:0;color:var(--clay);font:700 .95rem var(--body);cursor:pointer;text-decoration:underline}

/* hero */
.hero{padding:2.5rem 0 1rem}
.hero-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:2rem;align-items:center}
.hero h1{font-size:clamp(2.1rem,5.2vw,3.6rem);font-weight:800;color:var(--green-d)}
.lead{margin:1rem 0 1.5rem;max-width:34rem;font-size:1.1rem;color:var(--muted)}
.hero-cta{display:flex;gap:.8rem;flex-wrap:wrap}
.stall{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem;transform:rotate(-2deg)}
.crate{aspect-ratio:1;display:grid;place-items:center;font-size:clamp(2rem,5vw,3rem);border-radius:.8rem;border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink)}
.c1{background:#cfe3c4}.c2{background:#f7d58a}.c3{background:#e6b39f}
.c4{background:#f7d58a}.c5{background:#e6b39f}.c6{background:#cfe3c4}

/* sections */
.block{padding:2.2rem 0 .5rem}
.block h2{font-size:1.6rem;font-weight:800}
.block-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.block-head p{color:var(--muted)}
.block>h2{margin-bottom:1rem}

.cats{display:flex;gap:.6rem;overflow-x:auto;padding-bottom:.4rem;scrollbar-width:thin}
.cat{flex:0 0 auto;display:flex;align-items:center;gap:.5rem;background:#fff;border:2px solid var(--line);border-radius:999px;padding:.55rem 1rem;font:500 .98rem var(--body);cursor:pointer;color:var(--ink)}
.cat:hover{border-color:var(--clay)}
.cat[aria-pressed="true"]{background:var(--clay);border-color:var(--clay);color:#fff}

/* stores */
.stores{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem}
.store{background:#fff;border:1px solid var(--line);border-radius:1rem;overflow:hidden;display:flex;flex-direction:column}
.store-banner{height:64px;background:var(--bg)}
.store-body{padding:0 1rem 1rem;display:flex;flex-direction:column;gap:.35rem;flex:1}
.store-logo{width:3.4rem;height:3.4rem;margin-top:-1.7rem;border-radius:50%;background:#fff;border:3px solid #fff;box-shadow:0 0 0 2px var(--line);display:grid;place-items:center;font-size:1.6rem}
.store h3{font-size:1.15rem;margin-top:.3rem}
.meta{color:var(--muted);font-size:.9rem}
.badge{display:inline-flex;align-items:center;gap:.3rem;align-self:flex-start;background:#e1efe0;color:var(--green-d);font:700 .78rem var(--body);padding:.15rem .55rem;border-radius:999px}
.store .btn{margin-top:auto;padding:.5rem;font-size:.92rem}

/* products */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1rem}
.card{background:#fff;border:1px solid var(--line);border-radius:.9rem;overflow:hidden;display:flex;flex-direction:column}
.thumb{aspect-ratio:4/3;display:grid;place-items:center;font-size:3.6rem;background:var(--bg)}
.card-body{padding:.8rem;display:flex;flex-direction:column;gap:.25rem;flex:1}
.card h3{font:700 1rem var(--body)}
.price{font:800 1.25rem var(--head);color:var(--clay)}
.card .by{font-size:.88rem;color:var(--muted)}
.wa{margin-top:auto;display:flex;align-items:center;justify-content:center;gap:.4rem;background:var(--wa);color:#073b1b;font:700 .95rem var(--body);padding:.6rem;border-radius:.5rem;text-decoration:none}
.wa:hover{filter:brightness(.94)}
.empty{padding:2rem;text-align:center;color:var(--muted);background:var(--sand);border-radius:1rem}

/* how it works: a real sequence, so numbered */
.how{background:var(--sand);margin-top:2.5rem}
.how .block{padding-bottom:2.5rem}
.steps{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;counter-reset:s}
.steps li{counter-increment:s;background:var(--cream);border-radius:.9rem;padding:1rem;display:flex;flex-direction:column;gap:.3rem;border-top:4px solid var(--amber)}
.steps li::before{content:counter(s);font:800 1.6rem var(--head);color:var(--green)}
.steps span{color:var(--muted)}

/* footer */
.foot{background:var(--ink);color:#e9e2d6;padding:1.6rem 0}
.foot-row{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:center}
.foot span{color:#b9b0a2;font-size:.92rem}
.built{font-size:.95rem}
.built a{text-decoration:none;font-weight:700;letter-spacing:.02em}
.orion{color:var(--neon)}

/* dialog + toast */
dialog{border:0;border-radius:1rem;padding:0;width:min(480px,calc(100% - 2rem));background:var(--cream);color:var(--ink)}
dialog::backdrop{background:#2a262388}
dialog form{padding:1.3rem;display:flex;flex-direction:column;gap:.8rem}
.dlg-head{display:flex;justify-content:space-between;align-items:center}
.x{border:0;background:none;font-size:1.8rem;line-height:1;cursor:pointer;color:var(--muted)}
label{display:flex;flex-direction:column;gap:.25rem;font-weight:500;font-size:.92rem}
input,select,textarea{font:inherit;padding:.6rem .7rem;border:2px solid var(--line);border-radius:.5rem;background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus{border-color:var(--green);outline:0}
.two{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
.toast{position:fixed;left:50%;bottom:1.2rem;transform:translate(-50%,150%);background:var(--green-d);color:#fff;padding:.8rem 1.2rem;border-radius:.6rem;transition:transform .25s;z-index:50;max-width:calc(100% - 2rem)}
.toast.show{transform:translate(-50%,0)}

@media(max-width:760px){
  .hero-grid{grid-template-columns:1fr}
  .stall{max-width:340px;margin:0 auto;transform:rotate(-1.5deg)}
  .top .btn-ghost{margin-left:auto}
  .search{order:3;flex-basis:100%}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.toast{transition:none}}

/* ---- draft 2: product photos, store page, dashboard ---- */
.thumb{position:relative;overflow:hidden;text-decoration:none}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.tag{position:absolute;top:.5rem;left:.5rem;background:var(--ink);color:#fff;font:700 .78rem var(--body);font-style:normal;padding:.2rem .6rem;border-radius:999px}
.card.sold .thumb img,.card.sold .thumb span{opacity:.45}
.card h3 a,.card .by a,.store h3 a{text-decoration:none}
.card .by a:hover,.store h3 a:hover{text-decoration:underline}
.store .btn{text-decoration:none}
.seller-link{font-weight:500!important;color:#e9e2d6}
.btn-wa{background:var(--wa);color:#073b1b}
.btn-wa:hover{filter:brightness(.94)}
.btn-ghost.dark{color:var(--green);border-color:var(--line)}
.btn-ghost.dark:hover{background:var(--sand)}
.btn-sm{padding:.4rem .8rem;font-size:.88rem}
.top-actions{display:flex;gap:.6rem;margin-left:auto}

.sp-banner{height:140px;background:var(--bg)}
.sp-head{display:flex;gap:1.2rem;align-items:flex-start;padding-bottom:.5rem}
.store-logo.big{width:5.5rem;height:5.5rem;margin-top:-2.75rem;font-size:2.6rem;flex:0 0 auto}
.sp-info{padding-top:.8rem;display:flex;flex-direction:column;gap:.5rem}
.sp-info h1{font-size:clamp(1.7rem,4vw,2.4rem);font-weight:800;color:var(--green-d)}
.about{max-width:42rem}
.sp-info .hero-cta{align-items:center;margin-top:.4rem}

.dash h1{font-size:1.8rem;font-weight:800;margin-bottom:.8rem;color:var(--green-d)}
.dash .block-head h1{margin:0}
.panel{background:#fff;border:1px solid var(--line);border-radius:1rem;padding:1.2rem;margin-bottom:1.2rem}
.panel h2{font-size:1.25rem;margin-bottom:.8rem}
.panel.narrow{max-width:420px;margin-inline:auto}
.panel form{display:flex;flex-direction:column;gap:.8rem;max-width:520px}
.err{color:#a1260f;font-weight:700;font-size:.92rem}
.item{display:flex;gap:.7rem;align-items:center;padding:.8rem 0;border-top:1px solid var(--line);flex-wrap:wrap}
.item:first-child{border-top:0}
.item .grow{flex:1;min-width:180px}
.item img,.item .ph{width:56px;height:56px;border-radius:.5rem;object-fit:cover;background:var(--sand);display:grid;place-items:center;font-size:1.6rem}
.code{font-family:monospace;letter-spacing:.08em;background:var(--sand);padding:.1rem .4rem;border-radius:.3rem}
.preview{max-width:200px;border-radius:.6rem;border:1px solid var(--line)}
.meta+.meta{margin-left:.4rem}

@media(max-width:560px){
  .sp-head{flex-direction:column;gap:.2rem}
  .sp-banner{height:110px}
  .item .btn-sm{flex:1 1 auto}
}

/* ---- draft 3: featured slider, photo viewer ---- */
.featured{padding:1.2rem 0 0}
.fs-wrap{position:relative}
.fs{position:relative;aspect-ratio:7/3;min-height:150px;border-radius:1rem;overflow:hidden;background:var(--sand);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink)}
.slide{position:absolute;inset:0;display:block;opacity:0;visibility:hidden;transition:opacity .6s,visibility .6s}
.slide.on{opacity:1;visibility:visible}
.slide img{width:100%;height:100%;object-fit:cover;display:block}
.ftag{position:absolute;top:.7rem;left:.7rem;background:var(--amber);color:var(--ink);font:700 .75rem var(--body);padding:.2rem .6rem;border-radius:999px;letter-spacing:.04em;text-transform:uppercase}
.fcap{position:absolute;left:0;right:0;bottom:0;padding:1.8rem 1rem .8rem;color:#fff;font:800 clamp(1.1rem,3vw,1.8rem) var(--head);background:linear-gradient(transparent,#000a)}
.fs-btn{position:absolute;top:calc(50% - .8rem);transform:translateY(-50%);width:2.4rem;height:2.4rem;border-radius:50%;border:0;background:#fffd;color:var(--ink);font-size:1.6rem;line-height:1;cursor:pointer}
.fs-btn.prev{left:.6rem}.fs-btn.next{right:.6rem}
.fs-dots{display:flex;justify-content:center;gap:.5rem;padding-top:.7rem}
.fs-dots button{width:.65rem;height:.65rem;border-radius:50%;border:0;background:var(--line);cursor:pointer;padding:0}
.fs-dots button[aria-current="true"]{background:var(--green);transform:scale(1.25)}
.featured.single .fs-btn,.featured.single .fs-dots{display:none}
.thumb:has(img){cursor:zoom-in}
.lightbox{border:0;padding:0;background:transparent;width:min(96vw,1100px);max-width:none;overflow:visible;outline:0}
.lightbox::backdrop{background:#000d}
.lightbox img{display:block;max-width:100%;max-height:82vh;margin:auto;border-radius:.6rem;background:#111;object-fit:contain}
.lb-title{color:#fff;text-align:center;margin-top:.6rem}
.lightbox .x{position:absolute;top:-2.6rem;right:0;color:#fff;font-size:2.2rem}
.feat-th{width:112px!important;height:48px!important}
#featList{margin-bottom:1rem}
.stack{display:flex;flex-direction:column;gap:.8rem;max-width:520px}
@media(prefers-reduced-motion:reduce){.slide{transition:none}}

/* the hidden attribute must always win, even on buttons and other elements that set their own display */
[hidden]{display:none!important}

/* ---- draft 4: optional sub-area label ---- */
.opt{font-weight:400;color:var(--muted)}

/* ---- draft 5: store pictures ---- */
.store-logo{overflow:hidden}
.store-logo img{width:100%;height:100%;object-fit:cover;display:block}
.logo-edit{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}
.logo-edit .store-logo{margin-top:0;width:5.5rem;height:5.5rem;font-size:2.6rem;flex:0 0 auto}
.logo-actions{display:flex;flex-direction:column;gap:.4rem;flex:1;min-width:200px}
.logo-actions .link{align-self:flex-start}
.item img.mini-logo{border-radius:50%;width:44px;height:44px}
