@layer components{.table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);box-shadow:var(--shadow-xs)}table.data{width:100%;border-collapse:collapse;font-size:.93rem;min-width:680px;th, td{padding:.85rem 1rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--border)}thead th{background:var(--bg-muted);color:var(--fg);font-weight:600;white-space:nowrap;font-size:.85rem;letter-spacing:.01em}tbody tr:last-child th, tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--bg-soft)}tbody th{font-weight:600;color:var(--ink);white-space:nowrap}td{color:var(--muted)}.bad{color:var(--danger)}}.note-bar{border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:var(--radius-lg);padding:1.1rem 1.25rem;font-size:1rem;color:var(--fg);strong{color:var(--accent-ink)}}.note-bar + .grid{margin-top:1.2rem}.sec > h3{margin:2rem 0 .8rem}.checklist{display:grid;gap:.6rem;padding:0;margin:0;font-size:.95rem;li{list-style:none;position:relative;padding-left:1.7rem;color:var(--muted);&::before{content:"";position:absolute;left:0;top:.26rem;width:1.1rem;height:1.1rem;border-radius:6px;background:var(--accent-soft);border:1px solid var(--accent-line)}b{color:var(--ink);font-weight:600}}&.danger li::before{background:var(--danger-soft);border-color:var(--danger-line)}a{font-weight:500}}.faq{display:grid;gap:.7rem;details{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-xs);transition:border-color .16s, box-shadow .16s;&:hover{border-color:var(--border-strong)}&[open]{border-color:var(--accent-line);box-shadow:var(--shadow-sm)}}summary{cursor:pointer;padding:.95rem 1.1rem;font-weight:600;color:var(--ink);font-size:1rem;list-style:none;display:flex;gap:.8rem;align-items:baseline;&::-webkit-details-marker{display:none}&::after{content:"+";margin-left:auto;color:var(--accent);font-weight:700;font-size:1.15rem;line-height:1}}details[open] summary::after{content:"−"}details > p{padding:0 1.1rem 1.1rem;color:var(--muted);font-size:.96rem;border-top:1px solid var(--border);margin-top:-.1rem;padding-top:.85rem}}.tile{display:block;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.2rem 1.3rem;box-shadow:var(--shadow-xs);transition:box-shadow .18s, transform .18s, border-color .18s;&:hover{text-decoration:none;transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--accent-line)}h3{margin-bottom:.35rem;color:var(--ink)}p{color:var(--muted);font-size:.93rem}.count{display:inline-block;margin-top:.7rem;font-size:.86rem;font-weight:600;color:var(--accent)}}.city-grid .tile{display:flex;flex-direction:column;.tile-sub{font-size:.8rem;letter-spacing:.02em;color:var(--muted)}.count{margin-top:auto;padding-top:.75rem}}.timeline{display:grid;gap:1.5rem;padding-left:1.7rem;border-left:2px solid var(--border);max-width:46rem}.timeline-item{position:relative;&::before{content:"";position:absolute;left:calc(-1.7rem - 7px);top:.35rem;width:12px;height:12px;border-radius:999px;background:var(--accent);border:2px solid var(--bg);box-shadow:0 0 0 1.5px var(--accent-line)}h3{font-size:1.02rem;color:var(--ink);margin:.45rem 0 .3rem}p{color:var(--muted);font-size:.95rem;margin:0}}.timeline-year{display:inline-block;font-size:.82rem;font-weight:700;color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:999px;padding:.1rem .65rem}.city-search{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;input{height:2.9rem;min-width:16rem;padding:0 1rem;font:inherit;font-size:.98rem;color:var(--fg);background:var(--card);border:1px solid var(--border-strong);border-radius:var(--btn-radius);&::placeholder{color:var(--faint)}&:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--ring)}}}@media (width < 640px){.city-search{flex-wrap:nowrap;width:100%;input{flex:1 1 auto;min-width:0}.btn{flex:none;padding-inline:1rem;white-space:nowrap}}}.city-search-hint{margin-top:.2rem;font-size:.95rem;color:var(--muted);a{font-weight:600}}}