﻿/* ===== 第二十二批次：APP定制/试用注册/授权码管理/移动端适配 公共样式 ===== */
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:#1e293b;background:#f1f5f9}
a{color:#2563eb;text-decoration:none}
/* 品牌渐变主色 */
.auth-page,.dl-page{min-height:100vh;background:linear-gradient(160deg,#0f172a 0%,#1e3a8a 45%,#7c3aed 130%)}
.auth-shell{max-width:460px;margin:0 auto;padding:32px 16px 24px}
.auth-shell.narrow{max-width:520px}
.auth-brand{text-align:center;color:#fff;padding:8px 0 22px}
.auth-logo{width:76px;height:76px;border-radius:18px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.auth-brand h1{font-size:22px;margin:10px 0 4px;letter-spacing:1px}
.auth-brand p{font-size:13px;opacity:.82}
.auth-card{background:#fff;border-radius:18px;padding:26px 24px;box-shadow:0 18px 50px rgba(0,0,0,.25)}
.auth-card h2{font-size:19px;margin-bottom:6px}
.auth-sub{color:#64748b;font-size:13px;margin-bottom:14px}
.tag-trial{display:inline-block;background:#fef3c7;color:#92400e;font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;vertical-align:middle}
.trial-rule{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.7;margin-bottom:16px}
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:#334155}
.field .opt{color:#94a3b8;font-weight:400}
.field input,.field select{width:100%;height:44px;border:1px solid #cbd5e1;border-radius:10px;padding:0 12px;font-size:15px;background:#f8fafc}
.field input:focus,.field select:focus{outline:none;border-color:#2563eb;background:#fff;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.field-row{display:flex;gap:10px}
.field.grow{flex:1}
.field-row .btn-ghost{height:44px;white-space:nowrap;margin-top:22px}
.agree{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:#475569;margin:4px 0 16px}
.agree input{margin-top:2px}
.btn-primary{width:100%;height:46px;border:none;border-radius:10px;background:linear-gradient(135deg,#2563eb,#7c3aed);color:#fff;font-size:15px;font-weight:700;cursor:pointer}
.btn-primary:hover{opacity:.92}
.btn-ghost{height:38px;border:1px solid #cbd5e1;background:#fff;border-radius:9px;padding:0 14px;font-size:13px;color:#334155;cursor:pointer}
.btn-ghost:hover{border-color:#2563eb;color:#2563eb}
.btn-ghost.small{height:30px;font-size:12px;padding:0 10px}
.auth-links{display:flex;gap:14px;font-size:13px;margin-top:16px;align-items:center}
.auth-links .link-right{margin-left:auto}
.msg{margin-top:12px;font-size:13px;min-height:18px}
.msg.ok{color:#15803d}.msg.err{color:#dc2626}
.auth-footer{color:#cbd5e1;font-size:11.5px;text-align:center;line-height:1.9;padding:22px 0 0}
/* 下载页 */
.dl-nav{background:rgba(15,23,42,.9);position:sticky;top:0;z-index:10}
.dl-nav-inner{max-width:1080px;margin:0 auto;display:flex;align-items:center;gap:18px;padding:10px 16px}
.nav-logo{width:30px;height:30px;border-radius:8px}
.dl-nav-brand{color:#fff;font-weight:700;font-size:16px;margin-right:auto}
.dl-nav-inner a{color:#cbd5e1;font-size:13.5px}
.dl-nav-inner a:hover{color:#fff}
.dl-hero{padding:40px 16px}
.dl-hero-card{max-width:760px;margin:0 auto;background:#fff;border-radius:20px;padding:36px 28px;text-align:center;box-shadow:0 20px 55px rgba(0,0,0,.28)}
.hero-logo{width:92px;height:92px;border-radius:22px;margin-bottom:14px;box-shadow:0 10px 26px rgba(0,0,0,.18)}
.dl-hero-card h1{font-size:26px;letter-spacing:1px}
.dl-sub{color:#475569;margin:8px 0 16px;font-size:14.5px}
.dl-feats{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:20px}
.dl-feat{background:#f1f5f9;border-radius:999px;padding:6px 14px;font-size:12.5px;color:#334155}
.dl-qr-box{margin:6px 0 18px}
.qr-img{width:150px;height:150px;border-radius:14px;border:1px solid #e2e8f0}
.qr-tip{font-size:12.5px;color:#64748b;margin-top:8px;line-height:1.7}
.dl-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.dl-btn{display:inline-block;background:linear-gradient(135deg,#2563eb,#7c3aed);color:#fff;border-radius:10px;padding:12px 26px;font-size:15px;font-weight:700}
.dl-btn.ghost{background:#fff;color:#2563eb;border:1.5px solid #2563eb}
.dl-btn.center{display:block;width:max-content;margin:18px auto 0}
.dl-note{font-size:12px;color:#94a3b8;margin-top:14px}
.dl-note a{color:#2563eb}
.dl-trial,.dl-install{max-width:1080px;margin:0 auto;padding:10px 16px 40px}
.dl-trial h2,.dl-install h2{color:#fff;text-align:center;font-size:22px;margin-bottom:22px}
.trial-steps{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-bottom:18px}
.trial-step{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:#fff;border-radius:14px;padding:16px 20px;text-align:center;width:150px}
.trial-step b{display:block;width:30px;height:30px;line-height:30px;border-radius:50%;background:#fbbf24;color:#78350f;margin:0 auto 8px;font-size:15px}
.trial-step p{font-size:12.5px;line-height:1.6;opacity:.92}
.trial-rule-card{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:14px;padding:16px 18px;font-size:13.5px;line-height:2;max-width:860px;margin:0 auto}
.trial-rule-card b{color:#fbbf24}
.dl-guide-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.dl-guide{background:#fff;border-radius:16px;padding:22px}
.dl-guide h3{font-size:15.5px;margin-bottom:12px;color:#0f172a}
.dl-guide ol{padding-left:18px;color:#475569;font-size:13.5px;line-height:2.05}
.dl-guide code{background:#f1f5f9;border-radius:5px;padding:1px 6px;font-size:12.5px}
.dl-footer{text-align:center;color:#cbd5e1;font-size:12px;line-height:2;padding:0 16px 30px}
/* 权限自检 */
.perm-badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:16px}
.perm-badge{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:999px;padding:7px 14px;font-size:13px}
.perm-panel{background:#fff;border-radius:16px;padding:24px;max-width:860px;margin:0 auto}
.perm-info{font-size:14px;color:#334155;margin-bottom:14px}
#permResults{margin-top:16px}
.perm-item{display:flex;align-items:center;gap:10px;padding:11px 4px;border-bottom:1px dashed #e2e8f0;font-size:14px}
.perm-item:last-child{border-bottom:none}
.perm-state{width:58px;text-align:center;border-radius:8px;padding:3px 0;font-size:12.5px;font-weight:700}
.perm-state.ok{background:#dcfce7;color:#15803d}
.perm-state.warn{background:#fef9c3;color:#a16207}
.perm-state.bad{background:#fee2e2;color:#b91c1c}
/* 管理页 */
.admin-page{background:#f1f5f9;min-height:100vh}
.admin-wrap{max-width:1180px;margin:0 auto;padding:20px 16px 60px}
.admin-head{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.admin-head h1{font-size:20px}
.admin-head .btn-ghost{margin-left:auto}
.tabs{display:flex;gap:8px;margin-bottom:16px;border-bottom:2px solid #e2e8f0}
.tab{border:none;background:none;padding:10px 18px;font-size:14.5px;color:#64748b;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px}
.tab.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:700}
.tab-panel{display:none}
.tab-panel.active{display:block}
.card{background:#fff;border-radius:14px;padding:20px;margin-bottom:16px;box-shadow:0 2px 10px rgba(15,23,42,.06)}
.card h3{font-size:15.5px;margin-bottom:14px}
.form-row{margin-bottom:12px}
.form-row label{display:block;font-size:13px;font-weight:600;color:#334155;margin-bottom:6px}
.form-row input,.form-row select{height:40px;border:1px solid #cbd5e1;border-radius:9px;padding:0 10px;font-size:14px;width:100%;max-width:320px}
.switch-label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}
.switch-label input{width:18px;height:18px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:0 18px}
.stats{margin-top:14px;font-size:13.5px;color:#475569;background:#f8fafc;border-radius:10px;padding:12px}
.stats b{color:#1d4ed8}
.tips{padding-left:18px;color:#475569;font-size:13.5px;line-height:2.1}
.grid{width:100%;border-collapse:collapse;font-size:13px}
.grid th{background:#f8fafc;color:#475569;text-align:left;padding:9px 8px;border-bottom:2px solid #e2e8f0;font-size:12.5px;white-space:nowrap}
.grid td{padding:9px 8px;border-bottom:1px solid #f1f5f9;vertical-align:middle}
.grid .empty{text-align:center;color:#94a3b8;padding:20px}
.grid code{background:#f1f5f9;border-radius:6px;padding:2px 7px;font-size:12.5px;font-weight:700}
.pill{display:inline-block;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}
.pill.ok{background:#dcfce7;color:#15803d}
.pill.bad{background:#fee2e2;color:#b91c1c}
.pill.used{background:#e2e8f0;color:#475569}
.code-result{margin-top:14px}
.code-box{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.code-box code{background:#0f172a;color:#a5f3fc;border-radius:8px;padding:7px 12px;font-size:13px;font-weight:700;letter-spacing:1px}
.hint{font-size:12.5px;color:#64748b}
.trial-count{font-size:20px;text-align:center;padding:18px 0 6px;color:#1e40af}
.trial-count b{font-size:34px;color:#2563eb}
.expired-box{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:16px;font-size:14px;line-height:2;color:#78350f;margin-bottom:6px}
.expired-box .dl-actions{margin:14px 0}
@media (max-width:560px){.dl-hero-card{padding:26px 18px}.dl-hero-card h1{font-size:21px}}
