/* Experimental styles for the /compare/slack/ page variants.

   Everything here is scoped under `.compare-page`, so that the
   existing marketing pages are unaffected while we explore designs. */

.compare-page {
    /* Small explanatory note under a check/x icon in the feature table. */
    .compare-cell-note {
        font-size: 12px;
        line-height: 14px;
        margin-top: 4px;
        opacity: 0.75;
    }

    .compare-features-table {
        .h2-subheader p {
            max-width: 640px;
            margin: 0 auto;
        }

        .comparison-table td {
            vertical-align: top;
        }
    }
}

/* Variant 1: narrative page in the style of /why-zulip and /for/business. */
.compare-page-narrative {
    /* A shorter hero, so the "at a glance" cards are visible without
       scrolling. */
    .hero.compare-hero {
        padding: 140px 50px 90px;

        @media (width < 900px) {
            padding: 130px 0 80px;
        }
    }

    .compare-glance {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 20px;
        max-width: 1000px;
        margin: -50px auto 0;
        padding: 0 20px;
        position: relative;
        z-index: 1;

        @media (width <= 800px) {
            grid-template-columns: minmax(0, 1fr);
        }
    }

    .compare-glance-card {
        padding: 20px 24px 12px;
        border-radius: 10px;
        border-top: 5px solid var(--color-prominent-border);
        background: hsl(0deg 0% 100%);
        box-shadow: 0 4px 24px hsl(224deg 52% 12% / 18%);

        h2 {
            margin: 0 0 10px;
            font-size: 22px;
            font-weight: 600;
        }

        ul {
            margin: 0;
            padding-left: 20px;
        }

        li {
            margin-bottom: 8px;
            font-size: 16px;
            line-height: 1.45;
        }
    }

    .feature-intro {
        margin-top: 40px;
    }

    .compare-table-section {
        margin: 40px 0 0;
        padding: 8px 16px 0;
        background-color: var(--color-background-solid-hero);
        color: var(--color-text-hero);
    }

    /* Alternate section backgrounds, as on /self-hosting, but
       without that page's pull-quote styles. */
    .alternative-features .feature-container {
        padding: 30px 4vw;

        &:nth-child(even) {
            background: var(--color-background-box);
            border-radius: 10px;
        }
    }

    .feature-text .intro_quote blockquote {
        font-size: 17px;
        margin-top: 24px;
        margin-bottom: 0;
    }

    .feature-image img {
        max-width: 100%;
    }
}

/* Variant 2: "the differences that matter" page. */
.compare-page-differences {
    .compare-differences {
        max-width: 800px;
        margin: 0 auto;
        padding: 0 20px;

        h2 {
            text-align: center;
            font-weight: 600;
            margin: 20px 0 24px;
        }
    }

    .compare-levels-table {
        width: 100%;
        border-collapse: collapse;
        font-size: 17px;

        th {
            text-align: left;
            padding: 8px 12px;
            border-bottom: 2px solid var(--color-prominent-border);
            font-weight: 600;
        }

        td {
            padding: 12px;
            border-bottom: 1px solid hsl(0deg 0% 0% / 10%);
            vertical-align: top;
            line-height: 1.4;
        }

        th:not(:first-child),
        td:not(:first-child) {
            width: 24%;
            text-align: center;
        }

        td small {
            display: block;
            margin-top: 4px;
            font-size: 13px;
            line-height: 1.3;
            color: hsl(0deg 0% 45%);
        }

        @media (width <= 600px) {
            font-size: 15px;

            td {
                padding: 10px 6px;
            }

            th:not(:first-child),
            td:not(:first-child) {
                width: 28%;
            }
        }
    }

    .compare-level {
        display: inline-block;
        padding: 3px 12px;
        border-radius: 999px;
        font-size: 14px;
        font-weight: 600;
        white-space: nowrap;
    }

    .compare-level-yes {
        color: hsl(147deg 80% 24%);
        background: hsl(147deg 60% 90%);
    }

    .compare-level-limited {
        color: hsl(42deg 85% 28%);
        background: hsl(42deg 90% 88%);
    }

    .compare-level-paid {
        color: hsl(223deg 40% 30%);
        background: var(--color-background-box);
    }

    .compare-level-no {
        color: hsl(0deg 55% 40%);
        background: hsl(0deg 60% 93%);
    }

    .compare-levels-note {
        text-align: center;
        font-size: 15px;
        margin: 16px 0 0;
        opacity: 0.8;
    }

    /* The long-form sections and FAQ live in markdown. */
    .markdown h2 {
        margin-top: 40px;
    }

    .markdown p > strong:first-child {
        display: block;
        margin-top: 20px;
    }

    .why-zulip .discounts-section h2 {
        font-weight: 600;
    }
}

