/* Linguaggio grafico condiviso di GraficaeFoto. Testi, tag e asset originali. */
.gf-site {
    --gf-space-xs: .5rem;
    --gf-space-sm: 1rem;
    --gf-space-md: 1.5rem;
    --gf-space-lg: 2rem;
    --gf-space-xl: 3rem;
    --gf-section-space: clamp(3rem, 6vw, 6rem);
    --gf-link: var(--color-primary);
    --gf-radius: 16px;
    --gf-font-body: 1.0625rem;
    --gf-font-lead: 1.125rem;
    --gf-font-card-title: 1.25rem;
    --gf-font-step-marker: 1.5rem;
    --gf-font-control: 1rem;
}
.gf-main, .gf-main * { box-sizing: border-box; }
.gf-main :where(div, article, aside, figure) { min-width: 0; }
.gf-main .container { max-width: 1200px; }
.gf-main h1, .gf-main h2, .gf-main h3 {
    text-wrap: balance;
    letter-spacing: -.03em;
    text-align: left !important;
}
.gf-main h1 { font-size: clamp(2rem, 4.3vw, 3.8rem) !important; line-height: 1.15 !important; max-width: 24ch; }
.gf-main h2 { font-size: clamp(1.75rem, 2.6vw, 2.5rem) !important; line-height: 1.25 !important; }
.gf-main h3 { font-size: clamp(1.25rem, 1.6vw, 1.5rem) !important; line-height: 1.4 !important; }
.gf-main p {
    font-size: var(--gf-font-body);
    line-height: 1.8;
    hyphens: none;
    text-wrap: pretty;
}
.gf-main .gf-section { padding-block: var(--gf-section-space) !important; scroll-margin-top: 8rem; }
.gf-main .page-header-banner { padding: 9rem 0 4.5rem !important; text-align: left; }
.gf-main .page-header-banner .container { max-width: 1200px !important; }
.gf-main .page-header-banner h1 { margin: 0 0 var(--gf-space-md) !important; }
.gf-main .page-header-banner .lead-text { max-width: 70ch !important; margin: 0 0 var(--gf-space-lg) !important; font-size: var(--gf-font-lead) !important; line-height: 1.75; }
.gf-main .page-header-banner .lead-text:last-child { margin-bottom: 0 !important; }
.gf-main .breadcrumbs { font-size: max(.875rem, 14px); letter-spacing: 0; text-transform: none; margin-bottom: var(--gf-space-md); }
.gf-main .section-header { text-align: left !important; max-width: none; margin: 0 0 var(--gf-space-xl) !important; }
.gf-main .section-header h2 { max-width: 30ch; margin: var(--gf-space-sm) 0 0 !important; }
.gf-main .section-pre-title { font-family: var(--font-body); font-size: max(.9375rem, 14px); letter-spacing: 0; text-transform: none; }
.gf-main .section-light .section-pre-title { color: var(--gf-link) !important; }
.gf-main .section-light a:not(:where(.btn, .portfolio-card, .blog-card-horizontal)) { color: var(--gf-link); }
.gf-main p a:not(.btn), .gf-main li a:not(.btn), .gf-main a.gf-prose-link { text-decoration: none !important; font-weight: 600; }
.gf-main .section-dark a:not(.btn) { color: var(--color-primary); }
.gf-main .section-light a[style*="color: var(--color-primary)"]:not(.btn),
.gf-main .section-light span[style*="color: var(--color-primary)"] { color: var(--gf-link) !important; }
.gf-main a:focus-visible, .gf-main button:focus-visible, .gf-main input:focus-visible,
.gf-main textarea:focus-visible, .gf-main select:focus-visible {
    outline: 3px solid var(--color-primary); outline-offset: 4px;
}
.gf-main .btn { white-space: normal; line-height: 1.5; text-align: center; max-width: 100%; box-shadow: none !important; }
.gf-main .animate-on-scroll { opacity: 1 !important; transform: none !important; }

