@import "https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700&family=Nunito:wght@500;700;800&family=IBM+Plex+Mono:wght@400;500&display=swap";*{box-sizing:border-box}body{color:#17364d;background:radial-gradient(circle at 12% 8%,#6fd8a238,#0000 42%),radial-gradient(circle at 88% 18%,#ffaf6833,#0000 38%),linear-gradient(#eff9ff 0%,#edf7ff 56%,#f5fbf3 100%);margin:0;font-family:Nunito,Segoe UI,sans-serif}#root{min-height:100vh}:root{--ink:#153046;--muted:#4e6476;--panel:#fff;--line:#c7d9e8;--accent:#ff8f3f;--accent-strong:#ef6f1d;--accent-soft:#f0f9ff;--mint:#6fd8a2;--sky:#63b3ff;--sun:#ffd86a;--bubble:#f7fbff}.app-shell{background:radial-gradient(circle at 10% 8%,#ffd86a59 0 140px,#0000 150px),radial-gradient(circle at 90% 0,#63b3ff59 0 120px,#0000 130px),radial-gradient(circle at 0 92%,#6fd8a24d 0 170px,#0000 180px),linear-gradient(#eef9ff 0%,#f4fbff 55%,#f7fcf4 100%);flex-direction:column;gap:1rem;min-height:100vh;padding:1rem;display:flex;position:relative}.app-header{background:linear-gradient(120deg,#fff,#f3fbff 45%,#f9fff1);border:2px solid #d5e7f5;border-radius:24px;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;display:flex;box-shadow:0 14px 30px #2348651f}.branding{align-items:center;gap:1rem;display:flex}.branding img{object-fit:cover;border:3px solid #dcf2ff;border-radius:16px;width:72px;height:72px;box-shadow:0 6px 14px #1f588a38}.branding-icon{background:linear-gradient(135deg,#e8f8ff,#edfff5);border:3px solid #dcf2ff;border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;width:72px;height:72px;font-size:3rem;line-height:1;display:flex;box-shadow:0 6px 14px #1f588a38}.branding h1{color:#124064;margin:0;font-family:"Baloo 2",sans-serif;font-size:1.8rem}.branding p{color:var(--muted);margin:.2rem 0 0;font-family:Nunito,sans-serif;font-size:1rem}.serial-controls{flex-wrap:wrap;justify-content:flex-end;gap:.55rem;display:flex}.test-mode-exit-btn{color:#7c2d12;background:#fde68a;border-color:#f59e0b;font-weight:800}.test-mode-exit-btn:hover{background:#fcd34d}.status{color:#1f5d88;background:#eaf6ff;border:1.5px solid #b6d7ef;border-radius:999px;align-items:center;gap:.4rem;padding:.4rem .85rem;font-family:Nunito,sans-serif;font-size:.86rem;font-weight:700;transition:background .2s,color .2s,border-color .2s;display:inline-flex}.status-dot{background:#94a3b8;border-radius:50%;flex-shrink:0;width:9px;height:9px;transition:background .2s}.status.status-connected{color:#166534;background:#dcfce7;border-color:#86efac}.status.status-connected .status-dot{background:#16a34a;box-shadow:0 0 0 3px #16a34a40}.status.status-disconnected{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.status.status-disconnected .status-dot{background:#dc2626}.status.status-connecting{color:#854d0e;background:#fef9c3;border-color:#fde047}.status.status-connecting .status-dot{background:#ca8a04;animation:1s infinite pulse-dot}.status.status-ssh-neutral{color:#0c4a6e;background:#e0f2fe;border-color:#7dd3fc}.status.status-ssh-neutral .status-dot{background:#0284c7;box-shadow:0 0 0 3px #0284c733}.status.status-ssh-good{color:#166534;background:#dcfce7;border-color:#86efac}.status.status-ssh-good .status-dot{background:#16a34a;box-shadow:0 0 0 3px #16a34a40}.status.status-ssh-warn{color:#854d0e;background:#fef9c3;border-color:#fde047}.status.status-ssh-warn .status-dot{background:#ca8a04;box-shadow:0 0 0 3px #ca8a0433}.status.status-ssh-bad{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.status.status-ssh-bad .status-dot{background:#dc2626;box-shadow:0 0 0 3px #dc262633}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.serial-toggle-btn{color:#fff;cursor:pointer;background:linear-gradient(#60a5fa,#3b82f6);border:1px solid #2563eb;border-radius:12px;padding:.5rem .9rem;font-family:Nunito,sans-serif;font-weight:800;transition:background .15s,transform .1s}.serial-toggle-btn:hover{background:linear-gradient(#3b82f6,#2563eb);border-color:#1d4ed8;transform:translateY(-1px);box-shadow:0 6px 16px #2563eb4d}.serial-toggle-btn.connected{background:linear-gradient(#f87171,#ef4444);border-color:#dc2626}.serial-toggle-btn.connected:hover{background:linear-gradient(#ef4444,#dc2626);border-color:#b91c1c;box-shadow:0 6px 16px #dc26264d}button{color:#fff;cursor:pointer;background:linear-gradient(#ffab56,#ff8f3f);border:1px solid #d8681f;border-radius:12px;padding:.52rem .8rem;font-family:Nunito,sans-serif;font-weight:800;transition:transform .12s,box-shadow .12s,background .12s,border-color .12s}button:hover{background:var(--accent-strong);border-color:#c85a14;transform:translateY(-1px);box-shadow:0 8px 18px #f17b2b4d}.workspace-layout{grid-template-columns:1.6fr 1fr;align-items:stretch;gap:1rem;min-height:calc(100vh - 150px);display:grid;position:relative;overflow:hidden}.view-tabs{background:#fffffff2;border:2px solid #c9dded;border-radius:999px;align-items:center;gap:.45rem;width:fit-content;padding:.35rem;display:inline-flex}.tab-button{color:#1f5277;box-shadow:none;background:#f6fbff;border:1px solid #b8d0e6;border-radius:999px;padding:.42rem .9rem}.tab-button:hover{color:#17486a;box-shadow:none;background:#e9f4ff}.tab-button.active{color:#fff;background:linear-gradient(#ffac58,#ff8d3d);border-color:#dc6f27}.code-editor-layout{box-sizing:border-box;flex-direction:column;gap:.5rem;height:calc(100vh - 80px);padding:.75rem 1rem;display:flex}.code-editor-toolbar{background:#f0f8ff;border:1px solid #c5dff4;border-radius:8px;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.code-editor-title{color:#17486a;font-size:1rem;font-weight:800}.code-editor-lock-badge{color:#92400e;background:#fef3c7;border:1px solid #fcd34d;border-radius:6px;padding:2px 8px;font-size:.75rem;font-weight:700}.code-editor-hint{color:#567;flex:1;font-size:.8rem}.code-editor-actions{flex-wrap:wrap;gap:.4rem;display:flex}.code-editor-btn{cursor:pointer;border:none;border-radius:6px;padding:.35rem .75rem;font-family:Nunito,sans-serif;font-size:.82rem;font-weight:700;transition:opacity .15s}.code-editor-btn:hover{opacity:.85}.code-editor-btn.sync{color:#1a5276;background:#e2f0fb;border:1px solid #a9cfe8}.code-editor-btn.convert{color:#5b21b6;background:#f3e8ff;border:1px solid #c4b5fd}.code-editor-btn.upload{color:#065f46;background:#d1fae5;border:1px solid #6ee7b7}.code-editor-btn.upload-run{color:#fff;background:linear-gradient(135deg,#ff8d3d,#ffac58)}.code-editor-surface{border:1px solid #b8d0e6;border-radius:8px;flex:1;grid-template-columns:3.8rem minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.code-editor-line-numbers{color:#698399;text-align:right;-webkit-user-select:none;user-select:none;background:#0a121a;border-right:1px solid #2a4053;padding:1rem .6rem;font-family:Courier New,Courier,monospace;font-size:.9rem;line-height:1.55;overflow:hidden}.code-editor-line-number{white-space:pre}.code-editor-textarea{color:#e8f4fd;resize:none;tab-size:4;white-space:pre;background:#0f1923;border:0;border-radius:0;outline:none;padding:1rem;font-family:Courier New,Courier,monospace;font-size:.9rem;line-height:1.55;overflow:auto}.code-editor-textarea:focus{border-color:#4f94c8;box-shadow:0 0 0 3px #4f94c833}.code-editor-textarea::placeholder{color:#4a6680}.simulation-layout{grid-template-columns:1.35fr 1fr;grid-template-areas:"board sensors""log log";gap:1rem;min-height:calc(100vh - 210px);display:grid}.simulation-panel{min-width:0}.simulation-panel:first-child{grid-area:board}.simulation-panel:nth-child(2){grid-area:sensors}.simulation-log-panel{grid-area:log}.simulation-header-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;display:flex}.simulation-actions{flex-wrap:wrap;gap:.45rem;display:flex}.sim-window-tabs{background:#f4faff;border:1px solid #bfd6e7;border-radius:999px;gap:.4rem;margin-top:.7rem;padding:.3rem;display:inline-flex}.sim-pin-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:.45rem;margin-top:.8rem;display:grid}.sim-pin-board{flex-direction:column;gap:.28rem;margin-top:.8rem;font-size:.75rem;display:flex}.sim-pin-row{grid-template-columns:1fr 1fr;gap:.3rem;display:grid}.sim-pin{color:#1d567d;background:#eef8ff;border:1px solid #b8d7ef;padding:.42rem .3rem;font-size:.78rem}.sim-pin-board .sim-pin{white-space:nowrap;border-radius:4px;align-items:center;gap:.3rem;padding:.28rem .4rem;font-size:.73rem;display:flex;overflow:hidden}.sim-pin-dot{flex-shrink:0;font-size:.65rem}.sim-pin-state{opacity:.75;margin-left:auto;font-size:.68rem}.sim-pin-power{color:#7a0000;background:#fff0f0;border:1px solid #f5a0a0}.sim-pin-power .sim-pin-dot{color:#c00}.sim-pin-gnd{color:#ccc;background:#2a2a2a;border:1px solid #111}.sim-pin-gnd .sim-pin-dot{color:#888}.sim-pin-special{color:#666;background:#f5f5f5;border:1px solid #ccc}.sim-pin-gpio{color:#1d567d;background:#eef8ff;border:1px solid #b8d7ef}.sim-pin-gpio.on{color:#083720;background:linear-gradient(135deg,#88e0b4,#52c58e);border-color:#2ca56c}.sim-pin-gpio.on .sim-pin-dot{color:#083720}.sim-pin-pwm-label{font-weight:700}.sim-pin.on{color:#083720;background:linear-gradient(#88e0b4,#52c58e);border-color:#2ca56c}.sim-device-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin-top:.75rem;display:grid}.sim-device-card{background:#f7fcff;border:1px solid #c8dced;border-radius:14px;padding:.65rem}.sim-device-card h3{color:#1f5277;margin:0;font-family:"Baloo 2",sans-serif}.sim-device-card p{color:#355970;margin:.4rem 0 0;font-family:Nunito,sans-serif;font-size:.88rem}.sim-device-select{color:#355970;gap:.28rem;margin-top:.45rem;font-family:Nunito,sans-serif;font-size:.86rem;display:grid}.sim-device-select select{border:1px solid #bfd6e7;border-radius:10px;padding:.35rem .5rem;font-family:Nunito,sans-serif}.sim-lamp{background:radial-gradient(circle,#f3f8fc,#dce6ee);border:2px solid #bfd2df;border-radius:50%;width:58px;height:58px;margin-top:.55rem;box-shadow:inset 0 0 0 3px #ffffffa6}.sim-lamp.on{background:radial-gradient(circle,#fff9bd,#ffd86a);border-color:#f3b73d;box-shadow:inset 0 0 0 3px #ffffffb3,0 0 16px #ffcb5799}.sim-motor-pins{grid-template-columns:1fr 1fr;gap:.45rem;margin-top:.45rem;display:grid}.sim-motor-indicator{color:#24587d;text-align:center;background:#e9f5ff;border:1px solid #bdd2e4;border-radius:12px;margin-top:.6rem;padding:.42rem .5rem;font-family:Nunito,sans-serif;font-weight:800}.sim-motor-indicator.forward{color:#177249;background:#e8fcef;border-color:#8ad0a9}.sim-motor-indicator.reverse{color:#93530d;background:#fff7e6;border-color:#ffd18a}.sim-motor-indicator.stopped{color:#4a657a;background:#f1f7fc;border-color:#c8d7e6}.sim-sensor-grid{gap:.65rem;margin-top:.7rem;display:grid}.sim-sensor-control{color:#36566f;gap:.32rem;font-family:Nunito,sans-serif;display:grid}.sim-sensor-control input[type=range]{accent-color:#ff8f3f}.simulation-log-panel pre{color:#d8f2ff;background:#12314a;border:1px solid #b9cce0;border-radius:14px;min-height:220px;max-height:320px;margin-top:.6rem;padding:.85rem;font-family:IBM Plex Mono,monospace;font-size:.8rem;overflow:auto}.panel{background:var(--panel);border:2px solid var(--line);border-radius:22px;padding:1rem;box-shadow:0 10px 24px #2248681a}.panel h2{color:var(--ink);letter-spacing:.2px;margin:0;font-family:"Baloo 2",sans-serif}.panel p{color:var(--muted);margin-top:.35rem;font-family:Nunito,sans-serif}.blockly-section{background:linear-gradient(#fff,#f5fbff 70%,#f4fff8);flex-direction:column;min-width:0;display:flex}.blockly-canvas{border:2px solid #caddea;border-radius:16px;height:72vh;margin-top:.8rem;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffffb3}.function-test-lock-overlay{z-index:30;color:#fff;text-align:center;pointer-events:none;background:#07182cc7;border:1px solid #ffffff47;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:.45rem;padding:.8rem 1rem;display:flex;position:absolute;top:14px;left:14px;right:14px}.function-test-lock-overlay strong{font-family:"Baloo 2",sans-serif;font-size:1.15rem}.function-test-lock-overlay p{max-width:520px;margin:0;font-family:Nunito,sans-serif;font-size:.92rem;font-weight:700}.function-test-lock-overlay button{color:#0f3b66;cursor:pointer;pointer-events:auto;background:#fff;border:2px solid #b9d6ee;border-radius:10px;margin-top:.4rem;padding:.45rem .8rem;font-family:Nunito,sans-serif;font-weight:800}.app-shell.test-mode-active button,.app-shell.test-mode-active input,.app-shell.test-mode-active select,.app-shell.test-mode-active textarea,.app-shell.test-mode-active a{pointer-events:none;opacity:.55}.app-shell.test-mode-active .test-mode-allow,.app-shell.test-mode-active .test-mode-allow *{pointer-events:auto;opacity:1}.blocklyToolboxDiv{background:linear-gradient(#fff,#f4fbff)!important;border-right:2px solid #d0e2f1!important;padding:.45rem .3rem .55rem!important}.blocklyTreeRoot{padding-top:.25rem}.blocklyTreeRow{transition:background-color .12s,border-color .12s,transform .12s;border:1px solid #0000!important;border-radius:14px!important;margin:5px 6px!important;padding:7px 10px!important;font-family:Nunito,sans-serif!important;font-weight:800!important}.blocklyTreeRow:hover{transform:translate(1px);background:#f0f8ff!important;border-color:#cce3f5!important}.blocklyTreeSelected{box-shadow:0 3px 8px #5c96c233;background:linear-gradient(#e8f5ff,#d9efff)!important;border-color:#9ac7e9!important}.blocklyTreeLabel{color:#184a6d!important;font-family:Nunito,sans-serif!important;font-size:14px!important}.blocklyTreeSeparator{border-bottom:none!important}.blocklyScrollbarVertical,.blocklyScrollbarHorizontal{opacity:.85}.blocklyFlyoutBackground{fill:#eef8ff!important}.blocklyMainBackground{stroke:#d6e6f3!important}.blocklyZoom>image,.blocklyTrash>image{filter:saturate(1.15)}.controls-column{grid-template-rows:auto auto auto auto 1fr;gap:1rem;min-width:0;min-height:0;padding-right:.2rem;display:grid;overflow:auto}.pin-panel{background:linear-gradient(#fff,#f3fff8)}.library-panel{background:linear-gradient(#fff,#f4faff)}.project-panel{background:linear-gradient(#fff,#fffaf2)}.lesson-panel{background:linear-gradient(#fff,#f8f5ff)}.output-panel{background:linear-gradient(#fff,#f5fbff)}.panel-head-row{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.panel-toggle{border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;padding:0;font-size:1.05rem;line-height:1;display:inline-flex}.lesson-head-inline,.output-head-inline{width:100%}.pin-panel{flex-direction:column;min-height:140px;display:flex;position:relative}.panel-collapsible-body{min-height:0;padding-right:.2rem;overflow:auto}.resize-boundary{z-index:12;background:0 0;border:none;border-radius:0;padding:0;position:absolute}.resize-boundary:before{content:"";opacity:.55;background:#a8b8c8;border-radius:999px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.resize-boundary:hover:before{opacity:1;background:#6e8499;transform:translate(-50%,-50%)}.resize-boundary-sidebar{cursor:col-resize;width:16px;top:10px;bottom:10px;transform:translate(-50%)}.resize-boundary-sidebar:before{width:4px;height:64px}.resize-boundary-toolbox{cursor:col-resize;width:16px;top:0;bottom:0;transform:translate(-50%)}.resize-boundary-toolbox:before{width:4px;height:64px}.resize-boundary-bottom{cursor:row-resize;align-self:center;width:100%;height:14px;margin-top:.55rem;position:static}.resize-boundary-bottom:before{width:64px;height:4px;margin:0 auto}.is-resizing{-webkit-user-select:none;user-select:none}.pin-top-actions{flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.7rem;display:flex}.pin-top-actions a{color:#1f6a97;background:#eef8ff;border:1px solid #b8d7ef;border-radius:10px;padding:.45rem .6rem;font-family:Nunito,sans-serif;font-size:.9rem;text-decoration:none}.manual-pin-row{flex-wrap:wrap;align-items:flex-end;gap:.55rem;margin-top:.65rem;display:flex}.manual-pin-row label{color:var(--muted);gap:.28rem;font-size:.84rem;display:grid}.manual-pin-row input,.manual-pin-row select,.library-form input,.template-row select,.lesson-select{background:#fff;border:1px solid #c2d9ea;border-radius:10px;padding:.48rem .56rem;font-family:Nunito,sans-serif}.manual-pin-row input{min-width:96px}.pin-status{color:#275a87;margin-top:.5rem;font-size:.85rem}.pin-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:.45rem;margin-top:.8rem;display:grid}.pin-grid button{color:#1e587f;background:#eaf6ff;border-color:#b0d6f2;padding:.45rem .3rem;font-size:.84rem}.pin-grid button:hover{background:#d8edff}.preset-section{border-top:1px dashed #cfd9e3;margin-top:.9rem;padding-top:.8rem}.preset-section h3{color:#1b4b6d;margin:0;font-family:"Baloo 2",sans-serif;font-size:1.05rem}.preset-section p{margin:.3rem 0 0}.preset-grid{gap:.45rem;margin-top:.55rem;display:grid}.preset-card{background:#f6fbff;border:1px solid #d5e0ea;border-radius:14px;padding:.55rem}.preset-card h4{color:#1f587d;margin:0;font-family:"Baloo 2",sans-serif;font-size:.96rem}.preset-card p{margin:.3rem 0 0;font-size:.84rem}.preset-pins{color:#2b6b8e;font-family:IBM Plex Mono,monospace}.preset-actions{flex-wrap:wrap;gap:.45rem;margin-top:.45rem;display:flex}.preset-actions button{margin-top:0}.library-form{gap:.4rem;margin-top:.7rem;display:flex}.library-panel ul,.lesson-steps{gap:.5rem;margin:.75rem 0 0;padding:0;list-style:none;display:grid}.library-panel li{background:#f3f9ff;border:1px solid #d9e2e8;border-radius:10px;justify-content:space-between;align-items:center;padding:.45rem .6rem;display:flex}.library-panel li span{font-family:IBM Plex Mono,monospace;font-size:.88rem}.project-actions,.template-row{gap:.45rem;margin-top:.7rem;display:flex}.template-row{margin-top:.6rem}.autosave-row{flex-wrap:wrap;align-items:center;gap:.7rem;margin-top:.5rem;display:flex}.autosave-toggle{color:#1f3d62;align-items:center;gap:.35rem;font-family:Nunito,sans-serif;font-size:.82rem;font-weight:700;display:inline-flex}.autosave-toggle input[type=checkbox]{accent-color:#2563eb;width:14px;height:14px}.autosave-status{color:#2563eb;margin:0;font-family:Nunito,sans-serif;font-size:.82rem;font-weight:700}.lesson-header{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.lesson-toggle{color:var(--muted);align-items:center;gap:.35rem;font-size:.9rem;display:flex}.lesson-objective,.lesson-history{margin-top:.55rem;font-size:.9rem}.lesson-history{color:#49637a;font-size:.84rem}.lesson-progress-row{align-items:center;gap:.6rem;margin-top:.55rem;display:flex}.lesson-progress-track{background:#e2e9ef;border-radius:999px;flex:1;height:10px;overflow:hidden}.lesson-progress-track span{background:linear-gradient(90deg,#1d8745,#39a964);height:100%;display:block}.lesson-steps li{background:#f7fafc;border:1px solid #dce4eb;border-radius:10px;grid-template-columns:auto 1fr;align-items:center;gap:.5rem;padding:.46rem .58rem;display:grid}.lesson-steps li.done{background:#effff5;border-color:#a1e0b9}.lesson-steps li span:first-child{text-transform:uppercase;color:#35556f;font-size:.78rem;font-weight:700}.output-header{justify-content:space-between;align-items:center;display:flex}.output-panel pre{color:#d8f2ff;background:#12314a;border:1px solid #b9cce0;border-radius:12px;min-height:300px;max-height:380px;margin-top:.8rem;padding:.85rem;font-family:IBM Plex Mono,monospace;font-size:.82rem;overflow:auto}.pinout-modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;background:#113a5859;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.pinout-modal{background:linear-gradient(#fff,#f4fbff);border:2px solid #c6ddef;border-radius:22px;width:min(1040px,100%);max-height:90vh;padding:1rem;overflow:auto;box-shadow:0 18px 36px #1a436533}.pinout-header{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.pinout-header h2{margin:0}.pinout-preset-info{background:#edf8ff;border:1px solid #b8dbee;border-radius:10px;margin-top:.6rem;padding:.5rem .6rem}.pinout-preset-info p{margin:.25rem 0 0}.pinout-legend{flex-wrap:wrap;gap:.45rem;margin-top:.6rem;display:flex}.legend-chip{border:1px solid #0000;border-radius:999px;padding:.25rem .5rem;font-size:.76rem}.legend-signal{color:#0c5b4f;background:#d7f5ee;border-color:#9ad9ca}.legend-control{color:#4d3a8e;background:#ede8ff;border-color:#c1b6ef}.legend-power{color:#865309;background:#fff2d9;border-color:#eccb8e}.legend-ground{color:#43515e;background:#e8edf3;border-color:#bfc8d1}.pinout-map{background:#f7fcff;border:1px solid #c8dced;border-radius:12px;gap:.4rem;margin-top:.8rem;padding:.6rem;display:grid}.pinout-row{grid-template-columns:1fr 1fr;gap:.4rem;display:grid}.pinout-pin{color:#184f32;background:#e3f2e8;border:1px solid #8fbe9e;justify-content:space-between;align-items:center;gap:.35rem;display:flex}.pinout-pin-meta{color:#5d6772;background:#f2f4f7;border-color:#d4dbe2}.pinout-pin-signal{background:#d7efe0;border-color:#7db193}.pinout-pin-control{color:#154c34;background:#cfe7d8;border-color:#79a98b}.pinout-pin-power{color:#fff;background:brown;border-color:#7a1d1d}.pinout-pin-ground{color:#fff;background:#202226;border-color:#16181b}.pin-role{background:#ffffffc7;border:1px solid #10402538;border-radius:999px;padding:.14rem .36rem;font-size:.72rem}.pinout-image{background:#f8fbff;border:1px solid #d0dbe4;border-radius:12px;width:100%;margin-top:1rem}@media (width<=1180px){.workspace-layout{grid-template-columns:1fr}.resize-boundary-sidebar,.resize-boundary-toolbox{display:none}.blockly-canvas{height:56vh}.simulation-layout{grid-template-columns:1fr;grid-template-areas:"board""sensors""log"}.sim-pin-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sim-device-grid{grid-template-columns:1fr}}@media (width<=700px){.app-shell{padding:.6rem}.app-header{flex-direction:column;align-items:flex-start}.serial-controls{justify-content:flex-start;width:100%}.pin-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.pinout-row{grid-template-columns:1fr}}.board-selector-area{flex-shrink:0;align-items:center;gap:.45rem;display:flex}.board-selector-label{color:var(--muted);white-space:nowrap;font-family:Nunito,sans-serif;font-size:.85rem;font-weight:800}.board-select{color:#124064;cursor:pointer;background:#f3fbff;border:2px solid #b4d6ef;border-radius:12px;padding:.45rem .7rem;font-family:Nunito,sans-serif;font-size:.95rem;font-weight:700;transition:border-color .12s}.board-select:hover,.board-select:focus{border-color:var(--accent);outline:none}.board-info-btn{color:#1e587f;background:0 0;border:1.5px solid #b4d6ef;border-radius:10px;padding:.3rem .45rem;font-size:1.1rem;line-height:1}.board-info-btn:hover{border-color:var(--accent);box-shadow:none;background:#eaf6ff;transform:none}.board-info-card{background:#fff;border:2px solid #b4d6ef;border-radius:18px;max-width:540px;margin:-.4rem 0 .4rem;padding:1rem 1.2rem;font-family:Nunito,sans-serif;box-shadow:0 8px 24px #1e588a26}.board-info-card-header{color:#124064;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:1.05rem;display:flex}.board-info-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:.2rem .35rem;font-size:1rem}.board-info-close:hover{color:#b91c1c;box-shadow:none;background:#fee2e2;border-radius:6px;transform:none}.board-info-list{color:#1f4a6a;gap:.2rem;margin:.4rem 0;padding-left:1.2rem;font-size:.9rem;display:grid}.board-info-note{color:var(--muted);margin:.5rem 0 .3rem;font-size:.88rem;font-style:italic}.board-info-link{color:#1d76c4;font-size:.88rem;font-weight:700}.makeblock-ui-notes{color:#7c2d12;background:#fff7ed;border:1px solid #fdba74;border-radius:10px;margin:.45rem 0 .5rem;padding:.55rem .75rem .55rem 1.35rem;font-family:Nunito,sans-serif;font-size:.86rem}.makeblock-ui-notes.compact{margin-top:.35rem;margin-bottom:.35rem;font-size:.82rem}.makeblock-ui-notes li+li{margin-top:.25rem}.board-upload-note{color:#166534;white-space:nowrap;background:#f0fdf4;border:1px solid #86efac;border-radius:12px;padding:.5rem .75rem;font-family:Nunito,sans-serif;font-size:.86rem;font-weight:700}.rpi-save-run-btn{font-family:Nunito,sans-serif;font-weight:700;color:#fff!important;background:linear-gradient(#22c55e,#16a34a)!important;border:1px solid #15803d!important}.rpi-save-run-btn:hover:not(:disabled){filter:brightness(1.06)}.ssh-setup-btn{font-family:Nunito,sans-serif;font-weight:700;color:#fff!important;background:linear-gradient(#f59e0b,#d97706)!important;border:1px solid #b45309!important}.ssh-setup-btn:hover:not(:disabled){filter:brightness(1.06)}.rpi-run-unsaved-btn{font-family:Nunito,sans-serif;font-weight:700;color:#fff!important;background:linear-gradient(#4ade80,#16a34a)!important;border:1px solid #15803d!important}.rpi-run-unsaved-btn:hover:not(:disabled){filter:brightness(1.08)}.rpi-host-pill{white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:.35rem .65rem;font-family:Nunito,sans-serif;font-size:.78rem;font-weight:700}.rpi-host-pill.ok{color:#166534;background:#ecfdf3;border-color:#86efac}.rpi-host-pill.warn{color:#92400e;background:#fffbeb;border-color:#fcd34d}.pi-project-badge{white-space:nowrap;color:#1e3a8a;background:#eff6ff;border:1px solid #93c5fd;border-radius:999px;padding:.35rem .65rem;font-family:Nunito,sans-serif;font-size:.78rem;font-weight:700}.blockly-empty-hint{color:#7eb4d4;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1;justify-content:center;align-items:center;font-family:Nunito,sans-serif;font-size:1.25rem;font-weight:700;display:flex;position:absolute;inset:0}.connection-note-details{margin-bottom:.6rem;font-family:Nunito,sans-serif;font-size:.88rem}.connection-note-details summary{cursor:pointer;color:#1e587f;font-weight:700}.connection-note-details p{color:var(--muted);margin:.35rem 0 .2rem}.connection-note-details a{color:#1d76c4;font-size:.85rem;font-weight:700}.ssh-setup-modal{background:#fff;border:2px solid #f3d2a1;border-radius:14px;width:min(840px,92vw);max-height:88vh;padding:1rem 1rem 1.1rem;font-family:Nunito,sans-serif;overflow:auto;box-shadow:0 18px 36px #0f172a40}.ssh-setup-header{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.4rem;display:flex}.ssh-setup-header h2{color:#7c2d12;margin:0;font-size:1.15rem}.ssh-setup-note{color:#6b7280;margin:.2rem 0 .8rem;font-size:.9rem}.ssh-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.ssh-grid label{color:#374151;flex-direction:column;gap:.25rem;font-size:.84rem;font-weight:700;display:flex}.ssh-grid input{border:1px solid #d1d5db;border-radius:8px;padding:.45rem .55rem;font-family:Nunito,sans-serif;font-size:.9rem}.ssh-grid-span{grid-column:1/-1}.ssh-steps{color:#374151;margin:.8rem 0;padding-left:1.25rem;font-size:.9rem}.ssh-cmd-block{background:#f8fafc;border:1px solid #d1d5db;border-radius:10px;margin-top:.55rem;padding:.65rem .7rem}.ssh-cmd-block strong{color:#1f2937;font-size:.85rem}.ssh-cmd-block pre{color:#e5e7eb;background:#111827;border-radius:8px;margin:.35rem 0;padding:.55rem;font-size:.82rem;overflow-x:auto}.ssh-cmd-actions{flex-wrap:wrap;gap:.5rem;display:flex}.ssh-launch-note{color:#6b7280;margin:.35rem 0 0;font-size:.8rem}.ssh-check-output-label{color:#374151;margin-top:.45rem;font-size:.82rem;font-weight:700;display:block}.ssh-check-output{color:#1f2937;resize:vertical;border:1px solid #d1d5db;border-radius:8px;width:100%;min-height:92px;margin-top:.3rem;padding:.5rem .55rem;font-family:Nunito,sans-serif;font-size:.85rem}.ssh-check-status{margin:.45rem 0 0;font-size:.82rem;font-weight:700}.ssh-check-status-neutral{color:#0c4a6e}.ssh-check-status-good{color:#166534}.ssh-check-status-warn{color:#854d0e}.ssh-check-status-bad{color:#991b1b}.ssh-live-controls{flex-direction:column;gap:.35rem;margin-top:.45rem;display:flex}.ssh-live-row{color:#374151;align-items:center;gap:.45rem;font-size:.82rem;font-weight:700;display:flex}.ssh-live-controls input[type=text],.ssh-live-controls input[type=url],.ssh-live-controls input:not([type]){color:#1f2937;border:1px solid #d1d5db;border-radius:8px;padding:.45rem .55rem;font-family:Nunito,sans-serif;font-size:.88rem}.ssh-live-status{color:#4b5563;margin:.2rem 0 0;font-size:.8rem}@media (width<=760px){.ssh-grid{grid-template-columns:1fr}}.pinout-table-wrap{border:1px solid #d5e0ea;border-radius:10px;margin:.6rem 0;overflow-x:auto}.pinout-table{border-collapse:collapse;width:100%;font-family:Nunito,sans-serif;font-size:.84rem}.pinout-table th{color:#fff;text-align:left;background:#1e587f;padding:.45rem .7rem;font-weight:700}.pinout-table td{color:#1f3d54;border-bottom:1px solid #e8eef3;padding:.38rem .7rem}.pinout-table tr:last-child td{border-bottom:none}.pinout-table tr:nth-child(2n) td{background:#f3f9ff}.pinout-row-input-only td{color:#7c3aed}.pinout-external-link{color:#1d76c4;margin:.6rem 0 .3rem;font-family:Nunito,sans-serif;font-size:.88rem;font-weight:700;display:inline-block}.how-to-code-btn{color:#fff;white-space:nowrap;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:1px solid #4f46e5;border-radius:12px;flex-shrink:0;margin-left:auto;padding:.42rem .85rem;font-size:.88rem}.how-to-code-btn:hover{background:linear-gradient(135deg,#4f46e5,#7c3aed);border-color:#3730a3;box-shadow:0 6px 16px #6366f159}.htc-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:60;background:#113a5847;position:fixed;inset:0}.htc-panel{z-index:61;background:#fff;border-left:2px solid #c7d9e8;flex-direction:column;width:780px;max-width:100vw;height:100vh;animation:.26s cubic-bezier(.22,.61,.36,1) both htc-slide-in;display:flex;position:fixed;top:0;right:0;overflow:hidden;box-shadow:-12px 0 40px #1a436538}@keyframes htc-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.htc-panel-header{color:#fff;background:linear-gradient(120deg,#6366f1,#8b5cf6);flex-shrink:0;justify-content:space-between;align-items:center;padding:.85rem 1.1rem;display:flex}.htc-panel-title{letter-spacing:.3px;font-family:"Baloo 2",sans-serif;font-size:1.25rem;font-weight:700}.htc-header-actions{align-items:center;gap:.5rem;display:flex}.htc-action-btn,.htc-close-btn{color:#fff;cursor:pointer;background:#ffffff2e;border:1px solid #ffffff73;border-radius:10px;padding:.3rem .75rem;font-family:Nunito,sans-serif;font-size:.85rem;font-weight:700;transition:background .15s}.htc-action-btn:hover,.htc-close-btn:hover{box-shadow:none;background:#ffffff52;border-color:#ffffffb3;transform:none}.htc-panel.htc-fullscreen{border-radius:0;width:100vw;height:100vh;top:0;right:0}.htc-body{flex:1;display:flex;overflow:hidden}.htc-nav{background:#f8faff;border-right:1px solid #d5e0f0;flex-direction:column;flex-shrink:0;gap:.25rem;width:210px;padding:.6rem .5rem;display:flex;overflow-y:auto}.htc-nav-item{color:#1f4a6a;text-align:left;cursor:pointer;white-space:normal;box-shadow:none;background:0 0;border:1px solid #0000;border-radius:10px;align-items:flex-start;gap:.5rem;padding:.5rem .6rem;font-family:Nunito,sans-serif;font-size:.82rem;font-weight:700;line-height:1.35;transition:background .12s,border-color .12s;display:flex}.htc-nav-item:hover{box-shadow:none;background:#eef4ff;border-color:#c3d4f0;transform:none}.htc-nav-item.active{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-color:#4f46e5}.htc-nav-item.active:hover{background:linear-gradient(135deg,#4f46e5,#7c3aed);box-shadow:0 4px 12px #6366f14d}.htc-nav-num{background:#6366f124;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;min-width:22px;height:22px;font-size:.75rem;font-weight:800;display:inline-flex}.htc-nav-item.active .htc-nav-num{background:#ffffff40}.htc-nav-label{flex:1}.htc-content{background:#fafcff;flex:1;padding:1.25rem 1.4rem;overflow-y:auto}.htc-lesson h2{color:#1a3a5c;margin:0 0 .2rem;font-family:"Baloo 2",sans-serif;font-size:1.45rem}.htc-tagline{color:#4e6476;border-left:3px solid #8b5cf6;margin:0 0 1rem;padding-left:.7rem;font-family:Nunito,sans-serif;font-size:.95rem;font-style:italic}.htc-section{background:#fff;border:1px solid #d9e7f4;border-radius:14px;margin-bottom:.85rem;padding:.9rem 1rem;box-shadow:0 3px 10px #1e50820f}.htc-section h3{color:#1e4f76;margin:0 0 .55rem;font-family:"Baloo 2",sans-serif;font-size:1rem}.htc-section p{color:#2c4a60;margin:.4rem 0;font-family:Nunito,sans-serif;font-size:.92rem;line-height:1.55}.htc-section ul{color:#2c4a60;font-family:Nunito,sans-serif;font-size:.9rem;line-height:1.55}.htc-code-block{color:#d8f2ff;white-space:pre;background:#0f1923;border-radius:10px;margin:.55rem 0 0;padding:.75rem .9rem;font-family:IBM Plex Mono,Courier New,monospace;font-size:.8rem;line-height:1.55;overflow-x:auto}.htc-diagram{color:#1a3650;white-space:pre;background:#f0f4f8;border:1px solid #d0dde8;border-radius:10px;margin:.55rem 0 0;padding:.75rem .9rem;font-family:IBM Plex Mono,Courier New,monospace;font-size:.78rem;line-height:1.55;overflow-x:auto}.htc-tip{color:#1e3a5f;background:#eff6ff;border:1px solid #93c5fd;border-left:4px solid #3b82f6;border-radius:10px;margin-top:.65rem;padding:.65rem .85rem;font-family:Nunito,sans-serif;font-size:.88rem;line-height:1.5}.htc-warning{color:#7c2d12;background:#fff7ed;border:1px solid #fdba74;border-left:4px solid #f97316;border-radius:10px;margin-top:.65rem;padding:.65rem .85rem;font-family:Nunito,sans-serif;font-size:.88rem;line-height:1.5}.htc-warning p{margin:.35rem 0 0;color:#7c2d12!important}.htc-checklist{color:#1f3d54;gap:.4rem;padding:0;font-family:Nunito,sans-serif;font-size:.9rem;list-style:none;display:grid}.htc-checklist li:before{content:"☐ ";color:#6366f1;font-size:1rem}.htc-two-col{grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.5rem;display:grid}@media (width<=900px){.htc-panel{width:100vw}.htc-two-col{grid-template-columns:1fr}.htc-nav{width:180px}}@media (width<=600px){.htc-nav{display:none}.htc-content{padding:1rem}}.confirm-overlay{z-index:9000;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-box{text-align:center;background:#fff;border-radius:16px;width:90%;max-width:360px;padding:2rem 2.25rem 1.5rem;box-shadow:0 8px 40px #00000038}.confirm-message{color:var(--ink);margin:0 0 1.5rem;font-family:Nunito,sans-serif;font-size:1.1rem;font-weight:700;line-height:1.4}.confirm-actions{justify-content:center;gap:.75rem;display:flex}.confirm-btn{cursor:pointer;border:none;border-radius:10px;padding:.6rem 1.8rem;font-family:Nunito,sans-serif;font-size:1rem;font-weight:800;transition:transform .1s,opacity .1s}.confirm-btn:hover{opacity:.88;transform:scale(1.03)}.confirm-yes{background:var(--accent);color:#fff}.confirm-no{color:var(--ink);background:#e8edf2}.board-files-btn{color:#fff;cursor:pointer;background:#0ea5e9;border:none;border-radius:8px;padding:.3rem .8rem;font-family:Nunito,sans-serif;font-size:.82rem;font-weight:700}.board-files-btn:hover{background:#0284c7}.board-files-btn:disabled{opacity:.6;cursor:not-allowed}.board-files-panel-wrapper{z-index:800;flex-direction:column;align-items:flex-end;display:flex;position:fixed;top:120px;right:1.5rem}.board-files-modal{background:#fff;border-radius:16px;flex-direction:column;width:min(780px,92vw);max-height:calc(100vh - 140px);animation:.18s slide-down;display:flex;overflow:hidden;box-shadow:0 12px 48px #00000047}@keyframes slide-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.board-files-header{color:#fff;background:linear-gradient(120deg,#0ea5e9,#6366f1);justify-content:space-between;align-items:center;padding:.85rem 1.25rem;font-family:"Baloo 2",sans-serif;font-size:1.1rem;font-weight:700;display:flex}.board-files-header button{color:#fff;cursor:pointer;background:#fff3;border:1px solid #fff6;border-radius:8px;padding:.2rem .6rem;font-size:.9rem}.board-files-body{flex:1;display:flex;overflow:hidden}.board-files-list{background:#f8fafc;border-right:1px solid #e2e8f0;flex-direction:column;flex-shrink:0;gap:.3rem;width:180px;padding:.75rem .5rem;display:flex;overflow-y:auto}.board-file-item{text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:.45rem .65rem;font-family:IBM Plex Mono,monospace;font-size:.8rem;transition:background .12s}.board-file-item:hover{background:#e0f2fe;border-color:#7dd3fc}.board-file-item.active{background:#dbeafe;border-color:#60a5fa;font-weight:700}.board-file-item:disabled{opacity:.5;cursor:not-allowed}.board-file-refresh{color:#64748b;cursor:pointer;background:0 0;border:1px dashed #94a3b8;border-radius:8px;margin-top:auto;padding:.4rem;font-size:.78rem}.board-file-refresh:hover{background:#f1f5f9}.board-files-preview{flex-direction:column;flex:1;display:flex;overflow:hidden}.board-files-hint,.board-files-empty,.board-files-loading{color:#94a3b8;text-align:center;margin:auto;padding:2rem;font-family:Nunito,sans-serif;font-size:.95rem}.board-files-preview-header{background:#f8fafc;border-bottom:1px solid #e2e8f0;flex-shrink:0;justify-content:space-between;align-items:center;padding:.65rem 1rem;display:flex}.board-files-preview-header strong{color:var(--ink);font-family:IBM Plex Mono,monospace;font-size:.9rem}.board-files-preview-actions{gap:.5rem;display:flex}.board-files-preview-actions button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.3rem .75rem;font-family:Nunito,sans-serif;font-size:.8rem;font-weight:700}.board-files-preview-actions button:hover{opacity:.88}.board-files-preview-actions button:disabled{opacity:.4;cursor:not-allowed}.board-file-run-btn{background:linear-gradient(#34d399,#10b981)!important;border:1px solid #059669!important}.board-file-run-btn:hover:not(:disabled){filter:brightness(1.08);opacity:1!important}.board-file-stop-btn{background:linear-gradient(#f87171,#ef4444)!important;border:1px solid #dc2626!important}.board-file-stop-btn:hover:not(:disabled){filter:brightness(1.08);opacity:1!important}.board-file-save-btn{background:linear-gradient(#60a5fa,#3b82f6)!important;border:1px solid #2563eb!important}.board-file-save-btn:hover:not(:disabled){filter:brightness(1.08);opacity:1!important}.board-file-save-run-btn{background:linear-gradient(#22c55e,#16a34a)!important;border:1px solid #15803d!important}.board-file-save-run-btn:hover:not(:disabled){filter:brightness(1.08);opacity:1!important}.run-btn{font-weight:600;color:#fff!important;background:linear-gradient(#4ade80,#16a34a)!important;border:1px solid #15803d!important}.run-btn:hover:not(:disabled){filter:brightness(1.08)}.stop-running-btn{font-weight:600;animation:1.2s ease-in-out infinite pulse-red;color:#fff!important;background:linear-gradient(#f87171,#dc2626)!important;border:1px solid #b91c1c!important}@keyframes pulse-red{0%,to{opacity:1}50%{opacity:.75}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.terminal-btn{font-weight:600;color:#e2e8f0!important;background:linear-gradient(#475569,#334155)!important;border:1px solid #64748b!important}.terminal-btn:hover:not(:disabled){filter:brightness(1.15)!important}.terminal-overlay{z-index:999;background:0 0;position:fixed;inset:0}.terminal-modal{-webkit-user-select:none;user-select:none;z-index:1200;background:#0f172a;border:1px solid #334155;border-radius:10px;flex-direction:column;min-width:300px;min-height:200px;display:flex;position:fixed;overflow:hidden;box-shadow:0 8px 32px #00000080}.terminal-maximized{border-radius:0!important;width:100vw!important;height:100vh!important;inset:0!important}.terminal-resize-handle{z-index:10;position:absolute}.terminal-resize-n{cursor:n-resize;height:5px;top:0;left:6px;right:6px}.terminal-resize-s{cursor:s-resize;height:5px;bottom:0;left:6px;right:6px}.terminal-resize-e{cursor:e-resize;width:5px;top:6px;bottom:6px;right:0}.terminal-resize-w{cursor:w-resize;width:5px;top:6px;bottom:6px;left:0}.terminal-resize-ne{cursor:ne-resize;width:10px;height:10px;top:0;right:0}.terminal-resize-nw{cursor:nw-resize;width:10px;height:10px;top:0;left:0}.terminal-resize-se{cursor:se-resize;width:10px;height:10px;bottom:0;right:0}.terminal-resize-sw{cursor:sw-resize;width:10px;height:10px;bottom:0;left:0}.terminal-winchr-close{font-weight:600;color:#fff!important;background:linear-gradient(#f87171,#dc2626)!important;border:1px solid #b91c1c!important}.terminal-winchr-close:hover{filter:brightness(1.1)!important}.terminal-modal-header{color:#94a3b8;border-bottom:1px solid #334155;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.8rem;font-weight:600;display:flex}.terminal-modal-actions{align-items:center;gap:.4rem;display:flex}.terminal-modal-actions button{border-radius:4px!important;padding:.2rem .5rem!important;font-size:.75rem!important}.terminal-idle{color:#64748b;font-size:.75rem}.restart-board-btn{font-weight:600;color:#fff!important;background:linear-gradient(#f87171,#dc2626)!important;border:1px solid #b91c1c!important}.restart-board-btn:hover:not(:disabled){filter:brightness(1.12)!important}.terminal-modal-output{color:#e2e8f0;white-space:pre-wrap;word-break:break-all;-webkit-user-select:text;user-select:text;cursor:text;flex:1;margin:0;padding:.75rem;font-family:IBM Plex Mono,monospace;font-size:.78rem;overflow-y:auto}.terminal-input-row{background:#1e293b;border-top:1px solid #334155;flex-shrink:0;align-items:center;gap:0;padding:.35rem .75rem;display:flex}.terminal-prompt{color:#4ade80;-webkit-user-select:none;user-select:none;flex-shrink:0;font-family:IBM Plex Mono,monospace;font-size:.78rem;font-weight:700}.terminal-input{color:#e2e8f0;caret-color:#4ade80;background:0 0;border:none;outline:none;flex:1;padding:0;font-family:IBM Plex Mono,monospace;font-size:.78rem}.terminal-input::placeholder{color:#475569;font-style:italic}.terminal-input:disabled{opacity:.4;cursor:not-allowed}.board-files-code{color:#e2e8f0;background:#0f172a;flex:1;margin:0;padding:1rem 1.25rem;font-family:IBM Plex Mono,monospace;font-size:.82rem;line-height:1.6;overflow:auto}.filename-dialog{max-width:420px}.filename-hint{color:var(--muted);margin:-.5rem 0 1rem;font-family:Nunito,sans-serif;font-size:.9rem}.filename-input-row{background:#f0f7ff;border:2px solid #93c5fd;border-radius:10px;align-items:center;gap:.3rem;margin-bottom:1.25rem;padding:.1rem .6rem .1rem .1rem;transition:border-color .15s;display:flex}.filename-input-row:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.filename-input{color:var(--ink);background:0 0;border:none;outline:none;flex:1;min-width:0;padding:.5rem .4rem;font-family:IBM Plex Mono,monospace;font-size:.95rem}.filename-ext{color:var(--muted);white-space:nowrap;flex-shrink:0;font-family:IBM Plex Mono,monospace;font-size:.88rem}.confirm-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.sim-clear-btn{color:#6b7280;cursor:pointer;background:0 0;border:1px solid #6b7280;border-radius:8px;padding:.3rem .7rem;font-family:inherit;font-size:.78rem;font-weight:600;transition:background .15s,color .15s,border-color .15s}.sim-clear-btn:hover{color:#ef4444;background:#fee2e2;border-color:#ef4444}.save-py-btn{color:#fff;cursor:pointer;background:linear-gradient(#34d399,#10b981);border:1px solid #059669;border-radius:12px;padding:.45rem .9rem;font-family:inherit;font-size:.85rem;font-weight:600;transition:background .15s,transform .1s,box-shadow .1s}.save-py-btn:hover{background:linear-gradient(#10b981,#059669);border-color:#047857;transform:translateY(-1px);box-shadow:0 6px 14px #10b9814d}.clear-board-btn{color:#fff;cursor:pointer;background:linear-gradient(#f87171,#ef4444);border:1px solid #dc2626;border-radius:12px;padding:.45rem .9rem;font-family:Nunito,sans-serif;font-size:.88rem;font-weight:800;transition:background .15s,transform .1s,box-shadow .1s}.clear-board-btn:hover{background:linear-gradient(#ef4444,#dc2626);border-color:#b91c1c;transform:translateY(-1px);box-shadow:0 6px 14px #dc26264d}.new-block-btn{color:#fff;cursor:pointer;white-space:nowrap;background:linear-gradient(135deg,#7c3aed,#6d28d9);border:1px solid #5b21b6;border-radius:12px;flex-shrink:0;padding:.45rem .9rem;font-family:Nunito,sans-serif;font-size:.88rem;font-weight:800;transition:background .15s,transform .1s,box-shadow .1s}.new-block-btn:hover{background:linear-gradient(135deg,#6d28d9,#5b21b6);border-color:#4c1d95;transform:translateY(-1px);box-shadow:0 6px 14px #6d28d959}.custom-block-builder-modal{background:#fff;border-radius:20px;width:92vw;max-width:520px;max-height:90vh;padding:1.75rem 2rem 1.5rem;overflow-y:auto;box-shadow:0 16px 48px #0000003d}.custom-block-builder-header{justify-content:space-between;align-items:center;margin-bottom:.6rem;display:flex}.custom-block-builder-header h2{color:var(--ink);margin:0;font-family:"Baloo 2",sans-serif;font-size:1.25rem}.custom-block-builder-form{gap:.85rem;display:grid}.custom-block-builder-form label{color:var(--ink);gap:.28rem;font-family:Nunito,sans-serif;font-size:.9rem;font-weight:700;display:grid}.custom-block-builder-form input[type=text],.custom-block-builder-form input[type=number]{color:var(--ink);background:#fff;border:1px solid #c2d9ea;border-radius:10px;padding:.48rem .56rem;font-family:Nunito,sans-serif;font-size:.9rem}.custom-block-builder-form input[type=text]:focus,.custom-block-builder-form input[type=number]:focus{border-color:#7c3aed;outline:none;box-shadow:0 0 0 3px #7c3aed26}.custom-block-builder-row{flex-wrap:wrap;align-items:flex-start;gap:1.25rem;display:flex}.custom-block-builder-fieldset{color:var(--ink);border:1px solid #c2d9ea;border-radius:10px;gap:.75rem;padding:.45rem .75rem;font-family:Nunito,sans-serif;font-size:.9rem;display:flex}.custom-block-builder-fieldset legend{color:var(--muted);padding:0 .25rem;font-size:.88rem;font-weight:700}.custom-block-builder-fieldset label{align-items:center;gap:.25rem;font-size:.88rem;font-weight:500;display:inline-flex}.custom-block-builder-preview{color:#1a3650;background:#f0f4f8;border:1px solid #d0dde8;border-radius:10px;padding:.55rem .75rem;font-family:Nunito,sans-serif;font-size:.88rem}.custom-block-builder-preview code{color:#5b21b6;font-family:IBM Plex Mono,monospace;font-size:.85rem}.board-files-header{cursor:grab;-webkit-user-select:none;user-select:none}.board-files-header:active{cursor:grabbing}.drag-hint{opacity:.6;letter-spacing:-1px;cursor:grab;font-size:1.1rem}.samples-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:60;background:#113a5852;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.samples-modal{z-index:61;background:#fff;border-radius:16px;flex-direction:column;width:95vw;max-width:860px;height:76vh;animation:.22s cubic-bezier(.22,.61,.36,1) both samples-pop-in;display:flex;overflow:hidden;box-shadow:0 20px 60px #113a5847}@keyframes samples-pop-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.samples-modal-header{color:#fff;background:linear-gradient(120deg,#ff8f3f,#ef6f1d);flex-shrink:0;justify-content:space-between;align-items:center;padding:.85rem 1.1rem;display:flex}.samples-modal-title{font-family:"Baloo 2",sans-serif;font-size:1.2rem;font-weight:700}.samples-modal-close{color:#fff;cursor:pointer;background:#fff3;border:1px solid #fff6;border-radius:6px;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:1rem;display:flex}.samples-modal-close:hover{background:#ffffff59}.samples-layout{flex:1;grid-template-columns:120px 260px 1fr;display:grid;overflow:hidden}.samples-nav{border-right:1px solid var(--line);background:var(--bubble);flex-direction:column;gap:.25rem;padding:.75rem .5rem;display:flex}.samples-cat-btn{color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:10px;flex-direction:column;align-items:center;gap:.25rem;padding:.6rem .4rem;font-family:Nunito,sans-serif;font-size:.75rem;font-weight:700;transition:background .15s;display:flex}.samples-cat-btn:hover{background:var(--accent-soft)}.samples-cat-btn.active{background:var(--accent);color:#fff}.samples-cat-emoji{font-size:1.4rem}.samples-list{border-right:1px solid var(--line);flex-direction:column;gap:.5rem;padding:.75rem;display:flex;overflow-y:auto}.samples-card{border:2px solid var(--line);background:var(--panel);cursor:pointer;text-align:left;border-radius:10px;align-items:flex-start;gap:.6rem;padding:.65rem .75rem;transition:border-color .15s,background .15s;display:flex}.samples-card:hover{border-color:var(--accent);background:var(--accent-soft)}.samples-card.active{border-color:var(--accent);background:#fff4ec}.samples-card-emoji{flex-shrink:0;margin-top:.05rem;font-size:1.5rem}.samples-card-text strong{color:var(--ink);margin-bottom:.2rem;font-family:Nunito,sans-serif;font-size:.85rem;font-weight:800;display:block}.samples-card-text p{color:var(--muted);margin:0;font-size:.75rem;line-height:1.4}.samples-detail{flex-direction:column;gap:.75rem;padding:1.25rem 1.5rem;display:flex;overflow-y:auto}.samples-detail-header{align-items:center;gap:.6rem;display:flex}.samples-detail-emoji{font-size:2rem}.samples-detail-header h2{color:var(--ink);margin:0;font-family:"Baloo 2",sans-serif;font-size:1.3rem}.samples-detail-desc{color:var(--muted);margin:0;font-size:.9rem;line-height:1.6}.samples-tips{background:var(--accent-soft);border-radius:10px;padding:.85rem 1rem}.samples-tips h3{color:var(--ink);margin:0 0 .5rem;font-family:Nunito,sans-serif;font-size:.85rem;font-weight:800}.samples-tips ul{flex-direction:column;gap:.3rem;margin:0;padding-left:1.2rem;display:flex}.samples-tips li{color:var(--ink);font-size:.82rem;line-height:1.5}.samples-load-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;align-self:flex-start;margin-top:auto;padding:.65rem 1.4rem;font-family:Nunito,sans-serif;font-size:.95rem;font-weight:800;transition:background .15s}.samples-load-btn:hover{background:var(--accent-strong)}.samples-detail-empty{height:100%;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;font-size:.9rem;display:flex}.samples-detail-empty span{font-size:2.5rem}
