:root{--bg:#f6f7f9;--surface:#fff;--text:#1b1f24;--muted:#667085;--border:#dde1e6;--accent:#3b5bdb;--accent-text:#fff;--danger:#c92a2a;--ok:#2b8a3e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#111317;--surface:#1a1d23;--text:#e6e8eb;--muted:#9aa2ad;--border:#2c313a;--accent:#5c7cfa;--danger:#ff6b6b;--ok:#51cf66}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}a{color:var(--accent)}header.top{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:16px;padding:12px 24px;display:flex}header.top .brand{color:var(--text);margin-right:auto;font-weight:700;text-decoration:none}header.top nav{align-items:center;gap:16px;display:flex}header.top nav a{text-decoration:none}main{max-width:960px;margin:0 auto;padding:24px 16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:20px;padding:20px}.narrow{max-width:380px;margin:48px auto}.stack{flex-direction:column;gap:12px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}label{color:var(--muted);flex-direction:column;gap:4px;font-size:14px;display:flex}input,select{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;padding:8px 10px}button{font:inherit;background:var(--accent);color:var(--accent-text);cursor:pointer;border:1px solid #0000;border-radius:6px;padding:8px 14px}button:disabled{opacity:.6;cursor:default}button.secondary{color:var(--text);border-color:var(--border);background:0 0}button.danger{color:var(--danger);border-color:var(--danger);background:0 0}button.link{color:var(--accent);background:0 0;border:0;padding:0}.msg{margin:0;font-size:14px}.msg.error{color:var(--danger)}.msg.ok{color:var(--ok)}.muted{color:var(--muted)}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:10px 8px}th{color:var(--muted);font-size:13px;font-weight:500}.badge{border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px}.badge.admin{border-color:var(--accent);color:var(--accent)}.badge.blocked{border-color:var(--danger);color:var(--danger)}details summary{cursor:pointer;color:var(--accent)}.inline-form{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}@media (max-width:640px){.users-table thead{display:none}.users-table tr{border-bottom:1px solid var(--border);padding:8px 0;display:block}.users-table td{border:0;padding:4px 0;display:block}}.small{font-size:13px}.row.spread{justify-content:space-between}h2,h3{margin:0 0 4px}.button-link{background:var(--accent);color:var(--accent-text);border:1px solid #0000;border-radius:6px;padding:8px 14px;text-decoration:none;display:inline-block}.button-link.secondary{color:var(--text);border-color:var(--border);background:0 0}label.check{color:var(--text);flex-direction:row;align-items:center;gap:6px}.field{color:var(--muted);flex-direction:column;gap:4px;font-size:14px;display:flex}input[type=color]{cursor:pointer;width:48px;height:36px;padding:2px}.grid2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.grid4{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.grid2 input,.grid4 input{width:100%;min-width:0}.widget-list{margin:0;padding:0;list-style:none}.widget-list li{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.widget-list li:last-child{border-bottom:0}.widget-name{font-size:17px;font-weight:600;text-decoration:none}.widget-stage{position:relative;overflow:hidden}.el{position:absolute}.el>.counter,.el>.text-el,.el>.shape-el,.el>.image-empty{position:absolute;inset:0}.counter{text-align:center;text-shadow:0 2px 6px #0009;justify-content:center;align-items:center;gap:.15em;padding:4px;line-height:1.05;display:flex;overflow:hidden}.counter-label{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-weight:600;overflow:hidden}.counter-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:800}.text-el{white-space:pre-wrap;text-shadow:0 2px 6px #0009;flex-direction:column;justify-content:center;line-height:1.15;display:flex;overflow:hidden}.shape-el{box-sizing:border-box}main:has(.editor){max-width:none;padding:16px}.editor .card{margin-bottom:16px;padding:16px}.editor-top{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.title-input{background:0 0;border-color:#0000;flex:260px;min-width:0;font-size:22px;font-weight:700}.title-input:hover,.title-input:focus{border-color:var(--border)}.save-status{color:var(--muted);min-width:110px;font-size:13px}.save-status.error{color:var(--danger)}.editor-grid{grid-template-columns:260px minmax(0,1fr) 340px;align-items:start;gap:16px;display:grid}.editor-left,.editor-panel{max-height:calc(100vh - 32px);position:sticky;top:16px;overflow:auto}.editor-panel h2{margin:0}.panel h2{margin-bottom:8px;font-size:16px}.prop-section{border-top:1px solid var(--border);padding-top:12px}.prop-section h3{margin-bottom:8px;font-size:14px}textarea{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);resize:vertical;border-radius:6px;padding:8px 10px}.grid3{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.grid3 input{width:100%;min-width:0}.small-btn{padding:6px 10px;font-size:13px}.danger-text{color:var(--danger)!important}.library{grid-template-columns:1fr 1fr;gap:6px;margin:0;padding:0;list-style:none;display:grid}.library li{border:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none;background:var(--bg);border-radius:8px;align-items:center;gap:8px;padding:8px;font-size:14px;display:flex}.library li:hover{border-color:var(--accent)}.lib-icon{background:var(--accent);width:24px;height:24px;color:var(--accent-text);border-radius:5px;place-items:center;font-size:13px;font-weight:700;display:grid}.scene-tree ul{margin:0;padding:0;list-style:none}.tree-row{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:3px 4px;font-size:14px;display:flex}.tree-row:hover{background:var(--bg)}.tree-row.selected{background:color-mix(in srgb, var(--accent) 20%, transparent)}.tree-row.root{font-weight:600}.tree-row.hidden-el .tree-name,.tree-row.hidden-el .tree-icon{opacity:.45}.tree-row.drop-before{box-shadow:inset 0 2px 0 var(--accent)}.tree-row.drop-after{box-shadow:inset 0 -2px 0 var(--accent)}.tree-row.drop-inside{border-color:var(--accent)}.tree-caret{width:16px;color:var(--muted);background:0 0;border:0;flex:none;padding:0;font-size:12px}.tree-icon{text-align:center;width:18px;color:var(--muted);flex:none;font-weight:700}.tree-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-rename{flex:1;min-width:0;padding:2px 6px;font-size:14px}.tree-toggle{color:var(--text);opacity:0;background:0 0;border:0;flex:none;padding:0 3px;font-size:13px;line-height:1}.tree-row:hover .tree-toggle,.tree-row.selected .tree-toggle{opacity:.8}.tree-toggle.off{opacity:.35}.tree-row .tree-toggle:not(.off):not(.danger-text){opacity:.8}.tree-empty{margin:6px 8px}.context-menu{z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;min-width:230px;padding:4px;display:flex;position:fixed;box-shadow:0 8px 24px #00000040}.context-menu button{text-align:left;color:var(--text);background:0 0;border-radius:5px;justify-content:space-between;gap:16px;padding:6px 10px;font-size:14px;display:flex}.context-menu button:hover:not(:disabled){background:var(--bg)}.context-menu hr{border:0;border-top:1px solid var(--border);width:100%;margin:4px 0}kbd{color:var(--muted);font:12px ui-monospace,monospace}.canvas-wrap{width:100%;overflow:hidden}.canvas-scaler{position:relative}.drop-active .widget-stage{outline:2px dashed var(--accent)!important}.widget-stage.editing{outline:1px dashed var(--border);touch-action:none;-webkit-user-select:none;user-select:none}.widget-stage.checker{background-image:linear-gradient(45deg,#353a42 25%,#0000 25%),linear-gradient(-45deg,#353a42 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#353a42 75%),linear-gradient(-45deg,#0000 75%,#353a42 75%);background-position:0 0,0 12px,12px -12px,-12px 0;background-size:24px 24px;background-color:#2b2f36!important}.el.editable{cursor:move}.el.editable:hover{outline:calc(1px * var(--inv,1)) dashed #ffffff80}.el.el-group.editable{outline:calc(1px * var(--inv,1)) dotted #ffffff4d}.el.locked{pointer-events:none}.el.selected{z-index:1;outline:calc(2px * var(--inv,1)) solid var(--accent)!important}.image-empty{text-align:center;color:#aaa;background:#00000040;border:1px dashed #777;border-radius:6px;place-items:center;padding:8px;font-size:14px;display:grid}.resize-handle{z-index:2;width:calc(14px * var(--inv,1));height:calc(14px * var(--inv,1));background:var(--accent);border:calc(2px * var(--inv,1)) solid #fff;cursor:nwse-resize;border-radius:3px;position:absolute;bottom:0;right:0;transform:translate(50%,50%)}.hint{margin:10px 0 0}.counter-list{margin:8px 0 0;padding:0;list-style:none}.counter-list li{border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:6px 8px;display:flex}.counter-list li.selected{background:var(--bg)}.counter-name{text-align:left;font-weight:600}.stepper{align-items:center;gap:6px;display:flex}.stepper button{min-width:44px;padding:6px 12px;font-size:18px;font-weight:700}.stepper input{text-align:center;font-variant-numeric:tabular-nums;width:110px;font-size:18px}@media (max-width:1200px){.editor-grid{grid-template-columns:240px minmax(0,1fr)}.editor-panel{grid-column:1/-1;max-height:none;position:static}}@media (max-width:760px){.editor-grid{grid-template-columns:1fr}.editor-left{max-height:none;position:static}}.timer-controls{align-items:center;gap:6px;display:flex}.timer-readout{text-align:center;font-variant-numeric:tabular-nums;min-width:96px;font-size:20px;font-weight:700}.quick-text{flex:220px;max-width:360px}code{background:var(--bg);border-radius:4px;padding:1px 4px;font:13px ui-monospace,monospace}.checker-bg{background-color:#2b2f36;background-image:linear-gradient(45deg,#353a42 25%,#0000 25%),linear-gradient(-45deg,#353a42 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#353a42 75%),linear-gradient(-45deg,#0000 75%,#353a42 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;border-radius:8px;overflow:hidden}.template-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin:12px 0 0;padding:0;list-style:none;display:grid}.template-card{flex-direction:column;gap:6px;display:flex}.template-preview{pointer-events:none;width:300px;max-width:100%}.template-card form{margin-top:auto}main:has(.control){max-width:1100px}.control-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.control-top h1{margin:0;font-size:24px}.conn{color:var(--muted);font-size:13px}.conn.live{color:var(--ok)}.conn.lost{color:var(--danger)}.control-preview{pointer-events:none;width:100%}.control-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:8px 0 0;padding:0;list-style:none;display:grid}.control-item{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:14px;display:flex}.control-item .row input{text-align:center;flex:1;min-width:0}.control-name{font-weight:600}.control-big{font-variant-numeric:tabular-nums;text-align:center;font-size:44px;font-weight:800;line-height:1}.control-buttons{grid-template-columns:1fr 1fr;gap:8px;display:grid}.big-btn{padding:14px 0;font-size:22px;font-weight:700}.control-list{flex-direction:column;gap:12px;margin:8px 0 0;padding:0;list-style:none;display:flex}.control-list textarea{width:100%}.visibility{gap:4px}.template-empty{color:#aab;place-items:center;font-size:18px;display:grid}.template-form{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.template-form input:not([type=hidden]){flex:140px;min-width:0}.template-form .msg{flex-basis:100%}.control-set{flex-wrap:nowrap}.control-set input{text-align:center;flex:1;min-width:0}label.inline{flex-direction:row;flex:1;align-items:center;gap:6px;min-width:0}.control-item>button{width:100%}@media (max-width:640px){main:has(.control){padding:12px 10px}.control .card{margin-bottom:12px;padding:14px}.control-top .row{width:100%}.control-top .row>*{text-align:center;flex:auto}.control-grid{grid-template-columns:1fr}header.top{padding:10px 12px}}.donation-total{flex-wrap:wrap;align-items:center;gap:12px;margin:8px 0;font-size:18px;display:flex}.manual-donation{grid-template-columns:1fr 1fr auto auto;gap:8px;margin:8px 0 12px;display:grid}.manual-donation input{min-width:0}.donation-log{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.donation-log li{border-top:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:8px 0;display:flex}.donation-log .added{color:var(--ok);font-variant-numeric:tabular-nums;font-weight:700}.donation-msg{flex-basis:100%}.da-status{border:1px solid var(--border);border-radius:8px;margin:8px 0 16px;padding:12px}.steps{flex-direction:column;gap:8px;padding-left:20px;display:flex}.copy-field{width:100%;margin:4px 0;font-family:ui-monospace,monospace;display:block}.button-link.disabled{opacity:.5;pointer-events:none}@media (max-width:640px){.manual-donation{grid-template-columns:1fr 1fr}}header.top{gap:12px}.nav{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.nav-group{align-items:center;gap:4px;display:flex}.nav-group.admin{border:1px dashed color-mix(in srgb, var(--accent) 60%, transparent);border-radius:10px;padding:3px 4px 3px 8px}.nav-badge{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-right:4px;font-size:11px;font-weight:700}.nav-item{color:var(--text);background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-size:14px;text-decoration:none;display:inline-flex}.nav-item:hover{background:var(--bg)}.nav-item.active{background:color-mix(in srgb, var(--accent) 18%, transparent);color:var(--accent);font-weight:600}.nav-icon{text-align:center;opacity:.85;width:18px}.nav-user{color:var(--muted);padding:0 4px;font-size:14px}.nav-logout{cursor:pointer;color:var(--muted)}.nav-toggle{margin-left:auto;padding:4px 10px;font-size:18px;display:none}@media (max-width:860px){.nav-toggle{display:inline-block}.nav{flex-direction:column;align-items:stretch;gap:8px;width:100%;display:none}.nav.open{display:flex}.nav-group{flex-wrap:wrap}.nav-group.user{justify-content:space-between}}.admin-banner{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger);border-radius:8px;margin:0 0 12px;padding:8px 12px;font-size:14px}.badge.tag{border-color:var(--ok);color:var(--ok)}.table-list{columns:2;padding:0;list-style:none}.table-list li{padding:4px 0}.db-scroll{overflow-x:auto}.db-table{font-size:13px}.db-table td,.db-table th{white-space:nowrap;text-overflow:ellipsis;max-width:320px;overflow:hidden}textarea.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:13px}.share-form{grid-template-columns:2fr 1.2fr 1.4fr .8fr auto;align-items:end;gap:8px;margin:8px 0 12px;display:grid}.share-form input,.share-form select{width:100%;min-width:0}.share-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.share-list>li{border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;padding:12px;display:flex}.share-list>li.inactive{opacity:.6}.share-list .copy-field{flex:1;min-width:0;margin:0}.share-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.share-devices{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.share-devices li{flex-wrap:wrap;align-items:baseline;gap:10px;font-size:14px;display:flex}@media (max-width:760px){.share-form{grid-template-columns:1fr 1fr}}.help details{border-top:1px solid var(--border);padding:10px 0}.help summary{color:var(--text);font-weight:600}.help ul{flex-direction:column;gap:6px;margin:8px 0 0;padding-left:20px;display:flex}.help p{margin:8px 0 0}
