:root{--ground:#0f1315;--surface:#161c1f;--surface-2:#1c2427;--surface-3:#232c30;--ink:#e7ecee;--ink-2:#9eacb2;--ink-3:#71818a;--rule:#2a3337;--rule-strong:#3c494e;--accent:#5fbcde;--accent-soft:#12313f;--accent-solid:#0e5c7f;--ok:#54c79a;--ok-soft:#0f2c22;--warn:#f0a85a;--warn-soft:#3a2a11;--crit:#f97066;--crit-soft:#3a1714;--f:"Archivo","Helvetica Neue",Arial,sans-serif;--m:"IBM Plex Mono",Consolas,monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--ground);color:var(--ink);font-family:var(--f);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}button{font-family:inherit;font-size:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:inherit}a{color:var(--accent);text-decoration:none}h1,h2,h3,h4{letter-spacing:-.02em;margin:0;line-height:1.2}h1{font-size:1.6rem;font-weight:700}h2{font-size:1.2rem;font-weight:600}h3{font-size:1rem;font-weight:600}.mono{font-family:var(--m)}.num{font-variant-numeric:tabular-nums}.eyebrow{font-family:var(--m);letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3);font-size:.66rem}.muted{color:var(--ink-2)}.dim{color:var(--ink-3)}.row{align-items:center;gap:12px;display:flex}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.stack{flex-direction:column;gap:12px;display:flex}.shell{flex-direction:column;min-height:100%;display:flex}.topbar{z-index:30;background:var(--surface);border-bottom:1px solid var(--rule);align-items:center;gap:18px;height:52px;padding:0 18px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.03em;font-size:1.05rem;font-weight:700}.brand span{color:var(--accent)}.nav{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.nav a{color:var(--ink-2);border-radius:2px;padding:6px 11px;font-size:.9rem;font-weight:500}.nav a:hover{background:var(--surface-2);color:var(--ink)}.nav a.active{background:var(--accent-soft);color:var(--accent)}.who{font-family:var(--m);color:var(--ink-3);text-align:right;font-size:.72rem;line-height:1.35}.who b{color:var(--ink);font-size:.78rem;display:block}.main{flex:1;width:100%;max-width:1500px;margin:0 auto;padding:22px 18px 60px}.panel{background:var(--surface);border:1px solid var(--rule)}.panel-h{border-bottom:1px solid var(--rule);align-items:center;gap:10px;padding:12px 16px;display:flex}.panel-b{padding:16px}.grid{gap:14px;display:grid}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}@media (max-width:1000px){.g2{grid-template-columns:1fr}}.btn{background:var(--surface-2);color:var(--ink);border:1px solid var(--rule-strong);border-radius:2px;padding:8px 14px;font-weight:500;transition:all .12s}.btn:hover{background:var(--surface-3)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff}.btn.primary:hover{filter:brightness(1.15)}.btn.ok{color:#fff;background:#106b48;border-color:#106b48}.btn.danger{border-color:var(--crit);color:var(--crit);background:0 0}.btn.ghost{border-color:var(--rule);background:0 0}.btn.lg{padding:13px 22px;font-size:1.02rem;font-weight:600}.btn.sm{padding:5px 10px;font-size:.84rem}.btn.block{width:100%;display:block}label.f{margin-bottom:10px;display:block}label.f>span{font-family:var(--m);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px;font-size:.65rem;display:block}input.i,select.i,textarea.i{background:var(--ground);border:1px solid var(--rule-strong);width:100%;color:var(--ink);border-radius:2px;outline:none;padding:8px 10px}input.i:focus,select.i:focus,textarea.i:focus{border-color:var(--accent)}textarea.i{font-family:var(--m);resize:vertical;font-size:.84rem}input.i.ok{border-color:var(--ok)}input.i.warnb{border-color:var(--warn)}input.i.bad{border-color:var(--crit)}.chip{font-family:var(--m);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--rule-strong);color:var(--ink-2);align-items:center;gap:6px;padding:3px 8px;font-size:.66rem;display:inline-flex}.chip.ok{color:var(--ok);border-color:var(--ok);background:var(--ok-soft)}.chip.warn{color:var(--warn);border-color:var(--warn);background:var(--warn-soft)}.chip.crit{color:var(--crit);border-color:var(--crit);background:var(--crit-soft)}.chip.acc{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}table.t{border-collapse:collapse;width:100%;font-size:.88rem}table.t th{text-align:left;font-family:var(--m);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--rule);padding:8px 10px;font-size:.63rem;font-weight:500}table.t td{border-bottom:1px solid var(--rule);color:var(--ink-2);padding:8px 10px}table.t tr:hover td{background:var(--surface-2)}table.t td b{color:var(--ink);font-weight:600}.tw{overflow-x:auto}.tiles{background:var(--rule);border:1px solid var(--rule);grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;display:grid}.tile{background:var(--surface);padding:12px 14px}.tile .k{font-family:var(--m);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-size:.62rem}.tile .v{letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:2px;font-size:1.7rem;font-weight:700}.tile .s{color:var(--ink-3);font-size:.76rem;font-family:var(--m)}.tile.acc .v{color:var(--accent)}.tile.ok .v{color:var(--ok)}.tile.warn .v{color:var(--warn)}.tile.crit .v{color:var(--crit)}.seatmap{background:var(--ground);border:1px solid var(--rule);padding:14px;overflow-x:auto}.seat-rows{flex-direction:column;gap:3px;min-width:max-content;display:flex}.seat-row{align-items:center;gap:3px;display:flex}.seat-row .rn{text-align:right;width:26px;font-family:var(--m);color:var(--ink-3);padding-right:5px;font-size:.68rem}.seat{border:1px solid var(--rule-strong);background:var(--surface-2);width:30px;height:28px;color:var(--ink-2);font-size:.72rem;font-family:var(--m);border-radius:2px;justify-content:center;align-items:center;transition:all .1s;display:flex}.seat:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.seat.aisle{margin-right:14px}.seat.taken{background:var(--surface-3);color:var(--ink-3);border-color:var(--rule);cursor:not-allowed}.seat.blocked{color:var(--rule-strong);cursor:not-allowed;background:0 0;border-style:dashed}.seat.exit{border-color:var(--warn);color:var(--warn)}.seat.sel{background:var(--accent-solid);border-color:var(--accent);color:#fff;font-weight:600}.seat.biz{border-top:2px solid var(--accent)}.legend{color:var(--ink-3);font-size:.74rem;font-family:var(--m);flex-wrap:wrap;gap:14px;margin-top:12px;display:flex}.legend i{border:1px solid var(--rule-strong);vertical-align:-1px;width:11px;height:11px;margin-right:5px;display:inline-block}.bp{color:#10171a;border:1px solid var(--rule);background:#fff;grid-template-columns:1fr auto;display:grid}@media (max-width:700px){.bp{grid-template-columns:1fr}}.bp-main{padding:18px 20px}.bp-stub{background:#f2f5f6;border-left:2px dashed #bcc7cb;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-width:190px;padding:18px 20px;display:flex}.bp-route{align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.bp-route .code{letter-spacing:-.03em;font-size:2.1rem;font-weight:700}.bp-route .arrow{color:#7d8f95}.bp-name{letter-spacing:-.01em;margin-bottom:14px;font-size:1.35rem;font-weight:600}.bp-fields{grid-template-columns:repeat(auto-fit,minmax(78px,1fr));gap:12px;display:grid}.bp-fields .k{font-family:var(--m);letter-spacing:.12em;text-transform:uppercase;color:#6c7d83;font-size:.58rem}.bp-fields .v{font-variant-numeric:tabular-nums;font-size:1.2rem;font-weight:600}.bp-bcbp{font-family:var(--m);color:#7d8f95;word-break:break-all;margin-top:14px;font-size:.6rem;line-height:1.5}.gate{max-width:460px;margin:0 auto}.gate-result{text-align:center;border:2px solid;padding:22px}.gate-result.ACCEPTED{background:var(--ok-soft);border-color:var(--ok)}.gate-result.WRONG_FLIGHT,.gate-result.INVALID_SIGNATURE,.gate-result.CANCELLED,.gate-result.NOT_FOUND{background:var(--crit-soft);border-color:var(--crit)}.gate-result.SUPERSEDED,.gate-result.ALREADY_BOARDED{background:var(--warn-soft);border-color:var(--warn)}.gate-result .big{letter-spacing:-.02em;margin:6px 0;font-size:1.5rem;font-weight:700}.gate-result .seat{letter-spacing:-.04em;font-size:3rem;font-weight:700;line-height:1}.alert{background:var(--surface-2);border-left:3px solid;padding:10px 13px;font-size:.88rem}.alert.warn{border-color:var(--warn);color:var(--warn)}.alert.crit{border-color:var(--crit);color:var(--crit)}.alert.ok{border-color:var(--ok);color:var(--ok)}.alert.info{border-color:var(--accent);color:var(--accent)}.kv{grid-template-columns:auto 1fr;gap:5px 14px;font-size:.88rem;display:grid}.kv .k{font-family:var(--m);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding-top:3px;font-size:.66rem}.diff-old{color:var(--warn);opacity:.75;text-decoration:line-through}.diff-new{color:var(--ok);font-weight:600}.modal-bg{z-index:100;background:#06090ac7;justify-content:center;align-items:flex-start;padding:30px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border:1px solid var(--rule-strong);width:100%;max-width:900px}.tabs{border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:2px;margin-bottom:16px;display:flex}.tabs button{color:var(--ink-3);background:0 0;border:none;border-bottom:2px solid #0000;padding:9px 14px;font-weight:500}.tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.center{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}video.cam{border:1px solid var(--rule);aspect-ratio:4/3;object-fit:cover;background:#000;width:100%}.scan-target{position:relative}.scan-target .frame{pointer-events:none;border:2px dashed #5fbcde8c;position:absolute;inset:14% 8% 46%}.scan-target .mrzband{pointer-events:none;border:2px solid #5fbcdee6;height:22%;position:absolute;bottom:14%;left:8%;right:8%}.pill{font-family:var(--m);background:var(--surface-3);color:var(--ink-2);border-radius:2px;padding:2px 6px;font-size:.65rem}
