:root{--bg0: #000000;--bg1: #0a0a0a;--ink: #f5f5f5;--muted: #9a9a9a;--accent: #ffffff;--accent-ink: #111111;--danger: #ff6b6b;--line: rgba(255, 255, 255, .14);--panel: rgba(18, 18, 18, .88);--shadow: 0 24px 60px rgba(0, 0, 0, .55);--admin-grad: linear-gradient(135deg, #ff2bd6 0%, #7b2ff7 42%, #00d4c8 100%);--btn-3d: linear-gradient(145deg, #ffffff 0%, #f0f0f0 28%, #d4d4d4 62%, #bdbdbd 100%);--btn-3d-shadow: inset 0 2px 0 rgba(255, 255, 255, .95), inset 0 -3px 6px rgba(0, 0, 0, .22), 0 10px 18px rgba(0, 0, 0, .45), 0 2px 0 #8a8a8a;font-family:DM Sans,system-ui,sans-serif;color:var(--ink);background:var(--bg0);line-height:1.4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-height:100vh;background:radial-gradient(900px 500px at 50% -10%,#1a1a1a,#000 60%)}a{color:#fff}h1,h2{font-family:Fraunces,Georgia,serif;font-weight:700;letter-spacing:-.02em;margin:0 0 .4rem}h1{font-size:clamp(1.8rem,5vw,2.6rem)}h2{font-size:1.35rem}.shell{position:relative;min-height:100vh;padding:1.5rem;display:grid;align-content:start;gap:1.25rem}.shell.narrow{place-content:center;justify-items:center}.home-shell,.guest-shell{place-content:center}.page-bg,.home-bg,.guest-bg{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 50% 20%,rgba(255,255,255,.05),transparent 45%),linear-gradient(180deg,#111,#000 55%);z-index:0}.admin-shell{background:var(--admin-grad);min-height:100vh}.admin-shell .page-bg{background:radial-gradient(circle at 15% 10%,rgba(255,255,255,.22),transparent 40%),radial-gradient(circle at 90% 80%,rgba(0,0,0,.2),transparent 45%);opacity:.9}.panel,.home-panel,.guest-panel{position:relative;z-index:1;width:min(720px,100%);margin-inline:auto;padding:1.5rem;border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow)}.admin-shell .panel{width:min(860px,100%);background:#00000059;border-color:#ffffff38}.home-panel,.guest-panel{text-align:center}.brand{margin:0 0 .75rem;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;color:#fff;font-weight:700}.admin-shell .brand{color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.25)}.lede{margin:0 0 1.25rem;color:var(--muted);max-width:34rem}.admin-shell .lede,.admin-shell .meta,.admin-shell .muted,.admin-shell .field span,.admin-shell .foot{color:#ffffffd1}.home-panel .lede,.guest-panel .lede{margin-inline:auto}.stack{display:grid;gap:.9rem}.row{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.field{display:grid;gap:.35rem;text-align:left}.field span{color:var(--muted);font-size:.9rem}input{width:100%;border:1px solid var(--line);background:#ffffff0f;color:var(--ink);border-radius:0;padding:.8rem .9rem;font:inherit}.admin-shell input{background:#00000047;border-color:#ffffff47}input:focus{outline:2px solid rgba(255,255,255,.55);outline-offset:1px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;padding:.85rem 1.1rem;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.4rem}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--btn-3d);color:var(--accent-ink);border:1px solid #cfcfcf;box-shadow:var(--btn-3d-shadow)}.btn.primary:active:not(:disabled){box-shadow:inset 0 3px 8px #00000040,0 1px #aaa;transform:translateY(1px)}.btn.secondary{background:transparent;border-color:#ffffff8c;color:#fff}.btn.ghost{background:transparent;border-color:var(--line);color:var(--ink)}.admin-shell .btn.ghost{border-color:#ffffff59;color:#fff}.btn.danger{background:transparent;border-color:var(--danger);color:#ffd0d0}.cta-row{display:flex;justify-content:center;gap:.75rem}.admin-header{position:relative;z-index:1;width:min(860px,100%);margin-inline:auto;display:flex;justify-content:space-between;align-items:end;gap:1rem;color:#fff}.created{margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.2);display:grid;gap:.75rem}.share,.token{display:block;overflow-wrap:anywhere;padding:.7rem .8rem;background:#00000059;border:1px solid rgba(255,255,255,.18);font-size:.9rem}.access-list{list-style:none;margin:0;padding:0;display:grid;gap:.85rem}.access-list li{display:flex;justify-content:space-between;gap:1rem;padding:.9rem 0;border-bottom:1px solid rgba(255,255,255,.18);align-items:start}.access-list li.inactive{opacity:.55}.meta{margin:.25rem 0 .45rem;color:var(--muted);font-size:.9rem}.actions{display:flex;gap:.5rem;flex-wrap:wrap}.foot{position:relative;z-index:1;text-align:center;color:var(--muted)}.muted{color:var(--muted)}.error{color:var(--danger);margin:0}.success{color:#fff;margin:.75rem 0 0;font-weight:700}.pin-display{display:flex;justify-content:center;gap:.75rem;margin:.5rem 0 1rem}.pin-display span{width:2.5rem;height:3rem;border-bottom:2px solid var(--line);display:grid;place-items:center;font-size:1.6rem}.pin-display span.filled{border-color:#fff}.keypad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;max-width:320px;margin:0 auto}.key{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #c8c8c8;background:var(--btn-3d);color:#111;font:inherit;font-size:1.35rem;font-weight:700;min-height:3.4rem;cursor:pointer;box-shadow:var(--btn-3d-shadow)}.key:active{box-shadow:inset 0 3px 8px #00000040,0 1px #aaa;transform:translateY(1px)}.gate-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:min(280px,100%);aspect-ratio:1;margin:.5rem auto 0;border:1px solid #cfcfcf;border-radius:50%;background:radial-gradient(circle at 30% 22%,#fff,#f3f3f3 28%,#d8d8d8 58%,#b5b5b5);color:#111;font-family:Fraunces,Georgia,serif;font-size:clamp(1.25rem,4vw,1.65rem);font-weight:700;cursor:pointer;box-shadow:inset 0 3px #fffffff2,inset 0 -8px 16px #00000038,0 16px 28px #0000008c,0 3px #8f8f8f;transition:transform .12s ease,box-shadow .12s ease}.gate-btn:hover:not(:disabled){transform:scale(1.02)}.gate-btn:active:not(:disabled){transform:scale(.98) translateY(2px);box-shadow:inset 0 6px 14px #00000047,0 4px 10px #0006,0 1px #9a9a9a}.gate-btn:disabled{opacity:.7;cursor:not-allowed}.install-banner{position:fixed;left:0;right:0;bottom:0;z-index:50;padding:.85rem;padding-bottom:calc(.85rem + env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,rgba(0,0,0,.85) 30%)}.install-banner-inner{max-width:720px;margin:0 auto;display:grid;grid-template-columns:auto 1fr;gap:.75rem .9rem;align-items:center;padding:.9rem;border:1px solid var(--line);background:#0c0c0cf5;box-shadow:var(--shadow)}.install-icon{border-radius:10px;grid-row:span 2}.install-copy{grid-column:2}.install-copy strong{display:block;margin-bottom:.2rem}.install-copy p{margin:0;color:var(--muted);font-size:.92rem}.install-actions{grid-column:2;display:flex;flex-wrap:wrap;gap:.5rem}.ios-share{display:inline-block;padding:.05rem .35rem;border:1px solid rgba(255,255,255,.35);border-radius:4px;color:#fff}@media(max-width:640px){.shell{padding:1rem}.access-list li{flex-direction:column}.admin-header{align-items:start}.install-banner-inner{grid-template-columns:auto 1fr}}
