:root{--ink:#15182c;--paper:#f8f9fc;--card:#ffffff;--line:rgba(17,24,39,0.12);--mute:#6b7280;--blue:#3157f6;--cyan:#27d9f5;--good:#18a76f;--bad:#ef4444}*{box-sizing:border-box}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;margin:0;background:var(--paper);color:var(--ink)}.wrap{max-width:1320px;margin:0 auto;padding:32px 16px 64px}h1{margin:2px 0 4px;font-size:28px;letter-spacing:-.01em}h2{margin:40px 0 12px;font-size:18px}h3{margin:24px 0 8px;font-size:15px}tr.total td{background:#f1f4fb;font-weight:700}.kicker{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--blue)}.muted{color:var(--mute);font-size:13px}.small{font-size:12px;margin-top:6px}.head{justify-content:space-between;gap:16px;flex-wrap:wrap}.filters,.head{display:flex;align-items:flex-end}.filters{flex-direction:column;gap:8px}.seg{display:inline-flex;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:3px;flex-wrap:wrap}.seg a{padding:6px 12px;border-radius:7px;font-size:13px;color:var(--ink);text-decoration:none}.seg a.on{background:var(--ink);color:#fff}.range{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:4px 4px 4px 12px;font-size:13px}.range.on{border-color:var(--ink)}.range label{display:inline-flex;gap:6px;align-items:center;color:var(--mute)}.range input{font:inherit;color:var(--ink);border:1px solid var(--line);border-radius:7px;padding:4px 6px;background:#fff}.range button{font:inherit;font-weight:600;background:var(--blue);color:#fff;border:0;border-radius:7px;padding:6px 12px;cursor:pointer}.range button:focus-visible,.seg a:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0 8px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;min-width:0}.card.feat{background:var(--blue);color:#fff;border-color:var(--blue)}.card .lab{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.75}.big{font-size:clamp(19px,5.2vw,26px);font-weight:800;margin-top:6px;font-variant-numeric:tabular-nums}.note{font-size:12px;margin-top:4px;opacity:.75}.notice{background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;padding:10px 14px;font-size:14px}table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}td,th{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);font-size:14px}th{color:var(--mute);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;background:#fbfbfd}td.r,th.r{text-align:right;font-variant-numeric:tabular-nums}td.r,td:first-child,th.r{white-space:nowrap}td.b{font-weight:700}tr:last-child td{border-bottom:0}.good{color:var(--good)}.bad,.good{font-weight:700}.bad{color:var(--bad)}.dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px}.chart{margin:0 0 16px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px}.chart svg{width:100%;height:auto;display:block}.chart .grid{stroke:#e5e7eb}.chart .axis{font-size:11px;fill:var(--mute)}.chart .rev{fill:none;stroke:var(--ink);stroke-width:2.2}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--mute);margin-top:6px}.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}.legend i.ln{height:3px;width:18px;background:var(--ink);vertical-align:3px}.legend i.ln.pno{background:#7c3aed}.chart .pno{fill:none;stroke:#7c3aed;stroke-width:2;stroke-linejoin:round}.chart .pno-axis{fill:#7c3aed}.chart .pno-target{stroke:#7c3aed;stroke-width:1.2;stroke-dasharray:6 5;opacity:.7}.chart .pno-dot{stroke:#fff;stroke-width:1.2}.chart .pno-dot.good{fill:var(--good)}.chart .pno-dot.bad{fill:var(--bad)}.sources{list-style:none;padding:0;margin:0;background:var(--card);border:1px solid var(--line);border-radius:12px}.sources li{padding:10px 14px;border-bottom:1px solid var(--line);font-size:14px}.sources li:last-child{border-bottom:0}@media (max-width:900px){.cards{grid-template-columns:repeat(2,1fr)}.filters{align-items:flex-start}table{display:block;overflow-x:auto}}table.grouped th.grp{text-align:center;color:var(--ink)}table.grouped .first,table.grouped th.grp{border-left:2px solid var(--line)}table.grouped td,table.grouped th{padding:7px 10px;font-size:13px}tr.we td:first-child{color:var(--mute)}.legend2{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:12px;margin:0 0 10px}.legend2 i{display:inline-block;width:14px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}.scroll{overflow-x:auto;border-radius:12px}.scroll table.grouped{min-width:100%;width:-moz-max-content;width:max-content}table.grouped td:first-child,table.grouped th:first-child{position:sticky;left:0;background:var(--card);z-index:1}table.grouped tr.total td:first-child{background:#f1f4fb}.legend2 .shade-scale i{margin-right:0;border-radius:0}.legend2 .shade-scale i:last-of-type{margin-right:6px}html{scroll-behavior:smooth}h2[id],h3[id],section[id]{scroll-margin-top:16px}.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.content{min-width:0}.side{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--ink);color:#fff;padding:22px 14px}.side .brand{display:block;color:#fff;text-decoration:none;font-weight:800;font-size:18px;letter-spacing:-.01em;padding:0 10px 18px}.side .brand span{color:var(--cyan);font-weight:600}.side .group{padding:14px 0;border-top:1px solid rgba(255,255,255,.12)}.side .gtitle{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.5);padding:0 10px 8px}.side .item{display:block;color:rgba(255,255,255,.82);text-decoration:none;font-size:14px;padding:7px 10px;border-radius:8px}.side .item:hover{background:rgba(255,255,255,.08);color:#fff}.side .item.here{color:#fff}.side .item.on{background:var(--blue);color:#fff;font-weight:600}.side .item:focus-visible{outline:2px solid var(--cyan);outline-offset:1px}@media (max-width:900px){.shell{grid-template-columns:1fr}.side{position:sticky;top:0;z-index:10;height:auto;display:flex;gap:12px;align-items:center;overflow-x:auto;padding:10px 12px}.side .brand{padding:0 6px;white-space:nowrap;font-size:15px}.side nav{display:flex;gap:4px}.side .group{display:flex;gap:2px;padding:0 0 0 8px;border-top:0;border-left:1px solid rgba(255,255,255,.2)}.side .gtitle{display:none}.side .item{white-space:nowrap;font-size:13px;padding:6px 9px}}.abc>span{white-space:nowrap}.abc{font-size:13px;color:var(--mute);display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}.badge{display:inline-block;min-width:22px;text-align:center;font-size:11px;font-weight:800;border-radius:6px;padding:2px 6px;color:#fff}.badge.a{background:var(--blue)}.badge.b{background:#7c8db8}.badge.c{background:#c3c9d9;color:var(--ink)}td.pname{white-space:normal;min-width:240px;max-width:420px}table.products td,table.products th{font-size:13px;padding:7px 10px}.scroll table.products{min-width:100%}.sortseg{margin-bottom:12px}.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.ccard{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column}.thumb{aspect-ratio:4/5;background:#eef0f6;display:flex;align-items:center;justify-content:center}.thumb img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;display:block}.thumb.sm{width:44px;height:55px;aspect-ratio:auto;border-radius:6px;overflow:hidden;flex:none}.thumb.sm .muted{font-size:9px;text-align:center}.cbody{padding:12px 14px 14px}.ctop{display:flex;gap:6px;align-items:center;margin-bottom:6px}.rank{font-weight:800;font-size:13px}.fmt{display:inline-block;font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;background:#eef1fb;color:var(--ink);white-space:nowrap}.fmt.new{background:var(--cyan)}.cn{font-weight:700;font-size:14px}.cn,.small-block{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.small-block{display:block;font-size:12px}.cm{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:10px 0 0;font-size:13px}.cm dt{color:var(--mute)}.cm dd{margin:0;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;border-radius:4px;padding:0 4px}td.cname{display:flex;gap:10px;align-items:center;white-space:normal;min-width:260px}.dayhead{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-top:32px}.dayhead h2{margin:0}.chart .rev-prev{fill:none;stroke:#9aa3b5;stroke-width:1.8;stroke-dasharray:5 4}.legend i.ln.prev{background:repeating-linear-gradient(90deg,#9aa3b5 0 5px,transparent 5px 9px)}tr.now td{box-shadow:inset 0 1px 0 var(--blue),inset 0 -1px 0 var(--blue)}table.hours td,table.hours th{padding:6px 10px;font-size:13px}table.heat{width:-moz-max-content;width:max-content;min-width:100%}table.heat td,table.heat th{padding:6px 4px;font-size:12px;min-width:30px;text-align:center}table.heat td:first-child,table.heat th:first-child{text-align:left;padding-left:12px}.side{display:flex;flex-direction:column}.side nav{flex:1}.client-switch{display:block;padding:0 10px 14px;font-size:11px;color:rgba(255,255,255,.55);text-transform:uppercase;letter-spacing:.1em;font-weight:700}.client-switch select{display:block;width:100%;margin-top:6px;font:inherit;font-size:14px;text-transform:none;letter-spacing:0;font-weight:600;color:#fff;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:7px 8px}.client-switch option{color:var(--ink)}.me{border-top:1px solid rgba(255,255,255,.12);padding:12px 10px 0;font-size:12px;color:rgba(255,255,255,.6);display:flex;gap:8px;align-items:center;justify-content:space-between}.me span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me button{font:inherit;color:#fff;background:transparent;border:1px solid rgba(255,255,255,.25);border-radius:7px;padding:4px 8px;cursor:pointer}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}.login-box{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:32px 28px}.login-box h1{font-size:24px;margin:18px 0 6px}.login-box form{display:flex;flex-direction:column;gap:8px;margin-top:18px}.login-box label{font-size:13px;font-weight:600}.login-box input{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:10px}.login-box button:focus-visible,.login-box input:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.login-box button{font:inherit;font-weight:700;background:var(--blue);color:#fff;border:0;border-radius:10px;padding:11px 14px;margin-top:6px;cursor:pointer}.brand-dark{font-weight:800;font-size:18px}.brand-dark span{color:var(--blue);font-weight:600}@media (max-width:900px){.side{flex-direction:row}.client-switch{padding:0 6px;min-width:140px}.client-switch span{display:none}.client-switch select{margin-top:0;padding:5px 6px;font-size:13px}.me{border-top:0;padding:0 6px}.me span{display:none}}.notice.ok{background:#ecfdf5;border-color:#a7f3d0}.inline-form{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr)) auto;gap:8px}.inline-form input,.invite input,.invite select{font:inherit;font-size:14px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;text-align:right}.invite input,.invite select{text-align:left}.actions button,.inline-form button,.invite button{font:inherit;font-size:13px;font-weight:700;border:0;border-radius:8px;padding:7px 12px;background:var(--blue);color:#fff;cursor:pointer}.actions{display:flex;gap:6px;justify-content:flex-end}.actions button.ghost{background:transparent;color:var(--ink);border:1px solid var(--line);font-weight:600}.actions button.danger{color:var(--bad)}.chip-form{display:inline-block;margin:0 4px 4px 0}.chip{display:inline-flex;align-items:center;gap:4px;background:#eef1fb;border-radius:999px;padding:2px 4px 2px 10px;font-size:13px}.chip button{border:0;background:transparent;cursor:pointer;font-size:15px;line-height:1;color:var(--mute);padding:0 4px}.invite{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr)) auto;gap:10px;align-items:end;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}.invite label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--mute)}@media (max-width:900px){.inline-form,.invite{grid-template-columns:1fr}}.plan{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.pcard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;min-width:0}.pcard .lab{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.75}.pcard .big{display:inline-block;border-radius:6px;padding:0 4px;margin-left:-4px}.pbar{position:relative;height:8px;background:#eef1fb;margin:10px 0 8px}.pbar,.pfill{border-radius:999px}.pfill{inset:0 auto 0 0;background:var(--blue)}.pfill,.ptime{position:absolute}.ptime{top:-4px;bottom:-4px;width:2px;background:var(--ink)}@media (max-width:900px){.plan{grid-template-columns:1fr}}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}@media (max-width:1000px){.two-col{grid-template-columns:1fr}}.tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.tag{font-size:11px;font-weight:600;border-radius:6px;padding:2px 7px}.tag.ct{background:var(--ink);color:#fff}.tag.msg{background:#fff4e5;color:#8a4b00}.tagform{display:grid;grid-template-columns:1fr;gap:5px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}.tagform select{font:inherit;font-size:12px;padding:4px 6px;border:1px solid var(--line);border-radius:6px}.tagform button{font:inherit;font-size:12px;font-weight:700;background:var(--ink);color:#fff;border:0;border-radius:6px;padding:5px;cursor:pointer}.alerts ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.alerts .al{background:#fff7ed;border:1px solid #fed7aa;border-left:4px solid #f59e0b;border-radius:10px;padding:9px 12px;font-size:14px}.alerts .al.sync{background:#fef2f2;border-color:#fecaca}.alerts .al.budget,.alerts .al.pno,.alerts .al.sync{border-left-color:var(--bad)}.forecast{background:#eef1fb;border:1px solid #c9d3fb;border-radius:10px;padding:10px 14px;font-size:14px}.today{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:14px;padding:14px 16px 10px;margin-top:20px}.today-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}.today-head h2{margin:0;font-size:16px}.today-head a{font-size:13px;font-weight:600;color:var(--blue);text-decoration:none}.today-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:12px 0 6px}.today-grid .lab{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--mute)}.today-grid .val{display:inline-block;font-size:22px;font-weight:800;border-radius:6px;padding:0 4px;margin:4px 0 2px -4px;font-variant-numeric:tabular-nums}.today-grid .sub{font-size:12px;color:var(--mute)}.today-grid .sub span{border-radius:4px;padding:0 4px;color:var(--ink);font-weight:700}.today-grid .proj{border-left:1px dashed var(--line);padding-left:12px}@media (max-width:900px){.today-grid{grid-template-columns:1fr 1fr}.today-grid .proj{border-left:0;padding-left:0}}table.team td{vertical-align:top}.cl{font-weight:700;color:var(--ink);text-decoration:none}.cl:hover{color:var(--blue)}.st{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;border-radius:6px;padding:3px 8px}.st.ok{background:#d1fae5;color:#065f46}.st.warn{background:#fef3c7;color:#92400e}.st.bad{background:#fee2e2;color:#991b1b}.st.none{background:#eef1fb}.st.none,.why{color:var(--mute)}.why{font-size:11px;max-width:220px;white-space:normal;margin-top:3px}.small-cell{font-size:12px;white-space:nowrap}.role-form{display:inline-flex;gap:4px;align-items:center;margin-top:4px}.role-form select{padding:3px 5px;border:1px solid var(--line);border-radius:6px}.mini,.role-form select{font:inherit;font-size:12px}.mini{font-weight:700;border:0;border-radius:6px;padding:4px 8px;background:var(--ink);color:#fff;cursor:pointer}.copy-link{display:block;width:100%;margin-top:6px;font:inherit;font-size:12px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#fff}