/* IA Lab by amano · hubs locais */
.city-page {
  --city-ink: #171613;
  --city-paper: #f6f3e9;
  --city-paper-2: #eee9df;
  --city-bronze: #734f2f;
  --city-gold: #c4a67c;
  --city-stone: #665e55;
  --city-line: rgba(23,22,19,.13);
  width: min(1240px, calc(100% - 40px));
  margin: 0 auto;
  padding: 24px 0 88px;
  color: var(--city-ink);
  font-family: "Work Sans", Arial, sans-serif;
  font-size: 17px;
  line-height: 1.7;
}
.city-page :is(h1,h2,h3,h4) { font-family: "Fraunces", Georgia, serif; font-weight: 300; letter-spacing: -.025em; }
.city-page h1 { font-size: clamp(42px,6.2vw,76px); line-height: .98; max-width: 820px; margin: 0 0 22px; }
.city-page h2 { font-size: clamp(32px,4.1vw,54px); line-height: 1.04; margin: 0 0 16px; }
.city-page h3 { font-size: clamp(23px,2.8vw,32px); line-height: 1.1; margin: 0 0 12px; }
.city-page p { max-width: 760px; }
.city-page a { text-underline-offset: 4px; }
.city-page a:focus-visible, .city-page summary:focus-visible { outline: 3px solid #c4a67c; outline-offset: 4px; }
.city-page :is(ul,ol) { padding-left: 1.3rem; max-width: 760px; }
.city-page li { padding-left: .15rem; margin: .38rem 0; }
.city-kicker { display:block; margin: 0 0 10px; color: var(--city-bronze); font-size: 11px; font-weight: 600; letter-spacing: .16em; line-height: 1.45; text-transform: uppercase; }
.city-kicker-light { color: var(--city-gold); }
.city-hero { position: relative; overflow: hidden; border-radius: 18px; background: var(--city-ink); color: var(--city-paper); }
.city-hero:after { content:""; position:absolute; top:-250px; right:14%; width:520px; height:520px; border:1px solid rgba(196,166,124,.18); border-radius:50%; box-shadow:0 0 0 56px rgba(196,166,124,.035),0 0 0 112px rgba(196,166,124,.025); pointer-events:none; }
.city-hero-inner { position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,1.15fr) minmax(300px,.8fr); gap:clamp(30px,5vw,70px); align-items:center; padding:clamp(30px,5.2vw,72px); }
.city-hero-copy { min-width:0; }
.city-lead { max-width:720px; margin:0 0 24px; color:rgba(246,243,233,.78); font-size:clamp(18px,1.7vw,23px); line-height:1.55; }
.city-lead p { margin:0 0 13px; }
.city-impact { margin:30px 0 27px; padding:17px 0 17px 20px; border:0; border-left:2px solid var(--city-gold); color:var(--city-paper); }
.city-impact span { display:block; margin:0 0 5px; color:var(--city-gold); font-size:10px; font-weight:600; letter-spacing:.15em; text-transform:uppercase; }
.city-impact p { max-width:560px; margin:0; font-family:"Fraunces",Georgia,serif; font-size:clamp(22px,2.3vw,31px); line-height:1.25; }
.city-button { min-height:48px; display:inline-flex; align-items:center; justify-content:center; gap:14px; padding:12px 17px; border:1px solid var(--city-bronze); border-radius:8px; background:var(--city-bronze); color:#fff !important; font-size:13px; font-weight:500; line-height:1.35; text-decoration:none; transition:transform .2s ease,background .2s ease; }
.city-button:hover { transform:translateY(-2px); background:#5d3e26; }
.city-button-light { border-color:var(--city-gold); background:var(--city-gold); color:var(--city-ink) !important; }
.city-button-light:hover { background:#d0b48b; }
.city-map-wrap { min-width:0; }
.city-map-card { margin:0; padding:10px; border:1px solid rgba(246,243,233,.17); border-radius:14px; background:rgba(246,243,233,.07); }
.city-map-frame { overflow:hidden; border-radius:9px; background:#e8e5dc; }
.city-map-frame iframe { display:block; width:100%; height:clamp(230px,25vw,315px); border:0; }
.city-map-card figcaption { display:grid; gap:5px; padding:13px 5px 3px; color:rgba(246,243,233,.64); font-size:11px; line-height:1.5; }
.city-map-card figcaption strong { color:var(--city-paper); font-size:13px; font-weight:500; }
.city-map-card figcaption a { color:var(--city-gold); }
.city-next-class { display:grid; gap:5px; margin-top:12px; padding:16px 18px; border:1px solid rgba(196,166,124,.28); border-radius:10px; background:rgba(196,166,124,.08); }
.city-next-class span { color:var(--city-gold); font-size:10px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; }
.city-next-class strong { font-family:"Fraunces",Georgia,serif; font-size:21px; font-weight:300; }
.city-next-class a { color:var(--city-paper); font-size:12px; }
.city-overview { display:grid; grid-template-columns:minmax(240px,.85fr) minmax(300px,1.15fr); gap:clamp(24px,6vw,90px); align-items:start; padding:clamp(56px,8vw,102px) clamp(12px,4vw,48px); border-bottom:1px solid var(--city-line); }
.city-overview h2 { max-width:470px; }
.city-overview-copy { margin-top:24px; color:var(--city-stone); font-size:17px; }
.city-overview-copy p { margin:0 0 14px; }
.city-section-head { max-width:780px; margin:0 0 28px; }
.city-section-head > p { margin:0; color:var(--city-stone); }
.city-data-section, .city-article-section, .city-method-section, .city-class-section, .city-release-section, .city-source-section, .city-related { padding:clamp(54px,7vw,86px) clamp(12px,4vw,48px); border-bottom:1px solid var(--city-line); }
.city-data-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.city-data-card { display:flex; min-height:190px; flex-direction:column; align-items:flex-start; justify-content:space-between; gap:8px; padding:22px; border:1px solid var(--city-line); border-radius:12px; background:rgba(255,255,255,.4); }
.city-data-label { color:var(--city-bronze); font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; }
.city-data-card strong { font-family:"Fraunces",Georgia,serif; font-size:clamp(25px,3vw,38px); font-weight:300; letter-spacing:-.02em; line-height:1.05; }
.city-data-period { color:var(--city-stone); font-size:12px; line-height:1.5; }
.city-data-card small { color:#746b61; font-size:11px; line-height:1.5; }
.city-content { background:rgba(255,255,255,.26); }
.city-article-section { display:grid; grid-template-columns:minmax(210px,.72fr) minmax(0,1.28fr); gap:clamp(25px,5.5vw,78px); }
.city-section-head h2 { max-width:450px; }
.city-copy { min-width:0; color:#403b35; }
.city-copy > :first-child { margin-top:0; }
.city-copy h2 { margin:0 0 16px; font-size:clamp(27px,3.2vw,39px); }
.city-copy h3 { margin:26px 0 10px; font-size:clamp(22px,2.5vw,29px); }
.city-copy p { margin:0 0 17px; }
.city-copy strong { color:var(--city-ink); font-weight:600; }
.city-copy blockquote { margin:24px 0; padding:14px 0 14px 19px; border:0; border-left:2px solid var(--city-gold); color:var(--city-bronze); font-family:"Fraunces",Georgia,serif; font-size:25px; line-height:1.3; }
.city-copy blockquote p { margin:0; }
.city-copy table { width:100%; border-collapse:collapse; background:rgba(255,255,255,.4); font-size:13px; line-height:1.5; }
.city-copy th,.city-copy td { min-width:125px; padding:11px 12px; border:1px solid var(--city-line); text-align:left; vertical-align:top; }
.city-copy th { background:var(--city-paper-2); color:var(--city-ink); font-weight:600; }
.city-table-scroll { overflow-x:auto; margin:20px 0; }
.city-editorial-note { padding:13px 16px; border-left:2px solid var(--city-gold); background:var(--city-paper-2); color:var(--city-stone); font-size:13px; }
.city-flow { position:relative; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; padding:0; list-style:none; counter-reset:flow; }
.city-flow li { position:relative; display:flex; min-height:114px; align-items:flex-start; gap:13px; margin:0; padding:17px; border:1px solid var(--city-line); border-radius:10px; background:rgba(255,255,255,.42); }
.city-flow li:not(:nth-child(4n)):not(:last-child)::after { content:"→"; position:absolute; z-index:1; right:-13px; top:40%; color:var(--city-bronze); font-size:18px; }
.city-flow li:nth-child(4)::after { content:"↓"; position:absolute; z-index:1; right:45%; bottom:-19px; color:var(--city-bronze); font-size:18px; }
.city-flow li span { color:var(--city-bronze); font-family:"Fraunces",Georgia,serif; font-size:25px; line-height:1; }
.city-flow li strong { max-width:190px; font-weight:500; line-height:1.4; }
.city-classes-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.city-class-card { padding:23px; border:1px solid var(--city-line); border-radius:12px; background:rgba(255,255,255,.45); }
.city-class-top { display:flex; justify-content:space-between; gap:12px; margin-bottom:17px; color:var(--city-bronze); font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; }
.city-class-card h3 { margin:0 0 10px; font-size:28px; }
.city-class-card p { margin:6px 0 16px; color:var(--city-stone); font-size:13px; }
.city-class-place { min-height:1.5em; }
.city-class-card .city-button { margin-top:4px; }
.city-faq details { border-top:1px solid var(--city-line); }
.city-faq details:last-child { border-bottom:1px solid var(--city-line); }
.city-faq summary { position:relative; padding:17px 35px 17px 0; cursor:pointer; font-weight:500; list-style:none; }
.city-faq summary::-webkit-details-marker { display:none; }
.city-faq summary:after { content:"+"; position:absolute; right:4px; top:13px; color:var(--city-bronze); font-size:22px; }
.city-faq details[open] summary:after { content:"−"; }
.city-faq details > div { padding:0 0 16px; color:var(--city-stone); }
.city-faq details > div p { margin:0 0 9px; }
.city-release-section { background:rgba(255,255,255,.18); }
.city-release-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.city-release-card { min-width:0; padding:clamp(22px,3vw,31px); border:1px solid var(--city-line); border-radius:12px; background:var(--city-paper); }
.city-release-card h3 { margin:0 0 15px; font-size:clamp(26px,2.7vw,34px); line-height:1.14; }
.city-release-meta { margin:0 0 12px; color:var(--city-bronze); font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; }
.city-release-deck { margin:0 0 18px; color:var(--city-stone); font-size:14px; line-height:1.65; }
.city-release-text { border-top:1px solid var(--city-line); }
.city-release-text summary { padding:14px 24px 14px 0; color:var(--city-bronze); font-size:13px; font-weight:600; cursor:pointer; }
.city-release-text summary:focus-visible { outline:3px solid var(--city-gold); }
.city-release-text > div { padding:0 0 12px; color:#403b35; font-size:13px; line-height:1.65; }
.city-release-text p { margin:0 0 12px; }
.city-release-actions { display:flex; flex-wrap:wrap; gap:9px; margin-top:17px; }
.city-release-actions a { display:inline-flex; align-items:center; gap:8px; padding:11px 13px; border:1px solid var(--city-bronze); border-radius:7px; color:var(--city-bronze); font-size:12px; font-weight:500; line-height:1.35; text-decoration:none; }
.city-release-actions a:hover { background:var(--city-bronze); color:var(--city-paper); }
.city-source-section { background:var(--city-paper-2); }
.city-source-section > p { color:var(--city-stone); }
.city-source-section ul { columns:2; column-gap:40px; }
.city-source-section li { break-inside:avoid; padding-bottom:7px; font-size:13px; }
.city-related { display:grid; grid-template-columns:minmax(240px,.8fr) minmax(0,1.2fr); gap:35px; border-bottom:0; }
.city-related h2 { max-width:420px; }
.city-related-links { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.city-related-links a { display:flex; justify-content:space-between; gap:10px; padding:14px 15px; border:1px solid var(--city-line); border-radius:9px; text-decoration:none; font-size:13px; }
.city-related-links a:hover,.city-directory-card:hover { background:rgba(255,255,255,.62); }
.city-directory-hero .city-hero-inner { grid-template-columns:minmax(0,1.1fr) minmax(250px,.7fr); }
.city-directory-stat { display:flex; flex-wrap:wrap; gap:8px; align-items:baseline; color:rgba(246,243,233,.68); font-size:14px; }
.city-directory-stat strong { color:var(--city-gold); font-family:"Fraunces",Georgia,serif; font-size:30px; font-weight:300; }
.city-directory-aside { padding:23px; border:1px solid rgba(196,166,124,.28); border-radius:12px; background:rgba(196,166,124,.08); }
.city-directory-aside > span { color:var(--city-gold); font-size:10px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; }
.city-directory-aside p { margin:10px 0 18px; color:rgba(246,243,233,.8); font-family:"Fraunces",Georgia,serif; font-size:23px; line-height:1.32; }
.city-directory-aside a { color:var(--city-paper); font-size:13px; }
.city-directory-intro { padding:24px clamp(12px,4vw,48px); border-bottom:1px solid var(--city-line); color:var(--city-stone); }
.city-directory-intro p { margin:0; max-width:950px; }
.city-directory-intro .city-directory-press { margin-top:14px; }
.city-directory-press a { color:var(--city-bronze); font-weight:600; }

.city-schedule-chart { padding:clamp(48px,6vw,74px) clamp(12px,4vw,48px); border-bottom:1px solid var(--city-line); }
.city-month-bars { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; align-items:end; min-height:190px; padding:20px 20px 0; border:1px solid var(--city-line); border-radius:12px 12px 0 0; background:rgba(255,255,255,.4); }
.city-month-column { display:grid; grid-template-rows:auto 1fr auto; gap:9px; justify-items:center; height:160px; text-align:center; }
.city-month-column strong { color:var(--city-bronze); font-family:"Fraunces",Georgia,serif; font-size:21px; font-weight:300; }
.city-month-bar { align-self:end; width:min(62px,78%); height:var(--bar-height); min-height:12px; border-radius:8px 8px 0 0; background:linear-gradient(180deg,var(--city-gold),var(--city-bronze)); }
.city-month-label { color:var(--city-stone); font-size:12px; }
.city-schedule-table { width:100%; border-collapse:collapse; background:rgba(255,255,255,.4); font-size:13px; }
.city-schedule-table caption { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.city-schedule-table th,.city-schedule-table td { padding:9px 12px; border:1px solid var(--city-line); text-align:left; }
.city-schedule-table th { background:var(--city-paper-2); }
.city-data-source-note { margin:18px 0 0; color:var(--city-stone); font-size:13px; }

.city-directory-group { padding:clamp(44px,6vw,72px) clamp(12px,4vw,48px); border-bottom:1px solid var(--city-line); }
.city-directory-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.city-directory-card { position:relative; display:flex; min-height:230px; flex-direction:column; padding:20px; border:1px solid var(--city-line); border-radius:11px; background:rgba(255,255,255,.38); text-decoration:none; transition:background .18s ease,transform .18s ease; }
.city-directory-card:hover { transform:translateY(-2px); }
.city-directory-card > span { color:var(--city-bronze); font-size:10px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; }
.city-directory-card h3 { margin:12px 0 6px; font-size:27px; }
.city-directory-card p { margin:0 0 13px; color:var(--city-stone); font-size:13px; line-height:1.5; }
.city-directory-card small { margin-top:auto; padding-right:20px; color:#746b61; font-size:11px; line-height:1.5; }
.city-directory-card b { position:absolute; right:18px; bottom:18px; color:var(--city-bronze); font-size:17px; font-weight:400; }
.city-directory-notes { margin:45px clamp(12px,4vw,48px) 0; padding:22px 24px; border-left:2px solid var(--city-gold); background:var(--city-paper-2); color:var(--city-stone); }
.city-directory-notes p { margin:0; }
.city-page code { padding:2px 5px; border-radius:4px; background:var(--city-paper-2); font-size:.86em; }

@media (max-width:850px) {
  .city-hero-inner,.city-overview,.city-article-section,.city-related { grid-template-columns:1fr; }
  .city-map-wrap { max-width:640px; }
  .city-overview { padding-inline:12px; }
  .city-overview-copy { margin-top:0; }
  .city-data-grid,.city-directory-grid,.city-release-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:560px) {
  .city-page { width:calc(100% - 24px); padding-top:14px; }
  .city-hero { border-radius:12px; }
  .city-hero-inner { padding:25px 19px; gap:24px; }
  .city-page h1 { font-size:clamp(38px,12vw,56px); }
  .city-page h2 { font-size:34px; }
  .city-data-grid,.city-flow,.city-classes-grid,.city-directory-grid,.city-related-links,.city-release-grid { grid-template-columns:1fr; }
  .city-data-card { min-height:148px; }
  .city-data-section,.city-article-section,.city-method-section,.city-class-section,.city-release-section,.city-source-section,.city-related,.city-schedule-chart,.city-directory-group { padding:43px 8px; }
  .city-flow li { min-height:82px; }
  .city-flow li::after { display:none; }
  .city-month-bars { gap:4px; min-height:160px; padding-inline:7px; }
  .city-month-column { height:132px; }
  .city-month-label { font-size:10px; }
  .city-source-section ul { columns:1; }
  .city-related { padding-top:43px; }
  .city-class-card .city-button { width:100%; }
  .city-release-actions a { flex:1 1 auto; justify-content:center; }
  .city-directory-notes { margin:25px 8px 0; }
}
