@import"https://fonts.googleapis.com/css2?family=Fraunces:wght@400;600;700&family=Space+Grotesk:wght@400;500;600&display=swap";:root{font-family:Space Grotesk,system-ui,sans-serif;line-height:1.5;font-weight:400;color:#0f1115;background-color:#f6f3ef;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at top left,rgba(244,165,96,.25),transparent 55%),radial-gradient(circle at 15% 60%,rgba(84,180,160,.2),transparent 50%),linear-gradient(120deg,#f6f3ef,#f9f5f0 45%,#efe9e2);color:inherit}a{color:inherit;text-decoration:none}button,input,textarea{font-family:inherit}#root{min-height:100vh}:root{--bg-card: rgba(255, 255, 255, .75);--bg-soft: rgba(255, 255, 255, .6);--stroke: rgba(15, 17, 21, .1);--accent: #3e7c66;--accent-strong: #215a49;--accent-warm: #d08f4f;--text-muted: rgba(15, 17, 21, .62);--shadow: 0 18px 45px rgba(15, 17, 21, .12)}.app{max-width:1200px;margin:0 auto;padding:48px 24px 80px;display:flex;flex-direction:column;gap:32px}.hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:32px;align-items:stretch}.eyebrow{text-transform:uppercase;letter-spacing:.2em;font-size:12px;color:var(--text-muted);margin:0 0 12px}.hero h1{font-family:Fraunces,serif;font-weight:600;font-size:clamp(2.4rem,3.4vw,3.6rem);margin:0 0 16px}.subhead{margin:0;font-size:1.05rem;color:var(--text-muted);max-width:560px}.hero-card{background:var(--bg-card);border:1px solid var(--stroke);border-radius:20px;padding:24px;box-shadow:var(--shadow);display:grid;gap:16px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:rise .6s ease}.meta-label{text-transform:uppercase;font-size:11px;letter-spacing:.15em;margin:0 0 6px;color:var(--text-muted)}.meta-value,.status{margin:0;font-weight:600}.status-idle{color:var(--text-muted)}.status-connecting,.status-streaming{color:var(--accent)}.status-done{color:var(--accent-strong)}.status-error{color:#c24d3c}.status-health-checking{color:var(--accent-warm)}.status-health-unhealthy{color:#c24d3c}.download{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#3e7c6629;border:1px solid rgba(62,124,102,.2);font-weight:600}.download.download-disabled{background:#0f111514;border-color:#0f11151f;color:var(--text-muted);cursor:not-allowed}.grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:24px}.panel{background:var(--bg-card);border:1px solid var(--stroke);border-radius:24px;padding:24px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:rise .6s ease}.panel h2{margin:0;font-family:Fraunces,serif;font-size:1.5rem}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.field{display:flex;flex-direction:column;gap:8px;font-size:.95rem}.field span{font-weight:600;font-size:.85rem;color:var(--text-muted)}input,textarea{border:1px solid var(--stroke);border-radius:14px;padding:10px 12px;background:var(--bg-soft);color:inherit;transition:border-color .2s ease,box-shadow .2s ease}input:focus,textarea:focus{outline:none;border-color:#3e7c6699;box-shadow:0 0 0 3px #3e7c6626}textarea{resize:vertical}.actions{display:flex;flex-wrap:wrap;gap:12px}button{border-radius:999px;border:none;padding:10px 20px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}button:disabled{opacity:.6;cursor:not-allowed}button:hover:not(:disabled){filter:brightness(.95)}button.primary{background:var(--accent);color:#fff;box-shadow:0 10px 20px #3e7c663d}button.secondary{background:#3e7c6624;color:var(--accent-strong)}button.ghost{background:transparent;border:1px solid var(--stroke);color:inherit}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .8s linear infinite}.checkmark{width:10px;height:6px;display:inline-block;border-left:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg)}@keyframes spin{to{transform:rotate(360deg)}}.asset-block{display:flex;flex-direction:column;gap:16px}.asset-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.asset-head h3{margin:0 0 6px}.asset-head p{margin:0;color:var(--text-muted);font-size:.9rem}.upload{display:inline-flex;align-items:center;justify-content:center;padding:8px 14px;border-radius:999px;border:1px dashed var(--stroke);background:#fff9;cursor:pointer;font-weight:600;font-size:.9rem;white-space:nowrap;flex-shrink:0}.upload input{display:none}.asset-list{display:grid;gap:12px}.asset-item{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:12px;align-items:center;background:#ffffffb3;border-radius:16px;padding:10px 12px;border:1px solid var(--stroke)}.asset-item img{width:64px;height:64px;border-radius:12px;object-fit:cover;border:1px solid rgba(0,0,0,.08)}.asset-item p{margin:0 0 4px;font-weight:600}.asset-item span{font-size:.8rem;color:var(--text-muted)}.asset-item button{padding:6px 12px;border-radius:999px;background:#0000000f}.font-item{grid-template-columns:minmax(0,1fr) auto}.log-panel,.preview-panel{grid-column:1 / -1}.preview-frame{width:100%;height:520px;border:1px solid var(--stroke);border-radius:16px;background:#fff}.preview-loading{height:520px;border:1px dashed var(--stroke);border-radius:16px;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--text-muted);font-weight:600}.log-head{display:flex;align-items:baseline;justify-content:space-between}.log-list{display:grid;gap:8px;max-height:320px;overflow:auto;padding-right:6px}.log-item{display:grid;grid-template-columns:90px 120px minmax(0,1fr);gap:12px;font-size:.85rem;background:#ffffffb3;border-radius:12px;padding:10px 12px;border:1px solid var(--stroke)}.log-time{color:var(--text-muted)}.log-event{font-weight:600}.log-message{color:var(--text-muted);word-break:break-word}.empty{margin:0;color:var(--text-muted);font-size:.9rem}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(max-width:960px){.hero,.grid{grid-template-columns:1fr}.asset-item{grid-template-columns:52px minmax(0,1fr) auto}.log-item{grid-template-columns:70px 100px minmax(0,1fr)}.preview-frame{height:420px}}@media(prefers-reduced-motion:reduce){.hero-card,.panel{animation:none}button{transition:none}}
