/* ===== 智慧水稻种植全链条服务平台 原型样式 ===== */
:root{
  --green:#16a34a; --green-d:#15803d; --green-l:#dcfce7;
  --blue:#2563eb; --blue-l:#dbeafe;
  --ink:#0f172a; --ink-2:#334155; --ink-3:#64748b; --ink-4:#94a3b8;
  --line:#e2e8f0; --bg:#f1f5f9; --card:#ffffff;
  --amber:#d97706; --red:#dc2626; --purple:#7c3aed; --cyan:#0891b2;
  /* 驾驶舱深色 */
  --d-bg:#06101f; --d-bg2:#0a1830; --d-panel:rgba(18,42,79,.55); --d-panel2:rgba(20,45,85,.85);
  --d-border:rgba(64,150,255,.28); --d-text:#cfe3ff; --d-text-d:#8fb3e6; --d-text-3:#5e7ba8;
  --d-green:#22d3a5; --d-blue:#38bdf8; --d-amber:#fbbf24; --d-red:#fb6a6a; --d-purple:#a78bfa; --d-cyan:#2dd4bf;
  --shadow:0 1px 3px rgba(15,23,42,.08),0 1px 2px rgba(15,23,42,.06);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none}
ul{list-style:none}
.container{max-width:1360px;margin:0 auto;padding:0 24px}

