@import url('https://fonts.googleapis.com/css2?family=Prompt:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');

:root {
    --ink: #183b43;
    --muted: #789096;
    --line: #e4eeee;
    --bg: #f6faf9;
    --card: #fff;
    --mint: #dff5ef;
    --teal: #0f766e;
    --teal-2: #2cb9aa;
    --blue: #dfeffd;
    --peach: #fff0e5;
    --lilac: #eeeafd;
    --danger: #d66b53;
    --shadow: 0 12px 35px rgba(24, 72, 76, .06);
    --radius: 18px
}

* {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth
}

body {
    margin: 0;
    color: var(--ink);
    background: var(--bg);
    font: 14px/1.55 'DM Sans', 'Noto Sans Thai', sans-serif;
    -webkit-font-smoothing: antialiased
}

button,
input,
select,
textarea {
    font: inherit
}

button,
a {
    cursor: pointer
}

a {
    color: inherit;
    text-decoration: none
}

.app-shell {
    display: flex;
    min-height: 100vh
}

.sidebar {
    width: 252px;
    flex: 0 0 252px;
    background: #fff;
    border-right: 1px solid var(--line);
    padding: 28px 18px 22px;
    display: flex;
    flex-direction: column;
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 20
}

.brand {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 0 10px;
    margin-bottom: 34px
}

.brand-mark {
    width: 38px;
    height: 38px;
    border-radius: 13px;
    background: var(--teal);
    color: #fff;
    display: grid;
    place-items: center;
    font-size: 21px;
    font-weight: 700;
    position: relative
}

.brand-mark:after {
    content: '';
    width: 11px;
    height: 5px;
    border: 2px solid #9ce7d9;
    border-radius: 20px;
    position: absolute;
    right: -4px;
    top: 5px;
    transform: rotate(-30deg)
}

.brand strong {
    display: block;
    letter-spacing: -.5px;
    font-size: 17px
}

.brand strong span {
    color: var(--teal-2)
}

.brand small {
    color: var(--muted);
    display: block;
    font-size: 9px;
    letter-spacing: .1px;
    margin-top: 1px
}

.sidebar-profile {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 10px 20px;
    border-bottom: 1px solid var(--line)
}

.avatar,
.top-avatar {
    display: grid;
    place-items: center;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700
}

.avatar {
    width: 38px;
    height: 38px;
    background: #d9efed;
    color: var(--teal)
}

.sidebar-profile strong {
    font-size: 12px;
    display: block
}

.sidebar-profile small {
    font-size: 10px;
    color: var(--muted)
}

.icon-button {
    border: 0;
    background: none;
    color: var(--muted);
    margin-left: auto;
    padding: 5px
}

.side-nav {
    padding-top: 22px;
    display: grid;
    gap: 5px
}

.side-nav a,
.side-link {
    display: flex;
    align-items: center;
    gap: 12px;
    color: #668187;
    padding: 12px;
    border-radius: 12px;
    font-weight: 500;
    transition: .2s
}

.side-nav a:hover,
.side-link:hover {
    background: #f1faf8;
    color: var(--teal)
}

.side-nav a.active {
    background: var(--mint);
    color: var(--teal);
    font-weight: 700
}

.nav-icon {
    width: 21px;
    text-align: center;
    font-size: 19px;
    color: #8ea8aa
}

.active .nav-icon {
    color: var(--teal)
}

.side-nav em {
    font-style: normal;
    font-size: 10px;
    margin-left: auto;
    background: #fff;
    color: var(--teal);
    padding: 2px 6px;
    border-radius: 20px
}

.sidebar-bottom {
    margin-top: auto
}

.side-link {
    font-size: 13px;
    margin-bottom: 3px
}

.side-note {
    font-size: 10px;
    color: var(--muted);
    background: var(--bg);
    padding: 11px;
    border-radius: 10px;
    margin-top: 16px
}

.status-dot {
    display: inline-block;
    background: #35b899;
    border-radius: 50%;
    width: 7px;
    height: 7px;
    margin-right: 7px
}

.main-content {
    margin-left: 252px;
    flex: 1;
    min-width: 0
}

.topbar {
    height: 76px;
    border-bottom: 1px solid var(--line);
    background: rgba(255, 255, 255, .8);
    backdrop-filter: blur(12px);
    display: flex;
    align-items: center;
    padding: 0 clamp(22px, 4vw, 58px);
    position: sticky;
    top: 0;
    z-index: 10
}

.breadcrumb {
    font-size: 12px;
    color: var(--muted)
}

.breadcrumb b {
    padding: 0 10px;
    color: #c7d6d5
}

.breadcrumb strong {
    color: var(--ink)
}

.topbar-actions {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 18px
}

.notification-button {
    border: 0;
    background: none;
    color: var(--muted);
    font-size: 22px;
    position: relative
}

.notification-button i {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #ef967a;
    position: absolute;
    right: 0;
    top: 2px;
    border: 2px solid #fff
}

.top-avatar {
    width: 34px;
    height: 34px;
    background: var(--teal);
    color: #fff
}

.mobile-menu {
    display: none
}

.page-container {
    max-width: 1340px;
    margin: 0 auto;
    padding: 36px clamp(22px, 4vw, 58px) 80px
}

.app-view {
    display: none
}

.app-view.is-active {
    display: block;
    animation: fadeUp .35s ease
}

