/* =================================================================
   BISTRO — kâğıt dokulu, el yazısı başlıklı, noktalı fiyat çizgili
   klasik menü. Animasyon: satırlar mürekkep gibi bulanıktan netleşir,
   kategori başlıklarının altındaki süs çizgisi kalemle çiziliyormuş
   gibi uzar.
   ================================================================= */
.t-bistro {
    --m-bg: #f4ead5;
    --m-fg: #2b2118;
    --m-muted: #7a6a58;
    --m-card: #fbf6ea;
    --m-border: rgba(43, 33, 24, .15);
    --m-radius: 4px;
    --m-shadow: none;
    --m-head-font: 'Playfair Display', Georgia, serif;
    --m-body-font: 'Lora', Georgia, serif;
    --m-price: var(--m-fg);
    --m-chip-bg: transparent;
    --m-chip-fg: var(--m-muted);
    --m-chip-on-bg: transparent;
    --m-chip-on-fg: var(--m-accent);
    --m-nav-bg: rgba(244, 234, 213, .92);
    --m-max: 720px;
}

/* Kâğıt dokusu: SVG gürültü + hafif kenar gölgelemesi (görsel dosya yok) */
.t-bistro body, body.t-bistro {
    background-color: var(--m-bg);
    background-image:
        radial-gradient(ellipse at center, transparent 55%, rgba(120, 90, 50, .16) 100%),
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .35 0 0 0 0 .2 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-attachment: fixed;
}

.t-bistro .m-hero { background: transparent; color: var(--m-fg); padding: 3.5rem 1.25rem 1.5rem; }
.t-bistro .m-hero::after {
    content: ''; display: block; width: min(420px, 80%); height: 14px; margin: 1.5rem auto 0;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 14'%3E%3Cpath d='M0 7h170M230 7h170' stroke='%232b2118' stroke-width='1'/%3E%3Cpath d='M180 7c8-8 16 8 20 0s12 8 20 0' fill='none' stroke='%232b2118' stroke-width='1.2'/%3E%3C/svg%3E") center / contain no-repeat;
    opacity: .6;
}
.t-bistro .m-logo { border: 2px solid var(--m-fg); box-shadow: none; background: transparent; color: var(--m-fg); }
.t-bistro .m-kicker { font-family: 'Caveat', cursive; font-size: 1.6rem; color: var(--m-accent); margin-bottom: .25rem; }
.t-bistro .m-name { font-size: clamp(2.2rem, 9vw, 3.4rem); font-weight: 700; letter-spacing: .01em; }
.t-bistro .m-address { font-style: italic; }
.t-bistro .m-btn { background: transparent; border: 1px solid var(--m-fg); color: var(--m-fg); border-radius: 2px; }
.t-bistro .m-btn-wa { background: var(--m-fg); color: var(--m-bg); }

.t-bistro .m-search input { border-radius: 2px; background: var(--m-card); border-color: var(--m-border); font-style: italic; }
.t-bistro .m-cats { border-top: 1px solid var(--m-border); border-bottom: 1px solid var(--m-border); }
.t-bistro .m-cat { font-family: var(--m-head-font); font-size: 1rem; padding: .4rem .6rem; position: relative; }
.t-bistro .m-cat::after {
    content: ''; position: absolute; left: .6rem; right: .6rem; bottom: .15rem; height: 2px;
    background: var(--m-accent); transform: scaleX(0); transition: transform .35s var(--m-ease);
}
.t-bistro .m-cat.is-active::after { transform: scaleX(1); }

.t-bistro .m-sec { padding-top: 2.25rem; }
.t-bistro .m-sec-head { flex-direction: column; align-items: center; text-align: center; gap: 0; margin-bottom: 1.25rem; }
.t-bistro .m-sec-title { font-family: 'Caveat', cursive; font-size: 2.4rem; font-weight: 700; color: var(--m-accent); }
.t-bistro .m-sec-title span { position: relative; display: inline-block; padding: 0 .25rem; }
.t-bistro .m-sec-title span::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: -.1rem; height: 8px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 8' preserveAspectRatio='none'%3E%3Cpath d='M2 5 Q50 1 100 4 T198 3' fill='none' stroke='%232b2118' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
    transform-origin: left; transform: scaleX(0); transition: transform .9s var(--m-ease) .2s;
}
.t-bistro .m-sec-head.is-in .m-sec-title span::after { transform: scaleX(1); }
.t-bistro .m-sec-count { font-style: italic; }

/* Noktalı fiyat çizgileri (dot leaders) */
.t-bistro .m-items { gap: 0; }
.t-bistro .m-item { background: transparent; padding: .9rem 0; border-bottom: 1px dashed var(--m-border); border-radius: 0; align-items: flex-start; }
.t-bistro .m-item:last-child { border-bottom: 0; }
.t-bistro .m-item-img { flex-basis: 64px; height: 64px; border-radius: 50%; filter: sepia(.25) saturate(1.1); border: 2px solid var(--m-card); box-shadow: 0 0 0 1px var(--m-border); }
.t-bistro .m-item-name { font-size: 1.12rem; font-weight: 700; }
.t-bistro .m-leader { border-bottom: 2px dotted rgba(43, 33, 24, .35); transform: translateY(-.3rem); min-width: 1.5rem; }
.t-bistro .m-item-price { font-family: var(--m-head-font); font-size: 1.1rem; font-style: italic; }
.t-bistro .m-item-desc { font-style: italic; -webkit-line-clamp: 3; }
.t-bistro .m-item:hover .m-item-name { color: var(--m-accent); }

/* Mürekkep animasyonu: bulanıktan netleşme + hafif harf aralığı daralması */
.js .t-bistro .m-item { transform: none; filter: blur(6px); }
.js .t-bistro .m-item.is-in {
    filter: blur(0);
    transition: opacity .9s ease, filter .9s ease;
    transition-delay: calc(var(--i, 0) * 70ms);
}
.js .t-bistro .m-item.is-in .m-item-name { animation: bistroInk 1s var(--m-ease) both; animation-delay: calc(var(--i, 0) * 70ms); }
@keyframes bistroInk { from { letter-spacing: .12em; } to { letter-spacing: 0; } }

.t-bistro .m-footer { font-style: italic; }
.t-bistro .m-top { background: var(--m-fg); color: var(--m-bg); box-shadow: none; border-radius: 2px; }
.t-bistro .m-modal-card { background: var(--m-card); }
.t-bistro .m-modal-name { font-family: 'Caveat', cursive; font-size: 2.2rem; color: var(--m-accent); }
.t-bistro .m-modal-price { font-family: var(--m-head-font); font-style: italic; color: var(--m-fg); }
