@import"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&family=DM+Sans:wght@300;400;500&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-base: #0C0A08;--bg-surface: #131109;--bg-panel: #181512;--bg-hover: #1F1C18;--border: #252119;--border-mid: #302B24;--border-str: #3E3830;--gold: #D48B1C;--gold-bright: #EFA030;--gold-dim: #7A5010;--gold-glow: rgba(212, 139, 28, .12);--text-primary: #EAE0D2;--text-sec: #88796C;--text-dim: #453F39;--bg-primary: var(--bg-base);--bg-secondary: var(--bg-surface);--bg-tertiary: var(--bg-panel);--text-secondary: var(--text-sec);--text-muted: var(--text-dim);--border-color: var(--border);--accent-color: var(--gold);--accent-hover: var(--gold-bright);--success-color: #A8C98A;--error-color: #D9735A;--warning-color: #EFA030;--info-color: #7AC4B8;--editor-bg: var(--bg-base);--editor-text: var(--text-primary);--editor-line-numbers: var(--text-dim);--editor-cursor: var(--gold);--editor-selection: rgba(212, 139, 28, .15);--console-bg: var(--bg-base);--console-pre-bg: var(--bg-surface);--console-text: var(--text-primary);--console-prompt: var(--gold);--console-result: #A8C98A;--console-error: #D9735A;--console-warning: #EFA030;--syn-kw: #EFA030;--syn-str: #D9735A;--syn-cmt: #48433D;--syn-type: #7AC4B8;--syn-num: #A8C98A;--syn-fn: #C4A0E8;--syn-punc: #6A5F58;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 2px 6px rgba(0, 0, 0, .5);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .6);--transition-fast: .1s ease;--transition-normal: .12s ease;--font-family: "DM Sans", sans-serif;--font-serif: "Cormorant Garamond", Georgia, serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--font-size-sm: 12px;--font-size-md: 13px;--font-size-lg: 15px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);background-color:var(--bg-base);color:var(--text-primary);line-height:1.5;min-height:100vh}a{color:var(--gold-bright);text-decoration:none}a:hover{color:var(--text-primary)}kbd{font-family:var(--font-mono);font-size:10px;background:var(--bg-panel);border:1px solid var(--border-str);border-radius:3px;padding:1px 6px;color:var(--text-sec)}code{font-family:var(--font-mono);font-size:var(--font-size-sm);background:var(--bg-panel);padding:2px 5px;border-radius:var(--radius-sm);color:var(--text-primary)}pre{font-family:var(--font-mono);font-size:var(--font-size-md);background:var(--bg-surface);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);overflow-x:auto;color:var(--text-primary)}.header{height:54px;background:var(--bg-surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;flex-shrink:0}.header-content{height:100%;display:flex;align-items:center;padding:0 20px;gap:16px}.logo a{display:flex;align-items:center;gap:10px;text-decoration:none}.logo-mark{width:30px;height:30px;background:var(--gold);border-radius:7px;display:flex;align-items:center;justify-content:center;font-family:var(--font-serif);font-size:19px;font-weight:600;color:#0a0800;letter-spacing:-.02em;flex-shrink:0}.logo-text{font-family:var(--font-serif);font-size:23px;font-weight:500;color:var(--gold-bright);letter-spacing:.01em;line-height:1}.logo-sub{font-size:10px;color:var(--text-dim);letter-spacing:.07em;text-transform:uppercase;font-weight:400;margin-left:2px;align-self:flex-end;margin-bottom:2px}.nav-sep{width:1px;height:22px;background:var(--border-mid);margin:0 4px}.nav{display:flex;gap:2px}.nav-link{font-size:13px;color:var(--text-sec);text-decoration:none;padding:5px 10px;border-radius:5px;transition:color var(--transition-normal),background var(--transition-normal);font-weight:400}.nav-link:hover{color:var(--text-primary);background:var(--bg-hover)}.nav-link.active{color:var(--gold-bright);font-weight:500}.nav-link.external:after{content:"↗";font-size:.75em;margin-left:3px;opacity:.6}.header-right{margin-left:auto;display:flex;align-items:center;gap:6px}#app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.main{flex:1;display:flex;overflow:hidden;min-height:0;padding:0}.repl-container{flex:1;display:flex;min-height:0;gap:0}.editor-pane{flex:1;display:flex;flex-direction:column;border-right:1px solid var(--border-mid);min-width:0;min-height:0;overflow:hidden;background:var(--bg-base)}.editor-header{height:36px;display:flex;align-items:stretch;background:var(--bg-panel);border-bottom:1px solid var(--border);flex-shrink:0;overflow:hidden}.editor-tabs{display:flex;height:100%;flex-shrink:0}.tab-button{font-family:var(--font-mono);font-size:12px;padding:0 12px;background:transparent;border:none;border-bottom:1.5px solid transparent;color:var(--text-dim);cursor:pointer;transition:color var(--transition-normal),border-color var(--transition-normal);height:100%;display:flex;align-items:center}.tab-button:hover{color:var(--text-sec)}.tab-button.active{color:var(--text-primary);border-bottom-color:var(--gold);background:transparent}.editor-actions{display:flex;align-items:center;gap:4px;margin-left:auto;padding:0 8px;flex-shrink:0}.editor-wrapper{flex:1;position:relative;overflow:hidden}.monaco-editor{width:100%;height:100%}#editor-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-base);color:var(--text-sec);font-size:var(--font-size-md);gap:var(--spacing-md)}.editor-footer{height:24px;display:flex;justify-content:space-between;align-items:center;padding:0 var(--spacing-md);background:var(--bg-panel);border-top:1px solid var(--border);font-size:11px;color:var(--text-dim);flex-shrink:0;font-family:var(--font-family);letter-spacing:.02em}.status-indicator{display:flex;align-items:center;gap:5px}.dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.dot.online{background:var(--success-color)}.dot.offline{background:var(--error-color)}.dot.loading{background:var(--gold);animation:pulse .8s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.cursor-position{color:var(--text-dim);font-size:11px;letter-spacing:.02em}.console-pane{width:44%;flex-shrink:0;display:flex;flex-direction:column;min-width:300px;min-height:0;overflow:hidden;background:var(--bg-base)}.console-header{height:36px;display:flex;justify-content:space-between;align-items:center;padding:0 16px;background:var(--bg-panel);border-bottom:1px solid var(--border);flex-shrink:0}.console-title{font-family:var(--font-mono);font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.console-actions{display:flex;gap:4px}.console-wrapper{flex:1;position:relative;overflow:hidden;display:flex;flex-direction:column}.console-output{flex:1;overflow-y:auto;padding:10px 16px;font-family:var(--font-mono);font-size:12.5px;line-height:1.6;color:var(--console-text)}.console-output::-webkit-scrollbar{width:4px}.console-output::-webkit-scrollbar-track{background:transparent}.console-output::-webkit-scrollbar-thumb{background:var(--border-str);border-radius:2px}.console-welcome{padding:4px 0 8px}.console-welcome p{margin-bottom:4px}.console-welcome pre{background:var(--bg-surface);padding:var(--spacing-sm);border-radius:var(--radius-sm);margin-top:var(--spacing-sm);color:var(--console-text);border-left:2px solid var(--border-str)}.console-output pre{background:var(--bg-surface);color:var(--console-text);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);margin:var(--spacing-xs) 0;white-space:pre-wrap;word-break:break-all;font-family:var(--font-mono);font-size:var(--font-size-md);line-height:1.65;border-left:2px solid var(--border-str)}.console-line{display:flex;gap:var(--spacing-sm);margin-bottom:1px}.console-prompt{color:var(--gold);-webkit-user-select:none;user-select:none}.console-result{color:var(--console-result)}.console-error{color:var(--console-error)}.console-warning{color:var(--console-warning)}#console-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#0c0a08d9;color:var(--text-sec);font-size:var(--font-size-md);gap:var(--spacing-md)}.repl-input-row{height:44px;display:flex;align-items:center;gap:8px;padding:0 16px;border-top:1px solid var(--border-mid);background:var(--bg-surface);flex-shrink:0;transition:border-color .15s,box-shadow .15s}.repl-input-row:focus-within{border-top-color:var(--gold-dim);box-shadow:0 -2px 12px #d48b1c14}.repl-input-row.waiting{border-top-color:var(--gold);box-shadow:0 -2px 16px #d48b1c2e;animation:replWait 1.8s ease-in-out infinite}@keyframes replWait{0%,to{box-shadow:0 -2px 16px #d48b1c2e}50%{box-shadow:0 -2px 24px #d48b1c59}}.repl-prompt{color:var(--gold);font-family:var(--font-mono);font-size:14px;-webkit-user-select:none;user-select:none;white-space:nowrap;opacity:.9;transition:opacity .15s}.repl-input-row:focus-within .repl-prompt{opacity:1}.repl-input{flex:1;background:transparent;border:none;outline:none;color:var(--text-primary);font-family:var(--font-mono);font-size:13px;line-height:1.6;caret-color:var(--gold)}.repl-input::placeholder{color:var(--text-dim)}.repl-input:disabled{opacity:.35;cursor:not-allowed}.console-footer{height:24px;padding:0 var(--spacing-md);background:var(--bg-panel);border-top:1px solid var(--border);font-size:11px;color:var(--text-dim);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;font-family:var(--font-family);letter-spacing:.02em}.execution-time{color:var(--text-dim)}.btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-family);font-size:13px;font-weight:400;padding:5px 12px;background:transparent;border:1px solid var(--border-str);border-radius:var(--radius-md);color:var(--text-sec);cursor:pointer;transition:color var(--transition-normal),background var(--transition-normal),border-color var(--transition-normal);line-height:1;letter-spacing:.01em}.btn:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-str)}.btn:active{transform:scale(.97)}.btn-icon{padding:5px 10px}.btn-sm{padding:3px 8px;font-size:11px}.btn-primary,.btn-run{background:var(--gold);border-color:var(--gold);color:#0a0800;font-weight:500;gap:7px}.btn-primary:hover,.btn-run:hover{background:var(--gold-bright);border-color:var(--gold-bright);color:#0a0800}.run-tri{width:0;height:0;border-style:solid;border-width:4px 0 4px 6px;border-color:transparent transparent transparent #0A0800;flex-shrink:0}.select{font-family:var(--font-family);font-size:12px;padding:4px 24px 4px 8px;background:var(--bg-panel);border:1px solid var(--border-mid);border-radius:5px;color:var(--text-sec);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='%2388796C'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;outline:none;transition:border-color var(--transition-normal),color var(--transition-normal)}.select:hover{border-color:var(--border-str);color:var(--text-primary)}.select option{background:var(--bg-panel)}.btn-close{font-size:20px;line-height:1;padding:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-sec);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-normal)}.btn-close:hover{background:var(--bg-hover);color:var(--text-primary)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:1000}.overlay.loading{background:#000000eb}.overlay-content{background:var(--bg-panel);border:1px solid var(--border-mid);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:90%;max-width:800px;max-height:90vh;overflow-y:auto;animation:slideIn .18s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.overlay-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--border)}.overlay-header h2{font-family:var(--font-serif);font-size:20px;font-weight:500;color:var(--gold-bright);letter-spacing:.01em}.tutorial-list{padding:var(--spacing-lg);display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--spacing-md)}.tutorial-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-md);transition:border-color var(--transition-normal)}.tutorial-card:hover{border-color:var(--border-str)}.tutorial-card h3{font-size:13px;font-weight:500;color:var(--text-primary);margin-bottom:var(--spacing-xs)}.tutorial-card p{color:var(--text-sec);font-size:12px;margin-bottom:var(--spacing-md);line-height:1.5}.tutorial-card .btn{width:100%;justify-content:center}.loading-content{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl);text-align:center;gap:var(--spacing-md)}.loading-content p{color:var(--text-sec);font-size:var(--font-size-md)}.loading-content progress{width:200px;accent-color:var(--gold)}.spinner{border:2px solid var(--border-mid);border-top-color:var(--gold);border-radius:50%;width:28px;height:28px;animation:spin .7s linear infinite}.spinner.large{width:44px;height:44px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.loading-spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl);gap:var(--spacing-md);color:var(--text-sec);font-size:var(--font-size-md)}.footer{background:var(--bg-panel);border-top:1px solid var(--border);padding:10px var(--spacing-lg);flex-shrink:0}.footer-content{text-align:center;color:var(--text-dim);font-size:11px;letter-spacing:.02em}.footer-content a{color:var(--text-sec)}.footer-content a:hover{color:var(--gold-bright)}.tutorial-panel{flex-direction:column;flex-shrink:0;border-bottom:1px solid var(--border-mid);background:var(--bg-panel);font-size:12px;font-family:var(--font-family)}.tp-header{display:flex;justify-content:space-between;align-items:center;padding:8px 14px 0}.tp-meta{display:flex;align-items:center;gap:6px}.tp-category{color:var(--gold-bright);font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.tp-sep{color:var(--text-dim)}.tp-progress-label{color:var(--text-dim);font-size:11px}.tp-body{padding:6px 14px 8px}.tp-step-title{color:var(--text-primary);font-weight:500;margin-bottom:3px;font-size:12.5px}.tp-instruction{color:var(--text-sec);line-height:1.5}.tp-hint{margin-top:5px;padding:4px 8px;background:var(--gold-glow);border-left:2px solid var(--gold-dim);color:var(--gold-bright);font-family:var(--font-mono);font-size:11px;border-radius:0 3px 3px 0;white-space:pre}.tp-feedback{margin-top:5px;font-size:11.5px;min-height:16px}.tp-feedback-success{color:var(--success-color)}.tp-feedback-error{color:var(--text-sec)}.tp-footer{display:flex;align-items:center;gap:10px;padding:0 14px 8px}.tp-progress-track{flex:1;height:3px;background:var(--border-mid);border-radius:2px;overflow:hidden}.tp-progress-bar{height:100%;background:var(--gold);border-radius:2px;transition:width .3s ease;width:0%}.tp-actions{display:flex;gap:4px;flex-shrink:0}.console-line-comment{color:var(--text-dim);font-style:italic}.tp-badge{font-size:10px;color:var(--success-color);margin-top:4px;min-height:14px}.ansi-0{color:var(--console-text)}.ansi-1{color:var(--console-error)}.ansi-2{color:var(--success-color)}.ansi-3{color:var(--warning-color)}.ansi-4{color:var(--info-color)}.ansi-5{color:var(--syn-fn)}.ansi-6{color:var(--syn-type)}.ansi-7{color:#d4d4d4}.ansi-8{color:var(--text-dim)}.ansi-9{color:#ff8870}.ansi-10{color:#b8e0a0}.ansi-11{color:#ffd43b}.ansi-12{color:#339af0}.ansi-13{color:#e59ef0}.ansi-14{color:#39c5cf}.ansi-15{color:#fff}.ansi-bold{font-weight:700}.ansi-dim{opacity:.5}.ansi-italic{font-style:italic}.ansi-underline{text-decoration:underline}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-str);border-radius:2px}@media(max-width:1024px){.repl-container{flex-direction:column}.console-pane{width:100%;flex:1;min-height:0}.editor-pane{flex:1;min-height:0;border-right:none;border-bottom:1px solid var(--border-mid)}}@media(max-width:768px){.header-content{padding:0 14px;gap:10px}.nav-sep{display:none}.nav{gap:0}.logo-sub,.btn-label{display:none}}@media(max-width:480px){.editor-actions .select{max-width:90px}}@media print{.header,.footer,.editor-actions,.console-actions{display:none}.repl-container{display:block}.editor-pane,.console-pane{break-inside:avoid}}
