:root{--r2f-bg:#fff;--r2f-ink:#0a0a0a;--r2f-muted:rgba(10,10,10,.55);--r2f-line:rgba(10,10,10,.16);--r2f-panel:rgba(255,255,255,.92);--r2f-glass:rgba(255,255,255,.55);--r2f-hover:rgba(10,10,10,.06);--r2f-accent:#2563eb;--r2f-ok:#15803d;--r2f-warn:#b45309;--r2f-err:#b91c1c;--r2f-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}@media (prefers-color-scheme:dark){:root{--r2f-bg:#0a0a0a;--r2f-ink:#f4f4f4;--r2f-muted:rgba(244,244,244,.6);--r2f-line:rgba(244,244,244,.2);--r2f-panel:rgba(18,18,18,.92);--r2f-glass:rgba(22,22,22,.5);--r2f-hover:rgba(244,244,244,.08);--r2f-accent:#60a5fa;--r2f-ok:#4ade80;--r2f-warn:#fbbf24;--r2f-err:#f87171}}*{box-sizing:border-box}html,body{background:var(--r2f-bg);color:var(--r2f-ink);margin:0;padding:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:14px;line-height:1.5}main{max-width:1500px;margin:0 auto;padding:28px 20px 48px}header h1{letter-spacing:-.01em;align-items:center;gap:10px;margin:0 0 4px;font-size:1.7rem;display:flex}.title-icon{color:var(--r2f-accent)}.logo{width:auto;height:38px}@media (prefers-color-scheme:dark){.logo{filter:invert()}}.subtitle-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}header .tagline{color:var(--r2f-muted);margin:0;font-size:.98rem}header .tagline a{color:var(--r2f-accent);border-bottom:1px solid transparent;text-decoration:none}header .tagline a:hover,header .tagline a:focus{border-bottom-color:currentColor}.topbar-actions{align-items:center;gap:4px;display:flex}.icon-link{width:2rem;height:2rem;color:var(--r2f-ink);cursor:pointer;opacity:.75;background:0 0;border:0;justify-content:center;align-items:center;text-decoration:none;transition:opacity .15s,color .15s,transform .15s;display:inline-flex}.icon-link:hover{opacity:1}.heartbtn:hover{color:#e2264d;opacity:1}.heart-attention{transform-origin:50%;animation:1s ease-in-out .6s 3 r2f-heart-pulse}@keyframes r2f-heart-pulse{0%,to{color:var(--r2f-ink);transform:scale(1)}50%{color:#e5102d;transform:scale(1.28)}}@media (prefers-reduced-motion:reduce){.heart-attention{animation:none}}.layout{grid-template-columns:1fr 1fr;align-items:start;gap:18px;margin-top:22px;display:grid}@media (width<=960px){.layout{grid-template-columns:1fr}}.panel{background:var(--r2f-panel);border:1px solid var(--r2f-line);-webkit-backdrop-filter:blur(12px);border-radius:12px;flex-direction:column;gap:12px;min-width:0;padding:16px;display:flex}.panel-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.panel-header h2{align-items:center;gap:8px;margin:0;font-size:1.05rem;display:flex}.panel-sub{color:var(--r2f-muted);font-size:.85rem;font-weight:400}.panel>.segmented{align-self:flex-start;max-width:100%}.section-icon{color:var(--r2f-muted)}.field-label{color:var(--r2f-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:.8rem;display:block}.field-help{color:var(--r2f-muted);text-align:justify;margin:8px 0 0;font-size:.8rem;line-height:1.45}.pills{flex-wrap:wrap;gap:8px;display:flex}.pill{border:1px solid var(--r2f-line);color:var(--r2f-ink);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:.35rem .4rem;font-family:inherit;font-size:.85rem;display:inline-flex}.pill:hover{background:var(--r2f-hover)}.pill.active{background:var(--r2f-ink);color:var(--r2f-bg);border-color:var(--r2f-ink)}.segmented{border:1px solid var(--r2f-line);border-radius:6px;display:inline-flex;overflow:hidden}.control-group .segmented{align-self:flex-start}.seg-option{border:0;border-left:1px solid var(--r2f-line);color:var(--r2f-ink);cursor:pointer;background:0 0;align-items:center;gap:6px;padding:.4rem .9rem;font-family:inherit;font-size:.88rem;display:inline-flex}.seg-option:first-child{border-left:0}.seg-option:hover{background:var(--r2f-hover)}.seg-option.active{background:var(--r2f-ink);color:var(--r2f-bg)}.control-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.control-group{flex-direction:column;display:flex}.actions{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--r2f-line);color:var(--r2f-ink);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:7px;padding:.5rem 1rem;font-family:inherit;font-size:.9rem;display:inline-flex}.btn:hover{background:var(--r2f-hover)}.btn-primary{background:var(--r2f-ink);color:var(--r2f-bg);border-color:var(--r2f-ink);font-weight:600}.btn-primary:hover{filter:brightness(1.15);background:var(--r2f-ink)}.btn:disabled,.btn-primary:disabled{opacity:.45;cursor:not-allowed;filter:none}.icon-btn{width:2rem;height:2rem;color:var(--r2f-ink);cursor:pointer;opacity:.75;background:0 0;border:0;justify-content:center;align-items:center;transition:opacity .15s,color .15s;display:inline-flex}.icon-btn:hover{opacity:1}.icon-btn.copied{color:var(--r2f-ok);opacity:1}.file-input{display:none}.file-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.file-list li{border:1px solid var(--r2f-line);background:var(--r2f-glass);font-family:var(--r2f-mono);cursor:grab;border-radius:6px;align-items:center;gap:8px;padding:.35rem .6rem;font-size:.82rem;display:flex}.file-list li.dragging{opacity:.5}.file-list .drag-handle{color:var(--r2f-muted)}.file-list .file-order{color:var(--r2f-muted);text-align:right;min-width:1.4em}.file-list .file-remove{color:var(--r2f-muted);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0 4px;font-size:1rem;line-height:1}.file-list .file-remove:hover{color:var(--r2f-err)}.parse-error{border:1px solid var(--r2f-err);color:var(--r2f-err);background:color-mix(in srgb, var(--r2f-err) 10%, transparent);font-family:var(--r2f-mono);white-space:pre-wrap;border-radius:8px;align-items:flex-start;gap:8px;padding:10px 12px;font-size:.83rem;display:flex}.meta{color:var(--r2f-muted);margin:0;font-size:.85rem}.output-pre{border:1px solid var(--r2f-line);background:var(--r2f-glass);font-family:var(--r2f-mono);white-space:pre;border-radius:8px;max-height:60vh;margin:0;padding:12px 14px;font-size:13px;line-height:1.5;overflow:auto}.output-body{border:1px solid var(--r2f-line);border-radius:8px;max-height:60vh;overflow:auto}.output-empty{text-align:center;color:var(--r2f-muted);padding:24px}.todo-panel{border-top:1px solid var(--r2f-line);flex-direction:column;gap:8px;padding-top:12px;display:flex}.todo-item{border:1px solid var(--lvl,var(--r2f-line));background:var(--r2f-glass);border-radius:8px;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.level-badge{color:#fff;background:var(--lvl);border-radius:6px;flex:none;justify-content:center;align-items:center;width:1.6rem;height:1.6rem;font-size:.8rem;font-weight:700;display:inline-flex}.level-a{--lvl:var(--r2f-ok)}.level-b{--lvl:var(--r2f-accent)}.level-c{--lvl:var(--r2f-warn)}.level-d{--lvl:var(--r2f-err)}.control-group .seg-option.active{background:var(--lvl);color:#fff;border-color:var(--lvl)}.todo-body{min-width:0}.todo-policy{font-weight:600;font-family:var(--r2f-mono);font-size:.85rem}.todo-message{color:var(--r2f-muted);font-size:.85rem}.confidence-summary{flex-wrap:wrap;gap:6px;display:flex}.confidence-summary .chip{border:1px solid var(--lvl,var(--r2f-line));font-size:.8rem;font-family:var(--r2f-mono);background:var(--lvl,var(--r2f-line));color:#fff;border-radius:999px;align-items:center;gap:6px;padding:.25rem .7rem;display:inline-flex}.confidence-summary .level-badge{background:0 0;width:auto;height:auto;font-size:.8rem}.dxc-editor-input{caret-color:var(--r2f-ink)!important}.dxc-editor.editor{border:1px solid var(--r2f-line);--dxc-light-background:var(--r2f-panel);--dxc-dark-background:var(--r2f-panel);--dxc-editor-focus-ring:none;--dxc-editor-font-size:13px;--dxc-editor-line-height:20px;border-radius:8px;max-height:60vh;overflow:auto}@keyframes fade-in-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.layout>.panel{animation:.4s ease-out backwards fade-in-up}.layout>.panel:nth-child(2){animation-delay:80ms}@media (prefers-reduced-motion:reduce){.layout>.panel{animation:none}}