/* ==========================================================================
   banana 授权中心 —— 视觉层
   配色/圆角/字号全部取自 DLL 主菜单的 NlTheme.hpp「neverlose 白色主题」，
   目的就是让网站和注入后的主窗口看起来是同一个东西。
   ========================================================================== */

:root {
    /* 外壳 / 面板 */
    --shell:        #F7F8FB;
    --side:         #FFFFFF;
    --top:          #FCFDFF;
    --shell-line:   #DCE1EB;
    --divider:      #EBEEF4;

    /* 卡片 */
    --card:         #FFFFFF;
    --card-line:    #E3E7EF;
    --card-title:   #969CA8;
    --row-line:     #EEF1F6;

    /* 文字 */
    --text:         #262A34;
    --text-2:       #808692;
    --text-3:       #A0A6B2;
    --text-off:     #B2B7C1;

    /* 强调（neverlose 蓝 75,126,255） */
    --accent:       #4B7EFF;
    --accent-10:    rgba(75, 126, 255, .10);
    --accent-24:    rgba(75, 126, 255, .24);
    --accent-text:  #3A6AEB;

    /* 导航 */
    --nav-hover:    #F2F5FA;
    --nav-on:       #EEF3FE;
    --nav-text:     #8C929E;
    --nav-text-on:  #282C36;

    /* 控件 */
    --sw-off:       #CBD1DB;
    --input-bg:     #F5F7FB;
    --input-line:   #E0E5EE;
    --input-hover:  #F0F4FC;
    --track:        #E2E7F0;

    /* 状态 */
    --ok:           #22B26E;
    --err:          #E24E4E;
    --warn:         #E29E20;

    --radius:       14px;
    --radius-lg:    16px;
    --shadow:       0 6px 22px rgba(88, 98, 122, .10);
    --shadow-sm:    0 2px 8px rgba(88, 98, 122, .07);
}

* { box-sizing: border-box; }

html, body {
    margin: 0;
    padding: 0;
    background: var(--shell);
    color: var(--text);
    font: 14px/1.6 "Microsoft YaHei", "PingFang SC", "Segoe UI", system-ui, -apple-system, sans-serif;
    -webkit-font-smoothing: antialiased;
}

a { color: var(--accent-text); text-decoration: none; }
a:hover { text-decoration: underline; }

code {
    font-family: Consolas, "Courier New", monospace;
    background: var(--input-bg);
    border: 1px solid var(--input-line);
    border-radius: 5px;
    padding: 1px 5px;
    font-size: 12.5px;
    color: #46506A;
}

pre {
    background: var(--input-bg);
    border: 1px solid var(--input-line);
    border-radius: 10px;
    padding: 12px;
    overflow: auto;
    font-size: 12.5px;
}

/* ==========================================================================
   居中页（登录 / 安装）
   ========================================================================== */
body.rt-center {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 32px 16px;
    background:
        radial-gradient(1100px 520px at 12% -8%, rgba(75, 126, 255, .10), transparent 62%),
        radial-gradient(900px 480px at 108% 112%, rgba(75, 126, 255, .07), transparent 60%),
        var(--shell);
}

.rt-login-card,
.rt-install-card {
    width: 100%;
    max-width: 400px;
    background: var(--card);
    border: 1px solid var(--card-line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow);
    padding: 30px 30px 26px;
}

.rt-install-card { max-width: 660px; }

/* 登录页顶部品牌区 */
.rt-brand {
    display: flex;
    align-items: center;
    gap: 13px;
    margin-bottom: 22px;
}
.rt-brand img {
    width: 46px; height: 46px;
    object-fit: contain;
    border-radius: 12px;
    background: #fff;
}
.rt-brand .rt-brand-txt b {
    display: block;
    font-size: 17px;
    letter-spacing: .3px;
    color: var(--text);
}
.rt-brand .rt-brand-txt span {
    display: block;
    font-size: 12px;
    color: var(--text-3);
    margin-top: 2px;
}

/* ==========================================================================
   表单控件
   ========================================================================== */
.rt-field { margin-bottom: 14px; }
.rt-field > label {
    display: block;
    font-size: 12.5px;
    color: var(--text-2);
    margin-bottom: 6px;
    font-weight: 600;
}