@keyframes fadeUp {
    from {
        opacity: .3;
        transform: translateY(6px)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.page-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 26px
}

.eyebrow {
    font-size: 10px;
    color: var(--teal);
    letter-spacing: 1.2px;
    font-weight: 700;
    margin: 0 0 7px
}

.page-heading h1 {
    font-size: 28px;
    line-height: 1.15;
    letter-spacing: -1px;
    margin: 0
}

.wave {
    color: #f4a46e;
    font-size: 22px
}

.subheading {
    color: var(--muted);
    margin: 7px 0 0;
    font-size: 13px
}

.privacy-banner {
    background: #effaf7;
    border: 1px solid #d5f0e9;
    border-radius: 12px;
    padding: 12px 15px;
    display: flex;
    align-items: center;
    gap: 11px;
    margin-bottom: 20px
}

.shield {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    border-radius: 9px;
    background: #d7f3eb;
    color: var(--teal);
    font-size: 17px
}

.privacy-banner strong,
.privacy-banner small {
    display: block
}

.privacy-banner strong {
    font-size: 12px
}

.privacy-banner small {
    font-size: 10px;
    color: var(--muted);
    margin-top: 1px
}

.text-button,
.quiet-link {
    background: none;
    border: 0;
    color: var(--teal);
    font-weight: 600;
    font-size: 11px;
    margin-left: auto;
    white-space: nowrap
}

.text-button span,
.quiet-link span {
    font-size: 16px;
    padding-left: 5px
}

.primary-button,
.secondary-button {
    border-radius: 11px;
    padding: 11px 17px;
    border: 1px solid transparent;
    font-weight: 700;
    font-size: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    transition: .2s
}

.primary-button {
    background: var(--teal);
    color: #fff;
    box-shadow: 0 7px 15px rgba(15, 118, 110, .15)
}

.primary-button:hover {
    background: #0a625c;
    transform: translateY(-1px)
}

.secondary-button {
    background: #fff;
    color: var(--teal);
    border-color: #cde4e0
}

.secondary-button:hover {
    background: #effaf7
}

.checkin-hero {
    background: #dff5ef;
    min-height: 193px;
    border-radius: var(--radius);
    padding: 28px 34px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    margin-bottom: 34px
}

.hero-copy {
    max-width: 520px;
    position: relative;
    z-index: 1
}

.soft-badge {
    font-size: 9px;
    letter-spacing: 1px;
    font-weight: 700;
    color: var(--teal);
    background: rgba(255, 255, 255, .72);
    padding: 5px 9px;
    border-radius: 20px
}

.hero-copy h2 {
    font-size: 24px;
    margin: 13px 0 4px;
    letter-spacing: -.6px
}

.hero-copy p {
    color: #548078;
    margin: 0 0 17px;
    font-size: 12px
}

.progress-ring {
    width: 126px;
    height: 126px;
    border-radius: 50%;
    margin-left: auto;
    margin-right: 48px;
    background: conic-gradient(var(--teal) 0 70%, #bde9df 70% 100%);
    display: grid;
    place-items: center;
    position: relative;
    z-index: 1
}

.progress-ring:before {
    content: '';
    position: absolute;
    width: 98px;
    height: 98px;
    border-radius: 50%;
    background: var(--mint)
}

.progress-ring div {
    position: relative;
    text-align: center
}

.progress-ring strong {
    display: block;
    font-size: 27px;
    line-height: 1
}

.progress-ring strong span {
    font-size: 13px
}

.progress-ring small {
    color: #548078;
    font-size: 9px
}

.hero-decoration {
    position: absolute;
    right: -18px;
    bottom: -52px;
    width: 210px;
    height: 210px;
    border: 1px solid rgba(15, 118, 110, .14);
    border-radius: 50%
}

.hero-decoration:before,
.hero-decoration:after {
    content: '';
    position: absolute;
    border: 1px solid rgba(15, 118, 110, .12);
    border-radius: 50%
}

.hero-decoration:before {
    inset: 23px
}

.hero-decoration:after {
    inset: 47px
}

.hero-decoration span {
    width: 8px;
    height: 8px;
    background: #f4a46e;
    border-radius: 50%;
    position: absolute;
    left: 36px;
    top: 34px
}

.hero-decoration span:nth-child(2) {
    left: auto;
    top: 87px;
    right: 24px;
    background: #7bc9e5
}

.hero-decoration span:nth-child(3) {
    left: 88px;
    top: auto;
    bottom: 17px;
    background: #a49eea
}

.section-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin: 0 0 14px
}

.section-heading h2 {
    font-size: 17px;
    letter-spacing: -.3px;
    margin: 0
}

.section-heading p {
    font-size: 11px;
    color: var(--muted);
    margin: 3px 0 0
}

.metric-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 14px;
    margin-bottom: 28px
}

.metric-card {
    border-radius: var(--radius);
    padding: 17px 17px 14px;
    min-height: 151px;
    position: relative;
    overflow: hidden
}

.metric-card.teal {
    background: #e3f7f2
}

.metric-card.blue {
    background: #e7f3fd
}

.metric-card.peach {
    background: #fff0e5
}

.metric-card.lilac {
    background: #eeeafd
}

.metric-card-head {
    display: flex;
    justify-content: space-between;
    align-items: center
}

.metric-icon {
    height: 27px;
    width: 27px;
    border-radius: 9px;
    display: grid;
    place-items: center;
    background: rgba(255, 255, 255, .65);
    color: var(--teal);
    font-size: 15px
}

.kebab {
    border: 0;
    background: none;
    color: #7fa3a1;
    font-size: 11px;
    letter-spacing: 2px
}

