:root{--ink:#161a22;--mut:#5f6878;--sheet:#fff;--mist:#f0f2f5;--line:#e3e6eb;--bg:#f4f5f7;--pc:#1f3a5f;--bad:#c0392b;
 --stage:color-mix(in srgb,var(--pc) 16%,var(--bg));
 --head:ui-rounded,"SF Pro Rounded","Avenir Next Rounded",Nunito,"Segoe UI",system-ui,sans-serif;--body:system-ui,-apple-system,"Segoe UI",sans-serif}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ink:#eef1f6;--mut:#9aa3b2;--sheet:#1a1d23;--mist:#262a32;--line:#30353f;--bg:#101216;--pc:#7fa6d8;--bad:#ff7b6b;
 --stage:color-mix(in srgb,#1f3a5f 55%,var(--bg))}}
:root[data-theme=dark]{--ink:#eef1f6;--mut:#9aa3b2;--sheet:#1a1d23;--mist:#262a32;--line:#30353f;--bg:#101216;--pc:#7fa6d8;--bad:#ff7b6b;
 --stage:color-mix(in srgb,#1f3a5f 55%,var(--bg))}
:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--sheet);color:var(--ink);font:15px/1.5 var(--body);-webkit-font-smoothing:antialiased}

.page{min-height:100vh;display:grid;grid-template-columns:minmax(380px,560px) 1fr}

/* ---------- lado do login ---------- */
.lock{display:flex;flex-direction:column;gap:36px;padding:32px 56px 40px;background:var(--sheet);position:relative;z-index:1;box-shadow:0 0 60px rgba(0,0,0,.10)}
.brand{display:flex;align-items:center;gap:10px;font:700 16px var(--head)}
.brand svg{color:var(--pc)}
.copy{margin-top:auto}
.badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:var(--mist);font:600 12.5px var(--head);color:var(--mut)}
.badge i{width:7px;height:7px;border-radius:50%;background:#2eaa62;box-shadow:0 0 0 3px color-mix(in srgb,#2eaa62 25%,transparent)}
h1{font:800 clamp(30px,3.4vw,42px)/1.08 var(--head);letter-spacing:-.02em;margin:18px 0 14px;text-wrap:balance}
.lead{color:var(--mut);font-size:16.5px;margin:0;max-width:40ch}

.card{background:var(--mist);border-radius:22px;padding:22px}
#msg{margin:0 0 14px;font:600 14.5px var(--head);color:var(--ink)}
.form{display:grid;gap:8px}
button{border:0;cursor:pointer;font:700 16px var(--head)}
#go{height:54px;border-radius:14px;display:flex;align-items:center;justify-content:center;gap:12px;
 background:var(--sheet);color:var(--ink);box-shadow:0 0 0 1px var(--line),0 6px 18px -8px rgba(16,24,40,.25);
 transition:transform .15s ease,box-shadow .15s ease}
#go:hover{transform:translateY(-1px);box-shadow:0 0 0 1px var(--line),0 12px 24px -10px rgba(16,24,40,.35)}
#go:active{transform:none}
#go[disabled]{opacity:.65;cursor:progress;transform:none}
#go[disabled] .g{animation:spin 1s linear infinite}
#go[hidden],button[hidden]{display:none}
button:focus-visible{outline:none;box-shadow:0 0 0 2px var(--mist),0 0 0 4px var(--pc)}
button.alt{height:44px;border-radius:12px;background:transparent;color:var(--mut);font-weight:600}
button.alt:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}
.err{color:var(--bad);font-size:14px;text-align:center}
.err:not(:empty){padding-top:4px}

.points{list-style:none;margin:auto 0 0;padding:0;display:grid;gap:10px;color:var(--mut);font-size:13.5px}
.points li{display:flex;align-items:center;gap:10px}
.points svg{flex:none;width:18px;height:18px;fill:none;stroke:var(--pc);stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}

/* ---------- palco com os cartões ---------- */
.stage{position:relative;overflow:hidden;display:grid;place-items:center;background:
 radial-gradient(60% 50% at 70% 30%,color-mix(in srgb,var(--pc) 30%,transparent),transparent 70%),
 radial-gradient(50% 45% at 30% 80%,color-mix(in srgb,#c8553d 18%,transparent),transparent 70%),var(--stage)}
.stack{position:relative;width:300px;height:420px}
.pass{position:absolute;inset:0;border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:14px;color:#fff;
 font:500 13px var(--body);box-shadow:0 30px 60px -20px rgba(10,20,40,.45),0 0 0 1px rgba(255,255,255,.06) inset;animation:float 7s ease-in-out infinite}
.pass small{display:block;font:700 9.5px var(--head);letter-spacing:.08em;opacity:.7;margin-bottom:2px}
.ph{display:flex;justify-content:space-between;align-items:flex-start}
.ph b{font:800 17px var(--head)}
.ph span{font:700 9.5px/1.3 var(--head);letter-spacing:.08em;text-align:right;opacity:.85}
.ph em{font:700 17px var(--head);font-style:normal;letter-spacing:0}
.pr{display:flex;justify-content:space-between;gap:10px;font:600 14px var(--head)}
.bar{margin-top:auto;height:62px;border-radius:8px;padding:10px 14px;background:#fff;background-clip:padding-box;position:relative}
.bar::after{content:"";position:absolute;inset:10px 14px;background:repeating-linear-gradient(90deg,#111 0 2px,transparent 2px 4px,#111 4px 5px,transparent 5px 8px,#111 8px 11px,transparent 11px 12px)}

.p-flight{background:linear-gradient(160deg,#2a4e7e,#1f3a5f 60%,#182e4b);transform:rotate(4deg) translate(36px,10px);z-index:3}
.route{display:flex;align-items:center;justify-content:space-between;gap:10px}
.route strong{display:block;font:800 40px/1 var(--head);letter-spacing:-.02em}
.route small{opacity:.75;font-size:12px}
.route div:last-child{text-align:right}
.route svg{flex:1;height:12px;opacity:.7}

.p-event{background:linear-gradient(160deg,#d0664b,#b4452f);transform:rotate(-7deg) translate(-70px,-6px);z-index:2;animation-delay:-2.3s}
.ev strong{display:block;font:800 26px/1.1 var(--head);letter-spacing:-.01em}
.qr{margin:auto auto 0;width:96px;height:96px;padding:8px;background:#fff;border-radius:10px}

.p-store{background:linear-gradient(160deg,#2c2f36,#15171b);transform:rotate(-16deg) translate(-150px,-40px);z-index:1;animation-delay:-4.6s}
.strip{border-radius:12px;padding:16px;background:linear-gradient(120deg,#c9a24a,#f0d78c 45%,#b98a2c);color:#2a2008;display:flex;flex-direction:column}
.strip span{font:700 11px var(--head);letter-spacing:.06em;text-transform:uppercase;opacity:.75}
.strip strong{font:800 30px/1.1 var(--head)}

@keyframes float{0%,100%{translate:0 0}50%{translate:0 -10px}}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.pass,#go[disabled] .g{animation:none}}

/* ---------- ecrãs estreitos ---------- */
@media (max-width:900px){
 .page{grid-template-columns:1fr;grid-template-rows:auto 1fr}
 .stage{order:-1;height:300px}
 .stack{transform:scale(.6) translateX(40px);transform-origin:center 55%}
 .lock{box-shadow:none;padding:28px 20px 32px;gap:28px;border-radius:24px 24px 0 0;margin-top:-24px}
 .copy{margin-top:0}
 .brand{display:none}
}
:root[data-motion=reduce] *{animation:none!important;transition:none!important}
