@page {
            size: A3 landscape;
            margin: 8mm;
        }

        .session-overview {
                            --primary-50: #f2f6e8;
                            --primary-100: #ebf5d2;
                            --primary-200: #daeeaa;
                            --primary-300: #cae87d;
                            --primary-400: #b8e449;
                            --primary-500: #96c819;
                            --primary-600: #86b217;
                            --primary-700: #6e9214;
                            --primary-800: #54720b;
                            --primary-900: #354707;
                    }

        .session-overview {
            color-scheme: light;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
        }

        .session-overview,
        .session-overview * {
            box-sizing: border-box;
        }

        .session-overview {
            --so-bg: var(--background, #fff);
            --so-ink: var(--foreground, #101828);
            --so-ink-muted: var(--muted-foreground, #4b5b69);
            --so-ink-mute2: color-mix(in oklab, var(--so-ink-muted) 76%, transparent);
            --so-border: var(--border, #e4e8ec);
            --so-card: var(--card, #fff);
            --so-primary: var(--primary-500, var(--primary, #64748b));
            --so-primary-deep: var(--primary-700, var(--primary, #475569));
            --so-tint: color-mix(in oklab, var(--so-primary) 5%, white);
            --so-font: "InterVariable", "Inter", ui-sans-serif, system-ui, sans-serif;
            --so-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
            --so-shadow-soft:
                0 1px 0 color-mix(in oklab, var(--so-ink) 2%, transparent),
                0 8px 24px color-mix(in oklab, var(--so-ink) 4%, transparent);
            min-height: 100dvh;
            padding: 1.1rem 1.25rem 1.5rem;
            color: var(--so-ink);
            font-family: var(--so-font);
            text-wrap: pretty;
            print-color-adjust: exact;
            -webkit-print-color-adjust: exact;
        }

        .session-overview__shell {
            width: min(100%, 1920px);
            margin: 0 auto;
        }

        .session-overview.is-widget {
            min-height: 0;
            padding: 0;
        }

        /* Masthead — kicker pill, tight title, stats and print action on one row */
        .session-overview__masthead {
            display: flex;
            align-items: flex-end;
            justify-content: space-between;
            gap: 1.5rem 2.5rem;
            margin-bottom: 1.1rem;
        }

        .session-overview__event-name {
            display: inline-flex;
            max-width: 100%;
            margin: 0 0 .55rem;
            padding: .2rem .65rem;
            border: 1px solid color-mix(in oklab, var(--so-primary) 30%, transparent);
            border-radius: 999px;
            background: color-mix(in oklab, var(--so-primary) 6%, transparent);
            color: var(--so-primary-deep);
            font-family: var(--so-mono);
            font-size: .62rem;
            font-weight: 700;
            letter-spacing: .12em;
            text-transform: uppercase;
        }

        .session-overview__title {
            margin: 0;
            color: var(--so-ink);
            font-size: clamp(1.55rem, 2.6vw, 2.15rem);
            font-weight: 800;
            letter-spacing: -.03em;
            line-height: 1.05;
            text-wrap: balance;
        }

        .session-overview__subtitle {
            margin: .45rem 0 0;
            color: var(--so-ink-muted);
            font-size: .85rem;
            line-height: 1.5;
        }

        .session-overview__masthead-side {
            display: flex;
            flex: none;
            align-items: center;
            gap: 1.4rem;
        }

        .session-overview__summary {
            display: flex;
            margin: 0;
        }

        .session-overview__summary-item {
            display: flex;
            flex-direction: column;
            gap: .28rem;
            padding: 0 1.1rem;
        }

        .session-overview__summary-item:first-child {
            padding-left: 0;
        }

        .session-overview__summary-item + .session-overview__summary-item {
            border-left: 1px solid var(--so-border);
        }

        .session-overview__summary-label {
            color: var(--so-ink-muted);
            font-family: var(--so-mono);
            font-size: .55rem;
            font-weight: 700;
            letter-spacing: .12em;
            text-transform: uppercase;
        }

        .session-overview__summary-value {
            margin: 0;
            color: var(--so-ink);
            font-size: 1.2rem;
            font-variant-numeric: tabular-nums;
            font-weight: 780;
            letter-spacing: -.03em;
            line-height: 1;
        }

        .session-overview__print-button {
            display: inline-flex;
            min-height: 2.5rem;
            align-items: center;
            justify-content: center;
            gap: .5rem;
            padding: .6rem 1.15rem;
            border: 0;
            border-radius: .5rem;
            background: var(--so-ink);
            box-shadow:
                0 1px 2px color-mix(in oklab, var(--so-ink) 8%, transparent),
                0 10px 24px -14px color-mix(in oklab, var(--so-ink) 50%, transparent);
            color: var(--so-bg);
            cursor: pointer;
            font: inherit;
            font-size: .8rem;
            font-weight: 700;
            text-decoration: none;
            white-space: nowrap;
            transition: background-color .15s ease, transform .15s ease;
        }

        .session-overview__print-button:hover {
            background: color-mix(in oklab, var(--so-ink) 86%, var(--so-primary));
        }

        .session-overview__print-button:focus-visible {
            outline: 3px solid var(--primary-300, var(--ring, #94a3b8));
            outline-offset: 3px;
        }

        .session-overview__print-button:active {
            transform: scale(.96);
        }

        /* Day boards — one soft card per day */
        .session-overview__days {
            display: grid;
            gap: .9rem;
        }

        .session-overview__day {
            overflow: hidden;
            border: 1px solid var(--so-border);
            border-radius: .9rem;
            background: var(--so-card);
            box-shadow: var(--so-shadow-soft);
        }

        .session-overview__day-head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 1.25rem;
            padding: .6rem .75rem;
            border-bottom: 1px solid var(--so-border);
        }

        .session-overview__date {
            display: flex;
            min-width: 0;
            align-items: center;
            gap: .65rem;
        }

        .session-overview__day-badge {
            display: flex;
            flex: none;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            width: 2.55rem;
            height: 2.55rem;
            border: 1px solid color-mix(in oklab, var(--so-primary) 32%, transparent);
            border-radius: .65rem;
            background: color-mix(in oklab, var(--so-primary) 7%, white);
            color: var(--so-primary-deep);
        }

        .session-overview__day-badge-day {
            font-size: 1.02rem;
            font-variant-numeric: tabular-nums;
            font-weight: 800;
            letter-spacing: -.02em;
            line-height: 1;
        }

        .session-overview__day-badge-month {
            margin-top: .14rem;
            font-family: var(--so-mono);
            font-size: .48rem;
            font-weight: 700;
            letter-spacing: .1em;
            line-height: 1;
            text-transform: uppercase;
        }

        .session-overview__weekday {
            margin: 0;
            color: var(--so-ink);
            font-size: .98rem;
            font-weight: 760;
            letter-spacing: -.015em;
            line-height: 1.15;
        }

        .session-overview__day-meta {
            display: flex;
            align-items: baseline;
            flex-wrap: wrap;
            margin: .18rem 0 0;
            color: var(--so-ink-muted);
            font-family: var(--so-mono);
            font-size: .62rem;
            font-variant-numeric: tabular-nums;
            font-weight: 600;
            line-height: 1;
        }

        .session-overview__day-meta span + span {
            margin-left: .65rem;
            padding-left: .65rem;
            border-left: 1px solid var(--so-border);
        }

        .session-overview__day-counts {
            display: flex;
            flex: none;
            align-items: center;
            color: var(--so-ink-muted);
            font-family: var(--so-mono);
            font-size: .58rem;
            font-weight: 700;
            letter-spacing: .08em;
            text-transform: uppercase;
            white-space: nowrap;
        }

        .session-overview__day-counts span + span {
            margin-left: .75rem;
            padding-left: .75rem;
            border-left: 1px solid var(--so-border);
        }

        /* Timeline grid */
        .session-overview__scroll {
            overflow-x: auto;
            overscroll-behavior-x: contain;
        }

        .session-overview__board {
            min-width: var(--board-min-width);
        }

        .session-overview__room-grid,
        .session-overview__timeline-grid {
            display: grid;
            grid-template-columns: 4.25rem repeat(var(--room-count), minmax(9.5rem, 1fr));
        }

        .session-overview__corner,
        .session-overview__room-head {
            min-width: 0;
            padding: .5rem .6rem;
            border-bottom: 1px solid var(--so-border);
            background: color-mix(in oklab, var(--muted, #eef1f4) 55%, transparent);
        }

        .session-overview__corner {
            display: flex;
            align-items: center;
            color: var(--so-ink-muted);
            font-family: var(--so-mono);
            font-size: .56rem;
            font-weight: 700;
            letter-spacing: .12em;
            text-transform: uppercase;
        }

        .session-overview__room-head {
            border-left: 1px solid #dce3ea;
        }

        .session-overview__room-name {
            overflow: hidden;
            color: var(--so-ink);
            font-size: .74rem;
            font-weight: 720;
            line-height: 1.25;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .session-overview__room-meta {
            display: flex;
            align-items: center;
            margin-top: .22rem;
            color: var(--so-ink-mute2);
            font-family: var(--so-mono);
            font-size: .53rem;
            font-variant-numeric: tabular-nums;
            font-weight: 600;
        }

        .session-overview__room-meta span + span {
            margin-left: .5rem;
            padding-left: .5rem;
            border-left: 1px solid var(--so-border);
        }

        .session-overview__time-rail,
        .session-overview__room-track {
            position: relative;
            height: var(--grid-height);
            background: var(--so-card);
        }

        .session-overview__room-track {
            overflow: hidden;
            border-left: 1px solid #dce3ea;
        }

        .session-overview__time-label,
        .session-overview__rule {
            position: absolute;
            top: var(--top);
        }

        .session-overview__time-label {
            right: .6rem;
            z-index: 2;
            transform: translateY(-50%);
            color: var(--so-ink-muted);
            font-family: var(--so-mono);
            font-size: .6rem;
            font-variant-numeric: tabular-nums;
            font-weight: 650;
            line-height: 1;
        }

        .session-overview__time-label:first-child {
            transform: translateY(0);
        }

        .session-overview__time-label:last-child {
            transform: translateY(-100%);
        }

        .session-overview__rule {
            right: 0;
            left: 0;
            height: 1px;
            background: color-mix(in oklab, var(--so-border) 80%, transparent);
        }

        .session-overview__rule:nth-child(even) {
            background: color-mix(in oklab, var(--so-border) 45%, transparent);
        }

        /* Session blocks — tinted 100/200 surfaces with a solid colour spine */
        a.session-overview__session {
            color: inherit;
            text-decoration: none;
            transition: transform .25s ease;
        }

        a.session-overview__session:hover {
            z-index: 3;
            transform: scale(1.05);
        }

        a.session-overview__session:focus-visible {
            z-index: 3;
            outline: 2px solid var(--so-primary-deep);
            outline-offset: 2px;
        }

        .session-overview__session {
            position: absolute;
            top: var(--top);
            left: calc((100% / var(--overlap-count)) * var(--overlap-index) + 3px);
            width: calc((100% / var(--overlap-count)) - 6px);
            height: var(--height);
            min-height: 1.125rem;
            overflow: hidden;
            padding: .3rem .4rem .3rem .5rem;
            border: 1px solid var(--session-color-200);
            border-left: 3px solid var(--session-color);
            border-radius: .45rem;
            background: var(--session-color-100);
            box-shadow:
                0 1px 1px color-mix(in oklab, var(--so-ink) 3%, transparent),
                0 4px 12px -8px color-mix(in oklab, var(--session-color) 35%, transparent);
        }

        .session-overview__session-time {
            color: color-mix(in oklab, var(--session-color) 76%, var(--so-ink));
            font-family: var(--so-mono);
            font-size: .56rem;
            font-variant-numeric: tabular-nums;
            font-weight: 750;
            letter-spacing: .01em;
            line-height: 1.1;
            white-space: nowrap;
        }

        .session-overview__session-name {
            display: -webkit-box;
            overflow: hidden;
            margin-top: .16rem;
            color: var(--so-ink);
            font-size: .68rem;
            font-weight: 740;
            line-height: 1.22;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
        }

        .session-overview__session-extension {
            color: var(--session-color-800);
            font-weight: 900;
            letter-spacing: -.01em;
        }

        .session-overview__session-title {
            font-size: inherit;
        }

        .session-overview__session.is-spacious .session-overview__session-name {
            display: block;
            overflow: visible;
            -webkit-line-clamp: unset;
        }

        .session-overview__session.is-spacious .session-overview__session-extension {
            display: block;
            margin-bottom: .2rem;
            font-size: .92rem;
            line-height: 1;
        }

        .session-overview__session.is-spacious .session-overview__session-extension-separator {
            display: none;
        }

        .session-overview__session.is-spacious .session-overview__session-title {
            display: -webkit-box;
            overflow: hidden;
            font-size: .68rem;
            line-height: 1.22;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
        }

        .session-overview__session-meta {
            display: flex;
            min-width: 0;
            align-items: center;
            gap: .4rem;
            margin-top: .22rem;
            color: var(--so-ink-muted);
            font-size: .56rem;
            font-weight: 620;
            line-height: 1.15;
        }

        .session-overview__session-count {
            flex: none;
            color: var(--so-ink);
            font-variant-numeric: tabular-nums;
            font-weight: 650;
        }

        .session-overview__session-type {
            overflow: hidden;
            padding-left: .4rem;
            border-left: 1px solid color-mix(in oklab, var(--session-color) 30%, var(--so-border));
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .session-overview__session.is-compact {
            padding-top: .22rem;
            padding-bottom: .22rem;
        }

        .session-overview__session.is-compact .session-overview__session-time,
        .session-overview__session.is-compact .session-overview__session-type {
            display: none;
        }

        .session-overview__session.is-compact .session-overview__session-name {
            margin-top: 0;
            font-size: .62rem;
            line-height: 1.12;
            -webkit-line-clamp: 1;
        }

        .session-overview__session.is-compact .session-overview__session-meta {
            margin-top: .1rem;
        }

        .session-overview__empty {
            display: grid;
            min-height: 16rem;
            place-items: center;
            padding: 2.5rem;
            border: 1px dashed var(--so-border);
            border-radius: .9rem;
            background: var(--so-tint);
            color: var(--so-ink-muted);
            font-size: .9rem;
            text-align: center;
        }

        .session-overview__empty i {
            display: block;
            margin-bottom: .75rem;
            color: var(--so-primary);
            font-size: 1.6rem;
        }

        @media screen and (max-width: 767px) {
            .session-overview {
                padding: 1rem;
            }

            .session-overview__masthead {
                align-items: stretch;
                flex-direction: column;
                gap: 1rem;
            }

            .session-overview__masthead-side {
                flex-wrap: wrap;
                justify-content: space-between;
                gap: .9rem;
            }

            .session-overview__day-head {
                align-items: flex-start;
                flex-direction: column;
                gap: .55rem;
            }

            .session-overview__day-counts {
                padding-left: 3.2rem;
            }
        }

        @media print {
            .session-overview {
                min-height: 0;
                padding: 0;
                background: #fff;
            }

            .session-overview__shell {
                width: 100%;
                max-width: none;
            }

            .session-overview__masthead {
                display: none;
            }

            .session-overview__days {
                display: block;
            }

            .session-overview__day {
                overflow: visible;
                border: 1px solid #dfe4ea;
                border-radius: .6rem;
                box-shadow: none;
                break-inside: avoid-page;
            }

            .session-overview__day + .session-overview__day {
                margin-top: 0;
                break-before: page;
                page-break-before: always;
            }

            .session-overview__day-head {
                padding: .45rem .6rem;
            }

            .session-overview__day-badge {
                width: 2rem;
                height: 2rem;
                border-radius: .5rem;
            }

            .session-overview__day-badge-day {
                font-size: .8rem;
            }

            .session-overview__day-badge-month {
                margin-top: .1rem;
                font-size: .42rem;
            }

            .session-overview__weekday {
                font-size: .85rem;
            }

            .session-overview__day-meta {
                font-size: .55rem;
            }

            .session-overview__day-counts {
                font-size: .52rem;
            }

            .session-overview__scroll {
                overflow: visible;
            }

            .session-overview__board {
                width: 100%;
                min-width: 0;
            }

            .session-overview__room-grid,
            .session-overview__timeline-grid {
                grid-template-columns: 3.6rem repeat(var(--room-count), minmax(0, 1fr));
            }

            .session-overview__corner,
            .session-overview__room-head {
                padding: .38rem .34rem;
            }

            .session-overview__room-name {
                font-size: .62rem;
            }

            .session-overview__room-meta,
            .session-overview__session-type {
                display: none;
            }

            .session-overview__session {
                left: calc((100% / var(--overlap-count)) * var(--overlap-index) + 1px);
                width: calc((100% / var(--overlap-count)) - 2px);
                padding-right: .28rem;
                padding-left: .4rem;
                border-radius: .28rem;
                box-shadow: none;
            }

            .session-overview__session-name {
                font-size: .56rem;
            }

            .session-overview__session-time,
            .session-overview__session-meta,
            .session-overview__time-label {
                font-size: .5rem;
            }
        }

        @media (prefers-reduced-motion: reduce) {
            .session-overview__print-button,
            a.session-overview__session {
                transition: none;
            }
        }