:root{--bg-main:#fff;--bg-panel:#f4f2ee;--bg-panel-hover:#e9e6df;--border:#d9d5cc;--text:#2b2a27;--text-muted:#83807a;--accent:#4a6cf0;--accent-hover:#3a5adb;--danger:#c0433a;--shadow:#00000014 0 4px 14px;color:var(--text);background:var(--bg-main);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font:15px/1.5 -apple-system,Segoe UI,system-ui,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg-main:#1e1d1b;--bg-panel:#171615;--bg-panel-hover:#26241f;--border:#3a372f;--text:#ede9e2;--text-muted:#9a968c;--accent:#7091ff;--accent-hover:#8aa3ff;--danger:#e5675c;--shadow:#00000059 0 4px 14px}}*{box-sizing:border-box}body{background:var(--bg-main);margin:0}button{font:inherit}.landing-screen{background:var(--bg-panel);flex-wrap:wrap;min-height:100svh;display:flex}.landing-intro{flex-direction:column;flex:480px;justify-content:center;gap:18px;max-width:640px;padding:64px 56px;display:flex}.landing-badge{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent);letter-spacing:.02em;border-radius:999px;align-self:flex-start;padding:5px 14px;font-size:12px;font-weight:600;display:inline-block}.landing-title{color:var(--accent);margin:0;font-size:30px;font-weight:700}.landing-subtitle{color:var(--text);letter-spacing:-.01em;margin:0;font-size:26px;font-weight:700;line-height:1.3}.landing-lede{color:var(--text-muted);max-width:52ch;margin:0;font-size:15px;line-height:1.6}.landing-feature-list{flex-direction:column;gap:12px;margin:8px 0 0;padding:0;list-style:none;display:flex}.landing-feature{color:var(--text);align-items:flex-start;gap:12px;font-size:14px;display:flex}.landing-feature-icon{flex-shrink:0;font-size:18px;line-height:1.4}.landing-footnote{color:var(--text-muted);margin:10px 0 0;font-size:13px}.auth-screen{background:var(--bg-panel);justify-content:center;align-items:center;min-height:100svh;padding:24px;display:flex}.landing-screen .auth-screen{flex:380px;min-height:auto;padding:40px 32px}.auth-card{background:var(--bg-main);border:1px solid var(--border);width:100%;max-width:380px;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;gap:14px;padding:32px;display:flex}.auth-title{color:var(--accent);text-align:center;margin:0;font-size:26px;font-weight:600}.auth-subtitle{text-align:center;color:var(--text-muted);margin:0 0 8px;font-size:14px}.auth-field{color:var(--text-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}.auth-field input{border:1px solid var(--border);background:var(--bg-main);color:var(--text);border-radius:10px;padding:10px 12px;font-size:15px}.auth-field input:focus{outline:2px solid var(--accent);outline-offset:1px}.auth-error{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger);border-radius:8px;padding:8px 10px;font-size:13px}.auth-notice{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);border-radius:8px;padding:8px 10px;font-size:13px}.invite-continue-link{text-align:center;text-decoration:none;display:block}.auth-submit{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;margin-top:4px;padding:11px;font-weight:600}.auth-submit:hover:not(:disabled){background:var(--accent-hover)}.auth-submit:disabled{opacity:.6;cursor:default}.auth-switch{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:13px}.auth-switch:hover{color:var(--accent)}.auth-terms-row{color:var(--text-muted);align-items:flex-start;gap:8px;font-size:13px;line-height:1.4;display:flex}.auth-terms-row input{margin-top:2px}.auth-terms-link{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.auth-terms-link:hover{color:var(--accent-hover)}.modal-backdrop{z-index:2000;background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-panel{background:var(--bg-main);width:100%;max-width:560px;max-height:80vh;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;display:flex;overflow:hidden}.modal-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.modal-title{margin:0;font-size:17px;font-weight:600}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:15px}.modal-close:hover{background:var(--bg-panel-hover);color:var(--text)}.modal-body{padding:20px 22px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border);flex-shrink:0;justify-content:flex-end;gap:10px;padding:14px 22px;display:flex}.modal-footer .auth-submit{margin-top:0;padding:9px 18px}.modal-agree-btn{width:auto}.legal-updated{color:var(--text-muted);margin:0 0 16px;font-size:12px}.legal-section{margin-bottom:16px}.legal-section h3{color:var(--text);margin:0 0 4px;font-size:14px;font-weight:600}.legal-section p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.6}.project-list-screen{background:var(--bg-panel);min-height:100svh;padding:32px 40px}.project-list-header{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.project-list-title{color:var(--accent);margin:0;font-size:24px}.project-list-user{color:var(--text-muted);align-items:center;gap:10px;font-size:13px;display:flex}.project-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;display:grid}.project-tile{background:var(--bg-main);border:1px solid var(--border);cursor:pointer;min-height:100px;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;justify-content:flex-end;gap:4px;padding:18px;display:flex;position:relative}.project-tile:hover{border-color:var(--accent)}.project-tile-new{color:var(--accent);justify-content:center;align-items:center;gap:8px;font-weight:600}.project-tile-new-icon{font-size:24px}.project-tile-name{font-weight:600}.project-tile-date{color:var(--text-muted);font-size:12px}.project-tile-delete{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 6px;position:absolute;top:8px;right:8px}.project-tile-delete:hover{color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, transparent)}.profile-screen{background:var(--bg-panel);flex-direction:column;align-items:center;min-height:100svh;padding:32px 40px 80px;display:flex}.profile-header{justify-content:space-between;align-items:center;width:100%;max-width:560px;margin-bottom:24px;display:flex}.profile-title{color:var(--accent);margin:0;font-size:24px}.profile-body{flex-direction:column;gap:16px;width:100%;max-width:560px;display:flex}.profile-section{background:var(--bg-main);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:18px 20px}.profile-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px;font-size:12px;font-weight:600}.profile-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:6px 0;font-size:14px;display:flex}.profile-row:last-of-type{border-bottom:none}.profile-row>span:first-child{color:var(--text-muted)}.profile-inline-action{border-top:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:6px;margin-top:10px;padding-top:10px;display:flex}.plan-badge{border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600}.plan-badge-free{background:var(--bg-panel-hover);color:var(--text-muted)}.plan-badge-paid{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--accent)}.plan-badge-admin{background:color-mix(in srgb, var(--danger) 16%, transparent);color:var(--danger)}.profile-legal-text{color:var(--text-muted);font-size:13px;line-height:1.6}.profile-danger{border-color:var(--danger)}.profile-delete-form{flex-direction:column;gap:10px;display:flex}.profile-delete-form input{font:inherit;border:1px solid var(--border);background:var(--bg-main);color:var(--text);border-radius:8px;padding:8px 10px;font-size:13px}.editor-shell{background:var(--bg-main);grid-template-rows:44px 1fr;grid-template-columns:216px 1fr 320px;height:100svh;display:grid}.editor-canvas-title{border-bottom:1px solid var(--border);border-left:1px solid var(--border);grid-area:1/2;align-items:center;padding:0 16px;font-weight:600;display:flex}.editor-center{border-left:1px solid var(--border);flex-direction:column;grid-area:2/2;min-width:0;min-height:0;display:flex}.editor-canvas-footer{color:var(--text-muted);border-top:1px solid var(--border);background:var(--bg-main);flex-shrink:0;padding:6px 16px;font-size:11px}.page-list{border-bottom:1px solid var(--border);padding-bottom:8px}.page-list-items{flex-direction:column;gap:2px;max-height:160px;padding:0 8px;display:flex;overflow-y:auto}.page-list-item{cursor:pointer;color:var(--text-muted);border-radius:8px;justify-content:space-between;align-items:center;gap:6px;padding:7px 10px;font-size:13px;display:flex}.page-list-item:hover{background:var(--bg-panel-hover);color:var(--text)}.page-list-item.active{background:var(--bg-main);color:var(--accent);border:1px solid var(--border);font-weight:600}.page-list-item-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-list-item-delete{color:inherit;opacity:.6;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:10px}.page-list-item-delete:hover{opacity:1;background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger)}.page-list-add{border:1px dashed var(--border);width:calc(100% - 16px);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:8px;margin:4px 8px 0;padding:7px;font-size:12px}.page-list-add:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.page-list-add:disabled{opacity:.5;cursor:default}.tool-panel{background:var(--bg-panel);border-right:1px solid var(--border);flex-direction:column;grid-area:1/1/span 2;min-height:0;display:flex}.tool-panel-file-row{border-bottom:1px solid var(--border);display:flex}.tool-panel-file-btn{cursor:pointer;border:none;border-right:1px solid var(--border);background:0 0;flex:1;padding:10px 0;font-size:16px}.tool-panel-file-btn:last-child{border-right:none}.tool-panel-file-btn:hover:not(:disabled){background:var(--bg-panel-hover)}.tool-panel-file-btn:disabled{color:var(--text-muted);cursor:default;opacity:.5}.tool-panel-save-state{color:var(--text-muted);border-bottom:1px solid var(--border);padding:6px 12px;font-size:12px}.tool-panel-heading{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding:12px 12px 4px;font-size:12px;font-weight:600}.tool-panel-palette{flex-direction:column;flex:1;gap:4px;min-height:0;padding:4px 8px 12px;display:flex;overflow-y:auto}.tool-panel-user{border-top:1px solid var(--border);flex-shrink:0;padding:6px}.user-menu-btn{cursor:pointer;text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:8px;display:flex}.user-menu-btn:hover{background:var(--bg-panel-hover)}.user-menu-avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:600;display:flex}.user-menu-name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.palette-item{background:var(--bg-main);border:1px solid var(--border);cursor:grab;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.palette-item:hover{border-color:var(--accent)}.palette-item-icon{width:20px;height:20px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.canvas{background-color:var(--bg-panel);background-image:radial-gradient(circle, var(--border) 1px, transparent 1px);background-size:20px 20px;flex:1;min-width:0;position:relative;overflow:auto}.canvas-element{cursor:move;-webkit-user-select:none;user-select:none}.canvas-element.selected{outline:1px dashed var(--accent);outline-offset:2px}.canvas-element-inner{border-radius:inherit;justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden}.resize-handle{background:var(--accent);border:1px solid #fff;border-radius:2px;width:9px;height:9px;position:absolute}.resize-handle-nw{cursor:nwse-resize;top:-5px;left:-5px}.resize-handle-n{cursor:ns-resize;top:-5px;left:calc(50% - 4px)}.resize-handle-ne{cursor:nesw-resize;top:-5px;right:-5px}.resize-handle-e{cursor:ew-resize;top:calc(50% - 4px);right:-5px}.resize-handle-se{cursor:nwse-resize;bottom:-5px;right:-5px}.resize-handle-s{cursor:ns-resize;bottom:-5px;left:calc(50% - 4px)}.resize-handle-sw{cursor:nesw-resize;bottom:-5px;left:-5px}.resize-handle-w{cursor:ew-resize;top:calc(50% - 4px);left:-5px}.marquee-select{border:1px dashed var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);pointer-events:none;position:absolute}.widget-preview{pointer-events:none;white-space:nowrap;align-items:center;width:100%;height:100%;padding:0 8px;font-size:13px;display:flex;overflow:hidden}.widget-label-text{color:var(--text);justify-content:flex-start}.widget-button-text{color:#fff;justify-content:center;font-weight:600}.widget-textinput-text{color:var(--text-muted);justify-content:flex-start}.widget-checkline{color:var(--text);align-items:center;gap:8px;display:flex}.widget-checkbox-box{border:1px solid var(--text-muted);border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:15px;height:15px;font-size:11px;display:flex}.widget-radio-dot{border:1px solid var(--text-muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:15px;height:15px;font-size:9px;display:flex}.widget-combobox-text{color:var(--text);justify-content:space-between}.widget-combobox-arrow{color:var(--text-muted)}.widget-slider{justify-content:flex-start}.widget-slider-track{background:var(--border);border-radius:2px;width:100%;height:4px;position:relative}.widget-slider-fill{background:var(--accent);border-radius:2px;height:100%;position:absolute;top:0;left:0}.widget-slider-handle{background:var(--accent);border:2px solid #fff;border-radius:50%;width:13px;height:13px;position:absolute;top:50%;transform:translate(-50%,-50%)}.widget-preview.widget-switch-track,.widget-preview.widget-led{padding:0}.widget-switch-track{background:var(--border);border-radius:999px;width:100%;height:100%;position:relative}.widget-switch-track.on{background:var(--accent)}.widget-switch-knob{aspect-ratio:1;background:#fff;border-radius:50%;position:absolute;top:3px;bottom:3px;left:3px;box-shadow:0 1px 2px #0000004d}.widget-switch-track.on .widget-switch-knob{left:auto;right:3px}.widget-graph-wrap,.widget-gauge-wrap{padding:6px}.widget-graph-svg{width:100%;height:100%;overflow:visible}.widget-gauge-svg{width:100%;height:100%}.widget-gauge-text{fill:var(--text);font-size:18px;font-weight:600}.widget-led{background:radial-gradient(circle at 35% 30%,#666,#2a2a2a);border:1px solid #0006;border-radius:50%;width:100%;height:100%}.widget-led.on{background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--led-color) 70%, #fff), var(--led-color));box-shadow:0 0 8px 2px color-mix(in srgb, var(--led-color) 70%, transparent)}.canvas-element-group{cursor:move}.properties-group-btn{border:1px solid var(--accent);width:100%;color:var(--accent);cursor:pointer;background:0 0;border-radius:8px;padding:9px;font-size:13px;font-weight:600}.properties-group-btn:hover{background:color-mix(in srgb, var(--accent) 10%, transparent)}.context-menu{z-index:1000;background:var(--bg-main);border:1px solid var(--border);min-width:180px;box-shadow:var(--shadow);border-radius:10px;flex-direction:column;gap:2px;padding:6px;display:flex}.context-menu-item{text-align:left;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 10px;font-size:13px}.context-menu-item:hover:not(:disabled){background:var(--bg-panel-hover)}.context-menu-item:disabled{color:var(--text-muted);cursor:default}.context-menu-item.danger{color:var(--danger)}.context-menu-item.danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 10%, transparent)}.properties-panel{background:var(--bg-panel);border-left:1px solid var(--border);grid-area:1/3/span 2;min-width:0;padding:16px;overflow:hidden auto}.properties-empty{color:var(--text-muted);padding:8px 0;font-size:13px}.properties-empty-small{color:var(--text-muted);font-size:12px}.properties-heading{margin-bottom:12px;font-weight:600}.properties-section{border-bottom:1px solid var(--border);margin-bottom:18px;padding-bottom:18px}.properties-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:11px;font-weight:600}.properties-field{color:var(--text-muted);flex-direction:column;gap:4px;margin-bottom:10px;font-size:12px;display:flex}.properties-field input,.properties-field select,.properties-field textarea{font:inherit;border:1px solid var(--border);background:var(--bg-main);color:var(--text);box-sizing:border-box;border-radius:6px;width:100%;min-width:0;padding:6px 8px;font-size:13px}.properties-field input[type=color]{width:48px;padding:2px}.properties-checkline{color:var(--text-muted);align-items:center;gap:6px;margin-bottom:10px;font-size:12px;display:flex}.properties-grid-2,.properties-grid-3,.properties-grid-4{gap:8px;margin-bottom:10px;display:grid}.properties-grid-2{grid-template-columns:repeat(2,1fr)}.properties-grid-3{grid-template-columns:repeat(3,1fr)}.properties-grid-4{grid-template-columns:repeat(4,1fr)}.properties-grid-2 label,.properties-grid-3 label,.properties-grid-4 label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:11px;display:flex}.properties-grid-2 input,.properties-grid-2 select,.properties-grid-3 input,.properties-grid-3 select,.properties-grid-4 input{font:inherit;border:1px solid var(--border);background:var(--bg-main);color:var(--text);border-radius:6px;width:100%;min-width:0;padding:5px 6px;font-size:12px}.properties-row{gap:8px;display:flex}.properties-row button{border:1px solid var(--border);background:var(--bg-main);cursor:pointer;border-radius:8px;flex:1;padding:7px;font-size:12px}.properties-row button:hover{border-color:var(--accent);color:var(--accent)}.properties-row button.active{background:var(--accent);border-color:var(--accent);color:#fff}.properties-delete{border:1px solid var(--danger);width:100%;color:var(--danger);cursor:pointer;background:0 0;border-radius:8px;padding:9px;font-size:13px}.properties-delete:hover{background:color-mix(in srgb, var(--danger) 10%, transparent)}
