:root {
    --wr-green: #2B7650;
    --wr-green-2: #225F40;
    --wr-bg: #F5F6F2;
    --wr-bg-2: #EFF2ED;
    --wr-card: #FFFFFF;
    --wr-reading: #FFFDF8;
    --wr-line: #E1E7DF;
    --wr-ink: #243129;
    --wr-text: #344139;
    --wr-muted: #69756D;
    --wr-amber: #B27B23;
    --wr-info: #52798A;
    --wr-soft-green: #EDF5F0;
    --wr-soft-blue: #EEF4F6;
    --wr-soft-amber: #FBF3E4;
    --wr-soft-red: #F9ECE9;
    --primary-color: var(--wr-green);
    --success-color: #1F7A4A;
    --warning-color: #D19028;
    --danger-color: #C65345;
    --info-color: #507A66;
    --gray-100: #FAF7EF;
    --gray-200: #E8E1D2;
    --gray-700: #2E3A32;
    --gray-800: #17251B;
}

body {
    background: var(--wr-bg);
    color: var(--wr-ink);
}

body.user-app-shell {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.72) 0, rgba(255, 255, 255, 0) 180px),
        var(--wr-bg);
}

.container.mt-3.mb-4 {
    padding-top: 0.5rem;
}

.navbar {
    position: sticky;
    top: 0;
    z-index: 1030;
    min-height: 58px;
    padding: 0.42rem 0 !important;
    border-bottom: 1px solid var(--wr-line);
    background: rgba(255, 255, 255, 0.96) !important;
    box-shadow: 0 4px 18px rgba(36, 49, 41, 0.045) !important;
    backdrop-filter: blur(12px);
}

.user-app-shell .navbar .container {
    width: 100%;
    max-width: 1060px;
}

.navbar-brand {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    font-weight: 850 !important;
    color: var(--wr-ink) !important;
}

.navbar-brand-icon {
    width: 30px;
    height: 30px;
    display: block;
    flex: 0 0 30px;
    border-radius: 8px;
    object-fit: cover;
    box-shadow: 0 2px 8px rgba(36, 49, 41, 0.12);
}

.navbar-nav .nav-link {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    color: #536158 !important;
    border-radius: 7px;
    font-weight: 650;
}

.navbar-nav .nav-link:hover {
    color: var(--wr-ink) !important;
    background: #F2F5F1;
}

.navbar-nav .nav-link.active {
    color: var(--wr-green) !important;
    background: var(--wr-soft-green);
}

.navbar-toggler {
    padding: 0.34rem 0.5rem;
    border-color: var(--wr-line) !important;
    background: #F8FAF7;
}

.navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2836, 49, 41, 0.78%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") !important;
}

.navbar-toggler:focus {
    box-shadow: 0 0 0 0.18rem rgba(43, 118, 80, 0.12);
}

.user-avatar {
    width: 28px;
    height: 28px;
    display: inline-grid;
    place-items: center;
    margin-right: 0.35rem;
    border-radius: 50%;
    background: var(--wr-soft-green);
    border: 1px solid #D3E6D9;
    color: var(--wr-green);
    font-size: 0.78rem;
    font-weight: 850;
}

.navbar .dropdown-menu {
    border: 1px solid var(--wr-line);
    border-radius: 8px;
    padding: 0.42rem;
    background: #fff;
    box-shadow: 0 16px 34px rgba(36, 49, 41, 0.10);
}

.navbar .dropdown-item {
    min-height: 38px;
    display: flex;
    align-items: center;
    border-radius: 6px;
    color: var(--wr-text);
    font-size: 0.88rem;
}

.navbar .dropdown-item:hover {
    color: var(--wr-green);
    background: var(--wr-soft-green);
}

.footer {
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .7);
}

.card,
.app-card,
.modal-content,
.filter-panel,
.stat-card,
.table-enhanced,
.story-pane,
#gestureArea,
.story-word-card {
    background: var(--wr-card) !important;
    border: 1px solid var(--wr-line) !important;
    border-radius: 8px !important;
    box-shadow: 0 3px 12px rgba(36, 49, 41, 0.025) !important;
}

