/* ============================================================
   Resortes Hércules — styles.css
   Paleta: acero oscuro + naranja forja + cromo
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=IBM+Plex+Mono:wght@400;600&family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,600;1,300&display=swap');

/* ── Reset & Variables ─────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --steel:    #141820;
  --steel-2:  #1c2130;
  --steel-3:  #242d3f;
  --steel-4:  #2d3850;
  --chrome:   #7fa0c8;
  --chrome-b: #b8d0ec;
  --orange:   #e06428;
  --orange-h: #ff7940;
  --green:    #27c47a;
  --warn:     #f0a500;
  --red:      #e03c3c;
  --text:     #c8d8ec;
  --text-dim: #5a7090;
  --border:   rgba(127,160,200,.14);
  --border-b: rgba(127,160,200,.32);
  --card-bg:  rgba(0,0,0,.25);
  --radius:   4px;
  --shadow:   0 8px 32px rgba(0,0,0,.45);
  --trans:    .2s ease;
}

html{font-size:16px;scroll-behavior:smooth}
body{
  font-family:'IBM Plex Sans',sans-serif;
  background:var(--steel);
  color:var(--text);
  min-height:100vh;
  overflow-x:hidden;
}

/* Grid background */
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:
    repeating-linear-gradient(0deg,transparent,transparent 48px,rgba(127,160,200,.04) 48px,rgba(127,160,200,.04) 49px),
    repeating-linear-gradient(90deg,transparent,transparent 48px,rgba(127,160,200,.04) 48px,rgba(127,160,200,.04) 49px);
}

/* ── Typography ────────────────────────────────────────────── */
h1,h2,h3,.mono{font-family:'IBM Plex Mono',monospace}
.display{font-family:'Bebas Neue',sans-serif;letter-spacing:.06em}

/* ── HEADER ────────────────────────────────────────────────── */
#app-header{
  position:sticky;top:0;z-index:100;
  background:linear-gradient(135deg,#0a0d14,#141820);
  border-bottom:2px solid var(--orange);
  box-shadow:0 4px 24px rgba(0,0,0,.6);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 24px;height:64px;
}

.header-logo{display:flex;align-items:center;gap:14px}

.logo-spring{
  width:42px;height:42px;flex-shrink:0;
  filter:drop-shadow(0 0 10px rgba(224,100,40,.55));
}

.logo-text .app-name{
  font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:.1em;color:#fff;line-height:1
}
.logo-text .app-sub{
  font-family:'IBM Plex Mono',monospace;font-size:9px;color:var(--orange);letter-spacing:.15em;
}

.header-nav{display:flex;gap:6px}
.nav-btn{
  background:transparent;border:1px solid var(--border-b);border-radius:var(--radius);
  color:var(--chrome);font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.1em;
  padding:7px 14px;cursor:pointer;transition:var(--trans);text-transform:uppercase;
}
.nav-btn:hover,.nav-btn.active{background:var(--orange);border-color:var(--orange);color:#fff}

.header-badges{display:flex;align-items:center;gap:10px}
.badge{
  font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.12em;
  padding:4px 10px;border-radius:2px;border:1px solid var(--border-b);color:var(--chrome);
}
.badge-green{border-color:var(--green);color:var(--green)}
.badge-green::before{content:'● ';animation:blink 1.5s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}

/* ── LAYOUT ─────────────────────────────────────────────────── */
#app-main{
  position:relative;z-index:1;
  max-width:1200px;margin:0 auto;padding:28px 20px;
}

.tab-section{display:none}
.tab-section.visible{display:block}

/* ── PANEL ──────────────────────────────────────────────────── */
.panel{
  background:var(--steel-2);border:1px solid var(--border);
  border-radius:var(--radius);overflow:hidden;
}
.panel-hdr{
  background:var(--steel-3);border-bottom:1px solid var(--border);
  padding:11px 18px;display:flex;align-items:center;gap:10px;
}
.panel-hdr-icon{width:14px;height:14px;opacity:.7}
.panel-title{
  font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--chrome);
}
.panel-num{font-family:'IBM Plex Mono',monospace;font-size:9px;color:var(--orange);margin-left:auto}

/* ── SCANNER TAB ─────────────────────────────────────────────── */
.scanner-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
@media(max-width:800px){.scanner-layout{grid-template-columns:1fr}}

/* Drop zone */
#drop-zone{
  margin:18px;min-height:280px;border:2px dashed var(--border-b);border-radius:var(--radius);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  cursor:pointer;transition:var(--trans);position:relative;overflow:hidden;
  background:rgba(0,0,0,.2);user-select:none;
}
#drop-zone:hover,#drop-zone.drag{border-color:var(--orange);background:rgba(224,100,40,.06)}
#drop-zone.loaded{border-style:solid;border-color:var(--chrome)}

