/* FilmPulse 全球影视态势信息系统 - 本地样式（无外部依赖） */
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{font-family:"Microsoft YaHei","PingFang SC",Helvetica,Arial,sans-serif;background:#0a1526;color:#cfe3f7;font-size:14px}
a{color:#4db8ff;text-decoration:none}
a:hover{color:#8fd0ff}

/* 顶部导航 */
.topbar{display:flex;align-items:center;height:56px;padding:0 24px;background:linear-gradient(90deg,#0d1f38,#10294a);border-bottom:1px solid #1e3a5f;position:relative;z-index:9}
.topbar .logo{font-size:20px;font-weight:bold;color:#fff;letter-spacing:1px;margin-right:8px}
.topbar .logo .dot{color:#ff5252}
.topbar .sub{font-size:12px;color:#7fa8cc;margin-right:36px}
.nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.nav a{padding:8px 14px;border-radius:4px;color:#a9c6e4;font-size:14px}
.nav a:hover{background:#16304f;color:#fff}
.nav a.active{background:#1d4ed8;color:#fff}
.topbar .time{font-size:12px;color:#7fa8cc;font-variant-numeric:tabular-nums}

/* 布局 */
.wrap{padding:16px 24px 40px;max-width:1440px;margin:0 auto}
.grid{display:grid;gap:14px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.g23{grid-template-columns:2fr 1fr}
.g32{grid-template-columns:1fr 2fr}
@media(max-width:1000px){.g4,.g3,.g2,.g23,.g32{grid-template-columns:1fr}}

/* 卡片 */
.card{background:#0f2038;border:1px solid #1c3a5f;border-radius:8px;padding:14px 16px}
.card .card-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.card .card-t{font-size:15px;font-weight:bold;color:#e8f2fd}
.card .card-t::before{content:"";display:inline-block;width:4px;height:14px;background:#3b82f6;border-radius:2px;margin-right:8px;vertical-align:-2px}
.card .card-x{font-size:12px;color:#6f95bd}

/* KPI */
.kpi{background:linear-gradient(135deg,#12294a,#0f2038);border:1px solid #1c3a5f;border-radius:8px;padding:16px}
.kpi .k-t{font-size:12px;color:#8fb2d9}
.kpi .k-v{font-size:26px;font-weight:bold;color:#fff;margin-top:6px;font-variant-numeric:tabular-nums}
.kpi .k-v small{font-size:12px;font-weight:normal;color:#8fb2d9;margin-left:4px}
.kpi .k-d{font-size:12px;margin-top:6px;color:#55d187}
.kpi .k-d.down{color:#ff7a7a}
.kpi.c-blue .k-v{color:#4db8ff}
.kpi.c-gold .k-v{color:#ffc94d}
.kpi.c-green .k-v{color:#55d187}
.kpi.c-pink .k-v{color:#ff8fb3}

/* 表格 */
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{color:#8fb2d9;font-weight:normal;text-align:left;padding:8px 10px;border-bottom:1px solid #1c3a5f;white-space:nowrap}
.tbl td{padding:8px 10px;border-bottom:1px solid #122a47;color:#cfe3f7}
.tbl tr:hover td{background:#13294a}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl .rk{display:inline-block;width:22px;height:22px;line-height:22px;text-align:center;border-radius:4px;background:#1c3a5f;color:#9dbfe2;font-size:12px}
.tbl .rk.r1{background:#e8b62e;color:#231a00}
.tbl .rk.r2{background:#9aa7b8;color:#101820}
.tbl .rk.r3{background:#b87333;color:#fff}

/* 徽标 */
.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;line-height:18px}
.b-hot{background:rgba(255,82,82,.15);color:#ff7a7a;border:1px solid rgba(255,82,82,.35)}
.b-up{background:rgba(85,209,135,.15);color:#55d187;border:1px solid rgba(85,209,135,.35)}
.b-wait{background:rgba(77,184,255,.15);color:#4db8ff;border:1px solid rgba(77,184,255,.35)}
.b-end{background:rgba(154,167,184,.15);color:#9aa7b8;border:1px solid rgba(154,167,184,.35)}
.b-star{color:#ffc94d}
.trend-up{color:#ff7a7a}
.trend-down{color:#55d187}

/* 条目列表 */
.ranklist{list-style:none}
.ranklist li{display:flex;align-items:center;padding:7px 0;border-bottom:1px dashed #16304f}
.ranklist .r{width:24px;font-weight:bold;color:#6f95bd}
.ranklist .r.r1{color:#ffc94d}.ranklist .r.r2{color:#c9d6e6}.ranklist .r.r3{color:#e0965a}
.ranklist .n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ranklist .n small{color:#6f95bd;margin-left:6px}
.ranklist .v{color:#4db8ff;font-variant-numeric:tabular-nums}

/* tabs */
.tabs{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.tabs button{background:#12294a;color:#a9c6e4;border:1px solid #1c3a5f;border-radius:4px;padding:6px 14px;cursor:pointer;font-size:13px}
.tabs button.on{background:#1d4ed8;border-color:#1d4ed8;color:#fff}

/* 地图容器 */
.mapbox{position:relative;height:420px}
.mapbox svg{width:100%;height:100%}
.tip{position:absolute;pointer-events:none;background:rgba(8,20,38,.95);border:1px solid #2b5c9e;border-radius:6px;padding:8px 12px;font-size:12px;color:#dff0ff;display:none;z-index:99;box-shadow:0 4px 14px rgba(0,0,0,.5);min-width:150px}
.tip .tt{font-weight:bold;color:#fff;margin-bottom:4px}
.tip .tr{display:flex;justify-content:space-between;gap:12px}
.tip .tr b{color:#4db8ff}

/* 电影卡片 */
.mcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.mcard{background:#0f2038;border:1px solid #1c3a5f;border-radius:8px;padding:14px;position:relative}
.mcard .m-title{font-size:15px;font-weight:bold;color:#e8f2fd;margin-bottom:2px;padding-right:52px}
.mcard .m-cn{font-size:13px;color:#8fb2d9;margin-bottom:8px;padding-right:52px}
.mcard .m-meta{font-size:12px;color:#6f95bd;line-height:1.9}
.mcard .m-meta b{color:#a9c6e4;font-weight:normal}
.mcard .m-score{position:absolute;top:12px;right:14px;background:rgba(255,201,77,.12);border:1px solid rgba(255,201,77,.4);color:#ffc94d;border-radius:6px;padding:2px 8px;font-weight:bold}
.mcard .m-score.zero{background:rgba(154,167,184,.1);border-color:rgba(154,167,184,.3);color:#9aa7b8}
.mcard .m-badges{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}

/* 条形图行 */
.bar-row{display:flex;align-items:center;gap:8px;margin:9px 0}
.bar-row .bl{width:130px;font-size:12px;color:#a9c6e4;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.bar-row .bt{flex:1;height:14px;background:#0d2138;border-radius:3px;overflow:hidden}
.bar-row .bf{height:100%;border-radius:3px;background:linear-gradient(90deg,#2563eb,#4db8ff);width:0;transition:width .8s ease}
.bar-row .bv{width:86px;text-align:right;font-size:12px;color:#8fb2d9;font-variant-numeric:tabular-nums}

/* 页脚 */
.footer{padding:18px 24px;text-align:center;color:#4f7196;font-size:12px;border-top:1px solid #122a47;margin-top:10px}
.loading{text-align:center;color:#6f95bd;padding:40px 0}