.app-card:hover,
.stat-card:hover {
    border-color: #CAD7CD !important;
    box-shadow: 0 8px 22px rgba(36, 49, 41, 0.055) !important;
    transform: none !important;
}

.app-card-header,
.card-header,
.modal-header,
.story-pane .story-pane-header {
    background: transparent !important;
    border-bottom: 1px solid var(--wr-line) !important;
    color: var(--wr-ink) !important;
}

.app-card-footer,
.card-footer {
    background: #FAFBF9 !important;
    border-top: 1px solid var(--wr-line) !important;
}

.page-header {
    border-bottom-color: var(--wr-line) !important;
}

.page-title,
.app-card-header h5,
.card-title,
.story-pane .story-pane-title,
#questionBlock {
    color: var(--wr-ink) !important;
}

.text-muted,
.story-pane .story-pane-meta,
.shortcut-hint,
.page-header p {
    color: var(--wr-muted) !important;
}

.stats-card.page-stat-card,
.suggestions-card {
    background: #FAFCFA !important;
    color: var(--wr-ink) !important;
    border-color: var(--wr-line) !important;
}

.page-stat-icon {
    background: var(--wr-soft-blue) !important;
    color: var(--wr-info) !important;
    border: 1px solid #D9E6EA;
}

.page-stat-value,
.stat-number,
.text-primary {
    color: var(--wr-green) !important;
}

.page-stat-label {
    color: var(--wr-muted) !important;
}

.btn-primary,
.btn-success,
.submit-row .btn-primary,
#showAnswerBtn {
    background: var(--wr-green) !important;
    border-color: var(--wr-green) !important;
    color: #fff !important;
    box-shadow: none;
    font-weight: 700;
}

.btn-primary:hover,
.btn-success:hover,
.submit-row .btn-primary:hover,
#showAnswerBtn:hover {
    background: var(--wr-green-2) !important;
    border-color: var(--wr-green-2) !important;
    color: #fff !important;
}

.btn-outline-primary,
.btn-outline-success {
    color: var(--wr-green) !important;
    border-color: rgba(23, 107, 58, 0.38) !important;
    background: #fff !important;
}

.btn-outline-primary:hover,
.btn-outline-success:hover {
    color: #fff !important;
    background: var(--wr-green) !important;
    border-color: var(--wr-green) !important;
}

.btn-secondary,
.btn-outline-secondary,
.submit-row .btn-secondary {
    background: #F2EEE4 !important;
    border-color: var(--wr-line) !important;
    color: var(--wr-text) !important;
}

.btn-info,
.badge-info,
.bg-info {
    background-color: #CFE4D6 !important;
    color: #175236 !important;
    border-color: #CFE4D6 !important;
}

.btn-warning,
.badge-warning,
.bg-warning {
    background-color: #E8B24B !important;
    border-color: #E8B24B !important;
    color: #fff !important;
}

.btn-danger,
.badge-danger,
.bg-danger {
    background-color: #C65345 !important;
    border-color: #C65345 !important;
    color: #fff !important;
}

.badge-success,
.bg-success,
.progress-bar.bg-success {
    background-color: var(--wr-green) !important;
}

.badge-primary,
.bg-primary,
.progress-bar.bg-primary,
.progress-bar.bg-info {
    background-color: var(--wr-green) !important;
}

.progress {
    background-color: #EDE7DA !important;
    border-radius: 999px;
}

.progress-bar {
    background-color: var(--wr-green);
}

.badge-category,
.badge-category-tag {
    max-width: 100%;
    color: var(--wr-green) !important;
    background: var(--wr-soft-green) !important;
    border: 1px solid #DCE7D9;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.badge-method,
.badge-clicktype {
    background: #FFF3D7 !important;
    color: #8A5B12 !important;
}

.form-control,
.form-select,
.input-group-text,
#categorySelect,
#categorySearch {
    border-color: var(--wr-line) !important;
    background-color: #fff !important;
    color: var(--wr-ink) !important;
}

.form-control:focus,
.form-select:focus,
#categorySearch:focus {
    border-color: var(--wr-green) !important;
    box-shadow: 0 0 0 0.18rem rgba(43, 118, 80, 0.11) !important;
}

