:root{
  --graphite:#16181d; --graphite-2:#1d2026; --line:#2a2e37;
  --surface:#ffffff; --ink:#16181d; --muted:#6b7280;
  --amber:#e8820c; --amber-d:#c96f06;
  --ok:#0f9d58; --bad:#d23f31; --bg:#0f1115;
  --radius:14px;
}
*{box-sizing:border-box}
body{margin:0;font-family:'Inter',system-ui,sans-serif;color:var(--ink);background:#eef0f3}
h1,h2{font-family:'Space Grotesk',sans-serif;margin:0}
a{color:inherit}
.muted{color:var(--muted);font-size:.86rem}
code{font-family:ui-monospace,monospace;background:#eceef1;padding:1px 6px;border-radius:6px;font-size:.82rem}

/* ---------- LOGIN ---------- */
.login-body{min-height:100vh;display:grid;place-items:center;
  background:radial-gradient(1200px 600px at 50% -10%,#222732,#0f1115)}
.login-shell{width:100%;max-width:400px;padding:24px}
.login-card{background:var(--surface);border-radius:18px;padding:34px 30px 24px;
  box-shadow:0 30px 80px rgba(0,0,0,.45);position:relative;overflow:hidden}
.hazard-stripe{position:absolute;top:0;left:0;right:0;height:5px;
  background:repeating-linear-gradient(45deg,var(--amber) 0 14px,#16181d 14px 28px)}
.login-head{display:flex;flex-direction:column;align-items:center;gap:8px;margin:8px 0 18px}
.login-logo{height:54px;width:auto}
.login-tag{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.login-card h1{text-align:center;font-size:1.5rem}
.login-sub{text-align:center;color:var(--muted);font-size:.9rem;margin:.3rem 0 1.1rem}
.login-error{background:#fdeceb;color:var(--bad);border:1px solid #f3c6c2;
  padding:9px 12px;border-radius:10px;font-size:.85rem;text-align:center}
.login-form .field{margin-bottom:12px;display:flex;flex-direction:column;gap:5px}
.field label{font-size:.78rem;font-weight:600;color:#374151}
.field input{padding:11px 12px;border:1px solid #d7dbe0;border-radius:10px;font-size:.95rem}
.field input:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px rgba(232,130,12,.15)}
.primary-button{width:100%;background:var(--amber);color:#fff;border:none;border-radius:10px;
  padding:12px;font-weight:700;font-size:.95rem;cursor:pointer;transition:.15s}
.primary-button:hover{background:var(--amber-d)}
.primary-button.small{width:auto;padding:8px 14px;font-size:.85rem}
.ghost-button{background:#f1f3f6;border:1px solid #d7dbe0;border-radius:10px;padding:8px 12px;
  font-weight:600;cursor:pointer;font-size:.85rem}
.ghost-button.danger{color:var(--bad);border-color:#f0c8c4}
.ghost-button.small{padding:6px 10px}
.google-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
  background:#fff;border:1px solid #d7dbe0;border-radius:10px;padding:11px;font-weight:600;
  text-decoration:none;color:#374151;transition:.15s}
.google-btn:hover{background:#f7f8fa}
.login-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:.76rem;margin:16px 0}
.login-divider::before,.login-divider::after{content:"";flex:1;height:1px;background:#e3e6ea}
.login-foot{display:flex;align-items:center;justify-content:center;gap:8px;
  color:var(--muted);font-size:.76rem;margin-top:16px}
.readonly-tag{width:8px;height:8px;border-radius:50%;background:var(--ok)}

/* ---------- TOPBAR ---------- */
.topbar{display:flex;align-items:center;justify-content:space-between;
  background:var(--graphite);color:#fff;padding:12px 22px}
.topbar-brand{display:flex;align-items:center;gap:10px}
.topbar-logo{height:30px}
.topbar-sub{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:#9aa1ac}
.topbar-user,.admin-nav{display:flex;align-items:center;gap:14px;font-size:.88rem}
.admin-nav a{color:#c7ccd4;text-decoration:none}
.admin-nav a:hover{color:#fff}
.who{color:#e6e8ec}
.chip-link{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);
  color:#fff;text-decoration:none;padding:6px 12px;border-radius:8px;font-size:.82rem}
.chip-link:hover{background:rgba(232,130,12,.25)}
/* En las tablas (fondo claro) el chip-link va con texto ambar visible, no blanco */
.grid .chip-link{background:#f4f6f8;border:1px solid #e3e6ea;color:#c96f06;font-weight:600}
.grid .chip-link:hover{background:#fde7d2;color:#a85c05}

/* ---------- PORTAL ---------- */
.portal-main,.admin-main{max-width:1000px;margin:0 auto;padding:30px 22px}
.portal-main h1{font-size:1.5rem;margin-bottom:20px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.tile{display:flex;flex-direction:column;gap:6px;background:#fff;border:1px solid #e3e6ea;
  border-radius:var(--radius);padding:20px;text-decoration:none;color:var(--ink);
  transition:.15s;position:relative;overflow:hidden}
.tile:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(0,0,0,.1);border-color:var(--amber)}
.tile-icon{font-size:1.7rem;width:46px;height:46px;display:grid;place-items:center;
  background:var(--graphite);color:var(--amber);border-radius:11px;font-weight:700}
.tile-icon svg{width:56%;height:56%}
.tile-name{font-weight:700;font-size:1.05rem}
.tile-desc{color:var(--muted);font-size:.82rem}
.tile-foot{display:flex;align-items:center;gap:7px;margin-top:auto;padding-top:8px;min-width:0}
.tile-role{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--amber-d);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile-state{font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;box-shadow:0 0 0 2px rgba(0,0,0,.04)}
.tile-noclick{cursor:default}
.tile-noclick:hover{transform:none;box-shadow:none;border-color:#e3e6ea}
.tile-disabled{opacity:.6;cursor:not-allowed}
.tile-disabled:hover{transform:none;box-shadow:none;border-color:#e3e6ea}
.dot-ok{background:#0f9d58}
.dot-warn{background:#e8a90c}
.dot-off{background:#d23f31}
.empty{background:#fff;border:1px dashed #cdd2d9;border-radius:var(--radius);padding:40px;text-align:center}

/* ---------- ADMIN ---------- */
.admin-body{background:#eef0f3;min-height:100vh}
.card{background:#fff;border:1px solid #e3e6ea;border-radius:var(--radius);
  padding:20px;margin-bottom:20px}
.card.narrow{max-width:560px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.card-head h2{font-size:1.12rem}
.back{display:inline-block;margin-bottom:12px;color:var(--muted);text-decoration:none;font-size:.85rem}
.grid{width:100%;border-collapse:collapse;font-size:.9rem}
.grid th{text-align:left;color:var(--muted);font-weight:600;font-size:.76rem;
  text-transform:uppercase;letter-spacing:.05em;padding:8px 10px;border-bottom:1px solid #e3e6ea}
.grid td{padding:10px;border-bottom:1px solid #eef0f3;vertical-align:middle}
.grid tr:last-child td{border-bottom:none}
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:.72rem;font-weight:600;
  background:#eceef1;color:#374151}
.badge-g{background:#e8f0fe;color:#1a73e8}
.badge-l{background:#e6f4ea;color:#0f9d58}
.badge-d{background:#fdeceb;color:var(--bad)}
.badge-warn{background:#fdf0d2;color:#a8740c}
.pending-banner{background:#fff7e8;border:1px solid #f3d9a0;color:#7a5b0c;
  padding:12px 16px;border-radius:12px;margin-bottom:18px;font-size:.92rem}
.row-pending{background:#fffbf2}
.stack-form{display:flex;flex-direction:column;gap:12px;max-width:420px}
.stack-form label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;font-weight:600;color:#374151}
.stack-form input{padding:10px 12px;border:1px solid #d7dbe0;border-radius:9px;font-size:.92rem;font-weight:400}
.stack-form label.check{flex-direction:row;align-items:center;gap:8px;font-weight:500}
.inline-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.inline-form input,.inline-form select{padding:9px 11px;border:1px solid #d7dbe0;border-radius:9px;font-size:.88rem}
.addform{margin-top:14px}
.addform summary{cursor:pointer;color:var(--amber-d);font-weight:600;font-size:.88rem}
.addform .inline-form{margin-top:12px}
