/* 2026-10-15：入口、首页与业务外壳主题统一；保留业务表格列宽和状态颜色。 */
:root {
    --app-accent:#2563eb; --app-accent-dark:#1d4ed8; --app-soft:#eaf1ff;
    --app-bg:#f3f6fc; --app-text:#172740; --app-muted:#66758a; --app-border:#dfe7f2;
    --app-nav:#fff; --app-nav-text:#22334c; --app-hero-text:#173566; --app-hero-shade:#f0f6ff;
    --app-art:url('/static/images/themes/blue.webp');
}
html[data-app-theme="scholar"] {
    --app-accent:#28665b; --app-accent-dark:#1e5148; --app-soft:#e7f0e9;
    --app-bg:#f5f2eb; --app-text:#283c36; --app-muted:#6c7871; --app-border:#e3e3d7;
    --app-nav:#fffdf8; --app-nav-text:#294c41; --app-hero-text:#204d42; --app-hero-shade:#f6f2e9;
    --app-art:url('/static/images/themes/scholar.webp');
}
html[data-app-theme="navy"] {
    --app-accent:#16758b; --app-accent-dark:#105d70; --app-soft:#e5f3f6;
    --app-bg:#eef3f8; --app-text:#1b2f48; --app-muted:#63758a; --app-border:#dce5ee;
    --app-nav:#10243e; --app-nav-text:#edf6ff; --app-hero-text:#edf7ff; --app-hero-shade:#0b1b31;
    --app-art:url('/static/images/themes/navy.webp');
}
body.app-shell { background:var(--app-bg); color:var(--app-text); }
.app-shell .app-navbar { background:var(--app-nav); border-color:var(--app-border); }
.app-shell .app-navbar .app-navbar-brand,.app-shell .app-navbar .nav-link,.app-shell .app-navbar .navbar-text { color:var(--app-nav-text); }
.app-shell .btn-primary { background-color:var(--app-accent); border-color:var(--app-accent); }
.app-shell .btn-primary:hover,.app-shell .btn-primary:focus { background-color:var(--app-accent-dark); border-color:var(--app-accent-dark); }
.app-shell .btn-outline-primary { color:var(--app-accent); border-color:var(--app-accent); }
.app-shell .btn-outline-primary:hover { color:#fff; background:var(--app-accent); }
.app-shell footer { color:var(--app-muted); font-size:12px; }
.app-theme-picker { position:relative; flex:0 0 auto; margin-left:16px; font-size:13px; z-index:1060; }
.app-theme-picker summary { display:flex; align-items:center; height:36px; padding:0 12px; border:1px solid var(--app-border); border-radius:9px; color:var(--app-nav-text); cursor:pointer; list-style:none; }
.app-theme-picker summary::-webkit-details-marker { display:none; }
.app-theme-picker summary span { margin:0 8px; white-space:nowrap; }
.navbar-user-area .app-theme-picker { margin:3px 0 0; }
.navbar-user-area .app-theme-picker summary { height:27px; padding:0 9px; font-size:12px; }
.navbar-user-area .app-theme-menu { top:35px; }
@media (min-width:992px) {
    .app-shell .app-navbar .nav-link { font-size:14px; padding-left:6px; padding-right:6px; }
    .app-shell .app-navbar .app-navbar-brand { font-size:19px; margin-right:12px; }
    /* 管理角色菜单较多：桌面品牌/账户一行、业务导航一行，避免挤窄或横向滚动。 */
    .app-shell:not(.portal-shell):not(.login-shell) .app-navbar>.container-fluid { display:grid; grid-template-columns:auto minmax(0,1fr); padding-top:9px; padding-bottom:5px; }
    .app-shell:not(.portal-shell):not(.login-shell) #navbarNav { display:contents !important; }
    .app-shell:not(.portal-shell):not(.login-shell) #navbarNav>.navbar-nav:not(.navbar-user-area) { grid-column:1 / -1; grid-row:2; min-width:0; margin-top:9px; padding-top:4px; border-top:1px solid var(--app-border); }
    .app-shell:not(.portal-shell):not(.login-shell) .navbar .navbar-user-area { grid-column:2; grid-row:1; flex-direction:row !important; align-items:center !important; }
    .app-shell:not(.portal-shell):not(.login-shell) .navbar-user-area .app-theme-picker { margin:0 0 0 16px; }
    .app-shell:not(.portal-shell):not(.login-shell) .topbar-control-column { margin:0 0 0 12px; }
}
.app-theme-picker summary:focus,.app-theme-option:focus { outline:2px solid #8eb5ff; outline-offset:2px; }
.app-theme-menu { position:absolute; top:46px; right:0; width:300px; padding:18px; background:#fff; border:1px solid var(--app-border); border-radius:16px; box-shadow:0 16px 50px rgba(16,35,62,.16); color:#20324a; }
.app-theme-menu>p { margin:5px 0 14px; color:#718096; font-size:12px; }
.app-theme-option { display:flex; align-items:center; width:100%; padding:9px; margin:5px 0 0; text-align:left; color:#20324a; background:#fff; border:1px solid #e4eaf1; border-radius:10px; }
.app-theme-option:hover,.app-theme-option[aria-pressed="true"] { background:var(--app-soft); border-color:var(--app-accent); }
.app-theme-thumb { width:58px; height:42px; flex:0 0 auto; margin-right:11px; border-radius:6px; background-position:right center; background-size:cover; }
.app-theme-thumb-blue { background:#edf5ff url('/static/images/themes/blue.webp') right center/cover; }
.app-theme-thumb-scholar { background:#f7f0e3 url('/static/images/themes/scholar.webp') right center/cover; }
.app-theme-thumb-navy { background:#10243e url('/static/images/themes/navy.webp') right center/cover; }
.app-theme-option-copy { flex:1; }
.app-theme-option-copy strong,.app-theme-option-copy small { display:block; }
.app-theme-option-copy small { margin-top:3px; color:#6b7788; font-size:11px; }
.app-theme-option>i { color:var(--app-accent); visibility:hidden; }
.app-theme-option[aria-pressed="true"]>i { visibility:visible; }
/* 公开入口只展示品牌与主题，不泄露管理入口。 */
.portal-shell .navbar-collapse,.portal-shell .navbar-toggler { display:none !important; }
.login-shell .navbar-collapse,.login-shell .navbar-toggler { display:none !important; }
.login-shell .app-theme-picker { margin-left:auto; }
.login-shell .container { background:transparent; box-shadow:none; }
.login-shell .form-container { width:100%; max-width:400px; border-color:var(--app-border); border-radius:16px; background:#fff; box-shadow:0 8px 28px rgba(21,43,74,.05); }
.login-shell #form-title { color:var(--app-text); font-size:25px; padding-top:20px; }
html[data-app-theme="navy"] .app-navbar .text-muted { color:#bfd0e2 !important; }
.portal-shell .app-theme-picker { margin-left:auto; }
.portal-shell .app-navbar>.container-fluid { max-width:var(--page-container-standard-max); margin:0 auto; min-height:68px; }
.portal-container.container { background:transparent; box-shadow:none; padding-top:24px; padding-bottom:0; }
.portal-stage { position:relative; overflow:hidden; isolation:isolate; min-height:630px; padding:65px 50px 28px; border:1px solid var(--app-border); border-radius:24px; background:var(--app-hero-shade) var(--app-art) center/cover; }
.portal-kicker { display:inline-flex; align-items:center; margin-bottom:20px; font-size:12px; letter-spacing:3px; color:var(--app-hero-text); }
.portal-kicker:before { content:''; width:22px; height:2px; margin-right:12px; background:var(--app-accent); }
.portal-stage h1 { margin:0 0 20px; text-align:left; font-size:44px; line-height:1.42; letter-spacing:-1.5px; font-weight:750; color:var(--app-hero-text); }
.portal-intro { color:var(--app-hero-text); line-height:1.9; font-size:15px; margin-bottom:32px; }
.portal-entries { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:540px; max-width:100%; }
.portal-entry-card { position:relative; display:block; padding:25px 23px; color:#20334d; text-decoration:none; border:1px solid rgba(255,255,255,.9); border-radius:16px; background:rgba(255,255,255,.96); box-shadow:0 8px 25px rgba(21,43,74,.06); transition:transform .18s,box-shadow .18s; }
.portal-entry-card+.portal-entry-card { margin-left:16px; }
.portal-entry-card:hover { color:#20334d; transform:translateY(-4px); box-shadow:0 14px 32px rgba(21,43,74,.14); }
.portal-entry-icon { display:flex; align-items:center; justify-content:center; height:46px; width:46px; border-radius:13px; background:var(--app-soft); color:var(--app-accent); font-size:21px; margin-bottom:21px; }
.portal-entry-card strong { display:block; font-size:21px; margin-bottom:9px; }
.portal-entry-card small { display:block; font-size:11px; color:#69788d; white-space:nowrap; }
.portal-entry-arrow { position:absolute; right:23px; top:32px; color:var(--app-accent); }
.portal-footnote { margin:22px 0 0; font-size:12px; color:var(--app-hero-text); }
.portal-utilities { display:flex; align-items:center; margin-top:40px; padding-top:20px; width:540px; max-width:100%; font-size:12px; }
.portal-utilities>* { margin-right:24px; }
.portal-utilities a { text-decoration:none; color:var(--app-hero-text); }
.portal-query summary { cursor:pointer; color:var(--app-hero-text); }
.portal-query-links { position:absolute; bottom:55px; padding:12px; border:1px solid var(--app-border); border-radius:10px; background:#fff; box-shadow:0 5px 15px rgba(0,0,0,.08); }
.portal-query-links a { display:block; padding:8px 12px; color:var(--app-accent); }
.portal-bottom { display:flex; justify-content:space-between; padding:22px 5px 0; color:var(--app-muted); font-size:12px; }
/* 首页采用浅横幅，工作内容沿用真实权限与统计口径。 */
.home-dashboard { --home-text:var(--app-text); --home-muted:var(--app-muted); --home-border:var(--app-border); --home-primary:var(--app-accent); --home-blue:var(--app-accent); --home-teal:var(--app-accent); }
.home-container.container { background:transparent; box-shadow:none; }
.home-dashboard .home-identbar { overflow:hidden; min-height:154px; padding:25px 30px; border-radius:18px; background:var(--app-hero-shade) var(--app-art) center 46%/cover; margin:16px 0 20px; align-items:flex-start; }
.home-dashboard .home-identbar-main { flex-direction:column; align-items:flex-start; padding:0; }
.home-dashboard h1.home-identbar-title { color:var(--app-hero-text); font-size:24px; margin:8px 0; }
.home-greeting { color:var(--app-hero-text); font-size:13px; }
.home-dashboard .home-identbar-college { color:var(--app-hero-text); font-size:12px; }
.home-dashboard .home-identbar-meta { color:var(--app-hero-text); font-size:12px; padding:6px 10px; border-radius:7px; background:var(--app-hero-shade); }
.home-dashboard .home-surface { border-color:var(--app-border); box-shadow:0 3px 12px rgba(26,49,78,.025); border-radius:14px; }
.home-dashboard .home-icon-pill:not(.home-icon-pill-orange):not(.home-icon-pill-muted) { color:var(--app-accent); background:var(--app-soft); }
.home-dashboard .home-kpi-bar>span,.home-dashboard .home-rank-fill { background:var(--app-accent); }
.home-dashboard .home-section-title { font-size:15px; }
.home-dashboard .home-kpi-value { font-size:28px; }
.home-dashboard .home-kpi-pct { color:var(--app-accent); }
.home-dashboard .home-notice-card { height:auto; }
/* 2026-10-15：半宽统计区采用两列，独立类名避开全局四列/五列和尾行规则。 */
.home-workspace-todo,.home-workspace-stats { min-width:0; }
.home-workspace-todo { display:flex; }
.home-workspace-todo>.card { width:100%; }
.home-workspace-stats .home-stats-panel { width:100%; }
.home-stats-panel .home-kpi-compact { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); grid-gap:16px; margin:0; }
.home-stats-panel .home-kpi-compact>[data-work-card] { width:100%; max-width:100%; padding:0; margin-top:0; flex:none; }
.home-stats-panel .home-kpi-compact>.home-work-card-last { grid-column:1 / -1; }
.home-stats-panel .home-kpi-card { background:var(--app-bg); box-shadow:none; }
.home-stats-panel [hidden] { display:none !important; }
.home-rank-row[hidden],.home-rank-row [data-tm-rank-card][hidden] { display:none !important; }
.home-stats-empty { padding:32px 10px; text-align:center; color:var(--app-muted); }
.home-stats-empty>i { font-size:30px; color:var(--app-accent); margin-bottom:14px; }
.home-stats-empty small { display:block; margin-top:9px; font-size:12px; }
@media (max-width:767.98px) { .home-stats-panel .home-kpi-compact { grid-template-columns:1fr; } }
.home-workspace-stats .home-kpi-grid { margin-bottom:0; }
.home-workspace-stats .home-kpi-card .card-body { padding:15px 16px; }
.home-dashboard .home-kpi-card .card-body { padding:17px 20px; }
.home-dashboard .home-todo-item:hover { background:var(--app-soft); }
.home-dashboard .home-section-link,.home-dashboard .home-todo-group-link { color:var(--app-accent); }
.home-dashboard .home-actions-grid .home-action-card .card-body { padding:16px 18px; }
.home-dashboard .home-actions-grid .home-action-title { font-size:14px; }
.home-dashboard .home-actions-grid .home-action-desc { font-size:12px; margin-top:5px; }
.home-quickbar { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); margin:0 -6px 18px; }
.home-quick-item { display:flex; align-items:center; min-width:0; padding:15px; margin:0 6px 10px; background:#fff; border:1px solid var(--app-border); border-radius:12px; text-decoration:none; color:var(--app-text); font-size:13px; font-weight:600; }
.home-quick-item>i { margin-right:10px; display:flex; align-items:center; justify-content:center; width:32px; height:32px; flex:0 0 auto; border-radius:9px; color:var(--app-accent); background:var(--app-soft); }
.home-quick-item>span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.home-quick-item:hover { border-color:var(--app-accent); color:var(--app-accent); }
.home-more-apps { border:1px solid var(--app-border); border-radius:14px; background:#fff; margin-top:18px; }
.home-more-apps>summary { cursor:pointer; padding:18px 20px; font-size:14px; font-weight:600; }
.home-more-apps-content { padding:0 18px 18px; }
.home-announcements-more { margin-top:12px; }
.home-announcements-more>summary { cursor:pointer; font-size:12px; color:var(--app-accent); }
.home-announcements-more .list-group { margin-top:10px; }
/* 仅适配新增入口和工作台组件，不改原有业务表格和工具栏断点。 */
@media (max-width:768px) {
    .app-theme-picker { margin-left:auto; margin-right:10px; }
    .app-theme-menu { width:280px; }
    .portal-container.container { padding-top:12px; }
    .portal-stage { min-height:620px; padding:36px 22px 24px; background-position:64% center; }
    .portal-stage:before { content:''; position:absolute; top:0; right:0; bottom:0; left:0; background:var(--app-hero-shade); opacity:.82; z-index:-1; }
    .portal-stage h1 { font-size:31px; letter-spacing:-.8px; }
    .portal-intro { font-size:13px; }
    .portal-entries { width:100%; grid-template-columns:1fr; }
    .portal-entry-card { padding:20px 20px 20px 79px; min-height:105px; }
    .portal-entry-card+.portal-entry-card { margin:12px 0 0; }
    .portal-entry-icon { position:absolute; top:24px; left:18px; width:42px; height:42px; }
    .portal-entry-card strong { font-size:18px; }
    .portal-entry-card small { font-size:10px; }
    .portal-entry-arrow { right:18px; top:25px; }
    .portal-utilities { margin-top:27px; }
    .portal-bottom { flex-direction:column; line-height:2; }
    .home-dashboard .home-identbar { min-height:145px; padding:22px; }
    .home-dashboard h1.home-identbar-title { font-size:21px; }
    .home-dashboard .home-identbar-meta { margin-top:12px; width:auto; }
    .home-quickbar { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .home-quick-item { padding:12px 9px; font-size:12px; }
}
@media (prefers-reduced-motion:reduce) { .portal-entry-card { transition:none; } }