.metric-card p {
    font-weight: 700;
    font-size: 12px;
    margin: 13px 0 0
}

.metric-card small {
    font-size: 10px;
    color: #6b8d8b
}

.metric-value {
    display: flex;
    align-items: baseline;
    gap: 3px;
    margin-top: 5px
}

.metric-value strong {
    font-size: 27px;
    letter-spacing: -1px
}

.metric-value span {
    font-size: 11px;
    color: #6f8b8b
}

.metric-spark {
    height: 3px;
    width: 100%;
    background: rgba(255, 255, 255, .6);
    position: absolute;
    bottom: 0;
    left: 0
}

.metric-spark span {
    display: block;
    height: 100%;
    background: rgba(15, 118, 110, .4);
    border-radius: 4px
}

.dashboard-columns {
    display: grid;
    grid-template-columns: 1.35fr 1fr;
    gap: 18px
}

.panel {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 21px
}

.panel-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px
}

.panel h2 {
    font-size: 15px;
    margin: 0;
    letter-spacing: -.2px
}

.panel-heading p {
    color: var(--muted);
    font-size: 11px;
    margin: 3px 0 0
}

.compact-select {
    border: 1px solid var(--line);
    background: #fff;
    padding: 6px 9px;
    color: var(--muted);
    font-size: 10px;
    border-radius: 7px
}

.chart-legend {
    display: flex;
    gap: 15px;
    align-items: center;
    margin-top: 17px;
    font-size: 10px;
    color: var(--muted)
}

.legend-dot {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--teal-2);
    margin-right: 5px
}

.peach-dot {
    background: #efac7f
}

.gray-dot {
    background: #d2dede
}

.trend-up {
    margin-left: auto;
    color: var(--teal);
    font-weight: 700
}

.trend-up small {
    font-weight: 400;
    color: var(--muted);
    margin-left: 4px
}

.line-chart {
    display: grid;
    grid-template-columns: 24px 1fr;
    grid-template-rows: 112px 18px;
    column-gap: 7px;
    margin-top: 11px
}

.y-labels {
    font-size: 9px;
    color: #a1b6b6;
    display: flex;
    flex-direction: column;
    justify-content: space-between
}

.line-chart svg {
    width: 100%;
    height: 112px;
    overflow: visible;
    background: repeating-linear-gradient(to bottom, transparent 0, transparent 36px, #edf4f3 37px)
}

.chart-area {
    fill: url(#chartFill)
}

.chart-line {
    fill: none;
    stroke: var(--teal-2);
    stroke-width: 2.5;
    stroke-linecap: round;
    stroke-linejoin: round
}

.chart-point {
    fill: #fff;
    stroke: var(--teal-2);
    stroke-width: 3
}

.x-labels {
    grid-column: 2;
    display: flex;
    justify-content: space-between;
    color: #a1b6b6;
    font-size: 9px;
    padding-top: 5px
}

.adherence {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    align-items: center;
    margin: 18px 0 14px;
    column-gap: 9px
}

.adherence-bar {
    height: 7px;
    background: #eaf2f1;
    border-radius: 10px;
    overflow: hidden
}

.adherence-bar span {
    height: 100%;
    display: block;
    background: var(--teal-2);
    border-radius: 10px
}

.adherence strong {
    font-size: 19px;
    color: var(--teal)
}

.adherence small {
    grid-column: 1;
    color: var(--muted);
    font-size: 9px;
    margin-top: 4px
}

.med-list {
    display: grid;
    gap: 0
}

.med-row {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 11px 0;
    border-top: 1px solid #eef4f3;
    min-width: 0
}

.med-time {
    font-size: 10px;
    color: var(--muted);
    width: 36px
}

.med-state {
    width: 19px;
    height: 19px;
    border: 1px solid #c3d4d3;
    color: #9eb4b4;
    border-radius: 50%;
    display: grid;
    place-items: center;
    font-size: 11px;
    flex: 0 0 auto
}

.med-state.is-taken {
    background: #dff5ef;
    border-color: #b8e9df;
    color: var(--teal);
    font-weight: 700
}

.med-info {
    min-width: 0;
    flex: 1
}

.med-info strong,
.med-info small {
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}

.med-info strong {
    font-size: 11px
}

.med-info small {
    font-size: 9px;
    color: var(--muted);
    margin-top: 2px
}

.med-action {
    border: 0;
    background: #eef8f5;
    color: var(--teal);
    font-size: 9px;
    padding: 5px 7px;
    border-radius: 6px;
    white-space: nowrap
}

.med-action.done {
    background: none;
    color: #94aaa8
}

.medical-note {
    font-size: 9px;
    color: #9babab;
    margin: 13px 0 0;
    line-height: 1.4
}

.compact-heading {
    margin-top: 30px
}

.activity-strip {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    padding: 5px 10px;
    box-shadow: var(--shadow)
}

.activity-item {
    padding: 14px 11px;
    display: flex;
    align-items: center;
    gap: 9px;
    border-right: 1px solid var(--line)
}

.activity-item:last-child {
    border: 0
}

.activity-icon {
    width: 29px;
    height: 29px;
    border-radius: 9px;
    display: grid;
    place-items: center;
    font-size: 15px
}

.activity-icon.mint {
    background: var(--mint);
    color: var(--teal)
}

.activity-icon.blue {
    background: var(--blue);
    color: #4788a8
}

.activity-icon.peach {
    background: var(--peach);
    color: #cf7951
}

.activity-item span:nth-child(2) {
    min-width: 0;
    flex: 1
}

.activity-item strong,
.activity-item small {
    display: block
}

.activity-item strong {
    font-size: 11px
}

.activity-item small {
    font-size: 9px;
    color: var(--muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}

.activity-item b {
    font-size: 9px;
    color: #a1b1af;
    font-weight: 400
}

/* Check-in */
.saved-state {
    font-size: 10px;
    color: var(--teal);
    background: #e7f8f3;
    border-radius: 20px;
    padding: 7px 10px
}

.checkin-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 280px;
    gap: 20px
}

.progress-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 17px 20px;
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 4px 20px;
    margin-bottom: 14px
}

.progress-card strong,
.progress-card small {
    display: block
}

.progress-card strong {
    font-size: 13px
}

.progress-card small {
    font-size: 10px;
    color: var(--muted)
}

.progress-copy {
    text-align: right
}

.progress-copy strong {
    font-size: 19px;
    color: var(--teal)
}

.progress-copy span {
    display: block;
    color: var(--muted);
    font-size: 9px
}

.wide-progress {
    height: 6px;
    background: #e9f3f2;
    border-radius: 20px;
    grid-column: 1/-1;
    margin-top: 8px;
    overflow: hidden
}

.wide-progress span {
    display: block;
    height: 100%;
    background: var(--teal-2);
    border-radius: 20px;
    transition: .25s
}

.checkin-form {
    display: grid;
    gap: 14px
}

.form-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 22px
}