/* ===== 顶部导航 ===== */
.topnav{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--line);box-shadow:var(--shadow)}
.topnav .row{display:flex;align-items:center;height:60px;gap:24px}
.topnav .user-name{font-size:14px;font-weight:600;color:var(--ink)}
.topnav .user-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--green),var(--blue));color:#fff;display:grid;place-items:center;font-size:15px;font-weight:700}
.topnav .right{display:flex;align-items:center;gap:12px;margin-left:auto}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;white-space:nowrap}
.brand .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--green),var(--blue));display:grid;place-items:center;color:#fff;font-size:18px}
.brand small{display:block;font-size:11px;font-weight:400;color:var(--ink-3);margin-top:1px}
.topnav nav{display:flex;gap:4px;margin-left:8px}
.topnav nav a{padding:8px 14px;border-radius:8px;font-size:14px;color:var(--ink-2);font-weight:500}
.topnav nav a:hover,.topnav nav a.active{background:var(--green-l);color:var(--green-d)}
.topnav .right{margin-left:auto;display:flex;align-items:center;gap:10px}
.search{display:flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:13px;width:220px;color:var(--ink-3)}
.search input{border:none;background:none;outline:none;font-size:13px;width:100%}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;font-size:13px;font-weight:600;background:var(--green);color:#fff}
.btn.outline{background:#fff;color:var(--ink-2);border:1px solid var(--line)}
.btn.blue{background:var(--blue)}
.btn.sm{padding:5px 10px;font-size:12px}
.tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:600;line-height:1.5}
.tag.ai{background:#ede9fe;color:#7c3aed}.tag.fund{background:#dcfce7;color:#15803d}
.tag.chain{background:#dbeafe;color:#1d4ed8}.tag.iot{background:#cffafe;color:#0e7490}
.tag.rs{background:#fef3c7;color:#b45309}.tag.credit{background:#fee2e2;color:#b91c1c}
.tag.bigdata{background:#e0e7ff;color:#4338ca}.tag.dash{background:#fae8ff;color:#a21caf}.tag.saas{background:#d1fae5;color:#047857}

/* ===== 门户 Hero ===== */
.hero{position:relative;background:linear-gradient(120deg,#0f172a 0%,#0b3d2e 55%,#0a2540 100%);color:#fff;padding:54px 0 64px;overflow:hidden}
.hero::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 80% 20%,rgba(34,211,165,.25),transparent 40%),radial-gradient(circle at 15% 90%,rgba(56,189,248,.2),transparent 45%)}
.hero .container{position:relative;z-index:1}
.hero h1{font-size:38px;line-height:1.25;letter-spacing:1px}
.hero h1 .em{color:var(--d-green)}
.hero .sub{margin-top:14px;font-size:15px;color:#a9c4e6;max-width:760px;line-height:1.7}
.hero .meta{margin-top:22px;display:flex;gap:10px;flex-wrap:wrap}
.hero .meta span{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);padding:6px 12px;border-radius:20px;font-size:12px;color:#cfe3ff}
.hero .stats{margin-top:30px;display:grid;grid-template-columns:repeat(4,1fr);gap:14px;max-width:880px}
.hero .stats .k{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:14px 16px}
.hero .stats .k b{font-size:24px;color:#fff;font-weight:700}
.hero .stats .k b small{font-size:13px;color:var(--d-green);font-weight:500;margin-left:4px}
.hero .stats .k p{font-size:12px;color:#9ab4d8;margin-top:4px}

/* ===== 五端入口 ===== */
.section{padding:42px 0}
.section h2{font-size:20px;font-weight:700;display:flex;align-items:center;gap:10px}
.section h2 .bar{width:4px;height:18px;background:var(--green);border-radius:3px}
.section h2 small{font-size:13px;color:var(--ink-3);font-weight:400}
.ends{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:20px}
.end-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;transition:.18s;cursor:pointer;position:relative;overflow:hidden}
.end-card:hover{border-color:var(--green);box-shadow:0 8px 24px rgba(22,163,74,.12);transform:translateY(-2px)}
.end-card .ic{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;font-size:22px;color:#fff;margin-bottom:14px}
.end-card h3{font-size:15px;font-weight:700}
.end-card p{font-size:12px;color:var(--ink-3);margin-top:6px;line-height:1.6}
.end-card .pill{position:absolute;top:16px;right:16px;font-size:10px;color:var(--ink-4)}

/* ===== 平台网格 ===== */
.group{margin-top:26px}
.group-h{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.group-h .n{width:26px;height:26px;border-radius:8px;background:var(--green-l);color:var(--green-d);font-weight:700;display:grid;place-items:center;font-size:13px}
.group-h h3{font-size:15px;font-weight:700}
.group-h .desc{font-size:12px;color:var(--ink-3)}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.plat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;transition:.16s;cursor:pointer;display:flex;flex-direction:column;gap:8px}
.plat:hover{border-color:var(--blue);box-shadow:0 6px 18px rgba(37,99,235,.1);transform:translateY(-1px)}
.plat .top{display:flex;align-items:center;justify-content:space-between}
.plat .name{font-size:14px;font-weight:700;line-height:1.4}
.plat .cnt{font-size:11px;color:var(--ink-4);background:var(--bg);padding:2px 7px;border-radius:5px;white-space:nowrap}
.plat .d{font-size:12px;color:var(--ink-3);line-height:1.55;flex:1}
.plat .tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}

.footer{background:#0f172a;color:#94a3b8;padding:30px 0;text-align:center;font-size:13px;line-height:1.9}
.footer b{color:#cbd5e1}
.footer .foot-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 20px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid rgba(148,163,184,.16)}
.footer .foot-links a{color:#94a3b8;font-size:13px}
.footer .foot-links a:hover{color:var(--green-d)}

/* ===== 驾驶舱深色 ===== */
body.dash{background:var(--d-bg);color:var(--d-text);font-size:13px}
body.dash::before{content:"";position:fixed;inset:0;background-image:linear-gradient(rgba(40,90,160,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(40,90,160,.05) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:0}
.dhead{position:sticky;top:0;z-index:20;background:linear-gradient(180deg,rgba(8,20,42,.96),rgba(8,20,42,.7));border-bottom:1px solid var(--d-border);backdrop-filter:blur(6px)}
.dhead .row{display:flex;align-items:center;height:62px;gap:20px}
.dhead .brand .logo{background:linear-gradient(135deg,var(--d-green),var(--d-blue))}
.dhead h1{font-size:20px;font-weight:700;color:#fff;letter-spacing:1px}
.dhead h1 small{font-size:12px;color:var(--d-text-3);font-weight:400;margin-left:10px}
.dhead .tabs{display:flex;gap:2px;margin-left:10px}
.dhead .tabs a{padding:6px 12px;border-radius:7px;font-size:12px;color:var(--d-text-d)}
.dhead .tabs a:hover,.dhead .tabs a.active{background:rgba(56,189,248,.14);color:var(--d-blue)}
.dhead .right{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:12px;color:var(--d-text-d)}
.region-sel{background:rgba(56,189,248,.12);border:1px solid var(--d-border);color:var(--d-blue);padding:6px 12px;border-radius:7px;font-size:12px;font-weight:600}
.clock{font-variant-numeric:tabular-nums;color:var(--d-green)}

.kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-top:18px;position:relative;z-index:1}
.kpi{background:var(--d-panel);border:1px solid var(--d-border);border-radius:10px;padding:14px;position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--d-blue)}
.kpi.g::before{background:var(--d-green)}.kpi.a::before{background:var(--d-amber)}.kpi.r::before{background:var(--d-red)}.kpi.p::before{background:var(--d-purple)}
.kpi .lab{font-size:12px;color:var(--d-text-d)}
.kpi .val{font-size:24px;font-weight:700;color:#fff;margin-top:4px;font-variant-numeric:tabular-nums}
.kpi .val small{font-size:13px;color:var(--d-text-3);font-weight:500;margin-left:3px}
.kpi .trend{font-size:11px;margin-top:3px}
.kpi .trend.up{color:var(--d-green)}.kpi .trend.down{color:var(--d-red)}

.cabins{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;margin-top:14px;position:relative;z-index:1}
.cabin{background:var(--d-panel);border:1px solid var(--d-border);border-radius:12px;padding:16px;display:flex;flex-direction:column}
.cabin.col4{grid-column:span 4}.cabin.col6{grid-column:span 6}.cabin.col8{grid-column:span 8}.cabin.col3{grid-column:span 3}.cabin.col12{grid-column:span 12}
.cabin h3{font-size:14px;font-weight:700;color:#fff;display:flex;align-items:center;gap:8px;margin-bottom:12px}
.cabin h3 .dot{width:8px;height:8px;border-radius:50%;background:var(--d-blue)}
.cabin h3 .more{margin-left:auto;font-size:11px;color:var(--d-text-3);font-weight:400}
.cabin .body{flex:1}

/* 图表占位 */
.bars{display:flex;align-items:flex-end;gap:10px;height:130px;padding-top:10px}
.bars .bar{flex:1;background:linear-gradient(180deg,var(--d-blue),rgba(56,189,248,.15));border-radius:4px 4px 0 0;position:relative;min-height:6px}
.bars .bar.g{background:linear-gradient(180deg,var(--d-green),rgba(34,211,165,.15))}
.bars .bar span{position:absolute;bottom:-18px;left:0;right:0;text-align:center;font-size:10px;color:var(--d-text-3)}
.bars .bar b{position:absolute;top:-16px;left:0;right:0;text-align:center;font-size:10px;color:var(--d-text)}
.legend{display:flex;gap:14px;font-size:11px;color:var(--d-text-d);margin-bottom:8px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:middle}
.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px}
.kv .item{display:flex;justify-content:space-between;font-size:12px;padding:5px 0;border-bottom:1px dashed rgba(64,150,255,.14)}
.kv .item .k{color:var(--d-text-d)}.kv .item .v{color:#fff;font-weight:600}
.donut{width:120px;height:120px;border-radius:50%;background:conic-gradient(var(--d-green) 0 62%,var(--d-blue) 62% 81%,var(--d-amber) 81 92%,var(--d-red) 92% 100%);margin:0 auto;position:relative;display:grid;place-items:center}
.donut::after{content:"";position:absolute;inset:24px;border-radius:50%;background:var(--d-bg2)}
.donut .c{position:relative;z-index:1;text-align:center}
.donut .c b{font-size:22px;color:#fff}.donut .c small{font-size:10px;color:var(--d-text-d);display:block}
.list-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid rgba(64,150,255,.1);font-size:12px}
.list-row:last-child{border:none}
.list-row .rank{width:18px;height:18px;border-radius:4px;background:rgba(56,189,248,.16);color:var(--d-blue);font-size:11px;font-weight:700;display:grid;place-items:center;flex-shrink:0}
.list-row .rank.t{background:var(--d-amber);color:#000}
.list-row .nm{flex:1;color:var(--d-text)}
.list-row .v{color:#fff;font-weight:600}
.progress{height:6px;border-radius:3px;background:rgba(64,150,255,.14);overflow:hidden}
.progress i{display:block;height:100%;background:var(--d-green)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips span{font-size:11px;padding:3px 8px;border-radius:5px;background:rgba(56,189,248,.1);color:var(--d-blue);border:1px solid rgba(56,189,248,.18)}
.alert{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border-radius:8px;font-size:12px;margin-bottom:8px}
.alert .ic{flex-shrink:0}.alert .t{flex:1}.alert .t b{color:var(--ink);font-size:12px}.alert .t small{color:var(--ink-3);display:block;margin-top:2px}
.alert.r{background:rgba(251,106,106,.1);border:1px solid rgba(251,106,106,.3)}
.alert.a{background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.3)}
.alert.g{background:rgba(34,211,165,.1);border:1px solid rgba(34,211,165,.3)}
.gmap{height:220px;border-radius:8px;background:linear-gradient(135deg,rgba(20,45,85,.6),rgba(10,30,60,.6));border:1px solid var(--d-border);position:relative;overflow:hidden}
.gmap .mk{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--d-green);box-shadow:0 0 12px var(--d-green)}
.gmap .mk.r{background:var(--d-red);box-shadow:0 0 12px var(--d-red)}
.gmap .mk.a{background:var(--d-amber);box-shadow:0 0 12px var(--d-amber)}

/* ===== 通用业务页(后续平台复用) ===== */
.workspace{display:flex;min-height:100vh}
.side{width:220px;background:#fff;border-right:1px solid var(--line);flex-shrink:0;padding:14px 0;position:sticky;top:60px;height:calc(100vh - 60px);overflow:auto}
.side .grp{font-size:11px;color:var(--ink-4);padding:14px 18px 6px;font-weight:600}
.side a{display:flex;align-items:center;gap:10px;padding:9px 18px;font-size:13px;color:var(--ink-2);border-left:3px solid transparent}
.side a:hover{background:var(--bg)}
.side a.active{background:var(--green-l);color:var(--green-d);border-left-color:var(--green);font-weight:600}
.main{flex:1;padding:20px 26px;min-width:0}
.crumb{font-size:12px;color:var(--ink-3);margin-bottom:14px}
.crumb b{color:var(--ink)}
.pageh{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.pageh h1{font-size:19px;font-weight:700}
.pageh .acts{margin-left:auto;display:flex;gap:8px}
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:14px}
.inp{border:1px solid var(--line);border-radius:7px;padding:7px 10px;font-size:13px;background:#fff;outline:none;min-width:140px}
.inp:focus{border-color:var(--blue)}
.sel{appearance:none;border:1px solid var(--line);border-radius:7px;padding:7px 26px 7px 10px;font-size:13px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M1 3l4 4 4-4' stroke='%2364748b' fill='none' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 8px center}
.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:14px}
.card h3{font-size:14px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:8px}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{text-align:left;font-size:12px;color:var(--ink-3);font-weight:600;padding:10px 12px;border-bottom:2px solid var(--line);background:var(--bg);white-space:nowrap}
tbody td{padding:11px 12px;border-bottom:1px solid var(--line);color:var(--ink-2)}
tbody tr:hover{background:var(--bg)}
.lvl{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600}
.lvl::before{content:"";width:6px;height:6px;border-radius:50%}
.lvl.a{color:var(--green-d)}.lvl.a::before{background:var(--green)}
.lvl.b{color:var(--blue)}.lvl.b::before{background:var(--blue)}
.lvl.c{color:var(--amber)}.lvl.c::before{background:var(--amber)}
.lvl.d{color:var(--red)}.lvl.d::before{background:var(--red)}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.stat{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px}
.stat .lab{font-size:12px;color:var(--ink-3)}
.stat .v{font-size:22px;font-weight:700;margin-top:4px;color:var(--ink)}
.stat .v small{font-size:13px;color:var(--ink-3);font-weight:500;margin-left:3px}
.stat .v.g{color:var(--green-d)}.stat .v.b{color:var(--blue)}.stat .v.a{color:var(--amber)}
.tabs2{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:14px}
.tabs2 a{padding:8px 14px;font-size:13px;color:var(--ink-3);border-bottom:2px solid transparent;font-weight:500;margin-bottom:-1px}
.tabs2 a.active{color:var(--green-d);border-color:var(--green)}
.empty{padding:50px;text-align:center;color:var(--ink-4);font-size:13px}
/* ===== 政务办事大厅门户 ===== */
.gov-top{background:#0b3d2e;color:#cfe3d8;font-size:12px}
.gov-top .row{display:flex;align-items:center;height:32px;gap:16px}
.gov-top .row .date{color:#9fc0ad}
.gov-top .right{margin-left:auto;display:flex;gap:14px}
.gov-top .right a:hover{color:#fff}

.govnav{background:#fff;box-shadow:var(--shadow);position:sticky;top:0;z-index:50}
.govnav .brand-row{display:flex;align-items:center;height:74px;gap:18px}
.govnav .brand{font-size:22px}
.govnav .brand .logo{width:48px;height:48px;border-radius:11px;font-size:26px}
.govnav .brand small{font-size:12px;color:var(--ink-3)}
.govnav .menu-row{border-top:1px solid var(--line);background:linear-gradient(180deg,#f6fdf8,#fff);border-bottom:3px solid var(--green)}
.govnav .menu-row .container{display:flex;align-items:center;height:56px}
.govnav .menu{display:flex;gap:2px;flex-wrap:nowrap;white-space:nowrap;width:100%;justify-content:center}
.govnav .menu a{padding:14px 16px;font-size:17px;font-weight:600;color:var(--ink-2);border-radius:8px;position:relative;white-space:nowrap;transition:color .15s,background .15s}
.govnav .menu a.active{color:var(--green-d);font-weight:700}
.govnav .menu a.active::after{content:"";position:absolute;left:16px;right:16px;bottom:-3px;height:3px;background:var(--green);border-radius:2px}
.govnav .menu a:hover{color:var(--green-d);background:rgba(34,211,165,.1)}
.govnav .right{margin-left:auto;display:flex;gap:8px;align-items:center}

/* 品牌行内小搜索框 */
.govnav .nav-search{display:flex;align-items:center;width:440px;margin-left:auto;margin-right:10px;background:#fff;border:1.5px solid var(--line);border-radius:24px;padding:4px 4px 4px 16px;transition:border-color .15s,box-shadow .15s}
.govnav .nav-search:focus-within{border-color:var(--green);box-shadow:0 0 0 3px rgba(34,211,165,.12)}
.govnav .nav-search .ic{color:var(--ink-3);font-size:15px;margin-right:6px}
.govnav .nav-search input{flex:1;border:none;outline:none;font-size:13px;padding:6px 0;background:transparent;color:var(--ink)}
.govnav .nav-search .btn{font-size:13px;font-weight:600;padding:6px 18px;border-radius:20px}

/* Banner */
.banner{background:linear-gradient(115deg,#0b3d2e 0%,#0a4a6e 60%,#0a2540 100%);color:#fff;position:relative;overflow:hidden;padding:74px 0 86px}
.banner::after{content:"";position:absolute;inset:0;z-index:1;background-image:radial-gradient(circle at 88% 18%,rgba(34,211,165,.22),transparent 38%),radial-gradient(circle at 8% 95%,rgba(56,189,248,.18),transparent 45%);pointer-events:none}
.bn-slides{position:absolute;inset:0;z-index:0}
.bn-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.1s ease}
.bn-slide.on{opacity:1}
.bn-scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(6,16,31,.82) 0%,rgba(8,28,46,.6) 40%,rgba(8,37,64,.32) 75%,rgba(8,37,64,.18) 100%),linear-gradient(0deg,rgba(6,16,31,.55) 0%,transparent 45%)}
.banner .container{position:relative;z-index:2}
.bn-cap{position:absolute;right:24px;top:18px;z-index:3;font-size:12px;font-weight:600;color:#fff;background:rgba(6,16,31,.45);border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(6px);padding:6px 14px;border-radius:20px;letter-spacing:.5px}
.bn-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:42px;height:42px;border-radius:50%;background:rgba(6,16,31,.4);border:1px solid rgba(255,255,255,.3);color:#fff;font-size:26px;line-height:1;cursor:pointer;transition:.18s;backdrop-filter:blur(6px);display:grid;place-items:center}
.bn-arrow:hover{background:rgba(22,163,74,.7);border-color:var(--green)}
.bn-arrow.prev{left:18px}.bn-arrow.next{right:18px}
.bn-dots{position:absolute;left:50%;transform:translateX(-50%);bottom:16px;z-index:3;display:flex;gap:8px}
.bn-dots span{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.45);cursor:pointer;transition:.18s}
.bn-dots span.on{background:var(--green);width:26px;border-radius:5px}
.banner .container{position:relative;z-index:1}
.banner .slogan{font-size:38px;font-weight:800;letter-spacing:1px}
.banner .slogan .em{color:var(--d-green)}
.banner .sub{margin-top:12px;font-size:16px;color:#cfe3ff;line-height:1.6}
.banner .ban-cta{margin-top:26px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.banner .ban-cta .trace-cta{padding:12px 26px;font-size:15px;border-radius:30px}
.banner .ban-cta .btn.lg{font-size:16px;font-weight:700;padding:13px 30px;border-radius:28px}
.banner .ban-cta .btn.outline-w{background:rgba(255,255,255,.08);border:1.5px solid rgba(255,255,255,.5);color:#fff}
.banner .ban-cta .btn.outline-w:hover{background:rgba(255,255,255,.18)}
.banner .ban-tags{margin-top:18px}
.svc-search{margin-top:20px;background:#fff;border-radius:30px;padding:6px 6px 6px 22px;display:flex;align-items:center;max-width:680px;box-shadow:0 8px 30px rgba(0,0,0,.25)}
.svc-search .ic{color:var(--ink-3);font-size:16px;margin-right:8px}
.svc-search input{flex:1;border:none;outline:none;font-size:14px;padding:8px 0}
.svc-search .btn{border-radius:24px;padding:8px 22px}
.svc-search-row{display:flex;align-items:center;gap:16px;margin-top:20px;max-width:920px}
.svc-search-row .svc-search{margin-top:0;flex:1;max-width:none}
.trace-cta{display:flex;align-items:center;gap:10px;white-space:nowrap;background:linear-gradient(135deg,#22d3a5,#0ea5b7);color:#06281f;font-weight:800;font-size:16px;letter-spacing:.5px;padding:16px 30px;border-radius:34px;box-shadow:0 10px 30px rgba(34,211,165,.45),0 0 0 4px rgba(34,211,165,.18);transition:transform .15s,box-shadow .15s;animation:tracePulse 2.4s ease-in-out infinite}
.trace-cta:hover{transform:translateY(-2px);box-shadow:0 14px 36px rgba(34,211,165,.6),0 0 0 6px rgba(34,211,165,.25)}
.trace-cta svg{width:22px;height:22px}
@keyframes tracePulse{0%,100%{box-shadow:0 10px 30px rgba(34,211,165,.45),0 0 0 4px rgba(34,211,165,.18)}50%{box-shadow:0 10px 30px rgba(34,211,165,.45),0 0 0 10px rgba(34,211,165,.05)}}
/* 全链路追溯主页 */
.tsec{margin-top:24px}
.tsec-h{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.tsec-h h3{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px;margin:0}
.tsec-h .bar{width:4px;height:15px;background:var(--green);border-radius:3px;display:inline-block}
.tsec-sub{font-size:12px;color:var(--ink-3)}
.tgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.tstep{position:relative;display:flex;flex-direction:column;gap:8px;padding:24px 20px 20px;background:var(--card);border:1px solid var(--line);border-radius:16px;transition:.18s;overflow:hidden;min-height:170px}
.tstep::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#22d3a5,#0ea5b7);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.tstep:hover::before{transform:scaleX(1)}
.tstep:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(11,61,46,.12);border-color:rgba(34,211,165,.5)}
.tstep .num{position:absolute;top:18px;right:20px;font-size:14px;font-weight:800;color:var(--ink-4);letter-spacing:1px;opacity:.45}
.tstep .ic{width:48px;height:48px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,#dcfce7,#cffafe);color:var(--green-d);margin-bottom:4px;transition:.18s}
.tstep .ic svg{width:26px;height:26px}
.tstep:hover .ic{background:linear-gradient(135deg,#22d3a5,#0ea5b7);color:#fff;transform:scale(1.06)}
.tstep b{font-size:16px;font-weight:700;color:var(--ink)}
.tstep small{font-size:12px;color:var(--ink-3);line-height:1.6}
.tstep .go{margin-top:auto;padding-top:6px;font-size:12.5px;color:var(--green-d);font-weight:600}
.tone{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.tone-card{display:flex;flex-direction:column;gap:6px;padding:24px 22px;border-radius:16px;background:linear-gradient(135deg,#0b3d2e,#0a4a6e);color:#fff;transition:.18s;position:relative;overflow:hidden;min-height:170px}
.tone-card::after{content:"";position:absolute;right:-30px;top:-30px;width:130px;height:130px;border-radius:50%;background:radial-gradient(circle,rgba(34,211,165,.32),transparent 70%)}
.tone-card>*{position:relative}
.tone-card .ic{width:54px;height:54px;border-radius:14px;display:grid;place-items:center;background:rgba(255,255,255,.12);color:var(--d-green);margin-bottom:4px}
.tone-card .ic svg{width:30px;height:30px}
.tone-card b{font-size:16px;font-weight:700}
.tone-card p{font-size:12.5px;color:#a9c4e6;line-height:1.6;margin:0}
.tone-card .go{margin-top:auto;padding-top:6px;font-size:12.5px;color:var(--d-green);font-weight:600}
.tone-card:hover{transform:translateY(-4px);box-shadow:0 14px 32px rgba(11,61,46,.32)}
.trace-bar{margin-top:22px;display:flex;align-items:center;gap:10px;padding:14px 20px;border-radius:12px;background:linear-gradient(90deg,#f0fdfa,#eff6ff);border:1px solid #d1fae5;font-size:13px;color:var(--ink-2)}
.trace-bar .ic{width:22px;height:22px;color:var(--green-d);display:grid;place-items:center;flex-shrink:0}
.trace-bar b{color:var(--green-d)}
/* 追溯详情页(土地流转样板) */
.kv{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px dashed var(--line);font-size:13px}
.kv span{color:var(--ink-3)}
.kv b{color:var(--ink);font-weight:600}
.tl-node{display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;min-width:84px}
.tl-dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--bg);color:var(--ink-3);border:2px solid var(--line)}
.tl-dot.done{background:var(--green);color:#fff;border-color:var(--green)}
.tl-node b{font-size:12.5px;color:var(--ink)}
.tl-node small{font-size:11px;color:var(--ink-3)}
.tl-line{flex:1;height:3px;background:var(--line);margin-top:13px;border-radius:2px;min-width:14px}
.tl-line.done{background:var(--green)}
/* 追溯信息条 + 实景图集 */
.ifo{display:flex;flex-wrap:wrap;gap:12px 30px}
.ifo>span{display:flex;align-items:baseline;gap:6px;font-size:13px}
.ifo i{font-style:normal;color:var(--ink-3);font-size:12px}
.ifo b{color:var(--ink);font-weight:600}
.lead{font-size:13.5px;color:var(--ink-2);line-height:1.9;margin:0}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px}
.gitem{display:flex;flex-direction:column;gap:8px}
.gimg{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;background:var(--bg);box-shadow:0 6px 18px rgba(15,23,42,.1);transition:.18s;display:block}
.gitem:hover .gimg{transform:translateY(-3px);box-shadow:0 12px 26px rgba(15,23,42,.16)}
.gcap{font-size:13px;color:var(--ink);font-weight:600}
.gcap small{display:block;color:var(--ink-3);font-weight:400;margin-top:3px;line-height:1.6}
.vid{width:100%;aspect-ratio:16/9;border-radius:12px;background:#000;box-shadow:0 6px 18px rgba(15,23,42,.12);display:block;object-fit:cover}
.vgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:16px}
.vitem{display:flex;flex-direction:column;gap:8px}
.vcap{font-size:13px;color:var(--ink);font-weight:600}
.vcap small{display:block;color:var(--ink-3);font-weight:400;margin-top:3px;line-height:1.6}
.gsec{font-size:13px;font-weight:700;color:var(--ink);margin:20px 0 0;padding-left:10px;border-left:3px solid var(--green);line-height:1.4}
/* 图片预览 lightbox */
.gimg{cursor:zoom-in}
.lightbox{position:fixed;inset:0;background:rgba(8,15,28,.92);display:none;align-items:center;justify-content:center;z-index:9999;flex-direction:column}
.lightbox.show{display:flex}
.lightbox img{max-width:90vw;max-height:80vh;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.lightbox .lb-close{position:absolute;top:18px;right:30px;color:#fff;font-size:34px;cursor:pointer;line-height:1;opacity:.8}
.lightbox .lb-close:hover{opacity:1}
.lightbox .lb-nav{position:absolute;top:50%;transform:translateY(-50%);color:#fff;font-size:40px;cursor:pointer;width:54px;height:54px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.12);user-select:none}
.lightbox .lb-nav:hover{background:rgba(255,255,255,.24)}
.lightbox .lb-prev{left:24px}
.lightbox .lb-next{right:24px}
.lightbox .lb-cap{color:#cfe3ff;font-size:13px;margin-top:16px;text-align:center;max-width:80vw}
.svc-tags{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}
.svc-tags a{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);color:#dceaff;padding:5px 14px;border-radius:16px;font-size:12px}
.svc-tags a:hover{background:rgba(34,211,165,.22);border-color:var(--d-green);color:#fff}

/* 五端协同 */
.subjects{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:14px;position:relative;z-index:5}
.subject{position:relative;background:#fff;border-radius:16px;padding:24px 18px 20px;text-align:center;box-shadow:0 8px 24px rgba(15,23,42,.1);cursor:pointer;transition:transform .22s,box-shadow .22s;overflow:hidden}
.subject::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--green),var(--green-d))}
.subject:hover{transform:translateY(-6px);box-shadow:0 18px 38px rgba(15,23,42,.18)}
.subject .ic{width:68px;height:68px;border-radius:20px;display:grid;place-items:center;margin:0 auto 14px;background:linear-gradient(135deg,var(--green),var(--green-d));box-shadow:0 8px 18px rgba(22,163,74,.28);transition:transform .22s;color:#fff}
.subject .ic span{font-size:32px;font-weight:800;letter-spacing:0;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.12);display:inline-block}
.subject:hover .ic{transform:scale(1.06)}
.subject h3{font-size:17px;font-weight:800;letter-spacing:.5px}
.subject .role{display:inline-block;margin-top:6px;font-size:11px;font-weight:700;color:var(--green-d);background:var(--green-l);padding:3px 11px;border-radius:20px}
.subject p{font-size:12px;color:var(--ink-3);margin-top:9px;line-height:1.65;min-height:38px}
.subject.end-blue::before{background:linear-gradient(90deg,var(--blue),#1d4ed8)}
.subject.end-blue .ic{background:linear-gradient(135deg,var(--blue),#1d4ed8);box-shadow:0 8px 18px rgba(37,99,235,.28)}
.subject.end-blue .role{color:#1d4ed8;background:var(--blue-l)}
.subject.end-purple::before{background:linear-gradient(90deg,var(--purple),#5b21b6)}
.subject.end-purple .ic{background:linear-gradient(135deg,var(--purple),#5b21b6);box-shadow:0 8px 18px rgba(124,58,237,.28)}
.subject.end-purple .role{color:#6d28d9;background:#ede9fe}
.subject.end-amber::before{background:linear-gradient(90deg,var(--amber),#b45309)}
.subject.end-amber .ic{background:linear-gradient(135deg,var(--amber),#b45309);box-shadow:0 8px 18px rgba(217,119,6,.3)}
.subject.end-amber .role{color:#b45309;background:#fef3c7}
.subject.end-cyan::before{background:linear-gradient(90deg,var(--cyan),#0e7490)}
.subject.end-cyan .ic{background:linear-gradient(135deg,var(--cyan),#0e7490);box-shadow:0 8px 18px rgba(8,145,178,.28)}
.subject.end-cyan .role{color:#0e7490;background:#cffafe}

/* 三栏板块 */
.threecol{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:18px;margin-top:24px}
.panel{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.panel .ph{display:flex;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}
.panel .ph h3{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.panel .ph h3 .bar{width:4px;height:16px;background:var(--green);border-radius:2px}
.panel .ph .more{margin-left:auto;font-size:12px;color:var(--ink-3)}
.panel .pb{padding:8px 16px 14px}
.news-list li{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:13px}
.news-list li:last-child{border:none}
.news-list li .tag2{flex-shrink:0;font-size:11px;padding:1px 7px;border-radius:4px;background:var(--green-l);color:var(--green-d);font-weight:600}
.news-list li .tag2.b{background:var(--blue-l);color:#1d4ed8}.news-list li .tag2.a{background:#fef3c7;color:#b45309}
.news-list li .t{flex:1;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news-list li .d{flex-shrink:0;font-size:11px;color:var(--ink-4)}

/* 热门服务图标网格 */
.svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.svc-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;border-radius:10px;cursor:pointer;transition:.14s;text-align:center}
.svc-item:hover{background:var(--bg)}
.svc-item .ic{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;font-size:20px;background:var(--green-l);color:var(--green-d)}
.svc-item span{font-size:12px;color:var(--ink-2);line-height:1.3}

/* 政策/数据/互动 三栏 */
.policy-list li{display:flex;gap:8px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:13px;align-items:center}
.policy-list li:last-child{border:none}
.policy-list li .lv{font-size:11px;padding:1px 6px;border-radius:4px;background:#dbeafe;color:#1d4ed8;font-weight:600;flex-shrink:0}
.policy-list li .lv.c{background:var(--green-l);color:var(--green-d)}.policy-list li .lv.x{background:#fee2e2;color:#b91c1c}
.policy-list li .t{flex:1;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.data-tile{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.data-tile .d{background:linear-gradient(135deg,#0b3d2e,#0a4a6e);color:#fff;border-radius:10px;padding:14px}
.data-tile .d b{font-size:22px}
.data-tile .d p{font-size:11px;color:#a9c4e6;margin-top:2px}
.interact-list li{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px}
.interact-list li:last-child{border:none}
.interact-list li .ic{width:28px;height:28px;border-radius:8px;background:var(--green-l);color:var(--green-d);display:grid;place-items:center;font-size:14px;flex-shrink:0}
.interact-list li .t{flex:1;color:var(--ink-2)}
.interact-list li .n{font-size:11px;color:var(--ink-4)}

.qk-link{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-top:18px}
.qk-link a{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 10px;text-align:center;font-size:13px;color:var(--ink-2);transition:.14s}
.qk-link a:hover{border-color:var(--green);color:var(--green-d);transform:translateY(-1px);box-shadow:var(--shadow)}
.qk-link a b{display:block;font-size:20px;margin-bottom:4px}

/* 核心成就数据条 */
.ach-band{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin:18px 0 0;border-radius:14px;overflow:hidden;background:linear-gradient(120deg,#0b3d2e 0%,#0a4a6e 60%,#0a2540 100%);box-shadow:0 8px 24px rgba(11,61,46,.18);position:relative}
.ach-band::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 90% 15%,rgba(34,211,165,.22),transparent 42%),radial-gradient(circle at 6% 95%,rgba(56,189,248,.16),transparent 45%);pointer-events:none}
.ach{display:flex;align-items:center;gap:12px;padding:18px 18px;position:relative;z-index:1;border-right:1px solid rgba(255,255,255,.1)}
.ach:last-child{border-right:none}
.ach .ai{width:42px;height:42px;border-radius:11px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);display:grid;place-items:center;font-size:20px;flex-shrink:0}
.ach .at b{font-size:24px;color:#fff;font-weight:800;line-height:1}
.ach .at b small{font-size:12px;color:var(--d-green);font-weight:600;margin-left:3px}
.ach .at p{font-size:12px;color:#a9c4e6;margin-top:5px}

/* 通用小节标题(数据条以下区块用) */
.chain-view,.cases,.farm-cal{margin-top:30px}
.chain-view h2,.cases h2,.farm-cal h2{font-size:18px;font-weight:800;display:flex;align-items:center;gap:10px;margin-bottom:14px}
.chain-view h2 .bar,.cases h2 .bar,.farm-cal h2 .bar{width:5px;height:20px;background:linear-gradient(var(--green),var(--blue));border-radius:3px}
.chain-view h2 small,.cases h2 small,.farm-cal h2 small{font-size:12px;color:var(--ink-3);font-weight:400}

/* 全链路一图览 */
.chain-track{display:flex;align-items:stretch;gap:8px}
.chain-stage{flex:1;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 14px;box-shadow:var(--shadow);transition:.18s;cursor:pointer;display:flex;flex-direction:column;gap:10px;position:relative;overflow:hidden}
.chain-stage::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--green),var(--green-d))}
.chain-stage:nth-of-type(3)::before{background:linear-gradient(90deg,var(--amber),#b45309)}
.chain-stage.chain-support::before{background:linear-gradient(90deg,var(--cyan),var(--purple))}
.chain-stage:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(15,23,42,.14);border-color:var(--green)}
.chain-stage .cs-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chain-stage .num{width:26px;height:26px;border-radius:8px;background:var(--green);color:#fff;font-weight:800;font-size:14px;display:grid;place-items:center;flex-shrink:0}
.chain-stage:nth-of-type(3) .num{background:var(--amber)}
.chain-stage.chain-support .num{background:linear-gradient(135deg,var(--cyan),var(--purple))}
.chain-stage h3{font-size:15px;font-weight:800}
.chain-stage .cs-sub{font-size:11px;color:var(--ink-4);margin-left:auto}
.chain-stage .cs-items{display:flex;flex-wrap:wrap;gap:6px}
.chain-stage .cs-items span{font-size:12px;color:var(--ink-2);background:var(--bg);border:1px solid var(--line);padding:4px 9px;border-radius:6px}
.chain-arrow{display:grid;place-items:center;color:var(--ink-4);font-size:20px;font-weight:700;padding:0 2px;align-self:center}
.chain-arrow.chain-loop{color:var(--cyan)}

/* 典型案例 */
.case-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.case{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 16px;box-shadow:var(--shadow);transition:.18s;cursor:pointer;position:relative;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.case::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--green),var(--blue))}
.case:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(15,23,42,.14);border-color:var(--green)}
.case .ctag{align-self:flex-start;font-size:10px;font-weight:700;color:var(--green-d);background:var(--green-l);padding:3px 9px;border-radius:20px}
.case h3{font-size:15px;font-weight:800}
.case p{font-size:12px;color:var(--ink-3);line-height:1.6;flex:1}
.case .cm{display:flex;flex-direction:column;gap:2px;padding-top:8px;border-top:1px dashed var(--line)}
.case .cm b{font-size:15px;color:var(--green-d);font-weight:800}
.case .cm span{font-size:11px;color:var(--ink-3)}

/* 当季农事日历 */
.cal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.cal-item{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;gap:12px;align-items:center;box-shadow:var(--shadow);transition:.16s}
.cal-item:hover{transform:translateY(-2px);border-color:var(--green);box-shadow:0 12px 26px rgba(15,23,42,.12)}
.cal-item .ci{width:42px;height:42px;border-radius:11px;background:var(--green-l);display:grid;place-items:center;font-size:22px;flex-shrink:0}
.cal-item .cb{flex:1;min-width:0}
.cal-item .cb b{font-size:14px;font-weight:800}
.cal-item .cb p{font-size:11px;color:var(--ink-3);margin:3px 0 6px}
.cal-item .pbar{height:7px;background:var(--bg);border-radius:5px;overflow:hidden}
.cal-item .pbar i{display:block;height:100%;background:linear-gradient(90deg,var(--green),var(--green-d));border-radius:5px}
.cal-item.cal-warn{border-color:#fde68a;background:linear-gradient(135deg,#fffbeb,#fff)}
.cal-item.cal-warn .ci{background:#fef3c7}
.cal-item.cal-warn .ci+.cb b{color:var(--amber)}

/* 全部平台·紧凑索引 */
/* 驾驶舱·经济效益成效条(深色) */
.ach-band-dark{display:grid;grid-template-columns:repeat(6,1fr);gap:0;margin:14px 0;border-radius:12px;overflow:hidden;background:linear-gradient(120deg,rgba(11,61,46,.55),rgba(10,37,64,.55));border:1px solid var(--d-border);position:relative}
.ach-band-dark::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 88% 20%,rgba(34,211,165,.18),transparent 42%),radial-gradient(circle at 8% 95%,rgba(56,189,248,.14),transparent 45%);pointer-events:none}
.ach-band-dark .ach{display:flex;align-items:center;gap:10px;padding:14px 16px;position:relative;z-index:1;border-right:1px solid rgba(64,150,255,.16)}
.ach-band-dark .ach:last-child{border-right:none}
.ach-band-dark .at b{font-size:22px;color:#fff;font-weight:800;line-height:1}
.ach-band-dark .at b small{font-size:12px;color:var(--d-green);font-weight:600;margin-left:3px}
.ach-band-dark .at p{font-size:11px;color:var(--d-text-d);margin-top:5px}

/* 页内视图切换(后台子模块) */
.view{display:none}
.view.active{display:block}
/* tabs2 内 tab 面板切换(同一 view 内的多块内容) */
.tabp{display:none}
.tabp.active{display:block}
/* 落地跟踪时间线 */
.timeline{position:relative;padding-left:8px;margin-top:8px}
.tline{display:flex;gap:12px;padding:6px 0;position:relative}
.tline .tdot{width:12px;height:12px;border-radius:50%;background:var(--line);border:2px solid var(--ink-3);flex-shrink:0;margin-top:3px;position:relative;z-index:1}
.tline.done .tdot{background:var(--green);border-color:var(--green)}
.tline.active .tdot{background:var(--blue);border-color:var(--blue);box-shadow:0 0 0 4px rgba(37,99,235,.18)}
.tline .tct b{font-size:13px;color:var(--ink)}
.tline .tct small{display:block;font-size:12px;color:var(--ink-3);margin-top:2px}
.tline::before{content:'';position:absolute;left:5px;top:18px;bottom:-6px;width:2px;background:var(--line)}
.tline:last-child::before{display:none}

/* 登录弹窗 */
.login-overlay{position:fixed;inset:0;z-index:9997;background:rgba(6,16,31,.6);backdrop-filter:blur(4px);display:none}
.login-overlay.open{display:block}
.login-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.96);z-index:9998;width:min(92vw,400px);background:#fff;border-radius:16px;padding:30px 28px 24px;box-shadow:0 24px 60px rgba(0,0,0,.3);display:none;opacity:0;transition:opacity .2s,transform .2s}
.login-modal.open{display:block;opacity:1;transform:translate(-50%,-50%) scale(1)}
.login-modal .lm-ic{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,var(--green),var(--blue));display:grid;place-items:center;font-size:26px;margin:0 auto 14px;color:#fff}
.login-modal .lm-t{font-size:20px;font-weight:800;text-align:center;color:var(--ink)}
.login-modal .lm-s{font-size:12px;color:var(--ink-3);text-align:center;margin-top:8px;line-height:1.6}
.login-modal .lm-field{margin-top:14px}
.login-modal .lm-field label{display:block;font-size:12px;color:var(--ink-3);margin-bottom:5px;font-weight:600}
.login-modal .lm-field input{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:13px;background:var(--bg)}
.login-modal .lm-field input:focus{outline:none;border-color:var(--green);background:#fff}
.login-modal .lm-login{width:100%;margin-top:18px;justify-content:center;padding:11px}
.login-modal .lm-alt{font-size:12px;color:var(--ink-3);text-align:center;margin-top:14px}
.login-modal .lm-alt a{color:var(--green-d);font-weight:600;cursor:pointer}
.login-modal .lm-x{position:absolute;top:12px;right:14px;border:none;background:none;font-size:24px;color:var(--ink-4);cursor:pointer;line-height:1}
.login-modal .lm-x:hover{color:var(--ink)}

/* 全部平台 —— 索引面板(与上方白卡区块区分) */
.plat-panel{background:linear-gradient(180deg,#f8fafc 0%,#eef2f7 100%);border:1px solid var(--line);border-radius:18px;padding:22px 22px 18px;margin-top:30px;box-shadow:0 6px 18px rgba(15,23,42,.06)}
.pp-h{font-size:18px;font-weight:800;display:flex;align-items:center;gap:10px}
.pp-h .bar{width:5px;height:20px;background:linear-gradient(var(--green),var(--blue));border-radius:3px}
.pp-h .search{background:#fff}

.plat-idx{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;margin-top:14px}
.grp-blk{grid-column:span 2}
.grp-blk.sin{grid-column:span 1}
/* 分组标题:彩色渐变填充带 */
.grp-h{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;margin-bottom:10px;color:#fff;background:linear-gradient(90deg,var(--green),var(--green-d));box-shadow:0 4px 12px rgba(22,163,74,.22)}
.grp-blk.gn-2 .grp-h{background:linear-gradient(90deg,var(--blue),#1d4ed8);box-shadow:0 4px 12px rgba(37,99,235,.22)}
.grp-blk.gn-3 .grp-h{background:linear-gradient(90deg,var(--purple),#5b21b6);box-shadow:0 4px 12px rgba(124,58,237,.22)}
.grp-blk.gn-4 .grp-h{background:linear-gradient(90deg,var(--amber),#b45309);box-shadow:0 4px 12px rgba(217,119,6,.24)}
.grp-blk.gn-5 .grp-h{background:linear-gradient(90deg,var(--cyan),#0e7490);box-shadow:0 4px 12px rgba(8,145,178,.22)}
.grp-h .gn{width:24px;height:24px;border-radius:6px;background:rgba(255,255,255,.28);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center}
.grp-h .gi{font-size:16px}
.grp-h h3{font-size:15px;font-weight:800;color:#fff}
.grp-h small{margin-left:auto;font-size:11px;color:rgba(255,255,255,.88);font-weight:600}
.grp-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.prow{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px 14px;transition:.14s;cursor:pointer;position:relative;overflow:hidden}
.prow:hover{border-color:var(--green);box-shadow:0 6px 16px rgba(22,163,74,.12);transform:translateX(2px)}
.prow::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--green);opacity:0;transition:.14s}
.prow:hover::before{opacity:1}
.grp-blk.gn-2 .prow::before{background:var(--blue)}
.grp-blk.gn-3 .prow::before{background:var(--purple)}
.grp-blk.gn-4 .prow::before{background:var(--amber)}
.grp-blk.gn-5 .prow::before{background:var(--cyan)}
.prow .pi{width:38px;height:38px;border-radius:9px;background:var(--green-l);display:grid;place-items:center;font-size:20px;flex-shrink:0}
.grp-blk.gn-2 .prow .pi{background:var(--blue-l)}
.grp-blk.gn-3 .prow .pi{background:#ede9fe}
.grp-blk.gn-4 .prow .pi{background:#fef3c7}
.grp-blk.gn-5 .prow .pi{background:#cffafe}
.prow .pm{flex:1;min-width:0}
.prow .pm b{font-size:13.5px;font-weight:600;color:var(--ink);display:block;line-height:1.3}
.prow .pm small{font-size:11px;color:var(--ink-3);display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow .pt{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.prow .pt .tag{font-size:10px;padding:1px 5px}
.prow .pgo{font-size:12px;color:var(--ink-4);flex-shrink:0}
.prow:hover .pgo{color:var(--green-d)}
/* ===== 扩展图表(折线/雷达/仪表/热力/漏斗) ===== */
.viz-row{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;margin-top:14px;position:relative;z-index:1}
.viz{background:var(--d-panel);border:1px solid var(--d-border);border-radius:12px;padding:16px}
.viz.col3{grid-column:span 3}.viz.col4{grid-column:span 4}.viz.col6{grid-column:span 6}.viz.col8{grid-column:span 8}.viz.col12{grid-column:span 12}
.viz h3{font-size:14px;font-weight:700;color:#fff;display:flex;align-items:center;gap:8px;margin-bottom:12px}
.viz h3 .dot{width:8px;height:8px;border-radius:50%;background:var(--d-blue)}
.linechart{width:100%;height:150px;display:block}
.linechart .ax{stroke:rgba(64,150,255,.12);stroke-width:1}
.linechart .area{fill:rgba(56,189,248,.14)}
.linechart .area.g{fill:rgba(34,211,165,.16)}
.linechart .ln{fill:none;stroke:var(--d-blue);stroke-width:2.2}
.linechart .ln.g{stroke:var(--d-green)}
.linechart .dot{fill:var(--d-blue);r:3}
.linechart .dot.g{fill:var(--d-green)}
.linechart .lab{fill:var(--d-text-3);font-size:9px}
.line-legend{display:flex;gap:14px;font-size:11px;color:var(--d-text-d);margin-bottom:6px}
.line-legend i{display:inline-block;width:12px;height:3px;border-radius:2px;margin-right:5px;vertical-align:middle}
.radar{width:170px;height:170px;margin:0 auto;display:block}
.radar .grid{fill:none;stroke:rgba(64,150,255,.14);stroke-width:1}
.radar .axis{stroke:rgba(64,150,255,.12);stroke-width:1}
.radar .data{fill:rgba(56,189,248,.22);stroke:var(--d-blue);stroke-width:2}
.radar .pt{fill:var(--d-blue)}
.radar .lab{fill:var(--d-text-d);font-size:10px;text-anchor:middle}
.radar-legend{text-align:center;font-size:11px;color:var(--d-text-d);margin-top:4px}
.gauge{width:124px;height:124px;border-radius:50%;margin:6px auto 0;position:relative;background:conic-gradient(var(--d-green) 0 86%,rgba(64,150,255,.12) 86% 100%)}
.gauge.b{background:conic-gradient(var(--d-blue) 0 92%,rgba(64,150,255,.12) 92% 100%)}
.gauge.a{background:conic-gradient(var(--d-amber) 0 76%,rgba(64,150,255,.12) 76% 100%)}
.gauge::after{content:"";position:absolute;inset:18px;border-radius:50%;background:var(--d-bg2)}
.gauge .gv{position:relative;z-index:1;text-align:center;align-self:center;margin:auto}
.gauge .gv b{font-size:26px;color:#fff;font-weight:700}
.gauge .gv small{font-size:10px;color:var(--d-text-d);display:block;margin-top:2px}
.heatmap{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;margin-top:8px}
.heat{height:24px;border-radius:4px;background:rgba(34,211,165,.12)}
.heat.s2{background:rgba(34,211,165,.28)}.heat.s3{background:rgba(34,211,165,.45)}.heat.s4{background:rgba(34,211,165,.65)}.heat.s5{background:rgba(34,211,165,.92)}
.heat.r{background:rgba(251,106,106,.7)}
.heat-label{display:flex;justify-content:space-between;font-size:10px;color:var(--d-text-3);margin-top:8px}
.funnel{display:flex;flex-direction:column;align-items:center;gap:5px;margin-top:8px}
.fbar{height:26px;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;border-radius:5px;position:relative}
.fbar .pc{position:absolute;right:10px;font-size:11px;font-weight:400;opacity:.85}
.funnel-legend{font-size:11px;color:var(--d-text-d);text-align:center;margin-top:8px}
/* 浅色版图表(业务页用) */
.viz.light{background:#fff;border:1px solid var(--line)}
.viz.light h3{color:var(--ink)}
.viz.light .line-legend,.viz.light .radar-legend,.viz.light .funnel-legend,.viz.light .heat-label{color:var(--ink-3)}
.viz.light .linechart .ax{stroke:rgba(15,23,42,.08)}
.viz.light .linechart .lab{fill:var(--ink-4)}
.viz.light .radar .grid,.viz.light .radar .axis{stroke:rgba(15,23,42,.12)}
.viz.light .radar .lab{fill:var(--ink-3)}
.viz.light .gauge::after{background:#fff}
.viz.light .gauge .gv b{color:var(--ink)}
.viz.light .gauge .gv small{color:var(--ink-3)}
/* ===== 形态差异化:地图型/画像型/时间线/流向 ===== */
.map-layout{display:grid;grid-template-columns:1fr 360px;gap:14px}
.mapview{height:520px;border-radius:12px;border:1px solid var(--line);position:relative;overflow:hidden;background:linear-gradient(135deg,#0b3d2e 0%,#0a2540 100%)}
.mapview::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(120,200,160,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(120,200,160,.08) 1px,transparent 1px);background-size:40px 40px}
.mapview .legend2{position:absolute;left:12px;top:12px;display:flex;gap:12px;font-size:11px;color:#cfe3d8;z-index:2}
.mapview .legend2 i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px;vertical-align:middle}
.mapview .mtitle{position:absolute;right:14px;top:12px;font-size:12px;color:#9fc0ad;z-index:2}
.mapview .scale{position:absolute;left:12px;bottom:12px;font-size:10px;color:#7fa890;z-index:2}
.mach-pt{position:absolute;z-index:2;width:14px;height:14px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(22,163,74,.25);cursor:pointer}
.mach-pt.busy{background:var(--amber);box-shadow:0 0 0 4px rgba(217,119,6,.25)}
.mach-pt.warn{background:var(--red);box-shadow:0 0 0 4px rgba(220,38,38,.25);animation:pulse 1.4s infinite}
.mach-pt .tip{position:absolute;left:18px;top:-6px;white-space:nowrap;background:#fff;color:var(--ink);font-size:11px;padding:3px 7px;border-radius:5px;box-shadow:0 2px 8px rgba(0,0,0,.2);display:none}
.mach-pt:hover .tip{display:block}
@keyframes pulse{0%,100%{box-shadow:0 0 0 4px rgba(220,38,38,.25)}50%{box-shadow:0 0 0 8px rgba(220,38,38,.1)}}
.map-track{position:absolute;inset:0;z-index:1;pointer-events:none}
.mach-side .pick{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:12px}
.mach-side .pick h4{font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px}
.mach-side .pick .id{font-size:11px;color:var(--ink-3);margin-top:2px}
.mach-side .pick .kv2{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin-top:10px;font-size:12px}
.mach-side .pick .kv2 .k{color:var(--ink-3)}.mach-side .pick .kv2 .v{color:var(--ink);font-weight:600}
.mach-side .list{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.mach-side .list .lh{padding:10px 14px;font-size:12px;font-weight:700;border-bottom:1px solid var(--line);background:var(--bg)}
.mach-side .list .li{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--line);font-size:12px;cursor:pointer}
.mach-side .list .li:last-child{border:none}
.mach-side .list .li:hover{background:var(--bg)}
.mach-side .list .li .d{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.mach-side .list .li .nm{flex:1}.mach-side .list .li .st{font-size:11px;color:var(--ink-3)}

.profile{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.profile .avatar{width:64px;height:64px;border-radius:14px;background:linear-gradient(135deg,var(--green),var(--blue));color:#fff;display:grid;place-items:center;font-size:24px;font-weight:700;flex-shrink:0}
.profile .pname{font-size:18px;font-weight:700}
.profile .pmeta{font-size:12px;color:var(--ink-3);margin-top:2px}
.profile .pmeta span{margin-right:10px}
.profile .score-big{text-align:center;border-left:1px solid var(--line);padding-left:22px;margin-left:4px}
.profile .score-big b{font-size:40px;color:var(--green-d);font-weight:800;line-height:1}
.profile .score-big small{display:block;font-size:11px;color:var(--ink-3);margin-top:4px}
.profile .badges{display:flex;flex-direction:column;gap:8px;border-left:1px solid var(--line);padding-left:22px}
.profile .badges .b{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}
.dim-bars{display:grid;grid-template-columns:1fr 1fr;gap:10px 22px;margin-top:16px}
.dim-bars .drow{font-size:12px}
.dim-bars .drow .lab{display:flex;justify-content:space-between;color:var(--ink-3);margin-bottom:3px}
.dim-bars .drow .lab b{color:var(--ink)}
.timeline{position:relative;padding-left:18px;margin-top:8px}
.timeline::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.timeline .ti{position:relative;padding:6px 0 6px 16px;font-size:12px}
.timeline .ti::before{content:"";position:absolute;left:-18px;top:10px;width:10px;height:10px;border-radius:50%;background:var(--green);border:2px solid #fff;box-shadow:0 0 0 1px var(--green)}
.timeline .ti.warn::before{background:var(--red);box-shadow:0 0 0 1px var(--red)}
.timeline .ti .tt{font-weight:600;color:var(--ink)}.timeline .ti .td{color:var(--ink-3);font-size:11px;margin-top:2px}
/* ===== 详情抽屉(全局交互) ===== */
@media(max-width:1100px){.ends{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:repeat(2,1fr)}.kpi-row{grid-template-columns:repeat(3,1fr)}.cabin.col4,.cabin.col6,.cabin.col8,.cabin.col3{grid-column:span 12}.subjects{grid-template-columns:repeat(2,1fr)}.threecol{grid-template-columns:1fr}.svc-grid{grid-template-columns:repeat(3,1fr)}.qk-link{grid-template-columns:repeat(3,1fr)}.plat-idx,.grp-list{grid-template-columns:1fr}.viz.col3,.viz.col4,.viz.col6,.viz.col8,.viz.col12{grid-column:span 12}.map-layout{grid-template-columns:1fr}}
.drawer-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);opacity:0;pointer-events:none;transition:opacity .2s;z-index:80}
.drawer-overlay.open{opacity:1;pointer-events:auto}
.drawer{position:fixed;right:0;top:0;bottom:0;width:420px;max-width:88vw;background:#fff;box-shadow:-8px 0 30px rgba(15,23,42,.18);transform:translateX(100%);transition:transform .26s cubic-bezier(.4,0,.2,1);z-index:81;display:flex;flex-direction:column}
.drawer.open{transform:translateX(0)}
.drawer-h{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}
.drawer-h b{font-size:15px}
.drawer-x{font-size:24px;color:var(--ink-3);line-height:1;padding:0 4px}
.drawer-b{padding:14px 18px;overflow:auto;flex:1}
.drawer-b .dmeta{font-size:12px;color:var(--ink-3);background:var(--bg);border-radius:8px;padding:8px 10px;margin-bottom:12px}
.drawer-b .drow{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px}
.drawer-b .drow .dk{color:var(--ink-3);flex-shrink:0}
.drawer-b .drow .dv{color:var(--ink);font-weight:600;text-align:right}
.drawer-b .dact{margin-top:16px;display:flex;justify-content:flex-end;gap:8px}

/* 手机端:工作区纵向堆叠,侧栏变可滚动顶条,统计卡2列,表格横向滚动 */
@media(max-width:768px){
  .workspace{flex-direction:column}
  .side{position:static;width:100%;height:auto;max-height:260px;overflow:auto;border-right:none;border-bottom:1px solid var(--line)}
  .main{padding:16px 14px}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .pageh{flex-wrap:wrap}
  .pageh .acts{margin-left:0;width:100%;justify-content:flex-end}
  .tabs2{overflow-x:auto;flex-wrap:nowrap;white-space:nowrap}
  .card{overflow-x:auto!important}
  table{min-width:560px}
  .hero h1{font-size:26px}
  .govnav .menu{overflow-x:auto;flex-wrap:nowrap;white-space:nowrap;justify-content:flex-start}
  .govnav .menu a{padding:10px 12px;font-size:13px}
  .govnav .brand-row{gap:12px}
  .govnav .brand{font-size:16px}
  .govnav .brand .logo{width:36px;height:36px;font-size:18px}
}
