:root{--bg: #0b0f1a;--surface: #151c2c;--surface2: #1d2538;--surface3: #242e45;--border: #2a3650;--border2: #334166;--accent: #6366f1;--accent-dim: rgba(99,102,241,.15);--accent-glow: rgba(99,102,241,.3);--text: #e8eaf6;--text-muted: #8892b0;--text-dim: #4a5568;--success: #10b981;--success-dim: rgba(16,185,129,.15);--warning: #f59e0b;--warning-dim: rgba(245,158,11,.15);--error: #ef4444;--error-dim: rgba(239,68,68,.15);--shadow: 0 4px 24px rgba(0,0,0,.4);--shadow-lg: 0 8px 40px rgba(0,0,0,.6);--radius: 10px;--radius-sm: 6px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:none;background:none}input{font-family:inherit}.app{display:flex;flex-direction:column;height:100%}.app-main{flex:1;overflow:hidden;display:flex;flex-direction:column}.header{display:flex;align-items:center;gap:20px;padding:0 20px;height:52px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;z-index:100}.header-brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:16px;letter-spacing:-.3px;color:var(--text)}.header-nav{display:flex;gap:4px}.nav-link{padding:6px 14px;border-radius:var(--radius-sm);color:var(--text-muted);text-decoration:none;font-size:13px;font-weight:500;transition:color .15s,background .15s}.nav-link:hover{color:var(--text);background:var(--surface3)}.nav-link--active{color:var(--accent);background:var(--accent-dim)}.toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.toolbar-group{display:flex;align-items:center;gap:6px}.toolbar-group--right{margin-left:auto}.tb-btn{display:flex;align-items:center;gap:6px;padding:6px 13px;border-radius:var(--radius-sm);background:var(--surface3);color:var(--text);font-size:13px;font-weight:500;border:1px solid var(--border);transition:background .15s,border-color .15s,color .15s,box-shadow .15s;white-space:nowrap}.tb-btn:hover{background:var(--surface3);border-color:var(--border2)}.tb-btn:active{transform:translateY(1px)}.tb-btn--primary{background:var(--accent);border-color:transparent;color:#fff;box-shadow:0 0 0 0 var(--accent-glow)}.tb-btn--primary:hover{background:#5558e3;box-shadow:0 0 14px var(--accent-glow)}.tb-btn--active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.tb-btn--icon{padding:6px 10px;font-size:16px;line-height:1}.tb-btn:disabled{opacity:.35;cursor:default;pointer-events:none}.tb-btn--explain{color:var(--text-muted);border-color:var(--border2)}.tb-btn--explain:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}.tb-zoom{font-size:12px;color:var(--text-muted);min-width:38px;text-align:center}.explain-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;align-items:center;justify-content:center;background:#0b0f1ab3;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.explain-modal{width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 60px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.explain-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);font-size:14px;font-weight:600;color:var(--text)}.explain-close{width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:13px;border-radius:6px;transition:background .1s,color .1s}.explain-close:hover{background:var(--surface2);color:var(--text)}.explain-body{flex:1;overflow:auto;padding:16px;font-family:Menlo,Consolas,monospace;font-size:12px;line-height:1.7;color:var(--text-muted);white-space:pre-wrap;word-break:break-word}.explain-footer{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--border);flex-wrap:wrap}.explain-copy{padding:7px 14px;background:var(--accent);color:#fff;border-radius:var(--radius-sm);font-size:13px;font-weight:600;transition:opacity .15s;flex-shrink:0}.explain-copy:hover{opacity:.88}.explain-hint{font-size:12px;color:var(--text-dim);line-height:1.4}.board-page{display:flex;flex-direction:column;flex:1;overflow:hidden}.board-viewport{flex:1;overflow:hidden;position:relative;background:var(--bg);touch-action:none;-webkit-user-select:none;user-select:none}.board-grid{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(circle,var(--border) 1px,transparent 1px);background-size:28px 28px;opacity:.5}.board-canvas{position:absolute;width:4000px;height:3000px;top:0;left:0;will-change:transform}.conn-svg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.card{position:absolute;width:300px;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;transition:box-shadow .15s,border-color .15s}.card--selected{border-color:var(--accent);box-shadow:var(--shadow),0 0 0 3px var(--accent-dim)}.card--source{border-color:#10b981;box-shadow:var(--shadow),0 0 0 3px #10b98133;animation:pulse-green 1s ease-in-out infinite}.card--connectable:not(.card--source){cursor:crosshair}.card--branch{border-style:dashed;border-color:#10b98180}.card--branch.card--selected{border-color:var(--accent);border-style:solid}.card-branch-badge{display:flex;align-items:center;gap:6px;padding:5px 12px;font-size:11px;color:var(--text-muted);background:#10b98114;border-bottom:1px solid rgba(16,185,129,.25);border-radius:var(--radius) var(--radius) 0 0}.card-branch-icon{font-size:13px;color:#10b981;flex-shrink:0}.card-branch-badge strong{color:var(--text)}.card-branch-item{color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.cross-drag-ghost{position:fixed;pointer-events:none;z-index:9999;background:var(--surface2);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:4px 10px;font-size:13px;color:var(--text);box-shadow:var(--shadow-lg);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .1s}.cross-dragging .card{outline:1px dashed rgba(99,102,241,.35);transition:outline .12s,box-shadow .12s}.cross-dragging .card:hover{outline:2px solid var(--accent);box-shadow:var(--shadow),0 0 0 3px var(--accent-glow);cursor:copy}.cross-dragging .nl-row:hover{background:var(--accent-dim);border-radius:var(--radius-sm);outline:1px solid var(--accent-glow);cursor:copy}.drag-indicator{position:fixed;pointer-events:none;z-index:9998;height:2px;background:var(--accent);border-radius:1px;transform:translateY(-1px)}.drag-indicator:before{content:"";position:absolute;left:-4px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}.nl-row--dragging{opacity:.3}.card--connectable:not(.card--source):hover{border-color:#10b981;box-shadow:var(--shadow),0 0 0 2px #10b9814d}@keyframes pulse-green{0%,to{box-shadow:var(--shadow),0 0 0 3px #10b98133}50%{box-shadow:var(--shadow),0 0 0 6px #10b9811a}}.card-resize-handle{position:absolute;width:16px;height:16px;z-index:20;border-radius:50%;background:transparent;border:2px solid transparent;transition:background .15s,border-color .15s,box-shadow .15s,transform .1s}.card-resize-handle:hover{background:#fff;border-color:var(--accent);box-shadow:0 0 0 2px #6366f159;transform:scale(1.15)}.card-header{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:calc(var(--radius) - 1.5px) calc(var(--radius) - 1.5px) 0 0;cursor:default;-webkit-user-select:none;user-select:none}.card--selected .card-header:active{cursor:grabbing}.card-drag-handle{font-size:18px;opacity:0;flex-shrink:0;pointer-events:none;transition:opacity .15s}.card-header:hover .card-drag-handle{opacity:.45}.card-title{flex:1;font-weight:600;font-size:14px;color:#fffffff2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-title-input{flex:1;background:#0003;border:1px solid rgba(255,255,255,.3);border-radius:4px;padding:2px 6px;color:#fff;font-size:14px;font-weight:600;outline:none;min-width:0}.card-header-actions{display:flex;gap:4px;flex-shrink:0}.card-btn{width:24px;height:24px;border-radius:4px;background:#0003;color:#ffffffb3;font-size:11px;display:flex;align-items:center;justify-content:center;transition:background .15s}.card-btn:hover{background:#0006;color:#fff}.card-btn--danger:hover{background:#ef444466;color:#fca5a5}.card-btn--excluded{color:var(--error)!important;opacity:.9}.card-btn--excluded:hover{background:var(--error-dim)!important}.card-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px}.card-palette-row{display:flex;align-items:center;gap:8px}.card-color-swatch{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.3);cursor:pointer;flex-shrink:0;transition:transform .15s}.card-color-swatch:hover{transform:scale(1.15)}.card-palette{display:flex;gap:5px;flex-wrap:wrap}.card-dot{width:16px;height:16px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .15s,border-color .15s}.card-dot:hover{transform:scale(1.2)}.card-dot--active{border-color:#fff;transform:scale(1.15)}.card-list{min-height:0}.card-add-item{padding:5px 0;color:var(--text-muted);font-size:13px;text-align:left;transition:color .15s}.card-add-item:hover{color:var(--accent)}.card-conns{padding-top:6px;border-top:1px solid var(--border);cursor:pointer;position:relative}.card-conn-badge{display:flex;gap:8px;font-size:12px;color:var(--text-muted)}.card-conn-badge span{transition:color .15s}.card-conn-badge:hover span{color:var(--accent)}.card-conn-menu{position:absolute;bottom:100%;left:0;right:0;background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:6px;z-index:10;box-shadow:var(--shadow-lg)}.conn-item{display:flex;align-items:center;justify-content:space-between;padding:4px 6px;border-radius:4px;font-size:12px;color:var(--text-muted)}.conn-item:hover{background:var(--surface3)}.conn-item button{width:18px;height:18px;border-radius:3px;font-size:12px;color:var(--text-dim);display:flex;align-items:center;justify-content:center}.conn-item button:hover{background:var(--error-dim);color:var(--error)}.conn-item--in{opacity:.75}.nl-row{display:flex;align-items:center;gap:4px;padding:5px 0;border-radius:4px;transition:background .1s}.nl-row:hover{background:var(--surface3)}.nl-row:hover .nl-actions{opacity:1}.nl-drag{font-size:14px;cursor:grab;color:var(--text-dim);padding:0 2px;flex-shrink:0;line-height:1}.nl-drag:active{cursor:grabbing}.nl-expand,.nl-bullet{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--text-muted);flex-shrink:0}.nl-expand{cursor:pointer;border-radius:3px}.nl-expand:hover{background:var(--surface3)}.nl-text{flex:1;font-size:13px;color:var(--text);cursor:text;word-break:break-word;min-width:0;min-height:18px;white-space:pre-wrap;padding:1px 0}.nl-input{flex:1;background:var(--surface2);border:1px solid var(--accent);border-radius:4px;padding:4px 6px;color:var(--text);font-size:13px;outline:none;min-width:0;resize:none;line-height:1.5;overflow:hidden}.nl-actions{display:flex;gap:2px;opacity:0;transition:opacity .1s;flex-shrink:0}.nl-btn{width:18px;height:18px;border-radius:3px;font-size:13px;color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:background .1s,color .1s}.nl-btn:hover{background:var(--surface3);color:var(--text)}.nl-del:hover{background:var(--error-dim);color:var(--error)}.nl-children{padding-left:18px;border-left:1px solid var(--border);margin-left:10px}.nl-link-btn{color:var(--text-dim)!important;font-size:12px!important}.nl-link-btn--active{color:var(--accent)!important}.nl-link-btn:hover{background:var(--accent-dim)!important;color:var(--accent)!important}.nl-unlink-btn{position:relative;color:var(--accent)!important;font-size:12px!important;opacity:.7}.nl-unlink-btn:hover,.nl-unlink-btn--open{opacity:1;background:var(--accent-dim)!important}.nl-unlink-count{position:absolute;top:-4px;right:-3px;font-size:9px;background:var(--accent);color:#fff;border-radius:99px;padding:0 3px;line-height:1.4;pointer-events:none}.nl-unlink-menu{margin:2px 0 4px 28px;background:var(--surface2);border:1px solid var(--border2);border-radius:6px;overflow:hidden}.nl-unlink-row{display:flex;align-items:center;gap:6px;padding:5px 8px;font-size:12px;color:var(--text-muted);border-bottom:1px solid var(--border)}.nl-unlink-row:last-child{border-bottom:none}.nl-unlink-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nl-unlink-x{flex-shrink:0;width:16px;height:16px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--text-dim);background:none;border:none;cursor:pointer;transition:background .1s,color .1s}.nl-unlink-x:hover{background:var(--error-dim);color:var(--error)}.nl-link-badges{display:flex;flex-wrap:wrap;gap:4px;padding:2px 0 4px 28px}.nl-link-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 5px;border-radius:99px;background:var(--surface3);border:1px solid var(--border2);font-size:11px;color:var(--text-muted);max-width:200px}.nl-link-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.nl-link-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nl-link-remove{color:var(--text-dim);font-size:13px;line-height:1;flex-shrink:0;padding:0 1px}.nl-link-remove:hover{color:var(--error)}.nl-branch-btn{color:var(--text-dim);font-size:13px;transition:color .15s,background .15s}.nl-branch-btn:hover{color:#10b981;background:#10b9811a}.nl-branch-btn--active{color:#10b981!important}.nl-branch-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 5px;border-radius:99px;background:#10b9811a;border:1px solid rgba(16,185,129,.3);font-size:11px;color:#10b981;margin:2px 0 4px 28px}.nl-branch-tag-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}.nl-branch-picker{position:relative;z-index:50;margin:4px 0 4px 28px;background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-sm);box-shadow:var(--shadow);min-width:180px;max-width:240px;overflow:hidden}.nl-branch-picker-header{font-size:11px;color:var(--text-muted);padding:6px 10px 4px;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border)}.nl-branch-option{display:flex;align-items:center;gap:7px;width:100%;padding:7px 10px;font-size:13px;color:var(--text);text-align:left;transition:background .1s}.nl-branch-option:hover{background:var(--surface3)}.nl-branch-empty{font-size:12px;color:var(--text-dim);padding:8px 10px}.picker-label{font-size:11px;color:var(--text-muted);padding:2px 8px 4px;text-transform:uppercase;letter-spacing:.4px}.picker-empty{font-size:12px;color:var(--text-dim);padding:4px 8px}.picker-row:hover{background:var(--surface3)!important}.analysis{flex:1;overflow-y:auto;padding:32px 40px;max-width:900px;width:100%;margin:0 auto}.analysis-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.analysis h1{font-size:22px;font-weight:700;color:var(--text)}.analysis h2{font-size:15px;font-weight:600;color:var(--text);margin-bottom:12px}.analysis section{margin-bottom:32px}.analysis-loading,.analysis-error,.analysis-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:80px;color:var(--text-muted)}.spinner{width:28px;height:28px;border:2.5px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 16px;text-align:center;transition:border-color .15s}.stat-card--warning{border-color:var(--warning);background:var(--warning-dim)}.stat-card--error{border-color:var(--error);background:var(--error-dim)}.stat-card--success{border-color:var(--success);background:var(--success-dim)}.stat-value{font-size:28px;font-weight:700;color:var(--text);line-height:1.1}.stat-label{font-size:12px;color:var(--text-muted);margin-top:4px}.suggestion-list{display:flex;flex-direction:column;gap:10px}.suggestion{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:6px}.suggestion--warning{border-left:3px solid var(--warning)}.suggestion--error{border-left:3px solid var(--error)}.suggestion--info{border-left:3px solid var(--accent)}.suggestion--success{border-left:3px solid var(--success)}.suggestion-header{display:flex;align-items:center;gap:10px}.suggestion-badge{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}.suggestion-badge--warning{background:var(--warning-dim);color:var(--warning)}.suggestion-badge--error{background:var(--error-dim);color:var(--error)}.suggestion-badge--info{background:var(--accent-dim);color:var(--accent)}.suggestion-badge--success{background:var(--success-dim);color:var(--success)}.suggestion-desc{font-size:13px;color:var(--text);margin-left:32px}.suggestion-items{display:flex;flex-wrap:wrap;gap:6px;margin-left:32px}.suggestion-tag{padding:2px 10px;border-radius:99px;background:var(--surface3);border:1px solid var(--border2);font-size:12px;color:var(--text-muted)}.suggestion-action{font-size:12px;color:var(--text-muted);margin-left:32px;font-style:italic}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}.conn-table{width:100%;border-collapse:collapse;font-size:13px}.conn-table th{background:var(--surface2);padding:10px 14px;text-align:left;color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.conn-table td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.conn-table tr:last-child td{border-bottom:none}.conn-table tr:hover td{background:var(--surface2)}.td-num{text-align:center;color:var(--text-muted)}.td-bold{color:var(--text);font-weight:600}.table-color-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;vertical-align:middle}.dep-graph-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;overflow:hidden}.dep-graph{width:100%;height:auto;display:block}.complex-list{display:flex;flex-direction:column;gap:6px}.complex-item{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.complex-title{font-size:13px;font-weight:500}.complex-meta{font-size:12px;color:var(--text-muted)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.auth-loading{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-muted);font-size:15px}.login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#0b0f1ad9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.login-card{position:relative;width:360px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:36px 32px;box-shadow:var(--shadow-lg);--accent: #6366f1}.login-logo{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:700;color:var(--text);margin-bottom:28px}.login-title{font-size:20px;font-weight:600;color:var(--text);margin-bottom:24px}.login-form{display:flex;flex-direction:column;gap:16px}.login-field{display:flex;flex-direction:column;gap:6px}.login-field label{font-size:13px;color:var(--text-muted)}.login-field input{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:14px;padding:9px 12px;outline:none;transition:border-color .15s}.login-field input:focus{border-color:var(--accent)}.login-error{font-size:13px;color:var(--error);background:var(--error-dim);border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-sm);padding:8px 12px}.login-submit{margin-top:4px;background:var(--accent);color:#fff;border-radius:var(--radius-sm);padding:10px;font-size:14px;font-weight:600;transition:opacity .15s}.login-submit:hover:not(:disabled){opacity:.88}.login-submit:disabled{opacity:.5;cursor:default}.login-close{position:absolute;top:14px;right:14px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:14px;border-radius:50%;transition:background .15s,color .15s}.login-close:hover{background:var(--surface2);color:var(--text)}.login-guest-hint{font-size:13px;color:var(--text-muted);margin-bottom:4px;line-height:1.5}.login-skip{text-align:center;font-size:13px;color:var(--text-muted);padding:4px;transition:color .15s}.login-skip:hover{color:var(--text)}.header-user{display:flex;align-items:center;gap:10px;margin-left:auto}.header-username{font-size:13px;color:var(--text-muted)}.header-logout{font-size:12px;color:var(--text-muted);background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 10px;transition:color .15s,border-color .15s}.header-logout:hover{color:var(--text);border-color:var(--border2)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-card{width:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px 28px 24px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:20px}.modal-header{display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:16px;font-weight:600;color:var(--text)}.modal-close{color:var(--text-muted);font-size:14px;padding:4px 8px;border-radius:var(--radius-sm);transition:color .15s,background .15s}.modal-close:hover{color:var(--text);background:var(--surface3)}.user-list{list-style:none;display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}.user-row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm)}.user-name{font-size:13px;color:var(--text)}.user-delete{font-size:12px;color:var(--error);padding:3px 8px;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-sm);transition:background .15s}.user-delete:hover{background:var(--error-dim)}.user-add-form{display:flex;flex-direction:column;gap:14px}.fab{display:none;position:fixed;bottom:76px;right:18px;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;font-size:30px;line-height:1;align-items:center;justify-content:center;box-shadow:0 4px 20px #6366f18c,0 2px 8px #00000059;z-index:300;transition:transform .12s,box-shadow .12s}.fab:active{transform:scale(.92);box-shadow:0 2px 10px #6366f166}.mobile-bar{display:none;position:fixed;bottom:0;left:0;right:0;height:60px;background:var(--surface);border-top:1px solid var(--border);align-items:center;justify-content:space-around;padding:0 4px;padding-bottom:env(safe-area-inset-bottom,0px);z-index:200}.mobile-btn{display:flex;align-items:center;justify-content:center;width:52px;height:48px;border-radius:var(--radius-sm);color:var(--text-muted);font-size:19px;transition:color .15s,background .15s;-webkit-tap-highlight-color:transparent}.mobile-btn:active{background:var(--surface3);color:var(--text)}.mobile-btn--active{color:var(--accent);background:var(--accent-dim)}.mobile-btn:disabled{opacity:.28;pointer-events:none}.zoom-toast{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#000000b8;color:#fff;padding:10px 22px;border-radius:24px;font-size:22px;font-weight:700;letter-spacing:-.5px;pointer-events:none;z-index:400;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}@media (max-width: 640px){body{overscroll-behavior:none}.header{padding:0 12px;gap:10px;height:48px}.header-brand{font-size:14px;gap:7px}.header-brand svg{width:16px;height:16px}.nav-link{padding:5px 10px;font-size:12px}.header-username{display:none}.header-logout{padding:4px 8px;font-size:11px}.toolbar{overflow-x:auto;overflow-y:hidden;gap:4px;padding:6px 10px;flex-wrap:nowrap}.toolbar::-webkit-scrollbar{display:none}.toolbar-group{flex-shrink:0;gap:3px}.tb-label{display:none}.tb-btn{padding:7px 10px;font-size:13px}.tb-btn--icon{padding:7px 9px}.tb-zoom{min-width:28px;font-size:11px}.app-main{padding-bottom:60px}.fab,.mobile-bar{display:flex}.card-btn{width:36px;height:36px;font-size:13px}.card-header{padding:12px 14px;gap:10px}.card-drag-handle{font-size:20px}.card-add-item{padding:10px 0;font-size:14px}.card-resize-handle{display:none}.nl-row{min-height:36px}.nl-text{font-size:14px}.login-card{width:calc(100vw - 32px);padding:28px 20px}.modal-card{width:calc(100vw - 32px);padding:20px 18px 18px}.user-list{max-height:160px}.analysis{padding:16px 12px}.analysis-stats{grid-template-columns:repeat(2,1fr);gap:10px}.table-wrap{overflow-x:auto}.conn-table{font-size:12px}.conn-table th,.conn-table td{padding:6px 8px}}
