/* Memoriluz · estilo "Suave y cercano" */
:root{
  --fondo:#F6F3EE; --tarjeta:#FFFFFF; --tinta:#2A2A33; --suave:#64646F; --borde:#E7E2DA;
  --prim:#4E7A62; --prim-osc:#3E6450; --verde:#E3EEE7; --lila:#EDE8F7; --lila-ac:#C9B8F0;
  --ambar:#FBEBD7; --llama:#E6A04E; --rojo:#9B2C2C;
  --r-xl:32px; --r-l:24px; --r-m:16px; --r-s:12px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--fondo);color:var(--tinta);font-family:'Plus Jakarta Sans',system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.55}
img{max-width:100%;display:block}
a{color:var(--tinta)}a:hover{color:var(--prim)}
h1,h2,h3{line-height:1.12;letter-spacing:-.02em;margin:0 0 .5em}
h1{font-size:clamp(34px,5.4vw,52px);font-weight:700}
h2{font-size:clamp(24px,3.2vw,32px);font-weight:700}
h3{font-size:18px;font-weight:700}
p{margin:0 0 1em}
.cont{max-width:1160px;margin:0 auto;padding:0 20px}
.suave{color:var(--suave)}
.peq{font-size:14px}
.saltar{position:absolute;left:-999px;top:8px;background:#fff;padding:8px 12px;border-radius:8px;z-index:50}
.saltar:focus{left:8px}
.oculto-visual{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* cabecera */
.cab{padding:16px 0}
.cab-fila{display:flex;align-items:center;justify-content:space-between;gap:16px}
.marca{display:flex;align-items:center;gap:10px;text-decoration:none;font-size:22px;font-weight:700}
.cab-nav{display:flex;align-items:center;gap:24px;font-weight:500}
.cab-nav a{text-decoration:none}
.cab-nav a[aria-current]{color:var(--prim)}

/* botones */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 24px;border-radius:var(--r-m);border:0;font:inherit;font-weight:600;text-decoration:none;cursor:pointer;transition:transform .15s ease,background .15s ease}
.btn:active{transform:scale(.98)}
.btn-prim{background:var(--prim);color:#fff}.btn-prim:hover{background:var(--prim-osc);color:#fff}
.btn-sec{background:var(--fondo);color:var(--tinta)}.btn-sec:hover{background:#ECE7DF}
.btn-blanco{background:#fff;color:var(--tinta)}
.btn-peq{min-height:44px;padding:10px 18px;border-radius:14px}
.btn-bloque{width:100%}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:3px solid var(--lila-ac);outline-offset:2px}

/* selector personas / mascotas */
.selector{display:inline-flex;gap:6px;padding:6px;background:var(--fondo);border-radius:18px}
.selector button,.selector label{min-height:44px;padding:10px 22px;border:0;border-radius:13px;background:transparent;color:var(--suave);font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center}
.selector button[aria-pressed="true"],.selector input:checked+span{background:#fff;color:var(--tinta);box-shadow:0 2px 8px rgba(42,42,51,.10)}
.selector input{position:absolute;opacity:0;pointer-events:none}
.selector label{padding:0}
.selector label span{display:inline-flex;align-items:center;min-height:44px;padding:10px 22px;border-radius:13px}
.selector-blanco{background:#fff}

/* tarjetas y bloques */
.tarjeta{background:var(--tarjeta);border-radius:var(--r-l);padding:24px}
.heroe{background:#fff;border-radius:var(--r-xl);padding:clamp(24px,4vw,48px);display:flex;flex-wrap:wrap;gap:40px;align-items:center}
.heroe>*{flex:1 1 380px;min-width:0}
.seccion{padding:32px 0}
.rejilla{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.paso-num{width:48px;height:48px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-weight:700;margin-bottom:18px}
.bg-verde{background:var(--verde);color:#2E5A42}.bg-lila{background:var(--lila);color:#5E4F94}.bg-ambar{background:var(--ambar);color:#7A4A10}
.foto{border-radius:var(--r-l);background:var(--lila);aspect-ratio:4/3;object-fit:cover;width:100%}
.foto-vacia{display:flex;align-items:center;justify-content:center;color:var(--suave);font-size:14px}
.chip{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;background:var(--verde);color:#2E5A42;font-weight:700;font-size:14px}
.precio{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fff;border-radius:22px;padding:18px 22px;font-weight:600}
.llama{width:18px;height:26px;flex:0 0 auto}

/* tarjeta de memorial en listados */
.m-tarjeta{display:block;background:#fff;border-radius:var(--r-l);padding:12px;text-decoration:none}
.m-tarjeta img,.m-tarjeta .foto-vacia{border-radius:18px;aspect-ratio:4/3;width:100%;object-fit:cover;background:var(--lila)}
.m-tarjeta strong{display:block;margin:12px 4px 2px;font-size:17px}
.m-tarjeta span{display:block;margin:0 4px 4px;font-size:14px;color:var(--suave)}

/* página de memorial */
.memorial-cab{display:flex;flex-wrap:wrap;gap:32px;align-items:flex-start}
.memorial-cab>.foto,.memorial-cab>.foto-vacia{flex:1 1 320px;max-width:460px}
.memorial-datos{flex:1 1 320px;min-width:0}
.gestos-lista{display:flex;flex-direction:column;gap:10px}
.gesto{display:flex;gap:14px;align-items:flex-start;background:var(--fondo);border-radius:18px;padding:14px}
.gesto-icono{width:44px;height:44px;border-radius:14px;background:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.recuerdo{background:#fff;border-radius:var(--r-l);padding:16px}
.recuerdo img{border-radius:16px;margin-bottom:12px}

/* formularios */
.form{display:flex;flex-direction:column;gap:16px}
.form label.campo{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:15px}
.form input[type=text],.form input[type=email],.form input[type=date],.form input[type=password],.form input[type=search],.form select,.form textarea{width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--borde);border-radius:14px;background:#fff;font:inherit;color:var(--tinta)}
.form textarea{min-height:120px;resize:vertical}
.form .ayuda{font-weight:400;font-size:13px;color:var(--suave)}
.fila{display:flex;flex-wrap:wrap;gap:16px}.fila>*{flex:1 1 200px}
.aviso{padding:14px 16px;border-radius:14px;background:var(--verde);color:#22402F}
.aviso-error{background:#FBE4E4;color:var(--rojo)}
.casilla{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:14px}
.casilla input{width:20px;height:20px;margin-top:2px;accent-color:var(--prim)}
.buscador{display:flex;flex-wrap:wrap;gap:8px;background:#fff;border-radius:20px;padding:8px}
.buscador input{flex:1 1 220px;min-width:0;border:0!important;min-height:48px;padding:12px 14px;font:inherit;background:transparent}

/* pie y barra de app */
.pie{padding:32px 0 40px;color:var(--suave);font-size:14px}
.pie-fila{display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between}
.pie nav{display:flex;flex-wrap:wrap;gap:8px 18px}
.pie a{color:var(--suave)}
.tabbar{display:none}

/* tablas del panel */
.tabla{width:100%;border-collapse:collapse;background:#fff;border-radius:var(--r-m);overflow:hidden;font-size:14px}
.tabla th,.tabla td{padding:12px;text-align:left;border-bottom:1px solid var(--borde);vertical-align:top}
.tabla-caja{overflow-x:auto}

/* móvil y tablet: aspecto de app */
@media (max-width:820px){
  .cab-nav{display:none}
  body{padding-bottom:96px}
  .tabbar{display:flex;position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:40;background:var(--tinta);border-radius:24px;padding:8px;justify-content:space-around;align-items:center;box-shadow:0 10px 30px rgba(42,42,51,.25)}
  .tabbar a{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:56px;padding:6px 4px;border-radius:16px;color:#D7D7DE;text-decoration:none;font-size:11px;font-weight:600}
  .tabbar a[aria-current]{color:#fff;background:rgba(255,255,255,.08)}
  .tabbar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .tabbar .tab-crear{width:52px;height:52px;min-width:52px;background:var(--prim);color:#fff;border-radius:16px;justify-content:center}
  .tabbar .tab-crear svg{stroke-width:2.4}
  .heroe{gap:24px;border-radius:var(--r-l)}
  .tarjeta{padding:20px}
  .selector{display:flex}.selector>*{flex:1;justify-content:center}
  .selector label span{width:100%;justify-content:center}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
