@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{font-family:DM Sans,Inter,ui-sans-serif,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}:root,:root[data-theme=dark]{color-scheme:dark;--page:#101115;--shell:#15171b;--bar:#181a1f;--panel:#191b20;--panel-alt:#1c1e24;--elevated:#24262c;--hover:#2b2e35;--line:#2a2d33;--line-soft:#24262d;--text:#e8e8e6;--secondary:#a5a7ae;--muted:#777a84;--dim:#555861;--accent:#ff7458;--accent-soft:#392a27;--positive:#8ac6a3;--warn:#edb67c;--error:#f08d86;--preview-back:#25262b;--editor-text:#dedfdc;--editor-gutter:#7d818b;--shadow:0 18px 52px #0008}:root[data-theme=light]{color-scheme:light;--page:#f0f1f2;--shell:#fafafb;--bar:#fafafb;--panel:#ffffff;--panel-alt:#f7f8f9;--elevated:#eff0f2;--hover:#e6e8eb;--line:#e0e2e6;--line-soft:#ededf0;--text:#252830;--secondary:#5e626d;--muted:#868b96;--dim:#a4a7af;--accent:#de5438;--accent-soft:#fce5e0;--positive:#328a5f;--warn:#b57632;--error:#cb5155;--preview-back:#e9ebed;--editor-text:#272b32;--editor-gutter:#838791;--shadow:0 18px 48px #18243524}*{box-sizing:border-box}body{margin:0;min-width:340px;background:var(--page);color:var(--text)}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit;text-decoration:none}::selection{background:#ed7a5c66;color:#fff}.frontlab-shell{height:100dvh;min-height:540px;display:flex;flex-direction:column;background:var(--shell);overflow:hidden}.topbar{height:68px;min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:18px;background:var(--bar);border-bottom:1px solid var(--line);padding:0 20px 0 21px;z-index:5}.brand-zone,.topbar-right,.topbar-center,.path-info,.subbar-end,.pane-heading,.preview-controls,.preview-toolbar,.source-toolbar-end,.editor-foot,.workspace-footer,.console-heading,.console-toolbar,.console-actions{display:flex;align-items:center}.brand-zone{gap:14px;flex:0 0 300px;min-width:0}.brand-icon{display:flex;align-items:center;justify-content:center;width:30px;height:30px}.brand-icon img{width:25px;height:25px;object-fit:contain}.brand-divider,.topbar-separator,.toolbar-separator,.subbar-separator{width:1px;height:22px;background:var(--line);display:block;flex-shrink:0}.wordmark{font-size:16px;font-weight:500;white-space:nowrap;letter-spacing:-.055em;color:var(--secondary)}.wordmark strong{font-weight:700;color:var(--text)}.alpha-badge{font:600 9px/1.2 IBM Plex Mono,monospace;letter-spacing:.06em;color:#ffac97;background:#433029;border:1px solid #81503e;border-radius:4px;padding:5px 7px;white-space:nowrap}.topbar-center{gap:12px;flex:1;min-width:80px}.app-section-name{font:500 10px monospace;color:var(--dim);letter-spacing:.13em;white-space:nowrap}.breadcrumb-slash{color:var(--dim)}.project-title-input{background:transparent;border:0;color:var(--secondary);max-width:250px;width:100%;min-width:70px;text-overflow:ellipsis;outline:none;font-size:12px;font-weight:600}.project-title-input:focus{color:var(--text);outline:0;border-bottom:1px solid var(--accent)}.topbar-right{gap:10px;justify-content:flex-end;flex:0 0 300px}.save-indicator{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:8px;white-space:nowrap}.save-dot,.footer-dot,.state-indicator,.footer-tick{display:inline-block;border-radius:50%;background:var(--muted);width:6px;height:6px;flex:0 0 auto}.save-dot.saved,.footer-dot,.footer-tick{background:var(--positive)}.header-tool,.icon-button,.rail-button,.subbar-button,.text-button{border:0;color:var(--secondary);background:transparent;display:inline-flex;align-items:center;justify-content:center}.header-tool{width:34px;height:34px;border-radius:6px;flex-shrink:0}.header-tool:hover,.icon-button:hover,.subbar-button:hover,.rail-button:hover{background:var(--hover);color:var(--text)}.run-primary{background:var(--accent);border:1px solid var(--accent);color:#251713;border-radius:6px;display:flex;align-items:center;gap:9px;height:35px;padding:0 12px;font-size:12px;font-weight:700;white-space:nowrap}.run-primary:hover{filter:brightness(1.09)}.run-primary kbd{font-family:monospace;font-size:10px;font-weight:500;border-left:1px solid #582b2355;padding-left:9px;margin-left:5px;opacity:.76}.body-layout{display:flex;flex:1;min-height:0}.side-rail{display:flex;flex-direction:column;align-items:center;justify-content:space-between;width:59px;min-width:59px;background:var(--bar);border-right:1px solid var(--line);padding:16px 0 13px}.rail-top,.rail-bottom{display:flex;flex-direction:column;align-items:center;gap:12px}.rail-button{width:39px;height:39px;border-radius:8px;position:relative}.rail-button.active{background:var(--elevated);color:var(--text)}.rail-button.active:before{content:"";position:absolute;width:2px;height:23px;left:-10px;background:var(--accent);border-radius:0 2px 2px 0}.rail-line{height:1px;width:23px;background:var(--line);margin:0 0 3px}.workspace-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.workspace-subbar{height:46px;min-height:46px;border-bottom:1px solid var(--line);background:var(--shell);display:flex;justify-content:space-between;align-items:center;padding:0 15px 0 21px;gap:15px}.path-info{gap:9px;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden}.path-info .slash{color:var(--dim)}.path-info .path-strong{color:var(--secondary);font-weight:600;overflow:hidden;text-overflow:ellipsis}.subbar-end{gap:13px}.mono-tag{color:var(--dim);font:500 9px IBM Plex Mono,monospace;letter-spacing:.07em;white-space:nowrap}.subbar-separator{height:16px}.subbar-button{gap:8px;font-size:11px;height:31px;padding:0 8px;border-radius:5px;white-space:nowrap}.subbar-button.pressed{background:var(--elevated)}.dropdown-wrapper{position:relative}.action-menu{position:absolute;right:0;top:36px;z-index:25;width:214px;background:var(--elevated);border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow);padding:5px}.action-menu button{display:flex;align-items:center;gap:12px;width:100%;padding:11px;border:0;background:none;color:var(--text);text-align:left;font-size:12px;border-radius:5px}.action-menu button:hover{background:var(--hover)}.action-menu button svg{color:var(--muted)}.workspace-panels{flex:1;min-height:0;min-width:0;display:grid;grid-template-columns:minmax(0,var(--editor-width)) 7px minmax(0,1fr);background:var(--panel)}.source-pane,.preview-pane{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.source-pane{background:var(--panel)}.pane-toolbar{height:46px;min-height:46px;border-bottom:1px solid var(--line)}.source-toolbar{justify-content:space-between;padding-right:18px;background:var(--panel)}.file-tabs{display:flex;align-items:center;align-self:stretch;height:100%}.file-tab{border:0;border-right:1px solid var(--line-soft);background:transparent;height:100%;color:var(--muted);font-size:11px;font-weight:600;display:flex;align-items:center;gap:9px;padding:0 18px;position:relative;white-space:nowrap}.file-tab:hover{background:var(--elevated);color:var(--text)}.file-tab.active{color:var(--text);background:var(--panel-alt)}.file-tab.active:after{content:"";position:absolute;height:2px;left:0;right:0;top:0;background:var(--accent)}.file-language-icon{font:700 9px IBM Plex Mono,monospace;display:flex;align-items:center;justify-content:center;border-radius:3px;width:20px;height:19px}.file-language-icon.html{color:#f0a480;background:#55382f}.file-language-icon.css{color:#94c0fc;background:#2b3d57}.file-language-icon.javascript{color:#f6d28c;background:#53472a}.source-toolbar-end{gap:10px;font:10px IBM Plex Mono,monospace;color:var(--dim);white-space:nowrap}.editor-mount{min-height:0;flex:1;overflow:hidden}.editor-mount .cm-editor{height:100%;font:12.5px/1.83 IBM Plex Mono,JetBrains Mono,Consolas,monospace;color:var(--editor-text);background:var(--panel)}.editor-mount .cm-focused{outline:0}.editor-mount .cm-scroller{font-family:inherit;overflow:auto}.editor-mount .cm-gutters{color:var(--editor-gutter);background:var(--panel);border-right:0;padding:13px 12px 13px 0;min-width:47px}.editor-mount .cm-content{padding:13px 20px 35px 5px;caret-color:var(--accent);min-width:0}.editor-mount .cm-line{padding-left:8px}.editor-mount .cm-activeLine{background:color-mix(in srgb,var(--text) 3%,transparent)}.editor-mount .cm-activeLineGutter{background:transparent;color:var(--text)}.editor-mount .cm-selectionBackground,.editor-mount .cm-focused .cm-selectionBackground{background:#8196a82f!important}.editor-mount .cm-cursor{border-left-color:var(--accent)}.editor-mount .cm-matchingBracket{background:var(--elevated);outline:1px solid var(--muted)}.editor-mount .cm-foldGutter{width:12px}.editor-foot{min-height:32px;height:32px;border-top:1px solid var(--line);padding:0 18px;gap:20px;font:10px IBM Plex Mono,monospace;color:var(--muted);background:var(--panel)}.editor-foot>span{white-space:nowrap}.editor-foot .footer-tick{margin-right:8px}.footer-grow{flex:1}.autorun-control{display:flex;align-items:center;gap:9px;cursor:pointer;white-space:nowrap}.autorun-control input{position:absolute;opacity:0;width:1px;height:1px}.mini-switch{display:block;width:27px;height:15px;background:var(--dim);border-radius:20px;position:relative;transition:background .15s}.mini-switch:after{content:"";position:absolute;width:9px;height:9px;top:3px;left:3px;border-radius:50%;background:#fff;transition:transform .15s}.autorun-control input:checked+.mini-switch{background:var(--accent)}.autorun-control input:checked+.mini-switch:after{transform:translate(12px)}.autorun-control input:focus-visible+.mini-switch{outline:2px solid var(--accent);outline-offset:3px}.panel-divider{cursor:col-resize;background:var(--shell);border-left:1px solid var(--line);border-right:1px solid var(--line);display:flex;align-items:center;justify-content:center;touch-action:none;user-select:none;z-index:1}.panel-divider:hover,.panel-divider:active{background:var(--elevated)}.divider-grip{width:2px;height:34px;background:var(--dim);border-radius:2px}.preview-pane{background:var(--preview-back)}.preview-toolbar{justify-content:space-between;background:var(--panel);padding:0 13px 0 16px;gap:9px}.pane-heading{gap:9px;font-size:12px;font-weight:600;white-space:nowrap}.pane-heading svg{color:var(--muted)}.state-indicator{margin-left:4px}.state-indicator.running{background:var(--positive);box-shadow:0 0 0 3px color-mix(in srgb,var(--positive) 10%,transparent)}.state-indicator.starting{background:var(--warn)}.state-indicator.stopped,.state-indicator.disposed{background:var(--dim)}.state-label{font-size:10px;color:var(--muted);font-weight:500}.preview-controls{gap:12px}.device-switch{display:flex;align-items:center;background:var(--shell);border:1px solid var(--line);border-radius:6px;padding:3px;gap:1px}.device-switch button{height:26px;width:28px;display:flex;align-items:center;justify-content:center;border:0;border-radius:4px;color:var(--muted);background:none}.device-switch button:hover{color:var(--text)}.device-switch button.selected{background:var(--elevated);color:var(--text);box-shadow:0 1px 4px #0003}.viewport-custom{display:flex;align-items:center;gap:3px;font:11px IBM Plex Mono,monospace;color:var(--muted)}.viewport-custom input{width:45px;padding:5px 0;border:0;background:none;color:var(--secondary);font:inherit;text-align:right;outline:none;appearance:textfield}.viewport-custom input::-webkit-inner-spin-button{appearance:none}.toolbar-separator{height:20px}.icon-button{width:28px;height:28px;border-radius:5px;flex-shrink:0}.icon-button.tiny{width:24px;height:24px}.runner-note{display:flex;align-items:center;gap:8px;background:var(--accent-soft);color:var(--warn);font-size:10px;padding:7px 13px;border-bottom:1px solid var(--line);line-height:1.35}.runner-note svg{flex-shrink:0}.runtime-warning{display:flex;gap:9px;align-items:center;background:#633c2b;color:#ffcfaf;padding:10px 14px;font-size:11px}.preview-stage{flex:1;min-height:0;display:flex;align-items:stretch;justify-content:center;overflow:auto;padding:24px;background-color:var(--preview-back);background-image:radial-gradient(var(--line) .75px,transparent .75px);background-size:16px 16px}.preview-device{height:100%;min-height:230px;min-width:240px;max-width:100%;background:#e8e7e2;box-shadow:0 11px 42px #0002;overflow:hidden;transition:width .2s ease}.preview-device.fixed-width{box-shadow:0 2px 20px #0003,0 0 0 1px #0002}.frame-host{height:100%;width:100%}.frame-host>iframe{display:block;width:100%;height:100%;border:0;background:#fff}.console-panel{background:var(--panel);border-top:1px solid var(--line);display:flex;flex-direction:column;min-height:36px;max-height:55%}.console-panel.open{height:210px;min-height:140px;flex-shrink:0}.console-toolbar{height:36px;min-height:36px;justify-content:space-between;padding:0 14px}.console-heading{border:0;background:none;display:flex;gap:9px;align-items:center;color:var(--secondary);font-size:11px;font-weight:600;padding:0}.console-heading svg{color:var(--muted)}.console-total{background:var(--elevated);color:var(--secondary);border-radius:5px;font:10px monospace;padding:3px 6px}.error-count{color:var(--error);font:10px monospace}.console-actions{gap:10px}.text-button.small{font-size:11px;padding:5px}.console-output{min-height:0;overflow:auto;flex:1;border-top:1px solid var(--line-soft);font:11px/1.65 IBM Plex Mono,monospace}.console-empty{padding:17px;color:var(--dim)}.console-line{display:flex;gap:16px;align-items:baseline;padding:7px 16px;border-bottom:1px solid var(--line-soft)}.console-line code{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--secondary)}.console-level{min-width:42px;font-size:9px;color:var(--dim)}.level-error .console-level,.level-error code{color:var(--error)}.level-warn .console-level,.level-warn code{color:var(--warn)}.workspace-footer{height:32px;min-height:32px;justify-content:space-between;padding:0 16px 0 20px;background:var(--bar);border-top:1px solid var(--line);font-size:10px;color:var(--muted);gap:12px}.footer-label,.footer-right,.footer-right a{display:flex;align-items:center;gap:7px;white-space:nowrap}.footer-version{font:10px IBM Plex Mono,monospace;color:var(--dim)}.footer-right{gap:11px}.footer-right>span{color:var(--dim)}.footer-right a:hover{color:var(--text)}.overlay{position:fixed;z-index:50;inset:0;background:#08090ca6;display:flex;justify-content:flex-start;backdrop-filter:blur(3px)}.project-drawer{width:min(410px,90vw);background:var(--shell);height:100%;border-right:1px solid var(--line);box-shadow:var(--shadow);display:flex;flex-direction:column;padding:29px 24px}.drawer-top{display:flex;justify-content:space-between;align-items:flex-start}.eyebrow{font:10px IBM Plex Mono,monospace;letter-spacing:.14em;color:var(--accent)}.drawer-top h2{margin:9px 0 0;font-size:27px;letter-spacing:-.055em;font-weight:600}.drawer-count{margin-left:11px;font:12px monospace;color:var(--muted)}.drawer-description{font-size:12px;color:var(--muted);margin:12px 0 26px}.new-project-button{height:41px;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;background:var(--accent);border:0;border-radius:6px;color:#251713;font-size:12px;font-weight:700}.new-project-button:hover{filter:brightness(1.1)}.project-list{margin-top:23px;overflow-y:auto;flex:1;min-height:0}.project-list-item{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;margin-bottom:9px;padding:6px;background:var(--panel)}.project-list-item.selected{border-color:#91644e;background:var(--accent-soft)}.project-open-button{display:flex;align-items:center;gap:12px;text-align:left;background:none;border:0;color:var(--text);flex:1;min-width:0;padding:6px}.project-code-mark{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:7px;color:var(--accent)}.project-open-button strong{display:block;font-size:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-open-button small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.project-open-button>span:nth-child(2){min-width:0;flex:1}.selected-check{color:var(--accent)}.project-delete-button{background:none;border:0;color:var(--dim);height:30px;width:30px;display:grid;place-items:center;border-radius:5px}.project-delete-button:hover{color:var(--error);background:var(--elevated)}.drawer-bottom{display:flex;justify-content:space-between;padding-top:15px;border-top:1px solid var(--line);font:10px monospace;color:var(--muted)}.overlay.centered{justify-content:center;align-items:center;padding:20px}.help-dialog{width:min(470px,100%);background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:25px}.help-title{display:flex;align-items:center;gap:13px;margin-bottom:22px}.help-title h2{font-size:18px;font-weight:600;letter-spacing:-.04em;flex:1;margin:0}.help-title svg{color:var(--accent)}.help-title button svg{color:var(--secondary)}.shortcut-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line-soft);font-size:12px;color:var(--secondary)}.shortcut-row>span:last-child{display:flex;align-items:center;gap:5px}.shortcut-row kbd{font:10px monospace;padding:5px 8px;border:1px solid var(--line);border-radius:5px;color:var(--text);background:var(--elevated)}.help-dialog p{font-size:11px;line-height:1.6;color:var(--muted);margin:19px 0 0}.toast-message{position:fixed;z-index:90;right:19px;bottom:50px;display:flex;align-items:center;gap:10px;background:var(--elevated);color:var(--text);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:12px 15px;font-size:12px}.toast-message svg{color:var(--positive)}@media(max-width:1200px){.brand-zone{flex-basis:265px}.topbar-right{flex-basis:260px}.alpha-badge{font-size:8px}.source-toolbar-end,.mono-tag{display:none}.file-tab{padding:0 12px}.preview-stage{padding:15px}.preview-controls{gap:7px}}@media(max-width:1020px){.brand-zone{flex-basis:auto}.topbar-center{max-width:220px}.topbar-right{flex-basis:auto}.save-indicator{display:none}.topbar{padding:0 14px}.device-switch button{width:26px}.viewport-custom{display:none}.preview-toolbar{padding:0 10px}.file-tab{padding:0 9px;gap:5px}.source-toolbar-end{display:none}.workspace-subbar{padding-left:14px}}@media(max-width:900px){.frontlab-shell{height:auto;min-height:100dvh;overflow:visible}.topbar{position:sticky;top:0;z-index:10}.topbar-center{display:none}.workspace-main{min-height:calc(100dvh - 68px)}.workspace-panels{display:flex;flex-direction:column;min-height:780px}.source-pane{min-height:355px;height:46dvh;flex:0 0 auto}.preview-pane{min-height:460px;height:56dvh;flex:1}.panel-divider{height:7px;min-height:7px;width:100%;cursor:default;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.divider-grip{height:2px;width:32px}.side-rail{width:52px;min-width:52px}.console-panel.open{height:170px}.editor-mount .cm-editor{font-size:12px}.workspace-footer{height:35px}.runner-note{font-size:10px}}@media(max-width:560px){.topbar{height:60px;min-height:60px}.brand-zone{gap:9px}.brand-divider{height:19px}.brand-icon{width:25px;height:25px}.brand-icon img{width:22px;height:22px}.wordmark{font-size:14px}.alpha-badge{font-size:8px;padding:4px 5px}.topbar-right{gap:3px}.topbar-separator,.theme-tool{display:none}.header-tool{height:30px;width:30px}.run-primary{padding:0 11px;height:32px}.run-primary kbd,.side-rail{display:none}.workspace-subbar{height:40px;min-height:40px}.workspace-main{min-height:calc(100dvh - 60px)}.path-info{font-size:10px}.subbar-end{gap:4px}.file-tab{padding:0 11px}.file-tab span:last-child{font-size:10px}.source-pane{height:43dvh;min-height:315px}.preview-pane{height:58dvh;min-height:440px}.preview-stage{padding:9px}.preview-toolbar{min-height:43px;height:43px}.pane-heading{font-size:11px;gap:5px}.device-switch button{width:24px}.editor-foot{padding:0 10px;gap:11px}.editor-foot>span:nth-child(2){display:none}.workspace-footer{padding:0 10px}.footer-right{display:none}.runner-note{padding:6px 9px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
