:root{color-scheme:light;font-family:Inter,Segoe UI,Microsoft YaHei,sans-serif;--bg-body: #f3f4f6;--bg-surface: #ffffff;--bg-sidebar: #ffffff;--color-text: #111827;--color-text-muted: #6b7280;--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-border: #e5e7eb;--color-border-hover: #d1d5db;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05)}*{box-sizing:border-box}html,body{margin:0;background:var(--bg-body);color:var(--color-text);line-height:1.5;font-weight:400;min-height:100vh;width:100%;height:100%;overflow:hidden}html.page-loading,body.page-loading{overflow:hidden}#app{width:100%;height:100%;min-height:100vh;overflow:hidden}button,input,select,textarea{font:inherit}button,a{transition:all .2s ease}input,select,textarea{width:100%;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--bg-surface);padding:10px 12px;color:inherit;outline:none;transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f626}textarea{resize:vertical;min-height:120px}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh;height:100vh;overflow:hidden}.app-shell--loading{pointer-events:none}.workspace{padding:24px 32px;display:flex;flex-direction:column;gap:24px;max-width:1440px;margin:0 auto;width:100%;height:100vh;overflow:hidden}.sidebar{padding:24px 16px;background:var(--bg-sidebar);color:var(--color-text);border-right:1px solid var(--color-border);display:flex;flex-direction:column;min-height:0;overflow-y:auto}.sidebar--loading{gap:20px}.loading-stack,.loading-grid{display:grid;gap:12px}.loading-grid--stats{grid-template-columns:repeat(4,minmax(0,1fr))}.loading-panel{overflow:hidden}.loading-panel--card{min-height:180px}.loading-panel--history,.loading-panel--report{min-height:320px}.loading-block{border-radius:var(--radius-md);background:linear-gradient(90deg,#e5e7ebbf,#f3f4f6f2,#e5e7ebbf);background-size:200% 100%;animation:shimmer 1.4s linear infinite}.loading-block--title{width:220px;height:28px}.loading-block--line{width:100%;height:18px}.loading-block--card{width:100%;height:72px}.sidebar__header,.panel-header,.workspace__header,.toolbar-actions,.mini-card__header,.drawer-actions__right,.history-item__head,.history-item__meta,.report-panel__status{display:flex;align-items:center;gap:12px}.drawer-actions{display:flex;align-items:center;gap:12px;margin-top:24px;justify-content:flex-end}.sidebar__header,.panel-header,.workspace__header,.history-item__head{justify-content:space-between}.sidebar h1,.workspace h1,.panel h2,.module-card h3,.drawer-shell h2,.modal-card h3{margin:0}.eyebrow{margin:0 0 4px;font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted)}.sidebar h1{font-size:20px;font-weight:600}.workspace h1{font-size:24px;font-weight:600}.muted{color:var(--color-text-muted);font-size:14px}.project-list{margin-top:24px;display:flex;flex-direction:column;gap:8px}.project-item{width:100%;border:1px solid transparent;background:transparent;color:var(--color-text);border-radius:var(--radius-md);padding:12px 16px;display:flex;justify-content:space-between;align-items:center;text-align:left;cursor:pointer}.project-item:hover{background:var(--bg-body)}.project-item--active{background:#eff6ff;border-color:#bfdbfe}.project-item__main{display:flex;flex-direction:column;gap:4px}.project-item__main strong{font-weight:500;color:#1e3a8a}.project-item__main span,.project-item__action{font-size:12px;color:var(--color-text-muted)}.project-item--active .project-item__main span{color:#3b82f6}.project-item__action:hover{color:#ef4444}.panel,.workspace__header,.modal-card{border-radius:var(--radius-lg);padding:24px;background:var(--bg-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.workspace__header{padding:20px 24px;align-items:flex-start}.workspace__header-main{display:flex;flex-direction:column;gap:16px;width:100%;min-width:0}.workspace__header-row{display:flex;align-items:center;justify-content:flex-start;width:100%;gap:24px}.workspace__header-copy{display:flex;flex-direction:column;gap:4px;min-width:240px}.workspace__header-meta{display:flex;align-items:center;justify-content:flex-end;gap:32px;flex:1;overflow-x:auto;scrollbar-width:none;min-width:0}.workspace__header-meta::-webkit-scrollbar{display:none}.workspace__header-stats{display:flex;align-items:center;gap:12px;flex:1;min-width:max-content}.workspace__header-toolbar{display:flex;align-items:center;justify-content:flex-end;min-width:max-content}.dashboard-grid,.module-grid,.overview-stats,.chart-grid{display:grid;gap:16px}.dashboard-grid{grid-template-columns:minmax(0,1fr) 380px;align-items:stretch;flex:1;min-height:0}.dashboard-grid__main,.dashboard-grid__side{min-width:0;display:flex;flex-direction:column;min-height:0}.dashboard-grid__main{gap:24px}.dashboard-grid__side{gap:16px}.module-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.overview-stats{margin-top:20px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin:20px 0}.stat-card,.mini-card{border-radius:var(--radius-md);padding:16px 20px;background:var(--bg-body);border:1px solid var(--color-border)}.variable-guide__row,.variable-guide__meta{display:flex;align-items:center;gap:12px}.variable-guide__row{justify-content:space-between;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--bg-surface)}.variable-guide__meta{min-width:0;flex-wrap:wrap}.variable-guide__meta span{color:var(--color-text-muted);font-size:14px}.variable-guide__meta code{word-break:break-all}.variable-guide__copy{flex:0 0 auto}.stat-card{display:flex;flex-direction:column;gap:4px}.stat-card--compact{padding:12px 14px;gap:2px;min-width:0}.stat-card--compact strong{font-size:18px}.stat-card span{font-size:13px;color:var(--color-text-muted);font-weight:500}.stat-card strong{font-size:24px;font-weight:600;color:var(--color-text)}.module-card{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px;text-align:left;background:var(--bg-surface);box-shadow:var(--shadow-sm);cursor:pointer}.module-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-hover);transform:translateY(-2px)}.module-card__head,.module-card__meta{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.module-card__head h3{font-size:16px;font-weight:600}.module-card__head span{font-size:13px;color:var(--color-primary);font-weight:500}.module-card p{margin:8px 0 16px;color:var(--color-text-muted);font-size:14px}.module-card__meta span,.pill,.select-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-sm);background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:500}.pill--subtle{background:var(--bg-body);color:var(--color-text-muted)}.primary-button,.ghost-button,.ghost-button--link{border:1px solid transparent;border-radius:var(--radius-md);padding:8px 16px;cursor:pointer;font-weight:500;font-size:14px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.primary-button{background:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm)}.primary-button:hover{background:var(--color-primary-hover)}.primary-button--pending{position:relative;overflow:hidden}.primary-button--pending:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);animation:buttonSweep 1.1s linear infinite}.primary-button:disabled,.ghost-button:disabled{cursor:not-allowed;opacity:.6;pointer-events:none}.ghost-button,.ghost-button--link{background:var(--bg-surface);color:var(--color-text);border-color:var(--color-border);box-shadow:var(--shadow-sm)}.ghost-button:hover,.ghost-button--link:hover{background:var(--bg-body)}.sidebar .ghost-button{background:var(--bg-surface);border-color:var(--color-border);color:var(--color-text)}.sidebar .ghost-button:hover{background:var(--bg-body)}.report-hero{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px}.report-hero--stacked{align-items:flex-start}.report-hero__copy{display:flex;flex-direction:column;gap:6px}.report-hero__sentence{margin:0;font-size:13px;color:var(--color-text-muted);line-height:1.6}.progress-ring{width:72px;height:72px;min-width:72px;min-height:72px;flex:0 0 72px;aspect-ratio:1 / 1;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--color-primary),#60a5fa,var(--color-primary));padding:6px}.progress-ring--active{animation:pulseGlow 1.4s ease-in-out infinite}.progress-ring span{width:100%;height:100%;display:grid;place-items:center;border-radius:50%;background:var(--bg-surface);font-weight:600;font-size:18px}.progress-track{width:100%;height:8px;border-radius:999px;background:#dbeafe;overflow:hidden;margin-bottom:16px}.progress-track__bar{height:100%;min-width:10px;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#60a5fa);transition:width .3s ease}.progress-track__bar--active{background-size:200% 100%;animation:progressFlow 1.2s linear infinite}.report-panel,.history-panel{width:100%;flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.report-panel__status{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.report-panel__live-pill{background:#ecfeff;color:#0f766e}.report-panel__live-pill--active{animation:pulseGlow 1.4s ease-in-out infinite}.report-panel--running{border-color:#bfdbfe;box-shadow:0 18px 50px #2563eb14}.report-metrics{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.log-stream{margin-top:0;border-radius:var(--radius-md);padding:16px;background:#1f2937;color:#f9fafb;font-family:monospace;font-size:13px;flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.log-stream__header{display:flex;justify-content:space-between;margin-bottom:12px;color:#9ca3af}.log-stream__body{display:flex;flex-direction:column;gap:4px;min-height:0;flex:1;overflow-y:auto;padding-right:4px}.log-stream__body::-webkit-scrollbar{display:none}.log-stream__body{-ms-overflow-style:none;scrollbar-width:none}.log-line{padding:6px 8px;border-radius:4px;background:#ffffff0d;animation:floatIn .2s ease;overflow-wrap:anywhere;word-break:break-word}.log-line--latest{background:#60a5fa2e;border-left:2px solid #60a5fa}.history-list{display:flex;flex-direction:column;gap:8px;flex:1;overflow-y:auto;min-height:0;padding-right:4px}.history-list::-webkit-scrollbar{display:none}.history-list{-ms-overflow-style:none;scrollbar-width:none}.history-item{border-radius:var(--radius-lg);padding:12px 16px;border:1px solid var(--color-border);background:var(--bg-surface);box-shadow:var(--shadow-sm);min-width:0;overflow:visible;position:relative}.toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.history-item__head{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;min-width:0}.history-item__toggle{color:var(--color-text-muted);font-size:13px;flex-shrink:0}.history-item__meta,.history-files{flex-wrap:wrap}.history-item__meta{display:flex;align-items:center;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:none}.history-item__meta::-webkit-scrollbar{display:none}.history-files,.stack,.form-grid{display:flex;flex-direction:column;gap:10px}.history-files{min-width:0;overflow:visible;padding-top:8px;gap:0}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.history-file-row,.field{display:flex;flex-direction:column;gap:4px}.field span{font-size:14px;font-weight:500;color:var(--color-text)}.history-file-row{padding:10px 0;min-width:0;flex-direction:row;justify-content:space-between;align-items:center;gap:8px}.history-file-row+.history-file-row{border-top:1px solid var(--color-border)}.history-file-row__name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.history-file-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap;flex-shrink:0}.empty-state{padding:32px 24px;text-align:center;border-radius:var(--radius-lg);border:2px dashed var(--color-border);color:var(--color-text-muted);flex:1;display:flex;align-items:center;justify-content:center}.helper-text{margin:0;color:var(--color-text-muted);font-size:13px}.drawer-backdrop,.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182766;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:40}.drawer-shell{position:fixed;top:16px;right:16px;bottom:16px;width:min(600px,calc(100vw - 32px));border-radius:var(--radius-xl);background:var(--bg-surface);box-shadow:var(--shadow-lg);z-index:50;display:flex;flex-direction:column;overflow:hidden}.drawer-shell__header{padding:20px 24px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-border);background:var(--bg-sidebar)}.drawer-shell__header h2{font-size:18px;font-weight:600}.drawer-shell__header-right{display:flex;align-items:center;gap:12px}.drawer-header-actions{display:flex;align-items:center;gap:8px}.drawer-shell__body{padding:24px;overflow:auto;display:flex;flex-direction:column;gap:20px}.modal-backdrop{display:grid;place-items:center;z-index:60}.modal-card{width:min(440px,calc(100vw - 32px))}.modal-card--preview{width:min(900px,calc(100vw - 32px));max-height:calc(100vh - 48px);display:flex;flex-direction:column;gap:16px}.modal-card h3{font-size:18px;font-weight:600;margin-bottom:8px}.modal-input{margin-top:8px}.modal-stack{display:flex;flex-direction:column;gap:16px;margin-top:16px}.preview-body{min-height:0;overflow:hidden}.preview-body__loading{min-height:220px}.preview-body__content{margin:0;padding:16px;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--bg-body);max-height:min(65vh,680px);overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1.7}.select-chip input{margin:0}.custom-select{position:relative;outline:none;padding:0;border:none;background:transparent;height:auto}.custom-select-trigger{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--bg-surface);cursor:pointer;-webkit-user-select:none;user-select:none;height:38px}.custom-select-trigger:hover{border-color:#9ca3af}.custom-select-icon{font-size:10px;color:var(--color-text-muted)}.custom-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:200px;overflow-y:auto;background:var(--bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:100;padding:4px 0}.custom-select-option{padding:8px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:14px}.custom-select-option:hover{background:var(--bg-body)}.custom-select-option.active{background:#eff6ff;color:#3b82f6;font-weight:500}.custom-select-dropdown::-webkit-scrollbar{width:6px}.custom-select-dropdown::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.page-fade-enter-active,.page-fade-leave-active{transition:opacity .32s ease,transform .32s ease,filter .32s ease}.page-fade-enter-from,.page-fade-leave-to{opacity:0;transform:translateY(8px);filter:blur(4px)}.fade-enter-from,.fade-leave-to{opacity:0}.drawer-enter-active,.drawer-leave-active{transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease}.drawer-enter-from,.drawer-leave-to{transform:translate(40px);opacity:0}@keyframes floatIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes progressFlow{0%{background-position:200% 0}to{background-position:0 0}}@keyframes pulseGlow{0%,to{transform:scale(1);box-shadow:0 0 #2563eb33}50%{transform:scale(1.03);box-shadow:0 0 0 10px #2563eb00}}@keyframes buttonSweep{0%{transform:translate(-120%)}to{transform:translate(120%)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(max-width:1100px){.app-shell{grid-template-columns:220px 1fr}.dashboard-grid{grid-template-columns:1fr;min-height:auto}.module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace__header-row{flex-direction:column;align-items:flex-start;gap:16px}.workspace__header-meta{flex-direction:column-reverse;align-items:flex-start;width:100%;gap:16px;overflow:visible}.workspace__header-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;max-width:100%}.loading-grid--stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.app-shell{grid-template-columns:1fr;height:100%;min-height:100vh;overflow-y:auto}.workspace{height:auto;min-height:0}.sidebar{border-right:0;border-bottom:1px solid var(--color-border);padding:16px}.workspace{padding:16px}.workspace__header-row,.workspace__header,.panel-header,.history-item__head,.workspace__header-meta{flex-direction:column;align-items:flex-start}.workspace__header-stats,.loading-grid--stats{grid-template-columns:repeat(2,minmax(0,1fr))}.module-grid{grid-template-columns:1fr}.toolbar-actions{width:100%;flex-wrap:wrap}.workspace__header-toolbar{justify-content:flex-start}.history-file-row{flex-direction:column}.history-file-row__actions{width:100%;justify-content:flex-start}.log-stream__body{min-height:240px}.drawer-shell{top:0;right:0;bottom:0;left:0;width:100%;border-radius:0}}
