:root{--bg: #0c1118;--panel: rgba(17, 24, 34, .88);--panel-border: rgba(255, 255, 255, .08);--text: #e8edf4;--text-dim: #93a1b3;--accent: #35c56f;--accent-dark: #23934f;--danger: #e05252;--radius: 10px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}button{font:inherit;color:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font:inherit;color:var(--text);background:#ffffff0f;border:1px solid var(--panel-border);border-radius:6px;padding:6px 8px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent)}.center-screen{height:100%;display:grid;place-items:center}.spinner{width:42px;height:42px;border-radius:50%;border:3px solid rgba(255,255,255,.15);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.logo-badge{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#2fbf68,#147a3e);color:#fff;font-weight:800;font-size:12px;letter-spacing:.5px;flex:none}.btn{padding:7px 14px;border-radius:8px;background:var(--accent-dark);color:#fff;font-weight:600;transition:background .15s}.btn:hover{background:var(--accent)}.btn:disabled{opacity:.55;cursor:default}.btn.ghost{background:#ffffff12;color:var(--text)}.btn.ghost:hover{background:#ffffff24}.btn.danger{background:#e052522e;color:#ff9c9c}.btn.danger:hover{background:#e0525252}.btn.small{padding:4px 10px;font-size:12.5px}.login-page{height:100%;display:grid;place-items:center;position:relative;overflow:hidden}.login-hero{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 0%,#14331f,#0c1118 65%)}.login-pitch{position:absolute;left:50%;top:58%;width:130vmax;height:85vmax;transform:translate(-50%) perspective(700px) rotateX(64deg);background:repeating-linear-gradient(90deg,#1e7a3c 0 90px,#186a33 90px 180px);border:3px solid rgba(255,255,255,.35);opacity:.33;border-radius:8px}.login-card{position:relative;width:min(430px,calc(100vw - 32px));background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;padding:34px 34px 24px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 30px 80px #00000080}.login-logo{display:flex;align-items:center;gap:12px}.login-logo h1{margin:0;font-size:26px;letter-spacing:1px}.login-tagline{color:var(--text-dim);line-height:1.5;margin:14px 0 22px}.login-error{background:#e0525226;border:1px solid rgba(224,82,82,.4);color:#ffb4b4;border-radius:8px;padding:10px 12px;margin-bottom:16px;font-size:13px}.login-buttons{display:flex;flex-direction:column;gap:10px}.login-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:11px;border-radius:9px;font-weight:600;text-decoration:none;color:#1c2430;background:#fff;transition:transform .1s}.login-btn:hover{transform:translateY(-1px)}.login-btn.disabled{opacity:.5;cursor:not-allowed}.login-note{font-size:12px;color:var(--text-dim);text-align:center}.login-dev{margin-top:18px;display:flex;flex-direction:column;gap:8px}.login-dev button{padding:8px;border-radius:8px;background:#ffd63c1f;border:1px dashed rgba(255,214,60,.5);color:#ffd23c;font-weight:600}.login-divider{text-align:center;color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:2px}.login-admin-link{margin-top:22px;padding-top:16px;border-top:1px solid var(--panel-border);text-align:center}.login-admin-link a{color:var(--text-dim);text-decoration:none;font-size:13px;display:inline-flex;align-items:center;gap:8px}.login-admin-link a:hover{color:var(--text)}.board-page{height:100%;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--panel-border);z-index:20}.header-left,.header-right{display:flex;align-items:center;gap:10px}.board-title{font-weight:700;font-size:15px;padding:6px 10px;border-radius:8px;display:flex;align-items:center;gap:8px}.board-title:hover{background:#ffffff12}.dirty-dot{width:8px;height:8px;border-radius:50%;background:#ffd23c}.user-menu{position:relative}.avatar-btn{width:34px;height:34px;border-radius:50%;overflow:hidden;background:var(--accent-dark);display:grid;place-items:center;font-weight:700}.avatar-btn img{width:100%;height:100%;object-fit:cover}.menu-pop{position:absolute;right:0;top:42px;min-width:200px;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:8px;display:flex;flex-direction:column;gap:4px;box-shadow:0 16px 40px #00000080;z-index:50}.menu-user{display:flex;flex-direction:column;padding:6px 8px;border-bottom:1px solid var(--panel-border);margin-bottom:4px}.menu-user span{color:var(--text-dim);font-size:12px}.menu-pop a,.menu-pop button{text-align:left;padding:7px 8px;border-radius:6px;color:var(--text);text-decoration:none}.menu-pop a:hover,.menu-pop button:hover{background:#ffffff14}.announcement{background:linear-gradient(90deg,#35c56f29,#35c56f0d);border-bottom:1px solid rgba(53,197,111,.35);padding:8px 16px;font-size:13px;z-index:15}.board-body{position:relative;flex:1;min-height:0}.scene-mount{position:absolute;inset:0}.scene-mount canvas{width:100%!important;height:100%!important}.toolbar{position:absolute;left:12px;top:12px;display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;max-height:calc(100% - 90px);overflow-y:auto}.tool{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;color:var(--text-dim);min-width:96px}.tool:hover{background:#ffffff12;color:var(--text)}.tool.active{background:#35c56f2e;color:#7ce8a8}.tool:disabled{opacity:.4;cursor:default}.tool-icon{width:18px;text-align:center}.tool-label{font-size:13px}.toolbar-sep{height:1px;background:var(--panel-border);margin:4px 2px}.color-row{display:flex;gap:6px;padding:2px 4px;flex-wrap:wrap}.color-swatch{width:20px;height:20px;border-radius:50%;border:2px solid transparent}.color-swatch.active{border-color:#fff}.camera-bar{position:absolute;top:12px;right:12px;display:flex;gap:4px;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:5px;z-index:10}.camera-bar button{padding:6px 10px;border-radius:7px;color:var(--text-dim);font-size:12.5px}.camera-bar button:hover{background:#ffffff14;color:var(--text)}.teams-toggle{position:absolute;right:12px;top:60px;z-index:11;background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;padding:6px 10px;color:var(--text-dim);font-size:12.5px}.teams-toggle:hover{color:var(--text)}.team-panel{position:absolute;right:12px;top:100px;width:250px;max-height:calc(100% - 170px);overflow-y:auto;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:10px;display:flex;flex-direction:column;gap:14px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10}.team-head{display:flex;align-items:center;gap:6px}.team-color{width:30px;height:30px;padding:2px;border-radius:6px;flex:none}.team-name{flex:1;min-width:0;font-weight:600}.formation-select{width:92px;flex:none;font-size:12.5px}.squad-toggle{align-self:flex-start;color:var(--text-dim);font-size:12px;padding:2px 4px}.squad-toggle:hover{color:var(--text)}.squad-list{display:flex;flex-direction:column;gap:4px}.squad-row{display:flex;gap:6px}.squad-number{width:52px;flex:none}.squad-name{flex:1;min-width:0}.frames-bar{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;padding:8px 10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;max-width:min(760px,calc(100vw - 40px))}.play-btn{width:38px;height:38px;flex:none;border-radius:50%;background:var(--accent-dark);color:#fff;font-size:15px}.play-btn:hover{background:var(--accent)}.play-btn.playing{background:var(--danger)}.frames-list{display:flex;gap:6px;overflow-x:auto;align-items:center}.frame-chip{display:flex;align-items:center;gap:4px;background:#ffffff0d;border:1px solid var(--panel-border);border-radius:8px;padding:3px}.frame-chip.active{border-color:var(--accent)}.frame-select{width:28px;height:28px;border-radius:6px;color:var(--text-dim);font-weight:700}.frame-chip.active .frame-select{color:#7ce8a8}.frame-name{width:110px;padding:4px 6px;font-size:12.5px}.frame-delete{color:var(--text-dim);padding:2px 6px}.frame-delete:hover{color:var(--danger)}.frame-add{flex:none;padding:7px 11px;border-radius:8px;background:#ffffff12;font-size:13px}.frame-add:hover:not(:disabled){background:#ffffff24}.frame-add:disabled{opacity:.4}.drawer-overlay{position:fixed;inset:0;background:#00000080;z-index:60}.drawer{position:absolute;left:0;top:0;bottom:0;width:min(360px,90vw);background:#101722;border-right:1px solid var(--panel-border);padding:16px;display:flex;flex-direction:column;gap:12px}.drawer-head{display:flex;align-items:center;justify-content:space-between}.drawer-head h2{margin:0;font-size:18px}.drawer-actions{display:flex;gap:8px}.drawer-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.drawer-empty{color:var(--text-dim);padding:20px 4px;text-align:center}.drawer-item{display:flex;gap:6px;align-items:stretch}.drawer-item.current .drawer-open{border-color:var(--accent)}.drawer-open{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:#ffffff0d;border:1px solid var(--panel-border);border-radius:8px;padding:9px 12px}.drawer-open:hover{background:#ffffff1a}.drawer-open span{color:var(--text-dim);font-size:12px}.drawer-delete{width:36px;border-radius:8px;background:#ffffff0a;color:var(--text-dim);font-size:16px}.drawer-delete:hover{background:#e0525233;color:#ff9c9c}.toast{position:fixed;bottom:84px;left:50%;transform:translate(-50%);background:#1c2634;border:1px solid var(--panel-border);border-radius:10px;padding:10px 18px;z-index:100;box-shadow:0 10px 30px #00000073}.admin-page{min-height:100%;display:flex;flex-direction:column}.admin-title{font-weight:700;font-size:15px}.admin-user{color:var(--text-dim);font-size:13px}.admin-user em{font-style:normal;opacity:.7}.admin-error{margin:12px 20px 0;background:#e0525226;border:1px solid rgba(224,82,82,.4);color:#ffb4b4;border-radius:8px;padding:10px 12px}.admin-main{padding:20px;display:flex;flex-direction:column;gap:18px;max-width:1080px;width:100%;margin:0 auto}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.stat-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:4px}.stat-value{font-size:28px;font-weight:800}.stat-label{color:var(--text-dim);font-size:12.5px;text-transform:uppercase;letter-spacing:1px}.admin-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:18px}.admin-card h2{margin:0 0 14px;font-size:16px}.settings-form{display:flex;flex-direction:column;gap:14px}.setting-row{display:flex;gap:12px;align-items:flex-start}.setting-row p{margin:2px 0 0;color:var(--text-dim);font-size:12.5px}.setting-inline{display:flex;align-items:center;gap:12px}.setting-inline input{width:110px}.setting-block{display:flex;flex-direction:column;gap:6px;width:100%}.setting-block textarea{resize:vertical}.settings-saved{color:#7ce8a8;font-size:13px}.user-search{width:min(340px,100%);margin-bottom:12px}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th{text-align:left;color:var(--text-dim);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--panel-border);white-space:nowrap}.admin-table td{padding:9px 10px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:middle}.disabled-row{opacity:.55}.cell-user{display:flex;align-items:center;gap:10px}.cell-user img{width:28px;height:28px;border-radius:50%}.cell-user span{display:block;color:var(--text-dim);font-size:12px}.cell-actions{display:flex;gap:6px;justify-content:flex-end}.audit-detail{color:var(--text-dim);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-table code{background:#ffffff12;border-radius:4px;padding:2px 6px;font-size:12px}@media(max-width:760px){.tool-label{display:none}.tool{min-width:0}.team-panel{width:210px}.frame-name{width:70px}}
