/* ==========================================================================
   宜昌市第四届中学生数理文化活动 · 在线报名平台
   设计语言 —— 「数理蓝图 Blueprint」
   主色 #2563EB / 青 #0EA5E9 / 紫 #7C3AED · 8px 栅格 · 圆角 6/10/16
   ========================================================================== */

:root{
  --blue:#2563EB; --blue-d:#1D4ED8; --blue-l:#DBEAFE;
  --cyan:#0EA5E9; --cyan-l:#7DD3FC;
  --purple:#7C3AED; --purple-l:#DDD6FE;
  --ink:#1A2233; --ink-2:#303B52; --gray:#6B7280; --gray-l:#9AA3B2;
  --line:#E2E8F0; --line-2:#EDF1F7; --paper:#F7F8F5; --card:#FFFFFF;
  --ok:#10B981; --warn:#F59E0B; --danger:#EF4444;
  --navy:#0A1330; --navy-2:#101E45; --navy-3:#16307A;
  --r-s:6px; --r-m:10px; --r-l:16px;
  --sh-s:0 1px 2px rgba(26,34,51,.06);
  --sh-m:0 6px 24px -8px rgba(26,34,51,.14);
  --sh-l:0 18px 48px -14px rgba(22,52,143,.25);
  --font:'Noto Sans SC',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
  --serif:'Noto Serif SC','Songti SC','SimSun',serif;
  --mono:'IBM Plex Mono','Noto Sans SC',ui-monospace,monospace;
  --head-h:64px;
  /* 数理手稿配色点缀 */
  --math-orange:#E8590C; --math-orange-l:#FDEEE3;
  --grid-line:rgba(37,99,235,.055); --grid-line-strong:rgba(37,99,235,.09);
  /* 彩色稿纸底（替代大面积纯白） */
  --tint-blue:#F5F9FF; --tint-cream:#FAF6EB; --tint-mint:#EFF9F3;
  --tint-lav:#F6F4FB; --tint-peach:#FDF6EE; --tint-rose:#FBF4F5;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:var(--font);font-size:16px;line-height:1.7;color:var(--ink);
  background:var(--paper);
  /* 厘米方格纸：1px 细格 8px + 主格 40px，数学作业本质感 */
  background-image:
    linear-gradient(var(--grid-line) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid-line) 1px,transparent 1px),
    linear-gradient(var(--grid-line-strong) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid-line-strong) 1px,transparent 1px);
  background-size:8px 8px,8px 8px,40px 40px,40px 40px;
  -webkit-font-smoothing:antialiased;
}
::selection{background:rgba(37,99,235,.18)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#C4CCDA;border-radius:6px;border:2px solid var(--paper)}
::-webkit-scrollbar-thumb:hover{background:#A6B0C3}
::-webkit-scrollbar-track{background:transparent}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
.mono{font-family:var(--mono)}
.container{max-width:1200px;margin:0 auto;padding:0 24px}

/* ---------- 揭示动画 ---------- */
.reveal{opacity:0;transform:translateY(18px)}
.reveal.in{opacity:1;transform:none;transition:opacity .7s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.22,.61,.36,1);transition-delay:var(--d,0s)}
@media (prefers-reduced-motion:reduce){
  .reveal,.reveal.in{opacity:1;transform:none;transition:none}
  *{animation-duration:.01s !important}
}

/* ==========================================================================
   按钮 / 标签 / 通用组件
   ========================================================================== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 22px;border-radius:var(--r-s);font-size:15px;font-weight:500;line-height:1.5;transition:all .22s;border:1px solid transparent;white-space:nowrap}
.btn svg{flex:none}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-d);transform:translateY(-1px);box-shadow:0 8px 20px -6px rgba(37,99,235,.55)}
.btn-outline{border-color:var(--blue);color:var(--blue);background:#fff}
.btn-outline:hover{background:var(--blue-l);transform:translateY(-1px)}
.btn-ghost{border-color:var(--line);color:var(--gray);background:#fff}
.btn-ghost:hover{border-color:var(--gray-l);color:var(--ink)}
.btn-hero{border-color:rgba(125,211,252,.45);color:#fff;background:rgba(255,255,255,.06);backdrop-filter:blur(4px)}
.btn-hero:hover{background:rgba(255,255,255,.12);border-color:var(--cyan-l);transform:translateY(-1px)}
.btn-lg{padding:13px 30px;font-size:16px}
.btn-sm{padding:6px 14px;font-size:13px}
.btn-danger{background:var(--danger);color:#fff}
.btn-danger:hover{background:#DC2626}
.btn-ok{background:var(--ok);color:#fff}
.btn-ok:hover{background:#0B9E77}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none !important;box-shadow:none !important}
.btn .spin{width:15px;height:15px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:rot .7s linear infinite}
@keyframes rot{to{transform:rotate(360deg)}}

.tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:4px;font-size:12px;font-weight:500;background:var(--line-2);color:var(--gray);line-height:1.9}
.tag-blue{background:var(--blue-l);color:var(--blue)}
.tag-cyan{background:#CFF4FE;color:#0369A1}
.tag-purple{background:var(--purple-l);color:var(--purple)}
.tag-ok{background:#E7F8F1;color:#0B7A55}
.tag-warn{background:#FEF3D9;color:#B45309}
.tag-danger{background:#FDECEC;color:#C02626}

.status{display:inline-flex;align-items:center;gap:7px;padding:3px 11px;border-radius:999px;font-size:12.5px;font-weight:500}
.st-open{color:#0B7A55;background:#E7F8F1}
.st-open::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--ok);animation:pulse 1.6s infinite}
.st-soon{color:#B45309;background:#FEF3D9}
.st-soon::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--warn)}
.st-closed{color:var(--gray);background:var(--line-2)}
.st-closed::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--gray-l)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(16,185,129,.4)}70%{box-shadow:0 0 0 6px rgba(16,185,129,0)}100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}}

/* 蓝图角标（直角坐标记号 ∠） */
.blueprint{position:relative}
.blueprint::before,.blueprint::after{content:'';position:absolute;width:16px;height:16px;border:2px solid rgba(37,99,235,.4);pointer-events:none;z-index:2}
.blueprint::before{top:-1px;left:-1px;border-right:none;border-bottom:none;border-radius:4px 0 0 0}
.blueprint::after{bottom:-1px;right:-1px;border-left:none;border-top:none;border-radius:0 0 4px 0}
/* 直角坐标系小方块记号（几何证明中的垂直符号） */
.blueprint .bp-sq{position:absolute;top:10px;right:10px;width:9px;height:9px;border-top:2px solid rgba(37,99,235,.45);border-right:2px solid rgba(37,99,235,.45);pointer-events:none}

.empty{padding:56px 24px;text-align:center;color:var(--gray)}
.empty svg{margin:0 auto 14px;opacity:.5}
.empty b{display:block;font-size:16px;color:var(--ink-2);margin-bottom:6px}
.empty p{font-size:13.5px;margin-bottom:18px}

/* ==========================================================================
   顶部导航
   ========================================================================== */
.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
/* 坐标轴刻度底边：数学坐标系 x 轴意象 */
.site-header::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:3px;pointer-events:none;
  background:
    repeating-linear-gradient(90deg,rgba(37,99,235,.35) 0 1.5px,transparent 1.5px 10px) 0 0/100% 100%,
    linear-gradient(90deg,transparent 0%,rgba(37,99,235,.55) 18%,rgba(14,165,233,.55) 82%,transparent 100%);
  -webkit-mask-image:linear-gradient(90deg,transparent 2%,#000 12%,#000 88%,transparent 96%);mask-image:linear-gradient(90deg,transparent 2%,#000 12%,#000 88%,transparent 96%)}
.header-inner{display:flex;align-items:center;height:var(--head-h);gap:36px}
.brand{display:flex;align-items:center;gap:11px;flex:none}
.brand-text b{display:block;font-size:16.5px;font-weight:900;letter-spacing:.02em;line-height:1.3;font-family:var(--serif)}
.brand-text b i{font-style:normal;font-weight:500;color:var(--blue)}
.brand-text small{display:block;font-family:var(--mono);font-size:10px;color:var(--gray-l);letter-spacing:.14em}
.main-nav{display:flex;gap:6px;flex:1}
.main-nav a{position:relative;padding:8px 14px;font-size:15px;color:var(--gray);border-radius:var(--r-s);transition:color .2s;white-space:nowrap}
.main-nav a:hover{color:var(--ink);background:var(--line-2)}
.main-nav a.on{color:var(--blue);font-weight:600}
.main-nav a.on::after{content:'';position:absolute;left:14px;right:14px;bottom:-2px;height:2.5px;background:linear-gradient(90deg,var(--blue),var(--cyan));border-radius:2px}
.header-actions{display:flex;align-items:center;gap:10px;flex:none}
.user-chip{display:flex;align-items:center;gap:9px;padding:5px 12px 5px 6px;border:1px solid var(--line);border-radius:999px;transition:.2s}
.user-chip:hover{border-color:var(--blue);background:var(--blue-l)}
.avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex:none}
.user-chip b{font-size:13.5px;font-weight:600;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-toggle{display:none;width:40px;height:40px;flex-direction:column;align-items:center;justify-content:center;gap:5px;margin-left:auto}
.nav-toggle span{width:22px;height:2px;background:var(--ink);border-radius:2px;transition:.25s}
.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-open .nav-toggle span:nth-child(2){opacity:0}
.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ==========================================================================
   首页 Hero —— 深蓝蓝图
   ========================================================================== */
.hero{position:relative;overflow:hidden;color:#fff;margin-top:-1px;
  background:linear-gradient(158deg,var(--navy) 0%,var(--navy-2) 52%,#16307A 100%)}
/* 坐标纸网格：细格 + 主格（模拟厘米方格纸） */
.hero::before{content:'';position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(125,211,252,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(125,211,252,.05) 1px,transparent 1px),
    linear-gradient(rgba(125,211,252,.085) 1px,transparent 1px),
    linear-gradient(90deg,rgba(125,211,252,.085) 1px,transparent 1px);
  background-size:24px 24px,24px 24px,120px 120px,120px 120px}
.hero::after{content:'';position:absolute;inset:0;background:radial-gradient(1000px 420px at 18% 110%,rgba(14,165,233,.16),transparent 60%),radial-gradient(800px 380px at 88% -10%,rgba(124,58,237,.14),transparent 60%);pointer-events:none}
.hero-inner{position:relative;z-index:3;display:grid;grid-template-columns:1.35fr .85fr;gap:64px;padding:76px 24px 84px;align-items:center}
.hero-kicker{font-family:var(--mono);font-size:12.5px;letter-spacing:.28em;color:var(--cyan-l);margin-bottom:20px;display:flex;align-items:center;gap:12px}
.hero-kicker::before{content:'';width:34px;height:1.5px;background:linear-gradient(90deg,var(--cyan),transparent)}
.hero h1{font-size:clamp(30px,4.1vw,50px);font-weight:900;line-height:1.24;letter-spacing:.01em;font-family:var(--serif)}
.hero h1 .grad{background:linear-gradient(92deg,#7DD3FC 8%,#38BDF8 55%,#2563EB 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-sub{margin-top:16px;font-size:clamp(16px,1.6vw,19px);font-weight:500;color:#C9D6F2}
.hero-sub em{font-style:normal;color:var(--cyan-l)}
.hero-desc{margin-top:12px;font-size:14.5px;color:#8E9CC0;max-width:520px}
.hero-actions{display:flex;gap:14px;margin-top:34px;flex-wrap:wrap}
.hero-meta{display:flex;gap:22px;margin-top:34px;flex-wrap:wrap;font-size:13px;color:#9FAFDB}
.hero-meta span{display:flex;align-items:center;gap:7px}
.hero-meta svg{opacity:.75}
.hero-year{position:absolute;right:-28px;bottom:-46px;z-index:1;font-family:var(--mono);font-weight:600;font-size:clamp(150px,21vw,290px);line-height:1;color:transparent;-webkit-text-stroke:1.2px rgba(125,211,252,.13);pointer-events:none;user-select:none}
.hero-constellation{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;opacity:.9;pointer-events:none}
.hero-constellation .cline{stroke:rgba(125,211,252,.35);stroke-width:1;fill:none;stroke-dasharray:4 5;animation:dash 30s linear infinite}
@keyframes dash{to{stroke-dashoffset:-360}}
.hero-constellation .cnode{fill:#0EA5E9;filter:drop-shadow(0 0 5px rgba(14,165,233,.8))}
.hero-constellation .cnode2{fill:#A78BFA;filter:drop-shadow(0 0 5px rgba(167,139,250,.8))}
.hero-constellation text{font-family:var(--mono);font-size:12px;fill:rgba(165,196,255,.75);letter-spacing:.1em}
/* 函数曲线：y=sin x / y=ax² 数理手稿意象（描边生长动画） */
.hero-constellation .fx-curve{fill:none;stroke:rgba(125,211,252,.42);stroke-width:1.6;stroke-dasharray:6 7;animation:dash 26s linear infinite}
.hero-constellation .fx-parabola{stroke:rgba(232,89,12,.5);stroke-width:1.4}
.hero-constellation .fx-label{font-size:11.5px;fill:rgba(232,89,12,.65);letter-spacing:.05em;font-style:italic}
.shape{position:absolute;border:1.5px solid rgba(125,211,252,.28);z-index:1;pointer-events:none;animation:floaty 11s ease-in-out infinite alternate}
.shape-circle{border-radius:50%}
.shape-diamond{transform:rotate(45deg)}
.shape-tri{border:none;width:0;height:0;border-left:26px solid transparent;border-right:26px solid transparent;border-bottom:44px solid rgba(124,58,237,.14)}
@keyframes floaty{from{transform:translateY(-12px) rotate(0)}to{transform:translateY(12px) rotate(6deg)}}

.countdown{position:relative;background:rgba(9,18,44,.72);border:1px solid rgba(125,211,252,.22);border-radius:var(--r-l);padding:26px 26px 22px;backdrop-filter:blur(8px);box-shadow:0 24px 60px -20px rgba(0,0,0,.5)}
/* 坐标纸底纹 + 顶部示波器描线 */
.countdown::before{content:'';position:absolute;top:0;left:24px;right:24px;height:2px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);opacity:.7}
.countdown::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:.55;
  background-image:linear-gradient(rgba(125,211,252,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(125,211,252,.06) 1px,transparent 1px);
  background-size:22px 22px}
.cd-label{font-family:var(--mono);font-size:12px;letter-spacing:.24em;color:var(--cyan-l);text-align:center;margin-bottom:18px}
.cd-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.cd-cell{background:rgba(14,165,233,.09);border:1px solid rgba(125,211,252,.22);border-radius:var(--r-m);text-align:center;padding:13px 4px 10px;transition:.3s}
.cd-cell b{display:block;font-family:var(--mono);font-size:clamp(26px,2.6vw,34px);font-weight:600;color:#fff;line-height:1.15;font-variant-numeric:tabular-nums}
.cd-cell span{font-size:11.5px;color:#8FB7E8;letter-spacing:.1em}
.cd-date{margin-top:16px;text-align:center;font-family:var(--mono);font-size:12.5px;color:#7E96C8}
.cd-date::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--danger);margin-right:8px;vertical-align:1px;animation:pulse-r 1.6s infinite}
@keyframes pulse-r{0%{box-shadow:0 0 0 0 rgba(239,68,68,.5)}70%{box-shadow:0 0 0 6px rgba(239,68,68,0)}100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}}
.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px}
.hstat{background:rgba(255,255,255,.045);border:1px solid rgba(125,211,252,.14);border-radius:var(--r-m);padding:13px 8px;text-align:center}
.hstat b{display:block;font-family:var(--mono);font-size:21px;font-weight:600;color:var(--cyan-l)}
.hstat span{font-size:11.5px;color:#8E9CC0}

/* ==========================================================================
   区块通用
   ========================================================================== */
.section{padding:64px 0}
/* .section 与 .container 同时用在同一个元素上时（如 <section class="section container">），
   .section 的 padding 简写与 .container 同权重但后定义，会把 .container 的横向内边距清成 0，
   导致正文贴边（手机上尤其明显）。此处显式补回横向留白。 */
.section.container{padding-left:24px;padding-right:24px}
.section-alt{background:linear-gradient(180deg,#FEFDF8,#F6F4E9);border-top:1px solid #EDE9D9;border-bottom:1px solid #EDE9D9}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:34px;flex-wrap:wrap}
.sec-index{font-family:var(--mono);font-size:12px;letter-spacing:.26em;color:var(--cyan);margin-bottom:8px;display:inline-flex;align-items:center;gap:10px}
/* 定理编号前缀：§ 数理手稿意象 */
.sec-index::before{content:'§';font-family:var(--serif);font-size:15px;color:var(--blue);font-weight:700;letter-spacing:0}
.sec-title{font-size:clamp(24px,2.6vw,30px);font-weight:900;letter-spacing:.02em;display:flex;align-items:center;gap:14px;font-family:var(--serif)}
.sec-title::after{content:'';width:44px;height:8px;background:repeating-linear-gradient(90deg,var(--blue) 0 3px,transparent 3px 6px);opacity:.5;border-radius:2px}
.sec-more{font-size:13.5px;color:var(--gray);display:inline-flex;align-items:center;gap:5px;transition:.2s}
.sec-more:hover{color:var(--blue)}

/* ---------- 公告 ---------- */
.cat-filter{display:flex;gap:8px;flex-wrap:wrap}
.cat-pill{padding:6px 15px;border:1px solid var(--line);border-radius:999px;font-size:13px;color:var(--gray);background:rgba(255,255,255,.72);transition:.2s;white-space:nowrap}
.cat-pill:hover{border-color:var(--blue);color:var(--blue)}
.cat-pill.on{background:var(--ink);border-color:var(--ink);color:#fff}
.ann-list{background:linear-gradient(180deg,#FFFEFB,var(--tint-cream));border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;box-shadow:var(--sh-s)}
.ann-row{display:flex;align-items:center;gap:18px;padding:17px 26px;border-top:1px solid rgba(37,99,235,.08);cursor:pointer;transition:background .18s,transform .18s;position:relative}
.ann-row:first-child{border-top:none}
.ann-row:hover{background:rgba(37,99,235,.05)}
.ann-row:hover .ann-arrow{transform:translateX(4px);color:var(--blue)}
.ann-row.pin{background:linear-gradient(90deg,#FFF9F2,#fff 45%)}
.ann-date{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;flex:none;min-width:58px;padding:5px 9px;background:linear-gradient(180deg,#F5F9FF,#EDF4FF);border:1px solid #D6E4FF;border-radius:10px}
.ann-cat{flex:none;font-size:12px;padding:2px 9px;border-radius:4px;line-height:1.9}
.cat-notice{background:#FDECEC;color:#C02626}
.cat-rule{background:var(--blue-l);color:var(--blue)}
.cat-score{background:#E7F8F1;color:#0B7A55}
.cat-news{background:var(--purple-l);color:var(--purple)}
.cat-att{background:#FEF3D9;color:#B45309}
.ann-title{flex:1;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ann-title .pin-flag{font-size:11px;color:#C02626;border:1px solid currentColor;border-radius:3px;padding:0 5px;margin-right:8px;font-weight:600;vertical-align:1.5px}
.ann-arrow{color:var(--gray-l);transition:.2s;flex:none}

/* ---------- 七大活动卡片 ---------- */
.act-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.act-card{position:relative;display:block;background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);padding:26px 24px 22px;overflow:hidden;transition:transform .28s cubic-bezier(.22,.61,.36,1),box-shadow .28s,border-color .28s;box-shadow:var(--sh-s)}
/* 七卡七色稿纸：白→彩色渐变 + 坐标纸纹理 */
.act-card:nth-child(7n+2){background:linear-gradient(180deg,#FFFFFF,var(--tint-mint))}
.act-card:nth-child(7n+3){background:linear-gradient(180deg,#FFFFFF,var(--tint-lav))}
.act-card:nth-child(7n+4){background:linear-gradient(180deg,#FFFFFF,var(--tint-peach))}
.act-card:nth-child(7n+5){background:linear-gradient(180deg,#FFFFFF,var(--tint-cream))}
.act-card:nth-child(7n+6){background:linear-gradient(180deg,#FFFFFF,#F2F9FB)}
.act-card:nth-child(7n+7){background:linear-gradient(180deg,#FFFFFF,var(--tint-rose))}
.act-card::after{content:'';position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(37,99,235,.032) 1px,transparent 1px),linear-gradient(90deg,rgba(37,99,235,.032) 1px,transparent 1px);
  background-size:14px 14px}
.act-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--blue),var(--cyan));transform:scaleX(0);transform-origin:left;transition:transform .32s;z-index:1}
.act-card:hover{transform:translateY(-5px);box-shadow:var(--sh-l);border-color:#BFD3F8}
.act-card:hover::before{transform:scaleX(1)}
/* 命题编号 P.01 几何命题意象 */
.act-num{position:absolute;top:14px;right:18px;font-family:var(--mono);font-size:38px;font-weight:600;color:transparent;-webkit-text-stroke:1px #C9D8F2;line-height:1;transition:.3s}
.act-num::before{content:'P.';font-size:15px;vertical-align:22px;-webkit-text-stroke:0;margin-right:2px;opacity:.75}
.act-card:hover .act-num{-webkit-text-stroke-color:var(--math-orange)}
.act-icon{width:52px;height:52px;border-radius:var(--r-m);background:linear-gradient(135deg,var(--blue-l),#E0F2FE);color:var(--blue);display:flex;align-items:center;justify-content:center;margin-bottom:18px;transition:.3s;border:1px solid rgba(37,99,235,.14)}
.act-card:hover .act-icon{background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff;transform:rotate(-5deg) scale(1.05);border-color:transparent}
.act-tags{display:flex;gap:7px;margin-bottom:12px;flex-wrap:wrap}
.act-card h3{font-size:17.5px;font-weight:700;line-height:1.45;margin-bottom:9px;min-height:50px}
.act-card p{font-size:13.5px;color:var(--gray);line-height:1.65;min-height:66px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.act-foot{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:15px;border-top:1px dashed var(--line)}
.act-go{font-size:13px;color:var(--blue);display:inline-flex;align-items:center;gap:5px;font-weight:500}
.act-go svg{transition:.2s}
.act-card:hover .act-go svg{transform:translateX(4px)}

/* ---------- 日程速览横条 ---------- */
.tl-strip{position:relative;background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);padding:38px 30px 30px;box-shadow:var(--sh-s)}
.tl-strip::before{content:'';position:absolute;left:30px;right:30px;top:70px;height:2px;background:repeating-linear-gradient(90deg,var(--line) 0 8px,transparent 8px 14px)}
.tl-items{display:grid;grid-template-columns:repeat(5,1fr);position:relative}
.tl-item{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;padding:0 8px;cursor:pointer}
.tl-item .tl-dot{display:block;width:15px;height:15px;border-radius:50%;background:#fff;border:3px solid var(--blue);margin:25px auto 13px;position:relative;z-index:1;transition:.25s}
.tl-item:hover .tl-dot{transform:scale(1.3);background:var(--blue);box-shadow:0 0 0 6px rgba(37,99,235,.12)}
.tl-item.red .tl-dot{border-color:var(--danger)}
.tl-item.red:hover .tl-dot{background:var(--danger);box-shadow:0 0 0 6px rgba(239,68,68,.12)}
.tl-item.purple .tl-dot{border-color:var(--purple)}
.tl-item b{display:block;flex:1 1 auto;font-size:13.5px;font-weight:600;color:var(--ink-2)}
.tl-item i{display:block;font-style:normal;font-family:var(--mono);font-size:12px;color:var(--gray-l);margin-top:4px}

/* ==========================================================================
   内页头部横带
   ========================================================================== */
.page-band{position:relative;overflow:hidden;background:linear-gradient(150deg,var(--navy) 0%,var(--navy-2) 60%,#16307A 100%);color:#fff}
.page-band::before{content:'';position:absolute;inset:0;background-image:
  linear-gradient(rgba(125,211,252,.045) 1px,transparent 1px),
  linear-gradient(90deg,rgba(125,211,252,.045) 1px,transparent 1px),
  linear-gradient(rgba(125,211,252,.08) 1px,transparent 1px),
  linear-gradient(90deg,rgba(125,211,252,.08) 1px,transparent 1px);
  background-size:24px 24px,24px 24px,120px 120px,120px 120px}
/* 圆规弧线：几何作图意象 */
.page-band::after{content:'';position:absolute;right:-60px;top:-70px;width:340px;height:340px;border:1.5px solid rgba(125,211,252,.16);border-radius:50%;pointer-events:none;box-shadow:0 0 0 42px rgba(125,211,252,.045),0 0 0 84px rgba(125,211,252,.03)}
.page-band .container{position:relative;z-index:2;padding-top:38px;padding-bottom:40px}
.crumbs{font-family:var(--mono);font-size:12.5px;color:#8E9CC0;margin-bottom:16px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.crumbs a:hover{color:var(--cyan-l)}
.crumbs b{color:var(--cyan-l);font-weight:500}
.page-band h1{font-size:clamp(24px,2.9vw,34px);font-weight:900;line-height:1.4;font-family:var(--serif)}
.page-band .pb-sub{margin-top:10px;font-size:14.5px;color:#B9C7E8;max-width:760px;line-height:1.8}
.pb-meta{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.pb-meta .pm{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:#C9D6F2;background:rgba(255,255,255,.07);border:1px solid rgba(125,211,252,.2);border-radius:999px;padding:4px 13px}
.pb-meta .pm.mono{font-size:12px}

/* ==========================================================================
   活动列表页
   ========================================================================== */
.aud-filter{display:flex;gap:8px;flex-wrap:wrap}
.aud-pill{padding:6px 16px;border:1px solid var(--line);background:rgba(255,255,255,.72);border-radius:999px;font-size:13px;color:var(--gray);transition:.2s}
.aud-pill:hover{border-color:var(--blue);color:var(--blue)}
.aud-pill.on{background:var(--blue);border-color:var(--blue);color:#fff}
.act-card .deadline-mini{font-family:var(--mono);font-size:12px;color:var(--gray-l);margin-top:3px}

/* ==========================================================================
   活动报名页
   ========================================================================== */
.mat-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.mat-chip{font-family:var(--mono);font-size:11.5px;color:var(--cyan-l);border:1px dashed rgba(125,211,252,.35);border-radius:5px;padding:3px 10px;background:rgba(14,165,233,.07)}
.reg-layout{display:grid;grid-template-columns:300px 1fr;gap:26px;align-items:start;padding:44px 0 80px}
.reg-aside{position:sticky;top:calc(var(--head-h) + 20px);display:flex;flex-direction:column;gap:16px}
.side-card{background:linear-gradient(180deg,#FFFFFF,var(--tint-lav));border:1px solid var(--line);border-radius:var(--r-m);padding:22px;box-shadow:var(--sh-s)}
.side-card h4{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:15px}
.side-card h4 svg{color:var(--blue)}
.side-list{list-style:none;display:flex;flex-direction:column;gap:0}
.side-list li{display:flex;gap:10px;font-size:13px;color:var(--gray);padding:7px 0;border-bottom:1px dashed var(--line-2);line-height:1.6}
.side-list li:last-child{border:none}
.side-list li::before{content:'';flex:none;width:5px;height:5px;background:var(--cyan);border-radius:1px;margin-top:8px}
.side-list b{color:var(--ink-2);font-weight:600}
.flow-mini{display:flex;flex-direction:column;gap:0}
.flow-mini .fm{display:flex;align-items:center;gap:11px;font-size:13px;color:var(--ink-2);position:relative;padding:0 0 18px 0}
.flow-mini .fm:last-child{padding-bottom:0}
.flow-mini .fm::before{content:'';position:absolute;left:10px;top:22px;bottom:-2px;width:2px;background:var(--line)}
.flow-mini .fm:last-child::before{display:none}
.fm-dot{flex:none;width:22px;height:22px;border-radius:50%;background:var(--blue-l);color:var(--blue);font-family:var(--mono);font-size:11px;display:flex;align-items:center;justify-content:center;font-weight:600;z-index:1}
/* 附件下载（申报详情弹窗） */
.fd-group{margin-bottom:6px}
.fd-label{font-size:12.5px;color:var(--gray);margin:8px 0 6px}
.file-dl{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#F5F9FF;border:1px solid #D6E4FB;border-radius:10px;padding:11px 14px;margin-bottom:8px;cursor:pointer;transition:.18s;font-size:13.5px}
.file-dl:hover{background:#E9F2FF;border-color:var(--blue);transform:translateY(-1px);box-shadow:var(--sh-s)}
.file-dl .fd-ic{flex:none;width:34px;height:34px;border-radius:9px;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center}
.file-dl .fd-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.file-dl .fd-body b{color:var(--ink);font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-dl .fd-body > span{font-size:12px;color:var(--gray-l)}
.file-dl .fd-go{flex:none;color:var(--gray-l);transition:.18s}
.file-dl:hover .fd-go{color:var(--blue);transform:translateX(2px)}
.gate-card{background:linear-gradient(180deg,#FFFFFF,var(--tint-lav));border:1px solid var(--line);border-radius:var(--r-m);padding:44px 30px;text-align:center;box-shadow:var(--sh-s)}
.gate-card svg{margin:0 auto 16px;color:var(--blue)}
.gate-card h3{font-size:19px;font-weight:700;margin-bottom:8px}
.gate-card p{font-size:14px;color:var(--gray);margin-bottom:22px}

/* 表单向导 */
.form-panel{background:linear-gradient(180deg,#FFFEFB,var(--tint-cream));border:1px solid var(--line);border-radius:var(--r-m);box-shadow:var(--sh-m);overflow:hidden;position:relative}
/* 申报表单：米色稿纸 + 坐标纸纹理 */
.form-panel::after{content:'';position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(37,99,235,.028) 1px,transparent 1px),linear-gradient(90deg,rgba(37,99,235,.028) 1px,transparent 1px);
  background-size:16px 16px}
.steps{display:flex;border-bottom:1px solid var(--line-2);background:#FAFCFF}
.step-it{flex:1;display:flex;align-items:center;gap:11px;padding:18px 16px;position:relative;opacity:.45;transition:.25s}
.step-it + .step-it::before{content:'';position:absolute;left:-11px;top:50%;width:22px;height:1.5px;background:var(--line)}
.step-it .s-dot{flex:none;width:30px;height:30px;border-radius:50%;border:2px solid var(--line);background:#fff;font-family:var(--mono);font-size:13px;display:flex;align-items:center;justify-content:center;color:var(--gray);transition:.25s}
.step-it b{display:block;font-size:13.5px;font-weight:600;line-height:1.3}
.step-it i{display:block;font-style:normal;font-size:11px;color:var(--gray-l)}
.step-it.on{opacity:1}
.step-it.on .s-dot{border-color:var(--blue);color:var(--blue);box-shadow:0 0 0 4px rgba(37,99,235,.12)}
.step-it.done{opacity:1}
.step-it.done .s-dot{background:var(--blue);border-color:var(--blue);color:#fff}
.wizard-progress{height:3px;background:var(--line-2)}
.wizard-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--cyan));transition:width .4s cubic-bezier(.22,.61,.36,1)}
.wizard-body{padding:34px 36px 28px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 24px}
.field{display:flex;flex-direction:column}
.field.full{grid-column:1/-1}
.field > label{display:flex;align-items:baseline;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink-2);margin-bottom:8px;flex-wrap:wrap}
.field .req{color:var(--danger);font-style:normal;font-weight:400}
.field .hint{font-size:12px;font-weight:400;color:var(--gray-l)}
.field-hint{font-size:12px;font-weight:400;color:var(--gray-l);margin-left:6px}
.ev-open-note{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--blue);background:var(--blue-l);border-radius:var(--r-s);padding:8px 12px;margin-top:9px}
.ctl input[type=text],.ctl input[type=tel],.ctl input[type=number],.ctl input[type=date],.ctl input[type=datetime-local],.ctl input[type=password],.ctl select,.ctl textarea{
  width:100%;padding:10px 14px;border:1.5px solid var(--line);border-radius:var(--r-s);background:#fff;transition:border-color .2s,box-shadow .2s;outline:none}
.ctl input[type=date],.ctl input[type=datetime-local]{cursor:pointer;font-family:inherit;color:var(--ink)}
.ctl input:hover,.ctl select:hover,.ctl textarea:hover{border-color:#BFD3F8}
.ctl input:focus,.ctl select:focus,.ctl textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3.5px rgba(37,99,235,.12)}
.ctl select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px;cursor:pointer}
.ctl textarea{min-height:130px;resize:vertical;line-height:1.7}
.ctl input.err,.ctl select.err,.ctl textarea.err,.pill-group.err,.dropzone.err,.thumbs.err{border-color:var(--danger) !important;box-shadow:0 0 0 3.5px rgba(239,68,68,.1) !important}
.f-err{display:none;font-size:12.5px;color:var(--danger);margin-top:7px;line-height:1.5;align-items:center;gap:5px}
.f-err.show{display:flex}
.f-counter{font-family:var(--mono);font-size:11.5px;color:var(--gray-l);text-align:right;margin-top:5px}
.f-counter.over{color:var(--danger)}
.pill-group{display:flex;gap:9px;flex-wrap:wrap;border:1.5px solid var(--line);border-radius:var(--r-s);padding:9px;transition:border-color .2s,box-shadow .2s}
.pill-group:focus-within{border-color:var(--blue);box-shadow:0 0 0 3.5px rgba(37,99,235,.12)}
.pill{padding:6px 16px;border:1px solid var(--line);border-radius:999px;font-size:13.5px;color:var(--gray);cursor:pointer;transition:.18s;user-select:none;background:rgba(255,255,255,.72)}
.pill:hover{border-color:var(--blue);color:var(--blue)}
.pill.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:500}
.pill[disabled]{opacity:.45;cursor:not-allowed;text-decoration:line-through}
.pill.on[disabled]{background:var(--gray-l);border-color:var(--gray-l)}
/* 动态队员 */
.members{border:1.5px solid var(--line);border-radius:var(--r-s);padding:12px}
.member-row{display:grid;grid-template-columns:1fr 1fr 1.2fr 34px;gap:9px;margin-bottom:9px}
.member-row:last-of-type{margin-bottom:0}
.member-row input{padding:8px 11px;border:1.5px solid var(--line);border-radius:var(--r-s);outline:none;transition:.2s}
.member-row input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.mem-rm{width:34px;height:34px;border:1.5px solid var(--line);border-radius:var(--r-s);color:var(--gray-l);display:flex;align-items:center;justify-content:center;transition:.2s}
.mem-rm:hover{border-color:var(--danger);color:var(--danger);background:#FDECEC}
.members-add{margin-top:10px;width:100%;border:1.5px dashed #BFD3F8;color:var(--blue);border-radius:var(--r-s);padding:9px;font-size:13px;transition:.2s;background:#F6F9FF}
.members-add:hover{background:var(--blue-l)}
.members-add[disabled]{opacity:.5;cursor:not-allowed}
/* 文件上传 */
.dropzone{border:2px dashed #BFD3F8;border-radius:var(--r-m);padding:26px 18px;text-align:center;color:var(--gray);cursor:pointer;transition:.22s;background:#FAFCFF}
.dropzone:hover,.dropzone.drag{border-color:var(--blue);background:var(--blue-l);color:var(--blue)}
.dropzone svg{margin:0 auto 8px}
.dropzone b{display:block;font-size:13.5px;color:inherit}
.dropzone .hint{display:block;font-size:12px;color:var(--gray-l);margin-top:4px;font-family:var(--mono)}
.file-item{display:flex;align-items:center;gap:13px;border:1px solid var(--line);border-radius:var(--r-s);padding:11px 14px;margin-top:11px;background:rgba(255,255,255,.72)}
.file-ic{flex:none;width:36px;height:36px;border-radius:var(--r-s);background:var(--blue-l);color:var(--blue);display:flex;align-items:center;justify-content:center}
.file-item .fi-body{flex:1;min-width:0}
.file-item .fi-body b{display:block;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-item .fi-body span{font-family:var(--mono);font-size:11.5px;color:var(--gray-l)}
.prog{height:4px;background:var(--line-2);border-radius:3px;margin-top:7px;overflow:hidden}
.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--cyan));border-radius:3px;transition:width .25s;width:0}
.file-ok{color:var(--ok);flex:none}
.file-rm{flex:none;width:28px;height:28px;border-radius:var(--r-s);color:var(--gray-l);display:flex;align-items:center;justify-content:center;transition:.2s}
.file-rm:hover{color:var(--danger);background:#FDECEC}
/* 图片上传 */
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:11px;border:1.5px solid var(--line);border-radius:var(--r-s);padding:12px;transition:.2s}
.thumb{position:relative;aspect-ratio:4/3;border-radius:var(--r-s);overflow:hidden;background:var(--line-2)}
.thumb img{width:100%;height:100%;object-fit:cover}
.thumb .th-rm{position:absolute;top:5px;right:5px;width:24px;height:24px;border-radius:50%;background:rgba(10,19,48,.62);color:#fff;display:flex;align-items:center;justify-content:center;opacity:0;transition:.2s;backdrop-filter:blur(3px)}
.thumb:hover .th-rm{opacity:1}
.thumb .th-size{position:absolute;left:0;right:0;bottom:0;font-family:var(--mono);font-size:10px;color:#fff;background:linear-gradient(transparent,rgba(10,19,48,.75));padding:12px 6px 3px;text-align:center}
.thumb-add{aspect-ratio:4/3;border:2px dashed #BFD3F8;border-radius:var(--r-s);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--gray-l);cursor:pointer;transition:.2s;background:#FAFCFF}
.thumb-add:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-l)}
.thumb-add b{font-size:12px;font-weight:500}
/* 步骤脚注 */
.wizard-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:20px 36px 26px;border-top:1px solid var(--line-2);background:#FAFCFF;flex-wrap:wrap}
.draft-note{font-size:12.5px;color:var(--gray-l);display:flex;align-items:center;gap:7px}
.draft-note svg{color:var(--ok)}
.wf-actions{display:flex;gap:11px;margin-left:auto}
/* 预览 */
.preview-box{border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden}
.pv-sec{padding:4px 0}
.pv-sec > h5{font-size:13px;font-weight:700;color:var(--blue);background:#F3F8FF;padding:9px 20px;border-top:1px solid var(--line-2);display:flex;align-items:center;gap:8px}
.pv-sec:first-child > h5{border-top:none}
.pv-row{display:grid;grid-template-columns:190px 1fr;gap:14px;padding:9px 20px;font-size:14px;border-top:1px dashed var(--line-2);line-height:1.7}
.pv-row:first-of-type{border-top:none}
.pv-row dt{color:var(--gray)}
.pv-row dt .req{color:var(--danger)}
.pv-row dd{color:var(--ink);word-break:break-all}
.pv-row dd .mono{font-size:13px}
.agree{display:flex;align-items:flex-start;gap:10px;margin-top:20px;font-size:13.5px;color:var(--gray);line-height:1.7;cursor:pointer}
.agree input{margin-top:4px;accent-color:var(--blue);width:16px;height:16px;flex:none}
.agree a{color:var(--blue);text-decoration:underline}
.agree.err{color:var(--danger)}
/* 成功 */
.success-view{padding:54px 30px;text-align:center}
.suc-ic{width:74px;height:74px;margin:0 auto 22px;border-radius:50%;background:linear-gradient(135deg,#10B981,#34D399);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 14px 34px -10px rgba(16,185,129,.6);animation:pop .5s cubic-bezier(.2,1.4,.4,1)}
@keyframes pop{from{transform:scale(.4);opacity:0}}
.success-view h3{font-size:22px;font-weight:900;margin-bottom:8px}
.success-view > p{font-size:14px;color:var(--gray)}
.regno-card{display:inline-flex;align-items:center;gap:14px;background:var(--navy);color:#fff;border-radius:var(--r-m);padding:16px 26px;margin:24px 0 8px}
.regno-card .rn-label{font-size:12px;color:#8E9CC0}
.regno-card .rn-val{font-family:var(--mono);font-size:26px;font-weight:600;letter-spacing:.06em;color:var(--cyan-l)}
.regno-card button{color:#8E9CC0;padding:6px;border-radius:var(--r-s);transition:.2s}
.regno-card button:hover{color:#fff;background:rgba(255,255,255,.1)}
.suc-actions{display:flex;gap:13px;justify-content:center;margin-top:26px;flex-wrap:wrap}

/* 状态追踪器 */
.tracker{display:flex;margin:30px 0 8px}
.trk{flex:1;text-align:center;position:relative}
.trk::before{content:'';position:absolute;top:15px;right:calc(50% + 22px);width:calc(100% - 44px);height:2.5px;background:var(--line);border-radius:2px}
.trk:first-child::before{display:none}
.trk.past::before{background:var(--blue)}
.trk-dot{width:32px;height:32px;margin:0 auto 9px;border-radius:50%;border:2.5px solid var(--line);background:#fff;color:var(--gray-l);font-family:var(--mono);font-size:13px;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;transition:.25s}
.trk.past .trk-dot{background:var(--blue);border-color:var(--blue);color:#fff}
.trk.now .trk-dot{border-color:var(--blue);color:var(--blue);box-shadow:0 0 0 5px rgba(37,99,235,.13)}
.trk.bad .trk-dot{background:var(--danger);border-color:var(--danger);color:#fff}
.trk.bad::before{background:var(--line)}
.trk b{display:block;font-size:13px;font-weight:600;color:var(--ink-2)}
.trk.now b{color:var(--blue)}
.trk.bad b{color:var(--danger)}
.trk i{display:block;font-style:normal;font-size:11px;color:var(--gray-l);margin-top:2px}
.trk-comment{margin-top:14px;border:1px solid #FBD5D5;background:#FFF6F6;color:#B02424;border-radius:var(--r-s);padding:11px 15px;font-size:13px;line-height:1.7;display:flex;gap:9px;align-items:flex-start}
.trk-comment svg{flex:none;margin-top:2px}

/* ==========================================================================
   日程页
   ========================================================================== */
/* 总体日程时间轴 与 活动日当天日程 左右并排（≤1023 折为单列）
   min-width:0 必须加：否则右侧表格的 min-content 会挤走左侧栏，等分失效 */
.sched-cols{display:grid;grid-template-columns:1fr 1fr;gap:34px;align-items:start}
.sched-cols > div{min-width:0}
.sched-cols .vtl{margin-top:0}
/* 并排（≥1024）时表格必须收窄到半栏宽度：压缩字号与单元格内边距、放开 .table 的
   min-width:720px 并固定列宽。≤1023 单列时回到 .table 的基础间距，避免表头/单元格过挤。 */
@media (min-width:1024px){
  .sched-cols .evday .table{font-size:12.5px}
  .sched-cols .evday .table th,.sched-cols .evday .table td{padding:8px 9px}
  .sched-cols .evday .table{min-width:0;table-layout:fixed}
}
.vtl{position:relative;margin-top:38px;padding-left:26px}
.vtl::before{content:'';position:absolute;left:7px;top:8px;bottom:8px;width:2px;background:repeating-linear-gradient(180deg,var(--line) 0 7px,transparent 7px 13px)}
.vtl-item{position:relative;padding:0 0 30px 26px}
.vtl-item::before{content:'';position:absolute;left:-24.5px;top:7px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid var(--blue);z-index:1}
.vtl-item.type-deadline::before{border-color:var(--danger)}
.vtl-item.type-ceremony::before{border-color:var(--purple)}
/* 卡片：左列日期块 + 右列正文（标签/标题、描述、地点），描述始终紧贴标题 */
.vtl-card{background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);padding:19px 24px;box-shadow:var(--sh-s);transition:.22s;display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 20px;align-items:start}
.vtl-body{min-width:0}
/* 时间线卡片按节点类型着色：截止=橙 / 流程=蓝 / 典礼=紫 */
.vtl-item.type-deadline .vtl-card{background:linear-gradient(180deg,#FFFFFF,var(--tint-peach))}
.vtl-item.type-ceremony .vtl-card{background:linear-gradient(180deg,#FFFFFF,var(--tint-lav))}
.vtl-card:hover{border-color:#BFD3F8;box-shadow:var(--sh-m);transform:translateX(3px)}
.vtl-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:7px}
.vtl-date{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;flex:none;min-width:62px;padding:7px 11px;background:linear-gradient(180deg,#F5F9FF,#EDF4FF);border:1px solid #D6E4FF;border-radius:12px}
.vd-day{font-family:var(--mono);font-size:22px;font-weight:800;color:var(--blue);line-height:1.15;letter-spacing:.5px}
.vd-my{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--gray);letter-spacing:1px}
.vd-time{font-family:var(--mono);font-size:11.5px;font-weight:700;color:#B45309;background:#FEF3D9;border-radius:6px;padding:1px 8px;margin-top:4px}
.vtl-item.type-deadline .vtl-date{background:linear-gradient(180deg,#FFF9F2,#FEF3D9);border-color:#F5D9A8}
.vtl-item.type-deadline .vd-day{color:#B45309}
.vtl-card h3{font-size:16.5px;font-weight:700;flex:1;min-width:0}
.vtl-card p{font-size:13.5px;color:var(--gray);line-height:1.7}
.vtl-meta{display:flex;gap:16px;margin-top:10px;flex-wrap:wrap;font-size:12.5px;color:var(--gray-l)}
.vtl-meta span{display:inline-flex;align-items:center;gap:5px}
.evday{background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;box-shadow:var(--sh-s)}
.evday-head{display:flex;align-items:center;gap:13px;background:linear-gradient(120deg,var(--navy),var(--navy-3));color:#fff;padding:17px 26px}
.evday-head .mono{font-family:var(--mono);color:var(--cyan-l)}
.evday-head b{font-size:17px;font-weight:700}
.table-wrap{overflow-x:auto}
.table{width:100%;border-collapse:collapse;font-size:14px;min-width:720px}
/* 表头：坐标纸 + 底部双线（数学表格规范） */
.table th{background:#F1F5FB;text-align:left;padding:11px 16px;color:var(--ink-2);font-weight:700;font-size:12.5px;white-space:nowrap;border-bottom:2px solid #C9D8F2;
  background-image:linear-gradient(rgba(37,99,235,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(37,99,235,.04) 1px,transparent 1px);background-size:12px 12px}
.table td{padding:13px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle;line-height:1.6;font-variant-numeric:tabular-nums}
.table tbody tr:hover td{background:#F8FAFF}
.table tr:last-child td{border-bottom:none}
.table .t-time{font-family:var(--mono);font-size:12.5px;color:var(--blue);white-space:nowrap}
.table .t-loc,.table .t-who{font-size:13px;color:var(--gray)}

/* ==========================================================================
   场馆页
   ========================================================================== */
.venue-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.venue-card{background:linear-gradient(180deg,#FFFFFF,var(--tint-mint));border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;box-shadow:var(--sh-s);transition:.28s;display:flex;flex-direction:column}
.venue-card:hover{transform:translateY(-5px);box-shadow:var(--sh-l);border-color:#BFD3F8}
.venue-photo{position:relative;aspect-ratio:16/8.2;background:linear-gradient(135deg,var(--navy-2),var(--navy-3));overflow:hidden}
.venue-photo img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.venue-card:hover .venue-photo img{transform:scale(1.05)}
.venue-photo .vp-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--cyan-l);gap:8px;font-size:13px;
  background-image:linear-gradient(rgba(125,211,252,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(125,211,252,.08) 1px,transparent 1px);background-size:22px 22px}
.venue-photo .vp-tag{position:absolute;left:14px;top:14px;font-family:var(--mono);font-size:11px;color:#fff;background:rgba(10,19,48,.72);border:1px solid rgba(125,211,252,.4);border-radius:5px;padding:3px 10px;letter-spacing:.1em;backdrop-filter:blur(4px)}
.venue-body{padding:22px 24px 20px;flex:1;display:flex;flex-direction:column}
.venue-body h3{font-size:19px;font-weight:700;margin-bottom:8px}
.venue-body p{font-size:13.5px;color:var(--gray);display:flex;align-items:flex-start;gap:7px;line-height:1.7}
.venue-body p svg{flex:none;margin-top:3px;color:var(--gray-l)}
.venue-zones{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}
.venue-foot{margin-top:16px;padding-top:15px;border-top:1px dashed var(--line);display:flex;justify-content:space-between;align-items:center}
.venue-detail{display:grid;grid-template-columns:1.15fr .85fr;gap:26px;padding:44px 0 76px;align-items:start}
.vd-gallery{display:flex;flex-direction:column;gap:14px}
.vd-main-photo{position:relative;border-radius:var(--r-m);overflow:hidden;aspect-ratio:16/9.5;background:var(--navy-2)}
.vd-main-photo img{width:100%;height:100%;object-fit:cover}
.vd-thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.vd-thumbs .vdt{border-radius:var(--r-s);overflow:hidden;aspect-ratio:16/10;cursor:pointer;border:2.5px solid transparent;transition:.2s;background:var(--navy-2);position:relative}
.vd-thumbs .vdt img{width:100%;height:100%;object-fit:cover}
.vd-thumbs .vdt.on{border-color:var(--blue)}
.vd-info{display:flex;flex-direction:column;gap:18px}
.vd-card{background:linear-gradient(180deg,#FFFFFF,var(--tint-peach));border:1px solid var(--line);border-radius:var(--r-m);padding:22px;box-shadow:var(--sh-s)}
.vd-card h4{font-size:14.5px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:13px}
.vd-card h4 svg{color:var(--blue)}
.vd-kv{display:flex;flex-direction:column;gap:9px;font-size:13.5px}
.vd-kv .kv{display:flex;gap:9px;line-height:1.65}
.vd-kv .kv svg{flex:none;margin-top:3px;color:var(--gray-l)}
.vd-kv .kv b{font-weight:600;color:var(--ink-2);white-space:nowrap}
.vd-kv .kv span{color:var(--gray)}
.map-box{position:relative;border-radius:var(--r-m);overflow:hidden;border:1px solid var(--line);background:#E8F0F9}
.map-box svg{display:block;width:100%;height:auto}
.map-pin{animation:pinbounce 2.2s ease-in-out infinite}
@keyframes pinbounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.map-pulse{animation:mappulse 2.2s ease-out infinite;transform-origin:center;transform-box:fill-box}
@keyframes mappulse{0%{opacity:.55;transform:scale(.5)}80%{opacity:0;transform:scale(2.4)}100%{opacity:0;transform:scale(2.4)}}
.transport-item{display:flex;gap:12px;padding:12px 0;border-top:1px dashed var(--line-2);font-size:13.5px;line-height:1.7;align-items:flex-start}
.transport-item:first-of-type{border-top:none;padding-top:0}
.transport-item svg{flex:none;margin-top:3px;color:var(--cyan)}
.transport-item b{font-weight:600;color:var(--ink-2);display:block}
.transport-item span{color:var(--gray)}
.floorplan-box{background:var(--navy);border-radius:var(--r-m);padding:6px;overflow:hidden}
.floorplan-box svg{display:block;width:100%;height:auto}
.fp-legend{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}
.fp-lg{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--gray);border:1px solid var(--line);border-radius:999px;padding:3px 12px}
.fp-lg::before{content:'';width:10px;height:10px;border-radius:2.5px;background:rgba(14,165,233,.85)}
.fp-lg.pu::before{background:rgba(167,139,250,.85)}
.zone-map{display:flex;flex-direction:column;gap:10px}
.zone-row{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line-2);border-radius:var(--r-s);padding:11px 14px;transition:.2s}
.zone-row:hover{border-color:#BFD3F8;background:#F8FAFF}
.zone-row .zi{flex:none;width:34px;height:34px;border-radius:var(--r-s);background:var(--blue-l);color:var(--blue);display:flex;align-items:center;justify-content:center}
.zone-row b{display:block;font-size:14px}
.zone-row p{font-size:12.5px;color:var(--gray)}
.vd-actions{display:flex;gap:11px;flex-wrap:wrap}

/* ==========================================================================
   用户中心
   ========================================================================== */
.profile-layout{display:grid;grid-template-columns:250px 1fr;gap:26px;align-items:start;padding:44px 0 80px}
.pf-side{position:sticky;top:calc(var(--head-h) + 20px);background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;box-shadow:var(--sh-s)}
.pf-user{padding:26px 20px 20px;text-align:center;border-bottom:1px solid var(--line-2);background:linear-gradient(180deg,#F3F8FF,#fff)}
.pf-user .avatar{width:62px;height:62px;font-size:24px;margin:0 auto 12px;border:3px solid #fff;box-shadow:0 6px 18px -6px rgba(37,99,235,.5)}
.pf-user b{display:block;font-size:17px;font-weight:700}
.pf-user .pf-role{display:inline-block;margin-top:7px}
.pf-menu{list-style:none;padding:10px}
.pf-menu a{display:flex;align-items:center;gap:11px;padding:11px 14px;border-radius:var(--r-s);font-size:14px;color:var(--gray);transition:.18s}
.pf-menu a:hover{background:var(--line-2);color:var(--ink)}
.pf-menu a.on{background:var(--blue);color:#fff;font-weight:600;box-shadow:0 6px 16px -6px rgba(37,99,235,.55)}
.pf-menu a .bdg{margin-left:auto;font-family:var(--mono);font-size:11px;background:var(--danger);color:#fff;border-radius:999px;padding:0 7px;line-height:1.7}
.pf-menu a.on .bdg{background:#fff;color:var(--blue)}
.pf-main{min-height:520px}
.pf-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}
.pf-head h2{font-size:21px;font-weight:900}
.reg-card{background:linear-gradient(180deg,#FFFFFF,#FAFCFF);border:1px solid var(--line);border-radius:var(--r-m);padding:22px 24px;margin-bottom:16px;box-shadow:var(--sh-s);transition:.22s}
.reg-card:hover{border-color:#BFD3F8;box-shadow:var(--sh-m)}
.reg-card .rc-top{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap}
.reg-card .rc-ic{flex:none;width:44px;height:44px;border-radius:var(--r-m);background:linear-gradient(135deg,var(--blue-l),#E0F2FE);color:var(--blue);display:flex;align-items:center;justify-content:center}
.rc-info{flex:1;min-width:220px}
.rc-info h3{font-size:16.5px;font-weight:700}
.rc-info .rc-no{font-family:var(--mono);font-size:12.5px;color:var(--gray-l);margin-top:3px}
.rc-info .rc-no b{color:var(--blue);font-weight:500}
.rc-side{display:flex;flex-direction:column;align-items:flex-end;gap:9px}
.rc-track{margin-top:18px}
.rc-actions{display:flex;gap:10px;margin-top:18px;padding-top:16px;border-top:1px dashed var(--line);flex-wrap:wrap}
.sched-mini{display:flex;flex-direction:column;gap:11px}
.sched-mini .sm{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:var(--r-s);padding:13px 16px;transition:.2s}
.sched-mini .sm:hover{border-color:#BFD3F8;background:#F8FAFF}
.sm-date{flex:none;width:58px;text-align:center;font-family:var(--mono);border-right:1px dashed var(--line);padding-right:13px}
.sm-date b{display:block;font-size:18px;color:var(--blue)}
.sm-date span{font-size:11px;color:var(--gray-l)}
.sm-body{flex:1}
.sm-body b{display:block;font-size:14px;font-weight:600}
.sm-body p{font-size:12.5px;color:var(--gray)}
.sm-cd{flex:none;font-family:var(--mono);font-size:12px;color:var(--warn);background:#FEF3D9;border-radius:999px;padding:2px 11px;white-space:nowrap}
.msg-item{display:flex;gap:14px;border:1px solid var(--line);border-radius:var(--r-s);padding:15px 18px;margin-bottom:11px;transition:.2s;background:linear-gradient(180deg,#FFFFFF,var(--tint-cream))}
.msg-item:hover{border-color:#BFD3F8}
.msg-item.unread{background:#F3F8FF;border-color:#BFD3F8}
.msg-ic{flex:none;width:38px;height:38px;border-radius:var(--r-s);display:flex;align-items:center;justify-content:center}
.msg-ic.sys{background:var(--blue-l);color:var(--blue)}
.msg-ic.ok{background:#E7F8F1;color:var(--ok)}
.msg-ic.warn{background:#FEF3D9;color:var(--warn)}
.msg-body{flex:1;min-width:0}
.msg-body h4{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.msg-body h4 .dot{width:7px;height:7px;border-radius:50%;background:var(--danger);flex:none}
.msg-body p{font-size:13px;color:var(--gray);margin-top:4px;line-height:1.7}
.msg-time{font-family:var(--mono);font-size:11.5px;color:var(--gray-l);white-space:nowrap;flex:none;margin-top:3px}
.msg-ops{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;flex-wrap:wrap;gap:10px}

/* ==========================================================================
   后台管理
   ========================================================================== */
.admin-layout{padding:40px 0 76px}
.admin-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}
.stat-card{background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);padding:21px 22px;box-shadow:var(--sh-s);display:flex;gap:16px;align-items:center;transition:.22s;position:relative;overflow:hidden}
.stat-card.sc-ok{background:linear-gradient(180deg,#FFFFFF,var(--tint-mint))}
.stat-card.sc-warn{background:linear-gradient(180deg,#FFFFFF,var(--tint-peach))}
.stat-card.sc-purple{background:linear-gradient(180deg,#FFFFFF,var(--tint-lav))}
.stat-card:hover{transform:translateY(-3px);box-shadow:var(--sh-m)}
.stat-card::after{content:'';position:absolute;left:0;top:0;bottom:0;width:3.5px;background:var(--blue)}
.stat-card.sc-ok::after{background:var(--ok)}
.stat-card.sc-warn::after{background:var(--warn)}
.stat-card.sc-purple::after{background:var(--purple)}
.stat-ic{flex:none;width:46px;height:46px;border-radius:var(--r-m);display:flex;align-items:center;justify-content:center}
.stat-ic.b{background:var(--blue-l);color:var(--blue)}
.stat-ic.g{background:#E7F8F1;color:var(--ok)}
.stat-ic.o{background:#FEF3D9;color:var(--warn)}
.stat-ic.p{background:var(--purple-l);color:var(--purple)}
.stat-card b{display:block;font-family:var(--mono);font-size:26px;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums}
.stat-card span{font-size:12.5px;color:var(--gray)}
.admin-panels{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;margin-bottom:24px}
.panel{background:linear-gradient(180deg,#FCFDFF,#F6F8FC);border:1px solid var(--line);border-radius:var(--r-m);box-shadow:var(--sh-s);overflow:hidden}
/* 面板头：方格纸质感 + 定理编号左缘 */
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:17px 22px;border-bottom:1px solid var(--line-2);gap:12px;flex-wrap:wrap;position:relative;
  background-image:linear-gradient(rgba(37,99,235,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(37,99,235,.03) 1px,transparent 1px);background-size:12px 12px}
.panel-head::before{content:'';position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 3px 3px 0;background:linear-gradient(180deg,var(--blue),var(--cyan))}
.panel-head h3{font-size:15.5px;font-weight:700;display:flex;align-items:center;gap:9px;font-family:var(--serif)}
.panel-head h3 svg{color:var(--blue)}
.panel-body{padding:20px 22px}
.bar-row{display:grid;grid-template-columns:118px 1fr 38px;gap:12px;align-items:center;margin-bottom:13px;font-size:13px}
.bar-row:last-child{margin-bottom:0}
.bar-row .bl{color:var(--gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-track{height:9px;background:var(--line-2);border-radius:5px;overflow:hidden}
.bar-fill{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--blue),var(--cyan));width:0;transition:width .9s cubic-bezier(.22,.61,.36,1)}
.bar-fill.bf-hi{background:linear-gradient(90deg,var(--ok),#34D399)}
.bar-fill.bf-mid{background:linear-gradient(90deg,var(--blue),var(--cyan))}
.bar-fill.bf-lo{background:linear-gradient(90deg,var(--warn),#FBBF24)}
.bar-row:nth-child(2) .bar-fill{transition-delay:.1s}
.bar-row:nth-child(3) .bar-fill{transition-delay:.2s}
.bar-row:nth-child(4) .bar-fill{transition-delay:.3s}
.bar-row:nth-child(5) .bar-fill{transition-delay:.4s}
.bar-row:nth-child(6) .bar-fill{transition-delay:.5s}
.bar-row:nth-child(7) .bar-fill{transition-delay:.6s}
.bar-row .bv{font-family:var(--mono);font-size:12.5px;color:var(--ink-2);text-align:right}
.bar-legend{display:flex;gap:16px;align-items:center;margin-top:14px;padding-top:11px;border-top:1px dashed var(--line-2);font-size:11.5px;color:var(--gray-l)}
.bar-legend .lg{display:inline-block;width:18px;height:7px;border-radius:4px;margin-right:5px;vertical-align:middle}
.bar-legend .lg-hi{background:linear-gradient(90deg,var(--ok),#34D399)}
.bar-legend .lg-mid{background:linear-gradient(90deg,var(--blue),var(--cyan))}
.bar-legend .lg-lo{background:linear-gradient(90deg,var(--warn),#FBBF24)}
.rank-row{display:flex;align-items:center;gap:12px;padding:9.5px 0;border-bottom:1px dashed var(--line-2);font-size:13.5px}
.rank-row:last-child{border:none}
.rank-no{flex:none;width:24px;height:24px;border-radius:var(--r-s);font-family:var(--mono);font-size:12.5px;display:flex;align-items:center;justify-content:center;background:var(--line-2);color:var(--gray)}
.rank-no.r1{background:#FDE68A;color:#92400E}
.rank-no.r2{background:#E2E8F0;color:#475569}
.rank-no.r3{background:#FED7AA;color:#9A3412}
.rank-row .rs{flex:none;max-width:38%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-row .bar-track.rt{flex:1;height:8px;margin:0 2px}
.rank-row .rv{font-family:var(--mono);font-size:13px;color:var(--blue);font-weight:600}
.admin-tabs{display:flex;gap:8px}
.admin-tabs .cat-pill.on{background:var(--blue);border-color:var(--blue)}
.rev-result{display:flex;gap:9px}
.mini-tag{font-size:11.5px;padding:1px 9px;border-radius:4px;line-height:1.8}
.mt-blue{background:var(--blue-l);color:var(--blue)}
.mt-purple{background:var(--purple-l);color:var(--purple)}
.mt-ok{background:#E7F8F1;color:#0B7A55}
.mt-red{background:#FDECEC;color:#C02626}
.mt-cyan{background:#E0F7FA;color:#0E7490}
.mt-warn{background:#FFF6E5;color:#B45309}
.mt-gray{background:var(--line-2);color:var(--gray)}
.gate-admin{max-width:660px;margin:60px auto;background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-l);padding:48px 40px;text-align:center;box-shadow:var(--sh-m)}
.gate-admin h3{font-size:20px;font-weight:900;margin:16px 0 8px}
.gate-admin p{font-size:14px;color:var(--gray);margin-bottom:24px}
.quick-logins{display:flex;gap:11px;justify-content:center;flex-wrap:wrap;margin-top:18px}
.ql-btn{border:1px solid var(--line);border-radius:var(--r-m);padding:13px 20px;text-align:left;transition:.22s;background:#fff}
.ql-btn:hover{border-color:var(--blue);box-shadow:var(--sh-m);transform:translateY(-2px)}
.ql-btn b{display:block;font-size:14px;color:var(--ink)}
.ql-btn span{font-size:12px;color:var(--gray)}

/* ==========================================================================
   登录弹窗 / 弹窗 / 提示
   ========================================================================== */
.modal-mask{position:fixed;inset:0;z-index:200;background:rgba(10,19,48,.58);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:22px;animation:fadein .22s}
.modal{background:#FFFDF8;border-radius:var(--r-l);width:100%;max-width:480px;max-height:88vh;overflow-y:auto;box-shadow:0 40px 100px -20px rgba(10,19,48,.5);animation:modalup .3s cubic-bezier(.2,1.1,.4,1)}
.modal.modal-lg{max-width:760px}
@keyframes fadein{from{opacity:0}}
@keyframes modalup{from{transform:translateY(26px) scale(.97);opacity:0}}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;padding:24px 28px 0;gap:14px}
.modal-head h3{font-size:18.5px;font-weight:900;line-height:1.4}
.modal-close{flex:none;width:34px;height:34px;border-radius:var(--r-s);color:var(--gray-l);display:flex;align-items:center;justify-content:center;transition:.2s}
.modal-close:hover{background:var(--line-2);color:var(--ink)}
.modal-body{padding:20px 28px 28px}
.modal-foot{display:flex;justify-content:flex-end;gap:11px;padding:0 28px 26px;flex-wrap:wrap}
/* 《活动申报须知及个人信息处理规则》弹窗 */
.agree-doc h4{margin:20px 0 10px;font-size:15.5px;color:var(--ink);padding-bottom:7px;border-bottom:1px solid var(--line)}
.agree-doc h4:first-of-type{margin-top:6px}
.agree-doc h5{margin:13px 0 5px;font-size:13.5px;color:var(--blue-d,var(--blue))}
.agree-doc p{font-size:13px;color:var(--gray);line-height:1.9;margin-bottom:4px}
.agree-doc .ad-tip{margin-bottom:6px;padding:10px 13px;border-radius:8px;background:var(--blue-l);color:var(--blue-d,var(--blue));font-size:12.5px;line-height:1.8}
.agree-doc .ad-sub{font-size:12px;color:var(--gray-l);margin-bottom:8px}
.auth-tabs{display:flex;gap:26px;border-bottom:1px solid var(--line);margin-bottom:22px}
.auth-tab{padding:10px 2px;font-size:15.5px;color:var(--gray);position:relative;font-weight:500;transition:.2s}
.auth-tab.on{color:var(--blue);font-weight:700}
.auth-tab.on::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2.5px;background:var(--blue);border-radius:2px}
.auth-form{display:flex;flex-direction:column;gap:15px}
.code-row{display:grid;grid-template-columns:1fr 118px;gap:10px}
.code-btn{border:1.5px solid var(--blue);color:var(--blue);border-radius:var(--r-s);font-size:13px;background:#fff;transition:.2s;white-space:nowrap}
.code-btn:hover{background:var(--blue-l)}
.code-btn[disabled]{border-color:var(--line);color:var(--gray-l);background:var(--line-2)}

/* ==========================================================================
   后台活动大类筛选条
   ========================================================================== */
.act-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px;background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);padding:12px 14px;box-shadow:var(--sh-s)}
.act-filter .af-label{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--ink);margin-right:2px}
.act-filter .af-label svg{color:var(--blue)}
.act-filter .cat-pill i{font-style:normal;font-weight:600;opacity:.75;margin-left:1px}
.act-filter .af-zero{opacity:.5}
.act-filter .af-zero:hover{opacity:.85}

/* ==========================================================================
   内容管理（市级管理员）
   ========================================================================== */
.cms-tabs{display:flex;gap:8px;flex-wrap:wrap;padding:0 0 4px}
.cms-ven-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.cms-ven-card{border:1px solid var(--line);border-radius:var(--r-m);padding:16px 18px;background:#FAFCFF;transition:.2s;display:flex;flex-direction:column}
.cms-ven-card:hover{border-color:#BFD3F8;box-shadow:var(--sh-s)}
.cms-ven-card .cv-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.cms-ven-card .cv-top b{font-size:15px;color:var(--ink)}
.cms-ven-card p{font-size:13px;color:var(--gray)}
.cms-ven-card .cv-meta{display:flex;align-items:center;gap:6px;margin-top:4px}
.cms-ven-card .cv-ops{display:flex;gap:8px;margin-top:12px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ck-line{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-2);cursor:pointer}
.ck-line input{width:15px;height:15px;accent-color:var(--blue)}
.zrow{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line-2);border-radius:var(--r-s);padding:10px 12px;margin-bottom:8px;background:#FAFCFF}
.zrow-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.zrow .zr-icon{max-width:140px}
.zr-del{flex:none;width:30px;height:30px;border-radius:var(--r-s);color:var(--danger);background:#FDECEC;display:flex;align-items:center;justify-content:center;transition:.18s}
.zr-del:hover{background:#FBD5D5}
@media (max-width:640px){.grid-2{grid-template-columns:1fr}}
#toast-root{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none;width:min(94vw,560px)}
.toast{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--line);border-radius:var(--r-m);padding:12px 20px;box-shadow:var(--sh-l);font-size:14px;animation:toastin .3s cubic-bezier(.2,1.2,.4,1);max-width:100%}
.toast svg{flex:none}
.toast.t-ok{border-color:#A7E8CF}
.toast.t-ok svg{color:var(--ok)}
.toast.t-err svg{color:var(--danger)}
.toast.t-err{border-color:#F5C2C2}
.toast.t-info svg{color:var(--blue)}
.toast.out{animation:toastout .3s forwards}
@keyframes toastin{from{transform:translateY(-16px);opacity:0}}
@keyframes toastout{to{transform:translateY(-12px);opacity:0}}

.to-top{position:fixed;right:26px;bottom:30px;width:46px;height:46px;border-radius:var(--r-m);background:#fff;border:1px solid var(--line);color:var(--gray);display:flex;align-items:center;justify-content:center;box-shadow:var(--sh-m);opacity:0;pointer-events:none;transition:.28s;z-index:90}
.to-top.show{opacity:1;pointer-events:auto}
.to-top:hover{color:var(--blue);border-color:var(--blue);transform:translateY(-3px)}

/* 表单中富文本占位（textarea 简版） */
.rt-toolbar{display:flex;gap:5px;border:1.5px solid var(--line);border-bottom:none;border-radius:var(--r-s) var(--r-s) 0 0;padding:7px 9px;background:#F8FAFF}
.rt-btn{width:29px;height:29px;border-radius:5px;color:var(--gray);display:flex;align-items:center;justify-content:center;font-size:13px;transition:.15s;font-weight:700}
.rt-btn:hover{background:var(--blue-l);color:var(--blue)}
.ctl .rt-area{border-radius:0 var(--r-s) var(--r-s) var(--r-s)}

/* ==========================================================================
   响应式
   ========================================================================== */
/* 中等宽度（1024 – 1279）：登录态页头右侧较长，收紧品牌与导航间距离，
   避免菜单项被压到两行（「首 页」式折行） */
@media (max-width:1279px){
  .header-inner{gap:20px}
  .brand-text b{font-size:15.5px}
  .main-nav{gap:2px}
  .main-nav a{padding:8px 11px;font-size:14.5px}
}
@media (max-width:1023px){
  .header-inner{gap:18px}
  .main-nav{display:none}
  .nav-toggle{display:flex}
  .header-inner.nav-open .main-nav{display:flex;position:absolute;top:var(--head-h);left:0;right:0;background:#fff;flex-direction:column;padding:12px 20px 16px;border-bottom:1px solid var(--line);box-shadow:var(--sh-m);gap:2px}
  .main-nav a{padding:12px 14px;font-size:15px}
  .main-nav a.on::after{display:none}
  .hero-inner{grid-template-columns:1fr;gap:40px;padding:56px 24px 64px}
  .sched-cols{grid-template-columns:1fr;gap:44px}
  .act-grid{grid-template-columns:repeat(2,1fr)}
  .tl-items{grid-template-columns:repeat(5,1fr)}
  .reg-layout{grid-template-columns:1fr}
  .reg-aside{position:static;flex-direction:row;flex-wrap:wrap}
  .reg-aside .side-card{flex:1;min-width:250px}
  .venue-grid{grid-template-columns:1fr}
  .venue-detail{grid-template-columns:1fr}
  .profile-layout{grid-template-columns:1fr}
  .pf-side{position:static;display:flex;flex-wrap:wrap}
  .pf-user{width:100%;border-bottom:1px solid var(--line-2)}
  .pf-menu{display:flex;flex-wrap:wrap;width:100%}
  .pf-menu a{padding:9px 13px}
  .admin-grid{grid-template-columns:repeat(2,1fr)}
  .admin-panels{grid-template-columns:1fr}
}
@media (max-width:767px){
  .container{padding:0 16px}
  .section{padding:44px 0}
  .section.container{padding-left:16px;padding-right:16px}
  /* 页头：品牌区可收缩，避免页头把整页撑出横向滚动（手机为主场景） */
  .header-inner{gap:10px}
  .brand{min-width:0}
  .brand-mark svg{width:32px;height:32px}
  .brand-text{min-width:0;overflow:hidden}
  .brand-text b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .brand-text b i{display:none}
  .brand-text small{display:none}
  .header-actions .btn{padding-left:11px;padding-right:11px}
  .nav-toggle{width:36px;height:36px;flex:none}
  .hero h1{font-size:29px}
  .hero-actions .btn{flex:1;justify-content:center}
  .act-grid{grid-template-columns:1fr}
  .act-card h3{min-height:0}
  .act-card p{min-height:0}
  .tl-strip{padding:26px 12px 22px}
  .tl-strip::before{display:none}
  .tl-items{grid-template-columns:1fr;gap:0}
  .tl-item{display:flex;flex-direction:row;text-align:left;gap:13px;padding:9px 6px;align-items:center}
  .tl-item .tl-dot{margin:0;flex:none}
  .tl-item i{margin-top:0}
  .form-grid{grid-template-columns:1fr}
  .wizard-body{padding:24px 18px 22px}
  .wizard-foot{padding:16px 18px 20px}
  .steps{flex-wrap:wrap}
  .step-it{flex:1 1 50%;padding:12px 10px}
  .step-it i{display:none}
  .pv-row{grid-template-columns:1fr;gap:3px}
  .reg-aside{flex-direction:column}
  .tracker{flex-wrap:wrap;gap:14px 0}
  .trk{flex:1 1 45%}
  .trk::before{display:none}
  .member-row{grid-template-columns:1fr 1fr;grid-auto-rows:auto}
  .cd-cell b{font-size:24px}
  .ann-row{padding:14px 16px;gap:11px}
  .ann-date{min-width:48px;padding:4px 7px}
  .ann-date .vd-day{font-size:18px}
  /* 时间轴卡片：手机改为上下结构，日期块转横向小块独占一行，描述占满宽度 */
  .vtl-card{grid-template-columns:1fr;gap:0;padding:16px 18px}
  .vtl-date{flex-direction:row;align-items:center;gap:8px;min-width:0;padding:5px 12px;margin-bottom:12px;justify-self:start}
  .vd-time{margin-top:0}
  .vd-day{font-size:19px}
  .evday-head{flex-wrap:wrap;gap:8px}
  /* 活动日当天日程：手机上表格改为逐条堆叠（隐藏表头，地点/参与对象用 data-l 标签），
     749→0 不再横向滚动，也不需要 720px 最小宽度 */
  .sched-cols .evday .table-wrap{overflow:visible;padding:4px 16px 16px}
  .sched-cols .evday .table{display:block;min-width:0;width:100%;font-size:13.5px}
  .sched-cols .evday .table thead{display:none}
  .sched-cols .evday .table tbody{display:block}
  .sched-cols .evday .table tr{display:block;padding:12px 0;border-bottom:1px solid var(--line-2)}
  .sched-cols .evday .table tbody tr:last-child{border-bottom:none}
  .sched-cols .evday .table tbody tr:hover td{background:transparent}
  .sched-cols .evday .table td{display:flex;gap:9px;padding:0;border-bottom:none;line-height:1.65}
  .sched-cols .evday .table td + td{margin-top:6px}
  .sched-cols .evday .table td[data-l]::before{content:attr(data-l);flex:none;width:58px;color:var(--gray-l);font-size:12.5px;line-height:1.75}
  .sched-cols .evday .table .t-time{font-size:12.5px;font-weight:700;margin-bottom:2px}
  .sched-cols .evday .table .t-item b{font-size:15px;color:var(--ink)}
  .sched-cols .evday .table .t-loc,.sched-cols .evday .table .t-who{font-size:13px}
  .modal-body,.modal-head,.modal-foot{padding-left:18px;padding-right:18px}
  .regno-card .rn-val{font-size:20px}
  .stat-card b{font-size:22px}
  .to-top{right:14px;bottom:18px}
}

/* ==========================================================================
   三类用户说明带（首页）
   ========================================================================== */
.role-band{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.rb-item{display:flex;align-items:center;gap:14px;background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);padding:18px 20px;box-shadow:var(--sh-s);transition:.22s;position:relative;overflow:hidden}
/* 三类用户三色稿纸：公众=蓝 / 县区=薄荷 / 市级=紫 */
.rb-item:nth-child(2){background:linear-gradient(180deg,#FFFFFF,var(--tint-mint))}
.rb-item:nth-child(3){background:linear-gradient(180deg,#FFFFFF,var(--tint-lav))}
.rb-item:hover{border-color:#BFD3F8;box-shadow:var(--sh-m);transform:translateY(-2px)}
.rb-item > svg{flex:none;color:var(--blue);background:var(--blue-l);border-radius:var(--r-s);padding:9px;box-sizing:content-box}
.rb-item div{flex:1;min-width:0}
.rb-item b{display:block;font-size:14.5px;color:var(--ink)}
.rb-item span{display:block;font-size:12.5px;color:var(--gray);margin-top:3px;line-height:1.6}
.rb-item > a{flex:none;font-size:13px;color:var(--blue);font-weight:500;padding:6px 13px;border:1px solid var(--blue);border-radius:var(--r-s);transition:.18s;background:#fff}
.rb-item > a:hover{background:var(--blue);color:#fff}
.rb-item:nth-child(2) > svg{color:#0E9BB5;background:#E0F7FA}
.rb-item:nth-child(3) > svg{color:var(--purple);background:var(--purple-l)}

/* ==========================================================================
   进度查询（公众免登录）
   ========================================================================== */
.track-search{max-width:760px;margin:0 auto}
.ts-box{display:flex;align-items:center;gap:12px;background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1.5px solid var(--line);border-radius:var(--r-l);padding:10px 10px 10px 20px;box-shadow:var(--sh-m);transition:.22s}
.ts-box:focus-within{border-color:var(--blue);box-shadow:0 0 0 4px rgba(37,99,235,.1)}
.ts-box > svg{flex:none;color:var(--gray-l)}
.ts-box input{flex:1;border:none;outline:none;font-size:16px;min-width:0;background:transparent}
.ts-hint{display:flex;gap:7px;align-items:flex-start;justify-content:center;font-size:12.5px;color:var(--gray-l);margin-top:12px;line-height:1.6}
.ts-hint svg{flex:none;margin-top:2px}
.track-guide{max-width:640px;margin:26px auto 0;background:linear-gradient(180deg,#FFFFFF,var(--tint-cream));border:1px solid var(--line);border-radius:var(--r-l);padding:48px 36px;text-align:center;box-shadow:var(--sh-s)}
.tg-icon{width:78px;height:78px;margin:0 auto 20px;border-radius:50%;background:var(--blue-l);color:var(--blue);display:flex;align-items:center;justify-content:center}
.track-guide h3{font-size:19px;font-weight:800;margin-bottom:10px}
.track-guide p{font-size:14px;color:var(--gray);line-height:1.9}
.tg-tips{margin-top:22px;display:flex;flex-direction:column;gap:10px;text-align:left}
.tg-tips span{display:flex;gap:9px;align-items:center;font-size:13px;color:var(--ink-2);background:#F6F9FF;border:1px dashed #C9DAF5;border-radius:var(--r-s);padding:10px 14px}
.tg-tips svg{flex:none;color:var(--blue)}
.track-result-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1px solid var(--line);border-radius:var(--r-m);padding:14px 20px;margin-bottom:18px;box-shadow:var(--sh-s);font-size:14px;color:var(--ink-2)}
.track-result-head b{color:var(--blue)}
.track-result-head .mono{color:var(--ink)}

/* ---------- 申报查询（所在区域 + 申报人姓名） ---------- */
.qs-form{background:linear-gradient(180deg,#FFFFFF,var(--tint-blue));border:1.5px solid var(--line);border-radius:var(--r-l);padding:22px 24px;box-shadow:var(--sh-m)}
.qs-form .btn{width:100%;margin-top:20px;justify-content:center}
.qs-pick{margin-bottom:18px;background:#F6F9FF;border:1px dashed #C9DAF5;border-radius:var(--r-m);padding:14px 18px}
.qs-pick > label{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--ink-2);margin-bottom:10px}
.qs-pick > label svg{flex:none;color:var(--blue)}
.qs-pick .ctl select{font-size:14.5px}
.qs-detail{background:linear-gradient(180deg,#FFFFFF,#FAFCFF);border:1px solid var(--line);border-radius:var(--r-m);padding:18px 20px;box-shadow:var(--sh-s)}

/* ==========================================================================
   快捷入口带 + 页脚
   ========================================================================== */
.quick-band{background:linear-gradient(150deg,var(--navy) 0%,var(--navy-2) 60%,#16307A 100%);position:relative;overflow:hidden;padding:46px 0 50px}
/* 坐标纸 + 正弦函数曲线装饰 */
.quick-band::before{content:'';position:absolute;inset:0;background-image:
  linear-gradient(rgba(125,211,252,.04) 1px,transparent 1px),
  linear-gradient(90deg,rgba(125,211,252,.04) 1px,transparent 1px),
  linear-gradient(rgba(125,211,252,.07) 1px,transparent 1px),
  linear-gradient(90deg,rgba(125,211,252,.07) 1px,transparent 1px);
  background-size:24px 24px,24px 24px,120px 120px,120px 120px}
.quick-band::after{content:'';position:absolute;left:-5%;right:-5%;top:30%;height:120px;pointer-events:none;opacity:.5;
  background:radial-gradient(60px 26px at 12% 60%,rgba(14,165,233,.22),transparent 70%),
             radial-gradient(60px 26px at 30% 40%,rgba(125,211,252,.16),transparent 70%),
             radial-gradient(60px 26px at 48% 60%,rgba(14,165,233,.2),transparent 70%),
             radial-gradient(60px 26px at 66% 40%,rgba(125,211,252,.16),transparent 70%),
             radial-gradient(60px 26px at 84% 60%,rgba(14,165,233,.2),transparent 70%)}
.quick-band .container{position:relative;z-index:2}
.qb-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:24px;flex-wrap:wrap}
.qb-head h2{font-size:20px;font-weight:900;color:#fff;letter-spacing:.04em;font-family:var(--serif)}
.qb-head p{font-size:13px;color:#8E9CC0}
.qb-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.qb-item{display:flex;flex-direction:column;gap:10px;background:rgba(255,255,255,.045);border:1px solid rgba(125,211,252,.18);border-radius:var(--r-m);padding:20px 18px;transition:.22s;backdrop-filter:blur(4px);position:relative}
/* 卡片右上角几何直角记号 */
.qb-item::after{content:'';position:absolute;top:9px;right:9px;width:10px;height:10px;border-top:2px solid rgba(125,211,252,.4);border-right:2px solid rgba(125,211,252,.4);transition:.22s}
.qb-item:hover{background:rgba(255,255,255,.09);border-color:rgba(125,211,252,.5);transform:translateY(-3px)}
.qb-item:hover::after{border-color:var(--cyan-l);width:14px;height:14px}
.qb-item b{font-size:15.5px;color:#fff;font-weight:700}
.qb-item span{font-size:12.5px;color:#8E9CC0;line-height:1.6}
.qb-ic{width:46px;height:46px;border-radius:var(--r-s);display:flex;align-items:center;justify-content:center;color:#fff}
.qb-blue{background:linear-gradient(135deg,#2563EB,#3B82F6)}
.qb-cyan{background:linear-gradient(135deg,#0891B2,#0EA5E9)}
.qb-purple{background:linear-gradient(135deg,#7C3AED,#8B5CF6)}
.qb-green{background:linear-gradient(135deg,#059669,#10B981)}
.qb-amber{background:linear-gradient(135deg,#D97706,#F59E0B)}

.site-footer{background:#081026;color:#B9C7E8;border-top:1px solid rgba(125,211,252,.14);position:relative;overflow:hidden}
/* 页脚坐标纸纹理 */
.site-footer::before{content:'';position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(125,211,252,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(125,211,252,.03) 1px,transparent 1px);
  background-size:40px 40px}
.footer-top{display:flex;align-items:center;justify-content:space-between;gap:26px;padding:34px 0 26px;border-bottom:1px solid rgba(125,211,252,.12);flex-wrap:wrap;position:relative}
.footer-brand{display:flex;align-items:center;gap:15px}
.footer-brand b{display:block;font-size:16.5px;color:#fff;font-weight:800;line-height:1.5;font-family:var(--serif)}
.footer-brand small{display:block;font-size:12.5px;color:#7E96C8;margin-top:3px}
.footer-mid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;padding:30px 0 8px;position:relative}
.footer-col h4{font-size:13px;font-weight:700;color:#7DD3FC;letter-spacing:.14em;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.footer-col h4::before{content:'';width:14px;height:2px;background:var(--cyan);border-radius:2px}
.footer-links{list-style:none;display:flex;flex-direction:column;gap:9px}
.footer-links li{font-size:13.5px;color:#8E9CC0;line-height:1.6}
.footer-links a{color:#B9C7E8;transition:.18s;position:relative}
.footer-links a:hover{color:#7DD3FC;padding-left:14px}
.footer-links a::before{content:'';position:absolute;left:0;top:50%;width:0;height:1.5px;background:var(--cyan);transition:.18s}
.footer-links a:hover::before{width:9px}
.footer-bottom{border-top:1px solid rgba(125,211,252,.1);padding:18px 0;position:relative}
.footer-bottom .container{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.footer-bottom span{font-size:12.5px;color:#7E96C8}
.footer-bottom .mono{font-size:11px;letter-spacing:.08em;opacity:.75}

/* 管理员登录弹窗 · 公众免登录提示 */
.pub-login-tip{display:flex;gap:11px;align-items:flex-start;background:#F3F8FF;border:1px solid #BFD3F8;color:#1D4ED8;border-radius:var(--r-s);padding:12px 15px;font-size:13px;line-height:1.8;margin-bottom:18px}
.pub-login-tip svg{flex:none;margin-top:3px;color:var(--blue)}
.pub-login-tip b{font-weight:700}
.pub-login-tip a{color:var(--blue);text-decoration:underline;margin:0 2px}

/* 响应式补充 */
@media (max-width:1023px){
  .role-band{grid-template-columns:1fr}
  .qb-grid{grid-template-columns:repeat(2,1fr)}
  .footer-mid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:767px){
  .qb-head{flex-direction:column;align-items:flex-start}
  .qb-grid{grid-template-columns:1fr 1fr}
  .qb-item{padding:16px 14px}
  .footer-top{flex-direction:column;align-items:flex-start}
  .footer-mid{grid-template-columns:1fr;gap:22px}
  .ts-box{flex-wrap:wrap;padding:12px}
  .ts-box input{width:100%;padding:8px 2px}
  .ts-box .btn{width:100%}
  .track-guide{padding:34px 20px}
  .track-result-head{align-items:flex-start}
  .qs-form{padding:18px 16px}
  .qs-pick{padding:12px 14px}
  .qs-detail{padding:14px 14px}
  .pv-row{grid-template-columns:1fr;gap:2px;padding:9px 14px}
}