#categorySelect option:checked,
#categorySelect option:hover {
    background: var(--wr-green) !important;
    color: #fff !important;
}

.add-task-card {
    background: var(--wr-card) !important;
    border: 1px solid var(--wr-line);
    border-radius: 8px !important;
}

.add-task-header .icon {
    background: var(--wr-soft-green) !important;
    color: var(--wr-green) !important;
    border: 1px solid #DCE7D9;
}

.selected-cat-pill {
    background: var(--wr-soft-green) !important;
    color: var(--wr-green) !important;
}

.selected-cat-pill.empty {
    background: #F2EEE4 !important;
    color: var(--wr-muted) !important;
}

.story-pane .story-pane-body {
    color: var(--wr-text) !important;
    background: var(--wr-reading) !important;
}

.story-pane .story-pane-body .occ,
.story-target-word,
.story-context-callout em {
    background: #FFF0B8 !important;
    border-bottom-color: #D19028 !important;
    color: #6D5311 !important;
}

.story-pane .story-pane-body .occ.current,
.story-target-word.is-active {
    background: #E9F4EF !important;
    border-bottom-color: var(--wr-green) !important;
    color: var(--wr-green) !important;
}

.story-pane .story-pane-body .occ.occ-passive {
    background: transparent !important;
    border-bottom-color: rgba(122, 109, 88, 0.38) !important;
    color: var(--wr-text) !important;
}

.story-pane .story-pane-body .occ.occ-passive:hover {
    background: #F3EEE3 !important;
    border-bottom-color: rgba(122, 109, 88, 0.62) !important;
}

.story-context-callout,
.story-word-card-sentence,
#wordMeaning {
    background: #F7F9F6 !important;
    border-color: var(--wr-line) !important;
}

.story-context-callout {
    border-left-color: var(--wr-green) !important;
}

.btn_audio {
    background: var(--wr-soft-green) !important;
    border-color: #DCE7D9 !important;
    color: var(--wr-green) !important;
}

.shortcut-hint kbd {
    background: #F2EEE4 !important;
    border-color: var(--wr-line) !important;
    color: var(--wr-muted) !important;
}

.breadcrumb,
.breadcrumb-item a {
    color: var(--wr-muted) !important;
}

.breadcrumb-item.active {
    color: var(--wr-green) !important;
}

.table-enhanced thead th,
.results-table th {
    background: #F1F4F0 !important;
    color: var(--wr-ink) !important;
}

@media (max-width: 768px) {
    .navbar .container {
        position: relative;
    }

    .navbar-collapse {
        position: absolute;
        top: calc(100% + 0.45rem);
        right: 1rem;
        left: auto;
        width: min(76vw, 300px);
        max-width: calc(100vw - 1.5rem);
        max-height: calc(100vh - 5rem);
        overflow-y: auto;
        margin-top: 0;
        padding: 0.55rem;
        border: 1px solid var(--wr-line);
        border-radius: 8px;
        background: #fff;
        box-shadow: 0 18px 42px rgba(36, 49, 41, 0.14);
    }

    .navbar-collapse:not(.show) {
        display: none !important;
    }

    .navbar-collapse .navbar-nav {
        gap: 0.08rem;
    }

    .navbar-collapse .nav-link {
        padding: 0.34rem 0.55rem !important;
        font-size: 0.82rem;
    }

    .navbar-collapse .nav-item.dropdown:not(.site-notification-nav) > .dropdown-toggle::after {
        display: none;
    }

    .navbar-collapse .nav-item.dropdown:not(.site-notification-nav) > .dropdown-menu {
        position: static !important;
        display: none;
        float: none;
        min-width: 0;
        margin: 0.02rem 0 0.22rem;
        padding: 0.02rem 0 0.08rem 0.7rem;
        border: 0;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
    }

    .navbar-collapse .nav-item.dropdown:not(.site-notification-nav) > .dropdown-menu.show {
        display: block;
    }

    .navbar-collapse .nav-item.dropdown:not(.site-notification-nav) .dropdown-item {
        min-height: 34px;
        display: flex;
        align-items: center;
        padding: 0.25rem 0.55rem !important;
        border-radius: 8px;
        color: var(--wr-text) !important;
        background: transparent !important;
        font-size: 0.84rem;
    }

    .navbar-collapse .nav-item.dropdown:not(.site-notification-nav) .dropdown-item:hover {
        color: var(--wr-green) !important;
        background: var(--wr-soft-green) !important;
    }

    .navbar-collapse .nav-item.dropdown:not(.site-notification-nav) .dropdown-divider {
        border-color: var(--wr-line);
        margin: 0.25rem 0.6rem;
    }

    .navbar-collapse .site-notification-menu {
        position: static !important;
        width: 100%;
        max-width: none;
        margin-top: 0.25rem;
        transform: none !important;
    }

    .navbar-collapse .site-notification-list {
        max-height: 220px;
    }
}

