.zst-wrap { --zst-navy:#071f46; --zst-blue:#075bbb; --zst-red:#c40812; --zst-pale:#f4f8fc; --zst-line:#d8e2ec; width:100%; max-width:1320px; margin:0 auto; color:#172b42; font-size:16px; }
.zst-wrap * { box-sizing:border-box; }
.zst-intro { max-width:850px; margin:0 0 38px; }
.zst-kicker { margin:0 0 8px; color:#078bd2; font-size:12px; font-weight:900; letter-spacing:.16em; }
.zst-intro h2 { margin:0 0 13px; color:var(--zst-navy); font-size:clamp(30px,4vw,48px); line-height:1.3; letter-spacing:-.03em; }
.zst-intro > p:last-child { margin:0; color:#586b80; font-size:16px; line-height:2; }
.zst-layout { display:grid; grid-template-columns:minmax(0,1.18fr) minmax(390px,.82fr); gap:32px; align-items:start; }
.zst-panel { padding:30px; border:1px solid var(--zst-line); border-radius:12px; background:#fff; box-shadow:0 18px 46px rgba(9,45,82,.08); }
.zst-field-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.zst-field-grid-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.zst-form label > span, .zst-form legend { display:block; margin-bottom:8px; color:#263d55; font-size:13px; font-weight:900; }
.zst-form label > small { display:block; margin-top:5px; color:#708398; font-size:10px; line-height:1.5; }
.zst-form input[type="number"], .zst-form select { width:100%; min-height:52px; padding:10px 13px; border:1px solid #bccbd8; border-radius:5px; color:#142b43; background:#fff; font-size:16px; }
.zst-form input:focus, .zst-form select:focus { outline:3px solid rgba(7,91,187,.15); border-color:var(--zst-blue); }
.zst-form fieldset { margin:24px 0 0; padding:0; border:0; }
.zst-checks { display:flex; flex-wrap:wrap; gap:10px; }
.zst-checks label { min-height:42px; display:flex; align-items:center; gap:7px; padding:8px 13px; border:1px solid var(--zst-line); border-radius:5px; background:#f8fbfe; font-weight:800; }
.zst-primary { min-height:56px; width:100%; margin-top:25px; padding:12px 22px; border:0; border-radius:6px; color:#fff; background:linear-gradient(120deg,#a90008,#e01924); box-shadow:0 12px 24px rgba(168,0,8,.2); font-size:16px; font-weight:900; cursor:pointer; }
.zst-primary:hover { filter:brightness(.92); }
.zst-primary:disabled { cursor:wait; opacity:.6; }
.zst-result { min-height:280px; padding:30px; border:1px solid #bed4e7; border-radius:12px; background:linear-gradient(145deg,#f2f9ff,#fff); box-shadow:0 16px 38px rgba(8,68,121,.07); }
.zst-result-placeholder { margin:0; color:#61758a; line-height:2; }
.zst-result-head { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding-bottom:20px; border-bottom:1px solid #d5e3ef; }
.zst-result-head span { color:#557086; font-size:12px; font-weight:900; letter-spacing:.1em; }
.zst-result-head strong { display:block; margin-top:5px; color:var(--zst-red); font-size:clamp(29px,4vw,44px); line-height:1.2; }
.zst-result-badge { flex:0 0 auto; padding:8px 12px; border-radius:999px; color:#fff; background:var(--zst-blue); font-size:12px; font-weight:900; }
.zst-result-badge.is-good { background:#087a46; }
.zst-result-badge.is-warn { background:#c3430a; }
.zst-result-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:20px; }
.zst-result-grid div { padding:15px; border-radius:7px; background:#fff; }
.zst-result-grid span { display:block; color:#64768a; font-size:11px; font-weight:800; }
.zst-result-grid strong { display:block; margin-top:4px; color:var(--zst-navy); font-size:18px; }
.zst-result-copy { margin:20px 0 0; color:#3d5368; line-height:1.9; }
.zst-result-list { margin:18px 0 0; padding:0; list-style:none; }
.zst-result-list li { position:relative; margin-top:9px; padding:12px 14px 12px 39px; border:1px solid #dbe5ee; border-radius:6px; background:#fff; line-height:1.7; }
.zst-result-list li::before { content:"✓"; position:absolute; left:14px; top:12px; color:#078f57; font-weight:1000; }
.zst-result-cta { display:inline-flex; margin-top:20px; min-height:48px; align-items:center; padding:0 19px; border-radius:5px; color:#fff!important; text-decoration:none; background:var(--zst-blue); font-weight:900; }
.zst-note { margin-top:28px; padding:22px 25px; border-left:5px solid #7890a7; background:#f3f6f9; }
.zst-note strong { color:var(--zst-navy); }
.zst-note p { margin:7px 0 0; color:#596b7c; font-size:13px; line-height:1.9; }
.zst-invoice .zst-result { margin-top:28px; }
.zst-privacy { margin:0 0 24px; padding:24px 27px; border:1px solid #bcd8cc; border-radius:9px; background:#f2fbf6; }
.zst-privacy strong { color:#096a41; }
.zst-privacy ul { margin:10px 0 0; padding-left:20px; color:#365847; font-size:13px; line-height:1.85; }
.zst-file { min-height:150px; display:flex!important; flex-direction:column; align-items:center; justify-content:center; padding:24px; border:2px dashed #88a5bd; border-radius:9px; text-align:center; background:#f8fbfe; }
.zst-file input { max-width:100%; margin:10px 0; }
.zst-file small { color:#60768b; }
.zst-consent { display:flex!important; gap:9px; align-items:flex-start; margin-top:22px; color:#465b70; font-size:13px; line-height:1.7; }
.zst-consent input { margin-top:5px; flex:0 0 auto; }
.zst-quote .zst-result { margin-top:28px; }
.zst-ai-summary { margin:0 0 22px; padding:18px; border-left:4px solid var(--zst-blue); background:#fff; color:#344d64; line-height:1.85; }
.zst-ai-section { margin-top:24px; }
.zst-ai-section h3 { margin:0 0 12px; color:var(--zst-navy); font-size:20px; }
.zst-ai-section.is-positive { padding:18px; border-left:5px solid #087a46; background:#f0faf5; }
.zst-ai-section.is-risk { padding:18px; border-left:5px solid #c3430a; background:#fff7f0; }
.zst-finding { display:grid; grid-template-columns:150px minmax(0,1fr); gap:12px; padding:13px 0; border-top:1px solid #dbe5ee; }
.zst-finding strong { color:#243e57; }
.zst-finding span { display:block; color:#546b80; }
.zst-finding small { display:block; margin-top:4px; color:#82615b; font-size:12px; line-height:1.6; }
.zst-maker-tabs { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:24px; }
.zst-maker-tabs button { min-height:46px; padding:9px 17px; border:1px solid #b9c9d7; border-radius:999px; color:#2b455f; background:#fff; font-weight:900; cursor:pointer; }
.zst-maker-tabs button[aria-selected="true"] { border-color:var(--zst-red); color:#fff; background:var(--zst-red); }
.zst-area-check { display:grid; grid-template-columns:minmax(260px,.45fr) minmax(0,1fr); gap:18px; align-items:end; margin:0 0 24px; padding:20px 22px; border:1px solid #bfd3e3; border-radius:10px; background:#f5faff; }
.zst-area-check label span { display:block; margin-bottom:7px; color:#263d55; font-size:12px; font-weight:900; }
.zst-area-check select { width:100%; min-height:48px; padding:9px 12px; border:1px solid #aebfce; border-radius:5px; background:#fff; }
.zst-area-check [data-zst-area-result] { min-height:48px; padding:10px 14px; border-left:4px solid var(--zst-blue); color:#425b70; background:#fff; font-size:13px; line-height:1.8; }
.zst-network-layout { display:grid; grid-template-columns:minmax(0,1.04fr) minmax(360px,.96fr); gap:28px; }
.zst-map { position:relative; min-height:610px; overflow:hidden; padding:78px 24px 24px; border:1px solid var(--zst-line); border-radius:12px; background:radial-gradient(circle at 80% 15%,rgba(4,155,216,.13),transparent 32%),linear-gradient(145deg,#edf8ff,#fff); }
.zst-map-heading { position:absolute; z-index:2; top:22px; left:24px; display:flex; flex-direction:column; gap:2px; }
.zst-map-heading strong { color:#062b5c; font-size:17px; }
.zst-map-heading span { color:#587187; font-size:11px; font-weight:700; }
.zst-map svg { display:block; width:100%; height:auto; max-height:none; }
.zst-japan-shape path { fill:#cfe5f2; stroke:#79a9c7; stroke-width:3; filter:drop-shadow(0 7px 9px rgba(26,89,130,.12)); }
.zst-map-marker circle { fill:#fff; stroke:#9ab4c8; stroke-width:3; transition:.2s; }
.zst-map-marker text { fill:#5d7488; font-size:10px; font-weight:900; }
.zst-map-marker.is-active circle { fill:#d20a14; stroke:#fff; filter:drop-shadow(0 5px 7px rgba(131,0,6,.28)); }
.zst-map-marker.is-active text { fill:#fff; }
.zst-map-marker.is-selected-region circle { stroke:#ffcf40; stroke-width:8; filter:drop-shadow(0 6px 10px rgba(255,171,0,.55)); }
.zst-city-layer { pointer-events:none; }
.zst-city-marker .zst-city-halo { fill:rgba(210,10,20,.16); stroke:none; }
.zst-city-marker .zst-city-dot { fill:#d20a14; stroke:#fff; stroke-width:3; filter:drop-shadow(0 4px 5px rgba(121,0,7,.35)); }
.zst-city-marker line { stroke:#a70812; stroke-width:2; }
.zst-city-marker text { fill:#071f46; paint-order:stroke; stroke:#fff; stroke-width:5px; stroke-linejoin:round; font-size:15px; font-weight:1000; }
.zst-network-detail { padding:35px; border-radius:12px; color:#fff; background:linear-gradient(145deg,#061f45,#074d8e); box-shadow:0 18px 48px rgba(5,43,78,.18); }
.zst-network-detail h3 { margin:6px 0 14px; color:#fff; font-size:32px; }
.zst-network-detail > p:not(.zst-kicker) { color:#d4e6f5; line-height:1.9; }
.zst-network-facts { display:flex; flex-wrap:wrap; gap:8px; margin:18px 0 5px; }
.zst-network-facts span { padding:7px 10px; border:1px solid rgba(255,255,255,.2); border-radius:999px; color:#fff; background:rgba(255,255,255,.08); font-size:11px; font-weight:800; }
.zst-network-points { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:25px 0; }
.zst-network-point { padding:10px 11px; border:1px solid rgba(255,255,255,.18); border-radius:5px; color:#fff; background:rgba(255,255,255,.07); font-size:13px; font-weight:800; }
.zst-official { display:flex; min-height:50px; align-items:center; justify-content:center; margin-top:25px; padding:10px 16px; border-radius:5px; color:#071f46!important; text-align:center; text-decoration:none; background:#ffcf40; font-weight:900; }
@media (max-width:980px) {
  .zst-layout,.zst-network-layout { grid-template-columns:1fr; }
  .zst-field-grid-3 { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .zst-map { min-height:500px; }
}
@media (max-width:600px) {
  .zst-wrap { font-size:15px; }
  .zst-panel,.zst-result,.zst-network-detail { padding:22px 18px; }
  .zst-field-grid,.zst-field-grid-3,.zst-result-grid { grid-template-columns:1fr; }
  .zst-map { min-height:390px; padding:72px 8px 8px; }
  .zst-map-heading { top:17px; left:16px; }
  .zst-city-marker text { font-size:17px; }
  .zst-network-points { grid-template-columns:1fr 1fr; }
  .zst-finding { grid-template-columns:1fr; gap:4px; }
  .zst-area-check { grid-template-columns:1fr; padding:17px; }
}
