.client-portal-header__account{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px 16px;max-width:420px;display:flex}.client-portal-project-sections{background:var(--bg-surface);flex-wrap:wrap;gap:16px;padding:12px 24px;display:flex}.client-portal-project-toolbar{flex-wrap:wrap;align-items:end;gap:16px;margin:20px 0 8px;display:flex}.client-portal-project-toolbar label{gap:6px;font-weight:650;display:grid}.client-portal-project-toolbar input,.client-portal-project-toolbar select{background:var(--bg-surface);border:1px solid var(--line-1);border-radius:var(--r-2);min-height:44px;color:var(--fg1);padding:10px 12px}.client-portal-project-toolbar button{background:var(--bg-surface);border:1px solid var(--line-1);cursor:pointer;min-height:44px;color:var(--fg1);padding:10px 16px}.client-portal-project-toolbar button[aria-pressed=true]{background:var(--fill-brand);color:var(--dg-kitti)}.client-portal-project-status-help{color:var(--fg-muted);flex-wrap:wrap;gap:8px 24px;margin:12px 0;font-size:.82rem;display:flex}.client-portal-project-status-help span{gap:4px;display:inline-flex}.client-portal-project-status-help strong{color:var(--fg1)}.client-portal-project-grid.is-list{grid-template-columns:minmax(0,1fr);gap:10px}.client-portal-project-grid.is-list .client-portal-project-card{grid-template-columns:minmax(0,2fr) minmax(180px,1fr) auto;gap:10px 20px;padding:16px 20px;display:grid}.client-portal-project-grid.is-list .client-portal-project-card__top{grid-column:1/-1}.client-portal-project-grid.is-list .client-portal-project-card__body h2{font-size:1.25rem}.client-portal-project-grid.is-list .client-portal-project-card__body>p:last-child,.client-portal-project-grid.is-list .client-portal-project-card__progress{display:none}.client-portal-project-grid.is-list .client-portal-project-card__meta{align-content:center;gap:6px;margin:0;display:grid}.client-portal-project-grid.is-list .client-portal-project-card>a{border:0;align-self:center;margin:0}.client-portal-calendar{border:1px solid var(--line-1);background:var(--bg-surface);box-shadow:var(--shadow-1);border-radius:14px;margin-top:20px;overflow:hidden}.client-portal-calendar__header{border-bottom:1px solid var(--line-1);justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.client-portal-calendar__header p,.client-portal-calendar__header h3{margin:0}.client-portal-calendar__header h3{margin-top:4px;font-size:1.35rem}.client-portal-calendar__header nav{gap:6px;display:flex}.client-portal-calendar__header button{border:1px solid var(--line-1);border-radius:var(--r-2);background:var(--bg-surface);min-height:40px;color:var(--fg-brand);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:7px 11px;display:inline-flex}.client-portal-calendar__legend{color:var(--fg-muted);border-bottom:1px solid var(--line-1);flex-wrap:wrap;gap:10px 22px;padding:12px 20px;font-size:.78rem;display:flex}.client-portal-calendar__legend span{align-items:center;gap:7px;display:inline-flex}.client-portal-calendar__legend i{border-radius:var(--r-pill);width:20px;height:7px;display:inline-block}.client-portal-calendar__legend .is-period{background:var(--fill-brand)}.client-portal-calendar__legend .is-approval{background:var(--state-warning);border-radius:50%;width:9px;height:9px}.client-portal-calendar__scroll{outline-offset:-3px;overflow-x:auto}.client-portal-calendar__timeline{min-width:900px}.client-portal-calendar__days,.client-portal-calendar__row{grid-template-columns:240px minmax(640px,1fr);display:grid}.client-portal-calendar__days{border-bottom:1px solid var(--line-1);min-height:32px;color:var(--fg-muted);font-size:.67rem}.client-portal-calendar__days>span{border-right:1px solid var(--line-1)}.client-portal-calendar__days>div{grid-template-columns:repeat(var(--portal-calendar-days), minmax(0, 1fr));display:grid}.client-portal-calendar__days b{border-right:1px solid var(--line-1);place-items:center;font-weight:600;display:grid}.client-portal-calendar__days b.is-weekend{background:var(--dg-stone-10)}.client-portal-calendar__row{border-bottom:1px solid var(--line-1);min-height:74px}.client-portal-calendar__row:last-child{border-bottom:0}.client-portal-calendar__project{border-right:1px solid var(--line-1);align-content:center;gap:2px;padding:10px 14px;display:grid}.client-portal-calendar__project>span{color:var(--dg-mango-text);letter-spacing:.06em;text-transform:uppercase;font-size:.65rem;font-weight:700}.client-portal-calendar__project>a{color:var(--fg-brand);font-size:.83rem;font-weight:700}.client-portal-calendar__project small{color:var(--fg-muted);font-size:.7rem}.client-portal-calendar__track{grid-template-columns:repeat(var(--portal-calendar-days), minmax(0, 1fr));background-image:repeating-linear-gradient(to right, transparent, transparent calc((100% / var(--portal-calendar-days)) - 1px), var(--line-1) calc((100% / var(--portal-calendar-days)) - 1px), var(--line-1) calc(100% / var(--portal-calendar-days)));align-items:center;display:grid;position:relative}.client-portal-calendar__period{z-index:1;border-radius:var(--r-pill);background:var(--fill-brand);min-width:8px;color:var(--dg-kitti);white-space:nowrap;text-overflow:ellipsis;padding:7px 10px;font-size:.7rem;font-weight:700;overflow:hidden}.client-portal-calendar__period.is-planning{background:var(--state-info)}.client-portal-calendar__period.is-completed{background:var(--state-positive)}.client-portal-calendar__period.is-on_hold{background:var(--state-warning);color:var(--fg1)}.client-portal-calendar__approval{z-index:2;border:2px solid var(--bg-surface);background:var(--state-warning);width:25px;height:25px;color:var(--fg1);border-radius:50%;place-items:center;display:grid;position:absolute;top:6px;transform:translate(-50%)}.client-portal-calendar__empty{align-items:center;gap:12px;padding:28px 20px;display:flex}.client-portal-calendar__empty h4,.client-portal-calendar__empty p{margin:0}.client-portal-calendar__empty p{color:var(--fg-muted);margin-top:3px}.client-portal-calendar__missing{border-top:1px solid var(--line-1);padding:12px 20px}.client-portal-calendar__missing summary{color:var(--fg-brand);cursor:pointer;font-weight:700}.client-portal-calendar__missing ul{gap:8px;margin:0;padding:10px 0 0;list-style:none;display:grid}.client-portal-calendar__missing li{align-items:center;gap:7px;display:flex}.client-portal-portfolio__intro{padding:24px 32px}.client-portal-portfolio__intro h1{font-size:clamp(2rem,3vw,3rem)}.approval-portal-card__outcomes{color:var(--fg1);margin:6px 0;font-weight:650;display:block}.approval-viewer__toolbar-group.is-material-navigation{border:1px solid var(--line-1);background:var(--bg-surface);border-radius:var(--r-2);flex-wrap:wrap;padding:4px}.approval-viewer__toolbar .is-material-navigation button{min-height:44px;font-size:.875rem}.approval-viewer__toolbar .is-material-navigation output{min-width:55px;font-size:.875rem;font-weight:700}.approval-viewer__toolbar .is-material-navigation .primary-action{background:var(--fill-brand);color:var(--dg-kitti)}.approval-review-decision{position:static}.approval-viewer{--proof-sticky-top:calc(var(--portal-header-height,0px) + var(--material-nav-height,80px) + 8px)}.approval-review-set__viewer{scroll-margin-top:calc(var(--portal-header-height,72px) + 16px)}.approval-customer-feedback article{scroll-margin-top:100px}.approval-customer-feedback .is-latest-feedback{border-color:var(--fg-brand)}.approval-feedback-form{gap:8px;margin-top:16px;display:grid}.approval-feedback-form textarea{resize:vertical;border:1px solid var(--line-1);border-radius:var(--r-2);background:var(--bg-surface);width:100%;color:var(--fg1);font:inherit;padding:12px}.approval-feedback-form button{justify-self:start;min-height:44px}.approval-feedback-reply{border-left:3px solid var(--line-1);margin-top:12px;padding-left:16px}.approval-feedback-form p[role=alert]{color:var(--state-critical)}.approval-package-hero{padding:24px}.approval-package-hero h1{font-size:clamp(1.8rem,3vw,3rem)}.approval-viewer>.is-material-navigation{top:var(--portal-header-height,0px);z-index:24;background:var(--bg-surface);border-bottom:1px solid var(--line-1);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px;display:flex;position:sticky}.approval-viewer>.is-material-navigation button{border:1px solid var(--line-1);border-radius:var(--r-2);background:var(--bg-surface);min-height:44px;color:var(--fg-brand);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:.875rem;display:inline-flex}.approval-viewer>.is-material-navigation button:disabled{opacity:.5;cursor:default}.approval-viewer>.is-material-navigation .primary-action,.approval-viewer>.is-material-navigation .approval-viewer__decision{background:var(--fill-brand);color:var(--dg-kitti)}.approval-viewer>.is-material-navigation .approval-viewer__decision{margin-left:auto}.approval-viewer>.is-material-navigation output{font-size:.875rem;font-weight:700}.approval-viewer__toolbar{position:relative;top:auto}@media (max-width:640px){.approval-viewer>.is-material-navigation{gap:6px;padding:8px}.approval-viewer>.is-material-navigation button{flex:1}.approval-viewer>.is-material-navigation output{text-align:center;order:-1;width:100%}.approval-viewer>.is-material-navigation .primary-action{flex-basis:100%}}@media (max-width:1100px){.client-portal-header__inner{grid-template-columns:auto minmax(0,1fr);gap:8px 16px;padding:8px 0}.client-portal-header__account{grid-area:1/2}.client-portal-header__inner>nav{flex-wrap:wrap;grid-area:2/1/auto/-1;justify-content:center}.client-portal-header__inner>nav a{min-height:44px}}@media (max-width:640px){.client-portal-header__inner{width:calc(100% - 24px)}.client-portal-brand img{width:65px}.client-portal-header__account{gap:4px}.client-portal-header__account .client-portal-user>span{display:none}.client-portal-header__account .client-portal-user__logout{min-height:44px;display:inline-flex}.client-portal-project-grid.is-list .client-portal-project-card{grid-template-columns:1fr}.client-portal-project-grid.is-list .client-portal-project-card__top{grid-column:1}.client-portal-project-status-help{display:grid}.client-portal-calendar__header{flex-direction:column;align-items:flex-start}.approval-viewer__toolbar-group.is-material-navigation{width:100%}}
.ui-chip{border-radius:var(--r-pill);max-width:100%;font-size:var(--text-sm);color:var(--state-neutral);background:var(--state-neutral-bg);white-space:nowrap;align-items:center;gap:5px;padding:2px 9px;font-weight:500;line-height:1.35;display:inline-flex}.ui-chip>svg{flex:none}.ui-chip__label{text-overflow:ellipsis;overflow:hidden}.ui-chip--sm{font-size:var(--text-xs);padding:1px 7px}.ui-chip--success{color:var(--state-positive);background:var(--state-positive-bg)}.ui-chip--warning{color:var(--state-warning);background:var(--state-warning-bg)}.ui-chip--danger{color:var(--state-critical);background:var(--state-critical-bg)}.ui-chip--info{color:var(--state-info);background:var(--state-info-bg)}.ui-chip--brand{color:var(--dg-luumu);background:var(--dg-luumu-10)}.ui-avatar{letter-spacing:.02em;-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:500;display:inline-flex}.ui-avatar--sm{width:24px;height:24px;font-size:10px}.ui-avatar--md{width:32px;height:32px;font-size:var(--text-xs)}.ui-avatar--lg{width:44px;height:44px;font-size:var(--text-md)}.ui-avatar--p0{color:var(--dg-valkoinen);background:var(--dg-luumu)}.ui-avatar--p1{color:#4a2a00;background:var(--dg-mango)}.ui-avatar--p2{color:#2d2a5e;background:var(--dg-laventeli)}.ui-avatar--p3{color:var(--dg-valkoinen);background:var(--state-positive)}.ui-avatar--p4{color:var(--dg-luumu);background:var(--dg-luumu-20)}.ui-avatar--p5{color:#401200;background:var(--dg-pihlaja-20)}.ui-avatar-stack{align-items:center;display:inline-flex}.ui-avatar-stack .ui-avatar{box-shadow:0 0 0 2px var(--bg-surface)}.ui-avatar-stack .ui-avatar+.ui-avatar{margin-left:-7px}.ui-avatar-stack__more{color:var(--fg-muted);background:var(--bg-surface-sunk)}.ui-stat{border:1px solid var(--line-1);border-radius:var(--r-4);min-width:0;padding:var(--space-3) var(--space-4);background:var(--bg-surface);align-content:start;gap:3px;display:grid}.ui-stat__label{color:var(--fg-muted);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;margin:0;font-weight:500}.ui-stat__value{align-items:baseline;gap:var(--space-2);color:var(--dg-luumu);font-size:var(--text-xl);font-variant-numeric:tabular-nums;font-weight:500;line-height:1.1;display:flex}.ui-stat__hint{color:var(--fg-muted);font-size:var(--text-sm);margin:0}.ui-stat__trend{font-size:var(--text-sm);font-variant-numeric:tabular-nums;align-items:center;gap:3px;font-weight:500;display:inline-flex}.ui-stat__trend--success{color:var(--state-positive)}.ui-stat__trend--danger{color:var(--state-critical)}.ui-stat__trend--warning{color:var(--state-warning)}.ui-stat__trend--neutral{color:var(--fg-muted)}.ui-stat--compact{background:0 0;border:0;padding:0}.ui-stat--compact .ui-stat__value{font-size:var(--text-lg)}.ui-stat__viz{margin-top:var(--space-1)}.metric__viz-row{align-items:center;gap:var(--space-3);display:flex}.ui-stat-row{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(148px,1fr));display:grid}.ui-progress{gap:4px;min-width:0;display:grid}.ui-progress__track{border-radius:var(--r-pill);background:var(--bg-surface-sunk);height:6px;overflow:hidden}.ui-progress__fill{border-radius:var(--r-pill);background:var(--dg-luumu);height:100%;transition:width var(--dur-3) var(--ease-out)}.ui-progress--success .ui-progress__fill{background:var(--state-positive)}.ui-progress--warning .ui-progress__fill{background:var(--dg-mango)}.ui-progress--danger .ui-progress__fill{background:var(--dg-pihlaja)}.ui-progress__label{justify-content:space-between;gap:var(--space-2);color:var(--fg-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;display:flex}.ui-ring{place-items:center;display:inline-grid;position:relative}.ui-ring__track{stroke:var(--bg-surface-sunk)}.ui-ring__value{stroke:var(--dg-luumu);transition:stroke-dashoffset var(--dur-3) var(--ease-out)}.ui-ring--success .ui-ring__value{stroke:var(--state-positive)}.ui-ring--warning .ui-ring__value{stroke:var(--dg-mango)}.ui-ring--danger .ui-ring__value{stroke:var(--dg-pihlaja)}.ui-ring__label{color:var(--fg1);font-size:var(--text-sm);font-variant-numeric:tabular-nums;font-weight:500;position:absolute}.ui-ring--lg .ui-ring__label{font-size:var(--text-md)}.ui-empty{justify-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);text-align:center;display:grid}.ui-empty-illustration{width:min(150px,44vw);height:auto}.ui-empty__icon{width:48px;height:48px;color:var(--dg-luumu);background:var(--dg-luumu-10);border-radius:50%;place-items:center;display:grid}.ui-empty__title{color:var(--fg1);font-size:var(--text-md);margin:0;font-weight:500}.ui-empty__description{max-width:44ch;color:var(--fg-muted);font-size:var(--text-sm);margin:0}.ui-empty__action{margin-top:var(--space-2)}@media (prefers-reduced-motion:no-preference){.primary-action:active,.secondary-action:active{transform:scale(.98)}.task-card--compact:active{transform:translateY(0)scale(.99)}.task-card--drag-overlay{box-shadow:var(--shadow-3);cursor:grabbing;transform:rotate(2.5deg)scale(1.03)}.ui-progress__fill,.chart-bar-list__fill,.chart-burn__actual,.utilization-bar>span{transform-origin:0;animation:ui-grow-x var(--dur-3) var(--ease-out) backwards}.ui-ring__value{transition:stroke-dashoffset .64s var(--ease-out)}@starting-style{.ui-ring__value{stroke-dashoffset:calc(var(--ring-circumference,0) * 1px)}}}@keyframes ui-grow-x{0%{transform:scaleX(0)}}@media (prefers-reduced-motion:no-preference){.route-transition{animation:route-enter .19s var(--ease-out)}}@keyframes route-enter{0%{transform:translateY(6px)}}.taskboard-live{align-items:center;gap:var(--space-2);display:inline-flex}.taskboard-live__presence{align-items:center;gap:6px;display:inline-flex}.taskboard-live__pulse{background:var(--state-positive);width:7px;height:7px;box-shadow:0 0 0 2px var(--state-positive-bg);border-radius:50%}.task-view-toolbar__side{align-items:center;gap:var(--space-3);display:inline-flex}.task-view-toolbar__side p{margin:0}.ui-live-toasts{left:var(--space-4);bottom:var(--space-4);z-index:var(--z-overlay);gap:var(--space-2);pointer-events:none;max-width:min(340px,100vw - 32px);display:grid;position:fixed}.ui-live-toast{border:1px solid var(--line-1);border-left:3px solid var(--dg-luumu);border-radius:var(--r-3);background:var(--bg-surface);box-shadow:var(--shadow-3);color:var(--fg1);font-size:var(--text-sm);margin:0;padding:10px 14px}.task-create-confirmation{right:var(--space-4);bottom:var(--space-4);z-index:var(--z-overlay);border-left-color:var(--state-positive);max-width:min(380px,100vw - 32px);position:fixed}.task-create-panel__feedback{grid-column:1/-1;margin:0}@media (prefers-reduced-motion:no-preference){.ui-live-toast{animation:ui-toast-in var(--dur-3) var(--ease-out) backwards}}@keyframes ui-toast-in{0%{opacity:0;transform:translateY(6px)}}.ui-project-dot{background:var(--dg-stone-50);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.ui-project-dot--p0{background:var(--dg-luumu)}.ui-project-dot--p1{background:var(--dg-mango)}.ui-project-dot--p2{background:var(--dg-laventeli)}.ui-project-dot--p3{background:var(--state-positive)}.ui-project-dot--p4{background:var(--dg-luumu-60)}.ui-project-dot--p5{background:var(--dg-pihlaja)}.ui-celebration{z-index:var(--z-overlay);pointer-events:none;position:fixed;bottom:22%;left:50%}.ui-celebration__particle{opacity:0;width:9px;height:9px;transform:rotate(var(--celebration-angle));animation:ui-celebrate .82s var(--ease-out) forwards;animation-delay:var(--celebration-delay);border-radius:2px;position:absolute}.ui-celebration__particle--c0{background:var(--dg-mango)}.ui-celebration__particle--c1{background:var(--dg-laventeli)}.ui-celebration__particle--c2{background:var(--dg-pihlaja)}.ui-celebration__particle--c3{background:var(--dg-luumu-60);border-radius:50%}@keyframes ui-celebrate{0%{opacity:0;transform:rotate(var(--celebration-angle)) translateY(0) scale(.6)}12%{opacity:1}to{opacity:0;transform:rotate(var(--celebration-angle)) translateY(calc(-1 * var(--celebration-distance))) scale(1)}}@media (prefers-reduced-motion:reduce){.ui-celebration{display:none}}.ui-page-header{justify-content:space-between;align-items:flex-end;gap:var(--space-3) var(--space-5);flex-wrap:wrap;display:flex}.ui-page-header h1{margin-bottom:4px;font-size:clamp(1.7rem,2.6vw,2.25rem);line-height:1.05}.ui-page-header .eyebrow{margin-bottom:2px}.ui-page-header__main{min-width:0}.ui-page-header__meta{align-items:center;gap:var(--space-2) var(--space-3);color:var(--fg-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.ui-page-header__actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.ui-page-header__stats{flex-basis:100%}
.chart-spark{display:block}.chart-spark__line{stroke:var(--dg-luumu-80);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.chart-spark__dot{fill:var(--dg-luumu-80)}.chart-spark--success .chart-spark__line{stroke:var(--state-positive)}.chart-spark--success .chart-spark__dot{fill:var(--state-positive)}.chart-spark--danger .chart-spark__line{stroke:var(--state-critical)}.chart-spark--danger .chart-spark__dot{fill:var(--state-critical)}.chart-bar-list{gap:8px;display:grid}.chart-bar-list__row{align-items:center;gap:var(--space-3);grid-template-columns:minmax(96px,160px) 1fr minmax(72px,auto);display:grid}.chart-bar-list__label{color:var(--fg2);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-bar-list__track{background:var(--bg-surface-sunk);border-radius:4px;height:10px;display:block;overflow:hidden}.chart-bar-list__fill{background:var(--dg-luumu-80);height:100%;transition:width var(--dur-3) var(--ease-out);border-radius:4px;display:block}.chart-bar-list__fill--neutral{background:var(--dg-stone-50)}.chart-bar-list__fill--success{background:var(--state-positive)}.chart-bar-list__fill--warning{background:var(--dg-mango)}.chart-bar-list__fill--danger{background:var(--dg-pihlaja)}.chart-bar-list__value{color:var(--fg1);font-size:var(--text-sm);text-align:right;white-space:nowrap;font-weight:500}.chart-burn{gap:6px;min-width:0;display:grid}.chart-burn__head{justify-content:space-between;gap:var(--space-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.chart-burn__label{color:var(--fg2)}.chart-burn__values{color:var(--fg1);font-weight:500}.chart-burn__flag{color:var(--state-critical)}.chart-burn__track{background:var(--bg-surface-sunk);border-radius:4px;height:12px;position:relative}.chart-burn__budget{inset-block:0;background:var(--dg-stone-30);border-radius:4px;position:absolute;left:0}.chart-burn__actual{inset-block:2px;background:var(--dg-luumu-80);border-radius:3px;position:absolute;left:0}.chart-burn__actual--over{background:var(--dg-pihlaja)}.chart-burn__forecast{background:var(--dg-tuhka);border-radius:2px;width:3px;margin-left:-1px;position:absolute;top:-3px;bottom:-3px}.chart-burn__forecast--over{background:var(--state-critical)}.chart-burn__legend{gap:var(--space-3);color:var(--fg-muted);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.chart-burn__legend span{align-items:center;gap:5px;display:inline-flex}.chart-burn__key{border-radius:3px;width:10px;height:10px}.chart-burn__key--actual{background:var(--dg-luumu-80)}.chart-burn__key--budget{background:var(--dg-stone-30)}.chart-burn__key--forecast{background:var(--dg-tuhka);border-radius:2px;width:3px;height:12px}.chart-heatmap{gap:4px;display:grid;overflow-x:auto}.chart-heatmap__row{grid-template-columns:minmax(120px,180px) repeat(auto-fit,minmax(44px,1fr));align-items:center;gap:4px;display:grid}.chart-heatmap__col,.chart-heatmap__label{color:var(--fg2);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-heatmap__col{color:var(--fg-muted);font-size:var(--text-xs);text-align:center}.chart-heatmap__cell{border-radius:var(--r-2);background:var(--bg-surface-sunk);min-height:28px;color:var(--fg1);font-size:var(--text-xs);justify-content:center;align-items:center;gap:3px;text-decoration:none;display:inline-flex}a.chart-heatmap__cell:hover{outline:2px solid var(--focus-ring);outline-offset:2px}.chart-heatmap__cell.is-empty{color:var(--fg-muted)}.chart-heatmap__cell.is-b0{background:var(--dg-stone-10)}.chart-heatmap__cell.is-b1{background:var(--dg-luumu-10)}.chart-heatmap__cell.is-b2{background:var(--dg-luumu-20)}.chart-heatmap__cell.is-b3{background:var(--dg-luumu-40)}.chart-heatmap__cell.is-b4{background:var(--dg-luumu-60);color:var(--dg-valkoinen)}.chart-heatmap__cell.is-over{background:var(--state-critical);color:var(--dg-valkoinen)}.chart-heatmap__legend{color:var(--fg-muted);font-size:var(--text-xs);align-items:center;gap:6px;margin-top:4px;display:flex}.chart-heatmap__legend .chart-heatmap__cell{min-width:22px;min-height:16px}.timeline-track--layered{position:relative}.timeline-track--layered>*{grid-row:1}.timeline-day-bg{border-radius:var(--r-2);align-self:stretch}.timeline-day-bg.is-weekend{background:var(--dg-stone-20)}.timeline-day-bg.is-today{box-shadow:inset 2px 0 0 var(--dg-pihlaja)}.timeline-bar{z-index:1;position:relative}.timeline-date.is-weekend{color:var(--fg-muted)}.timeline-date.is-today{color:var(--dg-pihlaja);font-weight:700}.timeline-date__today{letter-spacing:.06em;text-transform:uppercase;font-size:.65rem;font-style:normal;font-weight:500;display:block}.timeline-bar--milestone{border-style:dashed}.timeline-bar--overdue{box-shadow:inset 0 0 0 2px var(--state-critical)}.timeline-bar__flag{border-radius:var(--r-pill);color:var(--state-critical);background:var(--dg-valkoinen);align-items:center;gap:3px;padding:0 6px;font-weight:500;display:inline-flex}@media (prefers-reduced-motion:reduce){.chart-bar-list__fill,.ui-progress__fill,.ui-ring__value{transition:none}}
