:root,[data-theme=light]{--bg: #f6f5f2;--bg-grad: radial-gradient(120% 120% at 100% 0%, #eef3f2 0%, #f6f5f2 42%, #f3f1ec 100%);--surface: #ffffff;--surface-2: #f3f2ee;--surface-3: #ecebe5;--border: #e3e1da;--border-strong: #d4d1c8;--text: #1b1a17;--text-muted: #6c6a62;--text-faint: #9a978d;--accent: #0c8f82;--accent-strong: #0a7a6f;--accent-soft: #d6efeb;--accent-fg: #ffffff;--success: #15803d;--success-soft: #dcf5e4;--danger: #c4362f;--danger-soft: #fbe3e1;--warning: #a96212;--warning-soft: #f7ead2;--ring: rgba(12, 143, 130, .35);--shadow-sm: 0 1px 2px rgba(28, 26, 23, .05), 0 1px 3px rgba(28, 26, 23, .06);--shadow-md: 0 4px 12px -2px rgba(28, 26, 23, .08), 0 2px 6px -2px rgba(28, 26, 23, .06);--shadow-lg: 0 24px 48px -16px rgba(28, 26, 23, .18), 0 8px 20px -8px rgba(28, 26, 23, .1)}[data-theme=dark]{--bg: #17161a;--bg-grad: radial-gradient(120% 120% at 100% 0%, #18211f 0%, #17161a 45%, #141317 100%);--surface: #201f24;--surface-2: #26252b;--surface-3: #2f2e35;--border: #34323a;--border-strong: #43414b;--text: #f1efe9;--text-muted: #a6a39b;--text-faint: #76746e;--accent: #2dd4bf;--accent-strong: #41e0cc;--accent-soft: #103530;--accent-fg: #06120f;--success: #4ade80;--success-soft: #122c1d;--danger: #f4756b;--danger-soft: #3a1c1a;--warning: #e0a651;--warning-soft: #36280f;--ring: rgba(45, 212, 191, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 6px 16px -4px rgba(0, 0, 0, .45);--shadow-lg: 0 28px 56px -18px rgba(0, 0, 0, .6), 0 10px 24px -10px rgba(0, 0, 0, .5)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Hanken Grotesk,ui-sans-serif,system-ui,sans-serif;font-size:15px;line-height:1.55;color:var(--text);background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:Bricolage Grotesque,Hanken Grotesk,sans-serif;font-weight:600;letter-spacing:-.02em;line-height:1.12;margin:0}a{color:var(--accent-strong);text-decoration:none}a:hover{text-decoration:underline}.mono{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.9em}.muted{color:var(--text-muted)}.app{min-height:100%;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:20;-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);background:color-mix(in srgb,var(--bg) 80%,transparent);border-bottom:1px solid var(--border)}.app-header__inner{max-width:1080px;margin:0 auto;padding:.7rem 1.5rem;display:flex;align-items:center;gap:1.25rem}.brand{display:flex;align-items:center;gap:.6rem;font-family:Bricolage Grotesque,sans-serif;font-weight:700;font-size:1.12rem;letter-spacing:-.03em;color:var(--text)}.brand:hover{text-decoration:none}.brand__mark{width:30px;height:30px;border-radius:9px;flex:none;display:grid;place-items:center;background:linear-gradient(150deg,var(--accent) 0%,var(--accent-strong) 100%);color:var(--accent-fg);box-shadow:var(--shadow-sm),inset 0 1px #ffffff40}.brand__mark svg{width:18px;height:18px}.nav{display:flex;gap:.25rem;margin-left:.5rem}.nav a{color:var(--text-muted);font-weight:500;font-size:.92rem;padding:.4rem .7rem;border-radius:8px}.nav a:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.nav a.is-active{color:var(--accent-strong);background:var(--accent-soft)}.header-actions{margin-left:auto;display:flex;align-items:center;gap:.75rem}.header-user{font-size:.85rem;color:var(--text-muted)}.container{width:100%;max-width:1080px;margin:0 auto;padding:2.25rem 1.5rem 4rem;flex:1}.page__head{margin-bottom:1.5rem}.page__title{font-size:1.7rem}.page__subtitle{color:var(--text-muted);margin:.35rem 0 0}.page__head--row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.search-row{display:flex;gap:.6rem}.search-row .input{flex:1}.auth__lede{margin:.2rem 0 1.2rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-sm)}.card--pad{padding:1.4rem}.card__title{font-size:1.05rem;margin-bottom:.9rem}.btn{--b: var(--surface);--bd: var(--border-strong);--c: var(--text);display:inline-flex;align-items:center;justify-content:center;gap:.45rem;font:inherit;font-weight:600;font-size:.92rem;padding:.55rem 1rem;border-radius:10px;cursor:pointer;background:var(--b);color:var(--c);border:1px solid var(--bd);transition:transform .08s ease,box-shadow .15s ease,background .15s ease,border-color .15s ease,opacity .15s ease}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{--b: var(--accent);--bd: transparent;--c: var(--accent-fg);box-shadow:var(--shadow-sm)}.btn--primary:hover{background:var(--accent-strong)}.btn--ghost{--b: transparent;--bd: transparent;--c: var(--text-muted)}.btn--ghost:hover{background:var(--surface-2);color:var(--text)}.btn--danger{--b: transparent;--bd: var(--border);--c: var(--danger)}.btn--danger:hover{background:var(--danger-soft);border-color:var(--danger)}.btn--sm{padding:.32rem .65rem;font-size:.82rem;border-radius:8px}.btn--icon{padding:.45rem;width:36px;height:36px}.btn--block{width:100%}.btn-row{display:flex;gap:.6rem;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.label{font-weight:600;font-size:.85rem;color:var(--text)}.input,.select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;padding:.6rem .7rem;width:100%;transition:border-color .15s ease,box-shadow .15s ease}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-muted) 50%),linear-gradient(135deg,var(--text-muted) 50%,transparent 50%);background-position:calc(100% - 18px) center,calc(100% - 13px) center;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:2rem}.form-actions{display:flex;gap:.6rem;margin-top:1.25rem}.alert{border-radius:10px;padding:.7rem .9rem;font-size:.9rem;font-weight:500;background:var(--danger-soft);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent);margin-bottom:1rem}.stack{display:flex;flex-direction:column;gap:.75rem}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.row-item{display:flex;align-items:center;gap:.85rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.85rem 1rem;transition:border-color .15s ease,box-shadow .15s ease,transform .08s ease}.row-item:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.row-item__main{flex:1;min-width:0}.row-item__name{font-weight:600}.row-item__sub{color:var(--text-muted);font-size:.85rem}.row-item__link{display:flex;align-items:center;gap:.85rem;flex:1;min-width:0;color:inherit;background:none;border:none;padding:0;margin:0;font:inherit;text-align:left;cursor:pointer}.row-item__link:hover{text-decoration:none}.row-item__link .row-item__main{display:flex;flex-direction:column}.badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:600;letter-spacing:.01em;padding:.2rem .55rem;border-radius:999px;background:var(--surface-3);color:var(--text-muted);border:1px solid var(--border);text-transform:capitalize}.badge--accent{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.badge--queued{background:var(--surface-3);color:var(--text-muted)}.badge--running{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.badge--succeeded{background:var(--success-soft);color:var(--success);border-color:transparent}.badge--failed{background:var(--danger-soft);color:var(--danger);border-color:transparent}.badge__dot{width:6px;height:6px;border-radius:999px;background:currentColor}.badge--running .badge__dot{animation:pulse 1.1s ease-in-out infinite}.avatar{width:38px;height:38px;border-radius:10px;flex:none;display:grid;place-items:center;background:var(--surface-3);color:var(--accent-strong)}.avatar svg{width:20px;height:20px}.empty{text-align:center;padding:3rem 1.5rem;color:var(--text-muted);border:1px dashed var(--border-strong);border-radius:16px;background:var(--surface)}.empty__icon{width:44px;height:44px;margin:0 auto .75rem;color:var(--text-faint)}.auth{min-height:100%;display:grid;place-items:center;padding:2rem 1.25rem}.auth__card{width:100%;max-width:380px}.auth__brand{display:flex;align-items:center;gap:.6rem;justify-content:center;margin-bottom:1.4rem;font-family:Bricolage Grotesque,sans-serif;font-weight:700;font-size:1.3rem;letter-spacing:-.03em}.auth__card .card--pad{padding:1.75rem}.auth h1{font-size:1.45rem;margin-bottom:.3rem}.auth__switch{margin:1.1rem 0 0;text-align:center;color:var(--text-muted);font-size:.9rem}.home-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.home-card{display:flex;flex-direction:column;gap:.4rem;color:inherit}.home-card:hover{text-decoration:none;border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.home-card .avatar{margin-bottom:.5rem;background:var(--accent-soft)}.steps{display:flex;gap:.5rem;margin-bottom:1.5rem}.steps__item{display:flex;align-items:center;gap:.5rem;color:var(--text-faint);font-size:.85rem;font-weight:600}.steps__num{width:24px;height:24px;border-radius:999px;display:grid;place-items:center;border:1px solid var(--border-strong);font-size:.78rem}.steps__item.is-active{color:var(--text)}.steps__item.is-active .steps__num{background:var(--accent);color:var(--accent-fg);border-color:transparent}.steps__item.is-done .steps__num{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.steps__sep{flex:1;height:1px;background:var(--border);align-self:center;min-width:12px}fieldset.choices{border:none;padding:0;margin:0;display:flex;gap:.75rem}fieldset.choices legend{font-weight:600;font-size:.85rem;margin-bottom:.5rem}.choice{flex:1;display:flex;align-items:center;gap:.5rem;padding:.8rem 1rem;border:1px solid var(--border-strong);border-radius:12px;cursor:pointer;font-weight:500}.choice:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.browser{border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}.crumbs{display:flex;align-items:center;gap:.4rem;padding:.6rem .85rem;border-bottom:1px solid var(--border);background:var(--surface-2);font-size:.85rem}.crumbs .mono{color:var(--text-muted)}.filelist{list-style:none;margin:0;padding:.35rem;max-height:280px;overflow:auto}.filerow{display:flex;align-items:center;gap:.6rem;width:100%;text-align:left;padding:.45rem .6rem;border-radius:8px;background:none;border:none;color:var(--text);font:inherit;cursor:default}.filerow--folder{cursor:pointer}.filerow--folder:hover{background:var(--surface-2)}.filerow__icon{width:17px;height:17px;flex:none;color:var(--text-faint)}.filerow--folder .filerow__icon{color:var(--accent)}.progress{display:flex;flex-direction:column;gap:.5rem}.progress__track{height:12px;border-radius:999px;background:var(--surface-3);overflow:hidden;border:1px solid var(--border)}.progress__fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent) 0%,var(--accent-strong) 100%);transition:width .4s cubic-bezier(.4,0,.2,1);position:relative}.progress__fill:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.28),transparent);animation:shimmer 1.4s linear infinite}.progress__meta{display:flex;justify-content:space-between;font-size:.85rem;color:var(--text-muted)}.logfeed{list-style:none;margin:1rem 0 0;padding:.75rem;border-radius:10px;background:var(--surface-2);border:1px solid var(--border);max-height:240px;overflow:auto;font-family:JetBrains Mono,monospace;font-size:.82rem;color:var(--text-muted)}.logfeed li{padding:.12rem 0}.theme-toggle svg{width:18px;height:18px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.container>*{animation:rise .4s ease both}@media (prefers-reduced-motion: reduce){*,*:after{animation:none!important;transition:none!important}}@media (max-width: 640px){.nav{display:none}.container{padding:1.5rem 1rem 3rem}}
