/* Componentes de privacidad y reclamaciones; estilos aislados de la landing. */
:root { --legal-yellow:#fbb900; --legal-dark:#363434; --legal-line:#e5e7eb; --legal-muted:#606571; }
[hidden] { display:none !important; }
.footer-cookie-link { border:0; background:none; color:inherit; cursor:pointer; padding:0; font:inherit; text-align:left; }
.footer-cookie-link:hover { text-decoration:underline; }
.footer-legal-links { flex-wrap:wrap; }
.legal-page :is(a,button,input,select,textarea,summary):focus-visible,
.cookie-banner :is(a,button):focus-visible,.consent-dialog :is(button,input,a):focus-visible {
  outline:3px solid #b78100; outline-offset:4px;
}
.legal-page { background:#f8f9fa; color:var(--legal-dark); }
.legal-header { background:#fff; border-bottom:1px solid var(--legal-line); }
.legal-header-inner { min-height:84px; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.legal-header img { display:block; width:164px; height:auto; }
.legal-back { display:inline-flex; gap:8px; align-items:center; font-size:.9rem; font-weight:600; }
.legal-back:hover { text-decoration:underline; text-underline-offset:4px; }
.legal-main { max-width:1000px; margin:0 auto; padding:48px 28px 72px; }
.legal-intro { margin-bottom:30px; max-width:740px; }
.legal-intro h1 { font-size:clamp(1.85rem,4.5vw,2.8rem); margin:10px 0 14px; line-height:1.15; }
.legal-intro p { font-size:1rem; line-height:1.7; }
.legal-company { margin:22px 0 0; padding:18px 22px; background:#fff; border:1px solid var(--legal-line); border-left:4px solid var(--legal-yellow); border-radius:12px; font-size:.9rem; }
.legal-company strong { display:block; font-size:1rem; margin-bottom:3px; }
.legal-company a,.privacy-copy a,.claims-check a,.claims-status a { color:#755200; text-decoration:underline; text-underline-offset:3px; overflow-wrap:anywhere; }
.claims-form { display:grid; gap:22px; }
.claims-section { min-width:0; margin:0; border:1px solid var(--legal-line); border-radius:18px; background:#fff; padding:26px; }
.claims-section legend { float:left; width:100%; margin-bottom:24px; display:flex; align-items:center; gap:12px; font-weight:700; font-size:1.12rem; line-height:1.35; }
.claims-section legend + * { clear:both; }
.claims-step { flex:0 0 34px; height:34px; display:inline-grid; place-items:center; border-radius:10px; background:#fff5d6; color:#725000; font-size:.9rem; }
.claims-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 24px; }
.claims-field { min-width:0; display:flex; flex-direction:column; gap:7px; }
.claims-field.full { grid-column:1/-1; }
.claims-field label { font-size:.88rem; font-weight:600; line-height:1.5; }
.claims-field input,.claims-field select,.claims-field textarea { width:100%; max-width:100%; min-width:0; min-height:48px; border:1px solid #cbd0d6; border-radius:9px; padding:11px 13px; background:#fff; color:#363434; font:inherit; font-size:.95rem; }
.claims-field input:focus,.claims-field select:focus,.claims-field textarea:focus { border-color:#a77500; }
.claims-field textarea { resize:vertical; min-height:126px; }
.claims-field input[readonly] { background:#f4f5f6; }
.claims-field [aria-invalid=true] { border-color:#b42318; }
.claims-field small,.claims-help { color:var(--legal-muted); font-size:.8rem; line-height:1.6; }
.field-error { color:#b42318; font-size:.8rem; }
.claims-explanation { padding:16px 18px; background:#f7f8fa; border-radius:10px; margin-top:20px; font-size:.83rem; line-height:1.7; }
.claims-explanation p + p { margin-top:7px; }
.claims-check { display:flex; align-items:flex-start; gap:11px; font-size:.9rem; line-height:1.65; cursor:pointer; }
.claims-check input { flex:0 0 19px; width:19px; height:19px; margin-top:4px; accent-color:#805b00; }
.claims-section .claims-check + p { margin-top:16px; font-size:.85rem; line-height:1.7; }
.claims-guardian { padding-top:22px; }
.claims-actions { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:16px; }
.claims-actions .btn { min-height:48px; }
.claims-actions p { max-width:560px; font-size:.83rem; }
.claims-status { margin-bottom:22px; padding:18px 20px; border:1px solid #e0c173; border-radius:12px; background:#fff9e9; font-size:.9rem; line-height:1.7; }
.claims-status.error { background:#fff2f0; border-color:#edb4ac; color:#84271d; }
.claims-status.success { background:#f0faf4; border-color:#a9d2b8; }
.claims-status:focus { outline:3px solid var(--legal-yellow); outline-offset:4px; }
.claims-honeypot { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.claims-submit[disabled] { opacity:.65; cursor:wait; }
.legal-footer { border-top:1px solid var(--legal-line); padding:28px 0; background:#fff; font-size:.83rem; }
.legal-footer-inner { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:18px; }
.legal-footer nav { display:flex; flex-wrap:wrap; gap:18px; }
.privacy-copy { padding:30px; background:#fff; border:1px solid var(--legal-line); border-radius:18px; }
.privacy-copy h2 { font-size:1.25rem; margin:30px 0 12px; }
.privacy-copy h2:first-child { margin-top:0; }
.privacy-copy p,.privacy-copy li { font-size:.95rem; line-height:1.8; }
.privacy-copy ul { padding-left:22px; list-style:disc; margin:12px 0; }
.receipt-card { padding:30px; background:#fff; border:1px solid var(--legal-line); border-radius:18px; }
.receipt-card h2 { margin-bottom:12px; }
.receipt-code { display:block; font-size:1.3rem; font-weight:700; margin:14px 0; overflow-wrap:anywhere; }
.receipt-grid { display:grid; grid-template-columns:minmax(130px,.6fr) minmax(0,1.4fr); gap:10px 20px; margin:24px 0; font-size:.9rem; }
.receipt-grid dt { font-weight:600; }
.receipt-grid dd { margin:0; overflow-wrap:anywhere; white-space:pre-wrap; }
.receipt-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:25px; }
/* Una imagen completa por proyecto; no se recorta la captura suministrada. */
.section-cases .project-media.project-supplied-media { align-self:center !important; display:flex; align-items:center; justify-content:center; min-width:0; width:100%; height:auto !important; min-height:0 !important; aspect-ratio:1376 / 768; margin:0 0 38px !important; padding:0 !important; overflow:hidden; border:1px solid #e4e8eb; border-radius:18px !important; background:#fff; box-shadow:0 12px 30px #26323b0a; }
.section-cases .project-supplied-image { display:block; width:100% !important; max-width:100% !important; height:auto !important; max-height:none !important; object-fit:contain !important; }
.cookie-banner { position:fixed; z-index:1100; bottom:calc(max(18px, env(safe-area-inset-bottom, 0px)) + 66px); left:50%; transform:translateX(-50%); width:min(1100px,calc(100% - 36px)); max-height:calc(100dvh - 106px - env(safe-area-inset-bottom, 0px)); overflow:auto; display:flex; align-items:center; justify-content:space-between; gap:24px; padding:22px 24px; border:1px solid #dedede; border-top:3px solid var(--legal-yellow); border-radius:16px; background:#fff; box-shadow:0 10px 44px #0002; color:var(--legal-dark); }
.cookie-banner h2 { font-size:1rem; margin:0 0 7px; }
.cookie-banner p { font-size:.82rem; line-height:1.65; max-width:550px; }
.cookie-banner a { text-decoration:underline; color:#755200; }
.cookie-actions { display:flex; flex-wrap:wrap; gap:8px; flex-shrink:0; }
.cookie-actions .btn { padding:10px 14px; min-height:44px; font-size:.8rem; box-shadow:none; }
.consent-dialog { width:min(540px,calc(100% - 36px)); max-height:calc(100dvh - 36px); padding:0; margin:auto; border:1px solid var(--legal-line); border-radius:18px; color:var(--legal-dark); box-shadow:0 20px 80px #0003; }
.consent-dialog::backdrop { background:#1218208c; }
.consent-dialog-head { padding:22px 24px; display:flex; justify-content:space-between; align-items:center; gap:14px; border-bottom:1px solid var(--legal-line); }
.consent-dialog-head h2 { font-size:1.2rem; }
.consent-close { display:grid; place-items:center; width:36px; height:36px; border:1px solid var(--legal-line); border-radius:50%; background:#fff; cursor:pointer; font-size:1.3rem; }
.consent-body { padding:22px 24px; font-size:.88rem; line-height:1.7; }
.consent-category { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:18px 0; border-bottom:1px solid var(--legal-line); }
.consent-category p { font-size:.82rem; }
.consent-analytics-option { position:relative; display:flex; flex-direction:column; align-items:center; gap:5px; flex-shrink:0; cursor:pointer; font-size:.72rem; }
.consent-analytics-option input { position:absolute; top:0; left:50%; transform:translateX(-50%); width:46px; height:26px; margin:0; opacity:0; cursor:pointer; }
.consent-switch-track { position:relative; display:block; width:46px; height:26px; border-radius:20px; background:#69717b; transition:background-color .18s; pointer-events:none; }
.consent-switch-track::before { content:""; position:absolute; width:20px; height:20px; left:3px; top:3px; border-radius:50%; background:#fff; box-shadow:0 1px 3px #0003; transition:transform .18s; }
.consent-analytics-option input:checked + .consent-switch-track { background:var(--legal-yellow); }
.consent-analytics-option input:checked + .consent-switch-track::before { transform:translateX(20px); }
.consent-analytics-option input:focus-visible + .consent-switch-track { outline:3px solid #805b00; outline-offset:4px; }
.consent-switch-state::after { content:"Desactivada"; }
.consent-analytics-option input:checked ~ .consent-switch-state::after { content:"Activada"; }
.consent-state { border:1px solid #dce1dd; color:#386247; background:#f2f8f4; border-radius:20px; padding:3px 9px; font-size:.7rem; white-space:nowrap; }
.consent-state.off { background:#f4f5f6; color:#656b72; border-color:#ddd; }
.consent-dialog-foot { padding:0 24px 24px; display:flex; flex-wrap:wrap; gap:10px; }
@media(max-width:900px) { .cookie-banner { align-items:flex-start; flex-direction:column; gap:14px; } .cookie-actions { width:100%; } .cookie-actions .btn { flex:1; } }
@media(max-width:767px) { .section-cases .project-media.project-supplied-media { margin:0 !important; border-radius:14px !important; } }
@media(max-width:600px) {
  .legal-header-inner { min-height:72px; } .legal-header img { width:128px; } .legal-back { font-size:.8rem; }
  .legal-main { padding:32px 18px 48px; } .legal-header .container,.legal-footer .container { padding-left:18px; padding-right:18px; }
  .claims-section,.privacy-copy,.receipt-card { padding:20px 18px; border-radius:14px; }
  .claims-grid { grid-template-columns:minmax(0,1fr); gap:18px; } .claims-actions .btn { width:100%; }
  .claims-section legend { font-size:1rem; margin-bottom:20px; }
  .legal-footer-inner { flex-direction:column; align-items:flex-start; } .legal-footer nav { gap:14px; }
  .receipt-grid { grid-template-columns:minmax(0,1fr); gap:4px; } .receipt-grid dd { margin-bottom:12px; }
  .cookie-banner { padding:17px; width:calc(100% - 36px); }
  .cookie-actions { display:grid; grid-template-columns:1fr 1fr; } .cookie-actions .cookie-configure { grid-column:1/-1; }
  .consent-dialog-head,.consent-body { padding:20px 18px; } .consent-dialog-foot { padding:0 18px 20px; }
}
@media(prefers-reduced-motion:reduce) { .cookie-banner *,.consent-dialog * { transition:none !important; animation:none !important; } }
@media print {
  .legal-header,.legal-footer,.cookie-banner,.consent-dialog,.receipt-actions,.legal-intro,.claims-form,.claims-status { display:none !important; }
  .legal-page { background:#fff; color:#000; } .legal-main { padding:0; max-width:none; }
  .receipt-card { padding:0; border:0; box-shadow:none; } .receipt-card * { color:#000; }
  .receipt-grid { display:grid; grid-template-columns:180px 1fr; } .receipt-grid dd { margin-bottom:4px; }
}