.form-card-title {
    display: flex;
    gap: 11px;
    align-items: flex-start;
    border-bottom: 1px solid #edf3f2;
    padding-bottom: 15px;
    margin-bottom: 17px
}

.step-number {
    color: var(--teal);
    background: var(--mint);
    font-size: 10px;
    font-weight: 700;
    padding: 4px 6px;
    border-radius: 6px
}

.form-card-title h2 {
    font-size: 15px;
    margin: 0
}

.form-card-title p {
    color: var(--muted);
    font-size: 10px;
    margin: 3px 0 0
}

.question {
    margin-top: 17px
}

.question:first-child {
    margin-top: 0
}

.question label,
.profile-form label {
    display: block;
    font-size: 11px;
    font-weight: 600;
    margin-bottom: 8px
}

.required {
    color: var(--danger)
}

.question label small {
    font-weight: 400;
    color: var(--muted)
}

.range-row {
    display: flex;
    align-items: center;
    gap: 14px
}

.range-row input {
    flex: 1
}

.range-row output {
    font-weight: 700;
    color: var(--teal);
    background: var(--mint);
    min-width: 54px;
    text-align: center;
    border-radius: 7px;
    padding: 7px 4px;
    font-size: 11px
}

.range-row input[type=range],
.quick-modal input[type=range] {
    accent-color: var(--teal)
}

.range-labels {
    display: flex;
    justify-content: space-between;
    color: var(--muted);
    font-size: 9px;
    margin-top: 3px
}

.choice-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 7px
}

.choice {
    margin: 0 !important
}

.choice input,
.joint-chips input {
    position: absolute;
    opacity: 0
}

.choice span {
    display: block;
    border: 1px solid var(--line);
    padding: 10px 6px;
    text-align: center;
    color: var(--muted);
    border-radius: 8px;
    font-size: 10px;
    font-weight: 500 !important
}

.choice input:checked+span {
    border-color: #8fd9ca;
    background: var(--mint);
    color: var(--teal);
    font-weight: 700 !important
}

.two-col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2px 20px
}

.input-with-unit {
    display: flex;
    align-items: center;
    border: 1px solid #d9e7e6;
    border-radius: 8px;
    overflow: hidden
}

.input-with-unit input {
    border: 0 !important;
    outline: 0;
    min-width: 0;
    flex: 1;
    padding: 10px
}

.input-with-unit span {
    font-size: 10px;
    color: var(--muted);
    padding-right: 10px
}

.question textarea,
.profile-form input,
.profile-form select,
.profile-form textarea {
    width: 100%;
    border: 1px solid #d9e7e6;
    border-radius: 8px;
    padding: 10px 11px;
    outline: none;
    background: #fff;
    color: var(--ink);
    font-size: 12px
}

.question textarea:focus,
.profile-form input:focus,
.profile-form select:focus,
.profile-form textarea:focus {
    border-color: #79cbbd;
    box-shadow: 0 0 0 3px rgba(44, 185, 170, .1)
}

.full {
    grid-column: 1/-1
}

.joint-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 7px
}

.joint-chips label {
    margin: 0 !important
}

.joint-chips span {
    border: 1px solid var(--line);
    border-radius: 20px;
    padding: 7px 10px;
    color: var(--muted);
    font-size: 10px;
    display: block
}

.joint-chips input:checked+span {
    border-color: #8fd9ca;
    background: var(--mint);
    color: var(--teal)
}

.form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 9px;
    padding-top: 4px
}

.form-message {
    text-align: right;
    color: var(--teal);
    font-size: 11px;
    margin: 0
}

.checkin-aside {
    display: grid;
    gap: 14px;
    align-content: start
}

.aside-card,
.safety-callout {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 20px
}

.aside-icon {
    background: var(--mint);
    color: var(--teal);
    border-radius: 10px;
    width: 33px;
    height: 33px;
    display: grid;
    place-items: center;
    font-size: 18px
}

.aside-card h3 {
    font-size: 13px;
    margin: 13px 0 4px
}

