/* ErisPulse Dashboard – base (auto-split from dash.css, aligned with js/) */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}


/* Light */
[data-theme="light"],
:root,
[data-ui-style="eris"][data-theme="light"],
[data-ui-style="eris"]:root,
[data-ui-style="classic"][data-theme="light"] {
    --bg-p: #f6f7f9;
    --bg-s: #eef0f3;
    --bg-t: #ffffff;
    --tx-p: #0a0a0a;
    --tx-s: #5f6b7a;
    --tx-t: #9aa4b1;
    --bd: #e5e8ec;
    --bd-h: #d0d6dd;
    --accent: #4aa3dd;
    --accent-h: #3a94d0;
    --accent-rgb: 74, 163, 221;
    --accent-fill: #3a94d0;
    --accent-fill-h: #2f7fb8;
    --sh: rgba(15, 23, 42, 0.06);
    --modal: rgba(15, 23, 42, 0.45);
    --shadow-card: none;
    --shadow-hover: 0 6px 18px -8px rgba(15, 23, 42, 0.18);
    --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
    --font-display: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
    --ease: cubic-bezier(0.25, 0.46, 0.45, 0.94);
    --ease-spring: cubic-bezier(0.34, 1.22, 0.5, 1);
    --ok-bg: #e9f8ef;
    --ok-c: #178a52;
    --ok-bd: #bce8cd;
    --er-bg: #fdecee;
    --er-c: #d9404e;
    --er-bd: #f6c6cb;
    --wr-bg: #fef5e4;
    --wr-c: #c77f16;
    --wr-bd: #f7dca6;
    --pr-bg: #e6f3fb;
    --pr-c: #2e88c4;
    --pr-bd: #bfe0f2;
    --sc-bg: #f7eefa;
    --sc-c: #a34ab0;
    --sc-bd: #e5cdef;
    --lk: #4aa3dd;
    --focus-ring: rgba(var(--accent-rgb), 0.25);
    --er-fill: #d32f2f;
}

/* Dark */
[data-theme="dark"],
[data-ui-style="eris"][data-theme="dark"],
[data-ui-style="classic"][data-theme="dark"] {
    --bg-p: #0f1115;
    --bg-s: #161a20;
    --bg-t: #1c2027;
    --tx-p: #e6e9f0;
    --tx-s: #98a2b0;
    --tx-t: #5f6875;
    --bd: #272c35;
    --bd-h: #343b47;
    --accent: #6a9df0;
    --accent-h: #86b0f3;
    --accent-rgb: 106, 157, 240;
    --accent-fill: #4a85d8;
    --accent-fill-h: #3f74c4;
    --sh: rgba(0, 0, 0, 0.45);
    --modal: rgba(0, 0, 0, 0.72);
    --shadow-card: none;
    --shadow-hover: 0 8px 22px -8px rgba(0, 0, 0, 0.6);
    --ok-bg: #12301f;
    --ok-c: #6fd6a1;
    --ok-bd: #1e5c3c;
    --er-bg: #3a1a20;
    --er-c: #ff8b95;
    --er-bd: #84333d;
    --wr-bg: #3a2d15;
    --wr-c: #f5b95d;
    --wr-bd: #7e5a22;
    --pr-bg: #14273f;
    --pr-c: #7fa8f0;
    --pr-bd: #2c4a74;
    --sc-bg: #352044;
    --sc-c: #bf8bd0;
    --sc-bd: #5f3a75;
    --lk: #6a9df0;
    --focus-ring: rgba(var(--accent-rgb), 0.32);
    --er-fill: #ef5350;
}

/* Auto */
[data-theme="auto"] {

}
@media (prefers-color-scheme: dark) {
    [data-theme="auto"],
    [data-ui-style="eris"][data-theme="auto"],
    [data-ui-style="classic"][data-theme="auto"] {
        --bg-p: #0f1115;
        --bg-s: #161a20;
        --bg-t: #1c2027;
        --tx-p: #e6e9f0;
        --tx-s: #98a2b0;
        --tx-t: #5f6875;
        --bd: #272c35;
        --bd-h: #343b47;
        --accent: #6a9df0;
        --accent-h: #86b0f3;
        --accent-rgb: 106, 157, 240;
        --accent-fill: #4a85d8;
        --accent-fill-h: #3f74c4;
        --sh: rgba(0, 0, 0, 0.45);
        --modal: rgba(0, 0, 0, 0.72);
        --shadow-card: none;
        --shadow-hover: 0 8px 22px -8px rgba(0, 0, 0, 0.6);
        --ok-bg: #12301f;
        --ok-c: #6fd6a1;
        --ok-bd: #1e5c3c;
        --er-bg: #3a1a20;
        --er-c: #ff8b95;
        --er-bd: #84333d;
        --wr-bg: #3a2d15;
        --wr-c: #f5b95d;
        --wr-bd: #7e5a22;
        --pr-bg: #14273f;
        --pr-c: #7fa8f0;
        --pr-bd: #2c4a74;
        --sc-bg: #352044;
        --sc-c: #bf8bd0;
        --sc-bd: #5f3a75;
        --lk: #6a9df0;
        --focus-ring: rgba(var(--accent-rgb), 0.32);
        --er-fill: #ef5350;
    }
}

