@charset "utf-8";
/* ==========================================================================
   远德天狼 · 西安  |  tokens-xian.css   — load AFTER style-v7.css
   --------------------------------------------------------------------------
   COMMERCIAL build. Recruitment lives under /products/ and does not appear
   on the homepage.

   Shanghai's client is travelling; Xi'an's is in conflict — the high-risk
   line (经济纠纷 / 婚姻纠纷 / 绑架勒索 / 企业债务) is this site's real
   commercial surface. So the ground goes drier, the accent goes to an
   authority blue, and the one hot colour means ACT NOW rather than
   decorating anything.

   SIGNATURE  .basis        quotation basis — answers the dominant query class
              .situations   situation router — how commercial intent is phrased
   ========================================================================== */

:root{
  --field:#EAEAE5;        /* dry concrete — cooler than Shanghai's field   */
  --field-2:#E1E1DB;
  --sheet:#FFFFFF;
  --pine:#191B1E;         /* neutral near-black                            */
  --moss:#3C4148;
  --sage:#6B7178;
  --sage-2:#949AA0;
  --rule:#D2D3CE;
  --signal:#1D4E89;       /* authority blue — links, interactive           */
  --signal-wash:#E5EBF3;
  --seal:#C8371E;         /* RESERVED: answer seal + 紧急响应. Nothing else.*/
}

/* A posted notice reads wider and calmer than a manifesto. */
.h-xl,.h-lg{font-weight:700;letter-spacing:.005em}
.h-xl{line-height:1.24}
.brand .name,.foot-brand .name,.center h3{font-weight:700}

/* ---------- SIGNATURE: quotation basis ----------------------------------- */
/* 价格 / 服务费 / 报价 / 计费 is the largest commercial query class on this
   site by a wide margin, and almost nobody answers it. This publishes the
   VARIABLES that set a price, not prices the business can't commit to —
   citable, honest, and it holds up when a quote differs. */
.basis{position:relative;z-index:2;margin-top:clamp(36px,5vw,58px);border-top:1px solid var(--rule)}
.basis-track{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);border-top:0}
.basis-cell{background:var(--field);padding:22px 20px 24px}
.basis-cell .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--sage-2)}
.basis-cell .v{font-family:var(--disp);font-weight:700;font-size:clamp(17px,2vw,21px);margin-top:10px;line-height:1.35}
.basis-cell p{color:var(--sage);font-size:12.5px;line-height:1.7;margin-top:8px}
.basis-note{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--sage);
  border:1px solid var(--rule);border-top:0;background:var(--sheet);padding:12px 20px;
}
.basis-note b{color:var(--seal);font-weight:500}

/* ---------- SIGNATURE: situation router ---------------------------------- */
/* People do not search "保镖服务". They search their situation. These map
   1:1 onto the 高危保镖服务 categories, so the router is also the crawl
   path into the highest-intent pages on the site. */
.situations{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);grid-template-columns:repeat(4,1fr)}
.sit{background:var(--sheet);padding:24px 22px 26px;position:relative;min-height:150px}
.sit .q{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--sage-2)}
.sit h3{font-family:var(--disp);font-weight:700;font-size:16.5px;margin-top:12px;line-height:1.5}
.sit p{color:var(--sage);font-size:13px;line-height:1.75;margin-top:9px}
.sit--urgent{border-left:3px solid var(--seal)}
.sit--urgent .q{color:var(--seal)}

/* ---------- response marker: the one hot state --------------------------- */
.respond{
  display:inline-flex;align-items:baseline;gap:9px;font-family:var(--mono);
  font-size:12px;letter-spacing:.08em;color:var(--seal);
  border:1px solid var(--seal);padding:6px 12px;
}
.respond::before{content:"●";font-size:8px;position:relative;top:-2px}

/* ---------- area: districts before cities -------------------------------- */
/* The office is in 未央区, so the city is the primary service area and the
   other seven cities are 派驻. Districts first reflects that truthfully. */
