/* ============================================================
   MEJORAS APROBADAS — Viña Las Pitras · Presupuesto Agrícola
   Se carga después de styles.css. Usa las mismas variables.
   ============================================================ */

/* ----- 1. Dashboard KPI en vista Áreas ----- */
.areas-kpi-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 22px}
.areas-kpi{position:relative;padding:16px 17px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:0 6px 16px #123d220a;overflow:hidden}
.areas-kpi::after{content:'';position:absolute;right:-22px;bottom:-28px;width:70px;height:70px;border-radius:50%;opacity:.8}
.areas-kpi:nth-child(1)::after{background:#eaf3e7}
.areas-kpi:nth-child(2)::after{background:#e6f0f7}
.areas-kpi:nth-child(3)::after{background:#f1f4e6}
.areas-kpi:nth-child(4)::after{background:#f7efe4}
.areas-kpi .ak-label{position:relative;z-index:1;color:#648076;font:500 8.5px 'DM Mono',monospace;letter-spacing:.7px}
.areas-kpi .ak-value{position:relative;z-index:1;margin:8px 0 4px;color:#123e29;font:500 21px 'DM Mono',monospace;letter-spacing:-1px;font-variant-numeric:tabular-nums}
.areas-kpi .ak-help{position:relative;z-index:1;color:var(--muted);font-size:9.5px;line-height:1.4}
.areas-kpi.ak-good .ak-value{color:#1b6840}
.areas-kpi.ak-warn .ak-value{color:#c4a46b}
.areas-kpi.ak-bad .ak-value{color:var(--red)}
@media(max-width:1000px){.areas-kpi-strip{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.areas-kpi-strip{grid-template-columns:1fr}}

/* ----- 2. Formato condicional en desviaciones ----- */
.dev-positive{color:var(--red)!important;font-weight:700}
.dev-negative{color:var(--blue)!important;font-weight:700}
.dev-neutral{color:var(--muted)!important}
.dev-bar-inline{display:inline-block;height:4px;border-radius:2px;vertical-align:middle;margin-right:5px;min-width:3px;max-width:60px}
.dev-bar-inline.bar-pos{background:var(--red)}
.dev-bar-inline.bar-neg{background:var(--blue)}

/* ----- 3. Confirmación en acciones destructivas ----- */
.confirm-overlay{position:fixed;inset:0;z-index:6000;display:grid;place-items:center;background:rgba(5,28,18,.52);opacity:0;transition:opacity .18s}
.confirm-overlay.visible{opacity:1}
.confirm-box{width:min(440px,92vw);background:#fff;border-radius:18px;padding:26px;box-shadow:0 28px 80px rgba(7,27,18,.38)}
.confirm-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:20px;font-weight:900;margin-bottom:14px}
.confirm-icon.danger{background:#fde8ea;color:var(--red);border:1px solid #f0c4c8}
.confirm-box h3{margin:0 0 6px;font:700 17px Manrope;color:var(--forest)}
.confirm-box p{margin:0 0 14px;color:#596f61;font-size:12px;line-height:1.6}
.confirm-detail{padding:12px 14px;border:1px solid var(--line);border-radius:9px;background:#f8fbf8;margin-bottom:18px;font-size:11px;color:#42604f;line-height:1.7}
.confirm-detail strong{color:var(--ink)}
.confirm-actions{display:flex;justify-content:flex-end;gap:9px}
.confirm-cancel{padding:10px 16px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#526a5d;font:700 11px Manrope;cursor:pointer}
.confirm-cancel:hover{background:#f3f8f4}
.confirm-danger{padding:10px 16px;border:0;border-radius:8px;background:var(--red);color:#fff;font:700 11px Manrope;cursor:pointer}
.confirm-danger:hover{background:#a03440}

/* ----- 4. Panel de alertas activas ----- */
.alert-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;border-radius:9px;background:var(--red);color:#fff;font:700 9px 'DM Mono',monospace;display:grid;place-items:center;line-height:1;padding:0 4px;box-shadow:0 2px 6px rgba(187,62,73,.35)}
.alert-badge:empty,.alert-badge[data-count="0"]{display:none}
.alert-panel{position:fixed;z-index:95;right:min(450px,95vw);top:34px;width:min(380px,88vw);max-height:calc(100vh - 60px);background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px rgba(10,42,27,.2);overflow:auto;transform:translateX(20px);opacity:0;pointer-events:none;transition:.2s ease}
.alert-panel.open{transform:translateX(0);opacity:1;pointer-events:auto}
.alert-panel-head{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line)}
.alert-panel-head h3{margin:0;font:700 14px Manrope;color:var(--forest)}
.alert-panel-close{border:0;background:transparent;color:var(--muted);font-size:20px;cursor:pointer}
.alert-panel-list{padding:10px}
.alert-panel-item{display:grid;grid-template-columns:5px 1fr auto;gap:10px;align-items:center;padding:11px 12px;border-radius:9px;margin-bottom:4px;cursor:pointer;transition:.12s}
.alert-panel-item:hover{background:#f3f8f4}
.alert-panel-item .ap-severity{width:5px;height:32px;border-radius:3px}
.ap-severity.ap-high{background:var(--red)}
.ap-severity.ap-med{background:#d09a3c}
.alert-panel-item .ap-text{display:grid;gap:2px}
.alert-panel-item .ap-name{font:700 11.5px Manrope;color:var(--ink)}
.alert-panel-item .ap-area{font-size:10px;color:var(--muted)}
.alert-panel-item .ap-pct{font:700 12px 'DM Mono',monospace;color:var(--red)}
.alert-panel-empty{padding:24px;text-align:center;color:var(--muted);font-size:12px}
#openControlTools{position:relative}

/* ----- 5. Vista previa de importación ----- */
.import-preview-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}
.ips-tile{padding:12px;border:1px solid var(--line);border-radius:9px;background:#f8fbf8;text-align:center}
.ips-tile .ips-label{color:var(--muted);font:500 8.5px 'DM Mono',monospace;letter-spacing:.5px}
.ips-tile .ips-value{margin-top:4px;color:var(--ink);font:500 17px 'DM Mono',monospace;letter-spacing:-.5px}
.import-dup-warn{display:flex;align-items:center;gap:8px;padding:10px 14px;margin:10px 0;border:1px solid #e0c48a;border-radius:9px;background:#fdf7ea;color:#8a6a2f;font:600 11px Manrope}
.import-dup-warn::before{content:'⚠️';font-size:14px}
@media(max-width:620px){.import-preview-summary{grid-template-columns:1fr}}

/* ----- 6. Carga diferida (content-visibility) ----- */
.view:not(.active-view){content-visibility:auto;contain-intrinsic-size:auto 600px}

/* ----- 7. Búsqueda global Ctrl+K ----- */
.search-overlay{position:fixed;inset:0;z-index:7000;display:grid;place-items:start center;padding-top:min(18vh,160px);background:rgba(5,28,18,.48);opacity:0;pointer-events:none;transition:opacity .15s}
.search-overlay.open{opacity:1;pointer-events:auto}
.search-box{width:min(540px,92vw);background:#fff;border-radius:16px;box-shadow:0 28px 80px rgba(7,27,18,.35);overflow:hidden;transform:translateY(-8px);transition:transform .18s}
.search-overlay.open .search-box{transform:translateY(0)}
.search-input-wrap{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.search-input-wrap svg{width:18px;height:18px;color:var(--muted);flex-shrink:0}
.search-input{flex:1;border:0;outline:0;font:500 14px Manrope;color:var(--ink);background:transparent}
.search-input::placeholder{color:#a9b8af}
.search-kbd{padding:3px 7px;border:1px solid var(--line);border-radius:5px;background:#f5f8f4;color:var(--muted);font:500 9px 'DM Mono',monospace}
.search-results{max-height:340px;overflow:auto;padding:6px}
.search-results:empty::after{content:'Escribe para buscar partidas, cuarteles o fundos…';display:block;padding:20px;text-align:center;color:var(--muted);font-size:12px}
.search-result{display:grid;grid-template-columns:1fr auto;gap:4px;padding:10px 14px;border-radius:9px;cursor:pointer;transition:.1s}
.search-result:hover,.search-result.focused{background:#edf5ef}
.search-result.focused{box-shadow:inset 0 0 0 1px #2b7247}
.sr-main{font:600 12px Manrope;color:var(--ink)}
.sr-sub{font-size:10px;color:var(--muted)}
.sr-section{font:500 9px 'DM Mono',monospace;color:var(--muted);align-self:center}
.search-footer{display:flex;justify-content:center;gap:14px;padding:8px;border-top:1px solid var(--line);color:var(--muted);font-size:9.5px}
.search-footer kbd{padding:2px 5px;border:1px solid var(--line);border-radius:3px;background:#f5f8f4;font-family:'DM Mono',monospace;font-size:8.5px}

/* ----- 8. Cierre mensual con estado visual ----- */
.month-close .mc-status{display:inline-flex;align-items:center;gap:5px;margin-top:4px;padding:3px 8px;border-radius:12px;font:700 9px 'DM Mono',monospace;letter-spacing:.4px}
.mc-status.mc-closed{background:#e3f2e8;color:#1b6840}
.mc-status.mc-review{background:#fdf3e3;color:#8a6a2f}
.mc-status.mc-open{background:#f2f5f0;color:var(--muted)}
.month-close.closed .mc-status{background:#d4ead9;color:#15502e}

/* ----- 9. Timeout de sesión ----- */
.timeout-overlay{position:fixed;inset:0;z-index:8000;display:grid;place-items:center;background:rgba(5,28,18,.55);opacity:0;pointer-events:none;transition:opacity .2s}
.timeout-overlay.visible{opacity:1;pointer-events:auto}
.timeout-box{width:min(400px,90vw);background:#fff;border-radius:18px;padding:28px;box-shadow:0 28px 80px rgba(7,27,18,.4);text-align:center}
.timeout-icon{font-size:36px;margin-bottom:10px}
.timeout-box h3{margin:0 0 6px;font:700 17px Manrope;color:var(--forest)}
.timeout-box p{margin:0 0 18px;color:#596f61;font-size:12px;line-height:1.6}
.timeout-countdown{display:inline-block;color:var(--red);font:700 20px 'DM Mono',monospace;margin-bottom:18px}
.timeout-actions{display:flex;justify-content:center;gap:10px}
.timeout-logout{padding:10px 18px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#596f61;font:700 11px Manrope;cursor:pointer}
.timeout-continue{padding:10px 18px;border:0;border-radius:8px;background:linear-gradient(135deg,#0e4826,#297144);color:#fff;font:700 11px Manrope;cursor:pointer;box-shadow:0 6px 14px #0b442524}
