/* Galgo Widgets · shared visual language */
:root {
    --gw-ink: #0f172a;
    --gw-ink-soft: #334155;
    --gw-muted: #64748b;
    --gw-subtle: #58677d; /* Small metadata remains readable on the light surfaces. */
    --gw-surface: #ffffff;
    --gw-surface-soft: #f8fafc;
    --gw-surface-muted: #f1f5f9;
    --gw-line: #dbe4ee;
    --gw-line-strong: #c7d4e2;
    --gw-primary: #1565c0;
    --gw-primary-dark: #0d47a1;
    --gw-primary-soft: #e8f2fd;
    --gw-info: #0277bd;
    --gw-success: #2e7d32;
    --gw-success-soft: #e8f5e9;
    --gw-warning: #b45309;
    --gw-warning-soft: #fff7e6;
    --gw-danger: #c62828;
    --gw-danger-soft: #ffebee;
    --gw-neutral: #475569;
    --gw-radius-sm: 7px;
    --gw-radius: 11px;
    --gw-radius-lg: 14px;
    --gw-shadow: 0 10px 28px rgba(15, 23, 42, .08);
    --gw-focus: 0 0 0 3px rgba(21, 101, 192, .24);
    --gw-heat-1: #d9eafa;
    --gw-heat-2: #a9cef2;
    --gw-heat-3: #6aa8e5;
    --gw-heat-4: #287bc9;
    --gw-heat-5: #0d47a1;
}

.galgo-widget-host {
    width: 100%;
    min-width: 0;
    container-type: inline-size;
}

.galgo-widget,
.galgo-widget * {
    box-sizing: border-box;
}

.galgo-widget {
    position: relative;
    min-width: 0;
    margin: 0 0 18px;
    overflow: hidden;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius-lg);
    background: var(--gw-surface);
    box-shadow: var(--gw-shadow);
    color: var(--gw-ink);
    font-family: Poppins, Muli, Inter, "Helvetica Neue", Arial, sans-serif;
    font-size: 13px;
    line-height: 1.5;
}

/* Document-fit shell.
 * MaterialAdmin already gives document sections the same outer gutter used by
 * fields and references. Widgets therefore own no second card or body gutter.
 * Fullscreen keeps the opaque, clipped shell defined by .gw-is-expanded. */
