:root{--bg-main:#0a0806;--bg-card:#120e0b7a;--bg-card-solid:#16120e;--border-color:#e59a6d4d;--border-subtle:#ffffff1f;--text-main:#fbf8f5;--text-muted:#d0c2b6;--primary:#8b4513;--primary-hover:sienna;--primary-accent:#e59a6d;--primary-glow:#8b451366;--primary-subtle:#8b451326;--success:#10b981;--success-bg:#10b9811f;--danger:#ef4444;--danger-bg:#ef44441f;--radius-sm:8px;--radius-md:14px;--radius-lg:22px;--radius-pill:9999px;--font-heading:"Barlow", sans-serif;--font-brand:"Barlow", sans-serif;--font-body:"Gilda Display", Georgia, serif;--font-sans:"Gilda Display", Georgia, serif;--font-mono:"JetBrains Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background-color:var(--bg-main);color:var(--text-main);-webkit-font-smoothing:antialiased;line-height:1.5;overflow-x:hidden}h1,h2,h3,h4,h5,h6,.hotel-title,.status-title,.portal-system-pill,.btn-portal-primary,.btn-portal-secondary,.code-label{font-family:var(--font-heading)}.portal-page-container{justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.portal-bg-backdrop{filter:blur(1.5px);z-index:0;background-image:linear-gradient(#0a080640 0%,#120e0b59 50%,#0a08068c 100%),radial-gradient(circle at 50% 25%,#8b451333 0%,#0000 65%),url(../tmhaback.webp);background-position:50% 30%;background-repeat:no-repeat;background-size:cover;position:fixed;inset:0;transform:scale(1.02)}.portal-ambient-glow{pointer-events:none;z-index:1;background:radial-gradient(circle,#8b451333 0%,#0000 70%);border-radius:50%;width:500px;height:500px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.portal-main{z-index:2;justify-content:center;width:100%;max-width:440px;padding:24px 16px;display:flex;position:relative}.portal-card{-webkit-backdrop-filter:blur(20px)saturate(160%);text-align:center;background:#16110d47;border:1px solid #ffffff38;border-radius:28px;width:100%;padding:32px 24px 24px;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000073,0 0 40px #8b451340,inset 0 1px 1px #ffffff59}.portal-card:before{content:"";background:linear-gradient(90deg, transparent, var(--primary-accent), transparent);height:2px;position:absolute;top:0;left:20%;right:20%}.portal-header{flex-direction:column;align-items:center;margin-bottom:24px;display:flex}.portal-logo-wrapper{-webkit-backdrop-filter:blur(14px);border-radius:var(--radius-lg);background:#ffffffe6;justify-content:center;align-items:center;width:72px;height:72px;margin-bottom:14px;padding:7px;transition:transform .25s;display:flex;box-shadow:0 8px 25px #00000059,0 0 0 1px #fff9}.portal-logo-wrapper:hover{transform:translateY(-2px)}.portal-logo{object-fit:contain;width:100%;height:100%}.hotel-title{font-family:var(--font-brand);color:#fff;letter-spacing:.2px;text-shadow:0 2px 14px #000000b3;margin-bottom:8px;font-size:21px;font-weight:700;line-height:1.2}.portal-system-pill{-webkit-backdrop-filter:blur(10px);color:#f7d7c2;border-radius:var(--radius-pill);letter-spacing:.3px;background:#8b451359;border:1px solid #e59a6d73;align-items:center;gap:7px;padding:5px 16px;font-size:11.5px;font-weight:700;display:inline-flex;box-shadow:0 2px 8px #00000040}.pill-pulse{background:var(--primary-accent);width:6px;height:6px;box-shadow:0 0 8px var(--primary-accent);border-radius:50%;animation:2s infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.85)}}.qr-presentation{flex-direction:column;align-items:center;display:flex}.qr-frame{background:#ffffff0a;border-radius:24px;margin-bottom:16px;padding:12px;position:relative}.qr-corner{border-color:var(--primary-accent);pointer-events:none;border-style:solid;width:16px;height:16px;position:absolute}.corner-tl{border-width:3px 0 0 3px;border-top-left-radius:8px;top:4px;left:4px}.corner-tr{border-width:3px 3px 0 0;border-top-right-radius:8px;top:4px;right:4px}.corner-bl{border-width:0 0 3px 3px;border-bottom-left-radius:8px;bottom:4px;left:4px}.corner-br{border-width:0 3px 3px 0;border-bottom-right-radius:8px;bottom:4px;right:4px}.qr-canvas-box{background:#fff;border-radius:18px;justify-content:center;align-items:center;padding:14px;display:flex;box-shadow:0 12px 36px #00000073,0 0 0 1px #ffffff26}.qr-canvas-box svg{border-radius:8px;display:block}.pass-code-pill{border:1px solid var(--border-color);border-radius:var(--radius-pill);background:#0006;align-items:center;gap:10px;margin-bottom:16px;padding:6px 18px;display:inline-flex}.code-label{letter-spacing:1px;color:var(--primary-accent);background:#8b45134d;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:800}.code-value{font-family:var(--font-mono);letter-spacing:.12em;color:#fff;font-size:20px;font-weight:700}.timer-wrapper{width:100%;margin-bottom:18px}.progress-track{border-radius:var(--radius-pill);background:#ffffff14;width:100%;height:6px;margin-bottom:8px;overflow:hidden;box-shadow:inset 0 1px 2px #0006}.progress-fill{border-radius:var(--radius-pill);background:linear-gradient(90deg,#8b4513 0%,#c26d38 60%,#10b981 100%);height:100%;transition:width 1s linear;box-shadow:0 0 10px #e59a6d80}.timer-info{color:var(--text-muted);justify-content:center;align-items:center;gap:6px;font-size:12.5px;display:flex}.timer-info b{color:#fff;font-weight:700}.timer-pulse-dot{background-color:var(--success);width:6px;height:6px;box-shadow:0 0 8px var(--success);border-radius:50%}.member-chips-row{justify-content:center;align-items:center;gap:10px;width:100%;margin-bottom:16px;display:flex}.meta-chip{border:1px solid var(--border-subtle);border-radius:var(--radius-pill);color:var(--text-muted);background:#ffffff0d;align-items:center;gap:6px;padding:6px 14px;font-size:12px;font-weight:600;display:flex}.chip-icon{color:var(--primary-accent)}.turnike-hint{border-radius:var(--radius-md);color:#e2d7ce;text-align:left;background:#8b45131f;border:1px dashed #e59a6d59;align-items:center;gap:8px;margin-bottom:16px;padding:10px 14px;font-size:12px;line-height:1.4;display:flex}.hint-icon{color:var(--primary-accent);flex-shrink:0}.status-box{text-align:center;flex-direction:column;align-items:center;padding:30px 16px;display:flex}.status-icon-badge{border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;margin-bottom:18px;display:flex}.auth-badge{color:var(--primary-accent);background:#8b451340;border:1px solid #e59a6d66;box-shadow:0 0 25px #8b451359}.biometric-icon{animation:2.5s ease-in-out infinite pulse-lock}@keyframes pulse-lock{0%,to{opacity:.9;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.error-badge{background:var(--danger-bg);color:var(--danger);border:1px solid #ef44444d;box-shadow:0 0 25px #ef444440}.modern-spinner{border:3px solid #ffffff1a;border-top-color:var(--primary-accent);width:44px;height:44px;box-shadow:0 0 20px var(--primary-glow);border-radius:50%;margin-bottom:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.status-title{color:#fff;margin-bottom:10px;font-size:18px;font-weight:700}.status-desc{color:var(--text-muted);margin-bottom:24px;font-size:13.5px;line-height:1.5}.error-message{color:#fca5a5;border-radius:var(--radius-md);background:#ef44441a;border:1px solid #ef444433;margin-bottom:20px;padding:12px 16px;font-size:13.5px;line-height:1.45}.btn-portal-primary{color:#fff;border-radius:var(--radius-md);width:100%;font-family:var(--font-sans);cursor:pointer;background:linear-gradient(135deg,#8b4513 0%,#b2581a 100%);border:1px solid #ffffff26;justify-content:center;align-items:center;gap:10px;padding:14px 20px;font-size:14.5px;font-weight:700;transition:all .2s;display:inline-flex;box-shadow:0 6px 20px #8b451373,inset 0 1px #ffffff40}.btn-portal-primary:hover{background:linear-gradient(135deg,#74370d 0%,#9e4b14 100%);transform:translateY(-1px);box-shadow:0 8px 25px #8b451399}.btn-portal-primary:active{transform:translateY(1px)}.btn-portal-secondary{border:1px solid var(--border-color);color:#fff;border-radius:var(--radius-md);font-family:var(--font-sans);cursor:pointer;background:#ffffff0f;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:600;transition:all .2s;display:inline-flex}.btn-portal-secondary:hover{border-color:var(--primary-accent);background:#ffffff1f}.portal-footer{border-top:1px solid var(--border-subtle);color:#8c7b6f;letter-spacing:.2px;margin-top:14px;padding-top:14px;font-size:11px}@media (width<=480px){.portal-card{border-radius:22px;padding:24px 18px 20px}.hotel-title{font-size:17px}.qr-canvas-box{padding:10px}.qr-canvas-box svg{width:200px!important;height:200px!important}}
