:root{--bg:#eef1f6;--bg-deep:#e4e9f2;--bg-panel:#fff;--bg-panel-2:#f6f8fb;--bg-sidebar:#121820;--bg-sidebar-elevated:#1a222d;--bg-sidebar-hover:#ffffff0f;--bg-sidebar-active:#243041;--line:#e2e7ef;--line-strong:#cfd6e2;--text:#152033;--text-secondary:#4a5568;--muted:#7b8798;--accent:#1f6feb;--accent-hover:#2b7cff;--accent-ink:#0d3d8c;--accent-soft:#1f6feb1a;--accent-wash:#1f6feb0f;--ok:#159947;--ok-soft:#1599471f;--err:#d64545;--err-soft:#d645451a;--warn:#c47b12;--shadow-sm:0 1px 2px #1520330a;--shadow:0 1px 2px #1520330a, 0 8px 24px #1520330d;--shadow-lg:0 12px 40px #1520331a;--radius:12px;--radius-sm:8px;--font-sans:"Noto Sans SC", "Manrope", -apple-system, BlinkMacSystemFont, sans-serif;--font-display:"Manrope", "Noto Sans SC", sans-serif;--font-mono:"IBM Plex Mono", "SF Mono", Menlo, ui-monospace, monospace;font-family:var(--font-sans);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.55}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{color:var(--text);background:radial-gradient(900px 420px at 8% -8%, #1f6feb14, transparent 55%), radial-gradient(700px 360px at 96% 0%, #1599470d, transparent 50%), linear-gradient(180deg, #f4f6fa 0%, var(--bg) 42%, var(--bg-deep) 100%);background-attachment:fixed}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:linear-gradient(180deg, var(--accent-hover), var(--accent));color:#fff;border-radius:var(--radius-sm);border:1px solid #0000;padding:9px 16px;font-weight:650;transition:transform .15s,box-shadow .15s,background .15s,border-color .15s;box-shadow:inset 0 1px #ffffff2e,0 6px 14px #1f6feb38}button:hover:not(:disabled){background:linear-gradient(180deg, #3b88ff, var(--accent-hover));transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}button.ghost{background:var(--bg-panel);color:var(--text-secondary);border-color:var(--line-strong);box-shadow:var(--shadow-sm);font-weight:550}button.ghost:hover:not(:disabled){background:var(--bg-panel-2);color:var(--accent);box-shadow:var(--shadow-sm);border-color:#9dbcf5}button.danger{color:var(--err);box-shadow:none;background:#fff;border-color:#f0c4c4;font-weight:550}button.danger:hover:not(:disabled){border-color:var(--err);background:#fff5f5;transform:none}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}code,.mono{font-family:var(--font-mono)}code{background:var(--bg-panel-2);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:12px}.toast-stack{z-index:1000;gap:8px;max-width:min(360px,100vw - 32px);display:grid;position:fixed;bottom:18px;right:18px}.toast{border:1px solid var(--line);box-shadow:var(--shadow-lg);color:var(--text);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff5;border-radius:12px;padding:11px 13px;font-size:13px;animation:.22s both toast-in}.toast-ok{color:#0f6b34;background:#f3fff6;border-color:#15994747}.toast-err{color:#9f2424;background:#fff5f5;border-color:#d6454547}.toast-info{color:#0d3d8c;background:#f2f7ff;border-color:#1f6feb47}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.artwork-layout{grid-template-columns:minmax(0,1.5fr) minmax(300px,.78fr);align-items:start;gap:18px;animation:.4s both page-in;display:grid}.card{border-radius:calc(var(--radius) + 2px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffeb;border:1px solid #e2e7eff2;padding:20px}.page-hero{background:linear-gradient(135deg,#1f6feb14,#0000 45%),#ffffffeb;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:14px;display:flex}.page-hero-copy{min-width:0}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;font-size:11px;font-weight:700}.card h2,.page-hero h2{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 6px;font-size:22px;font-weight:780}.desc,.hint,.sub,.meta,.history-meta,.task-state,.run-state{color:var(--muted);font-size:12.5px}.desc{max-width:52ch;margin:0;line-height:1.6}.status-row{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.status-pill{border:1px solid var(--line);background:var(--bg-panel-2);color:var(--text-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:650;display:inline-flex}.status-pill:before{content:"";background:var(--muted);border-radius:999px;width:7px;height:7px}.status-pill.ok{background:var(--ok-soft);color:#0f6b34;border-color:#15994738}.status-pill.ok:before{background:var(--ok)}.status-pill.bad{background:var(--err-soft);color:#9f2424;border-color:#d6454538}.status-pill.bad:before{background:var(--err)}.workflow-card{padding-top:8px}.sec{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}.sec.first{border-top:0;margin-top:0;padding-top:8px}.label{font-size:14px;font-weight:700;font-family:var(--font-display);letter-spacing:-.01em;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.step-no{background:var(--accent);color:#fff;border-radius:7px;place-items:center;width:22px;height:22px;font-size:12px;font-weight:750;display:inline-grid;box-shadow:0 4px 10px #1f6feb40}.label .sub{font-weight:500;font-family:var(--font-sans)}.row{align-items:center;gap:8px;display:flex}.flex1{flex:1;min-width:0}.param-grid{grid-template-columns:minmax(0,1.4fr) minmax(170px,.85fr);gap:12px;display:grid}.field{background:var(--bg-panel-2);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:7px;min-width:0;padding:12px;display:flex}.field-label{color:var(--text-secondary);justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;font-weight:700;display:flex}.field-value{color:var(--accent-ink);text-overflow:ellipsis;white-space:nowrap;max-width:70%;font-size:11px;font-weight:500;overflow:hidden}@media (width<=720px){.param-grid{grid-template-columns:1fr}.page-hero{flex-direction:column}.status-row{justify-content:flex-start}}input[type=text],select,textarea{border:1px solid var(--line-strong);border-radius:var(--radius-sm);width:100%;color:var(--text);background:#fff;padding:9px 11px;transition:border-color .15s,box-shadow .15s}input[type=text]:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}textarea{resize:vertical;min-height:140px;font:12px/1.55 var(--font-mono)}.upload{background:linear-gradient(#f8fafff2,#f3f7ffd9);border:1px dashed #b7c5dc;border-radius:14px;padding:16px}.upload-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.hint-inline{color:#2657b5;background:#e8f0ff;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:650;display:inline-flex}.hint{margin-top:8px}.checks{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.check-chip{border:1px solid var(--line-strong);color:var(--text-secondary);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:650;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.check-chip input{accent-color:var(--accent)}.check-chip.on{background:var(--accent-soft);color:var(--accent-ink);border-color:#9dbcf5}.preview-box{margin-top:12px}.preview-toolbar{color:var(--text-secondary);justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;font-size:12.5px;font-weight:600;display:flex}.preview-list{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;display:grid}.preview-item{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:12px;padding:8px;transition:transform .15s,box-shadow .15s;position:relative}.preview-item:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.preview-item img{object-fit:contain;background:#e8edf5;border-radius:8px;width:100%;height:150px;display:block}.preview-item .remove{width:26px;height:26px;color:var(--err);box-shadow:var(--shadow-sm);background:#fffffff2;border:1px solid #f0c4c4;border-radius:999px;padding:0;position:absolute;top:10px;right:10px}.preview-item .remove:hover:not(:disabled){background:#fff2f0;transform:none}.prompt-box{border:1px solid var(--line);background:var(--bg-panel-2);border-radius:12px;margin-top:10px;padding:4px 12px 12px}.prompt-box summary{cursor:pointer;margin:0 -4px;padding:10px 4px;font-size:13px;font-weight:650;list-style:none}.prompt-box summary::-webkit-details-marker{display:none}.prompt-box summary:before{content:"▸";color:var(--muted);margin-right:8px;transition:transform .15s;display:inline-block}.prompt-box[open] summary:before{transform:rotate(90deg)}.run-sec{padding-top:18px}.run-bar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.run-bar button{min-width:168px;padding:11px 18px}.task-list{gap:12px;margin-top:16px;display:grid}.task{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:14px;padding:12px}.task.running{box-shadow:0 0 0 3px var(--accent-soft), var(--shadow-sm);border-color:#9dbcf5}.task.failed{background:snow;border-color:#efb1b1}.task.done{border-color:#15994747}.task-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.task-head img{object-fit:cover;background:#e8edf5;border-radius:10px;width:52px;height:52px}.task-summary{flex:1;min-width:0}.task-title{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.results{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.result{border:1px solid var(--line);background:var(--bg-panel-2);border-radius:12px;padding:10px}.result .rt{justify-content:space-between;gap:8px;margin-bottom:8px;font-size:13px;font-weight:700;display:flex}.result img{object-fit:contain;background:#e8edf5;border-radius:8px;width:100%;max-height:430px;display:block}.history-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.history{gap:12px;margin-top:10px;display:grid}.empty{border:1px dashed var(--line-strong);color:var(--muted);text-align:center;background:var(--bg-panel-2);border-radius:12px;padding:28px 18px}.history-run{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:14px;padding:12px}.history-title{font-weight:700;font-family:var(--font-display)}.history-images{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:10px;display:grid}.history-image .name{color:var(--text-secondary);justify-content:space-between;gap:6px;margin-bottom:5px;font-size:11px;font-weight:600;display:flex}.history-image img{object-fit:contain;background:#e8edf5;border-radius:10px;width:100%;height:220px;transition:transform .18s;display:block}.history-image a:hover img{transform:scale(1.015)}.log-panel{position:sticky;top:76px}.log-card{background:linear-gradient(#12182005,#0000 40%),#ffffffeb;flex-direction:column;min-height:420px;display:flex}.log-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:10px;display:flex}.log-head h2{margin:0;font-size:18px}.log{white-space:pre-wrap;word-break:break-word;color:#d5dce8;background:radial-gradient(500px 220px at 10% 0,#1f6feb2e,#0000 55%),#10161f;border:1px solid #1b2430;border-radius:12px;flex:1;min-height:360px;max-height:calc(100vh - 150px);margin:0;padding:14px;font-size:12px;line-height:1.55;overflow:auto;box-shadow:inset 0 1px #ffffff0a}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=980px){.artwork-layout{grid-template-columns:1fr}.log-panel{position:static}.results{grid-template-columns:1fr}}.app-shell{min-height:100vh;display:flex}.app-sidebar{background:radial-gradient(420px 240px at 0% 0%, #1f6feb38, transparent 60%), linear-gradient(180deg, var(--bg-sidebar-elevated), var(--bg-sidebar));color:#ffffffdb;border-right:1px solid #ffffff0d;flex-direction:column;flex-shrink:0;width:232px;min-height:100vh;display:flex}.sidebar-brand{align-items:center;gap:12px;padding:22px 18px 18px;display:flex}.sidebar-logo{color:#fff;width:36px;height:36px;font-family:var(--font-display);letter-spacing:-.04em;background:linear-gradient(145deg,#3b88ff,#1f6feb 55%,#1554c0);border-radius:10px;flex-shrink:0;place-items:center;font-size:13px;font-weight:800;display:grid;box-shadow:0 8px 18px #1f6feb59}.sidebar-brand-text{flex-direction:column;gap:2px;min-width:0;display:flex}.sidebar-brand-text strong{font-family:var(--font-display);color:#fff;letter-spacing:-.02em;font-size:15px;font-weight:750}.sidebar-brand-text span{color:#ffffff6b;letter-spacing:.01em;font-size:11px}.sidebar-nav{flex-direction:column;gap:18px;padding:8px 12px 20px;display:flex;overflow:auto}.nav-group-title{color:#ffffff57;letter-spacing:.08em;text-transform:uppercase;padding:0 12px 8px;font-size:11px;font-weight:600}.nav-item{text-align:left;color:#ffffffad;width:100%;box-shadow:none;background:0 0;border:0;border-radius:10px;padding:11px 12px;font-size:13.5px;font-weight:550;text-decoration:none;display:block;position:relative}.nav-item:hover:not(:disabled){background:var(--bg-sidebar-hover);color:#fff;box-shadow:none;transform:none}.nav-item.active{color:#fff;background:linear-gradient(90deg,#1f6febf2,#1f6febb8);font-weight:650;box-shadow:0 8px 18px #1f6feb47}.nav-item.active:before{content:"";background:#fff;border-radius:999px;width:3px;position:absolute;top:10px;bottom:10px;left:0}.nav-item.active:hover:not(:disabled){color:#fff;background:linear-gradient(90deg,#1f6febf2,#1f6febb8);transform:none}.app-body{flex-direction:column;flex:1;min-width:0;min-height:100vh;display:flex}.app-header{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:20;background:#ffffffc7;border-bottom:1px solid #e2e7efe6;flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;height:60px;padding:0 24px;display:flex;position:sticky;top:0}.header-title{align-items:center;gap:8px;font-size:13px;display:flex}.breadcrumb{color:var(--muted)}.breadcrumb.current{color:var(--text);font-weight:700;font-family:var(--font-display);letter-spacing:-.01em}.breadcrumb-sep{color:var(--line-strong)}.app-main{flex:1;padding:22px 24px 32px;overflow:auto}.auth-screen{min-height:100vh;color:var(--text);background:radial-gradient(900px 420px at 20% 0,#1f6feb1f,#0000 55%),radial-gradient(700px 360px at 90% 20%,#15994714,#0000 50%),linear-gradient(#f7f9fc,#eef1f6);place-items:center;padding:24px;display:grid}.auth-card{width:min(400px,100vw - 40px);box-shadow:var(--shadow-lg);text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border:1px solid #ffffffb3;border-radius:20px;padding:44px 38px;animation:.45s both rise-in}.auth-logo{color:#fff;width:60px;height:60px;font-family:var(--font-display);letter-spacing:-.04em;background:linear-gradient(145deg,#3b88ff,#1f6feb 55%,#1554c0);border-radius:16px;place-items:center;margin:0 auto 20px;font-weight:800;display:grid;box-shadow:0 12px 28px #1f6feb4d}.auth-card h1{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:28px}.auth-card p{color:var(--muted);margin:10px 0 28px}.auth-button{color:#fff;background:linear-gradient(#3b88ff,#1f6feb);border-radius:10px;padding:12px 24px;font-weight:700;text-decoration:none;transition:transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 8px 20px #1f6feb47}.auth-button:hover{color:#fff;transform:translateY(-1px);box-shadow:0 12px 24px #1f6feb57}.auth-user{align-items:center;gap:12px;display:flex}.user-chip{background:var(--bg-panel-2);border:1px solid var(--line);border-radius:999px;align-items:center;gap:8px;padding:5px 10px 5px 5px;display:inline-flex}.user-avatar{color:#fff;width:26px;height:26px;font-size:11px;font-weight:750;font-family:var(--font-display);background:linear-gradient(145deg,#3b88ff,#1f6feb);border-radius:999px;place-items:center;display:grid}.user-name{color:var(--text-secondary);padding-right:2px;font-size:13px;font-weight:550}.auth-user button.ghost{padding:6px 12px;font-size:12px}.auth-loading{color:var(--muted);letter-spacing:.01em;font-size:14px}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=860px){.app-shell{flex-direction:column}.app-sidebar{width:100%;min-height:0}.sidebar-nav{flex-flow:wrap;gap:8px;padding-bottom:14px}.nav-group{display:contents}.nav-group-title{display:none}.nav-item{width:auto}.nav-item.active:before{display:none}.app-main{padding:16px}}