/* Servizi: titoli laterali e prosa, con moduli distinti dagli archivi. */
.gf-service .gf-service-intro { display: block !important; }
.gf-prose-layout {
    display: grid !important;
    grid-template-columns: minmax(0, .8fr) minmax(0, 1.4fr);
    column-gap: clamp(2rem, 5vw, 4rem);
    max-width: 1200px !important;
}
.gf-prose-layout > .gf-prose-kicker { grid-column: 1 / -1; grid-row: 1; margin-bottom: var(--gf-space-sm); }
.gf-prose-layout > .gf-prose-title {
    grid-column: 1; grid-row: var(--gf-heading-start, 1) / span var(--gf-heading-rows, 1);
    max-width: 23ch; margin: 0 !important;
}
.gf-prose-layout > .gf-prose-paragraph { grid-column: 2; max-width: 70ch; margin: 0 0 var(--gf-space-md) !important; font-size: var(--gf-font-body) !important; line-height: 1.8 !important; }
.gf-prose-layout > .gf-prose-first { grid-row: var(--gf-heading-start, 1); }
.gf-prose-layout > .gf-prose-following { grid-column: 1 / -1; }
.gf-prose-layout > h3.gf-prose-following { margin: var(--gf-space-xl) 0 var(--gf-space-md) !important; }
.gf-service .features-cards-container { margin-block: var(--gf-space-md) var(--gf-space-xl) !important; gap: 0; }
.gf-service .feature-item-card {
    padding: var(--gf-space-md) 0; margin: 0; gap: var(--gf-space-md);
    border: 0; border-bottom: 1px solid var(--color-border-light);
    border-radius: 0; box-shadow: none; background: transparent; align-items: flex-start;
}
.gf-service .feature-item-card:last-child { border-bottom: 0; }
.gf-service .feature-item-card:hover { transform: none; box-shadow: none; background: transparent; }
.gf-service .feature-item-icon { width: 48px; height: 48px; border-radius: 12px; background: var(--bg-sand-light); }
.gf-service .feature-item-content h4 { margin-bottom: var(--gf-space-xs); }
.gf-service .feature-item-content p { max-width: 70ch; }
.gf-focus, .gf-main .contact-page-box {
    background: var(--bg-sand-light) !important; border: 1px solid var(--color-border-light);
    border-radius: var(--gf-radius); box-shadow: none !important; padding: var(--gf-space-lg) !important;
    color: var(--color-text-light-section);
}
.gf-focus h2, .gf-focus h3, .gf-main .contact-page-box h2, .gf-main .contact-page-box h3, .gf-main .contact-page-box label { color: var(--color-text-light-section) !important; }
.gf-focus p { color: var(--color-text-light-muted) !important; }
.gf-focus .badge-tech { background: transparent !important; color: var(--gf-link) !important; border: 0; padding: 0; font-family: var(--font-body); text-transform: none; letter-spacing: 0; }
.gf-service-intro > .gf-focus {
    display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr);
    column-gap: var(--gf-space-xl); position: static; margin-top: var(--gf-space-xl);
}
.gf-service-intro > .gf-focus > :not(.btn) { grid-column: 1; }
.gf-service-intro > .gf-focus > .btn { grid-column: 2; grid-row: 1 / span 4; align-self: center; }
.gf-service .web-intro, .gf-service .seo-case, .gf-service .web-case { gap: clamp(2rem, 5vw, 4rem); }
.gf-service .seo-copy:not(.gf-prose-layout), .gf-service .web-copy:not(.gf-prose-layout) { max-width: 1000px; }
.gf-service .seo-scope { gap: var(--gf-space-lg); }

