:root{--bg: #05070c;--bg-elevated: #0b1018;--bg-input: #111823;--border: #1d2836;--border-strong: #2b3a4d;--text: #e7eef7;--text-dim: #8b9bb0;--text-faint: #5b6b80;--accent: #4fd8f7;--accent-dim: #1f6f85;--ok: #3ddc97;--warn: #f5b544;--danger: #f2576b;--radius: 14px;--radius-sm: 9px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.5;overscroll-behavior-y:none}#root{min-height:100dvh;display:flex;flex-direction:column}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:1.35rem}h2{font-size:1.05rem}h3{font-size:.92rem}p{margin:0}code,pre,.mono{font-family:JetBrains Mono,ui-monospace,Cascadia Code,monospace;font-size:.82rem}a{color:var(--accent)}button{font:inherit;color:inherit;cursor:pointer;border:none;background:none}button:disabled{cursor:not-allowed;opacity:.45}input,textarea,select{font:inherit;color:var(--text);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.7rem .8rem;width:100%;outline:none;transition:border-color .15s}input:focus,textarea:focus,select:focus{border-color:var(--accent-dim)}textarea{resize:vertical;min-height:5rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.85rem}label{display:block;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:.35rem}.app{flex:1;display:flex;flex-direction:column;padding-top:var(--safe-top)}.topbar{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;border-bottom:1px solid var(--border);background:#05070ceb;backdrop-filter:blur(12px);position:sticky;top:0;z-index:10}.topbar .title{flex:1;min-width:0}.topbar .title h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content{flex:1;padding:1rem;padding-bottom:calc(1rem + var(--safe-bottom));display:flex;flex-direction:column;gap:1rem;max-width:720px;width:100%;margin:0 auto}.stack{display:flex;flex-direction:column;gap:.75rem}.row{display:flex;align-items:center;gap:.6rem}.spacer{flex:1}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1rem;display:flex;flex-direction:column;gap:.6rem}.card.interactive{cursor:pointer;transition:border-color .15s,background .15s}.card.interactive:active{border-color:var(--border-strong);background:#0d141d}.muted{color:var(--text-dim);font-size:.86rem}.faint{color:var(--text-faint);font-size:.78rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.7rem 1rem;border-radius:var(--radius-sm);background:var(--bg-input);border:1px solid var(--border);font-weight:500;font-size:.92rem;transition:background .15s;min-height:44px}.btn:active:not(:disabled){background:#16202c}.btn.primary{background:var(--accent);border-color:var(--accent);color:#04141a;font-weight:600}.btn.primary:active:not(:disabled){background:#3cc4e2}.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-dim);padding:.5rem .65rem;min-height:36px}.btn.block{width:100%}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.18rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.ok{color:var(--ok);background:#3ddc971f}.badge.warn{color:var(--warn);background:#f5b5441f}.badge.danger{color:var(--danger);background:#f2576b1f}.badge.info{color:var(--accent);background:#4fd8f71f}.badge.neutral{color:var(--text-dim);background:#8b9bb01a}.badge.ok .dot{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.alert{border-radius:var(--radius-sm);padding:.7rem .85rem;font-size:.86rem;border:1px solid transparent}.alert.error{background:#f2576b14;border-color:#f2576b59;color:#ffb3bc}.alert.warn{background:#f5b54414;border-color:#f5b5444d;color:#ffd899}.alert.info{background:#4fd8f712;border-color:#4fd8f740;color:#b6ecfa}.progress{height:5px;background:var(--border);border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent);border-radius:999px;transition:width .4s ease}.diff{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.78rem;line-height:1.55}.diff-head{display:flex;gap:.5rem;padding:.45rem .65rem;background:#0f1620;border-bottom:1px solid var(--border);color:var(--text-dim);font-size:.74rem}.diff-body{max-height:22rem;overflow:auto;background:#070b11}.diff-line{display:flex;white-space:pre-wrap;word-break:break-word;padding:0 .65rem}.diff-line .sign{width:1.1rem;flex:none;color:var(--text-faint);user-select:none}.diff-line.add{background:#3ddc9717;color:#b9f5d9}.diff-line.add .sign{color:var(--ok)}.diff-line.del{background:#f2576b17;color:#ffc4cb}.diff-line.del .sign{color:var(--danger)}.diff-line.same{color:var(--text-dim)}.empty{text-align:center;padding:2.5rem 1rem;color:var(--text-faint);font-size:.9rem}.center-screen{flex:1;display:flex;flex-direction:column;justify-content:center;gap:1rem;padding:1.5rem;max-width:420px;width:100%;margin:0 auto}.code-display{font-family:JetBrains Mono,monospace;font-size:1.5rem;letter-spacing:.12em;text-align:center;padding:1rem;background:var(--bg-input);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);user-select:all}.list{display:flex;flex-direction:column;gap:.6rem}.tabs{display:flex;gap:.25rem;padding:.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm)}.tabs button{flex:1;padding:.5rem;border-radius:7px;font-size:.85rem;color:var(--text-dim)}.tabs button[aria-selected=true]{background:var(--bg-input);color:var(--text);font-weight:600}.spin{width:1rem;height:1rem;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
