:root{--bg: #f6f7f9;--panel: #ffffff;--panel-2: #fbfcfd;--border: #e3e6ea;--text: #1c2128;--muted: #6b7280;--accent: #2563eb;--accent-weak: #eaf1ff;--error: #b91c1c;--error-bg: #fdecec;--ok: #15803d;--ok-bg: #e9f7ee;--cron: #7c3aed;--backend: #2563eb;--frontend: #0891b2;--radius: 10px;--shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 8px 24px rgba(0, 0, 0, .06);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #0d1117;--panel: #161b22;--panel-2: #12171e;--border: #2a2f37;--text: #e6edf3;--muted: #9198a1;--accent: #4f8cff;--accent-weak: #16233c;--error: #ff7b72;--error-bg: #2c1618;--ok: #56d364;--ok-bg: #12261a}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}button{font:inherit;cursor:pointer}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}.app{display:flex;flex-direction:column;height:100vh}.loading-screen{height:100vh;display:flex;align-items:center;justify-content:center;color:var(--muted)}.login-screen{height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--bg)}.login-card{width:min(360px,100%);background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:28px 26px;display:flex;flex-direction:column;gap:14px}.login-brand{font-weight:700;font-size:1.3rem;display:flex;align-items:center;gap:8px;justify-content:center}.login-brand .logo{color:var(--accent)}.login-sub{text-align:center;color:var(--muted);font-size:.85rem;margin:-6px 0 6px}.login-card label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;font-weight:600}.login-card input{border:1px solid var(--border);border-radius:8px;padding:9px 10px;font:inherit;background:var(--panel-2);color:var(--text)}.login-card .primary{margin-top:6px;padding:10px}.login-error{background:var(--error-bg);color:var(--error);border-radius:8px;padding:8px 10px;font-size:.82rem}.app-header{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;background:var(--panel);border-bottom:1px solid var(--border)}.brand{font-weight:700;font-size:1.05rem;display:flex;align-items:center;gap:8px}.brand .logo{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:10px}.run-chip{display:inline-flex;align-items:center;gap:7px;font-size:.8rem;font-weight:600;padding:5px 11px;border-radius:999px}.run-chip.running{background:var(--accent-weak);color:var(--accent);border:1px solid var(--accent)}.run-chip.failed{background:var(--error-bg);color:var(--error);border:1px solid var(--error);cursor:help}.run-next{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.spinner{width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.layout{flex:1;min-height:0;display:grid;grid-template-columns:240px 1fr 380px;gap:12px;padding:12px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;min-height:0;overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--panel-2)}.panel-header h2{margin:0;font-size:.9rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-body{flex:1;min-height:0;padding:12px 14px}.scroll{overflow-y:auto}button.primary{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:8px 14px;font-weight:600}button.primary:disabled{opacity:.5;cursor:default}button.secondary{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:8px;padding:7px 12px}button.link{background:none;border:none;color:var(--accent);padding:2px 0;text-align:left}.icon-btn{background:none;border:none;color:var(--muted);font-size:1rem;padding:2px 6px;border-radius:6px}.icon-btn:hover{background:var(--accent-weak);color:var(--accent)}.brief-list .panel-header{gap:6px;position:relative}.info-dot{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;border:1px solid var(--border);font-family:Georgia,Times New Roman,serif;font-style:italic;font-size:.72rem;line-height:1;color:var(--muted);cursor:help;margin-right:auto;-webkit-user-select:none;user-select:none}.info-dot:hover,.info-dot:focus{color:var(--accent);border-color:var(--accent);background:var(--accent-weak);outline:none}.info-tip{position:absolute;top:calc(100% + 4px);left:8px;right:8px;z-index:30;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);padding:8px 10px;font-size:.74rem;line-height:1.45;font-weight:400;opacity:0;visibility:hidden;transform:translateY(-3px);transition:opacity .12s,transform .12s}.info-tip p{margin:0 0 6px}.info-tip p:last-child{margin-bottom:0}.info-tip code{background:var(--panel-2);border:1px solid var(--border);padding:0 3px;border-radius:3px;font-size:.92em}.info-dot:hover~.info-tip,.info-dot:focus~.info-tip,.info-tip:hover{opacity:1;visibility:visible;transform:translateY(0)}.brief-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.brief-item{width:100%;display:flex;justify-content:space-between;align-items:baseline;background:transparent;border:1px solid transparent;border-radius:8px;padding:8px 10px;color:var(--text)}.brief-item:hover{background:var(--panel-2);border-color:var(--border)}.brief-item.active{background:var(--accent-weak);border-color:var(--accent)}.brief-date{font-weight:600;font-variant-numeric:tabular-nums;display:inline-flex;align-items:baseline;gap:6px}.brief-label{font-weight:500;font-size:.7rem;color:var(--accent);background:var(--accent-weak);padding:1px 6px;border-radius:999px;font-variant-numeric:normal}.brief-meta{font-size:.75rem;color:var(--muted)}.notice{padding:10px 12px;border-radius:8px;font-size:.85rem}.notice.muted{color:var(--muted)}.notice.error{color:var(--error);background:var(--error-bg)}.markdown{line-height:1.6}.markdown h1{font-size:1.5rem;margin-top:0}.markdown h2{font-size:1.2rem;border-bottom:1px solid var(--border);padding-bottom:4px}.markdown h3{font-size:1.05rem}.markdown pre{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:10px;overflow-x:auto}.markdown code{background:var(--panel-2);padding:1px 4px;border-radius:4px}.markdown pre code{background:none;padding:0}.markdown table{border-collapse:collapse;width:100%}.markdown th,.markdown td{border:1px solid var(--border);padding:6px 8px;text-align:left}.markdown blockquote{border-left:3px solid var(--accent);margin:.5em 0;padding-left:12px;color:var(--muted)}.markdown a{color:var(--accent)}.markdown img{max-width:100%}.chat-context{font-size:.75rem;color:var(--muted);display:flex;align-items:center;gap:6px}.chat-messages{display:flex;flex-direction:column;gap:10px}.chat-bubble{max-width:92%;padding:8px 12px;border-radius:12px;font-size:.9rem}.chat-bubble.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:3px}.chat-bubble.user .markdown a{color:#fff;text-decoration:underline}.chat-bubble.assistant{align-self:flex-start;background:var(--panel-2);border:1px solid var(--border);border-bottom-left-radius:3px}.chat-bubble.error{background:var(--error-bg);border-color:var(--error);color:var(--error)}.chat-input{display:flex;gap:8px;padding:10px;border-top:1px solid var(--border);background:var(--panel-2)}.chat-input textarea{flex:1;resize:none;border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--panel);color:var(--text);font:inherit}.typing{display:inline-flex;gap:3px}.typing span{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:blink 1.2s infinite both}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.25}40%{opacity:1}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;width:min(760px,100%);max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow);overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}.modal-header h2{margin:0;font-size:1.1rem}.modal-body{padding:18px;overflow-y:auto}.tabs{display:flex;gap:2px;padding:0 12px;border-bottom:1px solid var(--border);background:var(--panel-2)}.tabs button{background:none;border:none;padding:10px 14px;color:var(--muted);border-bottom:2px solid transparent;font-weight:500}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.banner{padding:10px 18px;font-size:.85rem}.banner.ok{background:var(--ok-bg);color:var(--ok)}.banner.err{background:var(--error-bg);color:var(--error)}.form{display:flex;flex-direction:column;gap:16px}.form label{display:flex;flex-direction:column;gap:5px;font-size:.85rem;font-weight:600}.form label.checkbox{flex-direction:row;align-items:center;gap:8px;font-weight:500}.form input[type=text],.form input[type=password],.form input[type=number],.form textarea{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font:inherit;background:var(--panel-2);color:var(--text)}.form small{color:var(--muted);font-weight:400}.form .row{display:flex;gap:10px}.instructions-editor{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.divider{border:none;border-top:1px solid var(--border);margin:4px 0}.section-note{font-size:.82rem;color:var(--muted);margin:0;font-weight:400}.filestore-view{display:flex;flex-direction:column;gap:10px;height:62vh}.filestore-toolbar{display:flex;align-items:center;justify-content:space-between}.filestore-split{flex:1;min-height:0;display:grid;grid-template-columns:260px 1fr;gap:10px}.filestore-list{border:1px solid var(--border);border-radius:8px;background:var(--panel-2);padding:6px}.filestore-list ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.filestore-row{display:flex;align-items:stretch;gap:2px}.filestore-row .filestore-item{flex:1;min-width:0}.fs-delete{flex:0 0 auto;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--muted);font-size:.85rem;padding:0 8px;opacity:.5}.filestore-row:hover .fs-delete{opacity:1}.fs-delete:hover{background:var(--error-bg);border-color:var(--error)}.filestore-item{width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:6px;padding:6px 8px;color:var(--text);display:flex;flex-direction:column;gap:2px}.filestore-item:hover{background:var(--panel);border-color:var(--border)}.filestore-item.active{background:var(--accent-weak);border-color:var(--accent)}.fs-name{font-weight:600;font-size:.82rem;word-break:break-all}.fs-meta{font-size:.7rem;color:var(--muted)}.filestore-content{border:1px solid var(--border);border-radius:8px;background:var(--panel-2);padding:10px;display:flex;flex-direction:column}.fs-content-header{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;font-weight:700;padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:8px;word-break:break-all}.fs-content-body{margin:0;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;line-height:1.5}.guide{border:1px solid var(--border);border-radius:8px;background:var(--panel-2);overflow:hidden}.guide>summary{cursor:pointer;padding:10px 12px;font-weight:600;font-size:.85rem;list-style:none;-webkit-user-select:none;user-select:none}.guide>summary::-webkit-details-marker{display:none}.guide>summary:before{content:"▸";display:inline-block;margin-right:8px;color:var(--muted);transition:transform .15s}.guide[open]>summary:before{transform:rotate(90deg)}.guide-body{padding:0 14px 12px;font-size:.82rem;line-height:1.55;color:var(--text);font-weight:400}.guide-body p{margin:6px 0 10px}.guide-body dl{margin:0}.guide-body dt{font-weight:700;color:var(--accent);margin-top:10px}.guide-body dd{margin:3px 0 0}.guide-body ul{margin:4px 0;padding-left:18px}.guide-body li{margin:2px 0}.guide-body code{background:var(--panel);border:1px solid var(--border);padding:0 4px;border-radius:4px}.automation-picker{border:1px dashed var(--border);border-radius:8px;padding:10px}.automation-options{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.automation-options code{color:var(--muted)}.pub-badge{font-size:.68rem;font-weight:700;text-transform:uppercase;padding:1px 6px;border-radius:999px}.pub-badge.published{background:var(--ok-bg);color:var(--ok)}.pub-badge.draft{background:var(--error-bg);color:var(--error)}.run-status{font-size:.8rem;display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--border);padding-top:12px}.status-pill{padding:1px 8px;border-radius:999px;font-size:.72rem;font-weight:600}.status-pill.completed{background:var(--ok-bg);color:var(--ok)}.status-pill.failed,.status-pill.error,.status-pill.cancelled{background:var(--error-bg);color:var(--error)}.status-pill.running{background:var(--accent-weak);color:var(--accent)}.debug-log{display:flex;flex-direction:column;gap:10px;height:60vh}.debug-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.source-filters{display:flex;gap:6px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;padding:3px 9px;border-radius:999px;border:1px solid var(--border);color:var(--muted);text-transform:capitalize}.chip input{display:none}.chip.on.cron{background:color-mix(in srgb,var(--cron) 15%,transparent);color:var(--cron);border-color:var(--cron)}.chip.on.backend{background:var(--accent-weak);color:var(--backend);border-color:var(--backend)}.chip.on.frontend{background:color-mix(in srgb,var(--frontend) 15%,transparent);color:var(--frontend);border-color:var(--frontend)}.auto-refresh{font-size:.78rem;color:var(--muted);display:inline-flex;align-items:center;gap:5px;margin-left:auto}.log-stream{flex:1;border:1px solid var(--border);border-radius:8px;background:var(--panel-2);padding:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem}.log-row{display:flex;gap:8px;padding:2px 4px;border-radius:4px;align-items:baseline}.log-row.warn{background:color-mix(in srgb,orange 10%,transparent)}.log-row.error{background:var(--error-bg)}.log-ts{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.log-source{font-weight:700;text-transform:uppercase;font-size:.68rem;padding:0 4px;border-radius:4px;white-space:nowrap}.log-source.cron{color:var(--cron)}.log-source.backend{color:var(--backend)}.log-source.frontend{color:var(--frontend)}.log-msg{flex:1;word-break:break-word}.log-detail{display:block;color:var(--muted)}@media(max-width:960px){.layout{grid-template-columns:1fr;grid-auto-rows:minmax(220px,auto);overflow-y:auto}}
