.page{height:100vh;padding:20px;box-sizing:border-box;overflow:hidden;color:var(--text);background:radial-gradient(1100px 700px at 20% 10%,var(--bg-accent) 0%,var(--bg) 58%,var(--bg-deep) 100%)}.shell{width:min(1520px,100%);margin:0 auto;height:100%;box-sizing:border-box;display:flex;flex-direction:column;min-height:0}.hero{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}.hero__title{margin:0;font-size:clamp(1.7rem,2.4vw,2.25rem);line-height:1.1}.heroControls{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}.localeSelectWrap{display:flex;flex-direction:column;gap:5px;min-width:124px}.localeSelectLabel{color:var(--muted);font-size:.76rem}.localeSelect{min-width:124px}.layout{display:grid;grid-template-columns:minmax(0,52%) minmax(0,48%);gap:18px;align-items:stretch;flex:1 1 auto;min-height:0}.panelColumn{min-width:0;min-height:0}.panelGrid{display:grid;grid-template-columns:minmax(220px,290px) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;gap:14px;align-items:stretch;height:100%;min-height:0}.panelArea{min-height:0;height:100%}.panelArea--topLeft{display:flex;flex-direction:column;gap:14px}.panelArea--topLeft>.card:first-child{flex:0 0 auto}.panelArea--topLeft>.card:last-child{flex:1 1 auto;min-height:0}.panelArea--bottomLeft{display:flex;flex-direction:column;min-height:0}.panelBottomGroup{display:flex;flex-direction:column;gap:14px}.panelArea--bottomRight{min-height:0}@media(max-width:1100px){.page{height:auto;overflow:visible}.shell{height:auto;padding-bottom:0;display:block}.layout{grid-template-columns:1fr;flex:initial}.panelGrid{grid-template-columns:1fr;grid-template-rows:none;height:auto}.panelColumn{min-height:0}.panelArea{height:auto}}@media(max-width:720px){.hero{flex-direction:column;align-items:stretch}.heroControls{align-items:stretch}}.codeEditorCard{--code-editor-overlay-bg: rgba(0, 0, 0, .24);--code-editor-overlay-border: rgba(255, 255, 255, .12);--code-editor-overlay-text: rgba(255, 255, 255, .94);--code-editor-overlay-placeholder: rgba(255, 255, 255, .66);--code-editor-caret: rgba(255, 255, 255, .94);--code-editor-selection: rgba(78, 160, 255, .28);--code-highlight-text: #eaf3ff;--code-highlight-bg: rgba(78, 160, 255, .24);--code-highlight-border: rgba(78, 160, 255, .52);--code-help-bg: #101827;--code-help-border: rgba(255, 255, 255, .12);--code-help-shadow: 0 18px 34px rgba(0, 0, 0, .32);display:flex;flex-direction:column;min-height:0}.codeEditorCard:has(.codeEditorHelp:hover),.codeEditorCard:has(.codeEditorHelp:focus-within){z-index:40}.codeEditorCard[data-ui-theme=light]{--code-editor-overlay-bg: rgba(255, 255, 255, .96);--code-editor-overlay-border: rgba(15, 36, 71, .16);--code-editor-overlay-text: #0f2447;--code-editor-overlay-placeholder: rgba(15, 36, 71, .64);--code-editor-caret: #0f2447;--code-editor-selection: rgba(37, 99, 235, .22);--code-highlight-text: #0f2447;--code-highlight-bg: rgba(37, 99, 235, .14);--code-highlight-border: rgba(37, 99, 235, .42);--code-help-bg: #ffffff;--code-help-border: rgba(15, 36, 71, .16);--code-help-shadow: 0 18px 34px rgba(43, 79, 138, .18)}.codeEditorCard__body{flex:1 1 auto;min-height:0}.codeEditorCard__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.codeEditorHelp{position:relative;flex:0 0 auto;z-index:20}.codeEditorHelp__trigger{width:26px;height:26px;border:1px solid var(--code-editor-overlay-border);border-radius:999px;background:var(--code-editor-overlay-bg);color:var(--code-editor-overlay-text);cursor:help;font:inherit;font-weight:700;line-height:1}.codeEditorHelp__popover{position:absolute;top:calc(100% + 2px);right:0;z-index:30;width:min(320px,72vw);padding:10px;border:1px solid var(--code-help-border);border-radius:12px;background:var(--code-help-bg);color:var(--code-editor-overlay-text);box-shadow:var(--code-help-shadow);opacity:0;pointer-events:none;transform:translateY(-4px);transition:opacity .15s ease,transform .15s ease}.codeEditorHelp__popover:before{content:"";position:absolute;top:-8px;right:0;left:0;height:10px}.codeEditorHelp:hover .codeEditorHelp__popover,.codeEditorHelp:focus-within .codeEditorHelp__popover{opacity:1;pointer-events:auto;transform:translateY(0)}.codeEditorHelp__title{margin:0 0 8px;font-size:.82rem;font-weight:700}.codeEditorHelp__list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.codeEditorHelp__item{display:grid;gap:4px}.codeEditorHelp__item code{width:fit-content;padding:2px 6px;border-radius:8px;background:var(--code-highlight-bg);box-shadow:inset 0 0 0 1px var(--code-highlight-border);color:var(--code-highlight-text)}.codeEditorHelp__item span{font-size:.8rem;line-height:1.35}.codeEditor__surface{position:relative;flex:1 1 auto;min-height:118px}.codeEditor__overlay,.codeEditor__textarea{flex:1 1 auto;width:100%;height:100%;min-height:118px;margin:0;padding:10px 11px;border-radius:12px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.9rem;line-height:1.5;white-space:pre-wrap;overflow:auto;tab-size:4}.codeEditor__overlay{position:absolute;inset:0;border:1px solid var(--code-editor-overlay-border);background:var(--code-editor-overlay-bg);color:var(--code-editor-overlay-text);pointer-events:none;transition:border-color .15s ease,box-shadow .15s ease}.codeEditor__overlay--placeholder{color:var(--code-editor-overlay-placeholder)}.codeEditor__textarea{position:relative;resize:none;border:1px solid transparent;background:transparent;color:transparent;caret-color:var(--code-editor-caret);outline:none}.codeEditor__textarea::selection{background:var(--code-editor-selection)}.codeEditor__textarea::placeholder{color:transparent}.codeEditor__surface:focus-within .codeEditor__overlay{border-color:#4ea0ff99;box-shadow:0 0 0 4px #4ea0ff24}.codeEditor__highlight{display:inline;padding:1px 2px;border-radius:4px;color:var(--code-highlight-text);background:var(--code-highlight-bg);box-shadow:inset 0 0 0 1px var(--code-highlight-border)}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.toolbar--buttons{flex-wrap:nowrap;gap:4px}.toolbar--buttons .button{flex:1 1 0;min-width:0;padding:6px;font-size:.74rem;overflow:hidden;text-overflow:ellipsis}.toolbar--space-between{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px}.toolbar--meta{align-items:end}.button{border:1px solid var(--stroke);background:var(--surface-strong);border-radius:12px;padding:6px 8px;font-size:.78rem;cursor:pointer;transition:background .15s ease,transform .05s ease,border-color .15s ease;white-space:nowrap;text-align:center}.button:hover:not(:disabled){background:var(--surface-hover)}.button:active:not(:disabled){transform:translateY(1px)}.button:disabled{opacity:.5;cursor:not-allowed}.button--primary{background:#4ea0ff2e;border-color:#4ea0ff5c}.button--warn{background:#ffcc662e;border-color:#ffcc665c}.button--ghost{background:var(--surface-soft)}.badge{padding:5px 9px;border:1px solid var(--stroke);border-radius:999px;background:var(--surface-soft);color:var(--muted);font-size:.7rem;font-weight:700;letter-spacing:.03em;white-space:nowrap}.controlsMeta{display:flex;flex-direction:column;align-items:flex-end;justify-content:end;gap:6px;flex:0 0 auto;min-width:96px}.badge--idle,.badge--ok,.badge--finished{color:var(--green);border-color:#3dd7a55c}.badge--running{color:var(--blue);border-color:#4ea0ff66}.badge--error{color:var(--red);border-color:#ff6b7866}.speedControl{display:grid;grid-template-columns:max-content minmax(0,1fr);flex:1 1 180px;min-width:0;align-items:end;gap:8px}.speedControl .muted{white-space:nowrap}.range{appearance:none;-webkit-appearance:none;flex:1 1 auto;min-width:0;width:100%;max-width:150px;height:8px;padding:0;border:1px solid var(--stroke);border-radius:999px;background:var(--surface-soft);outline:none;cursor:pointer}.range::-webkit-slider-runnable-track{height:8px;border-radius:999px;background:var(--surface-strong)}.range::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;margin-top:-5px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:var(--blue);box-shadow:0 3px 10px #00000038}.range::-moz-range-track{height:8px;border:0;border-radius:999px;background:var(--surface-strong)}.range::-moz-range-thumb{width:16px;height:16px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:var(--blue);box-shadow:0 3px 10px #00000038;cursor:pointer}.controlsSpeedValue{font-size:.84rem}@media(max-width:720px){.toolbar--buttons{flex-wrap:wrap}.toolbar--space-between,.speedControl{grid-template-columns:1fr;align-items:stretch}.range{width:100%}.controlsMeta{align-items:stretch;width:100%}}.errorCard{min-height:112px}.errorCard--idle{border-color:var(--stroke);background:linear-gradient(180deg,var(--panel) 0%,var(--surface-soft) 100%)}.errorText{margin:0;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted)}.executionCard{display:flex;flex-direction:column}.executionCard__body{flex:1 1 auto}.keyValueList{display:grid;gap:10px;margin:0}.keyValueList div{display:grid;grid-template-columns:132px minmax(0,1fr);gap:8px}.keyValueList dt{color:var(--muted);font-size:.8rem;white-space:nowrap}.keyValueList dd{margin:0;font-size:.88rem;min-width:0}@media(max-width:720px){.keyValueList div{grid-template-columns:1fr}}.worldCard{width:100%;max-width:100%;min-width:0;min-height:0;height:100%;max-height:100%;overflow:hidden;display:flex;flex-direction:column}.worldHeader{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.gridWrap{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;flex:1 1 auto;min-height:0;width:100%;max-width:100%}.gridViewport{display:flex;align-items:center;justify-content:center;flex:1 1 auto;min-height:0;width:100%;max-width:100%;overflow:auto}.gridBoard{--cell-size: 36px;--cell-gap: 6px;--grid-padding: 12px;--axis-x-height: 24px;--axis-y-width: 24px;display:grid;grid-template-columns:var(--axis-y-width) auto;grid-template-rows:var(--axis-x-height) auto;width:max-content}.gridBoard__corner{width:var(--axis-y-width);height:var(--axis-x-height)}.gridAxis{color:var(--muted);font-size:.74rem;line-height:1}.gridAxis--x{display:grid;grid-auto-flow:column;grid-auto-columns:var(--cell-size);gap:var(--cell-gap);padding:0 var(--grid-padding) 6px;align-items:end}.gridAxis--y{display:grid;grid-auto-rows:var(--cell-size);gap:var(--cell-gap);padding:var(--grid-padding) 6px var(--grid-padding) 0;justify-items:end;align-items:center}.gridAxis__label{display:grid;place-items:center;width:100%;height:100%}.grid{--cell-size: 36px;display:grid;gap:6px;padding:12px;border:1px solid var(--stroke);border-radius:18px;background:var(--surface-soft);width:max-content;max-width:max-content}.cell{display:grid;place-items:center;width:var(--cell-size);height:var(--cell-size);border:1px solid var(--cell-stroke);border-radius:12px;background:var(--cell-bg);color:var(--text)}.cell--clickable{cursor:pointer}.cell--clickable:hover{border-color:#4ea0ff52;background:#4ea0ff14}.cell--visited{background:#3dd7a51a}.cell--robot{border-color:#4ea0ff73;background:#4ea0ff29}.cell--obstacle{border-color:#ff6b786b;background:#ff6b7826}.robotIcon{font-size:1.08rem;font-weight:700}.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;color:var(--muted);font-size:.86rem;justify-content:center;flex:0 0 auto;width:100%}.worldExportButton{margin-top:12px;align-self:center}.legend span{display:inline-flex;align-items:center;gap:8px}.legendDot{display:inline-block;width:10px;height:10px;border-radius:999px}.legendDot--visited{background:#3dd7a5e6}.legendDot--robot{background:#4ea0ffe6}.legendDot--obstacle{background:#ff6b78e6}@media(max-width:720px){.worldCard{height:auto;max-height:none}.worldHeader{flex-direction:column;align-items:stretch}}.customSelect{position:relative;width:100%}.customSelect--open{z-index:50}.customSelect__trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left}.customSelect__value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customSelect__chevron{flex:0 0 auto;color:var(--muted);font-size:.72rem;transition:transform .15s ease}.customSelect__chevron--open{transform:rotate(180deg)}.customSelect__menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:20;display:flex;flex-direction:column;gap:4px;padding:6px;border:1px solid var(--stroke);border-radius:14px;background:var(--dropdown-bg);box-shadow:var(--shadow)}.customSelect__option{width:100%;border:0;border-radius:10px;background:transparent;color:var(--text);cursor:pointer;font:inherit;padding:9px 10px;text-align:left}.customSelect__option:hover,.customSelect__option:focus-visible,.customSelect__option--selected{background:var(--surface-hover);outline:none}.languageSelect{display:flex;flex-direction:column;gap:8px}.worldControlsCard,.worldControlsCard__body{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));flex:1 1 auto;min-height:0;gap:8px;align-content:stretch;grid-auto-rows:minmax(0,1fr)}.field{display:flex;flex-direction:column;gap:3px;min-height:0;min-width:0}.field span{color:var(--muted);font-size:.76rem}.field--full{grid-column:1 / -1}.field--hidden{visibility:hidden;pointer-events:none}.worldControlsCard .select,.worldControlsCard .field input{min-width:0}:root{--bg: #08101e;--bg-accent: #13244a;--bg-deep: #060b14;--panel: rgba(255, 255, 255, .07);--panel-solid: rgba(255, 255, 255, .06);--surface-soft: rgba(255, 255, 255, .04);--surface-strong: rgba(255, 255, 255, .06);--surface-hover: rgba(255, 255, 255, .12);--surface-input: rgba(0, 0, 0, .24);--dropdown-bg: #101827;--cell-bg: rgba(255, 255, 255, .03);--cell-stroke: rgba(255, 255, 255, .08);--text: rgba(255, 255, 255, .94);--muted: rgba(255, 255, 255, .66);--stroke: rgba(255, 255, 255, .12);--shadow: 0 18px 48px rgba(0, 0, 0, .35);--radius: 16px;--blue: #4ea0ff;--green: #3dd7a5;--yellow: #ffcc66;--red: #ff6b78}[data-theme=light]{--bg: #f5f9ff;--bg-accent: #d9e7ff;--bg-deep: #ffffff;--panel: rgba(255, 255, 255, .88);--panel-solid: rgba(255, 255, 255, .96);--surface-soft: rgba(15, 36, 71, .04);--surface-strong: rgba(15, 36, 71, .07);--surface-hover: rgba(15, 36, 71, .11);--surface-input: rgba(255, 255, 255, .96);--dropdown-bg: #ffffff;--cell-bg: rgba(15, 36, 71, .045);--cell-stroke: rgba(15, 36, 71, .18);--text: #0f2447;--muted: rgba(15, 36, 71, .64);--stroke: rgba(15, 36, 71, .16);--shadow: 0 18px 48px rgba(43, 79, 138, .14);--blue: #2563eb;--green: #17926f;--yellow: #d69a1c;--red: #d14b63}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.4;background:radial-gradient(1100px 700px at 20% 10%,var(--bg-accent) 0%,var(--bg) 58%,var(--bg-deep) 100%)}button,input,select,textarea{font:inherit}button{color:inherit}@media(max-width:720px){body{min-width:320px}}.stack-xs,.stack-sm,.stack-md{display:flex;flex-direction:column}.stack-xs{gap:6px}.stack-sm{gap:8px}.stack-md{gap:12px}.card{position:relative;background:linear-gradient(180deg,var(--panel) 0%,var(--surface-soft) 100%);border:1px solid var(--stroke);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.card:has(.customSelect--open){z-index:60}.card--stretch{min-height:100%}.card--error{border-color:#ff6b7873;background:linear-gradient(180deg,#ff6b781f,#ff6b7814)}.card__title{margin:0;font-size:.94rem;font-weight:700}.card__subtitle{margin:6px 0 0;color:var(--muted);font-size:.84rem;line-height:1.45}.muted{color:var(--muted)}.mono{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.select,.field input,.textarea{width:100%;box-sizing:border-box;border:1px solid var(--stroke);border-radius:12px;background:var(--surface-input);color:var(--text);outline:none}.select{padding:9px 11px;font-size:.9rem;cursor:pointer}.select:disabled{cursor:default}.select option{cursor:pointer}.field input,.textarea{padding:10px 11px;font-size:.9rem}.select:focus,.field input:focus,.textarea:focus{border-color:#4ea0ff99;box-shadow:0 0 0 4px #4ea0ff24}.hint{margin:0;color:var(--muted);font-size:.8rem;line-height:1.45}.hint code{padding:2px 6px;border:1px solid var(--stroke);border-radius:8px;background:var(--surface-strong)}
