:root {
    --bg: #14161c;
    --bg-card: #1c1f28;
    --borde: #2e323d;
    --texto: #e8e6e1;
    --texto-tenue: #8c8f99;
    --peligro: #e0447a;
    --radio: 12px;
}
* { box-sizing: border-box; }
html, body {
    margin: 0; padding: 0; min-height: 100vh;
    background: var(--bg); color: var(--texto);
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}
a { color: inherit; }
button, input { font-family: inherit; font-size: 1rem; }

/* ---------- Índice público ---------- */
body:not(.login-body):not(.admin-body) { display: flex; align-items: center; justify-content: center; }
.wrap { width: 100%; max-width: 440px; padding: 32px 20px; }
.eyebrow { color: var(--texto-tenue); font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; margin: 0 0 6px; }
h1 { font-size: 1.5rem; margin: 0 0 32px; letter-spacing: -0.01em; }
.apps { display: flex; flex-direction: column; gap: 10px; }
.app-card {
    display: flex; align-items: center; gap: 14px;
    background: var(--bg-card); border: 1px solid var(--borde); border-left: 3px solid var(--accent, var(--borde));
    border-radius: var(--radio); padding: 16px 18px;
    text-decoration: none; color: var(--texto);
    transition: transform .12s ease, border-color .12s ease;
}
.app-card:hover { transform: translateX(2px); border-color: var(--accent, var(--texto-tenue)); }
.app-icon { font-size: 1.5rem; flex-shrink: 0; }
.app-info { flex: 1; }
.app-nombre { font-weight: 600; font-size: 0.98rem; display: block; }
.app-desc { font-size: 0.8rem; color: var(--texto-tenue); margin-top: 2px; display: block; }
.app-arrow { color: var(--texto-tenue); font-size: 1.1rem; }
.vacio { color: var(--texto-tenue); text-align: center; padding: 30px 0; font-size: 0.9rem; }

.acceso-privado, .barra-admin {
    text-align: center; color: var(--texto-tenue); font-size: 0.75rem; margin: 22px 0 0;
}
.acceso-privado a, .barra-admin a { text-decoration: none; color: var(--texto-tenue); }
.acceso-privado a:hover, .barra-admin a:hover { color: var(--texto); }
.barra-admin { display: flex; justify-content: center; gap: 18px; }
footer { margin-top: 16px; text-align: center; color: var(--texto-tenue); font-size: 0.72rem; }

/* ---------- Login ---------- */
.login-body { display: flex; align-items: center; justify-content: center; padding: 20px; min-height: 100vh; }
.login-card {
    background: var(--bg-card); border: 1px solid var(--borde); border-radius: 16px;
    padding: 32px 24px; width: 100%; max-width: 340px;
    display: flex; flex-direction: column; gap: 14px; text-align: center;
}
.login-card h1 { margin: 0 0 4px; font-size: 1.3rem; }
.login-card input {
    background: #23262f; border: 1px solid var(--borde); color: var(--texto);
    padding: 12px 14px; border-radius: 10px;
}
.login-card button {
    background: #6b8cff; color: #fff; border: none; padding: 12px; border-radius: 10px; font-weight: 700;
}
.login-card .hint { color: var(--texto-tenue); font-size: 0.85rem; margin: 0; }
.login-card .error { color: var(--peligro); font-size: 0.85rem; margin: 0; }
.login-card .volver { color: var(--texto-tenue); font-size: 0.8rem; text-decoration: none; margin-top: 4px; }

/* ---------- Admin ---------- */
.admin-body { display: block; }
.topbar {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 20px; border-bottom: 1px solid var(--borde);
    position: sticky; top: 0; background: var(--bg); z-index: 5;
}
.topbar h1 { font-size: 1.05rem; margin: 0; }
.topbar-acciones { display: flex; gap: 16px; font-size: 0.85rem; }
.topbar-acciones a { text-decoration: none; color: var(--texto-tenue); }
.topbar-acciones a:hover { color: var(--texto); }

.admin-wrap { max-width: 640px; margin: 0 auto; padding: 20px; display: flex; flex-direction: column; gap: 28px; }
.bloque h2 { font-size: 1rem; margin: 0 0 12px; }

.form-app { display: flex; flex-direction: column; gap: 10px; }
.form-app .fila { display: flex; gap: 10px; }
.form-app .fila > input { flex: 1; }
.form-app input[type="text"], .form-app input[type="password"] {
    background: var(--bg-card); border: 1px solid var(--borde); color: var(--texto);
    padding: 10px 12px; border-radius: 8px;
}
.campo-color { display: flex; align-items: center; gap: 8px; font-size: 0.82rem; color: var(--texto-tenue); }
.campo-color input[type="color"] { width: 36px; height: 36px; border: 1px solid var(--borde); border-radius: 8px; background: var(--bg-card); padding: 2px; }
.campo-check { display: flex; align-items: center; gap: 6px; font-size: 0.85rem; color: var(--texto-tenue); }

.btn { border: none; border-radius: 8px; padding: 11px 18px; font-weight: 700; font-size: 0.88rem; cursor: pointer; }
.btn-primario { background: #6b8cff; color: #fff; }
.btn-secundario { background: var(--bg-card); border: 1px solid var(--borde); color: var(--texto); }

.lista-apps { display: flex; flex-direction: column; gap: 8px; }
.app-row {
    background: var(--bg-card); border: 1px solid var(--borde); border-left: 3px solid var(--accent, var(--borde));
    border-radius: var(--radio); padding: 12px 14px; display: flex; flex-direction: column; gap: 8px;
}
.app-row-top { display: flex; align-items: center; gap: 10px; }
.app-row-top .icono { font-size: 1.3rem; }
.app-row-top .info { flex: 1; min-width: 0; }
.app-row-top .nombre { font-weight: 700; font-size: 0.92rem; }
.app-row-top .url { font-size: 0.75rem; color: var(--texto-tenue); }
.app-row-badges { display: flex; gap: 6px; }
.badge-mini { font-size: 0.68rem; padding: 2px 7px; border-radius: 999px; background: #23262f; color: var(--texto-tenue); font-weight: 700; }
.badge-mini.on { color: #6b8cff; }

.app-row-acciones { display: flex; gap: 6px; flex-wrap: wrap; }
.app-row-acciones button {
    background: #23262f; border: 1px solid var(--borde); color: var(--texto-tenue);
    padding: 6px 10px; border-radius: 8px; font-size: 0.76rem; font-weight: 600; cursor: pointer;
}
.app-row-acciones button:hover { color: var(--texto); }
.app-row-acciones button.borrar:hover { color: var(--peligro); border-color: var(--peligro); }

.app-row-editor { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }
.app-row-editor input[type="text"] {
    background: #23262f; border: 1px solid var(--borde); color: var(--texto);
    padding: 8px 10px; border-radius: 8px; font-size: 0.85rem;
}
.app-row-editor .fila { display: flex; gap: 8px; }
.app-row-editor .fila > input { flex: 1; }
.app-row-editor .guardar { background: #6b8cff; color: #fff; border: none; padding: 8px 14px; border-radius: 8px; font-weight: 700; font-size: 0.8rem; cursor: pointer; }

.hint { color: var(--texto-tenue); font-size: 0.8rem; margin: 4px 0 0; }
