html,body,#root{margin:0;min-height:100%}:root{--bg: #0f1419;--panel: #172028;--ink: #e8eef4;--muted: #93a4b5;--accent: #2f9e8b;--line: #2a3844;--danger: #d96b6b;--ok: #3cb371;font-family:IBM Plex Sans,Segoe UI,sans-serif;color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,#1c3340,transparent),radial-gradient(900px 500px at 100% 0%,#243018,transparent),var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}#root{min-height:100vh}.shell{max-width:1100px;margin:0 auto;padding:1.5rem}.top{display:flex;justify-content:space-between;gap:1rem;align-items:end;flex-wrap:wrap}.brand{margin:0;font-size:1.8rem;letter-spacing:.08em;font-weight:700}.sub{margin:.2rem 0 0;color:var(--muted);font-size:.9rem}.keyrow{display:flex;gap:.5rem;flex-wrap:wrap}.keyrow input{min-width:220px;padding:.55rem .7rem;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink)}.statusbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:1rem;padding:.65rem .85rem;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--panel) 85%,black)}.pill{display:inline-flex;align-items:center;padding:.2rem .55rem;border-radius:6px;border:1px solid var(--line);font-size:.85rem;background:#0c1217}.pill.ok{border-color:var(--ok);color:var(--ok)}.pill.bad{border-color:var(--danger);color:var(--danger)}.muted{color:var(--muted);font-size:.85rem}.nav{display:flex;gap:.5rem;margin:1.25rem 0;flex-wrap:wrap}.nav button,.main button,.keyrow button{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:.55rem .9rem;border-radius:8px;cursor:pointer}.nav button.active,.main button:hover:not(:disabled),.keyrow button:hover{border-color:var(--accent)}.main button:disabled{opacity:.55;cursor:not-allowed}.main section{background:color-mix(in srgb,var(--panel) 90%,black);border:1px solid var(--line);border-radius:12px;padding:1.25rem;margin-bottom:1rem}.main h1{margin-top:0;font-size:1.35rem}.main h2{font-size:1.05rem;margin:1rem 0 .5rem}.main textarea{width:100%;margin:.75rem 0;padding:.8rem;border-radius:10px;border:1px solid var(--line);background:#0c1217;color:var(--ink);resize:vertical;font:inherit}.row{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}.row input[type=number]{width:6rem;margin-left:.35rem;padding:.4rem .5rem;border-radius:6px;border:1px solid var(--line);background:#0c1217;color:var(--ink)}.hint{color:var(--muted);margin:0}.error{color:var(--danger)}.out pre,.main pre{white-space:pre-wrap;background:#0c1217;border-radius:10px;padding:1rem;border:1px solid var(--line);text-align:left;overflow-x:auto}.row select{margin-left:.35rem;padding:.4rem .55rem;border-radius:6px;border:1px solid var(--line);background:#0c1217;color:var(--ink);font:inherit}.progress-block{margin-top:1rem;padding:.85rem 1rem;border-radius:10px;border:1px solid var(--line);background:#0c1217}.progress-meta{display:flex;justify-content:space-between;gap:.75rem;flex-wrap:wrap;font-size:.9rem;color:var(--muted);margin-bottom:.55rem}.progress-track{height:8px;border-radius:999px;background:color-mix(in srgb,var(--line) 70%,black);overflow:hidden}.progress-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#1f7a6a,var(--accent));transition:width .4s ease}.progress-fill.pulse{animation:progress-pulse 1.6s ease-in-out infinite}@keyframes progress-pulse{0%,to{opacity:1}50%{opacity:.65}}.preview-block{margin-top:1.25rem}.image-preview{display:block;width:100%;max-width:640px;height:auto;margin:.5rem 0 1rem;border:1px solid var(--line);border-radius:8px;background:#0c1217}
