.portal-dates{width:100%;max-width:var(--line-width);border-collapse:separate;border-spacing:0 var(--margin-x-small);margin-block:1.1em}.portal-dates th,.portal-dates td{vertical-align:baseline;text-align:left;font-weight:inherit;padding:0}.portal-dates th{width:1%;padding-right:var(--margin-small);font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase;white-space:nowrap;color:var(--color-fg);font-size:.75rem}.portal-dates tr:first-child>*{padding-top:0}.portal-dates tr:last-child>*{padding-bottom:0}.portal-actions .btn{margin-top:var(--margin-medium);display:inline-block}.portal-actions--views{gap:var(--margin-small);flex-wrap:wrap;display:flex}.portal-actions--views .btn{margin-top:0}.portal-auth-links{margin-top:var(--margin-medium)}.portal-programme__toolbar{gap:var(--margin-medium);margin-bottom:var(--margin-large);flex-wrap:wrap;align-items:center;display:flex}.portal-toggle{border:var(--border);border-radius:var(--radius);display:inline-flex;overflow:hidden}.portal-toggle button{padding:var(--margin-x-small) var(--margin-small);color:inherit;font-family:var(--font-mono);text-transform:uppercase;cursor:pointer;background:0 0;border:none;font-size:.75rem}.portal-list__group{margin-bottom:var(--margin-large)}.portal-list ul{margin:0;padding:0;list-style:none}.portal-list__stage{font-family:var(--font-mono);text-transform:uppercase;margin-bottom:var(--margin-small);font-size:.8rem}.portal-list__row{gap:var(--margin-medium);text-align:left;border:none;border-bottom:var(--border);width:100%;padding:var(--margin-small) 0;color:inherit;font:inherit;cursor:pointer;background:0 0;grid-template-columns:minmax(0,1fr) auto auto;align-items:baseline;display:grid}.portal-list__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.portal-list__dates,.portal-status{opacity:.75;white-space:nowrap;font-size:.75rem}.portal-gantt{gap:var(--margin-x-small);display:grid}.portal-gantt__header{gap:var(--margin-small);padding-bottom:var(--margin-x-small);border-bottom:var(--border);grid-template-columns:minmax(8rem,14rem) minmax(0,1fr) 9rem;align-items:end;display:grid}.portal-gantt__header-label,.portal-gantt__header-dates{font-family:var(--font-mono);text-transform:uppercase;opacity:.65;font-size:.65rem}.portal-gantt__axis{min-height:1.25rem;position:relative}.portal-gantt__tick{white-space:nowrap;opacity:.75;font-size:.65rem;position:absolute;top:0;transform:translate(-50%)}.portal-gantt__row{gap:var(--margin-small);width:100%;padding:var(--margin-x-small) 0;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;grid-template-columns:minmax(8rem,14rem) minmax(0,1fr) 9rem;align-items:center;display:grid}.portal-gantt__label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.portal-gantt__dates{opacity:.75;white-space:nowrap;text-align:right;font-size:.7rem}.portal-gantt__track{background:color-mix(in srgb, var(--color-fg) 12%, transparent);border-radius:var(--radius);min-width:0;height:1.25rem;position:relative}.portal-gantt__track--empty{border:1px dashed color-mix(in srgb, var(--color-fg) 25%, transparent);background:0 0}.portal-gantt__bar{background:var(--color-fg);border-radius:var(--radius);min-width:4px;position:absolute;top:0;bottom:0}.portal-gantt__unscheduled{margin-top:var(--margin-large);padding-top:var(--margin-medium);border-top:var(--border)}.portal-gantt__unscheduled-title{text-transform:uppercase;margin-bottom:var(--margin-small);opacity:.75;font-size:.75rem}@media (width<=640px){.portal-list__row{gap:var(--margin-x-small);grid-template-columns:minmax(0,1fr)}.portal-list__dates,.portal-status{justify-self:start}.portal-gantt__header{display:none}.portal-gantt__row{gap:var(--margin-x-small);grid-template-columns:minmax(0,1fr)}.portal-gantt__dates{text-align:left}}.portal-calendar{gap:var(--margin-small);display:grid}.portal-calendar__item{gap:var(--margin-small);text-align:left;border:none;border-bottom:var(--border);padding:var(--margin-small) 0;color:inherit;font:inherit;cursor:pointer;background:0 0;grid-template-columns:8rem 1fr auto;align-items:baseline;display:grid}.portal-modal{z-index:100;padding:var(--margin-medium);place-items:center;display:grid;position:fixed;inset:0}.portal-modal__backdrop{background:color-mix(in srgb, var(--color-2) 26%, transparent);position:absolute;inset:0}.portal-modal__panel{z-index:1;background:var(--color-bg);color:var(--color-fg);border:var(--border);border-radius:var(--radius);padding:var(--margin-large);width:100%;max-width:32rem;max-height:90vh;position:relative;overflow:auto}.portal-modal__close{float:right;gap:var(--margin-x-small);cursor:pointer;color:inherit;font-family:var(--font);font-size:var(--font-size-caption);letter-spacing:-.01rem;text-align:left;background:0 0;border:none;grid-template-columns:min-content 1fr;align-items:center;line-height:normal;display:grid}.portal-modal__close>*{margin:0}.portal-modal__close>i{font-size:var(--font-size-caption-icon)}.portal-detail{gap:var(--margin-small);margin-top:var(--margin-medium);display:grid}.portal-detail dt{font-family:var(--font-mono);text-transform:uppercase;opacity:.7;font-size:.7rem}.portal-detail dd{margin:0 0 var(--margin-small)}.portal-empty{opacity:.75}.feedback .error{color:var(--color-4,#c0392b)}.feedback .success{color:var(--color-3,#27ae60)}.form__btn{margin-top:var(--margin-small)}.btn{padding:var(--margin-x-small) var(--margin-small);border:var(--border);border-radius:var(--radius);background:var(--color-fg);color:var(--color-bg);font-family:var(--font-mono);text-transform:uppercase;cursor:pointer;font-size:.75rem;text-decoration:none;display:inline-block}button.btn{appearance:none}.portal-shell{--portal-fg:var(--color-fg);--portal-bg:var(--color-bg);--portal-surface:transparent;--portal-surface-strong:color-mix(in srgb, var(--portal-fg) 8%, transparent);--portal-border:var(--portal-fg);--portal-border-soft:color-mix(in srgb, var(--portal-fg) 28%, transparent);--portal-muted:color-mix(in srgb, var(--portal-fg) 78%, transparent);--portal-wash:color-mix(in srgb, var(--portal-fg) 8%, transparent);--portal-card-padding:1.85rem;padding:0 var(--site-gutter-inline) var(--margin-large);color:var(--portal-fg);background:0 0;grid-column:bleed}.portal-programme-title{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:1rem;margin-bottom:1.25rem;display:grid}.portal-programme-title h1{margin:0}.portal-label{margin:0 0 var(--margin-x-small);color:var(--portal-fg);letter-spacing:var(--letter-spacing);text-transform:none}.portal-programme{gap:1rem;display:grid}.portal-programme__panel,.portal-card{padding:var(--portal-card-padding);color:var(--portal-fg);background:var(--portal-surface);border:1px solid var(--portal-border);box-shadow:none;border-radius:0;grid-column:auto}.portal-programme__panel:after,.portal-card:after{display:none}.portal-programme__panel{gap:1rem;display:grid}.portal-programme__summary{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.portal-programme__summary h2{margin:0;font-size:clamp(1.25rem,2vw,1.75rem)}.portal-toggle{background:var(--portal-wash);border:1px solid var(--portal-border);border-radius:999px;padding:.2rem}.portal-toggle button{min-width:6rem;color:var(--portal-muted);border-radius:999px;padding:.55rem 1rem}.portal-toggle button.is-active{background:var(--portal-fg);color:var(--portal-bg)}.portal-programme__filters{grid-template-columns:minmax(16rem,2fr) repeat(4,minmax(9rem,1fr)) auto;align-items:end;gap:.75rem;display:grid}.portal-field{gap:.35rem;display:grid}.portal-field span{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--portal-muted);font-size:.65rem}.portal-field input,.portal-field select{width:100%;min-height:2.6rem;color:var(--portal-fg);border:1px solid var(--portal-border);font:inherit;background:#f4f1e7b3;border-radius:.65rem;padding:.65rem .75rem}.portal-field input:focus,.portal-field select:focus{outline:2px solid color-mix(in srgb, var(--color-2) 25%, transparent);border-color:var(--color-2)}.portal-filter-clear{min-height:2.6rem;color:var(--portal-fg);border:1px solid var(--portal-border);font-family:var(--font-mono);text-transform:uppercase;cursor:pointer;background:0 0;border-radius:.65rem;padding:.65rem .9rem;font-size:.7rem}.portal-list{overflow:auto}.portal-list table{border-collapse:collapse;width:100%;min-width:980px}.portal-list th{z-index:1;background:var(--portal-surface-strong);color:var(--portal-muted);font-family:var(--font-mono);letter-spacing:.06em;text-align:left;text-transform:uppercase;border-bottom:1px solid var(--portal-border);padding:.9rem 1.1rem;font-size:.65rem;position:sticky;top:0}.portal-list td{vertical-align:top;border-bottom:1px solid var(--portal-border-soft);padding:1rem 1.1rem}.portal-list tr:hover td{background:color-mix(in srgb, var(--color-2) 4%, transparent)}.portal-list__task{max-width:42rem;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;gap:.3rem;padding:0;display:grid}.portal-list__task strong{font-weight:700}.portal-list__task span{color:var(--portal-muted);line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.86rem;display:-webkit-box;overflow:hidden}.portal-list__dates{color:var(--portal-muted);font-size:.72rem}.portal-status-pill{width:fit-content;min-height:1.6rem;color:var(--portal-fg);background:color-mix(in srgb, var(--color-2) 7%, transparent);border:1px solid var(--portal-border);font-family:var(--font-mono);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;border-radius:999px;align-items:center;padding:.18rem .55rem;font-size:.64rem;display:inline-flex}.portal-status--done{background:#dcefe6;border-color:#b7dbc9}.portal-status--in-progress{background:color-mix(in srgb, var(--color-2) 12%, transparent);border-color:color-mix(in srgb, var(--color-2) 24%, transparent)}.portal-status--planned,.portal-status--not-started{background:color-mix(in srgb, var(--color-2) 6%, transparent);border-color:color-mix(in srgb, var(--color-2) 16%, transparent)}.portal-status--blocked{background:#f5d9d3;border-color:#e7b5aa}.portal-status--hold{background:color-mix(in srgb, var(--color-2) 4%, transparent);border-color:color-mix(in srgb, var(--color-2) 12%, transparent)}.portal-gantt{border:var(--pack-rule);overflow:hidden}.portal-gantt__scroller{overflow:auto}.portal-gantt__canvas{min-width:100%}.portal-gantt__header,.portal-gantt__row{grid-template-columns:19rem minmax(44rem,1fr) 13rem;align-items:stretch;gap:0;display:grid}.portal-gantt__header{z-index:4;background:var(--portal-surface-strong);border-bottom:var(--pack-rule);min-height:2.75rem;padding:0;position:sticky;top:0}.portal-gantt__header-label,.portal-gantt__header-dates{color:var(--portal-muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;align-items:center;padding:.8rem 1rem;font-size:.65rem;display:flex}.portal-gantt__header-label,.portal-gantt__task{z-index:3;background:var(--portal-bg);border-right:var(--pack-rule);position:sticky;left:0}.portal-gantt__header-label{z-index:5;background:var(--portal-surface-strong)}.portal-gantt__axis{background:var(--gantt-month-lines);min-height:2.75rem;position:relative}.portal-gantt__tick{color:var(--portal-muted);white-space:nowrap;padding-inline-start:var(--pack-gantt-tick-inset);font-size:.65rem;position:absolute;top:50%;transform:translateY(-50%)}.portal-gantt__today{background:#e0533d;width:2px;position:absolute;top:0;bottom:0;box-shadow:0 0 0 4px #e0533d1a}.portal-gantt__row{border-bottom:var(--pack-rule);min-height:2.6rem}.portal-gantt__row:last-child{border-bottom:0}.portal-gantt__row:hover .portal-gantt__task,.portal-gantt__row:hover .portal-gantt__track,.portal-gantt__row:hover .portal-gantt__dates{background-color:color-mix(in srgb, var(--color-2) 4%, transparent)}.portal-gantt__task,.portal-gantt__dates,.portal-gantt__track{min-width:0;min-height:2.6rem;color:inherit;font:inherit;text-align:left;cursor:default;border:none}.portal-gantt__task{align-content:center;padding:.45rem 1rem;display:grid}.portal-gantt__task-name{text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:700;overflow:hidden}.portal-gantt__track{background:var(--gantt-month-lines), #f4f1e76b;padding:0;position:relative}.portal-gantt__bar{min-width:.75rem;height:1.55rem;color:var(--portal-fg);background:color-mix(in srgb, var(--color-2) 12%, transparent);border:1px solid color-mix(in srgb, var(--color-2) 28%, transparent);box-shadow:none;border-radius:999px;align-items:center;padding-inline:.55rem;display:flex;position:absolute;top:50%;overflow:hidden;transform:translateY(-50%)}.portal-gantt__bar span{text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.portal-gantt__dates{background:var(--portal-bg);color:var(--portal-muted);white-space:nowrap;border-left:var(--pack-rule);align-items:center;padding:.45rem 1rem;font-size:.74rem;display:flex}.portal-gantt__dates .mono{color:var(--portal-fg);font-size:.68rem}.portal-gantt__unscheduled{background:var(--portal-bg);border-top:1px solid var(--portal-border);gap:.5rem;margin:0;padding:1rem;display:grid}.portal-gantt__unscheduled-title{color:var(--portal-muted);margin:0 0 .25rem}.portal-unscheduled-task{color:inherit;background:var(--portal-wash);border:1px dashed color-mix(in srgb, var(--color-2) 24%, transparent);text-align:left;cursor:pointer;border-radius:.75rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem;display:flex}.portal-modal__panel{background:var(--portal-bg);color:var(--portal-fg);border:1px solid var(--portal-border);box-shadow:0 30px 100px color-mix(in srgb, var(--color-2) 18%, transparent);border-radius:1rem}.portal-empty{padding:var(--portal-card-padding);color:var(--portal-muted);background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:0}@media (width<=980px){.portal-programme__filters{grid-template-columns:1fr 1fr}.portal-field--search,.portal-filter-clear{grid-column:1/-1}.portal-programme-title{grid-template-columns:1fr}}@media (width<=640px){.portal-programme__filters{grid-template-columns:1fr}.portal-programme__summary{align-items:stretch}.portal-toggle,.portal-toggle button{width:100%}}body:has(.portal-main--document){--color-fg:var(--color-2);--color-bg:var(--color-0);color:var(--color-fg);background:var(--color-bg)}.portal-site-header{gap:var(--margin-small);color:var(--color-fg);background:0 0;grid-template-columns:1fr auto;align-items:center;display:grid}.portal-site-header__nav{gap:var(--margin-medium);flex-wrap:wrap;justify-content:flex-end;align-items:center;display:flex}.portal-project-switcher{position:relative}.portal-project-switcher summary{cursor:pointer;list-style:none}.portal-project-switcher summary::-webkit-details-marker{display:none}.portal-project-switcher__menu{z-index:10;min-width:min(20rem, calc(100vw - 2 * var(--site-gutter-inline)));background:var(--color-bg);border:1px solid color-mix(in srgb, var(--color-fg) 30%, transparent);padding:.5rem;display:grid;position:absolute;top:calc(100% + .75rem);right:0}.portal-project-switcher__menu a{color:var(--color-fg);font-size:var(--font-size-caption);padding:.75rem}.portal-project-switcher__menu a:hover,.portal-project-switcher__menu a:focus-visible,.portal-project-switcher__menu a.is-active{background:color-mix(in srgb, var(--color-fg) 12%, transparent)}.portal-site-header__nav .header-nav__link.is-active span{text-underline-offset:.2em;text-decoration:underline}.portal-auth-main{min-height:min(70vh,44rem);padding:0 var(--site-gutter-inline) var(--margin-large);align-items:center;display:grid}.portal-auth-section{width:100%;max-width:min(36rem,100%);color:var(--color-fg);background:0 0;margin:0;padding:0}.portal-auth-section:after{display:none}.portal-auth-form{gap:var(--margin-medium);width:100%;max-width:36rem;color:var(--color-fg);display:grid}.portal-auth-form__fields{gap:var(--margin-medium);display:grid}.portal-auth-field{gap:var(--margin-x-small);color:var(--color-fg);font-family:var(--font);font-size:inherit;letter-spacing:inherit;text-transform:none;display:grid}.portal-auth-field .label-icon-left{color:var(--color-fg)}.portal-auth-field input{width:100%;padding:0 0 var(--margin-x-small);appearance:none;border:0;border-bottom:var(--keyline) solid var(--color-fg);box-shadow:none;color:var(--color-fg);font-family:var(--font);font-size:var(--font-size);letter-spacing:inherit;background:0 0;border-radius:0;outline:none;margin:0;font-weight:400}@media (width<=600px){.portal-auth-field input{font-size:var(--font-size-mobile)}}.portal-auth-field input:-webkit-autofill,.portal-auth-field input:-webkit-autofill:hover,.portal-auth-field input:-webkit-autofill:focus{-webkit-text-fill-color:var(--color-fg);caret-color:var(--color-fg);box-shadow:0 0 0 1000px var(--color-bg) inset;transition:background-color 9999s ease-in-out}.portal-auth-form__actions{gap:var(--margin-large);justify-items:start;display:grid}.portal-auth-secondary{gap:var(--margin-x-small);color:var(--color-fg);justify-items:start;display:grid}.portal-auth-feedback{min-height:1.5rem}.portal-auth-feedback p{margin:0}.portal-auth-feedback .error{color:var(--color-4)}.portal-auth-feedback .success{color:var(--color-3)}.portal-prose{color:var(--portal-fg);line-height:1.5}.portal-prose p{margin:0 0 .75rem}.portal-prose p:last-child{margin-bottom:0}.portal-prose strong{font-weight:700}.portal-roadmap{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.portal-roadmap__phase{grid-template-columns:auto minmax(0,1fr);gap:1rem;display:grid}.portal-roadmap__index{letter-spacing:.08em;color:var(--portal-muted);padding-top:.35rem;font-size:.75rem}.portal-roadmap__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.35rem;display:flex}.portal-roadmap__header h2{margin:0;font-size:clamp(1.15rem,2vw,1.45rem)}.portal-roadmap__window{color:var(--portal-muted);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .75rem;font-size:.72rem}.portal-stack,.portal-stack__graph{gap:1rem;display:grid}.portal-stack__hint{letter-spacing:.04em;text-transform:uppercase;color:var(--portal-muted);margin:0;font-size:.72rem}.portal-stack__svg{background:var(--portal-wash);touch-action:none;border-radius:0;width:100%;height:auto;min-height:18rem}.portal-stack__edge{stroke:color-mix(in srgb, var(--color-2) 28%, transparent);stroke-width:2px}.portal-stack__node-group{cursor:grab}.portal-stack__node-group--dragging{cursor:grabbing}.portal-stack__node{fill:var(--color-0);stroke:var(--color-2);stroke-width:2px}.portal-stack__node--active{fill:var(--color-2)}.portal-stack__type{fill:var(--color-2);font-family:var(--font-mono);letter-spacing:.04em;font-size:.55rem}.portal-stack__node--active+.portal-stack__type,.portal-stack__node--active~.portal-stack__type{fill:var(--color-0)}.portal-stack__label{fill:var(--color-2);font-size:.72rem}.portal-pack-header{max-width:var(--pack-width);margin:0 0 var(--pack-header-margin-bottom);align-items:unset;color:var(--pack-ink);grid-template-columns:none;padding:0;display:block}.portal-pack-header .portal-label{margin:0 0 var(--pack-label-margin-bottom)}.portal-page-intro{gap:var(--pack-label-margin-bottom);display:grid}.portal-page-intro>.label-icon-left{margin-bottom:0}.portal-page-intro>:is(h1,h2){margin-top:0}.portal-pack-header__title{margin:0 0 var(--pack-heading-margin-bottom);max-width:none;color:var(--pack-accent);font-size:clamp(2.5rem,7vh,4rem);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-display);line-height:var(--pack-leading-title);text-wrap:balance}.portal-pack__nav{margin:1rem 0 0}.portal-pack{max-width:none;color:var(--pack-ink);counter-reset:pack-section;gap:0;margin:0;display:grid}.portal-pack :is(h1,h2,h3,h4,h5,h6),.portal-pack-header :is(h1,h2,h3,h4,h5,h6){max-width:none}.portal-pack :is(p,ul,ol),.portal-pack-header :is(p,ul,ol){max-width:var(--pack-measure)}.portal-pack :is(.portal-pack__asks,.portal-pack__rows,.portal-pack__deliverables,.portal-pack__timeline,.portal-pack__decisions,.portal-pack__stage-key),.portal-pack :is(table,.portal-gantt) :is(p,ul,ol){max-width:none}.portal-pack :is(h2,h3,h4,h5,h6){letter-spacing:var(--letter-spacing-tighter);margin-top:0;margin-bottom:0}.portal-pack__section{grid-template-columns:[content-start] var(--pack-width) [content-end] minmax(0, 1fr);gap:var(--pack-section-inner-gap);padding:var(--pack-section-gap) 0;color:var(--pack-ink);box-shadow:none;background:0 0;border:0;border-radius:0;grid-column:auto;grid-auto-flow:row;align-content:start;display:grid;position:relative}.portal-pack__section>*{grid-column:content-start/content-end}.portal-pack__section>.portal-pack__bleed{grid-column:1/-1}.portal-pack__section:first-child{padding-top:0}.portal-pack__section:last-child{padding-bottom:0}.portal-pack__section:before,.portal-pack__section:after{content:none;display:none}.portal-pack__section:not(:first-child):before{content:"";width:var(--pack-width);border-top:var(--pack-rule);display:block;position:absolute;top:0;left:0}.portal-pack__eyebrow{max-width:none;color:var(--pack-meta);font-size:var(--pack-font-meta);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing);line-height:var(--pack-leading-meta);text-transform:none;margin:0}.portal-pack__section h2{margin:0 0 var(--pack-heading-margin-bottom);color:var(--pack-accent);font-size:var(--pack-font-h2);line-height:var(--pack-leading-heading);counter-increment:pack-section}.portal-pack__section h2:before{content:counter(pack-section) ". "}.portal-pack__section h3,.portal-pack__section h3:not(:first-of-type){margin:var(--pack-h4-margin-top) 0 0;max-width:none;color:var(--pack-accent);font-size:var(--pack-font-h4);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);line-height:var(--pack-leading-meta);text-transform:none}.portal-pack__section h3:first-of-type{margin-top:var(--pack-item-gap)}.portal-pack .portal-prose{max-width:var(--pack-measure);color:var(--pack-ink);font-size:var(--pack-font-prose);letter-spacing:-.012em;line-height:var(--pack-leading-prose)}.portal-pack .portal-prose p{margin:0 0 1em}.portal-pack .portal-prose p:last-child{margin-bottom:0}.portal-pack__signal{font-weight:var(--font-weight-bold);white-space:nowrap}.portal-pack__signal:before{content:"";width:var(--pack-signal-dot-size);height:var(--pack-signal-dot-size);margin-right:var(--pack-signal-dot-gap);vertical-align:.08em;background:currentColor;border-radius:50%;display:inline-block}.portal-pack__signal--red{color:var(--pack-signal-red)}.portal-pack__signal--yellow{color:var(--pack-signal-yellow)}.portal-pack__signal--green{color:var(--pack-signal-green)}.portal-pack__back{max-width:var(--pack-width);margin:var(--pack-back-margin-top) 0 0;padding-top:var(--pack-back-pad-top);border-top:var(--pack-rule);justify-items:start;gap:.85rem;display:grid}.portal-pack__nav a,.portal-pack__back a,.portal-pack__print{color:var(--pack-accent)}@media print{.portal-site-header__nav,footer.mono,.portal-pack__nav,.portal-pack__back{display:none!important}.portal-main--document,.portal-shell{background:0 0!important}.portal-pack,.portal-pack-header{--pack-header-margin-bottom:1.4rem;--pack-section-gap:1.65rem;--pack-section-inner-gap:.8rem;--pack-heading-margin-bottom:.35rem;--pack-table-block-gap:.5rem;--pack-item-gap:.22rem;--pack-item-padding-block:.75rem;--pack-item-padding-block-first:0;--pack-marker-size:1.35rem;--pack-marker-gap:.65rem;--pack-marker-font-size:.62rem;--pack-table-pad-block:.62rem;--pack-table-pad-inline:.75rem;--pack-h4-margin-top:.9rem;--pack-back-margin-top:1.5rem;--pack-back-pad-top:.8rem;--pack-font-meta:.68rem;--pack-font-updated:.68rem;--pack-font-layer-label:.68rem;--pack-font-item-title:.78rem;--pack-font-item-body:.74rem;--pack-font-layer-title:.8rem;--pack-font-prose:.78rem;--pack-font-table:.7rem;--pack-font-lead:.82rem;--pack-font-h4:.78rem;--pack-font-back:.72rem;--pack-font-title:1.45rem;--pack-font-h2:1.08rem;--pack-font-h3:.95rem;--pack-leading-title:1.1;--pack-leading-heading:1.16;--pack-leading-h3:1.18;--pack-leading-meta:1.25;--pack-leading-item:1.25;--pack-leading-meta-loose:1.3;--pack-leading-updated:1.3;--pack-leading-lead:1.35;--pack-leading-body:1.38;--pack-leading-prose:1.45}.portal-pack-header__title{font-size:var(--pack-font-title)}}.portal-pack__asks,.portal-pack__rows,.portal-pack__deliverables,.portal-pack__timeline,.portal-pack__decisions{gap:0;margin:0;padding:0;list-style:none;display:grid}.portal-pack__asks,.portal-pack__decisions,.portal-pack__timeline{counter-reset:pack-item}.portal-pack__ask,.portal-pack__row,.portal-pack__deliverable,.portal-pack__milestone{gap:var(--pack-item-gap);padding:var(--pack-item-padding-block) 0;border-top:var(--pack-rule);display:grid}.portal-pack__ask:first-child,.portal-pack__row:first-child,.portal-pack__deliverable:first-child,.portal-pack__milestone:first-child{padding-top:var(--pack-item-padding-block-first);border-top:0}.portal-pack__ask,.portal-pack__decisions>.portal-pack__row{grid-template-columns:var(--pack-marker-size) minmax(0, 1fr);column-gap:var(--pack-marker-gap);counter-increment:pack-item;align-items:start}.portal-pack__ask:before,.portal-pack__decisions>.portal-pack__row:before,.portal-pack__milestone:before{content:counter(pack-item);width:var(--pack-marker-size);height:var(--pack-marker-size);border:var(--pack-marker-border-width) solid var(--pack-accent);color:var(--pack-accent);font-size:var(--pack-marker-font-size);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);border-radius:50%;place-items:center;margin-top:.1rem;line-height:1;display:grid}.portal-pack__ask>*,.portal-pack__decisions>.portal-pack__row>*{grid-column:2}.portal-pack__ask-what,.portal-pack__row-title,.portal-pack__deliverable-what,.portal-pack__milestone-title{color:var(--pack-accent);font-size:var(--pack-font-item-title);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);line-height:var(--pack-leading-item);margin:0}.portal-pack__ask-meta,.portal-pack__row-meta,.portal-pack__deliverable-when,.portal-pack__milestone-when{color:var(--pack-meta);font-size:var(--pack-font-meta);letter-spacing:var(--letter-spacing);line-height:var(--pack-leading-meta-loose);text-transform:none;margin:0}.portal-pack__ask-why,.portal-pack__row-body,.portal-pack__milestone-body{max-width:var(--pack-measure);color:var(--pack-ink);font-size:var(--pack-font-item-body);letter-spacing:var(--letter-spacing);line-height:var(--pack-leading-body);margin:.15rem 0 0}.portal-pack__deliverable{grid-template-columns:var(--pack-icon-col) minmax(0, 1fr) auto;column-gap:var(--pack-deliverable-gap);align-items:baseline}.portal-pack__deliverable-icon{color:var(--pack-accent);font-size:var(--font-size-caption-icon);line-height:1;translate:0 .08em}.portal-pack__deliverable-what{color:var(--pack-ink);font-weight:var(--font-weight-semibold)}.portal-pack__deliverable-when{white-space:nowrap}.portal-pack__table-wrap,.portal-pack .portal-gantt{margin-block:var(--pack-table-block-gap)}.portal-pack__table-wrap{overflow-x:auto}.portal-pack__table{border-collapse:collapse;width:100%;color:var(--pack-ink);font-size:var(--pack-font-table);letter-spacing:var(--letter-spacing);line-height:var(--pack-leading-body)}.portal-pack__table :is(th,td,p,ul,ol,li){font-size:inherit}.portal-pack__table th,.portal-pack__table td{padding:var(--pack-table-pad-block) var(--pack-table-pad-inline);border:var(--pack-rule);vertical-align:top;text-align:left}.portal-pack__table th{background:color-mix(in srgb, var(--pack-accent) 5%, transparent);color:var(--pack-ink);font-weight:var(--font-weight-bold);line-height:var(--pack-leading-meta);white-space:nowrap}.portal-pack__table td:first-child{width:var(--pack-table-col-label);color:var(--pack-ink);font-weight:400;line-height:var(--pack-leading-meta)}.portal-pack__table td:nth-child(2){width:var(--pack-table-col-mid)}.portal-pack__table-title{color:var(--pack-ink);letter-spacing:var(--letter-spacing-tight);font-weight:400;line-height:var(--pack-leading-meta);margin:0}.portal-pack__table-body{color:var(--pack-ink);line-height:var(--pack-leading-body);margin:0}.portal-pack__table ul{color:var(--pack-ink);line-height:var(--pack-leading-lead);margin:0;padding:0 0 0 1.15rem}.portal-pack__table li+li{margin-top:var(--pack-item-gap)}.portal-pack__table .portal-pack__status{color:var(--pack-ink);font-size:inherit;margin:0;font-weight:400;display:block}.portal-pack__table .portal-pack__status:before{content:none}.portal-vendor-priorities td:first-child{width:20%}.portal-vendor-priorities td:nth-child(2){width:45%}.portal-vendor-priorities td:nth-child(3){width:35%}.portal-vendor-list-table td:first-child{width:5rem}.portal-vendor-list-table td:nth-child(2){width:auto}.portal-vendor-assumptions td:first-child{width:32%}.portal-vendor-assumptions td:nth-child(2){width:68%}.portal-vendor-flow{gap:0;display:grid}.portal-vendor-flow__step{grid-template-columns:var(--pack-marker-size) minmax(0, 1fr);align-content:start;gap:var(--pack-item-gap) var(--pack-marker-gap);padding:var(--pack-item-padding-block) 0;background:0 0;border:0;display:grid;position:relative}.portal-vendor-flow__step:first-child{padding-top:var(--pack-item-padding-block-first)}.portal-vendor-flow__step:after{content:"";top:calc(var(--pack-marker-size) + .45rem);bottom:-.35rem;left:calc(var(--pack-marker-size) / 2);border-left:var(--pack-rule);position:absolute}.portal-vendor-flow__step:last-child:after{content:none}.portal-vendor-flow__step:not(:last-child):before{content:"";bottom:-.35rem;left:calc((var(--pack-marker-size) / 2) - .22rem);z-index:1;border-right:var(--pack-marker-border-width) solid var(--pack-accent);border-bottom:var(--pack-marker-border-width) solid var(--pack-accent);width:.42rem;height:.42rem;position:absolute;transform:rotate(45deg)}.portal-vendor-flow__step>div{border:var(--pack-rule);background:color-mix(in srgb, var(--pack-accent) 5%, transparent);gap:.55rem;padding:1.35rem;display:grid}.portal-vendor-flow__index{z-index:2;width:var(--pack-marker-size);height:var(--pack-marker-size);border:var(--pack-marker-border-width) solid var(--pack-accent);background:var(--portal-bg);color:var(--pack-accent);font-size:var(--pack-marker-font-size);font-weight:var(--font-weight-bold);border-radius:50%;place-items:center;line-height:1;display:grid;position:relative}.portal-vendor-flow__title{color:var(--pack-accent);font-size:var(--pack-font-item-title);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);line-height:var(--pack-leading-item);margin:0}.portal-vendor-flow__body{color:var(--pack-ink);font-size:var(--pack-font-item-body);line-height:var(--pack-leading-body);margin:0}.portal-pack__status{color:var(--pack-meta);font-size:var(--pack-font-meta);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing);text-transform:none;margin-left:.55rem;display:inline}.portal-pack__status:before{content:"· "}.portal-pack__milestone{grid-template-columns:var(--pack-marker-size) minmax(var(--pack-milestone-when-min), var(--pack-milestone-when-max)) minmax(0, 1fr);gap:var(--pack-item-gap) var(--pack-marker-gap);counter-increment:pack-item;align-items:start}.portal-pack__milestone-when{font-weight:var(--font-weight-medium);padding-top:.2rem}.portal-pack__milestone-title,.portal-pack__milestone-body{grid-column:3}.portal-pack__milestone-body{margin-top:0}.portal-pack__two-col{gap:0;display:grid}@media (width>=860px){.portal-pack__two-col{gap:0 var(--pack-two-col-gap);grid-template-columns:1fr 1fr}.portal-pack__two-col>.portal-pack__rows+.portal-pack__rows{padding-left:var(--pack-two-col-gap);border-left:var(--pack-rule)}.portal-pack__milestone{grid-template-columns:var(--pack-marker-size) minmax(var(--pack-milestone-when-min), var(--pack-milestone-when-max-wide)) minmax(0, 1fr)}}@media (width<=640px){.portal-pack__deliverable{grid-template-columns:var(--pack-icon-col) minmax(0, 1fr);gap:var(--pack-item-gap) var(--pack-deliverable-gap)}.portal-pack__deliverable-when{white-space:normal;grid-column:2}.portal-pack__milestone{grid-template-columns:var(--pack-marker-size) minmax(0, 1fr);gap:.3rem var(--pack-marker-gap)}.portal-pack__milestone-when,.portal-pack__milestone-title,.portal-pack__milestone-body{grid-column:2}.portal-pack__table th,.portal-pack__table td{padding:1rem 1.1rem}.portal-pack__table td:first-child,.portal-pack__table td:nth-child(2),.portal-vendor-priorities td:first-child,.portal-vendor-priorities td:nth-child(2),.portal-vendor-priorities td:nth-child(3){width:auto}}.portal-stack__detail{padding:var(--portal-card-padding);color:var(--portal-fg);background:var(--portal-bg);border:1px solid var(--portal-border);border-radius:0;gap:.55rem;display:grid}.portal-stack__detail h2{margin:0;font-size:1.25rem}.portal-stack__role{color:var(--portal-muted);margin:0}.portal-stack__links{margin:0;font-size:.9rem}.portal-todos__filters{grid-template-columns:minmax(14rem,2fr) minmax(8rem,.9fr) minmax(8rem,.9fr) auto}.portal-todos__groups{gap:1.5rem;display:grid}.portal-todos__group{color:inherit;background:0 0;grid-column:auto;gap:0;padding:0}.portal-todos__group:after{display:none}.portal-todos__group-title{letter-spacing:.06em;text-transform:uppercase;align-items:baseline;gap:.65rem;margin:0 0 .65rem;font-size:.78rem;display:flex}.portal-todos__group-count{opacity:.55}.portal-pack__stage-key{flex-wrap:wrap;gap:.65rem 1rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.portal-pack__stage-key--explained{max-width:var(--pack-measure);gap:.75rem;display:grid}.portal-pack__stage-key--explained li{grid-template-columns:5.5rem minmax(0,1fr);align-items:center;gap:.85rem;display:grid}.portal-pack__stage-key--explained p{color:var(--pack-ink);font-size:var(--pack-font-table);margin:0;line-height:1.45}.portal-pack__stage-key .portal-gantt__bar{justify-content:center;min-width:4.5rem;position:static;transform:none}.portal-gantt__bar--select{color:var(--portal-bg);background:color-mix(in srgb, var(--color-2) 78%, transparent);border-color:var(--color-2)}.portal-gantt__bar--safe{color:var(--portal-fg);background:color-mix(in srgb, var(--color-signal-yellow) 55%, transparent);border-color:color-mix(in srgb, var(--color-signal-yellow) 80%, var(--color-fg))}.portal-gantt__bar--deal{color:var(--portal-fg);background:color-mix(in srgb, var(--color-4) 42%, transparent);border-color:color-mix(in srgb, var(--color-4) 70%, var(--color-fg))}.portal-gantt__bar--build{color:#fff;background:color-mix(in srgb, var(--color-5) 82%, transparent);border-color:var(--color-5)}.portal-gantt__bar--deploy{color:var(--portal-fg);background:color-mix(in srgb, var(--color-3) 55%, transparent);border-color:color-mix(in srgb, var(--color-3) 70%, var(--color-fg))}.portal-gantt__bar--care{color:var(--portal-muted);background:color-mix(in srgb, var(--portal-fg) 10%, transparent);border-color:color-mix(in srgb, var(--portal-fg) 28%, transparent)}.portal-gantt__row--core .portal-gantt__task-name{color:var(--color-5)}.portal-matrix th,.portal-matrix td{white-space:nowrap}.portal-matrix td:first-child,.portal-matrix td:nth-child(2){width:auto}.portal-matrix__th{align-items:center;gap:.28em;display:inline-flex}.portal-matrix__hint{color:var(--portal-muted);cursor:help;outline:none;align-items:center;display:inline-flex;position:relative}.portal-matrix__hint-icon{width:.85em;height:.85em}.portal-matrix__hint-icon svg{width:100%;height:100%;display:block}.portal-matrix__hint-sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.portal-matrix__hint:after{content:none;z-index:5;background:var(--portal-fg);width:max-content;max-width:16rem;color:var(--portal-bg);font-family:var(--font-body);font-size:.78rem;font-weight:var(--font-weight-regular);letter-spacing:0;text-transform:none;white-space:normal;text-align:left;box-shadow:0 .35rem 1rem color-mix(in srgb, var(--portal-fg) 18%, transparent);pointer-events:none;border-radius:.35rem;padding:.45rem .6rem;line-height:1.35;position:absolute;top:calc(100% + .45rem);left:50%;transform:translate(-50%)}.portal-matrix__hint:hover:after,.portal-matrix__hint:focus-visible:after{content:attr(data-tip)}.portal-score{font-family:var(--font-mono);align-items:baseline;display:inline-flex}.portal-score--pencilled{color:var(--color-5)}.portal-score--ratified{color:var(--portal-fg)}.portal-score--bold{font-weight:var(--font-weight-bold)}.portal-score--empty{color:var(--portal-muted);opacity:.55}.portal-core-primer-pack{counter-reset:none;--pack-accent:var(--pack-ink);--pack-meta:var(--pack-ink)}.portal-core-primer-pack .portal-pack__section h2:before{content:none;counter-increment:none}.portal-core-primer-pack .portal-pack__eyebrow{align-items:center;gap:.45rem;display:inline-flex}.portal-core-icon.icon,.portal-core-compare__icon .icon,.portal-core-steps__icon .icon,.portal-core-primer__core-icon.icon,.portal-core-primer__tool-icon.icon{width:1.05rem;height:1.05rem;color:var(--pack-ink)}.portal-core-compare__icon,.portal-core-steps__icon{color:var(--pack-ink);margin-bottom:.4rem;display:inline-flex}.portal-core-primer__core-icon.icon,.portal-core-primer__tool-icon.icon{width:1.2rem;height:1.2rem;margin-bottom:.35rem}.portal-core-primer-pack .portal-pack__section:first-child h2{max-width:var(--pack-measure);font-size:clamp(1.25rem,2.2vw,1.55rem);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-tight);color:var(--pack-ink);line-height:1.35}.portal-core-primer-pack .portal-pack__section:first-child .portal-core-compare{margin-top:.85rem}.portal-core-compare{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;max-width:none;margin:.35rem 0 0;padding:0;list-style:none;display:grid}.portal-core-compare__card{border:var(--pack-rule);background:0 0;border-radius:0;gap:.2rem;padding:1.15rem 1.2rem;display:grid}.portal-core-compare__eyebrow{color:var(--pack-ink);font-size:var(--pack-font-meta);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing);text-transform:none;margin:0}.portal-core-compare__heading{font-size:clamp(1.2rem,2vw,1.45rem);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);line-height:var(--pack-leading-heading);color:var(--pack-ink);margin:0}.portal-core-compare__body{color:var(--pack-ink);margin:.15rem 0 0}.portal-core-compare__examples{flex-wrap:wrap;gap:.35rem .55rem;max-width:none;margin:.65rem 0 0;padding:0;list-style:none;display:flex}.portal-core-compare__examples li{color:var(--pack-ink);font-size:var(--pack-font-body,1rem);line-height:var(--pack-leading-body);margin:0;padding:.2rem 0}.portal-core-compare__examples li:not(:last-child):after{content:"·";margin-left:.55rem}.portal-core-glossary{gap:0;max-width:none;margin:.35rem 0 0;padding:0;list-style:none;display:grid}.portal-core-glossary__row{border-bottom:var(--pack-rule);grid-template-columns:minmax(9rem,12rem) 1fr;align-items:baseline;gap:.75rem 1.1rem;padding:.7rem 0;display:grid}.portal-core-glossary__row:last-child{border-bottom:none}.portal-core-glossary__term{color:var(--pack-ink);font-weight:var(--font-weight-semibold);align-items:center;gap:.45rem;display:inline-flex}.portal-core-glossary__meaning{color:var(--pack-ink)}.portal-core-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;max-width:none;margin:.35rem 0 0;padding:0;list-style:none;display:grid}.portal-core-steps__item{border:var(--pack-rule);background:0 0;border-radius:0;justify-items:start;gap:.2rem;padding:1.05rem 1.1rem;display:grid}.portal-core-steps__icon{color:var(--pack-ink);margin-bottom:.35rem;display:inline-flex}.portal-core-steps__n{color:var(--pack-ink);font-size:var(--pack-font-meta);font-weight:var(--font-weight-semibold)}.portal-core-steps__title{font-size:clamp(1.1rem,1.8vw,1.25rem);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);color:var(--pack-ink)}.portal-core-steps__note{color:var(--pack-ink);font-size:var(--pack-font-meta)}.portal-core-primer{max-width:var(--pack-width);gap:.85rem;margin-top:.35rem;padding:.5rem 0 .25rem;display:grid}.portal-core-primer__chip{align-items:center;gap:.4rem;display:inline-flex}.portal-core-primer__ingredients,.portal-core-primer__tools{flex-wrap:wrap;justify-content:center;gap:.55rem;display:flex}.portal-core-primer__chip{border:var(--pack-rule);color:var(--pack-ink);font-size:var(--pack-font-table);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-tight);background:0 0;border-radius:0;align-items:center;padding:.45rem .85rem;display:inline-flex}.portal-core-primer__caption{text-align:center;color:var(--pack-ink);font-size:var(--font-size-caption);letter-spacing:var(--letter-spacing);margin:0}.portal-core-primer__core{border:var(--pack-rule);background:0 0;border-radius:0;justify-items:center;gap:.2rem;width:100%;max-width:18rem;margin:.35rem auto 0;padding:1.15rem 1.5rem;display:grid}.portal-core-primer__core-label{color:var(--pack-ink);font-size:1.05rem;font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight)}.portal-core-primer__core-sub{color:var(--pack-ink);font-size:var(--font-size-caption)}.portal-core-primer__links{grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;width:100%;max-width:28rem;height:1.35rem;margin:0 auto;display:grid}.portal-core-primer__links span{background:var(--pack-rule-color);transform-origin:top;width:1px;height:100%;margin:0 auto;display:block}.portal-core-primer__tool{border:var(--pack-rule);text-align:center;border-radius:0;flex:9rem;max-width:12rem;padding:.85rem .95rem}.portal-core-primer__tool-label{color:var(--portal-fg);font-size:var(--pack-font-table);font-weight:var(--font-weight-bold);margin:0}.portal-core-primer__tool-note{color:var(--pack-ink);font-size:var(--font-size-caption);margin:.25rem 0 0}.portal-core-primer__caption--tools{margin-top:.15rem}@media (width<=640px){.portal-roadmap__phase,.portal-todos__filters{grid-template-columns:1fr}.portal-site-header__nav{gap:var(--margin-small)}.portal-site-header__nav .header-nav__link span{display:none}.portal-core-compare,.portal-core-steps{grid-template-columns:1fr}.portal-core-glossary__row{grid-template-columns:1fr;gap:.2rem}.portal-core-primer__tools{flex-direction:column;align-items:stretch}.portal-core-primer__tool{max-width:none}}
