@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";*{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;touch-action:pan-y;width:100%;max-width:100vw;height:100%;overflow:hidden}#app{height:100%;overflow:hidden}body{color:#e2e8f0;background:#0b0f19;font-family:Inter,sans-serif}.app-layout{flex-direction:column;width:100%;max-width:100vw;height:100%;min-height:0;display:flex;overflow:hidden}.navbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10;background:#0f172ab3;border-bottom:1px solid #ffffff14;flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:10px;width:100%;min-width:0;max-width:100vw;height:auto;min-height:56px;padding:10px 24px;display:flex;box-shadow:0 4px 20px #0003}.nav-left{align-items:center;gap:20px;display:flex}.logo{color:#38bdf8;letter-spacing:-.5px;text-shadow:0 0 10px #38bdf880;font-size:20px;font-weight:700}.project-name{color:#94a3b8;cursor:pointer;border-radius:4px;padding:4px 8px;font-size:16px;font-weight:500;transition:all .2s}.project-name:hover{color:#f8fafc;background:#ffffff0d}.nav-right{flex-wrap:wrap;gap:12px;display:flex}.nav-btn{cursor:pointer;border:none;border-radius:20px;padding:8px 16px;font-family:Inter,sans-serif;font-size:14px;font-weight:600;transition:all .2s}.nav-btn.primary{color:#fff;background:#3b82f6;box-shadow:0 0 10px #3b82f666}.nav-btn.primary:hover{background:#2563eb;box-shadow:0 0 15px #3b82f699}.nav-btn.success{color:#fff;background:#10b981;box-shadow:0 0 10px #10b98166}.nav-btn.success:hover{background:#059669;box-shadow:0 0 15px #10b98199}.nav-btn.outline{color:#cbd5e1;background:0 0;border:1px solid #475569}.nav-btn.outline:hover{color:#f8fafc;background:#ffffff0d}.nav-btn.upload{color:#fff;background:#ff6d00;align-items:center;display:inline-flex}.nav-btn.upload:hover{background:#e65100}.nav-btn.upload:disabled{cursor:not-allowed;background:#9e9e9e}.nav-btn.serial{color:#fff;background:#7c4dff}.nav-btn.serial:hover{background:#651fff}.nav-btn.outline.connected{color:#fff;background:#00c853;border-color:#00c853}.nav-btn.outline.connected:hover{background:#00b348}.serial-panel{z-index:100;background:#1e2227;border-top:2px solid #7c4dff;flex-direction:column;height:280px;animation:.2s ease-out slideUp;display:flex;position:fixed;bottom:0;left:0;right:0}.serial-panel.hidden{display:none}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.serial-panel-header{background:#282c34;border-bottom:1px solid #181a1f;justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.serial-panel-title{color:#abb2bf;font-family:monospace;font-size:13px;font-weight:600}.serial-controls{align-items:center;gap:8px;display:flex}.baud-select{color:#abb2bf;background:#21252b;border:1px solid #3a3f4b;border-radius:4px;outline:none;padding:4px 8px;font-family:monospace;font-size:12px}.serial-action-btn{color:#abb2bf;cursor:pointer;background:#3a3f4b;border:none;border-radius:4px;padding:4px 10px;font-size:12px}.serial-action-btn:hover{color:#fff;background:#4a4f5b}.serial-output{color:#0f8;white-space:pre-wrap;word-break:break-all;flex:1;padding:8px 16px;font-family:Cascadia Code,Fira Code,monospace;font-size:13px;overflow-y:auto}.serial-input-row{border-top:1px solid #3a3f4b;display:flex}.serial-input{color:#fff;background:#282c34;border:none;outline:none;flex:1;padding:8px 16px;font-family:monospace;font-size:13px}.serial-send-btn{color:#fff;cursor:pointer;background:#7c4dff;border:none;padding:8px 20px;font-size:13px;font-weight:600;transition:background .2s}.serial-send-btn:hover{background:#651fff}.main-workspace{flex:1 1 0;min-height:0;display:flex;position:relative;overflow:hidden}.code-panel{background:#282c34;border-right:2px solid #222;flex-direction:column;width:40%;min-width:300px;transition:width .3s;display:flex}.code-panel.hidden{display:none}.code-panel-header{color:#abb2bf;background:#21252b;border-bottom:1px solid #181a1f;justify-content:space-between;align-items:center;padding:8px 12px;font-family:monospace;font-size:13px;display:flex}.code-panel-title{font-weight:600}.close-btn{color:#abb2bf;cursor:pointer;background:0 0;border:none;font-size:18px;line-height:1}.close-btn:hover{color:#fff}#editor-container{flex:1 1 0;font-size:14px;overflow:auto}#editor-container .cm-editor{height:100%}.compiler-output{color:#0f8;background:#1e2227;border-top:2px solid #222;height:150px;padding:8px;font-family:monospace;font-size:12px;overflow-y:auto}.canvas{background-color:#0b0f19;background-image:linear-gradient(#38bdf80d 1px,#0000 1px),linear-gradient(90deg,#38bdf80d 1px,#0000 1px),linear-gradient(#38bdf81a 2px,#0000 2px),linear-gradient(90deg,#38bdf81a 2px,#0000 2px);background-size:20px 20px,20px 20px,100px 100px,100px 100px;flex:1 1 0;min-width:0;min-height:0;position:relative;overflow:auto;box-shadow:inset 0 0 50px #00000080}#wireLayer{pointer-events:none;z-index:14;width:100%;height:100%;position:absolute;top:0;left:0}@keyframes wireDraw{0%{stroke-dashoffset:var(--wire-length);filter:drop-shadow(0 0 8px #fffc)drop-shadow(0 0 16px #fffc)}70%{filter:drop-shadow(0 0 12px #ffffffe6)drop-shadow(0 0 24px #ffffffe6)}to{stroke-dashoffset:0;filter:drop-shadow(0 4px 4px #00000080)}}.wire-animated{stroke-dasharray:var(--wire-length);stroke-dashoffset:var(--wire-length);animation:1.2s cubic-bezier(.25,1,.5,1) forwards wireDraw}.right-sidebar{--sidebar-width:280px;width:var(--sidebar-width);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10;background:#0f172ab3;border-left:1px solid #ffffff14;flex-direction:column;flex-shrink:0;min-width:200px;max-width:min(560px,50vw);height:100%;min-height:0;max-height:100%;display:flex;overflow:hidden;box-shadow:-4px 0 15px #0000004d}.right-sidebar.hidden{display:none!important}.sidebar-resizer{cursor:col-resize;z-index:11;touch-action:none;background:0 0;flex-shrink:0;width:6px;margin-left:-3px;position:relative}.sidebar-resizer.hidden{display:none!important}.sidebar-resizer:after{content:"";background:#e0e0e0;border-radius:1px;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:2px}.sidebar-resizer:hover:after,.sidebar-resizer.is-dragging:after{background:#1a73e8}.sidebar-header{border-bottom:1px solid #f0f0f0;flex-direction:column;flex-shrink:0;gap:12px;padding:16px;display:flex}.category-select{color:#e2e8f0;cursor:pointer;background:#0f172acc;border:1px solid #ffffff1a;border-radius:6px;outline:none;padding:8px;font-family:Inter,sans-serif;font-size:14px}.category-select option{color:#e2e8f0;background:#0f172a}.search-input{color:#e2e8f0;background:#0f172acc;border:1px solid #ffffff1a;border-radius:20px;outline:none;padding:8px 12px;font-family:Inter,sans-serif;font-size:13px;transition:all .2s}.search-input:focus{border-color:#38bdf8;box-shadow:0 0 10px #38bdf833}.component-list{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1 1 0;min-height:0;overflow:hidden auto}.component-list-grid{grid-template-columns:1fr 1fr;align-content:start;gap:12px;padding:16px;display:grid}.component-list::-webkit-scrollbar{width:8px}.component-list::-webkit-scrollbar-thumb{background:#c5cbd3;border-radius:4px}.component-list::-webkit-scrollbar-thumb:hover{background:#9aa0a6}.component{cursor:grab;color:#e2e8f0;text-align:center;background:#1e293bb3;border:1px solid #ffffff1a;border-radius:8px;flex-direction:column;align-items:center;gap:8px;min-width:0;padding:12px 8px;font-size:12px;font-weight:500;transition:all .2s cubic-bezier(.175,.885,.32,1.275);display:flex;box-shadow:0 4px 6px #0000001a}.component:hover{color:#38bdf8;border-color:#38bdf8;transform:translateY(-2px);box-shadow:0 4px 15px #38bdf833}.component-icon{background:#0f172a80;border-radius:6px;justify-content:center;align-items:center;width:40px;height:40px;display:flex;overflow:hidden}.component-svg-icon{pointer-events:none;-webkit-user-select:none;user-select:none}.placed-component{cursor:grab;-webkit-user-select:none;user-select:none;z-index:10;background:0 0;border:none;padding:0;display:block;position:absolute;overflow:visible}.component-body{position:relative;overflow:visible}.component-name-badge{color:#e2e8f0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;z-index:8;background:#0f172ae6;border:1px solid #ffffff1a;border-radius:10px;max-width:160px;padding:2px 8px;font-size:10px;font-weight:600;position:absolute;bottom:-18px;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 2px 5px #0000004d}.placed-component:active{cursor:grabbing}.placed-component.selected{outline-offset:4px;filter:drop-shadow(0 0 8px #38bdf866);outline:2px dashed #38bdf8}.pin-group{z-index:15;pointer-events:none;position:absolute;transform:translate(-50%,-50%)}.pin-group .pin{pointer-events:auto}.pin{cursor:crosshair;background:#1e293b;border:2px solid #94a3b8;border-radius:50%;width:14px;height:14px;transition:all .2s;position:relative;box-shadow:0 1px 3px #00000080}.pin:hover{background:#38bdf8;border-color:#0ea5e9;transform:scale(1.2);box-shadow:0 0 12px #38bdf8cc}.pin-label{color:#f8fafc;white-space:nowrap;pointer-events:none;z-index:100;opacity:0;visibility:hidden;background:#0f172af2;border:1px solid #ffffff1a;border-radius:4px;padding:3px 6px;font-family:Inter,Arial,sans-serif;font-size:10px;font-weight:600;line-height:1.1;transition:opacity .15s,transform .15s,visibility .15s;position:absolute;box-shadow:0 4px 6px #0006}.pin-group:hover .pin-label{opacity:1;visibility:visible}.pin-label-top{bottom:calc(100% + 6px);left:50%;transform:translate(-50%,4px)}.pin-group:hover .pin-label-top{transform:translate(-50%)}.pin-label-bottom{top:calc(100% + 6px);left:50%;transform:translate(-50%,-4px)}.pin-group:hover .pin-label-bottom{transform:translate(-50%)}.pin-label-left{top:50%;right:calc(100% + 6px);transform:translate(4px,-50%)}.pin-group:hover .pin-label-left{transform:translateY(-50%)}.pin-label-right{top:50%;left:calc(100% + 6px);transform:translate(-4px,-50%)}.pin-group:hover .pin-label-right{transform:translateY(-50%)}.pin-label-power{color:#fca5a5;border-color:#f871714d}.pin-label-gnd{color:#94a3b8;border-color:#94a3b84d}.pin-label-signal{color:#7dd3fc;border-color:#38bdf84d}.component-body[data-pin-density=high] .pin{width:11px;height:11px}.pin.left{top:50%;left:-7px;transform:translateY(-50%)}.pin.right{top:50%;right:-7px;transform:translateY(-50%)}.pin.top{top:-7px;left:50%;transform:translate(-50%)}.pin.bottom{bottom:-7px;left:50%;transform:translate(-50%)}.pin.left-pin{left:25%}.pin.right-pin{left:75%}.pin.left:hover,.pin.right:hover{transform:translateY(-50%)scale(1.2)}.floating-properties{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20;background:#0f172ad9;border:1px solid #ffffff1a;border-radius:8px;flex-direction:column;width:260px;transition:opacity .2s,transform .2s;display:flex;position:absolute;top:20px;right:20px;box-shadow:0 8px 32px #00000080}.floating-properties.hidden{opacity:0;pointer-events:none;transform:translateY(-10px)}.properties-header{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.properties-header h3{color:#e2e8f0;font-size:14px;font-weight:600}#close-properties{color:#64748b;cursor:pointer;background:0 0;border:none;font-size:18px}#close-properties:hover{color:#f8fafc;text-shadow:0 0 8px #f8fafc}.properties-content{color:#cbd5e1;padding:16px;font-size:13px}.svg-component{pointer-events:none;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out;display:block}.placed-component.led-lit .svg-component{filter:drop-shadow(0 0 12px red)drop-shadow(0 0 24px #f55)brightness(1.5)}@media (width<=1024px){.nav-btn{padding:6px 12px;font-size:13px}}@media (width<=850px){.project-name{display:none}.navbar{padding:8px 16px}.nav-left{gap:10px}}@media (width<=650px){.nav-btn{padding:6px 10px;font-size:11px}.nav-right{gap:6px}.logo{font-size:18px}}@media (width<=480px){.nav-btn{padding:4px 6px;font-size:10px}.navbar{gap:6px;padding:6px 10px}.logo{font-size:16px}}@keyframes spin-wheel-fwd{0%{stroke-dashoffset:14px}to{stroke-dashoffset:0}}@keyframes spin-wheel-rev{0%{stroke-dashoffset:0}to{stroke-dashoffset:14px}}.placed-component[data-m1="1"] .wheel.m1,.placed-component[data-m2="1"] .wheel.m2,.placed-component[data-m3="1"] .wheel.m3,.placed-component[data-m4="1"] .wheel.m4{animation:.3s linear infinite spin-wheel-fwd}.placed-component[data-m1="-1"] .wheel.m1,.placed-component[data-m2="-1"] .wheel.m2,.placed-component[data-m3="-1"] .wheel.m3,.placed-component[data-m4="-1"] .wheel.m4{animation:.3s linear infinite spin-wheel-rev}#ai-chat-fab{color:#fff;cursor:pointer;z-index:99;background:#a855f7;border:none;border-radius:24px;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:600;transition:all .2s;display:flex;position:absolute;bottom:24px;left:24px;box-shadow:0 4px 15px #a855f766}#ai-chat-fab.hidden{display:none!important}#ai-chat-fab:hover{transform:translateY(-2px)scale(1.03);box-shadow:0 8px 28px #6c47ff99}#ai-chat-fab svg{flex-shrink:0}.ai-chat-panel{z-index:1999;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0f0f19f5;border:1px solid #ffffff1a;border-radius:16px;flex-direction:column;width:380px;max-height:560px;animation:.25s cubic-bezier(.34,1.56,.64,1) chatSlideIn;display:flex;position:fixed;bottom:80px;left:24px;overflow:hidden;box-shadow:0 24px 60px #0000008c,0 0 0 1px #6c47ff33}@keyframes chatSlideIn{0%{opacity:0;transform:translateY(20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.ai-chat-panel.hidden{display:none}.ai-chat-header{background:linear-gradient(135deg,#6c47ff4d,#a855f733);border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.ai-chat-header-left{align-items:center;gap:10px;display:flex}.ai-avatar{background:linear-gradient(135deg,#6c47ff,#a855f7);border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;font-size:24px;display:flex}.ai-chat-title{color:#fff;font-size:14px;font-weight:700}.ai-chat-subtitle{color:#ffffff80;margin-top:1px;font-size:11px}.ai-chat-close{color:#ffffff80;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:20px;transition:color .2s,background .2s}.ai-chat-close:hover{color:#fff;background:#ffffff1a}.ai-chat-messages{scroll-behavior:smooth;flex-direction:column;flex:1;gap:10px;padding:12px 14px;display:flex;overflow-y:auto}.ai-chat-messages::-webkit-scrollbar{width:4px}.ai-chat-messages::-webkit-scrollbar-track{background:0 0}.ai-chat-messages::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.ai-msg{display:flex}.ai-msg.user{justify-content:flex-end}.ai-msg.ai{justify-content:flex-start}.ai-msg-bubble{word-break:break-word;border-radius:14px;max-width:88%;padding:10px 13px;font-size:13px;line-height:1.55}.ai-msg.user .ai-msg-bubble{color:#fff;background:linear-gradient(135deg,#6c47ff,#a855f7);border-bottom-right-radius:4px}.ai-msg.ai .ai-msg-bubble{color:#e2e8f0;background:#ffffff12;border:1px solid #ffffff14;border-bottom-left-radius:4px}.ai-msg-bubble code{color:#38bdf8;background:#00000059;border:1px solid #ffffff0d;border-radius:4px;padding:2px 6px;font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:12px}.ai-msg-bubble pre{background:#0a0f19cc;border:1px solid #ffffff1a;border-radius:8px;margin:8px 0;padding:10px 12px;overflow-x:auto;box-shadow:inset 0 2px 4px #0000004d}.ai-msg-bubble pre code{color:#a3e635;background:0 0;border:none;padding:0}.ai-msg-bubble h3{color:#38bdf8;margin:12px 0 6px;font-size:15px;font-weight:600}.ai-msg-bubble h4{color:#a855f7;margin:10px 0 4px;font-size:13px;font-weight:600}.ai-msg-bubble table{border-collapse:separate;border-spacing:0;border:1px solid #ffffff1a;border-radius:6px;width:100%;margin:10px 0;font-size:12px;overflow:hidden}.ai-msg-bubble td{border-bottom:1px solid #ffffff14;border-right:1px solid #ffffff0d;padding:6px 10px}.ai-msg-bubble tr:last-child td{border-bottom:none}.ai-msg-bubble td:last-child{border-right:none}.ai-msg-bubble tr:first-child td{color:#38bdf8;background:#38bdf826;font-weight:600}.ai-msg-bubble ul{margin:6px 0;padding-left:20px}.ai-msg-bubble li{margin:4px 0}.ai-msg-bubble strong{color:#f8fafc;font-weight:600}.ai-msg-bubble em{color:#cbd5e1;font-style:italic}.ai-typing-bubble{align-items:center;gap:5px;display:flex;padding:12px 16px!important}.typing-dot{background:#fff6;border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite typingBounce}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typingBounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}.ai-chat-input-row{background:#0003;border-top:1px solid #ffffff14;gap:8px;padding:12px 14px;display:flex}.ai-chat-input{color:#e2e8f0;background:#ffffff12;border:1px solid #ffffff1f;border-radius:10px;outline:none;flex:1;padding:9px 12px;font-family:Inter,sans-serif;font-size:13px;transition:border-color .2s}.ai-chat-input::placeholder{color:#ffffff4d}.ai-chat-input:focus{border-color:#6c47ff99}.ai-chat-send{color:#fff;cursor:pointer;background:linear-gradient(135deg,#6c47ff,#a855f7);border:none;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;transition:transform .15s,box-shadow .15s;display:flex}.ai-chat-send:hover{transform:scale(1.07);box-shadow:0 4px 14px #6c47ff80}.ai-chat-chips{border-top:1px solid #ffffff0f;flex-wrap:wrap;gap:6px;padding:8px 14px 10px;display:flex}.ai-chip{color:#c4b5fd;cursor:pointer;white-space:nowrap;background:#6c47ff2e;border:1px solid #6c47ff59;border-radius:20px;padding:5px 11px;font-family:Inter,sans-serif;font-size:12px;transition:background .15s,transform .15s,border-color .15s}.ai-chip:hover{color:#fff;background:#6c47ff61;border-color:#6c47ffb3;transform:translateY(-1px)}.ai-chat-panel{max-height:620px!important}@media (width<=1024px){.navbar{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;gap:8px;padding:8px 10px;overflow-x:auto}.placed-component{transform-origin:0 0;transform:scale(.65)}.nav-right{flex-wrap:nowrap}.project-name{display:none}.logo{font-size:16px}.right-sidebar{z-index:50;width:100%;max-width:100%;height:100%;box-shadow:none;background:#0f172afa;border-left:none;position:absolute;top:0;right:0}.sidebar-resizer{display:none!important}.code-panel{z-index:50;border-right:none;width:100%;min-width:100%;height:100%;position:absolute;top:0;left:0}.serial-panel{height:50vh}.ai-chat-panel{z-index:100;max-width:none;height:60vh;bottom:16px;right:16px;width:calc(100vw - 32px)!important;max-height:60vh!important}.floating-properties{z-index:45;width:calc(100vw - 20px);max-width:320px;top:10px;right:10px}.sidebar-header{padding-right:10px}#close-sidebar-mobile{margin-left:8px;padding:0 5px;font-size:20px;display:inline-block!important}}
