/* One page shell for home, articles, policies and success pages. */
html { min-height: 100%; }
body.ts-site-layout { min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; padding-bottom: 0; }
.ts-site-layout > main { flex: 1 0 auto; width: 100%; }
.ts-site-layout > :is(header, footer) { flex-shrink: 0; width: 100%; }
.ts-site-layout > footer { margin-top: auto; padding: 0; }
.ts-site-layout > footer > div { padding-block: 48px 28px; }
.site-header > div:nth-of-type(2) { width: 100%; max-width: 1344px; margin-inline: auto; }
.site-header > div:nth-of-type(2) > div { gap: 24px; }
.site-header nav[aria-label="Main Navigation"] { flex: 1; justify-content: center; gap: clamp(14px, 1.6vw, 28px); }
.site-header .site-nav-link { white-space: nowrap; font-size: 12px; letter-spacing: .075em; }
.site-header .nzc-btn { white-space: nowrap; padding-inline: 18px; }
@media (min-width: 1024px) and (max-width: 1199px) {
    .site-header .site-nav-link { font-size: 10px; letter-spacing: .035em; }
    .site-header > div:nth-of-type(2) > div { gap: 16px; }
    .site-header .nzc-btn { font-size: 10px; padding-inline: 12px; }
}
/* A badge's foreground always contrasts with its solid pink background. */
.ts-site-layout .nzc-badge { background: var(--primary); color: var(--on-primary); }
.ts-site-layout .nzc-badge i { color: inherit; }
.ts-site-layout .nzc-btn { background: var(--primary); color: var(--on-primary); border: 1px solid var(--primary); }
.ts-site-layout .nzc-btn:is(:hover, :focus-visible, :active) { background: var(--primary-hover); color: var(--on-primary); border-color: var(--primary-hover); }
.ts-site-layout .nzc-btn-alt { background: transparent; color: var(--text); border-color: var(--border); }
.ts-site-layout .nzc-btn-alt:is(:hover, :focus-visible, :active) { background: var(--surface-alt); color: var(--primary-hover); border-color: var(--primary); }
.ts-site-layout :is(.nzc-btn, .nzc-btn-alt) :is(span, i) { color: inherit; }
.ts-site-layout :is(a, button):focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.nzc-tariff-block .tariff-card { padding-top: 64px; }
.nzc-tariff-block .featured-plan { border: 2px solid var(--primary); }
.tariff-popular-label { position: absolute; top: 18px; left: 32px; display: inline-flex; width: max-content; max-width: calc(100% - 64px); padding: 5px 12px; margin: 0; border-radius: 2px; background: var(--primary); color: var(--on-primary); font-size: 10px; line-height: 1.5; font-weight: 800; text-transform: uppercase; letter-spacing: .12em; }
.nzc-tariff-block .tariff-card > div { flex: 1; }
.nzc-tariff-block .tariff-card button { margin-top: 20px; min-height: 46px; }
.nzc-tariff-block .tariff-card h3 + div { flex-shrink: 0; }
.ts-hero-subscribe-row { display: flex; align-items: stretch; gap: 10px; }
.ts-hero-subscribe-row input { min-width: 0; min-height: 48px; width: 100%; }
.ts-subscribe-button { min-height: 48px; }
.ts-city-page .ts-briefing-section > div { max-width: 1056px; margin-inline: auto; }
.ts-city-page .ts-content-body { max-width: none; width: 100%; }
.ts-city-page #comments-section { padding-block: clamp(36px, 5vw, 64px); }
.ts-observations-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, .82fr); gap: 28px; align-items: start; }
.ts-observations-column { min-width: 0; }
.ts-city-page .ts-comment { padding: 22px; margin-bottom: 0; min-height: 0; }
.ts-city-page .ts-comment-main { min-height: 0; }
.ts-city-page .ts-comment-watermark { font-size: 64px; }
.ts-city-page .ts-comment-actions { flex-wrap: wrap; gap: 10px; }
.ts-city-page #comments-section .sticky { position: static; padding: 24px; }
.ts-city-page #js-comment-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ts-city-page #js-comment-form > :nth-child(n+3) { grid-column: 1 / -1; }
.ts-city-page #js-comment-form textarea { min-height: 96px; }
.ts-site-layout :is(.ts-btn-like, .ts-btn-reply) { padding: 7px 9px; border-radius: 3px; transition: color .2s ease, background .2s ease; }
.ts-site-layout :is(.ts-btn-like, .ts-btn-reply):is(:hover, :focus-visible, :active) { background: var(--surface-alt); color: var(--primary-hover); }
.ts-site-layout main [id] { scroll-margin-top: 132px; }
.ts-contact-page { padding-block: clamp(40px, 5vw, 72px); }
.ts-contact-page .nzc-card { flex-direction: row; align-items: flex-start; gap: 16px; padding: 20px; }
.ts-contact-page .ts-contact-grid { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 32px; align-items: start; }
.ts-contact-page .ts-contact-grid > div { grid-column: auto; min-width: 0; }
.ts-contact-page .ts-contact-grid > div:last-child > div { padding: 28px; }
@media (max-width: 767px) {
    .ts-hero-subscribe-row { flex-direction: column; gap: 12px; }
    .ts-hero-subscribe-row input { flex: none; border-bottom: 1px solid var(--border); }
    .ts-hero-subscribe-row .ts-subscribe-button { width: 100%; padding-block: 12px; }
    .ts-observations-grid { grid-template-columns: minmax(0, 1fr); gap: 24px; }
    .ts-city-page .ts-comment { padding: 18px; }
    .ts-city-page #js-comment-form { grid-template-columns: 1fr; }
    .ts-city-page #js-comment-form > * { grid-column: 1; }
}
@media (max-width: 1023px) {
    .ts-contact-page .ts-contact-grid { grid-template-columns: minmax(0, 1fr); gap: 28px; }
    .ts-contact-page .ts-contact-grid > div:last-child > div { padding: 22px; }
    .site-header #site-mobile-nav .nzc-btn { width: auto; min-height: 44px; padding: 10px 22px; }
}

/* Form fields keep one border on hover and focus. */
.ts-site-layout :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]), textarea, select):is(:hover, :focus, :focus-visible) {
    outline: none !important;
    outline-offset: 0;
    box-shadow: none !important;
    --tw-ring-shadow: 0 0 #0000;
    --tw-ring-offset-shadow: 0 0 #0000;
    border-color: var(--primary) !important;
}