.aside-card p {
    font-size: 11px;
    color: var(--muted);
    margin: 0
}

.task-list {
    list-style: none;
    margin: 14px 0 0;
    padding: 0;
    display: grid;
    gap: 10px;
    color: var(--muted);
    font-size: 11px
}

.task-list li {
    display: flex;
    gap: 9px;
    align-items: center
}

.task-list li span {
    height: 18px;
    width: 18px;
    border: 1px solid #ccdcda;
    border-radius: 50%;
    display: grid;
    place-items: center;
    font-size: 10px
}

.task-list li.done {
    color: var(--ink)
}

.task-list li.done span {
    color: var(--teal);
    border-color: #a8e0d3;
    background: var(--mint)
}

.safety-callout {
    background: #fff8f3;
    border-color: #f8e0d3
}

.safety-callout strong {
    font-size: 11px;
    color: #a75b3f
}

.safety-callout p {
    font-size: 10px;
    color: #9b7b6d;
    margin: 4px 0 0
}

/* Insights, medication, report, profile */
.period-tabs {
    display: flex;
    background: #eaf3f1;
    border-radius: 8px;
    padding: 3px;
    gap: 2px
}

.period-tabs button {
    border: 0;
    background: none;
    color: var(--muted);
    font-size: 10px;
    padding: 6px 10px;
    border-radius: 6px
}

.period-tabs button.active {
    background: #fff;
    color: var(--teal);
    font-weight: 700;
    box-shadow: 0 2px 5px rgba(0, 0, 0, .04)
}

.insight-notice,
.report-alert {
    background: #f0f8fc;
    border: 1px solid #deedf4;
    color: #638796;
    display: flex;
    align-items: flex-start;
    gap: 9px;
    border-radius: 10px;
    padding: 11px 13px;
    margin-bottom: 19px
}

.insight-notice span,
.report-alert span {
    font-size: 16px;
    color: #5798ae
}

.insight-notice p,
.report-alert p {
    font-size: 10px;
    margin: 1px 0
}

.insight-grid {
    display: grid;
    grid-template-columns: 1.6fr 1fr;
    gap: 17px
}

.insight-chart {
    grid-row: span 2
}

.chart-pill,
.status-label {
    font-size: 9px;
    padding: 5px 8px;
    border-radius: 6px;
    background: var(--mint);
    color: var(--teal);
    font-weight: 700
}

.dual-chart {
    margin-top: 22px
}

.dual-chart svg {
    width: 100%;
    height: 205px;
    margin-top: 13px
}

.grid-lines {
    stroke: #edf3f2;
    stroke-width: 1
}

.peach-line {
    stroke: #eea478
}

.score-card {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center
}

.score-card .panel-heading {
    grid-column: 1/-1;
    width: 100%
}

.big-score {
    margin-top: 22px
}

.big-score strong {
    font-size: 39px;
    letter-spacing: -2px
}

.big-score small {
    font-size: 17px;
    letter-spacing: 0
}

.big-score span {
    display: block;
    color: var(--muted);
    font-size: 10px
}

.donut {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    background: conic-gradient(var(--teal-2) 0 calc(var(--value)*1%), #e7f0ef 0);
    position: relative;
    display: grid;
    place-items: center
}

.donut:before {
    content: '';
    position: absolute;
    background: #fff;
    border-radius: 50%;
    width: 68px;
    height: 68px
}

.donut span {
    position: relative;
    color: var(--teal);
    font-size: 12px;
    font-weight: 700
}

.score-legend {
    grid-column: 1/-1;
    border-top: 1px solid var(--line);
    margin-top: 20px;
    padding-top: 12px;
    display: flex;
    justify-content: space-between;
    font-size: 10px;
    color: var(--muted)
}

.score-legend b {
    color: var(--ink);
    padding-left: 3px
}

.summary-chart .panel-heading {
    align-items: center
}

.metric-highlight {
    font-size: 20px;
    color: var(--teal)
}

.metric-highlight small {
    font-size: 10px;
    font-weight: 400
}

.bar-chart {
    display: flex;
    height: 102px;
    align-items: flex-end;
    justify-content: space-around;
    gap: 10px;
    border-bottom: 1px solid #e6efee;
    margin-top: 15px
}

.bar-chart span {
    width: 28px;
    background: #c8ece5;
    border-radius: 6px 6px 0 0;
    position: relative
}

.bar-chart span.current {
    background: var(--teal-2)
}

.bar-chart i {
    position: absolute;
    top: 106%;
    left: 50%;
    transform: translateX(-50%);
    font-style: normal;
    font-size: 9px;
    color: var(--muted)
}

.chart-footnote {
    display: block;
    color: var(--muted);
    font-size: 10px;
    margin-top: 17px
}

.mini-stat-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-top: 22px
}

.mini-stat-row>div {
    border: 1px solid var(--line);
    padding: 10px;
    border-radius: 10px
}

.mini-icon {
    display: grid;
    place-items: center;
    width: 25px;
    height: 25px;
    border-radius: 7px;
    float: left;
    margin-right: 7px
}

.mini-icon.blue {
    background: var(--blue);
    color: #4b91b4
}

.mini-icon.teal {
    background: var(--mint);
    color: var(--teal)
}

.mini-stat-row strong,
.mini-stat-row small {
    display: block
}

.mini-stat-row strong {
    font-size: 12px
}

.mini-stat-row small {
    font-size: 9px;
    color: var(--muted);
    margin-top: 1px
}

