:root{color:#000;--ditto-orange:#fd4e19;--ditto-purple:#350063;--ditto-cyan:#e4ffff;--ditto-green:#c1ffc7;--ditto-yellow:#f2ffd6;--line:#dedede;--shadow:0 10px 28px #3500631a;background:radial-gradient(circle at 0 0,#fd4e1924,#0000 30%),radial-gradient(circle at 85% 10%,#35006324,#0000 24%),#f2f2f2;font-family:Poppins,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{margin:0}*{box-sizing:border-box}main{max-width:1440px;margin:0 auto;padding:24px}.login-main{align-items:center;gap:24px;min-height:100vh;padding-top:48px;display:grid}.login-hero{max-width:720px}.login-hero .eyebrow{color:var(--ditto-purple);letter-spacing:.18em;text-transform:uppercase;margin-bottom:12px;font-size:12px;font-weight:800}.login-hero h1{color:#1d1030;max-width:12ch;font-size:clamp(34px,5vw,60px);line-height:.98}.login-hero p{color:#4a4a4a;max-width:56ch;font-size:18px}.topbar{background:var(--ditto-purple);border-bottom:4px solid var(--ditto-orange);z-index:5;border-bottom-right-radius:34px;justify-content:space-between;align-items:center;gap:16px;margin:-24px -24px 0;padding:18px 24px;display:flex;position:sticky;top:0;box-shadow:0 12px 30px #35006338}h1,h2{margin:0}h1{color:#fff;font-size:28px}h2{margin-bottom:14px;font-size:18px}p{color:#525252;margin:6px 0 0}.topbar p{color:var(--ditto-cyan)}button{background:var(--ditto-orange);border:1px solid var(--ditto-orange);color:#000;cursor:pointer;border-radius:999px;padding:9px 12px;font-weight:700}a.button{background:var(--ditto-orange);color:#000;border-radius:999px;margin-top:16px;padding:9px 12px;font-weight:700;text-decoration:none;display:inline-block}button:disabled{cursor:not-allowed;opacity:.6}button.ghost{border-color:var(--line);color:#000;background:#fff;margin-left:8px}.actions,.toggle{align-items:center;gap:12px;display:flex}.toggle{color:#fff}.user-chip{color:#fff;background:#ffffff1f;border:1px solid #e4ffff59;border-radius:999px;gap:2px;padding:8px 10px;font-size:13px;font-weight:700;display:grid}.user-chip small{color:var(--ditto-cyan);font-weight:600}.tabs{gap:8px;margin:24px 0;display:flex;overflow-x:auto}.tabs button{border-color:var(--line);color:#000;white-space:nowrap;background:#fff}.tabs .active{background:var(--ditto-orange);border-color:var(--ditto-orange);color:#000}.grid{gap:16px;display:grid}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.two{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}.stat,.panel,.alert,.notice,.loading{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:8px}.stat{border-left:0;min-height:76px;padding:16px;position:relative;overflow:hidden}.stat:before{background:linear-gradient(90deg, var(--ditto-orange), var(--ditto-purple));content:"";width:100%;height:4px;position:absolute;top:0;left:0}.stat span{color:#525252;font-size:13px;display:block}.stat strong{margin-top:8px;font-size:28px;display:block}.stat.healthy:before{background:var(--ditto-green)}.stat.degraded:before{background:var(--ditto-yellow)}.stat.unhealthy:before{background:var(--ditto-orange)}.panel{margin-bottom:18px;padding:18px;overflow-x:auto}.panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.grid-2{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:18px;display:grid}.stack{gap:18px;display:grid}.card{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:16px;padding:16px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-bottom:14px;display:grid}.form-grid label{gap:6px;display:grid}.form-grid span{color:#617089;text-transform:uppercase;font-size:12px;font-weight:700}.form-grid input,.form-grid textarea,.card input{border:1px solid var(--line);font:inherit;border-radius:12px;width:100%;padding:10px 12px}.form-grid input:focus,.card input:focus,.form-grid textarea:focus{border-color:var(--ditto-purple);outline-offset:1px;outline:2px solid #3500631f}.table-list{gap:10px;display:grid}.table-row{border:1px solid var(--line);color:inherit;text-align:left;background:#fff;border-radius:14px;place-items:flex-start start;gap:4px;width:100%;padding:12px 14px;display:grid}.table-row.active{border-color:var(--ditto-orange);box-shadow:0 0 0 2px #fd4e1914}.table-row span{color:#617089;font-size:13px}.button-row{flex-wrap:wrap;gap:10px;display:flex}.auth-panel{max-width:520px;margin-top:24px}.login-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffdb;border:1px solid #3500631f;box-shadow:0 24px 50px #35006324}.login-panel h1{color:#1d1030;font-size:26px}.google-login-button{min-height:48px;margin-top:18px}table{border-collapse:collapse;width:100%;min-width:960px}th,td{text-align:left;vertical-align:top;border-bottom:1px solid #ececec;padding:10px}th{color:#525252;text-transform:uppercase;font-size:12px}.badge{color:#000;background:#e4ffff;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700;display:inline-block}.badge.healthy,.badge.ok,.badge.ready,.badge.processed,.badge.info,.badge.enabled,.badge.real,.badge.real-api,.badge.writes-enabled,.badge.live-calls-enabled,.badge.completed,.badge.clear,.badge.live{background:var(--ditto-green);color:#064d16}.badge.degraded,.badge.unknown,.badge.mocked,.badge.warn,.badge.development,.badge.mock,.badge.none,.badge.pending,.badge.dryrun,.badge.writesdisabled,.badge.providerblocked{background:var(--ditto-yellow);color:#5a4d00}.badge.unhealthy,.badge.error,.badge.failed,.badge.fatal,.badge.disabled,.badge.writes-disabled,.badge.live-calls-disabled,.badge.not-running,.badge.manual-review-required,.badge.blocked{color:#b23110;background:#fff0eb}.badge-grid{flex-wrap:wrap;gap:10px;display:flex}.state-count{background:#f8fafc;border:1px solid #e6ebf2;border-radius:6px;align-items:center;gap:8px;padding:8px;display:flex}.flag-list{flex-wrap:wrap;gap:6px;display:flex}.empty{color:#617089;padding:12px 0}.search{border:1px solid var(--line);box-sizing:border-box;border-radius:999px;width:min(640px,100%);margin-bottom:16px;padding:10px 12px}.alert{color:#a4111d;border-color:#f1a3a3;margin-top:18px;padding:12px}.notice,.loading{margin-bottom:16px;padding:12px}.module-error{color:#a4111d;background:#fff8f5;border:1px dashed #f1a3a3;border-radius:8px;padding:14px}.mono{font-family:SFMono-Regular,Consolas,monospace;font-size:12px}.stacked{gap:4px;min-width:180px;display:grid}.stacked small{color:#617089;line-height:1.35}dl{grid-template-columns:minmax(160px,1fr) 2fr;gap:10px;display:grid}dt{color:#617089;font-weight:700}dd{margin:0}.embedded-grid{margin-bottom:0}.filter-panel{overflow:visible}.filter-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.filter-grid .search{width:100%;margin-bottom:0}.layout-with-detail{grid-template-columns:minmax(0,1.7fr) minmax(320px,1fr);align-items:start;gap:18px;display:grid}.detail-panel{min-width:0}.sticky-panel{position:sticky;top:110px}.detail-form{gap:10px;margin:18px 0;display:grid}.detail-form textarea{border:1px solid var(--line);resize:vertical;width:100%;min-height:110px;font:inherit;border-radius:16px;padding:12px}.detail-actions{flex-wrap:wrap;gap:10px;display:flex}.timeline{border-top:1px solid #ececec;margin-top:18px;padding-top:18px}.timeline h3{margin:0 0 12px}.timeline-item{border-left:3px solid var(--ditto-purple);margin-left:6px;padding:0 0 16px 16px;position:relative}.timeline-item:before{background:var(--ditto-orange);content:"";border-radius:50%;width:10px;height:10px;position:absolute;top:4px;left:-6px}.timeline-meta{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.timeline-meta span{color:#617089;font-size:12px}.timeline-body p{margin:6px 0}.link-button{color:var(--ditto-purple);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:0;margin:0;padding:0;text-decoration:underline}.selected-row{background:#fd4e1914}@media (width<=1100px){.layout-with-detail,.grid-2{grid-template-columns:1fr}.sticky-panel{position:static}.login-main{padding-top:24px}}@media (width<=760px){main{padding:16px}.topbar{border-bottom-right-radius:22px;flex-direction:column;align-items:flex-start;margin:-16px -16px 0;padding:18px 16px}.actions{flex-wrap:wrap}.tabs{margin:18px 0}table{min-width:720px}dl{grid-template-columns:1fr}}