.rt-input,
.rt-select,
.rt-textarea {
    width: 100%;
    height: 40px;
    padding: 0 12px;
    background: var(--input-bg);
    border: 1px solid var(--input-line);
    border-radius: 10px;
    color: var(--text);
    font-size: 14px;
    font-family: inherit;
    outline: none;
    transition: background .15s, border-color .15s, box-shadow .15s;
}
.rt-textarea { height: auto; min-height: 84px; padding: 10px 12px; resize: vertical; line-height: 1.6; }
.rt-select { appearance: none; cursor: pointer;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4.2 6 8.2l4-4' fill='none' stroke='%23808692' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 32px;
}

.rt-input:hover, .rt-select:hover, .rt-textarea:hover { background: var(--input-hover); }
.rt-input:focus, .rt-select:focus, .rt-textarea:focus {
    background: #fff;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-10);
}
.rt-input::placeholder, .rt-textarea::placeholder { color: var(--text-off); }

.rt-input-sm { height: 34px; font-size: 13px; }

/* 按钮 */
.rt-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 38px;
    padding: 0 18px;
    border-radius: 10px;
    border: 1px solid var(--input-line);
    background: #fff;
    color: var(--text);
    font-size: 13.5px;
    font-family: inherit;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: background .15s, border-color .15s, color .15s, box-shadow .15s;
}
.rt-btn:hover { background: var(--input-hover); border-color: var(--accent-24); text-decoration: none; }
.rt-btn:active { transform: translateY(1px); }
.rt-btn:disabled { opacity: .5; cursor: not-allowed; }

.rt-btn-primary {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
    box-shadow: 0 4px 14px rgba(75, 126, 255, .26);
}
.rt-btn-primary:hover { background: #3F72F5; border-color: #3F72F5; color: #fff; }

.rt-btn-danger { color: var(--err); border-color: rgba(226, 78, 78, .3); }
.rt-btn-danger:hover { background: rgba(226, 78, 78, .07); border-color: rgba(226, 78, 78, .5); }

.rt-btn-ok { color: var(--ok); border-color: rgba(34, 178, 110, .3); }
.rt-btn-ok:hover { background: rgba(34, 178, 110, .08); border-color: rgba(34, 178, 110, .5); }

.rt-btn-sm { height: 30px; padding: 0 11px; font-size: 12.5px; border-radius: 8px; }
.rt-btn-block { width: 100%; }

/* 复选框 */
.rt-check { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; font-size: 13.5px; }
.rt-check input { width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; }

/* 开关（照搬主菜单 pill 开关） */
.rt-switch { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; }
.rt-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.rt-switch .rt-sw {
    position: relative;
    width: 44px; height: 24px;
    border-radius: 999px;
    background: var(--sw-off);
    transition: background .18s;
    flex: none;
    box-shadow: inset 0 1px 2px rgba(88, 98, 122, .16);
}
.rt-switch .rt-sw::after {
    content: "";
    position: absolute;
    top: 3px; left: 3px;
    width: 18px; height: 18px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 3px rgba(88, 98, 122, .35);
    transition: transform .18s;
}
.rt-switch input:checked + .rt-sw { background: var(--accent); }
.rt-switch input:checked + .rt-sw::after { transform: translateX(20px); }
.rt-switch .rt-sw-label { font-size: 13.5px; color: var(--text); }
.rt-switch .rt-sw-label small { display: block; color: var(--text-3); font-size: 11.5px; }

/* ==========================================================================
   应用骨架
   ========================================================================== */
.rt-app { display: flex; min-height: 100vh; }

/* 侧栏 */
.rt-side {
    width: 208px;
    flex: none;
    background: var(--side);
    border-right: 1px solid var(--shell-line);
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    height: 100vh;
}

.rt-side-brand {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 18px 18px 16px;
    border-bottom: 1px solid var(--divider);
}
.rt-side-brand img { width: 36px; height: 36px; object-fit: contain; border-radius: 10px; }
.rt-side-brand b { display: block; font-size: 14.5px; letter-spacing: .2px; }
.rt-side-brand span { display: block; font-size: 11px; color: var(--text-3); margin-top: 1px; }

.rt-nav { padding: 10px 10px 16px; overflow-y: auto; flex: 1; }
.rt-nav-group {
    font-size: 11px;
    color: var(--card-title);
    letter-spacing: .8px;
    padding: 14px 10px 6px;
    font-weight: 700;
}

.rt-nav a {
    display: flex;
    align-items: center;
    gap: 9px;
    height: 38px;
    padding: 0 11px;
    border-radius: 10px;
    color: var(--nav-text);
    font-size: 13.5px;
    font-weight: 600;
    margin-bottom: 2px;
    transition: background .14s, color .14s;
}
.rt-nav a:hover { background: var(--nav-hover); color: var(--nav-text-on); text-decoration: none; }
.rt-nav a.on { background: var(--nav-on); color: var(--nav-text-on); }
.rt-nav a.on .rt-ico { color: var(--accent); }
.rt-ico { width: 18px; text-align: center; font-size: 14px; flex: none; }
.rt-nav .rt-badge {
    margin-left: auto;
    background: var(--accent);
    color: #fff;
    font-size: 10.5px;
    padding: 1px 6px;
    border-radius: 999px;
    font-weight: 700;
}

.rt-side-foot {
    padding: 12px 16px 16px;
    border-top: 1px solid var(--divider);
    font-size: 11.5px;
    color: var(--text-3);
}

/* 主区 */
.rt-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }

