:root{--bg: #0b0e14;--bg-deep: #070a0f;--surface: #121722;--surface-2: #171d2a;--surface-3: #1d2433;--border: #232b3b;--border-strong: #2e3850;--text: #e3e9f2;--text-dim: #aab4c5;--muted: #7d8799;--accent: #4c8dff;--accent-soft: rgba(76, 141, 255, .14);--violet: #8b7cf6;--green: #3fb950;--green-soft: rgba(63, 185, 80, .14);--red: #f85149;--red-soft: rgba(248, 81, 73, .13);--amber: #e3b341;--amber-soft: rgba(227, 179, 65, .13);--cyan: #39c5cf;--cyan-soft: rgba(57, 197, 207, .13);--radius: 10px;--radius-sm: 7px;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Apple SD Gothic Neo,Noto Sans KR,system-ui,sans-serif;background:radial-gradient(1000px 500px at 85% -10%,rgba(76,141,255,.07),transparent 60%),radial-gradient(800px 400px at -10% 110%,rgba(139,124,246,.05),transparent 60%),var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px}::-webkit-scrollbar-track{background:transparent}.layout{display:flex;min-height:100vh}.sidebar{width:232px;background:linear-gradient(180deg,var(--bg-deep),#0a0e16);border-right:1px solid var(--border);padding:1.1rem 0 .9rem;flex-shrink:0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:.6rem;padding:0 1.1rem 1rem;border-bottom:1px solid var(--border);margin-bottom:.8rem}.brand .logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--accent),var(--violet));display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.95rem;color:#fff;box-shadow:0 0 18px #4c8dff59}.brand h1{font-size:.98rem;font-weight:700;letter-spacing:-.01em}.brand .sub{font-size:.62rem;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.sidebar nav{display:flex;flex-direction:column;gap:1px;padding:0 .6rem}.nav-section{font-size:.62rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:.85rem .55rem .35rem}.sidebar nav a{display:flex;align-items:center;gap:.6rem;padding:.48rem .55rem;font-size:.86rem;color:var(--text-dim);border-radius:var(--radius-sm);border-left:2px solid transparent;transition:background .12s,color .12s}.sidebar nav a .ico{width:18px;text-align:center;font-size:.9rem;opacity:.85}.sidebar nav a:hover{background:var(--surface-2);color:var(--text)}.sidebar nav a.active{background:var(--accent-soft);color:#cfe1ff;border-left-color:var(--accent);font-weight:600}.nav-badge{margin-left:auto;background:var(--amber-soft);color:var(--amber);border:1px solid rgba(227,179,65,.4);border-radius:99px;padding:0 .48rem;font-size:.68rem;font-weight:800;line-height:1.35rem;animation:navBlink 1.3s ease-in-out infinite}.sidebar nav a.nav-alerting{color:var(--amber);animation:navGlow 1.3s ease-in-out infinite}@keyframes navBlink{0%,to{opacity:1;box-shadow:0 0 #e3b34173}50%{opacity:.55;box-shadow:0 0 10px 2px #e3b34140}}@keyframes navGlow{0%,to{background:#e3b3411a}50%{background:#e3b34108}}.sidebar-foot{margin-top:auto;padding:.8rem 1.1rem 0;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.5rem}.health-line{display:flex;align-items:center;gap:.45rem;font-size:.74rem;color:var(--muted)}.logout{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);padding:.4rem;font-size:.78rem;cursor:pointer;transition:border-color .12s,color .12s}.logout:hover{border-color:var(--red);color:var(--red)}.main{flex:1;padding:1.6rem 2.2rem 3rem;max-width:none;min-width:0}.main h2{font-size:1.22rem;font-weight:700;margin-bottom:1rem;letter-spacing:-.01em}.main h2+.page-desc{margin-top:-.6rem;margin-bottom:1rem}.page-desc{color:var(--muted);font-size:.85rem}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:.7rem;margin-bottom:1.6rem}.card{background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--border);border-radius:var(--radius);padding:.95rem 1.05rem;transition:transform .15s,border-color .15s}.card:hover{transform:translateY(-2px);border-color:var(--border-strong)}.card .num{font-size:1.55rem;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.card .label{font-size:.74rem;color:var(--muted);margin-top:.2rem}.card.alert .num{color:var(--red)}.card.good .num{color:var(--green)}table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}th,td{text-align:left;padding:.62rem .85rem;font-size:.855rem;border-bottom:1px solid var(--border)}th{background:var(--surface-2);color:var(--muted);font-weight:600;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase}tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover{background:var(--surface-2)}td table{margin:.4rem 0;border-radius:var(--radius-sm)}.badge{display:inline-block;padding:.16rem .55rem;border-radius:99px;font-size:.7rem;font-weight:650;letter-spacing:.02em;background:var(--surface-3);color:var(--text-dim);border:1px solid transparent;white-space:nowrap}.badge.ACTIVE,.badge.DONE,.badge.AUTO,.badge.APPROVED,.badge.PASS,.badge.SUCCESS{background:var(--green-soft);color:var(--green)}.badge.FAILED,.badge.FORBIDDEN,.badge.BLOCK,.badge.REJECTED,.badge.CRITICAL,.badge.FAIL,.badge.CANCELLED{background:var(--red-soft);color:var(--red)}.badge.IN_PROGRESS,.badge.RUNNING,.badge.ASSIGNED,.badge.STARTING,.badge.UPLOADING,.badge.BUILDING,.badge.INSTALLING{background:var(--accent-soft);color:var(--accent)}.badge.PENDING,.badge.BACKLOG,.badge.HUMAN_APPROVAL,.badge.WAITING_APPROVAL,.badge.HIGH,.badge.RETRY,.badge.ROLLED_BACK,.badge.STALE{background:var(--amber-soft);color:var(--amber)}.badge.REVIEW,.badge.SECURITY_REVIEW,.badge.TESTING,.badge.AI_APPROVAL,.badge.READY,.badge.HEALTH_CHECK{background:var(--cyan-soft);color:var(--cyan)}form.inline{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap;align-items:center}input,textarea,select{padding:.52rem .7rem;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:.86rem;font-family:inherit;color:var(--text);transition:border-color .12s,box-shadow .12s}input::placeholder{color:var(--muted)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}button.primary{background:linear-gradient(180deg,#5a97ff,var(--accent));color:#fff;border:none;border-radius:var(--radius-sm);padding:.52rem 1rem;font-size:.85rem;font-weight:600;cursor:pointer;transition:filter .12s,transform .1s}button.primary:hover{filter:brightness(1.12)}button.primary:active{transform:scale(.98)}button.primary.danger{background:linear-gradient(180deg,#ff6b62,#e0443b)}button.ghost{background:none;border:1px solid var(--border-strong);color:var(--text-dim);border-radius:var(--radius-sm);padding:.5rem .9rem;font-size:.84rem;cursor:pointer}button.ghost:hover{border-color:var(--accent);color:var(--accent)}.tabs{display:flex;gap:.2rem;margin-bottom:1rem;border-bottom:1px solid var(--border)}.tabs button{background:none;border:none;padding:.55rem .95rem;font-size:.86rem;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .12s}.tabs button:hover{color:var(--text-dim)}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:650}.error{color:var(--red);font-size:.82rem}.muted{color:var(--muted);font-size:.82rem}.empty{padding:2.4rem;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius);font-size:.88rem}.code-view{white-space:pre-wrap;font-size:.8rem;font-family:var(--font-mono);background:var(--bg-deep);color:var(--text-dim);padding:1rem;border-radius:var(--radius-sm);border:1px solid var(--border);max-height:480px;overflow:auto;line-height:1.55}.progress{width:120px;height:7px;background:var(--surface-3);border-radius:99px;overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--violet));border-radius:99px}.dept-title{font-size:.78rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:0 0 .55rem;display:flex;align-items:center;gap:.5rem}.dept-title:after{content:"";flex:1;height:1px;background:var(--border)}.section-gap{margin-top:1.6rem}.dot{width:8px;height:8px;border-radius:99px;display:inline-block;flex-shrink:0}.dot.green{background:var(--green)}.dot.red{background:var(--red)}.dot.gray{background:var(--muted);opacity:.5}.dot.pulse{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #3fb9508c}50%{box-shadow:0 0 0 7px #3fb95000}}.agent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:.7rem;margin-bottom:1.6rem}.agent-card{background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--border);border-radius:var(--radius);padding:.85rem .95rem;display:flex;flex-direction:column;gap:.5rem;transition:border-color .15s;position:relative;overflow:hidden}.agent-card.working{border-color:#3fb95073}.agent-card.working:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent 30%,rgba(63,185,80,.05) 50%,transparent 70%);background-size:250% 100%;animation:shimmer 2.4s linear infinite;pointer-events:none}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-50% 0}}.agent-card.disabled{opacity:.42}.agent-head{display:flex;align-items:center;gap:.6rem}.agent-avatar{width:34px;height:34px;border-radius:9px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.05rem;background:var(--surface-3);border:1px solid var(--border-strong)}.agent-card.working .agent-avatar{background:var(--green-soft);border-color:#3fb95066}.agent-name{font-weight:650;font-size:.88rem;line-height:1.2}.agent-role{font-size:.7rem;color:var(--muted)}.agent-task{font-size:.76rem;color:var(--text-dim);line-height:1.35;background:var(--bg-deep);border-radius:var(--radius-sm);padding:.45rem .55rem;border-left:2px solid var(--green)}.agent-task .proj{color:var(--muted);font-size:.68rem;display:block;margin-top:.15rem}.agent-idle{font-size:.76rem;color:var(--muted);padding:.45rem .1rem}.agent-stats{display:flex;gap:.8rem;font-size:.68rem;color:var(--muted);font-variant-numeric:tabular-nums}.agent-stats b{color:var(--text-dim);font-weight:600}.pipeline{display:grid;grid-template-columns:repeat(6,1fr);gap:.55rem;margin-bottom:1.6rem}@media(max-width:1100px){.pipeline{grid-template-columns:repeat(3,1fr)}}.pipe-col{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.6rem;min-height:120px}.pipe-head{display:flex;align-items:center;justify-content:space-between;font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:.1rem .25rem .5rem}.pipe-head .count{background:var(--surface-3);border-radius:99px;padding:0 .5rem;font-size:.68rem;color:var(--text-dim)}.pipe-col.hot{border-top:2px solid var(--accent)}.task-chip{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.5rem .6rem;margin-bottom:.45rem;font-size:.77rem;line-height:1.3;animation:chipIn .25s ease-out}@keyframes chipIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.task-chip .chip-meta{display:flex;align-items:center;gap:.4rem;margin-top:.3rem;font-size:.66rem;color:var(--muted)}.flow{display:flex;align-items:flex-start;gap:0;overflow-x:auto;padding:1.1rem .9rem .9rem;background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.6rem}.flow-node{display:flex;flex-direction:column;align-items:center;gap:.4rem;min-width:88px;flex-shrink:0;position:relative}.flow-node .fn-ico{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;background:var(--surface-3);border:1px solid var(--border-strong);transition:background .2s,border-color .2s,box-shadow .2s}.flow-node.active .fn-ico{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 16px #4c8dff66}.flow-node.flash .fn-ico{animation:nodeFlash 1.2s ease}@keyframes nodeFlash{0%{box-shadow:0 0 #3fb95099;border-color:var(--green)}to{box-shadow:0 0 0 14px #3fb95000}}.flow-node .fn-label{font-size:.68rem;color:var(--text-dim);white-space:nowrap;font-weight:600}.flow-node .fn-count{font-size:.66rem;padding:0 .5rem;border-radius:99px;background:var(--surface-3);color:var(--muted);font-variant-numeric:tabular-nums}.flow-node.active .fn-count{background:var(--accent-soft);color:var(--accent);font-weight:700}.flow-link{flex:1;min-width:30px;height:2px;background:var(--border-strong);margin-top:22px;position:relative;border-radius:99px}.flow-link .runner{position:absolute;top:-3.5px;left:0;width:9px;height:9px;border-radius:99px;background:var(--green);opacity:0;box-shadow:0 0 10px var(--green)}.flow-link.handoff{background:linear-gradient(90deg,rgba(63,185,80,.6),var(--border-strong))}.flow-link.handoff .runner{animation:run 1.1s ease-in-out 3}@keyframes run{0%{left:0;opacity:0}12%{opacity:1}88%{opacity:1}to{left:calc(100% - 9px);opacity:0}}.handoff-msg{font-size:.74rem;color:var(--green);font-weight:600;display:flex;align-items:center;gap:.4rem;animation:chipIn .3s ease-out}.feed{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-height:340px;overflow-y:auto}.feed-item{display:flex;align-items:baseline;gap:.7rem;padding:.5rem .9rem;border-bottom:1px solid var(--border);font-size:.8rem;animation:chipIn .25s ease-out}.feed-item:last-child{border-bottom:none}.feed-time{font-family:var(--font-mono);font-size:.7rem;color:var(--muted);flex-shrink:0}.feed-actor{color:var(--cyan);font-size:.74rem;flex-shrink:0}.feed-action{color:var(--text-dim)}.live-tag{display:inline-flex;align-items:center;gap:.4rem;font-size:.68rem;font-weight:700;letter-spacing:.1em;color:var(--green)}.ticker{display:flex;flex-direction:column;gap:.28rem;margin-bottom:1rem;min-height:1rem}.tick{display:flex;align-items:center;gap:.55rem;font-size:.76rem;color:var(--text-dim);animation:chipIn .3s ease-out}.tick .t-time{font-family:var(--font-mono);font-size:.65rem;color:var(--muted)}.tick .t-signal{color:var(--green);font-weight:650}.tick .t-arrow{display:inline-block;width:26px;height:2px;position:relative;background:linear-gradient(90deg,var(--green),transparent);border-radius:99px}.tick .t-arrow:after{content:"";position:absolute;top:-2.5px;width:7px;height:7px;border-radius:99px;background:var(--green);box-shadow:0 0 8px var(--green);animation:run 1s ease-in-out infinite}.proj-live{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:.7rem;margin-bottom:1.6rem}.proj-card{background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--border);border-radius:var(--radius);padding:.8rem .95rem;display:flex;flex-direction:column;gap:.55rem}.proj-card .proj-head{display:flex;align-items:center;gap:.5rem}.proj-card .proj-name{font-weight:700;font-size:.9rem}.proj-card .stage-badges{display:flex;flex-wrap:wrap;gap:.3rem}.proj-card .proj-foot{display:flex;justify-content:space-between;align-items:center;font-size:.7rem;color:var(--muted)}.pdot{width:9px;height:9px;border-radius:99px;display:inline-block;flex-shrink:0}.task-chip.glow{border-color:#4c8dffa6;box-shadow:0 0 14px #4c8dff4d;animation:chipIn .25s ease-out,glowFade 5s ease forwards}@keyframes glowFade{to{border-color:var(--border);box-shadow:none}}.diff-view{font-family:var(--font-mono);font-size:.76rem;line-height:1.55;background:var(--bg-deep);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.9rem 1rem;max-height:460px;overflow:auto;white-space:pre-wrap;word-break:break-all}.diff-view .d-add{color:var(--green);background:#3fb95012;display:block}.diff-view .d-del{color:var(--red);background:#f8514912;display:block}.diff-view .d-hunk{color:var(--cyan);display:block;margin-top:.4rem}.diff-view .d-file{color:var(--violet);font-weight:700;display:block;margin-top:.6rem}.artifact-tabs{display:flex;gap:.35rem;margin:.6rem 0;flex-wrap:wrap}.artifact-tabs button{background:var(--surface-3);border:1px solid var(--border);color:var(--text-dim);border-radius:99px;padding:.28rem .8rem;font-size:.74rem;cursor:pointer}.artifact-tabs button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:650}.viz-split{display:flex;gap:.8rem;align-items:stretch}.viz-feed{width:310px;flex-shrink:0;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;height:min(80vh,900px)}.viz-feed-head{padding:.6rem .9rem;border-bottom:1px solid var(--border);background:var(--surface-2);flex-shrink:0}.viz-feed .feed{border:none;border-radius:0;max-height:none;flex:1;overflow-y:auto}.viz-feed .feed-item{flex-wrap:wrap;row-gap:.1rem}.viz-canvas{flex:1;min-width:0}@media(max-width:900px){.viz-split{flex-direction:column}.viz-feed{width:100%;height:260px;order:2}}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-box{background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--border-strong);border-radius:16px;padding:2.2rem;width:360px;display:flex;flex-direction:column;gap:.8rem;box-shadow:0 24px 70px #00000080}.login-box .brand{border:none;padding:0;margin-bottom:.3rem}.login-box h1{font-size:1.15rem}
