/* ===== assets/css/08-lic.css | 在线授权管理（EA 授权管理）===== */
/* 来源：原 index.html 内联样式 第 404-465 行；改样式只改这个文件 */
/* v1.36 版面重做：不满屏（收窄靠左）+ 列表列对齐 + 参数配置「左源码 / 右参数」 */

/* ---------------- 卡片与头部 ---------------- */
/* ★v1.42：卡片不再裁切内容 —— ⋯ 菜单要从行里「溢出」显示（原来下半截被裁掉）。圆角改到首子元素上，视觉不变。 */
.lm-card { padding:0; overflow:visible; max-width:1520px; }
.lm-head { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; padding:16px 20px;
           border-radius:12px 12px 0 0; border-bottom:1px solid rgba(224,176,84,.18); background:linear-gradient(180deg,#1a140b,#15110a); }
.lm-head-l { display:flex; flex-direction:column; gap:5px; min-width:0; }
.lm-head-r { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.lm-title { display:inline-flex; align-items:center; gap:8px; font-size:15px; font-weight:700; color:#f6ecd8; letter-spacing:.2px; }
.lm-subtitle { font-size:12px; color:#8a7a5e; letter-spacing:.2px; }
.lm-ico { width:24px; height:24px; border-radius:8px; display:grid; place-items:center; font-size:13px; color:#1a150c;
          background:linear-gradient(150deg,#f4d488,#d2a24a); box-shadow:0 2px 8px rgba(244,212,136,.22); }
.lm-newbtn { height:36px; padding:0 16px; font-size:13px; white-space:nowrap;
             box-shadow:0 4px 14px rgba(244,212,136,.18); }
.lm-tabs { display:flex; gap:4px; padding:3px; border-radius:11px; border:1px solid rgba(255,255,255,.07);
           background:rgba(0,0,0,.22); }
.lm-tab { padding:7px 14px; border-radius:8px; font-size:13px; color:#99886a; cursor:pointer; user-select:none;
          transition:background .16s, color .16s, box-shadow .16s; white-space:nowrap; }
.lm-tab:hover { color:#f6ecd8; background:rgba(255,255,255,.05); }
.lm-tab.on { color:#18130a; font-weight:700; background:linear-gradient(180deg,#f4d488,#e8bd62);
             box-shadow:0 2px 10px rgba(244,212,136,.2); }

/* ---------------- 工具条 / 输入 ---------------- */
.lm-toolbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:14px 18px 10px; }
.lm-lab { font-size:12.5px; color:#99886a; }
.lm-inp { height:34px; padding:0 11px; font-size:13px; font-family:inherit; color:#f6ecd8;
          background:#0e0b07; border:1px solid rgba(224,176,84,.18); border-radius:9px;
          transition:border-color .15s, box-shadow .15s; }
.lm-inp:hover { border-color:rgba(224,176,84,.24); }
.lm-inp:focus { outline:none; border-color:rgba(244,212,136,.45); box-shadow:0 0 0 3px rgba(244,212,136,.08); }
input.lm-inp::placeholder { color:#6a5c46; }
select.lm-inp { appearance:none; padding-right:26px; cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,#99886a 50%),linear-gradient(135deg,#99886a 50%,transparent 50%);
  background-position:calc(100% - 14px) 15px, calc(100% - 9px) 15px; background-size:5px 5px; background-repeat:no-repeat; }
.lm-search { position:relative; display:flex; align-items:center; flex:0 1 210px; }
.lm-search::before { content:"\1F50D"; position:absolute; left:10px; font-size:11px; opacity:.55; pointer-events:none; }
.lm-search .lm-inp { padding-left:29px; width:100%; }
.lm-tools-r { display:flex; gap:8px; margin-left:auto; }

/* ---------------- 统计卡 ---------------- */
.lm-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; padding:6px 18px 4px; }
.lm-stat { position:relative; display:flex; align-items:center; gap:11px; padding:12px 14px; cursor:pointer;
           border:1px solid rgba(255,255,255,.075); border-radius:12px; overflow:hidden; user-select:none;
           background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.015));
           transition:transform .16s, border-color .16s, box-shadow .16s; }
.lm-stat::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:rgba(224,176,84,.26); transition:background .16s; }
.lm-stat:hover { transform:translateY(-1px); border-color:rgba(244,212,136,.3); box-shadow:0 6px 18px rgba(0,0,0,.28); }
.lm-sic { width:32px; height:32px; flex:0 0 32px; border-radius:10px; display:grid; place-items:center; font-size:15px;
          background:rgba(255,255,255,.05); }
.lm-sbd { display:flex; flex-direction:column; line-height:1.15; min-width:0; }
.lm-sbd b { font-size:21px; color:#f6ecd8; font-variant-numeric:tabular-nums; }
.lm-sbd span { font-size:11.5px; color:#99886a; }
.lm-stat.on { border-color:rgba(244,212,136,.5); background:linear-gradient(180deg,rgba(244,212,136,.13),rgba(244,212,136,.04)); }
.lm-stat.on::before { background:linear-gradient(180deg,#f4d488,#d2a24a); }
.lm-stat.on .lm-sbd b { color:#f4d488; }
/* 统计卡配色：总数=金 / 在线=绿 / 临期=琥珀 / 到期=红 */
.lm-stat.t-total::before { background:linear-gradient(180deg,#d2a24a,#7d6329); }
.lm-stat.t-total .lm-sic { background:rgba(208,162,74,.16); color:#f4d488; }
.lm-stat.t-online::before { background:linear-gradient(180deg,#3fcf7d,#24945a); }
.lm-stat.t-online .lm-sic { background:rgba(63,207,125,.14); color:#6ddc9b; }
.lm-stat.t-soon::before { background:linear-gradient(180deg,#f6d68a,#d2a24a); }
.lm-stat.t-soon .lm-sic { background:rgba(246,214,138,.14); color:#f6d68a; }
.lm-stat.t-expired::before { background:linear-gradient(180deg,#e56a52,#b64c37); }
.lm-stat.t-expired .lm-sic { background:rgba(229,106,82,.14); color:#ff9d86; }
.lm-stat.t-online .lm-sbd b { color:#6ddc9b; }
.lm-stat.t-soon .lm-sbd b { color:#f6d68a; }
.lm-stat.t-expired .lm-sbd b { color:#ff9d86; }

/* ---------------- 产品分组 ---------------- */
.lm-group { margin:12px 18px 0; border:1px solid rgba(255,255,255,.075); border-radius:12px; overflow:visible;
            background:rgba(255,255,255,.012); box-shadow:0 2px 10px rgba(0,0,0,.16); }
/* ★v1.42：分组不再裁切（同上，给 ⋯ 菜单让路）→ 圆角显式补在首/尾子元素上 */
.lm-group > .lm-ghd:first-child { border-radius:11px 11px 0 0; }
.lm-group > .lm-ghd:only-child { border-radius:11px; }
.lm-group > :last-child { border-radius:0 0 11px 11px; }
.lm-ghd { display:flex; align-items:center; gap:9px; flex-wrap:wrap; padding:11px 14px; cursor:pointer;
          background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02)); }
.lm-ghd:hover .lm-pname { color:#f4d488; }
.lm-fold { width:19px; height:19px; flex:0 0 19px; border-radius:6px; display:grid; place-items:center; font-size:9px;
           color:#99886a; background:rgba(255,255,255,.06); }
.lm-pname { font-size:13.5px; font-weight:600; color:#f6ecd8; transition:color .16s; }
.lm-cnt { font-size:12px; color:#8a7a5e; }
.lm-ghd .lm-cnt { margin-left:auto; }
.lm-ghd .lm-cnt + .lm-cnt { margin-left:12px; }
.prod-sn { font-size:11.5px; color:#8a7a5e; font-family:ui-monospace,Consolas,monospace; }

/* ---------------- 列表：列对齐（宽屏用表头，窄屏用行内标签） ---------------- */
.lm-rhead, .lm-row { display:grid; gap:12px; align-items:center;
  grid-template-columns:minmax(210px,1.45fr) minmax(140px,1fr) minmax(150px,1.1fr) minmax(130px,.95fr) minmax(140px,1.05fr) auto; }
.lm-rhead { padding:8px 14px 4px; border-top:1px solid rgba(255,255,255,.06); background:rgba(0,0,0,.14);
            font-size:11.5px; color:#6f6249; letter-spacing:.3px; }
.lm-row { padding:11px 14px; border-top:1px solid rgba(255,255,255,.06); transition:background .15s; }
.lm-row:hover { background:rgba(244,212,136,.035); }
/* ★v2.16：刚生成的授权码那一行闪一下（生成后跳到列表，一眼看到新码） */
.lm-row.lm-flash { background:rgba(244,212,136,.14); box-shadow:inset 0 0 0 1px rgba(244,212,136,.45); }
.lm-rhead span:last-child, .lm-c-ops { text-align:right; }
.lm-c-key { display:flex; align-items:center; gap:8px; flex-wrap:wrap; min-width:0; }
.lm-c-key .lm-key, .lm-c-acct .lm-key { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lm-c-acct .lm-key { min-width:0; }
.lm-c-bind, .lm-c-exp, .lm-c-rem, .lm-c-acct, .lm-c-mach, .lm-c-seen, .lm-c-ctime { min-width:0; }
.lm-c-bind { display:grid; grid-template-columns:auto auto auto auto; gap:4px 5px; align-items:center; justify-content:start; }
.lm-c-bind .lm-bar { grid-column:1 / -1; }
.lm-c-exp, .lm-c-rem, .lm-c-mach, .lm-c-seen, .lm-c-ctime { font-size:12.5px; color:#d2c4a8; }
.lm-c-ops { display:flex; gap:6px; align-items:center; justify-content:flex-end; }
.lm-cl { display:none; font-style:normal; font-size:11px; color:#6f6249; margin-right:5px; }
.lm-sla { font-style:normal; color:#99886a; }
.lm-bar { display:block; height:4px; border-radius:3px; background:rgba(255,255,255,.07); overflow:hidden; min-width:58px; }
.lm-bar i { display:block; height:100%; border-radius:3px; background:linear-gradient(90deg,#d2a24a,#f4d488); }
.lm-bar.full i { background:linear-gradient(90deg,#2e9e5b,#54c885); }

/* ---------------- 徽标 / 状态点 / 行内编辑 ---------------- */
.lm-key { font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:12.5px; color:#f4d488;
          letter-spacing:.4px; background:rgba(244,212,136,.07); border:1px solid rgba(244,212,136,.16);
          border-radius:7px; padding:2px 7px; }
.lm-tag { font-size:11px; padding:2px 7px; border-radius:20px; border:1px solid rgba(224,176,84,.26); color:#a1917a; white-space:nowrap; }
.lm-tag.ok { color:#6ddc9b; border-color:rgba(46,158,91,.45); background:rgba(46,158,91,.12); }
/* ★v2.31：管理员列表里标出「这个产品是谁上传的」 */
.lm-tag.owner { color:#9fc7ff; border-color:rgba(90,140,220,.45); background:rgba(90,140,220,.12); }
.lm-tag.warn { color:#f6d68a; border-color:rgba(208,162,74,.5); background:rgba(208,162,74,.14); }
.lm-tag.err { color:#ff9d86; border-color:rgba(201,85,63,.5); background:rgba(201,85,63,.13); }
.lm-tag.grey { color:#99886a; border-color:rgba(224,176,84,.26); background:rgba(255,255,255,.03); }
.lm-tag.para { color:#9fc7ff; border-color:rgba(88,140,220,.45); background:rgba(88,140,220,.12); }
/* v1.85：24 小时内新建的授权码标记（刚加密/导入生成的码排在最上面并打这个标） */
.lm-tag.fresh { color:#7ee0d0; border-color:rgba(64,190,170,.5); background:rgba(64,190,170,.14); }
.rp-v.rp-const { color:#f6d68a; border-color:rgba(208,162,74,.45); }   /* 枚举/常量名：原样下发，EA 保持源码初值 */
.lm-dot { width:7px; height:7px; border-radius:50%; flex:0 0 7px; display:inline-block; }
.lm-dot.on { background:#3fcf7d; box-shadow:0 0 0 3px rgba(63,207,125,.16); }
.lm-dot.off { background:rgba(224,176,84,.28); }
.lm-f { display:inline-flex; gap:6px; align-items:center; }
.lm-f em { font-style:normal; color:#99886a; }
.lm-f b { color:#f6ecd8; font-weight:600; }
.lm-f-edit { border-bottom:1px dashed rgba(224,176,84,.28); cursor:pointer; color:#d2c4a8; transition:color .15s, border-color .15s; }
.lm-f-edit:hover { color:#f4d488; border-color:rgba(244,212,136,.6); }
/* 到期剩余天数小徽章 */
.lm-expnote { display:inline-block; margin-left:7px; padding:1px 7px; border-radius:20px; font-size:10.5px;
              border:1px solid rgba(224,176,84,.26); color:#a1917a; white-space:nowrap; vertical-align:middle; }
.lm-expnote.ok { color:#6ddc9b; border-color:rgba(46,158,91,.4); background:rgba(46,158,91,.1); }
.lm-expnote.mid { color:#d2c4a8; border-color:rgba(224,176,84,.26); background:rgba(255,255,255,.03); }
.lm-expnote.soon { color:#f6d68a; border-color:rgba(208,162,74,.5); background:rgba(208,162,74,.13); }
.lm-expnote.over { color:#ff9d86; border-color:rgba(201,85,63,.5); background:rgba(201,85,63,.13); }
.lm-expnote.perm { color:#9fc7ff; border-color:rgba(88,140,220,.45); background:rgba(88,140,220,.12); }
.lm-mini { height:26px; padding:0 7px; font-size:12.5px; color:#f6ecd8; background:#0e0b07;
           border:1px solid rgba(224,176,84,.24); border-radius:7px; font-family:inherit; }
.lm-mini:focus { outline:none; border-color:rgba(244,212,136,.5); }
.lm-ok, .lm-no { background:none; border:0; cursor:pointer; font-size:13px; padding:0 2px; }
.lm-ok { color:#3fcf7d; } .lm-no { color:#c9553f; }

/* ---------------- 操作菜单 ---------------- */
.lm-ops { position:relative; display:inline-block; }
.lm-ops summary { list-style:none; cursor:pointer; width:30px; height:30px; border-radius:8px; display:grid;
                  place-items:center; font-size:15px; color:#a1917a; border:1px solid rgba(224,176,84,.18); background:rgba(255,255,255,.03);
                  transition:background .15s, color .15s, border-color .15s; }
.lm-ops summary::-webkit-details-marker { display:none; }
.lm-ops summary:hover { color:#f4d488; border-color:rgba(244,212,136,.4); }
.lm-ops[open] summary { color:#f4d488; border-color:rgba(244,212,136,.5); }
.lm-menu, .lm-opsm { position:absolute; right:0; top:calc(100% + 6px); z-index:40; min-width:190px; padding:6px;
  background:#1a140b; border:1px solid rgba(224,176,84,.26); border-radius:11px; box-shadow:0 14px 34px rgba(0,0,0,.5); }
.lm-menu div, .lm-opsm a { padding:8px 10px; border-radius:8px; font-size:12.5px; color:#ede3cf; cursor:pointer; white-space:nowrap; }
.lm-menu div:hover, .lm-opsm a:hover { background:rgba(255,255,255,.06); color:#f4d488; }
.lm-menu .danger, .lm-opsm .danger { color:#ff9d86; }
.lm-menu .danger:hover, .lm-opsm .danger:hover { background:rgba(201,85,63,.14); color:#ffb6a3; }

/* ---------------- 提示 / 空状态 / 备注 ---------------- */
.lm-note { margin:0 18px 12px; padding:9px 12px; font-size:12.5px; line-height:1.6; color:#99886a;
           border:1px solid rgba(244,212,136,.16); border-radius:10px; background:rgba(244,212,136,.05); }
.lm-note b { color:#f4d488; font-weight:600; }
.lm-empty { margin:12px 18px; padding:30px 18px; text-align:center; font-size:13px; line-height:1.7; color:#6f6249;
            border:1px dashed rgba(224,176,84,.26); border-radius:12px; background:rgba(255,255,255,.012); }
.lm-x { margin-left:auto; cursor:pointer; font-size:16px; color:#99886a;
        transition:color .15s; }   /* v1.41：关闭 × 靠到弹窗右上角 */
.lm-x:hover { color:#f6ecd8; }
.lm-ta { width:100%; min-height:260px; padding:12px; font-size:12.5px; line-height:1.6; color:#f6ecd8;
         background:#0e0b07; border:1px solid rgba(224,176,84,.18); border-radius:10px;
         font-family:ui-monospace,SFMono-Regular,Consolas,monospace; resize:vertical; }
.lm-ta:focus { outline:none; border-color:rgba(244,212,136,.45); }

/* ---------------- 在线授权：整页左右各一半（左源码 / 右授权码） ---------------- */
/* ★v1.48 用户口径：「整平显示，靠右显示授权，靠左显示源码」——左右各占 1/2、两栏等高 */
.lm-split { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:14px;
            align-items:stretch; padding:0 18px 18px; }
.lm-srcside { min-width:0; display:flex; flex-direction:column; }
.lm-panes { min-width:0; display:flex; flex-direction:column; }
.lm-cfgwrap { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:14px;
              align-items:stretch; padding:0 18px 18px; }
.lm-cfgmain { min-width:0; display:flex; flex-direction:column; gap:12px; }
.lm-cfgside { min-width:0; display:flex; flex-direction:column; gap:10px; }
.lm-sub { font-size:12.5px; font-weight:600; color:#d2c4a8; letter-spacing:.3px; }
.lm-kv { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 11px;
         font-size:12.5px; border:1px solid rgba(224,176,84,.18); border-radius:9px; background:rgba(255,255,255,.02); }
.lm-kv span { color:#8a7a5e; }
.lm-kv b { color:#f6ecd8; font-weight:600; text-align:right; }
.lm-kv4 { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.lm-fz { display:flex; align-items:center; gap:8px; font-size:12.5px; color:#d2c4a8; cursor:pointer; }
.lm-fzhint { font-size:11.5px; line-height:1.6; color:#6f6249; }
.lm-acts { display:flex; gap:8px; flex-wrap:wrap; }

/* 源码卡（左栏） */
.lm-src { display:flex; flex-direction:column; min-width:0; border:1px solid rgba(224,176,84,.18); border-radius:12px;
          overflow:hidden; background:#141009; box-shadow:0 2px 10px rgba(0,0,0,.16); }
.lm-src-hd { display:flex; align-items:center; gap:9px; padding:10px 12px; border-bottom:1px solid rgba(224,176,84,.18);
             background:linear-gradient(180deg,rgba(255,255,255,.05),transparent); }
.lm-src-ic { width:26px; height:26px; flex:0 0 26px; border-radius:8px; display:grid; place-items:center; font-size:13px;
             background:rgba(244,212,136,.12); color:#f4d488; }
.lm-src-tt { display:flex; flex-direction:column; gap:2px; min-width:0; }
.lm-src-tt b { font-size:13px; color:#f6ecd8; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lm-src-sub { font-size:11.5px; color:#6f6249; }
.lm-src-hd .lm-tag { margin-left:auto; }
.lm-src-code { flex:1 1 0; min-height:420px; overflow:auto; background:#0e0b07; }
.lm-src-code::-webkit-scrollbar { width:10px; height:10px; }
.lm-src-code::-webkit-scrollbar-thumb { background:rgba(224,176,84,.20); border-radius:6px; }
.lm-src-code .lm-empty { margin:0; border:0; background:none; }
.lm-src-pre { display:flex; align-items:flex-start; font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
              font-size:12px; line-height:1.6; }
.lm-src-ln { flex:0 0 46px; padding:10px 8px 14px 0; text-align:right; color:#5f5340; white-space:pre;
             border-right:1px solid #1a140b; background:rgba(0,0,0,.18); user-select:none; }
.lm-src-tx { margin:0; padding:10px 14px 14px; color:#d8cbae; white-space:pre; }
/* ★v2.55：左侧源码「直接改 → 重新注入」的编辑区 */
.lm-src-edit { display:flex; flex-direction:column; height:100%; min-height:420px; }
.lm-src-editbd { padding:9px 12px; font-size:11.5px; line-height:1.65; color:#d6c8ab;
                 background:rgba(244,212,136,.06); border-bottom:1px solid rgba(224,176,84,.18); }
.lm-src-editbd b { color:#f4d488; }
.lm-src-edit textarea { flex:1 1 auto; width:100%; min-height:300px; resize:none; box-sizing:border-box;
                        background:#0c0906; border:0; border-bottom:1px solid rgba(224,176,84,.18); outline:none;
                        color:#d8cbae; padding:10px 14px; white-space:pre; overflow:auto;
                        font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:12px; line-height:1.6; }
/* ★v2.62：这一行现在在**编辑框上面**（按钮 + 提示），所以改成下边框分隔 */
.lm-src-editft { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:9px 12px;
                 background:rgba(255,255,255,.03); border-bottom:1px solid rgba(224,176,84,.18); }
.lm-src-editft .muted { font-size:11.5px; }
.lm-src-hd .btn { margin-left:auto; }   /* 「修改源码」按钮推到最右（原来 lm-tag 占着 auto） */
.lm-src-hd .lm-tag + .btn { margin-left:8px; }
.tk-c { color:#6f7f5a; } .tk-s { color:#d4ab68; } .tk-z { color:#f4d488; } .tk-n { color:#8fb3c7; }
.lm-src-ft { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:10px 12px; border-bottom:1px solid rgba(224,176,84,.18);
             background:rgba(255,255,255,.02); }
.lm-src-hint { flex:1 1 100%; font-size:11.5px; line-height:1.6; color:#6f6249; }
.lm-src-hint b { color:#f4d488; }
/* ★v1.40：源码交付两行（源码 / 授权版源码） */
.lm-dl-row { display:flex; align-items:center; gap:8px; width:100%; }
.lm-dl-row + .lm-dl-row { margin-top:2px; }
.lm-dl-lb { flex:0 0 68px; font-size:11.5px; color:#a5967f; }
.lm-dl-note { font-size:11px; color:#99886a; }

/* ---------------- 参数表（rp-*） ---------------- */
.rp-list, .rp-wrap { display:flex; flex-direction:column; gap:4px; }
.rp-wrap { margin:14px 18px 0; }
.rp-head, .rp-row { display:grid; gap:10px; align-items:center; padding:8px 11px;
  /* ★v2.54：多了一列「输入面板」（显示/隐藏 下拉），7 列 */
  grid-template-columns:minmax(110px,1.2fr) minmax(70px,.7fr) 86px 46px minmax(116px,1.15fr) minmax(84px,.95fr) 104px; }
.rp-head { font-size:11.5px; color:#6f6249; border-bottom:1px solid rgba(224,176,84,.18); letter-spacing:.3px; }
.rp-row { font-size:12.5px; color:#d2c4a8; border:1px solid #1b150c; border-radius:9px; background:rgba(255,255,255,.015);
          transition:border-color .15s, background .15s; }
.rp-row:hover { border-color:rgba(224,176,84,.26); background:rgba(255,255,255,.03); }
.rp-row.on { border-color:rgba(244,212,136,.28); background:rgba(244,212,136,.05); }
.rp-k { font-family:ui-monospace,Consolas,monospace; color:#f4d488; overflow:hidden; text-overflow:ellipsis; }
.rp-t { color:#8a7a5e; }
.rp-i { color:#6f6249; overflow:hidden; text-overflow:ellipsis; }
.rp-v { width:100%; }
.rp-vis { width:100%; padding:2px 4px; }
.rp-tools { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:10px 0 0; }
.rp-hint { font-size:11.5px; color:#6f6249; }
.rp-badge { font-size:11px; padding:1px 7px; border-radius:20px; border:1px solid rgba(224,176,84,.26); color:#a1917a; white-space:nowrap; }
.rp-badge.hid { color:#f4d488; border-color:rgba(244,212,136,.45); background:rgba(244,212,136,.1); }
.rp-badge.warn { color:#f6d68a; border-color:rgba(208,162,74,.5); background:rgba(208,162,74,.14); }
.rp-adv { font-size:12px; color:#99886a; }
.rp-t { white-space:nowrap; }

/* ---------------- 绑定详情 ---------------- */
.lm-bhead, .lm-brow { display:grid; gap:12px; align-items:center;
  grid-template-columns:minmax(170px,1.15fr) minmax(130px,1fr) minmax(120px,1fr) minmax(120px,.95fr) auto; }
.lm-bhead { padding:8px 14px 4px; font-size:11.5px; color:#6f6249; background:rgba(0,0,0,.14);
            border-top:1px solid rgba(255,255,255,.06); letter-spacing:.3px; }
.lm-brow { padding:11px 14px; border-top:1px solid rgba(255,255,255,.06); font-size:12.5px; transition:background .15s; }
.lm-brow:hover { background:rgba(244,212,136,.035); }
.lm-bhead span:last-child { text-align:right; }
.lm-brow b { color:#f6ecd8; font-weight:600; }
.lm-c-acct { display:flex; align-items:center; gap:8px; flex-wrap:wrap; min-width:0; }

/* ---------------- 弹窗/面板（保留） ---------------- */
.lm-newpanel { margin:0 0 12px; padding:14px; border:1px solid rgba(224,176,84,.18); border-radius:12px; background:rgba(255,255,255,.02); }
.lm-newhd { display:flex; align-items:center; gap:10px; margin-bottom:10px; font-size:13px; color:#f6ecd8; }


/* ---------------- ★v1.44：面板由 1/3 放宽到 1/2 并居中，卡内重排 ----------------
   用户口径：「点授权管理　左右在放大一点，显示的宽度增加一些，美观排版」+
             「备注写在 黄色方框那里」（黄框 = 第一行右侧空地，「有效」右 / ⋯ 左 / 「到期」上） */
/* ★v2.76：#licBody 这一层是为「页面级闸门」加的外壳（没开通时整页换成开通卡片），
   原来的 `>` 直接子选择器就选不中卡片了 —— 补上 `#licBody >` 这一支，样式与以前完全一致。 */
#tab-lic > .lm-card, #tab-lic > #licBody > .lm-card { width:100%; max-width:none; margin:0 auto; }
/* ★v1.48：整页铺满后，右半栏 ≈ 原来半屏宽，工具条/分组沿用原排版（搜索独占一行） */
#tab-lic .lm-search { flex:1 1 100%; }
/* 统计卡一行四张 */
#tab-lic .lm-stats { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
#tab-lic .lm-toolbar { padding:12px 14px 8px; }
#tab-lic .lm-rhead, #tab-lic .lm-bhead { display:none; }
#tab-lic .lm-group { margin:10px 12px 0; }
#tab-lic .lm-group:last-child { margin-bottom:12px; }
/* ★v1.48：左半栏源码卡撑满栏高；右半栏「参数配置」自带内缩（选择器 + 读取/下发 在栏顶） */
#tab-lic .lm-srcside .lm-src { flex:1 1 auto; }
#tab-lic #lmPane-config { padding:0 18px 18px; }
#tab-lic #lmPane-config .lm-toolbar { padding:0 0 2px; }
#tab-lic #lmPane-config .lm-note { margin:0; }
#tab-lic .lm-ghd { padding:10px 12px; }
/* 通用安装包：分组标题上的「下载安装包」入口 */
#tab-lic .lm-dl { display:inline-block; margin-left:10px; font-size:12px; line-height:1.1;
  color:#f4d488; text-decoration:none; border:1px solid rgba(244,212,136,.35);
  border-radius:6px; padding:2px 8px; white-space:nowrap; }
#tab-lic .lm-dl:hover { background:rgba(244,212,136,.12); }
/* 分组标题右侧的「删除产品」小叉 */
#tab-lic .lm-delp { margin-left:8px; background:transparent; border:1px solid rgba(255,120,120,.35);
  color:#ff9a9a; border-radius:6px; padding:0 7px; line-height:18px; font-size:12px; cursor:pointer; }
#tab-lic .lm-delp:hover { background:rgba(255,120,120,.15); }
/* ★v1.44：一行授权由三行收成两行 —— 第一行 ①授权码(+徽标) ｜ 备注（右对齐，落在第一行右侧空地） ｜ ⋯
   （备注原来单独占第三行；行高 109 → 现在再矮一行） */
#tab-lic .lm-row {
  /* v1.75：显式排两行 —— 第一行「授权码 …… 备注 ⋯（右对齐）」，
     第二行「绑定账号 / 到期 / 机器码（全部靠右收口）」，不再靠自动落位。 */
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  grid-template-areas:
    "key  rem  ops"
    "bind exp  mach";
  gap:9px 16px; padding:11px 13px; align-items:center;
}
#tab-lic .lm-c-key  { grid-area:key; }
#tab-lic .lm-c-rem  { grid-area:rem; justify-self:end; max-width:100%; text-align:right; }
#tab-lic .lm-c-ops  { grid-area:ops; align-self:start; justify-self:end; }
#tab-lic .lm-c-bind { grid-area:bind; }
#tab-lic .lm-c-exp  { grid-area:exp; justify-self:end; text-align:right; }
#tab-lic .lm-c-mach { grid-area:mach; justify-self:end; text-align:right; }
/* 绑定账号：标签 / 数字 / 进度条 一行排完，进度条吃满剩余宽度 */
#tab-lic .lm-c-bind { display:flex; align-items:center; gap:6px; flex-wrap:nowrap; }
#tab-lic .lm-c-bind .lm-bar { flex:0 0 110px; min-width:40px; max-width:110px; }
/* 到期 / 备注：标签与值同排，超长走省略号（完整内容在 title 里），不再逐字换行 */
#tab-lic .lm-c-exp, #tab-lic .lm-c-rem { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* 绑定详情行（.lm-brow）：账号 + ⋯ ／ 机器 + 最近在线 ／ 申请时间 */
#tab-lic .lm-brow {
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:"acct ops" "mach seen" "ctime ctime";
  gap:9px 14px; padding:11px 13px;
}
#tab-lic .lm-c-acct { grid-area:acct; }
#tab-lic .lm-c-mach  { grid-area:mach; }
#tab-lic .lm-c-seen  { grid-area:seen; }
#tab-lic .lm-c-ctime { grid-area:ctime; }
#tab-lic .lm-brow .lm-c-ops { grid-area:ops; align-self:start; }
#tab-lic .lm-cl { display:inline; }
/* 面板宽了：参数配置的双栏（左表单 / 右源码）与四宫格在 1/2 宽度下放得下，恢复原布局 */
/* 窗口再窄（面板占满一行）时交给原窄屏规则 */
@media (max-width:1100px){ #tab-lic > .lm-card, #tab-lic > #licBody > .lm-card { width:100%; } }

/* ---------------- 窄屏 ---------------- */
@media (max-width:1500px){
  .lm-card { max-width:none; }
}
@media (max-width:1240px){
  .lm-cfgwrap { grid-template-columns:minmax(0,1fr); }
  .lm-kv4 { grid-template-columns:minmax(0,1fr); }
  .lm-rhead, .lm-bhead { display:none; }
  .lm-row, .lm-brow { grid-template-columns:minmax(0,1fr) auto; gap:8px 12px; }
  .lm-c-key, .lm-c-acct { grid-column:1 / -1; }
  .lm-c-bind, .lm-c-exp, .lm-c-rem, .lm-c-mach, .lm-c-seen, .lm-c-ctime { grid-column:1 / -1; display:block; }
  .lm-c-ops { grid-column:2; grid-row:1; }
  /* 窄屏也保持「备注靠右」：显式给回每个格子，别让自动落位把备注丢到中间 */
  #tab-lic .lm-row {
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:
      "key  ops"
      "rem  rem"
      "bind bind"
      "exp  exp"
      "mach mach";
  }
  #tab-lic .lm-c-key  { grid-area:key; }
  #tab-lic .lm-c-ops  { grid-area:ops; }
  #tab-lic .lm-c-rem  { grid-area:rem; justify-self:end; text-align:right; }
  #tab-lic .lm-c-bind { grid-area:bind; justify-self:start; }
  #tab-lic .lm-c-exp  { grid-area:exp; justify-self:end; text-align:right; }
  #tab-lic .lm-c-mach { grid-area:mach; justify-self:end; text-align:right; }
  .lm-cl { display:inline; }
  .rp-head { display:none; }
  .rp-row { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
}
@media (max-width:820px){
  .lm-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .lm-src-ln { display:none; }
}

/* ---------------- ★v1.42：⋯ 菜单朝上开（下面放不下时，避免被视口/卡片边缘裁掉） ---------------- */
.lm-menu.up, .lm-opsm.up { top:auto; bottom:calc(100% + 6px); }
