:root{color-scheme:dark;--red-hot: #E70004;--pit-crew: #F7F7F7;--fresh-asphalt: #0E0E0E;--smolder-red: #AA0000;--speed-up: #FFED47;--concrete: #AAAAAA;--bg: var(--fresh-asphalt);--panel: #161616;--panel-2: #1f1f1f;--panel-3: #2a2a2a;--text: var(--pit-crew);--text-on-light: var(--fresh-asphalt);--muted: var(--concrete);--border: #2a2a2a;--border-strong: #3d3d3d;--accent: var(--red-hot);--accent-2: var(--smolder-red);--green: var(--pit-crew);--red: var(--red-hot);--yellow: var(--speed-up);--font-display: "Syne", "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;font-family:var(--font-body);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-feature-settings:"ss01","cv11"}.bg-halftone{background-color:var(--bg);background-image:radial-gradient(circle at 25% 25%,var(--red-hot) .5px,transparent 1.5px);background-size:8px 8px;background-position:0 0}.bg-checker{--c1: var(--fresh-asphalt);--c2: var(--pit-crew);--sz: 12px;background-image:linear-gradient(45deg,var(--c1) 25%,transparent 25%),linear-gradient(-45deg,var(--c1) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--c1) 75%),linear-gradient(-45deg,transparent 75%,var(--c1) 75%);background-size:var(--sz) var(--sz);background-position:0 0,0 calc(var(--sz) / 2),calc(var(--sz) / 2) calc(var(--sz) / -2),calc(var(--sz) / -2) 0;background-color:var(--c2)}.bg-stripes{background-color:var(--smolder-red);background-image:repeating-linear-gradient(-45deg,rgba(0,0,0,.22) 0 6px,transparent 6px 14px)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:800;letter-spacing:-.01em;line-height:1;margin:0}h1{font-size:clamp(28px,5vw,44px)}h2{font-size:20px}h3{font-size:16px}.mono-label{font-family:var(--font-display);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.18em;color:var(--red-hot)}button{font-family:var(--font-body);font-weight:600;font-size:14px;cursor:pointer;background:transparent;color:var(--text);border:1px solid var(--border-strong);border-radius:999px;padding:10px 18px;letter-spacing:.01em;transition:background .12s,border-color .12s,transform 60ms}button:hover{background:var(--panel-2);border-color:var(--concrete)}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--red-hot);border:1px solid var(--red-hot);color:var(--pit-crew);font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:12px 22px;box-shadow:0 0 0 0 var(--red-hot)}button.primary:hover{background:var(--smolder-red);border-color:var(--smolder-red)}input,select{font-family:var(--font-body);font-size:14px;background:var(--panel);color:var(--text);border:1px solid var(--border-strong);border-radius:8px;padding:11px 13px}input:focus,select:focus{outline:2px solid var(--red-hot);outline-offset:1px;border-color:var(--red-hot)}a{color:var(--red-hot);text-decoration:none}a:hover{color:var(--pit-crew);text-decoration:underline}.brand-bar{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;background:var(--fresh-asphalt);border-bottom:2px solid var(--red-hot);overflow:hidden}.brand-bar:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:6px;background-image:repeating-linear-gradient(-45deg,var(--red-hot) 0 8px,var(--smolder-red) 8px 16px);opacity:.6}.brand-wordmark{font-family:var(--font-display);font-weight:800;font-style:italic;font-size:22px;letter-spacing:-.02em;text-transform:uppercase;color:var(--pit-crew)}.brand-wordmark .accent{color:var(--red-hot)}.brand-bar .meta{font-family:var(--font-display);font-weight:700;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--concrete)}.scan-page{min-height:100%;display:flex;flex-direction:column;background:var(--bg)}.scan-body{flex:1;display:flex;flex-direction:column;padding:16px;gap:16px}.scan-header{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--muted)}.scan-header .device{font-family:var(--font-display);font-weight:700;font-size:12px;letter-spacing:.16em;text-transform:uppercase;background:var(--panel);border:1px solid var(--red-hot);border-radius:999px;padding:6px 14px;color:var(--pit-crew)}.scan-card{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:24px;padding:32px 24px;text-align:center;background:var(--panel);border:2px solid var(--border-strong);transition:background .12s,border-color .12s,color .12s;color:var(--text);overflow:hidden}.scan-card .status-icon{font-size:96px;line-height:1}.scan-card .status-name{font-family:var(--font-display);font-weight:800;font-size:clamp(34px,6vw,52px);margin-top:12px;letter-spacing:-.015em;line-height:1}.scan-card .status-msg{font-size:22px;margin-top:8px;color:var(--muted)}.scan-card .status-id{font-family:var(--font-mono);font-size:13px;letter-spacing:.18em;color:var(--muted);margin-top:14px}.scan-card:not(.allowed):not(.banned):not(.not_on_list):not(.already_checked_in):before{content:"";position:absolute;top:0;left:0;right:0;height:14px;background-image:radial-gradient(circle at 25% 25%,var(--red-hot) 1px,transparent 2px);background-size:10px 10px;opacity:.35}.scan-card.allowed{background:var(--pit-crew);border-color:var(--pit-crew);color:var(--fresh-asphalt)}.scan-card.allowed .status-icon{color:var(--red-hot)}.scan-card.allowed .status-msg,.scan-card.allowed .status-id{color:#444}.scan-card.allowed:after{content:"";position:absolute;left:0;right:0;bottom:0;height:14px;--c1: var(--fresh-asphalt);--c2: var(--pit-crew);--sz: 14px;background-image:linear-gradient(45deg,var(--c1) 25%,transparent 25%),linear-gradient(-45deg,var(--c1) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--c1) 75%),linear-gradient(-45deg,transparent 75%,var(--c1) 75%);background-size:var(--sz) var(--sz);background-position:0 0,0 calc(var(--sz) / 2),calc(var(--sz) / 2) calc(var(--sz) / -2),calc(var(--sz) / -2) 0}.scan-card.banned{background-color:var(--red-hot);background-image:radial-gradient(circle at 25% 25%,rgba(0,0,0,.35) 1px,transparent 2.5px);background-size:12px 12px;border-color:var(--red-hot);color:var(--pit-crew)}.scan-card.banned .status-msg,.scan-card.banned .status-id{color:#ffffffd9}.scan-card.not_on_list{background:var(--smolder-red);border-color:var(--smolder-red);color:var(--pit-crew)}.scan-card.not_on_list .status-msg,.scan-card.not_on_list .status-id{color:#ffffffd9}.scan-card.bypassed{background:var(--pit-crew);border-color:var(--red-hot);border-width:4px;color:var(--fresh-asphalt)}.scan-card.bypassed .status-icon{color:var(--red-hot)}.scan-card.bypassed .status-msg,.scan-card.bypassed .status-id{color:#444}.scan-card.bypassed:after{content:"";position:absolute;left:0;right:0;bottom:0;height:14px;background-image:repeating-linear-gradient(-45deg,var(--speed-up) 0 12px,var(--fresh-asphalt) 12px 24px)}.bypass-badge{position:absolute;top:14px;right:14px;font-family:var(--font-display);font-weight:800;font-size:11px;letter-spacing:.2em;text-transform:uppercase;background:var(--red-hot);color:var(--pit-crew);padding:4px 10px;border-radius:999px;z-index:2}.scan-card.banned .bypass-btn{background:var(--fresh-asphalt);color:var(--pit-crew);border-color:var(--fresh-asphalt)}.scan-card.banned .bypass-btn:hover{background:var(--pit-crew);color:var(--fresh-asphalt);border-color:var(--pit-crew)}.bypass-btn{margin-top:18px;position:relative;z-index:2}.bypass-modal{text-align:left}.scan-card.already_checked_in{background:var(--speed-up);border-color:var(--red-hot);border-width:4px;color:var(--fresh-asphalt)}.scan-card.already_checked_in .status-icon{color:var(--red-hot)}.scan-card.already_checked_in .status-msg{color:var(--red-hot);font-weight:600}.scan-card.already_checked_in .status-id{color:#555}.scan-controls{display:flex;gap:8px;justify-content:center}.scan-input-hidden{position:fixed;opacity:0;pointer-events:none;width:1px;height:1px}.camera-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0e0e0ef0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;padding:16px}.camera-modal video{width:100%;max-width:480px;border-radius:16px;background:#000;border:3px solid var(--red-hot)}.camera-modal .close{position:absolute;top:16px;right:16px}.admin-page{max-width:1080px;margin:0 auto;padding:24px}.admin-page h1{font-style:italic;text-transform:uppercase;font-size:clamp(36px,6vw,56px);margin:0 0 4px;line-height:.95}.admin-page h1 .accent{color:var(--red-hot)}.admin-page h2{margin:28px 0 10px;font-family:var(--font-display);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.22em;color:var(--red-hot);display:flex;align-items:center;gap:10px}.admin-page h2:before{content:"";display:inline-block;width:22px;height:8px;background-image:repeating-linear-gradient(-45deg,var(--red-hot) 0 3px,transparent 3px 6px)}.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.stat{position:relative;background:var(--panel);border:1px solid var(--border-strong);border-radius:14px;padding:16px 18px;overflow:hidden}.stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--red-hot)}.stat .label{font-family:var(--font-display);font-weight:700;color:var(--concrete);font-size:11px;text-transform:uppercase;letter-spacing:.18em}.stat .value{font-family:var(--font-display);font-weight:800;font-size:44px;margin-top:2px;line-height:1;letter-spacing:-.02em}.panel{background:var(--panel);border:1px solid var(--border-strong);border-radius:14px;padding:18px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border)}th{color:var(--concrete);font-family:var(--font-display);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.14em}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-family:var(--font-display);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;border:1px solid transparent}.badge.allowed{background:var(--pit-crew);color:var(--fresh-asphalt)}.badge.banned,.badge.not_on_list{background:var(--red-hot);color:var(--pit-crew)}.badge.already_checked_in{background:var(--speed-up);color:var(--fresh-asphalt);border-color:var(--red-hot)}.badge.bypassed{background:var(--fresh-asphalt);color:var(--speed-up);border-color:var(--red-hot)}.errors-list{max-height:160px;overflow:auto;background:var(--panel-2);border-radius:8px;padding:8px 12px;font-family:var(--font-mono);font-size:12px}.qr-block{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.qr-block img{background:#fff;padding:8px;border-radius:8px;border:2px solid var(--red-hot)}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.muted{color:var(--muted)}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.device-card{position:relative;display:flex;flex-direction:column;gap:8px;overflow:hidden}.device-card:before{content:"";position:absolute;top:0;right:0;width:36px;height:36px;--c1: var(--red-hot);--c2: var(--fresh-asphalt);--sz: 9px;background-image:linear-gradient(45deg,var(--c1) 25%,transparent 25%),linear-gradient(-45deg,var(--c1) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--c1) 75%),linear-gradient(-45deg,transparent 75%,var(--c1) 75%);background-size:var(--sz) var(--sz);background-position:0 0,0 calc(var(--sz) / 2),calc(var(--sz) / 2) calc(var(--sz) / -2),calc(var(--sz) / -2) 0;background-color:var(--c2);opacity:.45;-webkit-mask-image:linear-gradient(225deg,black 35%,transparent 75%);mask-image:linear-gradient(225deg,black 35%,transparent 75%)}.device-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;position:relative;z-index:1}.device-name{font-family:var(--font-display);font-weight:800;font-size:17px;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-status{font-family:var(--font-display);font-weight:700;display:inline-block;padding:3px 11px;border-radius:999px;font-size:10px;text-transform:uppercase;letter-spacing:.16em;border:1px solid transparent}.device-status.active{background:var(--red-hot);color:var(--pit-crew);box-shadow:0 0 #e7000499;animation:device-pulse 1.8s ease-out infinite}.device-status.idle{background:transparent;color:var(--red-hot);border-color:var(--red-hot)}.device-status.quiet{background:transparent;color:var(--concrete);border-color:var(--border-strong)}@keyframes device-pulse{0%{box-shadow:0 0 #e7000499}70%{box-shadow:0 0 0 12px #e7000400}to{box-shadow:0 0 #e7000400}}.device-meta{font-size:13px;color:var(--muted)}.device-recent{list-style:none;margin:4px 0 0;padding:0;border-top:1px solid var(--border)}.device-recent li{display:grid;grid-template-columns:auto auto 1fr auto;gap:8px;align-items:center;padding:6px 0;font-size:13px;border-bottom:1px solid var(--border)}.device-recent li:last-child{border-bottom:0}.device-recent-time{color:var(--concrete);font-variant-numeric:tabular-nums;font-size:12px}.device-recent-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-recent-id{color:var(--concrete);font-family:var(--font-mono);font-size:11px}.danger-heading{color:var(--red-hot)}.danger-panel{border-color:var(--red-hot);background:linear-gradient(0deg,#e700040f,#e700040f),var(--panel)}.danger-row{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}button.danger{background:transparent;color:var(--red-hot);border:1px solid var(--red-hot);font-weight:700;text-transform:uppercase;letter-spacing:.06em}button.danger:hover{background:var(--red-hot);color:var(--pit-crew)}button.primary.danger{background:var(--red-hot);color:var(--pit-crew);border:1px solid var(--red-hot)}button.primary.danger:hover{background:var(--smolder-red);border-color:var(--smolder-red)}button.danger:disabled,button.primary.danger:disabled{background:transparent;color:var(--red-hot);border-color:var(--red-hot);opacity:.4}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0e0e0ec7;display:flex;align-items:center;justify-content:center;z-index:20;padding:16px}.confirm-modal{max-width:480px;width:100%;border-color:var(--red-hot);border-width:2px}.confirm-modal code{background:var(--panel-2);padding:1px 6px;border-radius:4px;font-size:.95em;font-family:var(--font-mono);color:var(--red-hot)}.app-footer{margin-top:24px;position:relative;background:var(--fresh-asphalt);color:var(--pit-crew);padding:0;border-top:0;text-align:center}.app-footer .footer-stripe{height:36px;background-image:repeating-linear-gradient(-45deg,var(--red-hot) 0 14px,var(--smolder-red) 14px 28px);display:flex;align-items:center;justify-content:space-between;padding:0 20px;font-family:var(--font-display);font-weight:800;font-style:italic;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--pit-crew)}.app-footer .footer-body{padding:16px 20px;font-size:12px;color:var(--concrete);line-height:1.5}.app-footer .brand{color:var(--pit-crew);font-weight:700}.app-footer .brand .accent{color:var(--red-hot)}.app-footer a{color:var(--concrete);text-decoration:none}.app-footer a:hover{color:var(--red-hot)}.app-footer .contacts{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px 14px;justify-content:center;font-family:var(--font-display);font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