.districts{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:26px}
.districts span,.districts a{
  font-family:var(--mono);font-size:12px;color:var(--sage);
  border:1px solid var(--rule);padding:5px 11px;background:var(--sheet);
}
.districts .home{border-color:var(--signal);color:var(--signal);font-weight:500}
.coverage a.lead-city{background:var(--signal-wash)}
.coverage a.lead-city b{color:var(--signal);font-weight:700}

@media (max-width:860px){
  .basis-track{grid-template-columns:repeat(2,1fr)}
  .situations{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:600px){
  .basis-track,.situations{grid-template-columns:1fr}
}

/* ==========================================================================
   INTERIOR PAGES
   The seven situation pages carry 78–96 characters each. These components
   are deliberately slot-shaped: every block renders only when its field has
   content, so an unfilled page looks unfinished in the CMS rather than
   looking finished and saying nothing.
   ========================================================================== */

/* ---------- structured brief (article-index) ----------------------------- */
.brief{display:grid;gap:0}
.brief-slot{border-top:1px solid var(--rule);padding:32px 0}
.brief-slot:first-child{border-top:0;padding-top:0}
.brief-slot > .k{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--sage-2);margin-bottom:16px;
  display:flex;align-items:baseline;gap:10px;
}
.brief-slot > .k b{font-weight:400;color:var(--signal)}
.brief-slot h2{margin-bottom:14px}

/* 适用情形 — plain checklist, no icons, no cards */
.applies{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);grid-template-columns:repeat(2,1fr)}
.applies li{background:var(--sheet);padding:15px 18px;font-size:14.5px;display:flex;gap:11px;align-items:flex-start}
.applies li::before{content:"—";color:var(--signal);flex:none;font-family:var(--mono)}

/* 处置流程 — the promise the situation router makes */
.steps{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);grid-template-columns:repeat(5,1fr)}
.step{background:var(--sheet);padding:22px 18px 26px}
.step .n{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--signal)}
.step h3{font-family:var(--disp);font-weight:700;font-size:15.5px;margin-top:14px;line-height:1.5}
.step p{color:var(--sage);font-size:12.5px;line-height:1.75;margin-top:8px}

/* 服务边界 — what is NOT accepted. Regulated sector; also a trust signal
   and exactly the kind of unambiguous statement answer engines quote. */
.boundary{background:var(--sheet);border:1px solid var(--rule);border-left:3px solid var(--seal);padding:24px 26px}
.boundary .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--seal);margin-bottom:12px}
.boundary ul{display:grid;gap:9px;margin-top:4px}
.boundary li{font-size:14.5px;display:flex;gap:11px;align-items:flex-start;color:var(--sage)}
.boundary li::before{content:"×";color:var(--seal);flex:none;font-family:var(--mono);font-weight:500}
.boundary p{font-size:13.5px;color:var(--sage);margin-top:14px;padding-top:12px;border-top:1px solid var(--rule)}

/* empty-state notice — visible in the CMS preview, hidden in production */
.slot-empty{
  border:1px dashed var(--rule);padding:14px 18px;font-family:var(--mono);
  font-size:11.5px;color:var(--sage-2);letter-spacing:.04em;
}

/* ---------- city hub ----------------------------------------------------- */
.hub-head{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:end;padding-bottom:26px;border-bottom:2px solid var(--pine)}
.hub-stat{display:flex;gap:28px}
.hub-stat div{text-align:right}
.hub-stat .n{font-family:var(--mono);font-weight:500;font-size:clamp(24px,3vw,34px);font-variant-numeric:tabular-nums;line-height:1}
.hub-stat .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--sage-2);margin-top:7px}