/* Corner brackets */
#drop-zone::before,#drop-zone::after{
  content:'';position:absolute;width:22px;height:22px;
  border-color:var(--orange);border-style:solid;opacity:.7;
}
#drop-zone::before{top:10px;left:10px;border-width:2px 0 0 2px}
#drop-zone::after{bottom:10px;right:10px;border-width:0 2px 2px 0}

.dz-icon{width:60px;height:60px;opacity:.35;margin-bottom:12px}
.dz-label{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--text-dim);
  letter-spacing:.06em;text-align:center;line-height:1.7}
.dz-label strong{display:block;color:var(--chrome-b);font-size:13px;margin-bottom:4px}
#preview-img{width:100%;height:100%;object-fit:contain;max-height:280px;padding:10px;display:none}

/* Camera button */
#cam-btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:calc(100% - 36px);margin:0 18px 10px;padding:13px;
  background:var(--steel-4);border:1px solid var(--border-b);border-radius:var(--radius);
  color:var(--chrome);font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.1em;
  cursor:pointer;transition:var(--trans);
}
#cam-btn:hover{background:var(--steel-3);border-color:var(--chrome);color:#fff}
#cam-btn svg{width:16px;height:16px;flex-shrink:0}

/* Scan button */
#scan-btn{
  display:block;width:calc(100% - 36px);margin:0 18px 18px;
  padding:17px;background:var(--orange);border:none;border-radius:var(--radius);
  color:#fff;font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:.12em;
  cursor:pointer;transition:var(--trans);position:relative;overflow:hidden;
}
#scan-btn:hover{background:var(--orange-h);box-shadow:0 0 28px rgba(224,100,40,.45)}
#scan-btn:disabled{background:var(--steel-4);color:var(--text-dim);cursor:not-allowed;box-shadow:none}
.btn-shimmer{
  position:absolute;top:0;left:-100%;width:100%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent);
  animation:shimmer 2.2s infinite;
}
@keyframes shimmer{to{left:200%}}

/* Results panel */
#results-wrap{min-height:420px;padding:18px}

.empty-state,
.loading-state{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  height:380px;gap:18px;
}
.empty-state{opacity:.4}
.empty-state svg{width:72px;height:72px}
.empty-state p{font-family:'IBM Plex Mono',monospace;font-size:11px;
  letter-spacing:.08em;color:var(--text-dim);text-align:center;line-height:1.7}

.loading-state{display:none}
.loading-state.on{display:flex}
.spinner{width:72px;height:72px}
.spinner circle:last-child{
  stroke-dasharray:55 170;stroke-linecap:round;stroke:var(--orange);
  transform-origin:center;animation:spin 1.2s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-msg{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.15em;
  color:var(--chrome);animation:pulse .9s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* Observations */
.obs-box{
  background:rgba(127,160,200,.07);border:1px solid var(--border);border-left:3px solid var(--chrome);
  border-radius:var(--radius);padding:12px 14px;margin-bottom:14px;
  font-size:12px;color:var(--text-dim);line-height:1.6;
}
.obs-box strong{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.15em;
  color:var(--chrome);display:block;margin-bottom:5px}

/* Result card */
.result-card{
  background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);
  margin-bottom:12px;overflow:hidden;
  animation:slideUp .4s ease both;
}
.result-card:nth-child(2){animation-delay:.08s}
.result-card:nth-child(3){animation-delay:.16s}
@keyframes slideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.result-card.top{border-color:var(--orange);box-shadow:0 0 24px rgba(224,100,40,.15)}

.card-hdr{
  display:flex;align-items:center;gap:12px;padding:13px 15px;cursor:pointer;
  transition:var(--trans);
}
.card-hdr:hover{background:rgba(255,255,255,.03)}

.conf-badge{
  font-family:'Bebas Neue',sans-serif;font-size:26px;min-width:66px;text-align:center;line-height:1;
}
.conf-badge.hi{color:var(--green)}
.conf-badge.md{color:var(--warn)}
.conf-badge.lo{color:var(--text-dim)}

.card-meta{flex:1;min-width:0}
.card-ref{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--chrome-b);font-weight:600;margin-bottom:3px}
.card-name{font-size:12px;color:var(--text-dim);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conf-bar-bg{height:3px;background:rgba(255,255,255,.08);border-radius:2px;overflow:hidden}
.conf-bar-fill{height:100%;border-radius:2px;transition:width .8s ease}
.conf-bar-fill.hi{background:var(--green)}
.conf-bar-fill.md{background:var(--warn)}
.conf-bar-fill.lo{background:var(--text-dim)}

.top-tag{
  font-family:'IBM Plex Mono',monospace;font-size:8px;padding:4px 9px;letter-spacing:.1em;
  background:var(--orange);color:#fff;border-radius:2px;white-space:nowrap;flex-shrink:0;
}

/* Card body */
.card-body{display:none;padding:0 15px 15px;border-top:1px solid var(--border)}
.result-card.open .card-body{display:block}

.specs-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}
.spec{background:rgba(0,0,0,.25);border:1px solid var(--border);border-radius:3px;padding:9px 11px}
.spec-lbl{font-family:'IBM Plex Mono',monospace;font-size:9px;color:var(--text-dim);letter-spacing:.12em;text-transform:uppercase;margin-bottom:2px}
.spec-val{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--chrome-b);font-weight:600}

