:root {
  --navy: #08265c;
  --blue: #0877f9;
  --cyan: #21c7ff;
  --bg: #f5f8fc;
  --text: #10213d;
  --muted: #607089;
  --white: #ffffff;
  --success: #17a673;
  --warning: #f2a93b;
  --error: #d64545;
  --border: #dce6f3;
  --shadow: 0 18px 50px rgba(8, 38, 92, .1);
  --radius: 22px;
}

* { box-sizing: border-box; }
html { min-width: 320px; background: var(--bg); }
body { margin: 0; color: var(--text); background: var(--bg); font-family: Inter, Poppins, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
button, input { font: inherit; }
a { color: inherit; }
button:focus-visible, a:focus-visible, input:focus-visible { outline: 3px solid rgba(33, 199, 255, .45); outline-offset: 2px; }

.guest-body { min-height: 100vh; background: radial-gradient(circle at 15% 10%, rgba(33,199,255,.18), transparent 34%), linear-gradient(135deg, #061d48, #08265c 48%, #0b4690); }
.auth-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.auth-card { width: min(100%, 480px); padding: clamp(26px, 5vw, 44px); border-radius: 28px; background: rgba(255,255,255,.98); box-shadow: 0 28px 80px rgba(0,0,0,.28); }
.auth-brand { display: flex; align-items: center; justify-content: space-between; gap: 18px; border-bottom: 1px solid var(--border); padding-bottom: 24px; }
.auth-brand img { width: min(230px, 60%); height: auto; }
.auth-brand p { margin: 0; max-width: 110px; color: var(--muted); font-size: 13px; text-align: right; }
.auth-copy { margin: 28px 0 22px; }
.auth-copy h1 { margin: 10px 0 8px; font-size: clamp(30px, 6vw, 42px); letter-spacing: -.04em; }
.auth-copy p { margin: 0; color: var(--muted); line-height: 1.65; }
.auth-footnote { margin: 22px 0 0; color: var(--muted); font-size: 12px; text-align: center; }
.pill { display: inline-flex; align-items: center; min-height: 28px; padding: 5px 11px; border-radius: 999px; color: var(--blue); background: rgba(8,119,249,.1); font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.form-stack { display: grid; gap: 18px; }
.form-stack label { display: grid; gap: 8px; font-size: 14px; font-weight: 750; }
.form-stack input { width: 100%; min-height: 50px; border: 1px solid var(--border); border-radius: 14px; padding: 0 15px; color: var(--text); background: var(--white); transition: border-color .2s, box-shadow .2s; }
.form-stack input:focus { border-color: var(--blue); box-shadow: 0 0 0 4px rgba(8,119,249,.1); outline: none; }
.password-wrap { position: relative; }
.password-wrap input { padding-right: 82px; }
.password-toggle { position: absolute; top: 50%; right: 8px; transform: translateY(-50%); border: 0; border-radius: 10px; padding: 8px 10px; color: var(--blue); background: transparent; font-weight: 800; cursor: pointer; }
.button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 14px; padding: 0 18px; font-weight: 850; text-decoration: none; cursor: pointer; transition: transform .18s, opacity .18s, box-shadow .18s; }
.button:hover { transform: translateY(-1px); }
.button:disabled { opacity: .68; cursor: wait; }
.button-primary { color: var(--white); background: linear-gradient(135deg, var(--blue), #0759c7); box-shadow: 0 12px 24px rgba(8,119,249,.23); }
.alert { border-radius: 14px; padding: 13px 15px; margin-bottom: 18px; font-size: 14px; line-height: 1.45; }
.alert-error { color: #8d2020; background: #fff0f0; border: 1px solid #f4c2c2; }
.alert-success { color: #0b6b49; background: #eaf9f3; border: 1px solid #bfe7d7; }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 270px minmax(0,1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; padding: 28px 20px; display: flex; flex-direction: column; color: var(--white); background: linear-gradient(180deg, #061f4e, var(--navy)); z-index: 20; }
.brand { display: block; padding: 4px 6px 24px; }
.brand img { display: block; width: 100%; max-width: 220px; height: auto; filter: drop-shadow(0 8px 20px rgba(0,0,0,.15)); }
.nav { display: grid; gap: 8px; }
.nav-link { display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 0 14px; border-radius: 14px; color: rgba(255,255,255,.78); text-decoration: none; font-weight: 750; }
.nav-link.active, .nav-link:hover { color: var(--white); background: rgba(255,255,255,.1); }
.nav-icon { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; background: rgba(33,199,255,.16); }
.sidebar-footer { margin-top: auto; padding: 16px 14px 0; display: flex; align-items: center; gap: 9px; border-top: 1px solid rgba(255,255,255,.12); color: rgba(255,255,255,.72); font-size: 13px; }
.status-dot { width: 9px; height: 9px; border-radius: 50%; background: #45e4a8; box-shadow: 0 0 0 5px rgba(69,228,168,.12); }
.main-area { min-width: 0; }
.topbar { min-height: 88px; position: sticky; top: 0; z-index: 10; display: flex; align-items: center; gap: 16px; justify-content: space-between; padding: 18px clamp(18px, 4vw, 42px); border-bottom: 1px solid rgba(220,230,243,.8); background: rgba(245,248,252,.92); backdrop-filter: blur(14px); }
.topbar h1 { margin: 2px 0 0; font-size: clamp(22px, 3vw, 30px); letter-spacing: -.03em; }
.eyebrow { margin: 0; color: var(--blue); font-size: 11px; font-weight: 900; letter-spacing: .13em; text-transform: uppercase; }
.user-menu { display: flex; align-items: center; gap: 10px; }
.avatar { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 13px; color: var(--white); background: linear-gradient(145deg,var(--blue),var(--cyan)); font-weight: 900; }
.user-copy { display: grid; }
.user-copy strong { font-size: 13px; }
.user-copy span { color: var(--muted); font-size: 11px; text-transform: capitalize; }
.link-button { border: 0; padding: 8px; color: var(--blue); background: transparent; font-weight: 850; cursor: pointer; }
.icon-button { width: 42px; height: 42px; border: 1px solid var(--border); border-radius: 12px; background: var(--white); cursor: pointer; }
.mobile-only { display: none; }
.content { padding: clamp(20px,4vw,42px); }
.hero-card { min-height: 210px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: clamp(26px,5vw,48px); border-radius: 28px; color: var(--white); background: radial-gradient(circle at 80% 10%, rgba(33,199,255,.35), transparent 30%), linear-gradient(135deg, #061f4e, #0877f9); box-shadow: var(--shadow); overflow: hidden; }
.hero-card h2 { max-width: 650px; margin: 16px 0 10px; font-size: clamp(28px,4vw,46px); line-height: 1.05; letter-spacing: -.04em; }
.hero-card p { max-width: 680px; margin: 0; color: rgba(255,255,255,.78); line-height: 1.65; }
.hero-card .pill { color: var(--white); background: rgba(255,255,255,.14); }
.shield-mark { width: clamp(90px,14vw,150px); aspect-ratio: 1; flex: 0 0 auto; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.24); border-radius: 42% 42% 52% 52%; background: rgba(255,255,255,.1); font-size: clamp(50px,8vw,84px); font-weight: 900; transform: rotate(-3deg); }
.metrics-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px; margin-top: 20px; }
.metric-card, .panel-card { border: 1px solid rgba(220,230,243,.9); border-radius: var(--radius); background: var(--white); box-shadow: 0 10px 30px rgba(8,38,92,.055); }
.metric-card { min-height: 155px; display: flex; flex-direction: column; justify-content: center; padding: 24px; }
.metric-card span { color: var(--muted); font-size: 13px; font-weight: 750; }
.metric-card strong { margin: 8px 0 5px; font-size: clamp(28px,4vw,40px); letter-spacing: -.04em; }
.metric-card .metric-date { font-size: clamp(17px,2.4vw,25px); }
.metric-card small { color: var(--muted); }
.dashboard-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; margin-top: 18px; }
.panel-card { padding: 24px; }
.panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.panel-heading h3 { margin: 4px 0 0; font-size: 21px; }
.badge { display: inline-flex; min-height: 28px; align-items: center; padding: 5px 10px; border-radius: 999px; font-size: 12px; font-weight: 850; }
.badge-success { color: #0b6b49; background: #eaf9f3; }
.check-list { list-style: none; display: grid; gap: 13px; margin: 22px 0 0; padding: 0; color: var(--muted); }
.check-list li { display: flex; gap: 10px; }
.check-list span { color: var(--success); font-weight: 900; }
.detail-list { display: grid; gap: 0; margin: 18px 0 0; }
.detail-list div { display: flex; justify-content: space-between; gap: 16px; padding: 13px 0; border-bottom: 1px solid var(--border); }
.detail-list div:last-child { border-bottom: 0; }
.detail-list dt { color: var(--muted); }
.detail-list dd { margin: 0; font-weight: 800; text-align: right; }
.error-body { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at top, rgba(33,199,255,.12), transparent 40%), var(--bg); }
.error-card { width: min(100%, 520px); padding: 38px; border: 1px solid var(--border); border-radius: 28px; background: var(--white); box-shadow: var(--shadow); text-align: center; }
.error-card img { width: min(260px, 78%); height: auto; }
.error-code { display: block; margin-top: 24px; color: var(--blue); font-size: 15px; font-weight: 950; letter-spacing: .15em; }
.error-card h1 { margin: 10px 0; font-size: clamp(30px,7vw,46px); letter-spacing: -.04em; }
.error-card p { margin: 0 auto 24px; max-width: 390px; color: var(--muted); line-height: 1.65; }

@media (max-width: 920px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar { position: fixed; left: 0; transform: translateX(-105%); width: 270px; transition: transform .22s ease; box-shadow: 20px 0 60px rgba(0,0,0,.25); }
  .sidebar.is-open { transform: translateX(0); }
  .mobile-only { display: inline-grid; place-items: center; }
  .topbar { justify-content: flex-start; }
  .user-menu { margin-left: auto; }
  .metrics-grid { grid-template-columns: 1fr 1fr; }
  .metric-card:last-child { grid-column: 1 / -1; }
}

@media (max-width: 640px) {
  .auth-shell { padding: 14px; }
  .auth-card { padding: 24px 20px; border-radius: 22px; }
  .auth-brand { align-items: flex-start; flex-direction: column; }
  .auth-brand img { width: 220px; max-width: 100%; }
  .auth-brand p { max-width: none; text-align: left; }
  .topbar { min-height: 76px; padding: 14px 16px; }
  .topbar .user-copy { display: none; }
  .content { padding: 16px; }
  .hero-card { min-height: 0; align-items: flex-start; padding: 26px 22px; }
  .shield-mark { display: none; }
  .metrics-grid, .dashboard-grid { grid-template-columns: 1fr; }
  .metric-card:last-child { grid-column: auto; }
  .detail-list div { align-items: flex-start; flex-direction: column; gap: 5px; }
  .detail-list dd { text-align: left; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}

/* Módulo 2: estructura empresarial y accesos */
select, textarea { font: inherit; }
select, textarea, .form-grid input { width: 100%; min-height: 48px; border: 1px solid var(--border); border-radius: 13px; padding: 11px 13px; color: var(--text); background: var(--white); }
textarea { resize: vertical; line-height: 1.5; }
select:focus, textarea:focus, .form-grid input:focus { border-color: var(--blue); box-shadow: 0 0 0 4px rgba(8,119,249,.1); outline: none; }
.button-secondary { color: var(--navy); background: #eef4fb; border: 1px solid var(--border); }
.button-ghost { min-height: 38px; color: var(--blue); background: transparent; border: 1px solid var(--border); }
.button-small { min-height: 38px; padding: 0 12px; border-radius: 11px; font-size: 13px; }
.badge-warning { color: #80520a; background: #fff4dc; }
.badge-info { color: #0759c7; background: #eaf3ff; }
.page-actions { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-bottom: 18px; }
.page-lead { margin: 0; color: var(--muted); line-height: 1.6; }
.table-card { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--white); box-shadow: 0 10px 30px rgba(8,38,92,.055); }
.table-responsive { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; min-width: 780px; }
th, td { padding: 16px 18px; border-bottom: 1px solid #edf2f8; text-align: left; vertical-align: middle; }
th { color: var(--muted); background: #f9fbfe; font-size: 12px; letter-spacing: .05em; text-transform: uppercase; }
td { font-size: 14px; }
td strong, td small { display: block; }
td small { margin-top: 4px; color: var(--muted); line-height: 1.45; }
tr:last-child td { border-bottom: 0; }
.inline-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.inline-actions form { margin: 0; }
.empty-state { padding: 28px; color: var(--muted); text-align: center; }
.form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.form-grid label { display: grid; align-content: start; gap: 8px; color: var(--text); font-size: 13px; font-weight: 800; }
.form-grid label small { color: var(--muted); font-weight: 500; line-height: 1.5; }
.form-grid .full { grid-column: 1 / -1; }
.form-section { padding-bottom: 4px; border-bottom: 1px solid var(--border); }
.form-section h2 { margin: 5px 0 6px; font-size: 22px; }
.form-section p { margin: 0 0 10px; color: var(--muted); line-height: 1.55; }
.form-actions { display: flex; justify-content: flex-end; gap: 10px; padding-top: 8px; }
.cards-list { display: grid; gap: 14px; }
.list-card { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.list-card h2 { margin: 0; font-size: 20px; }
.list-card p { margin: 8px 0 4px; color: var(--muted); }
.list-card small { color: var(--muted); }
.title-line { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.list-meta { display: grid; justify-items: end; gap: 10px; color: var(--muted); font-size: 13px; }
.check-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.check-card { min-height: 64px; display: flex !important; grid-template-columns: auto 1fr; align-items: center !important; gap: 12px !important; padding: 12px 14px; border: 1px solid var(--border); border-radius: 14px; cursor: pointer; }
.check-card input { width: 20px !important; min-height: 20px !important; margin: 0; }
.check-card span { display: grid; gap: 2px; }
.check-card small { color: var(--muted); }
.role-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; margin-top: 18px; }
.role-card h2 { margin: 4px 0 0; font-size: 22px; }
.role-card > p { color: var(--muted); line-height: 1.55; }
.permission-list { display: grid; gap: 8px; margin-top: 16px; }
.permission-list span { color: var(--muted); font-size: 13px; }
.permission-category { margin-top: 10px; color: var(--navy); font-size: 11px; letter-spacing: .09em; text-transform: uppercase; }
.hero-card.compact { min-height: 170px; }
.profile-grid { align-items: start; }
.metrics-four { grid-template-columns: repeat(4,minmax(0,1fr)); }
.sidebar-overlay { display: none; }
code { padding: 3px 7px; border-radius: 8px; color: #0759c7; background: #eaf3ff; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 12px; }

@media (max-width: 1100px) {
  .metrics-four { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 920px) {
  .sidebar-overlay { position: fixed; inset: 0; z-index: 15; display: block; pointer-events: none; background: rgba(3,17,43,.45); opacity: 0; transition: opacity .22s ease; }
  body.sidebar-open .sidebar-overlay { pointer-events: auto; opacity: 1; }
  .role-grid { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .page-actions, .list-card { align-items: stretch; flex-direction: column; }
  .page-actions .button { width: 100%; }
  .form-grid { grid-template-columns: 1fr; }
  .form-grid .full { grid-column: auto; }
  .form-actions { flex-direction: column-reverse; }
  .form-actions .button { width: 100%; }
  .check-grid, .metrics-four { grid-template-columns: 1fr; }
  .list-meta { justify-items: start; width: 100%; }
  .inline-actions { width: 100%; }
  .inline-actions .button, .inline-actions form { flex: 1; }
  .inline-actions form .button { width: 100%; }
}

/* Módulo 3: clientes y catálogo de servicios */
.filter-grid { display: grid; grid-template-columns: minmax(220px,2fr) repeat(2,minmax(170px,1fr)) auto; align-items: end; gap: 14px; padding: 18px; }
.filter-grid label, .upload-form label { display: grid; gap: 7px; color: var(--text); font-size: 13px; font-weight: 800; }
.filter-grid input, .filter-grid select, .upload-form input[type="file"] { width: 100%; min-height: 46px; border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; color: var(--text); background: var(--white); font: inherit; }
.filter-actions { display: flex; gap: 8px; }
.table-spaced { margin-top: 18px; }
.detail-title { margin: 6px 0 0; font-size: clamp(26px,4vw,38px); letter-spacing: -.035em; }
.detail-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; align-items: start; }
.section-gap { margin-top: 18px; }
.stack-list { display: grid; gap: 10px; margin-top: 18px; }
.record-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px; border: 1px solid var(--border); border-radius: 14px; background: #fbfdff; }
.record-card small { display: block; margin-top: 6px; color: var(--muted); line-height: 1.55; }
.text-wrap { max-width: 62%; white-space: normal; overflow-wrap: anywhere; }
.compact-form { margin-top: 16px; padding: 0; border: 0; box-shadow: none; }
.divider-top { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--border); }
.check-line { display: flex !important; align-items: center !important; grid-template-columns: auto 1fr; gap: 10px !important; }
.check-line input { width: 20px !important; min-height: 20px !important; margin: 0; }
.import-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.import-grid h2 { margin: 8px 0; }
.code-block { display: block; margin: 12px 0 18px; padding: 12px; overflow-wrap: anywhere; line-height: 1.55; }
.upload-form { display: grid; gap: 14px; }
.table-heading { padding: 20px 20px 0; }

@media (max-width: 1050px) {
  .filter-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .filter-actions { justify-content: flex-end; }
}
@media (max-width: 760px) {
  .detail-grid, .import-grid { grid-template-columns: 1fr; }
  .record-card { align-items: stretch; flex-direction: column; }
  .text-wrap { max-width: 100%; }
}
@media (max-width: 640px) {
  .filter-grid { grid-template-columns: 1fr; }
  .filter-actions, .filter-actions .button { width: 100%; }
  .filter-actions .button { flex: 1; }
}

/* Módulo 4: órdenes de trabajo */
.work-order-filters { grid-template-columns: minmax(220px,2fr) repeat(3,minmax(150px,1fr)); }
.status-action { align-items: flex-end; }
.status-action label { display: grid; gap: 6px; margin-top: 10px; color: var(--text); font-size: 12px; font-weight: 800; }
.status-action input { width: min(420px,100%); min-height: 42px; border: 1px solid var(--border); border-radius: 11px; padding: 9px 11px; font: inherit; }
.timeline-list { position: relative; display: grid; gap: 0; margin-top: 18px; }
.timeline-list::before { content: ""; position: absolute; top: 10px; bottom: 10px; left: 7px; width: 2px; background: #dbe8fa; }
.timeline-item { position: relative; display: grid; grid-template-columns: 16px 1fr; gap: 14px; padding: 0 0 20px; }
.timeline-item:last-child { padding-bottom: 0; }
.timeline-dot { position: relative; z-index: 1; width: 16px; height: 16px; margin-top: 2px; border: 4px solid #d8eaff; border-radius: 50%; background: var(--blue); }
.timeline-item strong { display: block; line-height: 1.45; }
.timeline-item small { display: block; margin-top: 5px; color: var(--muted); }
.print-body { min-width: 320px; background: #eef3fa; color: var(--text); }
.print-container { width: min(960px,calc(100% - 32px)); margin: 28px auto; }
.print-toolbar { display: flex; justify-content: flex-end; gap: 10px; margin-bottom: 16px; }
.print-sheet { padding: 42px; border: 1px solid var(--border); border-radius: 18px; background: var(--white); box-shadow: 0 18px 55px rgba(8,38,92,.12); }
.print-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-bottom: 24px; border-bottom: 2px solid #e7eef8; }
.print-header img { width: 210px; height: auto; }
.print-header div { text-align: right; }
.print-header span { color: var(--muted); font-size: 12px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.print-header h1 { margin: 5px 0; color: var(--navy); font-size: 34px; }
.print-header p { margin: 0; color: var(--blue); font-weight: 800; }
.print-sheet section { margin-top: 28px; }
.print-sheet h2 { margin: 0 0 10px; color: var(--navy); font-size: 17px; }
.print-sheet p { line-height: 1.65; }
.print-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; }
.print-sheet table { width: 100%; border-collapse: collapse; }
.print-sheet th,.print-sheet td { padding: 11px; border: 1px solid #dde7f4; text-align: left; }
.print-sheet th { color: var(--navy); background: #f4f8fd; }
.print-footer { margin-top: 34px; padding-top: 18px; border-top: 1px solid #dde7f4; color: var(--muted); font-size: 12px; text-align: center; }
@media (max-width: 1050px) { .work-order-filters { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 640px) {
  .work-order-filters,.print-grid { grid-template-columns: 1fr; }
  .print-container { width: min(100% - 20px,960px); margin: 10px auto; }
  .print-sheet { padding: 22px; border-radius: 12px; }
  .print-header { align-items: flex-start; flex-direction: column; }
  .print-header div { text-align: left; }
  .print-header img { width: 180px; }
}
@media print {
  .print-body { background: #fff; }
  .print-container { width: 100%; margin: 0; }
  .print-toolbar { display: none !important; }
  .print-sheet { padding: 0; border: 0; border-radius: 0; box-shadow: none; }
  .print-sheet section { break-inside: avoid; }
}

/* Módulo 05: evidencias privadas */
.evidence-upload{margin:18px 0 24px;padding:18px;border:1px solid var(--border);border-radius:20px;background:linear-gradient(180deg,#f8fbff,#fff)}
.evidence-upload input[type="file"]{padding:12px;background:#fff}
.evidence-upload small{display:block;margin-top:7px;color:var(--muted)}
.evidence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.evidence-card{min-width:0;border:1px solid var(--border);border-radius:20px;background:#fff;overflow:hidden;box-shadow:0 12px 30px rgba(8,38,92,.07);display:flex;flex-direction:column}
.evidence-preview{display:grid;place-items:center;aspect-ratio:4/3;background:#eef5ff;overflow:hidden;text-decoration:none}
.evidence-preview img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease}
.evidence-preview:hover img{transform:scale(1.025)}
.file-tile{display:grid;place-items:center;width:86px;height:106px;border-radius:14px;background:#fff;color:#d64545;border:1px solid #f2caca;font-weight:900;font-size:1.25rem;box-shadow:0 12px 26px rgba(8,38,92,.1)}
.evidence-body{display:grid;gap:8px;padding:15px;flex:1}
.evidence-name{margin:0;font-weight:700;overflow-wrap:anywhere}
.evidence-body p{margin:0}
.evidence-body small{color:var(--muted);line-height:1.45}
.hash-line{font-size:.72rem;color:#607089;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#f5f8fc;padding:7px 9px;border-radius:9px}
.evidence-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:0 15px 15px}
.evidence-actions form{margin:0}
@media (max-width:980px){.evidence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.evidence-grid{grid-template-columns:1fr}.evidence-upload{padding:14px}.evidence-card{border-radius:16px}}

/* Módulo 6: firma, aceptación y cierre */
.acceptance-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:18px 0; }
.acceptance-summary div { display:grid; gap:5px; padding:14px; border:1px solid var(--border); border-radius:14px; background:#f9fbfe; }
.acceptance-summary span, .receipt-grid span { color:var(--muted); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }
.acceptance-summary strong { font-size:17px; }
.acceptance-form { margin-top:18px; }
.signature-field { display:grid; gap:10px; }
.signature-heading { display:flex; align-items:center; justify-content:space-between; gap:14px; }
.signature-heading > div { display:grid; gap:4px; }
.signature-heading small { color:var(--muted); font-weight:500; }
[data-signature-canvas] { width:100%; aspect-ratio:3/1; min-height:180px; border:2px dashed #b9cae0; border-radius:16px; background:linear-gradient(#fff,#fbfdff); touch-action:none; cursor:crosshair; }
[data-signature-canvas]:focus { outline:3px solid rgba(8,119,249,.2); border-color:var(--blue); }
.signature-error { margin:0; color:var(--error); font-size:13px; font-weight:800; }
.acceptance-warning { display:flex; align-items:flex-start; gap:12px; padding:14px 16px; border:1px solid #f0d5a2; border-radius:14px; background:#fff8e8; color:#6d4b10; }
.acceptance-warning span { line-height:1.55; }
.acceptance-history h4 { margin:0 0 12px; font-size:18px; }
.acceptance-record { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:16px; border:1px solid var(--border); border-radius:16px; background:#fbfdff; }
.acceptance-copy { min-width:0; }
.acceptance-copy small { display:block; margin:7px 0; color:var(--muted); }
.reopen-note { margin:10px 0 0; color:#80520a; line-height:1.55; }
.print-actions { display:flex; justify-content:flex-end; gap:10px; margin-bottom:18px; }
.acceptance-receipt { max-width:900px; margin:0 auto; padding:32px; border:1px solid var(--border); border-radius:22px; background:#fff; }
.receipt-header { display:flex; align-items:center; justify-content:space-between; gap:24px; padding-bottom:24px; border-bottom:1px solid var(--border); }
.receipt-header img { width:min(280px,42%); }
.receipt-header h1 { margin:6px 0; font-size:32px; }
.receipt-header p { margin:0; color:var(--muted); }
.receipt-status { display:grid; gap:4px; margin:22px 0; padding:15px 17px; border-radius:14px; }
.receipt-status.is-valid { color:#0b6b49; background:#eaf9f3; border:1px solid #bfe7d7; }
.receipt-status.is-invalid { color:#8d2020; background:#fff0f0; border:1px solid #f4c2c2; }
.receipt-status span { line-height:1.5; }
.receipt-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.receipt-grid div { display:grid; gap:6px; padding:14px; border:1px solid var(--border); border-radius:13px; }
.receipt-section { margin-top:24px; padding-top:22px; border-top:1px solid var(--border); }
.receipt-section h2 { margin:0 0 12px; font-size:21px; }
.receipt-section h3 { margin:18px 0 8px; font-size:16px; }
.receipt-section p { color:var(--text); line-height:1.65; }
.signature-receipt { display:grid; place-items:center; min-height:190px; padding:18px; border:1px solid var(--border); border-radius:16px; background:#fbfdff; }
.signature-receipt img { display:block; max-width:100%; max-height:220px; }
.receipt-note { padding:14px; border-left:4px solid var(--blue); border-radius:8px; background:#f5f9ff; }
.hash-section dl { display:grid; gap:10px; }
.hash-section dl div { display:grid; gap:5px; }
.hash-section dt { font-size:12px; font-weight:800; color:var(--muted); text-transform:uppercase; }
.hash-section dd { margin:0; }
.hash-section code { display:block; overflow-wrap:anywhere; line-height:1.5; }
.receipt-warning { padding:18px; border:1px solid #f0d5a2; border-radius:14px; background:#fff8e8; }
.receipt-footer { margin-top:28px; padding-top:18px; border-top:1px solid var(--border); color:var(--muted); font-size:12px; text-align:center; }

@media (max-width:760px) {
  .acceptance-summary, .receipt-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .acceptance-record, .receipt-header { align-items:stretch; flex-direction:column; }
  .receipt-header img { width:min(280px,100%); }
  .acceptance-receipt { padding:20px; }
}
@media (max-width:520px) {
  .acceptance-summary, .receipt-grid { grid-template-columns:1fr; }
  .signature-heading { align-items:stretch; flex-direction:column; }
  .signature-heading .button { width:100%; }
  [data-signature-canvas] { min-height:150px; }
  .print-actions { flex-direction:column; }
}
@media print {
  .print-actions, .sidebar, .topbar { display:none !important; }
  .content { padding:0 !important; }
  .acceptance-receipt { max-width:none; padding:0; border:0; box-shadow:none; }
  .receipt-status { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}

/* Módulo 7: garantías digitales */
.warranty-filters { grid-template-columns: repeat(3,minmax(0,1fr)); }
.warranty-template-card { align-items:flex-start; }
.warranty-source-card { overflow:hidden; }
.warranty-action-card { display:flex; align-items:center; justify-content:space-between; gap:22px; border-color:#cfe0f7; background:linear-gradient(135deg,#f6faff,#fff); }
.warranty-action-card h3 { margin:5px 0 6px; font-size:22px; }
.warranty-action-card p { margin:0; color:var(--muted); line-height:1.55; }
.warranty-terms { display:grid; gap:10px; margin-top:16px; }
.warranty-terms h4 { margin:8px 0 0; color:var(--navy); font-size:14px; text-transform:uppercase; letter-spacing:.05em; }
.warranty-terms p { margin:0; color:var(--text); line-height:1.7; overflow-wrap:anywhere; }
.warranty-claim-form,.warranty-resolution-form { margin-top:18px; padding:18px; border:1px solid var(--border); border-radius:18px; background:#f9fbfe; }
.warranty-claim-record { align-items:flex-start; }
.warranty-claim-record p { margin:10px 0 0; line-height:1.65; }
.resolution-note { margin-top:14px; padding:14px; border-left:4px solid var(--blue); border-radius:10px; background:#f3f8ff; }
.resolution-note p { margin:7px 0; }
.warranty-hash { display:grid; gap:8px; margin-top:20px; padding:14px; border:1px solid var(--border); border-radius:14px; background:#f7faff; }
.warranty-hash span { color:var(--muted); font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }
.warranty-hash code { overflow-wrap:anywhere; line-height:1.55; }
.warranty-order-record { align-items:center; }
[data-warranty-days-field][hidden],[data-warranty-date-field][hidden] { display:none !important; }
@media (max-width:980px) { .warranty-filters { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:640px) {
  .warranty-filters { grid-template-columns:1fr; }
  .warranty-action-card,.warranty-order-record { align-items:stretch; flex-direction:column; }
  .warranty-action-card form,.warranty-action-card .button { width:100%; }
  .warranty-template-card { align-items:stretch; flex-direction:column; }
  .warranty-template-card .list-meta { justify-items:start; }
}

/* Módulo 8: certificados PDF, QR y verificación pública */
.certificate-filters{grid-template-columns:2fr repeat(2,minmax(0,1fr)) auto}
.certificate-source-grid,.certificate-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.certificate-form{margin-top:18px}
.certificate-evidence-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;border:1px solid var(--border);border-radius:18px;background:#f8fbff}
.certificate-evidence-option{display:flex;align-items:flex-start;gap:11px;padding:13px;border:1px solid #dbe6f5;border-radius:14px;background:#fff;cursor:pointer}
.certificate-evidence-option:has(input:checked){border-color:var(--blue);box-shadow:0 0 0 3px rgba(8,119,249,.1)}
.certificate-evidence-option input{margin-top:3px}
.certificate-evidence-option span{display:grid;gap:4px;min-width:0}
.certificate-evidence-option small{color:var(--muted);overflow-wrap:anywhere}
.certificate-selection-count{margin:0;color:var(--muted);font-size:13px;font-weight:750}
.certificate-hero{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:24px;align-items:center;background:linear-gradient(135deg,#f6faff,#fff)}
.certificate-qr-card{display:grid;place-items:center;gap:10px;padding:16px;border:1px solid var(--border);border-radius:18px;background:#fff;text-align:center}
.certificate-qr-card img{width:min(190px,100%);height:auto}
.certificate-qr-card small{color:var(--muted);overflow-wrap:anywhere}
.certificate-summary{margin:0;line-height:1.75;white-space:pre-wrap}
.certificate-order-record{align-items:center}
.danger-zone{border-color:#f0c6c6;background:#fffafa}
.public-body{margin:0;min-height:100vh;background:#f1f6fc;color:#10213d;font-family:Inter,Poppins,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.public-shell{width:min(980px,calc(100% - 28px));margin:0 auto;padding:30px 0 42px}
.public-brand{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}
.public-brand img{width:min(250px,52vw);height:auto}
.public-brand span{color:#607089;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.public-card{margin-top:16px;padding:24px;border:1px solid #dce7f4;border-radius:22px;background:#fff;box-shadow:0 18px 46px rgba(8,38,92,.08)}
.public-status-card{display:flex;align-items:flex-start;gap:17px;border-left:6px solid #0877f9}
.public-status-card.is-valid{border-left-color:#17a673}.public-status-card.is-invalid,.public-status-card.is-revoked{border-left-color:#d64545}
.public-status-icon{display:grid;place-items:center;flex:0 0 48px;height:48px;border-radius:50%;background:#eaf4ff;color:#0877f9;font-size:24px;font-weight:900}
.public-status-card.is-valid .public-status-icon{background:#eaf9f3;color:#137b57}.public-status-card.is-invalid .public-status-icon,.public-status-card.is-revoked .public-status-icon{background:#fff0f0;color:#b53131}
.public-status-card h1,.public-certificate-heading h1{margin:4px 0 7px;color:#08265c;line-height:1.15}.public-status-card p,.public-certificate-heading p{margin:0;color:#607089;line-height:1.6}
.public-certificate-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.public-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}
.public-facts div{display:grid;gap:6px;padding:14px;border:1px solid #e0e9f4;border-radius:14px;background:#f9fbfe}
.public-facts span{color:#607089;font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.06em}.public-facts strong{overflow-wrap:anywhere}
.public-section{margin-top:22px;padding-top:20px;border-top:1px solid #e4ebf4}.public-section h2{margin:0 0 12px;color:#08265c;font-size:20px}.public-section p{line-height:1.75;white-space:pre-wrap}
.public-warranty{display:grid;gap:9px;padding:16px;border-radius:15px;background:#f1f8ff;border:1px solid #cee2fa}.public-warranty p{margin:0}
.public-evidence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.public-evidence-card{overflow:hidden;border:1px solid #dce7f4;border-radius:16px;background:#fff}.public-evidence-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.public-evidence-card div{display:grid;gap:5px;padding:12px}.public-evidence-card small{color:#607089;overflow-wrap:anywhere}
.public-document-tile{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;border:1px solid #dce7f4;border-radius:15px;background:#f9fbfe}.public-document-tile div{display:grid;gap:5px}.public-document-tile small{color:#607089}
.public-hash{display:block;padding:12px;border-radius:12px;background:#f5f8fc;color:#44556f;font-size:12px;overflow-wrap:anywhere;line-height:1.6}
.public-footer{margin-top:24px;color:#607089;font-size:12px;text-align:center;line-height:1.6}
@media(max-width:820px){.certificate-source-grid,.certificate-columns{grid-template-columns:1fr}.certificate-hero{grid-template-columns:1fr}.certificate-qr-card{justify-self:stretch}.public-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.public-evidence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.certificate-filters,.certificate-evidence-picker,.public-facts,.public-evidence-grid{grid-template-columns:1fr}.certificate-order-record,.public-brand,.public-certificate-heading,.public-document-tile{align-items:stretch;flex-direction:column}.public-card{padding:18px;border-radius:18px}.public-status-card{gap:12px}.public-shell{width:min(100% - 20px,980px);padding-top:18px}.public-document-tile .button{width:100%}}

/* Módulo 9: recordatorios, mantenimiento y reseñas */
.reminder-filters{grid-template-columns:2fr repeat(4,minmax(0,1fr)) auto}
.reminder-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}
.reminder-summary-grid>div{display:grid;gap:7px;padding:15px;border:1px solid var(--border);border-radius:15px;background:#f9fbfe}
.reminder-summary-grid span:first-child{color:var(--muted);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.06em}
.message-preview{margin-top:18px;padding:18px;border:1px solid var(--border);border-radius:18px;background:#f8fbff}
.message-preview h3{margin:8px 0 12px;color:var(--navy)}
.message-preview pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;line-height:1.7}
.reminder-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.reminder-actions form{margin:0}
.communication-consent-summary{padding:14px;border:1px solid #cfe0f7;border-radius:14px;background:#f3f8ff;color:var(--text);font-weight:700}
.communication-consent-summary.is-blocked{border-color:#efcaca;background:#fff5f5;color:#922d2d}
.placeholder-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.placeholder-list code{padding:7px 10px;border:1px solid #d7e4f3;border-radius:10px;background:#f7faff;color:var(--blue);font-weight:800}
.communication-preference-list{display:grid;gap:16px}
.preference-card{padding:20px}
.preference-checks{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:14px;border:1px solid var(--border);border-radius:14px;background:#f9fbfe}
.preference-checks label{display:flex;align-items:center;gap:7px;font-weight:700}
.preference-checks input{width:auto;min-height:0}
.toggle-row{display:flex!important;align-items:center;gap:10px;padding:14px;border:1px solid var(--border);border-radius:14px;background:#f9fbfe}
.toggle-row input{width:auto;min-height:0}
.cron-command{display:block;padding:14px;border-radius:13px;background:#10213d;color:#fff;overflow-wrap:anywhere;line-height:1.6}
.inline-danger-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;padding:16px;border:1px solid #efcaca;border-radius:16px;background:#fff8f8}
.badge-reminder-pending{background:#eaf4ff;color:#0759c7}.badge-reminder-processing{background:#f1ecff;color:#6244b5}.badge-reminder-ready{background:#e9fbf4;color:#11724f}.badge-reminder-sent{background:#eaf9f3;color:#0b6b49}.badge-reminder-failed{background:#fff0f0;color:#a52d2d}.badge-reminder-cancelled,.badge-reminder-skipped{background:#f1f3f6;color:#536176}
[data-review-url][hidden],[data-maintenance-repeat][hidden]{display:none!important}
@media(max-width:1100px){.reminder-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.reminder-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.reminder-filters,.reminder-summary-grid,.inline-danger-form{grid-template-columns:1fr}.preference-checks{align-items:flex-start;flex-direction:column}.reminder-actions,.reminder-actions form,.reminder-actions .button{width:100%}}

/* Módulo 10: indicadores, auditoría y producción */
.dashboard-grid-wide{grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr)}
.status-matrix{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.status-matrix>div{padding:16px;border:1px solid #dce7f5;border-radius:16px;background:#f8fbff;display:flex;flex-direction:column;gap:6px}
.status-matrix span{font-size:.78rem;color:#607089;font-weight:700}
.status-matrix strong{font-size:1.55rem;color:#08265c}
.compact-list{display:flex;flex-direction:column;gap:8px}
.compact-list>a{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid #edf2f8;color:#10213d;text-decoration:none}
.compact-list>a:last-child{border-bottom:0}
.compact-list small,.table-card small{display:block;color:#607089;margin-top:3px}
.empty-state.compact{padding:18px}
.bar-chart{display:grid;grid-template-columns:repeat(6,minmax(48px,1fr));gap:12px;align-items:end;min-height:220px}
.bar-chart-item{height:210px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px;text-align:center}
.bar-chart-item progress{width:34px;height:145px;writing-mode:vertical-lr;direction:rtl;accent-color:#0877f9;border:0;border-radius:12px;overflow:hidden}
.bar-chart-item small{font-size:.72rem;color:#607089}
.bar-value{font-weight:800;color:#08265c}
.export-filter{align-items:end}
.export-actions{display:flex;flex-wrap:wrap;gap:8px;grid-column:1/-1}
.action-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:22px}
.action-card{background:#fff;border:1px solid #dce7f5;border-radius:22px;padding:22px;box-shadow:0 12px 35px rgba(8,38,92,.08);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px}
.action-card h3{margin:0 0 5px}.action-card p{margin:0;color:#607089}
.action-icon{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:#eaf4ff;color:#0877f9;font-size:1.4rem;font-weight:900}
.diagnostic-list{display:flex;flex-direction:column;gap:8px;margin:0 0 20px;max-height:430px;overflow:auto;padding-right:4px}
.diagnostic-list>div{display:flex;gap:10px;align-items:flex-start;padding:10px;border-radius:14px;background:#f8fbff}
.diagnostic-list strong,.diagnostic-list small{display:block}.diagnostic-list small{color:#607089;margin-top:2px}
.diagnostic-dot{width:10px;height:10px;border-radius:50%;margin-top:5px;flex:0 0 auto;background:#607089}
.diagnostic-dot.ok{background:#17a673}.diagnostic-dot.warning{background:#f2a93b}.diagnostic-dot.error{background:#d64545}
.hash-code{white-space:nowrap}
.audit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.code-list{margin:0;padding-left:20px;max-height:260px;overflow:auto}.code-list li{margin:7px 0;overflow-wrap:anywhere}
.metadata-preview{max-width:520px;white-space:normal;overflow-wrap:anywhere}
@media(max-width:1000px){.dashboard-grid-wide,.audit-grid{grid-template-columns:1fr}.status-matrix{grid-template-columns:repeat(2,minmax(0,1fr))}.action-card-grid{grid-template-columns:1fr}}
@media(max-width:640px){.status-matrix{grid-template-columns:1fr}.bar-chart{gap:6px}.bar-chart-item{height:180px}.bar-chart-item progress{height:115px;width:28px}.action-card{grid-template-columns:auto 1fr}.action-card .button{grid-column:1/-1;width:100%}.export-actions{flex-direction:column}.export-actions .button{width:100%}}
