:root{--bg: #0c1120;--surface: #151c30;--surface2: #1d2640;--border: #2a3553;--text: #e8ecf5;--muted: #8b96b3;--accent: #2f6fed;--ok: #2ecc71;--bad: #e74c3c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px}button{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.45rem .9rem;cursor:pointer;font-size:.9rem}button:hover{border-color:var(--accent)}button.active{background:var(--accent);border-color:var(--accent)}button.danger{border-color:#6b2a2a;background:#2a1515}button:disabled{opacity:.5;cursor:default}input,select,textarea{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.5rem .7rem;font-size:.95rem;font-family:inherit}.app main{max-width:1200px;margin:0 auto;padding:1.2rem}.topbar{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1.2rem;background:var(--surface);border-bottom:1px solid var(--border)}.brand{cursor:pointer;font-size:1.1rem}.topbar nav{display:flex;gap:.5rem}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:2.2rem;width:22rem;display:flex;flex-direction:column;gap:.9rem;text-align:center}.login-card h1{margin:0;font-size:1.4rem}.login-card p{margin:0;color:var(--muted)}.login-card .error{color:var(--bad);font-size:.85rem}.page-head{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:.8rem}.group-title{color:var(--muted);margin:1.2rem 0 .5rem;font-size:.95rem;text-transform:uppercase;letter-spacing:.05em}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:.9rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:.9rem 1rem}.card.online{border-left:4px solid var(--ok)}.card.offline{border-left:4px solid var(--bad);opacity:.75}.card-head{display:flex;align-items:center;gap:.55rem;margin-bottom:.55rem}.card-name{cursor:pointer;font-size:1.05rem}.card-name:hover{color:var(--accent)}.card-body{cursor:pointer;display:flex;flex-direction:column;gap:.22rem;font-size:.88rem}.card-body span{color:var(--muted);display:inline-block;width:5.2rem}.dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}.dot.ok{background:var(--ok)}.dot.bad{background:var(--bad)}.empty{color:var(--muted);padding:2.5rem;text-align:center}.bulkbar{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap;background:var(--surface2);border-radius:10px;padding:.45rem .7rem}.bulk-msg,.msg{color:var(--muted);font-size:.85rem;min-height:1.2em;margin-top:.4rem}.tabs{display:flex;gap:.4rem;margin:.8rem 0 1.1rem;flex-wrap:wrap}.kv{border-collapse:collapse;width:100%;max-width:40rem}.kv td{padding:.42rem .6rem;border-bottom:1px solid var(--border)}.kv td:first-child{color:var(--muted);width:11rem}.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin-bottom:.6rem}.screenshot{max-width:100%;border:1px solid var(--border);border-radius:10px;margin-top:.8rem}.term{background:#060a14;border:1px solid var(--border);border-radius:10px;padding:.8rem;font-family:ui-monospace,Consolas,monospace;font-size:.82rem;white-space:pre-wrap;word-break:break-all;min-height:8rem;max-height:26rem;overflow-y:auto}.term-tall{min-height:16rem}.prompt{color:var(--ok)}.err{color:var(--bad)}.termline{display:flex;gap:.5rem;align-items:center;margin-top:.5rem}.termline input{flex:1;font-family:ui-monospace,Consolas,monospace}.form{display:flex;flex-direction:column;gap:.8rem;max-width:30rem}.form label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;color:var(--muted)}.form hr{border:none;border-top:1px solid var(--border);width:100%}.theme-editor{display:flex;flex-direction:column;gap:1rem;max-width:44rem}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.8rem}.theme-grid label{display:flex;flex-direction:column;gap:.3rem;font-size:.88rem;color:var(--muted)}.theme-grid input[type=color]{height:2.4rem;padding:.15rem;cursor:pointer}.theme-editor textarea{width:100%}.row{display:flex!important;flex-direction:row!important;align-items:center;gap:.5rem!important}.theme-videos h4{margin:0 0 .4rem}.hint{color:var(--muted);font-size:.83rem}.preview{border:2px solid;border-radius:14px;height:11rem;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem}.preview-clock{font-size:2.2rem;font-weight:700}.preview-phrase{opacity:.85}.preview-qr{position:absolute;right:1rem;bottom:1rem;width:3.4rem;height:3.4rem;background:#fff;color:#000;border:3px solid;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700}.files{border-collapse:collapse;width:100%;margin-top:.5rem}.files th{text-align:left;color:var(--muted);font-weight:500;font-size:.85rem}.files td,.files th{padding:.45rem .6rem;border-bottom:1px solid var(--border)}.mono{font-family:ui-monospace,Consolas,monospace;font-size:.78rem;max-width:22rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-btn{display:inline-block;background:var(--accent);border-radius:8px;padding:.5rem 1rem;cursor:pointer;margin:.4rem 0}section{margin-bottom:1.6rem}.canvas-head{display:flex;align-items:baseline;gap:1rem}.canvas-head h4{margin:0}button.link{background:none;border:none;color:var(--accent);padding:0;font-size:.82rem;text-decoration:underline}.cv-canvas{position:relative;width:100%;max-width:760px;aspect-ratio:16 / 9;border:1px solid var(--border);border-radius:10px;overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}.cv-videofull{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:flex-start;padding:.6rem .9rem;color:#ffffff59;background:repeating-linear-gradient(45deg,rgba(255,255,255,.04) 0 12px,transparent 12px 24px);font-size:.85rem}.cv-el{position:absolute;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;border:1px dashed transparent;cursor:grab;overflow:hidden}.cv-el:hover{border-color:#ffffff59}.cv-el.cv-sel{border-color:var(--accent)}.cv-el:active{cursor:grabbing}.cv-handle{position:absolute;right:0;bottom:0;width:14px;height:14px;background:var(--accent);border-radius:4px 0 0;cursor:nwse-resize;opacity:0}.cv-el:hover .cv-handle,.cv-el.cv-sel .cv-handle{opacity:1}.cv-qrbox{width:100%;height:100%;background:#fff;color:#000;border:3px solid;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4%}.cv-qrimg{width:55%;aspect-ratio:1;background:conic-gradient(#000 25%,#fff 0,#fff 50%,#000 0,#000 75%,#fff 0);background-size:28% 28%;display:flex;align-items:center;justify-content:center;color:transparent}.cv-videobox{width:100%;height:100%;background:#0000008c;border:1px solid rgba(255,255,255,.25);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff9}.el-controls{display:flex;gap:.5rem;flex-wrap:wrap}.el-chip{display:flex;align-items:center;gap:.35rem;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:.3rem .6rem;cursor:pointer;font-size:.85rem}.el-chip.sel{border-color:var(--accent)}.el-detail{display:flex;gap:1.2rem;align-items:center;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.6rem .9rem;font-size:.88rem}.el-detail label{display:flex;align-items:center;gap:.5rem;color:var(--muted)}.tpl-bar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.tpl-chip{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.tpl-chip button{border:none;border-radius:0}.tpl-chip .tpl-x{background:#2a1515;padding:.45rem .5rem}.preset-bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}button.preset{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.4rem;font-size:.75rem;color:var(--muted)}button.preset:hover{color:var(--text)}.preset-thumb{position:relative;display:block;width:96px;height:54px;background:#0a0f1e;border-radius:4px;overflow:hidden}.pt-el{position:absolute;border-radius:2px;background:#ffffff40}.pt-qr{background:#e8ecf5}.pt-clock{background:#7aa2ffa6}.pt-video{background:#2ecc7166}.pt-brand,.pt-date,.pt-phrase{background:#ffffff2e}.cv-canvas.cv-dragging{background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px)!important;background-size:10% 10%}.cv-dragbadge{position:absolute;top:8px;left:50%;transform:translate(-50%);background:var(--accent);color:#fff;font-size:.78rem;padding:.2rem .65rem;border-radius:999px;pointer-events:none;z-index:10}.cv-inline-edit{width:95%;background:#000000bf;border:1px solid var(--accent);color:#fff;border-radius:6px;padding:.25rem .5rem;font-size:.95rem}.quickpos{display:flex;flex-direction:column;gap:3px}.quickpos-row{display:flex;gap:3px}.quickpos-dot{width:16px;height:12px;padding:0;background:var(--surface2);border:1px solid var(--border);border-radius:3px}.quickpos-dot:hover{background:var(--accent);border-color:var(--accent)}.playlist-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1rem 1.2rem;margin-bottom:1.2rem}.playlist-card h3{margin:0 0 .2rem}.playlist-card .kv{margin:.6rem 0}.playlist-card .actions{margin-top:.6rem}
