
:root {

    color-scheme: light;

    --bg: #ffffff;

    --text: #181818;

    --muted: #747474;

    --soft: #f5f5f5;

    --soft-hover: #ededed;

    --border: #e5e5e5;

    --user: #f1f1f1;

    --accent: #181818;

    --shadow: 0 8px 32px rgba(0, 0, 0, .07);

}

* {

    box-sizing: border-box;

}

html,

body {

    margin: 0;

    min-height: 100%;

}

body {

    min-height: 100dvh;

    overflow: hidden;

    background: var(--bg);

    color: var(--text);

    font-family:

        -apple-system,

        BlinkMacSystemFont,

        "SF Pro Text",

        "Segoe UI",

        sans-serif;

    -webkit-font-smoothing: antialiased;

}

button,

textarea {

    font: inherit;

}

button {

    -webkit-tap-highlight-color: transparent;

}

.app-shell {

    height: 100dvh;

    display: grid;

    grid-template-rows: 64px minmax(0, 1fr) auto;

}

.topbar {

    height: 64px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    padding:

        env(safe-area-inset-top)

        24px

        0;

}

.brand {

    display: inline-flex;

    align-items: center;

    gap: 9px;

    color: var(--text);

    text-decoration: none;

}

.brand-mark {

    width: 31px;

    height: 31px;

    border-radius: 10px;

    display: grid;

    place-items: center;

    background: var(--accent);

    color: #fff;

    font-weight: 650;

    font-size: 15px;

    letter-spacing: -.02em;

}

.brand-name {

    font-size: 18px;

    font-weight: 650;

    letter-spacing: -.035em;

}

.build-status {

    display: inline-flex;

    align-items: center;

    gap: 7px;

    padding: 7px 10px;

    border: 1px solid var(--border);

    border-radius: 999px;

    color: var(--muted);

    font-size: 12px;

    font-weight: 500;

}

.status-dot {

    width: 6px;

    height: 6px;

    border-radius: 50%;

    background: #35a35b;

}

.chat-shell {

    width: min(760px, calc(100% - 32px));

    margin: 0 auto;

    overflow-y: auto;

    overscroll-behavior: contain;

    scrollbar-width: none;

    padding: 28px 0 30px;

}

.chat-shell::-webkit-scrollbar {

    display: none;

}

.welcome {

    min-height: 37vh;

    display: flex;

    flex-direction: column;

    align-items: center;

    justify-content: flex-end;

    text-align: center;

    padding-bottom: 28px;

    transition:

        min-height .45s ease,

        opacity .3s ease,

        padding .45s ease;

}

.welcome.compact {

    min-height: 0;

    padding: 4px 0 22px;

}

.welcome.compact .dato-orb,

.welcome.compact p {

    display: none;

}

.welcome.compact h1 {

    font-size: 17px;

    color: var(--muted);

}

.dato-orb {

    width: 54px;

    height: 54px;

    border-radius: 18px;

    display: grid;

    place-items: center;

    margin-bottom: 22px;

    background:

        radial-gradient(

            circle at 30% 20%,

            #5e5e5e,

            #181818 64%

        );

    color: white;

    box-shadow:

        0 10px 30px rgba(0, 0, 0, .15),

        inset 0 1px 0 rgba(255, 255, 255, .2);

}

.dato-orb span {

    font-size: 22px;

    font-weight: 650;

    letter-spacing: -.04em;

}

.welcome h1 {

    margin: 0;

    font-size: clamp(29px, 5vw, 38px);

    line-height: 1.08;

    letter-spacing: -.045em;

    font-weight: 600;

}

.welcome p {

    margin: 10px 0 0;

    color: var(--muted);

    font-size: 16px;

}

.suggestions {

    display: grid;

    grid-template-columns: repeat(2, minmax(0, 1fr));

    gap: 10px;

    margin: 0 auto;

    max-width: 670px;

}

.suggestions.hidden {

    display: none;

}

.suggestion {

    min-height: 62px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 16px;

    text-align: left;

    border: 1px solid var(--border);

    border-radius: 18px;

    padding: 14px 16px;

    background: var(--bg);

    color: var(--text);

    cursor: pointer;

    transition:

        background .18s ease,

        transform .18s ease,

        border-color .18s ease;

}

.suggestion:hover {

    background: var(--soft);

    border-color: #d9d9d9;

}

.suggestion:active {

    transform: scale(.985);

}

.suggestion span:first-child {

    font-size: 14px;

    line-height: 1.35;

}

.arrow {

    flex: 0 0 auto;

    color: #999;

    font-size: 14px;

}

.conversation {

    display: flex;

    flex-direction: column;

    gap: 26px;

}

.message {

    display: flex;

    width: 100%;

    animation: message-in .26s ease both;

}

.message.user {

    justify-content: flex-end;

}