/* no-office disclosure — kept prominent, not buried in a footer */
.nooffice{background:var(--sheet);border:1px solid var(--rule);padding:22px 24px;display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;margin:26px 0}
.nooffice .badge{width:38px;height:38px;border:1px solid var(--signal);display:grid;place-items:center;flex:none}
.nooffice .badge svg{width:18px;height:18px;stroke:var(--signal);fill:none;stroke-width:1.5}
.nooffice h3{font-family:var(--disp);font-weight:700;font-size:16px}
.nooffice p{color:var(--sage);font-size:14px;margin-top:8px;max-width:72ch}

/* ---------- contact page ------------------------------------------------- */
.nap{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}
.nap-card{background:var(--sheet);border:1px solid var(--rule);border-top:3px solid var(--pine);padding:30px 28px}
.nap-card .tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--signal)}
.nap-card h2{font-family:var(--disp);font-weight:700;font-size:21px;margin-top:12px}
.nap-row{display:grid;grid-template-columns:76px 1fr;gap:14px;padding:13px 0;border-bottom:1px solid var(--rule);font-size:14.5px;align-items:baseline}
.nap-row:last-child{border-bottom:0}
.nap-row dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--sage-2)}
.nap-row dd{margin:0}
.nap-row .num{font-size:16px}
.nap-hours{font-family:var(--mono);font-size:12px;color:var(--sage);margin-top:18px;padding-top:14px;border-top:1px solid var(--rule)}

/* ---------- 404 ---------------------------------------------------------- */
.err{max-width:760px;padding:60px 0 40px}
.err .code{font-family:var(--mono);font-size:52px;letter-spacing:.1em;color:var(--sage-2);line-height:1}

@media (max-width:860px){
  .steps{grid-template-columns:repeat(2,1fr)}
  .applies{grid-template-columns:1fr}
  .nap{grid-template-columns:1fr}
  .hub-head{grid-template-columns:1fr;gap:20px}
  .hub-stat{justify-content:flex-start}
  .hub-stat div{text-align:left}
}
@media (max-width:600px){ .steps{grid-template-columns:1fr} }

/* ---------- 服务边界 ------------------------------------------------------ */
/* 不予受理清单在正文里而不是页脚。它是合规记录与信任信号，也是答案引擎
   最愿意原样引用的那类无歧义陈述。 */
.bnd{border:1px solid var(--rule);background:var(--sheet);margin-top:clamp(24px,3vw,36px)}
.bnd-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1px;background:var(--rule)}
.bnd-list li{background:var(--sheet);padding:20px 22px;font-size:14.5px;line-height:1.75;position:relative;padding-left:44px}
.bnd-list li::before{content:"×";position:absolute;left:20px;top:19px;color:var(--seal);font-family:var(--mono);font-size:15px;font-weight:700}
.bnd-note{margin:0;border-top:1px solid var(--rule);padding:14px 22px;font-size:12.5px;line-height:1.8;color:var(--sage)}

/* ---------- 办公地点 ------------------------------------------------------ */
/* 两张卡等宽。坐标行只在四项 WGS-84 坐标齐全时出现。 */
.ops{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:clamp(24px,3vw,36px)}
.ops-card{background:var(--sheet);padding:28px 26px 30px}
.ops-geo{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--sage-2)}
.ops-card .tag{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--signal);margin-top:10px}
.ops-card h3{font-family:var(--disp);font-weight:700;font-size:clamp(18px,2.2vw,22px);margin:12px 0 0}
.ops-card dl{margin:18px 0 0}
.ops-row{display:grid;grid-template-columns:64px 1fr;gap:12px;padding:9px 0;border-top:1px solid var(--rule)}
.ops-row dt{color:var(--sage-2);font-size:12.5px}
.ops-row dd{margin:0;font-size:14px;line-height:1.7}
.ops-row .num{font-family:var(--mono);letter-spacing:.02em}
.ops-hours{margin:16px 0 0;font-size:12.5px;color:var(--sage)}

/* .situations / .basis-track responsive columns already declared in the
   860px/600px blocks near the top of this file (lines 86–92) — merged in
   here rather than duplicated. See task-8-report.md for the breakpoint
   audit. */
