@font-face { font-family:"Galyon"; src:url("/assets/Galyon-Bold.otf") format("opentype"); font-weight:700; font-display:swap; }
:root {
  --ink:#07174f; --muted:#6d7790; --accent:#0754d8; --canvas:#f5f7fb; --surface:#fff;
  --soft:#eef3fb; --line:#d7dfec; --line-strong:#b8c5da; --success:#087052; --warning:#9a610c; --danger:#a9323a;
  font-family:"Segoe UI Variable","Aptos",system-ui,sans-serif; color:var(--ink); background:var(--canvas); font-synthesis:none;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; min-width:320px; background:var(--canvas); color:var(--ink); }
button,input { font:inherit; } button { cursor:pointer; } h1,h2,h3,p { margin-top:0; }
[hidden] { display:none!important; }
.skip-link { position:fixed; z-index:20; top:10px; left:10px; padding:9px 12px; border-radius:6px; background:var(--ink); color:#fff; transform:translateY(-160%); }
.skip-link:focus { transform:translateY(0); }
.site-header { height:64px; display:flex; align-items:center; padding:0 max(24px,calc((100vw - 1120px)/2)); border-bottom:1px solid var(--line); background:var(--surface); }
.brand { display:flex; align-items:center; gap:14px; color:var(--muted); text-decoration:none; font-size:12px; font-weight:600; }
.brand img { width:104px; height:36px; object-fit:contain; }
.brand span { padding-left:14px; border-left:1px solid var(--line); }
main { max-width:1120px; margin:0 auto; padding:48px 24px 80px; }
.search-shell { padding:38px 40px 42px; border:1px solid var(--line); border-radius:10px; background:var(--surface); box-shadow:0 18px 48px rgba(18,43,91,.06); }
.section-heading { margin-bottom:30px; }
h1 { margin-bottom:7px; font:700 clamp(28px,3vw,38px)/1.08 "Galyon",system-ui,sans-serif; letter-spacing:-.025em; }
.section-heading p { margin:0; color:var(--muted); font-size:13px; }
.service-selector { display:flex; gap:5px; margin:29px 0 28px; padding:4px; position:relative; border:1px solid var(--line); border-radius:8px; background:var(--soft); }
.service-selector legend { position:absolute; top:-24px; left:0; padding:0; color:var(--ink); font-size:11px; font-weight:650; }
.service-option { position:relative; flex:1; margin:0; }
.service-option input { position:absolute; opacity:0; pointer-events:none; }
.service-option span { min-height:57px; display:flex; align-items:baseline; gap:8px; padding:12px 14px; border:1px solid transparent; border-radius:6px; cursor:pointer; transition:background-color .18s,border-color .18s,box-shadow .18s; }
.service-option strong { font-size:12px; }
.service-option small { color:var(--muted); font-size:9px; }
.service-option input:checked+span { border-color:var(--line-strong); background:var(--surface); box-shadow:0 2px 8px rgba(18,43,91,.07); }
.service-option input:focus-visible+span { outline:3px solid rgba(7,84,216,.24); outline-offset:2px; }
.address-label { display:block; margin-bottom:9px; color:var(--ink); font-size:11px; font-weight:650; }
.search-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; }
.address-control { position:relative; min-width:0; }
.address-field { min-height:64px; display:flex; align-items:center; gap:14px; padding:0 10px 0 18px; border:1px solid var(--line-strong); border-radius:8px; background:var(--surface); transition:border-color .18s,box-shadow .18s; }
.address-field:focus-within { border-color:var(--accent); box-shadow:0 0 0 3px rgba(7,84,216,.13); }
.address-field input { flex:1; min-width:0; border:0; outline:0; color:var(--ink); background:transparent; font-size:16px; }
.address-field input::placeholder { color:#8b95aa; opacity:1; }
.location-mark { position:relative; width:15px; height:19px; flex:0 0 auto; border:2px solid var(--accent); border-radius:10px 10px 10px 2px; transform:rotate(-45deg); }
.location-mark::after { content:""; position:absolute; width:3px; height:3px; top:5px; left:4px; border:1.5px solid var(--accent); border-radius:50%; }
.locate-button { width:42px; height:42px; flex:0 0 auto; display:grid; place-items:center; border:0; border-radius:6px; background:var(--soft); color:var(--accent); }
.locate-button span { position:relative; width:17px; height:17px; border:1.8px solid currentColor; border-radius:50%; }
.locate-button span::before { content:""; position:absolute; inset:4px; border-radius:50%; background:currentColor; }
.locate-button span::after { content:""; position:absolute; inset:-5px 6px; border-top:2px solid currentColor; border-bottom:2px solid currentColor; }
.locate-button:hover { background:#dfe8f8; }
.submit-button { min-height:64px; display:inline-flex; align-items:center; justify-content:space-between; gap:28px; padding:0 20px; border:0; border-radius:8px; background:var(--ink); color:#fff; font-weight:700; white-space:nowrap; transition:background-color .18s,transform .18s; }
.submit-button:hover { background:#002b83; transform:translateY(-1px); }
.submit-button:active,.locate-button:active { transform:translateY(1px); }
.submit-button:disabled,.locate-button:disabled { opacity:.6; cursor:wait; transform:none; }
.submit-button b { font-size:18px; font-weight:500; }
.submit-button:focus-visible,.locate-button:focus-visible,.text-button:focus-visible,summary:focus-visible { outline:3px solid rgba(7,84,216,.28); outline-offset:3px; }
.address-suggestions { position:absolute; z-index:10; top:calc(100% + 7px); left:0; right:0; max-height:330px; overflow-y:auto; margin:0; padding:6px; list-style:none; border:1px solid var(--line); border-radius:8px; background:var(--surface); box-shadow:0 18px 44px rgba(18,43,91,.14); }
.address-suggestion { display:flex; gap:11px; padding:10px 11px; border-radius:5px; cursor:pointer; }
.address-suggestion:hover,.address-suggestion.is-active { background:var(--soft); }
.address-suggestion svg { flex:0 0 auto; width:16px; margin-top:2px; fill:none; stroke:var(--accent); stroke-width:1.8; }
.address-suggestion strong { display:block; font-size:13px; line-height:1.35; }
.address-suggestion small { display:block; margin-top:3px; color:var(--muted); font-size:11px; line-height:1.4; }
.address-meta { min-height:22px; display:flex; align-items:center; justify-content:space-between; gap:16px; padding-top:7px; color:var(--muted); font-size:9px; }
.address-meta a { color:inherit; text-underline-offset:2px; }
.address-confirmation { color:var(--success); font-weight:650; }
.address-confirmation:not(:empty)::before { content:"✓"; margin-right:5px; }
.results { margin-top:24px; padding:34px 40px 38px; border:1px solid var(--line); border-radius:10px; background:var(--surface); box-shadow:0 18px 48px rgba(18,43,91,.05); scroll-margin-top:18px; }
.results-topline { display:flex; align-items:end; justify-content:space-between; gap:20px; }
.section-label { margin-bottom:7px; color:var(--accent); font-size:9px; font-weight:750; letter-spacing:.1em; text-transform:uppercase; }
h2 { margin-bottom:0; font:700 clamp(25px,3vw,34px)/1.1 "Galyon",system-ui,sans-serif; letter-spacing:-.02em; }
.text-button { padding:5px 0; border:0; border-bottom:1px solid var(--ink); background:transparent; color:var(--ink); font-size:11px; font-weight:650; }
.result-location { margin:20px 0 17px; padding:13px 15px; border-left:3px solid var(--accent); background:var(--soft); color:var(--muted); font-size:11px; line-height:1.5; font-variant-numeric:tabular-nums; }
.result-location strong { display:block; color:var(--ink); font-size:13px; }
.result-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:11px; }
.result-toolbar>p { margin:0; font-size:10px; font-weight:650; }
.signal-guide { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px 14px; color:var(--muted); font-size:9px; }
.signal-guide span { display:inline-flex; align-items:center; gap:5px; }
.signal-guide i { width:7px; height:7px; border-radius:50%; background:var(--success); }
.signal-guide i.near { background:#c27a13; } .signal-guide i.coverage { background:var(--accent); } .signal-guide i.context { background:#8390aa; }
.result-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.result-card { position:relative; min-height:180px; padding:20px 20px 18px 24px; border:1px solid var(--line); border-radius:8px; overflow:hidden; display:flex; flex-direction:column; }
.result-card::before { content:""; position:absolute; inset:0 auto 0 0; width:4px; background:var(--success); }
.result-card.signal-near::before { background:#c27a13; } .result-card.signal-coverage::before { background:var(--accent); } .result-card.signal-context::before { background:#8390aa; }
.result-card:first-child:nth-last-child(n+3),.result-card:first-child:nth-last-child(n+3)~.result-card:last-child:nth-child(even) { grid-column:1/-1; min-height:155px; }
.result-card .status { align-self:flex-start; padding-bottom:5px; border-bottom:1px solid #aad4c4; color:var(--success); font-size:8px; font-weight:750; letter-spacing:.08em; text-transform:uppercase; }
.result-card.signal-near .status { color:var(--warning); border-color:#e0c18b; } .result-card.signal-coverage .status { color:var(--accent); border-color:#a9c2ed; } .result-card.signal-context .status { color:#5f6980; border-color:#c6ccd7; }
.result-card h3 { margin:18px 0 5px; font:700 19px/1.12 "Galyon",system-ui,sans-serif; }
.result-card p { margin-bottom:0; color:var(--muted); font-size:11px; }
.result-evidence { display:flex; flex-wrap:wrap; gap:5px; margin:12px 0 0; padding:0; list-style:none; }
.result-evidence li { padding:4px 6px; border-radius:4px; background:var(--soft); color:#002b83; font-size:8px; font-weight:650; }
.result-card small { margin-top:auto; padding-top:14px; color:var(--muted); font-size:10px; line-height:1.5; }
.qualification-note { margin:14px 0 0; color:var(--muted); font-size:9px; line-height:1.5; }
.raw-result { margin-top:15px; color:var(--muted); font-size:11px; }
.raw-result summary { width:fit-content; cursor:pointer; }
.raw-result pre { max-height:360px; overflow:auto; padding:16px; border-radius:6px; background:#111a34; color:#e5eaf5; white-space:pre-wrap; font:10px/1.5 ui-monospace,"Cascadia Mono",monospace; }
.error-card,.empty-card { grid-column:1/-1; padding:19px; border-left:3px solid var(--danger); border-radius:6px; background:#fff3f4; color:#842830; font-size:12px; line-height:1.5; }
.empty-card { border-left-color:var(--accent); background:var(--soft); color:var(--ink); }
.skeleton-card { min-height:155px; padding:21px; border:1px solid var(--line); border-radius:8px; }
.skeleton-line { height:9px; margin-bottom:12px; border-radius:3px; background:#e6ebf3; animation:pulse 1.2s ease-in-out infinite alternate; }
.skeleton-line.short { width:27%; } .skeleton-line.medium { width:62%; margin-top:27px; } .skeleton-line.long { width:86%; margin-top:33px; }
@keyframes pulse { to { opacity:.42; } }
@media (max-width:760px) {
  .site-header { padding-inline:18px; } main { padding:28px 14px 56px; }
  .search-shell,.results { padding:25px 18px 28px; }
  .service-selector { flex-direction:column; } .service-option span { min-height:50px; }
  .search-row { grid-template-columns:1fr; } .submit-button { width:100%; min-height:54px; }
  .address-field { min-height:60px; } .results-topline,.result-toolbar { align-items:stretch; flex-direction:column; }
  .signal-guide { justify-content:flex-start; } .result-grid { grid-template-columns:1fr; }
  .result-card:first-child:nth-last-child(n+3),.result-card:first-child:nth-last-child(n+3)~.result-card:last-child:nth-child(even) { grid-column:auto; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }
