/* Composições editoriais e interações para desktop, tablet e celular. */
.fr-carousel { position:relative; }
.fr-carousel .home-procedure-grid {
  display:flex; gap:26px; overflow-x:auto; scroll-snap-type:x mandatory;
  scrollbar-width:none; padding:8px 4px 26px; overscroll-behavior-x:contain;
}
.fr-carousel .home-procedure-grid::-webkit-scrollbar { display:none; }
.fr-carousel .home-procedure-card {
  flex:0 0 calc((100% - 26px)/2); display:grid;
  grid-template-columns:minmax(250px,1.08fr) minmax(220px,.92fr);
  grid-template-rows:auto auto 1fr; min-width:0; min-height:360px; padding:0;
  scroll-snap-align:start; overflow:hidden; border-radius:24px;
}
.fr-carousel .home-procedure-card > a { display:contents; color:inherit; text-decoration:none; }
.fr-carousel .home-procedure-card .procedure-reference-image {
  grid-column:1; grid-row:1 / 4; width:100%; height:100%; min-height:360px;
  margin:0; border-radius:0; background:#f5ece4;
}
.fr-carousel .home-procedure-card > a > span {
  grid-column:2; grid-row:1; align-self:end; margin:34px 34px 0;
  color:var(--rose); font:18px Georgia,serif;
}
.fr-carousel .home-procedure-card h3 {
  grid-column:2; grid-row:2; margin:13px 34px 14px;
  font-size:clamp(1.65rem,2.1vw,2.35rem); line-height:1.02;
}
.fr-carousel .home-procedure-card p {
  grid-column:2; grid-row:3; min-height:0; margin:0 34px 34px; align-self:start;
  color:#725f5a; font-size:13px; line-height:1.65;
}
.fr-carousel .home-procedure-card:nth-child(even) { background:#f3e5e0; }
.fr-carousel .home-procedure-card:nth-child(even) .procedure-reference-image { grid-column:2; }
.fr-carousel .home-procedure-card:nth-child(even) > a > span,
.fr-carousel .home-procedure-card:nth-child(even) h3,
.fr-carousel .home-procedure-card:nth-child(even) p { grid-column:1; }
.fr-carousel .home-procedure-card:focus-within { outline:3px solid var(--wine); outline-offset:3px; }
.fr-carousel-controls { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:8px; }
.fr-carousel-controls .fr-counter { font-size:13px; letter-spacing:.13em; color:var(--wine); font-variant-numeric:tabular-nums; }
.fr-carousel-actions { display:flex; align-items:center; gap:8px; }
.fr-icon-button { display:inline-flex; align-items:center; justify-content:center; border:1px solid #c8aaa2; background:transparent; color:var(--wine); min-width:44px; height:44px; border-radius:50%; cursor:pointer; font:20px Arial,sans-serif; transition:background .2s,transform .2s; }
.fr-icon-button:hover { background:#f1e1db; transform:translateY(-2px); }
.fr-icon-button:focus-visible,.fr-text-button:focus-visible,.fr-result-button:focus-visible { outline:3px solid #a46b61; outline-offset:3px; }
.fr-text-button { border:0; background:transparent; color:var(--wine); padding:12px; cursor:pointer; font:14px Arial,sans-serif; text-decoration:underline; text-underline-offset:4px; }

/* Catálogo: cards horizontais no desktop, mosaico no tablet e coluna no celular. */
.procedures.section,.home-procedures.section,.results-page.section { max-width:1440px; }
.procedures .procedure-group { grid-template-columns:minmax(190px,.3fr) minmax(0,1.7fr); gap:46px; }
.procedures .group-title { position:sticky; top:112px; align-self:start; }
.procedures .group-grid { gap:18px; }
.procedures .group-grid article {
  display:grid; grid-template-columns:minmax(200px,.92fr) minmax(220px,1.08fr);
  grid-template-rows:auto 1fr auto; min-height:285px; padding:0; overflow:hidden; border-radius:22px;
}
.procedures .group-grid article > .procedure-reference-image {
  grid-column:1; grid-row:1 / 4; width:100%; height:100%; margin:0; border-radius:0; background:#f7eee7;
}
.procedures .group-grid h3 { grid-column:2; grid-row:1; margin:34px 28px 12px; font-size:clamp(1.55rem,1.8vw,2rem); line-height:1.04; }
.procedures .group-grid p { grid-column:2; grid-row:2; margin:0 28px; }
.procedures .group-grid a { grid-column:2; grid-row:3; margin:20px 28px 30px; align-self:end; }

/* Resultados: cada caso ocupa a largura e alterna imagem e texto. */
.fr-result-toolbar { display:flex; justify-content:space-between; align-items:end; flex-wrap:wrap; gap:20px; margin-bottom:24px; }
.fr-result-toolbar label { display:grid; gap:8px; color:var(--wine); font-size:14px; }
.fr-result-toolbar select { max-width:100%; min-width:min(360px,100%); border:1px solid #cbb5ad; border-radius:12px; background:#fffdfa; color:#433533; padding:15px 42px 15px 16px; font:16px Arial,sans-serif; }
.fr-result-count { font-size:14px; color:#705b55; margin:0 0 14px; }
.fr-demo-notice { display:flex; align-items:center; gap:14px; border:1px solid #cbb7a2; border-radius:14px; padding:18px 22px; background:#f5eddf; color:#665137; font:14px/1.6 Arial,sans-serif; margin-bottom:54px; }
.fr-demo-notice strong { display:block; }
.fr-demo-notice[hidden], [hidden] { display:none !important; }
.fr-gallery { display:block; }
.fr-case {
  display:grid; grid-template-columns:minmax(0,1.58fr) minmax(300px,.72fr);
  align-items:center; gap:0; margin:0 0 72px; background:#fffdfa;
  border:1px solid #e2d4cb; border-radius:28px; overflow:hidden;
  animation:fr-appear .55s ease both; box-shadow:0 20px 60px #4b30270b;
}
.fr-case:nth-child(even) { grid-template-columns:minmax(300px,.72fr) minmax(0,1.58fr); }
.fr-case:nth-child(even) .fr-comparator { grid-column:2; }
.fr-case:nth-child(even) .fr-case-copy { grid-column:1; grid-row:1; }
.fr-comparator { --split:50%; position:relative; aspect-ratio:4/3; isolation:isolate; overflow:hidden; background:#e9e0d5; }
.fr-comparator img { display:block; position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.fr-comparator .fr-before { clip-path:inset(0 calc(100% - var(--split)) 0 0); z-index:1; }
.fr-comparator .fr-demo-stamp { position:absolute; z-index:3; bottom:20px; left:50%; transform:translateX(-50%); pointer-events:none; color:white; background:#4d3b30c7; padding:8px 12px; border-radius:999px; font:10px/1.3 Arial,sans-serif; text-transform:uppercase; letter-spacing:.08em; width:max-content; max-width:90%; text-align:center; }
.fr-compare-tag { position:absolute; z-index:3; top:18px; padding:8px 12px; border-radius:20px; color:#493630; background:#fffdf1e8; pointer-events:none; font:12px Arial,sans-serif; }
.fr-compare-tag.before { left:18px; }
.fr-compare-tag.after { right:18px; }
.fr-divider { position:absolute; z-index:3; left:var(--split); top:0; bottom:0; width:2px; background:#fff; transform:translateX(-50%); pointer-events:none; box-shadow:0 0 15px #0003; }
.fr-divider::after { content:'↔'; display:grid; place-items:center; position:absolute; width:48px; height:48px; background:#fff; color:var(--wine); border-radius:50%; left:50%; top:50%; transform:translate(-50%,-50%); font:22px Arial,sans-serif; box-shadow:0 4px 20px #0003; }
.fr-range { position:absolute; z-index:4; inset:0; width:100%; height:100%; opacity:0; margin:0; cursor:ew-resize; touch-action:pan-y; }
.fr-comparator:focus-within { outline:3px solid var(--wine); outline-offset:-4px; }
.fr-case-copy { padding:clamp(32px,4vw,58px); }
.fr-case-copy .fr-case-kind { font:11px Arial,sans-serif; text-transform:uppercase; letter-spacing:.12em; color:#865c51; margin-bottom:15px; }
.fr-case-copy h2,.fr-case-copy h3 { font:clamp(2rem,3vw,3.25rem)/1.02 Georgia,serif; color:var(--wine); margin:0 0 18px; }
.fr-case-copy p { color:#735f57; font:14px/1.7 Arial,sans-serif; margin:0 0 25px; }
.fr-case-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.fr-result-button { background:#fffdfa; border:1px solid #d8c3bb; color:var(--wine); border-radius:30px; padding:11px 15px; cursor:pointer; font:13px Arial,sans-serif; transition:background .2s; }
.fr-result-button:hover { background:#f3e5df; }
.fr-result-button:disabled { cursor:wait; opacity:.65; }
.fr-result-button.primary { background:var(--wine); border-color:var(--wine); color:white; }
.fr-results-footer { text-align:center; margin-top:35px; }
.fr-empty { padding:50px 20px; border:1px dashed #cab1a8; border-radius:16px; text-align:center; color:#735f57; }
.fr-empty button { margin:16px auto 0; }
.fr-modal { border:0; border-radius:20px; padding:0; width:min(940px,94vw); max-height:94dvh; background:#fffaf5; color:var(--wine); box-shadow:0 30px 120px #0005; }
.fr-modal::backdrop { background:#261514b8; backdrop-filter:blur(5px); }
.fr-modal-head { display:flex; align-items:center; justify-content:space-between; padding:16px 22px; gap:12px; border-bottom:1px solid #e9d7ca; }
.fr-modal-head h2 { font:26px Georgia,serif; margin:0; }
.fr-modal-body { max-width:660px; margin:auto; padding:20px; }
.fr-modal-body .fr-comparator { max-height:64dvh; aspect-ratio:3/4; border-radius:12px; }
.fr-modal-body p { font:14px/1.6 Arial,sans-serif; }
@keyframes fr-appear { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:translateY(0); } }

/* Tablet: largura intermediária, duas colunas e áreas de toque maiores. */
@media (min-width:700px) and (max-width:1199px) {
  .fr-carousel .home-procedure-card { flex-basis:78%; grid-template-columns:minmax(260px,.9fr) minmax(260px,1.1fr); min-height:340px; }
  .fr-carousel .home-procedure-card .procedure-reference-image { min-height:340px; }
  .procedures .procedure-group { grid-template-columns:1fr; gap:30px; }
  .procedures .group-title { position:static; max-width:520px; }
  .procedures .group-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
  .procedures .group-grid article { display:block; min-height:0; }
  .procedures .group-grid article > .procedure-reference-image { width:100%; height:auto; aspect-ratio:4/3; }
  .procedures .group-grid h3 { margin:26px 24px 12px; }
  .procedures .group-grid p { margin:0 24px; }
  .procedures .group-grid a { margin:20px 24px 28px; }
  .fr-gallery { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
  .fr-case,.fr-case:nth-child(even) { display:block; margin:0; border-radius:22px; }
  .fr-case:nth-child(even) .fr-comparator,.fr-case:nth-child(even) .fr-case-copy { grid-column:auto; grid-row:auto; }
  .fr-comparator { aspect-ratio:4/3; }
  .fr-case-copy { padding:28px; }
  .fr-case-copy h2,.fr-case-copy h3 { font-size:2rem; }
}

/* Celular: uma coluna, sem cortes estreitos e com rolagem natural. */
@media (max-width:699px) {
  .fr-carousel .home-procedure-card,.fr-carousel .home-procedure-card:nth-child(even) { flex-basis:88%; display:block; min-height:0; border-radius:20px; }
  .fr-carousel .home-procedure-card .procedure-reference-image,.fr-carousel .home-procedure-card:nth-child(even) .procedure-reference-image { width:100%; height:auto; min-height:0; aspect-ratio:4/3; }
  .fr-carousel .home-procedure-card > a > span,.fr-carousel .home-procedure-card:nth-child(even) > a > span { display:block; margin:24px 22px 0; }
  .fr-carousel .home-procedure-card h3,.fr-carousel .home-procedure-card:nth-child(even) h3 { margin:11px 22px 12px; font-size:1.9rem; }
  .fr-carousel .home-procedure-card p,.fr-carousel .home-procedure-card:nth-child(even) p { margin:0 22px 26px; }
  .fr-carousel-controls { gap:8px; }
  .fr-text-button { padding:10px 6px; font-size:13px; }
  .procedures .procedure-group { grid-template-columns:1fr; gap:26px; padding:44px 0; }
  .procedures .group-title { position:static; }
  .procedures .group-grid { grid-template-columns:1fr; }
  .procedures .group-grid article { display:block; min-height:0; border-radius:20px; }
  .procedures .group-grid article > .procedure-reference-image { width:100%; height:auto; aspect-ratio:4/3; }
  .procedures .group-grid h3 { margin:25px 22px 12px; font-size:1.75rem; }
  .procedures .group-grid p { margin:0 22px; }
  .procedures .group-grid a { margin:20px 22px 26px; }
  .fr-result-toolbar { align-items:stretch; }
  .fr-result-toolbar label,.fr-result-toolbar select { width:100%; }
  .fr-demo-notice { padding:15px; margin-bottom:28px; }
  .fr-gallery { display:grid; grid-template-columns:1fr; gap:24px; }
  .fr-case,.fr-case:nth-child(even) { display:block; margin:0; border-radius:20px; }
  .fr-case:nth-child(even) .fr-comparator,.fr-case:nth-child(even) .fr-case-copy { grid-column:auto; grid-row:auto; }
  .fr-comparator { aspect-ratio:4/3; max-height:none; }
  .fr-case-copy { padding:24px 22px 26px; }
  .fr-case-copy h2,.fr-case-copy h3 { font-size:2rem; }
  .fr-comparator .fr-demo-stamp { bottom:14px; font-size:9px; }
}
@media(prefers-reduced-motion:reduce) { .fr-case { animation:none; } .fr-carousel *,.fr-result-button { scroll-behavior:auto !important; transition:none !important; } }
/* Ajustes finais de composição: imagens individuais sem a lâmina de referência e título mais legível. */
@media (min-width:1200px) {
  .intro.section { grid-template-columns:minmax(560px,1.12fr) minmax(430px,.88fr); gap:clamp(72px,8vw,138px); }
  .intro.section h2 { max-width:11.5ch; font-size:clamp(3rem,3.45vw,3.9rem); line-height:1.04; }
}
.procedure-reference-image { object-fit:cover; object-position:center; }
.fr-carousel .home-procedure-card .procedure-reference-image,
.procedures .group-grid article > .procedure-reference-image { display:block; }
