@font-face{font-family:Aileron;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/aileron-latin-400-normal-BwjnRx10.woff2) format("woff2"),url(/assets/aileron-latin-400-normal-CZMvlTLN.woff) format("woff")}@font-face{font-family:Aileron;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/aileron-latin-600-normal-DtE--sJn.woff2) format("woff2"),url(/assets/aileron-latin-600-normal-CaTnUr-M.woff) format("woff")}@font-face{font-family:Aileron;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/aileron-latin-700-normal-DtzFUh3z.woff2) format("woff2"),url(/assets/aileron-latin-700-normal-adpqQH8h.woff) format("woff")}:root{--bg: #0f1117;--panel: #171a23;--panel-2: #1f2330;--border: #2a2f3d;--text: #e6e8ee;--muted: #9aa2b4;--accent: #e6e8ee;--accent-2: #ffffff;--accent-ink: #0f1117;--danger: #ef4444;--canvas-bg: #ffffff;font-family:Aileron,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}input,button,select,textarea{font-family:inherit}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text)}button{font-family:inherit;cursor:pointer}.home{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;background:radial-gradient(1200px 600px at 50% -10%,#1b1e27 0%,var(--bg) 60%);padding:24px}.home-card{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:28px;box-shadow:0 30px 80px #00000073}.brand{display:flex;align-items:center;gap:14px;margin-bottom:22px}.brand-mark{color:#fff;line-height:0;display:inline-flex}.brand h1{margin:0;font-size:22px;letter-spacing:.2px}.brand p{margin:2px 0 0;color:var(--muted);font-size:13px}.tabs{display:flex;gap:6px;background:var(--panel-2);padding:4px;border-radius:12px;margin-bottom:20px}.tabs button{flex:1;padding:9px;border:none;border-radius:9px;background:transparent;color:var(--muted);font-weight:600;font-size:13px;transition:.15s}.tabs button.active{background:#fff;color:var(--accent-ink)}.home-form{display:flex;flex-direction:column;gap:14px}.home-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}.home-form input{padding:11px 12px;border-radius:10px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:14px;outline:none;transition:border .15s}.home-form input:focus{border-color:var(--accent)}.code-input{letter-spacing:2px;font-weight:700}.primary{margin-top:6px;padding:12px;border:none;border-radius:11px;background:#fff;color:var(--accent-ink);font-weight:700;font-size:14px}.primary:disabled{opacity:.6;cursor:default}.error{margin:14px 0 0;color:var(--danger);font-size:13px;text-align:center}.home-footer{color:var(--muted);font-size:12px}.board{display:flex;height:100%;overflow:hidden}.board-main{flex:1;display:flex;flex-direction:column;min-width:0}.board-header{height:52px;flex:0 0 52px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}.board-title{display:flex;align-items:center;gap:10px;font-size:14px}.board-title .dot{width:9px;height:9px;border-radius:50%;background:#e6e8ee;box-shadow:0 0 6px #e6e8ee80}.code-chip{border:1px solid var(--border);background:var(--panel-2);color:var(--muted);padding:4px 10px;border-radius:8px;font-size:12px;font-weight:700;letter-spacing:1.5px}.code-chip:hover{color:var(--text);border-color:var(--accent)}.board-users{display:flex;align-items:center;gap:6px}.avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12px;font-weight:700;border:2px solid var(--panel)}.leave-btn{margin-left:8px;width:34px;height:34px;padding:0;display:grid;place-items:center;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--muted)}.leave-btn svg{display:block}.leave-btn:hover{color:#fca5a5;border-color:var(--danger)}.canvas-wrap{position:relative;flex:1;overflow:hidden;background-color:var(--canvas-bg);background-image:radial-gradient(circle,rgba(17,24,39,.08) .75px,transparent 1.1px);background-size:22px 22px;background-position:-11px -11px;touch-action:none}.board-canvas{position:absolute;top:0;right:0;bottom:0;left:0;display:block}.cursor-draw{cursor:crosshair}.cursor-select{cursor:default}.cursor-eraser{cursor:cell}.cursor-pan{cursor:grab}.cursor-panning{cursor:grabbing}.cursor-text{cursor:text}.zoom-controls{position:absolute;right:16px;bottom:16px;display:flex;align-items:center;gap:2px;padding:3px;background:var(--panel, #ffffff);border:1px solid var(--border, rgba(17, 24, 39, .12));border-radius:10px;box-shadow:0 4px 16px #1118271a;z-index:6;-webkit-user-select:none;user-select:none}.zoom-controls button{border:none;background:transparent;color:var(--text, #111827);font-size:16px;line-height:1;width:28px;height:28px;border-radius:7px;cursor:pointer;display:flex;align-items:center;justify-content:center}.zoom-controls button:hover{background:#1118270f}.zoom-controls .zoom-level{width:48px;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.remote-cursor{position:absolute;top:0;left:0;pointer-events:none;will-change:transform;z-index:5}.cursor-label{position:absolute;left:16px;top:14px;padding:2px 7px;border-radius:6px;color:#fff;font-size:11px;font-weight:600;white-space:nowrap;box-shadow:0 2px 6px #00000040}.toolbar-float{position:fixed;z-index:20;display:flex;align-items:flex-start;gap:10px;--tb-bg: #2b2b31;--tb-fg: #d7d7de;--tb-muted: #7d7d86;--tb-line: rgba(255, 255, 255, .09);--tb-hover: rgba(255, 255, 255, .08)}.toolbar{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 6px;background:var(--tb-bg);border-radius:20px;box-shadow:0 10px 34px #00000052}.tool-grip{width:40px;height:20px;display:grid;place-items:center;color:var(--tb-muted);background:transparent;border:none;cursor:grab;touch-action:none}.tool-grip:active{cursor:grabbing}.tool-sep{width:56%;height:1px;background:var(--tb-line);margin:5px auto}.tool-btn{width:42px;height:42px;border-radius:12px;border:none;background:transparent;color:var(--tb-fg);display:grid;place-items:center;cursor:pointer;transition:background .12s,color .12s}.tool-btn:hover{background:var(--tb-hover)}.tool-btn.active{background:#f4f4f6;color:#1c1c22}.tool-btn:disabled{opacity:.3;cursor:default;background:transparent}.tool-btn.subtle{color:var(--tb-muted)}.tool-btn.subtle:hover{color:var(--tb-fg);background:var(--tb-hover)}.color-btn .color-chip{width:22px;height:22px;border-radius:50%;border:1px solid transparent;box-shadow:inset 0 0 0 1px #ffffff2e}.tool-zoom{width:42px;padding:3px 0;border:none;background:transparent;color:var(--tb-fg);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;border-radius:7px;cursor:pointer}.tool-zoom:hover{background:var(--tb-hover)}.tool-pop{background:var(--tb-bg);border-radius:16px;box-shadow:0 10px 34px #00000057;padding:12px}.shapes-pop{display:flex;flex-direction:column;gap:2px;padding:6px}.size-pop{width:230px}.pop-row+.pop-row{margin-top:16px}.pop-row-head{display:flex;justify-content:space-between;align-items:baseline;font-size:14px;color:var(--tb-fg);margin-bottom:9px}.pop-val{font-size:13px;font-weight:600;color:var(--tb-muted);font-variant-numeric:tabular-nums}.tool-pop input[type=range]{width:100%;accent-color:#f4f4f6}.pop-style{display:flex;gap:8px}.style-btn{width:42px;height:38px;border-radius:10px;border:1px solid var(--tb-line);background:transparent;color:var(--tb-fg);font-size:18px;font-family:Aileron,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;cursor:pointer}.style-btn:hover{background:var(--tb-hover)}.style-btn.active{background:#f4f4f6;color:#1c1c22;border-color:#f4f4f6}.cp{width:236px;display:flex;flex-direction:column;gap:12px}.cp-swatches{display:flex;gap:8px}.cp-swatch{flex:1;aspect-ratio:1;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;box-shadow:inset 0 0 0 1px #ffffff29}.cp-swatch.active{border-color:#fff}.cp-sv{position:relative;width:100%;height:150px;border-radius:10px;overflow:hidden;cursor:crosshair;touch-action:none}.cp-sv-white{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to right,#fff,#fff0)}.cp-sv-black{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,#000,#0000)}.cp-hue{position:relative;width:100%;height:14px;border-radius:7px;cursor:pointer;touch-action:none;background:linear-gradient(to right,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.cp-thumb{position:absolute;width:16px;height:16px;border-radius:50%;border:2px solid #fff;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000059;pointer-events:none}.cp-hue-thumb{top:50%}.cp-foot{display:flex;align-items:center;gap:10px}.cp-preview{width:42px;height:42px;border-radius:12px;flex:0 0 auto;box-shadow:inset 0 0 0 1px #ffffff29}.cp-hex{flex:1;min-width:0;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:#e8e8ec;font-size:16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;padding:11px 14px;outline:none}.text-editor{position:absolute;left:0;top:0;margin:0;padding:4px 8px;min-width:140px;width:auto;field-sizing:content;border:2px solid #3b82f6;border-radius:8px;background:#ffffffeb;box-shadow:0 6px 22px #1118272e;outline:none;resize:none;overflow:hidden;caret-color:#3b82f6;font-family:Aileron,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.3;transform-origin:top left;white-space:pre-wrap;z-index:8}.text-editor::placeholder{color:#11182759}.console-center{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1200px 600px at 50% -10%,#1b1e27 0%,var(--bg) 60%)}.brand-mark.small{font-size:20px}.console{min-height:100%;display:flex;flex-direction:column}.console-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap}.console-title{display:flex;align-items:center;gap:10px;font-size:15px}.console-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.console-user{color:var(--muted);font-size:13px;margin-right:4px}.ghost-btn{padding:7px 12px;border-radius:8px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:12px;font-weight:600}.ghost-btn:hover{border-color:var(--accent)}.ghost-btn.danger{color:#fca5a5}.ghost-btn.danger:hover{border-color:var(--danger);background:#ef44441a}.ghost-btn:disabled{opacity:.5;cursor:default}.console-main{padding:20px;max-width:1200px;width:100%;margin:0 auto}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin-bottom:26px}.stat-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:5px}.stat-value{font-size:32px;font-weight:700;line-height:1;color:var(--text)}.stat-label{font-size:13px;color:var(--muted)}@media(max-width:560px){.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:14px;border-radius:12px}.stat-value{font-size:26px}.stat-label{font-size:12px}}.boards-panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden}.boards-panel-head{padding:14px 16px;border-bottom:1px solid var(--border)}.boards-panel-head h2{margin:0;font-size:15px}.table-wrap{overflow-x:auto}.boards-table{width:100%;border-collapse:collapse;font-size:13px;min-width:820px}.boards-table th,.boards-table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}.boards-table th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px}.boards-table tbody tr:hover{background:var(--panel-2)}.boards-table code{background:var(--panel-2);padding:2px 7px;border-radius:6px;letter-spacing:1px;font-weight:700}.board-name{font-weight:600;max-width:220px;overflow:hidden;text-overflow:ellipsis}.row-disabled{opacity:.55}.empty-row{text-align:center;color:var(--muted);padding:24px}.badge{display:inline-block;font-size:11px;margin-right:4px}.badge-off{background:#ef444426;color:#fca5a5;padding:2px 7px;border-radius:6px;font-weight:600}.actions-col{text-align:right}.mini-btn{padding:5px 10px;border-radius:7px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:11px;font-weight:600;margin-left:6px}.mini-btn:hover{border-color:var(--accent)}.mini-btn.danger{color:#fca5a5}.mini-btn.danger:hover{border-color:var(--danger);background:#ef44441a}.change-pw{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:24px}.change-pw h3{margin:0 0 12px;font-size:14px}.change-pw-row{display:flex;gap:10px;flex-wrap:wrap}.change-pw-row input{flex:1;min-width:180px;padding:10px 12px;border-radius:9px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:13px;outline:none}.change-pw-row input:focus{border-color:var(--accent)}.change-pw-row .primary{margin-top:0;flex:0 0 auto;padding:10px 18px}.change-pw-msg{margin:10px 0 0;font-size:13px;color:var(--muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0f11178c;display:flex;align-items:center;justify-content:center;padding:20px}.modal{position:relative;width:100%;max-width:440px;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:26px 26px 22px;box-shadow:0 24px 70px #0006}.modal-close{position:absolute;top:12px;right:14px;width:30px;height:30px;border:none;background:transparent;color:var(--muted);font-size:22px;line-height:1;border-radius:8px;cursor:pointer}.modal-close:hover{background:var(--panel-2);color:var(--text)}.modal-body h3{margin:0 0 16px;font-size:16px}.modal-fields{display:flex;gap:10px;flex-wrap:wrap}.modal-fields input{flex:1;min-width:160px;padding:11px 13px;border-radius:10px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:14px}.modal-fields input:focus{border-color:var(--accent);outline:none}.modal-fields .primary{margin-top:0;flex:0 0 auto;padding:11px 20px}.modal-label{display:block;font-size:13px;color:var(--muted);margin-bottom:14px}.modal-label input{display:block;width:100%;margin-top:6px;padding:11px 13px;border-radius:10px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:15px}.modal-label input:focus{border-color:var(--accent);outline:none}.modal-hint{color:var(--muted);opacity:.7}.modal-body>.primary{width:100%;margin-top:4px}.muted{color:var(--muted)}.version-tag{display:inline-block;margin-left:8px;padding:1px 7px;border-radius:6px;background:var(--panel-2);border:1px solid var(--border);color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.3px;vertical-align:middle}.invite-banner{display:flex;flex-direction:column;gap:2px;background:var(--panel-2);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:16px;font-size:14px}.invite-banner strong{color:var(--text)}.invite-banner span{font-size:12px;color:var(--muted)}.board-title-text{cursor:pointer;border-radius:6px;padding:2px 4px;transition:background .12s}.board-title-text:hover{background:var(--panel-2)}.title-edit{font:inherit;font-weight:700;color:var(--text);background:var(--panel-2);border:1px solid var(--accent);border-radius:6px;padding:2px 6px;outline:none;max-width:220px}.ghost-btn.accent{color:var(--text);border-color:var(--accent)}.ghost-btn.accent:hover{background:#ffffff14}.invite-grid{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end}.invite-field{display:flex;flex-direction:column;gap:5px}.invite-field span{font-size:11px;font-weight:600;color:var(--muted)}.invite-field input,.invite-field select{padding:10px 12px;border-radius:9px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:13px;outline:none}.invite-field input:focus,.invite-field select:focus{border-color:var(--accent)}.invite-send{margin-top:0;padding:10px 18px;white-space:nowrap}.invite-note{font-size:12px;color:var(--muted);margin:12px 0 0;line-height:1.5}@media(max-width:720px){.invite-grid{grid-template-columns:1fr}}.ghost-btn.icon{width:34px;height:34px;padding:0;display:grid;place-items:center}.ghost-btn.icon svg{display:block}.spin{animation:spin .8s linear infinite;transform-origin:center}@keyframes spin{to{transform:rotate(360deg)}}.mini-btn svg{display:block}.mini-btn.open{display:inline-flex;align-items:center;gap:4px;text-decoration:none}.mini-btn.icon{display:inline-grid;place-items:center;width:30px;height:30px;padding:0;text-decoration:none;color:var(--text);vertical-align:middle}
