@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";:root{--background: #f8fafc;--surface: #ffffff;--surface-soft: #f8fafc;--surface-muted: #eff3f7;--foreground: #182230;--muted: #667587;--muted-strong: #425063;--line: #e5e7eb;--line-strong: #d1d5db;--primary: #ef3150;--primary-strong: #d61f40;--primary-soft: #fff1f4;--secondary: #2c99f0;--secondary-soft: #edf6ff;--success: #1f8e5e;--success-soft: #ecfbf3;--warning: #b27300;--warning-soft: #fff7df;--danger: #d83953;--danger-soft: #fff1f4;--shadow-sm: 0 4px 14px rgba(15, 23, 42, .06);--shadow-md: 0 10px 28px rgba(15, 23, 42, .08);--radius: 8px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;color:var(--foreground);background:linear-gradient(135deg,#f8fafc,#fff 46%,#eef2f7);background-attachment:fixed;font-family:Inter,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;line-height:1.5;text-rendering:optimizeLegibility}#root{min-height:100vh}button,input,select,textarea{font:inherit}button{border:0;cursor:pointer;letter-spacing:0}button,input,select,textarea{border-radius:var(--radius)}button,input,select,textarea,a{transition:transform .16s ease,background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,opacity .16s ease}button:hover:not(:disabled){transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.7;transform:none}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid rgba(239,49,80,.34);outline-offset:2px}input,select,textarea{width:100%;min-width:0;border:1px solid var(--line-strong);background:#fffffffa;color:var(--foreground);padding:12px 14px;box-shadow:inset 0 1px #ffffffc7}input::placeholder,textarea::placeholder{color:#94a3b8}input:focus,select:focus,textarea:focus{border-color:#ef315052;box-shadow:0 0 0 3px #ef31501f,inset 0 1px #ffffffc7}input:disabled,select:disabled,textarea:disabled{background:#eff3f7;color:#94a3b8;cursor:not-allowed}textarea{min-height:120px;resize:vertical}textarea.script{min-height:220px}textarea.mono,.mono,code,pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:0;font-weight:700}p{overflow-wrap:anywhere}code{overflow-wrap:anywhere;word-break:break-word}.boot-screen{min-height:100vh;display:grid;place-items:center;padding:24px}.boot-card{display:flex;align-items:center;gap:14px;padding:20px 24px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-md);border-radius:var(--radius)}.boot-card strong{font-size:1rem;font-weight:700}.auth-screen{position:relative;min-height:100vh;display:grid;place-items:center;padding:24px;overflow:hidden;background:linear-gradient(135deg,#f8fafc,#fff 46%,#eef2f7)}.auth-backdrop{position:absolute;inset:0;pointer-events:none;overflow:hidden}.auth-orb{position:absolute;width:18rem;height:18rem;border-radius:999px;filter:blur(64px);opacity:.45}.auth-orb-primary{top:-4rem;right:-5rem;background:#ef315029}.auth-orb-secondary{bottom:-5rem;left:-5rem;background:#2c99f024}.auth-inner{position:relative;z-index:1;width:min(100%,420px);display:grid;gap:24px;justify-items:center}.auth-toolbar{width:100%;display:flex;justify-content:flex-end}.auth-brand{display:grid;gap:10px;justify-items:center;text-align:center}.auth-brand h1{margin:0;font-size:2.25rem;line-height:1}.auth-brand p{margin:0;color:var(--muted)}.auth-card{width:100%;padding:24px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-md);border-radius:var(--radius)}.auth-form{display:grid;gap:18px}.auth-hint{margin:2px 0 0;color:var(--muted);font-size:.78rem;line-height:1.65;text-align:center}.page-shell,.dashboard-shell{min-height:100vh}.dashboard-shell{display:flex;flex-direction:column}.content-width{width:min(100%,1280px);margin:0 auto;padding:0 24px}.content-width-narrow{width:min(100%,960px)}.topbar,.subpage-header{position:sticky;top:0;z-index:50;background:#ffffffeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.topbar-inner,.subpage-header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0}.topbar-actions,.subpage-header-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.page-main{display:grid;gap:20px;padding:24px 0 48px}.dashboard-footer{display:none}.brand-lockup{display:flex;align-items:center;gap:12px;min-width:0}.brand-lockup-copy{min-width:0}.brand-lockup-copy strong{display:block;font-size:1rem;line-height:1.1}.brand-lockup-copy span{display:block;margin-top:3px;color:var(--muted);font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.brand-mark{display:block;width:auto;height:48px;flex:none;object-fit:contain;border-radius:0;box-shadow:none}.brand-mark-sm{height:32px}.brand-mark-md{height:48px}.brand-mark-lg{height:60px}.brand-mark-xl{height:88px}.locale-switch{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:var(--radius)}.locale-button{min-height:28px;padding:4px 10px;border:0;background:transparent;color:var(--muted-strong);font-size:.76rem;font-weight:800;line-height:1;border-radius:6px}.locale-button:hover{background:#f3f4f6}.locale-button.active{background:var(--primary-soft);color:var(--primary-strong);box-shadow:inset 0 0 0 1px #ef31501f}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.section-head-copy{min-width:0}.section-head h2{margin:0;font-size:1.18rem;line-height:1.12}.section-head-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.panel-description{margin:6px 0 0;color:var(--muted);font-size:.93rem;line-height:1.6}.card,.panel-card,.auth-card,.boot-card,.repo-card,.runner-card,.metric-card,.detail-card,.meta-block,.radio-card,.spec-row,.command-block,.toast,.empty-state,.history-row{border-radius:var(--radius)}.card,.panel-card{padding:24px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm)}.tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;width:min(100%,520px);padding:4px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm)}.tab-button{min-height:40px;padding:10px 12px;border:0;background:transparent;color:#516074;font-weight:700;border-radius:var(--radius)}.tab-button:hover{background:#f8fafc}.tab-button.active{background:var(--primary-soft);color:var(--primary-strong);box-shadow:inset 0 0 0 1px #ef31501f}.date-filter{position:relative;min-width:0}.btn.date-filter-trigger{width:100%;justify-content:space-between;gap:12px;padding:12px 14px;line-height:inherit;color:var(--muted-strong)}.btn.date-filter-trigger.empty{color:#94a3b8}.btn.date-filter-trigger .date-filter-trigger-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:inherit}.btn.date-filter-trigger .date-filter-trigger-caret{flex:none;color:#94a3b8}.date-picker-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:30;width:min(100%,320px);padding:14px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-md);border-radius:var(--radius)}.date-picker-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.date-picker-header strong{font-size:.98rem;line-height:1.2}.date-picker-nav{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--line);background:var(--surface-soft);color:var(--muted-strong);border-radius:6px;font-weight:800}.date-picker-nav:hover{background:#f3f4f6}.date-picker-weekdays,.date-picker-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.date-picker-weekdays{margin-bottom:8px;color:var(--muted);font-size:.72rem;font-weight:800;text-align:center;letter-spacing:.02em}.date-picker-days{margin-bottom:12px}.date-picker-day{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0;border:1px solid transparent;background:transparent;color:var(--foreground);font-size:.88rem;font-weight:600;border-radius:6px}.date-picker-day:hover{background:#f8fafc}.date-picker-day.muted{color:#94a3b8}.date-picker-day.today{border-color:#2c99f038}.date-picker-day.selected{background:var(--primary-soft);color:var(--primary-strong);box-shadow:inset 0 0 0 1px #ef315029}.date-picker-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.date-picker-link{padding:0;border:0;background:transparent;color:var(--muted-strong);font-size:.82rem;font-weight:700}.date-picker-link:hover{color:var(--primary-strong)}.section-stack{display:grid;gap:18px}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.metric-card{display:grid;gap:12px;padding:20px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm)}.metric-card span{color:var(--muted);font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.metric-card strong{font-size:2.16rem;line-height:1}.metric-card p{margin:0;color:var(--muted)}.metric-primary{border-top:4px solid var(--primary)}.metric-success{border-top:4px solid var(--success)}.metric-secondary{border-top:4px solid var(--secondary)}.job-list,.repo-list,.runner-list{display:grid;gap:12px}.history-row{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:14px;border:1px solid var(--line);background:#f9fafb;color:var(--foreground);text-align:left}.history-row:hover{background:#f3f4f6}.history-main{min-width:0;display:grid;gap:6px}.history-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.history-main strong{font-size:1rem}.history-main small{color:var(--muted);line-height:1.45}.history-meta{display:grid;gap:4px;justify-items:end;text-align:right;color:var(--muted);flex:none}.history-meta span{font-weight:700}.history-meta small{color:var(--muted)}.repo-card,.runner-card{display:grid;gap:16px;padding:18px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm)}.repo-top,.runner-top,.log-head,.topbar-inner,.subpage-header-inner{display:flex}.repo-top,.runner-top,.log-head{align-items:flex-start;justify-content:space-between;gap:16px}.repo-top strong,.runner-top strong{display:block;font-size:1rem}.repo-top p,.runner-top p{margin:5px 0 0;color:var(--muted);font-size:.92rem}.repo-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.meta-block{display:grid;gap:8px;min-height:88px;padding:12px;border:1px solid var(--line);background:#f8fafc}.meta-block span{color:var(--muted);font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.meta-block code{color:var(--foreground);font-size:.84rem;line-height:1.45}.repo-footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px}.repo-last{display:grid;gap:4px}.repo-last span{color:var(--muted);font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.repo-last strong{font-size:.96rem}.repo-last p{margin:0;color:var(--muted);font-size:.84rem}.repo-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.runner-badges{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.runner-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.runner-meta div{display:grid;gap:6px;padding:12px;border-radius:var(--radius);border:1px solid var(--line);background:#f8fafc}.runner-meta span{color:var(--muted);font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.runner-meta strong{font-size:.96rem}.job-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.detail-card{display:grid;gap:6px;padding:14px;border:1px solid var(--line);background:#f8fafc}.detail-card span{color:var(--muted);font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.detail-card strong{font-size:.96rem}.log-shell{display:grid;gap:6px;min-height:420px;max-height:720px;overflow:auto;padding:18px;border-radius:var(--radius);border:1px solid rgba(15,23,42,.12);background:#101822;color:#e5eef5;box-shadow:inset 0 1px #ffffff0a}.log-line{display:flex;gap:10px;align-items:flex-start;overflow-wrap:anywhere;word-break:break-word}.log-line.stdout{color:#e5eef5}.log-line.stderr{color:#fecaca}.log-tag{flex:none;color:#95a7b7}.log-empty{color:#95a7b7}.log-empty-wrap .empty-state{min-height:420px}.form-stack{display:grid;gap:20px}.form-grid{display:grid;gap:14px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field{display:grid;gap:8px;margin:0}.field-label{color:var(--muted-strong);font-size:.88rem;font-weight:700}.field-help{color:var(--muted);font-size:.78rem;line-height:1.5}.radio-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.radio-card{display:grid;grid-template-columns:18px minmax(0,1fr);gap:12px;align-items:start;padding:14px;border:1px solid var(--line);background:#f8fafc;cursor:pointer}.radio-card.active{border-color:#ef315047;background:#fff7f9;box-shadow:inset 4px 0 0 var(--primary)}.radio-card input{width:auto;margin-top:3px;accent-color:var(--primary)}.radio-card strong{display:block;margin-bottom:4px}.radio-card p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.5}.copy-row{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}.copy-row .input{flex:1;min-width:0}.copy-box{flex:1;min-width:0;display:flex;align-items:center;min-height:44px;padding:12px 14px;border:1px solid var(--line);background:#f8fafc;overflow-wrap:anywhere;word-break:break-word}.stack-gap{display:grid;gap:14px}.switch-row{display:flex;align-items:center;gap:10px;margin:4px 0 0}.switch-row input{width:auto;accent-color:var(--primary)}.switch-row span{color:var(--muted-strong);font-weight:700}.spec-list{display:grid;gap:12px}.spec-row{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--line);background:#f8fafc}.spec-row strong{display:block;margin-bottom:4px}.spec-row p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.5}.command-block{display:grid;gap:10px;padding:14px;border:1px solid var(--line);background:#f8fafc}.command-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.form-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.toast{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;border:1px solid rgba(239,49,80,.12);border-left:4px solid var(--primary);background:#fffffff5;box-shadow:var(--shadow-sm)}.toast.error{border-color:#d839532e;border-left-color:var(--danger);background:var(--danger-soft)}.empty-state{display:grid;gap:8px;justify-items:start;padding:20px;border:1px dashed rgba(25,34,48,.18);background:#f8fafc}.empty-state.compact{padding:16px 0 0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}.empty-dot{width:10px;height:10px;border-radius:999px;background:var(--primary);box-shadow:0 0 0 4px #ef31501f}.empty-state strong{font-size:.98rem}.empty-state p{margin:0;color:var(--muted)}.badge{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:6px 10px;border-radius:999px;border:1px solid transparent;font-size:.75rem;font-weight:800;letter-spacing:.02em;white-space:nowrap}.badge-success{background:var(--success-soft);color:var(--success);border-color:#1f8e5e24}.badge-danger{background:var(--danger-soft);color:#b02f47;border-color:#d8395324}.badge-running{background:var(--warning-soft);color:var(--warning);border-color:#b2730024}.badge-queued,.badge-secondary{background:#edf6ff;color:var(--secondary);border-color:#2c99f029}.badge-muted{background:#e9eef4eb;color:var(--muted);border-color:#19223014}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:10px 14px;border-radius:var(--radius);font-weight:700;letter-spacing:0;line-height:1}.btn-primary{color:#fff;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-strong) 100%);box-shadow:0 14px 28px #ef31502e}.btn-primary:hover:not(:disabled){box-shadow:0 18px 32px #ef315038}.btn-secondary,.btn-outline{color:var(--foreground);border:1px solid var(--line);background:#fff;box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled),.btn-outline:hover:not(:disabled){background:#f9fafb;border-color:#ef315038}.btn-ghost{color:var(--muted-strong);background:transparent;border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:#0f172a0a}.btn-danger{color:#b02f47;background:var(--danger-soft);border:1px solid rgba(216,57,83,.16)}.btn-text{min-height:auto;padding:0;color:var(--muted-strong);background:transparent;border:0;box-shadow:none}.btn-text.btn-sm,.btn-text.btn-md,.btn-text.btn-lg{min-height:auto;padding:0}.btn-sm{min-height:36px;padding:8px 12px;font-size:.875rem}.btn-md{min-height:42px}.btn-wide{width:100%}.btn-inline{width:fit-content}.btn-text:hover:not(:disabled){transform:none;opacity:.8;background:transparent}.field .input,.field .textarea,.field select{margin-top:0}.form-error{margin:0;padding:12px 14px;border-radius:var(--radius);border:1px solid rgba(216,57,83,.2);background:var(--danger-soft);color:#a93147}.subpage-title h1{margin:0;font-size:2rem;line-height:1.1}.subpage-title p{margin:6px 0 0;color:var(--muted);font-size:.96rem}.bg-white{background:var(--surface)}.field .mono{font-size:.92rem}@media(max-width:1180px){.metrics-grid,.detail-grid,.repo-grid,.form-grid.two,.radio-list,.job-tools,.runner-meta{grid-template-columns:1fr}.repo-top,.runner-top,.log-head,.section-head,.topbar-inner,.subpage-header-inner,.repo-footer,.form-actions{flex-direction:column;align-items:flex-start}.section-head-actions,.repo-actions,.topbar-actions,.subpage-header-actions,.runner-badges{width:100%;justify-content:flex-start}.tabs{width:100%}}@media(max-width:860px){.content-width{padding:0 18px}.page-main{padding-top:18px}.metrics-grid,.detail-grid,.repo-grid,.form-grid.two,.radio-list,.job-tools,.runner-meta{grid-template-columns:1fr}.tabs{grid-template-columns:repeat(4,minmax(0,1fr));width:100%}.auth-card,.card,.panel-card,.repo-card,.runner-card{padding:20px}.auth-inner{width:min(100%,100%)}.auth-toolbar{justify-content:flex-start}}@media(max-width:640px){.content-width{padding:0 16px}.page-main{padding:16px 0 40px}.topbar-inner{align-items:center;padding:calc(20px + env(safe-area-inset-top)) 0 16px}.brand-lockup{justify-content:center}.topbar-actions{width:100%;justify-content:center}.dashboard-logout-desktop{display:none}.dashboard-footer{display:block;padding:0 0 calc(20px + env(safe-area-inset-bottom))}.dashboard-footer-inner{padding:0 16px}.dashboard-logout-mobile{width:100%}.auth-screen{padding:14px}.auth-toolbar{margin-bottom:-4px}.auth-brand h1{font-size:2rem}.brand-mark-xl{height:72px}.subpage-title h1{font-size:1.6rem}.section-stack{padding-inline:6px}.date-picker-panel{width:min(100vw - 32px,320px)}.history-row,.repo-footer,.repo-actions,.form-actions,.command-head{flex-direction:column;align-items:flex-start}.history-meta{justify-items:start;text-align:left}.copy-row{flex-direction:column}.copy-row .input,.copy-row .copy-box{width:100%}.auth-card,.card,.panel-card,.repo-card,.runner-card,.empty-state,.command-block,.metric-card{padding:18px}.btn{width:100%}.tabs{padding:4px}}