#answerBlock .btn-success {
    background: #2B8A55 !important;
    border-color: #2B8A55 !important;
    color: #fff !important;
}

#answerBlock .btn-warning {
    background: #D19028 !important;
    border-color: #D19028 !important;
    color: #fff !important;
}

#answerBlock .btn-danger {
    background: #C65345 !important;
    border-color: #C65345 !important;
    color: #fff !important;
}

#answerBlock .btn-info {
    background: #176B3A !important;
    border-color: #176B3A !important;
    color: #fff !important;
}

/* User product shell: reading-first surfaces, without changing runtime DOM contracts. */
.user-app-shell > .container.mt-3.mb-4 {
    width: 100%;
    max-width: 1500px;
    padding-right: 1.25rem;
    padding-left: 1.25rem;
}

.user-app-shell .footer {
    background: rgba(255, 255, 255, 0.58) !important;
    border-top-color: var(--wr-line) !important;
    color: var(--wr-muted) !important;
    box-shadow: none;
}

.user-app-shell .page-header {
    margin-bottom: 1.15rem !important;
    padding: 0.4rem 0 0.9rem;
    border-bottom: 1px solid var(--wr-line) !important;
}

.user-app-shell .page-title {
    color: var(--wr-ink) !important;
    font-size: 1.65rem;
    font-weight: 800;
}

.user-app-shell .breadcrumb {
    margin-bottom: 0.55rem;
    font-size: 0.78rem;
}

.user-app-shell .page-stat-card {
    min-height: 82px;
    border-color: transparent !important;
    background: #F9FBF8 !important;
    box-shadow: none !important;
}

.user-app-shell .page-stat-body {
    min-height: 82px;
    padding: 0.9rem 1rem;
}

.user-app-shell .page-stat-value {
    font-size: 1.55rem;
}

.user-app-shell #taskListCard {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.user-app-shell #taskListCard > .app-card-header {
    padding: 0 0 0.7rem;
    border: 0 !important;
}

.user-app-shell #taskListCard > .app-card-body {
    padding: 0;
}

.user-app-shell .task-card {
    overflow: hidden;
    border-color: var(--wr-line) !important;
    background: #fff !important;
    box-shadow: none !important;
}

.user-app-shell .task-card:hover {
    border-color: #BFD1C3 !important;
    box-shadow: 0 8px 22px rgba(36, 49, 41, 0.055) !important;
}

.user-app-shell .task-card .app-card-header {
    background: #FBFCFA !important;
}

.user-app-shell .task-card .app-card-footer {
    background: #FAFBF9 !important;
}

.user-app-shell .vip-reward-nudge {
    background: linear-gradient(135deg, #F1F7F3 0%, #F8FAF7 100%) !important;
    border-color: #CFE0D2 !important;
    color: var(--wr-text);
}

.user-app-shell .vip-reward-nudge a {
    border: 1px solid var(--wr-green);
    background: var(--wr-green);
    color: #fff;
    box-shadow: 0 5px 14px rgba(43, 118, 80, 0.14);
    transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.user-app-shell .vip-reward-nudge a:hover {
    border-color: var(--wr-green-2);
    background: var(--wr-green-2);
    color: #fff;
    box-shadow: 0 7px 18px rgba(34, 95, 64, 0.18);
    transform: translateY(-1px);
}

.user-app-shell .vip-reward-nudge a:focus-visible {
    outline: 3px solid rgba(43, 118, 80, 0.2);
    outline-offset: 2px;
}

.user-app-shell .run-split {
    gap: 1rem;
}

.user-app-shell .story-pane {
    background: var(--wr-reading) !important;
    border-color: #E8E3D8 !important;
    box-shadow: 0 6px 24px rgba(62, 55, 41, 0.045) !important;
}

.user-app-shell .story-pane .story-pane-header {
    background: transparent !important;
    border-bottom-color: #ECE8DF !important;
}

.user-app-shell .story-pane .story-pane-actions select {
    background: rgba(255, 255, 255, 0.8) !important;
    border-color: #DDE3DB !important;
}

.user-app-shell #gestureArea {
    background: #fff !important;
    border-color: var(--wr-line) !important;
    box-shadow: 0 5px 20px rgba(36, 49, 41, 0.035) !important;
}

.user-app-shell #sm2SubtaskProgress {
    border-color: transparent !important;
    background: rgba(255, 255, 255, 0.62) !important;
    box-shadow: none !important;
}

