/* ==========================================================================
   IPA 在线签名平台 · 全站样式
   结构：变量 → 基础 → 顶栏 → 布局 → 表单 → 按钮 → 进度/结果 → 弹窗
        → 应用库 → 本地应用 → 后台 → 移动端适配
   ========================================================================== */

/* ---------- 变量 ---------- */
:root{
  --blue:#2f7bff;
  --blue-d:#1656d6;
  --ink:#1c2230;
  --muted:#7a8699;
  --line:#e6ebf3;
  --bg:#f5f7fb;
  --ok:#1a7f42;
  --warn:#8a6100;
  --danger:#d33;
  --radius:16px;
  --tap:44px;                       /* 最小触控尺寸 */
  --safe-l:env(safe-area-inset-left,0px);
  --safe-r:env(safe-area-inset-right,0px);
  --safe-b:env(safe-area-inset-bottom,0px);
}

/* ---------- 基础 ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:var(--bg);color:var(--ink);line-height:1.6;min-height:100vh;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;-webkit-tap-highlight-color:transparent;
}
img{max-width:100%}
a{color:var(--blue);text-decoration:none}
code{background:#eef1f7;padding:1px 5px;border-radius:5px;font-size:12.5px;color:#465064;word-break:break-all}
input,select,textarea,button{font-family:inherit;font-size:14px;color:inherit}
[hidden]{display:none!important}

/* ---------- 顶栏 ---------- */
.topbar{
  background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;
  padding-left:var(--safe-l);padding-right:var(--safe-r);
}
.topbar .inner{
  max-width:900px;margin:0 auto;padding:12px 20px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.brand{display:flex;align-items:center;gap:9px;font-weight:600;font-size:16px;min-width:0}
.brand-name,.brand>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.logo{
  width:30px;height:30px;border-radius:9px;flex:none;
  background:linear-gradient(135deg,#2f7bff,#1656d6);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:15px;
}
nav{display:flex;align-items:center;gap:16px;flex:none}
nav a{font-size:14px;color:#5b6880;white-space:nowrap;display:inline-flex;align-items:center}
nav a:hover,nav a.active{color:var(--blue);font-weight:600}

/* ---------- 布局 ---------- */
.container{
  max-width:900px;margin:0 auto;padding:26px 20px calc(56px + var(--safe-b));
  padding-left:calc(20px + var(--safe-l));padding-right:calc(20px + var(--safe-r));
}
.hero{text-align:center;padding:12px 0 22px}
.hero h1{font-size:28px;line-height:1.3;letter-spacing:-.4px;margin-bottom:10px}
.hero p{color:var(--muted);font-size:14.5px;max-width:640px;margin:0 auto}

.card{
  background:#fff;border-radius:18px;padding:20px 22px;margin-bottom:16px;
  box-shadow:0 2px 12px rgba(28,45,90,.06);border:1px solid #eef2f8;
}
.card-title{display:flex;align-items:center;gap:10px;font-weight:600;font-size:16px;margin-bottom:16px;flex-wrap:wrap}
.step{
  width:24px;height:24px;border-radius:50%;background:#e8f0ff;color:var(--blue);
  font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none;
}
.btn-mini{
  margin-left:auto;background:#f1f5ff;color:var(--blue);border:1px solid #d9e5ff;
  border-radius:9px;padding:8px 14px;font-size:13px;font-weight:500;cursor:pointer;
  min-height:36px;display:inline-flex;align-items:center;gap:4px;white-space:nowrap;
}
.btn-mini:hover{background:#e5eeff}
.badge-count{
  background:#eef2f8;color:#5b6880;border-radius:99px;padding:1px 9px;
  font-size:12.5px;font-weight:600;
}

/* ---------- 上传区 ---------- */
.dropzone{
  border:2px dashed #cfdaea;border-radius:14px;padding:36px 18px;text-align:center;
  background:#fafcff;cursor:pointer;transition:.18s;
}
.dropzone:hover,.dropzone.hover{border-color:var(--blue);background:#f4f8ff}
.dz-icon{font-size:34px;margin-bottom:8px}
.dz-main{font-size:15px;font-weight:500;color:#33415a}
.dz-sub{font-size:12.5px;color:var(--muted);margin-top:6px}
.file-chosen{
  display:flex;align-items:center;gap:10px;background:#f4f8ff;border:1px solid #dbe8ff;
  border-radius:12px;padding:12px 14px;font-size:14px;flex-wrap:wrap;
}
.file-name{font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-size{color:var(--muted);font-size:13px;white-space:nowrap}
button.link{background:none;border:0;color:var(--blue);font-size:13.5px;cursor:pointer;padding:6px 0;min-height:32px}

/* ---------- 表单 ---------- */
.select{
  width:100%;padding:13px 40px 13px 14px;border:1px solid #dbe3ef;border-radius:12px;
  font-size:14px;background:#fff;color:var(--ink);appearance:none;min-height:var(--tap);
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%237a8699' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;
}
.select:focus{outline:none;border-color:#9cc0ff;box-shadow:0 0 0 3px rgba(47,123,255,.12)}
.cert-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:10px;font-size:12.5px;color:var(--muted)}
.cert-meta b{color:#5b6880;font-weight:500}
.hint{font-size:12.5px;color:var(--muted);margin-top:8px;line-height:1.75;word-break:break-word}
.empty{background:#fffaf0;border:1px solid #ffe6bf;color:var(--warn);border-radius:12px;padding:12px 14px;font-size:13.5px}
.adv{margin-bottom:16px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fbfcfe}
.adv summary{cursor:pointer;font-size:14px;color:#46537a;font-weight:500;outline:none;min-height:32px;display:flex;align-items:center}
.adv-body{margin-top:14px;display:grid;gap:12px}
.adv label{display:block;font-size:13px;color:#5b6880}
.adv input{
  width:100%;margin-top:6px;padding:12px 13px;border:1px solid #dbe3ef;border-radius:10px;
  font-size:14px;background:#fff;min-height:var(--tap);
}
.adv input:focus,.modal input:focus,.field input:focus,.note-input:focus{
  outline:none;border-color:#9cc0ff;box-shadow:0 0 0 3px rgba(47,123,255,.12);background:#fff;
}
.adv select{
  width:100%;margin-top:6px;padding:12px 13px;border:1px solid #dbe3ef;border-radius:10px;
  font-size:14px;background:#fff;min-height:var(--tap);
}
.switch-line{
  display:flex;align-items:center;gap:10px;font-size:13.5px;color:#46537a;
  margin-bottom:14px;min-height:var(--tap);
}
.switch-line input{width:20px;height:20px;flex:none;accent-color:#2f7bff;margin:0}
.actions-inline{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.actions-inline .btn-ghost{flex:1 1 160px;margin-top:0}

/* ---------- 按钮 ---------- */
.btn-primary{
  display:block;width:100%;min-height:50px;padding:14px 16px;border:0;border-radius:13px;
  background:linear-gradient(135deg,#2f7bff,#1656d6);color:#fff;font-size:16px;font-weight:600;
  cursor:pointer;box-shadow:0 8px 20px rgba(31,105,255,.24);text-align:center;line-height:1.4;
}
.btn-primary:hover{filter:brightness(1.04)}
.btn-primary:active{transform:translateY(1px)}
.btn-primary:disabled{background:#c8d3e6;box-shadow:none;cursor:not-allowed}
.btn-ghost{
  display:block;width:100%;min-height:46px;padding:12px 16px;border:1px solid #dbe3ef;
  border-radius:13px;background:#fff;color:#3a4a66;font-size:14.5px;font-weight:500;
  cursor:pointer;text-align:center;margin-top:10px;line-height:1.4;
}
.btn-ghost:hover{border-color:#b9c9e6;background:#f9fbff}

.err{
  margin-top:12px;background:#fff2f2;border:1px solid #ffd4d4;color:var(--danger);
  border-radius:10px;padding:11px 13px;font-size:13.5px;line-height:1.6;
  white-space:pre-wrap;word-break:break-word;
}
.alert{border-radius:12px;padding:12px 14px;font-size:13.5px;margin-top:16px;text-align:left;line-height:1.75}
.alert-warn{background:#fff7e6;border:1px solid #ffe0a8;color:var(--warn)}

/* ---------- 进度与结果 ---------- */
.progress{height:9px;background:#eef2f8;border-radius:99px;overflow:hidden}
.progress-bar{height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,#4f93ff,#2f7bff);transition:width .35s ease}
.status-text{margin-top:12px;font-size:13.5px;color:#5b6880}
.result{margin-top:0}
.app-head{display:flex;align-items:center;gap:14px;margin:20px 0 18px;padding-top:18px;border-top:1px solid var(--line)}
.app-icon{width:64px;height:64px;border-radius:16px;object-fit:cover;background:#eef1f7;flex:0 0 auto}
.app-meta{min-width:0;flex:1}
.app-icon.placeholder{display:flex;align-items:center;justify-content:center;font-size:15px;color:#9aa7bd}
.app-name{font-size:17px;font-weight:600;word-break:break-word}
.app-sub{font-size:12.5px;color:var(--muted);margin-top:3px;word-break:break-all}
.actions{margin-bottom:6px}
.qr-wrap{text-align:center;margin:22px 0 6px}
#qrcode{display:inline-block;padding:12px;background:#fff;border:1px solid var(--line);border-radius:14px;max-width:100%}
#qrcode img,#qrcode canvas{display:block;max-width:100%;height:auto}
.qr-tip{font-size:12.5px;color:var(--muted);margin-top:9px}
.install-tip{
  background:#f6f9ff;border:1px solid #e2ecff;border-radius:12px;
  padding:13px 15px;font-size:13px;color:#4a5a76;line-height:1.85;margin-top:16px;
}
.foot{text-align:center;font-size:12.5px;color:#9aa5b8;margin-top:26px;line-height:1.8}

/* ---------- 弹窗 ---------- */
.modal{
  position:fixed;inset:0;background:rgba(18,28,45,.45);display:flex;
  align-items:center;justify-content:center;padding:18px;z-index:50;
  padding-left:calc(18px + var(--safe-l));padding-right:calc(18px + var(--safe-r));
}
.modal-box{
  background:#fff;border-radius:18px;padding:22px;width:100%;max-width:460px;
  max-height:88vh;overflow:auto;-webkit-overflow-scrolling:touch;
}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}
.modal-head h3{font-size:17px}
.close{
  background:none;border:0;font-size:26px;line-height:1;color:#98a3b6;cursor:pointer;
  width:var(--tap);height:var(--tap);display:inline-flex;align-items:center;justify-content:center;flex:none;
  border-radius:10px;
}
.close:hover{background:#f2f5fa;color:#5b6880}
.modal label{display:block;font-size:13.5px;color:#5b6880;margin-bottom:14px}
.modal input[type=file],.modal input[type=password],.modal input[type=text]{
  width:100%;margin-top:7px;padding:11px 12px;border:1px solid #dbe3ef;border-radius:10px;
  font-size:14px;background:#fbfcfe;min-height:var(--tap);
}

/* ---------- 应用库 ---------- */
.app-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:6px;flex-wrap:wrap}
.app-search{
  flex:1;min-width:200px;padding:12px 14px;border:1px solid #dbe3ef;border-radius:12px;
  font-size:14px;background:#fbfcfe;outline:none;min-height:var(--tap);
}
.app-search:focus{border-color:#9cc0ff;background:#fff;box-shadow:0 0 0 3px rgba(47,123,255,.12)}
.app-count{font-size:13px;color:#8b95a7;white-space:nowrap}
.app-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;margin-top:16px}
.app-card{
  display:flex;align-items:center;gap:14px;background:#fbfcfe;border:1px solid #e8eefb;
  border-radius:var(--radius);padding:14px 16px;color:inherit;transition:.15s;min-width:0;
}
.app-card:hover{background:#fff;border-color:#cfe0ff;box-shadow:0 10px 24px rgba(28,45,90,.10);transform:translateY(-1px)}
.app-info{display:flex;flex-direction:column;flex:1;min-width:0}
.app-icon-link{flex:0 0 auto;display:block;line-height:0;border-radius:14px}
.app-card .app-icon{width:56px;height:56px;border-radius:14px}
.app-info .app-name{color:inherit;display:block}
.app-card .app-name{font-size:15.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:normal}
.app-card .app-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:normal}
.app-get{
  flex:0 0 auto;background:#eef4ff;color:var(--blue);font-size:13px;font-weight:600;
  padding:9px 16px;border-radius:99px;min-height:36px;display:inline-flex;align-items:center;
}
.app-empty{text-align:center;padding:44px 10px;color:#8b95a7;font-size:14px;line-height:1.9}
.app-empty-icon{font-size:34px;margin-bottom:8px;opacity:.55}
.app-empty-sub{font-size:12.5px;color:#a3adbd}
.app-empty-sub a{color:var(--blue)}

/* ---------- 首页：本地应用 ---------- */
.local-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin-top:4px}
.local-app{background:#fff;align-items:flex-start;flex-wrap:wrap;row-gap:10px}
.local-app .app-info{flex:1 1 150px}
.local-app .app-name{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.local-app .app-sub{white-space:normal}
.app-acts{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin-left:auto;flex-wrap:wrap}
.app-acts form{margin:0}
.btn-sm{
  display:inline-flex;align-items:center;justify-content:center;gap:4px;
  min-height:38px;padding:8px 14px;border-radius:10px;border:1px solid #dbe3ef;
  background:#fff;color:#3a4a66;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;
}
.btn-sm:hover{border-color:#b9c9e6;background:#f7faff}
.btn-sm.primary{
  background:linear-gradient(135deg,#2f7bff,#1656d6);border-color:transparent;color:#fff;
  box-shadow:0 6px 14px rgba(31,105,255,.22);
}
.btn-sm.done{background:#e8f7ee;border-color:#c9ecd6;color:var(--ok)}

/* ---------- 后台 ---------- */
.tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.tab{
  padding:10px 16px;border-radius:10px;background:#fff;border:1px solid var(--line);
  font-size:14px;cursor:pointer;color:#5b6880;min-height:var(--tap);
}
.tab.active{background:linear-gradient(135deg,#2f7bff,#1656d6);color:#fff;border-color:transparent}
.panel{display:none}
.panel.active{display:block}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{padding:10px 8px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
th{color:#7a8699;font-weight:500;font-size:12.5px;white-space:nowrap}
tr:hover td{background:#fafcff}
.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;white-space:nowrap}
.b-ok{background:#e8f7ee;color:var(--ok)}
.b-run{background:#eaf2ff;color:var(--blue-d)}
.b-fail{background:#ffeded;color:var(--danger)}
.b-wait{background:#f2f4f8;color:#77839a}
.mini-lnk{
  font-size:12.5px;color:var(--blue);cursor:pointer;border:0;background:none;
  padding:8px 6px;margin-right:2px;min-height:36px;display:inline-flex;align-items:center;
  border-radius:8px;
}
.mini-lnk:hover{background:#f1f5ff}
.mini-del{color:#d33}
.mini-del:hover{background:#fff1f1}
.stats{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.stat{flex:1;min-width:132px;background:#f7f9fd;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.stat b{display:block;font-size:19px;margin-bottom:2px}
.stat span{font-size:12.5px;color:var(--muted)}
.app-cell{display:flex;align-items:center;gap:9px;min-width:0}
.app-cell img{width:32px;height:32px;border-radius:8px;object-fit:cover;background:#eef1f7;flex:none}
.small{font-size:12px;color:var(--muted);word-break:break-all}
.field{display:block;font-size:13.5px;color:#5b6880;margin-bottom:12px}
.field input{
  width:100%;margin-top:6px;padding:11px 12px;border:1px solid #dbe3ef;border-radius:10px;
  font-size:14px;min-height:var(--tap);
}
.note-edit{display:flex;align-items:center;gap:8px;min-width:0}
.note-input{
  width:100%;min-width:120px;padding:9px 11px;border:1px solid #dbe3ef;border-radius:9px;
  font-size:13px;background:#fbfcfe;min-height:38px;
}
.note-input::placeholder{color:#aab3c2}
.note-tag{
  background:#f1f5ff;border:1px solid #d9e5ff;color:#3a5c9a;font-size:12px;
  padding:2px 8px;border-radius:99px;margin-left:6px;white-space:nowrap;
}
.note-msg{font-size:12px;color:var(--ok);white-space:nowrap}
.note-msg.bad{color:var(--danger)}

/* 证书管理：卡片式列表（桌面/移动同一套结构） */
.cert-list{display:grid;gap:10px}
.cert-item{
  border:1px solid var(--line);border-radius:14px;background:#fbfcfe;
  padding:13px 14px;min-width:0;
}
.cert-item.is-expired{background:#fffafa;border-color:#f3dede}
.cert-head{display:flex;align-items:center;gap:8px 10px;justify-content:space-between;flex-wrap:wrap}
.cert-name{
  font-size:14.5px;font-weight:600;color:var(--ink);min-width:0;
  overflow-wrap:anywhere;
}
.cert-exp{
  font-size:12.5px;color:#5b6880;white-space:nowrap;flex:none;
  background:#f2f6fd;border-radius:99px;padding:3px 10px;
}
.cert-exp.exp-ok{background:#f2f6fd;color:#5b6880}
.cert-exp.exp-soon{background:#fff6e6;color:#b26a00}
.cert-exp.exp-bad{background:#ffeded;color:#d33}
.cert-exp.exp-none{background:#f2f4f8;color:#77839a}
.cert-note{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}
.cert-note .note-input{flex:1 1 200px;min-width:0}
.btn-note{
  flex:0 0 auto;border:1px solid #d9e5ff;background:#f1f5ff;color:var(--blue-d);
  font-size:13px;padding:9px 16px;border-radius:9px;cursor:pointer;min-height:38px;
}
.btn-note:hover{background:#e6efff}
.btn-note:disabled{opacity:.65;cursor:default}
.cert-acts{display:flex;justify-content:flex-end;margin-top:9px}

/* ==========================================================================
   移动端适配
   ========================================================================== */
@media (max-width:700px){
  /* 顶栏：品牌与导航可换行/横向滚动，触控更大 */
  .topbar .inner{padding:10px 14px;gap:10px;flex-wrap:wrap}
  .brand{font-size:15px}
  nav{gap:14px;overflow-x:auto;max-width:100%;scrollbar-width:none}
  nav::-webkit-scrollbar{display:none}
  nav a{font-size:13.5px;min-height:32px}

  .container{padding:18px 14px calc(44px + var(--safe-b))}
  .hero{padding:6px 0 16px}
  .hero h1{font-size:23px}
  .hero p{font-size:13.5px}

  .card{padding:16px 15px;border-radius:15px;margin-bottom:13px}
  .card-title{font-size:15px;margin-bottom:13px;gap:8px}
  .btn-mini{margin-left:0;width:100%;justify-content:center;min-height:42px}

  /* 表单：16px 字号避免 iOS 聚焦缩放 */
  input,select,textarea,.select,.adv input,.note-input,.app-search,
  .modal input[type=file],.modal input[type=password],.modal input[type=text],
  .field input{font-size:16px}
  .note-input{min-height:42px}
  .dropzone{padding:28px 14px}
  .dz-main{font-size:14px}
  .dz-sub{font-size:12px}

  .file-chosen{gap:8px}
  .file-name{flex:1 1 100%;white-space:normal;word-break:break-all}
  .file-size{flex:1 1 auto}

  .btn-primary{min-height:50px;font-size:16px}
  .btn-ghost{min-height:48px;font-size:15px}

  .app-head{gap:12px;margin:16px 0 14px;padding-top:14px}
  .app-icon{width:56px;height:56px;border-radius:14px}

  /* 弹窗改为底部抽屉，贴合拇指操作 */
  .modal{padding:0;align-items:flex-end}
  .modal-box{
    max-width:none;border-radius:20px 20px 0 0;max-height:92vh;padding:18px 16px;
    padding-bottom:calc(18px + var(--safe-b));
  }
  .modal-head h3{font-size:16px}
  .modal input[type=file]{font-size:13px}

  /* 应用库 / 本地应用：单列 */
  .app-grid,.local-grid{grid-template-columns:1fr;gap:10px}
  .app-search{min-width:0;flex:1 1 100%}
  .app-card{padding:12px 13px;gap:12px;flex-wrap:wrap;row-gap:10px}
  .app-card .app-icon{width:52px;height:52px;border-radius:13px}
  .app-get{padding:9px 14px}
  .app-card .app-acts{flex:1 1 100%;margin-left:0}
  .local-app .app-acts{flex:1 1 100%;margin-left:0;justify-content:stretch}
  .local-app .btn-sm{flex:1 1 auto;min-height:42px}
  .app-acts .btn-sm{flex:1 1 0;min-height:42px}

  /* 后台 */
  .stats{gap:9px}
  .stat{min-width:calc(50% - 5px);padding:11px 12px}
  .stat b{font-size:17px}
  .tab{flex:1 1 auto;justify-content:center;display:inline-flex;align-items:center;font-size:13.5px;padding:10px 12px}
  .field input{font-size:16px}

  /* 证书管理：卡片单列铺满，备注输入与按钮独占一行 */
  .cert-list{gap:9px}
  .cert-item{padding:12px 12px;border-radius:13px}
  .cert-head{gap:6px 8px}
  .cert-exp{font-size:12px;padding:3px 9px}
  .cert-name{font-size:14px}
  .cert-note{gap:8px;margin-top:9px}
  .cert-note .note-input{flex:1 1 100%;width:100%;min-height:44px;text-align:left}
  .cert-note .btn-note{width:100%;min-height:46px;font-size:15px;border-radius:10px}
  .cert-acts{margin-top:8px}
  .cert-acts .mini-lnk{
    width:100%;justify-content:center;min-height:44px;border:1px solid #f2dcdc;border-radius:10px;
  }

  /* 表格 → 卡片 */
  table.responsive{font-size:13.5px}
  table.responsive thead{display:none}
  table.responsive tbody,table.responsive tr,table.responsive td{display:block;width:100%}
  table.responsive tr{
    background:#fbfcfe;border:1px solid var(--line);border-radius:14px;
    padding:12px 13px;margin-bottom:10px;
  }
  table.responsive tr:hover td{background:transparent}
  table.responsive td{
    display:flex;align-items:center;gap:10px;border:0;padding:5px 0;
    text-align:right;
  }
  table.responsive td::before{
    content:attr(data-label);flex:0 0 78px;text-align:left;
    color:var(--muted);font-size:12.5px;
  }
  table.responsive td>[class],table.responsive td>span,table.responsive td>div,
  table.responsive td>a,table.responsive td>button{min-width:0}
  table.responsive td .cell{flex:1;min-width:0;text-align:right;word-break:break-word}
  table.responsive td .cell.actions-cell{
    display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap;
  }
  table.responsive td .cell.actions-cell .mini-lnk{margin:0}
  table.responsive td .cell .app-cell{justify-content:flex-end;text-align:right}
  table.responsive td .cell .app-cell>div{min-width:0}
  table.responsive td .note-edit{flex-wrap:wrap}
  table.responsive td .note-edit .note-input{flex:1 1 100%;text-align:left}
  table.responsive td .note-edit .mini-lnk{flex:0 0 auto;border:1px solid #dbe3ef;padding:8px 14px}
}

/* 超小屏 */
@media (max-width:380px){
  .hero h1{font-size:21px}
  .stat{min-width:100%}
  .local-app .btn-sm{font-size:12.5px;padding:8px 10px}
  nav a{font-size:13px}
}
