:root{--purple: #1f1976;--purple-deep: #17125a;--purple-night: #0b0930;--lavender: #ada8eb;--lavender-deep: #5b52c9;--lavender-soft: #f0eefc;--mint: #cbf1d0;--orange: #ffa45f;--pink: #f27eb0;--paper: #ffffff;--surface: #f7f7fb;--ink: #010204;--ink-soft: #4c4a63;--line: #e5e3f2;--font-sans: "Nunito Sans", "IBM Plex Sans Arabic", system-ui, sans-serif;--font-display: "Bricolage Grotesque", "Noto Kufi Arabic", system-ui, sans-serif;--radius-card: 20px;--shadow-card: 0 10px 30px rgba(31, 25, 118, .06)}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--font-sans);color:var(--ink);background:linear-gradient(180deg,var(--paper) 0%,#f5f3fb 560px);-webkit-font-smoothing:antialiased}:lang(ar),:lang(ar) *{letter-spacing:0!important}:focus-visible{outline:3px solid var(--pink);outline-offset:3px;border-radius:4px}#app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 18px;background:var(--paper);border-bottom:2px solid var(--line);flex-wrap:wrap}.brand{display:flex;align-items:baseline;gap:10px}.brand-name{font-family:var(--font-display);font-weight:800;font-size:1.35rem;color:var(--purple)}.brand-sub{font-family:var(--font-display);font-weight:700;font-size:.95rem;color:var(--purple);background:var(--mint);padding:3px 12px;border-radius:999px}.topbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-display);font-weight:800;font-size:.95rem;background:var(--lavender-deep);color:#fff;padding:10px 22px;border-radius:999px;border:0;cursor:pointer;box-shadow:0 4px 0 var(--purple);transition:transform .12s,box-shadow .12s}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(2px);box-shadow:0 2px 0 var(--purple)}.btn--run{font-size:1.05rem;padding:13px 30px}.btn--ghost{background:#fff;color:var(--purple);border:2px solid var(--line);box-shadow:0 4px 0 var(--line)}.btn--ghost:active{box-shadow:0 2px 0 var(--line)}.chip-btn,.select{font-family:var(--font-sans);font-weight:700;font-size:.85rem;color:var(--purple);background:var(--paper);border:2px solid var(--line);border-radius:999px;padding:7px 14px;cursor:pointer;transition:border-color .12s,background .12s}.chip-btn:hover,.select:hover{border-color:var(--lavender);background:var(--lavender-soft)}.chip-btn--icon{padding-inline:10px}.layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,11fr) minmax(0,9fr);gap:16px;padding:16px 18px}.workbench{display:flex;flex-direction:column;min-height:0;gap:12px}.runbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.status{font-size:.9rem;font-weight:700;color:var(--ink-soft);padding:6px 12px;background:var(--lavender-soft);border-radius:12px}.status--running{color:var(--purple);background:var(--mint)}.status--error{color:#8e1f36;background:#ffe4ec}.upload-badge{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;font-weight:800;color:#8a3d00;background:#ffe9d2;border:2px solid var(--orange);border-radius:12px;padding:5px 11px}.upload-badge[hidden]{display:none}.upload-dot{width:9px;height:9px;border-radius:50%;background:var(--orange);animation:upload-pulse 1.1s ease-in-out infinite}@keyframes upload-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.55}}.btn--pulse{animation:btn-glow 1.4s ease-in-out infinite}@keyframes btn-glow{0%,to{box-shadow:0 4px 0 var(--purple)}50%{box-shadow:0 4px 0 var(--purple),0 0 0 6px #ffa45f73}}@media(prefers-reduced-motion:reduce){.upload-dot,.btn--pulse{animation:none!important}}.goal-card{display:flex;align-items:center;gap:14px;background:var(--lavender-soft);border:2px solid var(--lavender);border-radius:var(--radius-card);padding:12px 16px;box-shadow:var(--shadow-card)}.goal-mascot{display:grid;place-items:center;flex-shrink:0;width:52px;height:52px;font-size:1.7rem;background:var(--mint);border-radius:50%}.goal-body{flex:1;min-width:0}.goal-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.goal-kicker{font-family:var(--font-display);font-weight:800;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--purple);background:var(--mint);padding:2px 10px;border-radius:999px}.goal-step{font-size:.8rem;font-weight:700;color:var(--ink-soft);margin-inline-start:auto}.goal-title{font-family:var(--font-display);font-weight:800;font-size:1.02rem;color:var(--purple);margin:6px 0 0}.goal-check{margin:3px 0 0;font-size:.92rem;font-weight:700;color:var(--ink)}.goal-cta{flex-shrink:0}.program-panel{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--paper);border:2px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:hidden}.program-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px 0}.program-panel--full{position:fixed;top:10px;right:10px;bottom:10px;left:10px;z-index:45;box-shadow:0 24px 60px #0b093059}.body--locked{overflow:hidden}.program-tab{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:800;font-size:.92rem;color:#fff;background:var(--lavender-deep);border-radius:12px 12px 0 0;padding:8px 18px 10px;margin-bottom:-2px;position:relative;z-index:1}.program-glyph{font-family:var(--font-display);font-weight:800;color:var(--orange);direction:ltr}.blockly-host{flex:1;min-height:320px;border-top:2px solid var(--line)}.stage{display:flex;flex-direction:column;gap:14px;min-height:0;overflow-y:auto}.scene-wrap{position:relative;flex-shrink:0}.scene{height:min(44vh,420px);min-height:260px;border-radius:var(--radius-card);overflow:hidden;border:2px solid var(--line);box-shadow:var(--shadow-card)}.scene canvas{display:block}.scene-chip{position:absolute;top:12px;inset-inline-start:12px;font-family:var(--font-display);font-weight:800;font-size:.88rem;color:var(--purple);background:var(--paper);border:2px solid var(--line);border-radius:999px;padding:5px 14px;pointer-events:none;box-shadow:var(--shadow-card)}.scene-chip--night{color:#fff;background:var(--purple-night);border-color:var(--purple-deep)}.panel{background:var(--paper);border:2px solid var(--line);border-radius:var(--radius-card);padding:14px 16px;box-shadow:var(--shadow-card)}.panel h2{font-family:var(--font-display);font-size:1rem;color:var(--purple);margin:0 0 2px}.panel-title{display:flex;align-items:center;gap:10px;margin-bottom:10px}.panel-icon{display:grid;place-items:center;flex-shrink:0;width:38px;height:38px;font-size:1.15rem;background:var(--mint);border-radius:50%}.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}.labels-toggle{display:inline-flex;align-items:center;gap:7px;font-size:.78rem;font-weight:800;color:var(--purple);background:var(--lavender-soft);border:2px solid var(--line);border-radius:999px;padding:5px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color .12s}.labels-toggle:hover{border-color:var(--lavender)}.labels-toggle:has(input:not(:checked)){color:var(--ink-soft);background:var(--surface)}.labels-toggle input{width:16px;height:16px;accent-color:var(--lavender-deep);cursor:pointer}.panel .hint{font-size:.8rem;color:var(--ink-soft);margin:0}.world-rows{display:flex;flex-direction:column;gap:6px}.control-row{display:grid;grid-template-columns:auto minmax(72px,auto) 1fr auto;align-items:center;gap:10px;padding:6px 10px;border-radius:14px;background:var(--surface);font-size:.85rem;font-weight:700;color:var(--ink-soft);cursor:pointer}.control-icon{display:grid;place-items:center;width:30px;height:30px;font-size:1rem;background:var(--mint);border-radius:50%}.control-name{color:var(--ink-soft)}.control-row input[type=range]{width:100%;min-width:60px;accent-color:var(--lavender-deep)}.control-row .value{font-family:var(--font-display);font-weight:800;font-size:.82rem;color:var(--purple);background:var(--lavender-soft);border-radius:999px;padding:3px 10px;min-width:44px;text-align:center;direction:ltr}.world-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.clap-btn{font-family:var(--font-display);font-weight:800;font-size:.95rem;background:var(--mint);color:var(--purple);border:0;border-radius:14px;padding:10px;cursor:pointer;box-shadow:0 3px #8fd39c;transition:transform .1s}.clap-btn:active{transform:translateY(2px);box-shadow:none}.clap-btn--flame{background:#ffe3c9;box-shadow:0 3px #f3b57e;color:#8a3d00}.clap-btn--coin{background:#fdf2c3;box-shadow:0 3px #e3cd6e;color:#6d5600}.clap-btn--day{background:var(--lavender-soft);box-shadow:0 3px 0 var(--lavender);color:var(--purple)}.hold-row{display:flex;gap:8px;grid-column:1 / -1}.hold-btn{flex:1;font-family:var(--font-display);font-weight:800;font-size:.85rem;border:0;border-radius:14px;padding:10px 6px;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;transition:transform .06s}.hold-btn--red{background:#ffd9d9;box-shadow:0 3px #e79a9a;color:#7c1414}.hold-btn--green{background:#d9f3dd;box-shadow:0 3px #93cf9e;color:#14532d}.hold-btn--down{transform:translateY(3px);box-shadow:none!important;filter:brightness(.94)}.sensor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sensor-grid--details{margin-top:8px}.sensor-grid--details[hidden]{display:none}.sensor-tile{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--surface);border:2px solid var(--line);border-radius:14px;padding:9px 6px 8px;text-align:center}.sensor-icon{font-size:1.15rem;line-height:1}.sensor-name{font-size:.7rem;font-weight:700;color:var(--ink-soft)}.sensor-value{font-family:var(--font-display);font-weight:800;font-size:1.05rem;color:var(--purple);direction:ltr;line-height:1.15}.sensor-pin{font-family:SF Mono,ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.66rem;font-weight:700;color:var(--lavender-deep);background:var(--lavender-soft);border-radius:999px;padding:1px 8px;direction:ltr}.details-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:10px;font-family:var(--font-sans);font-weight:800;font-size:.8rem;color:var(--lavender-deep);background:none;border:0;cursor:pointer;padding:4px}.details-btn:hover{color:var(--purple)}.details-chevron{display:inline-block;transition:transform .15s}.details-btn--open .details-chevron{transform:rotate(180deg)}.help-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.help-card{display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--paper);border:2px solid var(--line);border-radius:16px;padding:10px 8px;cursor:pointer;text-align:center;font-family:var(--font-sans);transition:transform .12s,border-color .12s,box-shadow .12s}.help-card:hover{transform:translateY(-2px);border-color:var(--lavender);box-shadow:var(--shadow-card)}.help-icon{display:grid;place-items:center;width:32px;height:32px;font-size:1rem;background:var(--mint);border-radius:50%}.help-title{font-family:var(--font-display);font-weight:800;font-size:.85rem;color:var(--purple)}.help-sub{font-size:.72rem;font-weight:600;color:var(--ink-soft);line-height:1.35}.hint-out{margin:0;font-size:.88rem;color:var(--ink);background:var(--lavender-soft);border:2px solid var(--lavender);border-radius:14px;padding:9px 14px}.ask-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ask-name{font-family:var(--font-display);font-weight:800;font-size:.88rem;color:var(--lavender-deep)}.ask-row input{flex:1;min-width:140px;font-family:var(--font-sans);font-size:.85rem;border:2px solid var(--line);border-radius:999px;padding:8px 16px;background:#fff;color:var(--ink)}.ask-row input:focus{outline:none;border-color:var(--lavender)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b09308c;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal[hidden]{display:none}.modal-card{background:var(--paper);border-radius:var(--radius-card);padding:18px 20px;width:min(560px,100%);max-height:86vh;overflow-y:auto;box-shadow:0 24px 60px #0b093059}.modal-card header{display:flex;justify-content:space-between;align-items:center}.modal-card h2{font-family:var(--font-display);color:var(--purple);margin:0;font-size:1.15rem}.mission-list{list-style:none;margin:12px 0;padding:0;display:flex;flex-direction:column;gap:8px}.mission-row{display:flex;align-items:center;gap:10px;background:var(--surface);border:2px solid var(--line);border-radius:14px;padding:10px 12px}.mission-row--locked{opacity:.55}.mission-state{font-size:1.1rem}.mission-name{display:flex;flex-direction:column;gap:2px;flex:1}.mission-name b{font-family:var(--font-display);color:var(--purple);font-size:.95rem}.mission-name small{color:var(--ink-soft);font-size:.78rem;line-height:1.4}.modal-card--success{text-align:center;width:min(440px,100%)}.success-burst{font-size:3rem}.success-mission{font-family:var(--font-display);font-weight:800;color:var(--lavender-deep);font-size:1.05rem}.modal-actions{display:flex;gap:10px;justify-content:center;margin-top:12px;flex-wrap:wrap}.code-drawer{position:fixed;top:0;bottom:0;inset-inline-end:0;width:min(520px,100vw);background:var(--purple-night);color:#e8e6ff;z-index:40;display:flex;flex-direction:column;box-shadow:-8px 0 40px #0b093059}.code-drawer[hidden]{display:none}.code-drawer header{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 18px}.code-drawer header h2{font-family:var(--font-display);font-size:1rem;margin:0;color:var(--mint)}.code-drawer .hint{padding:0 18px 10px;margin:0;font-size:.8rem;color:var(--lavender)}.code-drawer pre{flex:1;margin:0;padding:6px 18px 18px;overflow:auto;direction:ltr;text-align:left;font-family:SF Mono,ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.8rem;line-height:1.55}.footer{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 18px 12px;font-size:.78rem;color:var(--ink-soft)}.footer-tagline{font-family:var(--font-display);font-weight:800;color:var(--purple)}.blocklyToolboxDiv{font-family:var(--font-sans);font-weight:700}.blocklyTreeRow{border-radius:10px;margin:2px 4px}@media(max-width:980px){.layout{grid-template-columns:1fr;overflow-y:auto}.workbench{min-height:70vh}.stage{overflow:visible}.sensor-grid{grid-template-columns:repeat(3,1fr)}.help-row{grid-template-columns:1fr}.help-card{flex-direction:row;text-align:start}.help-sub{display:none}}
