*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    min-width: 320px;
    font-family: var(--font-family-base);
    color: var(--color-text-primary);
    background: var(--color-app-background);
    scroll-behavior: smooth;
}

body {
    min-width: 320px;
    min-height: 100vh;
    margin: 0;
    background: var(--color-app-background);
    color: var(--color-text-primary);
    font-family: var(--font-family-base);
    font-size: var(--font-size-md);
    line-height: 1.5;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

body.is-scroll-locked {
    overflow: hidden;
}

.app-shell img,
.app-shell svg,
.guest-shell img,
.guest-shell svg {
    display: block;
    max-width: 100%;
}

.app-shell svg,
.guest-shell svg {
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.app-shell button,
.app-shell input,
.app-shell select,
.app-shell textarea,
.guest-shell button,
.guest-shell input,
.guest-shell select,
.guest-shell textarea {
    font: inherit;
}

.app-shell button,
.app-shell a,
.guest-shell button,
.guest-shell a {
    -webkit-tap-highlight-color: transparent;
}

.app-shell button,
.guest-shell button {
    border: 0;
}

.app-shell a,
.guest-shell a {
    text-decoration: none;
}

.app-shell p,
.app-shell h1,
.app-shell h2,
.app-shell h3,
.app-shell ul,
.app-shell ol,
.guest-shell p,
.guest-shell h1,
.guest-shell h2,
.guest-shell h3,
.guest-shell ul,
.guest-shell ol {
    margin: 0;
}

.app-shell ul,
.app-shell ol,
.guest-shell ul,
.guest-shell ol {
    padding: 0;
    list-style: none;
}

[hidden] {
    display: none !important;
}

.app-shell :focus-visible,
.guest-shell :focus-visible {
    outline: 3px solid var(--color-focus);
    outline-offset: 2px;
}
