:root{--bg: #f8f9fa;--bg-secondary: #ffffff;--text: #333333;--text-muted: #888888;--border: #dee2e6;--accent: #e94560;--accent-hover: #d63851;--danger: #dc3545;--danger-hover: #c82333;--shadow: rgba(0, 0, 0, .1);--input-bg: #ffffff;--card-bg: #ffffff}[data-theme=dark]{--bg: #0f0f23;--bg-secondary: #1a1a2e;--text: #e0e0e0;--text-muted: #888888;--border: #2a2a4a;--accent: #e94560;--accent-hover: #ff6b81;--danger: #ff4757;--danger-hover: #ff6b81;--shadow: rgba(0, 0, 0, .3);--input-bg: #16213e;--card-bg: #16213e}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}.layout{display:flex;flex-direction:column;min-height:100vh}.header{display:flex;align-items:flex-end;justify-content:space-between;padding:.5rem 1.5rem .25rem;background:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:10;overflow:visible}.logo{display:flex;align-items:flex-end;gap:.5rem;font-size:1.25rem;font-weight:700;color:var(--accent);text-decoration:none;padding-bottom:.15rem}.logo-img{height:52px;width:auto;object-fit:contain;flex-shrink:0;margin-bottom:-.75rem}.main{flex:1;display:flex}.project-list{max-width:600px;margin:2rem auto;padding:0 1rem;width:100%}.hero{display:flex;flex-direction:column;align-items:center;gap:.75rem;margin-bottom:2rem}.hero-logo{width:100%;max-width:640px;aspect-ratio:16 / 9;height:auto;border:1px solid var(--border);border-radius:10px;box-shadow:0 6px 24px #00000024;background:#f4efe6}.project-list h1{margin-bottom:0}.create-form{display:flex;gap:.5rem;margin-bottom:2rem}.projects{list-style:none;display:flex;flex-direction:column;gap:.5rem}.project-card{display:flex;align-items:center;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;overflow:hidden}.project-link{flex:1;display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:none;border:none;color:var(--text);cursor:pointer;font-size:1rem;text-align:left}.project-link:hover{background:var(--bg)}.project-name{font-weight:500}.project-date{font-size:.85rem;color:var(--text-muted)}.graph-editor{display:flex;flex:1;overflow:hidden}.graph-canvas{flex:1;position:relative}.graph-canvas canvas{display:block}.graph-canvas.connecting canvas{cursor:crosshair}.input{padding:.5rem .75rem;border:1px solid var(--border);border-radius:6px;background:var(--input-bg);color:var(--text);font-size:.95rem;flex:1;min-width:0}.input:focus{outline:none;border-color:var(--accent)}.input-sm{padding:.35rem .5rem;font-size:.85rem}.color-input{width:32px;height:32px;padding:0;border:1px solid var(--border);border-radius:4px;cursor:pointer;background:none}select.input{cursor:pointer}.btn{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.95rem;cursor:pointer;font-weight:500;white-space:nowrap}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover)}.btn-sm{padding:.3rem .6rem;font-size:.8rem}.btn-xs{padding:.15rem .4rem;font-size:.75rem}.btn-icon{background:none;border:none;cursor:pointer;font-size:1.1rem;color:var(--text-muted);padding:0 .25rem;line-height:1}.btn-icon:hover{color:var(--text)}.btn-danger-icon{background:none;border:none;cursor:pointer;font-size:1rem;color:var(--text-muted);padding:0 .25rem;line-height:1;margin-left:auto}.btn-danger-icon:hover{color:var(--danger)}.inline-form{display:flex;gap:.35rem;align-items:center}.badge{font-size:.7rem;padding:.1rem .3rem;border-radius:3px;background:var(--border);color:var(--text-muted)}.hint{font-size:.85rem;color:var(--text-muted)}.type-swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}.loading,.empty,.error{padding:2rem;text-align:center;color:var(--text-muted)}.error{color:var(--danger)}.popover{position:absolute;z-index:100;background:var(--card-bg);border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 20px var(--shadow);min-width:220px;max-width:320px;overflow:hidden}.popover-header{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;border-bottom:1px solid var(--border);font-weight:600;font-size:.9rem;gap:.5rem}.popover-close{background:none;border:none;cursor:pointer;font-size:1.2rem;color:var(--text-muted);padding:0;line-height:1;flex-shrink:0}.popover-close:hover{color:var(--text)}.popover-body{padding:.5rem .75rem;max-height:200px;overflow-y:auto}.popover-rel-item{display:flex;align-items:center;gap:.5rem;padding:.35rem .4rem;margin:0 -.4rem;font-size:.85rem;border-radius:6px}.popover-rel-item:hover{background:var(--bg)}.popover-rel-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover-add-trigger{background:none;border:none;cursor:pointer;font-size:.8rem;color:var(--text-muted);padding:0;font-weight:500}.popover-add-trigger:hover{color:var(--accent)}.popover-add-section{padding:.5rem .75rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.4rem}.popover-add-row{display:flex;gap:.35rem}.popover-rel-delete{background:none;border:none;cursor:pointer;font-size:1rem;color:var(--text-muted);padding:0 .25rem;line-height:1;margin-left:auto;opacity:0;transition:opacity .15s}.popover-rel-item:hover .popover-rel-delete{opacity:1}.popover-rel-delete:hover{color:var(--danger)}.popover-inline-create{display:flex;flex-direction:column;gap:.35rem}.popover-inline-create-options{display:flex;gap:.35rem;align-items:center}.popover-header-names{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.color-input-sm{width:26px;height:26px;padding:0;border:1px solid var(--border);border-radius:4px;cursor:pointer;background:none}.edge-popover{max-width:360px}.popover-group{margin-bottom:.4rem}.popover-group:last-child{margin-bottom:0}.popover-group-header{font-size:.8rem;font-weight:600;color:var(--text-muted);padding:.2rem 0}.popover-footer{padding:.5rem .75rem;border-top:1px solid var(--border)}.editable-name{cursor:pointer;border-bottom:1px dashed var(--text-muted);flex:1;min-width:0}.editable-name.input{cursor:text;border-bottom:none}.inline-add-input{position:absolute;z-index:100}.inline-add-input .input{width:140px;text-align:center;box-shadow:0 2px 12px var(--shadow)}.project-name-slot{flex:1;display:flex;align-items:center;justify-content:center;min-width:0;padding:0 1rem}.project-name-chrome{font-size:1.05rem;font-weight:500;color:var(--text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-name-editable{background:none;border:1px solid transparent;border-radius:4px;padding:2px 8px;cursor:text;font-family:inherit}.project-name-editable:hover{background:var(--bg);border-color:var(--border)}.project-name-input{background:var(--bg);border:1px solid var(--accent);border-radius:4px;padding:2px 8px;outline:none;min-width:200px}.tagline{max-width:480px;text-align:center;color:var(--text-muted);font-size:.95rem;line-height:1.5;margin:0}.admin-panel{padding:1.5rem;width:100%;max-width:1600px;margin:0 auto}.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.admin-header h1{margin:0}.admin-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.5rem;margin-bottom:1.5rem}.admin-stat{background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;padding:.75rem}.admin-stat-value{font-size:1.5rem;font-weight:600;color:var(--text)}.admin-stat-label{font-size:.8rem;color:var(--text-muted);margin-top:.25rem}.admin-stat-hint{font-size:.7rem;opacity:.7}.admin-table-controls{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.admin-table-controls .input{flex:1;max-width:480px}.admin-count{font-size:.85rem;color:var(--text-muted)}.admin-table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:6px}.admin-table{width:100%;border-collapse:collapse;font-size:.85rem}.admin-table th{background:var(--bg-secondary);text-align:left;padding:.5rem .6rem;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-bottom:1px solid var(--border);position:sticky;top:0}.admin-table th:hover{background:var(--bg)}.admin-table td{padding:.45rem .6rem;border-bottom:1px solid var(--border);white-space:nowrap}.admin-table tr:hover td{background:var(--bg-secondary)}.admin-table .admin-name{font-weight:500;max-width:240px;overflow:hidden;text-overflow:ellipsis}.admin-table .admin-num{text-align:right;font-variant-numeric:tabular-nums}.admin-actions{display:flex;gap:4px;align-items:center}.admin-actions .btn{white-space:nowrap}.admin-empty{text-align:center;padding:2rem;color:var(--text-muted)}.admin-toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:.5rem 1rem;border-radius:4px;font-size:.85rem;box-shadow:0 2px 12px var(--shadow);z-index:1000}.not-found{max-width:480px;margin:4rem auto;text-align:center;padding:2rem}.not-found h1{margin-top:0;color:var(--text)}.not-found p{color:var(--text-muted);margin-bottom:1.5rem}.toolbar-slot{display:flex;align-items:center}.floating-toolbar{display:flex;align-items:center;gap:2px;padding:4px}.toolbar-btn{background:none;border:none;cursor:pointer;font-size:.95rem;font-weight:500;color:var(--text);padding:.4rem .7rem;border-radius:6px;white-space:nowrap}.toolbar-btn:hover{background:var(--bg)}.toolbar-add-form{display:flex;align-items:center;gap:.3rem}.toolbar-add-form .input{width:110px}.toast-container{position:absolute;bottom:16px;left:16px;z-index:300;display:flex;flex-direction:column;gap:8px}.toast{display:flex;align-items:center;gap:.5rem;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem;box-shadow:0 4px 16px var(--shadow);font-size:.85rem;animation:toast-slide-in .2s ease-out}.toast-undo{background:none;border:none;cursor:pointer;color:var(--accent);font-weight:600;font-size:.85rem;padding:0}.toast-undo:hover{text-decoration:underline}@keyframes toast-slide-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;background:#0006;display:flex;align-items:center;justify-content:center}.modal{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 32px var(--shadow);width:90%;max-width:420px;max-height:80vh;display:flex;flex-direction:column;overflow:visible;animation:modal-enter .15s ease-out}@keyframes modal-enter{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border);border-radius:12px 12px 0 0;background:var(--card-bg)}.modal-header h2{font-size:1.2rem;font-weight:600}.modal-body{padding:.75rem 1.25rem;overflow-y:auto;flex:1;background:var(--card-bg)}.modal-footer{display:flex;gap:.35rem;align-items:center;padding:.75rem 1.25rem;border-top:1px solid var(--border)}.type-list-item{display:flex;align-items:center;gap:.5rem;padding:.45rem .25rem;font-size:.9rem;border-radius:6px}.type-list-item:hover{background:var(--bg)}.type-list-item .btn-danger-icon,.type-list-item .btn-edit-icon{opacity:0;transition:opacity .15s}.type-list-item:hover .btn-danger-icon,.type-list-item:hover .btn-edit-icon{opacity:1}.btn-edit-icon{background:none;border:none;cursor:pointer;font-size:.9rem;color:var(--text-muted);padding:0 .25rem;line-height:1}.btn-edit-icon:hover{color:var(--accent)}.type-edit-form{gap:.35rem;overflow:visible}.modal-body:has(.emoji-picker-popover){overflow:visible}.type-edit-form .input{flex:1;min-width:0}.type-list-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-switch{position:relative;display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;font-size:.75rem;color:var(--text-muted);-webkit-user-select:none;user-select:none;white-space:nowrap}.toggle-track{width:28px;height:16px;background:var(--border);border-radius:8px;position:relative;transition:background .2s;flex-shrink:0}.toggle-track-on{background:var(--accent, #e94560)}.toggle-track:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;background:#fff;border-radius:50%;transition:transform .2s}.toggle-track-on:after{transform:translate(12px)}.modal-add-form{display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--border);position:relative;background:var(--card-bg)}.modal-add-options{display:flex;gap:.35rem;align-items:center}.emoji-input{width:72px;flex:none}.emoji-picker-wrapper{position:relative;display:flex;align-items:center;gap:2px}.emoji-trigger-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;border:1px solid var(--border);border-radius:6px;background:var(--input-bg);cursor:pointer;padding:0;line-height:1}.emoji-trigger-btn:hover{border-color:var(--accent)}.emoji-clear-btn{background:none;border:none;cursor:pointer;font-size:1rem;color:var(--text-muted);padding:0 .15rem;line-height:1}.emoji-clear-btn:hover{color:var(--danger)}.emoji-picker-popover{position:absolute;bottom:calc(100% + 8px);left:0;z-index:500}.modal-actions{padding:.75rem 1.25rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;border-radius:0 0 12px 12px;background:var(--card-bg)}.btn-done{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:.4rem 1.2rem;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer}.btn-done:hover{background:var(--border)}.graph-canvas.painting canvas{cursor:crosshair}.toolbar-btn-active{background:var(--accent);color:#fff;border:none;cursor:pointer;font-size:.95rem;font-weight:500;padding:.4rem .7rem;border-radius:6px;white-space:nowrap}.toolbar-btn-active:hover{background:var(--accent-hover)}.paint-palette{display:flex;align-items:center;gap:3px;padding-left:6px;border-left:1px solid var(--border);margin-left:2px;overflow-x:auto;max-width:320px}.paint-swatch{position:relative;width:28px;height:28px;border-radius:50%;border:2px solid transparent;background:none;cursor:pointer;padding:0;flex-shrink:0;transition:border-color .15s,transform .1s}.paint-swatch:hover{transform:scale(1.15)}.paint-swatch-active{border-color:var(--text);transform:scale(1.15)}.paint-swatch-inner{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;background:var(--swatch-color);font-size:.75rem;line-height:1;overflow:hidden}.paint-type-empty{font-size:.78rem;color:var(--text-muted);padding:.2rem .5rem;white-space:nowrap}.paint-type-create-link{background:none;border:none;cursor:pointer;color:var(--accent);font-size:.78rem;font-weight:500;padding:0}.paint-type-create-link:hover{text-decoration:underline}.node-color-palette{display:flex;align-items:center;gap:4px;padding:6px .75rem;border-bottom:1px solid var(--border)}.node-color-swatch{width:20px;height:20px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;flex-shrink:0;transition:transform .1s}.node-color-swatch:hover{transform:scale(1.2)}.node-color-swatch-active{border-color:var(--text);transform:scale(1.2)}.node-color-swatch-custom{background:conic-gradient(#e83030,#e8e830,#30e830,#30e8e8,#3030e8,#e830e8,#e83030)}.recent-colors{display:flex;align-items:center;gap:4px;padding:4px .75rem;border-bottom:1px solid var(--border);flex-wrap:wrap}.recent-colors-label{font-size:.7rem;color:var(--text-muted);margin-right:2px;white-space:nowrap}.type-edit-form .recent-colors,.modal-add-form .recent-colors,.popover-inline-create .recent-colors{border-bottom:none;padding:2px 0}.color-wheel-container{display:flex;justify-content:center;padding:8px .75rem;border-bottom:1px solid var(--border)}.color-wheel-canvas{cursor:crosshair;display:block}.import-section{margin-bottom:1.5rem}.import-form{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.import-error{width:100%;font-size:.85rem;color:var(--danger);margin-top:.25rem}.project-actions{display:flex;align-items:center;gap:.35rem;padding-right:.5rem;flex-shrink:0}.btn-forget{background:none;border:none;cursor:pointer;font-size:.8rem;color:var(--text-muted);padding:.25rem .4rem}.btn-forget:hover{color:var(--text)}.delete-confirm{display:flex;align-items:center;gap:.35rem}.share-section{margin-bottom:1rem}.share-section:last-of-type{margin-bottom:.75rem}.share-label{display:block;font-weight:600;font-size:.9rem;margin-bottom:.15rem}.share-hint{font-size:.82rem;color:var(--text-muted);margin-bottom:.4rem}.share-url-row{display:flex;gap:.4rem}.share-url-input{font-size:.82rem;flex:1;min-width:0}.share-warning{font-size:.8rem;color:var(--danger);margin-top:.5rem}.node-color-legend{position:fixed;bottom:12px;left:12px;z-index:50;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;box-shadow:0 2px 12px var(--shadow);min-width:200px;max-width:320px;max-height:calc(100vh - 80px);overflow-y:auto;scrollbar-width:none}.node-color-legend::-webkit-scrollbar{display:none}.legend-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.6rem 1rem;background:none;border:none;cursor:pointer;font-size:1.1rem;font-weight:600;color:var(--text-muted)}.legend-header:hover{color:var(--text)}.legend-toggle{font-size:.85rem}.legend-items{padding:0 1rem .65rem;display:flex;flex-direction:column;gap:7px}.legend-item{display:flex;align-items:center;gap:.6rem;font-size:1.1rem}.legend-swatch{width:20px;height:20px;border-radius:50%;flex-shrink:0}.legend-label{cursor:pointer;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px dashed transparent;min-width:0}.legend-label:hover{border-bottom-color:var(--text-muted)}.legend-label-input{width:100%;min-width:0;flex:1}.viewer-project-name{font-size:.82rem;font-weight:600;color:var(--text);padding:.35rem .6rem;white-space:nowrap}
