@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Geist:wght@400;500;600;700;800&display=swap";:root{--bg-primary:#0a0a08;--bg-secondary:#121210;--bg-tertiary:#1c1c18;--bg-card:#0e0e0c;--border:#2a2a21;--accent:#c8f04a;--accent-hover:#d6f56e;--accent-dim:#aacb3e;--accent-secondary:#8a9a4e;--on-accent:#0a0a08;--text-primary:#ece8de;--text-secondary:#a8a294;--text-muted:#8c8677;--success:#10b981;--warning:#f5a623;--error:#ef4444;--info:#7d93b3;--avatar-1:#c8f04a;--avatar-2:#8b5cf6;--avatar-3:#10b981;--avatar-4:#f59e0b;--avatar-5:#ef4444;--avatar-6:#ec4899;--shadow-sm:0 4px 16px #00000059;--shadow-md:0 8px 28px #00000073;--shadow-lg:0 18px 50px #0000008c;--overlay:#0009;--sp-2:2px;--sp-4:4px;--sp-6:6px;--sp-8:8px;--sp-10:10px;--sp-12:12px;--sp-14:14px;--sp-16:16px;--sp-20:20px;--sp-24:24px;--sp-32:32px;--sp-40:40px;--sp-48:48px;--sp-64:64px;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:999px;--ease:cubic-bezier(.4, 0, .2, 1);--dur-fast:.12s;--dur-base:.16s;--focus-width:2px;--focus-color:var(--accent)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg-primary);height:100%;color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Geist,system-ui,Segoe UI,Roboto,sans-serif;font-size:14px}button,input,select,textarea{color:inherit;background:0 0;border:none;outline:none;font-family:Geist,system-ui,Segoe UI,Roboto,sans-serif;font-size:14px}button{cursor:pointer}:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-xs)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}::selection{background:color-mix(in srgb, var(--accent) 30%, transparent)}.home{background:var(--bg-primary);flex-direction:column;min-height:100vh;display:flex;position:relative;overflow-x:hidden}.home-bg{z-index:0;background:radial-gradient(ellipse 70% 55% at 72% -5%, color-mix(in srgb, var(--accent) 6%, transparent) 0%, transparent 55%);pointer-events:none;position:fixed;inset:0}.home-nav{z-index:50;padding-block:var(--sp-16);padding-inline:max(var(--sp-24), calc((100% - 1120px) / 2));border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg-primary) 82%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.home-nav-logo{align-items:center;gap:var(--sp-8);display:flex}.nav-logo-icon{border-radius:var(--radius-sm);background:var(--accent);width:26px;height:26px;color:var(--on-accent);justify-content:center;align-items:center;display:inline-flex}.nav-logo-text{color:var(--text-primary);letter-spacing:-.01em;font-size:15px;font-weight:600}.home-nav-right{align-items:center;gap:var(--sp-24);display:flex}.nav-link{color:var(--text-secondary);transition:color var(--dur-base) var(--ease);font-size:13px;font-weight:500;text-decoration:none}.nav-link:hover{color:var(--text-primary)}.nav-cta{padding:var(--sp-8) var(--sp-14);background:var(--accent);color:var(--on-accent);border-radius:var(--radius-sm);transition:background var(--dur-base) var(--ease);font-size:13px;font-weight:600}.nav-cta:hover{background:var(--accent-hover)}.home-main{z-index:1;width:100%;padding-block:var(--sp-64) var(--sp-48);padding-inline:max(var(--sp-24), calc((100% - 1120px) / 2));gap:var(--sp-64);flex-direction:column;flex:1;display:flex;position:relative}.hero{align-items:center;gap:var(--sp-48);padding-top:var(--sp-24);grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);display:grid}.hero-copy{flex-direction:column;align-items:flex-start;display:flex}.hero-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--sp-20);font-family:JetBrains Mono,monospace;font-size:11px}.hero-title{letter-spacing:-.025em;color:var(--text-primary);margin-bottom:var(--sp-20);max-width:15ch;font-size:clamp(34px,4.4vw,54px);font-weight:600;line-height:1.05}.hero-title .accent{color:var(--accent)}.hero-sub{color:var(--text-secondary);max-width:46ch;margin-bottom:var(--sp-32);font-size:clamp(15px,1.4vw,17px);line-height:1.55}.hero-meta{color:var(--text-muted);margin-top:var(--sp-24);font-family:JetBrains Mono,monospace;font-size:12px}.hero-shot{min-width:0;position:relative}.shot-frame{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-secondary);box-shadow:var(--shadow-lg), 0 0 70px color-mix(in srgb, var(--accent) 9%, transparent);position:relative;overflow:hidden}.shot-img{width:100%;height:auto;display:block}.proof{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-secondary);display:flex;overflow:hidden}.proof-item{gap:var(--sp-4);padding:var(--sp-20) var(--sp-24);border-right:1px solid var(--border);flex-direction:column;flex:1;display:flex}.proof-item:last-child{border-right:none}.proof-val{color:var(--text-primary);font-family:JetBrains Mono,monospace;font-size:18px;font-weight:600}.proof-label{color:var(--text-secondary);font-size:13px}.features{gap:var(--sp-16);grid-template-columns:repeat(4,1fr);display:grid}.feature-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-20);gap:var(--sp-8);transition:border-color var(--dur-base) var(--ease);flex-direction:column;display:flex}.feature-card:hover{border-color:color-mix(in srgb, var(--accent) 35%, transparent)}.feature-icon{border-radius:var(--radius-md);width:36px;height:36px;color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);border:1px solid color-mix(in srgb, var(--accent) 18%, transparent);margin-bottom:var(--sp-6);justify-content:center;align-items:center;display:inline-flex}.feature-label{color:var(--text-primary);font-size:14px;font-weight:600}.feature-desc{color:var(--text-secondary);font-size:12.5px;line-height:1.5}.home-actions{align-items:center;gap:var(--sp-12);flex-wrap:wrap;display:flex}.join-form{gap:var(--sp-8);flex-wrap:wrap;align-items:center;display:flex}.btn-primary{align-items:center;gap:var(--sp-6);padding:var(--sp-12) var(--sp-24);background:var(--accent);color:var(--on-accent);border-radius:var(--radius-md);transition:background var(--dur-base) var(--ease), transform var(--dur-fast) var(--ease), box-shadow var(--dur-base) var(--ease);box-shadow:0 2px 16px color-mix(in srgb, var(--accent) 20%, transparent);font-size:14px;font-weight:600;display:inline-flex}.btn-primary:hover{background:var(--accent-hover);box-shadow:0 4px 20px color-mix(in srgb, var(--accent) 30%, transparent);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn-outline{align-items:center;gap:var(--sp-6);padding:var(--sp-12) var(--sp-24);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);background:0 0;font-size:14px;font-weight:600;display:inline-flex}.btn-outline:hover{border-color:var(--text-muted);background:var(--bg-secondary)}.btn-ghost{padding:var(--sp-12) var(--sp-16);color:var(--text-secondary);border-radius:var(--radius-md);transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);font-size:14px}.btn-ghost:hover{color:var(--text-primary);background:var(--bg-secondary)}.join-input{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary);padding:var(--sp-12) var(--sp-16);border-radius:var(--radius-md);width:260px;transition:border-color var(--dur-base) var(--ease);font-family:JetBrains Mono,monospace;font-size:13px}.join-input:focus{border-color:var(--accent)}.join-input::placeholder{color:var(--text-muted)}.cta-band{border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--bg-secondary);padding:var(--sp-48) var(--sp-32);text-align:center;align-items:center;gap:var(--sp-12);flex-direction:column;display:flex}.cta-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:11px}.cta-line{color:var(--text-primary);letter-spacing:-.01em;font-size:clamp(20px,2.4vw,26px);font-weight:600}.cta-band .home-actions{margin-top:var(--sp-12);justify-content:center}.home-footer{z-index:1;justify-content:space-between;align-items:center;gap:var(--sp-16);width:100%;padding-block:var(--sp-24) var(--sp-40);padding-inline:max(var(--sp-24), calc((100% - 1120px) / 2));border-top:1px solid var(--border);flex-wrap:wrap;display:flex;position:relative}.footer-left{align-items:center;gap:var(--sp-8);color:var(--text-secondary);font-size:13px;display:flex}.footer-left .nav-logo-icon{width:22px;height:22px}.footer-name{color:var(--text-primary);font-weight:600}.footer-right{align-items:center;gap:var(--sp-16);display:flex}.footer-credit{color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:11px}.modal-overlay{z-index:200;background:var(--overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);animation:.15s slideUp}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.modal-close{color:var(--text-muted);padding:var(--sp-4) var(--sp-8);border-radius:var(--radius-sm);cursor:pointer;transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);font-size:13px}.modal-field{gap:var(--sp-8);flex-direction:column;display:flex}.modal-hint{color:var(--text-muted);margin:0;font-size:12px}.vis-toggle{gap:var(--sp-8);display:flex}.vis-btn{padding:var(--sp-10) var(--sp-12);border-radius:var(--radius-md);background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:border-color var(--dur-base) var(--ease), color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);flex:1;font-size:13px;font-weight:500}.vis-btn:hover{border-color:var(--text-muted);color:var(--text-primary)}.vis-btn.active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent)}.modal-input{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);padding:var(--sp-10) var(--sp-14);border-radius:var(--radius-md);transition:border-color var(--dur-base) var(--ease);font-size:13px}.modal-input:focus{border-color:var(--accent)}.modal-input::placeholder{color:var(--text-muted)}.modal-footer{justify-content:flex-end;align-items:center;gap:var(--sp-8);padding:var(--sp-14) var(--sp-20) var(--sp-20);border-top:1px solid var(--border);display:flex}@media (width<=900px){.hero{gap:var(--sp-32);padding-top:var(--sp-8);grid-template-columns:1fr}.hero-title{max-width:18ch}.features{grid-template-columns:repeat(2,1fr)}.home-main{gap:var(--sp-48);padding-block:var(--sp-40) var(--sp-40)}}@media (width<=560px){.home-nav-right{gap:var(--sp-14)}.home-nav-right .nav-link{display:none}.features{grid-template-columns:1fr}.proof{flex-direction:column}.proof-item{border-right:none;border-bottom:1px solid var(--border)}.proof-item:last-child{border-bottom:none}.home-actions{width:100%}.home-actions .btn-primary,.home-actions .btn-outline{flex:1;justify-content:center;min-height:44px}.join-form{flex-direction:column;width:100%}.join-form .btn-primary,.join-form .btn-ghost{justify-content:center;width:100%}.join-input{width:100%;min-height:44px}.cta-band{padding:var(--sp-32) var(--sp-20)}.modal-overlay{align-items:flex-end}.modal-card{border-bottom-right-radius:0;border-bottom-left-radius:0;max-width:100%;margin:0}}.user-presence{align-items:center;display:flex}.avatar{border:2px solid var(--bg-secondary);background:var(--avatar-color,var(--accent));cursor:default;width:28px;height:28px;transition:transform var(--dur-base) var(--ease), z-index 0s;border-radius:50%;margin-left:-8px;animation:.3s cubic-bezier(.34,1.56,.64,1) avatarIn;position:relative}.avatar:first-child{margin-left:0}.avatar:hover{transform:translateY(-2px)scale(1.1);z-index:100!important}@keyframes avatarIn{0%{opacity:0;transform:translate(12px)scale(.8)}to{opacity:1;transform:translate(0)scale(1)}}.avatar-initials{color:var(--text-primary);text-shadow:0 1px 2px #0000004d;border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex;position:absolute;inset:0}.avatar-dot{background:var(--success);border:1.5px solid var(--bg-secondary);border-radius:50%;width:7px;height:7px;position:absolute;bottom:-1px;right:-1px}.avatar-clickable{cursor:pointer}.avatar-followed{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 40%, transparent);border-color:var(--accent)!important}.avatar-dimmed{opacity:.45}.avatar-eye{background:var(--accent);width:14px;height:14px;color:var(--on-accent);border:1.5px solid var(--bg-secondary);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:-4px;right:-4px}.avatar-overflow{background:var(--bg-tertiary);border-color:var(--border)}.avatar-overflow .avatar-initials{color:var(--text-secondary);font-size:9px}.avatar-tooltip{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-8) var(--sp-10);white-space:nowrap;z-index:200;pointer-events:none;box-shadow:var(--shadow-sm);animation:.15s tooltipIn;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}@keyframes tooltipIn{0%{opacity:0;transform:translate(-50%)translateY(-4px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.tooltip-name{color:var(--text-primary);font-size:12px;font-weight:600}.tooltip-status{color:var(--success);margin-top:var(--sp-2);font-size:11px}.toolbar{height:48px;padding:0 var(--sp-16);background:var(--bg-secondary);border-bottom:1px solid var(--border);align-items:center;gap:var(--sp-12);z-index:50;flex-shrink:0;display:flex;position:relative}.toolbar-left,.toolbar-right,.toolbar-center{align-items:center;gap:var(--sp-8);display:flex}.toolbar-right{margin-left:auto}.tb-sep{background:var(--border);flex-shrink:0;width:1px;height:20px}.tb-logo{align-items:center;gap:var(--sp-8);flex-shrink:0;display:flex}.tb-logo-icon{background:var(--accent);border-radius:var(--radius-sm);justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;display:flex}.tb-logo-text{color:var(--text-primary);letter-spacing:-.01em;white-space:nowrap;font-size:14px;font-weight:700}.room-pill{align-items:center;gap:var(--sp-6);padding:var(--sp-4) var(--sp-10);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:border-color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);display:flex}.room-pill:hover{border-color:var(--text-muted);background:var(--bg-primary)}.room-pill-id{color:var(--text-secondary);font-family:JetBrains Mono,monospace;font-size:12px}.room-pill-copy{color:var(--text-muted);font-size:11px}.lang-picker{position:relative}.lang-btn{align-items:center;gap:var(--sp-6);padding:var(--sp-6) var(--sp-10);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:border-color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);white-space:nowrap;font-size:12px;display:flex}.lang-btn:hover{border-color:var(--text-muted)}.lang-chevron{color:var(--text-muted);font-size:10px}.lang-dropdown{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-4);z-index:100;min-width:140px;box-shadow:var(--shadow-md);animation:.15s dropdownIn;position:absolute;top:calc(100% + 6px);left:0}@keyframes dropdownIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.lang-option{width:100%;padding:var(--sp-8) var(--sp-10);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);text-align:left;justify-content:space-between;align-items:center;font-size:13px;display:flex}.lang-option:hover{background:var(--bg-primary);color:var(--text-primary)}.lang-option.active{color:var(--accent)}.lang-check{color:var(--accent);font-size:11px}.font-ctrl{align-items:center;gap:var(--sp-2);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);display:flex;overflow:hidden}.font-btn{padding:var(--sp-6) var(--sp-10);color:var(--text-secondary);cursor:pointer;transition:background var(--dur-base) var(--ease), color var(--dur-base) var(--ease);font-size:14px}.font-btn:hover{background:var(--bg-primary);color:var(--text-primary)}.font-val{color:var(--text-secondary);text-align:center;min-width:24px;font-family:JetBrains Mono,monospace;font-size:12px}.tb-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:background var(--dur-base) var(--ease), color var(--dur-base) var(--ease);justify-content:center;align-items:center;font-size:15px;display:flex;position:relative}.tb-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.tb-btn-active{background:color-mix(in srgb, var(--accent) 15%, transparent)!important;color:var(--accent)!important}.tb-badge{background:var(--accent);color:var(--on-accent);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-4);text-align:center;min-width:14px;font-size:9px;font-weight:700;line-height:1.4;position:absolute;top:2px;right:2px}.tb-share-btn{align-items:center;gap:var(--sp-6);padding:var(--sp-6) var(--sp-12);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:background var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease);font-size:13px;display:flex}.tb-share-btn:hover{background:var(--bg-primary);border-color:var(--text-muted)}.tb-run-btn{align-items:center;gap:var(--sp-6);padding:var(--sp-6) var(--sp-14);background:color-mix(in srgb, var(--success) 15%, transparent);border:1px solid color-mix(in srgb, var(--success) 30%, transparent);color:var(--success);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease);font-size:13px;font-weight:600;display:flex}.tb-run-btn:hover{background:color-mix(in srgb, var(--success) 25%, transparent)}.tb-run-btn:disabled{opacity:.6;cursor:not-allowed}.run-spinner{border:2px solid color-mix(in srgb, var(--success) 30%, transparent);border-top-color:var(--success);border-radius:50%;width:12px;height:12px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.tb-leave-btn{padding:var(--sp-6) var(--sp-12);border:1px solid color-mix(in srgb, var(--error) 40%, transparent);color:var(--error);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-base) var(--ease);background:0 0;font-size:13px}.tb-leave-btn:hover{background:color-mix(in srgb, var(--error) 10%, transparent)}.tb-following-chip{align-items:center;gap:var(--sp-6);padding:var(--sp-4) var(--sp-10);background:color-mix(in srgb, var(--accent) 15%, transparent);border:1px solid color-mix(in srgb, var(--accent) 50%, transparent);color:var(--accent);border-radius:var(--radius-pill);cursor:pointer;transition:background var(--dur-base) var(--ease);font-size:12px;font-weight:500;display:flex}.tb-following-chip:hover{background:color-mix(in srgb, var(--accent) 25%, transparent)}@media (width<=768px){.toolbar{padding:0 var(--sp-10);gap:var(--sp-8)}.tb-logo-text,.room-pill-copy,.font-ctrl{display:none}}@media (width<=480px){.toolbar{gap:var(--sp-6)}.room-pill{display:none}}.chat{background:var(--bg-secondary);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;width:280px;height:100%;animation:.2s cubic-bezier(.34,1.2,.64,1) slideIn;display:flex}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.chat-header{height:40px;padding:0 var(--sp-14);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.chat-title{color:var(--text-primary);font-size:13px;font-weight:600}.chat-count{color:var(--text-muted);margin-top:var(--sp-2);font-size:11px}.chat-close{color:var(--text-muted);padding:var(--sp-4) var(--sp-6);border-radius:var(--radius-xs);cursor:pointer;transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);font-size:12px}.chat-close:hover{color:var(--text-primary);background:var(--bg-tertiary)}.chat-messages{padding:var(--sp-12);gap:var(--sp-12);flex-direction:column;flex:1;display:flex;overflow-y:auto}.chat-empty{justify-content:center;align-items:center;gap:var(--sp-4);padding:var(--sp-40) 0;flex-direction:column;flex:1;display:flex}.chat-empty-icon{opacity:.4;font-size:28px}.chat-empty-text{color:var(--text-secondary);font-size:13px;font-weight:500}.chat-empty-sub{color:var(--text-muted);font-size:12px}.chat-message{gap:var(--sp-4);flex-direction:column;display:flex}.chat-meta{align-items:center;gap:var(--sp-6);display:flex}.self-meta{justify-content:flex-end}.chat-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.chat-username{color:var(--text-secondary);font-size:11px;font-weight:600}.chat-time{color:var(--text-muted);font-size:10px}.chat-bubble{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);padding:var(--sp-8) var(--sp-12);border-radius:var(--radius-md);word-break:break-word;border-left:2px solid #0000;font-size:13px;line-height:1.5}.chat-message.self .chat-bubble{border-left:2px solid var(--accent);background:color-mix(in srgb, var(--accent) 6%, var(--bg-tertiary))}.chat-input-area{gap:var(--sp-8);padding:var(--sp-12);border-top:1px solid var(--border);flex-shrink:0;display:flex}.chat-input{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);padding:var(--sp-8) var(--sp-12);border-radius:var(--radius-md);transition:border-color var(--dur-base) var(--ease);flex:1;font-size:13px}.chat-input:focus{border-color:var(--accent)}.chat-input::placeholder{color:var(--text-muted)}.chat-send{background:var(--accent);width:34px;height:34px;color:var(--on-accent);border-radius:var(--radius-md);cursor:pointer;transition:background var(--dur-base) var(--ease);flex-shrink:0;justify-content:center;align-items:center;font-size:15px;display:flex}.chat-send:hover{background:var(--accent-hover)}.chat-send:disabled{opacity:.4;cursor:not-allowed}.fe{background:var(--bg-secondary);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:200px;display:flex;position:relative;overflow:hidden}.fe-header{height:40px;padding:0 var(--sp-14);color:var(--text-primary);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;font-size:13px;font-weight:600;display:flex}.fe-header-actions{align-items:center;gap:var(--sp-4);display:flex}.fe-new-btn{color:var(--text-muted);cursor:pointer;padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-xs);transition:color var(--dur-base) var(--ease);background:0 0;border:none;align-items:center;font-size:16px;line-height:1;display:flex}.fe-new-btn:hover{color:var(--text-primary)}.fe-hidden-input{display:none}.fe-drag-over{outline:2px dashed var(--accent);outline-offset:-3px;background:color-mix(in srgb, var(--accent) 5%, var(--bg-secondary))}.fe-drop-zone{z-index:10;justify-content:center;align-items:center;gap:var(--sp-8);background:color-mix(in srgb, var(--bg-primary) 80%, transparent);color:var(--accent);pointer-events:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:0;flex-direction:column;font-size:12px;font-weight:600;display:flex;position:absolute;inset:0}.fe-files{padding:var(--sp-4) 0;flex:1;overflow-y:auto}.fe-file{align-items:center;gap:var(--sp-6);padding:var(--sp-6) var(--sp-12);cursor:pointer;color:var(--text-secondary);transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);font-size:12px;display:flex;position:relative}.fe-file:hover{background:var(--bg-tertiary);color:var(--text-primary)}.fe-file.active{background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--text-primary);border-left:2px solid var(--accent);padding-left:var(--sp-10)}.fe-file-icon{flex-shrink:0;font-size:12px}.fe-file-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:JetBrains Mono,monospace;font-size:11.5px;overflow:hidden}.fe-unsaved-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:6px;height:6px}.fe-watchers{gap:var(--sp-2);align-items:center;display:flex}.fe-watcher-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.fe-file-rename{padding:var(--sp-4) var(--sp-8)}.fe-rename-input{background:var(--bg-tertiary);border:1px solid var(--accent);border-radius:var(--radius-xs);width:100%;color:var(--text-primary);padding:var(--sp-4) var(--sp-6);outline:none;font-family:JetBrains Mono,monospace;font-size:12px}.fe-context-menu{z-index:1000;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);min-width:140px;position:fixed;overflow:hidden}.fe-context-menu button{width:100%;padding:var(--sp-8) var(--sp-14);text-align:left;color:var(--text-secondary);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:0 0;border:none;font-size:13px;display:block}.fe-context-menu button:hover{background:var(--bg-tertiary);color:var(--text-primary)}.fe-context-menu button.danger{color:var(--error)}.fe-context-menu button.danger:hover{background:color-mix(in srgb, var(--error) 10%, transparent)}.fe-context-menu button:disabled{opacity:.35;cursor:not-allowed}.fe-input-error{border-color:var(--error)!important}.fe-input-error-msg{color:var(--error);padding:var(--sp-2) var(--sp-6) var(--sp-4);font-size:10px}.status-bar{height:24px;padding:0 var(--sp-12);background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.status-left,.status-right{align-items:center;gap:var(--sp-12);display:flex}.status-item{color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:11px}.status-lang{color:var(--text-secondary)}.status-conn{align-items:center;gap:var(--sp-6);color:var(--text-muted);font-size:11px;display:flex}.status-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.status-conn.connected .status-dot{background:var(--success);box-shadow:0 0 0 2px color-mix(in srgb, var(--success) 25%, transparent);animation:2s ease-in-out infinite pulse}.status-conn.disconnected .status-dot{background:var(--error)}@keyframes pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--success) 40%, transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--success) 0%, transparent)}}.loading-screen{background:var(--bg-primary);justify-content:center;align-items:center;gap:var(--sp-16);z-index:500;flex-direction:column;display:flex;position:fixed;inset:0}.loading-logo{font-size:36px;animation:2s ease-in-out infinite logoPulse}@keyframes logoPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.95)}}.loading-text{color:var(--text-secondary);font-size:14px;font-weight:500}.loading-dots{gap:var(--sp-6);display:flex}.loading-dots span{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite dotBounce}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotBounce{0%,80%,to{opacity:.4;transform:scale(.6)}40%{opacity:1;transform:scale(1)}}.modal-overlay{background:var(--overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;justify-content:center;align-items:center;animation:.2s overlayIn;display:flex;position:fixed;inset:0}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:420px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-lg);animation:.25s cubic-bezier(.34,1.56,.64,1) modalIn}@keyframes modalIn{0%{opacity:0;transform:scale(.94)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-header{padding:var(--sp-20) var(--sp-20) var(--sp-14);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.modal-title{color:var(--text-primary);font-size:15px;font-weight:600}.modal-close{color:var(--text-muted);padding:var(--sp-4) var(--sp-6);border-radius:var(--radius-xs);transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);cursor:pointer;font-size:13px}.modal-close:hover{color:var(--text-primary);background:var(--bg-tertiary)}.modal-body{padding:var(--sp-20);gap:var(--sp-20);flex-direction:column;display:flex}.modal-section{gap:var(--sp-8);flex-direction:column;display:flex}.modal-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:11px;font-weight:600}.url-row{gap:var(--sp-8);display:flex}.url-input{background:var(--bg-primary);border:1px solid var(--border);color:var(--text-secondary);padding:var(--sp-10) var(--sp-12);border-radius:var(--radius-md);flex:1;font-family:JetBrains Mono,monospace;font-size:12px}.copy-btn{padding:var(--sp-10) var(--sp-16);background:var(--accent);color:var(--on-accent);border-radius:var(--radius-md);white-space:nowrap;transition:background var(--dur-base) var(--ease);cursor:pointer;font-size:13px;font-weight:600}.copy-btn:hover{background:var(--accent-hover)}.copy-btn.copied{background:var(--success)}.modal-hint{color:var(--text-secondary);font-size:13px;line-height:1.6}.room-id-display{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-10) var(--sp-12)}.room-id-code{color:var(--accent);font-family:JetBrains Mono,monospace;font-size:13px}.ai-panel{background:var(--bg-secondary);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;width:340px;display:flex;overflow:hidden}.ai-header{height:40px;padding:0 var(--sp-14);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.ai-header-left{align-items:center;gap:var(--sp-8);display:flex}.ai-sparkle{color:var(--accent);font-size:13px}.ai-title{color:var(--text-primary);font-size:13px;font-weight:600}.ai-header-right{align-items:center;gap:var(--sp-4);display:flex}.ai-icon-btn{color:var(--text-muted);cursor:pointer;padding:var(--sp-4) var(--sp-6);border-radius:var(--radius-xs);transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);background:0 0;border:none;font-size:13px}.ai-icon-btn:hover{color:var(--text-primary);background:var(--bg-tertiary)}.ai-modes{border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.ai-mode-btn{align-items:center;gap:var(--sp-2);padding:var(--sp-8) var(--sp-4);cursor:pointer;color:var(--text-muted);transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);background:0 0;border:none;border-bottom:2px solid #0000;flex-direction:column;flex:1;font-size:11px;display:flex}.ai-mode-btn:hover{color:var(--text-secondary);background:color-mix(in srgb, var(--accent) 5%, transparent)}.ai-mode-btn.active{color:var(--accent);border-bottom-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.ai-mode-btn span:first-child{font-size:15px}.ai-context-bar{padding:var(--sp-6) var(--sp-14);border-bottom:1px solid var(--border);flex-shrink:0}.ai-context-badge{color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:11px}.ai-context-badge.selection{color:var(--accent)}.ai-chat{padding:var(--sp-12);gap:var(--sp-10);flex-direction:column;flex:1;display:flex;overflow-y:auto}.ai-empty{justify-content:center;align-items:center;gap:var(--sp-10);text-align:center;color:var(--text-muted);padding:var(--sp-20);flex-direction:column;flex:1;display:flex}.ai-empty-icon{opacity:.4;font-size:22px}.ai-empty p{font-size:12px;line-height:1.6}.ai-msg{gap:var(--sp-4);flex-direction:column;display:flex}.ai-msg-label{color:var(--accent);letter-spacing:.04em;font-size:10px;font-weight:600}.ai-msg-user .ai-msg-body{background:color-mix(in srgb, var(--accent) 12%, transparent);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);border-radius:var(--radius-md) var(--radius-md) var(--radius-xs) var(--radius-md);padding:var(--sp-8) var(--sp-10);align-self:flex-end;max-width:90%}.ai-msg-assistant .ai-msg-body{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-xs) var(--radius-md) var(--radius-md) var(--radius-md);padding:var(--sp-8) var(--sp-10)}.ai-msg.error .ai-msg-body{border-color:color-mix(in srgb, var(--error) 40%, transparent);background:color-mix(in srgb, var(--error) 8%, transparent)}.ai-msg-text{color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;margin:0;font-family:inherit;font-size:12px;line-height:1.6}.ai-cursor{color:var(--accent);animation:1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.ai-typing{gap:var(--sp-4);padding:var(--sp-2) 0;align-items:center;display:flex}.ai-typing span{background:var(--text-muted);border-radius:50%;width:5px;height:5px;animation:1.2s ease-in-out infinite typingDot}.ai-typing span:nth-child(2){animation-delay:.2s}.ai-typing span:nth-child(3){animation-delay:.4s}@keyframes typingDot{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.ai-apply-btn{background:color-mix(in srgb, var(--accent) 10%, transparent);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);color:var(--accent);padding:var(--sp-4) var(--sp-10);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-base) var(--ease);margin-top:var(--sp-2);align-self:flex-start;font-size:11px}.ai-apply-btn:hover{background:color-mix(in srgb, var(--accent) 18%, transparent)}.ai-input-area{padding:var(--sp-10) var(--sp-12);border-top:1px solid var(--border);gap:var(--sp-6);flex-direction:column;flex-shrink:0;display:flex}.ai-error-input{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);padding:var(--sp-6) var(--sp-10);transition:border-color var(--dur-base) var(--ease);outline:none;font-family:JetBrains Mono,monospace;font-size:12px}.ai-error-input:focus{border-color:var(--error)}.ai-error-input::placeholder{color:var(--text-muted)}.ai-input-row{gap:var(--sp-6);display:flex}.ai-input{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);padding:var(--sp-8) var(--sp-10);transition:border-color var(--dur-base) var(--ease);outline:none;flex:1;font-family:inherit;font-size:13px}.ai-input:focus{border-color:var(--accent)}.ai-input::placeholder{color:var(--text-muted)}.ai-send-btn{background:var(--accent);border-radius:var(--radius-sm);color:var(--on-accent);cursor:pointer;width:32px;height:32px;transition:background var(--dur-base) var(--ease), opacity var(--dur-base) var(--ease);border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;display:flex}.ai-send-btn:hover:not(:disabled){background:var(--accent-hover)}.ai-send-btn:disabled{opacity:.4;cursor:not-allowed}.ai-action-btn{width:100%;padding:var(--sp-8);background:var(--accent);border-radius:var(--radius-md);color:var(--on-accent);cursor:pointer;justify-content:center;align-items:center;gap:var(--sp-6);transition:opacity var(--dur-base) var(--ease);border:none;font-size:13px;font-weight:500;display:flex}.ai-action-btn:disabled{opacity:.5;cursor:not-allowed}.ai-action-btn:hover:not(:disabled){opacity:.9}.run-spinner{border:2px solid color-mix(in srgb, var(--on-accent) 30%, transparent);border-top-color:var(--on-accent);border-radius:50%;width:12px;height:12px;animation:.6s linear infinite spin;display:inline-block}.ai-retry-btn{align-items:center;gap:var(--sp-6);margin-top:var(--sp-8);padding:var(--sp-6) var(--sp-10);background:color-mix(in srgb, var(--error) 12%, transparent);border:1px solid color-mix(in srgb, var(--error) 40%, transparent);color:var(--error);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-base) var(--ease);font-size:12px;display:inline-flex}.ai-retry-btn:hover{background:color-mix(in srgb, var(--error) 20%, transparent)}.vh-panel{background:var(--bg-secondary);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;width:300px;display:flex;overflow:hidden}.vh-header{height:40px;padding:0 var(--sp-14);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.vh-title{color:var(--text-primary);font-size:13px;font-weight:600}.vh-close{color:var(--text-muted);cursor:pointer;padding:var(--sp-2) var(--sp-6);border-radius:var(--radius-xs);background:0 0;border:none;font-size:13px}.vh-close:hover{color:var(--text-primary);background:var(--bg-tertiary)}.vh-save-row{gap:var(--sp-6);padding:var(--sp-10) var(--sp-12);border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.vh-label-input{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);padding:var(--sp-6) var(--sp-8);outline:none;flex:1;font-size:12px}.vh-label-input:focus{border-color:var(--accent)}.vh-label-input::placeholder{color:var(--text-muted)}.vh-save-btn{background:var(--accent);border-radius:var(--radius-sm);color:var(--on-accent);padding:var(--sp-6) var(--sp-12);cursor:pointer;white-space:nowrap;transition:opacity var(--dur-base) var(--ease);border:none;font-size:12px;font-weight:500}.vh-save-btn:disabled{opacity:.5;cursor:not-allowed}.vh-list{padding:var(--sp-6) 0;flex:1;overflow-y:auto}.vh-empty{padding:var(--sp-20);text-align:center;color:var(--text-muted);font-size:12px;line-height:1.6}.vh-item{padding:var(--sp-10) var(--sp-14);cursor:pointer;border-bottom:1px solid var(--border);transition:background var(--dur-fast) var(--ease)}.vh-item:hover{background:var(--bg-tertiary)}.vh-item-label{color:var(--text-primary);margin-bottom:var(--sp-4);font-size:12px;font-weight:500}.vh-item-meta{color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:11px}.vh-diff-view{flex-direction:column;flex:1;display:flex;overflow:hidden}.vh-diff-header{align-items:center;gap:var(--sp-8);padding:var(--sp-8) var(--sp-12);border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.vh-back-btn{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);padding:var(--sp-4) var(--sp-8);cursor:pointer;background:0 0;flex-shrink:0;font-size:11px}.vh-back-btn:hover{color:var(--text-primary)}.vh-diff-label{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:JetBrains Mono,monospace;font-size:11px;overflow:hidden}.vh-restore-btn{background:var(--accent);border-radius:var(--radius-sm);color:var(--on-accent);padding:var(--sp-4) var(--sp-10);cursor:pointer;border:none;flex-shrink:0;font-size:11px;font-weight:600}.vh-diff-body{flex:1;font-family:JetBrains Mono,monospace;font-size:11px;overflow-y:auto}.vh-diff-line{align-items:flex-start;gap:var(--sp-6);padding:var(--sp-2) var(--sp-8);display:flex}.vh-diff-add{background:color-mix(in srgb, var(--success) 12%, transparent)}.vh-diff-remove{background:color-mix(in srgb, var(--error) 12%, transparent)}.vh-diff-prefix{color:var(--text-muted);flex-shrink:0;width:10px}.vh-diff-add .vh-diff-prefix{color:var(--success)}.vh-diff-remove .vh-diff-prefix{color:var(--error)}.vh-diff-text{white-space:pre-wrap;word-break:break-all;color:var(--text-secondary);margin:0;line-height:1.5}.vh-diff-add .vh-diff-text{color:color-mix(in srgb, var(--success) 60%, var(--text-primary))}.vh-diff-remove .vh-diff-text{color:color-mix(in srgb, var(--error) 60%, var(--text-primary))}.toast-container{z-index:9999;gap:var(--sp-8);pointer-events:none;flex-direction:column;display:flex;position:fixed;bottom:24px;right:24px}.toast{align-items:center;gap:var(--sp-10);padding:var(--sp-12) var(--sp-14);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-md);min-width:260px;max-width:360px;box-shadow:var(--shadow-md);pointer-events:all;opacity:0;border-left-width:3px;transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .3s;display:flex;transform:translate(120%)}.toast-visible{opacity:1;transform:translate(0)}.toast-success{border-left-color:var(--success)}.toast-info{border-left-color:var(--info)}.toast-warning{border-left-color:var(--warning)}.toast-error{border-left-color:var(--error)}.toast-icon{text-align:center;flex-shrink:0;width:16px;font-size:13px;font-weight:700}.toast-success .toast-icon{color:var(--success)}.toast-info .toast-icon{color:var(--info)}.toast-warning .toast-icon{color:var(--warning)}.toast-error .toast-icon{color:var(--error)}.toast-message{color:var(--text-primary);flex:1;font-size:13px;line-height:1.4}.toast-close{color:var(--text-muted);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-xs);transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);cursor:pointer;flex-shrink:0;font-size:11px}.toast-close:hover{color:var(--text-primary);background:var(--bg-primary)}.room{background:var(--bg-primary);flex-direction:column;height:100vh;display:flex;overflow:hidden}.room-body{flex:1;min-height:0;display:flex;overflow:hidden}.editor-area{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.editor-main{flex:1;overflow:hidden}.editor-wrapper{height:100%}.welcome-banner{padding:var(--sp-8) var(--sp-16);background:color-mix(in srgb, var(--accent) 10%, transparent);border-bottom:1px solid color-mix(in srgb, var(--accent) 25%, transparent);color:var(--text-secondary);flex-shrink:0;justify-content:space-between;align-items:center;font-size:13px;display:flex}.welcome-dismiss{color:var(--text-muted);padding:var(--sp-2) var(--sp-6);border-radius:var(--radius-xs);cursor:pointer;transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);font-size:12px}.welcome-dismiss:hover{color:var(--text-primary);background:color-mix(in srgb, var(--accent) 15%, transparent)}.offline-banner{padding:var(--sp-8) var(--sp-16);background:color-mix(in srgb, var(--warning) 10%, transparent);border-bottom:1px solid color-mix(in srgb, var(--warning) 25%, transparent);color:var(--warning);flex-shrink:0;font-size:12px}.output-panel{border-top:1px solid var(--border);background:var(--bg-secondary);flex-direction:column;flex-shrink:0;height:200px;display:flex}.output-header{align-items:center;gap:var(--sp-8);padding:var(--sp-6) var(--sp-14);border-bottom:1px solid var(--border);color:var(--text-secondary);flex-shrink:0;font-size:12px;font-weight:600;display:flex}.output-time{color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:400}.output-btn{color:var(--text-muted);padding:var(--sp-2) var(--sp-6);border-radius:var(--radius-xs);cursor:pointer;transition:color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);margin-left:auto;font-size:12px}.output-btn+.output-btn{margin-left:0}.output-btn:hover{color:var(--text-primary);background:var(--bg-tertiary)}.output-body{padding:var(--sp-10) var(--sp-14);flex:1;overflow-y:auto}.output-stdout{color:var(--text-primary);white-space:pre-wrap;margin:0;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.6}.output-stderr{color:var(--error);white-space:pre-wrap;margin:0;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.6}.output-loading,.output-empty{color:var(--text-muted);font-size:12px}.output-resize-handle{cursor:ns-resize;height:4px;transition:background var(--dur-base) var(--ease);background:0 0;flex-shrink:0}.output-resize-handle:hover{background:var(--accent)}.output-running{color:var(--success);font-family:JetBrains Mono,monospace;font-size:11px;animation:1s ease-in-out infinite pulse-opacity}@keyframes pulse-opacity{0%,to{opacity:1}50%{opacity:.4}}.editor-tabs{background:var(--bg-secondary);border-bottom:1px solid var(--border);scrollbar-width:none;flex-shrink:0;align-items:center;height:36px;display:flex;overflow-x:auto}.editor-tabs::-webkit-scrollbar{display:none}.editor-tab{align-items:center;gap:var(--sp-6);padding:0 var(--sp-14);height:100%;color:var(--text-muted);cursor:pointer;border-right:1px solid var(--border);white-space:nowrap;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);flex-shrink:0;font-family:JetBrains Mono,monospace;font-size:12px;display:flex}.editor-tab:hover{background:var(--bg-tertiary);color:var(--text-secondary)}.editor-tab.active{background:var(--bg-primary);color:var(--text-primary);border-bottom:2px solid var(--accent)}.editor-tab-name{text-overflow:ellipsis;max-width:120px;overflow:hidden}.editor-tab-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:6px;height:6px}.typing-banner{padding:var(--sp-4) var(--sp-16);background:color-mix(in srgb, var(--bg-secondary) 95%, transparent);border-bottom:1px solid var(--border);color:var(--text-muted);flex-shrink:0;font-size:11px;font-style:italic}.editor-following{outline:2px solid color-mix(in srgb, var(--accent) 50%, transparent);outline-offset:-2px}.room-error{justify-content:center;align-items:center;gap:var(--sp-12);background:var(--bg-primary);min-height:100vh;color:var(--text-primary);flex-direction:column;display:flex}.room-error-icon{font-size:36px}.room-error-title{font-size:20px;font-weight:700}.room-error-msg{color:var(--text-secondary);text-align:center;max-width:400px;font-size:14px}.room-error-actions{gap:var(--sp-10);margin-top:var(--sp-8);display:flex}.room-error-btn{padding:var(--sp-8) var(--sp-20);background:var(--accent);color:var(--on-accent);border-radius:var(--radius-md);cursor:pointer;border:none;font-size:14px;font-weight:600}.room-error-btn:hover{background:var(--accent-hover)}.room-error-ghost{padding:var(--sp-8) var(--sp-20);color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;background:0 0;font-size:14px}.room-error-ghost:hover{color:var(--text-primary)}@media (width<=768px){.room-body{position:relative}.room-body .ai-panel,.room-body .chat,.room-body .vh-panel{z-index:60;width:min(340px,100%);box-shadow:var(--shadow-lg);position:absolute;top:0;bottom:0;right:0}.output-panel{height:160px}}@media (width<=480px){.fe{width:152px}.room-body .ai-panel,.room-body .chat,.room-body .vh-panel{width:100%}.editor-tab-name{max-width:80px}}