/* FAQ: righe apribili con un bersaglio comodo, stessi bottoni e risposte. */
.gf-main .faq-list { gap: var(--gf-space-sm) !important; border: 0; }
.gf-main .faq-item { background: transparent !important; border: 1px solid var(--color-border-light) !important; border-radius: 12px !important; box-shadow: none !important; }
.gf-main .faq-item.active { background: #fff !important; }
.gf-main .faq-question-btn {
    padding: var(--gf-space-md) var(--gf-space-lg) !important; gap: var(--gf-space-md);
    min-height: 44px; font-size: var(--gf-font-lead) !important; line-height: 1.5; align-items: center;
}
.gf-main .faq-icon {
    flex: 0 0 32px; height: 32px; border: 1px solid var(--color-border-light);
    border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
    color: var(--gf-link) !important;
}
.gf-main .faq-answer { padding-inline: 0 !important; }
.gf-main .faq-answer p { max-width: 70ch; line-height: 1.8 !important; padding-bottom: var(--gf-space-md) !important; }

/* Home: foto e sezioni originali, con lo stesso asse e ritmo del nuovo layout. */
.gf-home .hero-content { align-items: flex-start !important; text-align: left !important; }
.gf-home .hero-container { gap: clamp(2rem, 5vw, 4rem); }
.gf-home .hero-section { padding: 9rem 0 4.5rem !important; }
.gf-home .hero-description { max-width: 60ch; line-height: 1.75; }
.gf-home .hero-actions { gap: var(--gf-space-sm); }
.gf-home .about-grid { gap: clamp(2rem, 5vw, 4rem); }
.gf-home .home-project .gf-project-layout {
    display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.4fr);
    gap: 0 clamp(2rem, 5vw, 4rem); max-width: 1200px;
}
.gf-project-layout > .section-header { grid-column: 1; grid-row: 1 / span 4; }
.gf-project-layout > :not(.section-header) { grid-column: 2; }
.gf-home .home-project p { max-width: 70ch; }
.gf-home .services-grid-2x2 { gap: var(--gf-space-lg); }
.gf-home .tech-service-card { padding: var(--gf-space-lg); border-radius: var(--gf-radius); box-shadow: none; }
.gf-home .services-section-footer { margin-top: var(--gf-space-xl) !important; padding: var(--gf-space-lg) !important; border-radius: var(--gf-radius) !important; }
.gf-home .gf-adaptive-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)) !important; }
.gf-home .method-grid { gap: var(--gf-space-lg) !important; }
.gf-home .gf-step-marker { position: static !important; opacity: 1 !important; color: var(--gf-link) !important; font-size: var(--gf-font-step-marker) !important; margin-bottom: var(--gf-space-sm); }
.gf-home article { box-shadow: none !important; }

/* Blog: leggibilità editoriale, archivi ordinati, sidebar subordinata. */
.gf-main .blog-layout-grid {
    display: grid; grid-template-columns: minmax(0, 1fr) 280px;
    gap: var(--gf-space-xl); padding-inline: 2rem !important;
}
.gf-main .blog-layout-grid .blog-layout-grid { padding-inline: 0 !important; }
.gf-main .blog-layout-grid > * { min-width: 0; }
.gf-article .gf-section { padding-top: 4.5rem !important; }
.gf-article h1 { font-size: clamp(2rem, 3.5vw, 3rem) !important; max-width: 26ch; }
.gf-article-copy { max-width: 72ch; }
.gf-article-copy p, .gf-article-copy li { font-size: var(--gf-font-body) !important; line-height: 1.8 !important; }
.gf-article-copy h2 { font-size: clamp(1.5rem, 2vw, 2rem) !important; margin-top: var(--gf-space-xl) !important; margin-bottom: var(--gf-space-md) !important; }
.gf-article-copy h3 { font-size: clamp(1.25rem, 1.5vw, 1.5rem) !important; margin-top: var(--gf-space-lg) !important; margin-bottom: var(--gf-space-sm) !important; }
.gf-article-copy .toc-container { padding: var(--gf-space-lg); box-shadow: none; border-radius: var(--gf-radius); }
.gf-article-copy .toc-container h3 { margin-top: 0 !important; }
.gf-main .blog-card-horizontal { border-radius: var(--gf-radius); box-shadow: none; }
.gf-main .blog-card-horizontal h2 { font-size: clamp(1.25rem, 2vw, 1.75rem) !important; }
.gf-main .blog-sidebar { gap: var(--gf-space-lg); }
.gf-main .blog-sidebar h3 { font-size: var(--gf-font-lead) !important; }
.gf-main .blog-sidebar > div { padding: var(--gf-space-md); box-shadow: none; }
.gf-main .article-contact-box { box-shadow: none; border-radius: var(--gf-radius); padding: var(--gf-space-lg); }
.gf-main .article-contact-box h2, .gf-main .article-contact-box h3 { color: var(--color-text-dark-section) !important; }
.gf-main .article-contact-box a:not(.btn) { color: var(--color-primary); }
.gf-main .table-responsive-wrapper { max-width: 100%; box-shadow: none; }
.gf-article-copy pre { max-width: 100%; white-space: pre-wrap; overflow-wrap: anywhere; background: var(--bg-carbon-dark); color: var(--color-text-dark-section); padding: var(--gf-space-md); border-radius: 12px; }
.gf-article-copy pre code { color: inherit; }
.gf-main .section-light .meta-category, .gf-main .section-light .toc-bullet-h2, .gf-main .section-light .toc-bullet-h3, .gf-main .section-light .toc-header span, .gf-portfolio .portfolio-card-badge { color: var(--gf-link) !important; }
.gf-main .section-light p[style*="color: var(--color-primary)"] { color: var(--gf-link) !important; }
.gf-main .section-light .article-contact-box span[style*="color: var(--color-primary)"], .gf-main .section-light .article-contact-box .badge-tech, .gf-main .section-light .article-contact-box a:not(.btn) { color: var(--color-primary) !important; }
.gf-main .categories-list .count { opacity: 1; }
.gf-main .sidebar-widget-dark a:not(.btn) { color: var(--color-primary); }