/* OLED */
[data-oled="on"][data-theme="dark"],
[data-ui-style="eris"][data-oled="on"][data-theme="dark"] {
    --bg-p: #000000;
    --bg-s: #000000;
    --bg-t: #0a0d12;
    --bd: #1a1e25;
    --bd-h: #252b35;
    --sh: rgba(0, 0, 0, 0.6);
    --modal: rgba(0, 0, 0, 0.85);
    --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.5);
    --shadow-hover: 0 6px 18px -6px rgba(0, 0, 0, 0.75);
    /* 纯黑底上 14% 太淡，微调透明度保可见性 */
    --accent-soft: color-mix(in srgb, var(--accent) 18%, transparent);
}
@media (prefers-color-scheme: dark) {
    [data-oled="on"][data-theme="auto"],
    [data-ui-style="eris"][data-oled="on"][data-theme="auto"] {
        --bg-p: #000000;
        --bg-s: #000000;
        --bg-t: #0a0d12;
        --bd: #1a1e25;
        --bd-h: #252b35;
        --sh: rgba(0, 0, 0, 0.6);
        --modal: rgba(0, 0, 0, 0.85);
        --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.5);
        --shadow-hover: 0 6px 18px -6px rgba(0, 0, 0, 0.75);
        --accent-soft: color-mix(in srgb, var(--accent) 18%, transparent);
    }
}

html {
    height: -webkit-fill-available;
}

body {
    font-family: var(--font-body), -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        "PingFang SC",
        "Microsoft YaHei",
        sans-serif;
    background: var(--bg-p);
    color: var(--tx-p);
    height: 100vh;
    height: -webkit-fill-available;
    height: 100dvh;
    display: flex;
    flex-direction: column;
    font-size: 14px;
    overflow: hidden;
    -webkit-font-smoothing: antialiased;
}

.app {
    display: none;
    height: 100vh;
    height: 100dvh;
    flex-direction: column;
    position: relative;
}

.app.authed {
    display: flex;
}

.page-loader {
    position: fixed;
    inset: 0;
    background: var(--bg-p);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    z-index: 9999;
}

.page-loader.hidden {
    animation: loaderExit 0.7s cubic-bezier(0.32, 0.72, 0, 1) forwards;
    pointer-events: none;
}

@keyframes loaderExit {
    0% {
        opacity: 1;
        visibility: visible;
    }
    100% {
        opacity: 0;
        visibility: hidden;
    }
}

.page-loader.hidden .loader-icon {
    animation: loaderIconExit 0.6s cubic-bezier(0.32, 0.72, 0, 1) forwards;
}

