@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2c55a0e60120577a-s.2a48534a.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.18a48cbc.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ad66f9afd8947f86-s.7a40eb73.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5476f68d60460930-s.c995e352.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.76dcb0b2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1bffadaabf893a1e-s.7cd81963.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.3a6ba036.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_fe8b9d92-module__LINzvG__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_fe8b9d92-module__LINzvG__variable{--font-inter:"Inter","Inter Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.f2220059.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.f6f1950f.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.bd5f4d11.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.51c18f09.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.23358719.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.15008bfb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_7d65b77b-module__VxV-Ta__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_7d65b77b-module__VxV-Ta__variable{--font-jetbrains-mono:"JetBrains Mono","JetBrains Mono Fallback"}
*{box-sizing:border-box;margin:0;padding:0}:root{--color-primary:#1e3a8a;--color-primary-light:#3b82f6;--color-primary-dark:#1e40af;--color-accent:#10b981;--color-accent-light:#34d399;--color-bg:#f8fafc;--color-bg-secondary:#f1f5f9;--color-bg-white:#fff;--color-text:#1e293b;--color-text-secondary:#64748b;--color-text-muted:#94a3b8;--color-border:#e2e8f0;--color-border-dark:#cbd5e1;--font-sans:var(--font-inter),system-ui,-apple-system,sans-serif;--font-mono:var(--font-jetbrains-mono),"SF Mono",Consolas,monospace;--header-height:64px;--sidebar-width:240px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a;--transition-fast:.15s ease;--transition-normal:.25s ease;--color-danger:#ef4444;--color-warning:#f59e0b;--color-success:#10b981}[data-theme=dark]{--color-primary:#3b82f6;--color-primary-light:#60a5fa;--color-primary-dark:#2563eb;--color-accent:#34d399;--color-accent-light:#6ee7b7;--color-bg:#0f172a;--color-bg-secondary:#1e293b;--color-bg-white:#1e293b;--color-text:#f1f5f9;--color-text-secondary:#94a3b8;--color-text-muted:#64748b;--color-border:#334155;--color-border-dark:#475569;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px -1px #0006;--shadow-lg:0 10px 15px -3px #0006}[data-theme=ocean]{--color-primary:#0891b2;--color-primary-light:#22d3ee;--color-primary-dark:#0e7490;--color-accent:#f59e0b;--color-accent-light:#fbbf24;--color-bg:#ecfeff;--color-bg-secondary:#cffafe;--color-bg-white:#fff;--color-text:#164e63;--color-text-secondary:#0e7490;--color-text-muted:#67e8f9;--color-border:#a5f3fc;--color-border-dark:#67e8f9}[data-theme=ocean-dark]{--color-primary:#22d3ee;--color-primary-light:#67e8f9;--color-primary-dark:#06b6d4;--color-accent:#fbbf24;--color-accent-light:#fcd34d;--color-bg:#083344;--color-bg-secondary:#164e63;--color-bg-white:#155e75;--color-text:#ecfeff;--color-text-secondary:#a5f3fc;--color-text-muted:#67e8f9;--color-border:#0e7490;--color-border-dark:#0891b2;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px -1px #0006;--shadow-lg:0 10px 15px -3px #0006}[data-theme=forest]{--color-primary:#059669;--color-primary-light:#10b981;--color-primary-dark:#047857;--color-accent:#d97706;--color-accent-light:#f59e0b;--color-bg:#ecfdf5;--color-bg-secondary:#d1fae5;--color-bg-white:#fff;--color-text:#064e3b;--color-text-secondary:#047857;--color-text-muted:#6ee7b7;--color-border:#a7f3d0;--color-border-dark:#6ee7b7}[data-theme=forest-dark]{--color-primary:#10b981;--color-primary-light:#34d399;--color-primary-dark:#059669;--color-accent:#f59e0b;--color-accent-light:#fbbf24;--color-bg:#022c22;--color-bg-secondary:#064e3b;--color-bg-white:#065f46;--color-text:#ecfdf5;--color-text-secondary:#a7f3d0;--color-text-muted:#6ee7b7;--color-border:#047857;--color-border-dark:#059669;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px -1px #0006;--shadow-lg:0 10px 15px -3px #0006}[data-theme=sunset]{--color-primary:#ea580c;--color-primary-light:#f97316;--color-primary-dark:#c2410c;--color-accent:#0891b2;--color-accent-light:#22d3ee;--color-bg:#fff7ed;--color-bg-secondary:#ffedd5;--color-bg-white:#fff;--color-text:#7c2d12;--color-text-secondary:#c2410c;--color-text-muted:#fdba74;--color-border:#fed7aa;--color-border-dark:#fdba74}[data-theme=sunset-dark]{--color-primary:#f97316;--color-primary-light:#fb923c;--color-primary-dark:#ea580c;--color-accent:#22d3ee;--color-accent-light:#67e8f9;--color-bg:#431407;--color-bg-secondary:#7c2d12;--color-bg-white:#9a3412;--color-text:#fff7ed;--color-text-secondary:#fed7aa;--color-text-muted:#fdba74;--color-border:#c2410c;--color-border-dark:#ea580c;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px -1px #0006;--shadow-lg:0 10px 15px -3px #0006}[data-theme=lavender]{--color-primary:#7c3aed;--color-primary-light:#8b5cf6;--color-primary-dark:#6d28d9;--color-accent:#059669;--color-accent-light:#10b981;--color-bg:#f5f3ff;--color-bg-secondary:#ede9fe;--color-bg-white:#fff;--color-text:#4c1d95;--color-text-secondary:#6d28d9;--color-text-muted:#c4b5fd;--color-border:#ddd6fe;--color-border-dark:#c4b5fd}[data-theme=lavender-dark]{--color-primary:#8b5cf6;--color-primary-light:#a78bfa;--color-primary-dark:#7c3aed;--color-accent:#10b981;--color-accent-light:#34d399;--color-bg:#2e1065;--color-bg-secondary:#4c1d95;--color-bg-white:#5b21b6;--color-text:#f5f3ff;--color-text-secondary:#ddd6fe;--color-text-muted:#c4b5fd;--color-border:#6d28d9;--color-border-dark:#7c3aed;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px -1px #0006;--shadow-lg:0 10px 15px -3px #0006}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border-dark);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}::selection{background:var(--color-primary-light);color:#fff}a{color:var(--color-primary-light);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary);text-decoration:underline}button{cursor:pointer;font-family:inherit}button:disabled{cursor:not-allowed;opacity:.5}code{font-family:var(--font-mono)}.app-shell{min-height:100vh;padding-top:var(--header-height);display:flex}.app-content{margin-left:var(--sidebar-width);min-height:calc(100vh - var(--header-height));flex-direction:column;flex:1;padding:1.5rem;display:flex}.app-content-fullscreen{min-height:calc(100vh - var(--header-height));flex:1;margin-left:0;padding:0}.app-header{height:var(--header-height);background:linear-gradient(135deg,var(--color-primary)0%,var(--color-primary-dark)100%);color:#fff;box-shadow:var(--shadow-md);z-index:100;justify-content:space-between;align-items:center;padding:0 1.5rem;display:flex;position:fixed;top:0;left:0;right:0}.header-left{align-items:center;gap:1rem;display:flex}.header-logo{white-space:nowrap;font-size:1.25rem;font-weight:700}.header-right{align-items:center;gap:1.5rem;display:flex}.theme-selector{align-items:center;display:flex;position:relative}.theme-icon{pointer-events:none;z-index:1;font-size:1rem;position:absolute;left:10px}.theme-select{appearance:none;color:#fff;cursor:pointer;transition:all var(--transition-fast);background:#ffffff1a;border:1px solid #fff3;border-radius:8px;min-width:140px;padding:.5rem 2rem .5rem 2.25rem;font-family:inherit;font-size:.875rem}.theme-select:hover{background:#fff3}.theme-select:focus{outline:none;box-shadow:0 0 0 2px #ffffff4d}.theme-select option{background:var(--color-bg-secondary);color:var(--color-text)}.header-auth{align-items:center;gap:.5rem;display:flex}.header-user{opacity:.9;text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:.875rem;overflow:hidden}.header-btn{color:#fff;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;padding:.4rem .75rem;font-family:inherit;font-size:.8125rem}.header-btn:hover{background:#fff3}.app-sidebar{top:var(--header-height);width:var(--sidebar-width);background:var(--color-bg-white);border-right:1px solid var(--color-border);z-index:50;padding:1rem 0;position:fixed;bottom:0;left:0;overflow-y:auto}.sidebar-section{margin-bottom:1.5rem}.sidebar-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.5rem;padding:0 1rem;font-size:.6875rem;font-weight:600}.sidebar-nav{list-style:none}.sidebar-link{color:var(--color-text-secondary);transition:all var(--transition-fast);border-left:3px solid #0000;align-items:center;gap:.75rem;padding:.5rem 1rem;font-size:.875rem;text-decoration:none;display:flex}.sidebar-link:hover{background:var(--color-bg-secondary);color:var(--color-text);text-decoration:none}.sidebar-link-active{color:var(--color-primary-light);background:var(--color-bg-secondary);border-left-color:var(--color-primary-light);font-weight:500}.sidebar-icon{flex-shrink:0;width:18px;height:18px}.app-footer{color:var(--color-text-muted);border-top:1px solid var(--color-border);justify-content:center;align-items:center;gap:.5rem;margin-top:auto;padding:1rem;font-size:.8125rem;display:flex}.footer-link{font-size:inherit;color:var(--color-text-secondary);cursor:pointer;transition:color var(--transition-fast);background:0 0;border:none;padding:.25rem .5rem}.footer-link:hover{color:var(--color-primary-light);text-decoration:underline}.footer-separator{color:var(--color-border-dark)}.page-loading{color:var(--color-text-secondary);justify-content:center;align-items:center;padding:4rem;display:flex}.empty-state{text-align:center;color:var(--color-text-muted);padding:2rem;font-size:.875rem}.error-banner{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:.75rem 1rem;font-size:.875rem}[data-theme=dark] .error-banner,[data-theme=ocean-dark] .error-banner,[data-theme=forest-dark] .error-banner,[data-theme=sunset-dark] .error-banner,[data-theme=lavender-dark] .error-banner{color:#fca5a5;background:#ef44441a;border-color:#ef44444d}.btn{border:1px solid var(--color-border);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem;font-family:inherit;font-size:.875rem;font-weight:500;display:inline-flex}.btn-primary{background:var(--color-primary-light);border-color:var(--color-primary-light);color:#fff}.btn-primary:hover{background:var(--color-primary);border-color:var(--color-primary)}.btn-secondary{background:var(--color-bg-white);color:var(--color-text)}.btn-secondary:hover{background:var(--color-bg-secondary)}.btn-danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn-danger:hover{opacity:.9}.btn-warning{background:var(--color-warning);border-color:var(--color-warning);color:#fff}.btn-warning:hover{opacity:.9}.btn-small{padding:.25rem .5rem;font-size:.75rem}.data-table{border-collapse:collapse;width:100%;font-size:.875rem}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);border-bottom:2px solid var(--color-border);padding:.75rem 1rem;font-size:.75rem;font-weight:600}.data-table td{border-bottom:1px solid var(--color-border);vertical-align:middle;padding:.75rem 1rem}.data-table tbody tr:hover{background:var(--color-bg-secondary)}.data-table .actions{gap:.5rem;display:flex}.id-link{font-family:var(--font-mono);color:var(--color-primary-light);font-size:.8125rem}.id-link:hover{text-decoration:underline}.badge{text-transform:uppercase;letter-spacing:.02em;border-radius:9999px;padding:2px 8px;font-size:.6875rem;font-weight:600;display:inline-block}.badge-private{color:#1e40af;background:#dbeafe}.badge-shared_observe{color:#065f46;background:#d1fae5}.badge-shared_collab{color:#92400e;background:#fef3c7}.badge-exam{color:#9d174d;background:#fce7f3}.badge-engine-mysql{color:#1e40af;background:#dbeafe}.badge-engine-postgres,.badge-engine-mongodb{color:#065f46;background:#d1fae5}.status{align-items:center;gap:.375rem;font-size:.75rem;font-weight:500;display:inline-flex}.status:before{content:"";border-radius:50%;width:6px;height:6px}.status-running:before{background:var(--color-success)}.status-creating:before{background:var(--color-warning)}.status-stopped:before{background:var(--color-text-muted)}.status-error:before{background:var(--color-danger)}.form-select{appearance:none;border:1px solid var(--color-border);background:var(--color-bg-white);color:var(--color-text);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;border-radius:8px;padding:.5rem 2rem .5rem .75rem;font-family:inherit;font-size:.875rem}.form-select:focus{border-color:var(--color-primary-light);outline:none;box-shadow:0 0 0 2px #3b82f626}.section-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.section-header h3{color:var(--color-text);font-size:1rem;font-weight:600}.section-link{color:var(--color-primary-light);font-size:.8125rem}.dashboard{flex-direction:column;gap:1.5rem;display:flex}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;display:grid}.stat-card{background:var(--color-bg-white);border:1px solid var(--color-border);text-align:center;border-radius:12px;padding:1.25rem}.stat-value{color:var(--color-primary-light);font-size:2rem;font-weight:700}.stat-label{color:var(--color-text-secondary);margin-top:.25rem;font-size:.75rem}.dashboard-grid{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}.dashboard-section{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1.25rem}.activity-feed{flex-direction:column;gap:.5rem;max-height:400px;display:flex;overflow-y:auto}.activity-entry{background:var(--color-bg-secondary);border-radius:6px;padding:.5rem}.activity-meta{color:var(--color-text-secondary);gap:.75rem;margin-bottom:.25rem;font-size:.75rem;display:flex}.activity-user{font-weight:500;font-family:var(--font-mono)}.activity-template{color:var(--color-text-muted)}.activity-time{margin-left:auto}.activity-command{font-family:var(--font-mono);color:var(--color-text);word-break:break-all;font-size:.8125rem}.sessions-page{flex-direction:column;gap:1.5rem;display:flex}.create-session{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1.25rem}.create-session h3{margin-bottom:.75rem;font-size:1rem;font-weight:600}.create-form{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.sessions-list{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1.25rem}.session-detail{height:calc(100vh - var(--header-height) - 3rem);flex-direction:column;gap:1rem;display:flex}.session-info-bar{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:10px;flex-shrink:0;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.info-items{gap:1.5rem;font-size:.8125rem;display:flex}.info-item{align-items:center;gap:.375rem;display:flex}.info-actions{gap:.5rem;display:flex}.session-content{flex:1;grid-template-columns:1fr 320px;gap:1rem;min-height:0;display:grid}.console-panel{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.panel-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:.5rem 1rem;font-size:.8125rem;font-weight:600;display:flex}.terminal-container{background:#0d1117;flex:1;min-height:300px;padding:.5rem}.activity-panel{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.activity-count{color:var(--color-text-muted);font-weight:400}.command-list{flex:1;padding:.5rem;overflow-y:auto}.command-entry{border-radius:4px;gap:.5rem;padding:.375rem .5rem;font-size:.8125rem;display:flex}.command-entry:hover{background:var(--color-bg-secondary)}.command-time{color:var(--color-text-muted);font-family:var(--font-mono);flex-shrink:0;font-size:.75rem}.command-text{font-family:var(--font-mono);word-break:break-all}.datalab-page{flex-direction:column;gap:1.5rem;display:flex}.datalab-sessions{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1.25rem}.row-selected{background:var(--color-bg-secondary)!important}.query-log-section{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1.25rem}.log-session{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.8125rem}.query-log{flex-direction:column;gap:.5rem;max-height:500px;display:flex;overflow-y:auto}.query-entry{background:var(--color-bg-secondary);border-radius:6px;padding:.5rem .75rem}.query-entry.query-error{border-left:3px solid var(--color-danger)}.query-meta{color:var(--color-text-secondary);gap:1rem;margin-bottom:.25rem;font-size:.75rem;display:flex}.query-user{font-family:var(--font-mono);font-weight:500}.query-time{color:var(--color-text-muted)}.query-duration{color:var(--color-accent);margin-left:auto}.query-text{font-family:var(--font-mono);word-break:break-all;font-size:.8125rem}.query-error-text{color:var(--color-danger);margin-top:.25rem;font-size:.8125rem}.progress-page{flex-direction:column;gap:1.5rem;display:flex}.progress-header{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.manuscript-selector{align-items:center;gap:.75rem;font-size:.875rem;font-weight:500;display:flex}.progress-content{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1.25rem}.progress-bar-cell{align-items:center;gap:.75rem;display:flex}.progress-bar-bg{background:var(--color-bg-secondary);border-radius:3px;width:120px;height:6px;overflow:hidden}.progress-bar-fill{background:var(--color-accent);height:100%;transition:width var(--transition-normal);border-radius:3px}.participant-terminal{height:calc(100vh - var(--header-height) - 3rem);flex-direction:column;display:flex}.terminal-setup{flex-direction:column;gap:1.5rem;max-width:600px;margin:2rem auto;display:flex}.terminal-setup-section{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1.5rem}.terminal-setup-section h3{margin-bottom:1rem;font-size:1rem;font-weight:600}.terminal-create-form{align-items:center;gap:.75rem;display:flex}.my-sessions-list{flex-direction:column;gap:.5rem;display:flex}.my-session-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);cursor:pointer;color:var(--color-text);text-align:left;width:100%;transition:all var(--transition-fast);border-radius:8px;align-items:center;gap:1rem;padding:.75rem 1rem;font-family:inherit;font-size:.875rem;display:flex}.my-session-card:hover{border-color:var(--color-primary-light)}.my-session-template{font-weight:500}.my-session-id{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.8125rem}.my-session-status{margin-left:auto;font-size:.75rem}.terminal-active{flex-direction:column;flex:1;display:flex}.terminal-active-bar{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:8px;flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:.75rem;padding:.5rem 1rem;display:flex}.terminal-active-id{font-size:.875rem}.terminal-active-id code{font-family:var(--font-mono);color:var(--color-primary-light)}.participant-datalab{height:calc(100vh - var(--header-height) - 3rem);grid-template-columns:280px 1fr;gap:1rem;display:grid}.datalab-sidebar-panel{flex-direction:column;gap:1rem;display:flex;overflow-y:auto}.datalab-create{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1rem}.datalab-create h3{margin-bottom:.75rem;font-size:.9375rem;font-weight:600}.datalab-create-form{flex-direction:column;gap:.5rem;display:flex}.datalab-sessions-list{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;padding:1rem}.datalab-sessions-list h3{margin-bottom:.75rem;font-size:.9375rem;font-weight:600}.datalab-session-card{border-radius:6px;align-items:center;gap:.5rem;margin-bottom:.5rem;padding:.5rem;display:flex}.datalab-session-card-active{background:var(--color-bg-secondary);border-left:3px solid var(--color-primary-light)}.datalab-session-card-main{cursor:pointer;color:var(--color-text);background:0 0;border:none;flex:1;align-items:center;gap:.5rem;padding:0;font-family:inherit;font-size:.8125rem;display:flex}.datalab-session-id{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.75rem}.datalab-session-tpl{color:var(--color-text-secondary);font-size:.75rem}.datalab-query-panel{background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.query-header{border-bottom:1px solid var(--color-border);align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.8125rem;display:flex}.query-session-id{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.75rem}.query-template{color:var(--color-text-secondary);font-size:.75rem}.query-results{flex:1;padding:.75rem;overflow-y:auto}.query-result-entry{border:1px solid var(--color-border);border-radius:8px;margin-bottom:1rem;overflow:hidden}.query-result-error{border-color:var(--color-danger)}.query-result-sql{background:var(--color-bg-secondary);font-family:var(--font-mono);justify-content:space-between;align-items:center;padding:.5rem .75rem;font-size:.8125rem;display:flex}.query-result-time{color:var(--color-text-muted);font-size:.6875rem}.query-result-err{color:var(--color-danger);padding:.5rem .75rem;font-size:.8125rem}.query-result-ok{color:var(--color-accent);padding:.5rem .75rem;font-size:.8125rem}.query-result-table-wrapper{overflow-x:auto}.query-result-table{border-collapse:collapse;width:100%;font-size:.8125rem;font-family:var(--font-mono)}.query-result-table th{text-align:left;background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);padding:.375rem .75rem;font-weight:600}.query-result-table td{border-bottom:1px solid var(--color-border);padding:.375rem .75rem}.query-input-area{border-top:1px solid var(--color-border);align-items:flex-end;gap:.75rem;padding:.75rem;display:flex}.query-input{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);font-family:var(--font-mono);resize:vertical;border-radius:8px;flex:1;padding:.5rem .75rem;font-size:.8125rem}.query-input:focus{border-color:var(--color-primary-light);outline:none}.query-execute-btn{flex-shrink:0}.datalab-empty{color:var(--color-text-muted);flex:1;justify-content:center;align-items:center;font-size:.875rem;display:flex}.board-view{flex-direction:column;height:100vh;display:flex}.board-layout{flex:1;min-height:0;display:flex}.board-sidebar{border-right:1px solid var(--color-border);background:var(--color-bg-white);flex-direction:column;width:320px;display:flex;overflow-y:auto}.board-main{flex-direction:column;flex:1;min-width:0;display:flex}.status-bar{background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:.5rem 1rem;display:flex}.status-bar-left{align-items:center;gap:.75rem;font-size:.8125rem;display:flex}.status-indicator{border-radius:50%;width:8px;height:8px}.status-running{background:var(--color-success);box-shadow:0 0 4px var(--color-success)}.status-booting{background:var(--color-warning);animation:1.5s infinite pulse}.status-disconnected{background:var(--color-text-muted)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.status-label{text-transform:capitalize;font-weight:500}.status-sep{background:var(--color-border);width:1px;height:16px}.status-template{color:var(--color-text-secondary)}.status-session{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.75rem}.status-bar-error{color:var(--color-danger);font-size:.8125rem}.status-bar-right{gap:.5rem;display:flex}.status-btn{border:1px solid var(--color-border);background:var(--color-bg-white);color:var(--color-text);cursor:pointer;transition:all var(--transition-fast);border-radius:6px;align-items:center;gap:.375rem;padding:.25rem .625rem;font-family:inherit;font-size:.75rem;display:inline-flex}.status-btn:hover{background:var(--color-bg-secondary)}.status-btn-danger{border-color:var(--color-danger);color:var(--color-danger)}.status-btn-danger:hover{background:var(--color-danger);color:#fff}.gpio-panel{border-bottom:1px solid var(--color-border);padding:1rem}.panel-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin-bottom:.75rem;font-size:.75rem;font-weight:600}.gpio-lines{flex-direction:column;gap:.625rem;display:flex}.gpio-line{align-items:center;gap:.75rem;display:flex}.gpio-label{color:var(--color-text);font-size:.8125rem}.gpio-led{background:var(--color-bg-secondary);border:2px solid var(--color-border);width:16px;height:16px;transition:all var(--transition-fast);border-radius:50%}.gpio-led-on{background:var(--led-color,#22c55e);border-color:var(--led-color,#22c55e);box-shadow:0 0 8px var(--led-color,#22c55e)}.gpio-button{border:1px solid var(--color-border);background:var(--color-bg-white);color:var(--color-text);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;border-radius:6px;padding:.25rem .75rem;font-family:inherit;font-size:.8125rem}.gpio-button:active,.gpio-button-active{background:var(--color-primary-light);border-color:var(--color-primary-light);color:#fff}.gpio-switch{cursor:pointer;background:0 0;border:none;padding:0}.gpio-switch-track{background:var(--color-border-dark);width:36px;height:20px;transition:background var(--transition-fast);border-radius:10px;display:block;position:relative}.gpio-switch-on .gpio-switch-track{background:var(--color-primary-light)}.gpio-switch-thumb{width:16px;height:16px;transition:transform var(--transition-fast);background:#fff;border-radius:50%;display:block;position:absolute;top:2px;left:2px}.gpio-switch-on .gpio-switch-thumb{transform:translate(16px)}.gpio-slider{background:var(--color-bg-secondary);border-radius:4px;flex:1;height:20px;position:relative;overflow:hidden}.gpio-slider-fill{background:var(--color-primary-light);height:100%;transition:width var(--transition-fast);border-radius:4px}.gpio-slider-value{font-size:.6875rem;font-family:var(--font-mono);color:var(--color-text);position:absolute;top:50%;right:6px;transform:translateY(-50%)}.i2c-panel{border-bottom:1px solid var(--color-border);padding:1rem}.i2c-device{margin-bottom:.5rem}.i2c-device-header{cursor:pointer;width:100%;color:var(--color-text);text-align:left;background:0 0;border:none;align-items:center;gap:.5rem;padding:.375rem 0;font-family:inherit;font-size:.8125rem;display:flex}.i2c-chevron{transition:transform var(--transition-fast);color:var(--color-text-muted)}.i2c-chevron-open{transform:rotate(90deg)}.i2c-device-addr{font-family:var(--font-mono);color:var(--color-primary-light);font-weight:600}.i2c-device-label{color:var(--color-text-secondary)}.i2c-registers{padding-left:1.25rem}.i2c-reg-header{text-transform:uppercase;color:var(--color-text-muted);grid-template-columns:48px 1fr 1fr;gap:.5rem;padding:.25rem 0;font-size:.6875rem;font-weight:600;display:grid}.i2c-reg-row{grid-template-columns:48px 1fr 1fr;align-items:center;gap:.5rem;padding:.25rem 0;font-size:.8125rem;display:grid}.i2c-reg-addr{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.75rem}.i2c-reg-value{align-items:center;gap:.375rem;display:flex}.i2c-hex-value{font-family:var(--font-mono);cursor:pointer;transition:background var(--transition-fast);border-radius:3px;padding:1px 4px}.i2c-hex-value:hover{background:var(--color-bg-secondary)}.i2c-edit-input{width:80px;font-family:var(--font-mono);border:1px solid var(--color-primary-light);background:var(--color-bg);color:var(--color-text);border-radius:3px;padding:2px 4px;font-size:.8125rem}.i2c-edit-input:focus{outline:none}.i2c-decoded{color:var(--color-accent);font-size:.75rem}.i2c-reg-label{color:var(--color-text-secondary);font-size:.75rem}.console-terminal{flex-direction:column;flex:1;min-height:0;display:flex}.console-terminal-header{border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary);flex-shrink:0;align-items:center;padding:.5rem 1rem;font-size:.8125rem;font-weight:600;display:flex}.console-terminal-container{background:#0d1117;flex:1;min-height:200px;padding:.5rem}.uart-terminal{border-top:1px solid var(--color-border);flex-direction:column;flex-shrink:0;height:200px;display:flex}.uart-terminal-header{border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary);justify-content:space-between;align-items:center;padding:.375rem 1rem;font-size:.8125rem;font-weight:600;display:flex}.uart-baud{color:var(--color-text-muted);font-size:.75rem;font-weight:400;font-family:var(--font-mono)}.uart-log{font-family:var(--font-mono);flex:1;padding:.5rem;font-size:.8125rem;overflow-y:auto}.uart-entry{gap:.5rem;padding:1px 0;display:flex}.uart-dir{width:20px;font-size:.6875rem;font-weight:600}.uart-rx .uart-dir{color:var(--color-accent)}.uart-tx .uart-dir{color:var(--color-primary-light)}.uart-data{word-break:break-all}.uart-input-row{border-top:1px solid var(--color-border);gap:.5rem;padding:.375rem .5rem;display:flex}.uart-input{border:1px solid var(--color-border);font-family:var(--font-mono);background:var(--color-bg);color:var(--color-text);border-radius:6px;flex:1;padding:.375rem .625rem;font-size:.8125rem}.uart-input:focus{border-color:var(--color-primary-light);outline:none}.uart-send-btn{border:1px solid var(--color-border);background:var(--color-primary-light);color:#fff;cursor:pointer;border-radius:6px;padding:.375rem .75rem;font-family:inherit;font-size:.8125rem}.uart-send-btn:hover{background:var(--color-primary)}.board-session-setup{max-width:800px;margin:2rem auto;padding:0 1rem}.session-setup-error{color:var(--color-danger);background:#ef44441a;border:1px solid #ef44444d;border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem;font-size:.875rem}.session-setup-loading{text-align:center;color:var(--color-text-secondary);padding:4rem}.platform-tabs{gap:.5rem;margin-bottom:1.5rem;display:flex}.platform-tab{border:1px solid var(--color-border);background:var(--color-bg-white);color:var(--color-text);cursor:pointer;transition:all var(--transition-fast);border-radius:8px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-family:inherit;font-size:.875rem;display:flex}.platform-tab--active{border-color:var(--tab-color,var(--color-primary-light));background:var(--color-bg-secondary)}.platform-tab-dot{border-radius:50%;width:8px;height:8px}.templates-title{margin-bottom:1rem;font-size:1.125rem;font-weight:600}.templates-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;display:grid}.template-card{border:1px solid var(--color-border);background:var(--color-bg-white);cursor:pointer;transition:all var(--transition-fast);color:var(--color-text);border-radius:12px;flex-direction:column;align-items:center;gap:.75rem;padding:1.5rem 1rem;font-family:inherit;display:flex;position:relative}.template-card:hover{border-color:var(--card-accent,var(--color-primary-light));box-shadow:var(--shadow-md)}.template-card-icon{width:48px;height:48px;color:var(--card-accent,var(--color-primary-light))}.template-card-icon svg{width:100%;height:100%}.template-card-name{text-align:center;font-size:.9375rem;font-weight:500}.template-card-spinner{border:2px solid var(--color-border);border-top-color:var(--card-accent,var(--color-primary-light));border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin;position:absolute;top:8px;right:8px}@keyframes spin{to{transform:rotate(360deg)}}.session-table-section{margin-top:2rem}.session-table-title{margin-bottom:1rem;font-size:1rem;font-weight:600}.session-table-wrapper{border:1px solid var(--color-border);border-radius:12px;overflow:hidden}.session-table{border-collapse:collapse;width:100%;font-size:.875rem}.session-table th{text-align:left;text-transform:uppercase;color:var(--color-text-secondary);background:var(--color-bg-secondary);padding:.75rem 1rem;font-size:.75rem;font-weight:600}.session-table td{border-top:1px solid var(--color-border);padding:.75rem 1rem}.session-table-board{align-items:center;gap:.5rem;display:flex}.session-table-platform-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.session-table-id{font-family:var(--font-mono);color:var(--color-text-muted);font-size:.8125rem}.session-table-status{font-size:.75rem;font-weight:500}.session-table-status--running{color:var(--color-success)}.session-table-status--starting{color:var(--color-warning)}.session-table-age{color:var(--color-text-secondary);font-size:.8125rem}.session-table-actions{gap:.5rem;display:flex}.session-table-connect{border:1px solid var(--color-primary-light);color:var(--color-primary-light);cursor:pointer;transition:all var(--transition-fast);background:0 0;border-radius:6px;padding:.25rem .5rem;font-family:inherit;font-size:.75rem}.session-table-connect:hover{background:var(--color-primary-light);color:#fff}.session-table-delete{border:1px solid var(--color-danger);color:var(--color-danger);cursor:pointer;transition:all var(--transition-fast);background:0 0;border-radius:6px;padding:.25rem .5rem;font-family:inherit;font-size:.75rem}.session-table-delete:hover{background:var(--color-danger);color:#fff}.loading-screen{height:50vh;color:var(--color-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex}.loading-spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary-light);border-radius:50%;width:32px;height:32px;animation:.6s linear infinite spin}.role-dispatcher{min-height:calc(100vh - var(--header-height) - 4rem);flex-direction:column;justify-content:center;align-items:center;gap:2rem;padding:4rem 2rem;display:flex}.role-dispatcher h2{font-size:1.5rem;font-weight:600}.role-cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;width:100%;max-width:640px;display:grid}.role-card{border:1px solid var(--color-border);background:var(--color-bg-white);color:var(--color-text);transition:all var(--transition-fast);border-radius:12px;flex-direction:column;align-items:center;gap:.75rem;padding:2rem 1.5rem;text-decoration:none;display:flex}.role-card:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow-md);text-decoration:none}.role-card-icon{font-size:2rem}.role-card-title{font-size:1.125rem;font-weight:600}.role-card-desc{color:var(--color-text-secondary);text-align:center;font-size:.8125rem}@media (max-width:1024px){.dashboard-grid,.session-content{grid-template-columns:1fr}.participant-datalab{grid-template-columns:1fr;height:auto}.board-sidebar{width:260px}}@media (max-width:768px){:root{--header-height:56px;--sidebar-width:0px}.app-sidebar{display:none}.app-content{margin-left:0;padding:1rem}.app-header{padding:0 .75rem}.header-right{gap:.5rem}.header-user{display:none}.theme-select{min-width:100px;font-size:.8125rem}.board-layout{flex-direction:column}.board-sidebar{border-right:none;border-bottom:1px solid var(--color-border);width:100%;max-height:40vh}}