/* Casi studio e portfolio: prova visiva e narrazione su griglie flessibili. */
.gf-story-layout {
    display: grid !important; grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr);
    gap: clamp(2rem, 5vw, 4rem) !important; max-width: 1200px !important;
}
.gf-story-layout > div { min-width: 0 !important; }
.gf-story-copy p { text-align: left !important; max-width: 70ch; font-size: var(--gf-font-body) !important; line-height: 1.8 !important; }
.gf-story-copy h2 { margin-bottom: var(--gf-space-md) !important; }
.gf-story-media { gap: var(--gf-space-lg) !important; }
.gf-case-summary { border: 1px solid var(--color-border-light) !important; border-radius: var(--gf-radius) !important; }
.gf-case-summary div[style*="color: var(--color-primary)"] { color: var(--gf-link) !important; }
.gf-case .gf-section:last-child .container { text-align: left !important; }
.gf-main .portfolio-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--gf-space-lg); }
.gf-main .portfolio-card { border-radius: var(--gf-radius); box-shadow: none; }
.gf-main .portfolio-card-content { padding: var(--gf-space-lg); }
.gf-main .client-tag-link-icon { color: var(--gf-link); }
.gf-main .portfolio-card-title { font-size: var(--gf-font-card-title) !important; }
.gf-main .portfolio-card-desc { line-height: 1.75; }
.gf-main .portfolio-filters { flex-wrap: wrap; gap: var(--gf-space-xs); justify-content: flex-start; }
.gf-main .filter-btn { min-height: 44px; }
.gf-main .filter-btn.active { color: var(--bg-carbon-dark); }