.img-row{display:flex;gap:8px;margin-top:12px}
.ref-thumb{
  flex:1;aspect-ratio:1;background:rgba(0,0,0,.4);border:1px solid var(--border);
  border-radius:3px;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;
}
.ref-thumb img{width:100%;height:100%;object-fit:cover}
.ref-thumb .th-lbl{
  position:absolute;bottom:0;left:0;right:0;
  font-family:'IBM Plex Mono',monospace;font-size:8px;letter-spacing:.08em;color:var(--chrome);
  background:rgba(0,0,0,.7);text-align:center;padding:3px;
}
.ref-thumb .no-img{font-size:20px;opacity:.25}

.ai-reason{
  background:rgba(127,160,200,.06);border:1px solid var(--border);border-left:3px solid var(--steel-4);
  border-radius:3px;padding:11px 13px;margin-top:12px;font-size:12px;color:var(--text);line-height:1.6;
}
.ai-reason strong{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.12em;
  color:var(--orange);display:block;margin-bottom:5px}

.expand-icon{
  width:18px;height:18px;flex-shrink:0;opacity:.5;transition:transform var(--trans);
}
.result-card.open .expand-icon{transform:rotate(180deg)}

/* ── CATALOG TAB ─────────────────────────────────────────────── */
.catalog-toolbar{
  display:flex;gap:12px;flex-wrap:wrap;
  padding:16px 18px;border-bottom:1px solid var(--border);align-items:center;
}
.search-box{
  flex:1;min-width:180px;background:rgba(0,0,0,.3);border:1px solid var(--border);
  border-radius:var(--radius);color:var(--text);font-family:'IBM Plex Mono',monospace;font-size:12px;
  padding:8px 12px;outline:none;
}
.search-box::placeholder{color:var(--text-dim)}
.search-box:focus{border-color:var(--chrome)}
.filter-select{
  background:rgba(0,0,0,.3);border:1px solid var(--border);border-radius:var(--radius);
  color:var(--text);font-family:'IBM Plex Mono',monospace;font-size:11px;padding:8px 10px;
  outline:none;-webkit-appearance:none;cursor:pointer;
}
.filter-select:focus{border-color:var(--chrome)}
.add-btn{
  background:var(--orange);border:none;border-radius:var(--radius);color:#fff;
  font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:.1em;padding:8px 18px;
  cursor:pointer;transition:var(--trans);white-space:nowrap;
}
.add-btn:hover{background:var(--orange-h)}

/* Table */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse}
thead th{
  font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--text-dim);padding:10px 14px;text-align:left;background:var(--steel-3);
  border-bottom:1px solid var(--border);white-space:nowrap;
}
tbody tr{border-bottom:1px solid var(--border);transition:background var(--trans);cursor:pointer}
tbody tr:hover{background:rgba(127,160,200,.06)}
tbody td{padding:10px 14px;font-size:12px;color:var(--text);vertical-align:middle}
.td-code{font-family:'IBM Plex Mono',monospace;font-weight:600;color:var(--chrome-b)}
.td-tipo{font-size:10px;padding:3px 8px;border:1px solid var(--border);border-radius:2px;color:var(--chrome);font-family:'IBM Plex Mono',monospace}
.td-actions{display:flex;gap:6px;justify-content:flex-end}
.act-btn{
  background:transparent;border:1px solid var(--border);border-radius:3px;color:var(--text-dim);
  font-size:11px;padding:5px 10px;cursor:pointer;transition:var(--trans);
}
.act-btn:hover{border-color:var(--chrome);color:var(--text)}
.act-btn.del:hover{border-color:var(--red);color:var(--red)}
.td-img-dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin:0 2px}
.td-img-dot.ok{background:var(--green)}
.td-img-dot.no{background:var(--steel-4);border:1px solid var(--border-b)}
.no-rows{text-align:center;padding:40px;color:var(--text-dim);font-family:'IBM Plex Mono',monospace;font-size:12px}

