:root{--ink:#1b1a18;--muted:#77716a;--cream:#f7f5f1;--paper:#fff;--accent:#a84f2a;--accent-dark:#7d381f;--line:#ebe7e1;--shadow:0 14px 40px rgba(37,31,26,.1)}
.menu-hero{position:relative}
.language-gate{position:fixed;inset:0;z-index:1000;padding:clamp(12px,env(safe-area-inset-top),12px) 12px max(12px,env(safe-area-inset-bottom));display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 15% 10%,rgba(168,79,42,.28),transparent 36%),radial-gradient(circle at 90% 90%,rgba(103,87,232,.22),transparent 34%),rgba(245,242,237,.9);backdrop-filter:blur(22px)}.language-gate.hidden{display:none}.language-selection-open{overflow:hidden}.language-card{width:clamp(680px,100%,680px);max-height:calc(100dvh - 24px);padding:clamp(16px,3vh,28px);overflow-y:auto;border:1px solid rgba(255,255,255,.7);border-radius:28px;background:rgba(255,255,255,.78);box-shadow:0 26px 80px rgba(42,31,24,.18);text-align:center}.language-globe{width:54px;height:54px;margin:0 auto 10px;display:flex;place-items:center;border-radius:18px;background:linear-gradient(145deg,var(--accent),var(--accent-dark));box-shadow:0 10px 24px color-mix(in srgb,var(--accent) 30%,transparent);font-size:1.65rem}.language-card h1{margin:0;font-family:var(--heading-font,"Georgia",serif);font-size:clamp(1.55rem,6vw,2.15rem)}.language-card>p{margin:7px 0 0;color:var(--muted);font-size:.84rem}.language-card .language-subtitle{margin-top:3px;font-size:.74rem}.language-list{margin-top:17px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.language-option{position:relative;min-width:0;min-height:45px;padding:7px 9px;display:grid;grid-template-columns:27px 27px minmax(0,1fr) 9px;align-items:center;gap:5px;overflow:hidden;border:1px solid rgba(223,216,208,.85);border-radius:13px;background:rgba(255,255,255,.72);color:var(--ink);text-align:left;cursor:pointer;transition:all .16s ease,border-color .16s ease,box-shadow .16s ease}.language-option::after{content:"";position:absolute;inset:50%;border-radius:50%;background:color-mix(in srgb,var(--accent) 18%,transparent);opacity:0;transform:scale(0);transition:.25s}.language-option:active::after{inset:-30%;opacity:1;transform:scale(1);transition:0s}.language-option:hover,.language-option:focus{border-color:color-mix(in srgb,var(--accent) 45%,white);box-shadow:0 7px 18px rgba(45,34,27,.08);transform:translateY(-1px);outline:0}.language-option>span{position:relative;z-index:1}.language-flag{font-size:1.25rem}.language-option strong{font-size:.69rem;color:var(--accent)}.language-option>span:nth-child(3){overflow:hidden;font-size:.75rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.language-option i{color:#aaa19a;font-style:normal}.language-switcher{position:absolute;top:clamp(14px,env(safe-area-inset-top),14px);right:14px;z-index:5;min-width:58px;height:38px;padding:0 10px;border:1px solid rgba(255,255,255,.28);border-radius:99px;background:rgba(24,21,19,.48);color:#fff;box-shadow:0 6px 20px rgba(0,0,0,.16);backdrop-filter:blur(12px);font-size:.78rem;font-weight:850;cursor:pointer}.language-switcher:hover{background:rgba(24,21,19,.68)}@media(min-width:600px){.language-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.language-option{min-height:51px;padding:9px 11px}}@media(prefers-color-scheme:dark){.language-gate{background:radial-gradient(circle at 15% 10%,rgba(168,79,42,.25),transparent 36%),radial-gradient(circle at 90% 90%,rgba(103,87,232,.18),transparent 34%),rgba(22,20,19,.94)}.language-card{border-color:rgba(255,255,255,.1);background:rgba(35,32,30,.88);color:#f7f3ef}.language-card>p{color:#bdb5ad}.language-option{border-color:rgba(255,255,255,.1);background:rgba(255,255,255,.07);color:#f7f3ef}.language-option i{color:#918a84}}
.detail-image{width:calc(100% + 50px);height:230px;margin:-25px -25px 20px;display:block;border-radius:24px 24px 0 0;object-fit:cover}.detail-image[hidden]{display:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:126px}body{margin:0;background:var(--cream);color:var(--ink);font-family:"Segoe UI",ui-sans-serif,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}button,input,textarea{font-family:inherit}button{touch-action:manipulation}
.menu-hero{min-height:310px;padding:clamp(72px + env(safe-area-inset-top),72px + env(safe-area-inset-top),72px + env(safe-area-inset-top)) 22px 34px;display:flex;place-items:center;color:#fff}
/* Kapak fotoğrafı + karartma gradyanı, .menu-hero'nun KENDİSİNDEN ayrı bir
   ::before katmanına taşındı (2026-09-01, GÖREV 3 — cover_brightness
   eklenirken). Sebep: CSS filter (aşağıda cover_brightness için
   kullanılıyor), uygulandığı elementin TÜM alt içeriğini de etkiler — eğer
   filtre .menu-hero'nun kendisinde olsaydı h1/açıklama metnini de
   karartır/aydınlatırdı. .category-nav'ın backdrop-filter'ı için daha önce
   uygulanan aynı izolasyon deseni (bkz. body.menu-style-easy .category-nav
   ::before). Her iki mevcut görsel dal (kapak var/yok) BİREBİR aynı
   string'lerle korunuyor (bkz. public-menu.js renderMenu --hero-background)
   — sadece nereye yazıldığı değişti, varsayılan görünüm hiç değişmedi. */
.menu-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--hero-background,linear-gradient(180deg,var(--hero-overlay-1,rgba(13,12,11,.16)),var(--hero-overlay-2,rgba(13,12,11,.84))),linear-gradient(135deg,#40372f,#161412));background-position:center;background-size:cover}
.hero-inner{width:clamp(0px,100%,760px);display:flex;flex-direction:column;align-items:center;text-align:center}.company-logo{width:86px;height:86px;margin-bottom:14px;display:flex;place-items:center;border:4px solid rgba(255,255,255,.92);border-radius:50%;overflow:hidden;background:#fff;color:var(--accent);box-shadow:0 12px 32px rgba(0,0,0,.28);font-size:1.8rem;font-weight:900}.company-logo img{width:100%;height:100%;object-fit:cover}.hero-label{margin:0 0 7px;color:#f1d7ca;text-transform:uppercase;letter-spacing:.18em;font-size:.62rem;font-weight:850}.menu-hero h1{margin:0;font-family:var(--heading-font,"Georgia",serif);font-size:clamp(2rem,9vw,3rem);line-height:1.05;text-shadow:0 2px 14px rgba(0,0,0,.3)}.menu-description{max-width:520px;margin:9px 0 0;color:rgba(255,255,255,.78);font-size:.86rem;line-height:1.5}
.category-nav{position:fixed;top:0;z-index:20;padding-top:9px;border-bottom:1px solid rgba(230,225,218,.9);background:rgba(247,245,241,.94);backdrop-filter:blur(18px);box-shadow:0 5px 18px rgba(38,32,27,.04)}.menu-search{width:clamp(760px,calc(100% - 28px),none);height:45px;margin:0;padding:0 13px;display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:0 5px 18px rgba(37,31,26,.04)}.menu-search span{color:var(--muted);font-size:1.25rem}.menu-search input{width:100%;height:100%;padding:0;border:0;outline:0;background:transparent;color:var(--ink)}.menu-search input::placeholder{color:#aaa39b}.category-tabs{width:clamp(780px,100%,none);margin:0;padding:9px 14px 11px;display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.category-tabs::-webkit-scrollbar{display:block}.category-tab{min-height:40px;flex:0 0 auto;padding:8px 15px;border:1px solid var(--line);border-radius:99px;background:rgba(255,255,255,.78);color:var(--muted);font-size:.8rem;font-weight:750;cursor:pointer;scroll-snap-align:center;transition:.22s ease}.category-tab.active{border-color:var(--accent);background:var(--accent);color:#fff;box-shadow:0 7px 18px color-mix(in srgb,var(--accent) 28%,transparent);transform:translateY(-1px)}
.menu-content{width:clamp(780px,100%,none);min-height:50vh;margin:0;padding:28px 14px 130px}.category-section{margin:0 0 38px;animation:.3s ease both}.category-section h2{margin:0 0 15px;font-family:var(--heading-font,"Georgia",serif);font-size:1.55rem}

/* Kompakt liste satırı (referans ürün stili): görsel yok, ad solda +
   noktalı "leader" + fiyat sağda, altında soluk/kırpılan açıklama, en
   altta rozetler + sepete ekle. Tıklanınca açılan detay dialogu
   (#productDialog) burada görsel gösterir — bkz. openProduct() /
   static/js/public-menu.js. classic/easy her iki modda da aynı. */
.product-list{display:grid;grid-template-columns:1fr;gap:10px}
.product-card{width:100%;padding:11px 14px;display:flex;flex-direction:column;gap:3px;text-align:left;border:1px solid rgba(232,227,220,.9);border-radius:16px;background:var(--paper);box-shadow:0 6px 20px rgba(41,34,28,.05);cursor:pointer;transition:.2s ease,box-shadow .2s ease}
.product-card:hover{border-color:color-mix(in srgb,var(--accent) 30%,var(--line))}
.product-row{display:flex;align-items:baseline;gap:7px;min-width:0}
.product-row h3{flex:0 1 auto;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.98rem;line-height:1.3}
.price-leader{flex:1 1 auto;min-width:10px;height:0;align-self:center;margin-bottom:3px;border-bottom:2px dotted color-mix(in srgb,var(--ink) 22%,var(--line))}
.product-card p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.product-prices{flex:0 0 auto;display:flex;align-items:baseline;gap:6px;white-space:nowrap}
.product-prices .price{color:var(--accent);font-size:1rem;font-weight:800}
.old-price{color:#aaa39b;font-size:.7rem}
.product-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}
.product-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0}
.product-meta span{font-size:.66rem;font-weight:800}
.product-badge,.sold-out-badge{padding:4px 7px;border-radius:99px}
.product-badge{background:color-mix(in srgb,var(--accent) 12%,white);color:var(--accent)}
.product-badge.featured{background:#fff2d8;color:#9b6514}
.sold-out-badge{background:#f3e7e7;color:#9a4545}
.prep-time{color:var(--muted)}
.card-add{flex:0 0 auto;min-height:30px;padding:5px 10px;border:0;border-radius:9px;background:color-mix(in srgb,var(--accent) 12%,white);color:var(--accent-dark);font-size:.76rem;font-weight:850;cursor:pointer;white-space:nowrap}
@media(min-width:680px){.product-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}
.loading,.error-state,.empty-state{padding:70px 20px;text-align:center;color:var(--muted)}.skeleton-list{display:grid;gap:13px}.skeleton-title,.skeleton-card{background:linear-gradient(90deg,#eae6e0 25%,#f8f6f3 50%,#eae6e0 75%);background-size:200% 100%;animation:skeleton 1.2s ease-in-out infinite}.skeleton-title{width:38%;height:25px;border-radius:8px}.skeleton-card{height:250px;border-radius:20px}.filter-empty{padding-top:48px}.category-section[hidden],.product-card[hidden],.filter-empty[hidden]{display:none}
.cart-fab{position:fixed;left:50%;bottom:calc(12px + env(safe-area-inset-bottom));z-index:30;width:min(720px,calc(100% - 24px));min-height:64px;padding:9px 10px;display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px;border:1px solid rgba(255,255,255,.12);border-radius:19px;background:rgba(27,26,24,.96);color:#fff;box-shadow:0 16px 45px rgba(20,18,16,.32);backdrop-filter:blur(15px);transform:translateX(-50%);cursor:pointer}.cart-fab[hidden]{display:none}.cart-fab-count{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:var(--accent);font-weight:900}.cart-fab-copy{display:grid;justify-items:start}.cart-fab-copy small{color:#aaa5a0;font-size:.64rem}.cart-fab-copy strong{font-size:.98rem}.cart-fab-action{padding:11px 13px;border-radius:12px;background:#fff;color:var(--ink);font-size:.78rem;font-weight:850}.cart-fab-action b{margin-left:5px;color:var(--accent)}.cart-pop{animation:cart-pop .34s ease}
.sheet-dialog{width:min(520px,calc(100% - 20px));padding:0;border:0;border-radius:24px;background:transparent;box-shadow:var(--shadow)}.sheet-dialog::backdrop{background:rgba(17,15,13,.62);backdrop-filter:blur(4px)}.sheet-dialog[open] .sheet-card{animation:sheet-in .28s ease both}.sheet-card{position:relative;padding:25px;background:var(--paper);border-radius:24px}.sheet-card h2{margin:0 40px 12px 0;font-family:var(--heading-font,"Georgia",serif);font-size:1.55rem}.close-button{position:absolute;right:16px;top:15px;width:40px;height:40px;border:0;border-radius:50%;background:#f2efeb;color:var(--ink);font-size:1.4rem;cursor:pointer}.close-button.inline{position:static;flex:0 0 auto}.detail-category{margin:0 0 7px;color:var(--accent);font-size:.7rem;font-weight:850;text-transform:uppercase;letter-spacing:.12em}.detail-description{margin:0 0 24px;color:var(--muted);line-height:1.6}.detail-footer,.sheet-heading,.cart-total{display:flex;align-items:center;justify-content:space-between;gap:15px}.detail-footer>strong{color:var(--accent);font-size:1.2rem}.primary-button{padding:12px 18px;border:0;border-radius:12px;background:var(--accent);color:#fff;font-weight:850;cursor:pointer}.primary-button:disabled{opacity:.55;cursor:not-allowed}
.cart-dialog .sheet-card{max-height:calc(100dvh - 22px);overflow-y:auto}.cart-section-title{margin:18px 0 -5px;color:var(--muted);font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.09em}.cart-items{max-height:min(40vh,420px);margin:14px 0;overflow-y:auto;overscroll-behavior:contain}.cart-empty{padding:35px 10px;text-align:center;color:var(--muted)}.cart-row{display:grid;grid-template-columns:1fr auto;gap:9px;padding:13px 0;border-bottom:1px solid var(--line)}.cart-row h3{margin:0;font-size:.9rem}.cart-row>strong{font-size:.88rem}.quantity{display:flex;align-items:center;gap:9px}.quantity button{width:36px;height:36px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer}.remove-item{padding:5px;border:0;background:transparent;color:#a33f34;font-size:.74rem;cursor:pointer}.cart-total{padding-top:16px;border-top:2px solid var(--ink)}.cart-total strong{font-size:1.2rem}.service-selector{margin:20px 0 14px;padding:0;border:0}.service-selector legend{margin-bottom:9px;font-size:.84rem;font-weight:850}.service-selector>label{display:inline-block;width:calc(33.333% - 5px)}.service-selector input{position:absolute;opacity:0;pointer-events:none}.service-selector span{min-height:44px;padding:8px 4px;display:grid;place-items:center;border:1px solid var(--line);border-radius:11px;color:var(--muted);font-size:.75rem;font-weight:800;text-align:center;cursor:pointer}.service-selector input:checked+span{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 11%,white);color:var(--accent-dark)}.order-fields{display:grid;gap:10px;margin-top:10px}.order-fields[hidden]{display:none}.order-fields label{display:grid;gap:6px;font-size:.8rem;font-weight:750}.order-fields label span{color:var(--muted);font-weight:500}.order-fields input,.order-fields textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink);outline:0;resize:vertical}.order-fields input:focus,.order-fields textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}.order-button{width:100%;margin-top:15px}.order-button:disabled{opacity:.65;cursor:not-allowed}.order-error{min-height:18px;margin:9px 0 -4px;color:#a33f34;font-size:.8rem}.order-success{padding:34px 10px 22px;text-align:center}.order-success[hidden]{display:none}.success-mark{width:60px;height:60px;margin:0 auto 18px;display:grid;place-items:center;border-radius:50%;background:#e4f4eb;color:#24764b;font-size:1.7rem;font-weight:900}.order-success p{margin:0 0 6px;color:var(--muted)}.order-success strong{color:var(--accent);font-size:1.5rem}.menu-toast{position:fixed;left:50%;bottom:94px;z-index:40;padding:10px 15px;border-radius:10px;background:var(--ink);color:#fff;font-size:.82rem;opacity:0;transform:translate(-50%,10px);pointer-events:none;transition:.2s}.menu-toast.show{opacity:1;transform:translate(-50%,0)}
/* Garson çağır / hesap iste: kategori barının sağında, scroll'a girmeyen sabit alan */
.category-bar{display:flex;align-items:center;gap:8px}
.category-bar .category-tabs{flex:1 1 auto;width:auto;min-width:0}
.category-actions{display:flex;flex:0 0 auto;align-items:center;gap:6px;padding-right:2px}
.category-action-btn{display:flex;align-items:center;gap:5px;flex:0 0 auto;min-height:38px;padding:8px 12px;border:1px solid var(--line);border-radius:99px;background:var(--paper);color:var(--muted);font-size:.72rem;font-weight:800;white-space:nowrap;cursor:pointer;box-shadow:0 4px 14px rgba(41,34,28,.06);transition:.18s ease}
.category-action-btn span:first-child{font-size:.92rem}
.category-action-btn:active{transform:scale(.96)}
.category-action-btn:disabled{opacity:.55;cursor:not-allowed}
.service-menu{position:relative;flex:0 0 auto}
.service-menu-btn{width:38px;padding:8px;justify-content:center}
.service-menu-btn[aria-expanded="true"]{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));color:var(--accent-dark);background:color-mix(in srgb,var(--accent) 8%,white)}
.service-menu-popup{position:absolute;top:calc(100% + 8px);right:0;z-index:12;width:180px;padding:6px;display:grid;gap:2px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:0 16px 40px rgba(41,34,28,.16)}
.service-menu-popup[hidden]{display:none}
.service-menu-item{width:100%;display:flex;align-items:center;gap:9px;padding:9px 10px;border:0;border-radius:9px;background:transparent;color:var(--ink);text-align:left;font:inherit;font-size:.78rem;font-weight:750;cursor:pointer}
.service-menu-item:hover{background:var(--cream)}
@media(max-width:520px){.category-action-btn span:last-child{display:none}.category-action-btn{padding:8px;min-width:38px;justify-content:center}}
@keyframes skeleton{to{background-position:-200% 0}}@keyframes section-in{from{opacity:0;transform:translateY(8px)}}@keyframes cart-pop{50%{transform:translateX(-50%) scale(1.025)}}@keyframes sheet-in{from{opacity:0;transform:translateY(22px) scale(.98)}}
@keyframes category-switch{from{opacity:.72;transform:translateY(3px)}}.menu-content.category-switch{animation:category-switch .2s ease}
@media(min-width:680px){.menu-content{padding:35px 18px 135px}.sheet-card{padding:30px}}
@media(max-width:540px){.sheet-dialog{width:100%;max-width:none;margin:auto 0 0;border-radius:24px 24px 0 0}.sheet-card{border-radius:24px 24px 0 0;padding-bottom:calc(24px + env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.dietary-tag{display:flex;align-items:center;gap:3px;color:var(--muted)}.dietary-tag svg{width:15px;height:15px;fill:currentColor;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.product-card.sold-out{background:#faf9f7;box-shadow:none}.product-card.sold-out .product-row,.product-card.sold-out p{opacity:.58}

/* Public menu layout */
.menu-hero{width:100%;min-height:310px;padding:calc(32px + env(safe-area-inset-top)) 22px 34px;display:flex;align-items:center;justify-content:center}.hero-inner{width:100%;max-width:760px;margin:0 auto;align-items:center;justify-content:center;text-align:center}.hero-inner>div:last-child{width:100%;text-align:center}.company-logo{margin:0 auto 14px;align-items:center;justify-content:center}.menu-hero h1{text-align:center}.menu-description{margin:9px auto 0;text-align:center}
.category-nav{position:sticky;top:0;width:100%;padding:9px 14px 0}.menu-search,.category-tabs{width:100%;max-width:1200px;margin-right:auto;margin-left:auto}.menu-search{margin-top:0}.category-tabs{padding:9px 0 11px}
.menu-content{width:100%;max-width:1200px;margin:0 auto;padding:28px 14px 130px}.category-section{animation:section-in .3s ease both}
@media(min-width:680px){.menu-content{padding:35px 18px 135px}}
@media(max-width:679px){html,body{max-width:100%;overflow-x:clip}.language-gate{padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom));overflow-y:auto}.language-card{width:100%;max-width:100%;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);padding:16px;border-radius:22px}.language-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.language-option{width:100%;min-width:0;padding:7px;grid-template-columns:24px minmax(0,1fr) auto;gap:5px}.language-option .language-flag+span{display:none}.language-option>span:nth-child(3){white-space:normal;overflow-wrap:anywhere}.language-switcher{top:calc(12px + env(safe-area-inset-top));right:12px}.hero-inner,.hero-inner>div:last-child{min-width:0}.company-logo{width:76px;height:76px}.menu-hero h1{max-width:100%;overflow-wrap:anywhere}.menu-description{max-width:100%;overflow-wrap:anywhere}html{scroll-padding-top:126px}.menu-hero{min-height:280px;padding:calc(58px + env(safe-area-inset-top)) 14px 26px}.category-nav{padding-right:10px;padding-left:10px}.menu-search,.category-tabs{min-width:0}.category-tabs{padding-bottom:9px;gap:6px}.menu-content{min-width:0;padding:22px 10px 120px}.category-section{min-width:0}.product-card{min-width:0;width:100%}.product-card p{min-width:0;overflow-wrap:anywhere}}
@media(max-width:359px){.language-list{grid-template-columns:1fr}.language-card{padding:13px}.menu-content{padding-right:8px;padding-left:8px}.product-prices{white-space:normal;text-align:right}}
.owner-access-btn{display:block;width:8px;height:8px;margin:26px auto 0;padding:0;border:0;border-radius:50%;background:var(--ink);opacity:.2;cursor:pointer;transition:opacity .18s ease}.owner-access-btn:hover,.owner-access-btn:focus-visible{opacity:.6}.owner-access-dialog .order-error{margin-top:9px}
.contact-section{width:100%;padding:34px 14px calc(120px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper)}.contact-section[hidden]{display:none}.contact-inner{width:100%;max-width:1200px;margin:0 auto}.contact-inner>.hero-label{color:var(--accent)}.contact-inner h2{margin:0 0 16px;font-family:var(--heading-font,"Georgia",serif);font-size:1.55rem}.contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.contact-card{min-width:0;min-height:72px;padding:12px 14px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;border:1px solid var(--line);border-radius:16px;background:var(--cream);color:var(--ink);text-decoration:none}.contact-card[href]{cursor:pointer;transition:.18s ease}.contact-card[href]:hover{border-color:var(--accent);transform:translateY(-1px)}.contact-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:var(--paper);font-size:1.15rem}.contact-copy{min-width:0;display:grid;gap:3px}.contact-copy small{color:var(--muted);font-size:.68rem;font-weight:750}.contact-copy strong{overflow-wrap:anywhere;font-size:.82rem;line-height:1.35;white-space:pre-line}.contact-arrow{color:var(--accent);font-weight:900}.contact-links-qr{margin-top:22px;padding-top:22px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.contact-links-qr[hidden]{display:none}.contact-links-qr-title{margin:0;color:var(--muted);font-size:.78rem;font-weight:750;letter-spacing:.02em}.contact-links-qr-link{display:inline-flex;border-radius:16px;transition:transform .15s ease,opacity .15s ease}.contact-links-qr-link:hover,.contact-links-qr-link:focus-visible{transform:scale(1.03)}.contact-links-qr-link:active{transform:scale(.97);opacity:.85}.contact-links-qr-img{width:140px;height:140px;padding:10px;border:1px solid var(--line);border-radius:16px;background:#fff}.contact-links-qr-hint{margin:0;color:var(--muted);font-size:.68rem;font-weight:600}@media(max-width:679px){.contact-section{padding:28px 10px calc(112px + env(safe-area-inset-bottom))}.contact-grid{grid-template-columns:1fr;gap:8px}.contact-card{min-height:66px;padding:10px 12px}.contact-links-qr-img{width:120px;height:120px}}

/* MOBILE APP-LIKE MENU */
@media (max-width: 679px){

  html,
  body{
    width:100%;
    max-width:100%;
    min-width:0;
    /* overflow-x:hidden DEĞİL — CSS Overflow spec'ine göre bir eksende
       hidden/scroll/auto verilip diğeri visible bırakılırsa UA diğer
       ekseni de auto'ya zorluyor (bkz. body{overflow-y:auto} computed
       olarak ortaya çıkıyordu). Bu, body'yi html/viewport'tan AYRI bir
       scroll container'a çeviriyor ve .category-nav'ın position:sticky'si
       artık viewport'a değil bu yeni container'a göre hesaplanıyor — sonuç
       olarak mobilde kaydırınca sabit kalması gereken kategori çubuğu
       sayfayla birlikte kayıp gözden kayboluyordu. overflow-x:clip aynı
       "yatay taşmayı engelle" amacını, bu yan etki olmadan sağlıyor. */
    overflow-x:clip;
  }

  *,
  *::before,
  *::after{
    box-sizing:border-box;
    max-width:100%;
  }

  .category-nav{
    width:100%;
    max-width:100%;
    overflow:hidden;
  }

  .menu-search{
    width:100%;
    max-width:100%;
  }

  .category-tabs{
    width:100%;
    max-width:100%;
    overflow-x:auto;
    overflow-y:hidden;
    flex-wrap:nowrap;
    -webkit-overflow-scrolling:touch;
  }

  .menu-content{
    width:100%;
    max-width:100%;
    min-width:0;
    overflow:hidden;
    padding:20px 10px 120px;
  }

  .category-section{
    width:100%;
    max-width:100%;
    min-width:0;
  }

  .product-list{
    width:100%;
    max-width:100%;
    min-width:0;
  }

  .product-card{
    width:100%;
    max-width:100%;
    min-width:0;
    padding:9px 12px;
    border-radius:15px;
  }

  .product-row h3{
    font-size:.94rem;
  }

  .product-card p{
    min-width:0;
    font-size:.76rem;
    line-height:1.4;
  }

  .product-prices{
    font-size:.9rem;
  }

  .card-add{
    min-height:28px;
    padding:4px 9px;
    margin-right:0;
    border-radius:8px;
    font-size:.72rem;
    white-space:nowrap;
  }

  .cart-fab{
    width:calc(100% - 20px);
    max-width:720px;
    min-width:0;
    left:50%;
    bottom:calc(10px + env(safe-area-inset-bottom));
  }

  .contact-section{
    width:100%;
    max-width:100%;
    overflow:hidden;
  }

  .sheet-dialog{
    max-width:100%;
  }
}


/* DIGIMENU NUTRITION PUBLIC */

.detail-food-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}

.nutrition-panel {
  margin-top: 14px;
  padding: 14px;
  border: 1px solid rgba(232, 227, 220, .9);
  border-radius: 14px;
  background: rgba(248, 246, 243, .75);
}

.nutrition-title,
.allergen-title {
  margin-bottom: 10px;
  font-size: .78rem;
  font-weight: 850;
  letter-spacing: .02em;
}

.nutrition-calories {
  display: flex;
  align-items: baseline;
  gap: 5px;
  margin-bottom: 12px;
}

.nutrition-calories strong {
  font-size: 1.35rem;
}

.nutrition-calories span {
  color: var(--muted);
  font-size: .75rem;
}

.nutrition-values {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
}

.nutrition-item {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 9px;
  border-radius: 9px;
  background: #fff;
  font-size: .72rem;
}

.nutrition-item span {
  color: var(--muted);
}

.allergen-panel {
  margin-top: 14px;
  padding: 14px;
  border: 1px solid rgba(180, 90, 70, .18);
  border-radius: 14px;
  background: rgba(250, 244, 241, .9);
}

.allergen-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.allergen-item {
  padding: 5px 8px;
  border-radius: 999px;
  background: rgba(180, 90, 70, .1);
  color: #8b493c;
  font-size: .7rem;
  font-weight: 750;
}

.allergen-note {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(180, 90, 70, .14);
  color: #76524b;
  font-size: .74rem;
  line-height: 1.5;
}

@media (max-width: 679px) {
  .nutrition-values {
    grid-template-columns: 1fr;
  }
}

/* "Kolay Menü" (menu_style="easy") — kaydırma pozisyonuna bağlı, kategoriye
   özel arka plan görseli + scroll-spy (bkz. static/js/public-menu.js
   setupScrollSpy). [hidden] olduğunda (yani "classic" görünümde, mevcut
   tüm firmaların varsayılanı) bu blok hiçbir şey render etmez. */
.category-backdrop {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  background: linear-gradient(135deg, #40372f, #161412);
  pointer-events: none;
}

.category-backdrop[hidden] {
  display: none;
}

.category-backdrop-layer {
  position: absolute;
  inset: 0;
  background-position: center;
  background-size: cover;
  opacity: 0;
  transition: opacity .9s ease;
}

.category-backdrop-layer.active {
  opacity: 1;
}

/* GÖREV 3 — cover_brightness: kapak fotoğrafı (.menu-hero::before, bkz.
   yukarısı), logo (.company-logo img) ve kategori arka plan görselleri
   (.category-backdrop-layer) için TEK, paylaşılan bir CSS filter:
   brightness() değeri. hero_overlay (karartma GRADYANI, ayrı bir
   background katmanı) ile ÇAKIŞMAZ — biri background-image üzerinde bir
   overlay katmanı, diğeri filter ile doğrudan görselin kendi parlaklığı;
   ikisi aynı anda, birbirinden bağımsız çalışır. Sadece easy modda
   okunur/etkilidir (bkz. public-menu.js renderMenu, null ise
   removeProperty — fallback 100% ile MEVCUT görünüm birebir korunur).
   Metin İÇERMEYEN üç hedefte de (kapak katmanı artık ::before'da izole,
   logo ve backdrop zaten salt görsel) filter'ın metni etkileme riski
   yok. */
body.menu-style-easy .menu-hero::before,
body.menu-style-easy .company-logo img,
body.menu-style-easy .category-backdrop-layer {
  filter: brightness(var(--cover-brightness, 100%));
}

.category-backdrop::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(13, 12, 11, .5), rgba(13, 12, 11, .74));
}

/* İçerik alanının kendi opak arka planı yok (bkz. .menu-content), bu yüzden
   backdrop hero'nun altında ve kategori bölümlerinin (.category-section)
   kendi opak "sheet" zemininin dışında kalan boşluklarda görünür. */
body.menu-style-easy {
  background: transparent;
}

/* Kolay Menü'de ürün listesi kart değil, akan/bölünmüş bir liste —
   referans üründeki gibi. Tek sütun, kutu/gölge yok, satırlar arasında
   ince bir alt çizgi var. Metnin arka plandaki fotoğraf üzerinde okunaklı
   kalması için .category-section'a tek, sürekli bir "sheet" zemini
   verildi — tek tek satırlar artık kendi arka planına sahip değil.
   Sadece menu-style-easy'yi etkiler, classic hiç değişmedi.

   Zeminin opaklığı --sheet-opacity custom property'si ile panelden
   ayarlanabilir (bkz. Menu.sheet_opacity, static/js/public-menu.js
   renderMenu). Property hiç set edilmemişse (sheet_opacity=null, yani
   firma hiç dokunmamışsa) var()'ın fallback'i (.8 = %80) devreye girer.

   Slider panelde 0-100 aralığını gösterse de (bkz. templates/admin/
   products.html #menuSheetOpacity), gerçek alpha değeri burada
   clamp() ile asla .75'in altına inmiyor (2026-09-01: .55 -> .75
   yükseltildi — Bella Vista örneğinde, firma sheet_opacity'yi %40'a
   çekince kategori arka plan görselindeki büyük stilize marka yazısı
   ("Bella") üstteki gerçek ürün metniyle karışıp okunmaz bir görsel
   kalabalığı yaratıyordu; .55 tabanı bunu tam önlemeye yetmiyordu).
   Panel tarafında ayrı bir sınır/uyarı eklemek yerine bilinçli olarak
   tek bir yerden, CSS'te zorlanıyor — "%0 şeffaflık" isteği bile en
   fazla ~%75 saydamlığa karşılık gelir, metin her koşulda okunur kalır.
   "Hafif hissedilsin ama asla rekabet etmesin" prensibi: hiçbir firma
   paneli hiç ayarlamasa bile (fallback .8) zaten bu tabanın üzerinde. */
body.menu-style-easy .category-section {
  padding: 16px 18px;
  border-radius: 20px;
  /* Düz beyaz yerine hafif kirli-beyaz/krem ton (250,248,245) — göze
     düz beyazdan daha az yorucu, markanın --cream tonuna da yakın. Firma
     "sheet_color" ile bu tonu değiştirebilir (bkz. --sheet-color-rgb,
     public-menu.js hexToRgbTriplet) — null ise aynı krem ton korunur. */
  background: rgba(var(--sheet-color-rgb, 250, 248, 245), clamp(0.75, var(--sheet-opacity, 0.8), 1));
  /* backdrop-filter:blur(10px) BİLEREK KALDIRILDI (2026-09-01, GÖREV 1).
     Amacı, zeminin ARKASINDAKİ kategori fotoğrafını yumuşatmaktı — ama bu
     elementin İÇİNDE ürün adı/açıklaması gibi GERÇEK METİN var, backdrop-
     filter'lı bir elementin metin içeren torunları Chromium'da bilinen bir
     compositing/rasterizasyon davranışıyla daha az keskin render edilebiliyor
     (bkz. proje notları GÖREV 1). Zaten sheet_opacity tabanı artık .75 (bkz.
     önceki commit) — zemin çoğunlukla opak, arkadaki görsel görünürlüğü
     zaten çok az; blur'un görsel katkısı ihmal edilebilir düzeyde, metin
     netliği riskine değmiyor. Zemin RENGİ hâlâ yumuşak/soluk kalıyor,
     sadece metni etkileme ihtimali olan filtre kaldırıldı. */
  box-shadow: 0 14px 40px rgba(20, 17, 14, .18);
  /* Ürün adı/kategori başlığı gibi metinlerin rengi (GÖREV 3) — null ise
     var(--ink) (mevcut varsayılan) korunur. color miras yoluyla h2/h3'e
     iner; .product-card p kendi rengini ayrıca aşağıda tanımlıyor. */
  color: var(--text-color, var(--ink));
}

body.menu-style-easy .product-list {
  grid-template-columns: 1fr;
  gap: 0;
}

body.menu-style-easy .product-card {
  padding: 13px 2px;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

body.menu-style-easy .product-card:last-child {
  border-bottom: 0;
}

@media (max-width: 679px) {
  body.menu-style-easy .category-section {
    padding: 13px 14px;
    border-radius: 16px;
  }

  body.menu-style-easy .product-card {
    padding: 11px 2px;
  }
}

/* Açıklama satırları (.product-card p), yarı saydam frosted zemin
   (bkz. .category-section, clamp'lenmiş --sheet-opacity) ile arkadaki
   kategori fotoğrafı üzerinde standart .muted rengiyle/boyutuyla
   (.82rem) zor okunuyordu. Sadece easy modda: biraz daha büyük ve
   --ink'e doğru koyulaştırılmış bir renk — classic'teki kart içi
   açıklama (opak beyaz zemin üzerinde, kontrast zaten yeterli) hiç
   değişmedi. */
body.menu-style-easy .product-card p {
  font-size: .9rem;
  /* var(--text-color, var(--ink)): GÖREV 3'teki text_color burada da
     geçerli olsun diye — .product-card p kendi rengini açıkça
     tanımladığından .category-section'daki color mirasını (inheritance)
     almaz, bu yüzden aynı fallback zinciri burada tekrarlanıyor. */
  color: color-mix(in srgb, var(--muted) 45%, var(--text-color, var(--ink)) 55%);
}

/* Safari/WebKit'te position:sticky + backdrop-filter AYNI elementte
   bilinen bir render sorununa yol açabiliyor: sticky eleman scroll
   sırasında (özellikle "normal akış -> sabitlenmiş" geçişinde) yanlış
   konumlanıp üstündeki içeriğe (burada hero başlığına) taşıyor —
   bildirilen "hero başlığı category-nav tarafından örtülüyor" belirtisi
   bu desenle örtüşüyor. .category-nav hem position:sticky hem
   backdrop-filter taşıyordu; standart/dokümante edilmiş düzeltme,
   filtre + arka planı sticky elemanın kendisinden ayırıp onu dolduran
   ayrı bir ::before katmanına taşımak. Chromium'da bu değişiklik
   görsel olarak birebir aynı sonucu veriyor (piksel farkı yok),
   WebKit'teki sticky konumlandırma hatasını da ortadan kaldırıyor.
   Sadece easy modda: nav'ın kendisi classic'te hiç değişmedi. */
body.menu-style-easy .category-nav {
  position: sticky;
  isolation: isolate;
  background: none;
  backdrop-filter: none;
}

body.menu-style-easy .category-nav::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: rgba(247, 245, 241, .94);
  backdrop-filter: blur(18px);
}