.target-line {
    height: 5px;
    background: #e9f3f2;
    border-radius: 10px;
    margin-top: 18px
}

.target-line span {
    display: block;
    height: 100%;
    background: #79c8e5;
    border-radius: 10px
}

.medication-summary {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    margin-bottom: 18px
}

.summary-stat {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 13px;
    padding: 15px;
    display: flex;
    align-items: center;
    gap: 11px
}

.summary-stat .metric-icon {
    width: 34px;
    height: 34px
}

.summary-stat small,
.summary-stat strong {
    display: block
}

.summary-stat small {
    font-size: 9px;
    color: var(--muted)
}

.summary-stat strong {
    font-size: 13px;
    margin-top: 1px
}

.medication-layout {
    display: grid;
    grid-template-columns: 1.25fr 1fr;
    gap: 18px
}

.active-badge {
    font-size: 10px;
    color: var(--teal);
    background: var(--mint);
    padding: 5px 8px;
    border-radius: 7px
}

.med-timeline {
    border-left: 1px solid #cce5e0;
    margin: 25px 0 5px 10px
}

.timeline-item {
    display: flex;
    gap: 13px;
    position: relative;
    padding: 0 0 28px 17px
}

.timeline-item:last-child {
    padding-bottom: 0
}

.timeline-dot {
    position: absolute;
    width: 10px;
    height: 10px;
    border: 2px solid #b8ddda;
    background: #fff;
    border-radius: 50%;
    left: -6px;
    top: 4px
}

.timeline-item.current .timeline-dot {
    background: var(--teal-2);
    border-color: var(--teal-2);
    box-shadow: 0 0 0 4px #e2f6f1
}

.timeline-head {
    display: flex;
    justify-content: space-between;
    gap: 10px
}

.timeline-head strong {
    font-size: 12px
}

.timeline-head span {
    font-size: 10px;
    color: var(--muted)
}

.timeline-item p {
    font-size: 10px;
    color: var(--muted);
    margin: 4px 0 9px
}

.med-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap
}

.med-chips span {
    background: var(--mint);
    color: var(--teal);
    border-radius: 6px;
    padding: 5px 7px;
    font-size: 9px
}

.med-chips.muted span {
    background: #f2f6f5;
    color: var(--muted)
}

.full-list {
    margin-top: 18px
}

.wide-button {
    width: 100%;
    margin-top: 14px
}

.report-actions {
    display: flex;
    gap: 8px
}

.report-sheet {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 31px
}

.report-header {
    display: flex;
    justify-content: space-between;
    padding-bottom: 23px;
    border-bottom: 1px solid var(--line)
}

.report-header h2 {
    font-size: 22px;
    margin: 15px 0 2px
}

.report-header p {
    color: var(--muted);
    font-size: 11px;
    margin: 0
}

.report-date {
    text-align: right
}

.report-date small,
.report-date strong {
    display: block
}

.report-date small {
    font-size: 9px;
    color: var(--muted)
}

.report-date strong {
    font-size: 12px
}

.share-ready {
    display: inline-block;
    color: var(--teal);
    background: var(--mint);
    font-size: 9px;
    border-radius: 6px;
    padding: 4px 7px;
    margin-top: 9px
}

.report-alert {
    margin: 18px 0
}

.report-kpis {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    border: 1px solid var(--line);
    border-radius: 10px;
    overflow: hidden;
    margin: 21px 0
}

.report-kpis>div {
    padding: 15px;
    border-right: 1px solid var(--line)
}

.report-kpis>div:last-child {
    border: 0
}

.report-kpis small,
.report-kpis strong,
.report-kpis span {
    display: block
}

.report-kpis small {
    font-size: 9px;
    color: var(--muted)
}

.report-kpis strong {
    font-size: 21px;
    margin: 4px 0
}

.report-kpis strong i {
    font-size: 10px;
    font-style: normal;
    color: var(--muted);
    font-weight: 400
}

.report-kpis span {
    font-size: 9px;
    color: var(--muted)
}

.report-kpis span.good {
    color: var(--teal)
}

.report-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 45px
}

.report-columns h3 {
    font-size: 12px;
    margin: 0 0 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--line)
}

.report-med {
    padding: 9px 0;
    border-bottom: 1px solid #eff4f3
}

.report-med strong,
.report-med span,
.report-med small {
    display: block
}

.report-med strong {
    font-size: 11px
}

.report-med span {
    font-size: 10px;
    color: var(--ink)
}

.report-med small {
    font-size: 9px;
    color: var(--muted)
}

.report-section-gap {
    margin-top: 25px !important
}

.joint-summary {
    display: flex;
    gap: 7px;
    flex-wrap: wrap
}

.joint-pill {
    padding: 7px 9px;
    font-size: 10px;
    border-radius: 8px
}

.joint-pill b {
    padding-left: 4px
}

.joint-pill.severe {
    background: #ffebe3;
    color: #b7674d
}

.joint-pill.moderate {
    background: #fff2dc;
    color: #a87937
}

.joint-pill.mild {
    background: #e9f7f2;
    color: var(--teal)
}

.report-adherence {
    display: flex;
    align-items: center;
    gap: 18px
}

.small-donut {
    width: 76px;
    height: 76px
}

.small-donut:before {
    width: 54px;
    height: 54px
}

.report-adherence strong,
.report-adherence small {
    display: block
}

.report-adherence strong {
    font-size: 12px
}

.report-adherence small {
    font-size: 10px;
    color: var(--muted);
    margin-top: 3px
}