.user-app-shell .learning-mode-tabs {
    padding: 3px;
    border: 1px solid var(--wr-line);
    border-radius: 8px;
    background: #EEF1ED;
}

.user-app-shell .learning-mode-tabs button {
    border-radius: 6px;
}

.user-app-shell .open-story-head {
    align-items: center;
    padding-bottom: 0.9rem;
    border-bottom: 1px solid var(--wr-line);
}

.user-app-shell .open-story-head h1 {
    color: var(--wr-ink);
    font-size: 1.55rem;
}

.user-app-shell .open-story-filter {
    padding: 0.15rem 0 0.8rem;
    border-bottom: 1px solid var(--wr-line);
}

.user-app-shell .book-row,
.user-app-shell .chapter-row {
    background: #fff;
    border-color: var(--wr-line);
    box-shadow: none;
}

.user-app-shell .book-row:hover,
.user-app-shell .chapter-row:hover {
    border-color: #BFD1C3;
    background: #fff;
}

.user-app-shell .book-row::before {
    width: 3px;
    background: #D9E6DC;
}

.user-app-shell .book-row.is-current {
    background: #F8FBF8;
}

.user-app-shell .book-kicker,
.user-app-shell .chapter-total {
    border-radius: 6px;
}

.user-app-shell .book-meta span,
.user-app-shell .chapter-meta span {
    background: #F2F4F1;
    border-radius: 5px;
}

.user-app-shell .learning-group-widget {
    border-color: var(--wr-line);
    background: rgba(255, 255, 255, 0.96);
    box-shadow: 0 12px 28px rgba(36, 49, 41, 0.10);
}

@media (max-width: 768px) {
    .user-app-shell > .container.mt-3.mb-4 {
        padding-right: 0.55rem;
        padding-left: 0.55rem;
    }

    .navbar-brand {
        font-size: 1rem;
    }

    .navbar-brand-icon {
        width: 28px;
        height: 28px;
        flex-basis: 28px;
    }

    .navbar-collapse .navbar-nav:last-child {
        margin-top: 0.35rem;
        padding-top: 0.35rem;
        border-top: 1px solid var(--wr-line);
    }

    .navbar-collapse .nav-link {
        width: 100%;
        min-height: 38px;
    }

    .user-app-shell .page-header {
        padding-top: 0.2rem;
    }

    .user-app-shell .page-header > .row {
        margin-right: 0 !important;
        margin-left: 0 !important;
    }

    .user-app-shell .page-header > .row > [class*="col"] {
        padding-right: 0 !important;
        padding-left: 0 !important;
    }

    .user-app-shell .page-title {
        font-size: 1.22rem;
    }

    .user-app-shell .open-story-head h1 {
        font-size: 1.32rem;
    }

    body.learning-group-widget-visible {
        padding-bottom: 86px;
    }

    .user-app-shell .learning-group-widget {
        min-height: 70px;
        grid-template-columns: 52px minmax(0, 1fr);
        column-gap: 9px;
        padding: 8px 34px 8px 10px;
    }

    .user-app-shell .learning-group-widget img {
        width: 52px;
        height: 52px;
    }

    .user-app-shell .learning-group-widget strong {
        font-size: 12px;
    }

    .user-app-shell .learning-group-widget span {
        font-size: 11px;
    }
}
