@import"https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Crimson+Pro:ital,wght@0,400;0,500;0,600;1,400&family=Outfit:wght@300;400;500;600;700&display=swap";:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--bg-elevated: #2d333b;--border-subtle: #30363d;--border-default: #484f58;--border-emphasis: #6e7681;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-tertiary: #6e7681;--text-muted: #484f58;--terminal-color: #7ee787;--nonterminal-color: #79c0ff;--binder-color: #d2a8ff;--judgment-color: #ff7b72;--rule-color: #ffa657;--meta-var-color: #a5d6ff;--accent-primary: #58a6ff;--accent-secondary: #388bfd;--accent-success: #3fb950;--accent-warning: #d29922;--accent-danger: #f85149;--gradient-subtle: linear-gradient(135deg, rgba(88, 166, 255, .08) 0%, rgba(210, 168, 255, .08) 100%);--gradient-glow: linear-gradient(135deg, rgba(88, 166, 255, .2) 0%, rgba(210, 168, 255, .2) 100%);--font-sans: "Outfit", -apple-system, BlinkMacSystemFont, sans-serif;--font-serif: "Crimson Pro", Georgia, serif;--font-mono: "Fira Code", "SF Mono", monospace;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(88, 166, 255, .15);--transition-fast: .1s ease;--transition-normal: .2s ease;--transition-slow: .3s ease}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}body{font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;inset:0;background-image:radial-gradient(ellipse at 20% 20%,rgba(88,166,255,.05) 0%,transparent 50%),radial-gradient(ellipse at 80% 80%,rgba(210,168,255,.05) 0%,transparent 50%);pointer-events:none;z-index:0}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-emphasis)}.font-mono{font-family:var(--font-mono)}.font-serif{font-family:var(--font-serif)}.text-terminal{color:var(--terminal-color)}.text-nonterminal{color:var(--nonterminal-color)}.text-binder{color:var(--binder-color)}.text-judgment{color:var(--judgment-color)}.text-rule{color:var(--rule-color)}button{font-family:var(--font-sans);cursor:pointer;border:none;outline:none;transition:all var(--transition-fast)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:13px;font-weight:500;transition:all var(--transition-normal)}.btn-primary{background:var(--accent-primary);color:var(--bg-primary)}.btn-primary:hover{background:var(--accent-secondary);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-subtle)}.btn-secondary:hover{background:var(--bg-elevated);border-color:var(--border-default)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-tertiary);color:var(--text-primary)}.btn-icon{padding:var(--space-2);width:32px;height:32px}.btn-danger{background:var(--accent-danger);color:#fff}.btn-danger:hover{opacity:.9}input,textarea,select{font-family:var(--font-sans);font-size:14px;color:var(--text-primary);background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);outline:none;transition:all var(--transition-fast)}input:focus,textarea:focus,select:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #58a6ff26}input::placeholder{color:var(--text-muted)}.card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden}.card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--border-subtle);background:var(--gradient-subtle)}.card-title{font-size:14px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:var(--space-2)}.card-body{padding:var(--space-4)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.badge-terminal{background:#7ee78726;color:var(--terminal-color)}.badge-nonterminal{background:#79c0ff26;color:var(--nonterminal-color)}.badge-binder{background:#d2a8ff26;color:var(--binder-color)}.badge-success{background:#3fb95026;color:var(--accent-success)}.badge-warning{background:#d2992226;color:var(--accent-warning)}.badge-danger{background:#f8514926;color:var(--accent-danger)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mb-2{margin-bottom:var(--space-2)}.mb-4{margin-bottom:var(--space-4)}.text-sm{font-size:12px}.text-xs{font-size:11px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes slideIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.animate-fade-in{animation:fadeIn .3s ease forwards}.animate-slide-in{animation:slideIn .2s ease forwards}.term{font-family:var(--font-mono);font-size:14px;display:inline-flex;align-items:baseline;gap:2px}.term-terminal{color:var(--terminal-color)}.term-nonterminal{color:var(--nonterminal-color)}.term-binder{color:var(--binder-color);font-style:italic}.term-variable{color:var(--meta-var-color);font-style:italic}.term-paren{color:var(--text-tertiary)}.inference-rule{display:inline-flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4);background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);min-width:120px}.rule-premises{display:flex;gap:var(--space-4);padding-bottom:var(--space-2)}.rule-line{width:100%;height:2px;background:var(--text-secondary);position:relative}.rule-name{position:absolute;right:-8px;top:50%;transform:translateY(-50%);font-size:11px;font-family:var(--font-serif);font-style:italic;color:var(--rule-color);padding-left:var(--space-3)}.rule-conclusion{padding-top:var(--space-2)}.syntax-directed{background:#3fb9501a;border-color:#3fb9504d}.syntax-directed:before{content:"✓";color:var(--accent-success);margin-right:var(--space-2)}.not-syntax-directed{background:#d299221a;border-color:#d299224d}.not-syntax-directed:before{content:"⚠";color:var(--accent-warning);margin-right:var(--space-2)}.tooltip{position:relative}.tooltip:after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translate(-50%);padding:var(--space-2) var(--space-3);background:var(--bg-elevated);color:var(--text-primary);border-radius:var(--radius-sm);font-size:12px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast);z-index:100;box-shadow:var(--shadow-md)}.tooltip:hover:after{opacity:1}.header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);height:56px;background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle);position:relative;z-index:100}.header-left{display:flex;align-items:center;gap:var(--space-6)}.logo{display:flex;align-items:center;gap:var(--space-2)}.logo-symbol{font-family:var(--font-serif);font-size:28px;font-weight:600;color:var(--accent-primary);line-height:1}.logo-text{font-family:var(--font-sans);font-size:18px;font-weight:600;color:var(--text-primary);letter-spacing:-.5px}.nav-tabs{display:flex;gap:var(--space-1)}.nav-tab{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:transparent;color:var(--text-secondary);border-radius:var(--radius-md);font-size:13px;font-weight:500;transition:all var(--transition-fast)}.nav-tab:hover{background:var(--bg-tertiary);color:var(--text-primary)}.nav-tab.active{background:var(--gradient-subtle);color:var(--accent-primary)}.nav-tab svg{opacity:.7}.nav-tab.active svg{opacity:1}.header-right{display:flex;align-items:center;gap:var(--space-2)}.sort-panel{display:flex;flex-direction:column;height:100%}.panel-section{padding:var(--space-4);border-bottom:1px solid var(--border-subtle)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.section-header h3{display:flex;align-items:center;gap:var(--space-2);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.section-header svg{opacity:.6}.add-form{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);background:var(--bg-tertiary);border-radius:var(--radius-md);margin-bottom:var(--space-3)}.add-form input[type=text]{width:100%}.checkbox-label{display:flex;align-items:center;gap:var(--space-2);font-size:13px;color:var(--text-secondary);cursor:pointer}.checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-primary)}.form-actions{display:flex;gap:var(--space-2)}.form-group{display:flex;flex-direction:column;gap:var(--space-1)}.form-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary)}.kind-toggle{display:flex;gap:2px;background:var(--bg-secondary);border-radius:var(--radius-md);padding:2px}.toggle-btn{flex:1;padding:8px 12px;font-size:13px;font-weight:500;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.toggle-btn:hover{color:var(--text-primary)}.toggle-btn.active{background:var(--accent-primary);color:#fff}.kind-hint{font-size:11px;color:var(--text-tertiary);font-style:italic}.input-empty{border-color:var(--border-default)!important}.prefix-input{width:100%}.atom-info-section{padding:var(--space-3)}.atom-details{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);background:var(--bg-tertiary);border-radius:var(--radius-md)}.atom-preview{display:flex;flex-direction:column;gap:var(--space-1)}.atom-label{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-tertiary)}.atom-examples{font-size:16px;font-weight:500}.atom-properties{display:flex;flex-direction:column;gap:var(--space-2)}.atom-property{display:flex;align-items:center;gap:var(--space-2);font-size:12px;padding:var(--space-2);background:var(--bg-secondary);border-radius:var(--radius-sm)}.atom-property.bindable{color:var(--binder-color);border-left:2px solid var(--binder-color)}.atom-property.unbindable{color:var(--accent-warning);border-left:2px solid var(--accent-warning)}.atom-property svg{flex-shrink:0}.badge-atom{background:#f59e0b33;color:var(--accent-warning);border:1px solid rgba(245,158,11,.3)}.sort-item.atom-sort{border-left:3px solid var(--accent-warning)}.sort-item.atom-sort.selected{border-left-color:var(--accent-warning)}.sort-list{display:flex;flex-direction:column;gap:var(--space-1)}.sort-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);animation:slideIn .2s ease forwards}.sort-item:hover{background:var(--bg-elevated);border-color:var(--border-subtle)}.sort-item.selected{background:var(--gradient-subtle);border-color:var(--accent-primary);box-shadow:0 0 0 1px #58a6ff33}.sort-info{display:flex;align-items:center;gap:var(--space-2)}.sort-name{font-size:14px;font-weight:500}.delete-btn{opacity:0;transition:opacity var(--transition-fast)}.sort-item:hover .delete-btn,.constructor-item:hover .delete-btn{opacity:1}.delete-btn:hover{color:var(--accent-danger)!important}.constructors-section{flex:1;overflow-y:auto;display:flex;flex-direction:column}.constructor-list{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.constructor-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border-radius:var(--radius-md);animation:slideIn .2s ease forwards}.constructor-signature{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.constructor-name{font-weight:600;font-size:14px}.constructor-args{font-size:13px}.arg-label{color:var(--text-tertiary)}.binder-indicator{color:var(--binder-color);font-size:10px;vertical-align:super;margin-left:1px}.add-constructor{margin-top:auto;padding-top:var(--space-3);border-top:1px solid var(--border-subtle)}.constructor-form{display:flex;flex-direction:column;gap:var(--space-3)}.constructor-name-input{width:100%}.args-list{display:flex;flex-direction:column;gap:var(--space-2)}.arg-row{display:flex;align-items:center;gap:var(--space-2)}.arg-label-input{width:80px;font-size:13px;padding:var(--space-1) var(--space-2)}.constructor-form-actions{display:flex;justify-content:space-between;gap:var(--space-2)}.constructor-form-actions .btn{flex:1}.constructor-form-actions .btn-ghost{flex:0}.term-display{display:flex;flex-direction:column;border-bottom:1px solid var(--border-subtle);min-height:180px;flex:1}.term-display-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle)}.term-display-header h3{display:flex;align-items:center;gap:var(--space-2);font-size:13px;font-weight:600;color:var(--text-secondary)}.sort-label{font-size:14px;font-weight:500;padding:2px 8px;background:var(--bg-tertiary);border-radius:var(--radius-sm)}.header-controls{display:flex;align-items:center;gap:var(--space-3)}.control-group{display:flex;align-items:center;gap:var(--space-2)}.control-group label{font-size:12px;color:var(--text-tertiary)}.depth-input,.count-input{width:50px;padding:var(--space-1) var(--space-2);font-size:12px;text-align:center}.view-toggle{display:flex;background:var(--bg-tertiary);border-radius:var(--radius-md);padding:2px}.toggle-btn{padding:var(--space-1) var(--space-2);background:transparent;color:var(--text-tertiary);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.toggle-btn:hover{color:var(--text-secondary)}.toggle-btn.active{background:var(--bg-elevated);color:var(--text-primary)}.term-display-content{flex:1;overflow-y:auto;padding:var(--space-4)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--space-3);color:var(--text-tertiary)}.empty-state svg{opacity:.3}.empty-state p{font-size:13px}.terms-grid{display:flex;flex-wrap:wrap;gap:var(--space-3)}.terms-grid.tree{flex-direction:column}.term-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);overflow:hidden;animation:fadeIn .3s ease forwards}.terms-grid.inline .term-card{flex:0 0 auto}.terms-grid.tree .term-card{width:100%}.term-card-header{padding:var(--space-1) var(--space-2);background:var(--bg-tertiary);border-bottom:1px solid var(--border-subtle)}.term-index{font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase}.term-card-body{padding:var(--space-3);font-size:13px;line-height:1.6}.term{display:inline}.term-constructor{font-weight:600}.term-paren,.term-comma{color:var(--text-muted)}.term-error{color:var(--accent-danger)}.term-tree-node{font-family:var(--font-mono);line-height:1.8}.term-tree-prefix{color:var(--text-muted);-webkit-user-select:none;user-select:none}.term-atom{font-family:var(--font-mono);font-weight:600;color:var(--accent-warning)}.judgment-panel{display:flex;flex-direction:column;flex:1;overflow:hidden}.judgment-panel .panel-section{padding:var(--space-4);border-bottom:1px solid var(--border-subtle)}.judgment-panel .rules-section{flex:1;overflow-y:auto;display:flex;flex-direction:column;padding:var(--space-4)}.template-selector{display:flex;gap:var(--space-2);margin-bottom:var(--space-4)}.template-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3);background:var(--bg-tertiary);border:2px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.template-btn:hover{background:var(--bg-elevated);border-color:var(--accent-secondary)}.template-btn.active{background:var(--gradient-subtle);border-color:var(--accent-primary);box-shadow:0 0 0 2px #58a6ff33}.template-label{font-size:12px;font-weight:600;color:var(--text-secondary)}.template-example{font-size:14px;color:var(--text-primary)}.judgment-form,.add-judgment-form{padding:var(--space-3);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--radius-md);margin-bottom:var(--space-3)}.form-preview{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.preview-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary)}.preview-content{font-size:16px;color:var(--text-primary)}.judgment-preview-display .separator{color:var(--judgment-color);font-weight:600}.judgment-preview-display .arg-display{font-weight:500}.judgment-preview-display.compact{font-size:12px}.form-group{margin-bottom:var(--space-4)}.form-group>label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary);margin-bottom:var(--space-2)}.symbol-row{display:flex;flex-direction:column;gap:var(--space-2)}.symbol-input{width:80px;text-align:center;font-size:16px}.symbol-suggestions{display:flex;flex-wrap:wrap;gap:var(--space-1)}.symbol-btn{padding:var(--space-1) var(--space-2);background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-size:14px;color:var(--text-secondary);transition:all var(--transition-fast);cursor:pointer}.symbol-btn:hover,.symbol-btn.active{background:var(--accent-primary);color:var(--bg-primary);border-color:var(--accent-primary)}.ternary-presets{display:flex;gap:var(--space-2);flex-wrap:wrap}.preset-btn{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border:2px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);min-width:100px}.preset-btn:hover{background:var(--bg-elevated);border-color:var(--accent-secondary)}.preset-btn.active{background:var(--gradient-subtle);border-color:var(--accent-primary);box-shadow:0 0 0 2px #58a6ff33}.preset-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.preset-desc{font-size:13px;color:var(--text-primary)}.preset-btn.active .preset-label,.preset-btn.active .preset-desc{color:var(--accent-primary)}.custom-separators{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--border-subtle)}.custom-sep-label{font-size:11px;color:var(--text-tertiary);display:block;margin-bottom:var(--space-2)}.separator-slots{display:flex;flex-direction:column;gap:var(--space-3)}.separator-slot{display:flex;flex-direction:column;gap:var(--space-1)}.slot-label{font-size:11px;color:var(--text-tertiary)}.separator-custom-input{width:100px;text-align:center;font-size:14px;padding:var(--space-1) var(--space-2);color:var(--judgment-color);font-weight:600}.separator-quickpicks{display:flex;flex-wrap:wrap;gap:4px}.sep-pick-btn{padding:2px 8px;font-size:13px;background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.sep-pick-btn:hover,.sep-pick-btn.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.args-separators-editor{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.arg-sep-row{display:flex;align-items:center;gap:var(--space-2)}.separator-input{width:60px;text-align:center;font-size:14px;padding:var(--space-1) var(--space-2);background:var(--bg-tertiary);border:1px dashed var(--border-subtle);border-radius:var(--radius-sm);color:var(--judgment-color)}.separator-input::placeholder{font-size:10px;color:var(--text-tertiary)}.arg-editor{display:flex;align-items:center;gap:var(--space-2);flex:1;padding:var(--space-2);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--radius-sm)}.arg-label-input{width:60px;font-size:13px;padding:var(--space-1) var(--space-2)}.arg-sort-select{flex:1;font-size:13px;padding:var(--space-1) var(--space-2)}.remove-arg-btn{opacity:.5}.remove-arg-btn:hover{opacity:1;color:var(--accent-danger)!important}.suffix-row{padding-left:calc(60px + var(--space-2))}.args-separators-editor.simple-mode .arg-sep-row{justify-content:flex-start}.args-separators-editor.simple-mode .arg-editor{flex:1}.add-arg-btn{margin-top:var(--space-2)}.form-actions{display:flex;gap:var(--space-2);justify-content:flex-end;padding-top:var(--space-3);border-top:1px solid var(--border-subtle);margin-top:var(--space-3)}.judgment-list{display:flex;flex-direction:column;gap:var(--space-2)}.judgment-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);animation:slideIn .2s ease forwards}.judgment-item:hover{background:var(--bg-elevated);border-color:var(--border-subtle)}.judgment-item.selected{background:var(--gradient-subtle);border-color:var(--accent-primary);box-shadow:0 0 0 1px #58a6ff33}.judgment-info{display:flex;flex-direction:column;gap:var(--space-1)}.judgment-name{font-weight:600;font-size:13px;color:var(--text-primary)}.judgment-preview{font-size:12px;color:var(--text-secondary)}.judgment-actions{display:flex;gap:2px}.judgment-actions .btn-icon{opacity:0;transition:opacity var(--transition-fast)}.judgment-item:hover .judgment-actions .btn-icon{opacity:.6}.judgment-item:hover .judgment-actions .btn-icon:hover{opacity:1}.rules-list{display:flex;flex-direction:column;gap:var(--space-2)}.rule-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border-radius:var(--radius-md);animation:slideIn .2s ease forwards}.rule-info{display:flex;flex-direction:column;gap:2px;flex:1}.rule-name{font-size:14px;font-weight:500;font-style:italic;cursor:pointer;color:var(--rule-color)}.rule-name:hover{text-decoration:underline;text-decoration-style:dotted}.rule-meta{color:var(--text-tertiary)}.rule-edit-form{display:flex;align-items:center;gap:var(--space-1)}.rule-name-input{flex:1;font-size:13px;font-family:var(--font-serif);font-style:italic;padding:2px 6px;min-width:80px}.rule-actions{display:flex;gap:2px}.rule-actions .btn-icon{opacity:0;transition:opacity var(--transition-fast)}.rule-item:hover .rule-actions .btn-icon{opacity:.6}.rule-item:hover .rule-actions .btn-icon:hover{opacity:1}.edit-btn:hover{color:var(--accent-primary)!important}.add-form{margin-bottom:var(--space-3)}.add-form input{width:100%;margin-bottom:var(--space-2)}.form-row{display:flex;gap:var(--space-2);margin-bottom:var(--space-2)}.form-row input:first-child{flex:1}.args-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary);margin-bottom:var(--space-2)}.rule-canvas{display:flex;flex-direction:column;flex:2;overflow:hidden;min-height:400px}.canvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle)}.canvas-header h3{display:flex;align-items:center;gap:var(--space-2);font-size:15px;font-weight:600;color:var(--text-primary);margin:0}.canvas-header .text-judgment{color:var(--judgment-color);font-family:var(--font-serif)}.canvas-header .judgment-symbol{font-size:14px;color:var(--text-secondary);margin-left:var(--space-2)}.header-badges{display:flex;align-items:center;gap:var(--space-2)}.badge{font-size:10px;font-weight:600;padding:3px 8px;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.5px}.badge-success{color:var(--accent-success);background:#3fb95026}.badge-warning{color:var(--accent-warning);background:#f59e0b26}.badge-info{color:var(--text-secondary);background:var(--bg-tertiary)}.main-tabs{display:flex;gap:2px;background:var(--bg-tertiary);padding:4px;border-bottom:1px solid var(--border-subtle)}.main-tab{display:flex;align-items:center;gap:var(--space-2);padding:10px 20px;border:none;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.main-tab:hover:not(:disabled){background:var(--bg-elevated);color:var(--text-primary)}.main-tab:disabled{opacity:.4;cursor:not-allowed}.main-tab.active{background:var(--bg-primary);color:var(--accent-primary);box-shadow:0 1px 3px #0000001a}.main-tab svg{opacity:.7}.main-tab.active svg{opacity:1}.tab-check{font-size:10px;color:var(--accent-success);margin-left:4px}.tab-content-area{flex:1;display:flex;flex-direction:column;overflow:hidden}.canvas-area{flex:1;position:relative;overflow:auto;background:radial-gradient(circle at 50% 50%,rgba(88,166,255,.03) 0%,transparent 50%),linear-gradient(90deg,var(--border-subtle) 1px,transparent 1px),linear-gradient(var(--border-subtle) 1px,transparent 1px);background-size:100% 100%,40px 40px,40px 40px;background-position:center,0 0,0 0;min-height:300px;width:100%;height:100%;padding:var(--space-4)}.examples-tab-content,.derivation-tab-content{flex:1;padding:var(--space-4);overflow-y:auto}.canvas-area .empty-state{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-4);color:var(--text-muted);text-align:center}.canvas-area .empty-state svg{opacity:.2}.canvas-area .empty-state p{font-size:14px;max-width:300px}.draggable-rule{position:absolute;cursor:grab;transition:box-shadow var(--transition-fast)}.draggable-rule:active{cursor:grabbing}.rule-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-md);transition:all var(--transition-normal);animation:fadeIn .3s ease forwards}.rule-card:hover{border-color:var(--border-default);box-shadow:var(--shadow-lg),var(--shadow-glow)}.inference-rule{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);min-width:150px;position:relative}.rule-premises{display:flex;align-items:flex-end;gap:var(--space-4);padding-bottom:var(--space-2)}.premise-wrapper{position:relative}.remove-premise-btn{position:absolute;top:-8px;right:-8px;width:18px;height:18px;background:var(--accent-danger);color:#fff;border-radius:50%;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition-fast);cursor:pointer}.premise-wrapper:hover .remove-premise-btn{opacity:1}.rule-line-container{width:100%;position:relative;display:flex;align-items:center;justify-content:center;padding:var(--space-1) 0}.rule-line{height:2px;background:var(--text-primary);width:100%;min-width:100px;margin:var(--space-1) 0}.rule-name{position:absolute;right:-12px;top:50%;transform:translate(100%,-50%);font-size:12px;font-style:italic;color:var(--rule-color);padding-left:var(--space-2);white-space:nowrap}.rule-conclusion{padding-top:var(--space-1)}.add-premise-btn{position:absolute;top:-20px;left:50%;transform:translate(-50%);width:24px;height:24px;background:var(--bg-tertiary);border:1px dashed var(--border-default);border-radius:50%;color:var(--text-tertiary);display:flex;align-items:center;justify-content:center;opacity:.4;transition:all var(--transition-fast);cursor:pointer}.inference-rule:hover .add-premise-btn,.rule-card:hover .add-premise-btn{opacity:1}.add-premise-btn:hover{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.add-premise-menu{position:absolute;top:-10px;left:50%;transform:translate(-50%,-100%);z-index:100;background:var(--bg-elevated);padding:var(--space-2);border-radius:var(--radius-md);border:1px solid var(--accent-primary);box-shadow:var(--shadow-lg);min-width:160px}.premise-menu-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-2);margin-bottom:var(--space-2);border-bottom:1px solid var(--border-subtle);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.premise-menu-header .cancel-btn{width:18px;height:18px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-tertiary);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.premise-menu-header .cancel-btn:hover{background:var(--accent-danger);color:#fff}.premise-menu-options{display:flex;flex-direction:column;gap:var(--space-1)}.premise-option{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2);background:var(--bg-tertiary);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.premise-option:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.premise-option-name{font-size:13px;font-weight:500}.premise-option-symbol{font-size:14px;color:var(--judgment-color)}.premise-option:hover .premise-option-symbol{color:#fff}.rule-side-conditions{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-1) 0}.side-condition{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:#9333ea1a;border-radius:var(--radius-sm);border:1px dashed rgba(147,51,234,.3);position:relative}.side-condition-text{font-family:var(--font-mono);font-size:12px;color:#9333ea;display:flex;align-items:center;gap:2px}.side-condition-pattern-wrapper{position:relative;display:inline-flex}.side-condition-pattern{display:inline-block;padding:1px 4px;background:#9333ea26;border:1px solid rgba(147,51,234,.3);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.side-condition-pattern:hover{background:#9333ea40;border-color:#9333ea80}.side-condition-pattern.editing{background:#9333ea4d;border-color:#9333ea;box-shadow:0 0 0 2px #9333ea33}.side-condition-pattern .pattern-metavar{color:var(--metavar-color);font-style:italic}.side-condition-pattern .pattern-constructor{color:var(--constructor-color)}.side-condition-pattern .pattern-placeholder{color:var(--text-muted);font-style:italic}.remove-condition-btn{width:16px;height:16px;background:transparent;border:none;border-radius:50%;color:var(--text-tertiary);font-size:12px;cursor:pointer;opacity:0;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center}.side-condition:hover .remove-condition-btn{opacity:1}.remove-condition-btn:hover{background:var(--accent-danger);color:#fff}.add-condition-btn{position:absolute;top:-20px;left:calc(50% + 30px);transform:translate(-50%);width:24px;height:24px;background:var(--bg-tertiary);border:1px dashed rgba(147,51,234,.5);border-radius:50%;color:#9333ea;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:all var(--transition-fast)}.inference-rule:hover .add-condition-btn{opacity:1}.add-condition-btn:hover{background:#9333ea;border-color:#9333ea;color:#fff}.add-side-condition-menu{position:absolute;top:-10px;left:calc(50% + 30px);transform:translate(-50%,-100%);z-index:10001;background:var(--bg-elevated);padding:var(--space-2);border-radius:var(--radius-md);border:1px solid rgb(147,51,234);box-shadow:var(--shadow-lg);min-width:200px;max-height:300px;overflow-y:auto}.side-condition-options{display:flex;flex-direction:column;gap:var(--space-2)}.func-condition-group{display:flex;flex-direction:column;gap:var(--space-1)}.func-condition-label{font-size:11px;font-weight:600;color:#9333ea;font-family:var(--font-mono)}.condition-option{display:block;width:100%;text-align:left;padding:var(--space-1) var(--space-2);background:var(--bg-tertiary);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-family:var(--font-mono);color:var(--text-primary);transition:all var(--transition-fast)}.condition-option:hover{background:#9333ea;color:#fff;border-color:#9333ea}.judgment-display{display:flex;align-items:center;gap:var(--space-2)}.judgment-args{display:flex;align-items:center;gap:var(--space-1)}.judgment-arg-group{display:flex;align-items:center;gap:var(--space-2)}.judgment-arg{font-size:14px;font-weight:500}.judgment-symbol,.judgment-separator{font-size:16px;font-weight:600;color:var(--judgment-color);margin:0 var(--space-2)}.judgment-comma{color:var(--text-muted)}.judgment-display.conclusion .judgment-arg{font-size:15px}.judgment-display.conclusion .judgment-symbol,.judgment-display.conclusion .judgment-separator{font-size:18px}.pattern-slot-wrapper{position:relative;display:inline-flex}.pattern-slot{display:inline-flex;align-items:center;padding:2px 6px;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);border:1px solid transparent;font-family:var(--font-mono)}.pattern-slot:hover{background:#58a6ff1a;border-color:var(--accent-primary)}.pattern-slot.editing{background:#58a6ff33;border-color:var(--accent-primary)}.pattern-slot.inline{display:inline-flex;padding:1px 4px;margin:0 1px}.pattern-slot.constructor-head{border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-right:0;padding-right:2px}.pattern-metavar{color:var(--nonterminal-color);font-style:italic;font-weight:500}.pattern-constructor{color:var(--text-primary);font-weight:600}.pattern-constructor.terminal{color:var(--terminal-color)}.pattern-constructor-app{display:inline-flex;align-items:center}.pattern-args{color:var(--text-secondary)}.pattern-comma{color:var(--text-muted)}.pattern-placeholder{color:var(--text-tertiary);font-style:italic;opacity:.6}.pattern-unknown{color:var(--accent-danger)}.pattern-editor{position:absolute;top:100%;left:0;z-index:9999;min-width:250px;background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-3);margin-top:var(--space-2)}.pattern-editor-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3);font-size:12px;font-weight:600;color:var(--text-secondary)}.pattern-editor-header .close-btn{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-tertiary);cursor:pointer;font-size:16px}.pattern-editor-header .close-btn:hover{background:var(--bg-elevated);color:var(--text-primary)}.pattern-section{margin-bottom:var(--space-3)}.pattern-section:last-child{margin-bottom:0}.pattern-section label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary);margin-bottom:var(--space-2)}.metavar-input-row{display:flex;gap:var(--space-2)}.metavar-input-row input{flex:1;font-family:var(--font-mono);font-size:14px}.metavar-input-row .btn-sm{padding:var(--space-1) var(--space-3);font-size:12px}.existing-metavars{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-2)}.metavar-btn{padding:2px 8px;background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13px;font-style:italic;color:var(--nonterminal-color);cursor:pointer;transition:all var(--transition-fast)}.metavar-btn:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary);font-style:normal}.constructor-options{display:flex;flex-direction:column;gap:var(--space-1)}.constructor-btn{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13px;cursor:pointer;transition:all var(--transition-fast)}.constructor-btn:hover{background:var(--bg-elevated);border-color:var(--accent-secondary)}.constructor-btn .terminal{color:var(--terminal-color)}.constructor-btn .nonterminal{color:var(--text-primary);font-weight:600}.constructor-arity{font-size:11px;color:var(--text-tertiary)}.rule-status{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;z-index:10}.rule-status.complete{background:var(--accent-success);color:#fff}.rule-status.incomplete{background:var(--accent-warning);color:#fff}.inference-rule{position:relative}.inference-rule.complete{border-color:#2ea0434d}.inference-rule.incomplete{border-color:#d299224d}.rule-card:has(.inference-rule.complete){box-shadow:0 0 0 1px #2ea04333,var(--shadow-md)}.rule-card:has(.inference-rule.incomplete){box-shadow:0 0 0 1px #d2992233,var(--shadow-md)}.bottom-panels{display:flex;flex-direction:column;border-top:2px solid var(--accent-primary);background:var(--bg-secondary);flex-shrink:0;min-height:180px;max-height:300px}.bottom-tabs{display:flex;gap:2px;background:var(--bg-tertiary);padding:4px;border-bottom:1px solid var(--border-subtle)}.bottom-tab{display:flex;align-items:center;gap:var(--space-2);padding:8px 16px;border:none;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.bottom-tab:hover{background:var(--bg-elevated);color:var(--text-primary)}.bottom-tab.active{background:var(--bg-primary);color:var(--accent-primary);box-shadow:0 1px 3px #0000001a}.bottom-tab svg{opacity:.7}.bottom-tab.active svg{opacity:1}.tab-badge{font-size:10px;color:var(--accent-success);margin-left:4px}.tab-content{flex:1;padding:var(--space-4);overflow-y:auto}.examples-actions{margin-bottom:var(--space-3)}.examples-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.examples-section{min-width:0}.examples-label{display:flex;align-items:center;gap:var(--space-2);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm)}.examples-section.satisfying .examples-label{color:var(--accent-success);background:#3fb9501a}.examples-section.non-satisfying .examples-label{color:var(--accent-danger);background:#f851491a}.examples-list{display:flex;flex-direction:column;gap:var(--space-2)}.example-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-primary);border-radius:var(--radius-md);border:1px solid var(--border-subtle);font-size:14px;transition:all var(--transition-fast)}.example-item:hover{background:var(--bg-elevated)}.example-item.satisfying{border-left:4px solid var(--accent-success);box-shadow:0 0 0 1px #3fb9501a}.example-item.non-satisfying{border-left:4px solid var(--accent-danger);box-shadow:0 0 0 1px #f851491a}.example-judgment{display:flex;align-items:center;flex:1}.example-sep{color:var(--judgment-color);font-weight:700;font-size:15px;margin:0 4px}.example-term{color:var(--text-primary);font-weight:500}.example-sep:first-child{margin-left:0}.example-rule{font-size:12px;color:var(--accent-success);font-style:italic;font-family:var(--font-serif);background:#3fb9501a;padding:2px 8px;border-radius:var(--radius-sm)}.examples-empty{color:var(--text-tertiary);font-size:13px;font-style:italic;text-align:center;padding:var(--space-4)}.derivation-unavailable{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6);text-align:center;color:var(--text-tertiary)}.derivation-unavailable svg{margin-bottom:var(--space-3);opacity:.5}.derivation-unavailable p{font-size:14px;font-weight:500;color:var(--text-secondary);margin:0 0 var(--space-2) 0}.derivation-unavailable .hint{font-size:12px;max-width:300px}.derivation-form{display:flex;flex-direction:column;gap:var(--space-4)}.syntax-directed-badge{font-size:10px;font-weight:600;color:var(--accent-success);background:#3fb95026;padding:2px 8px;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.5px}.not-syntax-directed-badge{font-size:10px;font-weight:600;color:var(--text-tertiary);background:#80808026;padding:2px 8px;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.5px}.derivation-inputs{display:flex;flex-direction:column;gap:var(--space-3)}.derivation-inputs label{font-size:12px;font-weight:600;color:var(--text-secondary)}.term-inputs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.term-input-group{display:flex;flex-direction:column;gap:4px}.term-label{font-size:11px;color:var(--text-tertiary)}.term-label .sort-name{color:var(--accent-primary);font-weight:600}.term-builder{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono)}.term-builder-slot{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;background:var(--bg-tertiary);border:2px dashed var(--border-default);border-radius:var(--radius-md)}.term-builder-slot.nested{padding:3px 6px;border-width:1px}.term-builder-slot .slot-label{font-size:10px;font-weight:600;color:var(--accent-primary);text-transform:uppercase;letter-spacing:.3px}.constructor-picker{display:inline-flex;align-items:center;gap:4px}.constructor-btn{padding:2px 6px;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--constructor-color);font-size:12px;font-family:var(--font-mono);font-weight:600;cursor:pointer;transition:all .15s ease;display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.constructor-btn:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.constructor-btn .constructor-arity{font-size:9px;opacity:.6;font-weight:400}.term-builder-leaf{display:inline-block;padding:2px 6px;background:var(--bg-secondary);border:1px solid var(--constructor-color);border-radius:var(--radius-sm);color:var(--constructor-color);font-family:var(--font-mono);font-weight:600;font-size:12px;cursor:pointer;transition:all .15s ease}.term-builder-leaf:hover{background:#f8514926;border-color:var(--accent-danger);color:var(--accent-danger)}.term-builder-node{display:inline-flex;align-items:center;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:2px}.term-builder-node .term-constructor{padding:2px 6px;background:var(--bg-secondary);border:1px solid var(--constructor-color);border-radius:var(--radius-sm);color:var(--constructor-color);font-weight:600;font-size:12px;cursor:pointer;transition:all .15s ease;margin-right:4px}.term-builder-node .term-constructor:hover{background:#f8514926;color:var(--accent-danger);border-color:var(--accent-danger)}.term-builder-node .term-args-container{display:inline-flex;align-items:center;gap:4px}.term-builder-node .term-arg{display:inline-flex;align-items:center}.term-builder-clear{padding:2px 5px;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-tertiary);cursor:pointer;transition:all .15s ease;font-size:14px;line-height:1}.term-builder-clear:hover{background:#f8514926;color:var(--accent-danger);border-color:var(--accent-danger)}.atom-slot{border-color:var(--accent-warning)}.atom-picker{display:inline-flex;align-items:center;gap:4px}.atom-btn{padding:2px 6px;border:1px solid var(--accent-warning);border-radius:var(--radius-sm);background:#f59e0b1a;color:var(--accent-warning);font-size:12px;font-family:var(--font-mono);font-weight:600;cursor:pointer;transition:all .15s ease}.atom-btn:hover{background:var(--accent-warning);color:var(--bg-primary)}.atom-leaf{border-color:var(--accent-warning)!important;background:#f59e0b1a!important}.term-atom{font-family:var(--font-mono);font-weight:600}.derivation-judgment-builder{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:var(--radius-lg)}.derivation-arg-slot{display:inline-flex;align-items:center;gap:6px}.derivation-sep{font-size:16px;font-weight:700;color:var(--judgment-color)}.derivation-term-slot{padding:4px;border:2px solid transparent;border-radius:var(--radius-md);transition:all .2s ease}.derivation-term-slot.complete{border-color:var(--accent-success);background:#3fb9500d}.term-select{padding:6px 12px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-primary);font-size:13px;min-width:160px;cursor:pointer}.term-select:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 2px #6366f133}.derive-btn{margin-top:var(--space-2);display:inline-flex;align-items:center;gap:var(--space-2)}.derivation-result{margin-top:var(--space-4);padding:var(--space-4);border-radius:var(--radius-md);animation:slideIn .3s ease-out}.derivation-result.success{background:#3fb95014;border:1px solid rgba(63,185,80,.2)}.derivation-result.failure{background:#f8514914;border:1px solid rgba(248,81,73,.2)}.derivation-error{display:flex;align-items:center;gap:var(--space-2);color:var(--accent-danger);font-size:14px}.derivation-tree{display:flex;justify-content:center;padding:var(--space-4);overflow-x:auto}.derivation-node{display:flex;flex-direction:column;align-items:center;min-width:fit-content}.derivation-premises{display:flex;gap:var(--space-6);margin-bottom:var(--space-1)}.derivation-inference{display:flex;align-items:center;gap:var(--space-3);position:relative;padding:var(--space-1) 0}.inference-line{height:2px;background:var(--text-secondary);min-width:100px;flex:1}.derivation-inference .rule-name{font-family:var(--font-serif);font-size:12px;font-style:italic;color:var(--accent-primary);white-space:nowrap;position:absolute;right:-8px;transform:translate(100%)}.derivation-conclusion{padding:var(--space-2) var(--space-3);background:var(--bg-elevated);border-radius:var(--radius-md);border:1px solid var(--border-subtle)}.conclusion-text{font-family:var(--font-mono);font-size:13px;color:var(--text-primary);white-space:nowrap}.function-panel{display:flex;flex-direction:column;gap:var(--space-4);height:100%;overflow:hidden}.function-panel .panel-section{background:var(--surface-secondary);border-radius:var(--radius-lg);padding:var(--space-4);overflow:hidden;display:flex;flex-direction:column}.function-panel .panel-section.func-editor{flex:1;overflow:auto}.function-panel .section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.function-panel .section-header h3{font-size:.875rem;font-weight:600;color:var(--text-primary);margin:0}.function-panel .termination-badge{margin-left:var(--space-2)}.function-panel .badge{font-size:.75rem;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:500}.function-panel .badge.success{background:#10b98133;color:#10b981}.function-panel .badge.error{background:#ef444433;color:#ef4444;cursor:help}.function-panel .add-form{background:var(--surface-tertiary);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.function-panel .add-form input,.function-panel .add-form select{width:100%;padding:var(--space-2);border:1px solid var(--border-primary);border-radius:var(--radius-sm);background:var(--surface-primary);color:var(--text-primary);font-size:.875rem}.function-panel .form-row{display:flex;align-items:center;gap:var(--space-2)}.function-panel .form-row label{font-size:.75rem;color:var(--text-secondary);min-width:80px}.function-panel .form-row select{flex:1}.function-panel .form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.function-list{display:flex;flex-direction:column;gap:var(--space-2);overflow-y:auto;max-height:200px}.function-item{display:flex;align-items:center;padding:var(--space-2) var(--space-3);background:var(--surface-tertiary);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s ease;border:1px solid transparent}.function-item:hover{background:var(--surface-hover)}.function-item.selected{border-color:var(--accent-primary);background:#6366f11a}.function-item.non-terminating{border-color:#ef444480}.func-signature{flex:1;display:flex;align-items:baseline;gap:var(--space-1)}.func-signature .func-name{font-family:var(--font-mono);font-weight:600;color:var(--accent-primary)}.func-signature .func-type{font-family:var(--font-mono);font-size:.8rem;color:var(--text-secondary)}.function-item .warning-icon{color:#f59e0b;margin-right:var(--space-2)}.function-item .delete-btn{opacity:0;transition:opacity .15s ease}.function-item:hover .delete-btn{opacity:1}.function-panel .empty-state{text-align:center;padding:var(--space-4);color:var(--text-secondary)}.function-panel .empty-state p{margin:0}.function-panel .empty-state .hint{font-size:.75rem;margin-top:var(--space-2);opacity:.7}.func-cases{display:flex;flex-direction:column;gap:var(--space-3)}.func-case{background:var(--surface-tertiary);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.case-pattern{display:flex;align-items:baseline;gap:var(--space-1);font-family:var(--font-mono);font-size:.9rem}.case-pattern .func-name{color:var(--accent-primary);font-weight:600}.case-pattern .pattern{color:var(--text-primary)}.case-pattern .equals{color:var(--text-secondary);margin:0 var(--space-1)}.case-body{padding-left:var(--space-4)}.body-display{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--surface-primary);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s ease}.body-display:hover{background:var(--surface-hover)}.body-display code{font-family:var(--font-mono);color:var(--text-primary);flex:1}.body-display .edit-hint{font-size:.7rem;color:var(--text-muted);opacity:0;transition:opacity .15s ease}.body-display:hover .edit-hint{opacity:1}.body-editor{display:flex;flex-direction:column;gap:var(--space-2)}.body-editor input{width:100%;padding:var(--space-2);border:1px solid var(--accent-primary);border-radius:var(--radius-sm);background:var(--surface-primary);color:var(--text-primary);font-family:var(--font-mono);font-size:.9rem}.body-editor input:focus{outline:none;box-shadow:0 0 0 2px #6366f14d}.editor-hint{font-size:.7rem;color:var(--text-muted);line-height:1.4;display:flex;flex-direction:column;gap:4px}.vars-row{display:flex;gap:12px}.var-hint{font-size:.7rem;padding:2px 6px;border-radius:4px}.var-hint.atom{background:#f59e0b26;color:#f59e0b}.var-hint.structural{background:#6366f126;color:#818cf8}.ops-row{color:var(--text-muted);font-family:monospace}.var-atom{color:#f59e0b;font-weight:500}.var-structural{color:#818cf8;font-weight:500}.var-other{color:var(--text-secondary)}.visual-expr-builder{background:var(--surface-tertiary);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.expr-preview{background:var(--surface-primary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);padding:var(--space-3);font-family:SF Mono,monospace;font-size:1rem;min-height:40px;display:flex;align-items:center;flex-wrap:wrap;gap:4px}.expr-node{padding:2px 6px;border-radius:4px;cursor:pointer;transition:all .15s ease}.expr-node:hover{background:#6366f11a}.expr-node.selected{background:#6366f133;outline:2px solid #6366f1;outline-offset:1px}.expr-int{color:#10b981;font-weight:600}.expr-empty{color:#8b949e}.expr-var{font-weight:500}.expr-var.atom{color:#f59e0b}.expr-var.structural{color:#818cf8}.expr-singleton{color:#f59e0b}.expr-call .call-name{color:#818cf8;font-weight:600}.expr-binop{display:inline-flex;align-items:center;gap:4px}.builder-palette{display:flex;flex-wrap:wrap;gap:var(--space-3)}.palette-section{display:flex;flex-direction:column;gap:var(--space-1)}.palette-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-weight:600}.palette-items{display:flex;flex-wrap:wrap;gap:4px}.palette-btn{padding:4px 10px;border:1px solid var(--border-primary);border-radius:var(--radius-sm);background:var(--surface-secondary);color:var(--text-primary);font-size:.8rem;font-family:SF Mono,monospace;cursor:pointer;transition:all .15s ease}.palette-btn:hover{background:var(--surface-elevated);border-color:var(--accent-primary)}.palette-btn.empty{color:#8b949e}.palette-btn.int{color:#10b981}.palette-btn.var.atom{border-color:#f59e0b66;background:#f59e0b1a;color:#f59e0b}.palette-btn.var.structural{border-color:#6366f166;background:#6366f11a;color:#818cf8}.palette-btn.singleton{border-color:#f59e0b66;background:#f59e0b1a;color:#f59e0b}.palette-btn.recursive{border-color:#6366f166;background:#6366f11a;color:#818cf8}.palette-btn.op{color:var(--text-secondary)}.int-input-group{display:flex;gap:2px}.int-input{width:50px;padding:4px 6px;border:1px solid var(--border-primary);border-radius:var(--radius-sm) 0 0 var(--radius-sm);background:var(--surface-primary);color:#10b981;font-family:SF Mono,monospace;font-size:.8rem}.int-input-group .palette-btn{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.builder-actions{display:flex;align-items:center;gap:var(--space-3)}.selection-hint{font-size:.75rem;color:#6366f1;font-style:italic}.selection-info{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#6366f11a;border:1px solid rgba(99,102,241,.3);border-radius:var(--radius-sm);font-size:.75rem;color:#818cf8}.selection-info.hint{background:#8b949e1a;border-color:#8b949e33;color:var(--text-muted)}.editor-actions{display:flex;gap:var(--space-2)}.btn-sm{padding:var(--space-1) var(--space-2);font-size:.75rem}.extra-args-section{margin-bottom:var(--space-4);padding:var(--space-3);background:#6366f10d;border-radius:var(--radius-md);border:1px solid rgba(99,102,241,.2)}.extra-args-section .section-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2);font-weight:600;font-size:.8rem;color:var(--text-secondary)}.extra-args-list{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.extra-arg-item{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:#6366f126;border-radius:var(--radius-sm);font-size:.8rem}.extra-arg-item .arg-name{font-weight:600;color:#a78bfa}.extra-arg-item .arg-type{color:var(--text-muted)}.add-arg-form{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.add-arg-form input,.add-arg-form select{padding:var(--space-1) var(--space-2);font-size:.8rem}.empty-hint{font-size:.75rem;color:var(--text-muted);font-style:italic}.func-editor-content{display:flex;flex-direction:column;gap:var(--space-4)}.expr-construct{color:#f472b6;background:#f472b61a;border:1px solid rgba(244,114,182,.3)}.construct-name{font-weight:600}.expr-if{color:#facc15;background:#facc151a;border:1px solid rgba(250,204,21,.3)}.if-keyword{font-weight:700;color:#facc15}.palette-btn.construct{background:#f472b626;border-color:#f472b666;color:#f472b6}.palette-btn.construct:hover{background:#f472b64d}.btn-small{padding:4px 8px;font-size:.75rem}.proof-panel{display:flex;height:100%;background:#0d1117;color:#c9d1d9;font-family:-apple-system,system-ui,sans-serif;overflow:hidden}.proof-sidebar{width:280px;min-width:280px;background:#161b22;border-right:1px solid #30363d;display:flex;flex-direction:column;overflow:hidden}.sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid #30363d}.sidebar-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:#8b949e}.add-btn{width:24px;height:24px;border-radius:4px;background:#238636;border:none;color:#fff;cursor:pointer;font-size:16px}.property-list{flex:1;overflow-y:auto;padding:8px}.property-item{display:flex;align-items:center;gap:8px;padding:10px 12px;margin-bottom:4px;border-radius:6px;cursor:pointer;background:transparent;border:1px solid transparent}.property-item:hover{background:#21262d}.property-item.active{background:#388bfd26;border-color:#388bfd66}.status-indicator{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600}.status-indicator.unstarted{background:#30363d;color:#6e7681}.status-indicator.incomplete{background:#d2992233;color:#d29922}.status-indicator.complete{background:#23863633;color:#3fb950}.property-name{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.delete-btn{opacity:0;background:none;border:none;color:#6e7681;cursor:pointer;padding:2px 6px}.property-item:hover .delete-btn{opacity:1}.delete-btn:hover{color:#f85149}.new-property-form{padding:12px;border-bottom:1px solid #30363d;background:#0d1117;max-height:50vh;overflow-y:auto}.property-name-input{width:100%;padding:10px 12px;background:#21262d;border:1px solid #30363d;border-radius:6px;color:#c9d1d9;font-size:14px;margin-bottom:12px;box-sizing:border-box}.property-name-input:focus{outline:none;border-color:#388bfd}.formula-preview{padding:10px 12px;background:#21262d;border-radius:6px;margin-bottom:12px;font-family:JetBrains Mono,monospace;font-size:13px;color:#79c0ff;overflow-x:auto}.create-btn{width:100%;padding:10px;background:#238636;border:none;border-radius:6px;color:#fff;font-size:13px;font-weight:500;cursor:pointer}.create-btn:disabled{opacity:.4;cursor:not-allowed}.proof-main{flex:1;overflow-y:auto;padding:24px 32px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center}.empty-symbol{font-size:64px;color:#30363d;margin-bottom:16px}.empty-state h2{font-size:20px;margin:0 0 8px;color:#c9d1d9}.empty-state p{color:#8b949e;margin:0}.proof-workspace{max-width:700px;margin:0 auto}.theorem-header{display:flex;align-items:center;gap:12px;margin-bottom:24px}.theorem-header h1{font-size:24px;margin:0;color:#f0f6fc}.qed{background:#238636;color:#fff;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600}.start-section{text-align:center;padding:40px 0}.theorem-display{font-family:JetBrains Mono,monospace;font-size:16px;color:#79c0ff;padding:20px;background:#161b22;border-radius:8px;margin-bottom:24px}.begin-btn{padding:14px 32px;background:#238636;border:none;border-radius:8px;color:#fff;font-size:15px;font-weight:500;cursor:pointer}.begin-btn:hover{background:#2ea043}.proof-complete{text-align:center;padding:60px 20px;background:#2386361a;border-radius:12px;border:1px solid rgba(35,134,54,.3)}.complete-check{font-size:48px;color:#3fb950;margin-bottom:16px}.proof-complete h3{font-size:20px;color:#3fb950;margin:0 0 24px}.proved-statement{background:#0d111799;border-radius:8px;padding:20px 32px;display:inline-block;max-width:600px;margin:0 auto}.proved-formula{font-size:18px;color:#e6edf3;font-family:SF Mono,Monaco,Consolas,monospace;line-height:1.6}.proof-area{display:flex;flex-direction:column;gap:16px}.proof-message{padding:10px 16px;border-radius:6px;font-size:13px;animation:fadeIn .2s ease}.proof-message.success{background:#23863626;color:#3fb950;border:1px solid rgba(35,134,54,.3)}.proof-message.error{background:#f8514926;color:#f85149;border:1px solid rgba(248,81,73,.3)}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.goal-tabs-container{padding:12px 20px;background:#161b22;border-bottom:1px solid #30363d}.goal-progress-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.goal-progress{font-size:12px;color:#8b949e}.trivial-count{color:#3fb950}.solve-all-btn{padding:6px 12px;background:linear-gradient(135deg,#238636,#2ea043);border:none;border-radius:6px;color:#fff;font-size:12px;font-weight:500;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.solve-all-btn:hover{transform:translateY(-1px);box-shadow:0 2px 8px #23863666}.goal-tabs{display:flex;gap:8px;margin-bottom:8px}.goal-tab{padding:8px 16px;background:#21262d;border:1px solid #30363d;border-radius:6px;color:#8b949e;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:6px}.goal-tab.active{background:#388bfd26;border-color:#388bfd66;color:#79c0ff}.goal-tab.trivial{background:#2386361a;border-color:#2386364d}.goal-tab.trivial.active{background:#23863633;border-color:#23863680;color:#3fb950}.trivial-indicator{color:#3fb950;font-size:11px}.goal-display{background:#161b22;border-radius:12px;border:1px solid #30363d;overflow:hidden}.context-box{padding:16px;background:#0d1117;border-bottom:1px solid #30363d}.context-title{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6e7681;margin-bottom:12px}.context-entry{display:flex;align-items:center;gap:8px;padding:6px 0;font-family:JetBrains Mono,monospace;font-size:13px}.context-entry:not(:last-child){border-bottom:1px solid #21262d}.entry-name{color:#ffa657;font-weight:500;min-width:30px}.entry-type{color:#a371f7}.entry-formula{color:#79c0ff;flex:1}.action-btn{padding:6px 12px;background:#21262d;border:1px solid #30363d;border-radius:4px;color:#8b949e;cursor:pointer;font-size:12px}.action-btn:hover{background:#30363d;color:#c9d1d9}.action-btn.small{padding:4px 8px;font-size:11px}.goal-box{padding:20px}.goal-title{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6e7681;margin-bottom:12px}.goal-actions{display:flex;gap:8px;padding:16px 20px;background:#0d1117;border-top:1px solid #30363d;flex-wrap:wrap}.goal-actions.solved{flex-direction:column;align-items:center;background:#2386361a;border-top-color:#2386364d}.solve-hint{font-size:13px;color:#3fb950;margin-bottom:12px}.solve-btn{padding:12px 32px;background:linear-gradient(135deg,#238636,#2ea043);border:none;border-radius:8px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.solve-btn:hover{transform:translateY(-1px);box-shadow:0 4px 16px #23863666}.quick-actions{display:flex;gap:8px;padding:12px 20px;background:#0d1117;border-top:1px solid #30363d}.interactive-formula{font-family:JetBrains Mono,monospace;font-size:16px;line-height:1.8;color:#c9d1d9}.formula-part{display:inline}.formula-text{color:#8b949e}.clickable{cursor:pointer;padding:2px 6px;border-radius:4px;transition:all .15s ease}.clickable:hover{background:#388bfd33}.clickable.quantifier{color:#a371f7;font-weight:600}.clickable.quantifier:hover{background:#a371f733}.clickable.quantifier.exists{color:#3fb950}.clickable.quantifier.exists:hover{background:#3fb95033}.clickable.connective{color:#ffa657;font-weight:600;margin:0 6px}.clickable.connective:hover{background:#ffa65733}.clickable.side{color:#79c0ff}.clickable.side:hover{background:#79c0ff33}.clickable.func-app{color:#7ee787}.clickable.func-app:hover{background:#7ee78733}.connective{color:#ffa657;margin:0 6px}.comparison .op{color:#ffa657;margin:0 8px}.expr-binary .op{color:#8b949e;margin:0 4px}.expr-text{color:#c9d1d9}.menu-backdrop{position:fixed;inset:0;z-index:999}.context-menu{position:fixed;background:#21262d;border:1px solid #30363d;border-radius:8px;padding:4px;z-index:1000;min-width:200px;max-width:400px;box-shadow:0 8px 24px #0006}.menu-item{display:block;width:100%;padding:10px 14px;background:none;border:none;border-radius:6px;color:#c9d1d9;cursor:pointer;text-align:left;font-family:JetBrains Mono,monospace;font-size:13px}.menu-item:hover{background:#30363d}.start-build-btn{width:100%;padding:12px;background:#388bfd26;border:1px dashed rgba(56,139,253,.4);border-radius:8px;color:#79c0ff;cursor:pointer;font-size:13px;margin-bottom:12px}.start-build-btn:hover{background:#388bfd40}.builder-done{text-align:right;margin-bottom:12px}.reset-btn{padding:6px 12px;background:#21262d;border:1px solid #30363d;border-radius:4px;color:#8b949e;cursor:pointer;font-size:12px}.reset-btn:hover{background:#f8514926;color:#f85149}.formula-builder{background:#21262d;border-radius:8px;padding:12px;margin-bottom:12px}.draft-display{font-family:JetBrains Mono,monospace;font-size:14px;color:#79c0ff;padding:12px;background:#0d1117;border-radius:6px;margin-bottom:12px;line-height:1.6}.draft-display .q{color:#a371f7}.hole{display:inline-block;padding:2px 10px;background:#a371f733;border:1px dashed rgba(163,113,247,.6);border-radius:4px;color:#a371f7;cursor:pointer;font-weight:600}.hole:hover,.hole.editing{background:#a371f74d;border-color:#a371f7}.hole-options{display:flex;flex-direction:column;gap:10px}.option-group{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.option-group button{padding:6px 12px;background:#30363d;border:1px solid #484f58;border-radius:4px;color:#c9d1d9;cursor:pointer;font-size:14px}.option-group button:hover{background:#484f58}.option-group button:disabled{opacity:.4;cursor:not-allowed}.option-group button.active{background:#388bfd4d;border-color:#388bfd99;color:#79c0ff}.small-input{padding:6px 10px;background:#0d1117;border:1px solid #30363d;border-radius:4px;color:#ffa657;font-size:13px;width:60px}.small-input:focus{outline:none;border-color:#388bfd}.small-select{padding:6px 10px;background:#0d1117;border:1px solid #30363d;border-radius:4px;color:#a371f7;font-size:13px}.small-select:focus{outline:none;border-color:#388bfd}.comparison-group{flex-direction:column;align-items:stretch}.comparison-group .expr-input{width:100%;padding:8px 10px;background:#0d1117;border:1px solid #30363d;border-radius:4px;color:#7ee787;font-family:JetBrains Mono,monospace;font-size:13px;box-sizing:border-box}.comparison-group .expr-input:focus{outline:none;border-color:#388bfd}.op-row{display:flex;gap:4px;justify-content:center}.op-row button{width:32px;padding:6px}.comp-error{width:100%;padding:8px;background:#f8514926;border:1px solid rgba(248,81,73,.3);border-radius:4px;color:#f85149;font-size:11px}.vars-hint{font-size:11px;color:#6e7681;padding:4px 0}.ops-hint{font-size:10px;color:#3fb950;padding:2px 0;font-family:SF Mono,Monaco,monospace;opacity:.7}.hint{font-size:11px;color:#d29922;padding:8px;background:#d299221a;border-radius:4px}.app{display:flex;flex-direction:column;height:100vh;width:100%;position:relative;z-index:1}.main-content{display:flex;flex:1;overflow:hidden}.sidebar{width:340px;min-width:340px;border-right:1px solid var(--border-subtle);background:var(--bg-secondary);display:flex;flex-direction:column;overflow-y:auto}.content-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-primary)}.function-sidebar{width:420px;min-width:420px}.function-preview{padding:var(--space-8);max-width:600px;margin:0 auto}.function-preview h2{font-size:1.5rem;color:var(--text-primary);margin-bottom:var(--space-3)}.function-preview .hint{color:var(--text-secondary);line-height:1.6;margin-bottom:var(--space-6)}.function-preview code{font-family:var(--font-mono);background:var(--surface-secondary);padding:.1em .4em;border-radius:var(--radius-sm);color:var(--accent-primary)}.feature-list{display:flex;flex-direction:column;gap:var(--space-3)}.feature{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface-secondary);border-radius:var(--radius-md)}.feature-icon{font-size:1.25rem;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#6366f126;border-radius:var(--radius-sm);color:var(--accent-primary);font-family:var(--font-mono)}.feature span:last-child{color:var(--text-secondary)}
