/* 票房助力后台视觉主题：只覆盖界面呈现，不改变菜单、权限、路由或数据逻辑。 */
:root {
  --bo-navy: #142136;
  --bo-navy-deep: #0d1728;
  --bo-sidebar-start: #2b2d4b;
  --bo-sidebar-end: #17192f;
  --bo-ink: #25344a;
  --bo-muted: #8591a3;
  --bo-canvas: #f4f6fa;
  --bo-panel: #ffffff;
  --bo-line: #e8edf4;
  --bo-rose: #ef6e90;
  --bo-rose-soft: #fff0f4;
  --bo-blue: #4b8cf7;
  --bo-radius: 14px;
}

body.layui-layout-body, .layui-bg-gray { background: var(--bo-canvas) !important; color: var(--bo-ink); }
.layui-layout > .layui-body { background: var(--bo-canvas); }
.layui-layout > .layui-body > .layui-card > .layui-card-header { box-shadow: none; background: transparent; }
.layui-layout > .layui-body > .layui-card > .layui-card-body { padding: 24px; }

/* 框架导航 */
.layui-header { height: 62px; background: var(--bo-panel) !important; border-bottom: 1px solid var(--bo-line); box-shadow: 0 1px 3px rgba(20,33,54,.04); }
.layui-layout > .layui-side, .layui-layout > .layui-body { top: 62px; }
.layui-header .layui-logo { width: 224px; color: #fff; font-weight: 700; line-height: 62px; letter-spacing: .4px; background: linear-gradient(135deg, var(--bo-navy), #233a5c); border: 0; }
.layui-header .layui-nav-item { height: 62px; line-height: 62px; }
.layui-header .layui-nav-item > a { color: #607087 !important; font-weight: 500; }
.layui-header .layui-nav-item.layui-this, .layui-header .layui-nav-item:hover { background: transparent; }
.layui-header .layui-nav-item.layui-this > a, .layui-header .layui-nav-item:hover > a { color: var(--bo-rose) !important; }
.layui-header .layui-layout-left { left: 240px !important; }
.layui-header .layui-layout-right > li > a { border-left: 1px solid var(--bo-line); }
.layui-header [data-target-menu-type] { border-right: 1px solid var(--bo-line); }
.layui-layout > .layui-side.layui-bg-black { width: 224px; background: linear-gradient(180deg, var(--bo-sidebar-start) 0%, #222440 52%, var(--bo-sidebar-end) 100%) !important; box-shadow: 5px 0 18px rgba(22,23,43,.12); }
.layui-layout:not(.layui-layout-left-hide) > .layui-body { left: 224px; }
.layui-layout > .layui-side .layui-nav-item { border: 0; margin: 4px 10px; width: auto; border-radius: 9px; }
.layui-layout > .layui-side .layui-nav-item a { height: 44px; line-height: 44px; border-radius: 9px; color: #c5d0df !important; }
.layui-layout > .layui-side .layui-nav-item a:hover, .layui-layout > .layui-side .layui-nav-itemed > a { color: #fff !important; background: rgba(255,255,255,.10) !important; }
.layui-layout > .layui-side .layui-nav-child { background: rgba(4,11,22,.24) !important; border-radius: 0 0 9px 9px; }
.layui-layout > .layui-side .layui-nav-child dd a { color: #aab8ca !important; }
.layui-layout > .layui-side .layui-nav-itemed { background: rgba(255,255,255,.06); }
.layui-layout > .layui-side .layui-nav-itemed > a { background: transparent !important; }
.layui-layout.layui-layout-left-mini > .layui-side { width: 50px; }
.layui-layout.layui-layout-left-mini > .layui-body { left: 50px; }
.layui-layout.layui-layout-left-mini .layui-header .layui-logo { width: 50px; min-width: 50px; padding: 0; font-size: 0; }
.layui-layout.layui-layout-left-mini .layui-header .layui-logo:after { content: '◆'; color: #ff9db7; font-size: 15px; }
.layui-layout.layui-layout-left-mini .layui-header .layui-layout-left { left: 50px !important; }

/* 页面通用组件 */
.layui-card, .think-box-shadow, .layui-form-pane .layui-form-item { border-radius: var(--bo-radius); }
.think-box-shadow { border: 1px solid var(--bo-line); box-shadow: 0 5px 18px rgba(24,37,59,.04); }
.layui-btn { border-radius: 7px; }
.layui-btn-normal, .layui-btn-primary:hover { background: var(--bo-rose); border-color: var(--bo-rose); }
.layui-table { margin: 0; border-color: var(--bo-line); }
.layui-table thead tr { background: #f8fafc; }
.layui-table th, .layui-table td { border-color: var(--bo-line); }
.layui-table tbody tr:hover { background: #fff8fa; }
.layui-form-select dl dd.layui-this { background-color: var(--bo-rose); }
.layui-input:focus, .layui-textarea:focus { border-color: var(--bo-rose) !important; box-shadow: 0 0 0 3px rgba(239,110,144,.11); }

/* 运营首页 */
.boxoffice-dashboard { max-width: 1520px; margin: 0 auto; }
.boxoffice-dashboard__intro { min-height: 136px; display: flex; align-items: center; justify-content: space-between; padding: 25px 30px; margin-bottom: 20px; overflow: hidden; position: relative; border-radius: var(--bo-radius); color: #fff; background: linear-gradient(115deg, #182944, #273f66); box-shadow: 0 10px 22px rgba(25,41,68,.16); }
.boxoffice-dashboard__intro:after { content: ''; position: absolute; width: 230px; height: 230px; right: 2%; top: -122px; border: 1px solid rgba(255,255,255,.18); border-radius: 50%; box-shadow: 0 0 0 35px rgba(255,255,255,.04); }
.boxoffice-dashboard__intro h1 { margin: 5px 0 5px; font-size: 25px; font-weight: 700; letter-spacing: .3px; }
.boxoffice-dashboard__intro p { margin: 0; color: rgba(255,255,255,.7); font-size: 13px; }
.boxoffice-intro__mark { z-index: 1; width: 64px; height: 64px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.25); border-radius: 18px; background: rgba(255,255,255,.11); font-size: 31px; }
.boxoffice-eyebrow { color: var(--bo-rose); font-size: 11px; letter-spacing: 1.4px; font-weight: 700; text-transform: uppercase; }
.boxoffice-dashboard__intro .boxoffice-eyebrow { color: #ffb0c4; }
.boxoffice-section { padding: 22px; margin-bottom: 20px; background: var(--bo-panel); border: 1px solid var(--bo-line); border-radius: var(--bo-radius); box-shadow: 0 5px 18px rgba(24,37,59,.04); }
.boxoffice-section__heading { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 18px; }
.boxoffice-section h2 { margin: 3px 0 0; color: var(--bo-ink); font-size: 18px; font-weight: 700; }
.boxoffice-section__hint { color: var(--bo-muted); font-size: 12px; }
.boxoffice-kpi { position: relative; min-height: 152px; overflow: hidden; padding: 22px; border: 1px solid var(--bo-line); border-radius: 12px; background: #fff; }
.boxoffice-kpi:after { content: ''; position: absolute; width: 86px; height: 86px; right: -26px; bottom: -32px; border-radius: 50%; opacity: .11; background: currentColor; }
.boxoffice-kpi__icon { width: 35px; height: 35px; display: grid; place-items: center; margin-bottom: 12px; border-radius: 10px; color: currentColor; background: currentColor; }
.boxoffice-kpi__icon i { color: #fff; font-size: 18px; }
.boxoffice-kpi__label { color: var(--bo-muted); font-size: 13px; }
.boxoffice-kpi__value { margin: 4px 0; font-size: 26px; line-height: 1.15; font-weight: 700; color: var(--bo-ink); letter-spacing: -.5px; }
.boxoffice-kpi__detail { color: #9da7b6; font-size: 12px; }
.boxoffice-kpi--blue { color: var(--bo-blue); }.boxoffice-kpi--rose { color: var(--bo-rose); }.boxoffice-kpi--violet { color: #8767d8; }.boxoffice-kpi--gold { color: #e6a33a; }.boxoffice-kpi--profit { color: #36a77d; }
.boxoffice-dashboard .boxoffice-kpi.report-tint-positive { background: #effaf3; }
.boxoffice-dashboard .boxoffice-kpi.report-tint-alert,
.boxoffice-dashboard .boxoffice-forecast-card__item.report-tint-alert { background: #fff1f0; }
.boxoffice-dashboard .boxoffice-forecast-card__item[data-forecast-days="15"] { background: #fff7ed; }
.boxoffice-kpi__icon { color: transparent; }.boxoffice-kpi--blue .boxoffice-kpi__icon { background: var(--bo-blue); }.boxoffice-kpi--rose .boxoffice-kpi__icon { background: var(--bo-rose); }.boxoffice-kpi--violet .boxoffice-kpi__icon { background: #8767d8; }.boxoffice-kpi--gold .boxoffice-kpi__icon { background: #e6a33a; }.boxoffice-kpi--profit .boxoffice-kpi__icon { background: #36a77d; }
.boxoffice-kpi--blue:after { background: var(--bo-blue); }.boxoffice-kpi--rose:after { background: var(--bo-rose); }.boxoffice-kpi--violet:after { background: #8767d8; }.boxoffice-kpi--gold:after { background: #e6a33a; }.boxoffice-kpi--profit:after { background: #36a77d; }
.boxoffice-kpi-row { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); margin: -7.5px; }
.boxoffice-kpi-row:before, .boxoffice-kpi-row:after { display: none !important; }
.boxoffice-kpi-row > [class*="layui-col"] { width: auto; }
.boxoffice-section--realtime { padding-bottom: 7px; }
.boxoffice-live-dot { position: relative; padding-left: 13px; color: #45a46b; font-size: 12px; }.boxoffice-live-dot:before { content: ''; width: 6px; height: 6px; position: absolute; left: 0; top: 5px; border-radius: 50%; background: #45a46b; box-shadow: 0 0 0 4px rgba(69,164,107,.12); }
.boxoffice-metric-grid { display: grid; gap: 0; padding: 18px 0; border: 1px solid var(--bo-line); border-radius: 11px; background: #fbfcfe; }.boxoffice-metric-grid--four { grid-template-columns: repeat(4,1fr); }.boxoffice-metric-grid--three { grid-template-columns: repeat(3,1fr); }
.boxoffice-metric { padding: 0 17px; border-right: 1px solid var(--bo-line); }.boxoffice-metric:last-child { border-right: 0; }.boxoffice-metric .font-s14 { color: var(--bo-muted); font-size: 12px !important; }.boxoffice-metric .font-s16 { margin: 6px 0; color: var(--bo-ink); font-size: 20px !important; font-weight: 700; }.boxoffice-metric .color-desc { color: #9da7b6 !important; }
.boxoffice-data-card { overflow: hidden; margin-bottom: 20px; padding: 22px; border: 1px solid var(--bo-line); border-radius: var(--bo-radius); background: var(--bo-panel); box-shadow: 0 5px 18px rgba(24,37,59,.04); }
.boxoffice-today-due-card { display: flex; align-items: center; justify-content: space-between; gap: 28px; margin: 0 0 20px; padding: 20px 22px; border: 1px solid #f4dce5; border-radius: var(--bo-radius); background: linear-gradient(105deg, #fff8fb, #fff); box-shadow: 0 5px 18px rgba(24,37,59,.04); }
.boxoffice-today-due-card__heading { min-width: 160px; }.boxoffice-today-due-card__heading h2 { margin: 5px 0 0; color: var(--bo-ink); font-size: 18px; font-weight: 700; }
.boxoffice-today-due-card__metrics { display: grid; flex: 1; grid-template-columns: repeat(2, minmax(0, 1fr)); }.boxoffice-today-due-card__metrics > div { padding: 0 24px; border-left: 1px solid #f4dce5; }.boxoffice-today-due-card__metrics span { display: block; color: #6e809f; font-size: 13px; }.boxoffice-today-due-card__metrics strong { display: block; margin-top: 7px; color: #ef5f87; font-size: 24px; font-weight: 700; line-height: 1; }
.boxoffice-forecast-card { margin: 0 0 20px; padding: 22px; border: 1px solid var(--bo-line); border-radius: var(--bo-radius); background: var(--bo-panel); box-shadow: 0 5px 18px rgba(24,37,59,.04); }.boxoffice-forecast-card__heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 18px; }.boxoffice-forecast-card__heading h2 { margin: 5px 0 0; color: var(--bo-ink); font-size: 18px; font-weight: 700; }.boxoffice-forecast-card__heading > span { color: var(--bo-muted); font-size: 12px; }.boxoffice-forecast-card__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--bo-line); border-radius: 11px; overflow: hidden; }.boxoffice-forecast-card__item { min-width: 0; padding: 18px; border-right: 1px solid var(--bo-line); background: #fbfcfe; }.boxoffice-forecast-card__item:last-child { border-right: 0; }.boxoffice-forecast-card__item h3 { margin: 0 0 12px; color: var(--bo-ink); font-size: 15px; }.boxoffice-forecast-card__item > span, .boxoffice-forecast-card__item p, .boxoffice-forecast-card__item div { color: var(--bo-muted); font-size: 12px; }.boxoffice-forecast-card__item strong { display: block; margin: 5px 0; color: #ef5f87; font-size: 23px; line-height: 1.2; }.boxoffice-forecast-card__item p { margin: 0 0 13px; white-space: nowrap; }.boxoffice-forecast-card__item div { padding-top: 12px; border-top: 1px dashed var(--bo-line); }.boxoffice-forecast-card__item b { display: block; margin-top: 4px; color: #36a77d; font-size: 16px; }.boxoffice-forecast-card__item b.is-negative { color: #e45867; }
.boxoffice-data-card caption { color: var(--bo-ink); font-size: 17px !important; font-weight: 700; }.boxoffice-data-card caption span { margin-left: 7px; color: var(--bo-muted); font-size: 12px; font-weight: 400; }
.boxoffice-daily-report-more { padding-top: 18px; text-align: center; }.boxoffice-daily-report-more .layui-btn { min-width: 156px; }

@media (max-width: 1200px) { .boxoffice-kpi-row { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) { .layui-header { display: flex; overflow: hidden; }.layui-header .layui-logo { width: 112px; min-width: 112px; padding: 0 10px; font-size: 15px; letter-spacing: 0; text-align: center; }.layui-header .layui-layout-left { position: relative; left: auto !important; right: auto; flex: 1; min-width: 0; overflow-x: auto; overflow-y: hidden; white-space: nowrap; -webkit-overflow-scrolling: touch; }.layui-header .layui-layout-left::-webkit-scrollbar { display: none; }.layui-header .layui-layout-left .layui-nav-item { display: inline-block; float: none; }.layui-header .layui-layout-left .layui-nav-item > a { padding: 0 12px; }.layui-header .layui-layout-right { display: none; } }
@media (max-width: 900px) { .layui-layout > .layui-body > .layui-card > .layui-card-body { padding: 15px; }.boxoffice-kpi-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }.boxoffice-metric-grid--four { grid-template-columns: repeat(2,1fr); }.boxoffice-metric:nth-child(2) { border-right: 0; }.boxoffice-metric:nth-child(n+3) { margin-top: 16px; }.boxoffice-dashboard__intro { padding: 22px; }.boxoffice-dashboard__intro h1 { font-size: 21px; }.boxoffice-forecast-card__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.boxoffice-forecast-card__item:nth-child(2) { border-right: 0; }.boxoffice-forecast-card__item:nth-child(n+3) { border-top: 1px solid var(--bo-line); } }
@media (max-width: 560px) { .boxoffice-section, .boxoffice-data-card { padding: 16px; }.boxoffice-kpi-row { grid-template-columns: 1fr; }.boxoffice-kpi { min-height: 136px; }.boxoffice-metric-grid--three { grid-template-columns: 1fr; }.boxoffice-metric { border-right: 0; border-bottom: 1px solid var(--bo-line); padding: 12px 17px; }.boxoffice-metric:last-child { border-bottom: 0; }.boxoffice-dashboard__intro p { max-width: 220px; }.boxoffice-intro__mark { display: none; }.boxoffice-today-due-card { display: block; padding: 18px; }.boxoffice-today-due-card__metrics { margin-top: 18px; }.boxoffice-today-due-card__metrics > div { padding: 0 12px; }.boxoffice-today-due-card__metrics > div:first-child { padding-left: 0; }.boxoffice-today-due-card__metrics strong { font-size: 20px; }.boxoffice-forecast-card { padding: 18px; }.boxoffice-forecast-card__heading { display: block; }.boxoffice-forecast-card__heading > span { display: block; margin-top: 8px; line-height: 1.5; }.boxoffice-forecast-card__grid { grid-template-columns: 1fr; }.boxoffice-forecast-card__item, .boxoffice-forecast-card__item:nth-child(2) { border-right: 0; }.boxoffice-forecast-card__item + .boxoffice-forecast-card__item { border-top: 1px solid var(--bo-line); } }
