/* Shared visual layer. Bootstrap/layui structure and functional hooks stay in place. */
.cb-ui{--cb-primary:#2563eb;--cb-soft:#edf3ff;--cb-ink:#172b4d;--cb-muted:#64748b;--cb-line:#e5ebf3;color:var(--cb-ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;font-size:14px;background:#f4f7fb}
.cb-ui[data-console="subschool"]{--cb-primary:#087f8c;--cb-soft:#e6f6f4}
.cb-ui[data-console="admin"]{--cb-primary:#6355c7;--cb-soft:#f0edff}
.cb-ui a,.cb-ui button,.cb-ui input,.cb-ui select{transition:background-color .15s,border-color .15s,box-shadow .15s}
.cb-ui a:focus-visible,.cb-ui button:focus-visible{outline:2px solid var(--cb-primary);outline-offset:3px}
.cb-avatar{position:relative;display:inline-flex;flex:none;align-items:center;justify-content:center;vertical-align:middle;background:#2563eb;color:#fff;border-radius:12px;overflow:hidden}
.cb-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#fff}
.cb-avatar-letter{font-size:20px;font-weight:700}.cb-avatar-large{width:48px;height:48px;margin:16px 0 7px}.cb-avatar-small{width:30px;height:30px;margin-right:8px;border-radius:9px}
.cb-shell .navbar-static-side{background:#13253f;box-shadow:4px 0 20px #172b4d0a}
.cb-shell #side-menu{padding:0 12px 24px}.cb-shell #side-menu .nav-header{padding:25px 12px 20px;background:transparent;border-bottom:1px solid #ffffff14;margin-bottom:15px}
.cb-brand-name{font-size:19px;font-weight:700;color:#fff;letter-spacing:1px}.cb-brand-name span{display:block;color:#91a8c5;font-size:11px;font-weight:400;letter-spacing:2px;margin-top:5px}
.cb-shell .profile-element .clear .block{font-size:12px;color:#bccbe0;text-indent:0!important;word-break:break-all;line-height:1.6}
.cb-shell #side-menu>li>a{color:#b7c8df;padding:13px 12px;border-radius:8px;font-weight:500;margin:3px 0;line-height:22px}
.cb-shell #side-menu>li>a i{margin-right:10px;color:#8fa9c9}.cb-shell #side-menu li.active{background:transparent;border:0}
.cb-shell.mini-navbar .logo-element{font-size:19px;color:#fff}
.cb-shell #side-menu li.active>a,.cb-shell #side-menu li>a:hover,.cb-shell #side-menu li>a:focus{background:#28486d;color:#fff}
.cb-shell #side-menu .nav-second-level li a{color:#b7c8df;border-radius:7px;padding-top:10px;padding-bottom:10px}.cb-shell #side-menu .nav-second-level li.active>a{background:#28486d;color:#fff}
.cb-shell .navbar-static-top{min-height:64px;border-bottom:1px solid var(--cb-line);box-shadow:none;background:#fff}
.cb-shell .navbar-top-links>li>a{min-height:64px;padding-top:23px;padding-bottom:19px;color:#6c7e96}
.cb-shell .page-tabs-content>li{height:64px;line-height:64px;border:0!important;background:#fff!important;color:#64748b!important}
.cb-shell .page-tabs-content>li.active{background:var(--cb-soft)!important;color:var(--cb-primary)!important;box-shadow:inset 0 -3px var(--cb-primary)}
.cb-shell .page-tabs-content>li>a{padding:0 18px}.cb-shell .navbar-right>li>div[data-toggle="dropdown"]{padding:17px 10px;color:#405571;font-size:13px}
.cb-shell .footer{border-top:1px solid var(--cb-line);background:#fff;color:#7c8ba0;font-size:12px}.cb-shell .footer a{color:#64748b}
.cb-shell .dropdown-menu{border:1px solid var(--cb-line);border-radius:10px;box-shadow:0 10px 35px #1428441a;padding:7px}.cb-shell .dropdown-menu a{border-radius:6px}
.cb-page>.wrapper-content{padding:26px}.cb-ui .ibox{margin-bottom:20px;border-radius:12px;box-shadow:0 3px 16px #1f365307}
.cb-ui .ibox-title{border:1px solid var(--cb-line);border-bottom:0;border-radius:12px 12px 0 0;padding:17px 20px;background:#fff;min-height:52px}
.cb-ui .ibox-title h5{font-weight:600;color:var(--cb-ink)}.cb-ui .ibox-content{border:1px solid var(--cb-line);background:#fff;border-radius:0 0 12px 12px;padding:22px}
.cb-ui .ibox-content:first-child{border-radius:12px}.cb-ui .form-control{border:1px solid #dce4ef;border-radius:7px;box-shadow:none;min-height:36px;color:#334866}
.cb-ui .form-control:focus{border-color:var(--cb-primary);box-shadow:0 0 0 3px var(--cb-soft)}.cb-ui .form-control[disabled]{background:#f3f6fa;color:#718096}
.cb-ui .control-label{font-weight:500;color:#53657e}.cb-ui .help-block{color:#7b8ca3;font-size:12px}.cb-ui .form-group{margin-bottom:20px}
.cb-ui .btn{border-radius:7px;padding:8px 14px;font-weight:500;box-shadow:none}.cb-ui .btn-xs{padding:4px 8px;font-size:12px}.cb-ui .btn-sm{padding:6px 11px}
.cb-ui .btn-primary{background:var(--cb-primary);border-color:var(--cb-primary)}.cb-ui .btn-primary:hover{filter:brightness(.94)}.cb-ui .btn-primary[disabled]{filter:none;opacity:.6}
.cb-ui .btn-success{background:#0f8b70;border-color:#0f8b70}.cb-ui .btn-danger{background:#fff;border-color:#f0cbd0;color:#c34757}.cb-ui .btn-danger:hover{background:#fff1f2}
.cb-ui .table>thead>tr>th{background:#f5f8fc;color:#53657e;font-weight:600;border-bottom:1px solid var(--cb-line);padding:13px 10px}
.cb-ui .table>tbody>tr>td{border-color:#edf1f6;padding:12px 10px;vertical-align:middle}.cb-ui .table-striped>tbody>tr:nth-of-type(odd){background:#fcfdff}
.cb-ui .table-hover>tbody>tr:hover{background:var(--cb-soft)}.cb-ui .fixed-table-container{border:1px solid var(--cb-line);border-radius:9px}.cb-ui .fixed-table-toolbar{margin-bottom:12px}
.cb-ui .pagination>.active>a{background:var(--cb-primary);border-color:var(--cb-primary)}.cb-ui .layui-tab-title{border-color:var(--cb-line)}.cb-ui .layui-tab-title .layui-this{color:var(--cb-primary)}
.cb-welcome{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 25px;padding:0 0 23px;border-bottom:1px solid var(--cb-line)}
.cb-eyebrow{display:block;font-size:12px;color:var(--cb-primary);font-weight:600;letter-spacing:1px}.cb-welcome h1{font-size:27px;line-height:1.4;font-weight:650;margin:7px 0;color:var(--cb-ink)}
.cb-welcome p{font-size:13px;color:var(--cb-muted);margin:0}.cb-context-badge{flex:none;border:1px solid var(--cb-line);background:#fff;border-radius:20px;padding:8px 15px;color:#53657e;font-size:12px}
.cb-dashboard .portal-block-container>.layui-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:0}
.cb-dashboard .portal-block-container>.layui-row::before,.cb-dashboard .portal-block-container>.layui-row::after{display:none}
.cb-ui[data-console="subschool"] .cb-dashboard .portal-block-container>.layui-row{grid-template-columns:repeat(3,minmax(0,1fr))}
.cb-dashboard .portal-block-container>.layui-row>div{width:auto!important;padding:0;float:none;min-width:0}
.cb-dashboard .portal-block-container .portal-block-item{background:#fff!important;border:1px solid var(--cb-line);border-radius:12px;color:#63758e;padding:20px 22px;line-height:1.7;box-shadow:0 3px 16px #1f365307;letter-spacing:0;overflow:hidden}
.cb-dashboard .portal-block-item>div:first-child{font-size:13px}.cb-dashboard .portal-block-item>div:last-child{font-size:12px;color:#6e8099;border-top:1px solid #edf1f6;margin-top:15px;padding-top:12px}
.cb-dashboard .portal-block-item .textnew{font-size:36px;line-height:1.3;color:var(--cb-ink);font-weight:650;margin-top:9px;font-variant-numeric:tabular-nums}
.cb-dashboard .portal-block-container>.layui-row>div:nth-child(1) .portal-block-item{border-top:3px solid var(--cb-primary)}
.cb-dashboard .portal-block-container>.layui-row>div:nth-child(2) .portal-block-item{border-top:3px solid #21a697}
.cb-dashboard .portal-block-container>.layui-row>div:nth-child(3) .portal-block-item{border-top:3px solid #8b73cf}
.cb-dashboard .portal-block-container>.layui-row>div:nth-child(4) .portal-block-item{border-top:3px solid #d5a14c}
.cb-dashboard .margin-top-10{margin:18px -9px 0}.cb-dashboard .margin-top-10>.layui-col-md6{padding:0 9px!important;margin-bottom:18px}
.cb-dashboard #main2,.cb-dashboard #main4{height:auto!important}.cb-dashboard .yunying{height:auto;line-height:1.5;font-size:16px;font-weight:600;color:var(--cb-ink);padding:0 0 16px}
.cb-dashboard .yunshou{height:auto}.cb-dashboard .shou{height:auto;margin:0 0 16px;padding:20px;background:#fff;border:1px solid var(--cb-line);border-radius:12px;box-shadow:0 3px 16px #1f365307}
.cb-dashboard .ru{font-size:13px;color:#657791}.cb-section-icon{color:var(--cb-primary);font-size:17px}.cb-dashboard .conts{height:auto;padding:18px 0 0;gap:8px;justify-content:space-around}
.cb-dashboard .conone{width:auto;flex:1;min-width:0;text-align:center}.cb-dashboard .contitle{height:auto;line-height:1.7;font-size:24px;font-weight:650;color:var(--cb-ink);font-variant-numeric:tabular-nums}
.cb-dashboard .contitle+.contitle{font-size:12px!important;font-weight:400!important;color:#74859c;line-height:1.5;white-space:normal}
.cb-dashboard #main4{background:#fff;border:1px solid var(--cb-line);border-radius:12px;padding:20px;box-shadow:0 3px 16px #1f365307}
.cb-dashboard #main4 .ru{height:auto!important;margin:0 0 12px!important;gap:10px}.cb-dashboard #schoolid{flex:1;min-width:0}.cb-dashboard #places{height:auto!important;max-height:360px;overflow-y:auto!important;padding:0!important}
.cb-dashboard .ranking{height:auto;min-height:47px;border-bottom:1px solid #edf1f6;align-items:center}.cb-dashboard .column{height:auto;min-height:47px;font-size:13px;width:25%;line-height:1.5;word-break:break-word;padding:10px 4px}
.cb-dashboard .ranking:first-child{border-radius:6px}.cb-dashboard #places .ranking:last-child{border-bottom:0}
.cb-dashboard>div.layui-col-xs12{margin-top:12px!important;border:1px solid var(--cb-line)!important;border-radius:12px!important;padding:18px;float:none;clear:both}
.cb-admin-dashboard>.alert{background:var(--cb-soft);border:1px solid #e5dffd;color:var(--cb-primary);border-radius:10px;font-size:13px}
.cb-admin-dashboard .ibox-content h1{font-size:38px;font-weight:650;color:var(--cb-primary);margin:6px 0 14px}.cb-admin-dashboard .text-muted{font-size:12px;color:#7b8ca3}
.cb-login{min-height:100vh;background:radial-gradient(ellipse at 20% 15%,#dce9ff,transparent 45%),radial-gradient(ellipse at 85% 85%,#d5f1ec,transparent 45%),#f5f8fc!important}
.cb-login #LAY-user-login{padding:8vh 20px 90px;min-height:100vh;box-sizing:border-box}.cb-login .layadmin-user-login-main{width:410px;max-width:100%;margin:auto;padding:24px 18px;background:#fff;border:1px solid #e4ebf5;border-radius:20px;box-shadow:0 18px 70px #29446915}
.cb-login .layadmin-user-login-header{padding:18px 20px 22px;text-align:left}.cb-login-brand{display:flex;align-items:center;gap:12px;color:var(--cb-primary);font-size:14px;font-weight:600;margin-bottom:28px}
.cb-login-brand img{border-radius:14px}.cb-login .layadmin-user-login-header h2{font-size:25px;font-weight:650;line-height:1.45;color:var(--cb-ink)}.cb-login-subtitle{font-size:13px;color:var(--cb-muted);margin-top:9px}
.cb-login .layui-input{height:46px;border-radius:8px;border-color:#dfe7f1;background:#fbfcff}.cb-login .layui-input:focus{border-color:var(--cb-primary)!important}.cb-login .layadmin-user-login-icon{line-height:46px;color:#8799b0}
.cb-login .layui-btn-fluid{height:46px;border-radius:8px;background:var(--cb-primary)!important}.cb-login .layadmin-user-login-codeimg{border-radius:7px;max-width:100%;height:46px;cursor:pointer}.cb-login .layadmin-user-login-footer{color:#8a9ab0;font-size:11px}
@media(max-width:1100px){.cb-page>.wrapper-content{padding:20px}.cb-dashboard .portal-block-container>.layui-row{gap:12px}.cb-dashboard .portal-block-container .portal-block-item{padding:17px}.cb-shell .navbar-right>li>div[data-toggle="dropdown"]{max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:767px){.cb-page>.wrapper-content{padding:15px}.cb-welcome{align-items:flex-start;margin-bottom:18px;padding-bottom:16px}.cb-welcome h1{font-size:23px}.cb-context-badge{display:none}.cb-dashboard .portal-block-container>.layui-row,.cb-ui[data-console="subschool"] .cb-dashboard .portal-block-container>.layui-row{grid-template-columns:repeat(2,minmax(0,1fr))}.cb-dashboard .portal-block-item .textnew{font-size:29px}.cb-dashboard .portal-block-container .portal-block-item{padding:15px}.cb-ui .ibox-content{padding:16px}.cb-login #LAY-user-login{padding-top:35px}.cb-ui .btn{padding:7px 10px}}
@media(prefers-reduced-motion:reduce){.cb-ui *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* 2026-10-29 侧栏品牌区紧凑化：用户反馈顶部占比过大（原 189px → 目标 ~125px） */
.cb-shell #side-menu .nav-header{padding:14px 12px 10px;margin-bottom:8px}
.cb-brand-name{font-size:16px;letter-spacing:.6px;line-height:1.25}
.cb-brand-name span{font-size:10px;letter-spacing:1.2px;margin-top:2px}
.cb-avatar-large{width:34px;height:34px;border-radius:9px;margin:9px 0 5px}
.cb-avatar-large .cb-avatar-letter{font-size:14px}
.cb-shell .profile-element .clear .block{font-size:11px;line-height:1.4;margin-top:2px}
.cb-shell #side-menu .nav-header .dropdown-toggle{padding-top:0}