.message.user .bubble {

    max-width: min(82%, 560px);

    padding: 11px 15px;

    border-radius: 20px;

    background: var(--user);

    line-height: 1.48;

    font-size: 15px;

}

.message.assistant {

    justify-content: flex-start;

}

.assistant-row {

    width: min(100%, 680px);

    display: grid;

    grid-template-columns: 30px minmax(0, 1fr);

    gap: 13px;

}

.assistant-avatar {

    width: 30px;

    height: 30px;

    display: grid;

    place-items: center;

    border-radius: 10px;

    background: var(--accent);

    color: #fff;

    font-size: 13px;

    font-weight: 650;

}

.assistant-content {

    padding-top: 3px;

    font-size: 15px;

    line-height: 1.62;

}

.assistant-content p {

    margin: 0 0 12px;

}

.assistant-content p:last-child {

    margin-bottom: 0;

}

.assistant-content strong {

    font-weight: 650;

}

.typing {

    display: inline-flex;

    gap: 4px;

    align-items: center;

    height: 22px;

}

.typing span {

    width: 5px;

    height: 5px;

    border-radius: 50%;

    background: #9a9a9a;

    animation: typing 1.1s infinite ease-in-out;

}

.typing span:nth-child(2) {

    animation-delay: .14s;

}

.typing span:nth-child(3) {

    animation-delay: .28s;

}

.composer-wrap {

    padding:

        10px

        16px

        max(12px, env(safe-area-inset-bottom));

    background:

        linear-gradient(

            to top,

            #fff 76%,

            rgba(255, 255, 255, 0)

        );

}

.composer {

    width: min(760px, 100%);

    min-height: 58px;

    margin: 0 auto;

    display: flex;

    align-items: flex-end;

    gap: 9px;

    padding: 9px;

    background: var(--soft);

    border: 1px solid #e9e9e9;

    border-radius: 26px;

    box-shadow: var(--shadow);

}

.plus-button,

.send-button {

    width: 40px;

    height: 40px;

    flex: 0 0 40px;

    border: 0;

    border-radius: 50%;

    display: grid;

    place-items: center;

}

.plus-button {

    background: transparent;

    color: #575757;

    font-size: 25px;

    font-weight: 300;

    cursor: default;

}

.send-button {

    background: var(--accent);

    color: #fff;

    font-size: 21px;

    line-height: 1;

    cursor: pointer;

    transition:

        opacity .16s ease,

        transform .16s ease;

}

.send-button:active {

    transform: scale(.94);

}

.send-button:disabled {

    opacity: .22;

    cursor: default;

}

textarea {

    width: 100%;

    min-height: 40px;

    max-height: 130px;

    resize: none;

    overflow-y: auto;

    border: 0;

    outline: 0;

    background: transparent;

    color: var(--text);

    padding: 10px 2px 8px;

    font-size: 16px;

    line-height: 1.35;

}

textarea::placeholder {

    color: #8d8d8d;

}

.disclaimer {

    margin: 8px auto 0;

    text-align: center;

    color: #989898;

    font-size: 11px;

}

.sr-only {

    position: absolute;

    width: 1px;

    height: 1px;

    padding: 0;

    margin: -1px;

    overflow: hidden;

    clip: rect(0, 0, 0, 0);

    white-space: nowrap;

    border: 0;

}

@keyframes message-in {

    from {

        opacity: 0;

        transform: translateY(7px);

    }

    to {

        opacity: 1;

        transform: translateY(0);

    }

}

@keyframes typing {

    0%,

    60%,

    100% {

        transform: translateY(0);

        opacity: .35;

    }

    30% {

        transform: translateY(-3px);

        opacity: 1;

    }

}

@media (max-width: 620px) {

    .app-shell {

        grid-template-rows:

            calc(58px + env(safe-area-inset-top))

            minmax(0, 1fr)

            auto;

    }

    .topbar {

        height: auto;

        padding:

            max(12px, env(safe-area-inset-top))

            16px

            0;

    }

    .build-status {

        padding: 6px 9px;

        font-size: 11px;

    }

    .chat-shell {

        width: calc(100% - 24px);

        padding-top: 12px;

    }

    .welcome {

        min-height: 34vh;

    }

    .welcome h1 {

        font-size: 29px;

    }

    .suggestions {

        grid-template-columns: 1fr;

        gap: 8px;

    }

    .suggestion {

        min-height: 54px;

        border-radius: 16px;

    }

    .message.user .bubble {

        max-width: 88%;

    }

    .composer-wrap {

        padding-left: 10px;

        padding-right: 10px;

    }

    .composer {

        min-height: 56px;

        border-radius: 25px;

    }

    .disclaimer {

        font-size: 10px;

    }

}

@media (prefers-reduced-motion: reduce) {

    *,

    *::before,

    *::after {

        scroll-behavior: auto !important;

        animation-duration: .01ms !important;

        animation-iteration-count: 1 !important;

        transition-duration: .01ms !important;

    }

}

