:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Arial,sans-serif;line-height:1.4}body{margin:0;background:#0b0c10;color:#eaf0ff}.container{max-width:1100px;margin:0 auto;padding:24px}.header h1{margin:0 0 8px;font-size:28px}.subtitle{margin:0;opacity:.8}.grid{margin-top:18px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.card{background:#11131a;border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:16px;box-shadow:0 8px 24px #00000040}.card.full{grid-column:1 / -1}.row{display:flex;gap:10px;align-items:center;margin-top:12px;flex-wrap:wrap}button{border:1px solid rgba(255,255,255,.18);background:#1c2233;color:#eaf0ff;padding:10px 12px;border-radius:10px;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:transparent}.tabs{display:flex;gap:8px;margin-left:auto}.tab{padding:8px 10px}.tab.active{border-color:#ffffff80}.textarea{width:100%;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:#0e1016;color:#eaf0ff;padding:12px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.resultBox{padding:12px;border-radius:12px;border:1px dashed rgba(255,255,255,.18);background:#0e1016}.code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.code.block{display:block;padding:10px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:#0b0c10;overflow-x:auto}.steps{list-style:none;padding:0;margin:0;display:grid;gap:12px}.step{border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:12px;background:#ffffff05}.stepHeader{display:flex;gap:10px;align-items:center}.badge{display:inline-block;padding:4px 8px;border-radius:999px;border:1px solid rgba(255,255,255,.18);opacity:.9}.stepBody{margin-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.label{font-size:12px;opacity:.7;margin-bottom:6px}.note{margin:10px 0 0;opacity:.85}.muted{opacity:.75}.error{margin-top:10px;color:#ffb4b4}.footer{margin-top:22px;opacity:.65}.monacoWrap{position:relative;border-radius:12px;border:1px solid rgba(255,255,255,.12);overflow:hidden}.inlineErrors{margin-top:10px;border:1px solid rgba(255,180,180,.25);background:#ffb4b414;border-radius:12px;padding:10px 12px;font-size:13px}.inlineErrorsTitle{font-weight:600;margin-bottom:6px}.inlineErrors ul{margin:0;padding-left:18px}.monacoPlaceholder{position:absolute;top:0;left:0;padding:14px;opacity:.55;pointer-events:none;z-index:2;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:14px}.monacoWrap .monaco-editor{position:relative;z-index:1}.expressionHeaderRow{display:flex;justify-content:flex-start}.syntaxHelp{width:100%}.syntaxHelpToggle{background:transparent;border:1px solid rgba(255,255,255,.18);padding:8px 10px;border-radius:10px;cursor:pointer}.syntaxHelpBody{margin-top:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;border-radius:12px;padding:12px}.syntaxHelpText{margin:0 0 10px;opacity:.9}.syntaxHelpList{margin:0;padding-left:18px;display:grid;gap:6px}.syntaxHelpFoot{margin:10px 0 0;opacity:.85}.opToolbar{display:flex;justify-content:center;gap:10px;margin-top:4px}.opBtn{border:1px solid rgba(255,255,255,.18);background:#1c2233;color:#eaf0ff;padding:6px 10px;border-radius:10px;cursor:pointer;min-width:40px;text-align:center}.opBtn:hover{border-color:#ffffff59}.expressionField{display:flex;flex-direction:column;gap:14px}.monacoWrap.flash{animation:editorFlash .32s ease-out}@keyframes editorFlash{0%{border-color:#ffffff8c;box-shadow:0 0 0 3px #ffffff1a}to{border-color:#ffffff1f;box-shadow:none}}.expressionHeaderRow{display:flex;align-items:center;justify-content:space-between;gap:12px}.validBadge{border:1px solid rgba(180,255,200,.35);background:#b4ffc81a;padding:6px 10px;border-radius:999px;font-size:13px;opacity:.95;white-space:nowrap}.statusBadge{padding:6px 10px;border-radius:999px;font-size:13px;white-space:nowrap;border:1px solid rgba(255,255,255,.18);background:#ffffff0f;opacity:.95}.statusBadge.ok{border-color:#b4ffc859;background:#b4ffc81a}.statusBadge.err{border-color:#ffb4b459;background:#ffb4b41a}
