.editor-body{margin:0;padding:0;background:#1a2e0a;color:#c8e4a0;font-family:'Courier New',Courier,monospace;min-height:100vh;height:100vh;height:100dvh;overflow:hidden;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;--editor-gap:clamp(6px,1.4vh,10px);--editor-tool-size:clamp(36px,min(8.5vw,6.2vh),54px);--editor-tool-gap:clamp(5px,0.9vh,8px);--editor-button-font:clamp(0.68rem,1.6vh,0.78rem);--editor-meta-font:clamp(0.6rem,1.3vh,0.7rem);}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.82);display:flex;align-items:center;justify-content:center;z-index:1000;}.modal-overlay.hidden{display:none;}.modal-box{background:#1b3510;border:2px solid #4a7c2a;border-radius:12px;padding:32px 40px;text-align:center;max-width:440px;width:min(90vw,440px);box-shadow:0 8px 40px rgba(0,0,0,0.7);}.modal-box h2{margin:0 0 6px;font-size:1.5rem;color:#e0f5b0;letter-spacing:1px;}.modal-sub{margin:0 0 24px;font-size:0.85rem;opacity:0.75;}.size-row{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:16px;}.size-field{display:flex;flex-direction:column;align-items:center;gap:6px;}.size-field label{font-size:0.75rem;opacity:0.7;letter-spacing:1px;text-transform:uppercase;}.size-control{display:flex;align-items:center;gap:10px;background:#0f1f08;border:1px solid #3a5a1a;border-radius:8px;padding:6px 10px;}.size-control span{font-size:1.6rem;font-weight:bold;color:#c8ff80;min-width:2ch;text-align:center;}.size-btn{background:none;border:none;color:#90c060;font-size:1.4rem;cursor:pointer;padding:0 4px;line-height:1;transition:color 0.15s;}.size-btn:hover{color:#c8ff80;}.size-sep{font-size:1.6rem;color:#5a8a3a;margin-top:18px;}#size-preview-text{font-size:0.82rem;color:#90c060;margin-bottom:12px;min-height:1.2em;}#size-preview-grid{display:grid;width:fit-content;gap:2px;margin:0 auto 20px;max-width:200px;max-height:200px;justify-content:center;align-content:center;}.preview-cell{background:#2a4a15;border-radius:1px;aspect-ratio:1;}.preview-cell.preview-wall{background:#3d6020;}.size-hint{margin:10px 0 0;font-size:0.72rem;opacity:0.55;}.btn-large{padding:12px 32px;font-size:1rem;}#editor-layout{display:flex;flex:1;flex-direction:column;width:100%;min-height:0;overflow:hidden;gap:var(--editor-gap);}#editor-canvas-wrap{flex:1;min-height:0;min-width:0;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:calc(clamp(48px,7vh,60px)+env(safe-area-inset-top)) 12px var(--editor-gap);}#editor-canvas-inner{position:relative;display:block;line-height:0;max-width:100%;max-height:100%;}#editor-canvas{display:block;image-rendering:pixelated;cursor:crosshair;touch-action:none;transform-origin:top left;border-radius:4px;box-shadow:0 12px 36px rgba(0,0,0,0.38);}#editor-sidebar{flex:0 0 auto;display:grid;gap:var(--editor-gap);width:min(100%,980px);margin:0 auto;padding:0 10px calc(10px+env(safe-area-inset-bottom));background:transparent;}#editor-tool-dock{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--editor-tool-gap);width:100%;}.tool-btn{width:var(--editor-tool-size);height:var(--editor-tool-size);flex:0 0 var(--editor-tool-size);display:flex;align-items:center;justify-content:center;gap:0;padding:0;background:#111;border:2px solid transparent;border-radius:9px;cursor:pointer;color:#90c060;font-family:inherit;transition:background 0.12s,border-color 0.12s;}.tool-btn:hover{background:#1b1b1b;border-color:#3d6a28;}.tool-btn.active{background:#223814;border-color:#d0b420;color:#f2f0b8;}.tool-btn img{width:calc(var(--editor-tool-size) * 0.58);height:calc(var(--editor-tool-size) * 0.58);object-fit:contain;image-rendering:pixelated;}.erase-icon{font-size:calc(var(--editor-tool-size) * 0.34);line-height:1;font-weight:bold;}.tool-btn-action{width:var(--editor-tool-size);height:var(--editor-tool-size);flex:0 0 var(--editor-tool-size);display:flex;align-items:center;justify-content:center;padding:0;background:#111;border:2px solid transparent;border-radius:9px;cursor:pointer;color:#90c060;font-family:inherit;transition:background 0.12s,border-color 0.12s,color 0.12s,opacity 0.12s;}.tool-btn-action:hover:not(:disabled){background:#1b1b1b;border-color:#3d6a28;color:#c8ff80;}.tool-btn-action:disabled{opacity:0.35;cursor:not-allowed;}.undo-icon{width:calc(var(--editor-tool-size) * 0.58);height:calc(var(--editor-tool-size) * 0.58);display:block;}.log-preview-h{width:calc(var(--editor-tool-size) * 0.7) !important;height:calc(var(--editor-tool-size) * 0.35) !important;}.log-preview-v{width:calc(var(--editor-tool-size) * 0.35) !important;height:calc(var(--editor-tool-size) * 0.7) !important;}#editor-sidebar-controls{display:grid;gap:var(--editor-gap);width:min(100%,520px);margin:0 auto;}#editor-test-hint{font-size:var(--editor-meta-font);line-height:1.4;text-align:center;color:#7f9fb2;}.action-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--editor-tool-gap);}.btn-primary,.btn-secondary{width:100%;padding:0.72em 0.85em;border-radius:6px;border:none;cursor:pointer;font-family:inherit;font-size:var(--editor-button-font);font-weight:bold;transition:background 0.15s,transform 0.08s,opacity 0.15s;letter-spacing:0.4px;}.btn-primary{background:#4a9020;color:#e8ffcc;}.btn-primary:hover:not(:disabled){background:#5aaa28;transform:translateY(-1px);}.btn-primary:disabled{background:#2a4a15;color:#4a6a2a;cursor:not-allowed;opacity:0.6;}.btn-secondary{background:#1d3210;color:#92c06f;border:1px solid #2a4a15;}.btn-secondary:hover{background:#253f18;color:#c8ff80;transform:translateY(-1px);}#validation-box{display:grid;gap:6px;justify-items:center;}#validation-items{display:flex;flex-wrap:wrap;justify-content:center;gap:3px 10px;}.val-item{font-size:var(--editor-meta-font);line-height:1.2;color:#6f8f53;white-space:nowrap;}.val-icon{font-style:normal;}.val-ok{color:#8ad45d;}.val-error{color:#ee7d66;}.val-pending{color:#6f8f53;}.btn-solve{width:min(100%,320px);padding:0.72em 0.85em;background:#1a2e3a;border:1px solid #2a4a60;border-radius:6px;color:#70b0d0;font-family:inherit;font-size:var(--editor-button-font);font-weight:bold;cursor:pointer;letter-spacing:0.4px;transition:background 0.12s,color 0.12s,border-color 0.12s;}.btn-solve:hover:not(:disabled){background:#203848;color:#a0d8f0;border-color:#4a80a8;}.btn-solve:disabled{opacity:0.45;cursor:not-allowed;}.btn-solve.solving{color:#6090a8;cursor:wait;animation:pulse-solve 1s ease-in-out infinite;}@keyframes pulse-solve{0%,100%{opacity:1;}50%{opacity:0.55;}}#solve-result{min-height:1.15em;font-size:var(--editor-meta-font);line-height:1.4;text-align:center;}#solve-result:empty{display:none;}.solve-solvable{color:#8ad45d;}.solve-unsolvable{color:#ee7d66;}.solve-unknown{color:#d8b556;}.solve-pending{color:#7f9fb2;}.solve-badge{display:inline-block;padding:1px 7px;border-radius:3px;font-size:0.64rem;font-weight:bold;letter-spacing:0.5px;margin-left:4px;vertical-align:middle;}.badge-easy{background:#1a3d10;color:#80d050;border:1px solid #2a6018;}.badge-medium{background:#3a2e08;color:#d0a030;border:1px solid #6a5010;}.badge-hard{background:#3a1010;color:#e06050;border:1px solid #6a2020;}#test-overlay{position:fixed;inset:0;z-index:2000;display:flex;flex-direction:column;background:#0f1a08;}#test-overlay.hidden{display:none;}#test-overlay-bar{display:flex;align-items:center;gap:16px;padding:8px 16px;background:#111e0a;border-bottom:2px solid #2a4a15;flex-shrink:0;}#btn-close-test{padding:6px 14px;background:#1d3210;border:1px solid #4a7c2a;border-radius:6px;color:#a0d060;font-family:inherit;font-size:0.82rem;cursor:pointer;transition:background 0.12s,color 0.12s;white-space:nowrap;}#btn-close-test:hover{background:#2a5018;color:#c8ff80;}#test-overlay-label{font-size:0.85rem;color:#6a9a4a;letter-spacing:0.5px;flex:1;}#btn-reset-test-level{padding:6px 14px;background:#4a9020;border:1.5px solid #6aaa3a;border-radius:6px;color:#e8ffcc;font-family:inherit;font-size:0.82rem;font-weight:bold;cursor:pointer;transition:background 0.12s,box-shadow 0.12s;white-space:nowrap;}#btn-reset-test-level:hover{background:#5aaa28;box-shadow:0 2px 10px rgba(58,136,24,0.27);}#test-iframe{flex:1;width:100%;border:none;background:#1a2e0a;}@media (max-width:420px),(max-height:760px){.editor-body{--editor-tool-size:clamp(34px,min(10vw,5.4vh),46px);--editor-tool-gap:5px;}#editor-canvas-wrap{padding-left:8px;padding-right:8px;}#editor-sidebar{padding-left:8px;padding-right:8px;}}