.question-list {
    padding: 0 0 0 18px;
    color: var(--muted);
    font-size: 10px;
    line-height: 2
}

.report-footer {
    border-top: 1px solid var(--line);
    margin-top: 29px;
    padding-top: 14px;
    color: #a0b2b1;
    font-size: 9px;
    display: flex;
    justify-content: space-between
}

.profile-layout {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 18px
}

.profile-cover {
    display: flex;
    align-items: center;
    gap: 13px;
    border-bottom: 1px solid var(--line);
    padding-bottom: 21px
}

.profile-avatar {
    width: 58px;
    height: 58px;
    display: grid;
    place-items: center;
    border-radius: 17px;
    background: var(--teal);
    color: #fff;
    font-weight: 700;
    font-size: 18px
}

.profile-cover h2 {
    font-size: 17px;
    margin: 0
}

.profile-cover p {
    font-size: 10px;
    color: var(--muted);
    margin: 3px 0 0
}

.profile-cover button {
    margin-left: auto;
    font-size: 10px
}

.profile-form {
    padding-top: 20px
}

.profile-form label {
    font-size: 10px;
    color: var(--muted)
}

.profile-form input,
.profile-form select,
.profile-form textarea {
    display: block;
    margin-top: 6px;
    color: var(--ink)
}

.profile-side {
    display: grid;
    align-content: start;
    gap: 14px
}

.profile-side h3 {
    font-size: 13px;
    margin: 0
}

.profile-side p {
    font-size: 10px;
    color: var(--muted);
    margin: 6px 0 13px
}

.muted-copy {
    display: block;
    color: var(--muted);
    font-size: 9px;
    margin-top: 9px
}

.switch-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-top: 1px solid var(--line);
    padding: 12px 0 0;
    margin-top: 12px;
    font-size: 10px;
    color: var(--ink)
}

.switch-row input {
    display: none
}

.switch-row i {
    width: 31px;
    height: 18px;
    border-radius: 20px;
    background: #c9d8d6;
    position: relative
}

.switch-row i:after {
    content: '';
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #fff;
    position: absolute;
    top: 2px;
    left: 2px;
    transition: .2s
}

.switch-row input:checked+i {
    background: var(--teal-2)
}

.switch-row input:checked+i:after {
    left: 15px
}

.mobile-tabbar,
.floating-checkin,
.modal-backdrop,
.toast {
    display: none
}

@media(max-width:1050px) {
    .metric-grid {
        grid-template-columns: repeat(2, 1fr)
    }

    .dashboard-columns,
    .medication-layout,
    .profile-layout {
        grid-template-columns: 1fr
    }

    .checkin-layout {
        grid-template-columns: 1fr
    }

    .checkin-aside {
        grid-template-columns: repeat(3, 1fr)
    }

    .safety-callout {
        grid-column: 1/-1
    }

    .insight-grid {
        grid-template-columns: 1fr 1fr
    }

    .insight-chart {
        grid-row: auto
    }

    .report-kpis {
        grid-template-columns: repeat(2, 1fr)
    }

    .report-kpis>div:nth-child(2) {
        border-right: 0
    }

    .report-kpis>div:nth-child(-n+2) {
        border-bottom: 1px solid var(--line)
    }
}

