/*!
 * urban-core.css v1.0 — Sistema de diseño compartido URBAN-IA
 * Paleta oficial: acento #69D1EC · claro por defecto · [data-theme="dark"]
 * Cargar ANTES de los estilos propios de cada herramienta.
 */
:root{
  --accent:#69D1EC; --accent-dark:#2B9CBE; --accent-deep:#17607A;
  --bg:#F6FBFD; --card:#FFFFFF; --text:#17303B; --muted:#5A7480;
  --border:#D8E9F0; --ok:#1E9E5A; --err:#D63333; --err-bg:#FDECEC;
  --chip:#E4F5FB; --shadow:0 2px 14px rgba(23,96,122,.08);
}
[data-theme="dark"]{
  --bg:#0E1B21; --card:#152730; --text:#E8F4F9; --muted:#9AB8C4;
  --border:#254250; --chip:#1C3641; --err-bg:#3A1D1D; --shadow:0 2px 14px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  background:var(--bg);color:var(--text);line-height:1.55;transition:background .25s,color .25s}

/* ---------- Pestañas de idioma (rellenadas por UrbanCore.renderLangTabs) ---------- */
.langs{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:6px 0 10px}
.ltab{flex:0 0 auto;border:1.5px solid var(--border);background:var(--card);color:var(--text);
  border-radius:999px;padding:6px 12px;font-size:.85rem;cursor:pointer;display:flex;
  align-items:center;gap:6px;white-space:nowrap;font-family:inherit;
  transition:background .2s,border-color .2s}
.ltab[aria-selected="true"]{background:var(--accent);border-color:var(--accent);color:#0B2B36;font-weight:700}
.ltab:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}

/* ---------- Tarjetas ---------- */
.card{background:var(--card);border:1px solid var(--border);border-radius:16px;
  box-shadow:var(--shadow);padding:22px}
.card h2{font-size:1.12rem;color:var(--accent-deep);display:flex;align-items:center;gap:8px;margin:0 0 12px}
[data-theme="dark"] .card h2{color:var(--accent)}
.chipbox{background:var(--chip);border-left:4px solid var(--accent);
  border-radius:0 10px 10px 0;padding:12px 14px;font-size:.9rem}

/* ---------- Botones ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;border:none;border-radius:10px;
  padding:10px 15px;font-size:.9rem;font-weight:700;cursor:pointer;font-family:inherit;
  transition:filter .2s,transform .05s}
.btn:active{transform:scale(.98)}
.btn:hover{filter:brightness(1.06)}
.btn.primary{background:var(--accent);color:#0B2B36}
.btn.ghost{background:var(--chip);color:var(--text);border:1.5px solid var(--border)}
.btn.danger{background:var(--err-bg);color:var(--err);border:1.5px solid var(--err)}
.iconbtn{border:1.5px solid var(--border);background:var(--card);color:var(--text);
  border-radius:10px;padding:8px 11px;font-size:1rem;cursor:pointer;transition:background .2s}
.iconbtn:hover,.iconbtn:focus-visible{background:var(--chip)}

/* ---------- Formularios ---------- */
input[type=text],input[type=email],input[type=tel],input[type=number],
input[type=datetime-local],select,textarea{
  width:100%;border:1.5px solid var(--border);border-radius:10px;padding:10px 12px;
  font-size:.95rem;background:var(--bg);color:var(--text);font-family:inherit;
  transition:border-color .2s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}
input[readonly]{background:var(--chip);cursor:default;font-weight:700;letter-spacing:.5px}
label{font-size:.86rem;font-weight:600}
.req{color:var(--err);font-weight:700}
.hint{font-size:.78rem;color:var(--muted)}
.fielderr{color:var(--err);font-size:.78rem;font-weight:700;display:none}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--err)}
.field.invalid .fielderr{display:block}

/* ---------- Snackbar (creado por UrbanCore.snack) ---------- */
#urban-snackbar{position:fixed;bottom:26px;left:50%;
  transform:translateX(-50%) translateY(20px);background:var(--accent-deep);color:#fff;
  padding:11px 20px;border-radius:999px;font-size:.9rem;font-weight:600;opacity:0;
  pointer-events:none;transition:opacity .25s,transform .25s;z-index:100;
  box-shadow:0 6px 20px rgba(0,0,0,.25)}
#urban-snackbar.show{opacity:1;transform:translateX(-50%) translateY(0)}
