/* Sin fuentes externas: rápida y compatible con una CSP restrictiva. */
:root{color-scheme:light;--ink:#292a2c;--muted:#77777a;--paper:#f8f7f3;--line:#e6e5e1;--silver:#e8ebec;--green:#d0eedc;--red:#f6cdd0;--amber:#fce8c2;--violet:#dbe0fb;--white:#fff;--shadow:0 14px 42px rgba(32,33,35,.075)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:'DM Sans',system-ui,sans-serif;background:var(--paper);color:var(--ink)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.46}a{color:inherit}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:'Outfit','DM Sans',sans-serif;letter-spacing:-.032em}h1{font-size:clamp(2.15rem,5vw,3.5rem);line-height:1.08;margin-bottom:16px}h2{font-size:1.45rem;margin-bottom:9px}h3{font-size:1.1rem;margin-bottom:6px}.muted{color:var(--muted)}.small{font-size:.85rem}.tiny{font-size:.73rem}.text-center{text-align:center}.bold{font-weight:800}
.page-bg{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1}.page-bg span{position:absolute;display:block;filter:blur(14px);border-radius:50%;opacity:.52}.page-bg span:nth-child(1){width:34vw;height:34vw;left:-12vw;top:7vh;background:#e4ebe8}.page-bg span:nth-child(2){width:30vw;height:30vw;right:-12vw;top:24vh;background:#f5e7db}.page-bg span:nth-child(3){width:25vw;height:25vw;left:38%;bottom:-15vw;background:#e5e5f0}
.app-shell{max-width:1100px;margin:auto;padding:18px 22px 90px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:5px 0 25px}.brand{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:-.03em;font-family:'Outfit',sans-serif;font-size:1.15rem}.brand-logo{width:39px;height:39px;border-radius:13px;display:grid;place-items:center;background:#35383b;color:#f0f0ee;box-shadow:0 5px 16px #25282b15;font-size:1.05rem}.brand-sub{color:#999;letter-spacing:.07em;font-size:.61rem;font-weight:800;text-transform:uppercase}.online{display:flex;align-items:center;gap:7px;color:#647267;font-size:.78rem;font-weight:700}.online:before{content:'';display:block;width:8px;height:8px;background:#89c79a;border-radius:100%;box-shadow:0 0 0 5px #e1f1e4}.pill{border-radius:99px;padding:8px 12px;background:white;border:1px solid var(--line);font-size:.76rem;font-weight:800;color:#5c5e60;display:inline-flex;align-items:center;gap:7px}.hero{display:grid;grid-template-columns:1.14fr .86fr;gap:26px;align-items:center;padding:39px 39px 35px;min-height:330px;background:linear-gradient(122deg,#edf0f0 4%,#eee8e2 55%,#f5eee9 100%);border:1px solid #e5e5e4;border-radius:30px;position:relative;overflow:hidden;box-shadow:var(--shadow)}.hero p{max-width:450px;color:#686a69;line-height:1.65;font-size:.96rem}.hero .pill{margin-bottom:20px}.hero-bits{display:flex;gap:10px;flex-wrap:wrap;margin-top:23px}.hero-bits span{background:#ffffff98;padding:9px 12px;border:1px solid #ffffff80;border-radius:13px;font-weight:700;font-size:.78rem}.hero-art{display:flex;justify-content:center;align-items:center;position:relative;height:260px}.ticket-illustration{width:min(290px,100%);min-height:208px;transform:rotate(-7deg);border-radius:22px;background:#fffdfb;box-shadow:1px 19px 45px #71716c24;border:1px solid #ece8e0;padding:22px 24px;position:relative;animation:float 5s ease-in-out infinite}.ticket-illustration:before,.ticket-illustration:after{content:'';position:absolute;top:68%;border-radius:50%;width:27px;height:27px;background:#ebe7e1}.ticket-illustration:before{left:-15px}.ticket-illustration:after{right:-15px}.ticket-illustration .top{text-transform:uppercase;color:#969696;letter-spacing:.14em;font-size:.63rem;font-weight:800}.ticket-illustration .money{font:800 3.6rem 'Outfit',sans-serif;letter-spacing:-.07em;margin-top:12px;line-height:1}.ticket-illustration .dashed{border-top:2px dashed #ddd;margin:18px -8px}.barcode{height:21px;width:115px;background:repeating-linear-gradient(90deg,#5f6466 0 2px,transparent 2px 5px,#5f6466 5px 6px,transparent 6px 10px);opacity:.5}.sparkle{position:absolute;z-index:2;border-radius:50%;filter:blur(.2px);animation:float 4s ease-in-out infinite}.sparkle.one{height:25px;width:25px;background:#bbd9c6;right:9%;top:18%}.sparkle.two{height:13px;width:13px;background:#e2c4b2;left:14%;bottom:20%;animation-delay:1.2s}
.main-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(330px,.9fr);gap:24px;margin-top:24px}.panel{background:#ffffffde;border:1px solid var(--line);border-radius:25px;box-shadow:var(--shadow);padding:26px}.section-lead{color:var(--muted);font-size:.89rem;line-height:1.6}.tabs{display:flex;background:#f3f3f1;border:1px solid #ebebe8;border-radius:14px;padding:4px;gap:4px;margin-bottom:22px}.tabs button{border:0;background:transparent;color:#848586;border-radius:11px;padding:11px 10px;font-size:.87rem;font-weight:800;flex:1;transition:.2s}.tabs button.active{background:white;color:#292b2c;box-shadow:0 3px 10px #0000000e}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:15px}.field label{font-size:.82rem;color:#616264;font-weight:800}.field input,.field select,.field textarea{height:48px;width:100%;min-width:0;border:1px solid #e0e1df;border-radius:13px;padding:0 14px;color:#323537;background:#fafafa;outline:none;transition:.18s}.field input:focus,.field select:focus{background:white;border-color:#a6b9ad;box-shadow:0 0 0 4px #cbe9d530}.field input[type=file]{padding:11px;height:auto;line-height:1.4}.btn{border:0;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:45px;border-radius:13px;padding:11px 16px;background:#2d3032;color:#fff;font-weight:800;font-size:.87rem;transition:transform .18s,opacity .18s,background .18s;text-decoration:none;white-space:nowrap}.btn:hover:not(:disabled){transform:translateY(-2px)}.btn:active:not(:disabled){transform:scale(.98)}.btn.secondary{background:#eef0ed;color:#363c38}.btn.outline{background:#fff;color:#343637;border:1px solid var(--line)}.btn.wa{background:#d2eadb;color:#234737}.btn.danger{background:#f7e0e0;color:#953d40}.btn.block{width:100%}.btn:disabled{transform:none}.form-note{font-size:.75rem;line-height:1.5;color:#96989a;margin:13px 0 0}.steps{display:grid;gap:19px;padding:12px 5px}.step{display:flex;gap:15px;align-items:flex-start}.step-num{width:36px;height:36px;flex-shrink:0;background:#f1f2ef;border-radius:12px;display:grid;place-items:center;font-weight:800;font-size:.83rem}.step h3{font-size:.98rem;margin:3px 0 5px}.step p{margin:0;color:#818282;font-size:.82rem;line-height:1.6}
.dashboard{display:grid;gap:19px}.welcome-head{display:flex;justify-content:space-between;align-items:center;gap:15px}.welcome-head h1{font-size:clamp(1.9rem,4vw,2.8rem);margin:5px 0 5px}.dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.stat{padding:20px;border-radius:18px;border:1px solid #e7e8e6;background:white;min-height:105px}.stat .statnum{font:800 2rem 'Outfit',sans-serif;line-height:1.15;margin:5px 0}.stat .label{color:#747776;font-size:.75rem;font-weight:700}.stat.mint{background:#e2f2e8}.stat.lilac{background:#e8e9f7}.stat.peach{background:#f6ebdf}.dash-columns{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(285px,.72fr);gap:18px;align-items:start}.side-stack{display:grid;gap:18px}.status-note{border-radius:15px;padding:14px 16px;font-size:.82rem;line-height:1.5;color:#646360;background:#f8f1e6;border:1px solid #f2e8d7}.status-note.success{background:#e6f3e9;border-color:#d9ebdd;color:#43624b}.status-note.rejected{background:#fbe9e9;border-color:#f5d8d8;color:#884c4c}.statline{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.title-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.title-row h2{margin:0}.legend{display:flex;gap:12px;flex-wrap:wrap;margin:15px 0 13px}.legend-item{display:flex;align-items:center;gap:6px;color:#777a78;font-size:.74rem;font-weight:700}.dot{width:11px;height:11px;border-radius:4px;display:block}.dot.free{background:#bfe9d0}.dot.reserved{background:#fde3b7}.dot.confirmed{background:#f1bec5}.dot.mine{background:#bbc8f4}.range-scroll{display:flex;overflow-x:auto;gap:6px;padding:4px 0 10px;scrollbar-width:thin}.range-scroll button{font-size:.72rem;font-weight:800;min-width:69px;border-radius:9px;background:#f5f5f3;color:#777;border:1px solid #e7e7e5;padding:9px 6px}.range-scroll button.active{background:#2f3433;color:white;border-color:#2f3433}.numbers-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px;padding:2px 0}.number{height:39px;display:flex;align-items:center;justify-content:center;min-width:0;border:1px solid transparent;border-radius:9px;font-weight:800;font-size:.7rem;transition:.16s;animation:popIn .24s ease-out both}.number.free{background:#ccefd9;color:#2a5c42}.number.reserved{background:#ffe6bd;color:#875c26}.number.confirmed{background:#f5cbd0;color:#8b454e}.number.mine,.number.choice{background:#bcc8f5;color:#334375;box-shadow:inset 0 0 0 2px #778bd2}.number.free:hover{transform:translateY(-3px);box-shadow:0 5px 14px #9ccca966}.number:disabled{opacity:1;cursor:default}.number:focus-visible{outline:3px solid #4b5e82;outline-offset:2px}.number.mine{position:relative}.choice-bar{background:#f7f7f5;border:1px dashed #e2e3e1;border-radius:14px;padding:13px;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:15px}.choice-bar p{margin:0}.mytickets{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}.myticket{display:flex;gap:8px;align-items:center;border:1px solid #dee1e5;background:#f7f8ff;color:#4a5572;border-radius:10px;padding:9px 10px;font-size:.78rem;font-weight:800}.myticket small{font-weight:600;color:#868a98}.myticket button{border:0;background:transparent;color:#91656a;font-weight:800;padding:2px}.upload-box{border:1px dashed #cbd6cc;background:#fbfdfa;border-radius:14px;padding:14px;margin-top:12px}.ref-code{background:#f5f6f4;padding:13px;border-radius:13px;font:800 1.17rem 'Outfit',sans-serif;letter-spacing:.065em;margin:11px 0;overflow-wrap:anywhere}.small-detail{font-size:.76rem;color:#848684;line-height:1.5}.refperson{border-bottom:1px solid #ededec;padding:11px 0;display:flex;align-items:center;justify-content:space-between;gap:11px;font-size:.82rem}.refperson:last-child{border:0}.state-tag{background:#eaece9;border-radius:99px;padding:5px 8px;font-size:.7rem;color:#767876;font-weight:800}.state-tag.pending{background:#fff0d1;color:#97713b}.state-tag.approved{background:#def0df;color:#467950}.state-tag.rejected{background:#f9dddd;color:#a85a5a}.empty-note{padding:13px 0;color:#989b97;font-size:.83rem}.footnote{text-align:center;color:#a5a5a4;font-size:.74rem;margin-top:30px;line-height:1.6}.loading-view{min-height:65vh;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#949996;gap:18px}.spinner{height:34px;width:34px;border:3px solid #d7e1d9;border-top-color:#6c9d7c;border-radius:50%;animation:spin .75s linear infinite}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,30px);background:#2c302e;color:white;border-radius:14px;padding:13px 18px;box-shadow:0 12px 40px #0003;opacity:0;pointer-events:none;z-index:50;font-size:.86rem;max-width:90vw;text-align:center;transition:.3s}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:#9b4d54}.hidden{display:none!important}.fade-in{animation:rise .35s ease both}
@keyframes float{0%,100%{transform:translateY(0) rotate(-7deg)}50%{transform:translateY(-10px) rotate(-5deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes popIn{from{opacity:.4;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@media(max-width:850px){.app-shell{padding:14px 15px 65px}.hero{padding:27px;grid-template-columns:1fr;min-height:auto}.hero-art{height:210px}.ticket-illustration{min-height:190px;width:260px}.ticket-illustration .money{font-size:3rem}.main-grid,.dash-columns{grid-template-columns:1fr}.dashboard-grid{gap:9px}.stat{padding:14px 12px}.numbers-grid{grid-template-columns:repeat(8,minmax(0,1fr))}}
@media(max-width:480px){.topbar{padding-bottom:16px}.online{font-size:.69rem}.hero{border-radius:23px;padding:24px 19px 10px}.hero-art{height:210px}.hero p{font-size:.86rem}.hero-bits span{font-size:.7rem}.panel{padding:20px 17px;border-radius:21px}.stat .statnum{font-size:1.7rem}.stat .label{font-size:.68rem}.numbers-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}.number{height:40px;font-size:.67rem}.dash-columns{gap:14px}.choice-bar{flex-direction:column;align-items:stretch}.welcome-head h1{font-size:1.9rem}.legend{gap:8px}.legend-item{font-size:.68rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Fase 3: teléfono verificado, acciones visibles en pantalla pequeña. */
