@import "https://fonts.googleapis.com/css2?family=Fraunces:ital,wght@0,500;0,600;1,500&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--paper:#000;--surface:#0c0c0c;--surface-sunken:#161616;--ink:#fff;--ink-soft:#c7c7c7;--ink-faint:#8c8c8c;--accent:#33c7ff;--accent-ink:#00222c;--accent-soft:#062733;--accent-soft-ink:#8fe4ff;--live:#2be584;--live-soft:#0b3520;--building:#ffb320;--building-soft:#3a2600;--failed:#ff5876;--failed-soft:#3a0f1a;--neutral-state:#9a9a9a;--neutral-state-soft:#1c1c1c;--shadow:0 1px 0 #ffffff0d inset, 0 18px 40px -18px #000000d9, 0 0 0 1px #ffffff0a;--shadow-hover:0 1px 0 #ffffff0f inset, 0 30px 60px -20px #33c7ff52, 0 0 0 1px #ffffff12}*{box-sizing:border-box}html,body{background:var(--paper)}body{color:var(--ink);margin:0;font-family:IBM Plex Sans,system-ui,sans-serif;font-size:17px;font-weight:500;line-height:1.5}#root{min-height:100vh}.mono{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace}a{color:inherit}button,input{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.app{grid-template-rows:auto 1fr;grid-template-columns:250px 1fr;gap:16px;min-height:calc(100vh - 32px);padding:16px;display:grid}.topbar{background:var(--surface);box-shadow:var(--shadow);border-radius:20px;grid-column:1/-1;align-items:center;gap:22px;padding:16px 28px;display:flex}.wordmark{white-space:nowrap;cursor:pointer;background:0 0;border:none;padding:0;font-family:Fraunces,Georgia,serif;font-size:22px;font-weight:700}.search{flex:1;max-width:460px;position:relative}.search input{background:var(--surface-sunken);width:100%;color:var(--ink);border:none;border-radius:12px;padding:10px 14px 10px 40px;font-size:16px;font-weight:500}.search input::placeholder{color:var(--ink-faint)}.search svg{width:17px;height:17px;stroke:var(--ink-faint);position:absolute;top:50%;left:13px;transform:translateY(-50%)}.topbar-spacer{flex:1}.who{color:var(--ink-soft);align-items:center;gap:11px;font-size:15px;display:flex}.logout{cursor:pointer;color:var(--ink-faint);background:0 0;border:none;font-size:13.5px}.logout:hover{color:var(--ink)}.avatar{background:var(--accent-soft);width:32px;height:32px;color:var(--accent-soft-ink);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:12.5px;font-weight:700;display:flex}.rail{background:var(--surface);box-shadow:var(--shadow);border-radius:20px;flex-direction:column;align-self:start;gap:3px;padding:18px 12px;display:flex}.rail-item{text-align:left;cursor:pointer;color:var(--ink-soft);background:0 0;border:none;border-radius:11px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-size:16px;display:flex}.rail-item:hover{background:var(--surface-sunken);color:var(--ink)}.rail-item.active{background:var(--accent-soft);color:var(--accent-soft-ink);font-weight:600}.rail-count{color:var(--ink-faint);font-family:IBM Plex Mono,monospace;font-size:13px}.rail-item.active .rail-count{color:var(--accent-soft-ink);opacity:.7}.rail-count.badge{background:var(--failed);color:#000;opacity:1;border-radius:9px;padding:1px 7px}.rail-divider{background:#ffffff1a;height:1px;margin:10px 6px}main{min-width:0;padding:4px 4px 40px}.view-heading{align-items:baseline;gap:10px;margin-bottom:5px;display:flex}.view-heading h1{text-wrap:balance;margin:0;font-family:Fraunces,Georgia,serif;font-size:29px;font-weight:700}.view-sub{color:var(--ink-soft);margin:0 0 24px;font-size:15px}.grid{grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:18px;display:grid}.tile{background:var(--surface);text-align:left;cursor:pointer;box-shadow:var(--shadow);border:none;border-radius:18px;flex-direction:column;gap:12px;width:100%;padding:18px 18px 15px;transition:box-shadow .2s,transform .2s;display:flex}.tile:hover,.tile.active{box-shadow:var(--shadow-hover);transform:translateY(-6px)}.tile-top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.tile-name{font-size:17px;font-weight:700}.pill{white-space:nowrap;border-radius:20px;flex:none;align-items:center;gap:5px;padding:3px 10px;font-size:12.5px;font-weight:600;display:inline-flex}.pill-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.pill.live{background:var(--live-soft);color:var(--live)}.pill.building .pill-dot{animation:1.4s ease-in-out infinite blink}.pill.building{background:var(--building-soft);color:var(--building)}.pill.failed{background:var(--failed-soft);color:var(--failed)}.pill.neutral{background:var(--neutral-state-soft);color:var(--neutral-state)}.pill.accent{background:var(--accent-soft);color:var(--accent-soft-ink)}@keyframes blink{0%,to{opacity:1}50%{opacity:.25}}.tile-url{color:var(--ink-soft);font-size:13.5px}.tile-meta{color:var(--ink-faint);justify-content:space-between;align-items:center;gap:8px;font-size:13.5px;display:flex}.pulse{align-items:flex-end;gap:2px;height:16px;display:flex}.pulse i{background:var(--neutral-state);opacity:.55;border-radius:2px;flex:1;font-style:normal}.pulse i.live{background:var(--live);opacity:.9}.pulse i.building{background:var(--building);opacity:.9}.pulse i.failed{background:var(--failed);opacity:.9}.pulse i.current{opacity:1;animation:2.2s ease-in-out infinite breathe}@keyframes breathe{0%,to{opacity:1}50%{opacity:.55}}.empty{text-align:center;color:var(--ink-soft);padding:70px 20px}.empty h2{color:var(--ink);margin:0 0 6px;font-family:Fraunces,Georgia,serif;font-size:23px;font-style:italic;font-weight:500}.req-row{background:var(--surface);box-shadow:var(--shadow);border-radius:16px;align-items:center;gap:14px;margin-bottom:12px;padding:15px 18px;display:flex}.req-row.compact{box-shadow:none;margin-bottom:0;padding:9px 0}.req-row .avatar{width:36px;height:36px;font-size:13.5px}.req-row.compact .avatar{width:28px;height:28px;font-size:11px}.req-body{flex:1;min-width:0}.req-body strong{font-weight:700}.req-sub{color:var(--ink-soft);font-size:14.5px}.req-actions{gap:8px;display:flex}.btn{background:var(--surface-sunken);cursor:pointer;border:none;border-radius:10px;padding:8px 15px;font-size:14.5px;font-weight:600}.btn:hover{filter:brightness(1.3)}.btn.primary{background:var(--accent);color:var(--accent-ink);font-weight:700;box-shadow:0 8px 20px -8px #33c7ff80}.btn.small{padding:6px 12px;font-size:13.5px}.scrim{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;pointer-events:none;z-index:10;background:#0000008c;transition:opacity .2s;position:fixed;inset:0}.scrim.open{opacity:1;pointer-events:auto}.panel{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);width:min(440px,100vw - 32px);box-shadow:var(--shadow-hover);z-index:11;background:#0c0c0ce6;border-radius:22px;flex-direction:column;transition:transform .25s cubic-bezier(.2,.9,.3,1);display:flex;position:fixed;top:16px;bottom:16px;right:16px;overflow:hidden;transform:translate(calc(100% + 32px))}.panel.open{transform:translate(0)}.panel-head{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:flex-start;gap:10px;padding:22px 24px 16px;display:flex}.panel-title{margin:0 0 4px;font-family:Fraunces,Georgia,serif;font-size:23px;font-weight:700}.panel-url{color:var(--ink-soft);align-items:center;gap:6px;font-size:14.5px;display:flex}.panel-url a{color:var(--accent);border-bottom:1px solid #ffffff26;text-decoration:none}.panel-url a:hover{border-color:var(--accent)}.panel-close{cursor:pointer;color:var(--ink-faint);background:0 0;border:none;padding:4px;font-size:21px;line-height:1}.panel-close:hover{color:var(--ink)}.panel-body{flex-direction:column;gap:26px;padding:20px 24px 32px;display:flex;overflow-y:auto}.panel-section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin:0 0 11px;font-size:13px;font-weight:700}.visibility-opt{cursor:pointer;border-radius:11px;align-items:flex-start;gap:10px;padding:10px 11px;display:flex}.visibility-opt:hover{background:var(--surface-sunken)}.visibility-opt input{margin-top:3px}.visibility-opt strong{font-size:15px;font-weight:600;display:block}.visibility-opt span{color:var(--ink-soft);font-size:13.5px;display:block}.add-grant{gap:8px;margin-top:10px;display:flex}.add-grant input{background:var(--surface-sunken);color:var(--ink);border:none;border-radius:9px;flex:1;padding:8px 11px;font-size:14px}.add-grant select{background:var(--surface-sunken);color:var(--ink);border:none;border-radius:9px;padding:8px 10px;font-size:14px}.grant-row{align-items:center;gap:10px;padding:9px 0;display:flex}.grant-row .avatar{width:28px;height:28px;font-size:11px}.grant-name{font-size:15px;font-weight:600}.grant-email{color:var(--ink-faint);font-size:13px}.grant-role{color:var(--ink-soft);background:var(--surface-sunken);border-radius:8px;margin-left:auto;padding:5px 10px;font-size:13px}.grant-remove{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;margin-left:8px;font-size:16px;line-height:1}.grant-remove:hover{color:var(--failed)}.history-row{border-bottom:1px solid #ffffff14;align-items:center;gap:10px;padding:10px 0;display:flex}.history-row:last-child{border-bottom:none}.history-dot{border-radius:50%;flex:none;width:8px;height:8px}.history-dot.live{background:var(--live)}.history-dot.building{background:var(--building)}.history-dot.failed{background:var(--failed)}.history-dot.neutral{background:var(--neutral-state)}.history-main{flex:1;min-width:0}.history-sha{color:var(--ink-soft)}.history-when{color:var(--ink-faint);font-size:13.5px}.login-topbar{align-items:center;padding:24px 32px;display:flex}.login-stage{justify-content:center;align-items:center;min-height:calc(100vh - 76px);padding:24px;display:flex;position:relative;overflow:hidden}.login-stage:before{content:"";filter:blur(10px);pointer-events:none;background:radial-gradient(circle,#33c7ff33,#0000 70%);width:560px;height:560px;position:absolute}.login-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);width:100%;max-width:400px;box-shadow:var(--shadow-hover);background:#0c0c0ceb;border-radius:22px;padding:40px 36px 32px;position:relative}.login-card h1{text-wrap:balance;margin:0 0 5px;font-family:Fraunces,Georgia,serif;font-size:27px;font-weight:700}.login-card .lede{color:var(--ink-soft);margin:0 0 26px;font-size:15.5px}.field{flex-direction:column;gap:7px;margin-bottom:16px;display:flex}.field label{color:var(--ink-soft);font-size:13.5px;font-weight:600}.field input{background:var(--surface-sunken);color:var(--ink);border:none;border-radius:10px;padding:11px 13px;font-size:16px}.field input:focus{outline:2px solid var(--accent);outline-offset:1px;background:var(--surface)}.field-hint{color:var(--ink-soft);font-size:12.5px}.source-tabs{gap:6px;margin-bottom:18px;display:flex}.source-tabs button{background:var(--surface-sunken);color:var(--ink-soft);cursor:pointer;border:none;border-radius:8px;flex:1;padding:9px;font-size:13.5px;font-weight:600}.source-tabs button.active{background:var(--accent-soft);color:var(--accent-soft-ink)}.dropzone{text-align:center;border:1.5px dashed var(--ink-soft);color:var(--ink-soft);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;padding:28px 16px;font-size:14px;display:flex}.dropzone.over{border-color:var(--accent);color:var(--accent-soft-ink);background:var(--accent-soft)}.login-btn{background:var(--accent);width:100%;color:var(--accent-ink);cursor:pointer;border:none;border-radius:11px;margin-top:8px;padding:12px 16px;font-size:16px;font-weight:700;box-shadow:0 10px 26px -10px #33c7ff8c}.login-btn:hover{opacity:.92}.login-btn:disabled{opacity:.6;cursor:default}.login-foot{text-align:center;color:var(--ink-soft);margin-top:24px;font-size:15px}.login-toggle{color:var(--accent);cursor:pointer;font-weight:600;font-size:inherit;background:0 0;border:none;padding:0}.error-box{background:color-mix(in srgb, var(--failed) 14%, var(--surface));border:1px solid var(--failed);color:var(--failed);border-radius:10px;margin-bottom:18px;padding:10px 13px;font-size:14px}.page-foot{text-align:center;color:var(--ink-faint);padding:20px;font-size:13px}@media (prefers-reduced-motion:reduce){*{animation:none!important}}@media (width<=760px){.app{grid-template-columns:1fr}.rail{flex-direction:row;overflow-x:auto}.rail-divider{display:none}}