/* Contatti e documenti: stessa tipografia, densità adeguata alla funzione. */
.gf-contact .hero-grid { width: 100%; max-width: 1200px !important; }
.gf-contact .hero-content { align-items: flex-start !important; text-align: left !important; max-width: 1200px !important; margin-inline: 0 !important; }
.gf-contact .hero-section { padding: 9rem 0 4.5rem !important; }
.gf-contact .hero-content p { max-width: 70ch; margin-inline: 0 !important; }
.gf-contact input:not([type="checkbox"]), .gf-contact textarea, .gf-contact select {
    font-size: var(--gf-font-control); min-height: 48px; border-radius: 12px;
}
.gf-contact input::placeholder, .gf-contact textarea::placeholder, .gf-main .article-contact-box input::placeholder, .gf-main .article-contact-box textarea::placeholder { color: var(--color-text-dark-muted); opacity: 1; }
.gf-contact label { line-height: 1.6; }
.gf-contact .form-group { margin-bottom: var(--gf-space-md); }
.gf-legal .container { max-width: 850px; }
.gf-legal h1 { font-size: clamp(2rem, 3.5vw, 3rem) !important; }
.gf-legal h2 { font-size: clamp(1.5rem, 2vw, 1.75rem) !important; margin-top: var(--gf-space-xl) !important; margin-bottom: var(--gf-space-sm) !important; }
.gf-legal p, .gf-legal li { max-width: 72ch; line-height: 1.8; }
.gf-error .animate-on-scroll { opacity: 1 !important; }
.gf-site .main-footer { padding-top: 4.5rem; }
.gf-site .main-footer p { font-size: max(.9375rem, 14px); line-height: 1.75; }

@media (max-width: 1000px) {
    .gf-main .blog-layout-grid { grid-template-columns: minmax(0, 1fr); }
    .gf-prose-layout { column-gap: var(--gf-space-lg); }
    .gf-story-layout { grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); }
}
@media (max-width: 768px) {
    .gf-main .container { padding-inline: var(--gf-space-sm) !important; }
    .gf-main h1 { font-size: clamp(2rem, 6vw, 2.75rem) !important; }
    .gf-main p { font-size: max(1rem, 16px); line-height: 1.75; }
    .gf-main .page-header-banner, .gf-home .hero-section { padding: 8rem 0 3rem !important; }
    .gf-main .page-header-banner .lead-text { font-size: max(1rem, 16px) !important; }
    .gf-prose-layout, .gf-home .home-project .gf-project-layout, .gf-story-layout { display: block !important; }
    .gf-prose-layout > .gf-prose-title { max-width: 32ch; margin-bottom: var(--gf-space-lg) !important; }
    .gf-prose-layout > .gf-prose-paragraph, .gf-article-copy p, .gf-article-copy li, .gf-story-copy p { text-align: left !important;
        font-size: max(1rem, 16px) !important; line-height: 1.75 !important;
    }
    .gf-service .feature-item-card { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: var(--gf-space-sm); }
    .gf-service .feature-item-content { display: contents; }
    .gf-service .feature-item-content h4 { grid-column: 2; margin: 0; }
    .gf-service .feature-item-content p { grid-column: 1 / -1; }
    .gf-focus, .gf-main .contact-page-box { padding: var(--gf-space-md) !important; }
    .gf-service-intro > .gf-focus { display: block; }
    .gf-focus .btn { width: 100%; margin-top: var(--gf-space-sm); }
    .gf-main .faq-question-btn { font-size: max(1rem, 16px) !important; }
    .gf-main .blog-layout-grid { padding-inline: var(--gf-space-sm) !important; gap: var(--gf-space-lg); }
    .gf-main .blog-card-horizontal .blog-card-content { padding: var(--gf-space-md); }
    .gf-main .blog-sidebar { margin-top: var(--gf-space-lg); }
    .gf-story-media { margin-top: var(--gf-space-lg); }
    .gf-main .portfolio-card-content { padding: var(--gf-space-md); }
    .gf-main .article-contact-box { padding: var(--gf-space-md); }
    .gf-home .tech-service-card { padding: var(--gf-space-md); }
    .gf-contact .hero-section { padding: 8rem 0 3rem !important; }
}
@media (prefers-reduced-motion: reduce) {
    .gf-site *, .gf-site *::before, .gf-site *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}


