:root{color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,Helvetica Neue,system-ui,sans-serif;--bg: #000;--card: rgba(28, 28, 30, .72);--card-solid: #1c1c1e;--elevated: #2c2c2e;--hairline: rgba(255, 255, 255, .08);--separator: rgba(255, 255, 255, .07);--text: rgba(255, 255, 255, .92);--text-2: rgba(235, 235, 245, .6);--text-3: rgba(235, 235, 245, .3);--fill: rgba(120, 120, 128, .24);--fill-hover: rgba(120, 120, 128, .36);--track: rgba(118, 118, 128, .24);--blue: #0a84ff;--green: #30d158;--red: #ff453a;--orange: #ff9f0a;--yellow: #ffd60a;--pink: #ff375f;--male-tint: rgba(10, 132, 255, .14);--female-tint: rgba(255, 55, 95, .14);--radius: 12px;--radius-card: 20px;--shadow-card: 0 8px 24px rgba(0, 0, 0, .4);--spring: cubic-bezier(.32, .72, 0, 1)}*{box-sizing:border-box}body{margin:0;color:var(--text);-webkit-font-smoothing:antialiased;background:var(--bg);background-image:radial-gradient(1100px 700px at 85% -10%,rgba(10,132,255,.1),transparent 60%),radial-gradient(900px 700px at -10% 110%,rgba(94,92,230,.07),transparent 60%);background-attachment:fixed}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#ffffff29;border-radius:999px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}.wrap{max-width:900px;margin:0 auto;padding:16px}header{display:flex;align-items:center;justify-content:space-between;gap:12px}h1{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin:8px 0}.wrap h3{margin:20px 0 6px;font-size:1rem;font-weight:600;color:var(--text-2);letter-spacing:.01em}select,input,button{font-size:1rem;font-family:inherit;padding:10px 14px;border-radius:var(--radius);border:1px solid transparent;color:var(--text)}select,input{background:var(--fill)}select:focus,input:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #0a84ff47}input::placeholder{color:var(--text-3)}textarea{background:var(--fill);color:var(--text);border:1px solid transparent;border-radius:var(--radius);padding:10px 14px;font-size:1rem}input[type=file]{padding:8px 10px}input[type=file]::file-selector-button{background:var(--fill);color:var(--text);border:none;border-radius:999px;padding:7px 14px;margin-right:10px;font-weight:600;cursor:pointer}button{background:var(--fill);color:var(--text);cursor:pointer;font-weight:600;transition:background .15s ease,transform .15s var(--spring),box-shadow .15s ease}button:hover{background:var(--fill-hover)}button:active{transform:scale(.97)}button:disabled{opacity:.4;cursor:default;transform:none}button:focus-visible{outline:none;box-shadow:0 0 0 4px #0a84ff59}button.del{background:#ff453a26;color:var(--red)}button.del:hover{background:#ff453a47}input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex:none;margin:0;padding:0;width:46px;height:28px;border-radius:999px;background:var(--track);border:none;position:relative;cursor:pointer;transition:background .25s ease}input[type=checkbox]:after{content:"";position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #00000059;transition:transform .25s var(--spring)}input[type=checkbox]:checked{background:var(--green)}input[type=checkbox]:checked:after{transform:translate(18px)}label{display:inline-flex;align-items:center;gap:8px}.panes{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:16px 0}.toilet{border-radius:22px;padding:20px 18px;text-align:center;color:var(--text);border:1px solid var(--hairline)}.toilet.free{background:#30d15824;border-color:#30d15859;box-shadow:0 0 32px #30d1581f}.toilet.full{background:#ff453a24;border-color:#ff453a66;box-shadow:0 0 32px #ff453a24}.toilet .g{font-weight:700;font-size:1.05rem;color:var(--text-2)}.toilet .count{font-size:3.2rem;font-weight:800;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.toilet .state{font-weight:800;letter-spacing:2px;font-size:.9rem}.toilet.free .state{color:var(--green)}.toilet.full .state{color:var(--red)}.toilet .cap{margin-top:12px;display:flex;gap:8px;justify-content:center;align-items:center}.toilet .cap button{padding:4px 14px;border-radius:999px}.scanner{background:var(--card);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5);border:1px solid var(--hairline);border-radius:var(--radius-card);padding:16px;box-shadow:var(--shadow-card)}.row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.row input:not([type=checkbox]){flex:1;min-width:160px}#qr-reader,#cc-qr-reader{width:100%;max-width:340px;margin:0 auto;border-radius:14px;overflow:hidden}.cols{display:flex;flex-direction:column;gap:14px;margin-top:12px}@media (min-width: 900px){.wrap{max-width:1280px}.cols{display:grid;grid-template-columns:minmax(320px,420px) 1fr;align-items:start}#qr-reader,#cc-qr-reader{max-width:none}}.tv-frame{display:flex;min-height:100vh}.tv-media{flex:1;min-width:0;overflow:hidden;background:#000;display:grid;grid-template-columns:minmax(0,1fr);place-items:center;background-image:radial-gradient(circle at 30% 30%,#0a84ff1a,#000 70%);animation:tv-pan 12s ease-in-out infinite alternate}.tv-media-ph{text-align:center;color:var(--text-3);-webkit-user-select:none;user-select:none}.tv-media-icon{font-size:4rem;opacity:.8;animation:tv-pulse 2.4s ease-in-out infinite}.tv-media-label{font-size:1.6rem;font-weight:800;letter-spacing:2px;margin-top:8px;color:var(--text-2)}.tv-media-sub{font-size:.9rem;opacity:.6;margin-top:4px}@keyframes tv-pulse{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.08);opacity:1}}@keyframes tv-pan{0%{background-position:0% 0%}to{background-position:100% 100%}}.tv-app{flex:0 0 580px;max-width:580px;height:100vh;overflow:auto;border-left:1px solid var(--hairline);background:var(--bg)}@media (min-width: 900px){.tv-app .wrap{max-width:none}.tv-app .cols{display:flex;flex-direction:column;grid-template-columns:none}.tv-app #cc-qr-reader{max-width:340px}.tv-app .nav{position:sticky;top:0;z-index:5}}.kiosk-panel{width:100%;height:100%;display:flex;flex-direction:column;color:var(--text)}.kiosk-switch{display:flex;gap:4px;padding:3px;margin:14px auto 10px;width:fit-content;background:var(--track);border-radius:999px}.kiosk-switch button{background:transparent;color:var(--text-2);border:none;padding:8px 20px;font-weight:600;border-radius:999px}.kiosk-switch button:hover{background:#ffffff0f}.kiosk-switch button.on{background:#636366;color:#fff;box-shadow:0 2px 8px #00000059}.ktimer-wrap{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:12px;overflow:hidden}.ktimer-msg{background:transparent;border:none;text-align:center;color:var(--text-2);font-size:clamp(1.3rem,3.4vw,2.6rem);font-weight:700;letter-spacing:3px;text-transform:uppercase;width:90%}.ktimer-msg:focus{box-shadow:none;border-color:transparent}.ktimer-msg::placeholder{color:var(--text-3);text-transform:none;letter-spacing:normal;font-weight:500}.ktimer{font-family:ui-rounded,SF Pro Rounded,-apple-system,system-ui,sans-serif;font-size:clamp(5rem,26vw,30rem);font-weight:800;line-height:.9;font-variant-numeric:tabular-nums;letter-spacing:0;color:var(--text);max-width:100%;white-space:nowrap}.ktimer.run{color:var(--green)}.ktimer.over{color:var(--red);animation:tv-pulse 1s ease-in-out infinite}.ktimer-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.ktimer-row.transport{margin-top:8px}.kbtn{background:#0a84ff26;color:var(--blue);border:none;border-radius:999px;padding:10px 18px;font-size:1.05rem;font-weight:700;min-width:52px}.kbtn:hover{background:#0a84ff47}.kbtn.add{background:var(--fill);color:var(--text)}.kbtn.add:hover{background:var(--fill-hover)}.kbtn.start{background:var(--green);color:#fff}.kbtn.start:hover{background:#4cd964}.kbtn.pause{background:var(--orange);color:#fff}.kbtn.pause:hover{background:#ffb340}.kbtn:disabled{opacity:.4;cursor:default}.kvideo{flex:1;min-height:0;position:relative;background:#000}.kvideo video{width:100%;height:100%;object-fit:contain;display:block}.kvideo .kyt{width:100%;height:100%;border:0;display:block}.kvideo-mute{position:absolute;bottom:14px;right:14px;background:#1c1c1ebf;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--hairline);border-radius:999px;padding:8px 14px;font-size:1.1rem}.kyt-sound{position:absolute;bottom:18px;left:50%;transform:translate(-50%);background:var(--blue);color:#fff;border:none;padding:12px 24px;font-size:1.1rem;font-weight:700;border-radius:999px;box-shadow:0 6px 20px #0a84ff66}.kyt-sound:hover{background:#3395ff}.kvideo-ph{flex:1;display:grid;place-items:center;text-align:center;color:var(--text-3)}.kvideo-ph .tv-media-icon{font-size:3.5rem}.bignote{margin-top:12px;padding:18px;border-radius:16px;text-align:center;animation:pop .3s var(--spring)}.bignote.ok{background:#30d15824;border:1px solid rgba(48,209,88,.4);box-shadow:0 0 40px #30d1581f}.bignote.warn{background:#ff9f0a24;border:1px solid rgba(255,159,10,.4);box-shadow:0 0 40px #ff9f0a1a}.bignote .bn-name{font-size:1.35rem;font-weight:700}.bignote .bn-dest{font-size:2rem;font-weight:800;margin-top:6px;letter-spacing:-.01em}.bignote.ok .bn-dest{color:var(--green)}.bignote.warn .bn-dest{color:var(--orange)}.bignote .bn-warn{margin-top:10px;font-size:1.05rem;font-weight:700;color:var(--yellow)}@keyframes pop{0%{transform:scale(.94);opacity:.4}to{transform:scale(1);opacity:1}}.banner{margin-top:12px;padding:14px;border-radius:14px;font-weight:700;text-align:center;font-size:1.15rem;border:1px solid transparent}.banner.ok{background:#30d15829;border-color:#30d15873;color:var(--green)}.banner.bad{background:#ff453a29;border-color:#ff453a80;color:var(--red)}.banner.warn{background:#ff9f0a29;border-color:#ff9f0a80;color:var(--orange)}.walkin{margin-top:14px;padding:16px;background:#ff9f0a1a;border:1px solid rgba(255,159,10,.45);border-radius:16px}.walkin .allow,.alert .allow{background:var(--green);color:#fff}.walkin .allow:hover,.alert .allow:hover{background:#4cd964}.walkin .reject{background:#ff453a26;color:var(--red)}.walkin .reject:hover{background:#ff453a47}.genchoice{margin-top:14px;padding:18px;border-radius:16px;text-align:center;background:#1c1c1ed9;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid rgba(255,159,10,.45);box-shadow:var(--shadow-card)}.genchoice .gc-q{font-size:1.1rem;font-weight:600}.genchoice button{font-size:1.1rem;font-weight:700;padding:12px 24px;border-radius:999px}.genchoice .gm-male{background:var(--blue);color:#fff}.genchoice .gm-male:hover{background:#3395ff}.genchoice .gm-female{background:var(--pink);color:#fff}.genchoice .gm-female:hover{background:#ff6482}.genchoice .gm-cancel{background:var(--fill)}.nav{display:flex;gap:8px;padding:10px 16px;position:sticky;top:0;z-index:10;background:#0a0a0cb8;-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5);border-bottom:1px solid var(--hairline)}.nav button{background:transparent;color:var(--text-2);border-radius:999px}.nav button:hover{background:var(--fill)}.nav button.on{background:var(--blue);color:#fff}.nav .who{margin-left:auto;align-self:center;color:var(--text-2);font-size:.9rem}.nav .logout{background:#ff453a26;color:var(--red);border-radius:999px}.nav .logout:hover{background:#ff453a47}header .who{padding:10px 14px;background:var(--fill);border-radius:999px;font-weight:600}.alert{max-width:900px;margin:0 auto;padding:12px 16px}.alert{background:#ff9f0a1f;border:1px solid rgba(255,159,10,.45);border-radius:16px;margin-top:12px}table.queue{width:100%;border-collapse:collapse;margin-top:12px;font-size:.95rem}table.queue th,table.queue td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--separator)}table.queue th{font-size:.8rem;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}table.queue tr.top td:first-child{font-weight:800;color:var(--yellow)}table.queue tr.male{background:var(--male-tint)}table.queue tr.female{background:var(--female-tint)}table.queue tr.male:hover{background:#0a84ff3d}table.queue tr.female:hover{background:#ff375f3d}table.queue tr.mine{box-shadow:inset -4px 0 0 var(--blue)}table.queue tr.top{box-shadow:inset 3px 0 0 var(--yellow)}table.queue tr.top.mine{box-shadow:inset 3px 0 0 var(--yellow),inset -4px 0 0 var(--blue)}.acts{text-align:right;white-space:nowrap}.acts button{padding:4px 12px;font-size:.85rem;margin-left:6px;vertical-align:middle;border-radius:999px}.acts button.send{background:var(--green);color:#fff;font-weight:700}.acts button.send:hover{background:#4cd964}table.queue td{vertical-align:middle}@keyframes tqs-send-blink-m{0%,to{background:#0a84ff24}50%{background:#30d15880}}@keyframes tqs-send-blink-f{0%,to{background:#ff375f24}50%{background:#30d15880}}table.queue tr.male.needs-dispatch{animation:tqs-send-blink-m 1s ease-in-out infinite}table.queue tr.female.needs-dispatch{animation:tqs-send-blink-f 1s ease-in-out infinite}.admin-card{background:var(--card);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5);border:1px solid var(--hairline);border-radius:16px;padding:14px;margin-top:12px}.admin-head{display:flex;align-items:center;gap:10px}.admin-head .del{margin-left:auto}.login{min-height:100vh;display:grid;place-items:center}.login form{background:var(--card);-webkit-backdrop-filter:blur(20px) saturate(1.5);backdrop-filter:blur(20px) saturate(1.5);border:1px solid var(--hairline);box-shadow:var(--shadow-card);padding:32px 28px;border-radius:24px;display:flex;flex-direction:column;gap:12px;width:min(360px,92vw)}.login h1{margin:0 0 6px;font-size:1.7rem}.login form button{background:var(--blue);color:#fff;font-weight:700}.login form button:hover{background:#3395ff}.login .hint{font-size:.8rem;color:var(--text-2);margin-top:6px;line-height:1.6}.login code{background:var(--fill);padding:2px 7px;border-radius:6px}@keyframes tqs-blink{0%,to{box-shadow:inset 0 0 0 2px transparent}50%{box-shadow:inset 0 0 0 2px #ff453ae6}}tr.over-time{animation:tqs-blink 1s ease-in-out infinite}tr.over-time td{font-weight:600}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.scanner,.admin-card,.login form,.genchoice{background:var(--card-solid)}.nav{background:#0a0a0c}}
