:root{--ink:#38334b;--muted:#89859b;--purple:#8f72e9;--pink:#ff8db6;--blue:#79b9f7;--yellow:#ffc95f;--mint:#79d5bf;--line:#f0edf7;--bg:#faf9fe;--shadow:0 14px 36px rgba(80,63,132,.08)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:'Microsoft YaHei','PingFang SC','Noto Sans CJK SC',Arial,sans-serif;color:var(--ink);background:var(--bg)}body{background-image:radial-gradient(circle at 90% 5%,rgba(255,216,232,.26),transparent 22%),radial-gradient(circle at 2% 65%,rgba(212,232,255,.28),transparent 22%)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.app-shell{min-height:100vh;display:flex}.sidebar{width:245px;flex:0 0 245px;background:#fff;border-right:1px solid #f0edf6;padding:28px 18px 22px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:5}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 30px}.brand-icon{width:44px;height:44px;border-radius:15px;background:linear-gradient(135deg,#ffe3ef,#e5dcff);display:grid;place-items:center;font-size:25px;box-shadow:0 7px 18px #eadffb}.brand b{display:block;font-size:16px;letter-spacing:.4px}.brand small{display:block;color:#aaa3c0;font-size:9px;letter-spacing:2px;margin-top:3px}.sidebar nav{display:grid;gap:7px}.nav-item{display:flex;align-items:center;gap:13px;padding:13px 14px;border-radius:14px;font-size:14px;font-weight:700;color:#807b91;transition:.2s}.nav-item span{font-size:19px;width:25px;text-align:center}.nav-item:hover{background:#faf7ff;color:#7358cc}.nav-item.active{background:linear-gradient(100deg,#f0eaff,#f8f4ff);color:#785bd0;box-shadow:inset 3px 0 #9b7ced}.sidebar-bottom{margin-top:auto}.tiny-cloud{text-align:center;color:#b2abc2;font-size:11px;padding:16px 4px}.logout{background:#fff;border:1px solid #f0edf6;color:#928da1;padding:11px 15px;width:100%;border-radius:12px;font-weight:700}.logout:hover{background:#fff4f7;color:#d46c8d}.main-area{margin-left:245px;width:calc(100% - 245px);min-width:0}.topbar{height:98px;padding:22px 42px;background:rgba(255,255,255,.78);border-bottom:1px solid #f0edf6;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:4;backdrop-filter:blur(12px)}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:900;color:#b3a9cc}.topbar h2{margin:5px 0 0;font-size:22px;letter-spacing:.3px}.top-user{display:flex;align-items:center;gap:10px;font-weight:700;font-size:13px;color:#777188}.top-avatar{display:grid;place-items:center;width:36px;height:36px;background:#f2ecff;border-radius:50%;font-size:20px}.online-dot{height:7px;width:7px;background:#70d2aa;border-radius:50%;margin-left:1px}.content{max-width:1440px;margin:auto;padding:30px 42px 28px}.alert{padding:13px 17px;border-radius:13px;margin-bottom:18px;font-size:13px;font-weight:700}.alert.success{background:#ecfbf5;color:#298b6c;border:1px solid #d2f2e6}.alert.error{background:#fff0f3;color:#c04f70;border:1px solid #ffdce5}.hero-banner{min-height:238px;border-radius:25px;padding:31px 40px;position:relative;overflow:hidden;background:linear-gradient(110deg,#f2eaff 0%,#ffeaf3 55%,#fff1e8 100%);box-shadow:var(--shadow);display:flex;align-items:center}.hero-banner>div:first-child{position:relative;z-index:2}.hero-kicker{font-size:9px;letter-spacing:2.5px;color:#a18acb;font-weight:900}.hero-banner h1{font-size:29px;line-height:1.35;margin:10px 0;color:#514568}.hero-banner p{font-size:13px;color:#847993;margin:0 0 20px}.btn{border:0;border-radius:12px;padding:11px 17px;font-size:13px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:transform .15s,box-shadow .15s}.btn:hover{transform:translateY(-1px);box-shadow:0 8px 17px rgba(91,70,151,.13)}.btn.primary{color:#fff;background:linear-gradient(120deg,#987bea,#b091f2);box-shadow:0 7px 16px rgba(150,119,230,.2)}.btn.secondary{color:#7058bf;background:#f0eaff;border:1px solid #e5dafd}.btn.white{background:#fff;color:#8064c9;box-shadow:0 6px 15px rgba(112,84,158,.1)}.btn.dark{background:#544b68;color:#fff}.btn.danger{background:#fff0f2;color:#d2647f;border:1px solid #ffdae2}.btn.soft{background:#f2edff;color:#7f66c8}.btn.full{width:100%}.hero-art{position:absolute;right:6%;top:0;bottom:0;width:360px}.hero-rainbow{position:absolute;font-size:155px;right:68px;top:26px;filter:drop-shadow(0 10px 13px rgba(146,107,200,.12))}.hero-bunny{position:absolute;font-size:82px;right:5px;bottom:9px;transform:rotate(-7deg)}.hero-star{position:absolute;color:#fff8b8;font-size:28px;text-shadow:0 2px 8px #dab9eb}.s1{right:30px;top:25px}.s2{right:230px;bottom:38px}.hero-cloud{position:absolute;font-size:53px;left:2px;bottom:23px;opacity:.72}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin:23px 0 32px}.stat-card{padding:18px 20px;border:1px solid rgba(236,230,246,.9);border-radius:18px;background:#fff;position:relative;box-shadow:0 7px 20px rgba(80,63,132,.035);min-height:130px}.stat-card:after{content:'';position:absolute;width:72px;height:72px;border-radius:50%;right:13px;top:12px;opacity:.75}.stat-card.pink:after{background:#fff0f5}.stat-card.purple:after{background:#f1ecff}.stat-card.blue:after{background:#edf7ff}.stat-card.yellow:after{background:#fff7e3}.stat-icon{position:absolute;right:28px;top:26px;font-size:26px;z-index:1}.stat-label{display:block;color:#938da5;font-size:12px;font-weight:700}.stat-card strong{font-size:27px;display:block;margin-top:9px;color:#504863}.stat-card small{font-size:10px;color:#b0aabb}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:28px 0 13px}.section-heading h3,.panel-heading h3{font-size:17px;margin:0;color:#4c455f}.section-heading p,.panel-heading p{margin:5px 0 0;font-size:11px;color:#a19aaf}.text-link{font-size:12px;color:#8a70d4;font-weight:800}.child-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.child-card{display:flex;align-items:center;padding:14px 16px;background:#fff;border:1px solid var(--line);border-radius:16px;gap:12px;transition:.2s}.child-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.child-avatar{width:49px;height:49px;border-radius:16px;display:grid;place-items:center;font-size:26px}.avatar-color-0{background:#fff0f5}.avatar-color-1{background:#f1edff}.avatar-color-2{background:#eaf6ff}.avatar-color-3{background:#fff7e5}.avatar-color-4{background:#eaf9f3}.child-main{display:grid;gap:5px;min-width:0}.child-main b{font-size:14px}.child-main small{font-size:10px;color:#aaa3b5}.child-points{margin-left:auto;text-align:right}.child-points strong{display:block;font-size:20px;color:#8267ce}.child-points small{font-size:9px;color:#aaa3b5}.card-arrow{font-size:23px;color:#c4bad6;margin-left:5px}.panel{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 24px rgba(80,63,132,.035);padding:21px}.table-panel{padding:0;overflow:hidden}.table-wrap{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:650px}th{text-align:left;font-size:10px;color:#a9a1b6;font-weight:800;background:#fcfbfe;padding:14px 16px;white-space:nowrap}td{padding:13px 16px;border-top:1px solid #f4f1f8;font-size:11px;color:#6d677d;white-space:nowrap}tr:hover td{background:#fdfcff}.table-avatar{font-size:17px;margin-right:7px}.positive{color:#40aa88!important;font-weight:800}.negative{color:#e27d94!important;font-weight:800}.pill{display:inline-block;border-radius:99px;padding:4px 9px;font-size:9px;font-weight:800}.green{background:#e9faf3;color:#3ba984}.pink-pill{background:#fff0f3;color:#d7758f}.yellow-pill{background:#fff7df;color:#b88a2b}.gray-pill{background:#f1f0f4;color:#8f899a}.no-data{text-align:center;padding:34px;color:#b3adbf}.empty-card{text-align:center;background:#fff;border:1px dashed #e8e0f4;border-radius:18px;padding:35px}.empty-card>div{font-size:43px}.empty-card h3{margin:9px 0 5px}.empty-card p{color:#a29bad;font-size:12px;margin:0 0 18px}.empty-inline{padding:18px;color:#aaa3b6;font-size:12px}.footer{display:flex;justify-content:space-between;padding:28px 3px 4px;color:#b5aec2;font-size:10px}.footer span{color:#c7b5df}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 20% 15%,#fff0f6 0,transparent 32%),radial-gradient(circle at 88% 80%,#eee8ff 0,transparent 30%),#f9f7fe}.login-card{width:min(420px,100%);background:#fff;border:1px solid #f0eafa;border-radius:25px;padding:35px 38px;box-shadow:0 22px 60px rgba(85,65,142,.12);text-align:center}.login-mark{font-size:46px}.login-card h1{margin:7px 0 3px;font-size:25px}.login-card .muted{font-size:12px;color:#a29bad;margin:0 0 22px}.login-card form{text-align:left}.login-card label,.stack-form label{display:grid;gap:7px;font-size:11px;font-weight:800;color:#756d88;margin:14px 0}.login-card input,.stack-form input,.stack-form select,.stack-form textarea,.manual-controls input,.manual-controls select,.page-toolbar select,.start-class-form input,.remark-line input{border:1px solid #eae5f2;background:#fdfcff;border-radius:10px;padding:11px 12px;color:#514a63;outline:0;width:100%;font-size:12px}.login-card input:focus,.stack-form input:focus,.manual-controls input:focus{border-color:#b9a4eb;box-shadow:0 0 0 3px #f5f0ff}.login-card .btn{margin-top:10px;padding:13px}.login-hint{font-size:10px;color:#b2aabd;margin:20px 0 0}.class-status{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid #eeeaf5;border-radius:15px;padding:14px 18px;margin-bottom:17px}.class-status>div{display:grid;grid-template-columns:10px auto;align-items:center;column-gap:9px}.class-status b{font-size:13px}.class-status small{grid-column:2;color:#aaa2b5;font-size:10px;margin-top:3px}.status-dot{width:8px;height:8px;background:#a9a3b3;border-radius:50%}.class-status.is-active{background:#f1fcf7;border-color:#dff5e9}.class-status.is-active .status-dot{background:#54c89a;box-shadow:0 0 0 4px #d9f7e9}.classroom-panel{padding:23px}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:19px}.speed-badge{background:#fff1f7;color:#db7e9d;padding:7px 11px;border-radius:99px;font-size:10px;font-weight:900}.selection-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid #f3eff8}.selection-toolbar b{font-size:12px}.selection-toolbar>div{display:flex;align-items:center;gap:14px}.mini-link{border:0;background:none;color:#8a70d4;font-size:10px;font-weight:800;padding:3px 5px}.mini-link:hover{text-decoration:underline}.selected-count{font-size:10px;color:#aaa2b5}.select-child-grid{display:flex;flex-wrap:wrap;gap:9px;padding:3px 0 17px}.select-child{display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:12px;border:1px solid #eae4f4;background:#fdfcff;cursor:pointer;min-width:140px;position:relative}.select-child input{accent-color:#9678df}.select-child:has(input:checked){background:#f7f2ff;border-color:#d8cafa}.select-avatar{font-size:21px}.select-child b{display:block;font-size:11px}.select-child small{display:block;font-size:9px;color:#aaa4b3;margin-top:2px}.select-child i{display:none;margin-left:auto;font-size:11px;color:#8d72d6;font-style:normal}.select-child:has(input:checked) i{display:block}.rule-toolbar{margin-top:2px}.rule-toolbar span{font-size:10px;color:#aaa3b2}.rule-button-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:7px 0 18px}.quick-rule{min-height:108px;border:1px solid transparent;border-radius:14px;padding:12px 10px;display:flex;flex-direction:column;align-items:center;gap:4px;position:relative;transition:.16s}.quick-rule:hover{transform:translateY(-2px);box-shadow:0 8px 17px rgba(100,75,149,.1)}.rule-reward{background:linear-gradient(145deg,#faf5ff,#f2edff);border-color:#eee4ff;color:#7258bc}.rule-penalty{background:linear-gradient(145deg,#fff6f7,#fff0f2);border-color:#ffe6eb;color:#c56d86}.rule-icon{font-size:20px}.rule-name{font-size:11px;font-weight:800}.quick-rule strong{font-size:18px}.quick-rule small{font-size:9px;opacity:.72}.manual-score-box{border:1px solid #efeaf5;border-radius:14px;background:#fdfcff;padding:13px 14px;display:flex;justify-content:space-between;align-items:center;gap:15px}.manual-score-box>div:first-child b{display:block;font-size:12px}.manual-score-box>div:first-child small{display:block;color:#aaa3b3;font-size:9px;margin-top:4px}.manual-controls{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.manual-controls input{width:75px}.manual-controls input[name=manual_name]{width:150px}.manual-controls select{width:100px}.manual-controls .btn{padding:10px 13px}.remark-line{display:flex;align-items:center;gap:12px;margin-top:13px;font-size:10px;color:#91899f}.remark-line input{max-width:450px}.start-class-panel{margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:18px}.start-class-panel h3{font-size:14px;margin:0}.start-class-panel p{font-size:10px;color:#a39bad;margin:5px 0 0}.start-class-form{display:flex;gap:8px;min-width:370px}.start-class-form input{min-width:0}.tip-strip{background:#fff9e8;border:1px solid #f9edc9;border-radius:13px;padding:13px 16px;color:#a68a45;font-size:11px;margin-top:16px;line-height:1.7}.two-column-layout{display:grid;grid-template-columns:minmax(280px,.85fr) minmax(350px,1.15fr);gap:18px;align-items:start}.form-panel{padding:22px}.panel-emoji{font-size:27px}.stack-form{display:grid;gap:4px}.stack-form label{margin:8px 0}.stack-form label em{color:#e67b9a;font-style:normal}.stack-form label small{font-size:9px;color:#aaa2b4;font-weight:500}.stack-form textarea{resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check-line{display:flex!important;align-items:center!important;gap:9px!important}.check-line input{width:auto!important;accent-color:#9274dd}.cancel-link{font-size:10px;color:#9b90ad;text-align:center;margin:7px}.admin-child-list,.rule-admin-list{display:grid;gap:3px}.admin-child-row,.rule-admin-row{display:flex;align-items:center;gap:11px;padding:12px 1px;border-bottom:1px solid #f3eff7}.admin-child-row:last-child,.rule-admin-row:last-child{border-bottom:0}.big-avatar{width:42px;height:42px;border-radius:13px;background:#f7efff;display:grid;place-items:center;font-size:24px}.admin-child-info,.rule-admin-info{display:grid;gap:4px;min-width:0;flex:1}.admin-child-info b,.rule-admin-info b{font-size:12px}.admin-child-info small,.rule-admin-info small{font-size:9px;color:#aaa3b2}.admin-child-info b small{display:inline;font-size:10px}.rules-layout{grid-template-columns:minmax(280px,.8fr) minmax(390px,1.2fr)}.rule-admin-icon{width:37px;height:37px;border-radius:12px;display:grid;place-items:center;font-size:17px}.soft-purple{background:#f1ebff}.soft-pink{background:#fff0f3}.page-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.page-toolbar h3{font-size:16px;margin:0}.page-toolbar p{font-size:10px;color:#aaa3b2;margin:5px 0 0}.page-toolbar select{min-width:170px}.pet-showcase{border-radius:23px;padding:26px 34px;min-height:220px;background:linear-gradient(115deg,#e8e6ff,#f4eaff 48%,#ffe9f0);display:flex;align-items:center;gap:32px;position:relative;overflow:hidden;margin-bottom:24px}.pet-glow{position:absolute;width:210px;height:210px;left:55px;top:8px;border-radius:50%;background:rgba(255,255,255,.44);filter:blur(1px)}.pet-big-emoji{z-index:1;width:175px;height:175px;display:grid;place-items:center;border-radius:42px;background:linear-gradient(145deg,#fff,#f9edff);font-size:100px;box-shadow:0 15px 30px rgba(104,76,157,.13);animation:floaty 3.5s ease-in-out infinite}.pet-big-emoji img{width:100%;height:100%;object-fit:contain;border-radius:inherit}.pet-big-emoji.level-5,.pet-big-emoji.level-6{filter:drop-shadow(0 0 11px #ffca85)}.pet-big-emoji.level-7,.pet-big-emoji.level-8,.pet-big-emoji.level-9,.pet-big-emoji.level-10{filter:drop-shadow(0 0 15px #b98cff)}@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}.pet-intro{z-index:1;max-width:520px}.pet-intro h2{font-size:26px;margin:6px 0}.pet-intro p{font-size:11px;color:#8b7f9d;margin:0 0 15px}.level-line{display:flex;gap:12px;align-items:center;font-size:10px;color:#85799c}.level-line b{background:#fff;color:#906dd2;border-radius:8px;padding:5px 8px}.exp-track{height:8px;background:rgba(255,255,255,.7);border-radius:99px;margin-top:9px;overflow:hidden;max-width:310px}.exp-track i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#a48af0,#ff9fc0)}.pet-choice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.pet-choice-card{background:#fff;border:1px solid #f0ebf6;border-radius:17px;padding:17px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:7px;box-shadow:0 6px 17px rgba(75,60,120,.03)}.pet-choice-card.chosen{border-color:#c8b4f3;background:#fcfaff;box-shadow:0 0 0 3px #f4efff}.pet-choice-emoji{font-size:47px;width:83px;height:83px;border-radius:24px;background:linear-gradient(145deg,#f6f0ff,#fff0f6);display:grid;place-items:center;margin-bottom:4px}.pet-choice-card b{font-size:13px}.pet-choice-card small{font-size:9px;color:#aaa3b4;min-height:25px}.pet-choice-card .btn{margin-top:5px;font-size:10px;padding:9px}.food-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.food-card,.gift-card{background:#fff;border:1px solid #f0ebf6;border-radius:16px;padding:15px;display:flex;flex-direction:column;gap:6px}.food-emoji,.gift-emoji{height:55px;border-radius:13px;background:#fff7e9;display:grid;place-items:center;font-size:32px}.food-card b,.gift-card b{font-size:12px}.food-card>small,.gift-card>small{font-size:9px;color:#aaa3b2;min-height:25px}.food-meta,.gift-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:5px;font-size:10px}.food-meta span{color:#8d72ce}.food-meta strong,.gift-bottom strong{color:#8a6dce;font-size:13px}.gift-bottom span{font-size:9px;color:#aaa3b2}.food-buy{display:flex;gap:6px;margin-top:6px}.food-buy select{min-width:0;width:65px;border:1px solid #eee8f4;border-radius:9px;padding:8px;font-size:10px;background:#fff;color:#706a7d}.food-buy .btn{flex:1;padding:8px 7px;font-size:10px}.pet-history-list{background:#fff;border:1px solid #f0ebf6;border-radius:16px;padding:5px 17px}.history-pet{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid #f4f0f7}.history-pet:last-child{border:0}.history-pet>span{width:38px;height:38px;display:grid;place-items:center;background:#f7f0ff;border-radius:12px;font-size:22px}.history-pet>div{display:grid;gap:3px;flex:1}.history-pet b{font-size:11px}.history-pet small{font-size:9px;color:#aaa3b2}.gift-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}.gift-card .gift-emoji{background:#fff0f5}.shop-admin{margin-top:24px}.mini-product-list{margin-top:15px;border-top:1px solid #f2eef6;padding-top:6px}.mini-product-list>div{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #f6f3f8}.mini-product-list span{font-size:10px;flex:1}.mini-product-list small{font-size:9px;color:#aaa3b2}.inline-form{display:flex;gap:6px}.danger-link{color:#d77b8d}.backup-action{margin:10px 0 15px}.form-note{font-size:9px;line-height:1.7;color:#aaa2b4;background:#fbf9fd;padding:10px;border-radius:10px}.backup-history{margin-top:20px}.backup-history .panel-heading{padding:19px 21px 0}.start-class-form .btn{white-space:nowrap}
@media(max-width:1120px){.sidebar{width:210px;flex-basis:210px}.main-area{margin-left:210px;width:calc(100% - 210px)}.content{padding:25px}.topbar{padding:20px 25px}.rule-button-grid{grid-template-columns:repeat(3,1fr)}.gift-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.sidebar{width:68px;padding:18px 9px}.brand{padding:0 3px 24px;justify-content:center}.brand>span:last-child,.nav-item:not(.active){font-size:0}.brand b,.brand small{display:none}.nav-item{justify-content:center;padding:12px 5px;font-size:0}.nav-item span{font-size:22px}.nav-item.active{font-size:0}.sidebar-bottom .tiny-cloud,.logout{font-size:0}.logout:after{content:'↗';font-size:18px}.main-area{margin-left:68px;width:calc(100% - 68px)}.topbar{height:82px;padding:15px 18px}.content{padding:18px}.stats-grid{grid-template-columns:repeat(2,1fr)}.hero-banner{padding:25px}.hero-banner h1{font-size:24px}.hero-art{right:-100px;opacity:.55}.two-column-layout,.rules-layout{grid-template-columns:1fr}.pet-choice-grid{grid-template-columns:repeat(2,1fr)}.food-grid{grid-template-columns:repeat(2,1fr)}.gift-grid{grid-template-columns:repeat(2,1fr)}.manual-score-box,.start-class-panel{align-items:stretch;flex-direction:column}.start-class-form{min-width:0}.rule-button-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.topbar h2{font-size:18px}.top-user{font-size:0}.content{padding:14px}.hero-banner{min-height:220px;padding:20px}.hero-banner h1{font-size:22px}.hero-banner p{max-width:230px;font-size:11px}.hero-art{right:-190px}.stats-grid{gap:9px}.stat-card{padding:13px;min-height:112px}.stat-card strong{font-size:22px}.stat-icon{font-size:21px;right:18px;top:19px}.child-grid{grid-template-columns:1fr}.section-heading h3{font-size:15px}.panel{padding:15px}.classroom-panel{padding:15px}.select-child{min-width:calc(50% - 5px);padding:7px}.rule-button-grid{gap:7px}.quick-rule{min-height:100px}.manual-controls input[name=manual_name]{width:100%;flex:1 1 100%}.manual-controls select{flex:1}.remark-line{align-items:flex-start;flex-direction:column;gap:5px}.remark-line input{max-width:none}.start-class-form{flex-direction:column}.pet-showcase{padding:20px;gap:13px;min-height:170px}.pet-big-emoji{width:112px;height:112px;font-size:67px;border-radius:28px}.pet-intro h2{font-size:20px}.pet-intro p{font-size:9px}.pet-choice-grid,.food-grid,.gift-grid{grid-template-columns:repeat(2,1fr)}.page-toolbar{align-items:flex-start;gap:10px;flex-direction:column}.page-toolbar select{min-width:190px}.footer{font-size:9px;gap:8px}.form-row{gap:7px}.login-card{padding:28px 23px}}

/* V1.4 desktop-first rainbow classroom and interaction effects */
:root{--ink:#332b4b;--muted:#716d83;--purple:#8f68df;--pink:#ff79ad;--blue:#66b4f2;--yellow:#ffc94e;--mint:#55c9a9;--rainbow:linear-gradient(120deg,#ff8cbd 0%,#ffce70 25%,#a8df91 50%,#83c8ff 75%,#b394f4 100%)}
body{font-size:16px;background-color:#fbfaff}
.sidebar{width:260px;flex-basis:260px}
.nav-item{font-size:16px;padding:15px 16px;margin:5px 10px;border-radius:15px}
.nav-item span{font-size:22px;width:30px}
.topbar h2{font-size:25px}
.content{max-width:1800px;padding:28px 34px 40px}
.panel{border-radius:24px}
.classroom-hero,.pet-page-banner{border-radius:28px;padding:34px 40px;min-height:190px;background:linear-gradient(120deg,#ffe3f0 0%,#fff0cf 27%,#e7f9df 52%,#e2f1ff 76%,#efe5ff 100%);border:1px solid rgba(255,255,255,.9);box-shadow:0 18px 42px rgba(125,92,177,.12)}
.classroom-hero h1,.pet-page-banner h1{font-size:40px;line-height:1.2;margin:10px 0 12px;color:#45325f}
.classroom-hero p,.pet-page-banner p{font-size:18px;max-width:780px;line-height:1.7;color:#635b79}
.classroom-hero-art,.pet-banner-art{font-size:66px;letter-spacing:8px}
.classroom-panel-rainbow{padding:30px;background:linear-gradient(180deg,#fff 0%,#fffafd 100%);border:2px solid #f1e7ff;box-shadow:0 18px 46px rgba(101,75,153,.1)}
.classroom-heading h3,.section-heading-large h3{font-size:27px}
.classroom-heading p,.section-heading-large p{font-size:16px}
.selection-toolbar-large{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:18px 20px;background:#fff7fb;border:1px solid #ffe0ee;border-radius:18px;margin:22px 0}
.selection-toolbar-large>b{font-size:21px}
.selection-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.select-action{border:0;border-radius:13px;padding:13px 22px;font-size:17px;font-weight:800;background:#e9e1ff;color:#6245a4}
.clear-action{background:#ffe0eb;color:#a83267;min-width:150px;box-shadow:0 4px 0 #f4bfd2}
.selected-count{font-size:17px;font-weight:800;color:#6c56a6;background:#f3efff;padding:12px 17px;border-radius:12px}
.class-child-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:22px;margin:20px 0 28px}
.class-child-card{position:relative;display:flex;flex-direction:column;min-height:385px;padding:24px 24px 21px;border:3px solid #e8e2f4;border-radius:26px;background:linear-gradient(150deg,#fff 0%,#fff9fd 100%);box-shadow:0 8px 22px rgba(75,60,115,.07);cursor:pointer;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;overflow:hidden}
.class-child-card:before{content:"";position:absolute;left:0;right:0;top:0;height:9px;background:var(--rainbow);opacity:.72}
.class-child-card:hover{transform:translateY(-4px);box-shadow:0 18px 32px rgba(101,77,150,.14)}
.class-child-card.selected{border-color:#a88cec;background:linear-gradient(145deg,#fff 0%,#f8f4ff 100%);box-shadow:0 12px 30px rgba(142,110,213,.16)}
.class-child-card input[type=checkbox]{position:absolute;opacity:0;width:1px;height:1px}
.class-select-check{position:absolute;right:18px;top:18px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#e8e2ef;color:transparent;font-size:21px;font-weight:900;z-index:3}
.class-child-card.selected .class-select-check{background:linear-gradient(135deg,#9b7be8,#f17eae);color:#fff;box-shadow:0 5px 12px rgba(143,104,223,.28)}
.student-identity{display:flex;align-items:center;gap:17px;padding-right:34px}
.student-avatar{width:88px;height:88px;flex:0 0 88px;border-radius:25px;display:grid;place-items:center;font-size:54px;background:linear-gradient(135deg,#ffe2f0,#e8e2ff);box-shadow:inset 0 0 0 3px rgba(255,255,255,.8),0 8px 18px rgba(120,95,168,.12)}
.student-name-block b{font-size:29px;display:block;line-height:1.2;color:#413255;word-break:break-word}
.student-name-block small{display:block;font-size:15px;margin-top:7px;color:#9486ae}
.student-pet-stage{height:128px;display:flex;align-items:center;justify-content:center;position:relative;margin:14px 0 6px;border-radius:22px;background:radial-gradient(circle at 50% 45%,#fff 0%,#f5efff 58%,#e9f4ff 100%);overflow:hidden}
.student-pet-stage>span{font-size:85px;filter:drop-shadow(0 8px 5px rgba(90,70,140,.15));animation:petFloat 3s ease-in-out infinite}
.student-pet-stage img{max-width:115px;max-height:115px;object-fit:contain}
.student-pet-stage em{position:absolute;right:10px;bottom:10px;background:#fff;border-radius:99px;padding:7px 13px;font-size:14px;font-weight:900;color:#7651b5;font-style:normal;box-shadow:0 3px 10px #cfc2e9}
.student-wallets{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}
.student-wallets>span{display:flex;align-items:center;gap:8px;justify-content:center;background:#fff;border:1px solid #eee5fa;border-radius:14px;padding:12px;font-size:17px}
.student-wallets b{font-size:24px;color:#49396a}
.student-wallets small{font-size:13px;color:#8b849b}
.student-progress{margin-top:auto;padding:12px 14px;background:#fff;border-radius:14px;border:1px solid #f0eafb}
.student-progress>div{display:flex;justify-content:space-between;font-size:15px;font-weight:800;margin-bottom:8px}
.student-progress>div b{color:#8b68d8}
.student-progress>i,.pet-progress-large{display:block;height:13px;background:#eee9f7;border-radius:99px;overflow:hidden}
.student-progress>i em,.pet-progress-large i{display:block;height:100%;background:var(--rainbow);border-radius:inherit;transition:width .5s ease}
.student-progress>small{display:block;font-size:13px;color:#8a8498;margin-top:8px}
.rule-toolbar{margin-top:18px}
.rule-toolbar b{font-size:22px}
.rule-button-grid-large{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:16px;margin:18px 0}
.quick-rule{min-height:174px;border:0;border-radius:22px;padding:21px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;box-shadow:0 8px 0 rgba(109,91,147,.12),0 12px 25px rgba(88,65,130,.08);transition:transform .15s ease,filter .15s ease}
.quick-rule:hover{transform:translateY(-4px) scale(1.015);filter:saturate(1.06)}
.quick-rule:active{transform:translateY(3px) scale(.98);box-shadow:0 3px 0 rgba(109,91,147,.1)}
.quick-rule .rule-icon{font-size:31px}
.quick-rule .rule-name{font-size:18px;font-weight:900;line-height:1.35;text-align:center}
.quick-rule strong{font-size:36px;line-height:1.1}
.quick-rule small{font-size:13px}
.rule-reward{background:linear-gradient(145deg,#ffe1ef,#fff1ca);color:#75426f}
.rule-penalty{background:linear-gradient(145deg,#e5e8ff,#e9f3ff);color:#475b91}
.manual-score-box-large{padding:22px;border-radius:20px;background:linear-gradient(100deg,#f7f0ff,#fff7fb);border:1px solid #eadcfb}
.manual-score-box-large b{font-size:20px}
.manual-score-box-large small{font-size:14px}
.manual-controls{gap:12px;flex-wrap:wrap}
.manual-controls select,.manual-controls input{min-height:48px;font-size:16px}
.manual-controls .btn{min-height:48px;font-size:17px;padding:0 22px}
.remark-line{font-size:15px;margin-top:18px}
.remark-line input{min-height:48px;font-size:16px}
.child-switcher{padding:20px 22px;border:1px solid #eee4fa;border-radius:22px;background:#fff;box-shadow:0 10px 30px rgba(91,72,136,.07);margin:22px 0}
.switcher-title{font-size:20px;font-weight:900;margin-bottom:14px;color:#4d3c70}
.child-switcher-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:13px}
.child-switcher-card{min-height:84px;border:2px solid #eee8f5;border-radius:17px;padding:12px 16px;display:flex;align-items:center;gap:13px;background:#fff;transition:all .18s ease}
.child-switcher-card.active{border:3px solid #a27be8;background:linear-gradient(110deg,#f8edff,#fff1f7);box-shadow:0 7px 18px rgba(143,104,223,.13)}
.switcher-avatar{width:55px;height:55px;flex:0 0 55px;border-radius:16px;display:grid;place-items:center;font-size:34px;background:linear-gradient(135deg,#ffe5f1,#e5eaff)}
.child-switcher-card b{font-size:18px;display:block}
.child-switcher-card small{display:block;font-size:13px;margin-top:4px;color:#817990}
.child-switcher-card i{margin-left:auto;white-space:nowrap;font-style:normal;font-size:13px;font-weight:900;color:#825cc1}
.pet-current-card,.supermarket-pet-panel{display:flex;align-items:center;gap:28px;padding:27px 32px;border-radius:28px;background:linear-gradient(115deg,#ffe4f1,#fff3d8 35%,#e7f7e9 68%,#e5efff);box-shadow:0 15px 36px rgba(111,86,161,.1);margin:22px 0;flex-wrap:wrap}
.pet-current-portrait,.supermarket-pet-avatar{width:170px;height:170px;flex:0 0 170px;border-radius:38px;display:grid;place-items:center;background:rgba(255,255,255,.78);font-size:105px;box-shadow:0 10px 24px rgba(101,77,147,.12);position:relative}
.pet-current-portrait img,.supermarket-pet-avatar img{max-width:145px;max-height:145px;object-fit:contain}
.pet-current-info,.supermarket-pet-info{flex:1;min-width:300px}
.pet-current-info h2,.supermarket-pet-info h2{font-size:31px;margin:10px 0;color:#4c376e}
.pet-current-info p{font-size:16px;color:#766c88}
.current-ribbon{display:inline-block;border-radius:99px;padding:7px 14px;background:#fff;color:#8058bd;font-size:14px;font-weight:900;box-shadow:0 3px 10px rgba(103,78,150,.08)}
.pet-level-summary{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:12px 0;font-size:15px}
.pet-level-summary strong{font-size:25px;color:#754dc1}
.pet-level-summary b{margin-left:auto;color:#754dc1;font-size:19px}
.pet-progress-large{height:17px;margin:10px 0}
.pet-next-level{font-size:14px;color:#6e6480}
.wallet-bubbles{display:flex;gap:12px}
.wallet-bubbles>div{min-width:112px;padding:14px;border-radius:18px;background:#fff;text-align:center;box-shadow:0 5px 15px rgba(91,72,136,.08)}
.wallet-bubbles span{display:block;font-size:22px}
.wallet-bubbles b{display:block;font-size:28px;color:#4c3c6c}
.wallet-bubbles small{font-size:13px;color:#827991}
.pet-choice-grid-large,.food-grid-large,.gift-grid-large{grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:20px}
.pet-choice-card{position:relative;overflow:hidden;border:2px solid #eee5fa;border-radius:24px;padding:22px;background:#fff;box-shadow:0 9px 23px rgba(90,71,138,.07);text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px;transition:all .2s ease}
.pet-choice-card.chosen{border:4px solid #9d7be5;background:linear-gradient(160deg,#fff,#f6efff);box-shadow:0 12px 28px rgba(126,91,199,.17)}
.pet-choice-emoji-large{width:140px;height:140px;border-radius:30px;display:grid;place-items:center;font-size:92px;background:radial-gradient(circle,#fff,#f2ebff);overflow:hidden}
.pet-choice-emoji-large img{max-width:126px;max-height:126px;object-fit:contain}
.pet-choice-card>b{font-size:22px}
.pet-choice-card>small{font-size:14px;min-height:38px;color:#837a93}
.chosen-pet-ribbon,.pet-history-tag{padding:7px 13px;border-radius:99px;background:#f0e8ff;color:#7750b7;font-weight:900;font-size:13px}
.pet-chosen-btn{background:#8d70c9;color:white}
.supermarket-banner{background:linear-gradient(120deg,#ffe0ef,#fff0c9,#e3f8e9,#e1efff)}
.supermarket-notice{padding:15px 20px;background:#fff8d9;border:1px solid #ffe6a0;border-radius:16px;font-size:16px;color:#705626;margin:15px 0}
.food-card,.gift-card{border:2px solid #f0e8f7;border-radius:23px;padding:22px;background:#fff;box-shadow:0 9px 22px rgba(80,60,128,.07);transition:transform .2s ease,box-shadow .2s ease}
.food-card b,.gift-card b{font-size:22px;display:block;margin:10px 0}
.food-card small,.gift-card small{font-size:15px;min-height:42px}
.food-emoji-large,.gift-emoji{width:104px;height:104px;font-size:68px;border-radius:27px;background:linear-gradient(135deg,#fff0cf,#ffe1f0);display:grid;place-items:center;margin:0 auto 12px}
.food-meta-large{font-size:15px;padding:12px 0;display:flex;flex-direction:column;gap:8px}
.food-meta-large strong{font-size:18px;color:#7650b9}
.food-buy-large select,.food-buy-large .btn{min-height:48px;font-size:16px}
.gift-bottom strong{font-size:20px}
.settings-feature-panel{padding:25px;margin:20px 0}
.difficulty-form{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr)) auto;gap:14px;align-items:stretch}
.difficulty-choice{display:flex;flex-direction:column;gap:8px;border:2px solid #eee7f6;border-radius:16px;padding:16px;cursor:pointer;background:#fff}
.difficulty-choice.active{border-color:#a381e7;background:#f8f2ff;box-shadow:0 5px 16px rgba(133,99,196,.12)}
.difficulty-choice input{margin:0 8px 0 0}
.difficulty-choice b{font-size:17px}
.difficulty-choice small{font-size:13px;line-height:1.6;color:#827991}
.food-admin-form{display:grid;grid-template-columns:1.4fr .6fr 1fr 1fr 1.5fr auto;align-items:end;gap:12px}
.food-admin-form label{font-size:14px;font-weight:800}
.food-admin-form input{width:100%;margin-top:6px;min-height:44px}
.feed-form.submitting{opacity:.8;transform:scale(.98)}
#activePetStage.is-feeding .supermarket-pet-avatar{animation:petFeedBounce .65s ease}
#activePetStage.level-celebration .supermarket-pet-avatar{animation:petLevelCelebration 1.2s ease}
.flying-food{position:absolute;z-index:20;left:50%;top:50%;font-size:46px;pointer-events:none;animation:foodFly .75s ease-in forwards}
.class-child-card.score-pop{animation:scorePop .62s ease}
.alert{font-size:17px;padding:15px 20px;border-radius:16px}
@keyframes petFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes petFeedBounce{0%,100%{transform:scale(1)}28%{transform:scale(1.16) rotate(-5deg)}58%{transform:scale(.94) rotate(4deg)}}
@keyframes petLevelCelebration{0%{transform:scale(1)}25%{transform:scale(1.22) rotate(-8deg)}50%{transform:scale(1.12) rotate(8deg)}75%{transform:scale(1.2) rotate(-5deg)}100%{transform:scale(1)}}
@keyframes foodFly{0%{transform:translate(-50%,-25%) scale(.55) rotate(-25deg);opacity:0}20%{opacity:1}100%{transform:translate(-50%,-155px) scale(1.2) rotate(25deg);opacity:0}}
@keyframes scorePop{0%{transform:scale(1)}35%{transform:scale(1.035);box-shadow:0 0 0 8px rgba(255,207,111,.45),0 18px 35px rgba(116,85,170,.18)}100%{transform:scale(1)}}
@media(max-width:1250px){.difficulty-form{grid-template-columns:1fr 1fr}.food-admin-form{grid-template-columns:1fr 1fr 1fr}.class-child-grid{grid-template-columns:repeat(2,minmax(300px,1fr))}}
@media(max-width:900px){.content{padding:18px}.class-child-grid{grid-template-columns:1fr}.difficulty-form,.food-admin-form{grid-template-columns:1fr}.pet-current-card,.supermarket-pet-panel{align-items:flex-start}.wallet-bubbles{width:100%}}
#activePetStage.level-celebration:after{content:'✨ ⭐ ✨ 🌟 ✨';position:absolute;left:0;right:0;top:5px;text-align:center;font-size:25px;letter-spacing:12px;pointer-events:none;animation:levelStars 1.5s ease-in-out infinite}
@keyframes levelStars{0%,100%{transform:translateY(8px);opacity:.35}50%{transform:translateY(-10px);opacity:1}}

/* ===== V2.0 宠物形象管理 / 专属口粮 / 升级台词 ===== */
.pet-tags{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.pet-tag{display:inline-block;background:#fff;border:1px solid #eee5fa;color:#6c56a6;font-size:13px;font-weight:700;padding:5px 11px;border-radius:99px}
.exclusive-badge{display:inline-block;background:linear-gradient(135deg,#ffe08a,#ffc94e);color:#7a5410;font-size:12px;font-weight:900;padding:4px 10px;border-radius:99px;margin:2px 0}
.food-card.exclusive{border-color:#ffc94e;box-shadow:0 10px 26px rgba(255,180,50,.18)}

.pet-image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:18px;padding:6px 0}
.pet-image-cell{border:2px solid #f0e8f7;border-radius:18px;padding:14px;background:#fff;display:flex;flex-direction:column;gap:10px;text-align:center}
.pet-image-preview{width:100%;aspect-ratio:1/1;border-radius:14px;background:radial-gradient(circle,#fff,#f4edff);display:grid;place-items:center;overflow:hidden}
.pet-image-preview img{max-width:100%;max-height:100%;object-fit:contain}
.pet-image-placeholder{font-size:42px;font-weight:900;color:#c9bde2}
.pet-image-label b{display:block;font-size:18px;color:#4d3c70}
.pet-image-label small{display:block;font-size:12px;color:#8b849b;margin-top:2px}
.pet-image-upload-form{margin:0}
.upload-btn{display:block;background:linear-gradient(135deg,#9b7be8,#f17eae);color:#fff;font-size:14px;font-weight:800;padding:9px;border-radius:11px;cursor:pointer;text-align:center}
.upload-btn input{display:none}
.upload-btn:hover{filter:brightness(1.05)}
.pet-line-form{display:flex;gap:6px;margin:0}
.pet-line-form input{flex:1;min-width:0;font-size:12px;padding:6px 8px;border:1px solid #eee5fa;border-radius:8px}
.pet-line-form .mini-link{white-space:nowrap}

.upgrade-line-banner{position:fixed;left:50%;top:18%;transform:translateX(-50%);z-index:1000;display:flex;align-items:center;gap:12px;background:linear-gradient(120deg,#fff3c4,#ffe0ef,#e3f1ff);border:2px solid #ffd66e;border-radius:20px;padding:18px 26px;box-shadow:0 18px 46px rgba(120,80,160,.28);animation:upgradeLinePop .5s ease;max-width:90vw}
.upgrade-line-icon{font-size:34px}
.upgrade-line-text{font-size:20px;font-weight:900;color:#5b3d8a;line-height:1.4}
@keyframes upgradeLinePop{0%{transform:translateX(-50%) scale(.5);opacity:0}60%{transform:translateX(-50%) scale(1.08)}100%{transform:translateX(-50%) scale(1);opacity:1}}
@media(max-width:600px){.upgrade-line-text{font-size:16px}.pet-image-grid{grid-template-columns:repeat(2,1fr)}}