/* Rifiniture richieste: arancione ufficiale, FAQ ariose, CTA e prove fotografiche. */
.gf-main .section-light a:not(:where(.btn, .portfolio-card, .blog-card-horizontal)),
.gf-main .section-light .section-pre-title,
.gf-main .section-light span[style*="color: var(--color-primary)"],
.gf-main .section-light p[style*="color: var(--color-primary)"],
.gf-main .section-light a[style*="color: var(--color-primary)"]:not(.btn),
.gf-main .section-light .meta-category, .gf-main .section-light .toc-header span,
.gf-main .section-light .toc-bullet-h2, .gf-main .section-light .toc-bullet-h3,
.gf-portfolio .portfolio-card-badge, .gf-case-summary div[style*="color: var(--color-primary)"],
.gf-main .client-tag-link-icon { color: var(--color-text-light-section) !important; }
/* I link nella prosa hanno un accento di fondo, senza righe permanenti. */
.gf-main .section-light :is(p, li) a:not(.btn), .gf-main .section-light a.gf-prose-link {
    background: rgba(var(--color-primary-rgb), .16); border-radius: 4px;
    padding: .08em .2em; box-decoration-break: clone; -webkit-box-decoration-break: clone;
}
.gf-main .section-light :is(p, li) a:not(.btn):is(:hover, :focus-visible), .gf-main .section-light a.gf-prose-link:is(:hover, :focus-visible) {
    background: var(--color-primary); color: var(--bg-carbon-dark) !important;
}
.gf-main .section-light .article-contact-box :is(p, li) a:not(.btn), .gf-main .section-light .article-contact-box a.gf-prose-link { background: transparent; }
.gf-main .section-dark :is(p, li) a:not(.btn):is(:hover, :focus-visible),
.gf-main .article-contact-box :is(p, li) a:not(.btn):is(:hover, :focus-visible) { text-decoration: underline !important; text-underline-offset: .2em; }
.gf-main .section-light a:not(.btn):hover { text-decoration-color: var(--color-primary); }
.gf-main .section-light .meta-category, .gf-portfolio .portfolio-card-badge { background: var(--color-primary); }
.gf-home .gf-step-marker { color: var(--color-text-light-section) !important; }
.gf-service .gf-prose-layout { display: block !important; }
.gf-service .gf-prose-layout:not(.container) { max-width: none !important; margin-inline: 0 !important; }
.gf-service .gf-prose-layout.container { max-width: 1200px !important; margin-inline: auto !important; }
.gf-service .gf-prose-title { max-width: 38ch; margin-bottom: var(--gf-space-lg) !important; }
.gf-service .gf-prose-paragraph { max-width: 75ch; }
.gf-service .gf-prose-kicker { display: inline-block; margin-bottom: var(--gf-space-sm); }
.gf-service .gf-prose-following { margin-top: var(--gf-space-xl); }
.gf-service .gf-feature-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gf-space-lg); margin-block: var(--gf-space-lg) var(--gf-space-xl) !important; }
.gf-service .gf-feature-grid-four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gf-service .feature-item-card { display: flex; flex-direction: column; align-items: flex-start; gap: var(--gf-space-sm); padding: var(--gf-space-lg); border: 1px solid var(--color-border-light); border-radius: var(--gf-radius); background: #fff; }
.gf-service .feature-item-card:last-child { border-bottom: 1px solid var(--color-border-light); }
.gf-service .feature-item-card:hover { background: #fff; border-color: var(--color-primary); }
.gf-service .feature-item-content { display: block; }
.gf-service .feature-item-icon { background: var(--bg-carbon-dark); color: var(--color-primary); }
.gf-service .feature-item-content h4 { margin-bottom: var(--gf-space-sm); }
.gf-main .gf-focus, .gf-main .gf-cta-panel { background: var(--bg-carbon-dark) !important; border: 0; color: var(--color-text-dark-section); padding: var(--gf-space-lg) !important; border-radius: var(--gf-radius) !important; }
.gf-main .gf-focus h2, .gf-main .gf-focus h3, .gf-main .gf-cta-panel h2, .gf-main .gf-cta-panel h3 { color: var(--color-text-dark-section) !important; }
.gf-main .gf-focus p, .gf-main .gf-cta-panel p { color: var(--color-text-dark-muted) !important; }
.gf-main .section-light .gf-focus .badge-tech, .gf-main .section-light .gf-cta-panel .badge-tech { color: var(--color-primary) !important; background: transparent !important; }
.gf-main .faq-item.active .faq-answer { max-height: none !important; background: #fff; margin-bottom: 0; border-radius: 0; padding-inline: var(--gf-space-lg) !important; }
.gf-main .faq-item.active .faq-answer > div { padding-bottom: max(24px, var(--gf-space-lg)); }
.gf-main .faq-item.active .faq-answer p { padding-top: 0 !important; padding-bottom: 0 !important; margin: 0 !important; }
/* Segno geometrico centrato: il glifo originale resta nel documento. */
.gf-main .faq-icon {
    position: relative; width: 32px; padding: 0; font-size: 0 !important; line-height: 1;
    background: #fff; color: var(--color-text-light-section) !important;
    border: 0; box-shadow: inset 0 0 0 1px var(--color-border-light); transform: none; transition: none;
}
.gf-main .faq-icon::before, .gf-main .faq-icon::after {
    content: ''; position: absolute; top: 50%; left: 50%; width: 12px; height: 2px;
    background: var(--color-text-light-section); border-radius: 1px; transform: translate(-50%, -50%);
}
.gf-main .faq-icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.gf-main .faq-item.active .faq-icon::after { opacity: 0; }
.gf-photo-opening { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--gf-space-xl); align-items: center; }
.gf-photo-opening h1 { font-size: clamp(2rem, 3.5vw, 3.3rem) !important; }
.gf-photo-mosaic { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gf-space-sm); }
.gf-photo-mosaic img { display: block; width: 100%; height: 100%; object-fit: cover; aspect-ratio: 1; border-radius: 12px; }
.gf-photo-mosaic img:first-child { grid-column: 1 / -1; aspect-ratio: 2; }
.gf-photo-gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gf-space-md); margin-block: var(--gf-space-xl); }
.gf-photo-gallery img { display: block; width: 100%; height: 100%; aspect-ratio: 1.5; object-fit: contain; background: #fff; border-radius: 12px; }
.gf-photo-gallery img:first-child { grid-column: span 2; }
.gf-main .gf-case-index-row { display: grid !important; grid-template-columns: minmax(0, .9fr) minmax(0, 1.3fr); }
.gf-case-index-media { background: #fff; display: flex; align-items: center; padding: var(--gf-space-md); }
.gf-case-index-media img { display: block; width: 100%; height: auto; max-height: 360px; object-fit: contain; border-radius: 12px; }
.gf-main .gf-case-index-copy { min-width: 0 !important; padding: var(--gf-space-lg) !important; }
@media (max-width: 1000px) {
    .gf-service .gf-feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gf-photo-opening { grid-template-columns: minmax(0, 1fr); }
    .gf-photo-mosaic { max-width: 700px; }
}
@media (max-width: 768px) {
    .gf-service .gf-feature-grid { grid-template-columns: minmax(0, 1fr); gap: var(--gf-space-md); }
    .gf-service .feature-item-card { display: flex; padding: var(--gf-space-md); }
    .gf-main .gf-focus, .gf-main .gf-cta-panel { padding: var(--gf-space-md) !important; }
    .gf-main .faq-item.active .faq-answer { padding-inline: var(--gf-space-md) !important; }
    .gf-photo-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gf-space-sm); }
    .gf-main .gf-case-index-row { grid-template-columns: minmax(0, 1fr); }
    .gf-main .gf-case-index-copy { padding: var(--gf-space-md) !important; }
}