.rt-top {
    height: 56px;
    flex: none;
    background: var(--top);
    border-bottom: 1px solid var(--shell-line);
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 0 22px;
    position: sticky;
    top: 0;
    z-index: 20;
    backdrop-filter: saturate(1.2) blur(6px);
}
.rt-top h1 { font-size: 15.5px; margin: 0; font-weight: 700; letter-spacing: .2px; }
.rt-top .rt-top-sub { font-size: 12px; color: var(--text-3); }
.rt-top-right { margin-left: auto; display: flex; align-items: center; gap: 10px; }

.rt-content { padding: 20px 22px 40px; max-width: 1360px; width: 100%; }

/* ==========================================================================
   卡片
   ========================================================================== */
.rt-card {
    background: var(--card);
    border: 1px solid var(--card-line);
    border-radius: var(--radius);
    margin-bottom: 16px;
    overflow: hidden;
}
.rt-card-h {
    padding: 13px 18px;
    border-bottom: 1px solid var(--row-line);
    display: flex;
    align-items: center;
    gap: 10px;
}
.rt-card-h h2 {
    margin: 0;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1.1px;
    color: var(--card-title);
    text-transform: uppercase;
}
.rt-card-h .rt-card-act { margin-left: auto; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rt-card-b { padding: 16px 18px; }
.rt-card-b.tight { padding: 0; }

.rt-grid { display: grid; gap: 14px; }
.rt-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rt-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.rt-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* 统计块 */
.rt-stat {
    background: var(--card);
    border: 1px solid var(--card-line);
    border-radius: var(--radius);
    padding: 16px 18px;
}
.rt-stat .k { font-size: 11.5px; color: var(--card-title); letter-spacing: .8px; font-weight: 700; }
.rt-stat .v { font-size: 26px; font-weight: 700; margin-top: 6px; letter-spacing: -.5px; }
.rt-stat .s { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.rt-stat.accent .v { color: var(--accent-text); }
.rt-stat.ok .v { color: var(--ok); }
.rt-stat.err .v { color: var(--err); }
.rt-stat.warn .v { color: var(--warn); }

/* ==========================================================================
   表格
   ========================================================================== */
.rt-table-wrap { overflow-x: auto; }
table.rt-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
table.rt-table th {
    text-align: left;
    font-size: 11.5px;
    letter-spacing: .6px;
    color: var(--card-title);
    font-weight: 700;
    padding: 11px 14px;
    border-bottom: 1px solid var(--row-line);
    white-space: nowrap;
    background: #FCFDFF;
}
table.rt-table td {
    padding: 11px 14px;
    border-bottom: 1px solid var(--row-line);
    vertical-align: middle;
}
table.rt-table tr:last-child td { border-bottom: none; }
table.rt-table tbody tr:hover { background: #FBFCFE; }
table.rt-table .mono { font-family: Consolas, "Courier New", monospace; font-size: 12.5px; }
table.rt-table .nowrap { white-space: nowrap; }
table.rt-table .actions { white-space: nowrap; text-align: right; }
table.rt-table .actions form { display: inline; }

/* 标签 */
.rt-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 9px;
    border-radius: 999px;
    font-size: 11.5px;
    font-weight: 700;
    background: #F1F4F9;
    color: var(--text-2);
    border: 1px solid transparent;
    white-space: nowrap;
}
.rt-pill.ok      { background: rgba(34, 178, 110, .1);  color: #17885A; }
.rt-pill.err     { background: rgba(226, 78, 78, .1);   color: #C63B3B; }
.rt-pill.warn    { background: rgba(226, 158, 32, .12); color: #B27A10; }
.rt-pill.info    { background: var(--accent-10);        color: var(--accent-text); }
.rt-pill.gray    { background: #F1F4F9;                 color: var(--text-3); }
.rt-pill.purple  { background: rgba(139, 92, 246, .12); color: #6D3FD4; }

.rt-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--text-off); }
.rt-dot.on { background: var(--ok); box-shadow: 0 0 0 3px rgba(34, 178, 110, .16); }
.rt-dot.off { background: var(--text-off); }

/* ==========================================================================
   提示条
   ========================================================================== */
.rt-alert {
    border-radius: 12px;
    padding: 12px 15px;
    margin-bottom: 14px;
    font-size: 13.5px;
    border: 1px solid var(--card-line);
    background: var(--input-bg);
    line-height: 1.7;
}
/* 只有开头的标题块独占一行；正文里夹的 <b> 保持行内，别把句子拆开 */
.rt-alert > b:first-child { display: block; margin-bottom: 2px; }
.rt-alert-ok   { background: rgba(34, 178, 110, .07);  border-color: rgba(34, 178, 110, .25); }
.rt-alert-ok b { color: #17885A; }
.rt-alert-err  { background: rgba(226, 78, 78, .07);   border-color: rgba(226, 78, 78, .25); }
.rt-alert-err b { color: #C63B3B; }
.rt-alert-warn { background: rgba(226, 158, 32, .08);  border-color: rgba(226, 158, 32, .26); }
.rt-alert-warn b { color: #B27A10; }
.rt-alert-info { background: var(--accent-10); border-color: var(--accent-24); }
.rt-alert-info b { color: var(--accent-text); }

.rt-muted { color: var(--text-2); }
.rt-small { font-size: 12.5px; }
.rt-tiny  { font-size: 11.5px; color: var(--text-3); }
.rt-empty { text-align: center; color: var(--text-3); padding: 34px 12px; font-size: 13.5px; }

/* ==========================================================================
   工具条 / 分页
   ========================================================================== */
.rt-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    align-items: center;
    margin-bottom: 14px;
}
.rt-toolbar .grow { flex: 1; min-width: 160px; }

.rt-pager { display: flex; gap: 6px; align-items: center; justify-content: flex-end; padding: 12px 16px; }
.rt-pager a, .rt-pager span {
    min-width: 32px;
    height: 32px;
    padding: 0 9px;
    border-radius: 8px;
    border: 1px solid var(--input-line);
    background: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 12.5px;
    color: var(--text-2);
    font-weight: 600;
}
.rt-pager a:hover { background: var(--input-hover); text-decoration: none; }
.rt-pager .on { background: var(--accent); border-color: var(--accent); color: #fff; }
.rt-pager .info { border: none; background: none; color: var(--text-3); }

/* ==========================================================================
   功能开关网格（对应主菜单「内存」页的三列开关）
   ========================================================================== */
.rt-feat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(196px, 1fr));
    gap: 8px;
}
.rt-feat {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 9px 12px;
    border: 1px solid var(--input-line);
    border-radius: 10px;
    background: var(--input-bg);
    cursor: pointer;
    transition: background .14s, border-color .14s;
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    user-select: none;
}
.rt-feat:hover { background: var(--input-hover); border-color: var(--accent-24); }
.rt-feat input { position: absolute; opacity: 0; width: 0; height: 0; }
.rt-feat .rt-feat-sw {
    width: 34px; height: 19px;
    border-radius: 999px;
    background: var(--sw-off);
    position: relative;
    flex: none;
    transition: background .18s;
}
.rt-feat .rt-feat-sw::after {
    content: "";
    position: absolute;
    top: 2.5px; left: 2.5px;
    width: 14px; height: 14px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 3px rgba(88, 98, 122, .35);
    transition: transform .18s;
}
.rt-feat input:checked + .rt-feat-sw { background: var(--accent); }
.rt-feat input:checked + .rt-feat-sw::after { transform: translateX(15px); }
.rt-feat input:checked ~ .rt-feat-txt { color: var(--accent-text); }
.rt-feat-code { font-size: 10.5px; color: var(--text-3); font-weight: 500; margin-left: auto; font-family: Consolas, monospace; }

/* ==========================================================================
   弹层（确认操作 / 单个玩家强制下线）
   ========================================================================== */
.rt-modal-mask {
    position: fixed; inset: 0;
    background: rgba(38, 42, 52, .28);
    backdrop-filter: blur(2px);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 100;
    padding: 20px;
}
.rt-modal-mask.show { display: flex; }
.rt-modal {
    width: 100%;
    max-width: 420px;
    background: var(--card);
    border: 1px solid var(--card-line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow);
    padding: 22px;
}
.rt-modal h3 { margin: 0 0 6px; font-size: 15.5px; }
.rt-modal p { margin: 0 0 16px; color: var(--text-2); font-size: 13.5px; }
.rt-modal .rt-modal-btns { display: flex; gap: 9px; justify-content: flex-end; }

/* 提示气泡 */
.rt-toast-box {
    position: fixed;
    top: 16px; right: 16px;
    z-index: 200;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.rt-toast {
    background: #fff;
    border: 1px solid var(--card-line);
    border-left: 3px solid var(--accent);
    border-radius: 10px;
    box-shadow: var(--shadow);
    padding: 11px 15px;
    font-size: 13.5px;
    min-width: 200px;
    animation: rt-in .2s ease-out;
}
.rt-toast.ok  { border-left-color: var(--ok); }
.rt-toast.err { border-left-color: var(--err); }
@keyframes rt-in { from { opacity: 0; transform: translateX(14px); } to { opacity: 1; transform: none; } }

/* 安装页 */
.rt-install-logo { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.rt-install-logo img { width: 44px; height: 44px; object-fit: contain; }
.rt-install-logo b { display: block; font-size: 16px; }
.rt-install-logo span { font-size: 12px; color: var(--text-3); }
ul.rt-steps { margin: 0 0 16px; padding-left: 20px; font-size: 13.5px; }
ul.rt-steps li { margin-bottom: 5px; }
table.rt-chk { width: 100%; border-collapse: collapse; font-size: 13px; margin-bottom: 16px; }
table.rt-chk td { padding: 6px 0; border-bottom: 1px dashed var(--row-line); }
table.rt-chk td:last-child { text-align: right; font-weight: 700; }
table.rt-chk .ok { color: var(--ok); }
table.rt-chk .no { color: var(--err); }
table.rt-chk .opt { color: var(--text-3); font-weight: 500; }

/* 空态图标 */
.rt-kv { display: flex; gap: 10px; font-size: 13.5px; padding: 5px 0; }
.rt-kv .k { color: var(--text-3); width: 92px; flex: none; }

/* 滚动条 */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #C6CDDA; border-radius: 8px; }
::-webkit-scrollbar-thumb:hover { background: #AAB4C6; }

/* ===========================================================================
   表单：label 直接作为字段容器（新页面用的写法）
   <label class="rt-field"><span>标题</span><input><small>说明</small></label>
   =========================================================================== */
label.rt-field { display: block; margin-bottom: 14px; }
label.rt-field > span {
    display: block; font-size: 12px; color: var(--text-2);
    margin-bottom: 6px; font-weight: 600;
}
label.rt-field > small { display: block; font-size: 11.5px; color: var(--text-3); margin-top: 5px; line-height: 1.6; }
label.rt-field > small b { color: var(--text-2); }

label.rt-field input[type="text"],
label.rt-field input[type="number"],
label.rt-field input[type="password"],
label.rt-field input[type="file"],
label.rt-field textarea,
label.rt-field select {
    width: 100%; height: 38px; padding: 0 12px;
    box-sizing: border-box;
    background: #F3F5F9;
    border: 1px solid var(--input-line);
    border-radius: 10px;
    color: var(--text);
    font-size: 13.5px;
    font-family: inherit;
    outline: none;
    transition: border-color .14s, background .14s, box-shadow .14s;
}
label.rt-field textarea { height: auto; min-height: 64px; padding: 10px 12px; resize: vertical; line-height: 1.6; }
label.rt-field input[type="file"] { height: auto; padding: 8px 12px; line-height: 1.8; cursor: pointer; }
label.rt-field input:hover, label.rt-field textarea:hover, label.rt-field select:hover { background: var(--input-hover); }
label.rt-field input:focus, label.rt-field textarea:focus, label.rt-field select:focus {
    background: #fff; border-color: var(--accent-24);
    box-shadow: 0 0 0 3px var(--accent-10);
}
label.rt-field input::placeholder, label.rt-field textarea::placeholder { color: var(--text-off); }

/* 卡片右上角 / 工具条里的内联表单别把按钮挤成块 */
.rt-card-act form, .rt-card-b > .rt-toolbar form, .rt-toolbar form { display: inline; margin: 0; }

/* ===========================================================================
   键值表：<table class="rt-kv"><tr><td>键</td><td>值</td></tr></table>
   =========================================================================== */
table.rt-kv { width: 100%; border-collapse: collapse; font-size: 13.5px; }
table.rt-kv td { padding: 8px 4px; border-bottom: 1px dashed var(--row-line); vertical-align: top; }
table.rt-kv tr:last-child td { border-bottom: none; }
table.rt-kv td:first-child { color: var(--text-3); width: 108px; flex: none; white-space: nowrap; }
table.rt-kv code {
    background: #F3F5F9; border: 1px solid var(--card-line);
    border-radius: 6px; padding: 1px 6px; font-size: 12.5px;
    font-family: Consolas, "Courier New", monospace;
}
.rt-card-b code, .rt-alert code, .rt-tiny code {
    background: #F3F5F9; border: 1px solid var(--card-line);
    border-radius: 6px; padding: 1px 6px; font-size: 12px;
    font-family: Consolas, "Courier New", monospace;
}
.rt-card-b pre {
    background: #F3F5F9; border: 1px solid var(--card-line); border-radius: 10px;
    padding: 12px; font-size: 12.5px; overflow-x: auto; margin: 0 0 12px;
}

/* ===========================================================================
   统计行：<div class="rt-stat-row"><div class="rt-stat">…</div></div>
   =========================================================================== */
.rt-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 12px; }
.rt-stat-num { display: block; font-size: 24px; font-weight: 700; letter-spacing: -.5px; }
.rt-stat-label { display: block; font-size: 12px; color: var(--text-3); margin-top: 3px; }

/* ===========================================================================
   维护工具列表
   =========================================================================== */
.rt-tool-list { display: flex; flex-direction: column; }
.rt-tool {
    display: flex; align-items: center; gap: 14px;
    padding: 13px 2px; border-bottom: 1px dashed var(--row-line); margin: 0;
}
.rt-tool:last-child { border-bottom: none; }
.rt-tool-txt { flex: 1; min-width: 0; }
.rt-tool-txt b { display: block; font-size: 13.5px; margin-bottom: 2px; }
.rt-tool-txt small { display: block; font-size: 11.5px; color: var(--text-3); line-height: 1.6; }
.rt-tool > button { flex: none; }

/* 有序步骤（和安装页的 ul.rt-steps 同一套视觉） */
ol.rt-steps { margin: 0; padding-left: 22px; font-size: 13.5px; line-height: 1.9; }
ol.rt-steps li { margin-bottom: 4px; }

/* 窄屏 */
@media (max-width: 900px) {
    .rt-app { flex-direction: column; }
    .rt-side {
        width: 100%; height: auto; position: static;
        flex-direction: row; overflow-x: auto; align-items: center;
    }
    .rt-side-brand { border-bottom: none; border-right: 1px solid var(--divider); padding: 12px 14px; }
    .rt-nav { display: flex; gap: 4px; padding: 8px; overflow-x: auto; }
    .rt-nav-group { display: none; }
    .rt-nav a { white-space: nowrap; }
    .rt-side-foot { display: none; }
    .rt-grid-2, .rt-grid-3, .rt-grid-4 { grid-template-columns: 1fr; }
    .rt-content { padding: 14px; }
}
