:root{
 --bg:#f4f7f8; --surface:#fff; --surface2:#f8fafb; --text:#27313d; --muted:#6f7b88;
 --line:#dfe6ea; --brand:#1f6d78; --brand2:#2d8b7f; --accent:#e8f4f2;
 --danger:#c73b3b; --warning:#a66a00; --ok:#277a52; --shadow:0 8px 24px rgba(30,50,60,.07);
}
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif;font-size:15px}
a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:255px minmax(0,1fr);min-height:100vh}.sidebar{background:#173d45;color:#ecf7f5;padding:18px 14px;position:sticky;top:0;height:100vh;overflow:auto}.brand{display:flex;align-items:center;gap:10px;padding:10px 10px 18px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:12px}.brand-mark{width:38px;height:38px;border-radius:12px;background:#effbf8;color:#173d45;display:grid;place-items:center;font-weight:800}.brand strong{display:block;font-size:17px}.brand small{opacity:.75}.nav-group{font-size:11px;text-transform:uppercase;letter-spacing:.08em;opacity:.58;margin:18px 12px 8px}.nav a{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;color:#e9f4f2;margin:3px 0}.nav a:hover,.nav a.active{background:rgba(255,255,255,.12)}.main{min-width:0}.topbar{height:64px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:5}.topbar .title{font-weight:700}.topbar .user{color:var(--muted);font-size:13px}.content{padding:26px;max-width:1600px;margin:auto}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.page-head h1{margin:0;font-size:28px}.page-head p{margin:5px 0 0;color:var(--muted)}.grid{display:grid;gap:16px}.grid.cards{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}.metric .label{font-size:13px;color:var(--muted)}.metric .value{font-size:28px;font-weight:700;margin-top:7px}.metric .sub{font-size:12px;color:var(--muted);margin-top:5px}.section{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin:16px 0;overflow:hidden}.section-head{padding:15px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}.section-head h2{margin:0;font-size:18px}.section-body{padding:18px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;white-space:nowrap}.table th{font-size:12px;color:var(--muted);font-weight:600;background:var(--surface2);position:sticky;top:0}.table th,.table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left}.table tr:hover td{background:#fbfdfd}.table .num{text-align:right;font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:12px;background:#edf2f4}.badge.ok{background:#e9f7ef;color:var(--ok)}.badge.warn{background:#fff3d7;color:var(--warning)}.badge.danger{background:#feecec;color:var(--danger)}.btn{border:0;border-radius:10px;padding:10px 14px;font-weight:650;cursor:pointer;display:inline-flex;align-items:center;gap:7px;background:#e9eff1;color:#23323b}.btn.primary{background:var(--brand);color:#fff}.btn.success{background:var(--ok);color:#fff}.btn.danger{background:var(--danger);color:#fff}.btn.ghost{background:transparent;border:1px solid var(--line)}.btn:disabled{opacity:.45;cursor:not-allowed}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field label{display:block;font-size:13px;font-weight:600;margin:0 0 6px}.field small{color:var(--muted);display:block;margin-top:5px}.field input,.field select,.field textarea{width:100%;border:1px solid #ccd6db;background:#fff;border-radius:9px;padding:10px 11px;color:var(--text);font:inherit}.field textarea{min-height:90px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid rgba(31,109,120,.12);border-color:var(--brand)}.notice{border-radius:10px;padding:11px 13px;margin:10px 0;background:#eef5f8;border:1px solid #d6e7ed}.notice.ok{background:#eaf7ef;border-color:#ccead8}.notice.warn{background:#fff7e4;border-color:#f2dfae}.notice.danger{background:#fff0f0;border-color:#efcccc}.accordion{border-top:1px solid var(--line)}details{background:#fff;border:1px solid var(--line);border-radius:11px;margin:10px 0}details>summary{cursor:pointer;padding:13px 15px;font-weight:650}details>.inside{padding:0 15px 15px}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}.tab-link{padding:8px 11px;border-radius:9px;background:#edf2f4;font-size:13px}.tab-link.active{background:var(--accent);color:#14555d;font-weight:700}.split{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.mono{font-family:Consolas,monospace}.muted{color:var(--muted)}.right{text-align:right}.actions{display:flex;gap:8px;flex-wrap:wrap}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#edf6f5,#f7f9fa)}.login-card{width:min(460px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:30px;box-shadow:0 18px 60px rgba(25,55,65,.14)}.login-card h1{font-size:30px;margin:0 0 5px}.login-card p{color:var(--muted);margin:0 0 24px}.stack>*+*{margin-top:12px}.file-card{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);padding:10px 12px;border-radius:9px;margin:6px 0}.help-list h3{font-size:15px;margin:16px 0 5px}.help-list p{margin:0;color:#4f5d66}.footer-note{font-size:12px;color:var(--muted);margin-top:22px}.mobile-menu{display:none}
@media(max-width:1050px){.grid.cards{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.form-grid.three{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.app{display:block}.sidebar{position:relative;height:auto}.nav{display:grid;grid-template-columns:1fr 1fr}.topbar{position:relative}.content{padding:16px}.grid.cards,.form-grid,.form-grid.three{grid-template-columns:1fr}.page-head{display:block}.table{font-size:13px}}

/* FASTAPI M2: menú replegable, identidad y contraseñas */
.topbar-left{display:flex;align-items:center;gap:12px}
.icon-btn{border:1px solid var(--line);background:#fff;border-radius:9px;width:38px;height:38px;cursor:pointer;font-size:18px}
.brand-mark{overflow:hidden;font-size:22px}
.brand-mark img,.login-brand-icon img{width:100%;height:100%;object-fit:contain}
.nav-icon{width:23px;flex:0 0 23px;text-align:center}
.nav-label{min-width:0}
.app.sidebar-collapsed{grid-template-columns:76px minmax(0,1fr)}
.app.sidebar-collapsed .sidebar{padding-left:8px;padding-right:8px}
.app.sidebar-collapsed .brand{justify-content:center;padding-left:0;padding-right:0}
.app.sidebar-collapsed .brand-copy,.app.sidebar-collapsed .nav-label,.app.sidebar-collapsed .nav-group span{display:none}
.app.sidebar-collapsed .nav a{justify-content:center;padding-left:8px;padding-right:8px}
.app.sidebar-collapsed .nav-group{height:6px;border-top:1px solid rgba(255,255,255,.13);margin:14px 8px 8px}
.password-field{display:flex;align-items:stretch;position:relative}
.password-field input{padding-right:48px}
.password-toggle{position:absolute;right:5px;top:50%;transform:translateY(-50%);border:0;background:transparent;cursor:pointer;width:38px;height:34px;border-radius:8px;font-size:17px}
.password-toggle:hover{background:#eef3f4}
.login-brand{display:flex;gap:14px;align-items:flex-start;margin-bottom:24px}
.login-brand-icon{width:52px;height:52px;display:grid;place-items:center;font-size:34px;flex:0 0 52px}
.login-brand h1{margin-top:3px}
.inline-form{display:inline}
@media(max-width:760px){
  .app.sidebar-collapsed{display:block}
  .app.sidebar-collapsed .brand-copy,.app.sidebar-collapsed .nav-label{display:initial}
  .app.sidebar-collapsed .nav-group span{display:initial}
  .app.sidebar-collapsed .nav a{justify-content:flex-start}
}

/* FASTAPI M3 — Cuenta corriente sin bosque de desplegables */
.account-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}
.account-tabs a{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:10px 13px;font-weight:650;box-shadow:0 2px 8px rgba(30,50,60,.03)}
.account-tabs a:hover{border-color:#b9cbd0;background:#fbfdfd}
.account-tabs a.active{background:var(--brand);border-color:var(--brand);color:#fff}
.account-tabs a span{font-size:11px;min-width:20px;height:20px;border-radius:999px;background:rgba(0,0,0,.07);display:inline-grid;place-items:center;padding:0 6px}
.account-tabs a.active span{background:rgba(255,255,255,.18)}
.compact-note{font-size:12px;margin-top:4px}
.btn.small{padding:7px 10px;font-size:12px}
.table-action{color:var(--brand);font-weight:650}
.selected-row td{background:#eef7f6 !important}
.editor-panel{border:2px solid #cfe4e1;box-shadow:0 12px 32px rgba(31,109,120,.09)}
.record-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:18px}
.record-summary.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.record-summary>div{border:1px solid var(--line);background:var(--surface2);border-radius:10px;padding:12px}
.record-summary span{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}
.record-summary strong{font-size:16px}
.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.editor-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:#fff}
.editor-card.impact{border-top:4px solid #c98a24}
.editor-card.info-only{border-top:4px solid var(--brand2)}
.editor-card.pending-card{margin-top:16px;border-top:4px solid #c98a24}
.editor-card-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:6px}
.editor-card-head h3{margin:0;font-size:17px}
.impact-badge,.info-badge{font-size:11px;font-weight:700;padding:5px 8px;border-radius:999px;white-space:nowrap}
.impact-badge{background:#fff1d9;color:#895600}
.info-badge{background:#e8f5f2;color:#1d6b61}
.comparison-box{display:flex;justify-content:space-between;gap:10px;align-items:center;background:#f4f8f8;border:1px solid var(--line);border-radius:9px;padding:9px 11px}
.comparison-box span{color:var(--muted);font-size:12px}
.check-line{display:flex;gap:8px;align-items:flex-start}
.file-inline{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--line);background:#fbfdfd;border-radius:10px;padding:12px 14px;margin-bottom:14px}
.message-card{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px}
.message-card pre{white-space:pre-wrap;font:inherit;color:#4e5b64;margin:8px 0 0}
.help-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.help-card{border:1px solid var(--line);border-radius:11px;padding:14px;background:#fbfdfd}
.help-card h3{margin:0 0 6px;font-size:16px}
.help-card p{margin:0 0 8px;color:#4f5d66}
@media(max-width:1050px){.editor-grid{grid-template-columns:1fr}.record-summary,.record-summary.four{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.account-tabs{display:grid;grid-template-columns:1fr 1fr}.account-tabs a{justify-content:center}.record-summary,.record-summary.four,.help-grid{grid-template-columns:1fr}.file-inline{align-items:flex-start;flex-direction:column}}

/* FASTAPI M4 — repliegue tipo Logística + identidad visual */
.sidebar-edge-toggle{
  position:fixed;top:56px;left:238px;z-index:1200;
  width:36px;height:44px;border-radius:12px;border:2px solid #fff;
  background:#2468f2;color:#fff;font-weight:900;font-size:22px;
  display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.20);
  transition:left .18s ease,transform .18s ease;
}
.app.sidebar-collapsed .sidebar-edge-toggle{left:58px}
.app.sidebar-collapsed{grid-template-columns:76px minmax(0,1fr)}
.app.sidebar-collapsed .brand-mark{width:48px;height:48px}
.app.sidebar-collapsed .sidebar{padding-left:8px;padding-right:8px}
.app.sidebar-collapsed .nav a{min-height:46px}
.app.sidebar-collapsed .nav-icon{font-size:20px}
.app.sidebar-collapsed .footer-note{display:none}
.eyebrow{font-size:11px;font-weight:800;letter-spacing:.12em;color:#60758c;margin-bottom:6px}
.identity-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:12px 0 18px}
.identity-preview-card{border:1px solid var(--line);background:#f8fafc;border-radius:15px;padding:20px;display:flex;flex-direction:column;align-items:center;gap:8px;min-height:210px;text-align:center}
.identity-preview-title{font-size:12px;font-weight:800;letter-spacing:.07em;color:#60758c}
.identity-preview-image{width:96px;height:96px;border-radius:18px;background:#eef3f6;display:grid;place-items:center;overflow:hidden}
.identity-preview-image.small-preview{width:64px;height:64px;border-radius:14px}
.identity-preview-image img{width:100%;height:100%;object-fit:contain}
.identity-emoji{font-size:40px}
.identity-simple,.identity-custom{border:1px solid var(--line);border-radius:15px;padding:18px;background:#fbfdff}
.identity-simple{border-color:#bad5ff;background:#f4f8ff}
.identity-form{gap:16px}
.identity-form h3{margin:0 0 6px}
.identity-check{margin-top:12px}
.identity-upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
.identity-upload-card{border:1px solid var(--line);background:#fff;border-radius:12px;padding:15px}
.identity-upload-card h4{margin:0 0 5px;font-size:16px}
.identity-upload-card p{color:var(--muted);font-size:12px;min-height:32px}
.identity-upload-card input{width:100%}
.identity-names{margin-top:4px}
.desktop-shortcut-box{display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:1px solid var(--line);margin-top:20px;padding-top:18px}
.desktop-shortcut-box p{margin:4px 0 0}
@media(max-width:1050px){
  .identity-preview-grid,.identity-upload-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
  .sidebar-edge-toggle{display:none}
}

/* FASTAPI M5 — configuración corta + puerta de salida + identidad compacta */
.sidebar{display:flex;flex-direction:column}
.sidebar .nav{flex:1}
.sidebar-logout{margin-top:auto;padding:10px 0 2px;border-top:1px solid rgba(255,255,255,.13)}
.sidebar-logout a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:#fff;text-decoration:none}
.sidebar-logout a:hover{background:rgba(255,255,255,.10)}
.app.sidebar-collapsed .sidebar-logout a{justify-content:center;padding-left:8px;padding-right:8px}

.config-nav{
  display:flex;gap:10px;flex-wrap:wrap;
  margin:0 0 16px;padding:10px;
  background:#fff;border:1px solid var(--line);border-radius:14px;
  position:sticky;top:70px;z-index:20;
}
.config-nav-btn{
  border:1px solid var(--line);background:#f7fafb;color:var(--text);
  border-radius:10px;padding:10px 14px;font-weight:750;cursor:pointer;
}
.config-nav-btn:hover{background:#eef4f5}
.config-nav-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}
.config-panel{display:none}
.config-panel.active{display:block}

.config-subgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}
.config-mini-card{border:1px solid var(--line);border-radius:14px;padding:16px;background:#fbfdfe}
.config-mini-card h3{margin:0 0 12px}

.identity-compact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.identity-one-card{
  border:1px solid var(--line);border-radius:15px;background:#f9fbfd;
  padding:18px;display:flex;flex-direction:column;align-items:center;gap:12px;
}
.identity-one-card .identity-preview-image{width:108px;height:108px}
.identity-one-card .small-preview{width:76px;height:76px;margin:16px 0}
.compact-upload{width:100%;margin-top:auto}
.compact-upload input{width:100%}
.use-all-check{width:100%;padding-top:8px;border-top:1px solid var(--line);justify-content:center}

@media(max-width:1100px){
  .config-subgrid,.identity-compact-grid{grid-template-columns:1fr}
}


/* FASTAPI M6 — ajustes visuales solicitados */
.config-nav-btn.active{
  background:var(--brand) !important;
  border-color:var(--brand) !important;
  color:#fff !important;
}
.config-nav-btn.active *{color:#fff !important}

/* Sidebar: sin scrollbar propio y sin rayas divisorias */
@media(min-width:761px){
  .sidebar{
    overflow:hidden !important;
    padding-top:10px !important;
    padding-bottom:8px !important;
  }
  .sidebar .brand{
    border-bottom:0 !important;
    margin-bottom:4px !important;
    padding-top:4px !important;
    padding-bottom:8px !important;
  }
  .sidebar .nav{
    min-height:0;
    overflow:hidden;
  }
  .sidebar .nav-group{
    border-top:0 !important;
  }
  .sidebar-logout{
    border-top:0 !important;
  }

  .app.sidebar-collapsed .sidebar{
    padding-left:7px !important;
    padding-right:7px !important;
  }
  .app.sidebar-collapsed .brand{
    margin-bottom:2px !important;
    padding:2px 0 6px !important;
  }
  .app.sidebar-collapsed .brand-mark{
    width:46px !important;
    height:46px !important;
  }
  .app.sidebar-collapsed .nav a{
    min-height:38px !important;
    padding:6px 7px !important;
    margin:1px 0 !important;
  }
  .app.sidebar-collapsed .nav-icon{
    font-size:19px !important;
  }
  .app.sidebar-collapsed .nav-group{
    height:5px !important;
    margin:4px 8px !important;
    border-top:0 !important;
  }
  .app.sidebar-collapsed .sidebar-logout{
    padding:3px 0 0 !important;
    margin-top:2px !important;
    border-top:0 !important;
  }
  .app.sidebar-collapsed .sidebar-logout a{
    min-height:38px !important;
    padding:6px 7px !important;
  }
}


/* FASTAPI M7 — usuario activo + ayudas claras + versión */
.brand-user{
  display:flex;
  align-items:center;
  gap:6px;
  margin-top:5px;
  padding-top:5px;
  border-top:1px solid rgba(255,255,255,.16);
  color:rgba(255,255,255,.88);
  font-size:11px;
  line-height:1.2;
  white-space:nowrap;
}
.brand-user-dot{
  width:7px;height:7px;border-radius:50%;
  background:#58d68d;display:inline-block;flex:0 0 auto;
}
.app.sidebar-collapsed .brand-user{display:none}
.field-help{
  display:block;
  margin-top:5px;
  color:var(--muted);
  font-size:11px;
  line-height:1.35;
}

/* FASTAPI M7.3 — confirmación de carga clara */
.notice.success-hero{
  padding:18px 22px;
  font-size:18px;
  font-weight:800;
  text-align:center;
  border:2px solid #b9e2c8;
  box-shadow:0 8px 24px rgba(39,122,82,.10);
}
.notice.success-hero::before{content:"✅ ";font-size:22px}

/* PRODUCCIÓN NUBE 1.0.0 — PWA móvil, cámara y estado del sistema */
.mobile-menu-button{display:none;border:0;background:#eaf0f2;color:#173d45;border-radius:9px;width:38px;height:38px;font-size:20px;cursor:pointer;margin-right:10px}
.topbar-left{display:flex;align-items:center;min-width:0}
.mobile-sidebar-overlay{display:none}
.mobile-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.file-choice-card{position:relative;display:flex!important;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fbfdfe;cursor:pointer;margin:0!important}
.file-choice-card:hover{border-color:#9dbfc4;background:#f2f8f8}
.file-choice-card input{position:absolute!important;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.file-choice-icon{font-size:25px;flex:0 0 auto}
.file-choice-card span small{display:block;margin-top:3px;color:var(--muted);font-weight:400}
.system-state-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}
.system-state-card{border:1px solid var(--line);border-radius:14px;background:#fbfdfe;padding:15px;min-height:88px}
.system-state-card.wide{grid-column:span 2}
.system-state-card span,.path-card span{display:block;color:var(--muted);font-size:12px;margin-bottom:8px}
.system-state-card strong{font-size:17px;line-height:1.3}
.path-card{border:1px solid var(--line);border-radius:12px;padding:13px 15px;background:#fff;margin:10px 0}
.path-card code{display:block;overflow:auto;white-space:nowrap;background:#142238;color:#eff7ff;border-radius:8px;padding:10px;font-size:12px}

@media(max-width:760px){
  body.mobile-sidebar-open{overflow:hidden}
  .app{display:block!important}
  .sidebar{position:fixed!important;left:0;top:0;bottom:0;width:min(86vw,310px);height:100vh!important;z-index:1500;transform:translateX(-105%);transition:transform .2s ease;overflow-y:auto!important;padding:12px!important;box-shadow:0 12px 40px rgba(0,0,0,.28)}
  body.mobile-sidebar-open .sidebar{transform:translateX(0)}
  .mobile-sidebar-overlay{position:fixed;inset:0;background:rgba(10,25,30,.45);z-index:1400}
  body.mobile-sidebar-open .mobile-sidebar-overlay{display:block}
  .mobile-menu-button{display:inline-grid;place-items:center;flex:0 0 auto}
  .topbar{position:sticky!important;top:0!important;height:58px!important;padding:0 14px!important;z-index:900}
  .content{padding:14px!important}
  .sidebar .nav{display:block!important}
  .sidebar .nav a{justify-content:flex-start!important;min-height:44px}
  .sidebar .brand-copy,.sidebar .nav-label,.sidebar .nav-group span{display:initial!important}
  .sidebar-edge-toggle{display:none!important}
  .mobile-upload-grid{grid-template-columns:1fr}
  .system-state-grid{grid-template-columns:1fr 1fr}
  .system-state-card.wide{grid-column:1/-1}
}
@media(max-width:480px){.system-state-grid{grid-template-columns:1fr}.system-state-card.wide{grid-column:auto}}
