:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei", "Noto Sans CJK SC",sans-serif;color:#213831;background:#f5f8f6;font-synthesis:none;--deep:#193d35;--deep2:#12342e;--green:#118766;--green2:#279f7d;--light:#e9f6f0;--text:#203c35;--secondary:#7f928c;--line:#e8efeb;--cream:#fff4df;--orange:#e7ab58;--coral:#dc8571;--blue:#709ec4;--shadow:0 8px 32px rgba(35,75,61,.035);--radius:17px}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{text-decoration:none;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #9ad7bf;outline-offset:2px}svg{display:inline-block;width:18px;height:18px;flex:0 0 auto;vertical-align:middle}#app{min-height:100vh}.loading-page{height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;color:#637d72}.loading-icon{height:64px;width:64px;display:grid;place-items:center;border-radius:20px;background:var(--deep);color:#fff;font-weight:800;font-size:24px}
.shell{display:flex;min-height:100vh}.sidebar{width:247px;flex:0 0 247px;background:#183b33;color:#cfdfd7;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:auto;z-index:30}.sidebar:before{content:"";position:absolute;top:-110px;left:-95px;width:310px;height:310px;border-radius:50%;background:radial-gradient(circle,rgba(137,208,173,.11),transparent 70%);pointer-events:none}.brand{height:101px;display:flex;align-items:center;gap:13px;padding:19px 22px 16px;border-bottom:1px solid rgba(255,255,255,.08);position:relative}.brand-mark{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;background:#e9f5e9;box-shadow:inset 0 0 0 1px #fff8;overflow:hidden}.brand-mark img{width:41px;height:41px;object-fit:contain}.brand strong{display:block;color:#fff;font-size:18px;font-weight:800;letter-spacing:.4px}.brand small{display:block;font-size:10px;letter-spacing:2.2px;color:#9bbcb0;margin-top:5px}.sidebar-scroll{flex:1;padding:19px 12px 15px;z-index:1}.side-label{font-size:10px;letter-spacing:2px;color:#79978d;padding:15px 14px 9px;font-weight:800}.nav-item{width:100%;background:none;border:0;color:#bad1c7;display:flex;align-items:center;gap:13px;text-align:left;padding:12px 15px;margin:2px 0;border-radius:11px;font-size:13px;font-weight:600;transition:all .18s}.nav-item svg{width:18px;height:18px;opacity:.88}.nav-item:hover{background:#245145;color:#fff}.nav-item.active{background:#327864;color:#fff;box-shadow:inset 3px 0 0 #f2c983}.nav-item .side-badge{margin-left:auto;background:#eeb985;color:#244037;border-radius:15px;padding:2px 7px;font-size:10px}.sidebar-footer{padding:16px;border-top:1px solid #ffffff16;position:relative}.profile-mini{display:flex;align-items:center;gap:10px}.profile-mini .avatar{width:37px;height:37px;border-radius:12px;display:grid;place-items:center;font-size:12px;font-weight:800;background:#f1e6ce;color:#4d513e}.profile-mini .name{font-size:13px;font-weight:700;color:#fff}.profile-mini .desc{font-size:11px;margin-top:5px;color:#99b5a9}.profile-mini .dots{margin-left:auto;color:#b8d2c7;font-weight:800}
.main-wrap{min-width:0;flex:1}.topbar{height:82px;background:#ffffffdf;backdrop-filter:blur(16px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:20px;position:sticky;top:0;z-index:20}.crumb{display:flex;gap:10px;align-items:center;color:#93a5a0;font-size:12px}.crumb b{color:var(--deep);font-weight:700}.top-actions{display:flex;align-items:center;gap:16px}.top-date{color:#6e837a;font-size:12px;display:flex;gap:7px;align-items:center}.top-date svg{width:15px;height:15px}.top-div{height:26px;width:1px;background:#e6edeb}.top-avatar{height:32px;width:32px;border-radius:50%;background:#ffeacb;display:grid;place-items:center;font-size:12px;font-weight:800;color:#846439}.mode-pill{display:inline-flex;gap:7px;align-items:center;padding:7px 11px;border-radius:40px;background:#fff3d9;color:#956b2b;font-size:11px;font-weight:800}.mode-pill.live{background:#e7f6ee;color:#16836a}.mode-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:#dcad59}.mode-pill.live:before{background:#33aa7d}.mobile-menu{display:none;border:0;background:none;color:var(--deep)}
.content{max-width:1525px;margin:0 auto;padding:32px 35px 70px}.page-top{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:23px}.page-eyebrow{font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:#72a38f;margin-bottom:7px}.page-title{font-size:26px;letter-spacing:-.65px;font-weight:800;color:#1f3f35;margin:0}.page-desc{font-size:12px;color:#8ca099;margin:9px 0 0}.page-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.btn{border:1px solid #e3ece7;background:#fff;color:#2e4c43;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;min-height:37px;padding:9px 14px;font-size:12px;font-weight:750;white-space:nowrap;transition:.15s}.btn svg{width:16px;height:16px}.btn:hover{border-color:#86c5af;background:#f7fffb}.btn.primary{color:#fff;background:#148b69;border-color:#148b69;box-shadow:0 4px 12px #1689671c}.btn.primary:hover{background:#08785a}.btn.warm{background:#fff0d7;color:#8a632c;border-color:#ffebcb}.btn.danger{color:#bb645c;border-color:#f3dcd9;background:#fff9f7}.btn.sm{min-height:30px;padding:6px 10px;font-size:11px;border-radius:8px}.btn.ghost{background:transparent;border-color:transparent}.btn:disabled{opacity:.52}.icon-btn{display:grid;place-items:center;width:35px;height:35px;border:1px solid var(--line);border-radius:10px;background:white;color:#66847a}.icon-btn svg{width:17px;height:17px}.icon-btn:hover{border-color:#6cb499;color:#198265}
.card{background:#fff;border:1px solid #eaf0ec;border-radius:17px;box-shadow:var(--shadow);min-width:0}.card-pad{padding:22px}.sec-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px}.sec-title{font-size:16px;font-weight:800;color:#274338}.sec-sub{color:#9daea8;font-size:11px;margin-top:4px}.text-link{border:0;background:none;color:#16876c;font-weight:750;font-size:12px;display:inline-flex;align-items:center;gap:5px}.text-link svg{width:14px;height:14px}.text-link:hover{text-decoration:underline}.muted{color:#8da099}.tiny{font-size:11px}.strong{font-weight:800}.empty{padding:40px 10px;text-align:center;color:#94a7a0;font-size:13px}.empty svg{width:34px;height:34px;color:#9cbab0;margin:0 auto 12px}
.hero{height:205px;position:relative;overflow:hidden;display:flex;align-items:center;padding:27px 36px;border-radius:20px;background:linear-gradient(100deg,#e4f6ec 0%,#f9f4df 57%,#f9f2df 100%);margin-bottom:20px;border:1px solid #e6f0e9}.hero:after{content:"";height:330px;width:330px;background:#fff8;border-radius:50%;position:absolute;right:175px;top:-180px}.hero-copy{position:relative;z-index:2;max-width:72%}.hero-tag{background:#d0eee0;color:#368569;display:inline-flex;padding:6px 10px;border-radius:30px;font-size:10px;font-weight:800;letter-spacing:1px}.hero h2{font-size:24px;font-weight:900;margin:13px 0 8px;letter-spacing:-.7px;color:#1c654c}.hero p{color:#627d6e;font-size:12px;margin:0;max-width:490px;line-height:1.9}.hero-art{position:absolute;right:0;top:0;bottom:0;width:38%;background:linear-gradient(90deg,#f9f3de 0%,transparent 60%),url('/assets/hero_banner.jpg') center 33%/cover no-repeat;opacity:.9}.hero-art:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#f8f6e8,transparent 50%)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin:0 0 20px}.stat{padding:20px 21px;display:flex;justify-content:space-between;align-items:start;min-height:118px;gap:12px}.stat .label{font-size:12px;color:#87998e;font-weight:650}.stat .value{font-size:29px;font-weight:850;letter-spacing:-1px;color:#203c35;margin-top:13px}.stat .unit{font-size:13px;color:#93a29a;margin-left:4px;font-weight:500}.stat .sub{font-size:10px;color:#93a99e;margin-top:8px}.stat-icon{width:42px;height:42px;flex:0 0 42px;border-radius:13px;display:grid;place-items:center}.stat-icon svg{width:20px;height:20px}.stat-icon.green{background:#e5f6ee;color:#13866b}.stat-icon.cream{background:#fff3dc;color:#cc9b50}.stat-icon.blue{background:#ebf3fc;color:#638cb2}.stat-icon.coral{background:#fceeea;color:#dc8f79}
.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(310px,1fr);gap:18px;align-items:stretch}.dashboard-col{display:flex;flex-direction:column;gap:18px;min-width:0}.week-mini{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin-bottom:19px}.week-day{border:1px solid transparent;background:#f6faf8;border-radius:12px;padding:11px 3px;display:flex;flex-direction:column;align-items:center;gap:8px;color:#688277;min-height:83px}.week-day:hover{border-color:#a5dcc8}.week-day.selected{background:#1b9571;color:#fff;box-shadow:0 8px 16px #15906f28}.week-day .daynum{font-size:17px;font-weight:850}.week-day .weekday{font-size:10px;font-weight:650}.week-day .dot{width:5px;height:5px;background:#49c59c;border-radius:50%}.week-day.selected .dot{background:white}.week-day .dot.hidden{visibility:hidden}.session-row{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid #f0f4f1}.session-row:last-child{border-bottom:0}.session-time{min-width:54px;font-size:13px;font-weight:800;color:#47665a}.session-photo{width:44px;height:44px;flex:0 0 44px;border-radius:11px;object-fit:cover;background:#edf5ef}.session-info{flex:1;min-width:0}.session-name{font-size:12px;font-weight:800;color:#294338;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.session-desc{color:#9aaba2;margin-top:5px;font-size:10px}.session-cap{text-align:right;color:#8fa39a;font-size:11px}.bar{height:5px;background:#eaf0ed;border-radius:10px;overflow:hidden}.bar>span{display:block;height:100%;border-radius:10px;background:#63be99}.bar.orange>span{background:#eac28c}.event-alert{display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:12px;padding:13px 14px;background:#fff6e9;border:1px solid #fff0da;margin-bottom:10px}.event-alert:last-child{margin-bottom:0}.event-alert .circle{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#fff;color:#d4a25f}.event-alert .circle svg{width:18px;height:18px}.event-alert .alert-title{font-size:12px;font-weight:750;color:#5c5947}.event-alert .alert-note{font-size:10px;color:#b2a38b;margin-top:5px}.event-alert .go{color:#ba9256}.revenue-plot{display:flex;align-items:end;justify-content:space-between;gap:9px;height:112px;border-bottom:1px dashed #e7efea;margin-top:14px}.revenue-bar-wrap{height:100%;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:9px}.revenue-bar{width:18px;background:#c7e9da;border-radius:6px 6px 1px 1px;min-height:5px}.revenue-bar.active{background:#20a079}.revenue-bar-wrap span{font-size:10px;color:#9daeaa;min-height:15px}.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.quick-btn{display:flex;flex-direction:column;align-items:center;gap:8px;border:1px solid #eaf0eb;border-radius:12px;background:#fafdfb;padding:13px 5px;color:#637d70;font-size:10px;font-weight:700}.quick-btn:hover{border-color:#85c5a8;background:#f3fbf6}.quick-btn svg{height:20px;width:20px;color:#399d7d}
.filters{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.input,.select,.textarea{border:1px solid #e5ece7;background:#fff;color:#2d453b;min-height:39px;border-radius:10px;padding:9px 12px;font-size:12px;outline:none}.input:focus,.select:focus,.textarea:focus{border-color:#4aac88;box-shadow:0 0 0 3px #3cb78a17}.select{min-width:140px}.search{display:flex;align-items:center;gap:8px;border:1px solid #e5ece7;border-radius:10px;padding:0 12px;background:#fff;height:39px;min-width:215px}.search svg{height:15px;width:15px;color:#9bb2a6}.search input{border:0;outline:0;width:100%;font-size:12px;background:transparent;color:#244238}.table-scroll{width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;white-space:nowrap;text-align:left}.data-table th{background:#f9fbfa;text-align:left;color:#8a9e93;font-size:11px;font-weight:800;padding:13px 15px;border-bottom:1px solid #edf2ef}.data-table td{padding:16px 15px;border-bottom:1px solid #f0f4f2;font-size:12px;color:#476157}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fcfefd}.td-strong{font-weight:800;color:#29493d!important}.td-muted{font-size:11px!important;color:#a4b4ac!important}.tag{font-weight:750;font-size:10px;padding:6px 9px;display:inline-flex;align-items:center;gap:5px;border-radius:7px;background:#eef2ef;color:#788f82;white-space:nowrap}.tag:before{content:"";height:5px;width:5px;border-radius:50%;background:currentColor}.tag.green{background:#e7f6ef;color:#198a6c}.tag.orange{background:#fff3df;color:#d29b4d}.tag.blue{background:#edf3fa;color:#608aad}.tag.red{background:#feeeeb;color:#c67a66}.tag.gray{background:#f1f4f3;color:#8a9b95}
.sch-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(290px,.85fr);gap:17px}.calendar-head{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:15px}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.cal-cell{height:92px;border:1px solid #edf1ee;background:#fcfdfc;border-radius:12px;padding:11px 8px;display:flex;align-items:flex-start;justify-content:space-between;flex-direction:column;text-align:left}.cal-cell:hover{border-color:#8cceb6}.cal-cell.selected{background:#eaf8f1;border-color:#41a989}.cal-cell.out{opacity:.5}.cal-number{font-size:13px;color:#587468;font-weight:700}.cal-cell.selected .cal-number{color:#13795e;font-weight:900}.cal-dot-group{display:flex;gap:3px;align-items:center}.cal-dot{height:6px;width:6px;border-radius:50%;background:#4cb995}.cal-dot.full{background:#e7b271}.cal-count{font-size:9px;color:#8da699}.course-mini{display:flex;gap:11px;padding:12px 0;border-bottom:1px solid #edf2ee}.course-mini:last-child{border:0}.course-mini .time{width:40px;color:#157d61;font-size:13px;font-weight:850}.course-mini .body{flex:1}.course-mini .name{font-size:12px;font-weight:800;color:#23463a}.course-mini .meta{font-size:10px;color:#91a49a;margin-top:6px}.course-mini .count{font-size:11px;color:#648679;font-weight:800}.legend{display:flex;gap:15px;align-items:center;color:#839a8f;font-size:11px}.legend .cal-dot{display:inline-block;margin-right:5px}.course-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.course-card{overflow:hidden}.course-img{height:125px;width:100%;object-fit:cover}.course-info{padding:16px}.course-info h3{font-size:14px;margin:5px 0;color:#27463c}.course-info p{font-size:11px;color:#96a79d;line-height:1.7;min-height:38px;margin:8px 0 13px}.course-foot{display:flex;justify-content:space-between;align-items:center;gap:8px}.price{font-size:18px;font-weight:900;color:#a77634}.price small{font-size:10px;font-weight:600;color:#bdada0}
.private-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.private-card{padding:20px;position:relative;overflow:hidden}.private-card:before{content:"";height:3px;width:100%;position:absolute;left:0;top:0;background:#d2e8dc}.private-card.pending:before{background:#e5b873}.private-card .head{display:flex;align-items:center;justify-content:space-between;gap:10px}.private-card .member{font-weight:800;font-size:15px}.private-card .subhead{font-size:11px;color:#94a79b;margin-top:6px}.private-lines{background:#f8faf8;padding:14px;border-radius:11px;margin-top:18px;display:grid;gap:10px}.private-lines .line{display:flex;justify-content:space-between;gap:10px;font-size:11px}.private-lines .line label{color:#93a69b}.private-lines .line span{color:#416253;font-weight:700;text-align:right}.private-foot{display:flex;gap:8px;margin-top:16px}.private-foot .btn{flex:1}
.member-head{display:flex;align-items:center;gap:11px}.member-avatar{height:35px;width:35px;display:grid;place-items:center;border-radius:11px;background:#e1f2eb;color:#158064;font-weight:900;font-size:14px}.card-product-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.product-card{border-radius:16px;padding:20px;border:1px solid #f0e9da;background:linear-gradient(140deg,#fffaf0,#fff4e3);position:relative;overflow:hidden}.product-card:nth-child(2n){background:linear-gradient(140deg,#f1faf6,#e4f4ed);border-color:#ddede3}.product-card:nth-child(3n){background:linear-gradient(140deg,#f4f4fc,#e7edfa);border-color:#e6eaf4}.product-card .type{font-size:11px;color:#947a5a;font-weight:750}.product-card .big{font-size:28px;letter-spacing:-1.2px;color:#254337;font-weight:900;margin:15px 0 8px}.product-card .desc{font-size:11px;color:#7f958a}.product-card .offer{margin-top:20px;padding-top:13px;border-top:1px solid #836d4520;display:flex;justify-content:space-between;align-items:center}.product-card .offer b{font-size:17px;color:#a4773b}.product-card .offer small{font-size:10px;text-decoration:line-through;color:#b8ab91;margin-left:4px}.product-card .ribbon{position:absolute;top:0;right:0;background:#e0b469;color:#fff;padding:6px 11px;border-radius:0 0 0 13px;font-size:10px;font-weight:800}.member-cards{display:flex;gap:8px;flex-wrap:wrap}.member-card{border:1px solid #eaf0eb;background:#fff;padding:12px 14px;border-radius:12px;min-width:210px;flex:1}.member-card .name{font-size:11px;color:#8da296}.member-card .val{font-size:22px;font-weight:850;color:#27483d;margin-top:7px}.member-card .hint{font-size:10px;color:#9aac9f;margin-top:5px}
.event-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.event-card{overflow:hidden}.event-img{width:100%;height:160px;object-fit:cover}.event-body{padding:18px}.event-title{font-size:14px;font-weight:800;color:#24483c}.event-meta{display:flex;gap:7px;align-items:center;font-size:11px;color:#94a699;margin-top:11px}.event-meta svg{height:13px;width:13px}.event-footer{margin-top:17px;display:flex;justify-content:space-between;align-items:center}.event-footer .price{font-size:18px}
.attendance-top{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,1fr);gap:17px}.scanner-box{background:linear-gradient(120deg,#173b33,#2d7860);color:#fff;border-radius:15px;padding:22px;min-height:214px;position:relative;overflow:hidden}.scanner-box:after{content:"";border:1px solid #ffffff2d;position:absolute;top:-90px;right:-70px;border-radius:50%;height:250px;width:250px}.scanner-box .scan-icon{height:38px;width:38px;color:#badcca}.scanner-box h3{font-size:17px;margin:14px 0 7px}.scanner-box p{font-size:11px;color:#b7d3c4;line-height:1.8;max-width:410px}.scanner-form{display:flex;gap:9px;margin-top:18px}.scanner-form input{flex:1;min-width:0;background:#fff;color:#20463a}.scanner-form button{background:#e5c28e;color:#314737;border-color:#e5c28e}.cam{width:100%;max-height:230px;display:block;border-radius:12px;background:#0e2620;margin-top:11px}.qr-panel{text-align:center;margin-top:15px;padding:12px;background:white;border-radius:12px;display:inline-flex;flex-direction:column;align-items:center;color:#436257}.qr-panel svg{width:156px;height:156px}.qr-panel code{font-size:10px;word-break:break-all;max-width:260px}.qr-panel small{font-size:10px;color:#869f91}.qr-code-instructions{font-size:11px;color:#8aab9b;line-height:1.7;margin-top:9px}
.audit-timeline{padding:0;margin:0;list-style:none}.audit-item{display:flex;gap:15px;padding:12px 0;position:relative}.audit-item:not(:last-child):before{content:"";position:absolute;top:27px;bottom:-10px;left:16px;border-left:1px dashed #cfded5}.audit-dot{height:33px;width:33px;border-radius:11px;background:#eaf5ef;color:#288d6d;display:grid;place-items:center;flex:0 0 33px;z-index:1}.audit-dot svg{height:16px;width:16px}.audit-title{font-size:12px;font-weight:800;color:#3c5b4f}.audit-sub{font-size:10px;color:#9db0a4;margin-top:7px}
.modal-overlay{position:fixed;inset:0;background:#102a2391;z-index:65;display:flex;align-items:center;justify-content:center;padding:20px;animation:fade .13s ease}.modal{max-width:590px;width:100%;max-height:92vh;overflow:auto;border-radius:20px;background:#fff;box-shadow:0 35px 100px #071d1b50;position:relative}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:21px 25px 17px;border-bottom:1px solid #edf3ef}.modal-header h3{margin:0;color:#214c3b;font-size:17px}.modal-body{padding:23px 25px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-field{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}.form-field label{font-size:11px;font-weight:800;color:#647f71}.form-field input,.form-field select,.form-field textarea{width:100%}.form-field textarea{min-height:75px;resize:vertical;line-height:1.5}.form-hint{font-size:10px;color:#93a799;line-height:1.6}.modal-footer{padding:14px 25px 22px;display:flex;justify-content:flex-end;gap:9px}.details-table{width:100%;border-collapse:collapse}.details-table td{padding:12px 0;border-bottom:1px solid #edf2ee;font-size:12px;vertical-align:top}.details-table td:first-child{color:#9baa9f;width:34%}.details-table td:last-child{font-weight:700;color:#315047}.toast{position:fixed;right:30px;bottom:28px;z-index:100;max-width:400px;padding:13px 17px;display:flex;align-items:center;gap:9px;border-radius:12px;background:#1b5846;color:#fff;box-shadow:0 10px 35px #10483832;font-size:12px;animation:fade .18s}.toast.error{background:#a6584c}.toast svg{height:16px;width:16px}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:30px;background:radial-gradient(ellipse at 20% 20%,#e9f7ef,transparent 48%),radial-gradient(ellipse at 90% 80%,#fcf3e0,transparent 50%),#f7faf8}.login-card{width:min(420px,100%);background:#fff;border:1px solid #e9f0eb;border-radius:25px;padding:40px;box-shadow:0 25px 90px #15473215}.login-card .mark{height:64px;width:64px;background:#edf8f1;display:grid;place-items:center;border-radius:18px;margin-bottom:23px}.login-card .mark img{height:55px;width:55px;object-fit:contain}.login-card h1{font-size:23px;color:#204c3d;margin:0 0 7px}.login-card p{font-size:12px;color:#93a79b;line-height:1.8}.login-card form{margin-top:23px}.login-card .btn{width:100%;margin-top:7px;height:44px}.login-card .foot{color:#a1b1aa;font-size:10px;margin-top:18px;text-align:center}.notice-box{border:1px solid #e7f0e9;background:#f4faf6;border-radius:12px;padding:15px;font-size:12px;line-height:1.8;color:#657b6f}.notice-box.warning{background:#fff9ef;border-color:#f5e6c7;color:#997b45}.chart-legend{font-size:11px;color:#80978a}.mb14{margin-bottom:14px}.mb18{margin-bottom:18px}.mt14{margin-top:14px}.mt20{margin-top:20px}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap8{gap:8px}.gap12{gap:12px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.w-full{width:100%}.hide{display:none!important}.print-only{display:none}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:1330px){.content{padding:26px 25px 55px}.topbar{padding:0 25px}.sidebar{width:222px;flex-basis:222px}.card-product-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1120px){.dashboard-grid{grid-template-columns:1fr}.dashboard-col{display:grid;grid-template-columns:1fr 1fr;align-items:start}.dashboard-col>.card:last-child{grid-column:span 2}.sch-layout{grid-template-columns:1fr}.private-cards{grid-template-columns:1fr 1fr}.stats{gap:9px}.stat{padding:16px}.stat .value{font-size:25px}.card-product-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){.sidebar{position:fixed;left:-257px;top:0;bottom:0;height:100vh;transition:left .2s;box-shadow:12px 0 40px #122f2930}.sidebar.open{left:0}.mobile-menu{display:flex}.topbar{height:65px;padding:0 17px}.content{padding:24px 17px 60px}.top-date,.top-div{display:none}.page-title{font-size:24px}.hero{padding:22px;height:190px}.hero h2{font-size:21px}.hero-art{width:42%;opacity:.48}.stats{grid-template-columns:repeat(2,1fr)}.course-list,.event-grid{grid-template-columns:repeat(2,1fr)}.dashboard-col{grid-template-columns:1fr}.dashboard-col>.card:last-child{grid-column:auto}}
@media(max-width:580px){.content{padding:21px 12px 65px}.page-top{flex-direction:column;align-items:start;gap:14px}.page-tools{width:100%}.page-tools .btn{flex:1}.stats{grid-template-columns:repeat(2,1fr)}.stat .value{font-size:23px}.stat-icon{height:32px;width:32px;flex-basis:32px}.stat-icon svg{height:16px;width:16px}.stat{min-height:118px;padding:15px 12px}.hero-copy{max-width:86%}.hero-art{width:54%;opacity:.18}.card-pad{padding:17px}.private-cards,.course-list,.event-grid,.grid2,.grid3{grid-template-columns:1fr}.card-product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.product-card{padding:14px}.product-card .big{font-size:23px}.sch-layout{gap:13px}.calendar-head{flex-wrap:wrap}.cal-grid{gap:3px}.cal-cell{height:74px;padding:8px 6px}.cal-number{font-size:12px}.cal-count{display:none}.week-mini{gap:4px}.week-day{min-height:72px}.page-title{font-size:23px}.scanner-form{flex-wrap:wrap}.scanner-form .btn{width:100%}.modal{border-radius:16px}.modal-body{padding:17px}.modal-header{padding:17px}.modal-footer{padding:12px 17px 17px}.form-row{grid-template-columns:1fr}.topbar{gap:6px}.top-actions{gap:7px}.mode-pill{font-size:9px;padding:6px}.profile-mini .dots{display:none}}
@media print{.sidebar,.topbar,.page-tools,.btn,.icon-btn,.modal-overlay,.toast{display:none!important}.content{padding:0}.card{break-inside:avoid;box-shadow:none}.print-only{display:block}}
/* V1.1 operations editor styles: content library, card promotions and member issuing */
.admin-tools{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}
.action-stack{display:flex;flex-direction:column;align-items:flex-end;gap:7px;min-width:88px}
.action-stack .btn{min-width:72px;justify-content:center}
.full-editor{display:block}.full-editor .form-field{margin-bottom:16px}
.image-uploader{display:flex;align-items:center;gap:20px;background:#f6faf7;border:1px solid #e4eee7;border-radius:16px;padding:16px;margin:8px 0 14px}
.image-preview{width:185px;height:140px;object-fit:cover;border-radius:12px;flex:0 0 auto;background:#e6eee8}
.image-control{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}
.image-control .input{font-size:11px}
.full-editor .notice-box{line-height:1.75}
.full-editor input[type=color]{width:100%;height:40px;border:1px solid #e1e9e3;background:#fff;border-radius:8px;cursor:pointer;padding:5px}
.full-editor .form-row{align-items:start}
.modal:has(.full-editor){max-width:760px}
.modal:has(.full-editor) .modal-body{padding:24px 29px}
.modal:has(.full-editor) .form-field label{font-size:12px;color:#4d6f60}
.product-card .offer{margin-top:13px}.product-card .desc{line-height:1.85;min-height:54px}
.product-card .ribbon{font-size:11px;max-width:145px;text-align:center;white-space:normal}
.private-card .final-pay,.final-pay{font-size:18px!important;color:#b27734!important;font-weight:900!important}
.modal .member-card{min-width:145px}
.modal:has(.full-editor) .modal-footer{margin-top:6px}
.course-card .course-info p{min-height:34px}
.event-grid .event-card .flex .btn{flex:1}
@media(max-width:670px){.image-uploader{flex-direction:column;align-items:stretch}.image-preview{width:100%;height:160px}.action-stack{min-width:0}.course-card .course-foot{align-items:flex-end}.modal:has(.full-editor) .modal-body{padding:16px}.admin-tools{justify-content:flex-start}}

/* V1.2 course taxonomy, flexible scenes and editable chip collection */
.topic-editor{border:1px solid #e0eae4;border-radius:14px;background:#fbfefa;padding:14px}.topic-chips{display:flex;gap:8px;flex-wrap:wrap;min-height:32px;align-items:center;margin-bottom:12px}.topic-chip{border-radius:999px;padding:6px 7px 6px 13px;color:#1a735e;background:#e5f6ed;display:inline-flex;gap:8px;align-items:center;font-size:12px;font-weight:700}.topic-chip button{background:#fff;color:#3e806d;border:0;width:21px;height:21px;border-radius:50%;font-size:17px;line-height:19px;cursor:pointer}.topic-chip button:hover{background:#f8d8d7;color:#a84242}.topic-entry{display:flex;align-items:center;gap:9px}.topic-entry .input{flex:1;min-width:0}.form-hint{color:#879b91;font-size:11px;line-height:1.8;margin-top:6px}.course-topic-preview{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0 10px}.tiny-topic{font-size:10px;background:#fff1d8;color:#76572b;border-radius:13px;padding:2px 8px}.category-manage-list{display:grid;gap:9px}.category-manage-row{border:1px solid #e1ece5;border-radius:12px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px}.category-manage-row strong{font-size:14px;color:#1b5141}.category-manage-row .tiny{margin-top:5px}
@media(max-width:580px){.topic-entry{flex-wrap:wrap}.topic-entry .btn{width:100%}}

.candidate{padding:12px;margin:8px 0;border:1px solid #deded7;border-radius:10px;line-height:1.7;overflow-wrap:anywhere}.member-selection{color:#285b45;font-weight:600;margin:10px 0}.data-table td{overflow-wrap:anywhere;max-width:320px}