.gf-main .section-light .article-contact-box a:not(.btn) { color: var(--color-primary) !important; }
.gf-main .gf-case-index-copy .portfolio-card-badge {
    background: transparent !important; color: var(--color-text-light-muted) !important;
    border: 0 !important; border-radius: 0 !important; padding: 0 !important;
    font-family: var(--font-body); font-size: 14px; font-weight: 600; letter-spacing: .02em;
}
.gf-case-index-media img { height: 320px; max-height: none; object-fit: cover; object-position: top; }
@media (max-width: 768px) {
    .gf-main .faq-item.active .faq-answer { padding-inline: max(24px, var(--gf-space-md)) !important; }
    .gf-case-index-media img { height: 240px; }
}

/* Una famiglia per le icone di sezione: contorno 2px, accento ufficiale. */
.gf-main .gf-section-icon {
    display: flex !important; align-items: center; justify-content: center;
    width: 48px !important; height: 48px !important; flex: 0 0 48px;
    padding: 12px !important; border-radius: 12px !important;
    background: #fff !important; color: var(--color-primary) !important;
    border: 0; box-shadow: inset 0 0 0 1px var(--color-border-light);
}
.gf-main .gf-section-icon svg {
    display: block; width: 24px !important; height: 24px !important;
    stroke: var(--color-primary) !important; stroke-width: 2 !important;
    stroke-linecap: round; stroke-linejoin: round; fill: none;
}
.gf-main .feature-item-card:hover .gf-section-icon {
    background: #fff !important; color: var(--color-primary) !important;
    border: 0; box-shadow: inset 0 0 0 1px var(--color-border-light);
}
.gf-main .gf-heading-icon {
    width: 32px !important; height: 32px !important; flex-shrink: 0;
    padding: 4px; border-radius: 8px; background: #fff; border: 0; box-shadow: inset 0 0 0 1px var(--color-border-light);
    color: var(--color-primary) !important; stroke: currentColor !important;
    stroke-width: 2 !important; stroke-linecap: round; stroke-linejoin: round;
}
.gf-main .tech-icon-badge { color: var(--color-primary); }
.gf-main .tech-icon-badge svg { stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
@media (max-width: 768px) {
    .gf-main .faq-question-btn { padding-inline: max(24px, var(--gf-space-md)) !important; }
}

/* Annotazioni: richiami leggibili e blocchi di recensione distinti. */
.gf-case-index .gf-cta-panel h3 { text-align: center !important; }
.gf-main .gf-reviews { background-color: #eed8c3 !important; border: 0 !important; }
.gf-main .gf-reviews .container { text-align: center; }
.gf-main .gf-reviews h2 { text-align: center !important; margin-inline: auto; }
.gf-main .gf-reviews p { text-align: center; max-width: 70ch; margin-inline: auto; }
.gf-main .gf-reviews .btn-primary { background: var(--color-primary); border: 0; color: var(--bg-carbon-dark) !important; }
.gf-main .tech-icon-badge { background: #fff; color: var(--color-primary); border: 1px solid var(--color-border-light); }
.gf-main .gf-contact-icon { background: #fff; border-radius: 8px; }
@media (max-width: 768px) {
    .gf-main .faq-item.active .faq-answer > div { padding-bottom: max(24px, var(--gf-space-md)); }
}
.gf-service .gf-service-image {
    display: block; width: 240px; max-width: 100%; height: auto; aspect-ratio: 1;
    object-fit: cover; border-radius: var(--gf-radius); margin: 0 0 var(--gf-space-lg);
}
@media (min-width: 1024px) {
    .gf-service .gf-prose-illustrated { position: relative; }
    .gf-service .gf-prose-illustrated > :is(.gf-prose-title, .gf-prose-paragraph) {
        max-width: min(75ch, calc(100% - 288px)) !important; margin-left: 288px !important;
    }
    .gf-service .gf-prose-illustrated > .gf-prose-kicker { margin-left: 288px; }
    .gf-service .gf-prose-illustrated > .gf-prose-title { max-width: min(38ch, calc(100% - 288px)) !important; }
    .gf-service .gf-prose-illustrated > .gf-service-image {
        position: absolute; left: 0; top: var(--gf-space-xl); margin: 0;
    }
    .gf-service .gf-prose-illustrated.container > .gf-service-image { left: var(--gf-space-lg); }
}

.gf-main .tech-service-card .tech-icon-badge:hover {
    background: #fff; color: var(--color-primary); border-color: var(--color-border-light);
}

.gf-main .tech-icon-badge span { color: var(--color-text-light-section); }
