/* FED Catering ordering — design system.
   Warm editorial: cream page, serif display headings, olive/stone accents.
   Matches the FED house palette (see cafes-dashboard CLAUDE.md). */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Inter:wght@400;500;600&display=swap');

:root{
  --page:#f4f1ec; --card:#faf8f5; --ink:#3a3530; --ink-soft:#6f665c;
  --line:#e2ddd6; --accent:#8a7560; --accent-dark:#6b5947;
  --btn:#2c2a25; --btn-ink:#f4f1ec;
  --good:#5a8a6a; --bad:#a05c5c; --warn:#a07820;
  --gf:#3f7d8c; --gf-bg:#e6f1f3;
  --radius:14px; --radius-sm:9px; --shadow:0 1px 2px rgba(58,53,48,.05),0 8px 30px rgba(58,53,48,.06);
  --serif:'Fraunces',Georgia,'Times New Roman',serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --maxw:1340px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;letter-spacing:-.01em;margin:0;line-height:1.08}
.serif{font-family:var(--serif)}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.muted{color:var(--ink-soft)}
.eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:600}
.center{text-align:center}

/* ---- header ---- */
.hdr{position:sticky;top:0;z-index:40;background:rgba(244,241,236,.9);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.hdr-in{display:flex;align-items:center;gap:28px;height:66px}
.logo{font-family:var(--serif);font-weight:600;font-size:26px;letter-spacing:.02em}
.nav{display:flex;gap:26px;margin-left:8px;flex:1}
.nav a{font-size:14px;color:var(--ink-soft);padding:4px 0;border-bottom:2px solid transparent}
.nav a:hover,.nav a.active{color:var(--ink);border-color:var(--accent)}
.hdr-actions{display:flex;align-items:center;gap:18px}
.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--card);cursor:pointer}
.icon-btn:hover{border-color:var(--accent)}
.cart-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--btn);color:var(--btn-ink);font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center}
.nav-toggle{display:none;background:var(--card);border:1px solid var(--line);border-radius:50%;width:40px;height:40px;align-items:center;justify-content:center;cursor:pointer;color:var(--ink);padding:0}
.nav-toggle:hover{border-color:var(--accent)}
.mobile-nav{display:none}
.mobile-nav.open{display:flex;flex-direction:column;background:var(--card);border-bottom:1px solid var(--line);padding:6px 24px 14px}
.mobile-nav a{padding:14px 4px;font-size:16px;color:var(--ink);border-bottom:1px solid var(--line)}
.mobile-nav a:last-child{border-bottom:none}
.mobile-nav a.active{color:var(--accent-dark);font-weight:600}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--sans);font-size:14px;font-weight:500;padding:12px 22px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:.15s;line-height:1}
.btn-primary{background:var(--btn);color:var(--btn-ink)}
.btn-primary:hover{background:#3d3a33}
.btn-outline{background:var(--card);color:var(--ink);border-color:var(--line)}
.btn-outline:hover{border-color:var(--accent)}
.btn-lg{padding:15px 28px;font-size:15px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn-ghost{background:transparent;border-color:transparent;color:var(--accent-dark);padding:8px 6px}

/* ---- cards / shells ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.pad{padding:24px}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:20px;background:var(--page);border:1px solid var(--line);color:var(--ink-soft)}
.tag{display:inline-block;font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:5px;letter-spacing:.03em;vertical-align:middle;line-height:1.5;margin-left:2px}
.tag-gf{background:var(--gf-bg);color:var(--gf);border:1px solid #cfe4e8}
.tag-veg{background:#eaf1e7;color:#5a7d4a;border:1px solid #d3e3ca}
.tag-vegan{background:#e7f0e9;color:#3f7d55;border:1px solid #cfe4d5}
.tag-nuts{background:#f4ece1;color:#9a6a35;border:1px solid #e6d6bf}
.tag-df{background:#eef0f4;color:#5b6b86;border:1px solid #d6dde8}

/* ---- hero ---- */
.hero{display:grid;grid-template-columns:0.92fr 1.2fr;gap:34px;align-items:center;padding:56px 0 40px}
.hero h1{font-size:clamp(38px,5vw,62px);line-height:.98}
.hero p.lede{font-size:17px;color:var(--ink-soft);max-width:30ch;margin:20px 0 28px}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap}
.hero-wordmark{line-height:0;margin-bottom:4px}
.hero-wordmark img{height:clamp(42px,6.3vw,73px);width:auto;max-width:100%;display:block}
.hero-img{border-radius:var(--radius);overflow:hidden;aspect-ratio:4/3;background:var(--page) center/cover no-repeat;box-shadow:var(--shadow);position:relative}
.hero-img .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--accent);font-family:var(--serif);font-size:20px;background:linear-gradient(135deg,#efe7da,#e3d8c8)}

/* ---- order-context bar ---- */
.ctxbar{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.ctxbar .fld{padding:14px 18px;border-right:1px solid var(--line);min-width:0}
.ctxbar .fld:last-child{border-right:none}
.ctxbar label{display:block;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:7px}
.ctxbar select,.ctxbar input{width:100%;border:none;background:transparent;font-family:var(--sans);font-size:15px;color:var(--ink);padding:0;outline:none;cursor:pointer}
.ctxbar .row{display:flex;align-items:center;gap:9px}

/* generic form controls */
.field{margin-bottom:16px}
.field label{display:block;font-size:12px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;font-family:var(--sans);font-size:15px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);padding:11px 13px;outline:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}
.field textarea{min-height:80px;resize:vertical}
.field .hint{font-size:12px;color:var(--ink-soft);margin-top:5px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.hp{display:none!important}   /* honeypot — display:none is skipped by browser/password-manager autofill (off-screen fields aren't), avoiding false-positive dropped orders */

/* ---- menu cards (homepage) ---- */
.menucards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.menucard{cursor:pointer;overflow:hidden;display:flex;flex-direction:column}
.menucard .thumb{aspect-ratio:5/4;background:linear-gradient(135deg,#efe7da,#e0d4c2) center/cover no-repeat;display:flex;align-items:center;justify-content:center;font-size:34px;transition:transform .35s ease}
.menucard:hover .thumb{transform:scale(1.04)}
.menucard{overflow:hidden}
.menucard .mc-body{padding:16px 16px 18px}
.menucard h3{font-size:20px;margin-bottom:4px}
.menucard .from{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--accent);letter-spacing:.04em}
.menucard .mc-desc{font-size:13px;color:var(--ink-soft);margin-top:6px}

/* ---- value props / how it works ---- */
.props{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.prop{display:flex;gap:12px;align-items:flex-start}
.prop .pi{font-size:22px}
.prop h4{font-family:var(--sans);font-size:13px;font-weight:600;margin-bottom:2px}
.prop p{font-size:13px;color:var(--ink-soft);margin:0}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.step{display:flex;gap:12px;align-items:flex-start}
.step .n{flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:16px;color:var(--accent)}
.step h4{font-family:var(--sans);font-size:14px;font-weight:600;margin-bottom:2px}
.step p{font-size:13px;color:var(--ink-soft);margin:0}

/* ---- sections ---- */
section.block{padding:40px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px;gap:20px}
.sec-head h2{font-size:32px}
.divider{height:1px;background:var(--line);border:none;margin:0}

/* ---- order page layout ---- */
.order-layout{display:grid;grid-template-columns:1fr 360px;gap:28px;align-items:start;padding:28px 0 60px}
.menu-nav{display:flex;gap:8px;flex-wrap:wrap;position:sticky;top:74px;background:var(--page);padding:10px 0;z-index:20}
.menu-nav a{font-size:13px;padding:7px 14px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--ink-soft)}
.menu-nav a.active,.menu-nav a:hover{background:var(--btn);color:var(--btn-ink);border-color:var(--btn)}
.menu-sec{margin-bottom:34px;scroll-margin-top:130px}
.menu-sec h2{font-size:26px;margin-bottom:4px}
.menu-sec .sub{color:var(--ink-soft);font-size:13px;margin-bottom:16px}
.menu-subhead{font-family:var(--serif);font-size:19px;margin:6px 0 12px;color:var(--accent-dark);border-bottom:1px solid var(--line);padding-bottom:6px}
.menu-subhead+.items{margin-bottom:20px}
/* photo banner at the head of each order-page section */
.menu-sec-banner{position:relative;height:300px;border-radius:var(--radius);overflow:hidden;margin-bottom:18px;background:#e7e0d6 center/cover no-repeat;display:flex;align-items:flex-end;box-shadow:var(--shadow)}
@media(max-width:600px){.menu-sec-banner{height:230px}}
.menu-sec-banner:before{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(40,36,30,.74),rgba(40,36,30,.12) 58%,rgba(40,36,30,0))}
.menu-sec-banner .msb{position:relative;padding:16px 20px;color:#fff}
.menu-sec-banner h2{color:#fff;font-size:27px;margin:0}
.menu-sec-banner .sub{color:rgba(255,255,255,.9);font-size:13px;margin:3px 0 0}
.menu-sec-head{padding:4px 2px 12px;border-bottom:1px solid var(--line);margin-bottom:16px}
.menu-sec-head h2{font-family:var(--serif);font-size:28px;margin:0;color:var(--ink)}
.menu-sec-head .sub{color:var(--ink-soft);font-size:14px;margin:3px 0 0}
.items{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.item{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card)}
.item .nm{font-weight:500;font-size:14.5px}
.item .pr{font-size:13px;color:var(--ink-soft);margin-top:2px}
.item .r{display:flex;align-items:center;gap:10px;flex:none}
.qty{display:flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:20px;background:var(--page);overflow:hidden}
.qty button{width:30px;height:30px;border:none;background:transparent;font-size:17px;color:var(--ink);cursor:pointer;line-height:1}
.qty button:hover{background:var(--line)}
.qty span{min-width:22px;text-align:center;font-weight:600;font-size:14px}
.add-btn{border:1px solid var(--accent);color:var(--accent-dark);background:var(--card);border-radius:20px;padding:7px 15px;font-size:13px;font-weight:600;cursor:pointer}
.add-btn:hover{background:var(--accent);color:#fff}
/* private catering: wider stepper (shows "45 servings"), section head, mini pill, kitchen hint */
.qty.qty-wide span{min-width:78px;font-size:13px}
.psec-head{margin:6px 0 14px}
.pill-mini{display:inline-flex;align-items:center;font-size:11px;font-weight:600;letter-spacing:.02em;padding:2px 8px;border-radius:20px;background:var(--ink);color:#fff;vertical-align:middle}
.bline .bl-hint{font-size:11px;color:var(--accent-dark);margin-top:3px;font-style:italic}
/* gift cards */
.fld-label{display:block;font-size:12px;font-weight:600;color:var(--ink-soft);margin:10px 0 6px}
.amount-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.amt{border:1.5px solid var(--line);background:var(--card);border-radius:12px;padding:14px 0;font-family:var(--serif);font-size:19px;font-weight:600;color:var(--ink);cursor:pointer;transition:all .12s}
.amt:hover{border-color:var(--accent)}
.amt.on{border-color:var(--accent-dark);background:var(--accent-dark);color:#fff}
.steps-mini{margin-top:10px;display:flex;flex-direction:column;gap:12px}
.steps-mini>div{display:flex;flex-direction:column}
.steps-mini b{font-size:13.5px}
.steps-mini span{font-size:12.5px;color:var(--ink-soft)}
.gc-balance{text-align:center;padding:8px 0}
.gc-amt{font-family:var(--serif);font-size:38px;font-weight:700;color:var(--ink);line-height:1}
.gc-ok{color:var(--good);font-weight:600}
.gc-bad{color:var(--bad);font-weight:600;text-transform:capitalize}
.banner-ok{background:#eef6f0;border:1px solid #cfe6d6;color:var(--good)}
/* contact page */
.contact-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.contact-card{text-decoration:none;color:inherit;transition:transform .12s,box-shadow .12s;display:block}
.contact-card:hover{transform:translateY(-3px);box-shadow:0 12px 24px rgba(120,90,60,.12)}
.cc-ico{font-size:26px}
.contact-card h3{font-family:var(--serif);font-size:19px;margin:8px 0 4px}
.cc-mail{display:inline-block;margin-top:10px;color:var(--accent-dark);font-weight:600;font-size:13.5px}
.findus{list-style:none;padding:0;margin:10px 0 0}
.findus li{display:flex;flex-direction:column;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.findus li:last-child{border:none}
.findus b{font-weight:600}
.findus span{color:var(--ink-soft);font-size:12.5px}
.socials{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.socials a{color:var(--accent-dark);font-size:13.5px;font-weight:500}
.faq{max-width:760px}
.faq-item{border-bottom:1px solid var(--line);padding:2px 0}
.faq-item summary{cursor:pointer;font-weight:600;font-size:15.5px;padding:16px 0;list-style:none}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::before{content:'+';color:var(--accent);margin-right:12px;font-weight:700}
.faq-item[open] summary::before{content:'–'}
.faq-a{padding:0 0 16px 24px;color:var(--ink-soft);font-size:14px;line-height:1.65;max-width:70ch}
/* cafés page */
.cafe-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.cafe-card{overflow:hidden;padding:0;display:flex;flex-direction:column}
.cafe-banner{height:180px;background-size:cover;background-position:center}
.cafe-banner.illus{height:auto;aspect-ratio:16/9;background-size:cover;background-repeat:no-repeat;background-position:center 72%;background-color:#f2ebe0;border-bottom:1px solid var(--border)}
.cafe-banner.placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:linear-gradient(135deg,#efe7dc,#e4d8c8);position:relative}
.cafe-banner.placeholder .cafe-sketch{width:78%;max-height:140px;height:auto}
.cafe-banner.placeholder .ph-note{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--accent-dark);opacity:.65;position:absolute;bottom:8px}
.cafe-body{padding:20px 22px 22px}
.cafe-meta{font-size:13.5px;color:var(--ink);margin:3px 0}
/* careers page */
.roles{display:flex;flex-direction:column;gap:14px;max-width:820px}
.role-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
/* homepage: café strip + feature blocks + gift banner */
.cafestrip{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:12px}
.cafestrip a{display:flex;flex-direction:column;gap:3px;text-decoration:none;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--card);transition:transform .12s,border-color .12s}
.cafestrip a:hover{transform:translateY(-3px);border-color:var(--accent)}
.cafestrip b{font-family:var(--serif);font-size:16px;color:var(--ink)}
.cafestrip span{font-size:11.5px;color:var(--ink-soft)}
.feature{display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:center}
.feature.reverse .feature-img{order:2}
.feature-img{height:300px;border-radius:18px;background-size:cover;background-position:center}
.feature-body h2{font-size:clamp(24px,3vw,32px)}
.feature-body .muted{margin-top:8px;line-height:1.65;font-size:14.5px}
.giftbanner{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;background:linear-gradient(180deg,#fff,#fbf6ef)}
@media(max-width:820px){
  .cafestrip{grid-template-columns:1fr 1fr}
  .feature{grid-template-columns:1fr}
  .feature.reverse .feature-img{order:0}
}
/* rich footer */
.ftr-cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:28px;max-width:var(--wrap);margin:0 auto;padding:44px 24px 20px}
.ftr-cols h5{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent-dark);margin:0 0 12px}
.ftr-cols a{display:block;color:var(--ink-soft);font-size:13.5px;text-decoration:none;padding:4px 0}
.ftr-cols a:hover{color:var(--ink)}
.ftr-cols .fcol p{font-size:13px;color:var(--ink-soft);line-height:1.6;margin:0}
.ftr-legal{border-top:1px solid var(--line);text-align:center;font-size:12px;color:var(--ink-soft);padding:16px}
@media(max-width:820px){
  .contact-cards{grid-template-columns:1fr}
  .cafe-grid{grid-template-columns:1fr}
  .ftr-cols{grid-template-columns:1fr 1fr;gap:20px}
}

/* ---- basket ---- */
.basket{position:sticky;top:74px}
.basket h3{font-family:var(--serif);font-size:22px;margin-bottom:2px}
.blines{margin:14px 0;border-top:1px solid var(--line)}
.bline{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:14px;align-items:flex-start}
.bline .bl-l{min-width:0}
.bline .bl-nm{font-weight:500}
.bline .bl-meta{font-size:12px;color:var(--ink-soft);margin-top:3px;display:flex;align-items:center;gap:8px}
.bline .bl-rm{color:var(--bad);cursor:pointer;font-size:12px}
.bline .bl-amt{font-weight:600;white-space:nowrap}
.btotals{margin-top:12px;font-size:14px}
.btotals .tr{display:flex;justify-content:space-between;padding:4px 0}
.btotals .grand{font-size:18px;font-weight:600;font-family:var(--serif);border-top:1px solid var(--line);margin-top:6px;padding-top:10px}
.basket-empty{color:var(--ink-soft);font-size:14px;text-align:center;padding:26px 0}
.minwarn{background:#fbf3e6;border:1px solid #ecdcbf;color:var(--warn);font-size:12.5px;padding:9px 12px;border-radius:var(--radius-sm);margin-top:12px}

/* ---- alerts / banners ---- */
.banner{padding:12px 16px;border-radius:var(--radius-sm);font-size:13.5px;margin:10px 0}
.banner-info{background:#eef3ef;border:1px solid #d4e2d7;color:var(--good)}
.banner-warn{background:#fbf3e6;border:1px solid #ecdcbf;color:var(--warn)}
.banner-err{background:#f7ebeb;border:1px solid #e6cccc;color:var(--bad)}
.errlist{margin:6px 0 0;padding-left:18px}

/* ---- modal ---- */
.modal-bg{position:fixed;inset:0;background:rgba(44,42,37,.4);display:flex;align-items:center;justify-content:center;padding:24px;z-index:60}
.modal{background:var(--card);border-radius:var(--radius);max-width:520px;width:100%;max-height:88vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.modal .m-head{padding:22px 24px 0;display:flex;justify-content:space-between;align-items:flex-start}
.modal .m-head h3{font-size:24px}
.modal .m-body{padding:16px 24px 24px}
.x{cursor:pointer;font-size:22px;color:var(--ink-soft);line-height:1;background:none;border:none}

/* ---- confirmation ---- */
.confirm{max-width:640px;margin:60px auto;text-align:center}
.confirm .tick{width:64px;height:64px;border-radius:50%;background:var(--good);color:#fff;display:flex;align-items:center;justify-content:center;font-size:32px;margin:0 auto 20px}
.confirm h1{font-size:38px;margin-bottom:10px}
.summary-card{text-align:left;margin-top:26px}
.summary-card .sc-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}

/* ---- footer ---- */
.ftr{border-top:1px solid var(--line);margin-top:40px;padding:40px 0;color:var(--ink-soft);font-size:13px}
.ftr-in{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}

/* ---- responsive ---- */
/* ---- crowd favourites upsell carousel ---- */
.upsell{margin:6px 0 2px}
.upsell-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}
.upsell-head h2{font-family:var(--serif);font-size:24px;margin:0}
.upsell-head p{color:var(--ink-soft);font-size:13px;margin:0}
.upsell-row{display:flex;gap:14px;overflow-x:auto;padding:2px 2px 10px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.upsell-row::-webkit-scrollbar{height:8px}
.upsell-row::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}
.upsell-card{flex:0 0 224px;scroll-snap-align:start;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .2s ease,box-shadow .2s ease;position:relative}
.upsell-card:hover{transform:translateY(-4px);box-shadow:0 12px 30px rgba(58,53,48,.14)}
.uc-photo{aspect-ratio:16/10;background:#e7e0d6 center/cover no-repeat;position:relative}
.uc-tag{position:absolute;top:9px;left:9px;background:rgba(40,36,30,.6);color:#fff;font-size:9px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:20px;backdrop-filter:blur(2px)}
.uc-tag:empty{display:none}                                   /* no label -> no pill on the public site */
.cms-editing .uc-tag:empty{display:block;min-width:46px;min-height:15px}   /* but stay clickable in edit mode to add one */
.uc-body{padding:13px 15px}
.uc-name{font-weight:600;font-size:14.5px;line-height:1.25}
.uc-price{color:var(--ink-soft);font-size:13px;margin:3px 0 11px}
.uc-add{width:100%;padding:9px;font-size:13px}
.uc-add.added{background:var(--good);color:#fff;border-color:var(--good)}

/* ---- allergen assistant (collapsible, under the basket) ---- */
.allergen-panel{margin-top:14px;overflow:hidden}
.ap-head{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;cursor:pointer;padding:16px 18px;font-family:var(--sans);text-align:left;color:var(--ink)}
.ap-head .ap-title{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}
.ap-head .ap-sub{font-weight:400;color:var(--ink-soft);font-size:12px;display:block;margin-top:3px}
.ap-chev{transition:transform .2s;color:var(--ink-soft);font-size:13px}
.allergen-panel.open .ap-chev{transform:rotate(90deg)}
.ap-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--good);color:#fff;font-size:11px;font-weight:600}
.ap-body{padding:2px 18px 18px;border-top:1px solid var(--line)}
.ab-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.ab-chip{font-size:12.5px;padding:5px 12px;border-radius:20px;border:1px solid var(--line);background:var(--page);color:var(--ink-soft);cursor:pointer;user-select:none;text-transform:capitalize}
.ab-chip:hover{border-color:var(--accent)}
.ab-chip.on{background:var(--good);color:#fff;border-color:var(--good)}
.ab-clear{margin-left:auto;font-size:12.5px;color:var(--accent-dark);cursor:pointer;background:none;border:none}
.item .allg{font-size:11.5px;color:var(--ink-soft);margin-top:4px;text-transform:capitalize}
.item .allg.none{color:var(--good)}
.item .allg.unlisted{color:var(--warn);text-transform:none}
.item .allg.adapt{color:var(--gf);text-transform:none}
.filter-note{font-size:13px;color:var(--ink-soft);background:#fbf3e6;border:1px solid #ecdcbf;border-radius:9px;padding:10px 14px;margin-bottom:14px}

/* ---- mobile sticky basket bar ---- */
.mbasket{position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--card);border-top:1px solid var(--line);box-shadow:0 -6px 22px rgba(58,53,48,.12);padding:10px 16px;display:none;align-items:center;justify-content:space-between;gap:12px}
.mbasket .mb-info{font-size:13px;color:var(--ink-soft)}
.mbasket .mb-info b{display:block;font-family:var(--serif);font-size:18px;color:var(--ink)}
.mbasket .btn{padding:12px 18px}

@media(max-width:960px){
  .hero{grid-template-columns:1fr;gap:24px;padding:34px 0}
  .menucards,.props,.steps{grid-template-columns:1fr 1fr}
  .ctxbar{grid-template-columns:1fr 1fr}
  .ctxbar .fld:nth-child(2){border-right:none}
  .order-layout{grid-template-columns:1fr}
  .basket{position:static}
  .items{grid-template-columns:1fr}
  .nav{display:none}
  .nav-toggle{display:inline-flex}
  /* bigger tap targets */
  .qty button{width:38px;height:38px;font-size:19px}
  .add-btn{padding:10px 18px;font-size:14px}
  .item{padding:15px 16px}
  .mbasket.show{display:flex}
  body.has-mbasket{padding-bottom:74px}
  body.has-mbasket .basket{margin-bottom:8px}
}
@media(max-width:560px){
  .menucards,.props,.steps,.ctxbar,.grid2{grid-template-columns:1fr}
  .ctxbar .fld{border-right:none;border-bottom:1px solid var(--line)}
  .wrap{padding:0 16px}
}
.dev-flag{position:fixed;bottom:10px;left:10px;background:var(--warn);color:#fff;font-size:11px;padding:4px 10px;border-radius:6px;z-index:100;opacity:.85}

/* ---- settings / admin ---- */
.settings-layout{display:grid;grid-template-columns:210px 1fr;gap:30px;padding:26px 0 70px}
.settings-nav{position:sticky;top:86px;align-self:start}
.settings-nav a{display:block;padding:10px 14px;border-radius:9px;color:var(--ink-soft);font-size:14px;margin-bottom:4px;cursor:pointer}
.settings-nav a.active{background:var(--card);color:var(--ink);border:1px solid var(--line);font-weight:600}
.mi-sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:26px 0 12px}
.mi-sec-head h3{font-family:var(--serif);font-size:22px}
.mi-sec-head .mi-actions{font-size:12.5px;color:var(--ink-soft)}
.mi-sec-head .mi-actions a{color:var(--accent-dark);cursor:pointer;margin-left:10px}
.mi-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 15px;border:1px solid var(--line);border-radius:9px;background:var(--card);margin-bottom:8px}
.mi-row.off{opacity:.62}
.mi-row .mi-nm{font-weight:500;font-size:14.5px}
.mi-row .mi-meta{font-size:12.5px;color:var(--ink-soft);margin-top:2px}
.mi-ineligible{font-size:13px;color:var(--ink-soft);padding:9px 14px;border:1px dashed var(--line);border-radius:9px;margin-bottom:6px}
.switch{position:relative;display:inline-block;width:46px;height:27px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch .track{position:absolute;inset:0;background:var(--line);border-radius:20px;transition:.18s;cursor:pointer}
.switch .track:before{content:'';position:absolute;height:21px;width:21px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.18s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.switch input:checked+.track{background:var(--good)}
.switch input:checked+.track:before{transform:translateX(19px)}
/* section photos */
.sp-row{display:flex;align-items:center;gap:16px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--card);margin-bottom:10px}
.sp-thumb{width:160px;height:58px;border-radius:8px;background:#e7e0d6 center/cover no-repeat;flex:none;border:1px solid var(--line)}
.sp-info{flex:1;min-width:0}
.sp-name{font-weight:600;font-size:15px}
.sp-meta{font-size:12px;color:var(--ink-soft)}
.pm-cats{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.pm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;max-height:58vh;overflow-y:auto;padding:2px}
.pm-tile{aspect-ratio:3/1;border-radius:8px;background:#e7e0d6 center/cover no-repeat;cursor:pointer;border:2px solid transparent}
.pm-tile:hover{border-color:var(--accent)}
.pm-tile.sel{border-color:var(--good);box-shadow:0 0 0 2px var(--good)}
.login-overlay{position:fixed;inset:0;background:var(--page);display:flex;align-items:center;justify-content:center;z-index:200}
.login-card{text-align:center;max-width:380px;padding:40px 32px}
.login-card h1{font-size:30px;margin-bottom:8px}
.saved-toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--btn);color:var(--btn-ink);font-size:13px;padding:9px 18px;border-radius:20px;z-index:150;opacity:0;transition:opacity .2s}
.saved-toast.show{opacity:1}
/* allergen editor */
.allg-legend{display:flex;gap:18px;font-size:12px;color:var(--ink-soft);margin:6px 0 16px;flex-wrap:wrap}
.allg-legend .k{display:inline-flex;align-items:center;gap:6px}
.allg-swatch{width:15px;height:15px;border-radius:4px;display:inline-block;border:1px solid var(--line)}
.allg-swatch.contains{background:#f0d5d5}
.allg-swatch.adaptable{background:#d7e7ee}
.allg-sec h3{font-family:var(--serif);font-size:20px;margin:22px 0 10px}
.allg-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
table.allg-table{border-collapse:collapse;width:100%;font-size:12.5px}
.allg-table td,.allg-table th{border-bottom:1px solid var(--line);text-align:center}
.allg-table thead th{background:var(--page);padding:9px 3px;font-weight:600;color:var(--ink-soft);font-size:10.5px;text-transform:capitalize;border-bottom:2px solid var(--line)}
.allg-table th.prod,.allg-table td.prod{text-align:left;padding:9px 13px;min-width:210px;font-weight:500}
.allg-table td.prod .sm{font-size:11px;color:var(--warn);font-weight:400}
.allg-cell{width:36px;height:40px;cursor:pointer;user-select:none;line-height:40px}
.allg-cell:hover{outline:2px solid var(--accent);outline-offset:-2px}
.allg-cell.contains{background:#f0d5d5;color:#a05c5c;font-weight:700}
.allg-cell.adaptable{background:#d7e7ee;color:#3f7d8c;font-weight:700}
.allg-verify{padding:0 10px}
.allg-dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}
.allg-dot.v{background:var(--good)}.allg-dot.d{background:var(--warn)}.allg-dot.n{background:var(--line)}

/* ---- CMS edit mode ---- */
.editbar{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:9000;display:flex;align-items:center;gap:12px;background:#2c2620;color:#faf8f5;padding:10px 16px;border-radius:30px;box-shadow:0 8px 26px rgba(0,0,0,.28);font-size:13px;font-family:var(--sans,Inter,system-ui,sans-serif)}
.editbar b{font-weight:700}
.editbar .eb-dot{width:9px;height:9px;border-radius:50%;background:#8fce9e;box-shadow:0 0 0 3px rgba(143,206,158,.25)}
.editbar .eb-who{opacity:.6;font-size:12px}
.editbar .eb-hint{opacity:.55;font-size:12px;border-left:1px solid rgba(255,255,255,.2);padding-left:12px}
.editbar .eb-done{background:#faf8f5;color:#2c2620;border:none;border-radius:20px;padding:6px 14px;font-weight:700;font-size:12.5px;cursor:pointer}
.editbar .eb-manage{color:#faf8f5;text-decoration:none;background:rgba(255,255,255,.14);border-radius:20px;padding:6px 12px;font-weight:600;font-size:12.5px;white-space:nowrap}
.editbar .eb-manage:hover{background:rgba(255,255,255,.26)}
@media(max-width:640px){.editbar .eb-hint,.editbar .eb-who{display:none}}
.cms-editing [data-text]{outline:1px dashed rgba(138,117,96,.5);outline-offset:3px;border-radius:3px;transition:outline-color .15s;cursor:text}
.cms-editing [data-text]:hover,.cms-editing [data-text]:focus{outline:2px solid var(--accent);outline-offset:3px}
.cms-editing [data-text]:focus{background:rgba(255,255,255,.6)}
.cms-editing .cms-img{position:relative}
.cms-imgbtn{position:absolute;top:10px;right:10px;z-index:5;background:rgba(44,38,32,.85);color:#fff;border:none;border-radius:20px;padding:7px 13px;font-size:12.5px;font-weight:600;cursor:pointer;opacity:0;transition:opacity .15s;backdrop-filter:blur(4px)}
.cms-editing .cms-img:hover .cms-imgbtn{opacity:1}
.cms-imgctrls{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);display:flex;flex-direction:column;gap:5px;width:78%;max-width:260px;z-index:5;opacity:0;transition:opacity .15s}
.cms-editing .cms-img:hover .cms-imgctrls{opacity:1}
.cms-imgctrl{display:flex;align-items:center;gap:7px;background:rgba(44,38,32,.74);border-radius:20px;padding:3px 11px 3px 9px;backdrop-filter:blur(3px);cursor:default}
.cms-imgctrl-ic{font-size:11px;flex:none;line-height:1;filter:saturate(0) brightness(2.2)}
.cms-imgctrl input[type=range]{flex:1;min-width:0;height:14px;accent-color:#fff;cursor:ew-resize}
.cms-saved{animation:cmsflash .9s ease}
@keyframes cmsflash{0%{box-shadow:0 0 0 3px rgba(90,138,106,.6)}100%{box-shadow:0 0 0 3px rgba(90,138,106,0)}}
.cms-picker{position:fixed;inset:0;z-index:9500;background:rgba(30,24,20,.55);display:flex;align-items:center;justify-content:center;padding:20px}
.cms-picker .cmp-box{background:var(--card,#faf8f5);border-radius:16px;width:min(920px,96vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden}
.cms-picker .cmp-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line,#e2ddd6);font-size:16px}
.cms-picker .cmp-x{border:none;background:none;font-size:24px;cursor:pointer;color:var(--ink,#3a3530);line-height:1}
.cms-picker .cmp-cats{display:flex;gap:8px;flex-wrap:wrap;padding:14px 20px 4px}
.cms-picker .cmp-cat{border:1px solid var(--line,#e2ddd6);background:var(--page,#f4f1ec);border-radius:20px;padding:6px 13px;font-size:12.5px;cursor:pointer}
.cms-picker .cmp-cat.on{background:var(--accent-dark,#8a7560);color:#fff;border-color:var(--accent-dark,#8a7560)}
.cms-picker .cmp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:16px 20px;overflow-y:auto}
.cms-picker .cmp-thumb{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:8px;cursor:pointer;border:2px solid transparent;transition:border-color .12s,transform .12s}
.cms-picker .cmp-thumb:hover{border-color:var(--accent,#8a7560);transform:scale(1.02)}

/* ---- cake shop: photo cards per cake ---- */
.cake-items{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:2px}
.cake-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow)}
.cake-card-photo{aspect-ratio:3/2;background-size:cover;background-position:center;background-color:#efe7da}
.cake-card-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:5px;flex:1}
.cake-card-body .nm{font-weight:500;font-size:15px;line-height:1.3}
.cake-card-body .pr{font-family:var(--serif);font-size:18px;color:var(--ink)}
.cake-card-add{margin-top:8px}
@media(max-width:560px){.cake-items{grid-template-columns:1fr}}

/* ---- wedding cakes gallery ---- */
.wed-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.wed-shot{aspect-ratio:4/5;border-radius:var(--radius);background-size:cover;background-position:center;background-color:#efe7da;box-shadow:var(--shadow)}
@media(max-width:820px){.wed-gallery{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.wed-gallery{grid-template-columns:1fr}}

/* ---- individual café page ---- */
.cafe-hero{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:center;padding:34px 0 10px}
.cafe-hero-img{border-radius:var(--radius);overflow:hidden;aspect-ratio:4/3;background:#e7e0d6 center/cover no-repeat;box-shadow:var(--shadow);min-height:280px}
.cafe-hero-img.illus{aspect-ratio:16/9;min-height:0;background-color:#f2ebe0;background-size:cover;background-repeat:no-repeat;background-position:center 72%}
.cafe-hero-img.placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#efe7dc,#e4d8c8);position:relative}
.cafe-hero-img.placeholder .cafe-sketch{width:68%;max-height:210px;height:auto}
.cafe-hero-img.placeholder .ph-note{position:absolute;bottom:12px;font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--accent-dark);opacity:.65}
@media(max-width:820px){.cafe-hero{grid-template-columns:1fr;gap:20px;padding-top:22px}.cafe-hero-img{min-height:220px}}

/* ---- pantry / retail shop ---- */
.pantry-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.pantry-card{overflow:hidden;display:flex;flex-direction:column}
.pantry-photo{aspect-ratio:1/1;background-size:cover;background-position:center;background-color:#efe7da;position:relative}
.pantry-badge{position:absolute;top:10px;left:10px;background:rgba(44,38,32,.82);color:#fff;font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px}
.pantry-body{padding:12px 14px 14px}
.pantry-body .nm{font-size:14px;font-weight:500;line-height:1.3}
.pantry-body .pr{font-family:var(--serif);font-size:16px;margin-top:4px}
@media(max-width:900px){.pantry-grid{grid-template-columns:1fr 1fr}}

/* staff floating edit launcher (only shown to known-staff devices) */
.edit-launch{position:fixed;bottom:18px;right:18px;z-index:8000;display:inline-flex;align-items:center;gap:7px;background:#2c2620;color:#faf8f5;border:none;border-radius:30px;padding:11px 18px;font-family:var(--sans);font-size:13.5px;font-weight:600;cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.edit-launch:hover{background:#3d3a33}
.edit-launch span{font-size:15px}
