:root{--gold-light:#E8C979;--gold-primary:#C9A55C;--gold-dark:#9B7E3F;--gold-glow:rgba(201,165,92,.35);--bg-deep:#0b0710;--panel:rgba(18,13,24,.72);--text-primary:#F5EEE1;--text-secondary:rgba(245,238,225,.6);--error:#E0796B;--error-brd:rgba(224,121,107,.4);--error-dim:rgba(224,121,107,.12);--success:#7BD6A9;--mx:50%;--my:40%}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{background:radial-gradient(ellipse 60% 80% at 22% 40%,rgba(155,126,63,.18) 0%,transparent 60%),radial-gradient(ellipse 50% 70% at 82% 30%,rgba(201,165,92,.1) 0%,transparent 55%),radial-gradient(ellipse 70% 60% at 50% 108%,rgba(120,86,40,.16) 0%,transparent 60%),var(--bg-deep);color:var(--text-primary);font-family:Raleway,Segoe UI,system-ui,sans-serif;overflow:hidden}.gate-grid{min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr}@media(max-width:880px){.gate-grid{grid-template-columns:1fr}body{overflow:auto}.vault-side{display:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.vault-side{position:relative;min-width:0;display:flex;align-items:center;justify-content:center;border-right:1px solid rgba(201,165,92,.12);background:radial-gradient(circle at var(--mx) var(--my),rgba(201,165,92,.06) 0%,transparent 55%);overflow:hidden}.vault-side:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 42%,transparent 55%,rgba(0,0,0,.35) 100%);pointer-events:none}.vault-side.rejected{background:radial-gradient(circle at var(--mx) var(--my),rgba(224,121,107,.1) 0%,transparent 55%);animation:pulseRed 2.4s ease-in-out infinite}@keyframes pulseRed{0%,to{filter:none}50%{filter:brightness(1.15)}}.emptyHint{color:#c9a55c80;letter-spacing:.42em;font-size:.72rem;font-weight:600;font-family:Cinzel,serif;text-transform:uppercase;text-align:center}.emptyHint .glyph{display:block;font-size:2rem;margin-bottom:18px;opacity:.5}.card-frame{width:min(560px,82%);aspect-ratio:856/540;position:relative;border-radius:24px;overflow:hidden;display:none;box-shadow:0 40px 90px #000000b3,0 0 0 1px #c9a55c24}.card-frame.active{display:block;animation:cardIn .7s cubic-bezier(.2,.8,.2,1)}.card-frame.active:not(.rejected){box-shadow:0 40px 90px #000000b3,0 0 60px #c9a55c1a,0 0 0 1px #c9a55c38}.base-card-img{width:100%;height:100%;object-fit:cover;display:block;transition:filter .3s}.laser{position:absolute;top:0;left:-5%;width:2px;height:100%;background:var(--gold-light);box-shadow:0 0 22px var(--gold-light);z-index:10;display:none}.card-frame.scanning .laser{display:block;animation:laser 1.25s linear infinite}.spotlight{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;transition:opacity .25s;background:radial-gradient(circle 180px at var(--mx) var(--my),rgba(201,165,92,.16) 0%,transparent 100%)}.card-frame:hover:not(.rejected) .spotlight{opacity:1}.card-frame:hover:not(.rejected) .base-card-img{filter:brightness(1.05) saturate(1.05)}.reject-layer{position:absolute;inset:0;z-index:6;display:none;pointer-events:none}.card-frame.rejected .reject-layer{display:block}.card-frame.rejected .base-card-img{filter:grayscale(.85) brightness(.35)}.reject-layer:after{content:"";position:absolute;inset:22px;border:1px solid var(--error-brd);border-radius:16px;box-shadow:inset 0 0 60px #e0796b1f,0 0 40px #e0796b4d}.reject-stamp{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;white-space:nowrap}.reject-stamp .label{font-family:Cinzel,serif;font-size:12px;font-weight:600;letter-spacing:5px;color:var(--error);margin-bottom:14px}.reject-stamp .headline{font-family:Cinzel,serif;font-size:38px;font-weight:700;letter-spacing:3px;color:var(--error);text-shadow:0 0 30px rgba(224,121,107,.4)}.reject-stamp .sublabel{margin-top:12px;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:2px;color:#e0796bb3}.console-side{position:relative;min-width:0;background:var(--panel);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);display:flex;flex-direction:column;justify-content:center;padding:min(8vh,72px) clamp(28px,5vw,64px);border-left:1px solid rgba(255,255,255,.04)}.brand{text-align:left;margin-bottom:34px}.brand .mark{font-family:Cinzel,serif;font-size:clamp(26px,3.4vw,34px);font-weight:600;letter-spacing:.34em;color:var(--gold-primary)}.brand .sub{margin-top:12px;font-family:Cormorant Garamond,serif;font-style:italic;font-size:1.05rem;color:var(--text-secondary);letter-spacing:.02em}.brand .rule{margin-top:18px;height:1px;width:64px;background:linear-gradient(90deg,var(--gold-primary),transparent)}.dz{display:block;position:relative;border:1px dashed rgba(201,165,92,.32);border-radius:14px;padding:30px 24px;text-align:center;background:#00000038;cursor:pointer;transition:border-color .25s,background .25s,transform .15s}.dz:focus-within{outline:2px solid var(--gold-glow);outline-offset:2px}.dz input{position:absolute;inset:0;opacity:0;cursor:pointer}.dz:hover{border-color:#c9a55c8c}.dz.dragging{border-style:solid;border-color:var(--gold-light);background:#c9a55c1a;transform:translateY(-1px)}.dz.ready{border-style:solid;border-color:var(--gold-primary);background:#c9a55c0f}.dz.invalid{border-style:solid;border-color:var(--error-brd);background:var(--error-dim);animation:shake .35s}.dz .glyph{font-size:20px;color:var(--gold-primary);display:block;margin-bottom:10px}.dz .main{font-size:.92rem;color:var(--text-primary);font-weight:500}.dz .main b{color:var(--gold-light);font-weight:600}.dz .hint{font-size:.72rem;color:var(--text-secondary);margin-top:6px;letter-spacing:.02em}.modes{display:flex;gap:8px;margin-bottom:20px}.mode{flex:1;padding:10px 12px;cursor:pointer;font:inherit;font-size:.86rem;font-weight:600;color:var(--text-secondary);background:#00000038;border:1px solid rgba(201,165,92,.16);border-radius:10px;transition:color .2s,border-color .2s,background .2s}.mode:hover{color:var(--gold-light)}.mode.active{color:var(--text-primary);background:#c9a55c1a;border-color:#c9a55c59}.key-field{display:block}.key-label{display:block;font-size:.9rem;font-weight:600;margin-bottom:9px;color:var(--text-primary)}.key-input{width:100%;padding:15px 16px;font-family:JetBrains Mono,monospace;font-size:1rem;letter-spacing:.06em;text-align:center;background:#08050cb3;border:1px solid rgba(255,255,255,.09);border-radius:12px;color:var(--gold-light);outline:none;transition:border-color .2s,box-shadow .2s}.key-input::placeholder{color:#f5eee138;letter-spacing:.04em}.key-input:focus{border-color:var(--gold-primary);box-shadow:0 0 0 3px var(--gold-glow)}.key-input:disabled{opacity:.5;cursor:not-allowed}.key-field .hint{font-size:.78rem;color:var(--text-secondary);margin-top:9px;line-height:1.55}.pin-label{font-size:.64rem;letter-spacing:.24em;text-transform:uppercase;color:var(--text-secondary);margin:26px 0 10px}.pin-row{display:flex;gap:9px}.pin-box{flex:1;height:58px;min-width:0;background:#08050cb3;border:1px solid rgba(255,255,255,.09);border-radius:10px;text-align:center;font-size:24px;font-family:JetBrains Mono,monospace;color:var(--gold-light);outline:none;transition:.2s}.pin-box:focus{border-color:var(--gold-primary);box-shadow:0 0 0 3px var(--gold-glow)}.pin-box:disabled{opacity:.35;cursor:not-allowed}.btn{width:100%;margin-top:26px;padding:17px;border:none;border-radius:11px;cursor:pointer;font-family:Cinzel,serif;font-size:.82rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#241a0b;background:linear-gradient(135deg,var(--gold-light),var(--gold-primary));transition:transform .15s,box-shadow .2s,opacity .2s}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 30px var(--gold-glow)}.btn:disabled{opacity:.4;cursor:not-allowed}.status{margin-top:18px;min-height:20px;font-size:.8rem;text-align:center;font-weight:500;letter-spacing:.01em}.status.err{color:var(--error)}.status.ok{color:var(--success)}.request{margin-top:26px;text-align:center;font-size:.78rem;color:var(--text-secondary)}.request a{color:var(--gold-primary);text-decoration:none;border-bottom:1px solid rgba(201,165,92,.3);padding-bottom:1px}.request a:hover{color:var(--gold-light)}@keyframes cardIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}@keyframes laser{0%{left:0}to{left:100%}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-7px)}75%{transform:translate(7px)}}
