:root{color-scheme:dark;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;--color-bg: #1e1e2e;--color-surface: #181825;--color-surface-raised: #232336;--color-surface-hover: #313244;--color-surface-strong: #45475a;--color-surface-stronger: #585b70;--color-border: #313244;--color-border-strong: #45475a;--color-border-hover: #585b70;--color-text: #cdd6f4;--color-text-muted: #a6adc8;--color-text-subtle: #6c7086;--color-text-disabled: #45475a;--color-accent: #89b4fa;--color-accent-hover: #b4befe;--color-accent-contrast: #1e1e2e;--color-secondary-accent: #cba6f7;--color-success: #a6e3a1;--color-success-hover: #94e2d5;--color-success-contrast: #1e1e2e;--color-danger: #f38ba8;--color-inline-code-bg: #313244;--color-inline-code-text: #cdd6f4;--color-scrollbar-track: #181825;--color-scrollbar-thumb: #45475a;--color-scrollbar-thumb-hover: #585b70;--shadow-elevated: 0 4px 12px rgba(0, 0, 0, .3);--shadow-sticky: 0 -4px 12px rgba(0, 0, 0, .3);--result-pass-bg: rgba(166, 227, 161, .05);--result-fail-bg: rgba(243, 139, 168, .05)}:root[data-theme=light]{color-scheme:light;--color-bg: #eff3fb;--color-surface: #ffffff;--color-surface-raised: #f6f8ff;--color-surface-hover: #e7ecf9;--color-surface-strong: #d1dbef;--color-surface-stronger: #bcc9e5;--color-border: #d7deef;--color-border-strong: #c4cee6;--color-border-hover: #aebad9;--color-text: #172033;--color-text-muted: #4d5976;--color-text-subtle: #6f7a93;--color-text-disabled: #96a3bf;--color-accent: #3556d4;--color-accent-hover: #2445bd;--color-accent-contrast: #ffffff;--color-secondary-accent: #7a4fd0;--color-success: #1e8758;--color-success-hover: #176f49;--color-success-contrast: #ffffff;--color-danger: #c04164;--color-inline-code-bg: #edf1fb;--color-inline-code-text: #1f2a40;--color-scrollbar-track: #e3e9f6;--color-scrollbar-thumb: #bcc9e5;--color-scrollbar-thumb-hover: #9fafcf;--shadow-elevated: 0 10px 24px rgba(31, 42, 64, .12);--shadow-sticky: 0 -10px 24px rgba(31, 42, 64, .12);--result-pass-bg: rgba(30, 135, 88, .08);--result-fail-bg: rgba(192, 65, 100, .08)}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;width:100%;overflow:hidden}body{font-family:var(--font-sans);background-color:var(--color-bg);color:var(--color-text);transition:background-color .2s ease,color .2s ease}button,input,textarea,select{font:inherit}a{color:inherit}#app{height:100%;width:100%;background-color:var(--color-bg);transition:background-color .2s ease}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--color-scrollbar-thumb);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-scrollbar-thumb-hover)}.app[data-v-34e40596]{display:flex;flex-direction:column;height:100vh;height:100dvh;max-height:100svh;width:100vw;overflow:hidden}.app-content[data-v-34e40596]{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.header[data-v-34e40596]{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.5rem;background:var(--color-bg);border-bottom:1px solid var(--color-border)}.logo[data-v-34e40596]{text-decoration:none;display:flex;align-items:center;gap:.5rem;min-width:0}.logo-icon[data-v-34e40596]{width:32px;height:32px;flex-shrink:0}.logo h1[data-v-34e40596]{margin:0;font-size:1.5rem;color:var(--color-text);font-weight:600}.logo:hover h1[data-v-34e40596]{color:var(--color-accent)}.nav[data-v-34e40596]{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.nav-links[data-v-34e40596],.nav-controls[data-v-34e40596]{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.theme-switcher[data-v-34e40596],.locale-switcher[data-v-34e40596]{display:flex;gap:.25rem}.theme-btn[data-v-34e40596],.locale-btn[data-v-34e40596]{padding:.25rem .5rem;border:1px solid var(--color-border);border-radius:4px;background:transparent;color:var(--color-text-muted);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s}.theme-btn[data-v-34e40596]:hover,.locale-btn[data-v-34e40596]:hover{background:var(--color-surface-hover);color:var(--color-text)}.theme-btn.active[data-v-34e40596],.locale-btn.active[data-v-34e40596]{background:var(--color-accent);color:var(--color-accent-contrast);border-color:var(--color-accent)}.nav-link[data-v-34e40596]{padding:.5rem 1rem;border-radius:6px;font-size:.875rem;font-weight:500;color:var(--color-text-muted);text-decoration:none;transition:all .2s}.nav-link[data-v-34e40596]:hover{background:var(--color-surface-hover);color:var(--color-text)}.nav-link.active[data-v-34e40596]{background:var(--color-accent);color:var(--color-accent-contrast)}@media(max-width:720px){.header[data-v-34e40596]{padding:.75rem 1rem}.nav[data-v-34e40596]{width:100%;flex-direction:column;align-items:stretch}.nav-links[data-v-34e40596],.nav-controls[data-v-34e40596]{justify-content:space-between}.logo h1[data-v-34e40596]{font-size:1.25rem}}.editor-container[data-v-f47d4879]{flex:1;overflow:hidden;background:var(--color-bg)}.editor-container[data-v-f47d4879] .cm-editor{height:100%}.editor-container[data-v-f47d4879] .cm-gutters{background:var(--color-surface);border-right:1px solid var(--color-border)}.console-wrapper[data-v-6a474e03]{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--color-bg);font-family:JetBrains Mono,Fira Code,SF Mono,Consolas,monospace;font-size:13px;cursor:text}.console-output[data-v-6a474e03]{flex:1 1 0;min-height:0;overflow-y:scroll;overflow-x:auto;padding:1rem 1rem .5rem;-webkit-overflow-scrolling:touch}.welcome-message[data-v-6a474e03]{color:var(--color-text-subtle)}.ghci-banner[data-v-6a474e03]{color:var(--color-accent);margin:0 0 .5rem}.hint[data-v-6a474e03]{color:var(--color-text-subtle);font-style:italic}.output-line[data-v-6a474e03]{margin-bottom:.25rem}.output-line pre[data-v-6a474e03]{margin:0;white-space:pre-wrap;word-wrap:break-word}.output-line.system[data-v-6a474e03]{color:var(--color-accent)}.output-line.input[data-v-6a474e03]{color:var(--color-text)}.output-line.input pre[data-v-6a474e03]:before{content:"ghci> ";color:var(--color-text-muted)}.output-line.output[data-v-6a474e03]{color:var(--color-success)}.output-line.error[data-v-6a474e03]{color:var(--color-danger)}.input-line[data-v-6a474e03]{display:flex;align-items:center;padding:.5rem 1rem 1rem;background:var(--color-bg);border-top:1px solid var(--color-border)}.prompt[data-v-6a474e03]{color:var(--color-text-muted);margin-right:.5rem;flex-shrink:0}.prompt.disabled[data-v-6a474e03]{color:var(--color-text-disabled)}.command-input[data-v-6a474e03]{flex:1;background:transparent;border:none;color:var(--color-text);font-family:inherit;font-size:inherit;outline:none;padding:0}.command-input[data-v-6a474e03]::placeholder{color:var(--color-text-disabled);font-style:italic}.command-input[data-v-6a474e03]:disabled{color:var(--color-text-subtle)}.home-view[data-v-b4d0a8c1]{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.main[data-v-b4d0a8c1]{display:flex;flex:1;min-height:0;overflow:hidden}.panel[data-v-b4d0a8c1]{display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden}.main.is-dragging[data-v-b4d0a8c1]{-webkit-user-select:none;user-select:none;cursor:col-resize}.splitter[data-v-b4d0a8c1]{flex-shrink:0;width:6px;display:flex;align-items:center;justify-content:center;cursor:col-resize;background:var(--color-surface-hover);transition:background .15s;touch-action:none}.splitter[data-v-b4d0a8c1]:hover,.splitter[data-v-b4d0a8c1]:active{background:var(--color-accent)}.splitter-handle[data-v-b4d0a8c1]{width:2px;height:32px;border-radius:1px;background:var(--color-surface-stronger);transition:background .15s}.splitter:hover .splitter-handle[data-v-b4d0a8c1],.splitter:active .splitter-handle[data-v-b4d0a8c1]{background:var(--color-text)}.panel-header[data-v-b4d0a8c1]{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:var(--color-surface);color:var(--color-text-muted);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.panel-header-actions[data-v-b4d0a8c1]{display:flex;align-items:center;gap:.375rem}.icon-btn[data-v-b4d0a8c1]{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid var(--color-border-strong);border-radius:6px;background:var(--color-surface-raised);color:var(--color-text);cursor:pointer;transition:background .2s,border-color .2s,color .2s}.icon-btn[data-v-b4d0a8c1]:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.icon-btn[data-v-b4d0a8c1]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.icon-btn svg[data-v-b4d0a8c1]{width:1rem;height:1rem}.file-input[data-v-b4d0a8c1]{display:none}.status[data-v-b4d0a8c1]{font-size:.7rem;text-transform:none}.status.connected[data-v-b4d0a8c1]{color:var(--color-success)}.status.disconnected[data-v-b4d0a8c1]{color:var(--color-danger)}.toolbar[data-v-b4d0a8c1]{flex-shrink:0;display:flex;gap:.5rem;padding:.75rem 1rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0px));background:var(--color-surface);border-top:1px solid var(--color-border)}@media(max-width:768px),(max-height:700px){.home-view[data-v-b4d0a8c1]{padding-bottom:calc(58px + env(safe-area-inset-bottom,0px))}.toolbar[data-v-b4d0a8c1]{position:fixed;bottom:0;left:0;right:0;z-index:10;box-shadow:var(--shadow-sticky)}}.btn[data-v-b4d0a8c1]{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn[data-v-b4d0a8c1]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-b4d0a8c1]{background:var(--color-accent);color:var(--color-accent-contrast)}.btn-primary[data-v-b4d0a8c1]:hover:not(:disabled){background:var(--color-accent-hover)}.btn-secondary[data-v-b4d0a8c1]{background:var(--color-surface-strong);color:var(--color-text)}.btn-secondary[data-v-b4d0a8c1]:hover:not(:disabled){background:var(--color-surface-stronger)}.btn-success[data-v-b4d0a8c1]{background:var(--color-success);color:var(--color-success-contrast)}.btn-success[data-v-b4d0a8c1]:hover:not(:disabled){background:var(--color-success-hover)}.mode-toggle[data-v-b4d0a8c1]{display:flex;border-radius:6px;overflow:hidden;border:1px solid var(--color-border-strong);margin-right:.25rem}.mode-toggle.disabled[data-v-b4d0a8c1]{opacity:.5}.mode-btn[data-v-b4d0a8c1]{padding:.4rem .65rem;border:none;background:var(--color-surface-hover);color:var(--color-text-muted);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .15s}.mode-btn[data-v-b4d0a8c1]:disabled{cursor:not-allowed}.mode-btn.active[data-v-b4d0a8c1]{background:var(--color-accent);color:var(--color-accent-contrast)}.mode-btn[data-v-b4d0a8c1]:not(.active):not(:disabled):hover{background:var(--color-surface-strong)}.challenge-view[data-v-ba8949b9]{display:flex;flex-direction:column;height:100%;overflow:hidden}.main[data-v-ba8949b9]{display:flex;flex:1;overflow:hidden}.panel[data-v-ba8949b9]{display:flex;flex-direction:column;overflow:hidden}.description-panel[data-v-ba8949b9]{min-width:0}.main.is-dragging[data-v-ba8949b9]{-webkit-user-select:none;user-select:none;cursor:col-resize}.splitter[data-v-ba8949b9]{flex-shrink:0;width:6px;display:flex;align-items:center;justify-content:center;cursor:col-resize;background:var(--color-surface-hover);transition:background .15s;touch-action:none}.splitter[data-v-ba8949b9]:hover,.splitter[data-v-ba8949b9]:active{background:var(--color-accent)}.splitter-handle[data-v-ba8949b9]{width:2px;height:32px;border-radius:1px;background:var(--color-surface-stronger);transition:background .15s}.splitter:hover .splitter-handle[data-v-ba8949b9],.splitter:active .splitter-handle[data-v-ba8949b9]{background:var(--color-text)}.editor-results-panel[data-v-ba8949b9]{display:flex;flex-direction:column;min-width:0}.editor-section[data-v-ba8949b9]{flex:1;display:flex;flex-direction:column;min-height:0}.results-section[data-v-ba8949b9]{flex:0 0 250px;display:flex;flex-direction:column;border-top:1px solid var(--color-border)}.results-section--collapsed[data-v-ba8949b9]{flex:0 0 auto}.results-header[data-v-ba8949b9]{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem 1rem;background:var(--color-surface);border:none;border-bottom:1px solid var(--color-border);color:var(--color-text-muted);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:background .2s;text-align:left}.results-header[data-v-ba8949b9]:hover{background:var(--color-surface-raised)}.results-header-chevron[data-v-ba8949b9]{font-size:.6rem;transition:transform .2s;flex-shrink:0}.results-header-chevron--collapsed[data-v-ba8949b9]{transform:rotate(-90deg)}.results-header-title[data-v-ba8949b9]{flex:0 0 auto}.results-header .results-summary[data-v-ba8949b9]{margin-left:auto}.panel-header[data-v-ba8949b9]{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:var(--color-surface);color:var(--color-text-muted);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;flex-shrink:0}.description-content[data-v-ba8949b9]{flex:1;overflow-y:auto;padding:1.5rem;background:var(--color-bg)}.results-content[data-v-ba8949b9]{flex:1;overflow-y:auto;background:var(--color-bg)}.markdown-body[data-v-ba8949b9]{color:var(--color-text);line-height:1.6}.markdown-body[data-v-ba8949b9] h2{color:var(--color-accent);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border)}.markdown-body[data-v-ba8949b9] h3{color:var(--color-secondary-accent);margin-top:1.5rem;margin-bottom:.75rem}.markdown-body[data-v-ba8949b9] code{background:var(--color-inline-code-bg);color:var(--color-inline-code-text);padding:.2em .4em;border-radius:4px;font-family:JetBrains Mono,Fira Code,monospace;font-size:.9em}.markdown-body[data-v-ba8949b9] pre{background:var(--color-surface);padding:1rem;border-radius:8px;overflow-x:auto;margin:1rem 0}.markdown-body[data-v-ba8949b9] pre code{background:transparent;padding:0}.error-message[data-v-ba8949b9]{color:var(--color-danger);padding:1rem}.error-message pre[data-v-ba8949b9]{white-space:pre-wrap;word-wrap:break-word;font-family:JetBrains Mono,Fira Code,monospace;font-size:.9em}.loading[data-v-ba8949b9],.no-results[data-v-ba8949b9]{color:var(--color-text-subtle);padding:1rem;font-style:italic}.results-summary[data-v-ba8949b9]{font-size:.75rem;text-transform:none;font-weight:500}.results-summary.all-passed[data-v-ba8949b9]{color:var(--color-success)}.results-summary.some-failed[data-v-ba8949b9]{color:var(--color-danger)}.results-table[data-v-ba8949b9]{width:100%;border-collapse:collapse;font-size:.875rem}.results-table th[data-v-ba8949b9]{text-align:left;padding:.75rem 1rem;background:var(--color-surface);color:var(--color-text-muted);font-weight:600;font-size:.75rem;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.results-table td[data-v-ba8949b9]{padding:.75rem 1rem;border-bottom:1px solid var(--color-border);color:var(--color-text)}.results-table tr.passed td[data-v-ba8949b9]{background:var(--result-pass-bg)}.results-table tr.failed td[data-v-ba8949b9]{background:var(--result-fail-bg)}.results-table code[data-v-ba8949b9]{font-family:JetBrains Mono,Fira Code,monospace;font-size:.85em}.status-col[data-v-ba8949b9]{width:60px;text-align:center}.test-col[data-v-ba8949b9]{width:35%}.expected-col[data-v-ba8949b9],.actual-col[data-v-ba8949b9]{width:20%}.status-icon[data-v-ba8949b9]{font-weight:700;font-size:1rem}.status-icon.pass[data-v-ba8949b9]{color:var(--color-success)}.status-icon.fail[data-v-ba8949b9]{color:var(--color-danger)}.toolbar[data-v-ba8949b9]{display:flex;gap:.5rem;align-items:center;padding:.75rem 1rem;background:var(--color-surface);border-top:1px solid var(--color-border)}.btn[data-v-ba8949b9]{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-sm[data-v-ba8949b9]{padding:.35rem .75rem;font-size:.8rem}.btn[data-v-ba8949b9]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-ba8949b9]{background:var(--color-accent);color:var(--color-accent-contrast)}.btn-primary[data-v-ba8949b9]:hover:not(:disabled){background:var(--color-accent-hover)}.btn-secondary[data-v-ba8949b9]{background:var(--color-surface-strong);color:var(--color-text)}.btn-secondary[data-v-ba8949b9]:hover:not(:disabled){background:var(--color-surface-stronger)}.btn-success[data-v-ba8949b9]{background:var(--color-success);color:var(--color-success-contrast)}.btn-success[data-v-ba8949b9]:hover:not(:disabled){background:var(--color-success-hover)}
