@import"https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500;600&family=Instrument+Serif:ital@0;1&display=swap";:root{--ink-1000: #0a0a0b;--ink-900: #131316;--ink-800: #1f1f23;--ink-700: #383841;--ink-600: #54545f;--ink-500: #75757f;--ink-400: #9b9ba3;--ink-300: #c8c8cd;--ink-200: #e1e1e3;--ink-150: #ececed;--ink-100: #f3f3f1;--ink-50: #faf9f6;--paper: #fdfcf8;--white: #ffffff;--accent: #2540ff;--accent-hover: #1a32e6;--accent-soft: #ecefff;--accent-tint: #f5f6ff;--accent-ring: rgba(37, 64, 255, .18);--accent-ink: #0d1f8a;--signal: #ffd84d;--signal-soft: #fff6d3;--success: #0f8a4d;--success-soft: #e3f6ec;--success-tint: #f2fbf6;--warn: #b25a08;--warn-soft: #fdebd0;--warn-tint: #fdf5e6;--error: #c11f1f;--error-soft: #fce4e4;--error-tint: #fef5f4;--info: #1d5aa8;--info-soft: #e0ecfa;--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--shadow-sm: 0 1px 0 rgba(15, 15, 20, .04), 0 1px 2px rgba(15, 15, 20, .05);--shadow-md: 0 2px 4px rgba(15, 15, 20, .04), 0 8px 24px rgba(15, 15, 20, .06);--shadow-lg: 0 4px 8px rgba(15, 15, 20, .04), 0 24px 48px rgba(15, 15, 20, .1);--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-serif: "Instrument Serif", ui-serif, Georgia, serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);font-feature-settings:"cv11","ss01","ss03";background:var(--paper);color:var(--ink-900);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;border:0;background:transparent;color:inherit}.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.sidebar{background:var(--ink-50);border-right:1px solid var(--ink-200);padding:18px 14px 22px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 16px;border-bottom:1px solid var(--ink-200);margin-bottom:14px}.brand-mark{width:32px;height:32px;border-radius:7px;background:var(--ink-900);color:var(--signal);display:grid;place-items:center;font-family:var(--font-serif);font-style:italic;font-size:22px;font-weight:400;line-height:1;letter-spacing:-.02em;box-shadow:inset 0 0 0 1px var(--ink-700)}.brand-name{font-weight:600;font-size:15px;letter-spacing:-.01em;color:var(--ink-900)}.brand-sub{font-size:11px;color:var(--ink-500);margin-top:1px;letter-spacing:.01em}.nav-section-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500);padding:14px 10px 6px;font-weight:500}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--r-sm);color:var(--ink-700);font-size:13.5px;font-weight:500;cursor:pointer;transition:background .12s,color .12s}.nav-item:hover{background:var(--ink-150);color:var(--ink-900)}.nav-item.active{background:var(--white);color:var(--ink-900);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--ink-200)}.nav-item .badge{margin-left:auto;font-size:11px;color:var(--ink-500);font-variant-numeric:tabular-nums}.nav-item svg{flex-shrink:0}.nav-spacer{flex:1}.nav-footer{padding:10px 10px 0;border-top:1px solid var(--ink-200);margin-top:6px;display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-500)}.nav-footer .dot{width:6px;height:6px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.main{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;gap:16px;padding:14px 32px;border-bottom:1px solid var(--ink-200);background:var(--paper);position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.breadcrumbs{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-500);flex:1;min-width:0}.crumb{cursor:pointer;padding:3px 6px;margin:-3px -6px;border-radius:var(--r-xs)}.crumb:hover{background:var(--ink-150);color:var(--ink-900)}.crumb.current{color:var(--ink-900);font-weight:500}.crumb-sep{color:var(--ink-300)}.search{display:flex;align-items:center;gap:8px;background:var(--white);border:1px solid var(--ink-200);border-radius:var(--r-sm);padding:6px 10px;width:260px;color:var(--ink-500);font-size:13px}.search input{flex:1;border:0;outline:0;background:transparent;font:inherit;color:var(--ink-900)}.search input::placeholder{color:var(--ink-400)}.kbd{font-family:var(--font-mono);font-size:10.5px;padding:1px 5px;border-radius:3px;background:var(--ink-100);color:var(--ink-500);border:1px solid var(--ink-200);border-bottom-width:2px}.tb-wrap{position:relative;display:flex}.tb-pop{position:absolute;top:calc(100% + 6px);background:var(--white);border:1px solid var(--ink-200);border-radius:var(--r-sm);box-shadow:0 8px 24px #0000001f;z-index:50;overflow:hidden;min-width:220px}.tb-pop.search-pop{left:0;width:320px;max-height:360px;overflow-y:auto}.tb-pop.user-pop{right:0}.tb-item{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;font-size:13px;color:var(--ink-900);width:100%;text-align:left;background:transparent;border:0;font:inherit}.tb-item:hover{background:var(--ink-100)}.tb-item .sub{color:var(--ink-400);font-size:11px}.tb-empty{padding:10px 12px;color:var(--ink-400);font-size:12px}.tb-userhd{padding:10px 12px;border-bottom:1px solid var(--ink-200)}.tb-section{padding:6px 12px 2px;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-400)}.tb-avatar{cursor:pointer;border:0;padding:0}.page{padding:28px 32px 80px;max-width:1440px;margin:0 auto;width:100%}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:28px}.page-title{font-size:28px;font-weight:600;letter-spacing:-.018em;color:var(--ink-1000);line-height:1.15}.page-title .serif{font-family:var(--font-serif);font-weight:400;font-style:italic;letter-spacing:-.01em}.page-sub{margin-top:6px;color:var(--ink-500);font-size:14px;max-width:640px}.page-actions{display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:var(--r-sm);font-size:13px;font-weight:500;border:1px solid transparent;transition:all .12s;white-space:nowrap;height:34px}.btn svg{flex-shrink:0}.btn-primary{background:var(--ink-1000);color:var(--white);border-color:var(--ink-1000)}.btn-primary:hover{background:var(--ink-800)}.btn-accent{background:var(--accent);color:var(--white);border-color:var(--accent)}.btn-accent:hover{background:var(--accent-hover)}.btn-secondary{background:var(--white);color:var(--ink-900);border-color:var(--ink-200)}.btn-secondary:hover{background:var(--ink-50);border-color:var(--ink-300)}.btn-ghost{background:transparent;color:var(--ink-700)}.btn-ghost:hover{background:var(--ink-150);color:var(--ink-900)}.btn-danger{background:var(--white);color:var(--error);border-color:var(--ink-200)}.btn-danger:hover{background:var(--error-tint);border-color:var(--error-soft)}.btn-sm{height:28px;padding:4px 10px;font-size:12.5px;gap:5px}.btn-xs{height:24px;padding:2px 8px;font-size:12px;gap:4px;border-radius:var(--r-xs)}.btn-lg{height:40px;padding:9px 16px;font-size:14px}.btn-icon{padding:7px;width:34px;justify-content:center}.btn-icon.btn-sm{width:28px;padding:4px}.card{background:var(--white);border:1px solid var(--ink-200);border-radius:var(--r-lg)}.card-pad{padding:18px 20px}.card-hd{padding:14px 20px;border-bottom:1px solid var(--ink-200);display:flex;align-items:center;gap:10px}.card-hd-title{font-weight:600;font-size:14px;color:var(--ink-900);letter-spacing:-.005em}.card-hd-sub{font-size:12.5px;color:var(--ink-500)}.stat{background:var(--white);border:1px solid var(--ink-200);border-radius:var(--r-lg);padding:14px 16px;display:flex;flex-direction:column;gap:8px;min-height:84px}.stat-label{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-500);display:flex;align-items:center;gap:6px;font-weight:500}.stat-value{font-size:22px;font-weight:600;letter-spacing:-.018em;color:var(--ink-1000);font-feature-settings:"tnum"}.stat-value.mono{font-family:var(--font-mono);font-weight:500;font-size:18px}.stat-meta{font-size:12px;color:var(--ink-500);margin-top:-4px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap;border:1px solid transparent}.badge .dot{width:5px;height:5px;border-radius:50%}.badge-success{background:var(--success-tint);color:var(--success);border-color:var(--success-soft)}.badge-success .dot{background:var(--success)}.badge-warn{background:var(--warn-tint);color:var(--warn);border-color:var(--warn-soft)}.badge-warn .dot{background:var(--warn)}.badge-error{background:var(--error-tint);color:var(--error);border-color:var(--error-soft)}.badge-error .dot{background:var(--error)}.badge-info{background:var(--accent-tint);color:var(--accent-ink);border-color:var(--accent-soft)}.badge-info .dot{background:var(--accent)}.badge-neutral{background:var(--ink-100);color:var(--ink-700);border-color:var(--ink-200)}.badge-neutral .dot{background:var(--ink-500)}.badge-running .dot{background:var(--accent);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.4)}}.tbl{width:100%;border-collapse:collapse;font-size:13.5px}.tbl th{text-align:left;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-500);padding:11px 16px;border-bottom:1px solid var(--ink-200);background:var(--ink-50)}.tbl th:first-child{border-top-left-radius:var(--r-lg)}.tbl th:last-child{border-top-right-radius:var(--r-lg)}.tbl td{padding:13px 16px;border-bottom:1px solid var(--ink-150);vertical-align:middle}.tbl tbody tr:last-child td{border-bottom:0}.tbl tbody tr{transition:background .1s}.tbl tbody tr.clickable{cursor:pointer}.tbl tbody tr.clickable:hover{background:var(--ink-50)}.tbl-num{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-500)}.tbl-strong{font-weight:600;color:var(--ink-900)}.tbl-sub{font-size:12px;color:var(--ink-500);margin-top:2px;font-family:var(--font-mono)}.mono{font-family:var(--font-mono)}.code-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 7px;background:var(--ink-100);border:1px solid var(--ink-200);border-radius:var(--r-xs);font-family:var(--font-mono);font-size:12px;color:var(--ink-800)}.input,.select,.textarea{display:block;width:100%;border:1px solid var(--ink-200);background:var(--white);border-radius:var(--r-sm);padding:8px 12px;font:inherit;font-size:13.5px;color:var(--ink-900);outline:none;transition:border-color .12s,box-shadow .12s;height:36px}.textarea{height:auto;min-height:72px;resize:vertical;font-family:var(--font-sans)}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.input.mono{font-family:var(--font-mono);font-size:13px}.input::placeholder{color:var(--ink-400)}.input-affix{display:flex;align-items:center;border:1px solid var(--ink-200);border-radius:var(--r-sm);background:var(--white);overflow:hidden;transition:border-color .12s,box-shadow .12s}.input-affix:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.input-affix .input{border:0;box-shadow:none}.input-affix .input:focus{box-shadow:none}.input-affix-prefix,.input-affix-suffix{padding:0 10px;font-family:var(--font-mono);font-size:12.5px;color:var(--ink-500);background:var(--ink-50);align-self:stretch;display:flex;align-items:center;white-space:nowrap}.input-affix-prefix{border-right:1px solid var(--ink-200)}.input-affix-suffix{border-left:1px solid var(--ink-200)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:12.5px;font-weight:500;color:var(--ink-800)}.field-help{font-size:12px;color:var(--ink-500);line-height:1.4}.field-help.success{color:var(--success)}.field-help.error{color:var(--error)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='%2375757f' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f0f1452;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;display:grid;place-items:center;padding:20px;animation:fade .18s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}.modal{background:var(--white);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);max-width:480px;width:100%;border:1px solid var(--ink-200);overflow:hidden;animation:pop .22s ease}.modal.wide{max-width:720px}.modal-hd{padding:18px 22px 4px}.modal-title{font-size:17px;font-weight:600;letter-spacing:-.01em;color:var(--ink-1000)}.modal-sub{margin-top:4px;font-size:13px;color:var(--ink-500)}.modal-body{padding:16px 22px 6px;display:flex;flex-direction:column;gap:14px}.modal-foot{padding:14px 22px 18px;display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:6px}.modal-foot .spread{margin-right:auto;font-size:12.5px;color:var(--ink-500)}.tile{width:36px;height:36px;border-radius:var(--r-md);background:var(--ink-100);display:grid;place-items:center;color:var(--ink-700);font-weight:600;font-size:13px;font-family:var(--font-mono);border:1px solid var(--ink-200);flex-shrink:0;letter-spacing:-.01em}.tile.lg{width:44px;height:44px;font-size:15px;border-radius:var(--r-md)}.tile.accent{background:var(--accent-tint);color:var(--accent-ink);border-color:var(--accent-soft)}.linkrow{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--r-sm);cursor:pointer;transition:background .1s;border:1px solid transparent}.linkrow:hover{background:var(--ink-50);border-color:var(--ink-200)}.linkrow .label{font-size:13px;font-weight:500;color:var(--ink-900);flex:1}.linkrow .sub{font-size:12px;color:var(--ink-500);font-family:var(--font-mono)}.linkrow .ext-icon{color:var(--ink-400)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--ink-200);margin-bottom:24px}.tab{padding:10px 14px;font-size:13.5px;font-weight:500;color:var(--ink-500);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;gap:6px}.tab:hover{color:var(--ink-900)}.tab.active{color:var(--ink-900);border-bottom-color:var(--ink-1000)}.tab .count{font-size:11px;background:var(--ink-100);padding:1px 6px;border-radius:999px;font-variant-numeric:tabular-nums;color:var(--ink-500)}.tab.active .count{background:var(--ink-150);color:var(--ink-800)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.grid-2-1{display:grid;grid-template-columns:2fr 1fr;gap:20px}.stack{display:flex;flex-direction:column}.env-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 8px;border-radius:4px;font-size:11.5px;font-weight:600;letter-spacing:.04em;font-family:var(--font-mono);text-transform:uppercase}.env-dev{background:#eef2ff;color:#3b3fa8;border:1px solid #e0e4ff}.env-qa{background:#fef7e6;color:#8a5a06;border:1px solid #fce6b8}.env-stage{background:#f0eafb;color:#5b3a9a;border:1px solid #e4d6f7}.env-prod{background:#e5f3ec;color:#0a6a3c;border:1px solid #cfe8d9}.logs{background:var(--ink-1000);color:#d8d8dc;border-radius:var(--r-md);font-family:var(--font-mono);font-size:12.5px;line-height:1.65;padding:14px 18px;max-height:440px;overflow:auto;border:1px solid var(--ink-800)}.logs .ln{display:flex;gap:14px}.logs .ts{color:#5a5a66;-webkit-user-select:none;user-select:none;flex-shrink:0}.logs .lvl{width:4px;flex-shrink:0}.logs .lvl-info{color:#7fb4ff}.logs .lvl-ok{color:#4ade80}.logs .lvl-warn{color:#fbbf24}.logs .lvl-err{color:#f87171}.logs .msg{white-space:pre;min-width:0}.logs::-webkit-scrollbar{width:10px;height:10px}.logs::-webkit-scrollbar-thumb{background:var(--ink-700);border-radius:4px}.pipe{display:flex;gap:4px;align-items:stretch}.pipe-step{flex:1;display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:var(--white);border:1px solid var(--ink-200);border-radius:var(--r-sm);cursor:pointer;transition:all .1s;min-width:0}.pipe-step:hover{border-color:var(--ink-300)}.pipe-step.active{border-color:var(--ink-1000);box-shadow:0 0 0 3px var(--ink-100)}.pipe-step .step-num{font-family:var(--font-mono);font-size:11px;color:var(--ink-500)}.pipe-step .step-name{font-size:12.5px;font-weight:500;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pipe-step .step-meta{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-500);font-family:var(--font-mono)}.pipe-step.success{background:linear-gradient(to bottom,var(--white),var(--success-tint))}.pipe-step.error{background:linear-gradient(to bottom,var(--white),var(--error-tint))}.pipe-step.running{background:linear-gradient(to bottom,var(--white),var(--accent-tint))}.step-dot{width:8px;height:8px;border-radius:50%}.matrix{display:grid;border:1px solid var(--ink-200);border-radius:var(--r-lg);background:var(--white);overflow:hidden}.matrix-row{display:contents}.matrix-cell{padding:14px 16px;border-bottom:1px solid var(--ink-150);border-right:1px solid var(--ink-150);font-size:13px;display:flex;align-items:center;min-height:56px}.matrix-cell:last-child{border-right:0}.matrix-head{background:var(--ink-50);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-500);font-weight:500;min-height:40px;border-bottom:1px solid var(--ink-200)}.matrix-row-name{font-weight:600;color:var(--ink-900)}.matrix-cell.app-cell{flex-direction:column;align-items:flex-start;gap:2px}.matrix-cell .ver{font-family:var(--font-mono);font-size:12px;color:var(--ink-900);font-weight:500}.matrix-cell .timeago{font-size:11px;color:var(--ink-500)}.matrix-cell.empty{color:var(--ink-400);font-size:12px}.filterbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.filterbar .select{height:34px;padding:4px 30px 4px 12px;width:auto;min-width:160px;background-color:var(--white)}.filterbar .input{height:34px;width:240px}.app-card{background:var(--white);border:1px solid var(--ink-200);border-radius:var(--r-lg);padding:18px 20px;cursor:pointer;transition:all .12s;display:flex;flex-direction:column;gap:12px;position:relative}.app-card:hover{border-color:var(--ink-300);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.app-card-hd{display:flex;align-items:flex-start;gap:12px}.app-card-title{font-size:15px;font-weight:600;color:var(--ink-1000);letter-spacing:-.01em}.app-card-ns{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-500);margin-top:2px}.app-card-desc{color:var(--ink-600);font-size:13px;line-height:1.45;min-height:38px}.app-card-foot{display:flex;align-items:center;gap:6px;padding-top:12px;border-top:1px solid var(--ink-150);font-size:12px;color:var(--ink-500);flex-wrap:wrap}.app-card-envs{display:flex;gap:3px;margin-left:auto}.empty{text-align:center;padding:60px 20px;color:var(--ink-500)}.empty-title{font-size:16px;font-weight:600;color:var(--ink-900);margin-bottom:4px}.empty-sub{font-size:13.5px;max-width:360px;margin:0 auto 16px}.section-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--ink-900);margin-bottom:12px;letter-spacing:-.005em}.section-title .count{font-family:var(--font-mono);font-size:12px;font-weight:400;color:var(--ink-500)}.section-title .right{margin-left:auto;display:flex;gap:6px}.divider{height:1px;background:var(--ink-200);margin:20px 0}.banner{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--r-md);background:var(--accent-tint);border:1px solid var(--accent-soft);color:var(--accent-ink);font-size:13px}.banner.warn{background:var(--warn-tint);border-color:var(--warn-soft);color:var(--warn)}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin .9s linear infinite}.row{display:flex;align-items:center;gap:8px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.muted{color:var(--ink-500)}.tiny{font-size:12px}.nowrap{white-space:nowrap}.flex1{flex:1;min-width:0}.gap-4{gap:4px}.gap-6{gap:6px}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-20{gap:20px}.gap-24{gap:24px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.mt-24{margin-top:24px}.mt-32{margin-top:32px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.mb-24{margin-bottom:24px}
