:root{--bg-primary:#0f172a;--bg-secondary:#1e293b;--bg-card:#1e293b;--bg-card-hover:#243249;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--accent:#3b82f6;--accent-hover:#2563eb;--accent-subtle:#3b82f626;--success:#22c55e;--warning:#f59e0b;--danger:#ef4444;--border:#334155;--border-hover:#3b82f6;--sidebar-width:240px;--topbar-height:56px;--radius:8px;--transition:.15s ease}[data-theme=light]{--bg-primary:#f8fafc;--bg-secondary:#fff;--bg-card:#fff;--bg-card-hover:#f1f5f9;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-subtle:#2563eb1a;--border:#e2e8f0;--border-hover:#2563eb}[data-theme=light] input,[data-theme=light] select,[data-theme=light] textarea{background:#f1f5f9;border-color:#cbd5e1}[data-theme=light] .sidebar,[data-theme=light] .topbar,[data-theme=light] .context-menu,[data-theme=light] .search-modal{background:#fff}[data-theme=light] .auth-card{background:#fff;box-shadow:0 20px 60px #0000001a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;font-size:16px}body{background-color:var(--bg-primary);min-height:100%;color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#475569}.app-shell{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--border);z-index:100;transition:transform var(--transition);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.sidebar-logo{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:16px 20px;display:flex}.sidebar-logo-mark{background:var(--bg-primary);width:32px;height:32px;color:var(--accent);letter-spacing:-.5px;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.sidebar-logo-text{color:var(--text-primary);font-size:15px;font-weight:600}.sidebar-nav{flex:1;padding:12px 0}.sidebar-nav-item{border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;transition:background var(--transition), color var(--transition);align-items:center;gap:10px;margin:2px 8px;padding:9px 16px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.sidebar-nav-item:hover{color:var(--text-primary);background:#ffffff0d}.sidebar-nav-item.active{color:#60a5fa;background:#3b82f626}.sidebar-nav-item svg{flex-shrink:0;width:18px;height:18px}.sidebar-user{border-top:1px solid var(--border);flex-shrink:0;padding:12px}.sidebar-user-info{border-radius:var(--radius);align-items:center;gap:10px;margin-bottom:8px;padding:8px;display:flex}.sidebar-avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:12px;font-weight:600;display:flex}.sidebar-user-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.sidebar-logout-btn{border-radius:var(--radius);border:1px solid var(--border);width:100%;color:var(--text-secondary);cursor:pointer;transition:background var(--transition), color var(--transition), border-color var(--transition);background:0 0;align-items:center;gap:6px;padding:7px 12px;font-size:13px;display:flex}.sidebar-logout-btn:hover{color:#f87171;background:#ef44441a;border-color:#ef44444d}.topbar{height:var(--topbar-height);background:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:50;flex-shrink:0;align-items:center;gap:12px;padding:0 20px;display:flex;position:sticky;top:0}.topbar-hamburger{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px;display:none}.topbar-hamburger:hover{color:var(--text-primary);background:#ffffff0d}.topbar-title{color:var(--text-primary);flex:1;font-size:16px;font-weight:600}.topbar-actions{align-items:center;gap:8px;display:flex}.lang-switcher{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:4px;padding:2px 4px;display:flex}.lang-btn{color:var(--text-secondary);cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:none;border-radius:5px;padding:4px 8px;font-size:12px;font-weight:500}.lang-btn.active{background:var(--accent);color:#fff}.lang-btn:hover:not(.active){color:var(--text-primary);background:#ffffff12}.lang-select{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;transition:border-color var(--transition), color var(--transition);appearance:none;outline:none;padding:4px 8px;font-size:12px;font-weight:500}.lang-select:hover,.lang-select:focus{border-color:var(--accent);color:var(--text-primary)}.main-wrapper{margin-left:var(--sidebar-width);flex-direction:column;flex:1;min-height:100vh;display:flex}.main-content{flex:1;width:100%;max-width:1280px;padding:28px}.sidebar-overlay{z-index:90;background:#00000080;display:none;position:fixed;inset:0}.offline-banner{color:#fbbf24;background:#f59e0b26;border-bottom:1px solid #f59e0b4d;align-items:center;gap:8px;padding:8px 20px;font-size:13px;display:flex}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--transition), box-shadow var(--transition), background var(--transition)}.card:hover{border-color:var(--border-hover);box-shadow:0 0 0 1px #3b82f61a}.card-link{color:inherit;text-decoration:none;display:block}.module-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:24px;display:grid}.module-card{background:var(--bg-card);border:1px solid var(--border);color:inherit;transition:border-color var(--transition), box-shadow var(--transition), transform var(--transition), background var(--transition);cursor:pointer;border-radius:12px;flex-direction:column;gap:12px;padding:20px;text-decoration:none;display:flex}.module-card:hover{border-color:var(--border-hover);background:var(--bg-card-hover);transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}.module-card-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.module-card-icon svg{width:22px;height:22px}.module-card-header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.module-card-title{color:var(--text-primary);font-size:15px;font-weight:600}.module-card-desc{color:var(--text-secondary);font-size:13px;line-height:1.5}.module-card-footer{align-items:center;gap:8px;margin-top:auto;display:flex}.status-dot{background:var(--success);border-radius:50%;width:6px;height:6px}.status-dot.offline{background:var(--text-muted)}.status-text{color:var(--text-secondary);font-size:12px}.icon-blue{color:#60a5fa;background:#3b82f626}.icon-green{color:#4ade80;background:#22c55e26}.icon-amber{color:#fbbf24;background:#f59e0b26}.icon-purple{color:#c084fc;background:#a855f726}.icon-cyan{color:#22d3ee;background:#06b6d426}.icon-pink{color:#f472b6;background:#ec489926}.badge{white-space:nowrap;border-radius:100px;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;display:inline-flex}.badge-soon{color:#fbbf24;background:#f59e0b26;border:1px solid #f59e0b4d}.role-badge{text-transform:uppercase;letter-spacing:.05em;border-radius:100px;align-items:center;padding:2px 8px;font-size:10px;font-weight:600;display:inline-flex}.role-owner{color:#facc15;background:#eab30833}.role-admin{color:#c084fc;background:#a855f733}.role-editor{color:#60a5fa;background:#3b82f633}.role-viewer{color:#4ade80;background:#22c55e33}.role-guest{color:#94a3b8;background:#64748b33}.btn{border-radius:var(--radius);cursor:pointer;transition:background var(--transition), opacity var(--transition);border:none;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:500;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{color:var(--text-primary);border:1px solid var(--border);background:#334155}.btn-secondary:hover:not(:disabled){background:#3d4f63}.btn-ghost{color:var(--text-secondary);border:1px solid var(--border);background:0 0}.btn-ghost:hover:not(:disabled){color:var(--text-primary);background:#ffffff0d}.form-group{flex-direction:column;gap:6px;display:flex}label{color:var(--text-secondary);font-size:13px;font-weight:500}input,select,textarea{border-radius:var(--radius);color:var(--text-primary);transition:border-color var(--transition), box-shadow var(--transition);background:#1a2540;border:1px solid #334155;outline:none;width:100%;padding:9px 12px;font-family:inherit;font-size:14px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #3b82f626}input::placeholder{color:var(--text-muted)}.page-header{margin-bottom:24px}.page-title{color:var(--text-primary);margin-bottom:4px;font-size:22px;font-weight:700}.page-desc{color:var(--text-secondary);font-size:14px}.module-placeholder{background:var(--bg-card);border:1px dashed var(--border);text-align:center;border-radius:12px;margin-top:24px;padding:48px 32px}.module-placeholder-icon{border-radius:12px;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 16px;display:flex}.module-placeholder-title{color:var(--text-primary);margin-bottom:8px;font-size:16px;font-weight:600}.module-placeholder-desc{color:var(--text-secondary);max-width:420px;margin:0 auto 16px;font-size:14px;line-height:1.6}.module-placeholder-note{color:#fbbf24;background:#f59e0b1a;border:1px solid #f59e0b33;border-radius:100px;align-items:center;gap:6px;padding:6px 14px;font-size:12px;font-weight:500;display:inline-flex}.auth-page{background:var(--bg-primary);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:16px;width:100%;max-width:420px;padding:40px 36px;box-shadow:0 20px 60px #0006}.auth-card__header{text-align:center;margin-bottom:32px}.auth-card__title{color:var(--text-primary);margin-bottom:6px;font-size:28px;font-weight:700}.auth-card__subtitle{color:var(--text-secondary);font-size:14px}.auth-card form{flex-direction:column;gap:18px;display:flex}.auth-card .form-group--inline{flex-direction:row;align-items:center}.auth-card .form-checkbox{color:var(--text-secondary);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.auth-card .form-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.btn-full{border-radius:var(--radius);cursor:pointer;background:var(--accent);color:#fff;width:100%;transition:background var(--transition), opacity var(--transition);border:none;justify-content:center;padding:11px 16px;font-size:15px;font-weight:600}.btn-full:hover:not(:disabled){background:var(--accent-hover)}.btn-full:disabled{opacity:.5;cursor:not-allowed}.form-error{color:var(--danger);border-radius:var(--radius);background:#ef44441a;border:1px solid #ef444433;padding:8px 12px;font-size:13px}.auth-card__footer{text-align:center;color:var(--text-secondary);margin-top:24px;font-size:13px}.auth-card__footer a{color:var(--accent);font-weight:500}.auth-card__footer a:hover{text-decoration:underline}.password-strength{margin-top:4px}.password-strength-bar{background:var(--border);border-radius:2px;height:4px;margin-bottom:4px;overflow:hidden}.password-strength-fill{border-radius:2px;height:100%;transition:width .3s,background .3s}.password-strength-fill.weak{background:var(--danger);width:33%}.password-strength-fill.medium{background:var(--warning);width:66%}.password-strength-fill.strong{background:var(--success);width:100%}.password-strength-text{color:var(--text-muted);font-size:11px}.auth-loading{justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-loading:after{content:"";border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.settings-section{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;padding:24px}.settings-section h2{color:var(--text-primary);border-bottom:1px solid var(--border);margin-bottom:16px;padding-bottom:12px;font-size:16px;font-weight:600}.settings-section.danger{border-color:#ef44444d}.settings-section.danger h2{color:var(--danger);border-bottom-color:#ef444433}.settings-row{justify-content:space-between;align-items:center;gap:16px;padding:10px 0;display:flex}.settings-row+.settings-row{border-top:1px solid #33415580}.device-list{flex-direction:column;gap:8px;display:flex}.device-item{background:var(--bg-primary);border-radius:var(--radius);border:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px;display:flex}.device-info{flex-direction:column;gap:2px;display:flex}.device-name{color:var(--text-primary);font-size:14px;font-weight:500}.device-meta{color:var(--text-muted);font-size:12px}.btn-danger{color:var(--danger);border-radius:var(--radius);cursor:pointer;transition:background var(--transition);background:#ef44441a;border:1px solid #ef44444d;padding:6px 12px;font-size:13px}.btn-danger:hover{background:#ef444433}.access-denied{text-align:center;color:var(--text-secondary);padding:60px 20px}.access-denied h2{color:var(--danger);margin-bottom:8px;font-size:20px}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.skeleton{background:var(--bg-secondary);border-radius:4px;animation:1.5s ease-in-out infinite skeleton-pulse}.dashboard-welcome{margin-bottom:8px}.dashboard-welcome h1{color:var(--text-primary);font-size:24px;font-weight:700}.dashboard-welcome p{color:var(--text-secondary);margin-top:4px;font-size:14px}.file-breadcrumb{align-items:center;gap:4px;margin-bottom:16px;font-size:14px;display:flex}.file-breadcrumb-item{color:var(--text-secondary);cursor:pointer}.file-breadcrumb-item:hover{color:var(--accent)}.file-breadcrumb-item.active{color:var(--text-primary);cursor:default}.file-breadcrumb-sep{color:var(--text-muted)}.file-toolbar{align-items:center;gap:8px;margin-bottom:16px;display:flex}.file-toolbar .usage{color:var(--text-secondary);margin-left:auto;font-size:12px}.file-table{border-collapse:collapse;width:100%}.file-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);padding:8px 12px;font-size:12px;font-weight:600}.file-table td{border-bottom:1px solid #3341554d;padding:10px 12px;font-size:14px}.file-table tr:hover{background:#ffffff05}.file-table .file-name{cursor:pointer;color:var(--text-primary);align-items:center;gap:8px;display:flex}.file-table .file-name:hover{color:var(--accent)}.file-table .file-icon{font-size:18px}.file-table .file-actions{gap:4px;display:flex}.file-table .file-actions button{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;padding:4px 8px;font-size:12px}.file-table .file-actions button:hover{color:var(--text-primary);background:#ffffff0d}.file-preview{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-top:16px;padding:16px}.file-preview textarea{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);width:100%;min-height:300px;color:var(--text-primary);resize:vertical;padding:12px;font-family:monospace;font-size:13px}.file-empty{text-align:center;color:var(--text-secondary);padding:60px 20px}.file-empty-icon{margin-bottom:12px;font-size:48px}.health-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:16px;display:grid}.health-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.health-card.healthy{border-left:3px solid var(--success)}.health-card.unhealthy{border-left:3px solid var(--danger)}.health-card-name{color:var(--text-primary);margin-bottom:8px;font-size:14px;font-weight:600}.health-card-meta{color:var(--text-secondary);gap:12px;font-size:12px;display:flex}.test-results{margin-top:20px}.test-result-row{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;margin-bottom:8px;padding:12px 16px;display:flex}.test-result-row .pass-count{color:var(--success);font-weight:600}.test-result-row .fail-count{color:var(--danger);font-weight:600}.test-summary{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);gap:24px;margin-bottom:16px;padding:16px;display:flex}.test-summary-item{text-align:center}.test-summary-value{font-size:24px;font-weight:700}.test-summary-label{color:var(--text-secondary);font-size:12px}.scan-input-row{gap:8px;margin-bottom:20px;display:flex}.scan-input-row input{flex:1}.scan-result-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;margin-bottom:16px;padding:20px}.scan-score{text-align:center;margin:16px 0;font-size:48px;font-weight:700}.scan-score.good{color:var(--success)}.scan-score.warn{color:var(--warning)}.scan-score.bad{color:var(--danger)}.scan-history{margin-top:24px}.scan-history-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.scan-history-item:last-child{border-bottom:none}.device-score-circle{border:4px solid;border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;margin:20px auto;font-size:32px;font-weight:700;display:flex}.device-score-circle.good{border-color:var(--success);color:var(--success)}.device-score-circle.warn{border-color:var(--warning);color:var(--warning)}.device-score-circle.bad{border-color:var(--danger);color:var(--danger)}.device-checks{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:20px;display:grid}.device-check{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:12px;padding:12px 16px;display:flex}.device-check-icon{border-radius:50%;flex-shrink:0;width:8px;height:8px}.device-check-icon.pass{background:var(--success)}.device-check-icon.warn{background:var(--warning)}.device-check-icon.fail{background:var(--danger)}.device-check-label{color:var(--text-primary);flex:1;font-size:13px}.device-check-value{color:var(--text-secondary);font-size:13px}.ai-chat{height:calc(100vh - var(--topbar-height) - 56px);flex-direction:column;display:flex}.ai-header{flex-shrink:0;align-items:center;gap:12px;margin-bottom:12px;display:flex}.ai-header select{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius);padding:6px 10px;font-size:13px}.ai-messages{flex-direction:column;flex:1;gap:12px;padding:8px 0;display:flex;overflow-y:auto}.ai-msg{word-wrap:break-word;border-radius:12px;max-width:80%;padding:12px 16px;font-size:14px;line-height:1.6}.ai-msg.user{background:var(--accent);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.ai-msg.assistant{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-bottom-left-radius:4px;align-self:flex-start}.ai-msg pre{background:#0d1117;border-radius:6px;margin:8px 0;padding:12px;font-size:13px;overflow-x:auto}.ai-msg code{font-family:Cascadia Code,Fira Code,monospace;font-size:13px}.ai-msg p code{background:#ffffff1a;border-radius:3px;padding:2px 6px}.ai-input{border-top:1px solid var(--border);flex-shrink:0;gap:8px;padding-top:12px;display:flex}.ai-input textarea{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius);resize:none;outline:none;flex:1;min-height:44px;max-height:120px;padding:10px 14px;font-family:inherit;font-size:14px}.ai-input textarea:focus{border-color:var(--accent)}.ai-input button{background:var(--accent);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;align-self:flex-end;padding:10px 20px;font-weight:500}.ai-input button:disabled{opacity:.5;cursor:not-allowed}.ai-empty{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;display:flex}.ai-suggestions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.ai-suggest-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;border-radius:20px;padding:8px 16px;font-size:13px;transition:border-color .15s,color .15s}.ai-suggest-btn:hover{border-color:var(--accent);color:var(--accent)}.ai-thinking{gap:4px;padding:12px 16px;display:flex}.ai-thinking span{background:var(--text-muted);border-radius:50%;width:6px;height:6px;animation:1.4s infinite bounce}.ai-thinking span:nth-child(2){animation-delay:.2s}.ai-thinking span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,80%,to{transform:translateY(0)}40%{transform:translateY(-8px)}}.ai-system-prompt{margin-bottom:12px}.ai-system-prompt summary{color:var(--text-secondary);cursor:pointer;font-size:13px}.ai-system-prompt textarea{width:100%;min-height:60px;margin-top:8px}.deploy-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin-top:16px;display:grid}.deploy-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px}.deploy-card-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.deploy-card-name{color:var(--text-primary);font-size:15px;font-weight:600}.deploy-card-url{color:var(--text-muted);word-break:break-all;margin-bottom:12px;font-size:12px}.deploy-card-actions{gap:8px;display:flex}.deploy-status{border-radius:100px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;display:inline-flex}.deploy-status.live{color:var(--success);background:#22c55e26}.deploy-status.pending{color:var(--warning);background:#f59e0b26}.team-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:16px;display:grid}.team-card{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;border-radius:12px;padding:20px;transition:border-color .15s}.team-card:hover{border-color:var(--accent)}.team-card-name{color:var(--text-primary);margin-bottom:4px;font-size:16px;font-weight:600}.team-card-meta{color:var(--text-secondary);font-size:12px}.team-members{margin-top:20px}.team-member{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:8px;padding:12px;display:flex}.team-member-avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:600;display:flex}.team-member-info{flex:1}.team-member-name{color:var(--text-primary);font-size:14px;font-weight:500}.team-member-email{color:var(--text-secondary);font-size:12px}.team-invite-form{gap:8px;margin-top:12px;display:flex}.team-invite-form input{flex:1}.team-invite-form select{width:120px}.team-create-form{gap:8px;margin-bottom:20px;display:flex}.team-create-form input{flex:1}.encryption-status{align-items:center;gap:8px;margin-bottom:16px;display:flex}.encryption-badge{border-radius:100px;align-items:center;gap:4px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.encryption-badge.active{color:var(--success);background:#22c55e26}.encryption-badge.inactive{color:var(--text-muted);background:#64748b26}.encryption-info{color:var(--text-secondary);margin-bottom:16px;font-size:13px;line-height:1.6}.encryption-form{flex-direction:column;gap:12px;max-width:400px;display:flex}.sync-indicator{border-radius:100px;align-items:center;gap:4px;padding:4px 8px;font-size:11px;font-weight:500;display:flex}.sync-indicator.syncing{color:var(--accent)}.sync-indicator.synced{color:var(--success)}.sync-indicator.offline{color:var(--warning)}.sync-indicator.error{color:var(--danger)}.sync-pending{background:var(--accent);color:#fff;border-radius:100px;padding:1px 5px;font-size:10px}@keyframes sync-spin{to{transform:rotate(360deg)}}.sync-spin{animation:1s linear infinite sync-spin}.editor-layout{height:calc(100vh - var(--topbar-height));display:flex;overflow:hidden}.editor-filetree{background:var(--bg-secondary);border-right:1px solid var(--border);flex-shrink:0;width:200px;overflow-y:auto}.editor-filetree-header{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px;font-size:12px;font-weight:600;display:flex}.editor-filetree-item{color:var(--text-secondary);cursor:pointer;align-items:center;gap:6px;padding:4px 12px;font-size:13px;display:flex}.editor-filetree-item:hover{color:var(--text-primary);background:#ffffff08}.editor-filetree-item.active{background:var(--accent-subtle);color:var(--accent)}.editor-filetree-item.folder{font-weight:500}.editor-main{flex-direction:column;flex:1;min-width:0;display:flex}.editor-topbar{background:var(--bg-secondary);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:6px 12px;font-size:13px;display:flex}.editor-topbar .filepath{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.editor-topbar .save-indicator{border-radius:100px;padding:2px 8px;font-size:11px}.editor-topbar .save-indicator.saved{color:var(--success)}.editor-topbar .save-indicator.unsaved{color:var(--warning)}.editor-content{flex:1;overflow:hidden}.editor-content .cm-editor{height:100%}.editor-content .cm-scroller{overflow:auto}.editor-bottombar{background:var(--bg-secondary);border-top:1px solid var(--border);color:var(--text-muted);align-items:center;gap:16px;padding:4px 12px;font-size:11px;display:flex}.editor-ai-panel{background:var(--bg-secondary);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;width:300px;display:flex}.editor-ai-panel .ai-messages{flex:1;padding:8px;overflow-y:auto}.editor-ai-panel .ai-input{border-top:1px solid var(--border);padding:8px}.editor-ai-panel .ai-input textarea{min-height:36px;font-size:13px}.editor-empty{height:100%;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex}.editor-empty-icon{opacity:.3;font-size:48px}.editor-new-btns{gap:6px;display:flex}.editor-new-btns button{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;padding:4px 8px;font-size:11px}.editor-new-btns button:hover{color:var(--text-primary);background:#ffffff0d}.qr-section{text-align:center;border-top:1px solid var(--border);margin-top:24px;padding-top:24px}.qr-divider{color:var(--text-muted);align-items:center;gap:12px;margin:20px 0;font-size:13px;display:flex}.qr-divider:before,.qr-divider:after{content:"";background:var(--border);flex:1;height:1px}.qr-code-container{flex-direction:column;align-items:center;gap:16px;padding:20px;display:flex}.qr-code-img{background:#fff;border-radius:12px;padding:12px}.qr-timer{color:var(--text-secondary);font-size:14px}.qr-timer.expiring{color:var(--danger)}.qr-status{color:var(--text-secondary);align-items:center;gap:8px;font-size:14px;display:flex}.qr-manual{margin-top:12px}.qr-manual-code{letter-spacing:4px;color:var(--accent);background:var(--bg-primary);border-radius:var(--radius);-webkit-user-select:all;user-select:all;padding:8px 16px;font-family:monospace;font-size:18px;font-weight:700}.qr-confirm-page{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.qr-confirm-card{background:var(--bg-secondary);border:1px solid var(--border);text-align:center;border-radius:16px;max-width:400px;padding:40px}.qr-confirm-card h2{margin-bottom:12px}.qr-confirm-card p{color:var(--text-secondary);margin-bottom:24px}.qr-success{color:var(--success);margin-bottom:16px;font-size:48px}.qr-toggle-btn{border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius);cursor:pointer;background:0 0;width:100%;padding:10px 20px;font-size:14px;transition:border-color .15s,color .15s}.qr-toggle-btn:hover{border-color:var(--accent);color:var(--accent)}html[dir=rtl] .sidebar{border-right:none;border-left:1px solid var(--border);left:auto;right:0}html[dir=rtl] .main-wrapper{margin-left:0;margin-right:var(--sidebar-width)}html[dir=rtl] .sidebar-nav-item,html[dir=rtl] .topbar{flex-direction:row-reverse}html[dir=rtl] .ai-msg.user{align-self:flex-start}html[dir=rtl] .ai-msg.assistant{align-self:flex-end}.drop-zone{position:relative}.drop-zone.dragging{outline:2px dashed var(--accent);outline-offset:-4px;background:#3b82f60d}.drop-overlay{z-index:10;pointer-events:none;color:var(--accent);border-radius:var(--radius);background:#0f172acc;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute;inset:0}.paste-preview{border:1px solid var(--border);border-radius:8px;max-width:200px;max-height:150px;margin:8px 0}.paste-toast{background:var(--success);color:#fff;border-radius:var(--radius);z-index:1000;padding:8px 16px;font-size:13px;animation:.3s fadeInUp;position:fixed;bottom:20px;right:20px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.context-menu{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;min-width:180px;padding:4px;box-shadow:0 8px 24px #0006}.context-menu-item{width:100%;color:var(--text-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;padding:6px 12px;font-size:13px;display:flex}.context-menu-item:hover{background:#ffffff0d}.context-menu-item.danger{color:var(--danger)}.context-menu-item:disabled{opacity:.4;cursor:default}.context-menu-icon{text-align:center;width:18px;font-size:14px}.context-menu-shortcut{color:var(--text-muted);margin-left:auto;font-size:11px}.context-menu-divider{background:var(--border);height:1px;margin:4px 0}.search-overlay{z-index:1000;background:#0009;justify-content:center;align-items:flex-start;padding-top:15vh;display:flex;position:fixed;inset:0}.search-modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:90%;max-width:600px;max-height:60vh;display:flex;box-shadow:0 20px 60px #00000080}.search-input-wrap{border-bottom:1px solid var(--border);padding:16px}.search-input-wrap input{background:var(--bg-primary);border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:var(--radius);outline:none;padding:10px 14px;font-size:15px}.search-input-wrap input:focus{border-color:var(--accent)}.search-results{flex:1;padding:8px;overflow-y:auto}.search-result-file{border-radius:var(--radius);cursor:pointer;padding:8px}.search-result-file:hover{background:#ffffff08}.search-result-name{color:var(--accent);margin-bottom:4px;font-size:13px;font-weight:600}.search-result-match{color:var(--text-secondary);padding:2px 0;font-family:monospace;font-size:12px}.search-result-match .line-num{color:var(--text-muted);margin-right:8px}.search-empty{text-align:center;color:var(--text-muted);padding:24px;font-size:14px}.topbar-search-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;padding:6px;display:flex}.topbar-search-btn:hover{color:var(--text-primary);background:#ffffff0d}.chat-layout{height:calc(100vh - var(--topbar-height) - 56px);flex-direction:column;display:flex}.chat-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:12px 16px;display:flex}.chat-messages{flex-direction:column;flex:1;gap:8px;padding:16px;display:flex;overflow-y:auto}.chat-msg{gap:8px;max-width:80%;display:flex}.chat-msg.own{flex-direction:row-reverse;align-self:flex-end}.chat-msg-avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:12px;font-weight:600;display:flex}.chat-msg-bubble{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:8px 12px}.chat-msg.own .chat-msg-bubble{background:var(--accent);color:#fff;border-color:var(--accent)}.chat-msg-name{color:var(--text-muted);margin-bottom:2px;font-size:11px;font-weight:600}.chat-msg-text{font-size:14px;line-height:1.4}.chat-msg-time{color:var(--text-muted);margin-top:2px;font-size:10px}.chat-input{border-top:1px solid var(--border);flex-shrink:0;gap:8px;padding:12px 16px;display:flex}.chat-input textarea{resize:none;flex:1;min-height:40px;max-height:100px}.theme-toggle{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;padding:6px;display:flex}.theme-toggle:hover{color:var(--text-primary);background:#ffffff0d}.shortcuts-overlay{z-index:1000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.shortcuts-modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;width:90%;max-width:500px;padding:24px}.shortcuts-modal h2{margin-bottom:16px;font-size:18px}.shortcut-row{border-bottom:1px solid #3341554d;justify-content:space-between;padding:8px 0;display:flex}.shortcut-key{background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;padding:2px 8px;font-family:monospace;font-size:12px}.shortcut-label{color:var(--text-secondary);font-size:14px}.preview-live{color:var(--success);align-items:center;gap:4px;font-size:11px;display:inline-flex}.preview-live-dot{background:var(--success);border-radius:50%;width:6px;height:6px;animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.landing{background:var(--bg-primary);min-height:100vh}.landing-hero{text-align:center;padding:80px 20px 60px}.landing-hero h1{color:var(--text-primary);margin-bottom:16px;font-size:48px;font-weight:800}.landing-hero p{color:var(--text-secondary);max-width:600px;margin:0 auto 32px;font-size:18px}.landing-cta{justify-content:center;gap:12px;display:flex}.landing-cta a{border-radius:var(--radius);padding:12px 28px;font-size:15px;font-weight:600;text-decoration:none}.landing-cta .primary{background:var(--accent);color:#fff}.landing-cta .secondary{border:1px solid var(--border);color:var(--text-primary);background:0 0}.landing-features{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;max-width:1000px;margin:0 auto;padding:0 20px 60px;display:grid}.landing-feature{background:var(--bg-card);border:1px solid var(--border);text-align:center;border-radius:12px;padding:24px}.landing-feature-icon{margin-bottom:12px;font-size:32px}.landing-feature h3{margin-bottom:8px;font-size:16px;font-weight:600}.landing-feature p{color:var(--text-secondary);font-size:13px}.landing-pricing{max-width:1000px;margin:0 auto;padding:40px 20px 60px}.landing-pricing h2{text-align:center;margin-bottom:32px;font-size:28px}.landing-pricing-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;display:grid}.landing-price-card{background:var(--bg-card);border:1px solid var(--border);text-align:center;border-radius:12px;padding:24px}.landing-price-card.featured{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.landing-price-name{margin-bottom:8px;font-size:18px;font-weight:600}.landing-price-amount{color:var(--accent);font-size:32px;font-weight:700}.landing-price-period{color:var(--text-muted);font-size:13px}.landing-footer{text-align:center;border-top:1px solid var(--border);color:var(--text-muted);padding:40px 20px;font-size:13px}.onboarding-overlay{z-index:2000;background:#000c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.onboarding-card{background:var(--bg-secondary);border:1px solid var(--border);text-align:center;border-radius:20px;width:90%;max-width:500px;padding:48px 40px}.onboarding-icon{margin-bottom:24px;font-size:64px}.onboarding-card h2{margin-bottom:12px;font-size:24px;font-weight:700}.onboarding-card p{color:var(--text-secondary);margin-bottom:32px;font-size:15px;line-height:1.6}.onboarding-dots{justify-content:center;gap:8px;margin-bottom:24px;display:flex}.onboarding-dot{background:var(--border);border-radius:50%;width:8px;height:8px}.onboarding-dot.active{background:var(--accent);border-radius:4px;width:24px}.onboarding-actions{justify-content:center;gap:12px;display:flex}.onboarding-skip{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:8px 16px;font-size:13px}.deploy-my-projects{margin-bottom:32px}.deploy-project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:12px;padding:20px;display:flex}.deploy-project-info{flex:1}.deploy-project-name{margin-bottom:4px;font-size:15px;font-weight:600}.deploy-project-url{color:var(--accent);font-size:12px}.deploy-project-url a{color:var(--accent);text-decoration:underline}.preview-banner{background:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:100;justify-content:space-between;align-items:center;padding:8px 16px;font-size:13px;display:flex;position:fixed;top:0;left:0;right:0}.preview-frame{border:none;width:100%;height:calc(100vh - 40px);position:fixed;inset:40px 0 0}.wizard-overlay{z-index:1000;background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.wizard-modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:16px;width:90%;max-width:700px;max-height:80vh;overflow-y:auto}.wizard-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.wizard-header h2{font-size:18px;font-weight:600}.wizard-body{padding:24px}.wizard-steps{gap:8px;margin-bottom:24px;display:flex}.wizard-step{border-radius:100px;padding:6px 16px;font-size:13px;font-weight:500}.wizard-step.active{background:var(--accent);color:#fff}.wizard-step.done{background:var(--success);color:#fff}.wizard-step.pending{background:var(--bg-primary);color:var(--text-muted);border:1px solid var(--border)}.template-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.template-card{background:var(--bg-primary);border:2px solid var(--border);cursor:pointer;text-align:center;border-radius:12px;padding:16px;transition:border-color .15s,transform .15s}.template-card:hover{border-color:var(--accent);transform:translateY(-2px)}.template-card.selected{border-color:var(--accent);background:var(--accent-subtle)}.template-card-icon{margin-bottom:8px;font-size:32px}.template-card-name{margin-bottom:4px;font-size:14px;font-weight:600}.template-card-desc{color:var(--text-secondary);font-size:12px}.wizard-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:16px 24px;display:flex}.projects-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:32px;display:grid}.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px;transition:border-color .15s}.project-card:hover{border-color:var(--accent)}.project-card-name{margin-bottom:8px;font-size:16px;font-weight:600}.project-card-meta{color:var(--text-secondary);gap:16px;margin-bottom:16px;font-size:12px;display:flex}.project-card-actions{gap:8px;display:flex}.projects-empty{text-align:center;padding:60px 20px}.projects-empty-icon{opacity:.3;margin-bottom:16px;font-size:64px}.projects-empty h3{margin-bottom:8px}.projects-empty p{color:var(--text-secondary);margin-bottom:24px}.quick-access{margin-top:16px}.quick-access h3{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;font-size:14px;font-weight:600}.quick-access-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.quick-access-card{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;color:inherit;border-radius:8px;align-items:center;gap:10px;padding:12px 16px;font-size:13px;text-decoration:none;transition:border-color .15s;display:flex}.quick-access-card:hover{border-color:var(--accent)}@media (width<=768px){.sidebar{transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0)}.sidebar-overlay.visible{display:block}.main-wrapper{margin-left:0}.topbar-hamburger{justify-content:center;align-items:center;display:flex}.main-content{padding:20px 16px}.module-grid{grid-template-columns:1fr}.editor-filetree,.editor-ai-panel{display:none}}@media (width<=480px){.module-grid{grid-template-columns:1fr}}
