:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#18303a;background:#f4f6f5;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}.side{background:#172e38;color:#b7c9cd;padding:28px 16px;display:flex;flex-direction:column;gap:26px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;color:#fff;font-size:1.2rem;font-weight:800;padding:0 12px}.brand-mark{background:#d1f078;color:#19323b;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-weight:900}.side small{display:block;text-transform:uppercase;letter-spacing:.13em;font-size:.7rem;color:#74939b;margin:6px 13px 12px}.nav{display:grid;gap:4px}.nav button{border:0;background:transparent;color:inherit;border-radius:10px;text-align:left;padding:12px 14px;display:flex;align-items:center;gap:12px;width:100%;font-size:.94rem}.nav button:hover,.nav button.active{background:#29434d;color:#fff}.nav button.active:before{content:"";width:4px;height:20px;background:#d1f078;border-radius:4px;margin-left:-14px}.nav button span:first-child{width:22px;text-align:center;font-size:1.15rem}.side-bottom{margin-top:auto;padding:17px 13px 0;border-top:1px solid #38525b;display:flex;align-items:center;gap:10px;font-size:.88rem}.avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#dce9e5;color:#17333d;font-weight:700;flex:none}.side .avatar{background:#547174;color:#fff}.workspace{min-width:0}.topbar{height:72px;background:#fff;border-bottom:1px solid #e3e9e8;display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:15px}.crumb{color:#5f7379;font-size:.88rem}.top-actions{display:flex;align-items:center;gap:12px}.date{font-size:.84rem;color:#61767b}.notification{background:#f0f4f2;border:0;border-radius:9px;width:38px;height:38px;font-size:1.1rem;position:relative}.notification:after{content:"";position:absolute;right:8px;top:7px;width:6px;height:6px;background:#d96d54;border-radius:50%}.main{padding:34px 36px 80px;max-width:1470px;margin:auto}.page{display:none}.page.active{display:block}.head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:27px;flex-wrap:wrap}.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:.72rem;font-weight:800;color:#708e92;margin:0 0 8px}h1{font-size:2rem;letter-spacing:-.045em;line-height:1.15;margin:0 0 9px;color:#1a3441}h2{font-size:1.15rem;letter-spacing:-.02em;margin:0}h3{font-size:1rem;margin:0}.sub{color:#63777c;margin:0;line-height:1.5}.buttons{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.btn{border:1px solid #cedbd8;background:#fff;color:#203b45;border-radius:9px;padding:10px 15px;font-weight:700;min-height:42px}.btn:hover{border-color:#809c9a;background:#f9fcf9}.btn.primary{border-color:#18343f;background:#18343f;color:#fff}.btn.primary:hover{background:#2a5059}.btn.lime{border-color:#d1f078;background:#d1f078;color:#20363b}.btn.danger{color:#ab4f46;border-color:#edceca}.btn.small{padding:7px 10px;min-height:34px;font-size:.82rem}.text-btn{background:none;border:0;padding:4px;color:#2b6670;font-weight:700}.grid{display:grid;gap:18px}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:#fff;border:1px solid #e0e8e6;border-radius:15px;box-shadow:0 2px 6px #18343b08}.metric{padding:20px}.metric .label{color:#6d8184;font-size:.84rem}.metric strong{display:block;font-size:2rem;letter-spacing:-.04em;margin:10px 0 3px}.metric small{color:#688080}.metric.live{background:#dff3d0;border-color:#c6e6b7}.metric.live .label{color:#446348}.cols{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:18px;margin-top:19px}.panel{padding:22px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:17px}.live-banner{background:#203d45;color:#fff;border-radius:13px;padding:22px;display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:16px}.live-banner p{color:#b7d0ce;margin:6px 0 0;font-size:.88rem}.live-banner .tag{background:#d1f078;color:#21404a}.tag{display:inline-flex;align-items:center;gap:6px;border-radius:99px;background:#edf2f1;color:#527176;font-size:.76rem;font-weight:700;padding:5px 9px;white-space:nowrap}.tag.green{background:#e8f5e8;color:#347155}.tag.orange{background:#fff1e2;color:#9b6537}.tag.red{background:#fcebe8;color:#ab594e}.tag.blue{background:#e8f1f3;color:#3d7480}.class-list{display:grid;gap:10px}.class-row{display:flex;align-items:center;gap:14px;border:1px solid #e3ebe9;border-radius:11px;padding:14px;cursor:pointer}.class-row:hover{border-color:#91ada8;background:#f9fcfa}.class-icon{width:44px;height:44px;background:#e9f1ef;color:#47726d;border-radius:10px;display:grid;place-items:center;font-size:1.2rem;flex:none}.class-row .grow{flex:1}.class-row p,.review-row p{margin:4px 0 0;color:#6d8185;font-size:.83rem}.arrow{color:#7c9396}.review-row{border-bottom:1px solid #ecf0ee;padding:13px 0;display:flex;gap:10px;align-items:center}.review-row:last-child{border:0}.review-row .grow{flex:1}.review-row .avatar{width:35px;height:35px;font-size:.78rem}.section-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.class-card{padding:22px;cursor:pointer;display:flex;flex-direction:column;gap:18px}.class-card:hover{border-color:#9fbab2;transform:translateY(-1px)}.class-card .symbol{background:#edf5ee;color:#43715a;width:42px;height:42px;display:grid;place-items:center;border-radius:10px}.class-card:nth-child(2) .symbol{background:#eaf1f8;color:#4c6a9a}.class-card:nth-child(3) .symbol{background:#f6eee8;color:#986c51}.class-card .meta{display:flex;gap:17px;color:#6c8186;font-size:.83rem}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:19px 0;flex-wrap:wrap}.search{border:1px solid #d4e0dd;border-radius:9px;padding:10px 12px;min-width:250px;background:#fff;min-height:42px}.select{border:1px solid #d4e0dd;border-radius:9px;padding:9px 12px;background:#fff;min-height:42px;color:#2a454d}.tabs{display:flex;gap:23px;border-bottom:1px solid #dbe5e2;margin-bottom:20px;overflow:auto}.tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:12px 2px;color:#70858a;white-space:nowrap}.tabs button.active{border-bottom-color:#244b54;color:#244b54;font-weight:750}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;text-align:left}.table th{color:#72878a;font-weight:650;font-size:.79rem;background:#f8faf9}.table th,.table td{border-bottom:1px solid #edf1ef;padding:13px 12px;white-space:nowrap}.table td{font-size:.87rem}.table tr:last-child td{border-bottom:0}.table td strong{color:#213b44}.muted{color:#748a8d}.code-box{border:1px dashed #b9cfc8;background:#f5faf6;border-radius:11px;padding:17px;display:flex;justify-content:space-between;align-items:center;gap:12px}.code-box strong{font-size:1.4rem;letter-spacing:.13em}.detail-aside{display:grid;gap:17px;align-content:start}.form{display:grid;gap:16px}.field{display:grid;gap:7px}.field label{font-size:.86rem;font-weight:700;color:#38545c}.field input,.field textarea,.field select{width:100%;background:#fff;border:1px solid #cfdedb;border-radius:9px;padding:11px 12px;color:#253f48}.field textarea{min-height:87px;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.hint{font-size:.79rem;color:#75898b;line-height:1.45}.check-row{border:1px solid #e3eae8;border-radius:10px;padding:13px 14px;display:flex;gap:12px;align-items:center}.check-row input{accent-color:#255763;width:18px;height:18px}.check-row div{flex:1}.check-row small{display:block;color:#74888a;margin-top:3px}.progress{height:8px;background:#e9efec;border-radius:10px;overflow:hidden}.progress>span{height:100%;background:#89c567;display:block;border-radius:10px}.stack{display:grid;gap:15px}.review-card{padding:20px;display:grid;grid-template-columns:1fr auto;gap:15px;align-items:center}.review-card p{margin:6px 0;color:#6c8184;font-size:.89rem}.review-card .evidence{background:#f6f8f7;padding:10px 12px;border-radius:8px;color:#435f67;font-size:.83rem}.review-card .buttons{justify-content:flex-end}.status-big{display:flex;align-items:center;gap:12px}.status-big .avatar{width:45px;height:45px}.session-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:18px}.session-panel{padding:22px}.big-code{font-size:3rem;letter-spacing:.14em;font-weight:850;text-align:center;margin:20px 0 4px}.countdown{text-align:center;color:#688085;font-size:.84rem}.summary-bar{display:flex;gap:20px;flex-wrap:wrap;margin:16px 0}.summary-bar strong{font-size:1.5rem;display:block}.summary-bar small{color:#71878b}.notice{background:#edf6eb;border:1px solid #d4e9d0;border-radius:10px;padding:13px;color:#496b4d;font-size:.85rem}.empty{padding:38px;text-align:center;color:#718588}.empty strong{display:block;color:#2f4b54;margin-bottom:5px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1026309c;display:none;align-items:center;justify-content:center;padding:20px;z-index:20}.modal-backdrop.show{display:flex}.modal{background:#fff;border-radius:16px;padding:26px;width:min(520px,100%);max-height:90vh;overflow:auto;box-shadow:0 30px 70px #08181b55}.modal h2{font-size:1.35rem;margin-bottom:7px}.modal p{color:#687f82;margin:0 0 20px;line-height:1.45}.modal .buttons{justify-content:flex-end;margin-top:20px}.toast{position:fixed;right:22px;bottom:22px;padding:13px 17px;border-radius:9px;background:#203d45;color:#fff;box-shadow:0 9px 30px #1233;display:none;z-index:40;font-size:.88rem}.toast.show{display:block}.projector{position:fixed;top:0;right:0;bottom:0;left:0;background:#142e37;color:#fff;z-index:30;display:none;padding:3vw}.projector.show{display:flex;flex-direction:column;justify-content:space-between}.projector .close{align-self:flex-end;background:#ffffff20;border:1px solid #ffffff40;color:#fff}.projector .center{text-align:center}.projector .center h1{color:#fff;font-size:3vw}.projector .code{font-size:11vw;letter-spacing:.12em;font-weight:850;color:#d1f078;line-height:1.25}.projector .bottom{display:flex;justify-content:space-between;color:#b7cbce;font-size:1.3rem}.menu-mobile{display:none}.login-preview{max-width:460px;margin:40px auto}.footnote{margin-top:25px;color:#7d9093;font-size:.76rem}.pill{font-size:.72rem;border:1px solid #d8e5df;border-radius:99px;padding:5px 8px;color:#66817c}hr{border:0;border-top:1px solid #e8efed;margin:18px 0}.mobile-nav,.mobile-attendance,.mobile-subnav{display:none}@media (max-width:1100px){.metrics,.section-grid{grid-template-columns:repeat(2,1fr)}.session-layout,.cols{grid-template-columns:1fr}}@media (max-width:760px){:root{font-size:16px}body{background:#f5f7f6}.app{display:block}.side{position:fixed;z-index:25;left:-270px;transition:left .2s;width:258px;box-shadow:15px 0 32px #102b3430}.side.open{left:0}.menu-mobile{display:inline-flex;border:0;background:transparent;font-size:1.28rem;min-height:44px;min-width:44px;align-items:center;justify-content:center;padding:0}.topbar{padding:0 14px;height:58px;position:sticky;top:0;z-index:9;box-shadow:0 1px 8px #15353b0b}.topbar .crumb{font-weight:750;color:#24404a;font-size:.93rem}.topbar .top-actions{gap:3px}.topbar .avatar{cursor:pointer}.date,.notification{display:none}.main{padding:19px 15px calc(110px + env(safe-area-inset-bottom));max-width:600px}.head{margin-bottom:18px;gap:13px}.head h1{font-size:1.6rem;letter-spacing:-.035em}.head .sub{font-size:.88rem}.eyebrow{font-size:.67rem;margin-bottom:7px}.head>.buttons{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.head>.buttons .btn{min-height:44px;white-space:normal;padding:8px;font-size:.8rem}.head>.buttons .btn:last-child:nth-child(3){grid-column:1/-1}.head>.btn.primary{width:100%}.btn,.select,.search{min-height:44px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.metric{padding:15px;min-height:121px}.metric .label{font-size:.78rem}.metric strong{font-size:1.72rem;margin:8px 0 2px}.metric small{font-size:.72rem;line-height:1.25;display:block}.cols{display:flex;flex-direction:column;gap:12px;margin-top:13px}.panel{padding:17px}.panel-head{margin-bottom:12px}.panel-head h2{font-size:1rem}.live-banner{align-items:stretch;flex-direction:column;padding:18px;gap:14px}.live-banner .btn{width:100%}.live-banner h2{font-size:1.15rem}.live-banner p{line-height:1.4}.class-row{padding:12px;gap:10px}.class-row strong{font-size:.9rem}.class-row p{font-size:.76rem}.section-grid{grid-template-columns:1fr;gap:11px}.class-card{padding:18px;gap:12px}.class-card h2{font-size:1.12rem}.toolbar{margin:13px 0;gap:8px}.toolbar .search{width:100%;min-width:0}.toolbar>.buttons{width:100%;display:grid;grid-template-columns:1fr 1fr}.toolbar>.buttons select{grid-column:1/-1}.toolbar>.buttons input{min-width:0;width:100%}.toolbar>.select{width:100%}.tabs{gap:16px;margin-bottom:13px}.tabs button{font-size:.88rem;min-height:44px}.detail-aside{order:-1}.detail-aside .card:last-child{display:none}.session-layout{display:flex;flex-direction:column;gap:12px}.session-layout>.stack{display:contents}.session-layout>.stack>.card:first-child{order:0}.session-layout>.card{order:1}.session-layout>.stack>.card:last-child{order:2}.session-panel{padding:17px}.big-code{font-size:2.65rem;margin:13px 0 0}.summary-bar{justify-content:space-around;gap:8px;margin:12px 0;padding:12px 0;background:#f6f9f7;border-radius:10px}.summary-bar strong{font-size:1.35rem}.summary-bar small{font-size:.74rem}.session-layout>.card.panel .table-wrap{display:none}.mobile-attendance{display:grid;gap:9px}.attendance-card{border:1px solid #e0e9e5;border-radius:11px;padding:13px;background:#fff;display:grid;gap:10px}.attendance-card .person{display:flex;justify-content:space-between;align-items:center;gap:8px}.attendance-card .person strong{font-size:.91rem}.attendance-card .person small{display:block;color:#73888b;font-size:.76rem;margin-top:3px}.attendance-card .meta{display:flex;justify-content:space-between;align-items:center;gap:8px;color:#6f8185;font-size:.76rem}.attendance-card .text-btn{padding:6px 0;min-height:40px;text-align:right}.review-card{grid-template-columns:1fr;padding:16px;gap:12px}.review-card .buttons{display:grid;grid-template-columns:1fr 1fr}.review-card .buttons .btn{min-height:44px}.review-card .evidence{line-height:1.45}.mobile-subnav{display:flex;gap:8px;margin:-2px 0 16px}.mobile-subnav .btn{flex:1;font-size:.83rem}.mobile-subnav .btn.current{background:#1e3c46;color:#fff;border-color:#1e3c46}.table th,.table td{padding:11px 9px}.table-wrap{margin:0 -5px}.table{min-width:510px}#class-tab-content .table{min-width:470px}#summary .table-wrap{overflow:visible}#summary .table{display:block;min-width:0}#summary .table thead{display:none}#summary .table tbody{display:grid;gap:10px}#summary .table tr{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;background:#fff;border:1px solid #e1e9e7;border-radius:11px;padding:13px}#summary .table td{border:0;padding:0;white-space:normal;font-size:.82rem}#summary .table td:first-child{grid-column:1/-1;font-size:.93rem}#summary .table td:nth-child(2){grid-column:1/-1;color:#73878a}#summary .table td:nth-child(3):before{content:"Có mặt · ";color:#819497}#summary .table td:nth-child(4):before{content:"Muộn · ";color:#819497}#summary .table td:nth-child(5):before{content:"Vắng · ";color:#819497}#summary .table td:nth-child(6){grid-column:1/2}#summary .table td:last-child{grid-column:2/4;text-align:right}.form-row{grid-template-columns:1fr}.form{gap:14px}.field input,.field textarea,.field select{min-height:44px}.check-row{align-items:flex-start}.check-row input{margin-top:3px}.modal-backdrop{align-items:flex-end;padding:0}.modal{width:100%;max-width:none;border-radius:18px 18px 0 0;padding:22px 18px calc(20px + env(safe-area-inset-bottom));max-height:88dvh}.modal .buttons{display:grid;grid-template-columns:1fr 1fr}.modal .buttons .btn{min-height:46px}.mobile-nav{position:fixed;z-index:12;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:#fff;border-top:1px solid #dae5e1;padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -7px 20px #1a363b10}.mobile-nav button{background:transparent;border:0;color:#75888a;min-height:53px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.69rem;font-weight:650;position:relative;padding:2px}.mobile-nav button.active{color:#1f5057}.mobile-nav button.active:before{content:"";position:absolute;top:-6px;width:30px;height:3px;border-radius:3px;background:#317d77}.mobile-nav .icon{font-size:1.35rem;line-height:1.2}.projector{padding:20px}.projector .code{font-size:14vw}.projector .center h1{font-size:6vw}.projector .bottom{font-size:.83rem;gap:10px}.projector .close{font-size:.82rem}.footnote{text-align:center;font-size:.7rem}}.sv button,.sv input,.sv select,.sv textarea{font:inherit}.sv button{cursor:pointer}.sv button:disabled{opacity:.5;cursor:not-allowed}.sv a{color:inherit;text-decoration:none}.sv button:focus-visible,.sv input:focus-visible,.sv select:focus-visible,.sv textarea:focus-visible{outline:3px solid #83bb83;outline-offset:2px}.sv .app{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}.sv .side{background:#172e38;color:#b7c9cd;padding:28px 16px;display:flex;flex-direction:column;gap:26px;position:sticky;top:0;height:100vh}.sv .brand{display:flex;align-items:center;gap:11px;color:#fff;font-size:1.2rem;font-weight:800;padding:0 12px}.sv .brand-mark{background:#d1f078;color:#19323b;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-weight:900}.sv .side small{display:block;text-transform:uppercase;letter-spacing:.13em;font-size:.7rem;color:#74939b;margin:6px 13px 12px}.sv .nav{display:grid;gap:4px}.sv .nav button{border:0;background:transparent;color:inherit;border-radius:10px;text-align:left;padding:12px 14px;display:flex;align-items:center;gap:12px;width:100%;font-size:.94rem}.sv .nav button:hover,.sv .nav button.active{background:#29434d;color:#fff}.sv .nav button.active:before{content:"";width:4px;height:20px;background:#d1f078;border-radius:4px;margin-left:-14px}.sv .nav button span:first-child{width:22px;text-align:center;font-size:1.15rem}.sv .side-bottom{margin-top:auto;padding:17px 13px 0;border-top:1px solid #38525b;display:flex;align-items:center;gap:10px;font-size:.88rem}.sv .avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#dce9e5;color:#17333d;font-weight:700;flex:none}.sv .side .avatar{background:#547174;color:#fff}.sv .workspace{min-width:0}.sv .topbar{height:72px;background:#fff;border-bottom:1px solid #e3e9e8;display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:15px}.sv .crumb{color:#5f7379;font-size:.88rem}.sv .top-actions{display:flex;align-items:center;gap:12px}.sv .date{font-size:.84rem;color:#61767b}.sv .main{padding:34px 36px 80px;max-width:1250px;margin:auto}.sv .page{display:none}.sv .page.active{display:block}.sv .head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:27px;flex-wrap:wrap}.sv .eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:.72rem;font-weight:800;color:#708e92;margin:0 0 8px}.sv h1{font-size:2rem;letter-spacing:-.045em;line-height:1.15;margin:0 0 9px;color:#1a3441}.sv h2{font-size:1.15rem;letter-spacing:-.02em;margin:0}.sv h3{font-size:1rem;margin:0}.sv .sub{color:#63777c;margin:0;line-height:1.5}.sv .buttons{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.sv .btn{border:1px solid #cedbd8;background:#fff;color:#203b45;border-radius:9px;padding:10px 15px;font-weight:700;min-height:42px}.sv .btn:hover{border-color:#809c9a;background:#f9fcf9}.sv .btn.primary{border-color:#18343f;background:#18343f;color:#fff}.sv .btn.primary:hover{background:#2a5059}.sv .btn.lime{border-color:#d1f078;background:#d1f078;color:#20363b}.sv .btn.danger{color:#ab4f46;border-color:#edceca}.sv .btn.wide{width:100%}.sv .text-btn{background:none;border:0;padding:4px;color:#2b6670;font-weight:700}.sv .grid{display:grid;gap:18px}.sv .metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.sv .card{background:#fff;border:1px solid #e0e8e6;border-radius:15px;box-shadow:0 2px 6px #18343b08}.sv .metric{padding:20px}.sv .metric .label{color:#6d8184;font-size:.84rem}.sv .metric strong{display:block;font-size:2rem;letter-spacing:-.04em;margin:10px 0 3px}.sv .metric small{color:#688080}.sv .metric.live{background:#dff3d0;border-color:#c6e6b7}.sv .cols{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:18px;margin-top:19px}.sv .panel{padding:22px}.sv .panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:17px}.sv .tag{display:inline-flex;align-items:center;gap:6px;border-radius:99px;background:#edf2f1;color:#527176;font-size:.76rem;font-weight:700;padding:5px 9px;white-space:nowrap}.sv .tag.green{background:#e8f5e8;color:#347155}.sv .tag.orange{background:#fff1e2;color:#9b6537}.sv .tag.red{background:#fcebe8;color:#ab594e}.sv .tag.blue{background:#e8f1f3;color:#3d7480}.sv .live-banner{background:#203d45;color:#fff;border-radius:13px;padding:25px;display:flex;justify-content:space-between;gap:20px;align-items:center}.sv .live-banner h2{font-size:1.32rem}.sv .live-banner p{color:#b7d0ce;margin:7px 0 0;font-size:.9rem}.sv .live-banner .tag{background:#d1f078;color:#21404a;margin-bottom:11px}.sv .class-list,.sv .stack{display:grid;gap:11px}.sv .class-row{display:flex;align-items:center;gap:14px;border:1px solid #e3ebe9;border-radius:11px;padding:14px;cursor:pointer;background:#fff}.sv .class-row:hover{border-color:#91ada8;background:#f9fcfa}.sv .class-icon{width:44px;height:44px;background:#e9f1ef;color:#47726d;border-radius:10px;display:grid;place-items:center;font-size:1.2rem;flex:none}.sv .grow{flex:1;min-width:0}.sv .class-row p,.sv .list-row p{margin:4px 0 0;color:#6d8185;font-size:.83rem}.sv .arrow{color:#7c9396}.sv .section-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.sv .class-card{padding:22px;cursor:pointer;display:grid;gap:16px}.sv .class-card:hover{border-color:#9fbab2}.sv .class-card .symbol{background:#edf5ee;color:#43715a;width:42px;height:42px;display:grid;place-items:center;border-radius:10px}.sv .class-card:nth-child(2) .symbol{background:#eaf1f8;color:#4c6a9a}.sv .class-card:nth-child(3) .symbol{background:#f6eee8;color:#986c51}.sv .class-card .meta{display:flex;gap:17px;color:#6c8186;font-size:.83rem}.sv .toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:19px 0;flex-wrap:wrap}.sv .search,.sv .select{border:1px solid #d4e0dd;border-radius:9px;padding:10px 12px;background:#fff;min-height:42px}.sv .search{min-width:250px}.sv .tabs{display:flex;gap:23px;border-bottom:1px solid #dbe5e2;margin-bottom:20px;overflow:auto}.sv .tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:12px 2px;color:#70858a;white-space:nowrap}.sv .tabs button.active{border-bottom-color:#244b54;color:#244b54;font-weight:750}.sv .form{display:grid;gap:16px}.sv .field{display:grid;gap:7px}.sv .field label{font-size:.86rem;font-weight:700;color:#38545c}.sv .field input,.sv .field textarea,.sv .field select{width:100%;background:#fff;border:1px solid #cfdedb;border-radius:9px;padding:11px 12px;color:#253f48}.sv .field textarea{min-height:90px;resize:vertical}.sv .hint{font-size:.79rem;color:#75898b;line-height:1.45}.sv .notice{background:#edf6eb;border:1px solid #d4e9d0;border-radius:10px;padding:13px;color:#496b4d;font-size:.85rem;line-height:1.5}.sv .notice.warn{background:#fff5e8;border-color:#f0dcc0;color:#886037}.sv .notice.error{background:#fcebe8;border-color:#f1d0cb;color:#a34d43}.sv .empty{padding:38px;text-align:center;color:#718588}.sv .empty strong{display:block;color:#2f4b54;margin-bottom:5px}.sv .list-row{border-bottom:1px solid #ecf0ee;padding:14px 0;display:flex;gap:11px;align-items:center}.sv .list-row:last-child{border:0}.sv .progress{height:8px;background:#e9efec;border-radius:10px;overflow:hidden}.sv .progress>span{height:100%;background:#89c567;display:block;border-radius:10px}.sv .footnote{margin-top:25px;color:#7d9093;font-size:.76rem}.sv hr{border:0;border-top:1px solid #e8efed;margin:18px 0}.sv .menu-mobile,.sv .mobile-nav{display:none}.sv .check-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(270px,1fr);gap:18px}.sv .step{display:flex;align-items:flex-start;gap:12px;padding:14px 0;border-bottom:1px solid #e9efed}.sv .step:last-child{border:0}.sv .step-num{width:29px;height:29px;display:grid;place-items:center;border-radius:50%;background:#e8f2ed;color:#376455;font-size:.8rem;font-weight:800;flex:none}.sv .step strong{font-size:.9rem}.sv .step p{color:#71868a;margin:4px 0 0;font-size:.82rem;line-height:1.4}.sv .code-input{font-size:2rem;letter-spacing:.18em;font-weight:800;text-align:center;font-variant-numeric:tabular-nums}.sv .status-card{padding:17px;border:1px solid #e1e9e7;border-radius:11px;margin-bottom:11px}.sv .status-card .top{display:flex;align-items:center;justify-content:space-between;gap:8px}.sv .status-card p{margin:8px 0 0;color:#6d8285;font-size:.82rem;line-height:1.45}.sv .bar-note{background:#f6f9f7;border-radius:10px;padding:12px 15px;font-size:.84rem;color:#547076}.sv .selectable{cursor:pointer}.sv .selectable:hover{border-color:#90aca6}.sv .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1026309c;display:none;align-items:center;justify-content:center;padding:20px;z-index:30}.sv .modal-backdrop.show{display:flex}.sv .modal{background:#fff;border-radius:16px;padding:26px;width:min(520px,100%);max-height:90vh;overflow:auto;box-shadow:0 30px 70px #08181b55}.sv .modal h2{font-size:1.35rem;margin-bottom:7px}.sv .modal p{color:#687f82;margin:0 0 20px;line-height:1.45}.sv .modal .buttons{justify-content:flex-end;margin-top:20px}.sv .toast{position:fixed;right:22px;bottom:22px;padding:13px 17px;border-radius:9px;background:#203d45;color:#fff;box-shadow:0 9px 30px #1233;display:none;z-index:40;font-size:.88rem}.sv .toast.show{display:block}.sv .qr-view{position:fixed;top:0;right:0;bottom:0;left:0;background:#142e37;color:#fff;z-index:35;display:none;flex-direction:column;padding:18px}.sv .qr-view.show{display:flex}.sv .qr-view video{width:100%;max-height:65vh;object-fit:cover;border-radius:15px;margin:auto}.sv .qr-view .btn{align-self:flex-end}.sv .qr-view p{text-align:center;line-height:1.5}@media (max-width:1050px){.sv .cols,.sv .check-grid{grid-template-columns:1fr}}@media (max-width:760px){.sv .app{display:block}.sv .side{position:fixed;z-index:25;left:-270px;transition:left .2s;width:258px;box-shadow:15px 0 32px #102b3430}.sv .side.open{left:0}.sv .menu-mobile{display:inline-flex;border:0;background:transparent;font-size:1.28rem;min-height:44px;min-width:44px;align-items:center;justify-content:center;padding:0}.sv .topbar{padding:0 14px;height:58px;position:sticky;top:0;z-index:9;box-shadow:0 1px 8px #15353b0b}.sv .topbar .crumb{font-weight:750;color:#24404a;font-size:.93rem}.sv .date{display:none}.sv .main{padding:19px 15px calc(110px + env(safe-area-inset-bottom));max-width:600px}.sv .head{margin-bottom:18px;gap:13px}.sv .head h1{font-size:1.6rem;letter-spacing:-.035em}.sv .head .sub{font-size:.88rem}.sv .eyebrow{font-size:.67rem;margin-bottom:7px}.sv .head>.buttons{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}.sv .head>.buttons .btn{min-height:44px;white-space:normal;padding:8px;font-size:.82rem}.sv .btn,.sv .select,.sv .search{min-height:44px}.sv .metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.sv .metric{padding:15px;min-height:121px}.sv .metric .label{font-size:.78rem}.sv .metric strong{font-size:1.72rem;margin:8px 0 2px}.sv .metric small{font-size:.72rem;line-height:1.25;display:block}.sv .metrics .metric:last-child{grid-column:1/-1;min-height:100px}.sv .cols,.sv .check-grid{display:flex;flex-direction:column;gap:12px;margin-top:13px}.sv .panel{padding:17px}.sv .panel-head{margin-bottom:12px}.sv .panel-head h2{font-size:1rem}.sv .live-banner{align-items:stretch;flex-direction:column;padding:19px;gap:15px}.sv .live-banner .btn{width:100%}.sv .section-grid{grid-template-columns:1fr;gap:11px}.sv .class-card{padding:18px;gap:12px}.sv .class-row{padding:12px;gap:10px}.sv .class-row strong{font-size:.9rem}.sv .class-row p{font-size:.76rem}.sv .toolbar{margin:13px 0;gap:8px}.sv .toolbar .search,.sv .toolbar .select{width:100%;min-width:0}.sv .tabs{gap:16px;margin-bottom:13px}.sv .tabs button{font-size:.88rem;min-height:44px}.sv .field input,.sv .field textarea,.sv .field select{min-height:44px}.sv .code-input{font-size:1.8rem}.sv .modal-backdrop{align-items:flex-end;padding:0}.sv .modal{width:100%;max-width:none;border-radius:18px 18px 0 0;padding:22px 18px calc(20px + env(safe-area-inset-bottom));max-height:88dvh}.sv .modal .buttons{display:grid;grid-template-columns:1fr 1fr}.sv .modal .buttons .btn{min-height:46px}.sv .mobile-nav{position:fixed;z-index:12;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:#fff;border-top:1px solid #dae5e1;padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -7px 20px #1a363b10}.sv .mobile-nav button{background:transparent;border:0;color:#75888a;min-height:53px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.69rem;font-weight:650;position:relative;padding:2px}.sv .mobile-nav button.active{color:#1f5057}.sv .mobile-nav button.active:before{content:"";position:absolute;top:-6px;width:30px;height:3px;border-radius:3px;background:#317d77}.sv .mobile-nav .icon{font-size:1.35rem;line-height:1.2}.sv .footnote{text-align:center;font-size:.7rem}}
