.student-remark { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: pre-wrap; overflow-wrap: anywhere; max-width: 260px; min-width: 120px; color: #56706a; margin-top: 6px; line-height: 1.5; }
.remark-full { white-space: pre-wrap; overflow-wrap: anywhere; max-width: 320px; }
#student-remark, #detail-remark { display: block; width: 100%; min-height: 120px; margin-top: 6px; padding: 12px; border: 1px solid var(--line); border-radius: 10px; font: inherit; font-size: 14px; line-height: 1.6; color: var(--ink); resize: vertical; }
.course-content-full { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.6; }
:root{--teal:#0f766e;--teal-2:#14b8a6;--ink:#172b36;--muted:#6b7d86;--bg:#f4f8f7;--line:#e4ecea;--card:#fff;--orange:#f59e0b;--red:#ef6262;--blue:#4384f5;--shadow:0 10px 30px rgba(16,65,61,.06)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer;border:0}.app-shell{display:flex;min-height:100vh}.sidebar{width:240px;background:#103d3b;color:#d7efeb;padding:24px 16px 20px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;color:white;margin:0 8px 30px}.brand-mark{background:#1a6660;border-radius:12px;padding:9px;font-size:20px}.brand strong{display:block;font-size:15px}.brand small,.current-user small{display:block;color:#91b9b3;font-size:11px;margin-top:4px}.current-user{background:#1a5550;border-radius:14px;padding:13px 12px;display:flex;align-items:center;gap:9px;margin:0 0 22px}.current-user strong{display:block;font-size:13px;color:white}.avatar,.top-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#f7bd69;color:#68421c;font-weight:700}.online{width:7px;height:7px;border-radius:50%;background:#66dc9e;margin-left:auto;align-self:flex-start}.nav-item{width:100%;text-align:left;background:transparent;color:#9fc3bf;padding:13px 13px;border-radius:10px;margin:2px 0;font-size:14px}.nav-item span{margin-left:10px}.nav-item.active,.nav-item:hover{background:#1e6861;color:white}.sidebar-foot{margin-top:auto;color:#769e99;font-size:11px;padding:8px}.main{flex:1;min-width:0}.topbar{height:84px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.breadcrumb{font-size:12px;color:var(--muted)}.breadcrumb span{color:var(--teal)}h1{font-size:22px;margin:8px 0 0}.top-actions{display:flex;align-items:center;gap:14px}.icon-btn{background:#f3f7f6;color:#58726f;border-radius:10px;width:35px;height:35px}.top-avatar{width:34px;height:34px}.mobile-menu{display:none}.content{padding:30px 38px;max-width:1400px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.page-head h2{margin:0;font-size:24px}.page-head p{color:var(--muted);font-size:13px;margin:7px 0 0}.btn{border-radius:9px;padding:11px 16px;font-size:13px;font-weight:700}.btn-primary{background:var(--teal);color:#fff;box-shadow:0 5px 12px #0f766e2e}.btn-primary:hover{background:#0b5e58}.btn-light{background:#edf5f3;color:var(--teal)}.btn-small{padding:8px 12px;font-size:12px}.grid{display:grid;gap:16px}.stats{grid-template-columns:repeat(4,1fr)}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow)}.stat{position:relative;min-height:130px}.stat-label{color:var(--muted);font-size:13px}.stat-value{font-size:30px;font-weight:750;margin:12px 0 8px}.stat-meta{font-size:12px;color:var(--teal)}.stat-icon{position:absolute;right:18px;top:18px;width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#e6f5f2;color:var(--teal);font-size:18px}.layout-2{grid-template-columns:1.25fr .75fr;margin-top:18px}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-head h3{margin:0;font-size:16px}.muted{font-size:12px;color:var(--muted)}.activity{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.activity:last-child{border:0}.dot{width:9px;height:9px;border-radius:50%;background:var(--teal-2);margin-top:6px}.activity strong{font-size:13px}.activity p{margin:4px 0 0;color:var(--muted);font-size:12px}.venue{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.venue:last-child{border:0}.venue-name{font-weight:700;font-size:14px}.venue small{color:var(--muted);display:block;margin-top:5px;font-size:12px}.bar-wrap{width:120px}.bar-label{font-size:12px;color:var(--muted);text-align:right;margin-bottom:5px}.bar{height:7px;background:#e8f0ef;border-radius:8px;overflow:hidden}.bar i{display:block;height:100%;background:var(--teal-2);border-radius:8px}.table-card{padding:0;overflow:hidden}.table-tools{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center;flex-wrap:wrap}.search{border:1px solid var(--line);border-radius:9px;padding:10px 12px;min-width:230px;background:white;outline:none}.select{border:1px solid var(--line);border-radius:9px;padding:10px 12px;color:var(--ink);background:white}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px;min-width:760px}th{text-align:left;color:var(--muted);font-size:12px;font-weight:600;background:#fbfcfc}th,td{padding:15px 20px;border-bottom:1px solid var(--line);white-space:nowrap}tbody tr:hover{background:#fbfefd}.student-cell{display:flex;align-items:center;gap:10px}.mini-avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#d9f1ec;color:var(--teal);font-size:12px;font-weight:700}.tag{display:inline-block;border-radius:20px;padding:5px 8px;font-size:11px;font-weight:700}.tag-green{background:#e3f6ed;color:#15805b}.tag-yellow{background:#fff3d6;color:#9d6a00}.tag-blue{background:#e8f0ff;color:#346ec8}.tag-gray{background:#edf1f1;color:#72817f}.link{color:var(--teal);font-weight:700;background:transparent;padding:0}.schedule-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.day{background:white;border:1px solid var(--line);border-radius:12px;min-height:270px;padding:12px}.day.today{border:2px solid var(--teal)}.day-title{font-size:12px;color:var(--muted);text-align:center}.day-num{text-align:center;font-size:18px;font-weight:750;margin:6px 0 14px}.lesson{padding:10px;border-radius:9px;background:#e7f6f2;margin-bottom:8px;border-left:3px solid var(--teal);font-size:11px}.lesson.blue{background:#e9f0ff;border-color:var(--blue)}.lesson.orange{background:#fff4df;border-color:var(--orange)}.lesson strong{display:block;font-size:12px;margin-bottom:5px}.lesson small{color:#54706c}.filters{display:flex;gap:9px;flex-wrap:wrap}.report-grid{grid-template-columns:repeat(3,1fr)}.big-number{font-size:28px;font-weight:750;margin:8px 0}.chart{height:180px;display:flex;align-items:end;gap:12px;padding:12px 5px 0}.chart-col{height:100%;flex:1;display:flex;align-items:end;justify-content:center;position:relative}.chart-col i{width:70%;background:linear-gradient(#33c6af,var(--teal));border-radius:6px 6px 0 0;min-height:8px}.chart-col span{position:absolute;bottom:-22px;font-size:11px;color:var(--muted)}.modal-back{position:fixed;inset:0;background:#092a284d;display:grid;place-items:center;padding:18px;z-index:5}.modal{background:white;width:min(560px,100%);max-height:92vh;overflow:auto;border-radius:18px;padding:24px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-head h3{margin:0;font-size:18px}.close{background:#f2f6f5;border-radius:50%;width:30px;height:30px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.field input,.field select{width:100%;border:1px solid var(--line);border-radius:9px;padding:11px;outline:none;background:#fff}.field.full{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.empty{padding:50px;text-align:center;color:var(--muted)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:#173c39;color:white;padding:12px 18px;border-radius:10px;font-size:13px;opacity:0;pointer-events:none;transition:.25s;z-index:10}.toast.show{opacity:1;transform:translate(-50%,0)}.notice{background:#eaf7f4;border:1px solid #cdece4;border-radius:12px;padding:13px 15px;color:#23665f;font-size:13px;margin-bottom:18px}.setting-row{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}.setting-row:last-child{border:0}.setting-row strong{display:block;font-size:14px}.setting-row small{color:var(--muted);display:block;margin-top:4px}.switch{width:42px;height:23px;background:var(--teal);border-radius:20px;padding:3px}.switch:after{content:"";display:block;background:white;width:17px;height:17px;border-radius:50%;margin-left:19px}.bottom-nav{display:none}@media(max-width:900px){.sidebar{width:205px}.content{padding:24px}.topbar{padding:0 24px}.stats{grid-template-columns:repeat(2,1fr)}.layout-2{grid-template-columns:1fr}.schedule-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:640px){.sidebar{position:fixed;left:-240px;top:0;bottom:0;z-index:4;transition:.2s}.sidebar.open{left:0}.main{width:100%}.topbar{height:72px;padding:0 16px}.mobile-menu{display:block;background:transparent;color:var(--teal);font-size:21px;margin-right:10px}.topbar>div:first-of-type{flex:1}.breadcrumb{font-size:11px}.topbar h1{font-size:17px;margin-top:5px}.top-actions .icon-btn{display:none}.content{padding:20px 15px 82px}.page-head{align-items:center}.page-head h2{font-size:20px}.page-head p{font-size:12px}.page-head .btn{padding:10px 11px}.stats{gap:10px}.card{padding:16px;border-radius:13px}.stat{min-height:112px}.stat-value{font-size:24px;margin:9px 0 6px}.stat-icon{right:12px;top:13px;width:32px;height:32px}.layout-2{margin-top:12px}.schedule-grid{grid-template-columns:repeat(2,1fr);gap:7px}.day{min-height:205px;padding:9px}.day-num{margin-bottom:9px}.table-tools{padding:13px}.search{min-width:0;width:100%}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.modal{padding:19px}.bottom-nav{position:fixed;display:flex;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:3;justify-content:space-around;padding:7px 3px calc(7px + env(safe-area-inset-bottom))}.bottom-nav button{background:white;color:var(--muted);font-size:10px;padding:5px}.bottom-nav button.active{color:var(--teal);font-weight:700}.bottom-nav button span{display:block;font-size:17px;margin-bottom:2px}}
.login-screen{min-height:100vh;background:radial-gradient(circle at 78% 18%,#d7f4ee 0,#f4f8f7 34%,#eef7f5 100%);display:grid;place-items:center;padding:24px}.login-wrap{width:min(980px,100%);display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:center}.login-intro{padding:20px}.login-logo{display:flex;align-items:center;gap:12px;color:var(--teal);font-size:17px;font-weight:800}.login-logo span{display:grid;place-items:center;background:#d7f4ee;border-radius:14px;width:48px;height:48px;font-size:25px}.login-intro h1{font-size:42px;line-height:1.18;margin:28px 0 15px;color:#143f3d}.login-intro p{font-size:15px;color:var(--muted);line-height:1.8;margin:0}.login-points{display:flex;gap:9px;flex-wrap:wrap;margin-top:25px}.login-points span{background:#fff;color:#43716d;border:1px solid #dcefeb;padding:7px 10px;border-radius:20px;font-size:12px}.login-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 18px 55px rgba(15,118,110,.12)}.login-card h2{margin:0;font-size:22px}.login-card>p{margin:8px 0 21px;color:var(--muted);font-size:13px}.role-list{display:grid;gap:12px}.role-choice{display:flex;align-items:center;gap:13px;border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px;text-align:left;color:var(--ink);transition:.18s}.role-choice:hover{border-color:#82d7ca;background:#f5fcfa;transform:translateY(-1px)}.role-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#e5f6f2;color:var(--teal);font-size:20px}.role-choice strong{display:block;font-size:14px}.role-choice small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.role-arrow{margin-left:auto;color:var(--teal);font-size:18px}.rule-box{background:#f4fbf9;border:1px solid #d5eee8;border-radius:13px;padding:14px;margin:16px 0}.rule-box strong{display:block;font-size:14px;color:var(--teal);margin-bottom:9px}.rule-box p{margin:6px 0;color:#4e6d69;font-size:12px;line-height:1.6}.login-back{background:transparent;color:var(--muted);font-size:12px;padding:0;margin-bottom:15px}.login-card .btn{width:100%;margin-top:6px}.login-note{text-align:center;color:#9aa9a7;font-size:11px;margin-top:18px}.role-badge{display:inline-block;background:#e5f6f2;color:var(--teal);padding:5px 9px;border-radius:20px;font-size:11px;font-weight:700;margin-top:7px}@media(max-width:760px){.login-wrap{grid-template-columns:1fr;gap:18px;max-width:480px}.login-intro{text-align:center;padding:5px}.login-logo{justify-content:center}.login-intro h1{font-size:30px;margin:18px 0 8px}.login-intro p{font-size:13px}.login-points{justify-content:center;margin-top:14px}.login-intro .login-points span:nth-child(n+3){display:none}.login-card{padding:21px}}
.logout-btn{width:100%;text-align:left;background:#174945;color:#b7d8d3;border-radius:10px;padding:11px 13px;font-size:12px;margin-top:auto;margin-bottom:10px}.logout-btn:hover{background:#255f59;color:#fff}
.field-hint{display:block;color:var(--teal);font-size:11px;margin-top:5px}
.app-shell[hidden]{display:none!important}
.repeat-choice{width:100%}.check-pill{display:inline-flex;align-items:center;gap:6px;background:#f3f8f7;border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:4px 5px 4px 0;font-size:12px;color:var(--ink);cursor:pointer}.check-pill:has(input:checked){background:#e3f6f1;border-color:#8bd8cb;color:var(--teal);font-weight:700}.check-pill input{accent-color:var(--teal)}.weekday-grid{display:flex;flex-wrap:wrap;margin-top:4px}.repeat-end{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--muted)}.repeat-end input{border:1px solid var(--line);border-radius:8px;padding:8px;color:var(--ink)}
#instant-lesson-save{background:#dc2626;color:#fff;box-shadow:0 5px 12px #dc262633}#instant-lesson-save:hover{background:#b91c1c}
.custom-date-range{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:12px}.custom-date-range input{border:1px solid var(--line);border-radius:9px;padding:10px 9px;color:var(--ink);background:#fff}.custom-date-range[hidden]{display:none}.chart-col{z-index:1}.chart-col i{position:relative;cursor:help;transition:filter .15s,transform .15s}.chart-col:hover i{filter:brightness(1.12);transform:scaleX(1.05)}.chart-tooltip{position:absolute!important;left:50%;bottom:calc(100% + 8px)!important;transform:translate(-50%,6px);display:flex!important;flex-direction:column;gap:2px;align-items:center;background:#173c39;color:#fff!important;border-radius:8px;padding:7px 10px;white-space:nowrap;font-size:11px!important;line-height:1.2;box-shadow:0 6px 16px #173c3940;opacity:0;visibility:hidden;pointer-events:none;z-index:3;transition:opacity .15s,transform .15s}.chart-tooltip strong{font-size:11px}.chart-tooltip b{font-size:13px;color:#a8f1e2}.chart-col:hover .chart-tooltip{opacity:1;visibility:visible;transform:translate(-50%,0)}.chart-label{position:absolute!important;bottom:-22px!important;font-size:11px!important;color:var(--muted)!important}
@media(max-width:640px){.custom-date-range{width:100%;justify-content:flex-start}.custom-date-range input{flex:1;min-width:0}.chart-tooltip{font-size:10px!important;padding:6px 8px}}
.btn-danger{background:#dc2626;color:#fff;box-shadow:0 5px 12px #dc26263d}.btn-danger:hover{background:#b91c1c}.switch:not(.on){background:#b9c8c5}.switch:not(.on):after{margin-left:0}.field-hint{display:block;color:var(--muted);font-size:11px;margin-top:5px}
option:disabled{color:#a7b3b1;background:#f1f4f3}
.auth-field{margin-top:14px}.auth-field label{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px;margin-bottom:6px}.auth-field label small{font-size:11px;color:#9aa9a7}.auth-field input{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px 13px;background:#fff;outline:none;color:var(--ink);transition:border-color .15s,box-shadow .15s}.auth-field input:focus{border-color:#55bfae;box-shadow:0 0 0 3px #55bfae22}.auth-submit{margin-top:20px!important}.login-link{display:block;margin:14px auto 0;background:transparent;color:var(--teal);font-size:12px;font-weight:700;padding:4px 8px}.login-link:hover{text-decoration:underline}.login-feedback{border-radius:10px;padding:10px 12px;font-size:12px;line-height:1.5;margin-top:15px}.login-feedback.error{background:#fff0f0;border:1px solid #ffd4d4;color:#b23d3d}.login-feedback.success{background:#eaf8f2;border:1px solid #c6ecda;color:#1e7a58}.auth-section-title{font-size:12px;font-weight:700;color:var(--teal);border-top:1px solid var(--line);padding-top:15px;margin-top:18px}.auth-section-title:first-of-type{border-top:0;padding-top:0;margin-top:4px}.auth-notice{margin:18px 0 0;font-size:11px;line-height:1.55}.auth-submit:disabled{cursor:wait;opacity:.7}
.admin-create-entry{margin-top:14px!important;border:1px solid #b9e2db}.admin-create-note{text-align:center;color:var(--muted);font-size:11px;line-height:1.55;margin:7px 6px 0}
.account-manager-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.account-manager-head p{margin:6px 0 0;line-height:1.5}.account-password-note{display:block;margin-top:4px}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#f1f6f5;border-radius:5px;padding:3px 5px;color:#23665f;font-size:12px}@media(max-width:640px){.account-manager-head{flex-direction:column}.account-manager-head .btn{width:100%}}
.page-actions,.quick-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}.quick-card{margin-top:18px}.activity-action{margin-left:auto;align-self:center}.block{display:block;margin-top:3px}.empty.compact{padding:24px}.paragraph{line-height:1.7;margin:0 0 16px}.action-cell{display:flex;align-items:center;gap:12px}.course-tabs{display:flex;gap:8px;margin:0 0 14px}.course-tabs button{background:#e8f0ee;color:var(--muted);padding:9px 14px;border-radius:9px;font-size:12px;font-weight:700}.course-tabs button.active{background:var(--teal);color:#fff}.sales-stats{margin-bottom:18px}.report-toolbar{margin-bottom:18px;padding:14px 18px}.settings-head{padding:18px 20px 0}.balance-title{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:14px;margin-top:4px}.balance-title strong{color:var(--teal);font-size:14px}.balance-title span{color:var(--muted);font-size:12px}.summary-box{background:#f7faf9;border:1px solid var(--line);border-radius:12px;padding:15px;margin-bottom:15px}.summary-box strong{font-size:15px}.summary-box p{color:var(--muted);font-size:12px;margin:7px 0 0;line-height:1.6}.warning-notice{background:#fff4e5;border-color:#f6d7a6;color:#8c5b13}.confirm-time{font-size:20px!important;font-weight:800;color:var(--teal);margin:8px 0!important}.full-search{width:100%;min-width:0}.search-results{display:grid;gap:8px;margin-top:14px}.search-result{width:100%;display:flex;align-items:center;gap:10px;text-align:left;background:#f8fbfa;border:1px solid var(--line);padding:11px;border-radius:10px;color:var(--ink)}.search-result:hover{border-color:#8bd8cb}.search-result strong,.search-result small{display:block}.search-result small{color:var(--muted);font-size:11px;margin-top:3px}.connection-error{color:#f1a5a5!important}button:disabled{cursor:not-allowed;opacity:.6}.modal-body>[hidden],.form-grid>[hidden],.table-tools>[hidden]{display:none!important}
@media(max-width:640px){.page-actions{justify-content:flex-start}.page-head{gap:10px;flex-wrap:wrap}.page-head .page-actions{width:100%}.page-head .page-actions .btn{width:100%}.quick-actions{justify-content:flex-start}.quick-actions .btn{flex:1;min-width:125px}.action-cell{gap:9px}.course-tabs button{flex:1}.balance-title{grid-column:auto}.sales-stats{grid-template-columns:repeat(2,1fr)}}
.field textarea{width:100%;min-height:92px;resize:vertical;border:1px solid var(--line);border-radius:9px;padding:11px;outline:none;background:#fff;color:var(--ink);font:inherit;line-height:1.6}.field textarea:focus{border-color:#55bfae;box-shadow:0 0 0 3px #55bfae22}.sale-reason{display:block;max-width:240px;margin-top:6px;white-space:normal;line-height:1.45;color:#a04b42}.danger-link{color:#c53b3b!important}.approval-actions{display:flex;align-items:center;gap:8px}.audit-card{margin-top:18px}.audit-card td:nth-child(4){white-space:normal;min-width:260px;line-height:1.5}.group-student-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:280px;overflow:auto;padding:2px}.group-student-option{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff;cursor:pointer}.group-student-option input{width:18px;height:18px;flex:0 0 auto;accent-color:#168d7b}.group-student-option span{display:flex;flex-direction:column;min-width:0}.group-student-option small{color:var(--muted);margin-top:2px}.group-student-option.disabled{opacity:.48;cursor:not-allowed;background:#f5f7f7}@media(max-width:640px){.approval-actions{align-items:stretch;flex-direction:column}.approval-actions .btn{width:100%}.sale-reason{max-width:190px}.group-student-list{grid-template-columns:1fr}}
.lesson-student-search{margin-bottom:8px}.lesson-student-search::-webkit-search-cancel-button{cursor:pointer}.group-student-option[hidden]{display:none}
.login-legal{display:flex;justify-content:center;gap:8px;margin-top:16px;font-size:13px;color:#71827f}.login-legal a{color:#4d6d68;text-decoration:none}.login-legal a:hover{text-decoration:underline}
.danger-zone{margin-top:16px;padding:14px;border:1px solid #fecaca;border-radius:12px;background:#fff7f7;color:#7f1d1d}.danger-zone p{margin:6px 0 12px;line-height:1.6}.danger-zone textarea{width:100%;min-height:84px}
.dashboard-shortcut{transition:transform .15s,background .15s,box-shadow .15s}.dashboard-shortcut:hover{transform:translateY(-1px);background:#d7f0eb;box-shadow:0 5px 12px #0f766e22}.dashboard-shortcut:focus-visible{outline:3px solid #55bfae55;outline-offset:2px}
.calendar-toolbar,.calendar-month-controls,.calendar-summary,.calendar-access-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.calendar-toolbar{padding-bottom:20px;border-bottom:1px solid var(--line)}
.calendar-filters{padding:16px 0 0;margin-bottom:2px}
.calendar-coach,.calendar-month-label{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}
.calendar-month-label input{border:1px solid var(--line);border-radius:9px;padding:9px;min-width:0;background:#fff;color:var(--ink)}
.calendar-summary{margin:20px 0 18px;font-size:14px;color:var(--muted)}
.calendar-summary i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--teal);margin-right:6px}
.calendar-grid,.calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.calendar-week{margin-bottom:10px;text-align:center;color:var(--muted);font-size:13px}
.calendar-day{min-height:86px;border:1px solid var(--line);border-radius:12px;background:#fafcfb;color:#91a29f;display:flex;align-items:flex-start;justify-content:space-between;flex-direction:column;gap:9px;padding:12px;text-align:left;cursor:pointer}
.calendar-day-number{font-size:20px;font-weight:650}.calendar-day small{font-size:12px}
.calendar-day:hover{background:#f0f7f5;border-color:#b8d8d1}.calendar-day:focus-visible{outline:3px solid #73b9aa;outline-offset:2px}
.calendar-day.has-courses{background:#e6f4ee;border-color:#bddfd3;color:#145c51;box-shadow:inset 0 3px 0 #228b71}
.calendar-day.has-courses:hover{background:#cfebdf}.calendar-day.has-courses:focus-visible{outline:3px solid #228b71;outline-offset:2px}
.calendar-day.has-verified:not(.has-pending){background:#eaf2ff;border-color:#c8d9f2;color:#285a96;box-shadow:inset 0 3px 0 #4d83c3}
.calendar-day.has-pending.has-verified{background:linear-gradient(135deg,#e6f4ee 0 50%,#eaf2ff 50% 100%);box-shadow:inset 0 3px 0 #228b71}
.calendar-day.is-today .calendar-day-number{background:var(--teal);color:white;border-radius:50%;min-width:29px;height:29px;text-align:center;line-height:29px}
.calendar-hint{font-size:12px;color:var(--muted);margin:16px 0 0;line-height:1.6}
.calendar-course-list{display:grid;gap:12px}.calendar-course{border:1px solid var(--line);border-left:4px solid var(--teal);background:#f8fcfa;border-radius:12px;padding:16px}
.calendar-course.verified-course{border-left-color:#4d83c3;background:#f7faff}
.calendar-course>div{display:flex;justify-content:space-between;align-items:center;gap:10px}.calendar-course>div>strong{font-size:19px;color:var(--teal)}
.calendar-course h4{font-size:16px;margin:12px 0 8px;overflow-wrap:anywhere}.calendar-course p{font-size:13px;line-height:1.6;color:var(--muted);margin:3px 0;overflow-wrap:anywhere}
.calendar-course .calendar-course-actions{justify-content:flex-start;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.calendar-course-actions .calendar-cancel{color:#b42318;border-color:#f1b7b2;background:#fff7f6}
.calendar-day.is-selected{outline:2px solid #4384f5;outline-offset:-2px}
.calendar-inline-courses{margin-top:20px}.calendar-inline-courses h3{font-size:16px}
.calendar-inline-course{border:1px solid var(--line);border-radius:12px;background:#f8fcfa;margin:8px 0;overflow:hidden}
.calendar-inline-course summary{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;list-style:none;min-height:44px}
.calendar-inline-course summary::-webkit-details-marker{display:none}
.calendar-inline-course summary strong{font-size:15px;color:var(--teal);white-space:nowrap}
.calendar-inline-course summary span{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.calendar-inline-course summary i{width:32px;height:32px;background:#e2f4eb;border-radius:8px;display:grid;place-items:center;flex-shrink:0}
.calendar-inline-course summary i:after{content:'';width:10px;height:10px;border-right:3px solid var(--teal);border-bottom:3px solid var(--teal);transform:translateY(-2px) rotate(45deg)}
.calendar-inline-course[open] summary i:after{transform:translateY(2px) rotate(225deg)}
.calendar-inline-detail{padding:0 14px 14px;border-top:1px solid var(--line)}.calendar-inline-detail p{font-size:13px;color:var(--muted);overflow-wrap:anywhere}.calendar-inline-detail .calendar-course-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
@media(max-width:420px){.calendar-month-controls .btn{padding:9px 8px;white-space:nowrap}.calendar-month-label{min-width:0}.calendar-month-label input{min-width:0}}
.calendar-legend{display:flex;align-items:center;gap:7px}.calendar-summary .pending-dot,.calendar-summary .verified-dot{width:8px;height:8px;margin:0 1px 0 5px}.calendar-summary .pending-dot{background:var(--teal)}.calendar-summary .verified-dot{background:#4d83c3}
.calendar-access{margin-bottom:20px}.calendar-access .switch{flex-shrink:0}.calendar-access-footer{margin-top:12px;font-size:13px}
.calendar-access-check{display:flex;gap:10px;align-items:center;margin:16px 0}.calendar-access-check input{width:18px;height:18px;accent-color:var(--teal)}
.link-danger{color:#c53b3b!important}.link-danger:hover{color:#8f1717!important}.compact-danger{margin-top:12px}
@media(max-width:760px){.calendar-toolbar{align-items:flex-start;gap:16px}.calendar-month-controls{width:100%;gap:6px;flex-wrap:nowrap}.calendar-month-controls .btn{padding:9px 12px}.calendar-month-label{flex:1;justify-content:center;font-size:0}.calendar-month-label input{width:100%;font-size:14px;max-width:165px}.calendar-grid,.calendar-week{gap:5px}.calendar-day{padding:8px 5px;min-height:65px;border-radius:9px}.calendar-day-number{font-size:17px}.calendar-day small{font-size:10px}.calendar-summary{font-size:12px;gap:8px}.calendar-course{padding:12px}.bottom-nav{overflow-x:auto}.bottom-nav button{flex:1 0 59px;white-space:nowrap}}
.recon-section,.low-hours-card{margin-top:18px}.recon-anomaly{background:#fff8ed}.recon-alert-card{border-color:#f4c77f;background:#fffaf2}.runtime-notice p{margin:7px 0 0}.risk-confirmation{margin-top:14px}.recon-stats{margin-bottom:2px}.danger-zone .risk-confirmation{color:var(--ink)}
@media(max-width:640px){.recon-stats{grid-template-columns:repeat(2,1fr)}.recon-section.layout-2{display:grid}.runtime-notice p{line-height:1.55}}
/* Sales distribution: controls and tooltip remain inside the chart card. */
#distribution-dates[hidden], .venue-pie-tip[hidden] { display: none; }
#distribution-dates label { flex: 1; min-width: 130px; }
#distribution-dates input { width: 100%; box-sizing: border-box; min-height: 42px; padding: 9px; border: 1px solid var(--line); border-radius: 9px; background: white; color: var(--ink); }
.venue-pie-wrap { position: relative; max-width: 480px; margin: auto; }
.venue-pie { display: block; width: 100%; height: auto; }
.venue-slice { cursor: pointer; }
.venue-slice:hover, .venue-slice:focus { filter: brightness(1.09); outline: none; stroke: #173c39; stroke-width: 3px; }
.venue-pie-tip { position: absolute; z-index: 2; background: #173c39; color: white; padding: 10px 14px; border-radius: 10px; max-width: calc(100% - 8px); box-sizing: border-box; pointer-events: none; box-shadow: 0 4px 16px #173c3933; }
.venue-pie-tip span, .venue-pie-tip strong { display: block; overflow-wrap: anywhere; }
.venue-pie-tip span { font-size: 14px; margin-top: 4px; }
.venue-pie-legend { display: flex; flex-wrap: wrap; gap: 8px; }
.venue-pie-key { display: inline-flex; align-items: center; gap: 6px; background: #f1f7f5; border: 0; border-radius: 8px; padding: 8px; color: #173c39; cursor: pointer; }
.venue-pie-key i { display: inline-block; width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }

.course-feedback { border-top: 1px solid var(--line, #c9e4dc); margin-top: 20px; padding-top: 16px; }
.course-feedback h3 { margin: 0 0 8px; }
.course-feedback .field select { width: 100%; margin-top: 8px; }
.feedback-text { white-space: pre-wrap; overflow-wrap: anywhere; padding: 14px; border: 1px solid #c9e4dc; border-radius: 14px; background: #fff; min-height: 120px; user-select: text; }
.feedback-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.feedback-message { color: #176e62; min-height: 1.5em; }
.course-feedback .muted { font-size: 13px; line-height: 1.6; }

.classroom-notes::placeholder{color:#6b7280;opacity:1}
.course-save-overlay { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; background: #e8faf4d9; }
.course-save-overlay[hidden] { display: none; }
.course-save-label { padding: 22px 32px; border-radius: 18px; background: #fff; color: #176e62; font-size: 18px; font-weight: 700; box-shadow: 0 8px 32px #173c3922; }

.student-report-button{display:block;margin-top:10px}.report-buttons{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}#student-report-panel .field{margin:14px 0}#student-report-panel textarea{width:100%;font:inherit;line-height:1.6;padding:12px;border:2px solid #5b958b;border-radius:12px;resize:vertical;background:white;color:var(--ink)}#student-report-panel textarea:focus{outline:none;border-color:#0f766e;box-shadow:0 0 0 2px #0f766e20}#student-report-panel textarea::placeholder{color:#606870;opacity:1}#student-report-panel .notice{white-space:pre-wrap;line-height:1.7}#student-report-panel .report-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;border:1px solid var(--line);border-radius:12px;background:white;padding:16px;margin:16px 0;max-height:420px;overflow:auto}#student-report-panel [data-report="message"]{font-size:13px;line-height:1.6;color:var(--teal)}#student-report-panel button:disabled{opacity:.55;cursor:default}

.low-hours-student{align-items:center}.low-hours-info{flex:1;min-width:0;overflow-wrap:anywhere}.low-hours-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}.low-hours-actions button{white-space:nowrap}
/* Approved group report: compact filters, period totals and full-width monthly overview. */
.report-toolbar{padding:17px;border-radius:22px;background:#f6fffb;border-color:#d8eee5}
.report-filter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 11px}
.report-filter-grid label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#55776d;min-width:0}
.report-filter-grid .select,.report-filter-grid .input{width:100%;min-width:0;height:43px;box-sizing:border-box;border:1px solid #85bfb0;border-radius:12px;background:#fff;padding:0 10px;font-size:14px;color:#19574b}
.report-filter-grid input[type=date]{font-size:13px}
.report-toolbar>.btn{width:100%;margin-top:12px;height:36px;padding:0;font-size:13px;border-radius:10px}
.report-period-note{color:#577f70;font-size:11px;margin:17px 3px 8px}
.report-grid{gap:7px;grid-template-columns:repeat(3,minmax(0,1fr))}
.report-grid>.card{padding:13px 9px 11px;background:#f7fffb;border:1px solid #d7ebe2;border-radius:16px;min-width:0}
.report-grid .muted{font-size:11px;color:#618276}
.report-grid .big-number{font-size:clamp(12px,3.8vw,18px);color:#174c42;font-weight:700;margin:9px 0 7px;white-space:nowrap;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.report-grid .stat-meta{font-size:10px;color:#7a938a;display:block}
.report-trend-card{min-width:0;background:#fbfffd;border-color:#d3e8df;border-radius:23px;padding:19px 15px 17px}
.report-trend-card .card-head{gap:4px;margin-bottom:17px}.report-trend-card .card-head h3{font-size:17px}
.trend-period-badge{font-size:10px;padding:5px 8px;border-radius:20px;color:#317360;background:#e7f6ee;white-space:nowrap}
.sales-trend{height:auto;display:block;overflow:visible;padding:0;-webkit-user-select:none;user-select:none}
.trend-readout{display:flex;justify-content:space-between;align-items:center;gap:8px;min-width:0}
.trend-month-meta{min-width:0;flex:1}.trend-month-meta strong{font-size:13px;font-weight:500;color:#3c6558;display:block;white-space:nowrap}.trend-month-meta small{display:block;font-size:10px;color:#7e958b;margin-top:6px}
.trend-amount{--money-size:30px;display:flex;align-items:center;justify-content:flex-end;white-space:nowrap;color:#0e7868;font-variant-numeric:tabular-nums;font-size:var(--money-size);font-weight:600;flex-shrink:0;max-width:56%;height:36px}
.trend-currency{font-size:.7em;padding-right:3px}.trend-punctuation{font-size:.84em;min-width:.3em}.trend-digit{position:relative;height:1.14em;width:.63em;overflow:hidden}.trend-digit-track{display:block;position:absolute;inset:0 0 auto;will-change:transform}.trend-digit-track span{display:block;height:1.14em;line-height:1.14em;text-align:center}
.trend-legend{display:flex;gap:16px;margin-top:15px;font-size:10px;color:#668578}.trend-legend i{display:inline-block;margin-right:5px;vertical-align:middle}.trend-bar-key{width:6px;height:11px;background:#3bb798;border-radius:2px}.trend-line-key{width:15px;border-top:2px solid #dc9b32;position:relative}.trend-line-key:after{content:"";position:absolute;top:-3px;left:6px;width:4px;height:4px;border-radius:50%;background:#dc9b32}
.trend-plot{margin-top:12px;touch-action:pan-y;cursor:ew-resize;outline-offset:4px;border-radius:4px}.sales-trend svg{display:block;width:100%;max-width:100%;height:245px;overflow:visible;font-size:10px;fill:#6a8b7b}.trend-hint{text-align:center;font-size:11px;color:#638a7b;margin-top:9px}
@media(max-width:360px){.report-trend-card{padding-inline:10px}.report-trend-card .card-head h3{font-size:15px}.report-grid{gap:5px}.report-grid>.card{padding-inline:7px}.report-filter-grid .select{font-size:13px}.trend-month-meta strong{font-size:12px}}


/* Large lessons keep selections visible while individual debit fields are edited. */
.large-picker{max-height:300px;overflow-y:auto;border:1.5px solid #76a99c;border-radius:12px;padding:10px;background:#fff}
.large-check{display:flex;align-items:center;gap:10px;padding:8px 4px;cursor:pointer}
.large-check input{width:18px;height:18px;flex:none;accent-color:var(--teal)}
.large-check small{display:block;color:var(--muted);margin-top:4px}
.large-student{padding:6px 0;border-bottom:1px solid var(--line)}
.large-student:last-child{border-bottom:0}
.large-debit{display:flex;gap:8px;margin:4px 0 8px 32px}
.large-debit select{flex:1;min-width:0}.large-debit input{width:95px}
.large-warning{color:#ae3932}
.large-lesson [hidden],.large-student[hidden]{display:none!important}

.recon-search-row{margin-top:14px}.recon-search-row .input{flex:1;min-width:200px}.recon-consumption-total{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 0}.recon-consumption-total strong{font-size:28px;color:var(--teal)}.recon-hour-values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;gap:12px}.recon-hour-values>div{display:flex;flex-direction:column;border:1px solid #80aaa4;background:#f5fffb;border-radius:12px;padding:12px}.recon-hour-values span,.recon-hour-values strong{display:block;overflow-wrap:anywhere}.recon-hour-values span{font-size:13px;line-height:1.4;min-height:2.8em;color:var(--muted)}.recon-hour-values strong{margin-top:auto;padding-top:5px;color:var(--ink)}.recon-hour-card{border:1px solid #80aaa4;border-radius:14px;padding:14px;margin-top:12px}.recon-hour-card .card-head{flex-wrap:wrap;gap:8px;margin-bottom:12px}.recon-rule{line-height:1.65}.recon-paging{padding:16px;flex-wrap:wrap}.recon-section>.card-head{flex-wrap:wrap;gap:8px}
@media(max-width:640px){.recon-hour-values{grid-template-columns:repeat(2,minmax(0,1fr))}.recon-consumption-total strong{font-size:24px}.recon-search-row .input{width:100%;min-width:0;flex-basis:100%}.recon-paging .muted{flex-basis:100%}}


/* Statistics reuse the sales area's pastel family, scoped to these cards. */
.metric-tone.metric-mint{--metric-fill:#e0f4eb;--metric-soft:#eff9f4;--metric-border:#9bcbbc;--metric-ink:#0f766e}
.metric-tone.metric-blue{--metric-fill:#e7f0fd;--metric-soft:#f2f6fe;--metric-border:#a8c2e6;--metric-ink:#305fa2}
.metric-tone.metric-amber{--metric-fill:#fff4dd;--metric-soft:#fffaef;--metric-border:#e1c286;--metric-ink:#855714}
.metric-tone.metric-lilac{--metric-fill:#f0eaf9;--metric-soft:#f8f4fc;--metric-border:#c4aedb;--metric-ink:#705195}
.metric-tone.metric-rose{--metric-fill:#fce9e7;--metric-soft:#fff5f3;--metric-border:#dfa9a3;--metric-ink:#a33e36}
.card.metric-tone,.recon-hour-values>.metric-tone{background:linear-gradient(135deg,var(--metric-fill),var(--metric-soft));border-color:var(--metric-border)}
.metric-tone :is(.big-number,.stat-value,strong){color:var(--metric-ink)}
.metric-tone :is(.muted,.stat-label,.stat-meta),.recon-hour-values>.metric-tone>span{color:#4e646d}

/* Mainland agreement and rights controls; existing business cards keep their layout. */
.legal-screen{position:fixed;inset:0;z-index:2000;overflow:auto;background:#f1faf6;padding:24px 16px;box-sizing:border-box}
.legal-onboarding{max-width:720px;margin:0 auto;padding:24px;background:#fff;border:1px solid #7daba0;border-radius:20px;line-height:1.8;color:#173c35}
.legal-actions{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}.legal-check{display:flex!important;align-items:flex-start;gap:10px;line-height:1.7;margin:16px 0;cursor:pointer}
.legal-check input[type=checkbox]{width:20px!important;min-width:20px;height:20px;flex:none;margin-top:5px;accent-color:#0f766e}
.legal-declaration{border:1.5px solid #729e93;border-radius:12px;padding:16px;margin:16px 0}.legal-declaration label{display:block;margin:12px 0}.legal-declaration input,.legal-declaration select{max-width:100%;box-sizing:border-box}
.legal-registration{margin:16px 0;padding:12px;border:1px solid #7daba0;border-radius:12px}.legal-screen a,.legal-declaration a{color:#075f56;text-decoration:underline}

.legal-modal{max-height:calc(100dvh - 32px);display:flex;flex-direction:column}.legal-modal .modal-head,.legal-modal .modal-actions{flex-shrink:0}.legal-modal .modal-body{overflow:auto;min-height:0;line-height:1.65}.legal-modal label:not(.legal-check){display:block;margin:12px 0 6px}.legal-modal input:not([type=checkbox]),.legal-modal select,.legal-modal textarea{display:block;width:100%;box-sizing:border-box;margin-top:6px;padding:12px;border:1.5px solid #729e93;border-radius:10px;background:#fff;color:#173c35;font:inherit}.legal-modal textarea{min-height:100px;resize:vertical}.legal-modal .legal-check input{display:inline-block;width:20px}

/* Isolated agreement reader: business page layout stays unchanged. */
.legal-reader-overlay{position:fixed;inset:0;z-index:100000;background:#173b3466;display:flex;align-items:center;justify-content:center;padding:12px}
.legal-reader-card{width:min(780px,100%);max-height:calc(100dvh - 24px);display:flex;flex-direction:column;background:#fff;border-radius:20px;box-shadow:0 12px 40px #12362f33;overflow:hidden;color:#17322f}
.legal-reader-card header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid #92aaa3}.legal-reader-card header h2{font-size:20px;margin:0}
.legal-reader-scroll{overflow:auto;overscroll-behavior:contain;min-height:0;height:min(58dvh,600px);padding:16px 20px;line-height:1.85;white-space:pre-wrap;overflow-wrap:anywhere;scrollbar-gutter:stable}
.legal-reader-scroll article+article{border-top:2px solid #72958b;margin-top:24px;padding-top:20px}.legal-reader-scroll h2{font-size:21px}.legal-reader-scroll h3{font-size:17px}
.legal-reader-card footer{padding:12px 16px;border-top:1px solid #92aaa3;flex-shrink:0}.legal-reader-card footer p{font-size:14px;margin:0 0 10px}.legal-reader-card footer button{width:100%}.legal-check input:disabled{opacity:.5}

.legal-reader-scroll .legal-reader-important{font-weight:700;color:#073e36;background:#eaf7f1;border:2px solid #3f7765;border-radius:10px;padding:12px;line-height:1.9}.legal-reader-scroll .legal-reader-important::before{content:"重要条款提示";display:block;font-size:13px;color:#075f56;margin-bottom:5px}
