@font-face{font-family:IBM;src:url(/ibm.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--background: 174 30% 99%;--foreground: 178 35% 12%;--card: 0 0% 100%;--card-foreground: 178 35% 12%;--primary: 170 75% 31%;--primary-foreground: 0 0% 100%;--secondary: 174 38% 95%;--secondary-foreground: 178 40% 18%;--muted: 174 30% 95%;--muted-foreground: 180 10% 42%;--accent: 172 55% 90%;--accent-foreground: 174 75% 22%;--destructive: 357 78% 56%;--destructive-foreground: 0 0% 100%;--border: 174 22% 88%;--radius: 1rem;--teal: #148c78;--teal-light: #d1f2ea;--mint: #2dd4bf;--vanilla: #fbbf24;--blueberry: #4f86e0;--shadow-soft: 0 4px 16px -2px hsl(170 60% 35% / .14), 0 2px 6px -2px hsl(170 60% 30% / .1);--shadow-lift: 0 12px 32px -6px hsl(170 60% 32% / .2), 0 4px 12px -4px hsl(170 60% 28% / .12)}.dark{--background: 180 30% 7%;--foreground: 174 25% 92%;--card: 180 26% 11%;--card-foreground: 174 25% 92%;--primary: 168 62% 48%;--primary-foreground: 180 30% 7%;--secondary: 180 18% 17%;--secondary-foreground: 174 25% 92%;--muted: 180 18% 17%;--muted-foreground: 178 12% 66%;--accent: 174 42% 20%;--accent-foreground: 168 62% 82%;--destructive: 357 72% 56%;--border: 180 14% 23%;--teal: #2dd4bf;--teal-light: #14403a}*{box-sizing:border-box}body{margin:0;background:hsl(var(--background));color:hsl(var(--foreground));font-family:IBM,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.5;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}.dark body{background:radial-gradient(circle at top left,hsl(174 35% 14%),transparent 34rem),hsl(var(--background))}.app{display:flex;min-height:100vh}.sidebar{width:15rem;flex-shrink:0;background:hsl(var(--card));border-inline-end:1px solid hsl(var(--border));padding:18px 12px;display:flex;flex-direction:column;gap:3px;position:sticky;top:0;height:100vh;overflow-y:auto}.navlink:focus-visible,.chip:focus-visible,button:focus-visible{outline:2px solid hsl(var(--primary));outline-offset:2px}.navlink.active:focus-visible{outline-color:hsl(var(--foreground))}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px}.brand img{width:38px;height:38px;border-radius:12px;box-shadow:var(--shadow-soft)}.brand-text{display:flex;flex-direction:column;line-height:1.15}.brand-name{font-weight:700;font-size:15px}.brand-sub{font-size:11px;color:hsl(var(--muted-foreground))}.navlink{position:relative;display:block;padding:10px 12px;border-radius:calc(var(--radius) - 4px);text-decoration:none;color:hsl(var(--muted-foreground));font-weight:500;border:none;background:none;width:100%;text-align:start;font-family:inherit;font-size:inherit;cursor:pointer;transition:background .15s,color .15s}.navlink:hover{background:hsl(var(--secondary));color:hsl(var(--foreground))}.navlink.active{background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-weight:600;box-shadow:var(--shadow-soft)}.main{flex:1;padding:26px 30px 60px;min-width:0}.page-title{margin:0 0 4px;font-size:24px;font-weight:700;letter-spacing:-.01em}.page-sub{margin:0 0 20px;color:hsl(var(--muted-foreground));font-size:14px}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:20px}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;color:hsl(var(--muted-foreground));font-weight:500}input,select,button{font:inherit;color:hsl(var(--foreground));border:1px solid hsl(var(--border));border-radius:calc(var(--radius) - 6px);padding:8px 11px;background:hsl(var(--card))}input:focus,select:focus{outline:2px solid hsl(var(--primary));outline-offset:-1px}button{cursor:pointer;transition:filter .15s,background .15s}button.primary{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-color:hsl(var(--primary));font-weight:600;box-shadow:var(--shadow-soft)}button.primary:hover{filter:brightness(1.08)}button:disabled{opacity:.5;cursor:default}.chips{display:flex;gap:7px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;padding:7px 13px;border-radius:999px;border:1px solid hsl(var(--border));background:hsl(var(--card));font-size:13px;font-weight:500;color:hsl(var(--muted-foreground))}.chip:hover{border-color:hsl(var(--primary))}.chip.on{background:hsl(var(--primary));border-color:hsl(var(--primary));color:hsl(var(--primary-foreground));box-shadow:var(--shadow-soft)}.card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:var(--shadow-soft);padding:18px;transition:box-shadow .2s}.card.hoverable:hover{box-shadow:var(--shadow-lift)}.grid{display:grid;gap:14px}.grid.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.grid.two{grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}.stat-label{font-size:11.5px;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.05em;font-weight:600}.stat-value{font-size:28px;font-weight:700;margin-top:6px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.stat-note{font-size:12px;color:hsl(var(--muted-foreground));margin-top:3px}.section-title{font-size:15px;font-weight:700;margin:0 0 14px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:start;font-size:11.5px;color:hsl(var(--muted-foreground));font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:9px 10px;border-bottom:1px solid hsl(var(--border));white-space:nowrap}td{padding:10px;border-bottom:1px solid hsl(var(--border));vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .12s}tbody tr:hover{background:hsl(var(--secondary) / .6)}td.num,th.num{text-align:end;font-variant-numeric:tabular-nums}.bar{height:8px;border-radius:5px;background:hsl(var(--primary));min-width:2px}.bar-track{background:hsl(var(--secondary));border-radius:5px;overflow:hidden}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid transparent}.badge.fatal{background:hsl(var(--destructive) / .12);color:hsl(var(--destructive));border-color:hsl(var(--destructive) / .3)}.badge.error{background:#fff7e6;color:#b45309;border-color:#fbbf2455}.dark .badge.error{background:#b4530922;color:#fbbf24}.badge.ok{background:hsl(var(--accent));color:hsl(var(--accent-foreground));border-color:hsl(var(--primary) / .25)}.badge.stale{background:#fff7e6;color:#b45309;border-color:#fbbf2455}.dark .badge.stale{background:#b4530922;color:#fbbf24}.muted{color:hsl(var(--muted-foreground))}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}.empty{text-align:center;padding:46px 0;color:hsl(var(--muted-foreground))}.error-box{background:hsl(var(--destructive) / .1);border:1px solid hsl(var(--destructive) / .3);color:hsl(var(--destructive));padding:11px 13px;border-radius:calc(var(--radius) - 6px);margin-bottom:14px;font-size:14px}.pager{display:flex;gap:10px;align-items:center;justify-content:center;margin-top:18px}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-art{background:radial-gradient(circle at 30% 25%,hsl(168 62% 45% / .55),transparent 55%),linear-gradient(150deg,#148a77,#0a5c54);color:#fff;display:flex;flex-direction:column;justify-content:center;padding:48px;gap:18px}.login-art img{width:76px;height:76px;border-radius:22px;box-shadow:var(--shadow-lift)}.login-art h2{font-size:30px;margin:0;letter-spacing:-.02em}.login-art p{margin:0;opacity:.9;max-width:34ch;line-height:1.6}.login-form{display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:340px}.login-card h1{font-size:21px;margin:0 0 4px}.login-card .field{margin-bottom:13px}.login-card input{width:100%}.login-card button{width:100%;margin-top:8px;padding:11px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d1c1b8c;display:grid;place-items:center;padding:20px;z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.drawer{background:hsl(var(--card));border-radius:var(--radius);box-shadow:var(--shadow-lift);max-width:760px;width:100%;max-height:88vh;overflow-y:auto;padding:22px}pre{background:hsl(var(--secondary));border:1px solid hsl(var(--border));border-radius:calc(var(--radius) - 6px);padding:11px;overflow-x:auto;font-size:12.5px;margin:0;white-space:pre-wrap;word-break:break-word}.chart-tip{position:absolute;pointer-events:none;z-index:20;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:10px;box-shadow:var(--shadow-lift);padding:7px 10px;font-size:12.5px;white-space:nowrap;transform:translate(-50%,-115%);opacity:0}.axis text{fill:hsl(var(--muted-foreground));font-size:11px}.axis line,.axis path{stroke:hsl(var(--border))}.grid-line{stroke:hsl(var(--border));stroke-dasharray:3 4;opacity:.7}@media (max-width: 860px){.login-wrap{grid-template-columns:1fr}.login-art{display:none}}@media (max-width: 720px){.app{flex-direction:column}.sidebar{width:100%;flex-direction:row;overflow-x:auto;padding:10px;gap:6px}.sidebar .brand,.sidebar .spacer{display:none}.navlink{width:auto;white-space:nowrap}.main{padding:16px}}.daterange-trigger{display:inline-flex;align-items:center;gap:8px;min-width:15rem;justify-content:space-between;font-weight:500}.daterange-trigger:hover{border-color:hsl(var(--primary))}.daterange-trigger.open{border-color:hsl(var(--primary));box-shadow:0 0 0 3px hsl(var(--primary) / .15)}.daterange-icon{color:hsl(var(--primary));font-size:13px}.daterange-caret{color:hsl(var(--muted-foreground));font-size:11px}.daterange-pop{position:absolute;top:calc(100% + 8px);inset-inline-start:0;z-index:60;display:flex;gap:0;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:var(--shadow-lift);overflow:hidden;animation:daterange-in .16s ease-out}@keyframes daterange-in{0%{opacity:0;transform:translateY(-6px) scale(.985)}to{opacity:1;transform:none}}.daterange-presets{display:flex;flex-direction:column;gap:2px;padding:10px;min-width:9.5rem;background:hsl(var(--secondary) / .5);border-inline-end:1px solid hsl(var(--border))}.daterange-preset{border:none;background:none;text-align:start;padding:7px 10px;border-radius:calc(var(--radius) - 8px);font-size:13px;color:hsl(var(--foreground));white-space:nowrap}.daterange-preset:hover{background:hsl(var(--card))}.daterange-preset.on{background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-weight:600}.daterange-cal{padding:12px}.daterange-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:10px}.daterange-head strong{font-size:14px}.daterange-head button{border:1px solid hsl(var(--border));background:hsl(var(--card));width:28px;height:28px;padding:0;line-height:1;border-radius:8px;font-size:15px;color:hsl(var(--foreground))}.daterange-head button:hover{background:hsl(var(--secondary))}.daterange-grid{display:grid;grid-template-columns:repeat(7,34px);gap:2px}.daterange-wd{display:grid;place-items:center;height:26px;font-size:11px;font-weight:600;color:hsl(var(--muted-foreground))}.daterange-day{height:32px;padding:0;border:none;background:none;border-radius:8px;font-size:13px;color:hsl(var(--foreground));font-variant-numeric:tabular-nums}.daterange-day:hover{background:hsl(var(--secondary))}.daterange-day.in{background:hsl(var(--accent));color:hsl(var(--accent-foreground));border-radius:0}.daterange-day.end{background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-weight:700;border-radius:8px}.daterange-day.today:not(.end){box-shadow:inset 0 0 0 1.5px hsl(var(--primary) / .55)}.daterange-hint{margin:10px 0 0;font-size:11.5px;color:hsl(var(--muted-foreground));text-align:center}@media (max-width: 640px){.daterange-pop{flex-direction:column;inset-inline-start:auto;inset-inline-end:0}.daterange-presets{flex-direction:row;flex-wrap:wrap;min-width:0;border-inline-end:none;border-bottom:1px solid hsl(var(--border))}}.branch-chips{max-height:5.4rem;overflow-y:auto;max-width:42rem}
