:root{--bg: #0e1015;--bg-elevated: #171a21;--bg-ticket: #1c1f27;--gold: #e3b23c;--gold-soft: #f2d68a;--velvet: #a23b4c;--velvet-soft: #c95a6c;--cream: #f2efe9;--muted: #9aa1ac;--border: #2a2e38;--font-display: "Fraunces", serif;--font-body: "Inter", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:#05060a;color:var(--cream);font-family:var(--font-body);-webkit-font-smoothing:antialiased;position:relative;overflow-x:hidden}.night-sky{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse at 15% 20%,rgba(227,178,60,.05),transparent 55%),linear-gradient(180deg,#05060a,#0b0e16 45%,#12121b)}.night-sky__moon{position:absolute;top:8%;right:12%;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fdf6e3,var(--gold-soft) 55%,var(--gold) 100%);box-shadow:0 0 60px 18px #f2d68a40,0 0 120px 40px #e3b23c14;animation:night-sky-drift 40s ease-in-out infinite}.night-sky__stars,.night-sky__stars:after{position:absolute;top:0;right:0;bottom:0;left:0;background-repeat:repeat;background-image:radial-gradient(1.5px 1.5px at 20px 30px,#f2efe9,transparent),radial-gradient(1px 1px at 90px 80px,#f2efe9,transparent),radial-gradient(1.5px 1.5px at 160px 120px,#f2d68a,transparent),radial-gradient(1px 1px at 220px 50px,#f2efe9,transparent),radial-gradient(1.5px 1.5px at 280px 150px,#f2efe9,transparent),radial-gradient(1px 1px at 320px 30px,#f2d68a,transparent),radial-gradient(1.5px 1.5px at 40px 170px,#f2efe9,transparent);background-size:340px 200px;animation:night-sky-twinkle 4s ease-in-out infinite alternate}.night-sky__stars:after{content:"";background-position:170px 90px;animation-delay:2s}@keyframes night-sky-twinkle{0%{opacity:.35}to{opacity:.9}}@keyframes night-sky-drift{0%,to{transform:translateY(0)}50%{transform:translateY(14px)}}#root{position:relative;z-index:1}@media (prefers-reduced-motion: reduce){.night-sky__moon,.night-sky__stars,.night-sky__stars:after{animation:none}}button,.btn{font-family:var(--font-body);font-size:.95rem;font-weight:600;color:#1a1406;background:linear-gradient(180deg,var(--gold-soft),var(--gold));border:1px solid rgba(242,214,138,.6);border-radius:10px;padding:.6rem 1.1rem;cursor:pointer;box-shadow:0 2px 10px #e3b23c40;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}button:hover,.btn:hover{filter:brightness(1.08);box-shadow:0 4px 16px #e3b23c66;transform:translateY(-1px)}button:active,.btn:active{transform:translateY(0)}button:disabled{opacity:.5;cursor:not-allowed;filter:none;transform:none}button.btn--outline{background:transparent;color:var(--gold-soft);border:1px solid var(--gold);box-shadow:none}.navbar__auth--menu{position:relative}.avatar-button{width:2.4rem;height:2.4rem;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:1.1rem}.avatar-menu{position:absolute;top:calc(100% + .6rem);right:0;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;padding:.9rem;display:flex;flex-direction:column;gap:.7rem;min-width:200px;box-shadow:0 8px 24px #0006;z-index:10}.avatar-menu__email{color:var(--muted);font-size:.85rem;word-break:break-all}a{color:inherit}.app__content{max-width:960px;margin:0 auto;padding:2.5rem 1.5rem 5rem}.navbar{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);background:#171a21b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:relative;z-index:2}.navbar__brand{display:flex;align-items:center;gap:.6rem;font-family:var(--font-display);font-size:1.15rem;font-weight:600;letter-spacing:.01em}.navbar__dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--gold);box-shadow:0 0 8px 2px #e3b23c8c}.navbar__links{display:flex;gap:1.75rem;font-size:.95rem}.navbar__links a{text-decoration:none;color:var(--muted);padding-bottom:.3rem;border-bottom:2px solid transparent;transition:color .15s ease,border-color .15s ease}.navbar__links a:hover{color:var(--cream)}.navbar__links a.is-active{color:var(--gold-soft);border-color:var(--gold)}.hero{padding:2.5rem 0 3rem;border-bottom:1px dashed var(--border);margin-bottom:2.5rem}.hero__eyebrow{color:var(--velvet-soft);font-size:.9rem;margin:0 0 .6rem}.hero__title{font-family:var(--font-display);font-size:clamp(2rem,4vw,2.85rem);font-weight:600;line-height:1.15;margin:0 0 .75rem;max-width:20ch}.hero__subtitle{color:var(--muted);font-size:1.05rem;max-width:42ch;margin:0}.page-header{margin-bottom:2rem}.page-header h1{font-family:var(--font-display);font-size:1.9rem;margin:0 0 .4rem}.page-header p{color:var(--muted);margin:0}.ticket-grid{display:grid;gap:1.25rem}.ticket{display:grid;grid-template-columns:1fr auto;background:var(--bg-ticket);border:1px solid var(--border);border-radius:14px;overflow:hidden;position:relative}.ticket__main{padding:1.4rem 1.6rem}.ticket__sala{color:var(--gold-soft);font-size:.85rem;margin:0 0 .35rem}.ticket__pelicula{font-family:var(--font-display);font-size:1.4rem;margin:0 0 .35rem}.ticket__horario{color:var(--muted);margin:0;font-size:.92rem}.ticket__stub{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;padding:1.4rem 1.6rem;min-width:150px;border-left:2px dashed var(--border)}.ticket__stub:before,.ticket__stub:after{content:"";position:absolute;left:-8px;width:16px;height:16px;border-radius:50%;background:var(--bg)}.ticket__stub:before{top:-8px}.ticket__stub:after{bottom:-8px}.ticket__asientos{font-family:var(--font-display);font-size:1.6rem;margin:0;color:var(--gold-soft)}.ticket__asientos-label{margin:0;color:var(--muted);font-size:.8rem}.ticket__cta{margin-top:.5rem;text-decoration:none;background:var(--velvet);color:var(--cream);padding:.45rem 1.1rem;border-radius:999px;font-size:.9rem;transition:background .15s ease}.ticket__cta:hover{background:var(--velvet-soft)}.reserva-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.reserva-item{display:flex;align-items:center;justify-content:space-between;background:var(--bg-ticket);border:1px solid var(--border);border-radius:12px;padding:1rem 1.25rem}.reserva-item__pelicula{margin:0 0 .2rem;font-weight:600}.reserva-item__detalle{margin:0;color:var(--muted);font-size:.88rem}.form{display:flex;flex-direction:column;gap:1.25rem;max-width:360px}.form__field{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;color:var(--muted)}.form__field input{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:.65rem .8rem;color:var(--cream);font-size:1rem}.form__field input:focus{outline:2px solid var(--gold);outline-offset:1px}.btn{border:none;border-radius:999px;padding:.7rem 1.4rem;font-size:.95rem;cursor:pointer;transition:opacity .15s ease}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--primary{background:var(--velvet);color:var(--cream)}.btn--primary:hover:not(:disabled){background:var(--velvet-soft)}.btn--ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}.btn--ghost:hover{color:var(--cream);border-color:var(--muted)}.status-banner{padding:.8rem 1.1rem;border-radius:10px;font-size:.92rem;margin-bottom:1.5rem;border:1px solid transparent}.status-banner--cargando{background:#9aa1ac1a;color:var(--muted)}.status-banner--vacio{background:#9aa1ac1a;color:var(--muted);border-color:var(--border)}.status-banner--exito{background:#42a36e1f;color:#7fd7a3;border-color:#42a36e59}.status-banner--error,.status-banner--red,.status-banner--validacion{background:#a23b4c1f;color:var(--velvet-soft);border-color:#a23b4c59}.status-banner--no-autenticado,.status-banner--sin-permiso{background:#e3b23c1f;color:var(--gold-soft);border-color:#e3b23c59}.status-banner--no-encontrado{background:#9aa1ac1f;color:var(--muted);border-color:var(--border)}@media (max-width: 560px){.ticket{grid-template-columns:1fr}.ticket__stub{border-left:none;border-top:2px dashed var(--border);flex-direction:row;justify-content:space-between}.ticket__stub:before,.ticket__stub:after{left:auto;top:-8px}.ticket__stub:before{left:-8px}.ticket__stub:after{right:-8px}}
