*{box-sizing:border-box}:root{font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;color:#263b46;background:#f4f8f6;font-synthesis:none}body{margin:0;min-width:1080px;background:#f4f8f6}button,input,textarea,select{font:inherit}button{cursor:pointer}.admin-shell{min-height:100vh}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 10%,#d5ebe1 0,transparent 40%),#f4f8f6}.login-card{width:420px;padding:42px;border:1px solid #e1ebe6;border-radius:24px;background:#ffffffe6;box-shadow:0 24px 80px #294e421f}.brand-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;color:#fff;background:#6da890;font-size:25px;font-weight:800}.brand-mark.small{width:34px;height:34px;border-radius:10px;font-size:18px}.login-card h1{margin:20px 0 8px;font-size:25px}.login-card p,.page-heading p{margin:0;color:#8a9b9e}form{display:grid;gap:16px}.login-card form{margin-top:28px}label{display:grid;gap:8px;color:#52676e;font-size:14px;font-weight:600}input,textarea,select{width:100%;border:1px solid #dce8e3;border-radius:10px;padding:11px 13px;outline:none;color:#263b46;background:#fff}textarea{min-height:100px;resize:vertical}input:focus,textarea:focus,select:focus{border-color:#6da890;box-shadow:0 0 0 3px #6da89024}.primary-btn,.secondary-btn{border:0;border-radius:10px;padding:11px 18px;font-weight:700}.primary-btn{color:#fff;background:#6da890;box-shadow:0 7px 18px #508e712e}.primary-btn:hover{background:#568c76}.primary-btn:disabled{opacity:.6;cursor:wait}.secondary-btn{color:#527567;border:1px solid #cfe0d8;background:#fff}.compact{padding:8px 14px}.topbar{height:70px;display:flex;align-items:center;justify-content:space-between;padding:0 34px;background:#fff;border-bottom:1px solid #e4eee9}.brand,.top-actions,.page-heading,.panel-toolbar,.pagination,.modal-title,.form-actions{display:flex;align-items:center}.brand{gap:11px;font-size:18px}.brand-subtitle{color:#96a8a9;font-size:13px;font-weight:400}.top-actions{gap:18px;color:#6c8083;font-size:14px}.link-btn{padding:0;color:#3a8a6c;border:0;background:none}.link-btn.danger{color:#ca706b}.workspace{display:flex;min-height:calc(100vh - 70px)}.sidebar{width:220px;padding:22px 14px;border-right:1px solid #e4eee9;background:#fbfdfc}.nav-item{width:100%;display:flex;gap:12px;align-items:center;margin-bottom:7px;padding:13px 16px;border:0;border-radius:11px;color:#718486;background:transparent;text-align:left}.nav-item span{width:18px;color:#82a997;text-align:center}.nav-item:hover,.nav-item.active{color:#36765e;background:#e4f1eb;font-weight:700}.main-content{flex:1;padding:34px 40px;overflow:auto}.page-heading{justify-content:space-between;margin-bottom:28px}.page-heading h2{margin:0 0 7px;font-size:26px}.overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.stat-card{display:flex;align-items:center;gap:18px;padding:25px;border:1px solid #e1ece7;border-radius:17px;background:#fff}.stat-card>span{font-size:27px;color:#76aa91}.stat-card strong,.stat-card small{display:block}.stat-card strong{font-size:26px}.stat-card small{margin-top:6px;color:#8ca09f}.panel{border:1px solid #e1ece7;border-radius:17px;background:#fff;overflow:hidden}.panel-toolbar{gap:10px;padding:18px 20px;border-bottom:1px solid #edf2f0}.search-input{max-width:340px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:15px 18px;border-bottom:1px solid #edf2f0;text-align:left;font-size:14px;white-space:nowrap}th{color:#819395;background:#f9fbfa;font-weight:600}.actions{display:flex;gap:12px}.thumb{width:52px;height:38px;border-radius:7px;object-fit:cover}.empty{padding:50px;color:#9aabab;text-align:center}.pagination{justify-content:flex-end;gap:16px;padding:16px 20px;color:#819395;font-size:13px}.notice{margin-bottom:15px;padding:12px 15px;border-radius:9px;background:#fff}.error-text{color:#bb625d}.success-text{color:#438167}.config-grid{display:grid;grid-template-columns:repeat(2,minmax(280px,1fr));gap:20px;padding:24px}.config-grid small{color:#9caaaa;font-weight:400}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:30px;background:#1f353061}.modal-card{width:min(860px,100%);max-height:90vh;overflow:auto;padding:27px;border-radius:18px;background:#fff;box-shadow:0 20px 80px #16372c33}.modal-title{justify-content:space-between;margin-bottom:22px}.modal-title h3{margin:0;font-size:20px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid label:has(textarea){grid-column:1 / -1}.form-actions{justify-content:flex-end;gap:12px;margin-top:24px}.preview{width:100px;height:72px;border-radius:9px;object-fit:cover}.service-config-panel{max-width:760px}.service-config-content{padding:28px}.service-config-content label{max-width:520px}.service-qr-preview{display:block;width:180px;height:180px;margin-top:12px;border:1px solid #dce8e3;border-radius:12px;object-fit:contain}.package-config{margin:12px 0 22px;padding:18px 0;border-top:1px solid #e6ebe9;border-bottom:1px solid #e6ebe9}.package-config-heading{display:flex;align-items:center;justify-content:space-between}.package-config-heading strong{color:#263b35}.package-config-note{margin:8px 0 14px;color:#71817c;font-size:13px}.package-config-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:12px;align-items:end;padding:12px 0;border-top:1px solid #eef1f0}.package-config-row label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#4f625c}.package-config-row input{width:100%;box-sizing:border-box;padding:9px 10px;border:1px solid #dce4e0;border-radius:6px;font:inherit}.benefit-config-row{grid-template-columns:minmax(220px,1fr) 100px 120px auto}.benefit-text-field{min-width:0}.package-config-row .link-btn{margin-bottom:7px}.activation-toolbar{align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.activation-generator,.activation-filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.activation-generator label{min-width:130px}.activation-generator input{width:130px}.activation-filters input{width:210px}.activation-filters select{width:140px}.generated-codes{margin:18px 20px;padding:18px;border:1px solid #dce8e3;border-radius:12px;background:#f8fbf9}.generated-codes-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;color:#36594c}.generated-code-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 14px;margin-top:14px}.generated-code-list code,td code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;letter-spacing:.4px}.generated-codes-note{margin-top:12px;color:#71817c;font-size:13px}.activation-status{display:inline-block;padding:4px 9px;border-radius:20px;font-size:12px;font-weight:700}.activation-status.unused{color:#8b641c;background:#fbf1d9}.activation-status.activated{color:#31704e;background:#e6f3eb}.check-col{width:42px;text-align:center}.check-col input{width:16px;height:16px;cursor:pointer;accent-color:#3a8a6c}.banner-config-row{display:grid;grid-template-columns:2fr 2fr 1fr 110px 1fr auto;gap:12px;align-items:end;padding:12px 0;border-top:1px solid #eef1f0}.banner-config-row label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#4f625c}.banner-config-row input,.banner-config-row select{width:100%;box-sizing:border-box;padding:9px 10px;border:1px solid #dce4e0;border-radius:6px;font:inherit}.banner-config-row .link-btn{margin-bottom:7px}.banner-preview{grid-column:1 / -1;width:240px;height:96px;object-fit:cover;border-radius:10px;border:1px solid #dce8e3}@media (max-width: 1200px){body{min-width:900px}.sidebar{width:190px}.main-content{padding:25px}.overview-grid{grid-template-columns:repeat(2,1fr)}}.modal-card.small-modal{width:min(460px,100%)}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:18px}.import-progress{margin:0 20px 16px;padding:16px 18px;border:1px solid #d9e9e1;border-radius:12px;background:#f7fbf9}.import-progress-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.import-progress-title{display:flex;align-items:center;gap:8px;color:#35594c;font-size:14px;font-weight:700}.import-progress-dot{width:8px;height:8px;border-radius:50%;background:#6da890;animation:import-pulse 1.1s ease-in-out infinite}.import-progress-percent{color:#43816a;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.import-progress-track{height:9px;overflow:hidden;border-radius:999px;background:#e2ede8}.import-progress-bar{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#6da890,#4f9d7c);transition:width .25s ease}.import-progress-msg{margin:11px 0 0;color:#6d8179;font-size:13px}.import-progress-files{margin:10px 0 0;padding:0;list-style:none;display:grid;gap:5px}.import-progress-files li{display:flex;align-items:center;justify-content:space-between;gap:14px;color:#7d8f8a;font-size:12px}.import-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-file-size{flex:0 0 auto;font-variant-numeric:tabular-nums}.import-progress.is-processing .import-progress-bar{background:linear-gradient(90deg,#6da890,#4f9d7c) 0 0 / 40px 100% repeat-x;animation:import-stripes .8s linear infinite}.import-progress.is-done{border-color:#c8e5d5;background:#f2fbf6}.import-progress.is-done .import-progress-dot{animation:none;background:#43816a}.import-progress.is-done .import-progress-bar{background:#43816a}.import-progress.is-error{border-color:#f0d3d1;background:#fdf5f4}.import-progress.is-error .import-progress-dot{animation:none;background:#ca706b}.import-progress.is-error .import-progress-bar{background:#ca706b}.import-progress.is-error .import-progress-title,.import-progress.is-error .import-progress-percent{color:#bb625d}@keyframes import-pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes import-stripes{0%{background-position:0 0}to{background-position:40px 0}}
