:root{color-scheme:dark;--bg:#0b0e13;--panel:#141922;--muted:#8590a3;--text:#f5f7fb;--accent:#b9f227;--plan:#657185;--money:#f4b942;--danger:#ff6b58}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 75% -10%,#20321c 0,transparent 32%),var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,sans-serif;min-height:100vh}header,main{width:min(1180px,calc(100% - 40px));margin:auto}header{padding:40px 0 24px;display:flex;align-items:center;justify-content:space-between}h1,h2,p{margin:0}.eyebrow,.caption,.chart-head>div>span,.stats span{color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.15em;text-transform:uppercase}header h1{font-size:24px;margin-top:7px}.ghost{background:transparent;border:1px solid #293140;padding:10px 16px}.hero{display:flex;justify-content:space-between;align-items:end;padding:52px 0 40px;border-top:1px solid #202733}.hero strong{display:block;font-size:clamp(38px,7vw,82px);letter-spacing:-.055em;line-height:1.05;margin:10px 0}.hero .ahead{color:var(--accent)}.hero .behind{color:var(--danger)}#status-detail,.month{color:var(--muted)}.month{text-transform:capitalize;font-size:18px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}.stats article,.chart-card{background:linear-gradient(145deg,#171d27,#11161e);border:1px solid #202733;border-radius:18px}.stats article{padding:24px}.stats strong{font-size:30px;display:block;margin:12px 0 7px}.stats small{color:var(--muted)}.chart-card{padding:26px;margin-bottom:14px}.chart-head{display:flex;justify-content:space-between;align-items:center}.chart-head h2{font-size:22px;margin-top:6px}.legend{color:var(--muted);font-size:12px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.legend span{display:flex;align-items:center;gap:7px}.legend i{display:inline-block;width:22px;height:3px}.legend i.plan{background:transparent;border-top:3px dashed}.legend .hours.actual{background:var(--accent)}.legend .hours.plan{border-color:var(--plan)}.legend .money.actual{background:var(--money)}svg{display:block;width:100%;margin-top:22px;overflow:visible}svg text{fill:var(--muted);font-size:12px}.money-axis{fill:var(--money)}.grid{stroke:#252d3a;stroke-width:1}.line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.line.hours.actual{stroke:var(--accent)}.line.hours.plan{stroke:var(--plan);stroke-dasharray:8 9}.line.money.actual{stroke:var(--money)}.dot.hours.actual{fill:var(--accent)}.dot.hours.plan{fill:var(--plan)}.dot.money.actual{fill:var(--money)}button{border:0;border-radius:10px;background:var(--accent);color:#111;font:inherit;font-weight:750;cursor:pointer}.login-page{display:grid;place-items:center}.login-card{width:min(420px,calc(100% - 40px));padding:38px;background:var(--panel);border:1px solid #293140;border-radius:22px}.mark{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--accent);color:#111;font-weight:900;font-size:22px;margin-bottom:26px}.login-card p{color:var(--muted);margin:10px 0 28px}.login-card label{display:block;color:var(--muted);font-size:13px;margin:16px 0}.login-card input{display:block;width:100%;margin-top:8px;padding:13px;background:#0c1118;border:1px solid #2a3341;border-radius:10px;color:var(--text);font:inherit}.login-card button{width:100%;padding:14px;margin-top:8px}.error{background:#3a1d1d;color:#ff9a8d;padding:11px;border-radius:9px;font-size:13px}@media(max-width:700px){header,main{width:min(100% - 24px,1180px)}header{padding-top:24px}.hero{display:block;padding:36px 0}.month{margin-top:20px}.stats{grid-template-columns:1fr}.chart-card{padding:18px 12px}.chart-head{display:block}.legend{justify-content:flex-start;margin-top:16px}.legend span{font-size:10px}svg{height:260px}}
@media(min-width:701px){body:not(.login-page){height:100vh;min-height:0;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr)}body:not(.login-page) header{padding:16px 0 10px}body:not(.login-page) header h1{font-size:19px;margin-top:3px}body:not(.login-page) main{height:100%;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr)}body:not(.login-page) .hero{padding:12px 0 14px}body:not(.login-page) .hero strong{font-size:clamp(34px,5vh,52px);margin:4px 0}body:not(.login-page) .month{font-size:15px}body:not(.login-page) .stats{gap:10px;margin-bottom:10px}body:not(.login-page) .stats article{padding:12px 16px}body:not(.login-page) .stats strong{font-size:22px;margin:5px 0 2px}body:not(.login-page) .chart-card{min-height:0;margin-bottom:10px;padding:14px 18px;display:flex;flex-direction:column;overflow:hidden}body:not(.login-page) .chart-head h2{font-size:18px;margin-top:2px}body:not(.login-page) #pace-chart{flex:1;min-height:0;height:100%;margin-top:5px}}
.chart-body{display:flex;flex:1;min-height:0;align-items:stretch}.chart-body #pace-chart{flex:1;min-width:0}.chart-body .legend{flex:0 0 72px;flex-direction:column;align-items:flex-start;justify-content:center;gap:9px;padding-left:8px;font-size:10px}.chart-body .legend span{white-space:nowrap}.chart-body .legend i{width:17px}@media(max-width:700px){.chart-body{flex-direction:column}.chart-body .legend{order:-1;flex:0 0 auto;flex-direction:row;padding:0;margin:14px 0 0;gap:14px}.chart-body #pace-chart{margin-top:4px}}
