:root{color-scheme:dark;--bg-page: #0a0a0a;--bg-surface: #12161a;--bg-surface-2: #1b2024;--bg-canvas: #0a0a0a;--dot-grid: #20262a;--text-primary: #4dfff5;--text-muted: #2f8f8a;--text-inverse: #0a0a0a;--node-text: #4dfff5;--border: #232a2e;--border-strong: #322f3b;--accent: #adf0e9;--accent-2: #8fecd5;--accent-contrast: #0a0a0a;--danger: #d35f5f;--danger-bg: #2a1414;--ring-select: #adf0e9;--ring-drop: #8fecd5;--ring-link: #d35f5f;--edge-color: #485362;--relationship-color: #d35f5f;--shadow-sm: rgba(0, 0, 0, .5);--shadow-md: rgba(0, 0, 0, .6);--node-shadow: rgba(0, 0, 0, .6)}:root[data-theme=light]{color-scheme:light;--bg-page: #f1f3f5;--bg-surface: #ffffff;--bg-surface-2: #f1f3f5;--bg-canvas: #f8f9fa;--dot-grid: #dee2e6;--text-primary: #212529;--text-muted: #868e96;--text-inverse: #ffffff;--node-text: #ffffff;--border: #e9ecef;--border-strong: #ced4da;--accent: #1971c2;--accent-2: #12b886;--accent-contrast: #ffffff;--danger: #e03131;--danger-bg: #fff5f5;--ring-select: #ffd43b;--ring-drop: #12b886;--ring-link: #f06595;--edge-color: #adb5bd;--relationship-color: #f06595;--shadow-sm: rgba(0, 0, 0, .08);--shadow-md: rgba(0, 0, 0, .12);--node-shadow: rgba(0, 0, 0, .2)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg-page);color:var(--text-primary)}button{cursor:pointer;font:inherit;border:1px solid var(--border-strong);background:var(--bg-surface);color:var(--text-primary);border-radius:6px;padding:6px 10px}button:disabled{opacity:.4;cursor:default}button:hover:not(:disabled){background:var(--bg-surface-2)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--bg-surface-2)}.btn-danger{color:var(--danger)}.btn-active{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.muted{color:var(--text-muted);font-size:.85em}.icon-btn{padding:6px 9px;font-size:16px;line-height:1;border-radius:8px;background:var(--bg-surface);border:1px solid var(--border-strong);color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover:not(:disabled){background:var(--bg-surface-2)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;font-display:block;src:url(/fonts/material-icons.woff2) format("woff2")}.center-screen,.auth-screen{display:flex;align-items:center;justify-content:center;height:100%}.auth-card{background:var(--bg-surface);padding:32px;border-radius:12px;box-shadow:0 2px 16px var(--shadow-sm);width:340px;display:flex;flex-direction:column;gap:12px}.auth-card h1{margin:0}.auth-card label{display:flex;flex-direction:column;gap:4px;font-size:.9em}.auth-card input{padding:8px 10px;border:1px solid var(--border-strong);border-radius:6px;font:inherit;background:var(--bg-surface-2);color:var(--text-primary)}.form-error{background:var(--danger-bg);color:var(--danger);padding:8px 10px;border-radius:6px;font-size:.9em}.template-grid,.map-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.template-card,.map-card-open{background:var(--bg-surface-2);border:1px solid var(--border);border-radius:10px;padding:12px;text-align:left;display:flex;flex-direction:column;gap:4px;width:100%;color:var(--text-primary)}.map-card{background:var(--bg-surface-2);border:1px solid var(--border);border-radius:10px;overflow:hidden}.map-card-open{border:none;border-radius:0;background:transparent}.map-card-actions{display:flex;gap:4px;padding:8px;border-top:1px solid var(--border)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:200;display:flex;align-items:center;justify-content:center}.modal-card{background:var(--bg-surface);color:var(--text-primary);border-radius:12px;padding:20px;width:420px;max-width:calc(100vw - 32px);box-shadow:0 8px 32px var(--shadow-md);display:flex;flex-direction:column;gap:12px}.modal-form{display:flex;flex-direction:column;gap:10px}.modal-form input{padding:8px 10px;border:1px solid var(--border-strong);border-radius:6px;font:inherit;background:var(--bg-surface-2);color:var(--text-primary)}.form-notice{background:var(--bg-surface-2);color:var(--text-muted);padding:8px 10px;border-radius:6px;font-size:.9em}.editor{position:relative;height:100vh;overflow:hidden}.editor-body{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;min-height:0}.map-title-bar{position:absolute;top:10px;left:14px;z-index:40;display:flex;align-items:center;gap:10px;max-width:calc(100vw - 28px);padding:3px 12px 3px 4px;border-radius:12px;background:var(--bg-surface);border:1px solid var(--border);box-shadow:0 4px 18px var(--shadow-md)}.map-title-bar .title-input{width:clamp(150px,24vw,300px);font-size:1rem;padding:6px 8px}.map-save-status{font-size:.74em;white-space:nowrap}.title-input{width:140px;border:1px solid transparent;font-size:.95em;font-weight:600;padding:4px 6px;border-radius:6px;background:transparent;color:var(--text-primary)}.title-input:hover,.title-input:focus{border-color:var(--border-strong);background:var(--bg-surface-2);outline:none}.export-menu{position:relative}.export-dropdown{position:absolute;left:50%;transform:translate(-50%);top:100%;margin-top:6px;background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px var(--shadow-md);display:flex;flex-direction:column;min-width:140px;z-index:20}.export-dropdown button{border:none;border-radius:0;text-align:left}.context-menu{position:fixed;z-index:300;background:var(--bg-surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px var(--shadow-md);padding:10px;width:220px;display:flex;flex-direction:column;gap:6px;color:var(--text-primary);max-height:calc(100vh - 16px);overflow-y:auto}.context-menu-title{font-weight:600;padding-bottom:6px;margin-bottom:2px;border-bottom:1px solid var(--border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.context-menu-item{text-align:left;border:none;background:transparent;padding:6px 8px;border-radius:6px;display:flex;align-items:center;gap:8px}.context-menu-item:hover{background:var(--bg-surface-2)}.context-menu-section-label{font-size:.75em;text-transform:uppercase;color:var(--text-muted);margin-top:4px}.context-menu-row{display:flex;flex-wrap:wrap;gap:4px}.library-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:transparent}.library-panel{position:absolute;top:70px;left:50%;transform:translate(-50%);z-index:35;width:380px;max-width:calc(100vw - 32px);background:var(--bg-surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 12px 40px var(--shadow-md);padding:16px;display:flex;flex-direction:column;gap:10px;max-height:min(640px,80vh)}.library-actions{display:flex;gap:4px;flex-wrap:wrap}.carousel-viewport{position:relative;height:280px;overflow:hidden;border-radius:12px;background:var(--bg-page);border:1px solid var(--border);touch-action:none}.carousel-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.9em;text-align:center;padding:20px}.carousel-card{position:absolute;left:50%;top:50%;width:270px;padding:12px 16px;border-radius:12px;background:var(--bg-surface-2);border:1px solid var(--border);color:var(--text-primary);text-align:left;display:flex;flex-direction:column;gap:2px;transition:transform .18s ease,opacity .18s ease}.carousel-card-focused{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.carousel-card-dragging{transition:none;cursor:grabbing;box-shadow:0 8px 24px var(--shadow-md)}.carousel-card-drop-target{outline:3px dashed var(--ring-drop);outline-offset:2px}.carousel-card-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px}.mindmap-viewport{flex:1;overflow:hidden;position:relative;background:var(--bg-canvas);background-image:radial-gradient(var(--dot-grid) 1px,transparent 1px);background-size:24px 24px;touch-action:none;cursor:grab}.mindmap-world{position:absolute;left:0;top:0;width:0;height:0}.edges-svg{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}.mm-group{position:absolute;border:2px dashed;border-radius:20px;pointer-events:none}.mm-group-label{position:absolute;top:-12px;left:14px;padding:2px 10px;border-radius:10px;font-size:11px;font-weight:600;color:#0a0a0a}.mm-node{position:absolute;transform:translate(-50%,-50%);color:var(--node-text);padding:8px 14px;border-radius:8px;font-size:14px;width:max-content;max-width:220px;display:flex;align-items:center;gap:6px;box-shadow:0 1px 3px var(--node-shadow);-webkit-user-select:none;user-select:none;cursor:pointer}.mm-node-root{font-size:16px;font-weight:700;padding:12px 20px;border-radius:10px}.mm-node-selected{outline:3px solid var(--ring-select);outline-offset:1px}.mm-node-multi-selected{outline:3px solid var(--ring-link);outline-offset:1px}.mm-node-drop-target{outline:3px dashed var(--ring-drop);outline-offset:3px}.mm-node-dragging{opacity:.85;cursor:grabbing}.mm-node-text{overflow-wrap:anywhere}.mm-node-input{border:none;border-radius:4px;padding:2px 4px;font:inherit;min-width:60px}.mm-node-icon{font-size:1em}.mm-node-note-dot,.mm-node-attach-dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.85;display:inline-block}.mm-node-status{font-size:10px;font-weight:700;color:#0a0a0a;padding:1px 6px;border-radius:999px;line-height:1.4}.mm-node-collapse{position:absolute;right:-12px;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;padding:0;font-size:12px;line-height:1;background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-strong);display:flex;align-items:center;justify-content:center}.mm-node-add{position:absolute;bottom:-10px;left:50%;transform:translate(-50%);width:20px;height:20px;border-radius:50%;padding:0;font-size:13px;line-height:1;background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-strong);opacity:0;pointer-events:none;transition:opacity .1s;display:flex;align-items:center;justify-content:center}.mm-node:hover .mm-node-add{opacity:1;pointer-events:auto}.icon-choice{padding:4px 6px}.icon-choice-active,.swatch-active{outline:2px solid var(--accent);outline-offset:1px}.swatch{width:22px;height:22px;border-radius:50%;padding:0;border:2px solid var(--border-strong)}.kanban-choice{border:2px solid;border-radius:999px;padding:3px 10px;font-size:.8em;font-weight:600;background:transparent}.kanban-choice-active{outline:2px solid var(--accent);outline-offset:1px}.notes-panel{width:320px;background:var(--bg-surface);border-left:1px solid var(--border);padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;color:var(--text-primary);z-index:30}.notes-panel-header{display:flex;align-items:center;justify-content:space-between}.notes-label{font-size:.8em;text-transform:uppercase;color:var(--text-muted);margin-top:8px}.notes-textarea{min-height:120px;border:1px solid var(--border-strong);border-radius:6px;padding:8px;font:inherit;resize:vertical;background:var(--bg-surface-2);color:var(--text-primary)}.attachment-list{display:flex;flex-direction:column;gap:6px}.attachment-item{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:6px;padding:6px}.attachment-thumb{width:32px;height:32px;object-fit:cover;border-radius:4px}.attachment-file-icon{font-size:1.4em}.attachment-name{flex:1;font-size:.85em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary)}.presentation-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-page);color:var(--text-primary);z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px}.presentation-close{position:absolute;top:20px;right:24px;font-size:28px;background:none;border:none;color:var(--text-primary)}.presentation-slide{text-align:center;max-width:70vw}.presentation-icon{font-size:48px}.presentation-notes{font-size:1.2em;color:var(--text-muted);margin-top:16px}.presentation-controls{display:flex;align-items:center;gap:16px}.kanban-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-page);color:var(--text-primary);z-index:100;display:flex;align-items:center;justify-content:center;padding:60px 24px 24px}.kanban-board{display:flex;gap:16px;height:100%;width:100%;max-width:1400px;overflow-x:auto}.kanban-column{flex:1;min-width:220px;display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:10px;gap:8px;min-height:0}.kanban-column-drop-target{outline:2px dashed var(--ring-drop);outline-offset:-2px}.kanban-column-header{display:flex;justify-content:space-between;align-items:center;font-weight:700;padding-bottom:8px;border-bottom:3px solid}.kanban-column-body{display:flex;flex-direction:column;gap:8px;overflow-y:auto;min-height:60px}.kanban-column-empty{color:var(--text-muted);font-size:.85em;text-align:center;padding:16px 4px}.kanban-card{background:var(--bg-surface-2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;cursor:grab;display:flex;align-items:center;gap:6px;font-size:.9em}.kanban-card:active{cursor:grabbing}.presence-roster{display:flex;align-items:center;gap:4px}.presence-avatar{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.62em;font-weight:700;color:#fff;border:2px solid var(--bg-surface-1, transparent);-webkit-user-select:none;user-select:none}.mm-peer-badge{position:absolute;top:-10px;right:-10px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;font-size:.62em;font-weight:700;line-height:18px;text-align:center;border:2px solid;-webkit-user-select:none;user-select:none;pointer-events:none}.collaborators-modal{width:max-content;min-width:min(380px,calc(100vw - 32px));max-width:min(560px,calc(100vw - 32px));overflow:hidden}.collaborators-modal input,.collaborators-modal select{padding:7px 10px;border:1px solid var(--border-strong);border-radius:8px;font:inherit;background:var(--bg-surface-2);color:var(--text-primary);min-width:0}.collaborators-modal input:focus,.collaborators-modal select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 25%,transparent)}.collaborators-modal select{cursor:pointer;flex:none}.collab-invite-row{display:flex;gap:6px;padding:0}.collab-invite-row input[type=email]{flex:1}.collab-invite-row .icon-btn{flex:none}.collab-list{list-style:none;margin:0;padding:0 0 2px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;min-height:0}.collab-row{display:flex;align-items:center;gap:8px;font-size:.92em;min-width:0}.collab-row select{font-size:.9em}.collab-row .icon-btn{flex:none}.collab-identity{display:flex;flex-direction:column;flex:1;min-width:0}.collab-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collab-email{color:var(--text-muted);font-size:.85em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collab-role-badge{flex:none;font-size:.72em;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:999px;border:1px solid}.collab-role-owner{color:var(--text-main, inherit);border-color:var(--border);background:var(--bg-surface-2)}.collab-role-editor{color:#2f9e44;border-color:#2f9e44}.collab-role-viewer{color:#1971c2;border-color:#1971c2}.carousel-card-subtitle{display:flex;align-items:center;gap:8px;font-size:.85em}.google-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:9px 12px;border:1px solid var(--border-strong);border-radius:6px;background:var(--bg-surface-2);color:var(--text-primary);font:inherit;font-weight:600;text-decoration:none;cursor:pointer}.google-btn:hover{background:var(--bg-surface-3, var(--bg-surface-2));filter:brightness(1.06)}.auth-divider{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:.8em}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.offline-banner{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:100;padding:6px 14px;border-radius:999px;background:#7a5c00;color:#ffe8a3;font-size:.82rem;pointer-events:none}.map-palette{--r: 100px;position:fixed;z-index:60;width:0;height:0;transform:translate(-50%,-50%) scale(1);transition:transform .18s ease}.map-palette.is-open:hover{transform:translate(-50%,-50%) scale(1.06)}.map-palette:before{content:"";position:absolute;left:50%;top:50%;width:68px;height:68px;transform:translate(-50%,-50%);border-radius:50%;background:var(--bg-surface);border:1px solid var(--border);box-shadow:0 10px 30px var(--shadow-md);opacity:.92;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:width .2s ease,height .2s ease}.map-palette.is-open:before{width:calc(2 * var(--r) + 60px);height:calc(2 * var(--r) + 60px)}.palette-slot{position:absolute;left:50%;top:50%;opacity:0;pointer-events:none;transform:translate(-50%,-50%) rotate(var(--a)) translate(16px) rotate(calc(-1 * var(--a))) scale(.5);transition:transform .2s ease,opacity .16s ease}.map-palette.is-open .palette-slot{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) rotate(var(--a)) translate(var(--r)) rotate(calc(-1 * var(--a))) scale(1)}.palette-slot .icon-btn{width:40px;height:40px;padding:0;border-radius:50%;background:var(--bg-surface-2);box-shadow:0 2px 8px var(--shadow-md)}.palette-slot .icon-btn:hover:not(:disabled){background:var(--bg-surface-3, var(--bg-surface-2));filter:brightness(1.12)}.palette-hub{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--bg-surface-2);border:1px solid var(--border-strong);box-shadow:0 6px 18px var(--shadow-md);color:var(--text-primary);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;transition:transform .15s ease,filter .15s ease}.palette-hub:hover{transform:translate(-50%,-50%) scale(1.07);filter:brightness(1.12)}.palette-hub:active{cursor:grabbing;transform:translate(-50%,-50%) scale(.97)}.palette-export{top:calc(50% + var(--r) + 34px);margin-top:0}.map-palette:not(.is-open) .palette-export{display:none}.library-panel{user-select:none;-webkit-user-select:none}.library-panel input,.library-panel textarea{user-select:text;-webkit-user-select:text}.carousel-parent-zone{position:absolute;left:6px;top:50%;transform:translateY(-50%);z-index:15;width:52px;padding:10px 4px;border-radius:10px;border:1px dashed var(--border);display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--bg-surface);color:var(--text-muted);font-size:10px;line-height:1.2;text-align:center;pointer-events:none;opacity:.6;transition:opacity .15s ease,border-color .15s ease,background .15s ease,color .15s ease}.carousel-parent-zone.is-active{opacity:1;border-color:var(--accent);color:var(--accent);background:var(--bg-surface-2)}.marquee{position:fixed;z-index:220;pointer-events:none;border:1px solid var(--accent);border-radius:3px;background:color-mix(in srgb,var(--accent) 12%,transparent)}
