:root {
  --ivory:#fcf8f5; --paper:#fffdf8; --ink:#25302f; --muted:#5f6f69;
  --petroleum:#154f5f; --petroleum2:#1e6978; --clay:#b46a54; --sage:#899d7c;
  --sage2:#dee7d8; --sand:#c8a95d; --line:#e9ded4; --danger:#8d3f2e;
}
*{box-sizing:border-box} html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility} body{margin:0;font-family:"Source Sans 3",system-ui,sans-serif;color:var(--ink);background:radial-gradient(circle at top left,rgba(216,149,125,.17),transparent 34rem),radial-gradient(circle at 85% 5%,rgba(156,175,158,.25),transparent 32rem),linear-gradient(180deg,var(--ivory),var(--paper));min-height:100vh} a{color:inherit} a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--clay);outline-offset:4px}.public-shell,.admin-wrap{width:min(1120px,calc(100% - 2rem));margin:0 auto}.public-header,.admin-top{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid rgba(21,79,95,.11);background:rgba(252,248,245,.86);backdrop-filter:blur(14px);position:sticky;top:0;z-index:10;padding-inline:max(1rem,calc((100vw - 1120px)/2))}.brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none}.brand-mark{width:44px;height:44px;border-radius:16px;background:rgba(255,253,248,.88);border:1px solid rgba(21,79,95,.14);display:grid;place-items:center;box-shadow:0 18px 40px rgba(21,79,95,.14);overflow:hidden;padding:5px}.brand-mark img{width:100%;height:100%;object-fit:contain;display:block}.brand b{display:block;font-family:Fraunces,serif;font-size:1.2rem;color:var(--petroleum)}.brand small{display:block;margin-top:-2px;color:var(--muted);text-transform:uppercase;letter-spacing:.18em;font-size:.7rem;font-weight:800}.admin-nav{display:flex;gap:8px;flex-wrap:wrap}.admin-nav a{padding:10px 12px;border-radius:999px;text-decoration:none;font-weight:800;color:var(--petroleum)}.admin-nav a:hover,.admin-nav .nav-primary{background:rgba(156,175,158,.18)}.hero-card,.panel,.cert-card,.form-card,.table-card,.preview-card{background:rgba(255,249,241,.84);border:1px solid rgba(15,61,62,.12);border-radius:28px;box-shadow:0 24px 80px rgba(15,61,62,.12)}.public-main{padding:clamp(3rem,6vw,6rem) 0}.hero-card{padding:clamp(1.5rem,5vw,4rem);display:grid;gap:28px}.eyebrow{display:inline-flex;width:fit-content;border:1px solid rgba(15,61,62,.16);border-radius:999px;background:rgba(255,249,241,.72);color:var(--petroleum2);padding:.45rem .75rem;font-size:.82rem;font-weight:900;letter-spacing:.02em}h1,h2,h3{font-family:Fraunces,Georgia,serif;color:var(--petroleum);letter-spacing:-.04em;margin:0}.public-title{font-size:clamp(3rem,8vw,6.2rem);line-height:.9;max-width:900px}.public-subtitle{font-size:1.2rem;line-height:1.7;color:rgba(37,48,47,.76);max-width:760px}.grid-2{display:grid;gap:20px;grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}.cert-card{padding:22px}.cert-card strong{display:block;color:var(--petroleum);font-size:.9rem;text-transform:uppercase;letter-spacing:.14em}.cert-card span{display:block;margin-top:5px;font-size:1.12rem;font-weight:800}.status{display:inline-flex;align-items:center;width:fit-content;gap:8px;border-radius:999px;padding:9px 13px;font-weight:900}.status.active{background:rgba(156,175,158,.24);color:var(--petroleum)}.status.revoked,.status.error{background:rgba(184,100,76,.14);color:var(--danger)}.btn-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}.no-margin{margin-top:0}.btn,button.btn{border:0;min-height:48px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:12px 18px;background:var(--petroleum);color:var(--paper);font-weight:900;text-decoration:none;cursor:pointer;box-shadow:0 18px 40px rgba(15,61,62,.20)}.btn:hover{transform:translateY(-1px)}.btn.secondary{background:rgba(255,249,241,.78);color:var(--petroleum);border:1px solid rgba(15,61,62,.18);box-shadow:none}.btn.subtle{background:transparent;color:var(--petroleum);border:1px dashed rgba(15,61,62,.24);box-shadow:none}.btn.danger{background:var(--clay)}.btn[disabled]{opacity:.65;cursor:not-allowed;transform:none}.small-muted{color:var(--muted);font-size:.95rem;line-height:1.5}.admin-wrap{padding:32px 0 70px}.admin-title{font-size:clamp(2.2rem,5vw,4.5rem);line-height:.95;margin:10px 0}.page-head{display:flex;align-items:end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:14px 0 24px}.form-card,.table-card{padding:clamp(18px,3vw,30px)}.form-grid{display:grid;gap:18px}.search-grid{grid-template-columns:1fr auto auto;align-items:end}.form-row{display:grid;gap:8px}label{font-weight:900;color:var(--petroleum)}.required{color:var(--clay)}input,textarea,select{width:100%;min-height:48px;border-radius:16px;border:1px solid rgba(15,61,62,.18);background:rgba(255,255,255,.75);color:var(--ink);padding:12px 14px;font:inherit}textarea{min-height:120px;resize:vertical}.field-hint,.field-error{font-size:.88rem;line-height:1.35}.field-hint{color:var(--muted)}.field-error{color:var(--danger);font-weight:800}.has-error input,.has-error textarea,.has-error select{border-color:var(--danger);box-shadow:0 0 0 3px rgba(184,100,76,.12)}.flash{border-radius:18px;padding:14px 16px;margin:0 0 16px;font-weight:800}.flash.success{background:rgba(156,175,158,.24);color:var(--petroleum)}.flash.error{background:rgba(184,100,76,.14);color:var(--danger)}.flash.info,.flash.warning{background:rgba(215,190,130,.22);color:#65501d}.toast{position:fixed;right:18px;bottom:18px;z-index:90;min-width:220px;max-width:min(420px,calc(100% - 2rem));padding:14px 16px;border-radius:18px;background:var(--petroleum);color:var(--paper);box-shadow:0 24px 80px rgba(15,61,62,.23);font-weight:900;opacity:0;transform:translateY(12px);pointer-events:none;transition:.22s}.toast.is-visible{opacity:1;transform:translateY(0)}table{width:100%;border-collapse:collapse}th,td{text-align:left;border-bottom:1px solid rgba(15,61,62,.10);padding:14px 10px;vertical-align:top}th{color:var(--petroleum);font-size:.86rem;text-transform:uppercase;letter-spacing:.12em}td.actions{min-width:260px}.inline-actions{display:flex;gap:8px;flex-wrap:wrap}.inline-actions a,.inline-actions button{border:1px solid rgba(15,61,62,.15);background:rgba(255,249,241,.75);color:var(--petroleum);padding:8px 10px;border-radius:999px;font-weight:900;text-decoration:none;cursor:pointer}.inline-actions .danger-link{color:var(--danger);border-color:rgba(184,100,76,.22)}.copy-box{word-break:break-all;border:1px solid rgba(15,61,62,.12);background:rgba(255,255,255,.60);padding:12px;border-radius:16px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem}.qr-preview{background:white;border:1px solid rgba(15,61,62,.12);border-radius:18px;padding:12px;width:180px;height:180px;object-fit:contain}.warning{background:rgba(215,190,130,.22);border:1px solid rgba(215,190,130,.42);border-radius:18px;padding:16px;color:#5e4b18;font-weight:700}.preview-card{padding:18px;display:grid;gap:8px}.preview-card span{font-family:Fraunces,serif;color:var(--petroleum);font-size:1.5rem;font-weight:800}.preview-card small{color:var(--muted);font-weight:700}.table-scroll{overflow:auto}.table-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:end}.danger-zone{border-color:rgba(184,100,76,.28)}
@media (max-width:820px){.grid-2,.grid-3,.search-grid{grid-template-columns:1fr}.admin-top,.public-header{align-items:flex-start;flex-direction:column;padding-block:14px}.public-title{font-size:clamp(2.6rem,14vw,4.5rem)}table,thead,tbody,tr,th,td{display:block}thead{display:none}tr{border-bottom:1px solid rgba(15,61,62,.14);padding:12px 0}td{border:0;padding:8px 0}td:before{content:attr(data-label);display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:900}.inline-actions a,.inline-actions button{width:100%;justify-content:center}.btn-row .btn{width:100%}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.001ms!important;animation-duration:.001ms!important;scroll-behavior:auto!important}}

