@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&display=swap";:root{--bg: #070b16;--bg-soft: #101728;--panel: rgba(12, 19, 34, .88);--panel-strong: rgba(15, 22, 39, .98);--border: rgba(148, 163, 184, .16);--border-strong: rgba(125, 211, 252, .3);--text: #ecfeff;--muted: #94a3b8;--accent: #38bdf8;--accent-soft: rgba(56, 189, 248, .18);--success: #34d399;--warning: #f59e0b;--danger: #f87171;--shadow: 0 24px 80px rgba(2, 6, 23, .45);--rail-width: 56px;--topbar-height: 52px}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:radial-gradient(circle at top left,rgba(56,189,248,.12),transparent 28%),radial-gradient(circle at right 10% top 20%,rgba(14,165,233,.08),transparent 22%),linear-gradient(180deg,#050814,#060913);color:var(--text);font-family:Space Grotesk,Avenir Next,sans-serif}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:var(--rail-width) minmax(0,1fr);height:100vh;height:100dvh}.app-rail{position:relative;z-index:20;display:flex;flex-direction:column;align-items:center;gap:1rem;padding:.75rem 0;border-right:1px solid var(--border);background:linear-gradient(180deg,#0a0f1bf2,#070b16e6);backdrop-filter:blur(16px)}.rail-brand{display:grid;place-items:center;padding:.25rem}.rail-brand__mark{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.75rem;background:linear-gradient(135deg,#22d3eee6,#0e7490e6);color:#04111f;font-weight:700;font-size:.95rem;box-shadow:0 8px 20px #22d3ee40}.rail-brand__mark--muted{background:#94a3b824;color:var(--muted);box-shadow:none;font-size:.75rem}.rail-nav{display:grid;gap:.35rem;width:100%;padding:0 .35rem}.rail-link{display:grid;place-items:center;width:100%;aspect-ratio:1 / 1;border-radius:.75rem;border:1px solid transparent;color:#94a3b8;transition:color .18s ease,border-color .18s ease,background .18s ease}.rail-link:hover,.rail-link.is-active{color:#dbeafe;border-color:var(--border-strong);background:#0ea5e91a}.rail-foot{margin-top:auto;padding-bottom:.35rem}.rail-user{position:relative}.rail-user__trigger{display:grid;place-items:center;width:2rem;height:2rem;border:1px solid transparent;border-radius:.75rem;background:#94a3b824;color:var(--muted);cursor:pointer;list-style:none;transition:color .18s ease,border-color .18s ease,background .18s ease}.rail-user__trigger::-webkit-details-marker{display:none}.rail-user__trigger:hover,.rail-user[open] .rail-user__trigger{color:#dbeafe;border-color:var(--border-strong);background:#0ea5e91a}.rail-user__avatar{font-size:.75rem;font-weight:700}.rail-user__menu{position:absolute;left:calc(100% + .75rem);bottom:0;display:grid;gap:.5rem;min-width:12rem;padding:.55rem;border:1px solid var(--border);border-radius:1rem;background:#0f172af0;box-shadow:var(--shadow)}.rail-user__identity{display:flex;align-items:center;gap:.45rem;min-width:0}.rail-user__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:600}.rail-user__badge{padding:.12rem .4rem;border-radius:999px;background:#34d3991f;color:#a7f3d0;font-size:.68rem;font-weight:700;text-transform:uppercase}.rail-user form{margin:0}.rail-user__logout{width:100%;padding:.4rem .65rem;border:0;border-radius:999px;background:#94a3b81f;color:var(--muted);font:inherit;font-size:.75rem;font-weight:700;cursor:pointer}.rail-user__logout:hover{color:var(--text);background:#94a3b833}.app-viewport{display:flex;flex-direction:column;min-width:0;min-height:0}.app-topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--topbar-height);padding:0 1rem;border-bottom:1px solid var(--border);background:#090e19b8;backdrop-filter:blur(16px)}.topbar-title{display:flex;align-items:baseline;gap:.5rem;min-width:0}.topbar-title h1{margin:0;font-size:.95rem;font-weight:600;letter-spacing:.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-crumb{display:inline-flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.85rem}.topbar-crumb a:hover{color:var(--text)}.topbar-eyebrow{color:var(--muted);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;margin-left:.25rem}.topbar-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.app-content{flex:1;min-height:0;padding:1.25rem;overflow:auto}.app-content--bleed{padding:0;overflow:hidden}.app-content__subtitle{margin:0 0 1rem;max-width:60ch;color:var(--muted);line-height:1.55}.auth-page{display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:1.5rem}.auth-card{width:min(100%,26rem);padding:1.4rem;border:1px solid var(--border);border-radius:1.15rem;background:var(--panel);box-shadow:var(--shadow)}.auth-card__brand{display:inline-flex;align-items:center;gap:.55rem;margin-bottom:1.5rem;font-weight:700}.auth-card__eyebrow{margin:0 0 .25rem;color:var(--accent);font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.auth-card h1{margin:0;font-size:1.6rem}.auth-card__subtitle{margin:.45rem 0 1.25rem;color:var(--muted)}.auth-card__mock-note,.auth-form__error{margin:0 0 1rem;padding:.75rem .85rem;border-radius:.75rem;font-size:.88rem;line-height:1.45}.auth-card__mock-note{border:1px solid rgba(52,211,153,.25);background:#34d3991a;color:#d1fae5}.auth-form{display:grid;gap:.9rem}.auth-form label{display:grid;gap:.35rem;color:var(--muted);font-size:.82rem;font-weight:700}.auth-form input{width:100%;padding:.72rem .8rem;border:1px solid var(--border);border-radius:.7rem;background:#02061773;color:var(--text);font:inherit}.auth-form input:focus{outline:none;border-color:var(--border-strong);box-shadow:0 0 0 3px #38bdf81f}.auth-form button{padding:.72rem .9rem;border:1px solid rgba(125,211,252,.45);border-radius:.7rem;background:linear-gradient(135deg,#38bdf8f0,#0e7490f2);color:#031525;font:inherit;font-weight:800;cursor:pointer}.auth-form__error{border:1px solid rgba(248,113,113,.28);background:#f871711f;color:#fecaca}.projects-page{display:grid;gap:1.25rem}.projects-page__summary{display:flex;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid var(--border);border-radius:.85rem;background:#090e19b8}.projects-page__summary p{margin:0;font-size:.95rem;font-weight:600}.projects-page__summary span{color:var(--muted);font-size:.9rem}.projects-page__summary-left{display:flex;align-items:center;gap:.85rem}.new-project__button{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .85rem;border-radius:.55rem;border:1px solid var(--border);background:#0f172ad9;color:var(--text);font:inherit;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.new-project__button:hover,.new-project__button[aria-expanded=true]{background:#1e293bf2;border-color:#94a3b873}.new-project__plus{color:var(--muted);font-size:.95rem;line-height:1}.modal-overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1.5rem;background:#0206178c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:modal-overlay-in .16s ease-out}@keyframes modal-overlay-in{0%{opacity:0}to{opacity:1}}.modal-dialog{width:min(28rem,100%);border-radius:1rem;border:1px solid var(--border);background:#0a0f1cf5;box-shadow:0 24px 60px #02061799,0 0 0 1px #94a3b80f;animation:modal-dialog-in .18s cubic-bezier(.16,1,.3,1)}@keyframes modal-dialog-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem 1rem .75rem;border-bottom:1px solid var(--border)}.modal-dialog__header h2{margin:0;font-size:1rem;font-weight:600}.modal-dialog__close{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:.55rem;border:1px solid var(--border);background:#0f172ad9;color:var(--muted);cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.modal-dialog__close:hover:enabled{background:#1e293bf2;color:var(--text);border-color:#94a3b873}.modal-dialog__close:disabled{cursor:not-allowed;opacity:.6}.modal-dialog__form{display:grid;gap:.6rem;padding:1rem}.modal-dialog__form label{color:var(--muted);font-size:.82rem}.modal-dialog__form input{min-height:2.5rem;padding:0 .75rem;border-radius:.6rem;border:1px solid var(--border);background:#020617d9;color:var(--text);font:inherit;font-size:.9rem;outline:none}.modal-dialog__form input:focus{border-color:#38bdf899;box-shadow:0 0 0 3px #38bdf826}.modal-dialog__field{display:grid;gap:.4rem;color:var(--muted);font-size:.82rem}.modal-dialog__field input{min-height:2.5rem;padding:0 .75rem;border-radius:.6rem;border:1px solid var(--border);background:#020617d9;color:var(--text);font:inherit;font-size:.9rem;outline:none}.modal-dialog__field input:focus{border-color:#38bdf899;box-shadow:0 0 0 3px #38bdf826}.modal-dialog__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.25rem}.modal-dialog__submit,.modal-dialog__confirm,.modal-dialog__cancel{min-height:2.4rem;padding:0 .95rem;border-radius:.6rem;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}.modal-dialog__submit,.modal-dialog__confirm{border:0;background:linear-gradient(135deg,#0891b2,#38bdf8);color:#02111b;transition:transform .15s ease,box-shadow .15s ease}.modal-dialog__submit:hover:enabled,.modal-dialog__confirm:hover:enabled{transform:translateY(-1px);box-shadow:0 10px 20px #38bdf833}.modal-dialog__submit:disabled,.modal-dialog__confirm:disabled{cursor:not-allowed;opacity:.6}.modal-dialog__cancel{border:1px solid var(--border);background:transparent;color:var(--muted)}.modal-dialog__cancel:hover:enabled{color:var(--text);border-color:#94a3b873}.modal-dialog__cancel:disabled{cursor:not-allowed;opacity:.6}.modal-dialog__error{margin:0;padding:.55rem .75rem;border-radius:.55rem;background:#7f1d1d38;border:1px solid rgba(248,113,113,.28);color:#fecaca;font-size:.83rem}.modal-dialog__body{padding:.95rem 1rem .25rem;display:grid;gap:.65rem;font-size:.88rem;color:var(--text);line-height:1.5}.modal-dialog>.modal-dialog__actions{padding:.25rem 1rem 1rem;margin-top:0}.modal-dialog__body p{margin:0}.modal-dialog__body strong{color:#fecaca}.modal-dialog__warning{padding:.55rem .75rem;border-radius:.55rem;border:1px solid rgba(245,158,11,.38);background:#78350f38;color:#fde68a;font-size:.83rem}.modal-dialog__danger{min-height:2.4rem;padding:0 .95rem;border-radius:.6rem;border:0;background:linear-gradient(135deg,#b91c1c,#ef4444);color:#fff1f2;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.modal-dialog__danger:hover:enabled{transform:translateY(-1px);box-shadow:0 10px 22px #ef444447}.modal-dialog__danger:disabled{cursor:not-allowed;opacity:.65}.danger-zone{display:grid;margin-top:.4rem;padding-top:.75rem;border-top:1px solid var(--border)}.danger-zone__button{padding:.55rem .85rem;border-radius:.55rem;border:1px solid rgba(248,113,113,.35);background:#7f1d1d24;color:#fca5a5;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.danger-zone__button:hover:enabled{background:#7f1d1d4d;color:#fecaca;border-color:#f871718c}.danger-zone__button:disabled{cursor:not-allowed;opacity:.55}.detach-form{display:grid;gap:.55rem;padding-top:.5rem;margin-top:.1rem;border-top:1px solid var(--border)}.detach-form__submit{padding:.5rem .8rem;border-radius:.55rem;border:1px solid rgba(250,204,21,.3);background:#78350f2e;color:#fde68a;font:inherit;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.detach-form__submit:hover:enabled{background:#78350f52;border-color:#facc1580}.detach-form__submit:disabled{cursor:not-allowed;opacity:.55}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,22.25rem);justify-content:start;align-items:start;gap:1rem}.project-card,.empty-state,.details-panel{border:1px solid var(--border);border-radius:1rem;background:var(--panel);box-shadow:var(--shadow);backdrop-filter:blur(18px)}.project-card{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:.75rem;width:22.25rem;height:17.25rem;padding:.9rem;transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease;animation:rise-in .32s ease both}.project-card:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:0 28px 70px #02061785}.project-card--deleting{opacity:.62}.project-card__delete-error{flex-basis:100%;color:#fecaca}.project-card__header,.project-card__footer,.details-panel__header{display:flex;justify-content:space-between;gap:1rem;align-items:center}.details-panel__header-actions{display:inline-flex;align-items:center;gap:.5rem}.details-panel__eyebrow{display:inline-flex;align-items:center;gap:.5rem;margin:0}.details-panel__eyebrow .status-pill{letter-spacing:0;text-transform:none}.details-panel__close{display:grid;place-items:center;width:1.8rem;height:1.8rem;padding:0;border-radius:.5rem;border:1px solid var(--border);background:#0f172abd;color:var(--muted);cursor:pointer;transition:color .16s ease,border-color .16s ease,background .16s ease}.details-panel__close:hover{color:var(--text);border-color:var(--border-strong);background:#0ea5e91f}.project-card__header h2,.details-panel__header h3{margin:.25rem 0 0;font-size:.95rem}.details-tabs{display:flex;gap:1.2rem;margin:-.2rem -1rem 0;padding:0 1rem;border-bottom:1px solid var(--border)}.details-tabs__item{position:relative;padding:.15rem 0 .75rem;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.82rem;font-weight:600;cursor:pointer;transition:color .16s ease}.details-tabs__item:hover,.details-tabs__item--active{color:var(--text)}.details-tabs__item--active:after{content:"";position:absolute;right:0;bottom:-1px;left:0;height:1px;border-radius:999px;background:var(--text)}.details-tab-panel--empty{min-height:12rem}.variables-panel{display:grid;gap:.8rem}.variables-panel__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.variables-panel__header strong{font-size:.95rem;color:var(--text)}.variables-panel__new-button{min-height:2.2rem;padding:0 .85rem;border-radius:.6rem;border:1px solid rgba(56,189,248,.3);background:#0ea5e924;color:#bae6fd;font:inherit;font-size:.82rem;font-weight:700;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}.variables-panel__new-button:hover:enabled{transform:translateY(-1px);border-color:#38bdf880;background:#0ea5e93d;color:#e0f2fe}.variables-panel__new-button:disabled{cursor:not-allowed;opacity:.6}.variable-form{display:grid;gap:.65rem;padding-bottom:.8rem;border-bottom:1px solid var(--border)}.variable-form__row{display:grid;grid-template-columns:minmax(9rem,.85fr) minmax(12rem,1.2fr) auto auto;gap:.55rem;align-items:center}.variable-form label{display:grid;color:var(--muted);font-size:.78rem}.variable-form__field{position:relative}.variable-form__label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.variable-form input{width:100%;min-height:2.45rem;padding:0 .75rem;border-radius:.65rem;border:1px solid var(--border);background:#0f172ae0;color:var(--text);font:inherit;font-size:.88rem}.variable-form input:focus{outline:2px solid rgba(56,189,248,.32);outline-offset:2px;border-color:#38bdf873}.variable-form__secret{display:inline-flex;align-items:center;gap:.45rem;min-height:2.45rem;width:fit-content;padding:0 .75rem;border:1px solid var(--border);border-radius:.65rem;background:#0f172ab8;color:var(--text);font-weight:600}.variable-form__secret input{width:1rem;min-height:1rem;padding:0;border:0;background:transparent;accent-color:#22d3ee}.variable-form__actions{display:flex;align-items:center;gap:.5rem}.variable-form__submit,.variable-form__cancel,.variable-row button{min-height:2.35rem;padding:0 .9rem;border-radius:.6rem;border:1px solid var(--border);background:#0f172ae6;color:var(--text);font:inherit;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.variable-form__submit{background:linear-gradient(135deg,#0891b2,#38bdf8);color:#02111b;border:0}.variable-form__cancel{background:#0f172ab8;color:var(--muted)}.variable-form__submit:hover:enabled,.variable-row button:hover:enabled{border-color:#94a3b873;background:#1e293bf2}.variable-form__submit:hover:enabled{background:linear-gradient(135deg,#0e7490,#22d3ee)}.variable-form__cancel:hover:enabled{border-color:#94a3b873;color:var(--text)}.variable-form__submit:disabled,.variable-form__cancel:disabled,.variable-row button:disabled{cursor:not-allowed;opacity:.6}@media(max-width:980px){.variable-form__row{grid-template-columns:1fr}.variable-form__actions{justify-content:stretch}.variable-form__actions>button{flex:1}}.variables-list{display:grid;gap:.55rem}.variable-row{display:grid;grid-template-columns:minmax(0,1fr) repeat(3,auto);gap:.5rem;align-items:center;padding:.65rem;border-radius:.75rem;border:1px solid var(--border);background:#0f172aa8}.variable-row__main{min-width:0;display:grid;gap:.35rem}.variable-row__heading{display:flex;align-items:center;gap:.4rem;min-width:0}.variable-row code{font-family:JetBrains Mono,SFMono-Regular,ui-monospace,monospace;font-size:.78rem}.variable-row__heading code,.variable-row__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.variable-row__value{color:var(--muted)}.variable-badge{padding:.16rem .38rem;border-radius:999px;border:1px solid rgba(148,163,184,.22);color:var(--muted);font-size:.68rem;line-height:1}.project-card__preview{position:relative;overflow:hidden;border-radius:.65rem;border:1px solid rgba(148,163,184,.12);background:radial-gradient(circle,rgba(148,163,184,.16) 1px,transparent 1px),linear-gradient(180deg,#080d18eb,#070b14f2);background-size:22px 22px,cover;display:grid;place-items:center;min-height:0;padding:1rem}.project-card__icons{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem}.resource-icon{display:inline-grid;place-items:center;border-radius:.65rem;border:1px solid rgba(148,163,184,.18);background:#0f172ad1;color:var(--text);box-shadow:0 6px 16px #02061759;transition:transform .18s ease,border-color .18s ease,background .18s ease}.resource-icon--md{width:2.5rem;height:2.5rem}.resource-icon--sm{width:1.6rem;height:1.6rem;border-radius:.45rem;box-shadow:none}.project-card:hover .resource-icon{border-color:#94a3b852}.resource-icon--md svg{width:1.25rem;height:1.25rem}.resource-icon--sm svg{width:.95rem;height:.95rem}.resource-icon--postgres{color:#7dd3fc;background:#0c4a6e73;border-color:#7dd3fc52}.resource-icon--github{color:#e2e8f0;background:#111827e6;border-color:#94a3b847}.resource-icon--docker{color:#60a5fa;background:#1e3a8a66;border-color:#60a5fa4d}.resource-icon--bare{background:transparent;border:0;box-shadow:none;border-radius:0;width:auto;height:auto}.resource-icon--creating,.resource-icon--deleting{opacity:.7;animation:resource-icon-pulse 1.6s ease-in-out infinite}.resource-icon--unhealthy{border-color:#f871718c;box-shadow:0 0 0 1px #f871712e,0 6px 16px #02061759}.resource-icon--overflow{color:var(--muted);font-size:.78rem;font-weight:600;letter-spacing:.02em}@keyframes resource-icon-pulse{0%,to{opacity:.55}50%{opacity:.9}}@media(prefers-reduced-motion:reduce){.project-loading,.project-loading__node,.project-loading__edge,.project-loading__icon,.project-loading__badge,.project-loading__title,.project-loading__subtitle,.project-loading__status,.resource-icon--creating,.resource-icon--deleting,.project-card__status--deleting .project-card__status-dot{animation:none}}.project-card__empty{margin:0;color:var(--muted);font-size:.9rem}.project-card__footer{justify-content:flex-start;gap:.45rem;color:var(--muted);font-size:.74rem;flex-wrap:wrap}.project-card__footer-sep{color:#94a3b880}.project-card__status{display:inline-flex;align-items:center;gap:.45rem;color:var(--text);font-weight:500}.project-card__status-dot{width:.55rem;height:.55rem;border-radius:999px;background:currentColor;box-shadow:0 0 0 2px #0f172ab3}.project-card__status--online{color:#34d399}.project-card__status--degraded{color:#fbbf24}.project-card__status--empty{color:#94a3b8b3}.project-card__status--deleting{color:#f59e0b}.project-card__status--failed{color:#f87171}.project-card__status--deleting .project-card__status-dot{animation:project-delete-pulse 1.2s ease-in-out infinite;box-shadow:0 0 0 2px #0f172ab3,0 0 #f59e0b6b}@keyframes project-delete-pulse{0%,to{opacity:.65;transform:scale(.92);box-shadow:0 0 0 2px #0f172ab3,0 0 #f59e0b61}50%{opacity:1;transform:scale(1.08);box-shadow:0 0 0 2px #0f172ab3,0 0 0 5px #f59e0b00}}.empty-state{padding:1.75rem}.not-found-layout{display:grid;place-items:center;height:100%;min-height:0;padding:2rem}.empty-state--centered{width:min(32rem,100%);text-align:center}.empty-state__eyebrow{margin:0 0 .45rem!important;color:var(--accent)!important;font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.empty-state__link{display:inline-flex;margin-top:1rem;border:0;background:transparent;color:#bae6fd;font:inherit;font-weight:600;cursor:pointer}.empty-state__link:hover{color:var(--text)}.empty-state h2,.details-panel__empty h3{margin:0}.empty-state p,.details-panel__empty p{margin:.5rem 0 0;color:var(--muted);line-height:1.6}.project-loading{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:1rem;height:100%;min-height:0;padding:.75rem;background:radial-gradient(circle at 30% 20%,rgba(56,189,248,.05),transparent 50%),radial-gradient(circle,rgba(148,163,184,.14) 1px,transparent 1px),linear-gradient(180deg,#080d18eb,#070b14f2);background-size:auto,22px 22px,cover;animation:project-page-in .22s ease-out both}.project-loading__summary{display:flex;gap:.45rem}.project-loading__summary span{width:5.5rem;height:1.8rem;border-radius:999px;background:#94a3b81f}.project-loading__canvas{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6.5rem;min-height:0}.project-loading__node{position:relative;z-index:1;display:grid;gap:.7rem;width:20rem;min-height:8.4rem;padding:1rem;border:1px solid rgba(56,189,248,.18);border-radius:1rem;background:#090e19d1;box-shadow:0 18px 46px #02061747;animation:project-node-float 1.8s ease-in-out infinite}.project-loading__node--bottom{animation-delay:.12s}.project-loading__node-header{display:flex;align-items:center;gap:.65rem}.project-loading__icon,.project-loading__badge,.project-loading__title,.project-loading__subtitle,.project-loading__status{display:block;overflow:hidden;background:linear-gradient(90deg,transparent,rgba(226,232,240,.16),transparent),#94a3b81a;background-size:220% 100%;animation:project-skeleton-shimmer 1.35s ease-in-out infinite}.project-loading__icon{width:2rem;height:2rem;border:1px solid rgba(56,189,248,.22);border-radius:.6rem}.project-loading__badge{width:6.25rem;height:1.45rem;border-radius:999px}.project-loading__title{width:9rem;height:1.1rem;border-radius:.35rem}.project-loading__subtitle{width:14rem;height:.8rem;border-radius:.35rem}.project-loading__status{width:5rem;height:.8rem;border-radius:999px}.project-loading__edge{position:absolute;width:1px;height:8.5rem;border-left:2px dashed rgba(147,197,253,.32);animation:project-edge-flow 1.1s linear infinite}.project-loading p{margin:0;color:var(--muted);font-size:.86rem;text-align:center}@keyframes project-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes project-node-float{0%,to{opacity:.78;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}@keyframes project-edge-flow{0%{opacity:.32}50%{opacity:.68}to{opacity:.32}}@keyframes project-page-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.topology-layout{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0;height:100%;min-height:0}.details-panel{width:clamp(520px,58vw,820px);min-width:min(480px,100vw)}.topology-stage{position:relative;display:flex;flex-direction:column;min-height:0;background:radial-gradient(circle at 30% 20%,rgba(56,189,248,.05),transparent 50%)}.topology-canvas{position:relative;flex:1;min-height:0;border:0;border-radius:0;background:radial-gradient(circle,rgba(148,163,184,.14) 1px,transparent 1px),linear-gradient(180deg,#080d18eb,#070b14f2);background-size:22px 22px,cover}.topology-flow{width:100%;height:100%}.topology-metrics{position:absolute;top:.75rem;left:.75rem;z-index:5;display:flex;gap:.4rem;flex-wrap:wrap;pointer-events:none}.topology-actions{position:absolute;top:.75rem;right:.75rem;z-index:6;display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}.topology-flashes{position:absolute;top:3.25rem;left:50%;transform:translate(-50%);z-index:7;display:grid;gap:.45rem;max-width:min(34rem,calc(100% - 2rem));pointer-events:none}.topology-flashes .flash{pointer-events:auto;box-shadow:0 12px 28px #02061773}.topology-deploy-bar{position:absolute;top:.75rem;left:50%;z-index:8;display:flex;align-items:center;gap:.45rem;min-height:2.65rem;padding:.35rem;border:1px solid rgba(126,34,206,.5);border-radius:.5rem;background:#140a20f0;box-shadow:0 14px 38px #02061773,0 0 0 1px #c084fc14;transform:translate(-50%)}.topology-deploy-bar__summary{padding:0 .75rem;color:#d8b4fe;font-size:.83rem;font-weight:700;white-space:nowrap}.topology-deploy-bar button{min-height:2rem;border-radius:.4rem;font:inherit;font-size:.8rem;font-weight:700;cursor:pointer}.topology-deploy-bar__details,.topology-deploy-bar__more{border:1px solid rgba(148,163,184,.24);background:#0f172ab8;color:var(--text)}.topology-deploy-bar__details{padding:0 .85rem}.topology-deploy-bar__deploy{display:inline-flex;align-items:center;gap:.45rem;padding:0 .95rem;border:0;background:linear-gradient(135deg,#7c3aed,#c084fc);color:#fff}.topology-deploy-bar__deploy span{color:#ffffffb8;font-size:.68rem;font-weight:600}.topology-deploy-bar__more{width:2rem;padding:0}.topology-deploy-bar button:disabled{cursor:wait;opacity:.65}.topology-deploy-bar__error{position:absolute;top:calc(100% + .45rem);left:0;margin:0;padding:.5rem .65rem;border:1px solid rgba(248,113,113,.35);border-radius:.55rem;background:#7f1d1df2;color:#fecaca;font-size:.78rem;white-space:nowrap}.add-button{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .85rem;border-radius:.55rem;border:1px solid var(--border);background:#0f172ad9;color:var(--text);font:inherit;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}.add-button:hover,.add-button[aria-expanded=true]{background:#1e293bf2;border-color:#94a3b873}.add-button__plus{color:var(--muted);font-size:.95rem;line-height:1}.add-menu{width:min(22rem,calc(100vw - 2rem));border-radius:.85rem;border:1px solid var(--border);background:#0a0f1cf5;box-shadow:0 16px 40px #0206178c,0 0 0 1px #94a3b80d;backdrop-filter:blur(8px);overflow:hidden;animation:add-menu-in .14s ease-out}.add-menu-overlay{background:#02061799;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.add-menu--dialog{width:min(34rem,calc(100vw - 2rem));max-height:min(38rem,calc(100vh - 3rem));display:grid;overflow:hidden;animation:modal-dialog-in .18s cubic-bezier(.16,1,.3,1)}.add-menu__modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1rem .85rem;border-bottom:1px solid var(--border)}.add-menu__modal-header .page-eyebrow{margin:0 0 .25rem}.add-menu__modal-header h2{margin:0;font-size:1.05rem;font-weight:700}.add-menu--dialog .add-menu__picker,.add-menu--dialog .add-menu__form{min-height:0;overflow:auto}@keyframes add-menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.add-menu__picker{display:flex;flex-direction:column}.add-menu__category-header{display:flex;align-items:center;gap:.55rem;padding:.75rem;border-bottom:1px solid var(--border)}.add-menu__search{min-height:2.6rem;padding:0 .85rem;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font:inherit;font-size:.9rem;outline:none}.add-menu__search::placeholder{color:var(--muted)}.add-menu__search:focus{background:#38bdf80f}.add-menu__list{list-style:none;margin:0;padding:.25rem;max-height:18rem;overflow-y:auto}.add-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.55rem .6rem;border:0;border-radius:.55rem;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background .12s ease}.add-menu__item:hover:not(:disabled),.add-menu__item:focus-visible:not(:disabled){background:#38bdf81a;outline:none}.add-menu__item--disabled,.add-menu__item:disabled{cursor:not-allowed;opacity:.55}.add-menu__item-icon{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.45rem;border:1px solid var(--border);background:#0f172ad9;color:#93c5fd;flex:0 0 auto}.add-menu__item-text{display:grid;gap:.1rem;flex:1;min-width:0}.add-menu__item-text strong{font-size:.88rem;font-weight:600}.add-menu__item-text span{color:var(--muted);font-size:.78rem}.add-menu__item-chevron{color:var(--muted);flex:0 0 auto}.add-menu__empty{padding:.8rem;color:var(--muted);font-size:.85rem;text-align:center}.add-menu__form{display:grid;gap:.6rem;padding:.75rem}.add-menu__form-header{display:flex;align-items:center;gap:.55rem}.add-menu__form-title{display:flex;align-items:center;gap:.6rem;flex:1;min-width:0}.add-menu__form-title strong{display:block;font-size:.9rem;font-weight:600}.add-menu__form-title p{margin:0;color:var(--muted);font-size:.78rem}.add-menu__back{display:grid;place-items:center;width:1.8rem;height:1.8rem;border-radius:.45rem;border:1px solid var(--border);background:#0f172ad9;color:var(--muted);cursor:pointer;flex:0 0 auto}.add-menu__back:hover:enabled{color:var(--text);border-color:#94a3b873}.add-menu__back:disabled{opacity:.5;cursor:not-allowed}.add-menu__form input,.add-menu__field select{min-height:2.4rem;padding:0 .7rem;border-radius:.55rem;border:1px solid var(--border);background:#020617d9;color:var(--text);font:inherit;font-size:.88rem;outline:none}.add-menu__form input:focus,.add-menu__field select:focus{border-color:#38bdf899;box-shadow:0 0 0 3px #38bdf826}.add-menu__field{display:grid;gap:.35rem}.add-menu__field label{color:var(--muted);font-size:.78rem;font-weight:600}.add-menu__field p{margin:0;color:var(--muted);font-size:.78rem}.add-menu__submit{min-height:2.4rem;padding:0 .85rem;border-radius:.55rem;border:0;background:linear-gradient(135deg,#0891b2,#38bdf8);color:#02111b;font:inherit;font-size:.85rem;font-weight:700;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.add-menu__submit:hover:enabled{transform:translateY(-1px);box-shadow:0 10px 20px #38bdf833}.add-menu__submit:disabled{cursor:not-allowed;opacity:.6}.add-menu__error{margin:0;padding:.5rem .65rem;border-radius:.5rem;background:#7f1d1d38;border:1px solid rgba(248,113,113,.28);color:#fecaca;font-size:.82rem}.add-menu__hint{display:flex;align-items:center;gap:.4rem;margin:0;padding:.55rem .7rem;border-radius:.55rem;background:#1e3a8a40;border:1px solid rgba(59,130,246,.35);color:#93c5fd;font-size:.82rem}.add-menu__examples{display:grid;gap:.35rem;padding:.65rem .75rem;border-radius:.55rem;background:#0f172a99;border:1px solid var(--border);color:var(--muted);font-size:.8rem}.add-menu__examples strong{color:var(--text);font-size:.85rem;font-weight:600}.add-menu__examples ul{list-style:disc;margin:0;padding-left:1.1rem}.add-menu__examples li{font-family:JetBrains Mono,SFMono-Regular,ui-monospace,monospace;font-size:.78rem;color:var(--muted)}.add-menu__github-preview{display:grid;gap:.5rem;min-height:3.4rem}.add-menu__github-card{display:grid;justify-items:center;gap:.35rem;padding:1rem .9rem 1.1rem;border-radius:.7rem;background:#0f172abf;border:1px solid var(--border);text-align:center}.add-menu__github-card-icon{display:grid;place-items:center;width:2.2rem;height:2.2rem;color:var(--text)}.add-menu__github-card strong{font-size:.9rem;font-weight:600;color:var(--text);font-family:JetBrains Mono,SFMono-Regular,ui-monospace,monospace}.add-menu__github-card p{margin:0;color:var(--muted);font-size:.8rem}.add-menu__submit--github{background:linear-gradient(135deg,#7c3aed,#a855f7);color:#fff}.add-menu__submit--github:hover:enabled{box-shadow:0 10px 20px #a855f740}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.resource-logs-panel,.resource-logs-section{display:grid;gap:.7rem}.resource-logs-section__header{display:grid;gap:.55rem}.resource-logs-button{padding:.5rem .85rem;border-radius:.55rem;border:1px solid var(--border);background:#0f172ad9;color:var(--text);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.resource-logs-button:hover:enabled{background:#1e293bf2;border-color:#94a3b873}.resource-logs-button:disabled{cursor:not-allowed;opacity:.6}.resource-logs{margin:0;max-height:32rem;overflow:auto;padding:.7rem .85rem;border-radius:.6rem;border:1px solid var(--border);background:#020617eb;color:#e2e8f0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.78rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.logs-page{display:grid;grid-template-rows:auto auto 1fr;gap:.75rem;min-height:100%;padding:1rem;background:linear-gradient(rgba(15,23,42,.7) 1px,transparent 1px),linear-gradient(90deg,rgba(15,23,42,.7) 1px,transparent 1px),var(--bg);background-size:4rem 4rem}.logs-toolbar{display:grid;grid-template-columns:minmax(16rem,1fr) auto auto auto;gap:.55rem;align-items:center;padding:.7rem;border:1px solid var(--border);border-radius:.9rem;background:#020617c2;box-shadow:var(--shadow)}.logs-search input,.logs-select,.logs-toolbar__button{width:100%;min-height:2.25rem;border:1px solid var(--border);border-radius:.65rem;background:#0f172aeb;color:var(--text);font:inherit;font-size:.85rem}.logs-search input{padding:0 .85rem}.logs-select{padding:0 2rem 0 .75rem}.logs-select--range{min-width:8.5rem}.logs-toolbar__button{min-width:5.6rem;padding:0 .9rem;font-weight:700;cursor:pointer;transition:border-color .15s ease,background .15s ease}.logs-toolbar__button:hover:enabled{border-color:#7dd3fc8c;background:#0ea5e929}.logs-toolbar__button:disabled{cursor:not-allowed;opacity:.6}.logs-results{min-height:0;border:1px solid var(--border);border-radius:1rem;background:#020617b3;overflow:hidden}.logs-list{display:grid;align-content:start;max-height:calc(100vh - 12rem);overflow:auto}.logs-row{display:grid;grid-template-columns:5.4rem minmax(8rem,12rem) 4.5rem minmax(0,1fr);gap:.75rem;align-items:baseline;padding:.42rem .75rem;border-bottom:1px solid rgba(30,41,59,.72);color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.78rem}.logs-row time,.logs-row__resource,.logs-row__stream{color:var(--muted)}.logs-row__resource,.logs-row__stream{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logs-row code{color:#e2e8f0;white-space:pre-wrap;word-break:break-word}.logs-empty{display:grid;place-items:center;align-content:center;gap:.45rem;min-height:calc(100vh - 12rem);padding:2rem;text-align:center;color:var(--muted)}.logs-empty h2{margin:0;color:var(--text);font-size:.95rem}.logs-empty p{margin:0;font-size:.8rem}.logs-empty__icon{display:grid;place-items:center;width:3.4rem;height:3.4rem;border:1px solid var(--border);border-radius:.8rem;background:#0f172ab3}.logs-empty__icon span{width:1.7rem;height:1.2rem;border:1px solid rgba(148,163,184,.45);border-radius:.2rem;box-shadow:0 -.45rem 0 -.2rem #94a3b840,0 .45rem 0 -.2rem #94a3b840}@media(max-width:820px){.logs-toolbar{grid-template-columns:1fr}.logs-row{grid-template-columns:4.6rem 1fr}.logs-row__stream{display:none}.logs-row code{grid-column:1 / -1}}.app-metrics-panel,.app-metrics-section,.app-metrics-grid{display:grid;gap:.65rem}.app-metrics-section__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.metrics-section-title{margin:0 0 .15rem;color:var(--text);font-size:.9rem;font-weight:800}.app-metrics-section__header .detail-note{margin:0}.app-metrics-section>.detail-note,.database-metrics-section>.detail-note{margin:0}.app-metrics-grid{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}.app-metrics-card{display:grid;gap:.75rem;padding:.75rem;border:1px solid var(--border);border-radius:.8rem;background:#0f172a8c}.app-metrics-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.app-metrics-card__header div{display:grid;gap:.15rem;min-width:0}.app-metrics-card__header span,.app-metrics-card__header code,.app-metrics-list dt,.app-metrics-list dd span{color:var(--muted);font-size:.78rem}.app-metrics-card__header span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-metrics-card__header code{flex:0 0 auto}.app-metrics-list{display:grid;gap:.55rem;margin:0}.app-metrics-list div{display:grid;gap:.15rem}.app-metrics-list dt,.app-metrics-list dd{margin:0}.app-metrics-list dd{display:grid;gap:.1rem;color:var(--text);font-weight:700}.database-metrics-section{display:grid;gap:.6rem;padding-top:.6rem;border-top:1px solid var(--border)}.database-metrics-status{padding:.2rem .55rem;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-size:.72rem;font-weight:700;text-transform:uppercase}.database-metrics-status--fresh{border-color:#22c55e73;color:#bbf7d0}.database-metrics-status--stale{border-color:#f59e0b73;color:#fde68a}.database-metrics-status--unavailable{border-color:#f8717173;color:#fecaca}.deployments-section,.deployments-layout,.deployments-history,.deployments-list,.deployment-log-card{display:grid;gap:.75rem}.deployments-section__header,.deployment-log-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.deployments-list{gap:.5rem}.deployment-subtabs{display:flex;align-items:center;gap:.35rem;margin:-.1rem -.25rem 0;padding-bottom:.2rem;overflow-x:auto}.deployment-subtabs__detail{display:inline-flex;align-items:stretch;min-width:0}.deployment-subtabs__item,.deployment-subtabs__close{border:1px solid var(--border);background:#0f172a9e;color:var(--muted);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer;transition:color .16s ease,border-color .16s ease,background .16s ease}.deployment-subtabs__item{max-width:14rem;padding:.4rem .7rem;border-radius:999px;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize;white-space:nowrap}.deployment-subtabs__detail .deployment-subtabs__item{border-top-right-radius:0;border-bottom-right-radius:0}.deployment-subtabs__close{display:grid;place-items:center;width:2rem;border-left:0;border-radius:0 999px 999px 0}.deployment-subtabs__item:hover,.deployment-subtabs__close:hover,.deployment-subtabs__item--active{border-color:#38bdf873;background:#0ea5e91f;color:var(--text)}.deployments-history__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;color:var(--text);font-size:.82rem}.deployments-history__header span{color:var(--muted);font-size:.75rem}.deployment-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem .65rem;width:100%;padding:.7rem;border:1px solid var(--border);border-radius:.75rem;background:#0f172aa6;color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}.deployment-row .status-pill{grid-column:2;grid-row:1;align-self:start;padding:.18rem .48rem;border-radius:999px;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.deployment-row:hover,.deployment-row--selected{border-color:#38bdf873;background:#0ea5e91a}.deployment-row:hover{transform:translateY(-1px)}.deployment-row--current{padding:.9rem;border-color:#34d39947;background:linear-gradient(135deg,#22c55e21,#0f172ab8),#0f172ab3}.deployment-row__main{display:grid;gap:.18rem;min-width:0}.deployment-row__main strong{text-transform:capitalize}.deployment-row__eyebrow{color:#86efac;font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.deployment-row__main span,.deployment-row__meta,.deployment-log-card p,.deployment-log-card__meta{color:var(--muted);font-size:.78rem}.deployment-row__meta{grid-column:1 / -1}.deployment-log-card{padding:.75rem;border:1px solid var(--border);border-radius:.8rem;background:#0f172a8c}.deployment-log-card .status-pill{align-self:flex-start;text-transform:uppercase}.deployment-log-card__header p{margin:.2rem 0 0;word-break:break-word}.deployment-log-card__meta{display:grid;gap:.2rem;text-align:right;white-space:nowrap}.deployment-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin:0}.deployment-detail-grid div{padding:.65rem;border:1px solid var(--border);border-radius:.7rem;background:#0f172a80}.deployment-detail-grid dt{margin:0 0 .2rem;color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.deployment-detail-grid dd{margin:0;color:var(--text);font-size:.82rem;font-weight:700;overflow-wrap:anywhere}.topology-metrics span,.status-pill,.detail-card,.attached-list__item{padding:.35rem .7rem;border-radius:999px;border:1px solid var(--border);background:#0f172ad9;font-size:.78rem;color:var(--muted)}.topology-controls{background:#0f172ad1!important;border:1px solid var(--border)!important;border-radius:.55rem!important;box-shadow:none!important;overflow:hidden}.topology-controls .react-flow__controls-button{background:transparent;border:0;border-bottom:1px solid var(--border);color:#dbeafe;fill:currentColor;width:28px;height:28px;transition:background .16s ease,color .16s ease}.topology-controls .react-flow__controls-button:last-child{border-bottom:0}.topology-controls .react-flow__controls-button:hover{background:#0ea5e91f;color:#ecfeff}.topology-controls .react-flow__controls-button:disabled{opacity:.5}.topology-controls .react-flow__controls-button svg{fill:currentColor;max-width:12px;max-height:12px}.details-panel{display:grid;align-content:start;gap:1rem;padding:1rem;border-radius:0;border-right:0;border-top:0;border-bottom:0;border-left:1px solid var(--border);background:#090e19b8;box-shadow:none;overflow:auto;animation:panel-in .28s cubic-bezier(.22,1,.36,1) both}.page-eyebrow,.detail-note{color:var(--muted);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase}.detail-note{letter-spacing:0;text-transform:none;font-size:.9rem;line-height:1.55}.status-pill{padding:.3rem .65rem;font-size:.78rem}.status-pill--ready{border-color:#34d39952;color:#bbf7d0}.status-pill--creating,.status-pill--pending,.status-pill--running{border-color:#f59e0b52;color:#fde68a}.status-pill--succeeded{border-color:#34d39952;color:#bbf7d0}.status-pill--failed,.status-pill--unhealthy{border-color:#f8717173;background:#7f1d1d47;color:#fca5a5}.status-pill--deleting{border-color:#f8717152;color:#fecaca}.details-stack,.attached-list{display:grid;gap:.6rem}.detail-card{display:grid;gap:.25rem;padding:.6rem .8rem;border-radius:.65rem;background:#0f172abd}.detail-card span,.detail-card label{color:var(--muted);font-size:.78rem}.detail-card strong{font-size:.95rem}.domain-status-row{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.detail-card .domain-status-badge{display:inline-flex;align-items:center;width:fit-content;padding:.12rem .48rem;border:1px solid rgba(148,163,184,.24);border-radius:999px;background:#0f172ab8;color:#cbd5e1;font-size:.72rem;font-weight:700}.detail-card .domain-status-badge--ready,.detail-card .domain-status-badge--active{border-color:#34d3996b;background:#14532d47;color:#bbf7d0}.detail-card .domain-status-badge--pending{border-color:#f59e0b70;background:#78350f42;color:#fde68a}.detail-card .domain-status-badge--failed{border-color:#f8717180;background:#7f1d1d47;color:#fecaca}.detail-card .domain-status-badge--inactive,.detail-card .domain-status-badge--unknown{border-color:#94a3b842;background:#33415547;color:#cbd5e1}.detail-card input,.detail-card select{width:100%;min-height:2.4rem;padding:0 .7rem;border:1px solid var(--border);border-radius:.6rem;background:#0f172ae0;color:var(--text);font:inherit}.healthcheck-card{gap:.45rem}.healthcheck-form{display:grid;gap:.55rem}.detail-card__button{min-height:2.35rem;border:1px solid var(--border);border-radius:.6rem;background:#0f172ae6;color:var(--text);font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}.detail-card__button:disabled{cursor:wait;opacity:.65}.resource-group-actions{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.domain-action-button{min-height:2rem;padding:0 .7rem;border-color:#94a3b83d;background:#0f172ab8;color:#cbd5e1;font-size:.78rem;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}.domain-action-button:hover:enabled{transform:translateY(-1px);border-color:#38bdf873;background:#0ea5e924;color:#e0f2fe}.domain-action-button--primary{border-color:#38bdf861;background:#0ea5e929;color:#bae6fd}.domain-action-button--danger{border-color:#f8717159;background:#7f1d1d24;color:#fca5a5}.domain-action-button--danger:hover:enabled{border-color:#f871718c;background:#7f1d1d4d;color:#fecaca}.detail-note--error{color:#fecaca}.attach-form{display:grid;gap:.55rem}.attach-form label{color:var(--muted);font-size:.85rem}.attach-form input,.attach-form select,.attach-form button{width:100%;min-height:2.6rem;border-radius:.65rem;font:inherit}.attach-form input,.attach-form select{padding:0 .75rem;border:1px solid var(--border);background:#0f172ae0;color:var(--text)}.attach-form button{border:0;background:linear-gradient(135deg,#0891b2,#38bdf8);color:#02111b;font-weight:700;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease}.attach-form button:hover:enabled{transform:translateY(-1px);box-shadow:0 12px 24px #38bdf838}.attach-form button:disabled{cursor:not-allowed;opacity:.6}.react-flow__edge.edge-pending-attach.animated path{animation-direction:reverse}.flash{margin:0;padding:.7rem .85rem;border-radius:.75rem;font-size:.88rem;animation:flash-enter .18s ease-out}@keyframes flash-enter{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.flash,.details-panel{animation:none}}.flash--success{background:#16653438;border:1px solid rgba(52,211,153,.26);color:#bbf7d0}.flash--error{background:#7f1d1d33;border:1px solid rgba(248,113,113,.28);color:#fecaca}.resource-group-node{width:100%;height:100%;border-radius:1.1rem;border:1px solid rgba(148,163,184,.16);background:#0b111d61;box-shadow:0 14px 36px #0206172e;cursor:grab;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease}.react-flow__node-group{background:transparent!important;border:0!important;box-shadow:none!important}.resource-group-node.is-selected{border-color:#e2e8f06b;background:#e2e8f029;box-shadow:inset 0 0 0 1px #0f172a8a,0 18px 50px #02061738}.resource-group-node__header{display:flex;align-items:center;gap:.7rem;min-height:3.5rem;padding:.85rem 1rem .65rem;border-bottom:0}.resource-group-node__header>div{min-width:0}.resource-group-node[data-collapsed=true] .resource-group-node__header{border-bottom:0}.resource-group-node__icon{display:flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;line-height:1;border-radius:.65rem;background:#94a3b826;color:#e2e8f0;font-size:.78rem;font-weight:700}.resource-group-node__header strong,.resource-group-node__header span:not(.resource-group-node__icon){display:block}.resource-group-node__header strong{color:var(--text);font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resource-group-node__header span{color:var(--muted);font-size:.72rem}.resource-group-node--blue{--group-accent: rgba(59, 130, 246, .34)}.resource-group-node--emerald{--group-accent: rgba(52, 211, 153, .34)}.resource-group-node--violet{--group-accent: rgba(167, 139, 250, .34)}.resource-group-node--amber{--group-accent: rgba(245, 158, 11, .34)}.resource-group-node--rose{--group-accent: rgba(251, 113, 133, .34)}.resource-group-node--slate{--group-accent: rgba(148, 163, 184, .34)}.resource-group-node--blue .resource-group-node__icon,.resource-group-node--emerald .resource-group-node__icon,.resource-group-node--violet .resource-group-node__icon,.resource-group-node--amber .resource-group-node__icon,.resource-group-node--rose .resource-group-node__icon,.resource-group-node--slate .resource-group-node__icon{border:1px solid var(--group-accent)}.resource-group-node__menu{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.18rem;width:1.8rem;height:1.8rem;margin-left:auto;border:0;border-radius:.55rem;background:transparent;color:var(--muted);cursor:pointer}.resource-group-node__menu:hover{background:#94a3b81f;color:var(--text)}.resource-group-node__menu span{width:.22rem;height:.22rem;border-radius:999px;background:currentColor}.canvas-context-menu{position:fixed;z-index:120;display:grid;gap:.15rem;min-width:14rem;padding:.45rem;border:1px solid rgba(148,163,184,.18);border-radius:.8rem;background:#0c121ffa;box-shadow:0 18px 50px #0206177a}.canvas-context-menu button,.canvas-context-menu summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:2.2rem;padding:0 .75rem;border:0;border-radius:.55rem;background:transparent;color:var(--text);font:inherit;font-size:.82rem;font-weight:600;text-align:left;cursor:pointer;list-style:none}.canvas-context-menu summary::-webkit-details-marker{display:none}.canvas-context-menu button:hover:not(:disabled),.canvas-context-menu summary:hover{background:#94a3b81f}.canvas-context-menu button:disabled{cursor:not-allowed;opacity:.45}.canvas-context-menu__label{display:inline-flex;align-items:center;gap:.7rem;min-width:0}.canvas-context-menu__group-icon,.canvas-context-menu__plus{display:inline-grid;place-items:center;color:#c084fc}.canvas-context-menu__flyout{position:relative;display:grid}.canvas-context-menu__flyout-trigger{width:100%}.canvas-context-menu__flyout:hover>.canvas-context-menu__flyout-trigger,.canvas-context-menu__flyout:focus-within>.canvas-context-menu__flyout-trigger{background:#a855f724;color:#d8b4fe}.canvas-context-menu__flyout-panel{position:absolute;top:-.45rem;left:calc(100% + .45rem);display:grid;gap:.15rem;min-width:13.5rem;padding:.45rem;border:1px solid rgba(148,163,184,.18);border-radius:.8rem;background:#0d0c16fa;box-shadow:0 18px 50px #0206177a;opacity:0;pointer-events:none;visibility:hidden}.canvas-context-menu__flyout:hover>.canvas-context-menu__flyout-panel,.canvas-context-menu__flyout:focus-within>.canvas-context-menu__flyout-panel{opacity:1;pointer-events:auto;visibility:visible}.canvas-context-menu__submenu{display:grid}.canvas-context-menu__submenu-panel{display:grid;gap:.1rem;padding:.15rem 0 .2rem 1rem}.canvas-context-menu__submenu-panel button{min-height:1.9rem;color:var(--muted);text-transform:capitalize}.canvas-context-menu__danger{color:#fecaca!important}.resource-node{display:grid;gap:.5rem;width:13.5rem;padding:.9rem 1rem;border-radius:.85rem;border:1px solid rgba(148,163,184,.16);background:#0b111df5;box-shadow:0 14px 36px #02061761;cursor:grab;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}.react-flow__node.dragging .resource-node,.react-flow__node.dragging .resource-group-node{cursor:grabbing}.resource-node:hover{border-color:#94a3b84d;background:#0d1524fa;box-shadow:0 20px 46px #02061775}.resource-node>strong{margin-top:.1rem}.resource-node>small{margin-top:.15rem}.resource-node.is-selected{border-color:#38bdf88c;box-shadow:0 18px 56px #0ea5e933}.resource-node strong{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resource-node p,.resource-node small{margin:0;color:var(--muted);font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resource-node__heading{display:inline-flex;align-items:center;gap:.4rem;width:fit-content}.resource-node__badge{padding:.2rem .45rem;border-radius:999px;background:#38bdf824;color:#bae6fd;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase}.resource-node__status{display:inline-flex;align-items:center;gap:.45rem;color:#dffdf3;font-size:.75rem}.status-dot{width:.45rem;height:.45rem;border-radius:999px;background:var(--muted);box-shadow:0 0 0 4px #94a3b814}.status-dot--ready{background:var(--success);box-shadow:0 0 0 4px #34d3991f}.status-dot--creating{background:var(--warning);box-shadow:0 0 0 4px #f59e0b1f}.status-dot--unhealthy{background:#f87171;box-shadow:0 0 0 4px #f871712e}.status-dot--deleting{background:var(--danger);box-shadow:0 0 0 4px #f871711f}.resource-node__handle{opacity:0;pointer-events:none}@keyframes rise-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes panel-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@media(max-width:960px){.topology-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto}.details-panel{width:auto;min-width:0;border-left:0;border-top:1px solid var(--border);max-height:40vh}}@media(max-width:720px){:root{--rail-width: 48px;--topbar-height: 48px}.app-content{padding:1rem}.projects-page__summary{flex-direction:column;align-items:flex-start}.projects-grid{grid-template-columns:minmax(0,1fr)}.project-card{width:100%}.project-card__footer{row-gap:.35rem}.topbar-eyebrow{display:none}}