@media(max-width:720px) {
    body {
        font-size: 13px;
        padding-bottom: 69px
    }

    .sidebar {
        display: none
    }

    .main-content {
        margin-left: 0
    }

    .topbar {
        height: 62px;
        padding: 0 17px
    }

    .mobile-menu {
        display: block;
        margin: 0 11px 0 0;
        font-size: 18px
    }

    .top-avatar {
        width: 31px;
        height: 31px
    }

    .page-container {
        padding: 26px 16px 35px
    }

    .page-heading {
        align-items: flex-start;
        flex-direction: column;
        margin-bottom: 21px
    }

    .page-heading h1 {
        font-size: 24px
    }

    .desktop-cta {
        display: none
    }

    .page-heading>.primary-button {
        align-self: stretch
    }

    .privacy-banner {
        align-items: flex-start;
        padding: 11px 12px
    }

    .privacy-banner .text-button {
        display: none
    }

    .checkin-hero {
        padding: 22px 20px;
        min-height: 232px;
        align-items: flex-start
    }

    .hero-copy {
        max-width: 75%
    }

    .hero-copy h2 {
        font-size: 21px
    }

    .progress-ring {
        position: absolute;
        width: 90px;
        height: 90px;
        right: 16px;
        bottom: 21px;
        margin: 0
    }

    .progress-ring:before {
        width: 69px;
        height: 69px
    }

    .progress-ring strong {
        font-size: 20px
    }

    .hero-decoration {
        width: 150px;
        height: 150px;
        right: -40px;
        bottom: -36px
    }

    .section-heading {
        align-items: center
    }

    .section-heading h2 {
        font-size: 16px
    }

    .quiet-link {
        font-size: 10px
    }

    .metric-grid {
        gap: 10px;
        margin-bottom: 22px
    }

    .metric-card {
        min-height: 135px;
        padding: 14px
    }

    .metric-value strong {
        font-size: 23px
    }

    .dashboard-columns {
        gap: 12px
    }

    .panel {
        padding: 16px;
        border-radius: 15px
    }

    .activity-strip {
        grid-template-columns: 1fr;
        padding: 5px
    }

    .activity-item {
        border-right: 0;
        border-bottom: 1px solid var(--line);
        padding: 12px 8px
    }

    .activity-item:last-child {
        border: 0
    }

    .activity-item b {
        margin-left: auto
    }

    .mobile-tabbar {
        display: flex;
        position: fixed;
        z-index: 30;
        bottom: 0;
        left: 0;
        right: 0;
        height: 66px;
        background: rgba(255, 255, 255, .96);
        border-top: 1px solid var(--line);
        justify-content: space-around;
        padding: 6px 8px env(safe-area-inset-bottom)
    }

    .mobile-tabbar a {
        color: #94a8a7;
        font-size: 9px;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 2px;
        min-width: 50px
    }

    .mobile-tabbar a span {
        font-size: 20px;
        line-height: 25px
    }

    .mobile-tabbar a.active {
        color: var(--teal);
        font-weight: 700
    }

    .floating-checkin {
        display: grid;
        place-items: center;
        position: fixed;
        right: 18px;
        bottom: 79px;
        z-index: 29;
        width: 48px;
        height: 48px;
        border: 0;
        border-radius: 50%;
        background: var(--teal);
        color: #fff;
        font-size: 24px;
        box-shadow: 0 7px 18px rgba(15, 118, 110, .3)
    }

    .form-card {
        padding: 17px
    }

    .form-card-title {
        margin-bottom: 14px
    }

    .choice-grid {
        grid-template-columns: repeat(2, 1fr)
    }

    .two-col {
        grid-template-columns: 1fr;
        gap: 0
    }

    .form-actions {
        flex-direction: column-reverse
    }

    .form-actions button {
        width: 100%
    }

    .checkin-aside {
        grid-template-columns: 1fr
    }

    .safety-callout {
        grid-column: auto
    }

    .period-tabs {
        align-self: stretch;
        justify-content: space-between
    }

    .period-tabs button {
        flex: 1
    }

    .insight-grid {
        grid-template-columns: 1fr
    }

    .score-card {
        grid-template-columns: 1fr auto
    }

    .medication-summary {
        grid-template-columns: 1fr;
        gap: 9px
    }

    .summary-stat {
        padding: 11px
    }

    .timeline-head {
        display: block
    }

    .timeline-head span {
        display: block;
        margin-top: 2px
    }

    .report-actions {
        width: 100%
    }

    .report-actions button {
        flex: 1
    }

    .report-sheet {
        padding: 18px 15px
    }

    .report-header {
        display: block
    }

    .report-date {
        text-align: left;
        margin-top: 17px
    }

    .report-kpis {
        margin-top: 17px
    }

    .report-columns {
        grid-template-columns: 1fr;
        gap: 25px
    }

    .report-footer {
        display: block;
        line-height: 1.8
    }

    .profile-layout {
        gap: 12px
    }

    .profile-cover {
        align-items: flex-start;
        flex-wrap: wrap
    }

    .profile-cover button {
        margin-left: 71px;
        margin-top: -21px
    }

    .modal-backdrop {
        display: flex;
        position: fixed;
        inset: 0;
        background: rgba(17, 52, 56, .35);
        z-index: 50;
        align-items: flex-end;
        justify-content: center;
        opacity: 0;
        pointer-events: none;
        transition: .2s
    }

    .modal-backdrop.open {
        opacity: 1;
        pointer-events: auto
    }

    .quick-modal {
        background: #fff;
        width: 100%;
        border-radius: 22px 22px 0 0;
        padding: 25px 20px 30px;
        position: relative;
        transform: translateY(20px);
        transition: .25s
    }

    .modal-backdrop.open .quick-modal {
        transform: none
    }

    .modal-close {
        position: absolute;
        right: 17px;
        top: 13px;
        border: 0;
        background: #eef5f4;
        color: var(--muted);
        width: 28px;
        height: 28px;
        border-radius: 50%;
        font-size: 20px
    }

    .quick-modal h2 {
        font-size: 21px;
        margin: 14px 0 4px
    }

    .quick-modal p {
        font-size: 11px;
        color: var(--muted);
        margin: 0 0 20px
    }

    .quick-modal label {
        display: block;
        color: var(--ink);
        font-size: 11px;
        font-weight: 600;
        margin-top: 16px
    }

    .quick-modal label>output {
        float: right;
        color: var(--teal);
        font-weight: 700
    }

    .quick-modal label>input[type=range] {
        width: 100%;
        display: block;
        margin-top: 10px
    }

    .quick-modal .input-with-unit {
        margin-top: 7px;
        font-weight: 400
    }

    .toast {
        position: fixed;
        display: block;
        bottom: 84px;
        left: 50%;
        transform: translate(-50%, 15px);
        background: #183b43;
        color: #fff;
        border-radius: 9px;
        padding: 10px 14px;
        font-size: 11px;
        z-index: 60;
        opacity: 0;
        pointer-events: none;
        transition: .2s;
        white-space: nowrap
    }

    .toast.show {
        opacity: 1;
        transform: translate(-50%, 0)
    }
}

@media(min-width:721px) {
    .quick-modal {
        display: none
    }
}

@media print {

    .sidebar,
    .topbar,
    .mobile-tabbar,
    .floating-checkin,
    .report-actions,
    .page-heading,
    .privacy-banner {
        display: none !important
    }

    .main-content {
        margin: 0
    }

    .page-container {
        padding: 0
    }

    .app-view {
        display: none !important
    }

    .app-view[data-screen=report] {
        display: block !important
    }

    .report-sheet {
        box-shadow: none;
        border: 0
    }

    .report-alert {
        print-color-adjust: exact;
        -webkit-print-color-adjust: exact
    }
}