.secondary-danger {
  background: rgba(131, 42, 42, .08) !important;
  color: #832A2A !important;
  border-color: rgba(131, 42, 42, .26) !important;
  box-shadow: none !important;
}
.secondary-danger:hover {
  background: rgba(131, 42, 42, .14) !important;
}
.field-help {
  display: block;
  margin-top: .4rem;
  color: var(--muted);
  font-size: .92rem;
}

/* Producción certificados: vigencia, estados y formularios ampliados */
.grid-4{display:grid;gap:16px;grid-template-columns:repeat(4,minmax(0,1fr))}
.subsection-card{border:1px solid rgba(15,61,62,.12);background:rgba(255,253,248,.64);border-radius:22px;padding:18px;display:grid;gap:14px}.subsection-card h2{font-size:1.35rem;letter-spacing:-.02em}.status.expired{background:rgba(200,169,93,.22);color:#6b531d}.validity-pill{display:inline-flex;border-radius:999px;padding:8px 12px;font-weight:900;background:rgba(200,169,93,.18);color:#604c1b}.field-help{font-size:.88rem;line-height:1.35;color:var(--muted)}[data-custom-validity-row][hidden]{display:none!important}.secondary-danger{border-color:rgba(184,100,76,.28)!important;color:var(--danger)!important}.certificate-state-note{font-weight:800;color:var(--muted);line-height:1.45}.public-title .status-word{white-space:nowrap}@media(max-width:920px){.grid-4,.grid-3,.grid-2,.search-grid{grid-template-columns:1fr}.public-title{font-size:clamp(2.4rem,13vw,4rem)}.admin-top,.public-header{align-items:flex-start;flex-direction:column;padding-block:14px}.admin-nav{width:100%}.admin-nav a{font-size:.92rem}.table-scroll table,.table-scroll thead,.table-scroll tbody,.table-scroll th,.table-scroll td,.table-scroll tr{display:block}.table-scroll thead{display:none}.table-scroll tr{border:1px solid rgba(15,61,62,.11);border-radius:18px;margin:0 0 14px;padding:10px;background:rgba(255,253,248,.66)}.table-scroll td{border:0;padding:8px}.table-scroll td:before{content:attr(data-label);display:block;color:var(--petroleum);font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;font-weight:900}.inline-actions{gap:6px}.inline-actions a,.inline-actions button{font-size:.9rem}.btn-row{gap:9px}.btn{width:100%}}
