:root{--bg:#f5f5f7;--ink:#1d1d1f;--muted:#86868b;--line:#e8e8ed;--blue:#0071e3;--green:#248254;--orange:#bf6e12;--red:#c93d44;--sidebar:224px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC","Helvetica Neue",Arial,sans-serif;font-size:16px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer;border:0;background:none;color:inherit;transition:.18s}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid #93c5fd;outline-offset:3px}a{color:var(--blue);text-decoration:none}svg{flex-shrink:0;vertical-align:middle}h1,h2,h3,h4,p{margin:0}h1{font-size:34px;letter-spacing:-1.2px;font-weight:650}h2{font-size:20px;letter-spacing:-.5px;font-weight:650}h3{font-size:16px;font-weight:600}small,.muted{color:var(--muted)}.sub{margin-top:8px;color:var(--muted);line-height:1.6;font-size:15px}.brand{display:flex;align-items:center;gap:11px}.brand img{width:34px;height:34px}.brand strong{display:block;font-size:17px;font-weight:650;letter-spacing:.5px}.brand small{display:block;font-size:11px;letter-spacing:2px;margin-top:4px}.sidebar{width:var(--sidebar);background:#fbfbfd;border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;z-index:30;display:flex;flex-direction:column;padding:29px 17px 16px}.sidebar .brand{padding:0 13px 35px}.nav-label{font-size:12px;color:#9a9aa0;letter-spacing:1.2px;padding:19px 16px 9px}.nav-item{width:100%;display:flex;align-items:center;gap:12px;padding:11px 15px;border-radius:9px;color:#66666c;text-align:left;font-size:15px;margin:3px 0}.nav-item svg{width:18px;height:18px}.nav-item:hover{background:#ededf2}.nav-item.active{background:#e9f1fe;color:var(--blue);font-weight:600}.nav-item .count{margin-left:auto;font-size:12px;border-radius:5px;padding:2px 6px;background:white;color:var(--blue)}.sidebar nav{overflow-y:auto;flex:1}.sidebar-foot{border-top:1px solid var(--line);padding:16px 8px 0;display:flex;gap:10px;align-items:center}.avatar{width:33px;height:33px;border-radius:50%;background:#e6e9ef;display:inline-flex;align-items:center;justify-content:center;font-size:14px;color:#67717d;font-weight:600}.sidebar-foot strong{font-size:14px;display:block}.sidebar-foot small{font-size:12px;display:block;margin-top:4px}.sidebar-foot button{margin-left:auto;color:#aaa}.main{margin-left:var(--sidebar)}.topbar{height:68px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 40px;background:rgba(255,255,255,.75);backdrop-filter:blur(20px);position:sticky;top:0;z-index:20}.crumb{font-size:14px;color:#999}.crumb b{font-weight:400;color:#4a4a4e}.top-tools{display:flex;align-items:center;gap:20px}.top-tools select{border:0;background:none;font-size:14px;max-width:120px;outline:none}.live{font-size:12px;color:#8b8b91;display:flex;gap:6px;align-items:center}.live:before{content:"";width:5px;height:5px;border-radius:50%;background:#45ab75}.iconbtn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;position:relative}.iconbtn:hover{background:#ececf1}.dot{width:5px;height:5px;background:#f48163;position:absolute;right:7px;top:5px;border:1px solid white;border-radius:50%}.page{padding:35px 40px 36px;max-width:1560px;margin:auto;animation:appear .3s ease}.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:27px;gap:20px}.eyebrow{font-size:12px;font-weight:600;letter-spacing:1.9px;color:#8b8b93;margin-bottom:12px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn{display:inline-flex;gap:7px;align-items:center;justify-content:center;border-radius:20px;padding:10px 17px;font-size:14px;white-space:nowrap;background:white;border:1px solid var(--line)}.btn:hover{background:#f1f1f5;transform:translateY(-1px)}.btn.primary{background:var(--blue);border-color:var(--blue);color:white}.btn.primary:hover{background:#0077ed}.btn.danger{color:var(--red);background:#fff1f1;border-color:#ffd7d7}.btn.ghost{background:transparent;border-color:transparent;color:var(--blue);padding:7px 4px}.btn.sm{padding:6px 11px;font-size:13px}.hero{border-radius:22px;background:linear-gradient(115deg,#e9f0fb 0%,#edf0fa 52%,#e7e7f7 100%);padding:33px 36px;position:relative;overflow:hidden;min-height:210px;display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.hero:after{content:"";position:absolute;right:12%;top:-90px;width:300px;height:300px;background:#f5f8ff;border-radius:50%;filter:blur(50px);opacity:.9}.hero-text{position:relative;z-index:2}.hero .eyebrow{color:#6481a6;font-size:12px;margin-bottom:14px}.hero h2{font-size:31px;line-height:1.4;letter-spacing:-1px}.hero p{color:#75839b;font-size:14px;margin-top:12px}.hero button{margin-top:17px}.hero-art{position:relative;width:260px;height:170px;z-index:2;margin-right:40px}.hero-art .book{position:absolute;bottom:30px;left:70px;width:150px;height:95px;border-radius:10px;background:linear-gradient(120deg,#fff,#d8e9ff);transform:rotate(-12deg) skewY(2deg);box-shadow:5px 16px 24px #5f78a32b;border-bottom:8px solid #bfd4f1;border-right:6px solid #cadbf2}.hero-art .book:before{content:"";position:absolute;left:47%;height:100%;border-left:2px solid #d3dfea;transform:rotate(-1deg)}.hero-art .book:after{content:"";position:absolute;inset:20px 20px 35px 85px;background:repeating-linear-gradient(0deg,transparent 0 9px,#b9d0ef 9px 11px)}.orb{position:absolute;border-radius:50%;box-shadow:5px 15px 20px #36578b1a}.orb.one{width:45px;height:45px;left:30px;top:28px;background:radial-gradient(circle at 30% 20%,#9ec4ff,#4789e5)}.orb.two{width:26px;height:26px;right:8px;bottom:26px;background:radial-gradient(circle at 30% 20%,#e2cbff,#b6a3e0)}.hero-art .pencil{position:absolute;right:39px;top:9px;height:120px;width:15px;background:linear-gradient(90deg,#efc475,#ffe5ae,#d5a556);border-radius:5px 5px 1px 1px;transform:rotate(28deg);box-shadow:7px 6px 12px #bca26b23}.pencil:after{content:"";position:absolute;bottom:-17px;border-left:7.5px solid transparent;border-right:7.5px solid transparent;border-top:17px solid #ecc997}.hero-art .ring{border:1px solid #c0cfe957;border-radius:50%;width:245px;height:115px;transform:rotate(-25deg);position:absolute;top:30px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:25px}.metric{padding:21px 22px;border:1px solid #ededf1;background:white;border-radius:16px}.metric-top{display:flex;align-items:center;justify-content:space-between;color:#75757b;font-size:13px}.metric-top svg{color:#a4afc0}.metric-value{font-size:31px;letter-spacing:-1px;font-weight:600;margin-top:17px;font-variant-numeric:tabular-nums}.metric-unit{font-size:13px;color:#999;font-weight:400;margin-left:5px}.metric-foot{font-size:12px;color:#919197;margin-top:9px}.metric-foot b{color:#558a72;font-weight:400}.grid-main{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:22px;margin-bottom:22px}.card{background:white;border:1px solid #ededf1;border-radius:18px;overflow:hidden}.card-head{padding:23px 24px 20px;display:flex;align-items:center;justify-content:space-between;gap:10px}.card-head h2{font-size:16px}.card-head .sub{font-size:12px;margin-top:5px}.card-body{padding:0 24px 24px}.link{color:var(--blue);font-size:13px;display:inline-flex;gap:4px;align-items:center}.class-row{padding:17px 0;border-top:1px solid #f1f1f4;display:flex;align-items:center;gap:15px}.class-row .time{width:55px;font-size:18px;font-weight:500;font-variant-numeric:tabular-nums}.time small{display:block;font-size:12px;font-weight:400;margin-top:5px}.course-mark{width:4px;height:32px;background:#7da9ed;border-radius:3px}.class-row .detail{flex:1}.class-row h4{font-size:12px;font-weight:500;margin-bottom:7px}.class-row p{font-size:12px;color:#929299}.tag{display:inline-flex;align-items:center;border-radius:5px;padding:4px 7px;font-size:12px;white-space:nowrap;background:#eff2f6;color:#757e8d}.tag.blue{background:#edf4ff;color:#437ebd}.tag.green{background:#edf7f1;color:#42845d}.tag.orange{background:#fff5e9;color:#b98540}.tag.red{background:#fff0f0;color:#c35f64}.tag.purple{background:#f3eefa;color:#9a72b4}.todo{padding:15px 0;border-top:1px solid #f1f1f4;display:flex;gap:12px;align-items:center;cursor:pointer}.todo:hover{background:#fcfcff}.todo-icon{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#f1f5fd;color:#7396ca}.todo strong{font-size:14px;font-weight:500;display:block}.todo p{font-size:12px;color:#96969b;margin-top:5px}.todo .num{font-size:21px;margin-left:auto;font-weight:500}.quick-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;padding:3px 18px 21px}.quick{padding:15px 5px;text-align:center;font-size:13px;color:#66666d;border-radius:12px}.quick:hover{background:#f7f8fc}.quick span{width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:13px;background:#f2f5fa;color:#6b91c8;margin:0 auto 12px}.footer{margin-top:30px;display:flex;justify-content:space-between;font-size:11px;color:#a0a0a7}.section-tools{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}.tabs{display:flex;gap:3px;background:#eaeaf0;padding:3px;border-radius:9px;overflow-x:auto}.tabs button{border-radius:7px;font-size:13px;padding:8px 14px;color:#818189;white-space:nowrap}.tabs button.selected{background:white;box-shadow:0 1px 4px #00000009;color:#34343b}.search{display:flex;align-items:center;background:white;border:1px solid var(--line);border-radius:10px;padding:0 11px;gap:7px;min-width:220px}.search svg{color:#aaa}.search input{border:0;outline:0;padding:10px 0;width:100%;background:none;font-size:14px}.table-wrap{overflow:auto}.table{border-collapse:collapse;width:100%;font-size:14px;white-space:nowrap}.table th{padding:14px 20px;background:#fcfcfd;border-top:1px solid #f0f0f4;border-bottom:1px solid #f0f0f4;text-align:left;font-size:12px;font-weight:500;color:#91919a}.table td{padding:17px 20px;border-bottom:1px solid #f1f1f5}.table tr:last-child td{border:0}.table tr:hover td{background:#fcfcfe}.table .person{display:flex;align-items:center;gap:10px}.table .person .avatar{width:30px;height:30px;border-radius:10px;background:#f0f3f9;color:#8296b2}.table small{display:block;font-size:11px;margin-top:5px}.table .row-actions{display:flex;gap:8px}.table .row-actions button{color:var(--blue);font-size:13px}.table .row-actions button:hover{text-decoration:underline}.table-foot{padding:16px 20px;color:#a0a0a5;font-size:12px;display:flex;justify-content:space-between}.empty{text-align:center;padding:65px 20px;color:#aaa;font-size:15px}.empty svg{display:block;margin:0 auto 12px;color:#b7c0cf}.balance-low{color:var(--red)}.mini-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:23px}.mini-metrics .metric-value{font-size:27px}.calendar{display:grid;grid-template-columns:65px repeat(7,minmax(100px,1fr));background:white;border-radius:18px;border:1px solid var(--line);overflow-x:auto;min-width:780px}.calendar-head{padding:15px 5px;text-align:center;border-bottom:1px solid var(--line);font-size:12px;color:#929299}.calendar-head b{font-size:20px;color:#45454b;display:block;margin-top:7px;font-weight:500}.calendar-head.today{background:#f4f8ff}.calendar-head.today b{color:var(--blue)}.calendar-time{font-size:12px;color:#a1a1a8;text-align:center;padding-top:10px;border-bottom:1px solid #f3f3f6;min-height:95px}.calendar-cell{padding:5px;border-left:1px solid #f2f2f6;border-bottom:1px solid #f2f2f6;min-height:95px}.event{padding:9px 9px;border-radius:8px;background:#edf4fe;color:#4076b3;width:100%;text-align:left;border-left:2px solid #7da4e1;line-height:1.6;font-size:12px}.event strong{display:block;font-size:12px;font-weight:600}.event small{font-size:11px;color:inherit;opacity:.8}.event.purple{background:#f3eefb;color:#9773b4;border-color:#b69ad8}.event.orange{background:#fff5e9;color:#ba8a4c;border-color:#e8c183}.event.green{background:#ecf7f1;color:#638f78;border-color:#9dc6ab}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.field{display:flex;flex-direction:column;gap:8px}.field.wide{grid-column:1/-1}.field label{font-size:13px;color:#797981}.field input,.field select,.field textarea{width:100%;border:1px solid #dedee5;background:#fafafc;border-radius:10px;padding:11px 12px;outline:none;font-size:14px;color:#313139}.field input:focus,.field textarea:focus,.field select:focus{border-color:#7db2ef;box-shadow:0 0 0 3px #0071e30d;background:white}.field textarea{min-height:85px;resize:vertical}.field input[type=checkbox]{width:18px}.modal-backdrop{position:fixed;inset:0;background:#14182252;backdrop-filter:blur(7px);z-index:100;display:flex;align-items:center;justify-content:center;padding:25px}.modal{width:600px;max-width:100%;max-height:90vh;overflow-y:auto;background:white;border-radius:21px;box-shadow:0 30px 100px #10254636;animation:appear .2s}.modal.large{width:850px}.modal-head{padding:25px 28px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);position:sticky;top:0;background:white;z-index:1}.modal-head h2{font-size:20px}.modal-body{padding:24px 28px}.modal-foot{border-top:1px solid var(--line);padding:17px 28px;display:flex;justify-content:flex-end;gap:9px;background:#fcfcfe;border-radius:0 0 21px 21px}.form-error{color:var(--red);background:#fff1f1;padding:11px 14px;font-size:14px;border-radius:9px;margin-bottom:16px;display:none}.info{background:#f3f7fd;border:1px solid #e7effa;border-radius:10px;color:#6c83a2;font-size:13px;line-height:1.8;padding:12px 15px;margin-bottom:20px}.attendance-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.attendance-row .tabs{background:#f4f4f7}.attendance-row .tabs button.selected{background:#e8f2ff;color:var(--blue)}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-bottom:22px}.detail-grid label{display:block;font-size:12px;color:#93939a;margin-bottom:8px}.detail-grid strong{font-size:16px;font-weight:500}.timeline{border-left:1px solid #dde6f0;margin:15px 0 0 5px;padding-left:20px}.timeline-item{position:relative;margin-bottom:22px}.timeline-item:before{content:"";width:7px;height:7px;border-radius:50%;background:#9fb9dd;position:absolute;left:-24px;top:4px;border:2px solid white}.timeline-item p{font-size:14px;line-height:1.8}.timeline-item small{font-size:12px}.flow{display:flex;align-items:center;gap:10px;padding:25px 0;flex-wrap:wrap}.flow-node{padding:16px;background:#f3f4f7;border-radius:12px;font-size:14px;min-width:100px;text-align:center}.flow-node.current{background:#eaf3ff;color:var(--blue);box-shadow:0 0 0 1px #abd0ff}.flow-node.done{background:#ecf7f0;color:#5c8d6b}.flow-node small{display:block;font-size:11px;margin-top:7px}.gift-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.gift{padding:25px;border-radius:18px;background:white;border:1px solid var(--line)}.gift-art{height:135px;background:linear-gradient(130deg,#f3f5ff,#f6f4fa);border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;color:#9dadd4}.gift h3{font-size:15px}.gift p{font-size:13px;color:#999;margin:9px 0 20px}.gift-footer{display:flex;align-items:center;justify-content:space-between}.gift-footer strong{font-size:20px;color:#ad8552}.setting-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.setting{padding:24px}.setting h3{margin-bottom:8px}.setting p{font-size:13px;line-height:1.8;color:#929299;margin-bottom:20px}.setting .btn{font-size:13px}.mobile-preview{max-width:440px;margin:auto}.mobile-hero{background:linear-gradient(120deg,#dfeafa,#f0e8fa);border-radius:20px;padding:25px;margin-bottom:18px}.mobile-hero h2{font-size:26px;margin:15px 0 7px}.login-screen{min-height:100vh;display:grid;grid-template-columns:1.2fr 1fr;background:#fbfbfd}.login-showcase{padding:9vh 7vw;background:linear-gradient(140deg,#ecf1fa,#e9edf7 55%,#e4e1f0);display:flex;flex-direction:column;position:relative;overflow:hidden}.login-showcase h1{font-size:52px;line-height:1.2;margin-top:18vh;letter-spacing:-2px}.login-showcase p{color:#8996aa;margin-top:20px;line-height:1.8;font-size:17px}.login-showcase .hero-art{transform:scale(1.6);position:absolute;bottom:12vh;right:8vw;opacity:.85}.login-panel{display:flex;align-items:center;justify-content:center;padding:40px}.login-form{width:330px}.login-form h2{font-size:28px;margin-bottom:10px}.login-form .field{margin-top:23px}.login-form .btn{margin-top:28px;width:100%;padding:13px}.login-form .info{margin-top:25px;font-size:12px}.login-form footer{margin-top:35px;font-size:12px;color:#a5a5ad}#toast{position:fixed;left:50%;bottom:35px;transform:translateX(-50%) translateY(20px);background:#272a32eb;backdrop-filter:blur(10px);color:white;font-size:14px;padding:13px 22px;border-radius:12px;box-shadow:0 8px 30px #1113;opacity:0;pointer-events:none;z-index:200;transition:.25s;max-width:90vw}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.menu-toggle{display:none}.notice-bar{font-size:12px;color:#929299;display:flex;align-items:center;gap:6px}.mobile-student{display:flex;justify-content:space-between;align-items:center}.progress{height:5px;background:#edf0f5;border-radius:4px;overflow:hidden;margin-top:15px}.progress>div{height:100%;background:#8bafe7;border-radius:4px}.break{white-space:normal;max-width:350px;line-height:1.8}.audit-hash{font-family:monospace;color:#abb4c0;font-size:11px}.requirements{font-size:13px;padding:15px;background:#f7f8fc;color:#838b99;border-radius:10px;line-height:1.9}.chart-bars{display:flex;align-items:flex-end;gap:16px;height:145px;padding-top:10px}.bar-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:10px;flex:1;height:100%;font-size:11px;color:#a5a5ad}.bar{width:100%;max-width:45px;background:#cbdcf4;border-radius:5px 5px 0 0;min-height:2px}.bar-col:last-child .bar{background:#80a8e2}.stat-line{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line);font-size:14px}.table-note{margin-top:14px;font-size:12px;color:#aaa;line-height:1.8}@keyframes appear{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(min-width:1500px){.page{padding-top:42px}.hero{min-height:235px}.metric{padding:26px}.metric-value{font-size:36px}.hero h2{font-size:36px}}@media(max-width:1150px){:root{--sidebar:200px}.page{padding:28px}.topbar{padding:0 28px}.hero-art{margin-right:0;transform:scale(.85)}.metric{padding:18px}.metric-value{font-size:27px}.grid-main{grid-template-columns:1.4fr 1fr}.gift-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:850px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0);box-shadow:15px 0 70px #0002}.main{margin-left:0}.menu-toggle{display:inline-flex}.topbar{height:60px;padding:0 20px}.page{padding:25px 20px}.hero{padding:25px}.hero h2{font-size:28px}.hero-art{margin-right:-25px;transform:scale(.7);width:200px}.metric-grid{grid-template-columns:repeat(2,1fr)}.grid-main{grid-template-columns:1fr}.quick-grid{grid-template-columns:repeat(3,1fr)}.live{display:none}.setting-grid{grid-template-columns:1fr}.login-screen{grid-template-columns:1fr}.login-showcase{display:none}.login-panel{min-height:100vh}.top-tools{gap:8px}}@media(max-width:520px){h1{font-size:28px}.page-head{align-items:start;flex-direction:column;gap:15px}.hero-art{display:none}.hero{min-height:210px}.hero h2{font-size:27px}.metric-value{font-size:27px}.metric{padding:18px 15px}.mini-metrics{grid-template-columns:1fr 1fr}.mini-metrics .metric:last-child{display:none}.gift-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field.wide{grid-column:auto}.modal-body{padding:20px}.modal-head{padding:20px}.modal-backdrop{padding:12px}.detail-grid{grid-template-columns:1fr 1fr}.quick-grid{gap:3px}.card-head{padding:20px}.card-body{padding:0 20px 20px}.search{width:100%}.attendance-row{gap:6px;flex-wrap:wrap}.footer{line-height:1.8;gap:15px}.hero h2 br{display:none}}
.refund-results{max-height:230px;overflow-y:auto;border:1px solid var(--line);border-radius:12px}.refund-order{display:flex;gap:12px;align-items:center;padding:13px 16px;cursor:pointer;border-bottom:1px solid var(--line)}.refund-order:last-child{border:0}.refund-order:hover{background:#f7faff}.refund-order:has(input:checked){background:#edf5ff}.refund-order input{accent-color:var(--blue);width:16px;height:16px;flex-shrink:0}.refund-order>span{display:block;min-width:0}.refund-order strong{font-size:14px;font-weight:600;line-height:1.7}.refund-order small{display:block;font-size:12px;margin-top:5px;line-height:1.6;overflow-wrap:anywhere}#refund-search{padding:11px 0}
/* Role-aware phone and tablet workspace. */
.handheld{background:#f5f5f7}.hand-shell{max-width:1200px;margin:auto;min-height:100dvh}.hand-top{height:74px;display:flex;justify-content:space-between;align-items:center;padding:12px 22px;background:#ffffffed;position:sticky;top:0;z-index:20;backdrop-filter:blur(20px);border-bottom:1px solid #ececf1}.hand-top .brand img{width:36px;height:36px}.hand-top .brand strong{font-size:17px}.hand-top .brand small{font-size:12px;letter-spacing:.2px}.hand-context{display:flex;justify-content:space-between;padding:13px 23px 0;color:#96969d;font-size:13px}.hand-context select{border:0;background:transparent;color:#73737c;font-size:13px}.hand-page{padding:22px 22px 110px}.hand-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:23px}.hand-heading h1{font-size:27px;line-height:1.4;letter-spacing:-.7px}.hand-heading p{font-size:13px;color:#92929a;margin-top:8px;line-height:1.7}.hand-heading .btn{padding:9px 13px}.hand-hero{background:linear-gradient(120deg,#e1eaf9,#eee8f7);border-radius:22px;padding:25px;margin-bottom:23px}.hand-hero h2{font-size:23px;line-height:1.5;letter-spacing:-.5px}.hand-hero p{color:#8291a7;font-size:14px;margin-top:12px;line-height:1.8}.hand-hero .eyebrow{font-size:11px;color:#7b90b3;letter-spacing:1.2px}.hand-stats{display:grid;grid-template-columns:repeat(3,1fr);margin-top:24px;gap:10px}.hand-stats strong{display:block;font-size:31px;font-weight:600}.hand-stats span{font-size:12px;color:#8692a7;display:block;margin-top:7px}.hand-card{background:white;border:1px solid #ededf2;border-radius:17px;padding:20px;margin-bottom:18px}.hand-section-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 16px}.hand-section-title h2{font-size:17px}.hand-section-title h3{font-size:14px;line-height:1.6}.hand-section-title>span{font-size:12px;color:#a3a3ab}.hand-quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px 6px}.hand-quick{font-size:13px;padding:8px 0;color:#6b6b75}.hand-quick>span{display:flex;align-items:center;justify-content:center;width:47px;height:47px;border-radius:14px;background:#f0f5fd;color:#769bd0;margin:0 auto 11px}.hand-session-grid{display:grid;grid-template-columns:1fr;gap:16px}.hand-session{padding:20px;background:white;border:1px solid #ececf2;border-radius:18px}.hand-session-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.hand-time{font-size:23px;font-weight:600;letter-spacing:-.5px}.hand-time small{font-size:12px;margin-left:8px;letter-spacing:0;font-weight:400}.hand-session h3{font-size:16px;line-height:1.6}.hand-session>p{font-size:13px;line-height:1.8;color:#96969d;margin-top:7px}.hand-session-foot{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:18px;border-top:1px solid #f0f0f4;padding-top:15px}.hand-session-foot>span{font-size:12px;color:#a0a0a9}.hand-bottom{position:fixed;bottom:0;left:0;right:0;max-width:1200px;margin:auto;z-index:25;background:#fffffff0;backdrop-filter:blur(22px);border-top:1px solid #e8e8ef;display:flex;justify-content:space-around;padding:9px 5px calc(9px + env(safe-area-inset-bottom))}.hand-bottom button{display:flex;align-items:center;flex-direction:column;gap:5px;padding:4px 10px;min-width:56px;color:#a1a1a9;font-size:12px}.hand-bottom button.selected{color:#1476df}.hand-bottom button.selected svg{filter:drop-shadow(0 2px 5px #0071e329)}.hand-empty{text-align:center;padding:40px 15px;border:1px dashed #dedee7;border-radius:15px;color:#a0a0a9;font-size:14px;grid-column:1/-1}.hand-list-row{width:100%;display:flex;justify-content:space-between;gap:10px;align-items:center;padding:17px 0;border-top:1px solid #eeeef3;font-size:14px}.hand-list-row strong{font-weight:500;color:#8798ad}.hand-filter{margin-bottom:17px;overflow-x:auto}.hand-filter .tabs{width:max-content;max-width:100%}.hand-filter .tabs button{padding:9px 14px}.hand-students{margin-top:18px;display:grid;grid-template-columns:1fr;gap:15px}.hand-student{background:white;padding:19px;border-radius:17px;border:1px solid #ececf2}.hand-student-head{display:flex;justify-content:space-between;align-items:center}.hand-student .person{display:flex;gap:10px;align-items:center;font-size:16px}.hand-student .person>div>small{font-size:12px;display:block;margin-top:5px}.hand-student-info{display:flex;flex-direction:column;gap:7px;font-size:13px;line-height:1.8;color:#95959f;margin-top:16px}.hand-student-info a{margin-left:6px;color:#7193bd}.hand-student-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;border-top:1px solid #f0f0f5;margin-top:16px;padding-top:15px}.hand-student-foot b{font-size:23px;font-weight:500}.hand-student-foot small{font-size:12px}.hand-student-foot .btn{font-size:13px;padding:8px 12px}.hand-dates{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:12px 0}.hand-dates button{padding:13px 3px;border:1px solid #ebebf2;border-radius:12px;background:white}.hand-dates small{display:block;font-size:11px;color:#a0a0aa;margin-bottom:8px}.hand-dates b{font-size:20px;font-weight:500}.hand-dates button.selected{color:white;background:#1677e8;border-color:#1677e8;box-shadow:0 5px 14px #0071e321}.hand-dates button.selected small{color:#dbebff}.hand-date-control{display:flex;justify-content:flex-end;margin:14px 0 19px}.hand-date-control input{font:inherit;border:1px solid #e6e6ed;background:white;border-radius:8px;padding:7px 9px;font-size:13px}.hand-item-grid{display:grid;grid-template-columns:1fr;gap:15px;margin-top:18px}.hand-item{display:grid;grid-template-columns:45px 1fr;gap:15px;padding:20px;background:white;border:1px solid #ececf2;border-radius:17px}.hand-item h3{font-size:14px;line-height:1.7}.hand-item-icon{width:45px;height:45px;display:flex;align-items:center;justify-content:center;background:#f3f5fa;color:#91a6c3;border-radius:13px}.hand-item-actions{display:flex;justify-content:flex-end;gap:8px;grid-column:1/-1;border-top:1px solid #f2f2f6;padding-top:13px}.hand-item-actions .btn{font-size:13px}.hand-note{font-size:12px;color:#aaaab2;text-align:center;line-height:1.9;margin-top:25px}.hand-feedback{border-top:1px solid #eee;padding-top:12px;margin-top:15px;font-size:14px;line-height:1.8;color:#7b8799}.hand-more-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.hand-more-grid button{display:flex;align-items:center;flex-direction:column;gap:10px;padding:18px 4px;background:#f6f8fc;border-radius:12px;color:#7a8da9;font-size:13px}.hand-switch{position:fixed;right:12px;bottom:12px;z-index:40;background:white;border:1px solid #e1e6ed;box-shadow:0 4px 15px #182b4510;border-radius:18px;padding:8px 13px;color:#8093ad;font-size:12px;display:flex;align-items:center;gap:5px}.handheld .modal-backdrop{padding:12px;align-items:center}.handheld .modal{max-height:94dvh}.handheld .login-panel{min-height:100dvh}.handheld .login-screen{display:block}.handheld .login-showcase{display:none}.handheld .modal-foot{position:sticky;bottom:0;z-index:2}.handheld .form-grid{grid-template-columns:1fr}.handheld .field.wide{grid-column:auto}.handheld .attendance-row{padding:16px 0}.handheld .attendance-row select{padding:13px;min-width:120px}.handheld .modal-body input,.handheld .modal-body textarea,.handheld .modal-body select,.handheld .login-form input{font-size:18px}.handheld .modal-head h2{font-size:18px}.handheld .gift-grid{grid-template-columns:1fr}.handheld .mobile-preview{max-width:none}@media(min-width:700px){.hand-page{padding:30px 35px 110px}.hand-top{padding:15px 35px;height:80px}.hand-context{padding:17px 35px 0}.hand-heading h1{font-size:32px}.hand-session-grid,.hand-students,.hand-item-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hand-hero{padding:32px}.hand-hero h2{font-size:30px}.hand-stats{max-width:450px}.hand-quick-grid{grid-template-columns:repeat(6,1fr)}.handheld .gift-grid{grid-template-columns:repeat(2,1fr)}.handheld .form-grid{grid-template-columns:1fr 1fr}.handheld .field.wide{grid-column:1/-1}.handheld .modal-body input,.handheld .modal-body textarea,.handheld .modal-body select{font-size:16px}}@media(max-width:400px){.hand-page{padding:20px 15px 105px}.hand-top{padding:12px 15px}.hand-heading h1{font-size:24px}.hand-context{padding-left:15px;padding-right:15px}.hand-session-foot{flex-wrap:wrap}}
[hidden]{display:none!important}
.enrollment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.enrollment-card{padding:22px}.enrollment-card .person{display:flex;align-items:center;gap:10px;font-size:17px}.enrollment-card .person small{display:block;font-size:12px;margin-top:5px}.enrollment-info{display:grid;grid-template-columns:1fr 1fr;gap:12px;color:#9399a5;font-size:13px;line-height:1.8;margin-top:20px}.enrollment-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid #eeeef4;padding-top:15px;margin-top:19px}.enrollment-links{margin-top:25px}.enrollment-qr-body{text-align:center}.enrollment-qr{background:white;padding:15px;max-width:300px;margin:12px auto}.enrollment-qr svg{display:block;width:100%;height:auto}.enrollment-url{display:inline-flex;gap:8px;font-size:14px;margin-top:20px}.enrollment-shortcut{display:flex;align-items:center;gap:12px;background:white;padding:16px;border-radius:17px;border:1px solid #e6edf7;margin-bottom:20px}.enrollment-shortcut>div{flex:1}.enrollment-shortcut h3{font-size:12px}.enrollment-shortcut p{font-size:12px;color:#9aa1ad;margin-top:6px}.enrollment-shortcut .btn{font-size:12px;padding:9px 11px}.handheld .enrollment-grid{grid-template-columns:1fr}.handheld .enrollment-card{padding:19px}.handheld .enrollment-page .page-head{flex-direction:column}.handheld .enrollment-qr-body h2{font-size:23px}@media(max-width:700px){.enrollment-grid{grid-template-columns:1fr}.enrollment-info{gap:10px}.enrollment-shortcut{gap:8px}.enrollment-shortcut .iconbtn{display:none}}
.handheld .enrollment-qr-body{padding:16px 20px}.handheld .enrollment-qr-body .eyebrow{display:none}.handheld .enrollment-qr-body h2{font-size:20px;line-height:1.5}.handheld .enrollment-qr-body .sub{font-size:12px;line-height:1.6;margin-top:6px}.handheld .enrollment-qr{width:min(220px,32dvh);padding:4px;margin:6px auto}.handheld .enrollment-qr-body .tag{font-size:11px}.handheld .enrollment-url{margin-top:10px;font-size:13px}

.student-history-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}.student-history-tabs .btn span{opacity:.7;margin-left:5px}.student-history-body .table-wrap{max-height:390px;overflow:auto}.student-history-body td{white-space:normal;min-width:80px}.handheld .student-history-tabs{position:sticky;top:-1px;background:white;padding:10px 0;z-index:1}.handheld .student-history-tabs .btn{padding:9px 11px;font-size:13px}.handheld .student-history-body .table-wrap{max-height:330px}

.handheld .student-history-foot{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.handheld .student-history-foot .btn{width:100%;min-width:0;margin:0;font-size:13px}
#login-sms-send{margin:0;flex-shrink:0;width:auto;min-width:116px}#login-sms-code{min-width:0}

.warehouse-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.warehouse-card{padding:24px}.warehouse-card .sub{margin-top:10px}.warehouse-count{margin:20px 0;color:var(--muted)}.warehouse-count strong{font-size:30px;color:var(--text);margin-right:5px}.handheld .warehouse-grid{grid-template-columns:1fr}.handheld .warehouse-card{padding:20px}.handheld .section-tools{display:block}.handheld .warehouse-card .actions{flex-wrap:wrap}@media(max-width:600px){.warehouse-grid{grid-template-columns:1fr}}

.student-archive-top{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:22px;align-items:start;margin-bottom:18px}.student-code-panel{display:flex;flex-direction:column;align-items:center;gap:7px}.student-code-caption{font-size:12px;color:#8a909e}.student-code-image{width:138px;min-height:138px;background:white;display:grid;place-items:center;border:1px solid #ececf1;border-radius:12px;padding:4px;text-align:center;font-size:13px}.student-code-image svg{display:block;width:100%;height:auto}.student-code-panel .btn{font-size:13px;padding:8px 14px}.student-code-panel .link{font-size:12px}.handheld .student-archive-top{grid-template-columns:minmax(0,1fr) 112px;gap:12px}.handheld .student-code-image{width:108px;min-height:108px}.handheld .student-archive-top .detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 8px}.handheld .student-archive-top .detail-grid strong{font-size:13px;overflow-wrap:anywhere}.handheld .student-code-panel{gap:5px}

.avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.profile-identity{flex:1;background:transparent;border:0;text-align:left;padding:0;cursor:pointer;color:inherit}.profile-identity strong,.profile-identity small{display:block}.profile-identity small{font-size:11px;color:var(--muted);margin-top:4px}.profile-avatar-line{display:flex;align-items:center;gap:20px;margin-bottom:26px}.profile-avatar{width:88px;height:88px;border-radius:24px;background:#edf2fc;display:grid;place-items:center;font-size:28px;color:#6383b3;overflow:hidden;flex-shrink:0}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-upload-label{display:inline-block;cursor:pointer;margin-right:14px}.profile-avatar-line .sub{margin-top:10px}.profile-account{margin-top:26px;padding-top:22px;border-top:1px solid #edf0f4}.profile-account .detail-grid{margin:20px 0}.profile-phone-row{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:20px 0}.profile-phone-row label{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}.top-tools .avatar[role=button]{cursor:pointer}

.handheld [data-action=my-profile]{padding:2px;background:transparent}.profile-nav-avatar{width:30px;height:30px;font-size:13px}.profile-nav-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}

.recovery-codes{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:24px 0}.recovery-codes code{font-size:15px;padding:14px;background:#f5f6fa;border-radius:10px;overflow-wrap:anywhere}@media(max-width:520px){.recovery-codes{grid-template-columns:1fr}}

#baidu-config-form .field[hidden]{display:none}