/* Variant 3: interactive "why topics?" demo. */
.compare-page-interactive {
    --ci-muted-text: hsl(0deg 0% 45%);
    --ci-frame-height: 560px;

    .hero.compare-hero {
        padding: 150px 50px 70px;
    }

    .ci-intro {
        max-width: 1100px;
        margin: 36px auto 0;
        padding: 0 16px;
        font-size: 21px;
        line-height: 1.5;

        p {
            margin: 0 0 12px;
        }
    }

    .ci-hl {
        padding: 0 4px;
        border-radius: 4px;
        background: hsl(212deg 80% 92%);
        box-decoration-break: clone;
    }

    .ci-demo {
        max-width: 1100px;
        margin: 24px auto 0;
        padding: 0 16px;
    }

    /* Problem headings: all selectable, in any order. */
    .ci-stepper {
        display: flex;
        flex-flow: row wrap;
        gap: 8px;
        margin-bottom: 16px;
    }

    .ci-step {
        padding: 8px 14px;
        border: 1px solid hsl(210deg 30% 85%);
        border-radius: 8px;
        background: hsl(0deg 0% 100%);
        font: inherit;
        font-size: 15px;
        font-weight: 500;
        color: hsl(0deg 0% 25%);
        cursor: pointer;

        &:hover {
            border-color: hsl(219deg 62% 54%);
        }

        &.ci-step-current {
            border-color: hsl(219deg 62% 54%);
            background: hsl(219deg 62% 54%);
            color: hsl(0deg 0% 100%);
            font-weight: 600;
        }

        &.ci-step-done:not(.ci-step-current) .ci-step-title::before {
            content: "✓ ";
            color: hsl(147deg 60% 35%);
        }

        &.ci-step-summary {
            margin-left: auto;
            border-style: dashed;
        }
    }

    .ci-task {
        padding: 18px 24px 16px;
        border-radius: 10px;
        background: var(--color-background-box);
    }

    .ci-task-problem {
        margin: 0 0 8px;
        font-size: 26px;
        font-weight: 600;
        line-height: 1.25;
    }

    .ci-task-try {
        display: flex;
        align-items: baseline;
        gap: 12px;
        font-size: 18px;
        line-height: 1.4;
    }

    .ci-task-try-label {
        flex: none;
        padding: 1px 8px;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 700;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: hsl(0deg 0% 100%);
        background: hsl(219deg 62% 54%);
    }

    /* Directions around the app tabs, with hand-drawn arrows. */
    .ci-tabs-wrap {
        position: relative;
        display: flex;
        align-items: flex-end;
        gap: 12px;
        margin-top: 12px;
        padding-top: 70px;
    }

    .ci-direction {
        display: flex;
        align-items: center;
        gap: 8px;
        font-size: 17px;
        font-style: italic;
        color: var(--ci-muted-text);
        transition: color 200ms;

        &.ci-direction-now {
            color: hsl(219deg 62% 42%);
            font-weight: 600;
        }

        &.ci-direction-done {
            color: hsl(147deg 60% 32%);
            text-decoration: line-through;
            text-decoration-color: hsl(147deg 60% 32% / 50%);

            .ci-direction-num {
                background: hsl(147deg 60% 40%);
            }

            .ci-arrow {
                opacity: 0.25;
            }
        }
    }

    .ci-direction-num {
        flex: none;
        width: 24px;
        height: 24px;
        border-radius: 50%;
        text-align: center;
        line-height: 24px;
        font-style: normal;
        font-size: 13px;
        font-weight: 700;
        color: hsl(0deg 0% 100%);
        background: hsl(219deg 62% 54%);
    }

    /* Sits above the Slack tab; the arrow drops from under the text
       onto the tab's centre (the tab is ~100px wide). */
    .ci-direction-slack {
        position: absolute;
        top: 0;
        left: 0;
        flex-wrap: wrap;
        width: 240px;
        /* Purely decorative; must never intercept clicks on the tabs
           it overlaps. */
        pointer-events: none;
    }

    .ci-direction-zulip {
        margin-bottom: 8px;
    }

    .ci-arrow {
        flex: none;
        fill: none;
        stroke: currentcolor;
        stroke-width: 2.5;
        stroke-linecap: round;
        stroke-linejoin: round;
    }

    .ci-arrow-down {
        /* flex-basis forces the arrow onto its own line; max-width
           keeps it at the drawn size. The left margin puts the
           arrowhead on the Slack tab's centre. */
        flex-basis: 100%;
        max-width: 100px;
        height: 44px;
        margin: -2px 0 0 34px;
    }

    .ci-arrow-left {
        width: 70px;
        height: 32px;
        margin-bottom: -6px;
    }

    @media (width <= 700px) {
        .ci-task-problem {
            font-size: 21px;
        }

        .ci-task-try {
            font-size: 16px;
        }

        .ci-tabs-wrap {
            flex-wrap: wrap;
        }

        .ci-direction-zulip {
            width: 100%;
            margin: 0;
            order: 3;
        }

        .ci-arrow-left {
            transform: rotate(-60deg);
            width: 40px;
            margin: -6px 0 0;
        }

        .ci-direction-slack {
            width: 200px;
        }
    }

    .ci-app-tabs {
        display: flex;
        gap: 4px;
    }

    .ci-app-tab {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 8px 18px;
        border: 1px solid hsl(210deg 30% 85%);
        border-bottom: none;
        border-radius: 8px 8px 0 0;
        background: hsl(210deg 30% 95%);
        font: inherit;
        font-size: 16px;
        font-weight: 600;
        color: var(--ci-muted-text);
        cursor: pointer;

        &.ci-app-tab-active {
            background: hsl(0deg 0% 100%);
            color: inherit;
        }

        &.ci-app-tab-done::after {
            content: "✓";
            color: hsl(147deg 60% 35%);
        }
    }

    .ci-app-logo {
        width: 16px;
        height: 16px;
        border-radius: 4px;
    }

    .ci-app-logo-slack {
        background:
            linear-gradient(90deg, hsl(0deg 78% 63%) 50%, hsl(46deg 96% 55%) 50%) top / 100% 50% no-repeat,
            linear-gradient(90deg, hsl(200deg 86% 45%) 50%, hsl(150deg 50% 45%) 50%) bottom / 100% 50% no-repeat;
    }

    .ci-app-logo-zulip {
        background: hsl(232deg 60% 55%);
    }

    .ci-frame {
        height: var(--ci-frame-height);
        border: 1px solid hsl(210deg 30% 85%);
        border-radius: 0 8px 8px;
        overflow: hidden;
        font-size: 14px;
        line-height: 1.4;
        font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
        -webkit-font-smoothing: antialiased;

        @media (width <= 700px) {
            --ci-frame-height: 520px;
            font-size: 13px;
        }
    }

    .ci-statuses {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 16px;
        margin-top: 16px;

        @media (width <= 700px) {
            grid-template-columns: minmax(0, 1fr);
        }
    }

    .ci-status {
        display: flex;
        flex-direction: column;
        padding: 12px 16px;
        border: 1px solid hsl(210deg 30% 88%);
        border-radius: 8px;
        font-size: 15px;
        line-height: 1.45;

        &.ci-status-is-done {
            border-color: hsl(147deg 60% 60%);
            background: hsl(147deg 60% 97%);
        }
    }

    .ci-status-app {
        display: flex;
        align-items: center;
        gap: 8px;
        margin-bottom: 4px;
        font-size: 15px;
        font-weight: 700;
    }

    .ci-status-hint {
        color: var(--ci-muted-text);
    }

    .ci-controls {
        display: flex;
        justify-content: flex-end;
        align-items: center;
        gap: 16px;
        margin-top: 16px;
    }

    .ci-restart {
        border: none;
        background: none;
        font: inherit;
        font-size: 15px;
        color: var(--color-link);
        text-decoration: underline;
        cursor: pointer;
    }

    .ci-next {
        border: none;
        font-size: 16px;
        padding: 8px 18px;
        color: hsl(0deg 0% 100%);
        background-color: hsl(219deg 62% 54%);
        opacity: 0.45;
        cursor: pointer;

        &.ci-next-ready {
            opacity: 1;
        }

        &:hover {
            background-color: hsl(219deg 62% 50%);
        }
    }

    .ci-summary {
        h2 {
            font-weight: 600;
            margin: 24px 0 12px;
        }

        p {
            max-width: 800px;
            font-size: 17px;
            line-height: 1.55;
        }
    }

    .ci-summary-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 24px;
        font-size: 16px;

        th,
        td {
            padding: 10px 12px;
            text-align: left;
            vertical-align: top;
            border-bottom: 1px solid hsl(210deg 30% 88%);
        }

        th {
            font-weight: 600;
            border-bottom: 2px solid var(--color-prominent-border);
        }

        td:nth-child(2),
        td:nth-child(3) {
            white-space: nowrap;
        }
    }

    .why-zulip .discounts-section h2 {
        font-weight: 600;
    }

    /* Callouts drawn inside the replicas after an action, pointing out
       what just happened. Deliberately not app-styled. */
    .ci-callout {
        display: flex;
        gap: 8px;
        align-items: flex-start;
        margin: 6px 12px 8px;
        padding: 8px 12px;
        border: 2px dashed hsl(219deg 62% 54%);
        border-radius: 8px;
        background: hsl(219deg 62% 97%);
        color: hsl(219deg 62% 30%);
        font-family: "Source Sans 3 VF", sans-serif;
        font-size: 14px;
        line-height: 1.4;
        font-style: italic;
    }

    .ci-callout-mark {
        flex: none;
        font-style: normal;
        font-size: 18px;
        line-height: 1;
    }

    .sk-sidebar .ci-callout,
    .zu-sidebar .ci-callout {
        margin: 4px 8px 8px;
        font-size: 13px;
    }

    .sk-sidebar .ci-callout {
        border-color: hsl(45deg 90% 60%);
        background: hsl(45deg 90% 92%);
        color: hsl(30deg 60% 25%);
    }

    /* ---------------------------------------------------- Slack replica */
    .sk-app {
        display: flex;
        height: 100%;
        background: hsl(0deg 0% 100%);
        color: hsl(0deg 0% 11%);
    }

    .sk-sidebar {
        flex: 0 0 200px;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        background: hsl(300deg 65% 15%);
        color: hsl(300deg 20% 85%);
        padding-bottom: 12px;

        @media (width <= 700px) {
            flex-basis: 120px;
        }
    }

    .sk-workspace {
        display: flex;
        align-items: center;
        box-sizing: border-box;
        height: 44px;
        padding: 0 16px;
        border-bottom: 1px solid hsl(300deg 30% 25%);
        margin-bottom: 8px;
        font-weight: 700;
        font-size: 15px;
        color: hsl(0deg 0% 100%);
    }

    .sk-side-section {
        padding: 12px 16px 4px;
        font-size: 13px;
        color: hsl(300deg 15% 70%);
    }

    .sk-side-item {
        display: flex;
        align-items: center;
        gap: 6px;
        width: 100%;
        padding: 4px 16px;
        border: none;
        background: none;
        text-align: left;
        font: inherit;
        color: inherit;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        cursor: pointer;

        &.sk-side-item-plain {
            cursor: default;
        }

        &:not(.sk-side-item-plain):hover {
            background: hsl(300deg 40% 22%);
        }

        &.sk-side-active {
            background: hsl(207deg 82% 35%);
            color: hsl(0deg 0% 100%);
        }

        &.sk-side-unread {
            font-weight: 700;
            color: hsl(0deg 0% 100%);
        }

        &.sk-side-muted {
            opacity: 0.5;
        }
    }

    .sk-badge {
        margin-left: auto;
        min-width: 18px;
        padding: 0 6px;
        border-radius: 9px;
        text-align: center;
        font-size: 12px;
        font-weight: 700;
        color: hsl(0deg 0% 100%);
        background: hsl(350deg 75% 55%);
    }

    .sk-main {
        flex: 1;
        min-width: 0;
        display: flex;
        flex-direction: column;
    }

    .sk-header {
        position: relative;
        display: flex;
        align-items: center;
        box-sizing: border-box;
        height: 44px;
        gap: 12px;
        padding: 0 16px;
        border-bottom: 1px solid hsl(0deg 0% 87%);
    }

    .sk-header-title {
        font-weight: 900;
        font-size: 16px;
    }

    .sk-header-members {
        font-size: 13px;
        color: hsl(0deg 0% 38%);
    }

    .sk-header-more {
        margin-left: auto;
        border: 1px solid hsl(0deg 0% 80%);
        border-radius: 4px;
        background: none;
        padding: 2px 8px;
        font: inherit;
        cursor: pointer;
    }

    .sk-menu {
        position: absolute;
        top: 40px;
        right: 12px;
        z-index: 2;
        min-width: 200px;
        padding: 6px 0;
        border-radius: 8px;
        background: hsl(0deg 0% 100%);
        box-shadow: 0 4px 16px hsl(0deg 0% 0% / 25%);
    }

    .sk-menu-item {
        display: block;
        width: 100%;
        padding: 6px 16px;
        border: none;
        background: none;
        text-align: left;
        font: inherit;
        cursor: pointer;

        &.sk-menu-item-plain {
            color: hsl(0deg 0% 55%);
            cursor: default;
        }

        &:not(.sk-menu-item-plain):hover {
            color: hsl(0deg 0% 100%);
            background: hsl(207deg 82% 35%);
        }
    }

    .sk-feed {
        flex: 1;
        min-height: 0;
        overflow-y: auto;
        padding: 8px 0;
    }

    .sk-day {
        width: max-content;
        margin: 8px auto 12px;
        padding: 3px 12px;
        border: 1px solid hsl(0deg 0% 85%);
        border-radius: 999px;
        font-size: 13px;
        font-weight: 700;
    }

    .sk-new-divider {
        display: flex;
        align-items: center;
        gap: 8px;
        margin: 6px 16px;
        font-size: 12px;
        font-weight: 700;
        color: hsl(350deg 75% 50%);

        &::before {
            content: "";
            flex: 1;
            border-top: 1px solid hsl(350deg 75% 50%);
        }
    }

    .sk-msg {
        position: relative;
        display: flex;
        gap: 8px;
        padding: 6px 16px;
        cursor: pointer;

        &:hover {
            background: hsl(0deg 0% 97%);

            .sk-actions {
                display: flex;
            }
        }

        &.ci-highlight {
            background: hsl(48deg 100% 88%);
        }
    }

    .sk-avatar {
        flex: none;
        width: 36px;
        height: 36px;
        border-radius: 6px;
        text-align: center;
        line-height: 36px;
        font-weight: 700;
        color: hsl(0deg 0% 100%);

        &.sk-avatar-mini {
            width: 20px;
            height: 20px;
            line-height: 20px;
            font-size: 11px;
            border-radius: 4px;
        }
    }

    .sk-body {
        min-width: 0;
    }

    .sk-meta {
        display: flex;
        align-items: baseline;
        gap: 6px;
    }

    .sk-name {
        font-weight: 900;
    }

    .sk-time {
        font-size: 12px;
        color: hsl(0deg 0% 38%);
    }

    .sk-replies {
        display: flex;
        align-items: center;
        gap: 8px;
        margin-top: 4px;
        padding: 4px 6px;
        border: 1px solid transparent;
        border-radius: 6px;
        background: none;
        font: inherit;
        font-size: 13px;
        cursor: pointer;

        &:hover {
            border-color: hsl(0deg 0% 85%);
            background: hsl(0deg 0% 100%);
        }
    }

    .sk-replies-avatars {
        display: flex;
        gap: 2px;
    }

    .sk-replies-count {
        font-weight: 700;
        color: hsl(207deg 82% 35%);
    }

    .sk-replies-last {
        color: hsl(0deg 0% 38%);
    }

    .sk-actions {
        display: none;
        position: absolute;
        top: -10px;
        right: 16px;
        padding: 2px;
        border: 1px solid hsl(0deg 0% 85%);
        border-radius: 6px;
        background: hsl(0deg 0% 100%);
        box-shadow: 0 1px 4px hsl(0deg 0% 0% / 15%);
    }

    .sk-action {
        border: none;
        border-radius: 4px;
        padding: 3px 8px;
        background: none;
        font: inherit;
        font-size: 12px;
        font-weight: 700;
        cursor: pointer;

        &:hover {
            background: hsl(0deg 0% 93%);
        }
    }

    .sk-thread-card {
        margin: 12px 16px;
        border: 1px solid hsl(0deg 0% 87%);
        border-radius: 8px;
        overflow: hidden;

        .sk-replies {
            margin: 0 16px 8px;
        }
    }

    .sk-thread-card-title {
        padding: 8px 16px;
        border-bottom: 1px solid hsl(0deg 0% 90%);
        font-weight: 700;
        font-size: 13px;
        background: hsl(0deg 0% 98%);
    }

    .sk-composer {
        display: flex;
        align-items: center;
        gap: 8px;
        margin: 0 16px 12px;
        padding: 8px 10px;
        border: 1px solid hsl(0deg 0% 70%);
        border-radius: 8px;
    }

    .sk-input {
        flex: 1;
        min-height: 20px;
        cursor: text;

        &:empty::before {
            content: attr(data-placeholder);
            color: hsl(0deg 0% 55%);
        }
    }

    .sk-send {
        border: none;
        border-radius: 4px;
        padding: 4px 10px;
        background: hsl(150deg 50% 30%);
        color: hsl(0deg 0% 100%);
        font: inherit;
        cursor: pointer;
    }

    .sk-thread {
        flex: 0 0 320px;
        display: flex;
        flex-direction: column;
        border-left: 1px solid hsl(0deg 0% 87%);

        @media (width <= 900px) {
            position: absolute;
            inset: 0 0 0 auto;
            width: 75%;
            background: hsl(0deg 0% 100%);
            box-shadow: -4px 0 16px hsl(0deg 0% 0% / 15%);
        }
    }

    .ci-frame {
        position: relative;
    }

    .sk-thread-header {
        display: flex;
        align-items: baseline;
        box-sizing: border-box;
        height: 44px;
        gap: 8px;
        padding: 12px 16px 0;
        border-bottom: 1px solid hsl(0deg 0% 87%);
    }

    .sk-thread-title {
        font-weight: 900;
    }

    .sk-thread-sub {
        font-size: 13px;
        color: hsl(0deg 0% 38%);
    }

    .sk-thread-close {
        margin-left: auto;
        border: none;
        background: none;
        font: inherit;
        cursor: pointer;
    }

    .sk-thread-list {
        flex: 1;
        min-height: 0;
        overflow-y: auto;
        padding: 8px 0;
    }

    .sk-thread-sep {
        display: flex;
        align-items: center;
        gap: 8px;
        margin: 4px 16px;
        font-size: 12px;
        color: hsl(0deg 0% 38%);

        &::after {
            content: "";
            flex: 1;
            border-top: 1px solid hsl(0deg 0% 87%);
        }
    }

    /* ---------------------------------------------------- Zulip replica */
    .zu-app {
        display: flex;
        flex-direction: column;
        height: 100%;
        background: hsl(0deg 0% 100%);
        color: hsl(0deg 0% 13%);
        font-family: "Source Sans 3 VF", sans-serif;
        font-size: 15px;
    }

    .zu-icon {
        display: inline-flex;
        width: 18px;
        height: 18px;
        vertical-align: middle;

        svg {
            width: 100%;
            height: 100%;
        }
    }

    .zu-navbar {
        flex: none;
        display: grid;
        grid-template-columns: 1fr auto 1fr;
        align-items: center;
        height: 40px;
        padding: 0 12px;
        border-bottom: 1px solid hsl(0deg 0% 85%);
        background: hsl(0deg 0% 98%);
    }

    .zu-logo {
        font-weight: 700;
        font-size: 16px;
        letter-spacing: 0.12em;
        color: hsl(232deg 60% 55%);
    }

    .zu-nav-title {
        display: flex;
        align-items: center;
        gap: 6px;
        font-weight: 600;
        font-size: 15px;
    }

    .zu-nav-title-icon {
        width: 16px;
        height: 16px;
    }

    .zu-nav-right {
        display: flex;
        justify-content: flex-end;
        align-items: center;
        gap: 10px;
    }

    .zu-search {
        display: flex;
        align-items: center;
        gap: 6px;
        width: 120px;
        padding: 3px 8px;
        border: 1px solid hsl(0deg 0% 82%);
        border-radius: 5px;
        background: hsl(0deg 0% 100%);
        font-size: 13px;
        color: hsl(0deg 0% 50%);

        .zu-icon {
            width: 14px;
            height: 14px;
        }

        @media (width <= 700px) {
            display: none;
        }
    }

    .zu-nav-icon {
        color: hsl(0deg 0% 30%);
    }

    .zu-nav-avatar {
        width: 24px;
        height: 24px;
        border-radius: 4px;
        text-align: center;
        line-height: 24px;
        font-size: 12px;
        font-weight: 600;
        color: hsl(0deg 0% 100%);
    }

    .zu-body-wrap {
        flex: 1;
        min-height: 0;
        display: flex;
    }

    .zu-sidebar {
        flex: 0 0 230px;
        overflow: hidden;
        padding: 6px 0 12px;
        background: hsl(0deg 0% 96%);
        border-right: 1px solid hsl(0deg 0% 90%);

        @media (width <= 700px) {
            flex-basis: 160px;
        }
    }

    .zu-views {
        display: flex;
        align-items: center;
        gap: 2px;
        padding: 2px 8px 2px 10px;
        white-space: nowrap;

        .zu-section-label {
            margin-right: 4px;
        }
    }

    .zu-section-label,
    .zu-section {
        font-size: 12px;
        font-weight: 600;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: hsl(0deg 0% 40%);
    }

    .zu-section {
        display: flex;
        align-items: center;
        padding: 6px 10px 2px;
    }

    .zu-view-icon {
        position: relative;
        display: inline-flex;
        padding: 2px;
        margin-left: 0;
        border: none;
        border-radius: 4px;
        background: none;
        color: hsl(0deg 0% 30%);
        cursor: pointer;

        &.zu-view-icon-plain {
            cursor: default;
            opacity: 0.8;
        }

        &.zu-view-active {
            background: hsl(0deg 0% 100%);
            color: hsl(232deg 60% 50%);
            box-shadow: 0 0 0 1px hsl(0deg 0% 85%);
        }

        &:not(.zu-view-icon-plain):hover {
            background: hsl(0deg 0% 90%);
        }
    }

    .zu-dot {
        position: absolute;
        top: 1px;
        right: 1px;
        width: 7px;
        height: 7px;
        border-radius: 50%;
        background: hsl(232deg 60% 55%);
    }

    .zu-pill {
        margin-left: auto;
        min-width: 20px;
        padding: 1px 6px;
        border-radius: 4px;
        text-align: center;
        font-size: 12px;
        font-weight: 600;
        color: hsl(0deg 0% 25%);
        background: hsl(0deg 0% 100%);
        box-shadow: inset 0 0 0 1px hsl(0deg 0% 85%);

        &.zu-pill-topic {
            color: hsl(140deg 60% 25%);
            background: hsl(140deg 45% 90%);
            box-shadow: none;
        }
    }

    .zu-channel-row {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 2px 10px 2px 12px;
        font-weight: 500;
        font-size: 15px;
        line-height: 1.35;

        &.zu-channel-current {
            font-weight: 600;
        }
    }

    .zu-channel-icon {
        flex: none;
        width: 16px;
        height: 16px;
    }

    .zu-topic-row {
        position: relative;
        display: flex;
        align-items: center;
        gap: 4px;
        margin: 0 6px 0 28px;
        padding: 0 4px 0 8px;
        border-radius: 5px;

        &:hover {
            background: hsl(0deg 0% 91%);

            .zu-topic-menu {
                visibility: visible;
            }
        }

        &.zu-topic-active {
            background: hsl(0deg 0% 100%);
            box-shadow: 0 1px 2px hsl(0deg 0% 0% / 10%);

            .zu-topic-name {
                font-weight: 600;
            }
        }

        &.zu-topic-muted .zu-topic-name {
            opacity: 0.4;
        }
    }

    .zu-topic-name {
        flex: 1;
        min-width: 0;
        padding: 2px 0;
        line-height: 1.3;
        border: none;
        background: none;
        text-align: left;
        font: inherit;
        color: inherit;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        cursor: pointer;
    }

    .zu-topic-menu {
        visibility: hidden;
        display: inline-flex;
        border: none;
        border-radius: 3px;
        background: none;
        padding: 2px;
        color: hsl(0deg 0% 40%);
        cursor: pointer;

        .zu-icon {
            width: 14px;
            height: 14px;
        }

        &:hover {
            background: hsl(0deg 0% 84%);
        }
    }

    .zu-all-topics {
        margin: 1px 0 4px 36px;
        font-size: 11px;
        font-weight: 600;
        letter-spacing: 0.08em;
        color: hsl(232deg 60% 50%);
    }

    .zu-popover {
        position: absolute;
        top: 100%;
        right: 0;
        z-index: 2;
        min-width: 190px;
        padding: 4px 0;
        border-radius: 6px;
        background: hsl(0deg 0% 100%);
        box-shadow: 0 4px 16px hsl(0deg 0% 0% / 25%);
    }

    .zu-popover-item {
        display: block;
        width: 100%;
        padding: 6px 14px;
        border: none;
        background: none;
        text-align: left;
        font: inherit;
        cursor: pointer;

        &.zu-popover-item-plain {
            color: hsl(0deg 0% 55%);
            cursor: default;
        }

        &:not(.zu-popover-item-plain):hover {
            background: hsl(0deg 0% 93%);
        }
    }

    .zu-main {
        flex: 1;
        min-width: 0;
        display: flex;
        flex-direction: column;
    }

    .zu-inbox {
        flex: 1;
        overflow-y: auto;
    }

    .zu-inbox-filter {
        display: flex;
        align-items: center;
        gap: 6px;
        padding: 8px 12px;
        border-bottom: 1px solid hsl(0deg 0% 90%);
        font-size: 13px;
        color: hsl(0deg 0% 50%);

        .zu-icon {
            width: 14px;
            height: 14px;
        }
    }

    .zu-inbox-filter-right {
        margin-left: auto;
    }

    .zu-inbox-channel {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 6px 12px;
        background: hsl(212deg 60% 94%);
        font-weight: 600;
    }

    .zu-inbox-caret {
        font-size: 11px;
        color: hsl(0deg 0% 45%);
    }

    .zu-pill-right {
        margin-left: auto;
    }

    .zu-inbox-row {
        display: flex;
        align-items: center;
        gap: 8px;
        width: 100%;
        padding: 6px 12px 6px 40px;
        border: none;
        border-bottom: 1px solid hsl(0deg 0% 94%);
        background: none;
        text-align: left;
        font: inherit;
        cursor: pointer;

        &:hover {
            background: hsl(0deg 0% 96%);
        }
    }

    .zu-empty {
        padding: 40px 24px;
        text-align: center;
        color: hsl(0deg 0% 45%);
    }

    .zu-empty-title {
        margin-bottom: 4px;
        font-size: 17px;
        font-weight: 600;
        color: hsl(0deg 0% 25%);
    }

    .zu-feed {
        flex: 1;
        min-height: 0;
        overflow-y: auto;
    }

    .zu-recipient-bar {
        position: sticky;
        top: 0;
        display: flex;
        align-items: center;
        gap: 6px;
        padding: 5px 12px;
        background: hsl(212deg 60% 93%);
        border-bottom: 1px solid hsl(212deg 40% 82%);
        font-weight: 600;
    }

    .zu-recipient-sep {
        color: hsl(0deg 0% 55%);
        font-weight: 400;
    }

    .zu-recipient-date {
        margin-left: auto;
        font-size: 12px;
        font-weight: 600;
        letter-spacing: 0.06em;
        color: hsl(0deg 0% 45%);
    }

    .zu-msg {
        display: flex;
        gap: 10px;
        padding: 6px 12px 4px;
        border-left: 3px solid transparent;
        cursor: pointer;

        &:hover {
            background: hsl(0deg 0% 97%);
        }

        &.zu-msg-unread {
            border-left-color: hsl(232deg 60% 55%);
        }

        &.zu-msg-continuation {
            padding-top: 0;
            padding-left: 62px;
        }

        &.ci-highlight {
            background: hsl(48deg 100% 88%);
        }
    }

    .zu-avatar {
        flex: none;
        width: 40px;
        height: 40px;
        border-radius: 4px;
        text-align: center;
        line-height: 40px;
        font-weight: 600;
        color: hsl(0deg 0% 100%);
    }

    .zu-body {
        flex: 1;
        min-width: 0;
    }

    .zu-meta {
        display: flex;
        justify-content: space-between;
        align-items: baseline;
    }

    .zu-name {
        font-weight: 700;
        font-size: 15px;
    }

    .zu-time {
        margin-left: auto;
        font-size: 12px;
        color: hsl(0deg 0% 50%);
    }

    .zu-msg-continuation .zu-meta {
        float: right;
        margin-left: 8px;
    }

    .zu-composer {
        margin: 6px 10px 10px;
        border: 1px solid hsl(0deg 0% 78%);
        border-radius: 6px;
        background: hsl(0deg 0% 100%);
    }

    .zu-composer-to {
        display: flex;
        align-items: center;
        gap: 6px;
        padding: 5px 10px;
        border-bottom: 1px solid hsl(0deg 0% 90%);
        background: hsl(0deg 0% 97%);
        font-size: 14px;
        font-weight: 600;
    }

    .zu-composer-topic {
        padding: 1px 6px;
        border: 1px solid hsl(0deg 0% 82%);
        border-radius: 4px;
        background: hsl(0deg 0% 100%);
        font-weight: 500;
    }

    .zu-input {
        min-height: 22px;
        padding: 8px 10px 4px;
        cursor: text;

        &:empty::before {
            content: attr(data-placeholder);
            color: hsl(0deg 0% 55%);
        }
    }

    .zu-composer-row {
        display: flex;
        align-items: center;
        padding: 4px 8px 6px 10px;
    }

    .zu-composer-tools {
        letter-spacing: 0.2em;
        font-size: 13px;
        color: hsl(0deg 0% 45%);
    }

    .zu-send {
        display: flex;
        align-items: center;
        gap: 6px;
        margin-left: auto;
        border: none;
        border-radius: 4px;
        padding: 4px 12px;
        background: hsl(232deg 60% 55%);
        color: hsl(0deg 0% 100%);
        font: inherit;
        font-weight: 600;
        cursor: pointer;

        .zu-icon {
            width: 14px;
            height: 14px;
        }
    }
}
