:root{color:#17171f;background:#fff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.5;font-weight:400;--surface: #ffffff;--surface-soft: #f6f7fb;--surface-warm: #fbfbff;--ink: #17171f;--ink-soft: #30313a;--muted: #6f707c;--line: #e5e7ef;--line-strong: #cfd3e1;--accent: #6466f1;--accent-hover: #5457e8;--accent-soft: #f0f1ff;--danger: #b42318;--warning: #6466f1;--good: #146c43;--focus: rgba(100, 102, 241, .22);--shadow: 0 18px 44px rgba(31, 35, 58, .1)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#fff}button,input{font:inherit}a{color:inherit}.app-shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:58px;padding:0 30px;border-bottom:1px solid var(--line);background:#ffffffeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand,.topbar-actions,.toolbar,.card-actions,.detail-actions,.auth-heading,.panel-heading,.back-link{display:flex;align-items:center}.brand{gap:10px;color:var(--ink);font-size:.96rem;font-weight:760;text-decoration:none}.brand svg,.brand-mark{color:var(--accent)}.topbar-actions{gap:12px}.user-email{max-width:260px;overflow:hidden;color:var(--muted);font-size:.92rem;text-overflow:ellipsis;white-space:nowrap}.workspace{width:min(1160px,calc(100% - 32px));margin:0 auto;padding:34px 0 56px}.page-heading,.detail-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.page-heading h1,.detail-heading h1{margin:2px 0 0;color:var(--ink);font-size:clamp(2rem,4vw,3.55rem);line-height:1.02;font-weight:820}.page-heading p,.detail-heading p{margin:10px 0 0;color:var(--muted)}.eyebrow{margin:0;color:var(--accent);font-size:.78rem;font-weight:760;text-transform:uppercase}.toolbar{gap:10px;padding-top:4px}.metric-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:4px 0 22px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 1px 2px #1f233a0a}.metric-item{min-width:0;padding:18px 20px;border-right:1px solid var(--line)}.metric-item:last-child{border-right:0}.metric-item span{display:block;color:var(--muted);font-size:.86rem}.metric-item strong{display:block;margin-top:8px;color:var(--ink);font-size:1.85rem;line-height:1;font-weight:820}.metric-item:nth-child(2) strong{color:var(--good)}.metric-item:nth-child(3) strong{color:var(--accent)}.metric-item:nth-child(4) strong{color:var(--danger)}.auth-page{position:relative;overflow:hidden;display:grid;min-height:100vh;place-items:center;padding:24px;background:linear-gradient(180deg,#f6f7ffe6,#ffffffeb 38%),#fff}.auth-background{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.auth-background:before,.auth-background:after{position:absolute;content:"";border:1px solid rgba(100,102,241,.13);background:linear-gradient(135deg,#6466f10f,#fff0),#ffffff8f;transform:skew(-14deg)}.auth-background:before{top:14%;left:-8%;width:34vw;height:42vh;animation:panel-drift 14s ease-in-out infinite}.auth-background:after{right:-10%;bottom:6%;width:38vw;height:48vh;animation:panel-drift 18s ease-in-out infinite reverse}.auth-grid-layer{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.86;background-image:linear-gradient(rgba(100,102,241,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(100,102,241,.08) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 76%,transparent);mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 76%,transparent)}.auth-scanline{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent 0%,rgba(100,102,241,.12) 50%,transparent 100%);height:160px;transform:translateY(-180px);animation:scan-pass 7s linear infinite}.auth-circuit,.auth-node{position:absolute;display:block}.auth-circuit{height:2px;border-radius:999px;background:linear-gradient(90deg,transparent,rgba(100,102,241,.48),transparent);animation:signal-flow 5.5s ease-in-out infinite}.circuit-one{top:22%;left:11%;width:280px}.circuit-two{top:58%;right:12%;width:340px;animation-delay:-1.8s}.circuit-three{bottom:18%;left:23%;width:220px;animation-delay:-3.2s}.auth-node{width:10px;height:10px;border:1px solid rgba(100,102,241,.42);border-radius:3px;background:#ffffffe0;box-shadow:0 0 0 6px #6466f10f;animation:node-pulse 4.2s ease-in-out infinite}.node-one{top:20%;left:29%}.node-two{top:56%;right:28%;animation-delay:-1s}.node-three{bottom:17%;left:35%;animation-delay:-2s}.node-four{top:34%;right:18%;animation-delay:-3s}.auth-panel,.modal-panel,.panel,.app-card{border:1px solid var(--line);border-radius:8px;background:var(--surface)}.auth-panel{position:relative;z-index:1;width:min(430px,100%);padding:34px 38px 32px;overflow:hidden;border-color:#bfc4e6e0;background:#ffffffe6;box-shadow:0 28px 70px #2a2f5c24,0 1px #fffffff2 inset;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.auth-panel:before{position:absolute;top:0;right:0;left:0;height:3px;content:"";background:linear-gradient(90deg,#6466f1,#8b8dff,#4f9cff)}.auth-heading{gap:12px;margin-bottom:28px}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex:0 0 auto;border:1px solid #d9dcff;border-radius:8px;background:linear-gradient(135deg,#6466f124,#4f9cff14),#fff;box-shadow:0 8px 20px #6466f126}.auth-heading h1,.modal-heading h2,.panel-heading h2,.deployment-list h2{margin:0;color:var(--ink);font-size:1.12rem;font-weight:780}label{display:grid;gap:7px;margin-bottom:16px;color:var(--ink-soft);font-size:.92rem;font-weight:680}input{width:100%;min-height:46px;border:1px solid var(--line-strong);border-radius:7px;padding:0 12px;background:#ffffffeb;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}input::placeholder{color:#9a9ca9}input:focus{border-color:var(--accent);outline:3px solid var(--focus);box-shadow:0 8px 22px #6466f11c}.primary-button,.text-button,.ghost-button,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;border:0;border-radius:7px;cursor:pointer;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}.primary-button{width:100%;padding:0 16px;background:var(--accent);color:#fff;font-weight:760}.primary-button:hover{background:var(--accent-hover);transform:translateY(-1px)}.primary-button.compact{width:auto;min-width:116px}.text-button,.ghost-button{padding:0 12px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:720}.text-button.full-width{width:100%;margin:-2px 0 12px}.text-button:hover,.ghost-button:hover,.icon-button:hover{border-color:#c8cbff;background:var(--accent-soft);color:var(--accent-hover)}.icon-button{width:40px;height:40px;border:1px solid var(--line);background:#fff;color:var(--ink-soft)}.icon-button.danger{color:var(--danger)}button:disabled,.primary-button:disabled{cursor:not-allowed;opacity:.55;transform:none}.muted-line{margin:18px 0 0;color:var(--muted);text-align:center}.muted-line a,.back-link{color:var(--accent);font-weight:760}.form-note{margin:-6px 0 16px;color:var(--muted);font-size:.9rem}.error-text,.failure{color:var(--danger)}.error-text{margin:-4px 0 14px}.alert{display:flex;align-items:center;gap:10px;margin-bottom:18px;border:1px solid #efc2ba;border-radius:8px;padding:12px 14px;background:#fff7f5;color:var(--danger)}.empty-state{display:grid;min-height:260px;place-items:center;align-content:center;gap:12px;border:1px dashed var(--line-strong);border-radius:8px;background:var(--surface);color:var(--muted)}.empty-state p{margin:0}.app-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(292px,1fr));gap:14px}.app-card{display:grid;gap:16px;min-height:210px;padding:18px;box-shadow:0 1px #1f233a0a;transition:border-color .16s ease,transform .16s ease,box-shadow .16s ease}.app-card:hover{border-color:#d8dafd;box-shadow:0 14px 30px #5155cd1c;transform:translateY(-2px)}.card-main{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.app-title{color:var(--ink);font-size:1.08rem;font-weight:780;text-decoration:none}.app-title:hover{color:var(--accent);text-decoration:underline}.app-subline{margin:5px 0 0;color:var(--muted);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.84rem;overflow-wrap:anywhere}.status-pill{display:inline-flex;align-items:center;min-height:28px;border:1px solid transparent;border-radius:999px;padding:0 10px;font-size:.82rem;font-weight:760;white-space:nowrap}.status-pill.small{min-height:24px;font-size:.76rem}.status-pill[data-tone=good]{border-color:#b9dfc9;background:#effaf3;color:var(--good)}.status-pill[data-tone=danger]{border-color:#f0c1ba;background:#fff4f2;color:var(--danger)}.status-pill[data-tone=muted]{border-color:var(--line);background:var(--surface-soft);color:#686057}.status-pill[data-tone=work]{border-color:#c8cbff;background:var(--accent-soft);color:var(--warning)}.meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;border-top:1px solid var(--line);padding-top:14px}.meta-grid.wide{grid-template-columns:repeat(3,minmax(0,1fr))}.meta-grid div{min-width:0}.meta-grid dt{color:var(--muted);font-size:.8rem}.meta-grid dd{margin:4px 0 0;overflow:hidden;color:var(--ink);font-weight:720;text-overflow:ellipsis;white-space:nowrap}.failure{margin:0;overflow-wrap:anywhere}.card-actions,.detail-actions{gap:10px;align-self:end}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:20px;background:#17171f5c}.modal-panel{width:min(520px,100%);padding:22px;box-shadow:var(--shadow)}.modal-heading,.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.file-drop{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;min-height:92px;border:1px dashed var(--line-strong);border-radius:8px;background:var(--surface-soft);color:var(--ink-soft);cursor:pointer;text-align:center}.file-drop:hover{border-color:var(--accent);background:#fff;color:var(--accent)}.file-drop input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.back-link{gap:8px;width:fit-content;margin-bottom:18px;text-decoration:none}.back-link:hover{text-decoration:underline}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}.detail-main{display:grid;gap:14px}.panel{padding:18px}.deployment-list{display:grid;gap:10px}.deployment-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;width:100%;min-height:46px;border:1px solid var(--line);border-radius:7px;padding:8px 10px;background:#fff;color:var(--ink);cursor:pointer;text-align:left}.deployment-row:hover,.deployment-row.selected{border-color:#c8cbff;background:var(--accent-soft)}.deployment-row time{color:var(--muted);font-size:.84rem}.log-panel{margin-top:14px}.log-panel pre{max-height:430px;margin:0;overflow:auto;border:1px solid #27231f;border-radius:8px;padding:14px;background:#1d1b18;color:#f4efe7;font:.9rem/1.55 SFMono-Regular,Consolas,Liberation Mono,monospace;white-space:pre-wrap}@media(max-width:820px){.topbar{padding:0 16px}.workspace{width:min(100% - 24px,1160px);padding-top:24px}.page-heading,.detail-heading,.card-main{flex-direction:column}.metric-strip,.detail-layout,.meta-grid.wide{grid-template-columns:1fr}.metric-item{border-right:0;border-bottom:1px solid var(--line)}.metric-item:last-child{border-bottom:0}.toolbar,.card-actions,.detail-actions{flex-wrap:wrap}.user-email{display:none}.auth-page{padding:18px}.auth-panel{padding:28px 22px 26px}.auth-background:before,.auth-background:after{width:68vw}.circuit-one,.circuit-two,.circuit-three{width:190px}}@media(prefers-reduced-motion:reduce){.auth-background:before,.auth-background:after,.auth-scanline,.auth-circuit,.auth-node{animation:none}}@keyframes scan-pass{0%{transform:translateY(-180px)}to{transform:translateY(calc(100vh + 180px))}}@keyframes signal-flow{0%,to{opacity:.18;transform:translate(-16px) scaleX(.78)}50%{opacity:.82;transform:translate(16px) scaleX(1)}}@keyframes node-pulse{0%,to{opacity:.42;transform:scale(.9)}50%{opacity:1;transform:scale(1)}}@keyframes panel-drift{0%,to{transform:translateZ(0) skew(-14deg)}50%{transform:translate3d(20px,-14px,0) skew(-14deg)}}
