/* GlitchOS Next — default public theme. Clean, fast, responsive. */
:root { --ink:#1a1a1a; --muted:#666; --accent:#4f46e5; --bg:#fff; --line:#eee; }
* { box-sizing: border-box; }
body { margin:0; font:17px/1.7 Georgia, 'Times New Roman', serif; color:var(--ink); background:var(--bg); }
.container { max-width: 720px; margin:0 auto; padding:0 20px; }
.site-header { border-bottom:1px solid var(--line); padding:20px 0; }
.header-inner { display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.logo { font:700 20px/1 -apple-system, system-ui, sans-serif; color:var(--ink); text-decoration:none; }
.site-nav { display:flex; gap:20px; font:15px/1 -apple-system, system-ui, sans-serif; }
.site-nav a { color:var(--muted); text-decoration:none; }
.site-nav a:hover { color:var(--ink); }
.site-search input { padding:6px 10px; border:1px solid var(--line); border-radius:16px; font:14px system-ui,sans-serif; width:130px; }
main { padding:48px 0; }
h1 { font:700 34px/1.2 -apple-system, system-ui, sans-serif; margin:0 0 24px; }
.prose img { max-width:100%; height:auto; border-radius:8px; }
.prose a { color:var(--accent); }
.prose h2 { font:700 24px/1.3 -apple-system, system-ui, sans-serif; margin-top:2em; }
.prose h3 { font:700 19px/1.3 -apple-system, system-ui, sans-serif; margin-top:1.6em; }
.prose blockquote { border-left:3px solid var(--accent); margin:1.5em 0; padding:.2em 0 .2em 1em; color:var(--muted); font-style:italic; }
.prose figure { margin:1.5em 0; }
.prose figure img { width:100%; border-radius:8px; }
.prose hr { border:none; border-top:1px solid var(--line); margin:2em 0; }
.site-footer { border-top:1px solid var(--line); padding:24px 0; font:14px/1.5 -apple-system, system-ui, sans-serif; color:var(--muted); }
.muted { color:var(--muted); }

.lang-switch { display:inline-flex; gap:6px; font:12px/1 -apple-system,system-ui,sans-serif; }
.lang-switch a { padding:5px 7px; border:1px solid var(--line); border-radius:5px; color:var(--muted); text-decoration:none; }
.lang-switch a.active { color:#fff; background:var(--accent); border-color:var(--accent); }

.widget-blog-latest ul { list-style: none; padding: 0; margin: 1.2em 0; }
.widget-blog-latest li { padding: 6px 0; border-bottom: 1px solid var(--line); }
.widget-blog-latest li:last-child { border-bottom: 0; }

/* ---- Installable content-app widgets ---------------------------------- */
.widget { margin: 2em 0; font-family: -apple-system, system-ui, sans-serif; }
.widget h3 { font: 700 18px/1.3 -apple-system, system-ui, sans-serif; margin: 0 0 .4em; }

/* FAQ */
.widget.faq .faq-item { border: 1px solid var(--line); border-radius: 8px; margin-bottom: 8px; padding: 0 14px; }
.widget.faq summary { cursor: pointer; padding: 12px 0; font-weight: 600; list-style: none; }
.widget.faq summary::-webkit-details-marker { display: none; }
.widget.faq summary::before { content: "+"; color: var(--accent); font-weight: 700; margin-right: 8px; }
.widget.faq details[open] summary::before { content: "–"; }
.widget.faq .faq-answer { padding: 0 0 14px; color: var(--muted); }

/* Testimonials */
.widget.testimonials { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.widget.testimonials .testimonial { border: 1px solid var(--line); border-radius: 10px; padding: 18px; }
.widget.testimonials .stars { color: #f5a623; letter-spacing: 2px; }
.widget.testimonials blockquote { margin: 10px 0; font-style: italic; }
.widget.testimonials .role { color: var(--muted); font-size: 14px; }

/* Team */
.widget.team { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 20px; text-align: center; }
.widget.team .member img { width: 120px; height: 120px; border-radius: 50%; object-fit: cover; }
.widget.team .role { color: var(--accent); font-size: 14px; font-weight: 600; }
.widget.team .bio { color: var(--muted); font-size: 14px; }

/* Gallery */
.widget.gallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; }
.widget.gallery-grid .g-item img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 8px; display: block; }

/* Services */
.widget.services-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 18px; }
.widget.services-grid .service-card { border: 1px solid var(--line); border-radius: 10px; padding: 20px; }
.widget.services-grid .service-icon { font-size: 30px; margin-bottom: 8px; }

/* Events */
.widget.events-list .event-item { border-left: 3px solid var(--accent); padding: 4px 0 4px 16px; margin-bottom: 18px; }
.widget.events-list .event-date { color: var(--accent); font-weight: 600; font-size: 14px; }
.widget.events-list .event-place { color: var(--muted); font-size: 14px; margin: 2px 0; }

/* Pricing */
.widget.pricing-table { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 18px; align-items: start; }
.widget.pricing-table .plan-card { border: 1px solid var(--line); border-radius: 12px; padding: 24px; text-align: center; }
.widget.pricing-table .plan-featured { border-color: var(--accent); box-shadow: 0 8px 30px color-mix(in srgb, var(--accent) 18%, transparent); }
.widget.pricing-table .plan-price { font: 700 32px/1 -apple-system, system-ui, sans-serif; margin: 10px 0; }
.widget.pricing-table .plan-period { font-size: 14px; color: var(--muted); font-weight: 400; }
.widget.pricing-table .plan-features { list-style: none; padding: 0; margin: 16px 0; text-align: left; }
.widget.pricing-table .plan-features li { padding: 6px 0 6px 22px; position: relative; }
.widget.pricing-table .plan-features li::before { content: "✓"; color: var(--accent); position: absolute; left: 0; }
.widget.pricing-table .plan-cta,
.widget.shop-catalog .product-order,
.widget.newsletter-form button { display: inline-block; background: var(--accent); color: #fff; padding: 10px 20px; border-radius: 8px; text-decoration: none; border: 0; cursor: pointer; font: 600 15px/1 -apple-system, system-ui, sans-serif; }

/* Maps */
.widget.map-embed .map-address { font-size: 14px; margin: 8px 0 2px; }
.widget.map-embed .map-link { font-size: 14px; }

/* Banners */
.widget.banners { display: grid; gap: 12px; }
.widget.banners .banner img { width: 100%; border-radius: 10px; display: block; }

/* Slider (CSS scroll-snap, no JS) */
.widget.slider .slider-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 8px; border-radius: 12px; }
.widget.slider .slide { position: relative; flex: 0 0 100%; scroll-snap-align: center; }
.widget.slider .slide img { width: 100%; height: 420px; object-fit: cover; border-radius: 12px; display: block; }
.widget.slider .slide-caption { position: absolute; left: 0; right: 0; bottom: 0; background: linear-gradient(transparent, rgba(0,0,0,.65)); color: #fff; padding: 30px 18px 14px; font-family: -apple-system, system-ui, sans-serif; }

/* Newsletter */
.widget.newsletter-form .nl-title { display: block; font-weight: 600; margin-bottom: 8px; }
.widget.newsletter-form .nl-row { display: flex; gap: 8px; flex-wrap: wrap; }
.widget.newsletter-form input[type=email] { flex: 1; min-width: 180px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; font: inherit; }

/* Shop */
.widget.shop-catalog { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 20px; }
.widget.shop-catalog .product-card { border: 1px solid var(--line); border-radius: 12px; padding: 16px; }
.widget.shop-catalog .product-img img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 8px; margin-bottom: 10px; }
.widget.shop-catalog .product-cat { display: inline-block; font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.widget.shop-catalog .product-price { font: 700 20px/1 -apple-system, system-ui, sans-serif; margin: 6px 0 10px; }
.widget.shop-catalog .product-desc { color: var(--muted); font-size: 14px; }
.widget.shop-catalog .product-out { color: #b91c1c; font-weight: 600; font-size: 14px; }

/* Cookie banner */
.cookie-banner { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 999; background: #1a1a1a; color: #fff; border-radius: 12px; padding: 16px 20px; display: flex; gap: 16px; align-items: center; justify-content: space-between; flex-wrap: wrap; font-family: -apple-system, system-ui, sans-serif; box-shadow: 0 8px 30px rgba(0,0,0,.3); }
.cookie-banner .cookie-msg { margin: 0; font-size: 14px; }
.cookie-banner .cookie-msg a { color: #a5b4fc; }
.cookie-banner .cookie-accept { background: var(--accent); color: #fff; border: 0; padding: 10px 22px; border-radius: 8px; cursor: pointer; font: 600 15px/1 -apple-system, system-ui, sans-serif; white-space: nowrap; }

/* Portfolio */
.widget.portfolio-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
.widget.portfolio-grid .pf-item { position: relative; display: block; border-radius: 12px; overflow: hidden; text-decoration: none; }
.widget.portfolio-grid .pf-item img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }
.widget.portfolio-grid .pf-info { position: absolute; left: 0; right: 0; bottom: 0; padding: 24px 14px 12px; background: linear-gradient(transparent, rgba(0,0,0,.7)); color: #fff; }
.widget.portfolio-grid .pf-info h3 { margin: 0; color: #fff; font-size: 16px; }
.widget.portfolio-grid .pf-cat { font-size: 12px; opacity: .85; }

/* Clients logo wall */
.widget.clients-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 24px; align-items: center; }
.widget.clients-wall .client-logo img { width: 100%; max-height: 60px; object-fit: contain; filter: grayscale(1); opacity: .7; transition: filter .2s, opacity .2s; }
.widget.clients-wall .client-logo:hover img { filter: none; opacity: 1; }

/* Stats / counters */
.widget.stats-counters { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 20px; text-align: center; }
.widget.stats-counters .stat-icon { font-size: 28px; }
.widget.stats-counters .stat-value { font: 800 40px/1 -apple-system, system-ui, sans-serif; color: var(--accent); }
.widget.stats-counters .stat-label { color: var(--muted); font-size: 14px; margin-top: 4px; }

/* Links (link-in-bio) */
.widget.links-list { display: flex; flex-direction: column; gap: 10px; max-width: 520px; margin-inline: auto; }
.widget.links-list .link-item { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border: 1px solid var(--line); border-radius: 12px; text-decoration: none; color: var(--ink); transition: border-color .2s, transform .1s; }
.widget.links-list .link-item:hover { border-color: var(--accent); transform: translateY(-1px); }
.widget.links-list .link-icon { font-size: 22px; }
.widget.links-list .link-label { display: block; font-weight: 600; }
.widget.links-list .link-desc { display: block; color: var(--muted); font-size: 13px; }

/* Timeline */
.widget.timeline-list { border-left: 2px solid var(--line); margin-left: 8px; padding-left: 22px; }
.widget.timeline-list .tl-item { position: relative; padding-bottom: 22px; }
.widget.timeline-list .tl-item::before { content: ""; position: absolute; left: -29px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--accent); }
.widget.timeline-list .tl-date { color: var(--accent); font-weight: 700; font-size: 14px; }
.widget.timeline-list .tl-body h3 { margin: 2px 0; }
.widget.timeline-list .tl-body p { margin: 0; color: var(--muted); }

/* Opening hours */
.widget.opening-hours table { width: 100%; max-width: 460px; border-collapse: collapse; }
.widget.opening-hours th, .widget.opening-hours td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.widget.opening-hours th { font-weight: 600; }
.widget.opening-hours .oh-closed { color: var(--muted); }
.widget.opening-hours .oh-note { color: var(--muted); font-size: 13px; }

/* Breadcrumb (nested pages) */
.breadcrumb { font: 14px/1.5 -apple-system, system-ui, sans-serif; color: var(--muted); margin: 0 0 12px; }
.breadcrumb a { color: var(--muted); text-decoration: none; }
.breadcrumb a:hover { color: var(--accent); text-decoration: underline; }
.breadcrumb .sep { margin: 0 8px; opacity: .5; }
.breadcrumb [aria-current="page"] { color: var(--ink); font-weight: 600; }

/* Nested navigation dropdowns */
.site-nav .nav-group { position: relative; display: inline-flex; align-items: center; }
.site-nav .nav-group .caret { font-size: 10px; opacity: .6; }
.site-nav .submenu { position: absolute; top: 100%; left: 0; min-width: 190px; background: var(--bg); border: 1px solid var(--line); border-radius: 10px; padding: 6px; display: none; flex-direction: column; gap: 2px; box-shadow: 0 12px 34px rgba(0,0,0,.10); z-index: 50; }
.site-nav .nav-group:hover .submenu,
.site-nav .nav-group:focus-within .submenu { display: flex; }
.site-nav .submenu a { padding: 8px 12px; border-radius: 6px; white-space: nowrap; color: var(--ink); }
.site-nav .submenu a:hover { background: var(--line); text-decoration: none; }

/* Active navigation voice */
.site-nav a.active,
.site-nav .nav-group.active > a { color: var(--accent); font-weight: 700; }

/* Wide page template */
.container-wide { max-width: 1100px; }

/* Cover / Hero block */
.prose .cover { position: relative; overflow: hidden; border-radius: 16px; margin: 1.6em 0; padding: 84px 44px; background: #16181d; color: #fff; display: flex; align-items: center; min-height: 340px; }
.prose .cover > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.prose .cover:not([data-tone="image"]) > img { display: none; }
.prose .cover::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.3), rgba(0,0,0,.55)); z-index: 1; }
.prose .cover:not([data-tone="image"])::after { display: none; }
.prose .cover .cover-inner { position: relative; z-index: 2; max-width: 640px; }
.prose .cover .cover-eyebrow { font: 700 13px/1.2 -apple-system, system-ui, sans-serif; letter-spacing: .16em; text-transform: uppercase; margin: 0 0 .9em; opacity: .85; }
.prose .cover .cover-inner h2 { color: inherit; margin: 0 0 .35em; font: 800 40px/1.12 -apple-system, system-ui, sans-serif; letter-spacing: -.01em; }
.prose .cover .cover-inner p { color: inherit; opacity: .92; margin: 0 0 1.1em; }
.prose .cover-cta { display: flex; gap: 12px; flex-wrap: wrap; }
.prose .cover-cta a { display: inline-block; background: var(--accent); color: #fff; padding: 12px 26px; border-radius: 8px; text-decoration: none; font-weight: 600; }
.prose .cover-cta a:hover { filter: brightness(1.06); text-decoration: none; }
.prose .cover-cta a.secondary { background: transparent; border: 1px solid rgba(255,255,255,.55); color: #fff; }
/* tone variants */
.prose .cover[data-tone="dark"] { background: #16181d; }
.prose .cover[data-tone="accent"] { background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 55%, #000)); }
.prose .cover[data-tone="light"] { background: color-mix(in srgb, var(--ink) 3%, var(--bg)); color: var(--ink); border: 1px solid var(--line); }
.prose .cover[data-tone="light"] .cover-eyebrow { color: var(--accent); opacity: 1; }
.prose .cover[data-tone="light"] .cover-cta a.secondary { border-color: var(--line); color: var(--ink); }
/* alignment + height */
.prose .cover[data-align="center"] { justify-content: center; text-align: center; }
.prose .cover[data-align="center"] .cover-inner { margin: 0 auto; }
.prose .cover[data-align="center"] .cover-cta { justify-content: center; }
.prose .cover[data-height="m"] { min-height: 240px; padding: 56px 44px; }
.prose .cover[data-height="full"] { min-height: 74vh; }

/* Two-column block */
.prose .columns { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; margin: 1.5em 0; }
@media (max-width: 640px) { .prose .columns { grid-template-columns: 1fr; } }

/* Guard: lets the full-bleed CTA band reach the viewport edges without
   ever introducing a horizontal scrollbar. */
body { overflow-x: clip; }

/* Split block — image + text, side switchable */
.prose .split { display: grid; grid-template-columns: 1fr 1fr; gap: 34px; align-items: center; margin: 2em 0; }
.prose .split[data-media="right"] { direction: rtl; }
.prose .split[data-media="right"] > * { direction: ltr; }
.prose .split-media img { width: 100%; border-radius: 14px; display: block; margin: 0; }
.prose .split-body > :first-child { margin-top: 0; }
.prose .split-body > :last-child { margin-bottom: 0; }
.prose .split-body h2 { font: 800 30px/1.15 -apple-system, system-ui, sans-serif; letter-spacing: -.01em; margin: 0 0 .35em; }
@media (max-width: 640px) { .prose .split, .prose .split[data-media="right"] { grid-template-columns: 1fr; direction: ltr; } }

/* Features grid — icon + title + text cards */
.prose .features { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 18px; margin: 2em 0; }
.prose .feature { background: color-mix(in srgb, var(--ink) 3%, var(--bg)); border: 1px solid var(--line); border-radius: 14px; padding: 24px; }
.prose .feature-icon { font-size: 30px; line-height: 1; margin-bottom: 14px; }
.prose .feature h3 { font: 700 18px/1.25 -apple-system, system-ui, sans-serif; margin: 0 0 6px; }
.prose .feature p { margin: 0; color: var(--muted); font-size: 15.5px; line-height: 1.55; }

/* Full-bleed call-to-action band */
.prose .ctaband { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); margin-top: 2.4em; margin-bottom: 2.4em; padding: 66px 20px; color: #fff; }
.prose .ctaband[data-tone="accent"] { background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 55%, #000)); }
.prose .ctaband[data-tone="dark"] { background: #16181d; }
.prose .ctaband-inner { max-width: 720px; margin: 0 auto; text-align: center; padding: 0 20px; }
.prose .ctaband-inner h2 { color: #fff; font: 800 34px/1.12 -apple-system, system-ui, sans-serif; letter-spacing: -.01em; margin: 0 0 .3em; }
.prose .ctaband-inner p { color: rgba(255,255,255,.9); margin: 0 0 1.3em; }
.prose .ctaband-cta a { display: inline-block; background: #fff; color: #16181d; padding: 13px 30px; border-radius: 8px; font-weight: 700; text-decoration: none; }
.prose .ctaband-cta a:hover { filter: brightness(.96); text-decoration: none; }

/* Accordion — CSS-only via <details> */
.prose .accordion { margin: 1.8em 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.prose .accordion details { border-bottom: 1px solid var(--line); }
.prose .accordion details:last-child { border-bottom: 0; }
.prose .accordion summary { cursor: pointer; padding: 18px 22px; font-weight: 700; list-style: none; position: relative; }
.prose .accordion summary::-webkit-details-marker { display: none; }
.prose .accordion summary::after { content: "+"; position: absolute; right: 22px; top: 16px; font-size: 20px; color: var(--accent); transition: transform .18s; }
.prose .accordion details[open] summary::after { content: "−"; }
.prose .accordion .acc-body { padding: 0 22px 18px; color: var(--muted); }
.prose .accordion .acc-body > :first-child { margin-top: 0; }
.prose .accordion .acc-body > :last-child { margin-bottom: 0; }

/* Spacer */
.prose .spacer { height: 36px; }
.prose .spacer[data-size="s"] { height: 16px; }
.prose .spacer[data-size="l"] { height: 64px; }
.prose .spacer[data-size="xl"] { height: 104px; }

/* Steps — auto-numbered process */
.prose .steps { counter-reset: step; display: grid; gap: 20px; margin: 2em 0; }
.prose .step { position: relative; padding-left: 62px; min-height: 44px; }
.prose .step::before { counter-increment: step; content: counter(step); position: absolute; left: 0; top: 0; width: 44px; height: 44px; border-radius: 50%; background: var(--accent); color: #fff; display: flex; align-items: center; justify-content: center; font: 800 20px/1 -apple-system, system-ui, sans-serif; }
.prose .step h3 { margin: 3px 0 5px; font: 700 19px/1.25 -apple-system, system-ui, sans-serif; }
.prose .step p { margin: 0; color: var(--muted); }

/* Cards — image + title + text + link */
.prose .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; margin: 2em 0; }
.prose .card-item { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--bg); display: flex; flex-direction: column; }
.prose .card-item img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; margin: 0; border-radius: 0; display: block; }
.prose .card-item h3 { margin: 16px 18px 6px; font: 700 18px/1.25 -apple-system, system-ui, sans-serif; }
.prose .card-item p { margin: 0 18px 14px; color: var(--muted); font-size: 15px; flex: 1; }
.prose .card-item a { margin: 0 18px 18px; color: var(--accent); font-weight: 600; text-decoration: none; }
.prose .card-item a:hover { text-decoration: underline; }

/* Carousel — CSS scroll-snap image strip */
.prose .carousel { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; margin: 2em 0; padding-bottom: 10px; -webkit-overflow-scrolling: touch; }
.prose .carousel img { flex: 0 0 auto; width: min(72%, 460px); aspect-ratio: 16 / 10; object-fit: cover; scroll-snap-align: center; border-radius: 12px; margin: 0; }

/* Booking page + form (appuntamenti app) */
.booking-page { max-width: 640px; padding: 56px 20px; }
.booking-head { margin-bottom: 28px; }
.booking-eyebrow { font: 700 13px/1 -apple-system, system-ui, sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); margin: 0 0 12px; }
.booking-head h1 { margin: 0 0 8px; }
.booking-lead { color: var(--muted); margin: 0; font-size: 1.05em; }
.site-form.booking-form { max-width: 100%; }
.site-form.booking-form label { display: flex; flex-direction: column; gap: 5px; font-weight: 600; font-size: .95em; }
.site-form.booking-form input, .site-form.booking-form textarea { font: inherit; padding: 11px 13px; border: 1px solid var(--line); border-radius: 9px; background: var(--bg); color: var(--ink); }
.site-form.booking-form input:focus, .site-form.booking-form textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent); }
.site-form.booking-form textarea { min-height: 96px; resize: vertical; }
.site-form.booking-form .hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.widget.appuntamenti-form { max-width: 560px; margin-inline: auto; }

/* WhatsApp floating button (whatsapp app). The compound selector beats
   `.prose a{color:var(--accent)}` so label + icon stay white on green. */
.wa-fab, .prose a.wa-fab { position: fixed; bottom: 22px; z-index: 900; display: inline-flex; align-items: center; gap: 8px; background: #25D366; color: #fff; text-decoration: none; padding: 13px; border-radius: 34px; box-shadow: 0 8px 24px rgba(0,0,0,.22); font-weight: 700; transition: transform .15s, box-shadow .15s; }
.wa-fab.wa-right { right: 22px; }
.wa-fab.wa-left { left: 22px; }
.wa-fab:hover, .prose a.wa-fab:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(0,0,0,.30); text-decoration: none; color: #fff; }
.wa-fab svg { flex: 0 0 auto; display: block; }
.wa-fab-label { padding-right: 8px; white-space: nowrap; }
@media (max-width: 520px) { .wa-fab-label { display: none; } }

/* Table-reservation form row (tavoli app) */
.site-form.booking-form .booking-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
@media (max-width: 520px) { .site-form.booking-form .booking-row { grid-template-columns: 1fr; } }

/* Reviews (recensioni app) */
.widget.reviews-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 18px; margin: 1.8em 0; }
.review-card { border: 1px solid var(--line); border-radius: 14px; padding: 20px; background: var(--bg); }
.review-stars { color: #e0a33a; letter-spacing: 3px; font-size: 15px; margin-bottom: 8px; }
.review-body { margin: 0 0 12px; }
.review-author { margin: 0; font-weight: 700; color: var(--ink); }
.widget.review-form-wrap { max-width: 520px; margin-inline: auto; }
.widget.review-form-wrap select { padding: 11px 13px; border: 1px solid var(--line); border-radius: 9px; background: var(--bg); color: var(--ink); font: inherit; }

/* Announcement bar (annuncio app) — full-bleed, dismissible */
.announcement-bar { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 12px 48px 12px 20px; position: relative; text-align: center; font-weight: 600; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); margin-top: 0; }
.announcement-bar.ann-accent { background: var(--accent); color: #fff; }
.announcement-bar.ann-dark { background: #16181d; color: #fff; }
.announcement-bar.ann-ok { background: #16a34a; color: #fff; }
.prose .announcement-bar a, .announcement-bar a { color: #fff; text-decoration: underline; font-weight: 700; }
.announcement-bar .ann-close { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); background: none; border: 0; color: inherit; font-size: 22px; line-height: 1; cursor: pointer; opacity: .8; padding: 0 6px; }
.announcement-bar .ann-close:hover { opacity: 1; }

/* Donations grid (donazioni app) */
.widget.donations-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; margin: 1.8em 0; }
.donation-card { border: 1px solid var(--line); border-radius: 14px; padding: 26px 22px; text-align: center; background: var(--bg); display: flex; flex-direction: column; }
.donation-amount { font: 800 34px/1 -apple-system, system-ui, sans-serif; color: var(--accent); margin-bottom: 8px; }
.donation-card h3 { margin: 0 0 8px; }
.donation-card p { color: var(--muted); font-size: 15px; margin: 0 0 18px; flex: 1; }
.donation-btn, .prose a.donation-btn { display: inline-block; align-self: center; background: var(--accent); color: #fff; padding: 10px 26px; border-radius: 8px; font-weight: 700; text-decoration: none; }
.donation-btn:hover, .prose a.donation-btn:hover { filter: brightness(1.06); color: #fff; text-decoration: none; }

/* Countdown timer (countdown app) */
.countdown { text-align: center; border-radius: 16px; padding: 34px 20px; margin: 1.8em 0; }
.countdown.cd-accent { background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 60%, #000)); color: #fff; }
.countdown.cd-dark { background: #16181d; color: #fff; }
.countdown.cd-light { background: color-mix(in srgb, var(--ink) 4%, var(--bg)); color: var(--ink); border: 1px solid var(--line); }
.cd-title { font: 700 18px/1.2 -apple-system, system-ui, sans-serif; margin: 0 0 20px; letter-spacing: .01em; }
.cd-grid { display: flex; justify-content: center; gap: 16px; flex-wrap: wrap; }
.cd-unit { min-width: 74px; }
.cd-unit span { display: block; font: 800 42px/1 -apple-system, system-ui, sans-serif; font-variant-numeric: tabular-nums; }
.cd-unit small { display: block; margin-top: 6px; font-size: 12px; text-transform: uppercase; letter-spacing: .1em; opacity: .85; }
.cd-expired { font: 800 26px/1.2 -apple-system, system-ui, sans-serif; margin: 0; }

/* Lead-capture popup (popup app) */
.popup-overlay { position: fixed; inset: 0; z-index: 950; background: rgba(0,0,0,.5); display: flex; align-items: center; justify-content: center; padding: 20px; }
.popup-box { background: var(--bg); color: var(--ink); border-radius: 16px; padding: 36px 30px 30px; max-width: 420px; width: 100%; position: relative; box-shadow: 0 20px 60px rgba(0,0,0,.32); text-align: center; }
.popup-box h3 { margin: 0 0 8px; font: 800 24px/1.2 -apple-system, system-ui, sans-serif; }
.popup-box > p { color: var(--muted); margin: 0 0 18px; }
.popup-close { position: absolute; right: 14px; top: 10px; background: none; border: 0; font-size: 26px; line-height: 1; color: var(--muted); cursor: pointer; }
.popup-close:hover { color: var(--ink); }
.popup-form { display: flex; flex-direction: column; gap: 10px; max-width: 100%; margin: 0; }
.popup-form input[type=email] { padding: 12px 14px; border: 1px solid var(--line); border-radius: 9px; background: var(--bg); color: var(--ink); font: inherit; }
.popup-form input[type=email]:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent); }
.popup-form .hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.popup-ok { color: #16a34a; font-weight: 700; margin: 0; }

/* Social-proof toast (socialproof app) */
.sp-toast { position: fixed; bottom: 18px; left: 18px; z-index: 880; background: var(--bg); color: var(--ink); border: 1px solid var(--line); border-radius: 12px; padding: 12px 16px; display: flex; align-items: center; gap: 10px; box-shadow: 0 10px 30px rgba(0,0,0,.16); font-size: 14px; font-weight: 600; max-width: 300px; opacity: 0; transform: translateY(10px); transition: opacity .35s, transform .35s; }
.sp-toast.sp-in { opacity: 1; transform: translateY(0); }
.sp-toast.sp-out { opacity: 0; transform: translateY(10px); }
.sp-dot { width: 9px; height: 9px; border-radius: 50%; background: #16a34a; flex: 0 0 auto; box-shadow: 0 0 0 4px color-mix(in srgb, #16a34a 22%, transparent); }
@media (max-width: 520px) { .sp-toast { left: 10px; right: 10px; max-width: none; } }

/* Event schedule (agenda app) */
.widget.agenda-list { max-width: 720px; margin-inline: auto; }
.agenda-item { display: flex; gap: 18px; padding: 16px 0; border-bottom: 1px solid var(--line); }
.agenda-item:last-child { border-bottom: 0; }
.agenda-time { flex: 0 0 68px; font: 700 16px/1.5 -apple-system, system-ui, sans-serif; color: var(--accent); }
.agenda-body { flex: 1; min-width: 0; }
.agenda-body h3 { margin: 0 0 3px; font-size: 18px; }
.agenda-speaker { margin: 0 0 4px; color: var(--muted); font-weight: 600; font-size: 14px; }
.agenda-body p { margin: 0; color: var(--muted); font-size: 15px; }

/* Speakers grid (speaker app) */
.widget.speakers-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 22px; margin: 1.8em 0; text-align: center; }
.speaker-photo { width: 130px; height: 130px; border-radius: 50%; object-fit: cover; margin: 0 auto 12px; display: block; }
.speaker-ph { background: color-mix(in srgb, var(--ink) 8%, var(--bg)); }
.speaker-card h3 { margin: 0 0 2px; font-size: 18px; }
.speaker-role { margin: 0; color: var(--accent); font-weight: 600; font-size: 14px; }

/* Sponsors wall (sponsor app) */
.widget.sponsors-wall { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 16px; margin: 1.8em 0; }
.sponsor-cell { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 22px; border: 1px solid var(--line); border-radius: 12px; text-decoration: none; background: var(--bg); }
.sponsor-cell img { max-width: 100%; max-height: 60px; object-fit: contain; }
.sponsor-name { font-weight: 700; color: var(--ink); }
.sponsor-tier { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); font-weight: 700; }

/* Directory listings (directory app) */
.widget.directory-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 18px; margin: 1.8em 0; }
.dir-card { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--bg); display: flex; flex-direction: column; }
.dir-photo { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; margin: 0; }
.dir-body { padding: 18px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.dir-cat { align-self: flex-start; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; color: var(--accent); }
.dir-card h3 { margin: 0; font-size: 18px; }
.dir-desc { margin: 0; color: var(--muted); font-size: 14.5px; flex: 1; }
.dir-meta { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; font-size: 14px; }
.dir-line { color: var(--muted); text-decoration: none; }
a.dir-line:hover { color: var(--accent); }

/* Video gallery (video app) */
.widget.video-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 22px; margin: 1.8em 0; }
.video-frame { position: relative; aspect-ratio: 16 / 9; border-radius: 12px; overflow: hidden; background: #000; }
.video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-card h3 { margin: 12px 0 4px; font-size: 17px; }
.video-card p { margin: 0; color: var(--muted); font-size: 14.5px; }

/* Classifieds board (bacheca app) */
.widget.bacheca-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; margin: 1.8em 0; }
.bac-card { border: 1px solid var(--line); border-radius: 12px; padding: 18px; background: var(--bg); }
.bac-cat { display: inline-block; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; color: var(--accent); margin-bottom: 6px; }
.bac-card h3 { margin: 0 0 6px; font-size: 17px; }
.bac-body { margin: 0 0 8px; white-space: pre-wrap; }
.bac-contact { margin: 0; color: var(--muted); font-size: 14px; font-weight: 600; }

/* vCard button (vcard app) */
.widget.vcard-widget { max-width: 380px; margin-inline: auto; }
.vcard-btn, .prose a.vcard-btn { display: flex; align-items: center; gap: 14px; padding: 16px 20px; border: 1px solid var(--line); border-radius: 14px; background: var(--bg); text-decoration: none; color: var(--ink); transition: border-color .15s, box-shadow .15s; }
.vcard-btn:hover, .prose a.vcard-btn:hover { border-color: var(--accent); box-shadow: 0 6px 18px -6px color-mix(in srgb, var(--accent) 40%, transparent); text-decoration: none; color: var(--ink); }
.vcard-ico { font-size: 30px; }
.vcard-btn strong { display: block; }
.vcard-btn small { color: var(--muted); }
.vcard-save { margin-left: auto; font-weight: 700; color: var(--accent); white-space: nowrap; }

/* Downloadable materials (materiali app) */
.widget.materials-list { display: flex; flex-direction: column; gap: 10px; margin: 1.8em 0; max-width: 640px; }
.material-item, .prose a.material-item { display: flex; align-items: center; gap: 14px; padding: 14px 18px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg); text-decoration: none; color: var(--ink); transition: border-color .15s; }
.material-item:hover, .prose a.material-item:hover { border-color: var(--accent); text-decoration: none; color: var(--ink); }
.material-ext { flex: 0 0 auto; width: 46px; height: 46px; border-radius: 9px; background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); display: flex; align-items: center; justify-content: center; font: 700 11px/1 -apple-system, system-ui, sans-serif; }
.material-body { flex: 1; min-width: 0; }
.material-body small { display: block; color: var(--muted); font-size: 13.5px; }
.material-cat { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 700; }
.material-dl { color: var(--accent); font-size: 20px; }

/* Quiz (quiz app) */
.widget.quiz-widget { max-width: 620px; margin-inline: auto; }
.quiz-q { margin: 0 0 18px; padding: 18px 20px; border: 1px solid var(--line); border-radius: 12px; }
.quiz-question { margin: 0 0 12px; font-weight: 700; font-size: 17px; }
.quiz-opts { display: flex; flex-direction: column; gap: 8px; }
.quiz-opt { display: flex; align-items: center; gap: 10px; cursor: pointer; }
.quiz-result { max-width: 620px; padding: 40px 20px; }
.quiz-score { font-size: 22px; margin: 0 0 20px; }
.quiz-review { list-style: none; padding: 0; margin: 0 0 24px; display: flex; flex-direction: column; gap: 10px; }
.quiz-review-item { display: flex; gap: 12px; align-items: start; padding: 12px 16px; border: 1px solid var(--line); border-radius: 10px; }
.quiz-review-mark { font-weight: 800; font-size: 18px; }
.quiz-review-item.ok .quiz-review-mark { color: #16a34a; }
.quiz-review-item.ko .quiz-review-mark { color: #dc2626; }
.quiz-review-item small { color: var(--muted); }

/* Before / After — pure CSS: a resizable reveal over a base image.
   The reveal's inner image keeps the full container width (100cqw) so it never
   squashes; drag the bottom-right grip to compare. No JavaScript. */
.prose .beforeafter { position: relative; container-type: inline-size; display: grid; border-radius: 12px; overflow: hidden; margin: 2em 0; background: #000; }
.prose .beforeafter > .ba-after { grid-area: 1 / 1; width: 100%; display: block; margin: 0; }
.prose .beforeafter > .ba-reveal { grid-area: 1 / 1; width: 55%; min-width: 40px; max-width: 100%; overflow: hidden; resize: horizontal; position: relative; }
.prose .beforeafter > .ba-reveal img { width: 100cqw; max-width: none; height: 100%; object-fit: cover; display: block; margin: 0; }
.prose .beforeafter > .ba-reveal::after { content: ""; position: absolute; top: 0; right: 0; width: 3px; height: 100%; background: #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.25); }
.prose .beforeafter[data-before]::before { content: attr(data-before); position: absolute; left: 12px; bottom: 12px; z-index: 2; background: rgba(0,0,0,.6); color: #fff; font: 600 12px/1 -apple-system, system-ui, sans-serif; padding: 6px 10px; border-radius: 20px; }
.prose .beforeafter[data-after]::after { content: attr(data-after); position: absolute; right: 12px; bottom: 12px; z-index: 2; background: rgba(0,0,0,.6); color: #fff; font: 600 12px/1 -apple-system, system-ui, sans-serif; padding: 6px 10px; border-radius: 20px; }

/* Tabs — CSS-only via radio inputs (display:contents flattens each .tab) */
.prose .tabs { display: flex; flex-wrap: wrap; margin: 2em 0; }
.prose .tabs .tab { display: contents; }
.prose .tabs input { position: absolute; opacity: 0; pointer-events: none; }
.prose .tabs label { order: 1; padding: 11px 18px; cursor: pointer; font-weight: 600; color: var(--muted); border-bottom: 2px solid var(--line); }
.prose .tabs .tab-panel { order: 2; width: 100%; display: none; padding: 22px 2px 0; }
.prose .tabs .tab-panel > :first-child { margin-top: 0; }
.prose .tabs input:checked ~ label { color: var(--accent); border-bottom-color: var(--accent); }
.prose .tabs input:focus-visible ~ label { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px 4px 0 0; }
.prose .tabs input:checked ~ .tab-panel { display: block; }

/* Custom content collections */
.prose .collection-grid, .collection-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 18px; margin: 1.5em 0; }
.collection-grid .col-card { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--bg); }
.collection-grid .col-img img { width: 100%; aspect-ratio: 3/2; object-fit: cover; display: block; }
.collection-grid .col-card h3 { margin: 0; padding: 12px 14px 4px; font: 700 17px/1.3 -apple-system, system-ui, sans-serif; }
.collection-grid .col-card h3 a { text-decoration: none; }
.collection-grid .col-meta { display: block; padding: 2px 14px; font-size: 13px; color: var(--muted); }
.collection-grid .col-meta:last-child { padding-bottom: 12px; }

/* Store cart / checkout */
.product-order-form { margin: 0; }
.cart-table { width: 100%; border-collapse: collapse; margin: 1em 0; }
.cart-table th, .cart-table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.cart-remove { background: none; border: 1px solid var(--line); border-radius: 6px; padding: 5px 10px; cursor: pointer; color: var(--muted); }
.cart-total { font-size: 1.15em; margin: 1em 0; }
/* Selector carries enough specificity to beat `.prose a { color:var(--accent) }`,
   otherwise the label turns accent-on-accent and becomes invisible. */
.cart-checkout, .prose a.cart-checkout { display: inline-block; background: var(--accent); color: #fff; padding: 12px 26px; border-radius: 8px; text-decoration: none; font-weight: 600; border: 0; cursor: pointer; font: 600 16px/1 -apple-system, system-ui, sans-serif; }
.cart-checkout:hover, .prose a.cart-checkout:hover { color: #fff; filter: brightness(1.08); }
.checkout-form { display: flex; flex-direction: column; gap: 6px; max-width: 460px; }
.checkout-form label { font-weight: 600; margin-top: 8px; }
.checkout-form input, .checkout-form textarea { padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; font: inherit; }
.checkout-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 16px; }
.cart-checkout.paypal-btn { background: #0070ba; }
.cart-checkout.paypal-btn:hover { background: #005c99; filter: none; }
.cart-checkout.cart-checkout-alt { background: transparent; color: var(--accent); border: 1px solid var(--accent); }
.cart-checkout.cart-checkout-alt:hover { background: color-mix(in srgb, var(--accent) 10%, transparent); }
.paypal-form { margin: 1em 0; }

/* Site forms (form builder) */
.site-form { display: flex; flex-direction: column; gap: 12px; max-width: 480px; margin: 1.5em 0; }
.site-form .form-row { display: flex; flex-direction: column; gap: 4px; }
.site-form label { font-weight: 600; font-size: 14px; font-family: -apple-system, system-ui, sans-serif; }
.site-form input, .site-form textarea, .site-form select { padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; font: inherit; background: var(--bg); color: var(--ink); }
.site-form .form-check { flex-direction: row; align-items: center; gap: 8px; font-weight: 400; }
.site-form .hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.site-form .form-submit { align-self: flex-start; background: var(--accent); color: #fff; border: 0; padding: 12px 26px; border-radius: 8px; font: 600 16px/1 -apple-system, system-ui, sans-serif; cursor: pointer; }

/* Named-menu widget ([widget type="menu.<slug>"]) + footer placeholder */
.menu ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 18px; }
.menu ul ul { flex-direction: column; gap: 2px; margin: 4px 0 4px 14px; }
.menu a { color: inherit; }
.menu li.active > a { color: var(--accent); }
.site-footer .footer-menu { margin-bottom: 12px; }
.site-footer .footer-menu .menu ul { justify-content: center; }

/* Full-bleed "cover" template: the page body owns the whole <main>. */
main.cover { padding: 0; }
main.cover .container { max-width: 1120px; }

/* Buttons (contact form, cover-block CTAs) */
.btn { display:inline-block; padding:12px 22px; border-radius:8px; font:600 15px/1 -apple-system,system-ui,sans-serif; text-decoration:none; cursor:pointer; border:1px solid transparent; transition:transform .05s; }
.btn:active { transform:translateY(1px); }
.btn-primary { background:var(--accent); color:#fff; }
.btn-ghost { background:transparent; color:var(--ink); border-color:var(--line); }
.btn-light { background:#fff; color:var(--ink); }

/* Themed contact form (rendered inside the theme layout) */
.contact-form-wrap { max-width:640px; margin:0 auto; }
.form-note { padding:14px 16px; border-radius:10px; margin:0 0 18px; font-size:15px; }
.form-ok { background:color-mix(in srgb, #16a34a 14%, var(--bg)); color:#15803d; }
.form-err { background:color-mix(in srgb, #dc2626 12%, var(--bg)); color:#b91c1c; }
.contact-form { display:flex; flex-direction:column; gap:16px; }
.contact-form label { display:flex; flex-direction:column; gap:6px; font:600 14px/1.3 -apple-system,system-ui,sans-serif; }
.contact-form input, .contact-form textarea { font:400 16px/1.5 inherit; padding:12px 14px; border:1px solid var(--line); border-radius:10px; background:var(--bg); color:var(--ink); width:100%; }
.contact-form input:focus, .contact-form textarea:focus { outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent); border-color:var(--accent); }
.contact-form textarea { min-height:150px; resize:vertical; }
.contact-form .hp { position:absolute; left:-9999px; }
.contact-form .btn { align-self:flex-start; }

/* App front pages rendered inside the theme (blog, search) */
.blog-item { margin:0 0 26px; padding-bottom:22px; border-bottom:1px solid var(--line); }
.blog-item h2 { margin:0 0 6px; }
.blog-back { margin-top:32px; }
.search-form { display:flex; gap:8px; margin:8px 0 18px; }
.search-form input { flex:1; padding:12px 14px; border:1px solid var(--line); border-radius:8px; font:inherit; background:var(--bg); color:var(--ink); }
.search-hit { padding:16px 0; border-bottom:1px solid var(--line); }
.search-hit .k { font:12px/1 -apple-system,system-ui,sans-serif; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
.search-hit h3 { margin:4px 0; font:700 19px/1.3 -apple-system,system-ui,sans-serif; }
.search-hit .snip { color:var(--muted); }
.search-hit mark { background:color-mix(in srgb, var(--accent) 22%, transparent); color:inherit; padding:0 2px; border-radius:3px; }

/* Uploaded site logo in the theme header (falls back to site-name text) */
.logo-img { display:block; max-height:44px; width:auto; }

/* Menu (dishes) widget — restaurant menu grouped by category */
.widget.menu-list { max-width:760px; margin-inline:auto; }
.widget.menu-list .menu-cat { margin-bottom:30px; }
.widget.menu-list .menu-cat-title { font:700 22px/1.2 -apple-system,system-ui,sans-serif; margin:0 0 12px; color:var(--accent); }
.widget.menu-list .menu-item { padding:10px 0; border-bottom:1px solid var(--line); }
.widget.menu-list .menu-item:last-child { border-bottom:0; }
.widget.menu-list .menu-item.has-photo { display:flex; gap:16px; align-items:flex-start; padding:14px 0; }
.widget.menu-list .menu-photo { width:84px; height:84px; flex:0 0 84px; object-fit:cover; border-radius:12px; background:var(--panel-2,#f0f2f5); }
.widget.menu-list .menu-body { flex:1; min-width:0; }
.widget.menu-list .menu-head { display:flex; align-items:baseline; gap:8px; }
.widget.menu-list .menu-name { font:700 17px/1.3 inherit; }
.widget.menu-list .menu-dots { flex:1; border-bottom:2px dotted var(--line); transform:translateY(-4px); }
.widget.menu-list .menu-price { font-weight:700; color:var(--accent); white-space:nowrap; }
.widget.menu-list .menu-desc { margin:3px 0 0; color:var(--muted); font-size:14.5px; }

/* Courses widget — grid of classes with schedule */
.widget.courses-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px,1fr)); gap:18px; }
.widget.courses-grid .course-card { border:1px solid var(--line); border-radius:12px; padding:22px; background:var(--bg); }
.widget.courses-grid .course-icon { font-size:30px; margin-bottom:8px; }
.widget.courses-grid .course-card h3 { margin:0 0 .3em; }
.widget.courses-grid .course-card p { color:var(--muted); margin:0; font-size:15px; }
.widget.courses-grid .course-schedule { display:inline-block; margin-top:12px; font:600 12px/1 -apple-system,system-ui,sans-serif; padding:6px 11px; border-radius:20px; background:color-mix(in srgb, var(--accent) 12%, transparent); color:var(--accent); }

/* --- feedrss: subscribe link --- */
.widget.feedrss-widget { margin:16px 0; }
.rss-link, .prose a.rss-link { display:inline-flex; align-items:center; gap:8px; padding:9px 16px; border-radius:24px; background:var(--accent); color:#fff; font-weight:600; text-decoration:none; }
.rss-link:hover, .prose a.rss-link:hover { filter:brightness(1.06); }
.rss-link .rss-ico { font-size:15px; }

/* --- sondaggio: poll widget --- */
.widget.poll-widget { max-width:520px; margin:22px auto; padding:22px 24px; border:1px solid var(--border,#e6e6e6); border-radius:16px; background:var(--card,#fff); }
.poll-widget .poll-question { font-weight:700; font-size:18px; margin:0 0 16px; }
.poll-widget .poll-form { display:flex; flex-direction:column; gap:2px; }
.poll-widget .poll-opt { display:flex; align-items:center; gap:10px; padding:11px 13px; border:1px solid var(--border,#e6e6e6); border-radius:10px; margin-bottom:8px; cursor:pointer; transition:border-color .15s,background .15s; }
.poll-widget .poll-opt:hover { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 6%, transparent); }
.poll-widget .poll-form .btn { margin-top:6px; align-self:flex-start; }
.poll-results { display:flex; flex-direction:column; gap:14px; }
.poll-result-top { display:flex; justify-content:space-between; font-size:15px; margin-bottom:5px; }
.poll-result-top .poll-pct { font-weight:700; color:var(--accent); }
.poll-bar { height:10px; border-radius:6px; background:color-mix(in srgb, var(--accent) 12%, transparent); overflow:hidden; }
.poll-bar-fill { display:block; height:100%; background:var(--accent); border-radius:6px; transition:width .4s ease; }
.poll-total { margin:16px 0 0; color:var(--muted); font-size:13px; }

/* --- glossario: alphabetical term list --- */
.widget.glossary { margin:22px 0; }
.glossary-index { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 22px; }
.glossary-index a, .prose a.glossary-index a, .glossary-index a:link { display:inline-flex; min-width:30px; justify-content:center; padding:5px 9px; border-radius:8px; background:color-mix(in srgb, var(--accent) 10%, transparent); color:var(--accent); font-weight:700; text-decoration:none; font-size:14px; }
.glossary-index a:hover { background:var(--accent); color:#fff; }
.glossary-group { margin:0 0 20px; }
.glossary-letter { font-size:22px; color:var(--accent); margin:0 0 8px; padding-bottom:4px; border-bottom:1px solid var(--border,#e6e6e6); }
.glossary dl { margin:0; }
.glossary-term { font-weight:700; margin:12px 0 2px; }
.glossary-def { margin:0 0 4px; color:var(--muted); }
.glossary-def p { margin:0 0 6px; }

/* --- calcolatore: interactive estimate --- */
.widget.calculator { max-width:520px; margin:22px auto; padding:24px 26px; border:1px solid var(--border,#e6e6e6); border-radius:16px; background:var(--card,#fff); }
.calc-title { font-weight:700; font-size:20px; margin:0 0 6px; }
.calc-intro { color:var(--muted); margin:0 0 16px; font-size:15px; }
.calc-base, .calc-opt, .calc-total { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.calc-base { padding:8px 0; color:var(--muted); border-bottom:1px dashed var(--border,#e6e6e6); }
.calc-opts { margin:6px 0; }
.calc-opt { padding:11px 0; border-bottom:1px solid var(--border,#f0f0f0); cursor:pointer; }
.calc-opt span:first-child { display:flex; align-items:center; gap:9px; }
.calc-opt-price { color:var(--muted); font-size:14px; white-space:nowrap; }
.calc-total { margin-top:14px; padding-top:14px; border-top:2px solid var(--accent); font-size:17px; }
.calc-total strong { font-size:22px; color:var(--accent); }
.calc-note { color:var(--muted); font-size:12px; margin:8px 0 16px; }
.calc-cta, .prose a.calc-cta { display:inline-block; }

/* --- certificati: generator form --- */
.widget.cert-widget { max-width:440px; margin:22px 0; padding:20px 22px; border:1px solid var(--border,#e6e6e6); border-radius:14px; background:var(--card,#fff); }
.cert-gen { display:flex; flex-direction:column; gap:12px; }
.cert-gen label { display:flex; flex-direction:column; gap:6px; font-weight:600; }
.cert-gen input { padding:10px 12px; border:1px solid var(--border,#ddd); border-radius:8px; font:inherit; }
.cert-gen .btn { align-self:flex-start; }

/* --- immobili: property cards --- */
.widget.properties-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:22px; margin:22px 0; }
.prop-card { border:1px solid var(--border,#e6e6e6); border-radius:14px; overflow:hidden; background:var(--card,#fff); display:flex; flex-direction:column; }
.prop-media { position:relative; }
.prop-photo { display:block; width:100%; aspect-ratio:16/9; object-fit:cover; background:#f1f1f4; }
.prop-noimg { display:flex; align-items:center; justify-content:center; font-size:44px; color:#c7c7d1; }
.prop-deal { position:absolute; top:10px; left:10px; background:var(--accent); color:#fff; font:600 12px/1 system-ui,sans-serif; padding:5px 10px; border-radius:20px; text-transform:capitalize; }
.prop-body { padding:16px 18px; }
.prop-top { display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.prop-top h3 { margin:0; font-size:17px; }
.prop-price { font-weight:800; color:var(--accent); white-space:nowrap; }
.prop-facts { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; }
.prop-fact { font-size:13px; color:var(--muted); background:color-mix(in srgb, var(--accent) 8%, transparent); padding:4px 9px; border-radius:8px; }
.prop-desc { margin:8px 0 0; color:var(--muted); font-size:14px; }

/* --- lavoro: job cards --- */
.widget.jobs-list { display:flex; flex-direction:column; gap:16px; margin:22px 0; }
.job-card { border:1px solid var(--border,#e6e6e6); border-left:4px solid var(--accent); border-radius:12px; padding:18px 20px; background:var(--card,#fff); }
.job-card h3 { margin:0 0 8px; font-size:18px; }
.job-pills { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.job-pill { font-size:13px; color:var(--muted); background:color-mix(in srgb, var(--accent) 8%, transparent); padding:4px 10px; border-radius:20px; }
.job-desc { color:var(--muted); font-size:15px; margin-bottom:12px; }
.job-desc p { margin:0 0 6px; }
.job-apply, .prose a.job-apply { display:inline-block; }

/* --- ical: subscribe link --- */
.widget.ical-widget { margin:16px 0; }
.ical-link, .prose a.ical-link { display:inline-flex; align-items:center; gap:8px; padding:9px 16px; border-radius:24px; background:var(--accent); color:#fff; font-weight:600; text-decoration:none; }
.ical-link:hover, .prose a.ical-link:hover { filter:brightness(1.06); }

/* --- ricette: recipe cards --- */
.widget.recipes-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:22px; margin:22px 0; }
.recipe-card { border:1px solid var(--border,#e6e6e6); border-radius:14px; overflow:hidden; background:var(--card,#fff); }
.recipe-photo { display:block; width:100%; aspect-ratio:16/9; object-fit:cover; background:#f1f1f4; }
.recipe-noimg { display:flex; align-items:center; justify-content:center; font-size:40px; color:#c7c7d1; }
.recipe-body { padding:16px 18px; }
.recipe-body h3 { margin:0 0 8px; font-size:18px; }
.recipe-facts { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.recipe-fact { font-size:13px; color:var(--muted); background:color-mix(in srgb, var(--accent) 8%, transparent); padding:4px 9px; border-radius:8px; }
.recipe-details summary { cursor:pointer; font-weight:600; color:var(--accent); }
.recipe-details h4 { margin:12px 0 4px; font-size:14px; }
.recipe-details ul, .recipe-details ol { margin:0 0 8px; padding-left:20px; color:var(--muted); }

/* --- promozioni: coupon codes --- */
.widget.promos-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:18px; margin:22px 0; }
.promo-card { border:1px dashed var(--accent); border-radius:14px; padding:18px 20px; background:color-mix(in srgb, var(--accent) 4%, transparent); }
.promo-head { display:flex; justify-content:space-between; align-items:center; gap:10px; }
.promo-head h3 { margin:0; font-size:17px; }
.promo-discount { background:var(--accent); color:#fff; font-weight:700; font-size:14px; padding:4px 10px; border-radius:20px; white-space:nowrap; }
.promo-desc { color:var(--muted); font-size:14px; margin:8px 0; }
.promo-code-row { display:flex; align-items:stretch; gap:8px; margin-top:12px; }
.promo-code { flex:1; display:flex; align-items:center; justify-content:center; font:700 16px/1 ui-monospace,monospace; letter-spacing:.08em; padding:10px 12px; border:1px solid var(--border,#e6e6e6); border-radius:8px; background:var(--card,#fff); }
.promo-copy, .prose a.promo-copy { white-space:nowrap; }
.promo-exp { color:var(--muted); font-size:12px; margin:10px 0 0; }

/* --- orario: weekly schedule --- */
.widget.schedule { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:18px; margin:22px 0; }
.sched-day { border:1px solid var(--border,#e6e6e6); border-radius:12px; overflow:hidden; background:var(--card,#fff); }
.sched-dayname { margin:0; padding:10px 14px; font-size:15px; background:var(--accent); color:#fff; }
.sched-slots { list-style:none; margin:0; padding:8px 14px; }
.slot { display:flex; flex-direction:column; padding:9px 0; border-bottom:1px solid var(--border,#f0f0f0); }
.slot:last-child { border-bottom:0; }
.slot-time { font:700 13px/1 ui-monospace,monospace; color:var(--accent); }
.slot-act { font-weight:600; margin-top:2px; }
.slot-room { font-size:12px; color:var(--muted); }

/* ===== Page layouts (app "layouts": [content] slot + sections/columns) ===== */
.ly-section { padding: 48px 0; }
.ly-section > .ly-inner { max-width: 1120px; margin: 0 auto; padding: 0 24px; }
.ly-section[data-width="full"] { width: 100%; }
.ly-section[data-tone="dark"]   { background: #11151c; color: #fff; }
.ly-section[data-tone="accent"] { background: var(--accent); color: #fff; }
.ly-section[data-tone="light"]  { background: color-mix(in srgb, var(--accent) 6%, #f5f6f8); }
.ly-section[data-tone="dark"] a, .ly-section[data-tone="accent"] a { color: #fff; }
.ly-hero { text-align: center; padding: 76px 0; }
.ly-hero .ly-title { font-size: clamp(30px, 5vw, 44px); margin: 0 0 12px; }
.ly-sub { font-size: 18px; opacity: .88; margin: 0; }
.ly-title { margin: 0 0 20px; }
.ly-row { display: grid; gap: 30px; align-items: start; max-width: 1180px; margin-inline: auto; padding-inline: 24px; box-sizing: border-box; }
.ly-cols-8-4 { grid-template-columns: 2fr 1fr; }
.ly-cols-4-8 { grid-template-columns: 1fr 2fr; }
.ly-cols-6-6 { grid-template-columns: 1fr 1fr; }
.ly-cols-3   { grid-template-columns: repeat(3, 1fr); }
.ly-cols-4   { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 860px) { .ly-row { grid-template-columns: 1fr; } }
.ly-sidebar { background: color-mix(in srgb, var(--accent) 5%, transparent); border-radius: 14px; padding: 20px 22px; }
.ly-sidebar h3 { margin-top: 0; }
/* In a sidebar grid (8/4 or 4/8) the NARROW column is auto-styled as a sidebar
   box, so the native grid block gives the same look as a hand-built aside. */
.ly-cols-8-4 > .ly-col:last-child,
.ly-cols-4-8 > .ly-col:first-child {
    background: color-mix(in srgb, var(--accent) 5%, transparent);
    border-radius: 14px;
    padding: 20px 22px;
}
.ly-cols-8-4 > .ly-col:last-child > :first-child,
.ly-cols-4-8 > .ly-col:first-child > :first-child { margin-top: 0; }
/* The page-content slot: readable width + centered at top level, but fills its
   column when the layout drops it into one (sidebar/columns). */
.ly-content { max-width: 820px; margin-inline: auto; padding-inline: 24px; box-sizing: border-box; }
.ly-col .ly-content { max-width: none; padding-inline: 0; }

/* Native "section"/"grid"/"button" blocks (editor). A full-width section bleeds
   edge-to-edge even inside constrained page content; in a layout (blank mode)
   it is already a direct child of <body>, so it is naturally full width. */
.prose .ly-section[data-width="full"], .ly-content .ly-section[data-width="full"] {
    width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw);
}
.ly-section[data-tone="plain"] { background: transparent; }
.ly-btn-wrap { margin: 20px 0; }
.ly-btn-wrap .btn { display: inline-block; }
/* Buttons inside .prose must keep their intended text colour (beat .prose a). */
.prose a.btn-primary, .ly-btn-wrap a.btn-primary { color: #fff; }
.prose a.btn-ghost, .ly-btn-wrap a.btn-ghost { color: var(--ink); }

/* --- primadopo: before/after gallery (reuses .beforeafter block CSS) --- */
.widget.primadopo-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 26px; margin: 22px 0; }
.ba-card .ba-title { margin: 0 0 10px; font-size: 18px; }
.ba-card .beforeafter { margin: 0; }
.ba-card .ba-desc { color: var(--muted); font-size: 14px; margin: 10px 0 0; }

/* --- comparatore: comparison table --- */
.widget.comparatore { margin: 22px 0; }
.cmp-scroll { overflow-x: auto; }
.cmp-title { font-weight: 700; font-size: 18px; margin: 0 0 12px; }
.compare-table { width: 100%; border-collapse: collapse; min-width: 460px; }
.compare-table th, .compare-table td { padding: 12px 14px; text-align: center; border-bottom: 1px solid var(--border, #e6e6e6); }
.compare-table thead th { background: color-mix(in srgb, var(--accent) 8%, transparent); font-size: 15px; }
.compare-table tbody th[scope="row"] { text-align: left; font-weight: 600; }
.cmp-yes { color: #16a34a; font-weight: 800; }
.cmp-no { color: #cbd0d8; font-weight: 800; }

/* --- ticker: scrolling announcements (pure CSS marquee) --- */
.widget.ticker-bar { overflow: hidden; white-space: nowrap; border-radius: 10px; }
.ticker-bar .ticker-track { display: inline-block; will-change: transform; animation-name: ticker-scroll; animation-timing-function: linear; animation-iteration-count: infinite; padding: 10px 0; }
.ticker-bar:hover .ticker-track { animation-play-state: paused; }
.ticker-item { display: inline-block; padding: 0 28px; font-weight: 600; font-size: 15px; }
.ticker-accent { background: var(--accent); color: #fff; }
.ticker-dark { background: #11151c; color: #fff; }
.ticker-light { background: color-mix(in srgb, var(--accent) 8%, #f5f6f8); color: var(--ink); }
@keyframes ticker-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .ticker-bar .ticker-track { animation: none; } }

/* --- apertura: "aperto ora" + weekly hours --- */
.widget.openinghours { max-width: 460px; margin: 22px 0; border: 1px solid var(--border, #e6e6e6); border-radius: 14px; overflow: hidden; background: var(--card, #fff); }
.openinghours .open-status { padding: 16px 20px; border-bottom: 1px solid var(--border, #eee); }
.open-badge { display: inline-block; font-weight: 700; font-size: 15px; padding: 6px 14px; border-radius: 20px; }
.open-badge.open { background: color-mix(in srgb, #16a34a 15%, transparent); color: #15803d; }
.open-badge.closed { background: color-mix(in srgb, #dc2626 12%, transparent); color: #b91c1c; }
.open-until { color: var(--muted); font-size: 14px; margin-left: 6px; }
.open-list { list-style: none; margin: 0; padding: 6px 0; }
.open-row { display: flex; justify-content: space-between; gap: 16px; padding: 9px 20px; }
.open-row.open-today { background: color-mix(in srgb, var(--accent) 7%, transparent); font-weight: 600; }
.open-day { color: var(--ink); }
.open-times { color: var(--muted); text-align: right; }

/* --- contatti: quick-contact card --- */
.widget.contact-card { max-width: 420px; margin: 22px 0; padding: 20px 22px; border: 1px solid var(--border, #e6e6e6); border-radius: 14px; background: var(--card, #fff); }
.contact-card .contact-title { font-weight: 700; font-size: 18px; margin: 0 0 12px; }
.contact-rows { display: flex; flex-direction: column; gap: 2px; }
.contact-row, .prose a.contact-row { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 10px; color: var(--ink); text-decoration: none; font-weight: 500; }
a.contact-row:hover { background: color-mix(in srgb, var(--accent) 8%, transparent); }
.contact-ico { width: 24px; text-align: center; font-size: 17px; }
.contact-card .contact-note { color: var(--muted); font-size: 14px; margin: 12px 0 0; }

/* --- social: follow bar --- */
.widget.social-bar { margin: 20px 0; }
.social-bar .social-title { font-weight: 700; margin: 0 0 10px; }
.social-links { display: flex; flex-wrap: wrap; gap: 10px; }
.social-btn, .prose a.social-btn { display: inline-block; padding: 9px 16px; border-radius: 24px; background: var(--accent); color: #fff; font-weight: 600; text-decoration: none; }
.social-btn:hover { filter: brightness(1.07); }

/* --- articoli: recent blog posts --- */
.widget.posts-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 22px; margin: 22px 0; }
.post-card, .prose a.post-card { display: block; border: 1px solid var(--border, #e6e6e6); border-radius: 14px; overflow: hidden; background: var(--card, #fff); color: var(--ink); text-decoration: none; }
.post-card:hover { box-shadow: 0 8px 24px -12px rgba(0,0,0,.25); }
.post-cover { display: block; width: 100%; aspect-ratio: 16/9; object-fit: cover; background: #f1f1f4; }
.post-body { padding: 15px 17px; }
.post-body h3 { margin: 0 0 6px; font-size: 17px; }
.post-body p { color: var(--muted); font-size: 14px; margin: 0 0 8px; }
.post-more { color: var(--accent); font-weight: 600; font-size: 14px; }

/* --- degustazione: tasting menu --- */
.widget.degustazione { max-width: 560px; margin: 22px auto; padding: 26px 28px; border: 1px solid var(--border, #e6e6e6); border-radius: 16px; background: var(--card, #fff); text-align: center; }
.degustazione .deg-title { margin: 0 0 6px; font-size: 24px; }
.degustazione .deg-intro { color: var(--muted); margin: 0 0 20px; }
.deg-list { list-style: none; margin: 0 0 20px; padding: 0; text-align: left; }
.deg-course { display: flex; align-items: flex-start; gap: 14px; padding: 12px 0; border-bottom: 1px dashed var(--border, #eee); }
.deg-course:last-child { border-bottom: 0; }
.deg-num { flex: none; width: 28px; height: 28px; border-radius: 50%; background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); font-weight: 700; display: flex; align-items: center; justify-content: center; font-size: 14px; }
.deg-body strong { display: block; }
.deg-desc { color: var(--muted); font-size: 14px; }
.deg-price { display: inline-block; font-weight: 800; font-size: 20px; color: var(--accent); padding: 8px 20px; border-radius: 24px; background: color-mix(in srgb, var(--accent) 10%, transparent); }

/* ============ organigramma ============ */
.widget.org-chart { display: flex; flex-direction: column; gap: 22px; align-items: center; }
.org-row { display: flex; flex-wrap: wrap; gap: 16px; justify-content: center; }
.org-card { width: 180px; border: 1px solid var(--line); border-radius: 12px; padding: 16px; text-align: center; background: var(--bg); }
.org-photo { display: block; width: 64px; height: 64px; margin: 0 auto 10px; border-radius: 50%; overflow: hidden; }
.org-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.org-initial { display: grid; place-items: center; font-size: 26px; font-weight: 700; color: #fff; background: var(--accent); }
.org-name { font-weight: 700; }
.org-role { font-size: 14px; color: var(--accent); }
.org-unit { font-size: 13px; color: var(--muted); }

/* ============ premi ============ */
.widget.awards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 18px; }
.award-card { border: 1px solid var(--line); border-radius: 12px; padding: 20px; text-align: center; background: var(--bg); }
.award-img { display: block; height: 72px; margin-bottom: 10px; }
.award-img img { max-height: 72px; width: auto; margin: 0 auto; display: block; }
.award-trophy { font-size: 46px; line-height: 72px; }
.award-card h3 { margin: 0 0 4px; font-size: 16px; }
.award-meta { color: var(--muted); font-size: 14px; margin: 0; }

/* ============ numeri utili ============ */
.widget.util-numbers { display: flex; flex-direction: column; gap: 10px; }
.util-row, .prose a.util-row { display: flex; align-items: center; gap: 14px; padding: 14px 18px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg); text-decoration: none; color: var(--ink); transition: border-color .15s; }
.util-row:hover, .prose a.util-row:hover { border-color: var(--accent); text-decoration: none; color: var(--ink); }
.util-ico { font-size: 20px; color: var(--accent); }
.util-body { display: flex; flex-direction: column; flex: 1; }
.util-label { font-weight: 700; }
.util-note { font-size: 13px; color: var(--muted); }
.util-phone { font-weight: 700; color: var(--accent); white-space: nowrap; }

/* ============ stato servizi ============ */
.widget.stato-board { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.stato-head { padding: 14px 18px; font-weight: 700; color: #fff; }
.stato-head.stato-ok { background: #16a34a; }
.stato-head.stato-warn { background: #d97706; }
.stato-row { display: flex; align-items: center; gap: 12px; padding: 13px 18px; border-top: 1px solid var(--line); }
.stato-dot { width: 11px; height: 11px; border-radius: 50%; flex: none; }
.stato-dot.stato-ok { background: #16a34a; }
.stato-dot.stato-warn { background: #d97706; }
.stato-dot.stato-down { background: #dc2626; }
.stato-name { font-weight: 600; }
.stato-note { color: var(--muted); font-size: 14px; flex: 1; }
.stato-badge { margin-left: auto; font-size: 13px; font-weight: 700; padding: 3px 10px; border-radius: 20px; }
.stato-badge.stato-ok { background: color-mix(in srgb, #16a34a 15%, transparent); color: #16a34a; }
.stato-badge.stato-warn { background: color-mix(in srgb, #d97706 15%, transparent); color: #b45309; }
.stato-badge.stato-down { background: color-mix(in srgb, #dc2626 15%, transparent); color: #dc2626; }

/* ============ changelog ============ */
.widget.changelog-timeline { position: relative; padding-left: 26px; }
.widget.changelog-timeline::before { content: ""; position: absolute; left: 6px; top: 4px; bottom: 4px; width: 2px; background: var(--line); }
.cl-entry { position: relative; margin-bottom: 22px; }
.cl-marker { position: absolute; left: -26px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 3px var(--bg); }
.cl-head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 4px; }
.cl-ver { font-weight: 700; font-size: 17px; }
.cl-day { color: var(--muted); font-size: 13px; }
.cl-text { color: var(--ink); }

/* ============ roadmap ============ */
.widget.roadmap-board { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.rm-col { border: 1px solid var(--line); border-radius: 12px; padding: 14px; background: color-mix(in srgb, var(--ink) 3%, transparent); }
.rm-col-head { font-weight: 700; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 2px solid var(--line); }
.rm-idea .rm-col-head { border-color: #94a3b8; }
.rm-corso .rm-col-head { border-color: var(--accent); }
.rm-fatto .rm-col-head { border-color: #16a34a; }
.rm-card { background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 12px; margin-bottom: 10px; }
.rm-card h4 { margin: 0 0 4px; font-size: 15px; }
.rm-card p { margin: 0; font-size: 14px; color: var(--muted); }
.rm-empty { color: var(--muted); text-align: center; }

/* ============ wiki ============ */
.widget.wiki-kb { display: flex; flex-direction: column; gap: 22px; }
.wiki-cat { margin: 0 0 10px; font-size: 15px; text-transform: uppercase; letter-spacing: .04em; color: var(--accent); }
.wiki-item { border: 1px solid var(--line); border-radius: 10px; margin-bottom: 8px; background: var(--bg); }
.wiki-item summary { cursor: pointer; padding: 14px 18px; font-weight: 600; list-style: none; }
.wiki-item summary::-webkit-details-marker { display: none; }
.wiki-item summary::before { content: "+"; display: inline-block; width: 18px; color: var(--accent); font-weight: 700; }
.wiki-item[open] summary::before { content: "–"; }
.wiki-body { padding: 0 18px 16px 36px; color: var(--ink); }

/* ============ casi studio ============ */
.widget.casestudy-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; }
.cs-card { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--bg); display: flex; flex-direction: column; }
.cs-img img { width: 100%; height: 170px; object-fit: cover; display: block; }
.cs-body { padding: 18px; }
.cs-client { font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.cs-card h3 { margin: 4px 0 8px; }
.cs-sum { color: var(--muted); font-size: 14px; }
.cs-result { font-weight: 700; color: var(--accent); margin: 8px 0 0; }

/* ============ podcast ============ */
.widget.podcast-list { display: flex; flex-direction: column; gap: 16px; }
.pod-ep { border: 1px solid var(--line); border-radius: 12px; padding: 18px; background: var(--bg); }
.pod-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.pod-head h3 { margin: 0; font-size: 17px; }
.pod-day { color: var(--muted); font-size: 13px; white-space: nowrap; }
.pod-sum { color: var(--muted); font-size: 14px; margin: 6px 0 12px; }
.pod-audio { width: 100%; }

/* ============ passi / come funziona ============ */
.widget.steps-flow { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 18px; counter-reset: step; }
.step-card { border: 1px solid var(--line); border-radius: 12px; padding: 22px 18px; text-align: center; background: var(--bg); }
.step-num { width: 46px; height: 46px; margin: 0 auto 12px; display: grid; place-items: center; border-radius: 50%; background: var(--accent); color: #fff; font-size: 20px; font-weight: 700; }
.step-card h3 { margin: 0 0 6px; font-size: 16px; }
.step-card p { margin: 0; color: var(--muted); font-size: 14px; }

/* ============ citazioni ============ */
.widget.quote-rotator { position: relative; text-align: center; padding: 26px 20px; min-height: 120px; }
.q-slide { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; opacity: 0; transition: opacity .6s; pointer-events: none; }
.q-slide.is-active { position: relative; opacity: 1; pointer-events: auto; }
.q-slide blockquote { font-size: 22px; line-height: 1.4; font-style: italic; margin: 0 0 12px; max-width: 720px; color: var(--ink); }
.q-slide figcaption { color: var(--accent); font-weight: 700; }

/* ============ garanzie ============ */
.widget.guarantee-strip { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }
.grz-item { display: flex; align-items: center; gap: 12px; padding: 14px 20px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg); flex: 1 1 220px; }
.grz-ico { font-size: 26px; }
.grz-body { display: flex; flex-direction: column; }
.grz-title { font-weight: 700; }
.grz-sum { font-size: 13px; color: var(--muted); }

/* ============ stampa ============ */
.print-btn { display: inline-flex; align-items: center; gap: 8px; background: var(--accent); color: #fff; border: 0; padding: 11px 22px; border-radius: 8px; font-weight: 700; font-size: 15px; cursor: pointer; }
.print-btn:hover { filter: brightness(1.06); }
@media print { .print-btn, .wa-fab, .totop-btn, .share-bar { display: none !important; } }

/* ============ torna su ============ */
.totop-btn { position: fixed; bottom: 22px; z-index: 850; display: inline-flex; align-items: center; gap: 6px; background: var(--accent); color: #fff; border: 0; padding: 12px 15px; border-radius: 30px; font-weight: 700; cursor: pointer; box-shadow: 0 8px 24px rgba(0,0,0,.22); opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .2s, transform .2s, visibility .2s; }
.totop-btn.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.totop-btn.totop-right { right: 22px; }
.totop-btn.totop-left { left: 22px; }
.totop-btn.totop-right ~ .wa-fab.wa-right, .wa-fab.wa-right ~ .totop-btn.totop-right { bottom: 80px; }
.totop-label { font-size: 14px; }

/* ============ condividi ============ */
.widget.share-bar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.share-title { font-weight: 700; }
.share-btns { display: flex; gap: 10px; flex-wrap: wrap; }
.share-btn, .prose a.share-btn { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: var(--bg); border: 1px solid var(--line); color: var(--ink); text-decoration: none; font-weight: 700; transition: transform .12s, border-color .12s; cursor: pointer; }
.share-btn:hover, .prose a.share-btn:hover { transform: translateY(-2px); border-color: var(--accent); color: var(--accent); text-decoration: none; }
.share-ico { font-size: 17px; line-height: 1; }
.share-copy.is-copied { border-color: #16a34a; color: #16a34a; }

/* ============ pagamenti ============ */
.widget.payment-badges { display: flex; flex-direction: column; gap: 10px; }
.pay-title { font-weight: 700; }
.pay-list { display: flex; flex-wrap: wrap; gap: 8px; }
.pay-badge { display: inline-flex; align-items: center; padding: 6px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); font-weight: 700; font-size: 14px; color: var(--ink); }

/* ============ allergeni ============ */
.widget.allergen-legend { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
.alg-item { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--bg); }
.alg-code { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: color-mix(in srgb, #d97706 18%, transparent); color: #b45309; font-weight: 700; flex: none; }
.alg-body { display: flex; flex-direction: column; }
.alg-title { font-weight: 700; }
.alg-note { font-size: 13px; color: var(--muted); }

/* ============ tabelle (taglie / spedizioni) ============ */
.widget.size-guide, .widget.shipping-table { overflow-x: auto; }
.widget.size-guide table, .widget.shipping-table table { width: 100%; border-collapse: collapse; }
.widget.size-guide th, .widget.size-guide td, .widget.shipping-table th, .widget.shipping-table td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--line); }
.widget.size-guide thead th, .widget.shipping-table thead th { background: color-mix(in srgb, var(--ink) 5%, transparent); font-size: 13px; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
.widget.size-guide tbody th, .widget.shipping-table tbody th { font-weight: 700; color: var(--accent); }
.widget.size-guide tbody tr:last-child td, .widget.size-guide tbody tr:last-child th, .widget.shipping-table tbody tr:last-child td, .widget.shipping-table tbody tr:last-child th { border-bottom: 0; }

/* Composed header: the [menu] block renders a menu widget (.menu ul); style it
   inside the header so it reads like the default inline nav. */
.site-header .site-nav { align-items: center; flex-wrap: wrap; }
.site-header .menu ul { list-style: none; display: flex; align-items: center; gap: 20px; margin: 0; padding: 0; }
.site-header .menu li { position: relative; }
.site-header .menu a { color: var(--muted); text-decoration: none; font: 15px/1 -apple-system, system-ui, sans-serif; }
.site-header .menu a:hover { color: var(--ink); }
.site-header .menu li ul { position: absolute; top: 100%; left: 0; min-width: 190px; background: var(--bg); border: 1px solid var(--line); border-radius: 10px; padding: 6px; display: none; flex-direction: column; gap: 2px; box-shadow: 0 12px 34px rgba(0,0,0,.10); z-index: 50; }
.site-header .menu li:hover > ul, .site-header .menu li:focus-within > ul { display: flex; }

/* model-composed chrome extras */
.site-header .header-cta { margin-left: 6px; padding: 8px 16px; border-radius: 8px; background: var(--accent); color: #fff; font-weight: 700; text-decoration: none; white-space: nowrap; }
.site-header .header-cta:hover { filter: brightness(1.06); text-decoration: none; }
.site-footer .footer-extra { margin: 16px 0; }
.site-footer .footer-pay, .site-footer .footer-hours { display: flex; justify-content: center; }

/* ============ sedi ============ */
.widget.sedi-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; }
.sede-card { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--bg); }
.sede-img img { width: 100%; height: 160px; object-fit: cover; display: block; }
.sede-body { padding: 16px; }
.sede-body h3 { margin: 0 0 8px; }
.sede-row { display: flex; gap: 8px; margin: 5px 0; color: var(--muted); font-size: 14px; }
.sede-row span { flex: none; }
.sede-row a, .prose a.sede-row { color: inherit; }
.sede-map, .prose a.sede-map { display: inline-block; margin-top: 10px; color: var(--accent); font-weight: 700; text-decoration: none; }

/* ============ veicoli ============ */
.widget.veicoli-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 18px; }
.veic-card { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--bg); }
.veic-img { aspect-ratio: 16/9; background: var(--panel-2, #eef); display: grid; place-items: center; overflow: hidden; }
.veic-img img { width: 100%; height: 100%; object-fit: cover; }
.veic-noimg { font-size: 40px; }
.veic-body { padding: 14px 16px; }
.veic-brand { font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.veic-body h3 { margin: 2px 0 6px; font-size: 16px; }
.veic-specs { color: var(--muted); font-size: 14px; margin: 0 0 8px; }
.veic-price { font-weight: 800; color: var(--accent); font-size: 18px; }

/* ============ libri ============ */
.widget.libri-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 20px; }
.libro-card, .prose a.libro-card { display: block; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--bg); text-decoration: none; color: var(--ink); transition: border-color .15s, box-shadow .15s; }
.libro-card:hover, .prose a.libro-card:hover { border-color: var(--accent); box-shadow: 0 8px 22px -8px color-mix(in srgb, var(--accent) 40%, transparent); text-decoration: none; }
.libro-cover { aspect-ratio: 1/1; background: var(--panel-2, #eef); display: grid; place-items: center; overflow: hidden; }
.libro-cover img { width: 100%; height: 100%; object-fit: cover; }
.libro-noimg { font-size: 44px; }
.libro-body { padding: 14px 16px; }
.libro-body h3 { margin: 0 0 4px; font-size: 16px; }
.libro-author { color: var(--accent); font-size: 14px; margin: 0 0 6px; }
.libro-desc { color: var(--muted); font-size: 14px; margin: 0; }

/* ============ prezziario ============ */
.widget.prezziario-table { overflow-x: auto; }
.widget.prezziario-table table { width: 100%; border-collapse: collapse; }
.widget.prezziario-table th, .widget.prezziario-table td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--line); }
.widget.prezziario-table thead th { background: color-mix(in srgb, var(--ink) 5%, transparent); font-size: 13px; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
.widget.prezziario-table tbody th { font-weight: 600; }
.widget.prezziario-table .pz-price { font-weight: 700; color: var(--accent); white-space: nowrap; }

/* ============ vini ============ */
.widget.vini-list { max-width: 760px; margin-inline: auto; display: flex; flex-direction: column; gap: 26px; }
.vino-kind { margin: 0 0 12px; font-size: 15px; text-transform: uppercase; letter-spacing: .05em; color: var(--accent); border-bottom: 2px solid var(--line); padding-bottom: 6px; }
.vino-item { padding: 8px 0; }
.vino-head { display: flex; align-items: baseline; gap: 10px; }
.vino-name { font-weight: 700; }
.vino-price { margin-left: auto; color: var(--accent); font-weight: 700; white-space: nowrap; }
.vino-meta { color: var(--muted); font-size: 14px; }

/* ============ valori ============ */
.widget.valori-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 18px; }
.valore-card { border: 1px solid var(--line); border-radius: 12px; padding: 22px; text-align: center; background: var(--bg); }
.valore-ico { font-size: 34px; margin-bottom: 10px; }
.valore-card h3 { margin: 0 0 6px; }
.valore-card p { margin: 0; color: var(--muted); font-size: 14px; }

/* ============ coupon ============ */
.widget.coupon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.coupon-card { display: flex; border: 2px dashed var(--accent); border-radius: 12px; overflow: hidden; background: var(--bg); }
.coupon-disc { display: grid; place-items: center; padding: 0 18px; background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); font-weight: 800; font-size: 20px; white-space: nowrap; }
.coupon-body { padding: 14px 16px; flex: 1; }
.coupon-sum { margin: 0 0 8px; font-size: 14px; }
.coupon-code { display: inline-flex; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-2, #f0f2f5); padding: 6px 10px; font-family: monospace; font-weight: 700; cursor: pointer; }
.coupon-code em { font-style: normal; font-family: -apple-system, system-ui, sans-serif; font-size: 12px; color: var(--accent); }
.coupon-exp { margin-top: 8px; font-size: 12px; color: var(--muted); }

/* ============ turni / orarimezzi (tabelle) ============ */
.widget.turni-table, .widget.orarimezzi-table { overflow-x: auto; }
.widget.turni-table table, .widget.orarimezzi-table table { width: 100%; border-collapse: collapse; }
.widget.turni-table th, .widget.turni-table td, .widget.orarimezzi-table th, .widget.orarimezzi-table td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--line); }
.widget.turni-table thead th, .widget.orarimezzi-table thead th { background: color-mix(in srgb, var(--ink) 5%, transparent); font-size: 13px; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
.widget.turni-table tbody th, .widget.orarimezzi-table tbody th { font-weight: 700; color: var(--accent); }

/* ============ fedelta ============ */
.widget.fedelta-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; align-items: start; }
.fedelta-card { border: 1px solid var(--line); border-radius: 14px; padding: 22px; background: var(--bg); }
.fedelta-card.fedelta-top { border-color: var(--accent); box-shadow: 0 10px 30px -12px color-mix(in srgb, var(--accent) 45%, transparent); }
.fedelta-card h3 { margin: 0 0 4px; }
.fedelta-points { color: var(--accent); font-weight: 700; margin-bottom: 12px; }
.fedelta-benefits { margin: 0; padding-left: 18px; color: var(--muted); font-size: 14px; }
.fedelta-benefits li { margin: 4px 0; }

/* ============ convertitore ============ */
.widget.convertitore { border: 1px solid var(--line); border-radius: 14px; padding: 20px; background: var(--bg); max-width: 560px; }
.conv-title { margin: 0 0 14px; }
.conv-cat { margin-bottom: 12px; }
.conv-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.conv-val, .conv-unit, .conv-cat { padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); color: var(--ink); }
.conv-val { width: 90px; }
.conv-eq { font-weight: 700; }
.conv-out { min-width: 90px; font-weight: 800; color: var(--accent); }

/* ============ imc ============ */
.widget.imc { border: 1px solid var(--line); border-radius: 14px; padding: 20px; background: var(--bg); max-width: 520px; }
.imc-title { margin: 0 0 14px; }
.imc-controls { display: flex; gap: 14px; flex-wrap: wrap; }
.imc-field { display: flex; flex-direction: column; gap: 4px; font-size: 14px; color: var(--muted); }
.imc-field input { padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); color: var(--ink); width: 130px; }
.imc-result { margin-top: 16px; display: flex; align-items: center; gap: 12px; }
.imc-result:empty { display: none; }
.imc-val { font-size: 30px; font-weight: 800; }
.imc-cat { padding: 4px 12px; border-radius: 20px; font-weight: 700; font-size: 14px; }
.imc-lo { background: color-mix(in srgb, #0284c7 15%, transparent); color: #0284c7; }
.imc-ok { background: color-mix(in srgb, #16a34a 15%, transparent); color: #16a34a; }
.imc-wa { background: color-mix(in srgb, #d97706 15%, transparent); color: #b45309; }
.imc-hi { background: color-mix(in srgb, #dc2626 15%, transparent); color: #dc2626; }

/* ============ orologio ============ */
.widget.orologio { text-align: center; }
.clock-title { margin: 0 0 14px; }
.clock-grid { display: flex; flex-wrap: wrap; gap: 16px; justify-content: center; }
.clock-card { border: 1px solid var(--line); border-radius: 14px; padding: 18px 26px; background: var(--bg); min-width: 150px; }
.clock-time { display: block; font-size: 28px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--accent); }
.clock-city { display: block; margin-top: 4px; color: var(--muted); font-size: 14px; }

/* ============ menugiorno ============ */
.widget.menugiorno-card { border: 1px solid var(--accent); border-radius: 16px; padding: 24px; background: color-mix(in srgb, var(--accent) 6%, transparent); max-width: 560px; }
.mg-label { text-transform: uppercase; letter-spacing: .05em; font-size: 13px; font-weight: 700; color: var(--accent); }
.mg-dish { margin: 8px 0 6px; font-size: 24px; }
.mg-sum { margin: 0 0 10px; color: var(--muted); }
.mg-price { font-weight: 800; font-size: 20px; }

/* ============ menu settimanale ============ */
.widget.weekmenu { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 18px; }
.ws-day { border: 1px solid var(--line); border-radius: 12px; padding: 16px; background: var(--bg); }
.ws-dayname { margin: 0 0 10px; font-size: 16px; color: var(--accent); border-bottom: 2px solid var(--line); padding-bottom: 6px; }
.ws-list { list-style: none; margin: 0; padding: 0; }
.ws-list li { padding: 6px 0; border-bottom: 1px solid var(--line); }
.ws-list li:last-child { border-bottom: 0; }
.ws-meal { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }

/* ============ albo ============ */
.widget.albo-list { display: flex; flex-direction: column; gap: 14px; }
.albo-item { border: 1px solid var(--line); border-left: 4px solid var(--accent); border-radius: 10px; padding: 16px 18px; background: var(--bg); }
.albo-meta { display: flex; gap: 10px; align-items: center; margin-bottom: 4px; }
.albo-date { color: var(--muted); font-size: 13px; }
.albo-cat { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, transparent); padding: 2px 8px; border-radius: 6px; }
.albo-title { margin: 0 0 6px; font-size: 17px; }
.albo-body { color: var(--muted); font-size: 14px; }

/* ============ buoni regalo ============ */
.widget.buoniregalo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 18px; }
.gift-card { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; text-align: center; background: var(--bg); padding-bottom: 16px; }
.gift-img img { width: 100%; height: 130px; object-fit: cover; display: block; }
.gift-badge { font-size: 44px; padding: 24px 0 10px; }
.gift-amount { font-size: 26px; font-weight: 800; color: var(--accent); margin-top: 12px; }
.gift-sum { margin: 6px 16px 0; color: var(--muted); font-size: 14px; }

/* ============ espositori ============ */
.widget.espositori-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.esp-card, .prose a.esp-card { display: flex; gap: 14px; border: 1px solid var(--line); border-radius: 12px; padding: 14px; background: var(--bg); text-decoration: none; color: var(--ink); align-items: flex-start; }
.esp-card:hover, .prose a.esp-card:hover { border-color: var(--accent); text-decoration: none; color: var(--ink); }
.esp-logo { width: 56px; height: 56px; flex: none; border-radius: 10px; overflow: hidden; display: grid; place-items: center; background: var(--panel-2, #eef); }
.esp-logo img { width: 100%; height: 100%; object-fit: contain; }
.esp-mono { font-size: 24px; font-weight: 800; color: var(--accent); }
.esp-stand { font-size: 12px; color: var(--accent); font-weight: 700; }
.esp-body h3 { margin: 2px 0 2px; font-size: 16px; }
.esp-cat { font-size: 13px; color: var(--muted); }
.esp-sum { margin: 6px 0 0; font-size: 14px; color: var(--muted); }

/* ============ destinazioni ============ */
.widget.destinazioni-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 18px; }
.dest-card, .prose a.dest-card { display: block; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--bg); text-decoration: none; color: var(--ink); transition: box-shadow .15s, border-color .15s; }
.dest-card:hover, .prose a.dest-card:hover { border-color: var(--accent); box-shadow: 0 10px 26px -10px color-mix(in srgb, var(--accent) 40%, transparent); text-decoration: none; color: var(--ink); }
.dest-img { position: relative; aspect-ratio: 16/9; background: var(--panel-2, #eef); display: grid; place-items: center; overflow: hidden; }
.dest-img img { width: 100%; height: 100%; object-fit: cover; }
.dest-noimg { font-size: 40px; }
.dest-price { position: absolute; bottom: 10px; right: 10px; background: var(--accent); color: #fff; font-weight: 700; font-size: 13px; padding: 4px 10px; border-radius: 20px; }
.dest-body { padding: 14px 16px; }
.dest-body h3 { margin: 0 0 6px; }
.dest-sum { margin: 0; color: var(--muted); font-size: 14px; }