.galgo-widget:not(.gw-is-expanded) {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 8px 0 0;
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.galgo-widget:not(.gw-is-expanded) > .gw-header {
    min-height: 0;
    padding: 0 0 10px;
    border: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) > .gw-body {
    min-height: 0;
    padding: 0;
}

.galgo-widget:not(.gw-is-expanded) > .gw-footer {
    min-height: 0;
    padding: 6px 0 0;
    border: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) > .gw-state {
    margin: 0;
}

.gw-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    min-height: 66px;
    padding: 15px 17px;
    border-bottom: 1px solid var(--gw-line);
    background: linear-gradient(180deg, #fff 0%, #fbfdff 100%);
}

.gw-heading {
    min-width: 0;
}

.gw-title {
    margin: 0;
    color: var(--gw-ink);
    font-size: 16px;
    font-weight: 700;
    letter-spacing: -.015em;
    line-height: 1.3;
}

.gw-subtitle {
    max-width: 880px;
    margin: 4px 0 0;
    color: var(--gw-muted);
    font-size: 12px;
    line-height: 1.45;
}

.gw-toolbar {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 7px;
}

.gw-button,
.gw-record-link,
.gw-calendar__event-title,
.gw-schedule-list__title,
.gw-timeline__title,
.gw-map-list__title,
.gw-tree__label {
    appearance: none;
    border: 0;
    background: none;
    color: var(--gw-primary-dark);
    font: inherit;
    text-align: left;
}

.gw-button {
    display: inline-flex;
    min-height: 36px;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 7px 11px;
    border: 1px solid var(--gw-line-strong);
    border-radius: 999px;
    background: var(--gw-surface);
    color: var(--gw-ink-soft);
    cursor: pointer;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
    transition: border-color .16s ease, background-color .16s ease, color .16s ease, transform .16s ease;
}

.gw-button:hover {
    border-color: #8fb9e4;
    background: var(--gw-primary-soft);
    color: var(--gw-primary-dark);
}

.gw-button:active {
    transform: translateY(1px);
}

.gw-button--icon {
    width: 36px;
    padding: 0;
}

.gw-button--icon > span:not(.gw-icon),
.gw-button--icon-on-compact > span:not(.gw-icon) {
    display: none;
}

.gw-icon {
    display: inline-flex;
    width: 17px;
    height: 17px;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.gw-icon svg {
    display: block;
    width: 100%;
    height: 100%;
    fill: currentColor;
}

.gw-button:focus-visible,
.gw-record-link:focus-visible,
.gw-calendar button:focus-visible,
.gw-schedule__bar:focus-visible,
.gw-chart-wrap:focus-visible,
.gw-chart [tabindex]:focus-visible,
.gw-heatmap button:focus-visible,
.gw-tree button:focus-visible,
.gw-table button:focus-visible,
.gw-table-mobile-sort__select:focus-visible,
.gw-card-list button:focus-visible {
    outline: 2px solid var(--gw-primary);
    outline-offset: 2px;
    box-shadow: var(--gw-focus);
}

.gw-body {
    min-height: 90px;
    min-width: 0;
    padding: 17px;
}

/* The legacy theme styles every nested <section> with 24px (12px mobile).
 * Reset that accidental gutter; component classes declared later can still
 * opt into intentional padding for months, alerts and other true surfaces. */
.gw-body :where(section) {
    padding: 0;
}

.gw-footer {
    min-height: 31px;
    padding: 8px 17px;
    border-top: 1px solid var(--gw-line);
    background: var(--gw-surface-soft);
    color: var(--gw-muted);
    font-size: 10px;
    font-variant-numeric: tabular-nums;
    letter-spacing: .02em;
    text-align: right;
}

.gw-state {
    display: flex;
    min-height: 112px;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin: 17px;
    padding: 18px;
    border: 1px dashed var(--gw-line-strong);
    border-radius: var(--gw-radius);
    background: var(--gw-surface-soft);
    color: var(--gw-muted);
    text-align: center;
}

.gw-state[hidden] {
    display: none;
}

.gw-state--error {
    border-color: #ef9a9a;
    background: var(--gw-danger-soft);
    color: #8e1b1b;
}

.gw-is-expanded {
    position: fixed;
    z-index: 11000;
    inset: 12px;
    display: flex;
    flex-direction: column;
    margin: 0;
    box-shadow: 0 28px 80px rgba(15, 23, 42, .32);
}

.gw-is-expanded .gw-body {
    flex: 1 1 auto;
    overflow: auto;
}

.gw-has-expanded-widget {
    overflow: hidden !important;
}

.gw-muted {
    color: var(--gw-muted);
}

.gw-record-link,
.gw-calendar__event-title,
.gw-schedule-list__title,
.gw-timeline__title,
.gw-map-list__title,
.gw-tree__label {
    display: inline-block;
    padding: 0;
    cursor: pointer;
    font-weight: 700;
    text-decoration: none;
}

.gw-record-link:hover,
.gw-calendar__event-title:hover,
.gw-schedule-list__title:hover,
.gw-timeline__title:hover,
.gw-map-list__title:hover,
.gw-tree__label:hover {
    color: var(--gw-primary);
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Dialog and data fallback */
.gw-dialog-backdrop {
    position: fixed;
    z-index: 12000;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(15, 23, 42, .54);
    backdrop-filter: blur(3px);
}

.gw-dialog {
    display: flex;
    width: min(920px, 100%);
    max-height: min(720px, 88vh);
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius-lg);
    background: #fff;
    box-shadow: 0 30px 90px rgba(15, 23, 42, .36);
}

.gw-dialog__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 14px 16px;
    border-bottom: 1px solid var(--gw-line);
}

.gw-dialog__head h3 {
    margin: 0;
    font-size: 16px;
}

.gw-dialog__notice {
    margin: 0;
    padding: 8px 14px;
    border-bottom: 1px solid var(--gw-line);
    background: var(--gw-warning-soft);
    color: var(--gw-warning);
    font-size: 10px;
}

.gw-data-preview {
    margin: 0;
    padding: 18px;
    overflow: auto;
    background: #0f172a;
    color: #e2e8f0;
    font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    white-space: pre-wrap;
}

/* Charts */
.gw-chart-wrap {
    width: 100%;
    min-height: 260px;
    overflow: hidden;
}

.gw-chart {
    display: block;
    width: 100%;
    height: auto;
    max-height: 420px;
    overflow: visible;
}

/* El breakpoint JS por contenedor mantiene el chart legible incluso en navegadores
   sin soporte de CSS Container Queries. La tabla accesible permanece debajo. */
.galgo-widget[data-gw-size="mobile"] .gw-chart-wrap {
    min-height: 286px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    scrollbar-gutter: stable;
}

.galgo-widget[data-gw-size="mobile"] .gw-chart {
    width: 600px;
    min-width: 600px;
    max-height: none;
}

.gw-chart__grid {
    stroke: #dfe7ef;
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.gw-chart__axis-line {
    stroke: #9fb0c1;
}

.gw-chart__zero {
    stroke: #7f93a8;
    stroke-width: 1.5;
    vector-effect: non-scaling-stroke;
}

.gw-chart__axis,
.gw-chart__legend,
.gw-chart__legend-value,
.gw-map-fallback__label {
    fill: var(--gw-muted);
    font-family: Poppins, Muli, Arial, sans-serif;
    font-size: 11px;
}

.gw-chart__axis--label {
    font-size: 10px;
}

.gw-chart__value,
.gw-chart__legend-value {
    fill: var(--gw-ink-soft);
    font-size: 11px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.gw-chart__total {
    fill: var(--gw-ink);
    font-size: 30px;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}

.gw-chart__slice-value {
    fill: #fff;
    stroke: rgba(15, 23, 42, .68);
    stroke-width: 3px;
    paint-order: stroke fill;
    stroke-linejoin: round;
    font-family: Poppins, Muli, Arial, sans-serif;
    font-size: 14px;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    letter-spacing: -.02em;
    pointer-events: none;
    vector-effect: non-scaling-stroke;
}

.gw-chart__slice-value--center {
    font-size: 24px;
    letter-spacing: -.035em;
}

.gw-chart__gauge-value {
    fill: var(--gw-ink);
    font-size: 43px;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}

.gw-chart__gauge-label {
    fill: var(--gw-muted);
    font-size: 14px;
    font-weight: 600;
}

.gw-chart__mark {
    transition: opacity .15s ease, filter .15s ease;
}

.gw-chart__mark:hover,
.gw-chart [tabindex]:focus .gw-chart__mark {
    filter: brightness(.92);
    opacity: .9;
}

.gw-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    margin: 12px 0 0;
    padding: 11px 0 0;
    border-top: 1px solid var(--gw-line);
    list-style: none;
    color: var(--gw-muted);
    font-size: 11px;
}

.gw-legend li {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.gw-legend__swatch {
    width: 11px;
    height: 11px;
    flex: 0 0 auto;
    border: 1px solid rgba(15, 23, 42, .09);
    border-radius: 3px;
}

.gw-legend__swatch--line {
    height: 3px;
    border: 0;
    border-radius: 999px;
}

.gw-legend__swatch--area {
    border-radius: 50% 50% 3px 3px;
    opacity: .72;
}

.gw-legend__type {
    color: var(--gw-muted);
    font-size: 9px;
    font-weight: 500;
}

/* Shared quick filters for temporal widgets */
.gw-quick-filter {
    display: flex;
    min-width: 0;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 8px 12px;
    padding: 9px 10px;
    border: 1px solid var(--gw-line);
    border-radius: 12px;
    background: var(--gw-surface-soft);
}

.gw-quick-filter__controls {
    display: flex;
    min-width: 0;
    flex: 1 1 560px;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 8px;
}

.gw-quick-filter__field {
    display: grid;
    min-width: 145px;
    flex: 1 1 150px;
    gap: 4px;
}

.gw-quick-filter__field--search {
    min-width: min(260px, 100%);
    flex: 2 1 280px;
}

.gw-quick-filter__label {
    overflow: hidden;
    color: var(--gw-muted);
    font-size: 8px;
    font-weight: 750;
    letter-spacing: .055em;
    line-height: 1.2;
    text-overflow: ellipsis;
    text-transform: uppercase;
    white-space: nowrap;
}

.gw-quick-filter__input,
.gw-quick-filter__select {
    width: 100%;
    min-width: 0;
    min-height: 36px;
    padding: 7px 31px 7px 10px;
    border: 1px solid var(--gw-line-strong);
    border-radius: 9px;
    outline: none;
    background: #fff;
    color: var(--gw-ink-soft);
    font: inherit;
    font-size: 10px;
    font-weight: 600;
    transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}

.gw-quick-filter__input { padding-right: 10px; }
.gw-quick-filter__input::placeholder { color: var(--gw-subtle); font-weight: 500; }
.gw-quick-filter__input:focus,
.gw-quick-filter__select:focus {
    border-color: #6ea4d8;
    background: #fff;
    box-shadow: var(--gw-focus);
}

.gw-quick-filter__status {
    display: flex;
    min-height: 36px;
    flex: 0 1 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 5px;
}

.gw-quick-filter__count {
    color: var(--gw-muted);
    font-size: 9px;
    font-variant-numeric: tabular-nums;
    font-weight: 650;
    white-space: nowrap;
}

.gw-quick-filter__clear[hidden] { display: none; }
.gw-calendar__quick-filter { grid-area: filter; }

/* Calendar heatmap */
.gw-heatmap {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 15px 13px;
}

.gw-heatmap__month {
    min-width: 0;
}

.gw-heatmap__month h4 {
    margin: 0 0 7px;
    color: var(--gw-ink-soft);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.gw-heatmap__grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 3px;
}

.gw-heatmap__day {
    display: block;
    width: 100%;
    min-width: 7px;
    aspect-ratio: 1;
    padding: 0;
    border: 1px solid rgba(15, 23, 42, .06);
    border-radius: 3px;
    background: #e8eef5;
}

button.gw-heatmap__day {
    cursor: pointer;
}

.gw-heatmap__day--blank {
    border-color: transparent;
    background: transparent;
}

.gw-heatmap__day--1 { background: var(--gw-heat-1); }
.gw-heatmap__day--2 { background: var(--gw-heat-2); }
.gw-heatmap__day--3 { background: var(--gw-heat-3); }
.gw-heatmap__day--4 { background: var(--gw-heat-4); }
.gw-heatmap__day--5 { background: var(--gw-heat-5); }

/* Calendar */
.gw-calendar {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(260px, .34fr);
    grid-template-areas:
        "controls controls"
        "calendar agenda";
    gap: 16px;
    align-items: start;
}

.gw-calendar--with-filter {
    grid-template-areas:
        "controls controls"
        "filter filter"
        "calendar agenda";
}

.gw-calendar--with-legend {
    grid-template-areas:
        "controls controls"
        "legend legend"
        "calendar agenda";
}

.gw-calendar--with-filter.gw-calendar--with-legend {
    grid-template-areas:
        "controls controls"
        "legend legend"
        "filter filter"
        "calendar agenda";
}

.gw-calendar--agenda-hidden,
.gw-calendar--with-filter.gw-calendar--agenda-hidden {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
        "controls"
        "filter"
        "calendar";
}

.gw-calendar--with-legend.gw-calendar--agenda-hidden {
    grid-template-areas:
        "controls"
        "legend"
        "calendar";
}

.gw-calendar--with-filter.gw-calendar--with-legend.gw-calendar--agenda-hidden {
    grid-template-areas:
        "controls"
        "legend"
        "filter"
        "calendar";
}

.gw-calendar:not(.gw-calendar--with-filter):not(.gw-calendar--with-legend).gw-calendar--agenda-hidden {
    grid-template-areas:
        "controls"
        "calendar";
}

.gw-calendar__controls {
    grid-area: controls;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.gw-calendar__color-legend {
    grid-area: legend;
    margin: 0;
    padding: 8px 0;
    border-top: 0;
    border-bottom: 1px solid var(--gw-line);
    color: var(--gw-ink-soft);
    font-size: 12px;
}

.gw-calendar__navigation {
    display: grid;
    min-width: min(350px, 100%);
    grid-template-columns: 36px minmax(170px, 1fr) 36px;
    align-items: center;
    gap: 8px;
}

.gw-calendar__period-title,
.gw-calendar__month-title {
    margin: 0;
    color: var(--gw-ink);
    font-size: 14px;
    font-weight: 700;
    text-align: center;
    text-transform: capitalize;
}

.gw-calendar__commands {
    display: flex;
    min-width: 0;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}

.gw-calendar__view-switcher {
    display: inline-flex;
    overflow: hidden;
    border: 1px solid var(--gw-line-strong);
    border-radius: 999px;
    background: var(--gw-surface);
}

.gw-calendar__view-button {
    min-height: 34px;
    padding: 6px 10px;
    border: 0;
    border-right: 1px solid var(--gw-line);
    background: transparent;
    color: var(--gw-muted);
    cursor: pointer;
    font: inherit;
    font-size: 11px;
    font-weight: 750;
    transition: background-color .16s cubic-bezier(.25, 1, .5, 1), color .16s cubic-bezier(.25, 1, .5, 1);
}

.gw-calendar__view-button:last-child { border-right: 0; }
.gw-calendar__view-button:hover { background: var(--gw-primary-soft); color: var(--gw-primary-dark); }
.gw-calendar__view-button.is-active { background: var(--gw-primary); color: #fdfefe; }

.gw-calendar__surface {
    grid-area: calendar;
    min-width: 0;
    animation: gw-calendar-view-in .18s cubic-bezier(.25, 1, .5, 1) both;
}

@keyframes gw-calendar-view-in {
    from { opacity: .72; transform: translateY(3px); }
    to { opacity: 1; transform: translateY(0); }
}

.gw-calendar__grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 5px;
}

.gw-calendar__weekday {
    padding: 5px 2px;
    color: var(--gw-muted);
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    text-transform: uppercase;
}

.gw-calendar__cell {
    position: relative;
    min-width: 0;
    min-height: 104px;
    overflow: hidden;
    padding: 0;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius-sm);
    background: #fdfefe;
    color: var(--gw-ink-soft);
    text-align: left;
    transition: border-color .14s cubic-bezier(.25, 1, .5, 1), background-color .14s cubic-bezier(.25, 1, .5, 1);
}

.gw-calendar__cell:focus-within,
.gw-calendar__cell:hover {
    border-color: #8fb9e4;
    background: #f6faff;
}

.gw-calendar__cell--blank {
    border-color: transparent;
    background: var(--gw-surface-soft);
}

.gw-calendar__day-trigger {
    display: flex;
    width: 100%;
    min-height: 38px;
    align-items: center;
    justify-content: flex-start;
    padding: 6px 7px 4px;
    border: 0;
    background: transparent;
    color: var(--gw-ink-soft);
    cursor: pointer;
    font: inherit;
    text-align: left;
}

.gw-calendar__day-trigger:hover { color: var(--gw-primary-dark); }
.gw-calendar__day-trigger.is-selected { background: var(--gw-primary-soft); color: var(--gw-primary-dark); }

.gw-calendar__day-number {
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.gw-calendar__month-events {
    display: grid;
    gap: 3px;
    padding: 0 5px 5px;
}

.gw-calendar__month-event,
.gw-calendar-timegrid__all-day-event {
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    padding: 4px 6px;
    border: 0;
    border-radius: 5px;
    background: color-mix(in srgb, var(--gw-event-color) 10%, #fdfefe);
    box-shadow: inset 0 2px 0 var(--gw-event-color);
    color: var(--gw-ink-soft);
    cursor: default;
    font: inherit;
    font-size: 11px;
    font-weight: 650;
    line-height: 1.25;
    text-align: left;
    text-overflow: ellipsis;
    white-space: nowrap;
}

button.gw-calendar__month-event,
button.gw-calendar-timegrid__all-day-event {
    color: var(--gw-primary-dark);
    cursor: pointer;
}

.gw-calendar__more {
    min-height: 22px;
    padding: 2px 5px;
    border: 0;
    border-radius: 5px;
    background: var(--gw-surface-muted);
    color: var(--gw-primary-dark);
    cursor: pointer;
    font: inherit;
    font-size: 10px;
    font-weight: 750;
    text-align: left;
}

.gw-calendar__dots {
    position: absolute;
    right: 6px;
    bottom: 7px;
    left: 6px;
    display: none;
    gap: 3px;
}

.gw-calendar__dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
}

.gw-calendar__agenda {
    grid-area: agenda;
    max-height: 610px;
    overflow: auto;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: var(--gw-surface-soft);
}

.gw-calendar__agenda > h4 {
    position: sticky;
    z-index: 1;
    top: 0;
    margin: 0;
    padding: 12px 13px;
    border-bottom: 1px solid var(--gw-line);
    background: #fff;
    color: var(--gw-ink-soft);
    font-size: 12px;
    font-weight: 700;
    text-transform: capitalize;
}

.gw-calendar__agenda > .gw-muted {
    margin: 0;
    padding: 18px 13px;
}

.gw-calendar__event {
    display: grid;
    grid-template-columns: 10px minmax(0, 1fr);
    align-items: start;
    gap: 10px;
    padding: 11px 13px;
    border-bottom: 1px solid var(--gw-line);
    background: #fff;
}

.gw-calendar__event:last-child {
    border-bottom: 0;
}

.gw-calendar__event-marker {
    width: 9px;
    height: 9px;
    margin-top: 4px;
    border-radius: 50%;
    background: var(--gw-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 10%, transparent);
}

.gw-calendar__event strong,
.gw-calendar__event-title {
    display: block;
    font-size: 12px;
}

.gw-calendar__event div > span {
    display: block;
    margin-top: 3px;
    color: var(--gw-muted);
    font-size: 10px;
}

.gw-calendar-tooltip {
    position: absolute;
    z-index: 30;
    width: min(320px, calc(100% - 16px));
    padding: 12px 13px;
    border: 1px solid rgba(203, 213, 225, .2);
    border-radius: 9px;
    background: #172235;
    box-shadow: 0 14px 34px rgba(15, 23, 42, .28);
    color: #f8fafc;
    pointer-events: none;
}

.gw-calendar-tooltip__title {
    display: block;
    margin-bottom: 9px;
    font-size: 13px;
    font-weight: 750;
    line-height: 1.35;
}

.gw-calendar-tooltip__details {
    display: grid;
    grid-template-columns: minmax(74px, auto) minmax(0, 1fr);
    gap: 5px 10px;
    margin: 0;
    font-size: 11px;
    line-height: 1.4;
}

.gw-calendar-tooltip__details dt {
    color: #aebed1;
    font-weight: 650;
}

.gw-calendar-tooltip__details dd {
    min-width: 0;
    margin: 0;
    overflow-wrap: anywhere;
    color: #f8fafc;
}

/* Week and day time grid */
.gw-calendar-timegrid__scroll {
    max-height: 650px;
    overflow: auto;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: #fdfefe;
}

.gw-calendar-timegrid {
    display: grid;
    min-width: 950px;
    grid-template-columns: 52px repeat(var(--gw-calendar-days), minmax(128px, 1fr));
    align-items: stretch;
}

.gw-calendar-timegrid--day { min-width: 430px; grid-template-columns: 62px minmax(360px, 1fr); }

.gw-calendar-timegrid__corner,
.gw-calendar-timegrid__day-head {
    position: sticky;
    z-index: 4;
    top: 0;
    min-height: 48px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-left: 1px solid var(--gw-line);
    background: rgba(248, 250, 252, .98);
}

.gw-calendar-timegrid__corner {
    z-index: 5;
    display: grid;
    place-items: center;
    border-left: 0;
    color: var(--gw-muted);
    font-size: 10px;
    font-weight: 750;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.gw-calendar-timegrid__day-head {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 7px;
    color: var(--gw-ink-soft);
    cursor: pointer;
    font: inherit;
    text-transform: capitalize;
}

.gw-calendar-timegrid__day-head > span { font-size: 11px; font-weight: 700; }
.gw-calendar-timegrid__day-head > strong {
    display: grid;
    min-width: 20px;
    height: 20px;
    place-items: center;
    border-radius: 999px;
    background: var(--gw-surface-muted);
    color: var(--gw-muted);
    font-size: 11px;
}
.gw-calendar-timegrid__day-head:hover { background: var(--gw-primary-soft); color: var(--gw-primary-dark); }
.gw-calendar-timegrid__day-head.is-today > strong { background: var(--gw-primary); color: #fdfefe; }
.gw-calendar-timegrid__day-head.is-selected { background: var(--gw-primary-soft); box-shadow: inset 0 -3px 0 var(--gw-primary); }

.gw-calendar-timegrid__all-day-label,
.gw-calendar-timegrid__all-day {
    position: sticky;
    z-index: 3;
    top: 48px;
    min-height: 39px;
    border-bottom: 1px solid var(--gw-line);
    background: rgba(253, 254, 254, .98);
}

.gw-calendar-timegrid__all-day-label { border-right: 1px solid var(--gw-line); }
.gw-calendar-timegrid__all-day { display: grid; align-content: start; gap: 3px; padding: 5px; border-left: 1px solid var(--gw-line); }

.gw-calendar-timegrid__rail,
.gw-calendar-timegrid__track { position: relative; min-height: 208px; }

.gw-calendar-timegrid__rail {
    border-right: 1px solid var(--gw-line);
    background: var(--gw-surface-soft);
}

.gw-calendar-timegrid__rail > span {
    position: absolute;
    right: 7px;
    transform: translateY(-50%);
    color: var(--gw-muted);
    font-size: 10px;
    font-variant-numeric: tabular-nums;
}

.gw-calendar-timegrid__track {
    overflow: hidden;
    border-left: 1px solid var(--gw-line);
    background: repeating-linear-gradient(to bottom, transparent 0, transparent 51px, var(--gw-line) 51px, var(--gw-line) 52px);
}

.gw-calendar-timegrid__track.is-today {
    background-color: color-mix(in srgb, var(--gw-primary-soft) 48%, transparent);
}

.gw-calendar-timegrid__now {
    position: absolute;
    z-index: 3;
    right: 0;
    left: 0;
    height: 2px;
    background: #c43d50;
    box-shadow: 0 1px 4px rgba(127, 29, 45, .22);
    pointer-events: none;
}

.gw-calendar-timegrid__now::before {
    position: absolute;
    top: 50%;
    left: -1px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #c43d50;
    content: '';
    transform: translateY(-50%);
}

.gw-calendar-timegrid__now-label {
    position: absolute;
    top: 5px;
    left: 7px;
    padding: 2px 5px;
    border-radius: 4px;
    background: #7f1d2d;
    color: #fff9fa;
    font-size: 9px;
    font-weight: 750;
    line-height: 1.2;
    white-space: nowrap;
}

.gw-calendar-timegrid__event {
    position: absolute;
    z-index: 1;
    display: block;
    min-height: 32px;
    overflow: hidden;
    padding: 7px 6px 5px;
    border: 1px solid color-mix(in srgb, var(--gw-event-color) 28%, var(--gw-line));
    border-radius: 7px;
    background: color-mix(in srgb, var(--gw-event-color) 10%, #fdfefe);
    box-shadow: inset 0 3px 0 var(--gw-event-color), 0 2px 7px rgba(15, 23, 42, .08);
    color: var(--gw-ink-soft);
    cursor: default;
    font: inherit;
    text-align: left;
}

button.gw-calendar-timegrid__event { color: var(--gw-primary-dark); cursor: pointer; }
.gw-calendar-timegrid__event:hover { z-index: 2; filter: brightness(.985); }
.gw-calendar-timegrid__event strong,
.gw-calendar-timegrid__event span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gw-calendar-timegrid__event strong { font-size: 11px; line-height: 1.25; }
.gw-calendar-timegrid__event span { margin-top: 2px; color: var(--gw-neutral); font-size: 10px; font-variant-numeric: tabular-nums; }

/* Chronological list */
.gw-calendar-list {
    overflow: hidden;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: #fdfefe;
}

.gw-calendar-list__day + .gw-calendar-list__day { border-top: 1px solid var(--gw-line); }
.gw-calendar-list__day-head {
    display: flex;
    width: 100%;
    min-height: 43px;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 12px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    background: var(--gw-surface-soft);
    color: var(--gw-ink-soft);
    cursor: pointer;
    font: inherit;
    text-align: left;
}
.gw-calendar-list__day-head:hover,
.gw-calendar-list__day-head.is-selected { background: var(--gw-primary-soft); color: var(--gw-primary-dark); }
.gw-calendar-list__day-head strong { font-size: 12px; text-transform: capitalize; }
.gw-calendar-list__day-head span { color: var(--gw-muted); font-size: 10px; font-weight: 700; }
.gw-calendar-list__event {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    gap: 12px;
    padding: 10px 12px;
    box-shadow: inset 0 2px 0 var(--gw-event-color);
}
.gw-calendar-list__event + .gw-calendar-list__event { border-top: 1px solid var(--gw-line); }
.gw-calendar-list__event time { color: var(--gw-muted); font-size: 10px; font-variant-numeric: tabular-nums; font-weight: 700; }
.gw-calendar-list__event-title { display: block; padding: 0; border: 0; background: transparent; color: var(--gw-primary-dark); cursor: default; font: inherit; font-size: 12px; font-weight: 700; text-align: left; }
button.gw-calendar-list__event-title { cursor: pointer; }
.gw-calendar-list__event div > span { display: block; margin-top: 2px; color: var(--gw-muted); font-size: 10px; }
.gw-calendar-list__empty { display: grid; gap: 4px; padding: 28px 18px; color: var(--gw-muted); text-align: center; }
.gw-calendar-list__empty strong { color: var(--gw-ink-soft); font-size: 12px; }
.gw-calendar-list__empty span { font-size: 10px; }

/* Schedule and Gantt */
.gw-schedule {
    min-width: 690px;
    overflow-x: auto;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
}

.gw-schedule__scale {
    display: flex;
    justify-content: space-between;
    margin-left: 230px;
    padding: 9px 11px;
    border-bottom: 1px solid var(--gw-line);
    background: var(--gw-surface-soft);
    color: var(--gw-muted);
    font-size: 10px;
    font-weight: 600;
}

.gw-schedule__row {
    display: grid;
    grid-template-columns: 230px minmax(460px, 1fr);
    min-height: 52px;
    border-bottom: 1px solid var(--gw-line);
}

.gw-schedule__row:last-child {
    border-bottom: 0;
}

.gw-schedule__label {
    display: flex;
    min-width: 0;
    flex-direction: column;
    justify-content: center;
    padding: 8px 11px;
    border-right: 1px solid var(--gw-line);
    background: #fff;
}

.gw-schedule__label strong {
    overflow: hidden;
    color: var(--gw-ink-soft);
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gw-schedule__label span {
    overflow: hidden;
    margin-top: 2px;
    color: var(--gw-muted);
    font-size: 9px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gw-schedule__lane {
    position: relative;
    overflow: hidden;
    background-color: var(--gw-surface-soft);
    background-image: linear-gradient(to right, rgba(100, 116, 139, .09) 1px, transparent 1px);
    background-size: 10% 100%;
}

.gw-schedule__bar {
    position: absolute;
    top: 12px;
    height: 28px;
    min-width: 8px;
    overflow: hidden;
    padding: 0;
    border: 1px solid var(--gw-item-color);
    border-radius: 6px;
    background: #e8f2fd;
    border-color: color-mix(in srgb, var(--gw-item-color) 75%, #0f172a);
    background: color-mix(in srgb, var(--gw-item-color) 28%, #fff);
    cursor: pointer;
}

.gw-schedule__progress {
    position: absolute;
    inset: 0 auto 0 0;
    display: block;
    background: var(--gw-item-color);
    opacity: .76;
}

.gw-schedule-list {
    display: none;
    gap: 9px;
}

.gw-schedule-list__item {
    display: grid;
    gap: 5px;
    padding: 11px 12px;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: #fff;
}

.gw-schedule-list__item > span:not(.gw-schedule-list__meter) {
    color: var(--gw-muted);
    font-size: 10px;
}

.gw-schedule-list__meter {
    display: block;
    height: 6px;
    overflow: hidden;
    border-radius: 999px;
    background: var(--gw-surface-muted);
}

.gw-schedule-list__meter i {
    display: block;
    height: 100%;
    border-radius: inherit;
}

.galgo-widget[data-gw-size="compact"] .gw-schedule,
.galgo-widget[data-gw-size="mobile"] .gw-schedule {
    display: none;
}

.galgo-widget[data-gw-size="compact"] .gw-schedule-list,
.galgo-widget[data-gw-size="mobile"] .gw-schedule-list {
    display: grid;
}

/* Timeline */
.gw-timeline {
    position: relative;
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

.gw-timeline::before {
    position: absolute;
    top: 9px;
    bottom: 9px;
    left: 7px;
    width: 2px;
    background: #c9d8e8;
    content: "";
}

.gw-timeline__item {
    position: relative;
    display: grid;
    grid-template-columns: 16px minmax(0, 1fr);
    gap: 13px;
    padding: 0 0 17px;
}

.gw-timeline__item:last-child {
    padding-bottom: 0;
}

.gw-timeline__marker {
    z-index: 1;
    width: 16px;
    height: 16px;
    margin-top: 5px;
    border: 3px solid #fff;
    border-radius: 50%;
    background: var(--gw-primary);
    box-shadow: 0 0 0 1px #9fc1e3;
}

.gw-timeline__content {
    padding: 11px 13px;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: #fff;
}

.gw-timeline__time {
    display: block;
    margin-bottom: 3px;
    color: var(--gw-muted);
    font-size: 10px;
    font-weight: 600;
}

.gw-timeline__title {
    margin: 0;
    color: var(--gw-ink);
    font-size: 13px;
}

.gw-timeline__content p {
    margin: 5px 0 0;
    color: var(--gw-ink-soft);
    font-size: 11px;
}

/* Proportional horizontal timeline inspired by Galgo tracking steps */
.gw-timeline-horizontal {
    display: grid;
    min-width: 0;
    gap: 10px;
}

.gw-timeline-horizontal__header {
    display: flex;
    min-width: 0;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 14px;
}

.gw-timeline-horizontal__header > div:first-child {
    display: grid;
    gap: 2px;
}

.gw-timeline-horizontal__eyebrow {
    color: var(--gw-primary-dark);
    font-size: 8px;
    font-weight: 750;
    letter-spacing: .065em;
    text-transform: uppercase;
}

.gw-timeline-horizontal__header strong {
    color: var(--gw-ink);
    font-size: 13px;
    font-weight: 750;
}

.gw-timeline-horizontal__summary {
    display: flex;
    min-width: 0;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    color: var(--gw-muted);
    font-size: 9px;
    font-variant-numeric: tabular-nums;
}

.gw-timeline-horizontal__viewport {
    width: 100%;
    min-width: 0;
    overflow: auto hidden;
    border: 1px solid var(--gw-line);
    border-radius: 14px;
    outline: none;
    background: #fff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .035);
    scrollbar-color: #a9bdd1 transparent;
    scrollbar-width: thin;
}

.gw-timeline-horizontal__viewport:focus-visible {
    border-color: #75a9da;
    box-shadow: var(--gw-focus);
}

.gw-timeline-horizontal__graphic {
    display: block;
    width: 100%;
    height: auto;
    min-height: 102px;
}

.gw-timeline-horizontal__track {
    fill: #f7fafc;
    stroke: #e3ebf3;
    stroke-width: 1;
}

.gw-timeline-horizontal__grid-line {
    stroke: #e5edf5;
    stroke-dasharray: 3 4;
    stroke-width: 1;
}

.gw-timeline-horizontal__axis {
    stroke: #a9b8c8;
    stroke-linecap: round;
    stroke-width: 1.5;
}

.gw-timeline-horizontal__tick { stroke: #8295a9; stroke-width: 1; }
.gw-timeline-horizontal__tick-label {
    fill: #64748b;
    font: 600 9px Inter, Arial, sans-serif;
    letter-spacing: .015em;
}

.gw-timeline-horizontal__datum { outline: none; }
.gw-timeline-horizontal__datum.is-actionable { cursor: pointer; }
.gw-timeline-horizontal__segment,
.gw-timeline-horizontal__milestone {
    transform-box: fill-box;
    transform-origin: left center;
    animation: gw-timeline-segment-in .42s cubic-bezier(.22, 1, .36, 1) both;
    animation-delay: var(--gw-timeline-delay, 0ms);
    filter: drop-shadow(0 2px 3px rgba(15, 23, 42, .16));
    transition: filter .16s ease, opacity .16s ease;
}

.gw-timeline-horizontal__milestone { transform-origin: center; }
.gw-timeline-horizontal__node {
    fill: #fff;
    stroke: var(--gw-item-color, var(--gw-primary));
    stroke-width: 2.2;
    pointer-events: none;
}

.gw-timeline-horizontal__duration {
    fill: #fff;
    font: 750 8px Inter, Arial, sans-serif;
    letter-spacing: .01em;
    pointer-events: none;
}

.gw-timeline-horizontal__datum.is-actionable:hover .gw-timeline-horizontal__segment,
.gw-timeline-horizontal__datum.is-actionable:hover .gw-timeline-horizontal__milestone,
.gw-timeline-horizontal__datum:focus-visible .gw-timeline-horizontal__segment,
.gw-timeline-horizontal__datum:focus-visible .gw-timeline-horizontal__milestone {
    filter: drop-shadow(0 5px 7px rgba(15, 23, 42, .26)) saturate(1.08);
    stroke: #10233a;
    stroke-width: 1.5;
}

.gw-timeline-horizontal__legend {
    display: grid;
    margin: 0;
    padding: 0;
    grid-template-columns: repeat(auto-fit, minmax(235px, 1fr));
    gap: 7px;
    list-style: none;
}

.gw-timeline-horizontal__legend-item {
    display: grid;
    min-width: 0;
    grid-template-columns: 10px minmax(0, 1fr);
    align-items: start;
    gap: 8px;
    padding: 9px 10px;
    border: 1px solid var(--gw-line);
    border-radius: 10px;
    background: #fff;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.gw-timeline-horizontal__legend-item:hover {
    border-color: #bad1e7;
    box-shadow: 0 5px 14px rgba(15, 23, 42, .055);
}

.gw-timeline-horizontal__legend-marker {
    width: 9px;
    height: 9px;
    margin-top: 4px;
    border: 2px solid #fff;
    border-radius: 50%;
    box-shadow: 0 0 0 1px #a9bfd5;
}

.gw-timeline-horizontal__legend-copy { min-width: 0; }
.gw-timeline-horizontal__legend-title {
    appearance: none;
    display: block;
    width: 100%;
    padding: 0;
    border: 0;
    overflow: hidden;
    background: none;
    color: var(--gw-primary-dark);
    cursor: pointer;
    font-family: inherit;
    font-size: 10px;
    font-weight: 750;
    text-align: left;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gw-timeline-horizontal__legend-title:hover {
    color: var(--gw-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.gw-timeline-horizontal__legend-title:focus-visible {
    border-radius: 3px;
    outline: 2px solid var(--gw-primary);
    outline-offset: 2px;
}

.gw-timeline-horizontal__legend-time {
    display: block;
    margin-top: 2px;
    overflow: hidden;
    color: var(--gw-muted);
    font-size: 8px;
    font-variant-numeric: tabular-nums;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gw-timeline-horizontal__legend-copy p {
    display: -webkit-box;
    margin: 5px 0 0;
    overflow: hidden;
    color: var(--gw-ink-soft);
    font-size: 9px;
    line-height: 1.4;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

@keyframes gw-timeline-segment-in {
    from { opacity: .15; transform: scaleX(.03); }
    to { opacity: 1; transform: scaleX(1); }
}

.gw-status-pill {
    display: inline-flex;
    margin-top: 7px;
    padding: 3px 8px;
    border: 1px solid #b9d3ec;
    border-radius: 999px;
    background: var(--gw-primary-soft);
    color: var(--gw-primary-dark);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}

/* Map */
.gw-map-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(220px, .34fr);
    gap: 14px;
}

.gw-map-canvas {
    min-height: 380px;
    overflow: hidden;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: #eef5fb;
}

.gw-map-fallback {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 300px;
}

.gw-map-list {
    max-height: 380px;
    margin: 0;
    padding: 0;
    overflow: auto;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: #fff;
    list-style: none;
    counter-reset: gw-map;
}

.gw-map-list li {
    position: relative;
    display: grid;
    gap: 3px;
    padding: 10px 11px 10px 34px;
    border-bottom: 1px solid var(--gw-line);
    counter-increment: gw-map;
}

.gw-map-list li::before {
    position: absolute;
    top: 11px;
    left: 10px;
    display: grid;
    width: 17px;
    height: 17px;
    place-items: center;
    border-radius: 50%;
    background: var(--gw-primary);
    color: #fff;
    content: counter(gw-map);
    font-size: 8px;
    font-weight: 700;
}

.gw-map-list li:last-child {
    border-bottom: 0;
}

.gw-map-list li > span {
    color: var(--gw-muted);
    font-size: 9px;
    font-variant-numeric: tabular-nums;
}

/* Tree and media */
.gw-tree,
.gw-tree ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.gw-tree ul {
    margin-left: 25px;
    border-left: 1px solid #cbd9e8;
}

.gw-tree__line {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    padding: 5px 8px;
    border-bottom: 1px solid var(--gw-line);
}

.gw-tree__branch {
    width: 8px;
    height: 8px;
    flex: 0 0 auto;
    border: 2px solid var(--gw-primary);
    border-radius: 50%;
    background: #fff;
}

.gw-tree__meta {
    margin-left: auto;
    color: var(--gw-muted);
    font-size: 10px;
}

.gw-media {
    display: block;
    width: 100%;
    max-height: min(68vh, 720px);
    border-radius: var(--gw-radius);
    background: #0f172a;
}

.gw-callout {
    margin: 0;
    padding: 12px 14px;
    border: 1px solid var(--gw-line);
    border-left-width: 4px;
    border-radius: var(--gw-radius-sm);
    background: var(--gw-surface-soft);
}

.gw-callout--warning {
    border-color: #f0bf73;
    background: var(--gw-warning-soft);
    color: #854d0e;
}

/* Premium interactive visualization layer */
.gw-sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.gw-chart-wrap {
    position: relative;
    padding: 8px 8px 2px;
    border: 1px solid #e5edf5;
    border-radius: var(--gw-radius);
    background:
        radial-gradient(circle at 12% 4%, rgba(21, 101, 192, .055), transparent 34%),
        linear-gradient(180deg, #fff 0%, #fbfdff 100%);
}

.gw-chart-wrap--radial {
    display: grid;
    min-height: 0;
    grid-template-columns: minmax(250px, 1.08fr) minmax(220px, .92fr);
    align-items: center;
    gap: clamp(12px, 3cqi, 28px);
    padding: 14px;
    overflow: visible;
}

.gw-chart--radial {
    width: 100%;
    min-width: 0;
    max-height: 360px;
}

.gw-chart-radial__legend {
    display: grid;
    min-width: 0;
    gap: 7px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.gw-chart-radial__legend li {
    display: grid;
    min-width: 0;
    grid-template-columns: 11px minmax(0, 1fr) auto;
    align-items: center;
    gap: 9px;
    padding: 9px 10px;
    border: 1px solid #e3ecf5;
    border-radius: 9px;
    background: rgba(248, 251, 255, .86);
}

.gw-chart-radial__swatch {
    width: 11px;
    height: 11px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 4px;
    box-shadow: 0 2px 5px rgba(15, 23, 42, .08);
}

.gw-chart-radial__label {
    overflow: hidden;
    color: var(--gw-ink-soft);
    font-size: 10px;
    font-weight: 650;
    line-height: 1.3;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gw-chart-radial__metric {
    display: grid;
    min-width: 52px;
    justify-items: end;
    color: var(--gw-ink);
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
}

.gw-chart-radial__metric strong { font-size: 11px; }
.gw-chart-radial__metric small { margin-top: 3px; color: var(--gw-muted); font-size: 9px; }

.galgo-widget[data-gw-size="mobile"] .gw-chart-wrap--radial {
    min-height: 0;
    overflow: visible;
}

.galgo-widget[data-gw-size="mobile"] .gw-chart--radial {
    width: 100%;
    min-width: 0;
    max-height: 320px;
}

.gw-chart__datum {
    cursor: pointer;
    outline: none;
    pointer-events: bounding-box;
    transition: opacity .18s cubic-bezier(.22, 1, .36, 1), filter .18s ease;
}

.gw-chart__datum.is-muted { opacity: .24; }
.gw-chart__hitbox { fill: transparent; stroke: none; pointer-events: all; }
.gw-chart__datum.is-selected { filter: drop-shadow(0 5px 8px rgba(15, 23, 42, .2)); }
.gw-chart__datum:focus-visible .gw-chart__mark,
.gw-chart__datum.is-selected .gw-chart__mark {
    filter: brightness(.98) saturate(1.1);
    stroke: var(--gw-ink);
    stroke-width: 2;
}

.gw-chart__mark {
    transform-box: fill-box;
    transform-origin: center;
    transition: opacity .18s ease, filter .18s ease, transform .18s cubic-bezier(.22, 1, .36, 1);
}

.gw-chart__datum:hover .gw-chart__mark,
.gw-chart__datum:focus-visible .gw-chart__mark { transform: scale(1.045); }
.gw-chart__datum:hover .gw-chart__mark--point,
.gw-chart__datum:focus-visible .gw-chart__mark--point { transform: scale(1.22); }
.gw-chart__line {
    filter: drop-shadow(0 3px 5px rgba(21, 101, 192, .14));
    vector-effect: non-scaling-stroke;
}
.gw-chart__line--series { pointer-events: none; }
.gw-chart__area { pointer-events: none; }

.gw-chart__crosshair {
    opacity: 0;
    pointer-events: none;
    stroke: #6f8499;
    stroke-dasharray: 4 4;
    stroke-width: 1;
    transition: opacity .14s ease;
    vector-effect: non-scaling-stroke;
}
.gw-chart__crosshair.is-visible { opacity: .62; }

.gw-chart-tooltip {
    position: absolute;
    z-index: 5;
    display: grid;
    width: min(200px, calc(100% - 20px));
    gap: 3px;
    padding: 9px 11px;
    border: 1px solid rgba(255, 255, 255, .11);
    border-radius: 9px;
    background: #111d2f;
    box-shadow: 0 12px 30px rgba(15, 23, 42, .26);
    color: #fff;
    font-size: 10px;
    line-height: 1.4;
    pointer-events: none;
    transform: translateY(-2px);
}
.gw-chart-tooltip[hidden] { display: none; }
.gw-chart-tooltip strong { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.gw-chart-tooltip span { color: #cbd7e5; font-variant-numeric: tabular-nums; }

.gw-chart--animated .gw-chart__mark--bar {
    animation: gw-chart-bar-in .42s cubic-bezier(.22, 1, .36, 1) both;
    animation-delay: var(--gw-chart-delay, 0ms);
    transform-origin: center bottom;
}
.gw-chart--animated .gw-chart__mark--point,
.gw-chart--animated .gw-chart__mark--slice {
    animation: gw-chart-point-in .36s cubic-bezier(.22, 1, .36, 1) both;
    animation-delay: var(--gw-chart-delay, 0ms);
}
.gw-chart--animated .gw-chart__line {
    animation: gw-chart-line-in .72s cubic-bezier(.22, 1, .36, 1) both;
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
}
.gw-chart--animated .gw-chart__area { animation: gw-chart-fade-in .52s ease-out both; }
.gw-chart--animated .gw-chart__mark--gauge { animation: gw-chart-fade-in .52s ease-out both; }

@keyframes gw-chart-bar-in {
    from { opacity: .2; transform: scaleY(.04); }
    to { opacity: 1; transform: scaleY(1); }
}
@keyframes gw-chart-point-in {
    from { opacity: 0; transform: scale(.45); }
    to { opacity: 1; transform: scale(1); }
}
@keyframes gw-chart-line-in { to { stroke-dashoffset: 0; } }
@keyframes gw-chart-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* Annual calendar by months */
.gw-year-calendar { display: grid; gap: 14px; }
.gw-year-calendar__controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.gw-year-calendar__navigation {
    display: grid;
    grid-template-columns: 36px minmax(88px, auto) 36px;
    align-items: center;
    gap: 7px;
}
.gw-year-calendar__year {
    margin: 0;
    color: var(--gw-ink);
    font-size: 20px;
    font-variant-numeric: tabular-nums;
    font-weight: 800;
    letter-spacing: -.03em;
    text-align: center;
}
.gw-year-calendar__summary {
    display: flex;
    align-items: stretch;
    overflow: hidden;
    border: 1px solid var(--gw-line);
    border-radius: 10px;
    background: var(--gw-surface-soft);
}
.gw-year-calendar__metric {
    display: flex;
    min-width: 0;
    flex: 1 1 0;
    align-items: baseline;
    gap: 6px;
    padding: 9px 12px;
    border-right: 1px solid var(--gw-line);
}
.gw-year-calendar__metric:last-child { border-right: 0; }
.gw-year-calendar__metric strong { color: var(--gw-ink); font-size: 15px; font-variant-numeric: tabular-nums; }
.gw-year-calendar__metric span { overflow: hidden; color: var(--gw-muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }

.gw-heatmap__month {
    padding: 9px;
    border: 1px solid #e4ebf3;
    border-radius: 10px;
    background: linear-gradient(180deg, #fff 0%, #fbfdff 100%);
    transition: border-color .18s ease, box-shadow .18s ease;
}
.gw-heatmap__month:hover { border-color: #c6d8e9; box-shadow: 0 6px 16px rgba(15, 23, 42, .055); }
.gw-heatmap__month-head {
    display: flex;
    min-height: 22px;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 5px;
}
.gw-heatmap__month-head h4 { margin: 0; color: var(--gw-ink-soft); font-size: 10px; letter-spacing: .015em; text-transform: none; }
.gw-heatmap__month-head > span {
    display: grid;
    min-width: 19px;
    height: 19px;
    place-items: center;
    border-radius: 999px;
    background: var(--gw-primary-soft);
    color: var(--gw-primary-dark);
    font-size: 8px;
    font-variant-numeric: tabular-nums;
    font-weight: 700;
}
.gw-heatmap__weekday {
    display: grid;
    aspect-ratio: 1;
    place-items: center;
    color: var(--gw-subtle);
    font-size: 7px;
    font-weight: 700;
}
.gw-heatmap__day {
    position: relative;
    display: grid;
    min-width: 12px;
    aspect-ratio: 1;
    place-items: center;
    border: 1px solid rgba(15, 23, 42, .055);
    border-radius: 4px;
    background: #edf2f7;
    color: #6f8195;
    font: inherit;
    transition: border-color .16s ease, box-shadow .16s ease, transform .16s cubic-bezier(.22, 1, .36, 1);
}
.gw-heatmap__day-number { font-size: 7px; font-variant-numeric: tabular-nums; font-weight: 650; line-height: 1; }
button.gw-heatmap__day:hover { z-index: 2; border-color: #7ba9d5; box-shadow: 0 4px 9px rgba(15, 23, 42, .15); transform: scale(1.11); }
.gw-heatmap__day--1 { background: var(--gw-heat-cell, var(--gw-heat-1)); color: #385b7c; }
.gw-heatmap__day--2 { background: var(--gw-heat-cell, var(--gw-heat-2)); color: #214b71; }
.gw-heatmap__day--3 { background: var(--gw-heat-cell, var(--gw-heat-3)); color: #fff; }
.gw-heatmap__day--4 { background: var(--gw-heat-cell, var(--gw-heat-4)); color: #fff; }
.gw-heatmap__day--5 { background: var(--gw-heat-cell, var(--gw-heat-5)); color: #fff; }
.gw-heatmap__day.is-today { box-shadow: inset 0 0 0 2px #f59e0b; }
.gw-heatmap__day.is-selected { z-index: 3; outline: 2px solid var(--gw-primary-dark); outline-offset: 2px; box-shadow: 0 5px 12px rgba(13, 71, 161, .2); }
.gw-heatmap__count {
    position: absolute;
    top: -4px;
    right: -4px;
    display: grid;
    min-width: 13px;
    height: 13px;
    padding: 0 3px;
    place-items: center;
    border: 1px solid #fff;
    border-radius: 999px;
    background: var(--gw-ink);
    color: #fff;
    font-size: 6px;
    font-variant-numeric: tabular-nums;
    font-weight: 800;
}

.gw-heatmap-selection {
    position: relative;
    display: grid;
    gap: 10px;
    padding: 13px;
    border: 1px solid #bad2e9;
    border-radius: var(--gw-radius);
    background: linear-gradient(180deg, #f8fbff 0%, #fff 100%);
    box-shadow: 0 10px 26px rgba(15, 23, 42, .08);
    outline: none;
    animation: gw-selection-in .2s cubic-bezier(.22, 1, .36, 1) both;
}
.gw-heatmap-selection[hidden] { display: none; }
@keyframes gw-selection-in {
    from { opacity: 0; transform: translateY(-5px); }
    to { opacity: 1; transform: translateY(0); }
}
.gw-heatmap-selection__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.gw-heatmap-selection__eyebrow { color: var(--gw-primary-dark); font-size: 8px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.gw-heatmap-selection__head h4 { margin: 2px 0 0; color: var(--gw-ink); font-size: 14px; text-transform: capitalize; }
.gw-heatmap-selection__head p { margin: 2px 0 0; color: var(--gw-muted); font-size: 9px; }
.gw-heatmap-selection__actions { display: flex; flex-wrap: wrap; gap: 6px; }
.gw-heatmap-selection__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(225px, 1fr)); gap: 7px; }
.gw-heatmap-selection__item {
    display: grid;
    grid-template-columns: 10px minmax(0, 1fr);
    gap: 8px;
    align-items: start;
    padding: 9px 10px;
    border: 1px solid var(--gw-line);
    border-radius: 8px;
    background: #fff;
}
.gw-heatmap-selection__marker { width: 8px; height: 8px; margin-top: 5px; border-radius: 50%; background: var(--gw-primary); box-shadow: 0 0 0 3px var(--gw-primary-soft); }
.gw-heatmap-selection__title { display: block; width: 100%; padding: 0; overflow: hidden; color: var(--gw-primary-dark); cursor: pointer; font-size: 10px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.gw-heatmap-selection__item div > span { display: block; margin-top: 3px; color: var(--gw-muted); font-size: 8px; }

/* Monthly calendar refinements */
.gw-calendar__controls { display: flex; align-items: center; justify-content: space-between; }
.gw-calendar__navigation { display: grid; min-width: min(330px, 100%); grid-template-columns: 36px minmax(160px, 1fr) 36px; align-items: center; gap: 8px; }
.gw-calendar__cell.is-today { box-shadow: inset 0 0 0 2px #f59e0b; }
.gw-calendar__cell.is-selected { border-color: var(--gw-primary); background: var(--gw-primary-soft); box-shadow: var(--gw-focus); }
.gw-calendar__count {
    position: absolute;
    right: 6px;
    bottom: 5px;
    padding: 1px 4px;
    border-radius: 999px;
    background: var(--gw-ink);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
}
.gw-calendar__agenda:focus-visible { outline: 2px solid var(--gw-primary); outline-offset: 2px; }
.gw-calendar__agenda-head {
    position: sticky;
    z-index: 2;
    top: 0;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
    padding: 11px 12px;
    border-bottom: 1px solid var(--gw-line);
    background: rgba(255, 255, 255, .97);
}
.gw-calendar__agenda-head > div:first-child > span { color: var(--gw-primary-dark); font-size: 10px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.gw-calendar__agenda-head h4 { margin: 2px 0 0; color: var(--gw-ink-soft); font-size: 12px; text-transform: capitalize; }
.gw-calendar__agenda-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
.gw-calendar__event { grid-template-columns: 10px minmax(0, 1fr); align-items: start; }
.gw-calendar__event-marker { width: 9px; height: 9px; margin-top: 4px; border-radius: 50%; box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 10%, transparent); }
.gw-calendar__agenda-limit { margin: 0; padding: 9px 12px; border-top: 1px solid var(--gw-line); color: var(--gw-muted); font-size: 10px; }

/* Professional read-only Gantt */
.gw-gantt { display: grid; gap: 10px; }
.gw-gantt__toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.gw-gantt__modes { display: inline-flex; overflow: hidden; border: 1px solid var(--gw-line-strong); border-radius: 999px; background: #fff; }
.gw-gantt__mode {
    width: 33px;
    height: 32px;
    padding: 0;
    border: 0;
    border-right: 1px solid var(--gw-line);
    background: transparent;
    color: var(--gw-muted);
    cursor: pointer;
    font: inherit;
    font-size: 9px;
    font-weight: 800;
    transition: background-color .16s ease, color .16s ease;
}
.gw-gantt__mode:last-child { border-right: 0; }
.gw-gantt__mode:hover { background: var(--gw-primary-soft); color: var(--gw-primary-dark); }
.gw-gantt__mode.is-active { background: var(--gw-primary); color: #fff; }
.gw-gantt__navigation { display: flex; align-items: center; gap: 5px; }
.gw-gantt__filter { display: grid; min-width: 210px; flex: 1 1 230px; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 7px; }
.gw-gantt__filter > span { color: var(--gw-muted); font-size: 8px; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.gw-gantt__filter input {
    width: 100%;
    min-height: 34px;
    padding: 7px 10px;
    border: 1px solid var(--gw-line-strong);
    border-radius: 999px;
    background: #fff;
    color: var(--gw-ink-soft);
    font: inherit;
    font-size: 10px;
    outline: none;
}
.gw-gantt__filter input:focus { border-color: var(--gw-primary); box-shadow: var(--gw-focus); }
.gw-gantt__summary { display: flex; flex-wrap: wrap; gap: 5px; }
.gw-gantt__summary span { padding: 4px 8px; border-radius: 999px; background: var(--gw-surface-muted); color: var(--gw-muted); font-size: 8px; font-variant-numeric: tabular-nums; font-weight: 650; }
.gw-gantt__viewport {
    position: relative;
    width: 100%;
    max-height: min(68vh, 760px);
    overflow: auto;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: #fff;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}
.gw-gantt__viewport:focus-visible { outline: 2px solid var(--gw-primary); outline-offset: 2px; }
.gw-gantt__surface { min-width: 1040px; --gw-gantt-label-width: 285px; }
.gw-gantt__head,
.gw-gantt__row { display: grid; grid-template-columns: var(--gw-gantt-label-width) minmax(755px, 1fr); }
.gw-gantt__head { position: sticky; z-index: 7; top: 0; height: 52px; border-bottom: 1px solid var(--gw-line-strong); background: #f7fafd; }
.gw-gantt__head-label {
    position: sticky;
    z-index: 8;
    left: 0;
    display: flex;
    align-items: end;
    padding: 10px 13px;
    border-right: 1px solid var(--gw-line-strong);
    background: #f7fafd;
    color: var(--gw-muted);
    font-size: 8px;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.gw-gantt__scale { position: relative; overflow: hidden; }
.gw-gantt__tick { position: absolute; inset: 0 auto 0 0; border-left: 1px solid #cbd8e5; }
.gw-gantt__tick > span { position: absolute; bottom: 9px; left: 7px; color: var(--gw-muted); font-size: 8px; font-variant-numeric: tabular-nums; font-weight: 650; white-space: nowrap; }
.gw-gantt__rows { position: relative; }
.gw-gantt__row { min-height: 44px; border-bottom: 1px solid #e7edf4; }
.gw-gantt__row:last-child { border-bottom: 0; }
.gw-gantt__surface.is-dense .gw-gantt__row { content-visibility: auto; contain-intrinsic-size: 44px; }
.gw-gantt__label {
    position: sticky;
    z-index: 3;
    left: 0;
    display: flex;
    min-width: 0;
    align-items: center;
    gap: 4px;
    padding: 6px 10px 6px calc(8px + var(--gw-gantt-depth, 0) * 14px);
    border-right: 1px solid var(--gw-line);
    background: #fff;
}
.gw-gantt__row:hover .gw-gantt__label { background: #f8fbfe; }
.gw-gantt__toggle,
.gw-gantt__toggle-spacer { width: 20px; height: 20px; flex: 0 0 auto; }
.gw-gantt__toggle { display: grid; padding: 0; place-items: center; border: 1px solid transparent; border-radius: 5px; background: transparent; color: var(--gw-muted); cursor: pointer; font-size: 16px; line-height: 1; }
.gw-gantt__toggle:hover { border-color: var(--gw-line-strong); background: var(--gw-surface-muted); color: var(--gw-ink); }
.gw-gantt__label-copy { min-width: 0; }
.gw-gantt__title { display: block; width: 100%; padding: 0; overflow: hidden; border: 0; background: transparent; color: var(--gw-ink-soft); cursor: pointer; font: inherit; font-size: 10px; font-weight: 700; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
strong.gw-gantt__title { cursor: default; }
.gw-gantt__title:hover:not(strong) { color: var(--gw-primary); }
.gw-gantt__label-copy > span { display: block; overflow: hidden; margin-top: 1px; color: var(--gw-muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.gw-gantt__lane {
    position: relative;
    overflow: hidden;
    background-color: #fbfcfe;
    background-image: linear-gradient(to right, rgba(100, 116, 139, .1) 1px, transparent 1px);
    background-size: var(--gw-gantt-grid-size, 10%) 100%;
}
.gw-gantt__row:hover .gw-gantt__lane { background-color: #f7faff; }
.gw-gantt__today { position: absolute; z-index: 2; inset: 0 auto 0 0; width: 2px; background: #e56b48; box-shadow: 0 0 0 1px rgba(255, 255, 255, .6); pointer-events: none; }
.gw-gantt__bar {
    position: absolute;
    z-index: 2;
    top: 9px;
    display: flex;
    height: 26px;
    min-width: 6px;
    align-items: center;
    overflow: hidden;
    padding: 0;
    border: 1px solid color-mix(in srgb, var(--gw-item-color) 70%, #1e293b);
    border-radius: 7px;
    background: color-mix(in srgb, var(--gw-item-color) 18%, #fff);
    box-shadow: 0 2px 5px rgba(15, 23, 42, .12);
    color: color-mix(in srgb, var(--gw-item-color) 65%, #0f172a);
    cursor: default;
    font: inherit;
    transition: filter .16s ease, box-shadow .16s ease, transform .16s cubic-bezier(.22, 1, .36, 1);
}
button.gw-gantt__bar { cursor: pointer; }
.gw-gantt__bar:hover,
.gw-gantt__bar:focus-visible { z-index: 4; box-shadow: 0 6px 14px rgba(15, 23, 42, .18); filter: saturate(1.08); transform: translateY(-1px); }
.gw-gantt__progress { position: absolute; inset: 0 auto 0 0; display: block; background: var(--gw-item-color); opacity: .72; }
.gw-gantt__bar-label { position: relative; z-index: 1; display: block; padding: 0 8px; overflow: hidden; color: #fff; font-size: 8px; font-weight: 700; text-overflow: ellipsis; text-shadow: 0 1px 1px rgba(0, 0, 0, .2); white-space: nowrap; }
.gw-gantt__bar.is-milestone { width: 18px !important; min-width: 18px; overflow: visible; border-radius: 4px; transform: rotate(45deg); }
.gw-gantt__bar.is-milestone:hover,
.gw-gantt__bar.is-milestone:focus-visible { transform: rotate(45deg) scale(1.08); }
.gw-gantt__bar.is-milestone > * { display: none; }
.gw-gantt__offscreen { position: absolute; top: 10px; display: grid; width: 22px; height: 24px; place-items: center; border-radius: 6px; background: var(--gw-surface-muted); color: var(--gw-muted); font-size: 16px; }
.gw-gantt__offscreen.is-before { left: 5px; }
.gw-gantt__offscreen.is-after { right: 5px; }
.gw-gantt__tooltip {
    position: absolute;
    z-index: 9;
    display: grid;
    width: 250px;
    gap: 3px;
    padding: 9px 11px;
    border-radius: 9px;
    background: #111d2f;
    box-shadow: 0 14px 34px rgba(15, 23, 42, .3);
    color: #fff;
    font-size: 9px;
    pointer-events: none;
}
.gw-gantt__tooltip[hidden] { display: none; }
.gw-gantt__tooltip strong { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.gw-gantt__tooltip span { color: #c8d6e5; }
.gw-gantt__empty { margin: 0; padding: 28px; color: var(--gw-muted); text-align: center; }
.gw-gantt-list { display: none; gap: 8px; }
.gw-gantt-list__item { display: grid; gap: 5px; margin-left: calc(var(--gw-gantt-depth, 0) * 10px); padding: 10px 11px; border: 1px solid var(--gw-line); border-radius: 9px; background: #fff; }
.gw-gantt-list__item > span:not(.gw-schedule-list__meter) { color: var(--gw-muted); font-size: 8px; }

/* Common primitives (implemented in galgo-widgets-primitives.js) */
.galgo-widget--query-status-banner {
    margin: 0;
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    font-size: 14px;
}

.galgo-widget--query-status-banner > .gw-header {
    display: flex;
    min-height: 0;
    align-items: center;
    padding: 0 0 8px;
    border: 0;
    background: transparent;
}

.galgo-widget--query-status-banner > .gw-header > .gw-toolbar {
    margin-top: 0;
}

.galgo-widget--query-status-banner > .gw-header .gw-title {
    font-size: 18px;
}

.galgo-widget--query-status-banner > .gw-header .gw-subtitle {
    margin-top: 2px;
    font-size: 13px;
}

.galgo-widget--query-status-banner > .gw-body {
    padding: 0;
}

.galgo-widget--query-status-banner > .gw-state {
    margin: 0;
}

.galgo-widget--query-status-banner.gw-is-expanded {
    overflow: auto;
    padding: 14px;
    background: var(--gw-surface);
}

.gw-banner-stack,
.gw-event-feed,
.gw-progress-list {
    display: grid;
    gap: 10px;
}

.gw-banner-stack__item,
.gw-status-banner__content,
.gw-event-card__heading,
.gw-list-card__heading {
    min-width: 0;
}

.gw-status-banner {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) auto;
    gap: 10px;
    align-items: start;
    padding: 12px 10px;
    border: 0;
    border-top: 1px solid #b9d3ec;
    border-bottom: 1px solid #b9d3ec;
    border-radius: 0;
    background: #eef7fd;
    color: #0c4a6e;
}

.gw-status-banner--success { border-color: #a5d6a7; background: var(--gw-success-soft); color: #1b5e20; }
.gw-status-banner--warning { border-color: #f0bf73; background: var(--gw-warning-soft); color: #854d0e; }
.gw-status-banner--danger,
.gw-status-banner--error { border-color: #ef9a9a; background: var(--gw-danger-soft); color: #8e1b1b; }

.gw-status-banner__visual {
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border-radius: 50%;
    background: rgba(255,255,255,.72);
}

.gw-status-banner__visual .gw-icon { width: 19px; height: 19px; }
.gw-status-banner h4,
.gw-status-banner p { margin: 0; }
.gw-status-banner h4 { font-size: 15px; font-weight: 700; line-height: 1.35; }
.gw-status-banner p { margin-top: 3px; font-size: 13px; line-height: 1.45; }
.gw-status-banner__eyebrow { margin: 0 0 3px !important; font-size: 11px !important; font-weight: 700; letter-spacing: .055em; text-transform: uppercase; }
.gw-status-banner__detail { opacity: .82; }
.gw-status-banner__time { display: block; margin-top: 6px; font-size: 11px; font-variant-numeric: tabular-nums; opacity: .8; }
.gw-status-banner__actions { align-self: center; }

.gw-status-banner__actions .gw-button {
    min-height: 36px;
    font-size: 12px;
}

.gw-status-indicator {
    display: inline-flex;
    width: max-content;
    max-width: 100%;
    align-items: center;
    gap: 4px;
    padding: 3px 7px;
    border: 1px solid #cbd5e1;
    border-radius: 999px;
    background: #f8fafc;
    color: var(--gw-neutral);
    font-size: 9px;
    font-weight: 700;
    line-height: 1.15;
}

.gw-status-indicator .gw-icon { width: 12px; height: 12px; flex: 0 0 auto; }
.gw-status-indicator__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gw-status-indicator--success { border-color: #a5d6a7; background: var(--gw-success-soft); color: #1b5e20; }
.gw-status-indicator--warning { border-color: #f0bf73; background: var(--gw-warning-soft); color: #854d0e; }
.gw-status-indicator--danger { border-color: #ef9a9a; background: var(--gw-danger-soft); color: #8e1b1b; }
.gw-status-indicator--info { border-color: #90caf9; background: #e8f4fd; color: #0c4a6e; }

.gw-button--quiet,
.gw-button--secondary { min-height: 32px; padding: 6px 9px; font-size: 10px; }
.gw-button--quiet { border-color: transparent; background: transparent; color: var(--gw-primary-dark); }
.gw-button:disabled { cursor: not-allowed; filter: grayscale(.6); opacity: .48; }

.gw-button--document-action {
    min-height: 40px;
    max-width: 100%;
    padding: 8px 14px;
    border-color: #1b5e20;
    border-radius: 8px;
    background: var(--gw-success);
    box-shadow: 0 1px 2px rgba(27, 94, 32, .18);
    color: #fdfefe;
    font-size: 13px;
    line-height: 1.2;
    text-align: center;
}

.gw-button--document-action:hover:not(:disabled),
.gw-button--document-action:active:not(:disabled) {
    border-color: #174d1c;
    background: #1b5e20;
    color: #fdfefe;
}

.gw-button--document-action:focus-visible {
    outline: 2px solid #1b5e20;
    outline-offset: 3px;
    box-shadow: 0 0 0 3px rgba(46, 125, 50, .24);
}

.gw-button--document-action:disabled {
    border-color: #b7c8b8;
    background: #dce7dd;
    box-shadow: none;
    color: #455a46;
    filter: none;
    opacity: 1;
    transform: none;
}

.gw-empty-inline {
    display: grid;
    min-height: 100px;
    place-items: center;
    align-content: center;
    gap: 6px;
    padding: 18px;
    border: 1px dashed var(--gw-line-strong);
    border-radius: var(--gw-radius);
    background: var(--gw-surface-soft);
    color: var(--gw-muted);
    text-align: center;
}

.gw-empty-inline .gw-icon { width: 24px; height: 24px; }
.gw-empty-inline p,
.gw-limit-note { margin: 0; }
.gw-limit-note { margin-top: 9px; color: var(--gw-muted); font-size: 9px; text-align: right; }

.gw-metric-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(175px, 1fr));
    gap: 11px;
}

.gw-metric {
    position: relative;
    min-width: 0;
    padding: 13px 14px;
    overflow: hidden;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: linear-gradient(180deg, #fff 0%, #fbfdff 100%);
}

.gw-metric::before { position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--gw-metric-color, var(--gw-primary)); content: ""; }
.gw-metric__label { display: block; margin: 0; overflow: hidden; color: var(--gw-muted); font-size: 10px; font-weight: 700; letter-spacing: .04em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.gw-metric__value { display: block; margin-top: 5px; color: var(--gw-ink); font-size: clamp(22px, 3.2vw, 34px); font-variant-numeric: tabular-nums; font-weight: 800; letter-spacing: -.035em; line-height: 1.05; }
.gw-metric__number { font: inherit; }
.gw-metric__unit { margin-left: 4px; color: var(--gw-muted); font-size: .5em; font-weight: 600; letter-spacing: 0; }
.gw-metric__support { display: flex; align-items: center; justify-content: space-between; gap: 7px; margin-top: 7px; }
.gw-metric__trend { display: inline-flex; align-items: center; gap: 3px; color: var(--gw-muted); font-size: 9px; font-weight: 700; }
.gw-metric__trend--up { color: var(--gw-success); }
.gw-metric__trend--down { color: var(--gw-danger); }

.gw-event-feed,
.gw-card-list { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }

.gw-event-card,
.gw-list-card {
    display: grid;
    min-width: 0;
    gap: 7px;
    padding: 12px 13px;
    border: 1px solid var(--gw-line);
    border-radius: var(--gw-radius);
    background: #fff;
    transition: border-color .14s ease, box-shadow .14s ease;
}

.gw-event-card { border-top: 3px solid var(--gw-primary); }
.gw-event-card:hover,
.gw-list-card:hover { border-color: #a9c7e5; box-shadow: 0 7px 18px rgba(15, 23, 42, .06); }
.gw-event-card__head,
.gw-list-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.gw-event-card__category,
.gw-list-card__eyebrow { margin: 0 0 3px; color: var(--gw-primary-dark); font-size: 9px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.gw-event-card__title,
.gw-list-card__title { margin: 0; color: var(--gw-ink); font-size: 13px; font-weight: 700; line-height: 1.35; }
.gw-list-card__subtitle { margin: 3px 0 0; color: var(--gw-muted); font-size: 10px; }
.gw-event-card__badges { display: flex; flex: 0 0 auto; flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
.gw-event-card__description,
.gw-list-card__description,
.gw-metric__description,
.gw-progress-item__detail,
.gw-step__description { margin: 0; color: var(--gw-ink-soft); font-size: 10px; line-height: 1.5; }
.gw-metric__description { margin-top: 7px; }

.gw-event-card__meta,
.gw-list-card__meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 10px; margin: 3px 0 0; }
.gw-event-card__meta-item,
.gw-list-card__meta-item { min-width: 0; }
.gw-event-card__meta dt,
.gw-list-card__meta dt { display: flex; align-items: center; gap: 4px; margin: 0; color: var(--gw-subtle); font-size: 8px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }
.gw-event-card__meta dt .gw-icon { width: 11px; height: 11px; }
.gw-event-card__meta dd,
.gw-list-card__meta dd { margin: 2px 0 0; overflow: hidden; color: var(--gw-muted); font-size: 9px; text-overflow: ellipsis; }
.gw-event-card__actions,
.gw-list-card__actions,
.gw-metric__actions,
.gw-progress-item__actions,
.gw-step__actions { display: flex; justify-content: flex-end; margin-top: auto; padding-top: 5px; }

.gw-card-list { display: grid; gap: 10px; }
.gw-card-list[data-gw-layout="list"] { grid-template-columns: 1fr; }
.gw-card-list[data-gw-layout="compact"] { grid-template-columns: repeat(auto-fit, minmax(205px, 1fr)); }
.gw-time { font-variant-numeric: tabular-nums; }

.gw-progress-item { display: grid; gap: 6px; }
.gw-progress-item__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.gw-progress-item__label { margin: 0; color: var(--gw-ink-soft); font-size: 11px; font-weight: 700; }
.gw-progress-item__percent { color: var(--gw-ink-soft); font-size: 10px; font-variant-numeric: tabular-nums; font-weight: 700; }
.gw-progress-track { position: relative; height: 9px; overflow: hidden; border-radius: 999px; background: var(--gw-surface-muted); }
.gw-progress-bar { display: block; height: 100%; border-radius: inherit; background: var(--gw-primary); }
.gw-progress-item__support { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.gw-progress-item__values { color: var(--gw-muted); font-size: 9px; font-variant-numeric: tabular-nums; }

.gw-table-region { width: 100%; max-height: min(68vh, 720px); overflow: auto; border: 1px solid var(--gw-line); border-radius: var(--gw-radius); }
.gw-table-mobile-sort { display: none; }
.gw-table-mobile-sort label { color: var(--gw-muted); font-size: 9px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.gw-table-mobile-sort__select { min-width: 0; min-height: 36px; padding: 7px 30px 7px 10px; border: 1px solid var(--gw-line-strong); border-radius: 8px; background: #fff; color: var(--gw-ink-soft); font: inherit; }
.gw-data-table { width: 100%; border-collapse: collapse; background: #fff; color: var(--gw-ink-soft); font-size: 11px; }
.gw-data-table th,
.gw-data-table td { padding: 9px 11px; border-bottom: 1px solid var(--gw-line); text-align: left; vertical-align: top; }
.gw-data-table th { position: sticky; z-index: 1; top: 0; background: var(--gw-surface-soft); color: var(--gw-muted); font-size: 9px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.gw-data-table tr:last-child td { border-bottom: 0; }
.gw-data-table tbody tr:hover { background: #f7fbff; }
.gw-table-caption { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.gw-table-sort { display: inline-flex; width: 100%; align-items: center; justify-content: space-between; gap: 6px; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; text-transform: inherit; cursor: pointer; }
.gw-table-sort .gw-icon { width: 12px; height: 12px; }
.gw-data-table__actions { width: 1%; white-space: nowrap; }
.gw-pagination { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; color: var(--gw-muted); font-size: 10px; }
.gw-pagination__status { margin: 0; }
.gw-pagination__controls { display: flex; gap: 6px; }

.gw-stepper { position: relative; display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.gw-step { position: relative; display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 11px; padding: 0 0 13px; }
.gw-step:not(:last-child)::before { position: absolute; top: 28px; bottom: 0; left: 14px; width: 2px; background: #cbd9e8; content: ""; }
.gw-step__marker { z-index: 1; display: grid; width: 30px; height: 30px; place-items: center; border: 2px solid #a9b8c8; border-radius: 50%; background: #fff; color: var(--gw-muted); font-size: 10px; font-weight: 700; }
.gw-step__marker .gw-icon { width: 15px; height: 15px; }
.gw-step__body { padding: 10px 12px; border: 1px solid var(--gw-line); border-radius: var(--gw-radius); background: #fff; }
.gw-step__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.gw-step__title { margin: 0; color: var(--gw-ink-soft); font-size: 12px; font-weight: 700; }
.gw-step__state { flex: 0 0 auto; color: var(--gw-muted); font-size: 9px; font-weight: 700; text-transform: uppercase; }
.gw-step__description { margin-top: 5px; }
.gw-step__meta { display: flex; flex-wrap: wrap; gap: 7px 13px; margin-top: 7px; color: var(--gw-muted); font-size: 9px; }
.gw-step__owner { display: inline-flex; align-items: center; gap: 4px; }
.gw-step__owner .gw-icon { width: 12px; height: 12px; }
.gw-step--complete .gw-step__marker { border-color: var(--gw-success); background: var(--gw-success); color: #fff; }
.gw-step--complete .gw-step__body { border-color: #b8d9ba; background: #fbfffb; }
.gw-step--current .gw-step__marker { border-color: var(--gw-primary); color: var(--gw-primary); box-shadow: var(--gw-focus); }
.gw-step--current .gw-step__body { border-color: #9fc5e9; background: #fbfdff; }
.gw-step--blocked .gw-step__marker { border-color: var(--gw-danger); background: var(--gw-danger-soft); color: var(--gw-danger); }
.gw-step--skipped { opacity: .68; }

/* Record workflow: one declarative component for arbitrary documents, states and columns. */
.galgo-widget--workflow-stepper > .gw-header > .gw-toolbar > .gw-status-indicator[id^="gwWorkflowRecordId-"] {
    display: none;
}

.gw-workflow-summary {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px 24px;
    margin: 0 0 14px;
    padding: 0 2px 10px;
    border-bottom: 1px solid var(--gw-line);
}
.gw-workflow-summary__item {
    display: inline-flex;
    min-width: 0;
    align-items: baseline;
    gap: 7px;
    margin: 0;
    color: var(--gw-muted);
    font-size: 11px;
}
.gw-workflow-summary__item strong {
    overflow: hidden;
    color: var(--gw-ink);
    font-size: 13px;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.gw-stepper[data-gw-orientation="horizontal"] {
    display: grid;
    grid-template-columns: repeat(var(--gw-step-count, 5), minmax(168px, 1fr));
    gap: 12px;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    padding: 4px 2px 10px;
    scrollbar-width: thin;
}
.gw-stepper[data-gw-orientation="horizontal"] .gw-step {
    min-width: 168px;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: 34px auto;
    gap: 8px;
    padding: 0;
}
.gw-stepper[data-gw-orientation="horizontal"] .gw-step:not(:last-child)::before {
    top: 14px;
    right: -14px;
    bottom: auto;
    left: 30px;
    width: auto;
    height: 2px;
}
.gw-stepper[data-gw-orientation="horizontal"] .gw-step__marker {
    justify-self: start;
}
.gw-stepper[data-gw-orientation="horizontal"] .gw-step__body {
    min-width: 0;
}
.gw-step[style*="--gw-step-color"] .gw-step__marker {
    border-color: var(--gw-step-color);
    color: var(--gw-step-color);
}
.gw-step--complete[style*="--gw-step-color"] .gw-step__marker {
    background: var(--gw-step-color);
    color: #fff;
}
.gw-step--current[style*="--gw-step-color"] .gw-step__marker {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--gw-step-color) 24%, transparent);
}
.gw-step--tone-warning .gw-step__marker { border-color: var(--gw-warning); color: var(--gw-warning); }
.gw-step--tone-danger .gw-step__marker { border-color: var(--gw-danger); color: var(--gw-danger); }
.gw-step--tone-danger.gw-step--complete .gw-step__marker,
.gw-step--tone-danger.gw-step--blocked .gw-step__marker { background: var(--gw-danger); color: #fff; }
.gw-step--tone-warning.gw-step--complete .gw-step__marker { background: var(--gw-warning); color: #fff; }
.gw-step__time,
.gw-step__time--pending {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.gw-step__time .gw-icon,
.gw-step__time--pending .gw-icon { width: 13px; height: 13px; }
.gw-step__time--pending { color: var(--gw-subtle); }

.gw-workflow-schedule {
    margin: 14px 0 0;
    padding: 14px 2px 4px;
    border-top: 1px solid var(--gw-line);
}
.gw-workflow-schedule__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px 20px;
}
.gw-workflow-schedule__title {
    margin: 0;
    color: var(--gw-ink);
    font-size: 13px;
    font-weight: 700;
}
.gw-workflow-schedule__status {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin: 0;
    color: var(--gw-muted);
    font-size: 11px;
    font-weight: 600;
}
.gw-workflow-schedule__status .gw-icon { width: 15px; height: 15px; }
.gw-workflow-schedule--success .gw-workflow-schedule__status { color: var(--gw-success); }
.gw-workflow-schedule--info .gw-workflow-schedule__status { color: var(--gw-info); }
.gw-workflow-schedule--warning .gw-workflow-schedule__status { color: var(--gw-warning); }
.gw-workflow-schedule--danger .gw-workflow-schedule__status { color: var(--gw-danger); }
.gw-workflow-schedule__dates {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    margin-top: 9px;
}
.gw-workflow-schedule__dates > span { display: grid; gap: 1px; min-width: 0; }
.gw-workflow-schedule__dates > span:last-child { text-align: right; }
.gw-workflow-schedule__dates small {
    color: var(--gw-subtle);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.gw-workflow-schedule__dates strong {
    color: var(--gw-ink-soft);
    font-size: 11px;
    font-variant-numeric: tabular-nums;
}
.gw-workflow-schedule__track {
    position: relative;
    height: 10px;
    margin: 27px 0 2px;
    border-radius: 999px;
    background: var(--gw-surface-muted);
    box-shadow: inset 0 0 0 1px var(--gw-line);
}
.gw-workflow-schedule__bar {
    position: absolute;
    inset: 0 auto 0 0;
    max-width: 100%;
    border-radius: inherit;
    background: var(--gw-primary);
    transition: width 220ms ease-out;
}
.gw-workflow-schedule__today {
    position: absolute;
    top: -6px;
    left: clamp(46px, var(--gw-schedule-position, 0%), calc(100% - 46px));
    width: 2px;
    height: 22px;
    background: var(--gw-ink-soft);
    transform: translateX(-1px);
}
.gw-workflow-schedule__today > span {
    position: absolute;
    right: auto;
    bottom: calc(100% + 3px);
    left: 50%;
    max-width: 150px;
    overflow: hidden;
    color: var(--gw-muted);
    font-size: 9px;
    font-weight: 700;
    line-height: 1.25;
    text-overflow: ellipsis;
    transform: translateX(-50%);
    white-space: nowrap;
}

@container (max-width: 680px) {
    .gw-stepper[data-gw-orientation="horizontal"] {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        gap: 0;
        overflow: visible;
        padding: 0;
    }
    .gw-stepper[data-gw-orientation="horizontal"] .gw-step {
        min-width: 0;
        grid-template-columns: 34px minmax(0, 1fr);
        grid-template-rows: auto;
        gap: 11px;
        padding: 0 0 13px;
    }
    .gw-stepper[data-gw-orientation="horizontal"] .gw-step:not(:last-child)::before {
        top: 28px;
        right: auto;
        bottom: 0;
        left: 14px;
        width: 2px;
        height: auto;
    }
    .gw-workflow-schedule__head { display: grid; }
}

@container (max-width: 820px) {
    .gw-heatmap { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .gw-map-layout { grid-template-columns: 1fr; }
    .gw-map-list { max-height: 230px; }
}

@container (max-width: 900px) {
    .gw-calendar {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas:
            "controls"
            "calendar"
            "agenda";
    }
    .gw-calendar--with-filter {
        grid-template-areas:
            "controls"
            "filter"
            "calendar"
            "agenda";
    }
    .gw-calendar--agenda-hidden,
    .gw-calendar--with-filter.gw-calendar--agenda-hidden {
        grid-template-areas:
            "controls"
            "filter"
            "calendar";
    }
    .gw-calendar:not(.gw-calendar--with-filter).gw-calendar--agenda-hidden {
        grid-template-areas:
            "controls"
            "calendar";
    }
    .gw-calendar__agenda { max-height: 340px; }
    .gw-calendar__quick-filter .gw-quick-filter__status {
        width: 100%;
        justify-content: space-between;
    }
}

@container (max-width: 730px) {
    .gw-calendar {
        grid-template-columns: 1fr;
        grid-template-areas:
            "controls"
            "calendar"
            "agenda";
    }
    .gw-calendar--with-filter {
        grid-template-areas:
            "controls"
            "filter"
            "calendar"
            "agenda";
    }
    .gw-calendar__agenda { max-height: 330px; }
}

@container (max-width: 620px) {
    .gw-chart-wrap--radial {
        grid-template-columns: minmax(0, 1fr);
        gap: 4px;
        padding: 10px;
    }
    .gw-chart--radial { max-height: 300px; }
    .gw-chart-radial__legend { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gw-header { display: block; }
    .gw-toolbar { justify-content: flex-start; margin-top: 10px; }
    .gw-button--icon-on-compact { width: 36px; padding: 0; }
    .gw-year-calendar__controls { align-items: flex-start; }
    .gw-year-calendar__summary { display: grid; grid-template-columns: 1fr; }
    .gw-year-calendar__metric { border-right: 0; border-bottom: 1px solid var(--gw-line); }
    .gw-year-calendar__metric:last-child { border-bottom: 0; }
    .gw-heatmap { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gw-calendar__controls { display: grid; align-items: start; }
    .gw-calendar__navigation { width: 100%; min-width: 0; grid-template-columns: 36px minmax(100px, 1fr) 36px; }
    .gw-calendar__commands { width: 100%; justify-content: space-between; }
    .gw-calendar__view-switcher { max-width: 100%; }
    .gw-calendar__cell { min-height: 62px; }
    .gw-calendar__month-events { display: none; }
    .gw-calendar__dots { display: flex; }
    .gw-calendar-timegrid { min-width: 810px; }
    .gw-calendar-timegrid--day { min-width: 390px; }
    .gw-calendar__agenda-head { display: grid; }
    .gw-calendar__agenda-actions { justify-content: flex-start; }
    .gw-quick-filter__controls { flex-basis: 100%; }
    .gw-quick-filter__field--search { flex-basis: 100%; }
    .gw-quick-filter__status { width: 100%; justify-content: space-between; }
    .gw-gantt__toolbar { align-items: stretch; }
    .gw-gantt__filter { order: 4; flex-basis: 100%; }
    .gw-map-canvas { min-height: 290px; }
    .gw-status-banner { grid-template-columns: 30px minmax(0, 1fr); }
    .gw-status-banner__actions { grid-column: 1 / -1; }
    .gw-status-banner__actions .gw-button { width: auto; max-width: 100%; }
    .gw-table-mobile-sort { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 8px; margin-bottom: 9px; }
    .gw-table-region { max-height: none; overflow: visible; border: 0; }
    .gw-data-table { display: block; background: transparent; }
    .gw-data-table thead { display: none; }
    .gw-data-table tbody { display: grid; gap: 10px; }
    .gw-data-table tr { display: grid; overflow: hidden; border: 1px solid var(--gw-line); border-radius: var(--gw-radius); background: #fff; }
    .gw-data-table td { display: grid; grid-template-columns: minmax(96px, 38%) minmax(0, 1fr); gap: 9px; width: 100%; padding: 8px 11px; }
    .gw-data-table td::before { color: var(--gw-muted); font-size: 9px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; content: attr(data-gw-label); }
    .gw-data-table td[data-gw-priority="primary"] { order: 1; background: var(--gw-surface-soft); color: var(--gw-ink); font-weight: 700; }
    .gw-data-table td[data-gw-priority="secondary"] { order: 2; }
    .gw-data-table td[data-gw-priority="detail"] { order: 3; }
    .gw-data-table__actions { order: 4; white-space: normal; }
}

@container (max-width: 430px) {
    .gw-chart-radial__legend { grid-template-columns: minmax(0, 1fr); }
    .gw-body { padding: 12px; }
    .gw-header { padding: 13px; }
    .gw-footer { padding-inline: 13px; }
    .gw-year-calendar__controls { display: grid; grid-template-columns: 1fr; }
    .gw-year-calendar__navigation { width: 100%; grid-template-columns: 36px 1fr 36px; }
    .gw-year-calendar__controls > .gw-button { width: 100%; }
    .gw-heatmap { grid-template-columns: 1fr; }
    .gw-heatmap__day-number { font-size: 9px; }
    .gw-heatmap-selection__list { grid-template-columns: 1fr; }
    .gw-calendar__controls { display: grid; grid-template-columns: 1fr; }
    .gw-calendar__navigation { width: 100%; }
    .gw-calendar__commands { display: grid; grid-template-columns: 1fr; }
    .gw-calendar__commands > .gw-button,
    .gw-calendar__view-switcher { width: 100%; }
    .gw-calendar__view-button { min-width: 0; flex: 1 1 25%; padding-inline: 5px; }
    .gw-quick-filter__field { min-width: 100%; flex-basis: 100%; }
    .gw-timeline-horizontal__header { display: grid; }
    .gw-timeline-horizontal__summary { justify-content: flex-start; }
    .gw-timeline-horizontal__legend { grid-template-columns: 1fr; }
    .gw-gantt__navigation { flex-wrap: wrap; }
    .gw-calendar__cell { min-height: 52px; padding: 0; }
    .gw-calendar__day-trigger { min-height: 44px; padding: 6px; }
    .gw-calendar__dots { right: 4px; bottom: 5px; left: 4px; }
    .gw-calendar-list__event { grid-template-columns: 52px minmax(0, 1fr); gap: 8px; padding-inline: 9px; }
    .gw-metric-grid { grid-template-columns: 1fr 1fr; }
    .gw-metric__label { display: -webkit-box; min-height: 2.5em; overflow: hidden; text-overflow: clip; white-space: normal; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
    .gw-event-feed,
    .gw-card-list { grid-template-columns: 1fr; }
    .gw-table-mobile-sort { grid-template-columns: 1fr; }
    .gw-table-mobile-sort .gw-button { width: 100%; }
}

.galgo-widget[data-gw-size="compact"] .gw-gantt__viewport,
.galgo-widget[data-gw-size="mobile"] .gw-gantt__viewport { display: none; }
.galgo-widget[data-gw-size="compact"] .gw-gantt-list,
.galgo-widget[data-gw-size="mobile"] .gw-gantt-list { display: grid; }

@media (max-width: 620px) {
    .gw-is-expanded { inset: 0; border-radius: 0; }
}

@media (pointer: coarse) {
    .gw-quick-filter__input,
    .gw-quick-filter__select,
    .gw-calendar__view-button,
    .gw-calendar__day-trigger,
    .gw-calendar-timegrid__day-head,
    .gw-calendar-list__day-head { min-height: 44px; }
    .gw-calendar__event-title,
    .gw-calendar-list__event-title { min-height: 44px; padding-block: 10px; }
}

@media (prefers-reduced-motion: reduce) {
    .galgo-widget *,
    .galgo-widget *::before,
    .galgo-widget *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}

/* Unified document treatment.
 * Standard widgets sit in the same content plane as fields and references:
 * no ornamental shell, no redundant footer and no nested card stack. Borders
 * remain only where they explain a grid, selection, scroll region or state. */
.doc-render-surface [id="onload"].row.galgo-widget-host {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    margin-inline: 0;
    padding-inline: 0;
}

.galgo-widget:not(.gw-is-expanded) {
    width: 100%;
    font-size: 14px;
}

.galgo-widget:not(.gw-is-expanded) > .gw-header .gw-title {
    font-size: 18px;
}

.galgo-widget:not(.gw-is-expanded) > .gw-header .gw-subtitle {
    margin-top: 2px;
    font-size: 13px;
}

.galgo-widget:not(.gw-is-expanded) > .gw-body {
    width: 100%;
    min-width: 0;
    padding: 0;
}

.galgo-widget:not(.gw-is-expanded) > .gw-footer {
    display: block;
    position: absolute;
    width: 1px;
    height: 1px;
    min-height: 0;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    border: 0;
    background: transparent;
    white-space: nowrap;
}

.galgo-widget:not(.gw-is-expanded) > .gw-state {
    margin: 0;
}

/* Charts: the plotting plane stays open; legends use readable rows. */
.galgo-widget:not(.gw-is-expanded) .gw-chart-wrap {
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-chart-wrap--radial {
    padding: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-chart-radial__legend li {
    padding: 9px 2px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-chart-radial__legend li:last-child {
    border-bottom: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-chart__axis,
.galgo-widget:not(.gw-is-expanded) .gw-chart__legend,
.galgo-widget:not(.gw-is-expanded) .gw-chart__legend-value,
.galgo-widget:not(.gw-is-expanded) .gw-map-fallback__label {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-chart__axis--label {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-chart-radial__label {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-chart-radial__metric strong {
    font-size: 13px;
}

.galgo-widget:not(.gw-is-expanded) .gw-chart-radial__metric small,
.galgo-widget:not(.gw-is-expanded) .gw-legend__type {
    font-size: 10px;
}

/* Temporal filters: controls retain their affordance, the surrounding card does not. */
.galgo-widget:not(.gw-is-expanded) .gw-quick-filter {
    padding: 0 0 10px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-quick-filter__label {
    font-size: 10px;
}

.galgo-widget:not(.gw-is-expanded) .gw-quick-filter__input,
.galgo-widget:not(.gw-is-expanded) .gw-quick-filter__select {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-quick-filter__count {
    font-size: 11px;
}

/* Annual calendar: months and the selected-day detail become open sections. */
.galgo-widget:not(.gw-is-expanded) .gw-year-calendar__summary {
    border: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-year-calendar__metric span {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap__month {
    padding: 8px 0 10px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap__month:hover {
    border-color: var(--gw-line);
    box-shadow: none;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap__month-head h4 {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap__weekday,
.galgo-widget:not(.gw-is-expanded) .gw-heatmap__day-number {
    font-size: 9px;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap-selection {
    padding: 12px 0;
    border: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap-selection__eyebrow {
    font-size: 10px;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap-selection__head p {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap-selection__item {
    padding: 9px 2px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap-selection__title {
    font-size: 13px;
}

.galgo-widget:not(.gw-is-expanded) .gw-heatmap-selection__item div > span {
    font-size: 11px;
}

/* Operational calendar: calendar cells and time-grid lines remain functional. */
.galgo-widget:not(.gw-is-expanded) .gw-calendar__period-title,
.galgo-widget:not(.gw-is-expanded) .gw-calendar__month-title {
    font-size: 16px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__weekday {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__day-number {
    font-size: 13px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__month-event,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-timegrid__all-day-event {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__more {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__agenda,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-timegrid__scroll,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-list {
    border: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__agenda-head h4,
.galgo-widget:not(.gw-is-expanded) .gw-calendar__agenda > h4 {
    font-size: 14px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__agenda-head > div:first-child > span {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__event strong,
.galgo-widget:not(.gw-is-expanded) .gw-calendar__event-title,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-timegrid__event strong,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-list__day-head strong,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-list__event-title {
    font-size: 13px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar__event div > span,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-timegrid__event span,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-list__day-head span,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-list__event time,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-list__event div > span,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-timegrid__rail > span {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-calendar-timegrid__day-head > span,
.galgo-widget:not(.gw-is-expanded) .gw-calendar-timegrid__day-head > strong {
    font-size: 12px;
}

/* Schedule: keep the time grid, remove the enclosing/mobile cards. */
.galgo-widget:not(.gw-is-expanded) .gw-schedule {
    border: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-schedule__scale,
.galgo-widget:not(.gw-is-expanded) .gw-schedule__label span {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-schedule__label strong,
.galgo-widget:not(.gw-is-expanded) .gw-schedule-list__title {
    font-size: 13px;
}

.galgo-widget:not(.gw-is-expanded) .gw-schedule-list {
    gap: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-schedule-list__item {
    padding: 10px 2px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-schedule-list__item:last-child {
    border-bottom: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-schedule-list__item > span:not(.gw-schedule-list__meter) {
    font-size: 11px;
}

/* Maps, trees and media: content reaches the document edge; scroll remains local. */
.galgo-widget:not(.gw-is-expanded) .gw-map-canvas,
.galgo-widget:not(.gw-is-expanded) .gw-map-list {
    border: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-map-list {
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-map-list__title,
.galgo-widget:not(.gw-is-expanded) .gw-tree__label {
    font-size: 14px;
}

.galgo-widget:not(.gw-is-expanded) .gw-map-list li > span,
.galgo-widget:not(.gw-is-expanded) .gw-tree__meta {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-tree__line,
.galgo-widget:not(.gw-is-expanded) .gw-tree__label {
    min-width: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-tree__label {
    overflow-wrap: anywhere;
}

.galgo-widget:not(.gw-is-expanded) .gw-media {
    border-radius: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-callout {
    padding: 12px 10px;
    border: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    font-size: 13px;
}

.galgo-widget:not(.gw-is-expanded) .gw-empty-inline {
    min-height: 84px;
    padding: 16px 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    font-size: 13px;
}

/* Metrics, cards, progress and workflow steps become open, scannable rows. */
.galgo-widget:not(.gw-is-expanded) .gw-metric-grid,
.galgo-widget:not(.gw-is-expanded) .gw-event-feed,
.galgo-widget:not(.gw-is-expanded) .gw-card-list {
    gap: 0 18px;
}

.galgo-widget:not(.gw-is-expanded) .gw-metric {
    padding: 12px 2px 13px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-metric::before {
    inset: 17px auto auto 2px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.galgo-widget:not(.gw-is-expanded) .gw-metric__label {
    padding-left: 15px;
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-metric__trend,
.galgo-widget:not(.gw-is-expanded) .gw-metric__description {
    font-size: 12px;
}

/* Event-quality is a single operational strip, not a second document card.
 * Its semantic state is conveyed by dot, icon and accessible name; the generic
 * status word stays available to assistive technology without repeating “danger”.
 * It intentionally inherits the shared document-shell top spacing. */
.galgo-widget--metric-grid[data-gw-variant="event-quality"] > .gw-footer {
    display: none;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"]:not(.gw-is-expanded) > .gw-header {
    padding-bottom: 8px;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"]:not(.gw-is-expanded) .gw-metric-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"]:not(.gw-is-expanded) .gw-metric {
    min-height: 118px;
    padding: 16px 18px 15px;
    border: 0;
    border-radius: 0;
    background: transparent;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"]:not(.gw-is-expanded) .gw-metric + .gw-metric {
    border-left: 1px solid var(--gw-line);
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"] .gw-metric[data-gw-tone="success"] {
    --gw-metric-color: var(--gw-success);
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"] .gw-metric[data-gw-tone="info"] {
    --gw-metric-color: var(--gw-info);
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"] .gw-metric[data-gw-tone="warning"] {
    --gw-metric-color: var(--gw-warning);
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"] .gw-metric[data-gw-tone="danger"] {
    --gw-metric-color: var(--gw-danger);
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"]:not(.gw-is-expanded) .gw-metric::before {
    top: 19px;
    right: auto;
    bottom: auto;
    left: 18px;
    width: 9px;
    height: 9px;
    border-radius: 50%;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"]:not(.gw-is-expanded) .gw-metric__label {
    padding-left: 17px;
    font-size: 13px;
    letter-spacing: .015em;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"]:not(.gw-is-expanded) .gw-metric__value {
    margin-top: 7px;
    font-size: 32px;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"] .gw-status-indicator {
    width: 24px;
    height: 24px;
    justify-content: center;
    padding: 0;
    border: 0;
    background: transparent;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"] .gw-status-indicator .gw-icon {
    width: 18px;
    height: 18px;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"] .gw-status-indicator__label {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    border: 0;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"][data-gw-size="compact"]:not(.gw-is-expanded) .gw-metric-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"][data-gw-size="compact"]:not(.gw-is-expanded) .gw-metric:nth-child(2n + 1) {
    border-left: 0;
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"][data-gw-size="compact"]:not(.gw-is-expanded) .gw-metric:nth-child(n + 3) {
    border-top: 1px solid var(--gw-line);
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"][data-gw-size="mobile"]:not(.gw-is-expanded) .gw-metric-grid {
    grid-template-columns: minmax(0, 1fr);
}

.galgo-widget--metric-grid[data-gw-variant="event-quality"][data-gw-size="mobile"]:not(.gw-is-expanded) .gw-metric + .gw-metric {
    border-top: 1px solid var(--gw-line);
    border-left: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-event-card,
.galgo-widget:not(.gw-is-expanded) .gw-list-card {
    padding: 11px 2px 12px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.galgo-widget:not(.gw-is-expanded) .gw-event-card:hover,
.galgo-widget:not(.gw-is-expanded) .gw-list-card:hover {
    border-color: var(--gw-line);
    background: var(--gw-surface-soft);
    box-shadow: none;
}

.galgo-widget:not(.gw-is-expanded) .gw-event-card__category,
.galgo-widget:not(.gw-is-expanded) .gw-list-card__eyebrow {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-event-card__title,
.galgo-widget:not(.gw-is-expanded) .gw-list-card__title {
    font-size: 15px;
}

.galgo-widget:not(.gw-is-expanded) .gw-list-card__subtitle,
.galgo-widget:not(.gw-is-expanded) .gw-event-card__description,
.galgo-widget:not(.gw-is-expanded) .gw-list-card__description {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-event-card__meta dt,
.galgo-widget:not(.gw-is-expanded) .gw-list-card__meta dt {
    color: var(--gw-muted);
    font-size: 10px;
}

.galgo-widget:not(.gw-is-expanded) .gw-event-card__meta dd,
.galgo-widget:not(.gw-is-expanded) .gw-list-card__meta dd,
.galgo-widget:not(.gw-is-expanded) .gw-limit-note,
.galgo-widget:not(.gw-is-expanded) .gw-status-indicator {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-progress-list {
    gap: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-progress-item {
    padding: 10px 2px 12px;
    border-bottom: 1px solid var(--gw-line);
}

.galgo-widget:not(.gw-is-expanded) .gw-progress-item:last-child {
    border-bottom: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-progress-item__label {
    font-size: 14px;
}

.galgo-widget:not(.gw-is-expanded) .gw-progress-item__percent,
.galgo-widget:not(.gw-is-expanded) .gw-progress-item__detail {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-progress-item__values {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-step__body {
    padding: 0 0 12px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-step:last-child .gw-step__body {
    border-bottom: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-step--complete .gw-step__body,
.galgo-widget:not(.gw-is-expanded) .gw-step--current .gw-step__body {
    border-color: var(--gw-line);
    background: transparent;
}

.galgo-widget:not(.gw-is-expanded) .gw-step__title {
    font-size: 14px;
}

.galgo-widget:not(.gw-is-expanded) .gw-step__state,
.galgo-widget:not(.gw-is-expanded) .gw-step__meta {
    font-size: 11px;
}

.galgo-widget:not(.gw-is-expanded) .gw-step__description {
    font-size: 12px;
}

/* Tables keep row and column separators, not an extra rounded frame. */
.galgo-widget:not(.gw-is-expanded) .gw-table-region {
    border: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
}

.galgo-widget:not(.gw-is-expanded) .gw-data-table {
    font-size: 12px;
}

.galgo-widget:not(.gw-is-expanded) .gw-data-table th,
.galgo-widget:not(.gw-is-expanded) .gw-table-mobile-sort label,
.galgo-widget:not(.gw-is-expanded) .gw-pagination {
    font-size: 11px;
}

/* Every keyboard-scrollable region and non-standard action gets an explicit focus ring. */
.galgo-widget .gw-table-region:focus-visible,
.galgo-widget .gw-calendar-timegrid__scroll:focus-visible,
.galgo-widget .gw-gantt-r3__right:focus-visible,
.galgo-widget .gw-map-list:focus-visible,
.galgo-widget .gw-table-sort:focus-visible,
.galgo-widget .gw-map-list__title:focus-visible,
.galgo-widget .gw-timeline__title:focus-visible {
    outline: 2px solid var(--gw-primary);
    outline-offset: 2px;
    box-shadow: var(--gw-focus);
}

@container (max-width: 620px) {
    .galgo-widget:not(.gw-is-expanded) .gw-data-table tr {
        border: 0;
        border-bottom: 1px solid var(--gw-line);
        border-radius: 0;
        background: transparent;
    }

    .galgo-widget:not(.gw-is-expanded) .gw-data-table td::before {
        font-size: 10px;
    }
}

@container (max-width: 430px) {
    .galgo-widget:not(.gw-is-expanded) > .gw-header,
    .galgo-widget:not(.gw-is-expanded) > .gw-body {
        padding-inline: 0;
    }

    .galgo-widget:not(.gw-is-expanded) > .gw-header {
        flex-wrap: wrap;
    }

    .galgo-widget:not(.gw-is-expanded) .gw-metric-grid,
    .galgo-widget:not(.gw-is-expanded) .gw-event-feed,
    .galgo-widget:not(.gw-is-expanded) .gw-card-list {
        gap: 0;
    }

    .galgo-widget:not(.gw-is-expanded) .gw-tree ul {
        margin-left: 15px;
    }

    .galgo-widget:not(.gw-is-expanded) .gw-step__head {
        flex-wrap: wrap;
    }
}

@container (max-width: 360px) {
    .galgo-widget:not(.gw-is-expanded) .gw-metric-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media print {
    .galgo-widget {
        break-inside: avoid;
        box-shadow: none;
    }
    .gw-toolbar,
    .gw-footer,
    .gw-dialog-backdrop,
    .gw-quick-filter,
    .gw-calendar__commands {
        display: none !important;
    }
    .gw-body {
        overflow: visible !important;
    }
    .gw-schedule {
        min-width: 0;
    }
    .gw-timeline-horizontal__viewport { overflow: visible; }
}

/* Timeline workspace: flat document rhythm with readable horizontal and vertical views. */
.galgo-widget--timeline {
    font-size: 14px;
}

.galgo-widget--timeline > .gw-header {
    display: flex;
    min-height: 0;
    align-items: center;
    gap: 10px;
    padding: 0 0 10px;
    border: 0;
    background: transparent;
}

.galgo-widget--timeline > .gw-header > .gw-toolbar {
    margin-top: 0;
}

.galgo-widget--timeline > .gw-header .gw-title {
    font-size: 18px;
}

.galgo-widget--timeline > .gw-header .gw-subtitle {
    margin-top: 2px;
    font-size: 13px;
}

.galgo-widget--timeline > .gw-body {
    padding: 0;
}

.galgo-widget--timeline .gw-timeline__item {
    grid-template-columns: 18px minmax(0, 1fr);
    gap: 14px;
    padding-bottom: 10px;
}

.galgo-widget--timeline .gw-timeline::before {
    left: 8px;
}

.galgo-widget--timeline .gw-timeline__marker {
    width: 18px;
    height: 18px;
    margin-top: 4px;
}

.galgo-widget--timeline .gw-timeline__content {
    padding: 0 0 12px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
}

.galgo-widget--timeline .gw-timeline__item:last-child,
.galgo-widget--timeline .gw-timeline__item:last-child .gw-timeline__content {
    padding-bottom: 0;
}

.galgo-widget--timeline .gw-timeline__item:last-child .gw-timeline__content {
    border-bottom: 0;
}

.galgo-widget--timeline .gw-timeline__time {
    margin-bottom: 4px;
    font-size: 12px;
    line-height: 1.45;
}

.galgo-widget--timeline .gw-timeline__title {
    font-size: 15px;
    font-weight: 700;
    line-height: 1.4;
}

.galgo-widget--timeline .gw-timeline__content p {
    margin-top: 6px;
    font-size: 13px;
    line-height: 1.5;
}

.galgo-widget--timeline .gw-timeline-horizontal {
    gap: 12px;
}

.galgo-widget--timeline .gw-timeline-horizontal__eyebrow {
    font-size: 10px;
    line-height: 1.35;
}

.galgo-widget--timeline .gw-timeline-horizontal__header strong {
    font-size: 15px;
    line-height: 1.4;
}

.galgo-widget--timeline .gw-timeline-horizontal__summary {
    font-size: 12px;
    line-height: 1.45;
}

.galgo-widget--timeline .gw-timeline-horizontal__viewport {
    border: 0;
    border-top: 1px solid var(--gw-line);
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.galgo-widget--timeline .gw-timeline-horizontal__viewport:focus-visible {
    border-color: transparent;
    outline: 2px solid var(--gw-primary);
    outline-offset: 2px;
    box-shadow: none;
}

.galgo-widget--timeline .gw-timeline-horizontal__tick-label {
    font: 700 11px Poppins, Muli, Inter, Arial, sans-serif;
}

.galgo-widget--timeline .gw-timeline-horizontal__duration {
    font: 750 10px Poppins, Muli, Inter, Arial, sans-serif;
}

.galgo-widget--timeline .gw-timeline-horizontal__legend {
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 0 18px;
}

.galgo-widget--timeline .gw-timeline-horizontal__legend-item {
    grid-template-columns: 12px minmax(0, 1fr);
    gap: 9px;
    padding: 10px 2px;
    border: 0;
    border-bottom: 1px solid var(--gw-line);
    border-radius: 0;
    background: transparent;
    transition: background-color .15s ease;
}

.galgo-widget--timeline .gw-timeline-horizontal__legend-item:hover {
    border-color: var(--gw-line);
    background: var(--gw-surface-soft);
    box-shadow: none;
}

.galgo-widget--timeline .gw-timeline-horizontal__legend-marker {
    width: 11px;
    height: 11px;
    margin-top: 5px;
}

.galgo-widget--timeline .gw-timeline-horizontal__legend-title {
    overflow: visible;
    font-size: 14px;
    line-height: 1.35;
    text-overflow: clip;
    white-space: normal;
}

.galgo-widget--timeline .gw-timeline-horizontal__legend-time {
    margin-top: 3px;
    overflow: visible;
    font-size: 11px;
    line-height: 1.45;
    text-overflow: clip;
    white-space: normal;
}

.galgo-widget--timeline .gw-timeline-horizontal__legend-copy p {
    margin-top: 6px;
    font-size: 12px;
    line-height: 1.5;
}

.galgo-widget--timeline .gw-status-pill,
.galgo-widget--timeline .gw-limit-note {
    font-size: 11px;
}

@container (max-width: 430px) {
    .galgo-widget--timeline .gw-timeline-horizontal__legend {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Gantt shell: full-bleed workspace rather than a stack of nested cards. */
.galgo-widget--gantt {
    margin: 0;
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    font-size: 14px;
}

.galgo-widget--gantt > .gw-header {
    display: flex;
    min-height: 0;
    align-items: center;
    padding: 0 0 10px;
    border: 0;
    background: transparent;
}

.galgo-widget--gantt > .gw-header > .gw-toolbar {
    margin-top: 0;
}

.galgo-widget--gantt > .gw-header .gw-title {
    font-size: 18px;
}

.galgo-widget--gantt > .gw-header .gw-subtitle {
    margin-top: 2px;
    font-size: 13px;
}

.galgo-widget--gantt > .gw-body {
    padding: 0;
}

.galgo-widget--gantt > .gw-state {
    margin: 0;
}

.galgo-widget--gantt.gw-is-expanded {
    overflow: hidden;
    padding: 14px;
    background: var(--gw-surface);
}

/* R3 Gantt visual parity. Kept fully namespaced so the legacy Gantt remains untouched. */
.gw-gantt-r3 {
    display: grid;
    gap: 8px;
    min-width: 0;
    --gw-gantt-r3-rail-width: clamp(168px, 18vw, 208px);
    --gw-gantt-r3-left-width: var(--gw-gantt-r3-rail-width);
    --gw-gantt-r3-rail-blue: #286ed7;
    --gw-gantt-r3-rail-blue-deep: #1c4d97;
    --gw-gantt-r3-rail-soft: rgba(40, 110, 215, .08);
    --gw-gantt-r3-weekend: rgba(15, 33, 64, .028);
    --gw-gantt-r3-ink: #1d2b3e;
    --gw-gantt-r3-ink-soft: #5a6b80;
    --gw-gantt-r3-ink-faint: #8593a4;
    --gw-gantt-r3-surface: #ffffff;
    --gw-gantt-r3-surface-2: #fbfcfe;
    --gw-gantt-r3-line: rgba(15, 33, 64, .08);
    --gw-gantt-r3-line-soft: rgba(15, 33, 64, .05);
    --gw-gantt-r3-accent: #286ed7;
    --gw-gantt-r3-accent-strong: #3a7ee0;
    --gw-gantt-r3-accent-deep: #1c4d97;
    --gw-gantt-r3-accent-soft: rgba(40, 110, 215, .07);
    --gw-gantt-r3-accent-ink: #1a4fa0;
    --gw-gantt-r3-radius: 14px;
    --gw-gantt-r3-shadow: 0 1px 2px rgba(15, 33, 64, .04), 0 12px 28px -16px rgba(15, 33, 64, .22);
}

.gw-gantt-r3__quick-filter {
    padding: 6px 0;
    border: 0;
    border-radius: 0;
    background: transparent;
}

.gw-gantt-r3__quick-filter .gw-quick-filter__label {
    font-size: 11px;
}

.gw-gantt-r3__quick-filter .gw-quick-filter__input,
.gw-gantt-r3__quick-filter .gw-quick-filter__select {
    min-height: 38px;
    font-size: 13px;
}

.gw-gantt-r3__quick-filter .gw-quick-filter__count {
    font-size: 12px;
}

.gw-gantt-r3__quick-filter .gw-button {
    font-size: 12px;
}

.gw-gantt-r3__controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 10px;
    padding: 2px 0 4px;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.gw-gantt-r3__modes,
.gw-gantt-r3__nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
}

.gw-gantt-r3__modes {
    padding: 2px;
    border-radius: 999px;
    background: var(--gw-gantt-r3-accent-soft);
}

.gw-gantt-r3__modes button,
.gw-gantt-r3__nav button,
.gw-gantt-r3__mode,
.gw-gantt-r3__nav-button {
    min-height: 34px;
    padding: 0 13px;
    border: 1px solid transparent;
    border-radius: 999px;
    background: transparent;
    color: var(--gw-gantt-r3-ink-soft);
    cursor: pointer;
    font: inherit;
    font-size: 13px;
    font-weight: 650;
    line-height: 1;
    transition: background-color 160ms cubic-bezier(.22, 1, .36, 1), color 160ms ease, border-color 160ms ease, box-shadow 160ms ease, transform 160ms cubic-bezier(.22, 1, .36, 1);
}

.gw-gantt-r3__modes button,
.gw-gantt-r3__mode {
    min-width: 32px;
    padding-inline: 11px;
    letter-spacing: .035em;
    text-transform: uppercase;
}

.gw-gantt-r3__nav button,
.gw-gantt-r3__nav-button {
    border-color: var(--gw-gantt-r3-line);
    background: var(--gw-gantt-r3-surface);
}

.gw-gantt-r3__modes button:hover:not(:disabled),
.gw-gantt-r3__mode:hover:not(:disabled) {
    background: rgba(255, 255, 255, .7);
    color: var(--gw-gantt-r3-ink);
}

.gw-gantt-r3__nav button:hover:not(:disabled),
.gw-gantt-r3__nav-button:hover:not(:disabled) {
    border-color: rgba(40, 110, 215, .24);
    background: var(--gw-gantt-r3-accent-soft);
    color: var(--gw-gantt-r3-ink);
}

.gw-gantt-r3__modes button:active:not(:disabled),
.gw-gantt-r3__nav button:active:not(:disabled),
.gw-gantt-r3__mode:active:not(:disabled),
.gw-gantt-r3__nav-button:active:not(:disabled) {
    transform: translateY(1px);
}

.gw-gantt-r3__modes button:focus-visible,
.gw-gantt-r3__nav button:focus-visible,
.gw-gantt-r3__mode:focus-visible,
.gw-gantt-r3__nav-button:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(40, 110, 215, .18);
}

.gw-gantt-r3__mode.is-active,
.gw-gantt-r3__mode[aria-pressed="true"],
.gw-gantt-r3__modes button.is-active,
.gw-gantt-r3__modes button[aria-pressed="true"] {
    border-color: transparent;
    background: var(--gw-gantt-r3-surface);
    color: var(--gw-gantt-r3-accent-ink);
    box-shadow: 0 1px 2px rgba(15, 33, 64, .06), 0 2px 8px -2px rgba(40, 110, 215, .24);
}

.gw-gantt-r3__modes button:disabled,
.gw-gantt-r3__nav button:disabled,
.gw-gantt-r3__mode:disabled,
.gw-gantt-r3__nav-button:disabled {
    opacity: .46;
    cursor: not-allowed;
}

.gw-gantt-r3__period {
    padding: 6px 12px;
    border-radius: 999px;
    color: var(--gw-gantt-r3-ink);
    font-weight: 700;
    font-size: 13px;
    font-variant-numeric: tabular-nums;
    letter-spacing: .01em;
}

.gw-gantt-r3__summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin-left: auto;
}

.gw-gantt-r3__header-sync {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-height: 30px;
    max-width: 210px;
    padding: 0 10px;
    overflow: hidden;
    border: 1px solid var(--gw-gantt-r3-line);
    border-radius: 999px;
    background: var(--gw-gantt-r3-surface);
    color: var(--gw-gantt-r3-ink-soft);
    cursor: pointer;
    font: inherit;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
}

.gw-gantt-r3__header-sync:hover:not(:disabled),
.gw-gantt-r3__header-sync:focus-visible {
    border-color: rgba(40, 110, 215, .3);
    background: var(--gw-gantt-r3-accent-soft);
    color: var(--gw-gantt-r3-ink);
    outline: none;
}

.gw-gantt-r3__header-sync:focus-visible {
    box-shadow: 0 0 0 3px rgba(40, 110, 215, .16);
}

.gw-gantt-r3__header-sync.is-active,
.gw-gantt-r3__header-sync[aria-pressed="true"] {
    border-color: var(--gw-gantt-r3-accent);
    background: var(--gw-gantt-r3-accent);
    color: #ffffff;
}

.gw-gantt-r3__header-sync:disabled {
    opacity: .52;
    cursor: not-allowed;
}

.gw-gantt-r3__header-sync .material-symbols-outlined,
.gw-gantt-r3__header-sync .gw-icon {
    flex: 0 0 auto;
    width: 15px;
    height: 15px;
    font-size: 15px;
    line-height: 1;
}

.gw-gantt-r3__header-sync span:not(.material-symbols-outlined):not(.gw-icon) {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gw-gantt-r3__chip {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0 10px;
    border: 1px solid var(--gw-gantt-r3-line-soft);
    border-radius: 999px;
    background: var(--gw-gantt-r3-surface-2);
    color: var(--gw-gantt-r3-ink-soft);
    font-size: 12px;
    font-weight: 650;
    font-variant-numeric: tabular-nums;
    letter-spacing: .005em;
}

.gw-gantt-r3__frame {
    display: flex;
    min-width: 0;
    min-height: 300px;
    overflow: hidden;
    border: 0;
    border-top: 1px solid var(--gw-gantt-r3-line);
    border-bottom: 1px solid var(--gw-gantt-r3-line);
    border-radius: 0;
    background: var(--gw-gantt-r3-surface);
    box-shadow: none;
}

.gw-gantt-r3__left {
    display: flex;
    flex: 0 0 var(--gw-gantt-r3-left-width);
    flex-direction: column;
    width: var(--gw-gantt-r3-left-width);
    min-width: 0;
    max-width: var(--gw-gantt-r3-left-width);
    overflow: hidden;
    border-right: 1px solid var(--gw-gantt-r3-line);
    background: var(--gw-gantt-r3-surface-2);
}

.gw-gantt-r3__left-scroll {
    flex: 1 1 auto;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-gutter: stable;
}

.gw-gantt-r3__left-scroll-content {
    width: max-content;
    min-width: 100%;
}

.gw-gantt-r3__splitter {
    position: relative;
    z-index: 3;
    flex: 0 0 9px;
    width: 9px;
    padding: 0;
    border: 0;
    border-right: 1px solid var(--gw-gantt-r3-line);
    background: var(--gw-gantt-r3-surface-2);
    cursor: col-resize;
    touch-action: none;
    transition: background-color 160ms ease;
}

.gw-gantt-r3__splitter::before {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 2px;
    height: 36px;
    border-radius: 999px;
    background: var(--gw-gantt-r3-line);
    content: "";
    transform: translate(-50%, -50%);
    transition: background-color 160ms ease, height 160ms cubic-bezier(.22, 1, .36, 1);
}

.gw-gantt-r3__splitter:hover,
.gw-gantt-r3__splitter:focus-visible {
    background: var(--gw-gantt-r3-accent-soft);
    outline: none;
}

.gw-gantt-r3__splitter:hover::before,
.gw-gantt-r3__splitter:focus-visible::before,
.gw-gantt-r3.is-resizing .gw-gantt-r3__splitter::before {
    height: 48px;
    background: rgba(40, 110, 215, .42);
}

.gw-gantt-r3__splitter:focus-visible {
    box-shadow: inset 0 0 0 2px rgba(40, 110, 215, .2);
}

.gw-gantt-r3.is-resizing,
.gw-gantt-r3.is-resizing * {
    cursor: col-resize !important;
    user-select: none !important;
}

.gw-gantt-r3__left-head {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 24px;
    align-items: center;
    gap: 6px;
    min-height: 44px;
    padding: 6px 8px 6px 10px;
    border-bottom: 1px solid var(--gw-gantt-r3-line);
    background: var(--gw-gantt-r3-surface);
}

.gw-gantt-r3__left-title {
    overflow: hidden;
    color: var(--gw-gantt-r3-ink-faint);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .09em;
    text-overflow: ellipsis;
    text-transform: uppercase;
    white-space: nowrap;
}

.gw-gantt-r3__left-toggle {
    display: inline-grid;
    width: 24px;
    height: 24px;
    padding: 0;
    place-items: center;
    border: 1px solid var(--gw-gantt-r3-line);
    border-radius: 8px;
    background: var(--gw-gantt-r3-surface);
    color: var(--gw-gantt-r3-ink-soft);
    cursor: pointer;
    font: inherit;
    transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
}

.gw-gantt-r3__left-toggle:hover:not(:disabled),
.gw-gantt-r3__left-toggle:focus-visible {
    border-color: rgba(40, 110, 215, .26);
    background: var(--gw-gantt-r3-accent-soft);
    color: var(--gw-gantt-r3-accent-ink);
    outline: none;
}

.gw-gantt-r3__left-toggle:focus-visible {
    box-shadow: 0 0 0 3px rgba(40, 110, 215, .14);
}

.gw-gantt-r3__left-toggle:disabled {
    opacity: .44;
    cursor: not-allowed;
}

.gw-gantt-r3__left-toggle .material-symbols-outlined,
.gw-gantt-r3__left-toggle .gw-icon {
    width: 17px;
    height: 17px;
    font-size: 17px;
    line-height: 1;
}

.gw-gantt-r3__filter {
    min-width: 0;
}

.gw-gantt-r3__filter input {
    width: 100%;
    min-width: 0;
    height: 30px;
    padding: 0 9px;
    border: 1px solid var(--gw-gantt-r3-line);
    border-radius: 8px;
    outline: none;
    background: var(--gw-gantt-r3-surface-2);
    color: var(--gw-gantt-r3-ink);
    font: inherit;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0;
    transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease;
}

.gw-gantt-r3__filter input:focus {
    border-color: rgba(40, 110, 215, .36);
    background: var(--gw-gantt-r3-surface);
    box-shadow: 0 0 0 3px rgba(40, 110, 215, .13);
}

.gw-gantt-r3__filter input::placeholder {
    color: var(--gw-gantt-r3-ink-faint);
    font-weight: 600;
}

.gw-gantt-r3__depth-0 { --gw-gantt-r3-indent: 8px; }
.gw-gantt-r3__depth-1 { --gw-gantt-r3-indent: 20px; }
.gw-gantt-r3__depth-2 { --gw-gantt-r3-indent: 32px; }
.gw-gantt-r3__depth-3 { --gw-gantt-r3-indent: 44px; }
.gw-gantt-r3__depth-4 { --gw-gantt-r3-indent: 56px; }
.gw-gantt-r3__depth-5 { --gw-gantt-r3-indent: 68px; }
.gw-gantt-r3__depth-6 { --gw-gantt-r3-indent: 80px; }
.gw-gantt-r3__depth-7 { --gw-gantt-r3-indent: 92px; }
.gw-gantt-r3__depth-8 { --gw-gantt-r3-indent: 104px; }

.gw-gantt-r3__group-name {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 6px;
    width: max-content;
    min-width: 100%;
    padding: 0 10px 0 var(--gw-gantt-r3-indent, 10px);
    border: 0;
    border-bottom: 1px solid var(--gw-gantt-r3-line-soft);
    background: transparent;
    color: var(--gw-gantt-r3-ink);
    cursor: pointer;
    font: inherit;
    font-weight: 600;
    text-align: left;
    transition: background-color 140ms ease, color 140ms ease, box-shadow 140ms ease;
}

.gw-gantt-r3__group-name:hover,
.gw-gantt-r3__group-name:focus-visible {
    background: var(--gw-gantt-r3-accent-soft);
    outline: none;
}

.gw-gantt-r3__group-name:focus-visible {
    box-shadow: inset 0 0 0 2px rgba(40, 110, 215, .22);
}

.gw-gantt-r3__group-name.is-collapsed,
.gw-gantt-r3__group-name[aria-expanded="false"] {
    background: rgba(15, 33, 64, .035);
}

.gw-gantt-r3__group-expander {
    flex: 0 0 16px;
    width: 16px;
    color: var(--gw-gantt-r3-ink-faint);
    font-size: 15px;
    font-weight: 700;
    line-height: 1;
    text-align: center;
    transition: color 140ms ease, transform 160ms cubic-bezier(.22, 1, .36, 1);
}

.gw-gantt-r3__group-name:hover .gw-gantt-r3__group-expander,
.gw-gantt-r3__group-name:focus-visible .gw-gantt-r3__group-expander {
    color: var(--gw-gantt-r3-accent-ink);
}

.gw-gantt-r3__group-title {
    flex: 0 0 auto;
    min-width: max-content;
    overflow: visible;
    font-size: 14px;
    line-height: 1.25;
    text-overflow: clip;
    white-space: nowrap;
}

.gw-gantt-r3__group-meta {
    flex: 0 0 auto;
    min-width: 22px;
    margin-left: auto;
    padding: 1px 7px;
    border: 1px solid var(--gw-gantt-r3-line);
    border-radius: 999px;
    background: var(--gw-gantt-r3-surface);
    color: var(--gw-gantt-r3-ink-soft);
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: center;
}

.gw-gantt-r3__activity-lanes {
    min-width: 100%;
    border-bottom: 1px solid var(--gw-gantt-r3-line-soft);
    background: linear-gradient(90deg, transparent 0, transparent var(--gw-gantt-r3-indent, 10px), var(--gw-gantt-r3-line) var(--gw-gantt-r3-indent, 10px), transparent calc(var(--gw-gantt-r3-indent, 10px) + 1px));
}

.gw-gantt-r3__group-name--empty {
    min-height: 220px;
    align-items: center;
    justify-content: center;
    color: var(--gw-gantt-r3-ink-faint);
    text-align: center;
}

.gw-gantt-r3__right {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    overflow: auto;
    background: var(--gw-gantt-r3-surface);
    overscroll-behavior: contain;
}

.gw-gantt-r3__timeline {
    position: relative;
    min-width: max-content;
}

.gw-gantt-r3__scale {
    position: sticky;
    top: 0;
    z-index: 2;
    display: grid;
    grid-auto-columns: minmax(48px, 1fr);
    grid-auto-flow: row;
    border-bottom: 1px solid var(--gw-gantt-r3-line);
    background: var(--gw-gantt-r3-surface);
    min-height: 44px;
}

.gw-gantt-r3__scale-cell {
    display: grid;
    min-height: 44px;
    place-items: center;
    min-width: 0;
    padding: 6px;
    border: 0;
    border-right: 1px solid var(--gw-gantt-r3-line-soft);
    background: transparent;
    color: var(--gw-gantt-r3-ink-faint);
    cursor: pointer;
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    text-align: center;
    white-space: nowrap;
    transition: background-color 140ms ease, color 140ms ease, box-shadow 140ms ease;
}

.gw-gantt-r3__scale-cell:hover,
.gw-gantt-r3__scale-cell:focus-visible,
.gw-gantt-r3__scale-cell.is-selected,
.gw-gantt-r3__scale-cell[aria-pressed="true"] {
    background: var(--gw-gantt-r3-accent-soft);
    color: var(--gw-gantt-r3-accent-ink);
    outline: none;
}

.gw-gantt-r3__scale-cell:focus-visible {
    box-shadow: inset 0 0 0 2px rgba(40, 110, 215, .22);
}

.gw-gantt-r3__scale-cell:disabled {
    color: var(--gw-gantt-r3-ink-faint);
    cursor: default;
    opacity: .8;
}

.gw-gantt-r3__scale-cell:disabled:hover {
    background: transparent;
}

.gw-gantt-r3__scale-cell.is-weekend,
.gw-gantt-r3__grid-cell.is-weekend {
    background: var(--gw-gantt-r3-weekend);
}

.gw-gantt-r3__scale-cell.is-weekend:hover,
.gw-gantt-r3__scale-cell.is-weekend:focus-visible,
.gw-gantt-r3__scale-cell.is-weekend.is-selected,
.gw-gantt-r3__scale-cell.is-weekend[aria-pressed="true"] {
    background: var(--gw-gantt-r3-accent-soft);
}

.gw-gantt-r3__grid,
.gw-gantt-r3__rows {
    position: absolute;
    top: 44px;
    right: 0;
    left: 0;
}

.gw-gantt-r3__grid {
    display: grid;
}

.gw-gantt-r3__today-marker {
    position: absolute;
    top: 44px;
    z-index: 1;
    min-width: 2px;
    border-left: 1px dashed rgba(225, 60, 60, .5);
    background: linear-gradient(90deg, rgba(225, 60, 60, .1), rgba(225, 60, 60, 0));
    pointer-events: none;
}

.gw-gantt-r3__today-marker span {
    position: sticky;
    top: 52px;
    display: inline-flex;
    margin-left: 4px;
    padding: 2px 7px;
    border-radius: 999px;
    background: #e13c3c;
    box-shadow: 0 4px 10px -2px rgba(177, 30, 30, .4);
    color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .03em;
    line-height: 1.25;
    text-transform: uppercase;
}

.gw-gantt-r3__grid-cell {
    border-right: 1px solid var(--gw-gantt-r3-line-soft);
    background: transparent;
}

.gw-gantt-r3__row {
    position: relative;
    border-bottom: 1px solid var(--gw-gantt-r3-line-soft);
    background: transparent;
}

.gw-gantt-r3__row--group {
    background: rgba(15, 33, 64, .018);
}

.gw-gantt-r3__row--activities {
    background: transparent;
    content-visibility: auto;
    contain-intrinsic-size: auto 40px;
}

.gw-gantt-r3__group-span {
    position: absolute;
    top: 14px;
    min-width: 4px;
    height: 6px;
    border-radius: 999px;
    background: rgba(31, 53, 84, .34);
}

.gw-gantt-r3__group-span.is-collapsed,
.gw-gantt-r3__group-span[aria-expanded="false"] {
    top: 13px;
    height: 8px;
    background: rgba(40, 110, 215, .42);
}

.gw-gantt-r3__group-span span {
    position: absolute;
    top: -17px;
    right: 0;
    display: inline-flex;
    min-width: 18px;
    justify-content: center;
    padding: 1px 6px;
    border: 1px solid var(--gw-gantt-r3-line);
    border-radius: 999px;
    background: var(--gw-gantt-r3-surface);
    color: var(--gw-gantt-r3-ink-soft);
    font-size: 11px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.gw-gantt-r3__bar {
    position: absolute;
    display: flex;
    align-items: center;
    gap: 8px;
    height: 30px;
    padding: 0 9px 0 11px;
    overflow: hidden;
    border: 0;
    border-radius: 999px;
    color: #ffffff;
    cursor: pointer;
    font: inherit;
    text-align: left;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18), 0 1px 2px rgba(15, 33, 64, .22);
    transition: transform 160ms cubic-bezier(.22, 1, .36, 1), box-shadow 160ms ease, width 140ms ease, filter 160ms ease;
}

.gw-gantt-r3__bar--default {
    background: linear-gradient(180deg, var(--gw-gantt-r3-accent-strong), var(--gw-gantt-r3-accent-deep));
}

.gw-gantt-r3__bar:hover,
.gw-gantt-r3__bar:focus-visible,
.gw-gantt-r3__bar.is-selected,
.gw-gantt-r3__bar[aria-pressed="true"] {
    z-index: 4;
    outline: none;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .28), 0 2px 4px rgba(15, 33, 64, .18), 0 12px 22px -10px rgba(15, 33, 64, .42);
    filter: saturate(1.06);
    transform: translateY(-1px);
}

.gw-gantt-r3__bar:focus-visible {
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .78), 0 0 0 3px rgba(40, 110, 215, .24), 0 12px 22px -10px rgba(15, 33, 64, .42);
}

.gw-gantt-r3__bar::before {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(180deg, rgba(255, 255, 255, .18), rgba(255, 255, 255, 0));
    content: "";
    pointer-events: none;
}

.gw-gantt-r3--dense .gw-gantt-r3__bar,
.gw-gantt-r3.is-dense .gw-gantt-r3__bar {
    content-visibility: auto;
    contain-intrinsic-size: auto 30px;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .22);
}

.gw-gantt-r3--dense .gw-gantt-r3__bar::before,
.gw-gantt-r3.is-dense .gw-gantt-r3__bar::before {
    display: none;
}

.gw-gantt-r3--dense .gw-gantt-r3__bar:hover,
.gw-gantt-r3--dense .gw-gantt-r3__bar:focus-visible,
.gw-gantt-r3.is-dense .gw-gantt-r3__bar:hover,
.gw-gantt-r3.is-dense .gw-gantt-r3__bar:focus-visible {
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .5);
}

.gw-gantt-r3__bar-progress {
    position: absolute;
    inset: 0 auto 0 0;
    border-radius: 999px 0 0 999px;
    opacity: .85;
}

.gw-gantt-r3__bar--default .gw-gantt-r3__bar-progress {
    background: rgba(255, 255, 255, .22) !important;
    opacity: 1;
}

.gw-gantt-r3__bar-label,
.gw-gantt-r3__bar-value {
    position: relative;
    z-index: 1;
}

.gw-gantt-r3__bar-label {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: .005em;
    text-overflow: ellipsis;
    text-shadow: 0 1px 2px rgba(7, 24, 48, .32);
    white-space: nowrap;
}

.gw-gantt-r3__bar-value {
    flex: 0 0 auto;
    min-width: 34px;
    padding: 1px 7px;
    border-radius: 999px;
    background: rgba(7, 24, 48, .2);
    color: #ffffff;
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: center;
}

.gw-gantt-r3__empty {
    display: grid;
    min-height: 200px;
    place-items: center;
    border-radius: 18px;
    background: rgba(19, 34, 56, .04);
    color: var(--gw-gantt-r3-ink-soft);
}

.gw-gantt-r3__empty-panel {
    display: grid;
    min-height: 220px;
    padding: 24px;
    place-items: center;
    gap: 8px;
    background: transparent;
    color: var(--gw-gantt-r3-ink-soft);
    text-align: center;
}

.gw-gantt-r3__empty-panel strong {
    color: var(--gw-gantt-r3-ink);
    font-size: .95rem;
    font-weight: 650;
}

.gw-gantt-r3__empty-panel span {
    max-width: 28rem;
    font-size: .82rem;
    line-height: 1.5;
}

.gw-gantt-r3__tooltip-panel {
    position: fixed;
    top: -9999px;
    left: -9999px;
    z-index: 140;
    max-width: min(320px, calc(100vw - 24px));
    padding: 10px 13px;
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 12px;
    background: #16243a;
    box-shadow: 0 1px 2px rgba(4, 14, 32, .2), 0 16px 32px -12px rgba(4, 14, 32, .5);
    color: rgba(238, 244, 252, .95);
    font-size: 12px;
    line-height: 1.5;
    pointer-events: none;
    white-space: pre-line;
}

.gw-gantt-r3__tooltip-panel[hidden] {
    display: none;
}

.gw-gantt-r3__tooltip-panel strong {
    display: block;
    margin-bottom: 2px;
    color: #f5f8fd;
    font-size: 13px;
    font-weight: 700;
}

.gw-gantt-r3__tooltip-panel span {
    color: rgba(214, 228, 246, .82);
}

.gw-gantt-r3__tooltip-panel::after {
    position: absolute;
    top: -6px;
    left: var(--gw-gantt-r3-tooltip-arrow-left, 16px);
    width: 12px;
    height: 12px;
    border-top: 1px solid rgba(255, 255, 255, .08);
    border-left: 1px solid rgba(255, 255, 255, .08);
    background: #16243a;
    content: "";
    transform: rotate(45deg);
}

.gw-gantt-r3__tooltip-panel[data-tooltip-placement="top"]::after {
    top: auto;
    bottom: -6px;
    border-top: 0;
    border-right: 1px solid rgba(255, 255, 255, .08);
    border-bottom: 1px solid rgba(255, 255, 255, .08);
    border-left: 0;
}

@container (max-width: 1120px) {
    .gw-gantt-r3__summary {
        width: 100%;
        margin-left: 0;
    }
}

@container (max-width: 900px) {
    .gw-gantt-r3__frame {
        flex-direction: row;
    }

    .gw-gantt-r3__left {
        flex: 0 0 clamp(148px, 38%, 208px) !important;
        width: clamp(148px, 38%, 208px) !important;
        max-width: clamp(148px, 38%, 208px) !important;
        border-right: 1px solid rgba(40, 110, 215, .1);
        border-bottom: 0;
    }

    .gw-gantt-r3__splitter {
        display: none;
    }
}

@container (max-width: 430px) {
    .gw-gantt-r3__nav {
        width: 100%;
        flex-wrap: nowrap;
        justify-content: space-between;
        gap: 4px;
    }

    .gw-gantt-r3__nav button,
    .gw-gantt-r3__nav-button {
        padding-inline: 9px;
    }

    .gw-gantt-r3__period {
        min-width: 0;
        padding-inline: 4px;
        white-space: nowrap;
    }

    .gw-gantt-r3__left-head {
        grid-template-columns: 24px minmax(0, 1fr);
    }

    .gw-gantt-r3__left-title {
        display: none;
    }
}

.galgo-widget[data-gw-size="compact"] .gw-gantt-r3__summary,
.galgo-widget[data-gw-size="mobile"] .gw-gantt-r3__summary {
    width: 100%;
    margin-left: 0;
}

.galgo-widget[data-gw-size="compact"] .gw-gantt-r3__frame,
.galgo-widget[data-gw-size="mobile"] .gw-gantt-r3__frame {
    flex-direction: row;
}

.galgo-widget[data-gw-size="compact"] .gw-gantt-r3__left,
.galgo-widget[data-gw-size="mobile"] .gw-gantt-r3__left {
    flex: 0 0 clamp(148px, 38%, 208px) !important;
    width: clamp(148px, 38%, 208px) !important;
    max-width: clamp(148px, 38%, 208px) !important;
    border-right: 1px solid rgba(40, 110, 215, .1);
    border-bottom: 0;
}

.galgo-widget[data-gw-size="compact"] .gw-gantt-r3__splitter,
.galgo-widget[data-gw-size="mobile"] .gw-gantt-r3__splitter {
    display: none;
}

.galgo-widget[data-gw-size="mobile"] .gw-gantt-r3__left-head {
    grid-template-columns: 24px minmax(0, 1fr);
}

.galgo-widget[data-gw-size="mobile"] .gw-gantt-r3__left-title {
    display: none;
}

@media (prefers-reduced-motion: reduce) {
    .gw-gantt-r3 *,
    .gw-gantt-r3 *::before,
    .gw-gantt-r3 *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }

    .gw-gantt-r3__bar:hover,
    .gw-gantt-r3__bar:focus-visible,
    .gw-gantt-r3__bar.is-selected,
    .gw-gantt-r3__bar[aria-pressed="true"] {
        transform: none;
    }
}

/* Keyboard focus must survive clipped scroll regions and forced colors.
 * The older Gantt rules use only box-shadow, which forced colors removes. */
.galgo-widget :is(button, a[href], input, select, textarea, [tabindex]):focus-visible {
    outline: 2px solid var(--gw-primary) !important;
    outline-offset: -2px;
}

@media (forced-colors: active) {
    .galgo-widget :is(button, a[href], input, select, textarea, [tabindex]):focus-visible {
        outline-color: Highlight !important;
    }
}
