*{box-sizing:border-box}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans TC,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#1e293b;background-color:#f8fafc;--app-bg: #f8fafc;--app-bg-elevated: #ffffff;--app-text: #1e293b;--app-muted: #64748b;--app-border: #dbe3f0;--app-surface: #ffffff;--app-surface-soft: #f8fafc;--app-shadow: 0 12px 30px rgba(15, 23, 42, .12);--theme-toggle-bg: rgba(255, 255, 255, .92);--theme-toggle-color: #0f172a;--theme-toggle-border: rgba(148, 163, 184, .35);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{color-scheme:dark;--app-bg: #0b1220;--app-bg-elevated: #111827;--app-text: #e2e8f0;--app-muted: #94a3b8;--app-border: #334155;--app-surface: #111827;--app-surface-soft: #1f2937;--app-shadow: 0 16px 36px rgba(2, 6, 23, .55);--theme-toggle-bg: rgba(15, 23, 42, .9);--theme-toggle-color: #e2e8f0;--theme-toggle-border: rgba(148, 163, 184, .45)}html,body,#root{margin:0;padding:0;width:100%;height:100%;overflow:hidden}body{font-family:inherit;color:var(--app-text);background:var(--app-bg);transition:background-color .2s ease,color .2s ease}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}:root{--header-control-height: 2.35rem}.app{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:1.5rem}.spinner{width:40px;height:40px;border:3px solid #e2e8f0;border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading p{color:#64748b;font-size:.95rem}.user-admin-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(165deg,#eef2ff,#f8fafc 45%,#fff);color:#0f172a}.user-admin-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 8px 22px #4338ca40}.user-admin-header-left{display:flex;align-items:center;gap:1rem}.user-admin-header-left h1{margin:0;font-size:1.25rem}.header-title-button{appearance:none;border:none;background:transparent;padding:0;margin:0;color:inherit;font:inherit;font-weight:inherit;line-height:inherit;cursor:pointer}.header-title-button:hover{text-decoration:underline;text-underline-offset:.12em}.header-title-button:focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:4px}.user-admin-header-left p{margin:.1rem 0 0;font-size:.86rem;opacity:.88}.user-admin-header-right{display:flex;align-items:center;gap:.6rem}.user-admin-current-user{font-size:.85rem;padding:.2rem .55rem;border-radius:999px;background:#ffffff2e;border:1px solid rgba(255,255,255,.3);min-height:var(--header-control-height);display:inline-flex;align-items:center;justify-content:center;line-height:1}.user-admin-main{width:min(1180px,calc(100vw - 2rem));margin:1.2rem auto 1.5rem;display:flex;flex-direction:column;gap:1rem}.user-admin-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.user-admin-stat-card{background:#fff;border:1px solid #dbe4ff;border-radius:12px;padding:.75rem .95rem;box-shadow:0 8px 20px #6366f114}.user-admin-stat-card span{font-size:.78rem;color:#64748b}.user-admin-stat-card strong{display:block;margin-top:.35rem;font-size:1.2rem;color:#1e3a8a}.user-admin-panel{background:#fff;border-radius:14px;border:1px solid #e2e8f0;box-shadow:0 14px 30px #0f172a14;padding:1rem}.user-admin-toolbar{display:flex;justify-content:flex-end;gap:.6rem;margin-bottom:.8rem}.user-admin-btn{border-radius:10px;padding:.5rem .8rem;font-size:.86rem;font-weight:600;border:1px solid transparent;background:#f8fafc;color:#1e293b;box-shadow:none}.user-admin-btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px #1e293b1a}.user-admin-btn.primary{background:linear-gradient(135deg,#4f46e5,#6366f1);color:#fff}.user-admin-btn.secondary{border-color:#cbd5e1;background:#fff}.user-admin-btn.ghost{border-color:#ffffff59;background:#ffffff1f;color:#fff}.user-admin-btn.ghost:hover{box-shadow:none;background:#fff3}.user-admin-btn.danger{border-color:#fecaca;background:#fff5f5;color:#b91c1c}.user-admin-error{margin-bottom:.75rem;padding:.65rem .75rem;border-radius:10px;background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;font-size:.85rem}.user-admin-notice{margin-bottom:.75rem;padding:.65rem .75rem;border-radius:10px;background:#ecfdf5;border:1px solid #a7f3d0;color:#047857;font-size:.85rem}.user-admin-loading{padding:2.2rem 1rem;text-align:center;color:#64748b}.user-admin-table-wrap{overflow-x:auto}.user-admin-table{width:100%;border-collapse:collapse;min-width:980px}.user-admin-table th{text-align:left;font-size:.78rem;color:#64748b;font-weight:700;padding:.6rem .55rem;border-bottom:1px solid #e2e8f0}.user-admin-table td{padding:.65rem .55rem;font-size:.88rem;color:#1e293b;border-bottom:1px solid #f1f5f9}.user-admin-actions{display:flex;gap:.5rem;align-items:center}.user-admin-modal-target{margin:-.35rem 0 1rem;color:#64748b;font-size:.92rem}.user-admin-modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1rem}.user-admin-username{display:flex;align-items:center;gap:.5rem}.user-admin-self-badge{font-size:.72rem;color:#4338ca;background:#eef2ff;border:1px solid #c7d2fe;border-radius:999px;padding:.1rem .45rem}.user-admin-role-select{border:1px solid #cbd5e1;border-radius:8px;padding:.36rem .45rem;font-size:.83rem;background:#fff;color:#0f172a}.user-admin-role-select:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px #6366f129}.session-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(165deg,#eef2ff,#f8fafc 40%,#fff);color:#0f172a}.session-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 8px 22px #4338ca40}.session-header-left{display:flex;align-items:center;gap:1rem}.session-header-left h1{margin:0;font-size:1.2rem}.session-header-left p{margin:.1rem 0 0;font-size:.84rem;opacity:.88}.session-header-right{display:flex;align-items:center;gap:.6rem}.session-user-chip{font-size:.84rem;padding:.2rem .55rem;border-radius:999px;background:#ffffff2e;border:1px solid rgba(255,255,255,.3);min-height:var(--header-control-height);display:inline-flex;align-items:center;justify-content:center;line-height:1}.session-main{width:min(1180px,calc(100vw - 2rem));margin:1.2rem auto 1.5rem;display:flex;flex-direction:column;gap:1rem}.session-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.session-stat-card{background:#fff;border:1px solid #dbe4ff;border-radius:12px;padding:.75rem .95rem;box-shadow:0 8px 20px #6366f114}.session-stat-card span{font-size:.78rem;color:#64748b}.session-stat-card strong{display:block;margin-top:.35rem;font-size:1.2rem;color:#1e3a8a}.session-panel{background:#fff;border-radius:14px;border:1px solid #e2e8f0;box-shadow:0 14px 30px #0f172a14;padding:1rem}.session-toolbar{display:flex;justify-content:flex-end;gap:.6rem;margin-bottom:.8rem}.session-btn{border-radius:10px;padding:.5rem .8rem;font-size:.86rem;font-weight:600;border:1px solid transparent;background:#f8fafc;color:#1e293b;box-shadow:none}.session-btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px #1e293b1a}.session-btn.secondary{border-color:#cbd5e1;background:#fff}.session-btn.ghost{border-color:#ffffff59;background:#ffffff1f;color:#fff}.session-btn.ghost:hover{box-shadow:none;background:#fff3}.session-btn.danger{border-color:#fecaca;background:#fff5f5;color:#b91c1c}.session-error{margin-bottom:.75rem;padding:.65rem .75rem;border-radius:10px;background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;font-size:.85rem}.session-loading{padding:2.2rem 1rem;text-align:center;color:#64748b}.session-mfa-card{display:flex;flex-direction:column;gap:.65rem}.session-mfa-card p{margin:0;color:#475569;font-size:.92rem}.session-mfa-setup{display:flex;flex-direction:column;gap:.85rem;margin-top:.35rem;padding-top:.9rem;border-top:1px solid #e2e8f0}.session-mfa-qr-wrap{display:flex;justify-content:center}.session-mfa-qr{width:220px;height:220px;border-radius:12px;border:1px solid #cbd5e1;background:#fff;box-shadow:0 10px 22px #0f172a14}.session-mfa-qr-fallback{width:220px;min-height:220px;border-radius:12px;border:1px dashed #cbd5e1;background:#f8fafc;color:#64748b;display:flex;align-items:center;justify-content:center;text-align:center;padding:1rem}.session-table-wrap{overflow-x:auto}.session-table{width:100%;border-collapse:collapse;min-width:880px}.session-table th{text-align:left;font-size:.78rem;color:#64748b;font-weight:700;padding:.6rem .55rem;border-bottom:1px solid #e2e8f0}.session-table td{padding:.65rem .55rem;font-size:.88rem;color:#1e293b;border-bottom:1px solid #f1f5f9}.session-device-cell{display:flex;align-items:center;gap:.5rem}.session-current-badge{font-size:.72rem;color:#4338ca;background:#eef2ff;border:1px solid #c7d2fe;border-radius:999px;padding:.1rem .45rem}.notice-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(160deg,#eef2ff,#f8fafc 42%,#fff);color:#0f172a}.notice-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:linear-gradient(135deg,#0f766e,#0f172a);color:#fff;box-shadow:0 10px 24px #0f172a47}.notice-header-left{display:flex;align-items:center;gap:1rem}.notice-header-left h1{margin:0;font-size:1.22rem}.notice-header-left p{margin:.1rem 0 0;font-size:.84rem;opacity:.88}.notice-header-right{display:flex;align-items:center;gap:.6rem}.notice-user-chip{font-size:.84rem;padding:.2rem .55rem;border-radius:999px;background:#ffffff29;border:1px solid rgba(255,255,255,.28);min-height:var(--header-control-height);display:inline-flex;align-items:center;justify-content:center;line-height:1}.notice-main{width:min(1180px,calc(100vw - 2rem));margin:1.2rem auto 1.5rem;display:flex;flex-direction:column;gap:1rem}.notice-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem}.notice-stat-card{background:#fff;border:1px solid #dbeafe;border-radius:12px;padding:.75rem .95rem;box-shadow:0 8px 20px #0e749014}.notice-stat-card span{font-size:.78rem;color:#64748b}.notice-stat-card strong{display:block;margin-top:.35rem;font-size:1.2rem;color:#155e75}.notice-panel{background:#fff;border-radius:14px;border:1px solid #e2e8f0;box-shadow:0 14px 30px #0f172a14;padding:1rem}.notice-toolbar{display:flex;justify-content:flex-end;gap:.6rem;margin-bottom:.8rem}.notice-btn{border-radius:10px;padding:.5rem .8rem;font-size:.86rem;font-weight:600;border:1px solid transparent;background:#f8fafc;color:#1e293b;box-shadow:none;min-height:2.25rem;display:inline-flex;align-items:center;justify-content:center;line-height:1.1}.notice-btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px #1e293b1a}.notice-btn.secondary{border-color:#cbd5e1;background:#fff}.notice-btn.ghost{border-color:#ffffff59;background:#ffffff1f;color:#fff}.notice-btn.ghost:hover{box-shadow:none;background:#fff3}.notice-btn.danger{border-color:#fecaca;background:#fff5f5;color:#b91c1c}.notice-filter-select,.notice-status-select{border:1px solid #cbd5e1;border-radius:8px;padding:.36rem .45rem;font-size:.83rem;background:#fff;color:#0f172a}.notice-filter-select:focus,.notice-status-select:focus{outline:none;border-color:#0ea5a3;box-shadow:0 0 0 3px #14b8a629}.notice-error{margin-bottom:.75rem;padding:.65rem .75rem;border-radius:10px;background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;font-size:.85rem}.notice-loading{padding:2.2rem 1rem;text-align:center;color:#64748b}.notice-table-wrap{overflow-x:auto}.audit-log-search-input{min-width:240px;flex:1 1 260px}.audit-log-table-wrap{max-height:min(70vh,calc(100dvh - 16rem));overflow-y:auto;border:1px solid #e2e8f0;border-radius:10px;background:#fff}.audit-log-table-wrap .notice-table th{position:sticky;top:0;z-index:1;background:#f8fafc}.notice-table{width:100%;border-collapse:collapse;min-width:1080px}.notice-table th{text-align:left;font-size:.78rem;color:#64748b;font-weight:700;padding:.6rem .55rem;border-bottom:1px solid #e2e8f0}.notice-table td{padding:.65rem .55rem;font-size:.88rem;color:#1e293b;border-bottom:1px solid #f1f5f9;vertical-align:top}.notice-message{max-width:300px;white-space:normal;line-height:1.4}.notice-empty{text-align:center;color:#64748b;padding:1.2rem .8rem}.relationship-name-page{height:100vh;height:100dvh;min-height:100vh;overflow-y:auto;overflow-x:hidden;background:linear-gradient(160deg,#f0fdf4,#f8fafc 44%,#fff)}.relationship-name-header{background:linear-gradient(135deg,#047857,#0f172a);min-height:4.5rem}.relationship-name-header .notice-header-left{min-height:3rem;align-items:center}.relationship-name-header .notice-header-left h1{text-align:left}.relationship-name-header .notice-header-right{min-height:3rem;display:flex;align-items:center}.relationship-name-header .notice-user-chip,.relationship-name-header .notice-btn{display:inline-flex;align-items:center;justify-content:center}.relationship-name-main{width:min(1460px,calc(100vw - 2rem))}.relationship-name-toolbar{justify-content:space-between;flex-wrap:wrap}.relationship-name-search{border:1px solid #cbd5e1;border-radius:10px;padding:.45rem .6rem;font-size:.86rem;background:#fff;color:#0f172a;min-width:260px;flex:1}.relationship-name-search:focus{outline:none;border-color:#059669;box-shadow:0 0 0 3px #10b98129}.relationship-name-table{min-width:1360px}.relationship-name-code{display:flex;flex-direction:column;gap:.2rem}.relationship-name-code strong{color:#065f46}.relationship-name-code span{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:#64748b;font-size:.75rem}.relationship-name-input{border:1px solid #cbd5e1;border-radius:8px;padding:.38rem .45rem;font-size:.84rem;background:#fff;color:#0f172a;width:min(220px,100%)}.relationship-name-description{width:min(320px,100%)}.relationship-name-input:focus{outline:none;border-color:#059669;box-shadow:0 0 0 3px #10b98129}.relationship-name-default{display:flex;flex-direction:column;gap:.18rem}.relationship-name-default strong{color:#0f172a}.relationship-name-default span{color:#64748b;font-size:.8rem}.relationship-name-actions{display:flex;gap:.45rem}.graph-settings-page{height:100vh;height:100dvh;min-height:100vh;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:linear-gradient(160deg,#eff6ff,#f8fafc 46%,#fff);color:#0f172a}.graph-settings-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:linear-gradient(135deg,#1d4ed8,#0f172a);color:#fff;box-shadow:0 10px 24px #1e40af42}.graph-settings-header-left{display:flex;align-items:center;gap:1rem}.graph-settings-header-left h1{margin:0;font-size:1.22rem}.graph-settings-header-left p{margin:.1rem 0 0;font-size:.84rem;opacity:.88}.graph-settings-header-right{display:flex;align-items:center;gap:.6rem}.graph-settings-user-chip{font-size:.84rem;padding:.2rem .55rem;border-radius:999px;background:#ffffff2e;border:1px solid rgba(255,255,255,.3);min-height:var(--header-control-height);display:inline-flex;align-items:center;justify-content:center;line-height:1}.user-admin-header-left,.session-header-left,.notice-header-left,.graph-settings-header-left{min-width:0;flex:1 1 auto}.user-admin-header-right,.session-header-right,.notice-header-right,.graph-settings-header-right{flex:0 0 auto}.user-admin-header-left h1,.session-header-left h1,.notice-header-left h1,.graph-settings-header-left h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-admin-header-left p,.session-header-left p,.notice-header-left p,.graph-settings-header-left p{display:none}.page-header-icon-btn{width:var(--header-control-height);min-width:var(--header-control-height);height:var(--header-control-height);padding:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center}.page-header-icon-btn svg{width:1rem;height:1rem;flex:0 0 auto}.page-header-menu{margin-left:0}.page-header-menu-trigger{background:#fff3!important;border:1px solid rgba(255,255,255,.38);color:#fff!important}.page-header-menu-trigger:hover{background:#ffffff4d!important}.graph-settings-main{width:min(1180px,calc(100vw - 2rem));margin:1.2rem auto 1.5rem;display:flex;flex-direction:column;gap:1rem}.graph-settings-panel{background:#fff;border-radius:14px;border:1px solid #dbeafe;box-shadow:0 14px 30px #0f172a14;padding:1rem}.graph-settings-panel h2{margin:0 0 .8rem;font-size:1rem;color:#1e3a8a}.graph-settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.75rem}.graph-settings-field{display:flex;flex-direction:column;gap:.36rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:.7rem .75rem}.graph-settings-field-label{font-size:.82rem;font-weight:700;color:#1e293b}.graph-settings-field small{color:#64748b;font-size:.74rem;line-height:1.35}.graph-settings-input{border:1px solid #cbd5e1;border-radius:8px;padding:.4rem .5rem;font-size:.86rem;background:#fff;color:#0f172a}.graph-settings-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f629}.graph-settings-toggle{display:flex;align-items:flex-start;gap:.65rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:.7rem .75rem}.graph-settings-toggle input[type=checkbox]{width:1rem;height:1rem;margin-top:.1rem}.graph-settings-toggle small{display:block;margin-top:.28rem;color:#64748b;font-size:.74rem;line-height:1.35}.graph-backup-panel{border-color:#bfdbfe}.graph-backup-hint{margin:0 0 .7rem;color:#475569;font-size:.82rem;line-height:1.45}.graph-backup-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem}.graph-backup-file-input{flex:1 1 320px;min-width:220px;max-width:100%;font-size:.82rem;color:#1e293b}.graph-backup-file-name{display:block;margin-top:.5rem;font-size:.78rem;color:#334155}.graph-backup-error,.graph-backup-success{margin-top:.6rem;border-radius:8px;padding:.5rem .65rem;font-size:.8rem}.graph-backup-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.graph-backup-success{background:#ecfdf5;border:1px solid #bbf7d0;color:#166534}.graph-settings-actions{display:flex;justify-content:flex-end;gap:.6rem}.graph-settings-btn{border-radius:10px;padding:.5rem .8rem;font-size:.86rem;font-weight:600;border:1px solid transparent;background:#f8fafc;color:#1e293b;box-shadow:none}.graph-settings-btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px #1e293b1a}.graph-settings-btn.primary{background:linear-gradient(135deg,#2563eb,#1e40af);color:#fff}.graph-settings-btn.secondary{border-color:#cbd5e1;background:#fff}.graph-settings-btn.ghost{border-color:#ffffff59;background:#ffffff1f;color:#fff}.graph-settings-btn.ghost:hover{box-shadow:none;background:#fff3}.login-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#e2e8f0,#f8fafc);padding:2rem}.login-card{width:min(420px,100%);background:#fff;border-radius:16px;padding:2rem;box-shadow:0 12px 30px #0f172a26;text-align:center}.login-card h1{margin:0 0 .5rem;font-size:1.75rem;color:#1e293b}.login-card p{margin:0 0 1.5rem;color:#64748b;font-size:.95rem}.login-card .form-group{text-align:left}.login-card .btn-primary{width:100%;margin-top:.5rem}.login-secondary-actions{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.login-secondary-actions .user-admin-btn{width:100%}.login-error{margin-top:.75rem;color:#ef4444;font-size:.875rem;text-align:center}.notice-info{margin-top:.75rem;color:#0f766e;font-size:.875rem;text-align:center}.avatar-picker{display:flex;flex-direction:column;gap:.85rem}.avatar-editor-main{display:grid;grid-template-columns:minmax(140px,160px) minmax(0,1fr);gap:.95rem;align-items:start}.avatar-cropper{width:140px;height:140px;border-radius:20px;border:1px solid #cfd8e7;background:radial-gradient(circle at 18% 20%,#fff,#f8fbff,#edf3fb);display:flex;align-items:center;justify-content:center;color:#7c8da3;font-size:.78rem;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color .2s,box-shadow .2s,transform .2s;overflow:hidden;position:relative;box-shadow:inset 0 0 0 1px #fffc,0 10px 20px #0f172a14}.avatar-cropper:after{content:"";position:absolute;inset:7px;border-radius:14px;border:1px solid rgba(255,255,255,.75);pointer-events:none}.avatar-cropper.has-image{border-style:solid;border-color:#64748b59;cursor:grab;touch-action:none}.avatar-cropper.dragging{border-color:#4f6ef7;box-shadow:0 0 0 4px #4f6ef72e,0 14px 30px #4f6ef72e;transform:translateY(-1px);cursor:grabbing}.avatar-cropper img{position:absolute;transform:translate(-50%,-50%);-webkit-user-select:none;user-select:none;pointer-events:none}.avatar-editor-meta{display:flex;flex-direction:column;gap:.55rem;min-width:0}.avatar-status-row{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem}.avatar-status-badge,.avatar-status-chip{display:inline-flex;align-items:center;border-radius:999px;font-size:.72rem;line-height:1;padding:.3rem .55rem;border:1px solid transparent;white-space:nowrap}.avatar-status-badge.tone-accent{background:#e8efff;color:#1f4cd2;border-color:#bfd0ff}.avatar-status-badge.tone-warning{background:#fff4e8;color:#a64b00;border-color:#ffd2a8}.avatar-status-badge.tone-stable{background:#e9f7ef;color:#166534;border-color:#bde8cd}.avatar-status-badge.tone-muted{background:#f1f5f9;color:#475569;border-color:#d9e2ec}.avatar-status-chip{background:#f8fafc;color:#475569;border-color:#dbe5f0}.avatar-editor-hint{margin:0;font-size:.78rem;color:#64748b;line-height:1.45}.avatar-actions-row{display:flex;flex-wrap:wrap;gap:.5rem}.avatar-upload{display:inline-flex;align-items:center;justify-content:center;min-width:6.8rem}.avatar-danger-btn{min-width:6.8rem}.avatar-zoom-wrap{margin-top:.1rem}.avatar-zoom-head{display:flex;align-items:center;justify-content:space-between;font-size:.74rem;color:#64748b;margin-bottom:.25rem}.avatar-zoom{width:100%;accent-color:#4f6ef7}.avatar-library{border:1px solid #dee7f2;border-radius:14px;background:#f8fbff;padding:.65rem}.avatar-library-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.55rem;font-size:.78rem;font-weight:600;color:#475569}.avatar-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.55rem;width:100%}.avatar-gallery-item{border:1px solid #dbe5f0;border-radius:12px;padding:.35rem .35rem .4rem;background:#fff;transition:border-color .2s,box-shadow .2s,transform .2s}.avatar-gallery-item.is-primary{border-color:#4f6ef7;box-shadow:0 0 0 2px #4f6ef729}.avatar-gallery-item.is-deleted{opacity:.58}.avatar-gallery-preview{width:100%;border:none;background:transparent;padding:0;position:relative;cursor:pointer;border-radius:9px;overflow:hidden}.avatar-gallery-preview:disabled{cursor:not-allowed}.avatar-gallery-preview:hover:not(:disabled){transform:translateY(-1px)}.avatar-gallery-preview:focus-visible{outline:none;box-shadow:0 0 0 3px #4f6ef74d}.avatar-gallery-preview img{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:8px;display:block}.avatar-badge{position:absolute;left:.32rem;top:.32rem;border-radius:999px;padding:.18rem .4rem;font-size:.62rem;font-weight:700;line-height:1;color:#fff;pointer-events:none}.avatar-badge.is-primary{background:#3b82f6f2}.avatar-badge.is-deleted{background:#dc2626e6}.avatar-gallery-actions{margin-top:.4rem;display:grid;grid-template-columns:1fr 1fr;gap:.32rem}.avatar-gallery-actions button{min-width:0;font-size:.68rem;padding:.3rem .35rem}.avatar-danger-btn,.avatar-gallery-danger{background:linear-gradient(180deg,#fff5f5,#ffe8e8);color:#b42318;border:1px solid #f2b4b1;box-shadow:0 1px 2px #0f172a0f,inset 0 1px #ffffffe6;font-weight:600}.avatar-danger-btn:hover,.avatar-gallery-danger:hover{background:linear-gradient(180deg,#feeeee,#ffdede);border-color:#ea9b97;color:#a61b11;box-shadow:0 4px 10px #dc262629}.avatar-danger-btn:active,.avatar-gallery-danger:active{transform:translateY(0);box-shadow:0 1px 2px #dc262624,inset 0 1px 2px #b91c1c1f}.avatar-upload input{display:none}.header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:1rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 2px 10px #0000001a;position:relative;z-index:10}.header h1{margin:0;font-size:1.5rem;font-weight:600}.controls{display:flex;gap:.75rem;flex-wrap:nowrap;align-items:center;width:100%;min-width:0}.mobile-visible{display:none}.desktop-visible{display:inline-flex;flex:0 0 auto}.header-mobile-menu{position:relative}.header-mobile-panel{position:absolute;right:0;top:calc(100% + 8px);min-width:180px;background:#fff;color:#1e293b;border:1px solid #e2e8f0;border-radius:8px;padding:.35rem 0;box-shadow:0 10px 24px #0f172a26;z-index:1000}.header-mobile-label{padding:.35rem .85rem;font-size:.8rem;color:#64748b}.header-action-menu{position:relative}.header-action-panel{position:absolute;right:0;top:calc(100% + 8px);min-width:160px;background:#fff;color:#1e293b;border:1px solid #e2e8f0;border-radius:8px;padding:.35rem 0;box-shadow:0 10px 24px #0f172a26;z-index:20}.header-overflow-menu{margin-left:auto}.header-overflow-panel{min-width:220px;max-height:min(72vh,560px);overflow-y:auto}.header-action-item{width:100%;border:none;background:none;padding:.45rem .85rem;text-align:left;color:#1e293b;font-size:.85rem;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;gap:.5rem}.header-action-item-with-badge{justify-content:space-between}.header-action-main{display:inline-flex;align-items:center;gap:.45rem;min-width:0}.header-action-icon{display:inline-flex;width:.95rem;height:.95rem;flex:0 0 auto}.header-action-icon svg{width:100%;height:100%}.header-action-text{line-height:1.2}.icon-only-btn{width:var(--header-control-height);min-width:var(--header-control-height);height:var(--header-control-height);padding:0;justify-content:center}.icon-only-btn .btn-icon{gap:0}.header-action-item:hover{background:#f1f5f9;transform:none}.header-action-item.danger{color:#b91c1c}.search-box{display:flex;align-items:center;gap:.5rem;position:relative;flex:1 1 auto;min-width:0}.search-input{height:2.25rem;padding:0 .75rem;border-radius:999px;border:1px solid rgba(255,255,255,.4);background:#fff3;color:#fff;min-width:0;width:100%}.search-input::placeholder{color:#fffc}.mobile-search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border-radius:10px;box-shadow:0 12px 28px #0f172a33;overflow:hidden;z-index:40}.mobile-search-item{width:100%;background:transparent;border:none;padding:.5rem .75rem;display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;color:#0f172a;font-size:.9rem;cursor:pointer}.mobile-search-item:hover{background:#f1f5f9;transform:none}.mobile-search-sub{font-size:.75rem;color:#64748b}.header-user{display:flex;align-items:center;gap:.5rem;padding-left:.5rem;border-left:1px solid rgba(255,255,255,.25)}.header-menu{list-style:none;margin:0;padding:0}.header-menu-item{display:inline-flex;align-items:center}.header .btn-primary,.header .btn-secondary,.header-profile-btn{min-height:var(--header-control-height);height:var(--header-control-height);display:inline-flex;align-items:center;justify-content:center}.header .btn-label,.header-user span{display:inline-flex;align-items:center}.header-notice-btn{position:relative}.header-notice-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.2rem;height:1.2rem;padding:0 .35rem;border-radius:999px;background:#dc2626;color:#fff;font-size:.68rem;font-weight:700;line-height:1;box-shadow:0 0 0 1px #ffffff26}.header-user span{font-size:.875rem;color:#ffffffd9}.header-profile-btn{border:1px solid rgba(255,255,255,.35);background:#ffffff1f;color:#fff;border-radius:999px;padding:.28rem .62rem;font-size:.82rem;font-weight:600}.header-profile-btn:hover{background:#ffffff38;box-shadow:none;transform:none}.readonly-badge{display:inline-flex;align-items:center;justify-content:center;min-height:var(--header-control-height);height:var(--header-control-height);padding:.15rem .45rem;border-radius:999px;font-size:.75rem;background:#fff3;border:1px solid rgba(255,255,255,.4);color:#ffffffe6}.btn-icon{display:inline-flex;align-items:center;gap:.4rem}.btn-icon svg{width:1rem;height:1rem;flex:0 0 auto}button{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;background:#fff3;color:#fff}button:hover{background:#ffffff4d;transform:translateY(-1px)}button:disabled{opacity:.6;cursor:not-allowed;transform:none}button:disabled:hover{background:#fff3}.btn-primary{background:#fffffff2!important;color:#667eea!important}.btn-primary:hover{background:#fff!important;box-shadow:0 4px 12px #00000026}.btn-secondary{background:#ffffff40!important}.flow-container{flex:1;min-height:0;position:relative;touch-action:none;overscroll-behavior:contain}.drag-guide-line{position:absolute;left:0;right:0;border-top:1px dashed rgba(59,130,246,.6);pointer-events:none;z-index:4}.react-flow__handle.handle-hot{background:#ef4444;border-color:#ef4444;box-shadow:0 0 0 4px #ef444440}.drag-guide-line.vertical{inset:0 auto 0 0;width:0;border-top:none;border-left:1px dashed rgba(59,130,246,.6)}.person-node{padding:0;width:132px;min-height:132px;height:132px;max-height:132px;box-sizing:border-box;position:relative;display:flex;flex-direction:column;border-radius:12px;background:#fff;border:2px solid #e2e8f0;box-shadow:0 4px 12px #0000001a;cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s;overflow-x:hidden;overflow-y:visible;-ms-overflow-style:none;scrollbar-width:none}.person-node::-webkit-scrollbar,.react-flow__node-person::-webkit-scrollbar{width:0;height:0;display:none}.react-flow__node-person{-ms-overflow-style:none;scrollbar-width:none}.person-node:hover{box-shadow:0 6px 20px #00000026;transform:translateY(-2px)}.person-node.selected{border-color:var(--highlight-color, #2563eb);box-shadow:0 0 0 3px var(--highlight-color-35, rgba(37, 99, 235, .35)),0 10px 24px var(--highlight-color-18, rgba(37, 99, 235, .18));transform:translateY(-2px)}.person-node.floating{z-index:1000;transform:scale(1.05);box-shadow:0 12px 30px #0006,0 0 0 2px #2563eb;transition:transform .2s cubic-bezier(.175,.885,.32,1.275),box-shadow .2s ease-out;cursor:grabbing!important}.person-node.search-flash{animation:node-bounce .6s ease-in-out 2}.person-node.focus-hover{box-shadow:0 6px 20px #00000026;transform:translateY(-2px)}@keyframes node-bounce{0%{transform:translateY(0)}40%{transform:translateY(-6px)}70%{transform:translateY(0)}to{transform:translateY(0)}}.node-collapse-indicator{position:absolute;top:1px;left:1px;width:14px;height:14px;border-radius:50%;background:#dd604a;z-index:2;box-shadow:0 0 0 2px #f59e0b40}.person-node.center{box-shadow:0 0 0 3px #f59e0b59,0 8px 18px #f59e0b2e}.person-node.center-flash{animation:centerPulse .9s ease-out}@keyframes centerPulse{0%{box-shadow:0 0 #f59e0b99,0 0 0 6px #f59e0b40;transform:translateY(0)}70%{box-shadow:0 0 0 10px #f59e0b00,0 0 0 18px #f59e0b00;transform:translateY(-1px)}to{box-shadow:0 0 #f59e0b00,0 0 #f59e0b00;transform:translateY(0)}}.person-node.gender-m{border-top:4px solid #3b82f6}.person-node.gender-f{border-top:4px solid #ec4899}.person-node.gender-o{border-top:4px solid #8b5cf6}.node-avatar{width:50px;height:50px;margin:8px auto;border-radius:50%;border:2px solid rgba(15,23,42,.12);box-shadow:0 6px 14px #0f172a2e;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:600;color:#fff;background:linear-gradient(135deg,#667eea,#764ba2);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;touch-action:manipulation}.node-avatar:hover{border-color:#fffffff2;border-width:3px;box-shadow:0 10px 18px #0f172a40,0 0 0 3px #ffffffbf;transform:translateY(-1px) scale(1.03)}.node-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}.gender-m .node-avatar{background:linear-gradient(135deg,#3b82f6,#2563eb)}.gender-f .node-avatar{background:linear-gradient(135deg,#ec4899,#db2777)}.node-name{position:relative;padding:.25rem .6rem .2rem;text-align:center;font-weight:600;color:#1e293b;font-size:.95rem;min-height:1.4rem}.node-meta{min-height:1.05rem;height:1.15rem;padding:0 .48rem .1rem;display:flex;justify-content:center;align-items:center;gap:.28rem;flex-wrap:nowrap;width:100%;min-width:0;overflow:hidden}.node-meta-chip{font-size:.64rem;line-height:1.2;padding:.08rem .35rem;border-radius:999px;color:#334155;background:#e2e8f0;min-width:0;flex:1 1 0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.node-meta-chip:only-child{flex:0 1 100%}.node-meta-chip-plain{background:transparent;border:none;padding-inline:0;color:#64748b}.node-name-text{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-name-tooltip{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);background:#111827;color:#f9fafb;font-size:.75rem;line-height:1.2;padding:.35rem .5rem;border-radius:6px;white-space:nowrap;text-align:center;opacity:0;pointer-events:none;transition:opacity .15s ease;box-shadow:0 8px 20px #0f172a40;z-index:30}.node-name-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:6px 6px 0;border-style:solid;border-color:#111827 transparent transparent}.node-name:hover .node-name-tooltip{opacity:1}.node-title{margin-top:auto;min-height:1.85rem;padding:.25rem .6rem .5rem;text-align:center;color:#64748b;font-size:.75rem;background:#f1f5f9;border-radius:0 0 8px 8px;position:relative;z-index:5}.node-title-text{display:block;max-height:1.2em;overflow:hidden;color:inherit}.node-title-tooltip{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);background:#111827;color:#f9fafb;font-size:.75rem;line-height:1.2;padding:.35rem .5rem;border-radius:6px;white-space:nowrap;text-align:center;opacity:0;pointer-events:none;transition:opacity .15s ease;box-shadow:0 8px 20px #0f172a40;z-index:30}.node-title-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:6px 6px 0;border-style:solid;border-color:#111827 transparent transparent}.node-title:hover .node-title-tooltip{opacity:1}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:3000}.modal{background:#fff;border-radius:12px;padding:1.5rem;width:90%;max-width:400px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 40px #0003}.modal.modal-edit-person{max-width:560px}.modal h2{margin:0 0 1rem;color:#1e293b}.avatar-modal{background:#fff;border-radius:16px;padding:1.25rem;max-width:94vw;max-height:94vh;box-shadow:0 24px 60px #00000040;display:flex;flex-direction:column;align-items:center;gap:.75rem;position:relative}.avatar-modal img{max-width:min(560px,92vw);max-height:82vh;border-radius:16px;object-fit:contain;background:#f1f5f9}.avatar-modal-name{font-size:1rem;font-weight:600;color:#1f2937}.avatar-modal-count{font-size:.85rem;color:#64748b}.avatar-carousel-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:42px;height:42px;border-radius:999px;border:none;background:#0f172a9e;color:#fff;font-size:1.8rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.avatar-carousel-btn-left{left:.7rem}.avatar-carousel-btn-right{right:.7rem}.avatar-overlay{align-items:center}@media(min-width:1024px){.avatar-modal{width:95vw;height:95vh;max-width:95vw;max-height:95vh;padding:.75rem 1rem}.avatar-modal img{width:100%;max-width:100%;max-height:calc(95vh - 3.5rem)}}.relationship-choice-modal{background:#fff;border-radius:14px;padding:1rem;width:min(92vw,360px);box-shadow:0 24px 56px #0f172a47}.relationship-choice-modal h3{margin:0 0 .5rem;color:#0f172a}.relationship-choice-modal p{margin:0 0 .9rem;color:#475569;font-size:.9rem}.relationship-choice-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-bottom:.8rem}.relationship-choice-btn{background:#e2e8f0;color:#0f172a;border:1px solid #cbd5e1}.relationship-choice-btn:hover{background:#cbd5e1}.relationship-choice-btn.is-suggested{background:#2563eb;border-color:#1d4ed8;color:#fff}.relationship-choice-btn.is-suggested:hover{background:#1d4ed8}.relationship-choice-cancel{width:100%;background:#f1f5f9;color:#334155;border:1px solid #cbd5e1}.relationship-choice-cancel:hover{background:#e2e8f0}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#475569}.name-lock-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.name-lock-row label{margin-bottom:0}.name-lock-btn{padding:.2rem .55rem;font-size:.72rem}.name-lock-chip{display:inline-flex;align-items:center;padding:.18rem .55rem;border-radius:999px;font-size:.72rem;color:#1d4ed8;background:#dbeafe;border:1px solid #bfdbfe}.name-input-locked{background:#f8fafc;color:#64748b;cursor:not-allowed}.name-lock-hint{display:block;margin-top:.35rem;font-size:.76rem;color:#64748b}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.625rem;border:1px solid #e2e8f0;border-radius:6px;font-size:1rem}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea33}.form-group textarea{resize:vertical;min-height:110px}.report-issue-person{margin:-.25rem 0 .75rem;font-size:.9rem;color:#475569}.report-issue-hint{margin-top:.4rem;font-size:.78rem;color:#64748b;text-align:right}.report-issue-error{margin-top:.5rem;padding:.55rem .65rem;border-radius:8px;background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;font-size:.82rem}.date-input-row{display:flex;align-items:center;gap:.75rem}.date-input-main{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0;flex-wrap:wrap}.date-input-main input[type=date]{flex:1}.date-input-main>input,.date-input-main>select{width:auto;min-width:0}.date-year-input{flex:0 0 6.5rem;max-width:6.5rem}.date-month-select,.date-day-select{flex:1 1 7rem}.date-year-btn{padding:.5rem .625rem;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;color:#334155;font-size:.85rem;font-weight:600;cursor:pointer;white-space:nowrap}.date-unknown-toggle{display:inline-flex;align-items:center;gap:.35rem;font-weight:500;white-space:nowrap}.date-year-btn:hover{background:#f1f5f9}.date-year-btn:disabled{opacity:.5;cursor:not-allowed}.custom-fields{display:flex;flex-direction:column;gap:.5rem}.custom-fields-empty{font-size:.875rem;color:#94a3b8;padding:.5rem 0}.custom-field-row{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;align-items:center}.custom-field-row input{width:100%}.custom-field-remove{border:none;border-radius:6px;padding:.5rem .75rem;background:#fee2e2;color:#b91c1c;font-size:.875rem;cursor:pointer}.custom-field-remove:hover{background:#fecaca}.custom-field-add{margin-top:.5rem;width:100%;border:none;border-radius:6px;padding:.625rem;background:#f1f5f9;color:#475569;font-weight:500;cursor:pointer}.custom-field-add:hover{background:#e2e8f0}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}.form-actions button{padding:.625rem 1.25rem;border:none;border-radius:6px;font-weight:500;cursor:pointer}.form-actions button[type=button]{background:#f1f5f9;color:#64748b}.form-actions button[type=submit]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.modal-save-btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-width:7.25rem}.modal-save-btn.is-loading{cursor:wait}.btn-inline-spinner{width:.95rem;height:.95rem;border:2px solid rgba(255,255,255,.38);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.link-indicator{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;padding:.75rem 1.5rem;border-radius:50px;font-weight:500;display:flex;align-items:center;gap:1rem;box-shadow:0 4px 20px #f59e0b66;z-index:100;animation:pulse 2s infinite}@keyframes pulse{0%,to{box-shadow:0 4px 20px #f59e0b66}50%{box-shadow:0 4px 30px #f59e0b99}}.link-indicator button{background:#fff3;border:1px solid rgba(255,255,255,.3);padding:.25rem .75rem}.toast{position:fixed;left:50%;transform:translate(-50%);padding:.5rem 1rem;border-radius:999px;font-size:.875rem;font-weight:600;color:#fff;z-index:1100;box-shadow:0 6px 16px #0f172a40}.toast-success{background:linear-gradient(135deg,#16a34a,#22c55e)}.toast-warning{background:linear-gradient(135deg,#f59e0b,#f97316)}@media(max-width:640px){.date-input-row{flex-direction:column;align-items:stretch;gap:.5rem}.date-input-main{gap:.45rem}.date-year-input,.date-month-select,.date-day-select{flex:1 1 calc(33.333% - .3rem);max-width:none;min-width:0}.date-year-btn{flex:1 1 calc(50% - .25rem);min-width:0}.date-unknown-toggle{align-self:flex-start}.avatar-editor-main{grid-template-columns:1fr;gap:.75rem}.avatar-cropper{margin:0 auto}.avatar-editor-meta{width:100%}.avatar-actions-row>*{flex:1 1 calc(50% - .25rem)}.avatar-gallery{grid-template-columns:repeat(auto-fill,minmax(88px,1fr))}.login-page{align-items:flex-start;justify-content:center;padding:1rem .75rem;padding-top:8dvh}.login-card{width:min(420px,100%);margin:0 auto}.user-admin-header{gap:.45rem;padding:.65rem .75rem}.user-admin-header-left{width:auto;min-width:0;justify-content:flex-start;gap:.5rem}.user-admin-header-right{width:auto;gap:.35rem}.user-admin-main{width:calc(100vw - 1rem);margin:.8rem auto 1rem}.user-admin-stats{grid-template-columns:1fr}.user-admin-toolbar{justify-content:stretch}.user-admin-toolbar .user-admin-btn{flex:1}.session-header{gap:.45rem;padding:.65rem .75rem}.session-header-left{width:auto;min-width:0;justify-content:flex-start;gap:.5rem}.session-header-right{width:auto;gap:.35rem}.session-main{width:calc(100vw - 1rem);margin:.8rem auto 1rem}.session-stats{grid-template-columns:1fr 1fr}.session-toolbar{justify-content:stretch}.session-toolbar .session-btn{flex:1}.notice-header{gap:.45rem;padding:.65rem .75rem}.notice-header-left{width:auto;min-width:0;justify-content:flex-start;gap:.5rem}.notice-header-right{width:auto;gap:.35rem}.notice-main{width:calc(100vw - 1rem);margin:.8rem auto 1rem}.notice-stats{grid-template-columns:1fr 1fr}.notice-toolbar{justify-content:stretch;flex-wrap:wrap}.notice-filter-select{flex:1 1 100%}.audit-log-search-input{min-width:100%;flex:1 1 100%}.notice-toolbar .notice-btn{flex:1}.relationship-name-search{flex:1 1 100%;min-width:100%}.relationship-name-actions{flex-direction:column}.graph-settings-header{gap:.45rem;padding:.65rem .75rem}.graph-settings-header-left{width:auto;min-width:0;justify-content:flex-start;gap:.5rem}.graph-settings-header-right{width:auto;gap:.35rem}.notice-user-chip,.session-user-chip,.user-admin-current-user,.graph-settings-user-chip{display:none}.user-admin-header-left h1,.session-header-left h1,.notice-header-left h1,.graph-settings-header-left h1{font-size:.98rem}.graph-settings-main{width:calc(100vw - 1rem);margin:.8rem auto 1rem}.graph-settings-grid{grid-template-columns:1fr}.audit-log-table-wrap{max-height:min(62vh,calc(100dvh - 15rem))}.graph-settings-actions{flex-direction:column-reverse}.graph-settings-actions .graph-settings-btn{width:100%}.graph-backup-actions{align-items:stretch}.graph-backup-actions .graph-settings-btn,.graph-backup-file-input{width:100%;flex:1 1 100%;min-width:0}.header{flex-direction:column;gap:.4rem;padding:.5rem .75rem;align-items:stretch}.header h1{font-size:1.1rem;text-align:center}.controls{width:100%;justify-content:flex-start;gap:.5rem}.controls>:not(.search-box):not(.mobile-visible){display:none}.desktop-visible{display:none}.search-box{width:100%}.mobile-visible{display:inline-flex}.mobile-search-results{position:fixed;top:3.25rem;left:.75rem;right:.75rem}.header-mobile-panel{position:fixed;top:3.25rem;right:.75rem}.search-box .btn-label{display:inline}.search-input{flex:1 1 auto;min-width:130px}.header-user,.header-action-menu{display:none}.page-header-menu{display:inline-flex}.react-flow__panel.react-flow__controls,.react-flow__minimap{display:none}.controls button{padding:.4rem .75rem;font-size:.8rem}.controls .btn-icon{justify-content:center;padding:0;width:2.5rem;height:2.5rem}.controls .btn-icon svg{width:1.1rem;height:1.1rem}.controls .btn-label{display:none}.modal-overlay{padding:.75rem;align-items:flex-end}.avatar-overlay{align-items:flex-start;padding-top:max(.75rem,env(safe-area-inset-top) + .5rem);padding-bottom:.75rem}.avatar-modal{width:min(98vw,560px);max-height:92dvh;padding:.75rem;border-radius:12px;gap:.5rem}.avatar-modal img{width:100%;max-width:100%;max-height:84dvh;border-radius:10px}.avatar-modal-name{font-size:.9rem}.avatar-carousel-btn{width:38px;height:38px;font-size:1.6rem}.person-node{min-width:80px}.node-avatar{width:40px;height:40px;font-size:1rem}}@media(max-width:480px){.controls{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.25rem;-webkit-overflow-scrolling:touch}.controls::-webkit-scrollbar{height:6px}.controls::-webkit-scrollbar-thumb{background:#ffffff59;border-radius:999px}}@media(orientation:landscape)and (max-width:1024px)and (max-height:560px){.header{flex-direction:row;align-items:center;gap:.45rem;padding:.45rem .75rem}.controls{width:100%;min-width:0;flex-wrap:nowrap;align-items:center;gap:.45rem}.controls>:not(.search-box):not(.mobile-visible){display:none}.desktop-visible{display:none}.search-box{flex:1 1 auto;width:auto;min-width:0;gap:.35rem}.search-input{min-width:0;width:100%}.search-box .btn-label{display:none}.search-box .btn-icon{width:2.25rem;height:2.25rem;justify-content:center;padding:0}.mobile-visible{display:inline-flex;flex:0 0 auto}.header-user,.header-action-menu{display:none}.page-header-menu{display:inline-flex}.mobile-search-results{position:fixed;top:max(2.9rem,env(safe-area-inset-top) + 2.4rem);left:.75rem;right:.75rem}.header-mobile-panel{position:fixed;top:max(2.9rem,env(safe-area-inset-top) + 2.4rem);right:.75rem;max-height:calc(100dvh - max(3.3rem,env(safe-area-inset-top) + 2.8rem));overflow-y:auto}}.react-flow__minimap{background:#f8fafc!important}.react-flow__controls{box-shadow:0 4px 12px #0000001a}.react-flow__controls button{background:#fff;border-color:#e2e8f0;color:#64748b}.react-flow__handle{width:14px;height:14px;border-width:2px;z-index:6}.react-flow__edge-label{background:#fff;padding:2px 6px;border-radius:4px;font-size:.7rem;color:#64748b;font-weight:500}.theme-toggle{position:fixed;top:.9rem;right:.9rem;min-width:5.25rem;min-height:var(--header-control-height);height:var(--header-control-height);border-radius:999px;border:1px solid var(--theme-toggle-border);background:var(--theme-toggle-bg);color:var(--theme-toggle-color);box-shadow:var(--app-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-weight:600;line-height:1;display:inline-flex;align-items:center;justify-content:center;z-index:2500}.user-admin-header-right .user-admin-btn,.session-header-right .session-btn,.notice-header-right .notice-btn,.graph-settings-header-right .graph-settings-btn,.notice-header-right .notice-user-chip,.session-header-right .session-user-chip,.user-admin-header-right .user-admin-current-user,.graph-settings-header-right .graph-settings-user-chip{min-height:var(--header-control-height);height:var(--header-control-height);display:inline-flex;align-items:center;justify-content:center;line-height:1}.theme-toggle:hover{transform:translateY(-1px);filter:brightness(1.03)}@media(min-width:641px){.header,.user-admin-header,.session-header,.notice-header,.graph-settings-header{padding-right:13.2rem}}:root[data-theme=dark] .app,:root[data-theme=dark] .login-page,:root[data-theme=dark] .user-admin-page,:root[data-theme=dark] .session-page,:root[data-theme=dark] .notice-page,:root[data-theme=dark] .relationship-name-page,:root[data-theme=dark] .graph-settings-page{background:linear-gradient(160deg,#0b1220,#111827 48%,#020617);color:var(--app-text)}:root[data-theme=dark] .loading p,:root[data-theme=dark] .user-admin-stat-card span,:root[data-theme=dark] .session-stat-card span,:root[data-theme=dark] .notice-stat-card span,:root[data-theme=dark] .graph-settings-field small,:root[data-theme=dark] .user-admin-loading,:root[data-theme=dark] .session-loading,:root[data-theme=dark] .notice-loading,:root[data-theme=dark] .notice-empty,:root[data-theme=dark] .mobile-search-sub,:root[data-theme=dark] .header-mobile-label{color:var(--app-muted)}:root[data-theme=dark] .header,:root[data-theme=dark] .user-admin-header,:root[data-theme=dark] .session-header,:root[data-theme=dark] .notice-header,:root[data-theme=dark] .graph-settings-header{background:linear-gradient(135deg,#1e293b,#0f172a);box-shadow:0 8px 24px #0206178c}:root[data-theme=dark] .user-admin-panel,:root[data-theme=dark] .session-panel,:root[data-theme=dark] .notice-panel,:root[data-theme=dark] .graph-settings-panel,:root[data-theme=dark] .login-card,:root[data-theme=dark] .modal,:root[data-theme=dark] .avatar-modal,:root[data-theme=dark] .relationship-choice-modal,:root[data-theme=dark] .header-mobile-panel,:root[data-theme=dark] .header-action-panel,:root[data-theme=dark] .mobile-search-results{background:var(--app-surface);border:1px solid var(--app-border);color:var(--app-text);box-shadow:var(--app-shadow)}:root[data-theme=dark] .user-admin-stat-card,:root[data-theme=dark] .session-stat-card,:root[data-theme=dark] .notice-stat-card,:root[data-theme=dark] .graph-settings-field,:root[data-theme=dark] .graph-settings-toggle{background:var(--app-surface);border-color:var(--app-border);box-shadow:none}:root[data-theme=dark] .graph-settings-field{background:var(--app-surface-soft)}:root[data-theme=dark] .graph-settings-toggle{background:var(--app-surface-soft)}:root[data-theme=dark] .graph-backup-hint,:root[data-theme=dark] .graph-backup-file-name{color:var(--app-muted)}:root[data-theme=dark] .graph-backup-file-input{color:var(--app-text)}:root[data-theme=dark] .graph-backup-error{background:#991b1b33;border-color:#f8717173;color:#fecaca}:root[data-theme=dark] .graph-backup-success{background:#0596692e;border-color:#4ade8059;color:#bbf7d0}:root[data-theme=dark] .node-meta-chip{background:#94a3b82e;color:#dbe7f8}:root[data-theme=dark] .user-admin-table th,:root[data-theme=dark] .session-table th,:root[data-theme=dark] .notice-table th,:root[data-theme=dark] .user-admin-table td,:root[data-theme=dark] .session-table td,:root[data-theme=dark] .notice-table td{color:var(--app-text);border-bottom-color:#94a3b82e}:root[data-theme=dark] .audit-log-table-wrap{border-color:var(--app-border);background:var(--app-surface)}:root[data-theme=dark] .audit-log-table-wrap .notice-table th{background:#111827}:root[data-theme=dark] .relationship-name-search,:root[data-theme=dark] .relationship-name-input{background:var(--app-surface-soft);border-color:var(--app-border);color:var(--app-text)}:root[data-theme=dark] .relationship-name-page .notice-table th{color:#f8fafc}:root[data-theme=dark] .relationship-name-page .notice-table td{color:#e6edf7}:root[data-theme=dark] .relationship-name-page .relationship-name-code span,:root[data-theme=dark] .relationship-name-page .relationship-name-default span{color:#cbd5e1}:root[data-theme=dark] .relationship-name-page .relationship-name-input::placeholder,:root[data-theme=dark] .relationship-name-page .relationship-name-search::placeholder{color:#cbd5e1;opacity:.9}:root[data-theme=dark] .relationship-name-header .notice-header-left h1{color:#f8fafc}:root[data-theme=dark] .relationship-name-header .notice-header-left p{color:#e2e8f0;opacity:.95}:root[data-theme=dark] .notice-btn.secondary{background:#1e293bdb;border-color:#94a3b880;color:#f8fafc}:root[data-theme=dark] .notice-btn.secondary:hover{background:#334155fa;color:#fff}:root[data-theme=dark] .notice-btn.danger{background:linear-gradient(180deg,#7f1d1db8,#7f1d1df2);border-color:#f87171bf;color:#fff1f2;text-shadow:0 1px 0 rgba(0,0,0,.22)}:root[data-theme=dark] .notice-btn.danger:hover{background:linear-gradient(180deg,#991b1bd9,#991b1b);border-color:#fca5a5e0;color:#fff}:root[data-theme=dark] .relationship-name-code strong,:root[data-theme=dark] .relationship-name-default strong{color:var(--app-text)}:root[data-theme=dark] .name-lock-chip{color:#bfdbfe;background:#1e40af52;border-color:#93c5fd59}:root[data-theme=dark] .name-input-locked{background:#1e293b8c;color:#94a3b8}:root[data-theme=dark] .name-lock-hint{color:#94a3b8}:root[data-theme=dark] .node-meta-chip-plain{background:transparent;border:none;color:#94a3b8}:root[data-theme=dark] .notice-message,:root[data-theme=dark] .report-issue-person,:root[data-theme=dark] .form-group label,:root[data-theme=dark] .graph-settings-field-label,:root[data-theme=dark] .login-card p{color:var(--app-muted)}:root[data-theme=dark] .login-card h1,:root[data-theme=dark] .modal h2,:root[data-theme=dark] .graph-settings-panel h2,:root[data-theme=dark] .avatar-modal-name,:root[data-theme=dark] .relationship-choice-modal h3{color:var(--app-text)}:root[data-theme=dark] .avatar-modal-count{color:var(--app-muted)}:root[data-theme=dark] .avatar-carousel-btn{background:#0f172acc}:root[data-theme=dark] .search-input{background:#0f172a59;border-color:#94a3b873;color:#f8fafc}:root[data-theme=dark] .search-input::placeholder{color:#e2e8f0b8}:root[data-theme=dark] .header-action-item,:root[data-theme=dark] .mobile-search-item,:root[data-theme=dark] .user-admin-btn,:root[data-theme=dark] .session-btn,:root[data-theme=dark] .notice-btn,:root[data-theme=dark] .graph-settings-btn{color:var(--app-text)}:root[data-theme=dark] .btn-secondary{background:#0f172aad!important;border:1px solid rgba(148,163,184,.45);color:#f8fafc!important}:root[data-theme=dark] .btn-secondary:hover{background:#1e293be6!important;color:#fff!important}:root[data-theme=dark] .btn-primary{background:linear-gradient(135deg,#e2e8f0,#cbd5e1)!important;color:#0f172a!important;border:1px solid rgba(226,232,240,.7)}:root[data-theme=dark] .header-action-item:hover,:root[data-theme=dark] .mobile-search-item:hover{background:#94a3b82e}:root[data-theme=dark] .avatar-danger-btn,:root[data-theme=dark] .avatar-gallery-danger{background:linear-gradient(180deg,#7f1d1d7a,#7f1d1db3);border-color:#f8717173;color:#fecaca;box-shadow:none}:root[data-theme=dark] .avatar-danger-btn:hover,:root[data-theme=dark] .avatar-gallery-danger:hover{background:linear-gradient(180deg,#991b1b9e,#991b1bd1);border-color:#fca5a59e;color:#fee2e2}:root[data-theme=dark] .avatar-library{background:var(--app-surface-soft);border-color:var(--app-border)}:root[data-theme=dark] .avatar-gallery-item{background:var(--app-surface);border-color:#94a3b847}:root[data-theme=dark] .avatar-editor-hint,:root[data-theme=dark] .avatar-zoom-head,:root[data-theme=dark] .avatar-library-head{color:var(--app-muted)}:root[data-theme=dark] .avatar-status-chip{background:#94a3b81f;border-color:#94a3b847;color:#d7e1ef}:root[data-theme=dark] .avatar-status-badge.tone-accent{background:#3b82f633;border-color:#60a5fa66;color:#bfdbfe}:root[data-theme=dark] .avatar-status-badge.tone-warning{background:#f59e0b33;border-color:#fbbf2461;color:#fcd34d}:root[data-theme=dark] .avatar-status-badge.tone-stable{background:#22c55e33;border-color:#4ade8059;color:#bbf7d0}:root[data-theme=dark] .avatar-status-badge.tone-muted{background:#94a3b81f;border-color:#94a3b84d;color:#cbd5e1}:root[data-theme=dark] .user-admin-btn.secondary,:root[data-theme=dark] .session-btn.secondary,:root[data-theme=dark] .notice-btn.secondary,:root[data-theme=dark] .graph-settings-btn.secondary,:root[data-theme=dark] .relationship-choice-btn,:root[data-theme=dark] .relationship-choice-cancel,:root[data-theme=dark] .date-year-btn,:root[data-theme=dark] .custom-field-add,:root[data-theme=dark] .form-actions button[type=button]{background:var(--app-surface-soft);border-color:var(--app-border);color:var(--app-text)}:root[data-theme=dark] .user-admin-btn{font-weight:700;color:#f8fafc}:root[data-theme=dark] .user-admin-btn.primary{background:linear-gradient(135deg,#6366f1,#818cf8);border-color:#e0e7ff59;color:#fff;text-shadow:0 1px 0 rgba(15,23,42,.45)}:root[data-theme=dark] .user-admin-btn.secondary{background:#1e293beb;border-color:#94a3b894;color:#f8fafc}:root[data-theme=dark] .user-admin-btn.secondary:hover{background:#334155fa;color:#fff}:root[data-theme=dark] .user-admin-btn.danger{background:linear-gradient(180deg,#991b1bd1,#991b1bfa);border-color:#fca5a5d1;color:#fff1f2;text-shadow:0 1px 0 rgba(0,0,0,.24)}:root[data-theme=dark] .user-admin-btn.danger:hover{background:linear-gradient(180deg,#b91c1ce6,#b91c1c);border-color:#fecacaeb;color:#fff}:root[data-theme=dark] .user-admin-role-select,:root[data-theme=dark] .notice-filter-select,:root[data-theme=dark] .notice-status-select,:root[data-theme=dark] .graph-settings-input,:root[data-theme=dark] .form-group input,:root[data-theme=dark] .form-group select,:root[data-theme=dark] .form-group textarea{background:var(--app-surface-soft);border-color:var(--app-border);color:var(--app-text)}:root[data-theme=dark] .person-node{background:var(--app-surface);border-color:#334155;box-shadow:0 8px 20px #02061773}:root[data-theme=dark] .node-name{color:var(--app-text)}:root[data-theme=dark] .node-title{background:var(--app-surface-soft);color:var(--app-muted)}:root[data-theme=dark] .react-flow__minimap{background:var(--app-surface-soft)!important}:root[data-theme=dark] .react-flow__controls{box-shadow:0 8px 20px #02061773}:root[data-theme=dark] .react-flow__controls button{background:var(--app-surface);border-color:var(--app-border);color:var(--app-text)}:root[data-theme=dark] .react-flow__edge-label{background:var(--app-surface);color:var(--app-muted)}@media(max-width:640px){.theme-toggle{top:auto;right:.75rem;bottom:.75rem}}