/* Pagination */
.pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-top:1px solid var(--border)}
.page-info{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--text-dim);letter-spacing:.08em}
.page-btns{display:flex;gap:6px}
.page-btn{
  background:var(--steel-3);border:1px solid var(--border);border-radius:3px;
  color:var(--chrome);font-family:'IBM Plex Mono',monospace;font-size:10px;padding:6px 12px;
  cursor:pointer;transition:var(--trans);
}
.page-btn:hover{border-color:var(--chrome);color:#fff}
.page-btn:disabled{opacity:.3;cursor:not-allowed}
.page-btn.current{background:var(--orange);border-color:var(--orange);color:#fff}

/* ── MODAL ───────────────────────────────────────────────────── */
.modal-overlay{
  position:fixed;inset:0;background:rgba(10,13,20,.82);z-index:500;
  display:flex;align-items:center;justify-content:center;padding:20px;
  backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--trans);
}
.modal-overlay.on{opacity:1;pointer-events:all}
.modal{
  background:var(--steel-2);border:1px solid var(--border-b);border-radius:6px;
  width:100%;max-width:680px;max-height:90vh;overflow-y:auto;
  box-shadow:var(--shadow);transform:translateY(20px);transition:transform var(--trans);
}
.modal-overlay.on .modal{transform:translateY(0)}
.modal-hdr{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px;border-bottom:1px solid var(--border);background:var(--steel-3);
}
.modal-title{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.12em;color:var(--chrome-b)}
.modal-close{background:none;border:none;color:var(--text-dim);font-size:22px;cursor:pointer;line-height:1;padding:2px 6px}
.modal-close:hover{color:var(--text)}
.modal-body{padding:20px}

/* Form */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:600px){.form-grid{grid-template-columns:1fr}}
.form-group{display:flex;flex-direction:column;gap:5px}
.form-group.full{grid-column:1/-1}
.form-label{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.14em;color:var(--text-dim);text-transform:uppercase}
.form-input,.form-select,.form-textarea{
  background:rgba(0,0,0,.3);border:1px solid var(--border);border-radius:3px;
  color:var(--text);font-family:'IBM Plex Mono',monospace;font-size:12px;
  padding:9px 11px;outline:none;transition:border-color var(--trans);-webkit-appearance:none;width:100%;
}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--chrome)}
.form-textarea{resize:vertical;min-height:72px;font-family:'IBM Plex Sans',sans-serif;font-size:13px}
.form-section{
  font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.2em;color:var(--orange);
  text-transform:uppercase;border-bottom:1px solid var(--border);padding-bottom:6px;
  margin:18px 0 12px;grid-column:1/-1;
}
.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;grid-column:1/-1}
.btn-cancel{
  background:transparent;border:1px solid var(--border-b);border-radius:3px;color:var(--chrome);
  font-family:'IBM Plex Mono',monospace;font-size:11px;padding:10px 20px;cursor:pointer;transition:var(--trans);
}
.btn-cancel:hover{border-color:var(--chrome);color:#fff}
.btn-save{
  background:var(--orange);border:none;border-radius:3px;color:#fff;
  font-family:'Bebas Neue',sans-serif;font-size:19px;letter-spacing:.1em;
  padding:10px 28px;cursor:pointer;transition:var(--trans);
}
.btn-save:hover{background:var(--orange-h)}

/* Image upload rows inside modal */
.img-upload-row{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.img-slot-box{
  flex:1;min-width:120px;background:rgba(0,0,0,.3);border:1px dashed var(--border-b);
  border-radius:3px;padding:14px 10px;text-align:center;cursor:pointer;transition:var(--trans);position:relative;
}
.img-slot-box:hover{border-color:var(--chrome);background:rgba(127,160,200,.06)}
.img-slot-box img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:2px;display:none}
.img-slot-box .slot-lbl{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.1em;color:var(--text-dim);margin-top:6px}
.img-slot-box svg{opacity:.3}

/* Toast */
.toast{
  position:fixed;bottom:24px;right:24px;z-index:999;
  background:var(--steel-3);border:1px solid var(--border-b);border-radius:4px;
  padding:12px 20px;font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.08em;
  box-shadow:var(--shadow);transform:translateY(80px);opacity:0;transition:all .3s ease;max-width:340px;
}
.toast.show{transform:translateY(0);opacity:1}
.toast.ok{border-left:3px solid var(--green)}
.toast.err{border-left:3px solid var(--red)}

/* Scrollbar */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:var(--steel)}
::-webkit-scrollbar-thumb{background:var(--steel-4);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--chrome)}

/* Responsive */
@media(max-width:600px){
  #app-header{padding:0 14px}
  #app-main{padding:16px 14px}
  .header-nav,.header-badges{display:none}
  .specs-grid{grid-template-columns:1fr}
}