@keyframes loaderIconExit {
    0% {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
    100% {
        opacity: 0;
        transform: scale(1.12) translateY(-16px);
    }
}

.page-loader.hidden::before,
.page-loader.hidden::after {
    animation: loaderBarExit 0.4s ease-out forwards;
}

@keyframes loaderBarExit {
    0% { opacity: 0.6; }
    100% { opacity: 0; }
}

.loader-icon {
    width: 88px;
    height: 88px;
    border-radius: 20px;
    object-fit: contain;
    transform-origin: center;
    animation:
        loaderReveal 0.7s cubic-bezier(0.32, 0.72, 0, 1) both,
        loaderBreath 2.8s ease-in-out 0.7s infinite;
}

@keyframes loaderReveal {
    0% {
        opacity: 0;
        transform: translateY(12px) scale(0.92);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes loaderBreath {
    0%, 100% {  }
    50% {  }
}

.page-loader::before,
.page-loader::after {
    content: "";
    position: absolute;
    top: calc(50% + 64px);
    left: 50%;
    height: 3px;
    border-radius: 3px;
}

.page-loader::before {
    width: 96px;
    
    background: var(--bd);
    opacity: 0.6;
}

.page-loader::after {
    width: 30px;
    transform: translateX(calc(-50% - 33px));
    background: var(--accent);
    animation: loaderTrack 1.3s var(--ease) infinite;
}

@keyframes loaderTrack {
    0% {
        transform: translateX(calc(-50% - 33px));
        opacity: 0;
    }
    20% {
        opacity: 1;
    }
    80% {
        opacity: 1;
    }
    100% {
        transform: translateX(calc(-50% + 33px));
        opacity: 0;
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        
    }
    to {
        opacity: 1;
        
    }
}

/* 模态框 - 优雅落下 */
@keyframes modalIn {
    from {
        opacity: 0;
        transform: translateY(-16px) scale(0.92);
    }
    60% {
        opacity: 1;
        transform: translateY(2px) scale(1.01);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* 渐隐入场 */
@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

/* btn */
.btn {
    position: relative;
    overflow: hidden;
}

/* 按钮涟漪光效已移除：保留占位避免 JS 报错 */
.btn::after {
    display: none;
}

.btn.ripple::after {
    display: none;
}

.btn:hover {
    filter: none;
}

.btn:active {
    filter: none;
}

/* 关于页 - 优雅悬浮 */
@keyframes gentleFloat {
    0%,
    100% {
        
    }
    50% {
        
    }
}

.about-mascot {
    animation: gentleFloat 5s ease-in-out infinite;
}

.anim-enter .about-feature {
    opacity: 0;
    animation: bubbleIn 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

.anim-enter .about-feature:nth-child(even) {
    animation-name: bubbleInRight;
}

.anim-enter .about-feature:nth-child(1) { animation-delay: 0.05s; }
.anim-enter .about-feature:nth-child(2) { animation-delay: 0.12s; }
.anim-enter .about-feature:nth-child(3) { animation-delay: 0.19s; }
.anim-enter .about-feature:nth-child(4) { animation-delay: 0.26s; }

@keyframes breatheGlow {
    0%,
    100% {
    filter: none;
    }
    50% {
    filter: none;
    }
}

.about-star-icon svg {
    animation: breatheGlow 3s ease-in-out infinite;
}

/* 进度条 - 平滑填充 */
.progress-bar-fill {
    transition: width 0.8s cubic-bezier(0.25, 0.1, 0.25, 1);
}

/* 圆形进度 - 平滑旋转 */
.circular-progress circle {
    transition: stroke-dashoffset 0.8s cubic-bezier(0.25, 0.1, 0.25, 1);
}

/* Chip标签 */
.chip:hover {
    transform: none;
}

/* 输入框聚焦 - 极简边框 */
input,
textarea,
select {
    transition:
        border-color 0.2s ease,
        box-shadow 0.2s ease;
}

input:focus,
textarea:focus,
select:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--focus-ring);
    outline: none;
}

/* 减少动画模式 */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    .page {
        opacity: 1;
    }
}


/* Splash */
.splash {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg-p);
    transition: opacity 0.4s var(--ease-out-quart), visibility 0.4s var(--ease-out-quart);
}

.splash.hide {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.splash-bg {
    position: absolute;
    inset: 0;
    background: color-mix(in srgb, var(--accent) 6%, transparent);
    animation: splashPulse 3s ease-in-out infinite;
}

@keyframes splashPulse {
    0%, 100% { opacity: 0.5; }
    50%      { opacity: 1; }
}

.splash-content {
    position: relative;
    z-index: 1;
    text-align: center;
    animation: splashIn 0.55s cubic-bezier(0.22, 0.61, 0.36, 1);
}

@keyframes splashIn {
    from { opacity: 0; transform: translateY(16px) scale(0.97); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

.splash-title {
    font-size: 2.8rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--tx-p);
    animation: splashIn 0.5s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.splash-sub {
    margin-top: 8px;
    font-size: 0.85rem;
    color: var(--tx-s);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    opacity: 0;
    filter: none;
    animation: subReveal 0.45s 0.55s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}

@keyframes subReveal {
    from { opacity: 0; filter: none;  }
    to   { opacity: 1; filter: none;  }
}

.splash-dots {
    margin-top: 32px;
    display: flex;
    gap: 6px;
    justify-content: center;
    opacity: 0;
    animation: subReveal 0.4s 0.85s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}

.splash-dots span {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--accent);
    animation: dotBounce 1.4s ease-in-out infinite;
}

.splash-dots span:nth-child(2) { animation-delay: 0.2s; }
.splash-dots span:nth-child(3) { animation-delay: 0.4s; }

@keyframes dotBounce {
    0%, 80%, 100% {  opacity: 0.4; }
    40%           {  opacity: 1; }
}
:root {
    --radius-xs: 6px;
    --radius-sm: 8px;
    --radius-md: 10px;
    --radius-lg: 14px;
    --radius-xl: 20px;
    --radius-2xl: 28px;
    /* 悬浮壳：页面四周呼吸间隙 + 面板圆角 */
    --radius-panel: 20px;
    --gap-shell: 18px;
    /* accent 柔和底（运行时换 accent 自动跟随；派生自 --accent，勿写死色值） */
    --accent-soft: color-mix(in srgb, var(--accent) 14%, transparent);

    --ease-smooth: cubic-bezier(0.25, 0.1, 0.25, 1);
    --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
    --ease-bounce: cubic-bezier(0.34, 1.2, 0.64, 1);
    --ease-soft-spring: cubic-bezier(0.3, 1.1, 0.5, 1.02);

    --shadow-soft: none;
    --shadow-float: none;
    --shadow-glow: none;
    --shadow-accent: 0 1px 2px rgba(0, 0, 0, 0.06);
}

/* 减少动画 */
@media (prefers-reduced-motion: reduce) {
    .splash.hide,
    .splash.hide .splash-content,
    .app.authed {
        animation: none !important;
    }
    .splash.hide {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transition: opacity 0.2s ease;
    }
    .app.authed {
        opacity: 1;
    }
}

/* ── 全局滚动条：镂空胶囊（透明边框镂空技巧，QvQChat 同款） ── */
html {
    scrollbar-width: thin;
    scrollbar-color: var(--bd-h) transparent;
}

::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: var(--bd-h);
    border: 3px solid transparent;
    border-radius: 999px;
    background-clip: content-box;
}

::-webkit-scrollbar-thumb:hover {
    background: var(--accent);
    background-clip: content-box;
}

/* ══ 透感体系：背景图模式下全线表面让利（html.bg-image 由 appearance.js 挂载） ══
   设计语言 §2.6：表面转半透明 + 悬浮面板局部 blur；文字/边框/语义色不变保对比度。
   色值与各主题块同源（改动主题时同步此处）。
   档位（html 上叠加 bg-level-soft / bg-level-strong，标准档无附加类）：
     轻 soft   —— 表面更实，遮罩更重（浅色机器/复杂底图友好）
     标准 std  —— 默认值（同各主题基础块）
     强 strong —— 表面更透，背景图更多露出，blur 相应加深兜底 */
/* ── 标准档（默认） ── */
html.bg-image {
    --bg-p: color-mix(in srgb, #f6f7f9 30%, transparent);
    --bg-s: color-mix(in srgb, #eef0f3 62%, transparent);
    --bg-t: color-mix(in srgb, #ffffff 82%, transparent);
}
html[data-theme="dark"].bg-image {
    --bg-p: color-mix(in srgb, #0f1115 28%, transparent);
    --bg-s: color-mix(in srgb, #161a20 62%, transparent);
    --bg-t: color-mix(in srgb, #1c2027 82%, transparent);
}
@media (prefers-color-scheme: dark) {
    html[data-theme="auto"].bg-image {
        --bg-p: color-mix(in srgb, #0f1115 28%, transparent);
        --bg-s: color-mix(in srgb, #161a20 62%, transparent);
        --bg-t: color-mix(in srgb, #1c2027 82%, transparent);
    }
}
/* ── 轻档：表面收紧、更接近实底 ── */
html.bg-image.bg-level-soft {
    --bg-p: color-mix(in srgb, #f6f7f9 45%, transparent);
    --bg-s: color-mix(in srgb, #eef0f3 78%, transparent);
    --bg-t: color-mix(in srgb, #ffffff 92%, transparent);
}
html[data-theme="dark"].bg-image.bg-level-soft {
    --bg-p: color-mix(in srgb, #0f1115 42%, transparent);
    --bg-s: color-mix(in srgb, #161a20 78%, transparent);
    --bg-t: color-mix(in srgb, #1c2027 92%, transparent);
}
@media (prefers-color-scheme: dark) {
    html[data-theme="auto"].bg-image.bg-level-soft {
        --bg-p: color-mix(in srgb, #0f1115 42%, transparent);
        --bg-s: color-mix(in srgb, #161a20 78%, transparent);
        --bg-t: color-mix(in srgb, #1c2027 92%, transparent);
    }
}
/* ── 强档：全线更透，背景图持续可见 ── */
html.bg-image.bg-level-strong {
    --bg-p: color-mix(in srgb, #f6f7f9 20%, transparent);
    --bg-s: color-mix(in srgb, #eef0f3 50%, transparent);
    --bg-t: color-mix(in srgb, #ffffff 72%, transparent);
}
html[data-theme="dark"].bg-image.bg-level-strong {
    --bg-p: color-mix(in srgb, #0f1115 18%, transparent);
    --bg-s: color-mix(in srgb, #161a20 50%, transparent);
    --bg-t: color-mix(in srgb, #1c2027 72%, transparent);
}
@media (prefers-color-scheme: dark) {
    html[data-theme="auto"].bg-image.bg-level-strong {
        --bg-p: color-mix(in srgb, #0f1115 18%, transparent);
        --bg-s: color-mix(in srgb, #161a20 50%, transparent);
        --bg-t: color-mix(in srgb, #1c2027 72%, transparent);
    }
}
/* ── OLED：黑底透明会发灰，各档整体收紧（轻 96 / 标准 92 / 强 88） ── */
html[data-oled="on"].bg-image,
html[data-oled="on"][data-theme="dark"].bg-image {
    --bg-p: color-mix(in srgb, #000000 20%, transparent);
    --bg-s: color-mix(in srgb, #0a0d12 60%, transparent);
    --bg-t: color-mix(in srgb, #0a0d12 92%, transparent);
}
@media (prefers-color-scheme: dark) {
    html[data-oled="on"][data-theme="auto"].bg-image {
        --bg-p: color-mix(in srgb, #000000 20%, transparent);
        --bg-s: color-mix(in srgb, #0a0d12 60%, transparent);
        --bg-t: color-mix(in srgb, #0a0d12 92%, transparent);
    }
}
html[data-oled="on"].bg-image.bg-level-soft,
html[data-oled="on"][data-theme="dark"].bg-image.bg-level-soft {
    --bg-p: color-mix(in srgb, #000000 32%, transparent);
    --bg-s: color-mix(in srgb, #0a0d12 75%, transparent);
    --bg-t: color-mix(in srgb, #0a0d12 96%, transparent);
}
@media (prefers-color-scheme: dark) {
    html[data-oled="on"][data-theme="auto"].bg-image.bg-level-soft {
        --bg-p: color-mix(in srgb, #000000 32%, transparent);
        --bg-s: color-mix(in srgb, #0a0d12 75%, transparent);
        --bg-t: color-mix(in srgb, #0a0d12 96%, transparent);
    }
}
html[data-oled="on"].bg-image.bg-level-strong,
html[data-oled="on"][data-theme="dark"].bg-image.bg-level-strong {
    --bg-p: color-mix(in srgb, #000000 14%, transparent);
    --bg-s: color-mix(in srgb, #0a0d12 50%, transparent);
    --bg-t: color-mix(in srgb, #0a0d12 88%, transparent);
}
@media (prefers-color-scheme: dark) {
    html[data-oled="on"][data-theme="auto"].bg-image.bg-level-strong {
        --bg-p: color-mix(in srgb, #000000 14%, transparent);
        --bg-s: color-mix(in srgb, #0a0d12 50%, transparent);
        --bg-t: color-mix(in srgb, #0a0d12 88%, transparent);
    }
}
/* cel 皮肤例外：纸面风格保持不透明（档位对其无效） */
html[data-ui-style="cel"].bg-image {
    --bg-p: #fafaf5;
    --bg-s: #ffffff;
    --bg-t: #ffffff;
}
html[data-ui-style="cel"][data-theme="dark"].bg-image {
    --bg-p: #14161d;
    --bg-s: #1b1e27;
    --bg-t: #20242f;
}
@media (prefers-color-scheme: dark) {
    html[data-ui-style="cel"][data-theme="auto"].bg-image {
        --bg-p: #14161d;
        --bg-s: #1b1e27;
        --bg-t: #20242f;
    }
}

/* 透感可读性兜底（v1.2）：仅真正的浮层（模态/下拉）用轻 blur；
   header/侧栏/卡片/统计卡保持平面半透明——大面积 backdrop blur 会造成浑浊感 */
html.bg-image .modal-box,
html.bg-image .node-dropdown {
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}
html.bg-image.bg-level-strong .modal-box,
html.bg-image.bg-level-strong .node-dropdown {
    -webkit-backdrop-filter: blur(16px);
    backdrop-filter: blur(16px);
}
html[data-ui-style="cel"].bg-image .modal-box,
html[data-ui-style="cel"].bg-image .node-dropdown {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}


/* ══════════ 移动端触控基础（触屏/粗指针设备） ══════════ */
/* 消除点击高亮歧义与 300ms 双击缩放判定：交互元素禁用双击缩放手势 */
@media (hover: none), (pointer: coarse) {
    a, button, input, select, textarea, label,
    [role="button"], [onclick] {
        touch-action: manipulation;
        -webkit-tap-highlight-color: transparent;
    }
}
