/* Mandate compositions share the portal's semantic components and native forms. */
.template-preview {
    background: #eef1f5;
    color: #23344a;
    border-bottom: 1px solid #d3dbe3;
    font-size: 12px;
}
.template-preview .container {
    display: flex;
    align-items: center;
    gap: 24px;
    min-height: 42px;
    padding-block: 10px;
    flex-wrap: wrap;
}
.template-preview strong {
    margin-left: 8px;
}
.template-preview a {
    font-weight: 650;
    text-underline-offset: 4px;
}
.template-preview a:first-of-type {
    margin-left: auto;
}
.template-catalog {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px;
    margin-block: 36px;
}
.template-card {
    border: 1px solid #d8dfe5;
    border-radius: 18px;
    overflow: hidden;
    background: #fff;
    color: #182f42;
}
.template-card-body {
    padding: 28px;
}
.template-card-body h2 {
    font-size: 28px;
    margin-bottom: 12px;
}
.template-card-body > p:not(.section-kicker) {
    line-height: 1.7;
    min-height: 3.4em;
    color: #536273;
}
.template-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 24px;
    min-height: 48px;
    padding: 14px 22px;
    background: var(--model-ink, #123c58);
    color: var(--model-on-ink, #fff);
    border-radius: 7px;
    font-weight: 700;
    font-size: 14px;
    text-decoration: none;
    line-height: 1.4;
}
.template-button:hover {
    filter: brightness(1.15);
}
.template-note {
    max-width: 800px;
    color: #536273;
    font-size: 14px;
    line-height: 1.7;
    margin-bottom: 40px;
}
.template-miniature {
    height: 260px;
    background: #f1f6ff;
    color: #0867cf;
    padding: 24px 32px;
    overflow: hidden;
    position: relative;
}
.mini-nav {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-bottom: 14px;
    border-bottom: 1px solid currentColor;
}
.mini-nav b {
    margin-right: auto;
    font-size: 12px;
}
.mini-nav i {
    width: 25px;
    height: 3px;
    background: currentColor;
    opacity: 0.5;
}
.mini-hero {
    padding-top: 24px;
    max-width: 75%;
}
.mini-hero span {
    font-size: 9px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    display: block;
    margin-bottom: 10px;
}
.mini-hero strong {
    font-size: 27px;
    line-height: 1.1;
    display: block;
    max-width: 280px;
}
.mini-hero > i {
    display: block;
    width: 65px;
    height: 16px;
    background: currentColor;
    border-radius: 3px;
    margin-top: 14px;
}
.mini-sections {
    display: flex;
    gap: 12px;
    margin-top: 25px;
}
.mini-sections i {
    height: 35px;
    background: currentColor;
    opacity: 0.15;
    flex: 1;
}
[data-model="vereador"] .template-miniature {
    background: #f3f3e9;
    color: #155548;
}
.template-card[data-model="vereador"] {
    --model-ink: #155548;
}
[data-model="vereador"] .mini-hero:after {
    content: "✦";
    position: absolute;
    right: 35px;
    top: 102px;
    font-size: 74px;
    color: #b3c986;
}
[data-model="deputado"] .template-miniature {
    background: #25255c;
    color: #dcf396;
}
.template-card[data-model="deputado"] {
    --model-ink: #33336b;
}
[data-model="deputado"] .mini-hero {
    max-width: 65%;
}
[data-model="deputado"] .mini-sections {
    position: absolute;
    right: 30px;
    top: 72px;
    bottom: 25px;
    width: 22%;
    flex-direction: column;
    margin: 0;
}
.mini-sections i {
    border-radius: 4px;
}
[data-model="senador"] .template-miniature {
    background: #f3efe8;
    color: #27364b;
}
.template-card[data-model="senador"] {
    --model-ink: #27364b;
}
[data-model="senador"] .mini-hero strong {
    font-family: Georgia, serif;
    font-weight: 400;
}
[data-model="senador"] .mini-nav {
    border-top: 3px solid;
    padding-top: 12px;
}
[data-model="senador"] .mini-sections i {
    border-radius: 0;
    height: 1px;
    opacity: 0.7;
}
html[data-theme="mandate"] {
    --model-ink: #155548;
    --model-on-ink: #fff;
    --model-accent: #d9e9aa;
    --model-wash: #f4f4eb;
    --model-border: #d8dfd5;
    --navy-950: var(--model-ink);
    --navy-900: var(--model-ink);
    --navy-800: var(--model-ink);
    --navy-700: var(--model-ink);
    --lime: var(--model-accent);
    --lime-dark: var(--model-ink);
    --ink: #20382f;
    --ivory: var(--model-wash);
    --paper: #fff;
    --line: var(--model-border);
    --muted: #52645b;
    --blue-100: #f2f5ef;
    --blue-200: #dce5d7;
}
html[data-template="deputado"] {
    --model-ink: #303061;
    --model-accent: #d8ec95;
    --model-wash: #f5f5fa;
    --model-border: #dcdce8;
    --ink: #24253e;
    --muted: #5c5d73;
    --blue-100: #eeeef7;
    --blue-200: #ddddeb;
}
html[data-template="senador"] {
    --model-ink: #25364a;
    --model-accent: #e9d8b9;
    --model-wash: #f6f3ed;
    --model-border: #d9d3c8;
    --ink: #25364a;
    --muted: #62615f;
    --blue-100: #efebe3;
    --blue-200: #ded8cc;
}
[data-theme="mandate"] .container {
    max-width: 1240px;
}
[data-theme="mandate"] .utility-bar {
    background: var(--model-ink);
    color: #fff;
}
[data-theme="mandate"] .site-header {
    background: #fff;
    border-bottom: 1px solid var(--model-border);
}
[data-theme="mandate"] .header-inner {
    min-height: 94px;
    gap: 24px;
}
[data-theme="mandate"] .brand-copy strong {
    color: var(--model-ink);
}
[data-theme="mandate"] .brand-copy small {
    color: var(--muted);
}
[data-theme="mandate"] .header-action {
    background: var(--model-ink);
    color: #fff;
    border-color: var(--model-ink);
    border-radius: 6px;
}
[data-theme="mandate"] .desktop-nav {
    gap: 18px;
}
[data-theme="mandate"] .desktop-nav a {
    color: var(--model-ink);
    font-size: 13px;
}
[data-theme="mandate"] .section {
    padding-block: 76px;
}
[data-theme="mandate"] .section-kicker {
    color: var(--model-ink);
    letter-spacing: 0.12em;
}
[data-theme="mandate"] .section-heading h2 {
    font-size: clamp(26px, 3vw, 40px);
    letter-spacing: -0.035em;
}
[data-theme="mandate"] .section-heading {
    margin-bottom: 32px;
}
[data-theme="mandate"] .section-heading > a {
    color: var(--model-ink);
}
[data-theme="mandate"] .contact-section {
    background: var(--model-ink);
}
[data-theme="mandate"] .contact-section .section-kicker,
[data-theme="mandate"] .contact-section .section-heading h2 {
    color: white;
}
[data-theme="mandate"] .site-footer {
    background: var(--model-ink);
    color: #fff;
}
[data-theme="mandate"] .site-footer .brand-copy strong,
[data-theme="mandate"] .site-footer .brand-copy small {
    color: #fff;
}
[data-theme="mandate"] .public-resource-intro h1 {
    color: var(--model-ink);
    letter-spacing: -0.04em;
}
[data-theme="mandate"] .public-form button,
[data-theme="mandate"] .portal-filter button {
    background: var(--model-ink);
    color: #fff;
}
[data-theme="mandate"] .quick-services {
    background: var(--model-accent);
}
[data-theme="mandate"] .quick-services a {
    color: var(--model-ink);
}
.mandate-hero {
    padding: 70px 0 64px;
    overflow: hidden;
}
.mandate-hero-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 76px;
    align-items: center;
}
.mandate-copy {
    min-width: 0;
}
.mandate-eyebrow {
    text-transform: uppercase;
    font-size: 11px;
    font-weight: 750;
    letter-spacing: 0.16em;
    line-height: 1.7;
    margin-bottom: 26px;
}
.mandate-hero h1 {
    font-size: clamp(38px, 4.5vw, 68px);
    letter-spacing: -0.055em;
    line-height: 1.04;
    font-weight: 650;
    margin-bottom: 26px;
    max-width: 740px;
    overflow-wrap: anywhere;
}
.mandate-lead {
    max-width: 530px;
    font-size: 17px;
    line-height: 1.8;
    color: var(--muted);
    margin-bottom: 30px;
}
.mandate-actions {
    display: flex;
    align-items: center;
    gap: 24px;
    flex-wrap: wrap;
}
.mandate-text-link {
    font-weight: 650;
    font-size: 13px;
    text-underline-offset: 5px;
    line-height: 1.7;
}
.mandate-signature {
    font-size: 12px;
    font-weight: 750;
    margin: 38px 0 0;
}
.mandate-signature span {
    font-weight: 450;
}
.council-hero {
    background: var(--model-wash);
}
.council-board {
    background: var(--model-ink);
    color: #fff;
    padding: 32px;
    border-radius: 22px;
    position: relative;
    isolation: isolate;
    overflow: hidden;
}
.board-tag {
    display: inline-block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    border: 1px solid #91b2a5;
    border-radius: 30px;
    padding: 8px 12px;
    margin-bottom: 24px;
}
.council-board h2 {
    font-size: 34px;
    line-height: 1.15;
    font-weight: 500;
    letter-spacing: -0.035em;
    max-width: 330px;
    margin-bottom: 22px;
}
.council-streets {
    height: 86px;
    position: relative;
    overflow: hidden;
    margin: 0 -32px 24px;
}
.council-streets i {
    position: absolute;
    display: block;
    transform: rotate(-27deg);
    height: 16px;
    background: #426c58;
    width: 120%;
    left: -10%;
    top: 40px;
}
.council-streets i:nth-child(2) {
    transform: rotate(50deg);
    top: 0;
    left: 12%;
}
.council-streets i:nth-child(3) {
    transform: rotate(90deg);
    left: -25%;
}
.council-streets b {
    position: absolute;
    left: 56%;
    top: -3px;
    color: var(--model-accent);
    font-size: 72px;
    line-height: 1;
}
.council-links {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
}
.council-links a {
    font-size: 12px;
    line-height: 1.6;
    text-decoration: none;
    border-top: 1px solid #729483;
    padding-top: 16px;
}
.council-links span {
    display: block;
    color: #c5d7cd;
    margin-bottom: 6px;
}
.council-links strong {
    font-size: 13px;
}
.regional-hero {
    background: #252554;
    color: #fff;
    padding-top: 28px;
}
.regional-topline {
    display: flex;
    justify-content: space-between;
    border-bottom: 1px solid #65658d;
    padding-bottom: 20px;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    margin-bottom: 54px;
    gap: 20px;
}
.regional-hero h1 {
    font-weight: 750;
}
.regional-hero .mandate-lead {
    color: #d2d2e3;
}
.regional-hero .template-button {
    background: var(--model-accent);
    color: #252554;
}
.regional-board {
    border: 1px solid #737393;
    border-radius: 12px;
    padding: 28px;
    background: #303061;
}
.regional-board > .mandate-eyebrow {
    color: #d8ec95;
    margin-bottom: 14px;
}
.regional-board a {
    display: flex;
    justify-content: space-between;
    align-items: center;
    text-decoration: none;
    gap: 24px;
    padding: 23px 0;
    border-bottom: 1px solid #626287;
    font-size: 21px;
    font-weight: 600;
}
.regional-board a:last-child {
    border: 0;
    padding-bottom: 0;
}
.regional-board small {
    display: block;
    font-size: 12px;
    color: #d2d2e3;
    margin-top: 7px;
    font-weight: 400;
}
.regional-board b {
    color: #d8ec95;
    font-size: 28px;
}
.regional-signature {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    border-top: 1px solid #65658d;
    padding-top: 24px;
    margin-top: 54px;
    font-size: 12px;
}
.regional-signature span {
    color: #d2d2e3;
}
.senate-hero {
    background: var(--model-wash);
    padding-top: 30px;
}
.senate-masthead {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    border-top: 3px solid var(--model-ink);
    border-bottom: 1px solid #bcb7ac;
    padding: 15px 0;
    text-transform: uppercase;
    font-size: 10px;
    letter-spacing: 0.18em;
    margin-bottom: 50px;
}
.senate-hero .mandate-hero-grid {
    grid-template-columns: 1.45fr 1fr;
    gap: 80px;
}
.senate-hero h1 {
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(40px, 4.6vw, 70px);
    font-weight: 400;
    letter-spacing: -0.045em;
    line-height: 1.08;
}
.senate-index {
    border-left: 1px solid #bcb7ac;
    padding-left: 36px;
}
.senate-index > .mandate-eyebrow {
    color: #775b35;
    margin-bottom: 8px;
}
.senate-index a {
    display: block;
    position: relative;
    text-decoration: none;
    border-bottom: 1px solid #d0c9bc;
    padding: 22px 32px 22px 0;
}
.senate-index a:last-child {
    border: 0;
}
.senate-index a span {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: 9px;
    color: #665c4c;
}
.senate-index strong {
    font-family: Georgia, serif;
    font-weight: 400;
    font-size: 23px;
    line-height: 1.25;
    display: block;
}
.senate-index b {
    position: absolute;
    right: 0;
    top: 44px;
    font-size: 24px;
    font-weight: 400;
}
[data-template="senador"] .section-heading h2,
[data-template="senador"] .public-resource-intro h1 {
    font-family: Georgia, serif;
    font-weight: 400;
}
[data-template="senador"] .update-card,
[data-template="senador"] .listening-card,
[data-template="senador"] .agenda-card {
    border-radius: 2px;
}
[data-template="senador"] .template-button {
    border-radius: 2px;
}
@media (min-width: 1101px) and (max-width: 1300px) {
    [data-theme="mandate"] .desktop-nav {
        gap: 12px;
    }
    [data-theme="mandate"] .brand-copy strong {
        font-size: 16px;
    }
    [data-theme="mandate"] .header-inner {
        gap: 16px;
    }
}
@media (max-width: 1100px) {
    [data-theme="mandate"] .desktop-nav,
    [data-theme="mandate"] .header-action {
        display: none;
    }
    [data-theme="mandate"] .mobile-nav {
        display: block;
        margin-left: auto;
    }
    .mandate-hero-grid,
    .senate-hero .mandate-hero-grid {
        gap: 36px;
    }
    .mandate-hero h1 {
        font-size: 48px;
    }
    .council-board {
        padding: 24px;
    }
    .council-board h2 {
        font-size: 29px;
    }
    .regional-board {
        padding: 22px;
    }
    .regional-board a {
        font-size: 19px;
    }
    .senate-index {
        padding-left: 24px;
    }
    .template-miniature {
        padding-inline: 24px;
    }
    .mini-hero strong {
        font-size: 24px;
    }
}
@media (max-width: 767px) {
    .template-catalog {
        grid-template-columns: 1fr;
        gap: 24px;
    }
    .template-card-body {
        padding: 24px;
    }
    .template-preview .container {
        gap: 10px 18px;
        font-size: 11px;
    }
    .template-preview a:first-of-type {
        margin-left: 0;
    }
    .template-preview .container > span {
        flex-basis: 100%;
    }
    [data-theme="mandate"] .container {
        width: calc(100% - 40px);
    }
    [data-theme="mandate"] .header-inner {
        min-height: 82px;
    }
    [data-theme="mandate"] .section {
        padding-block: 52px;
    }
    .mandate-hero {
        padding-block: 36px 42px;
    }
    .mandate-hero-grid,
    .senate-hero .mandate-hero-grid {
        grid-template-columns: 1fr;
        gap: 36px;
    }
    .mandate-hero h1 {
        font-size: clamp(36px, 8.5vw, 54px);
        max-width: 560px;
    }
    .mandate-eyebrow {
        margin-bottom: 20px;
    }
    .mandate-lead {
        font-size: 15px;
        margin-bottom: 24px;
    }
    .mandate-actions {
        gap: 18px;
    }
    .mandate-signature {
        margin-top: 28px;
    }
    .council-board {
        border-radius: 16px;
        padding: 26px;
    }
    .council-board h2 {
        font-size: 30px;
    }
    .council-streets {
        height: 65px;
        margin-bottom: 18px;
    }
    .council-links {
        gap: 16px;
    }
    .regional-topline {
        margin-bottom: 30px;
        font-size: 9px;
        letter-spacing: 0.08em;
    }
    .regional-signature {
        margin-top: 32px;
        flex-direction: column;
        gap: 8px;
    }
    .regional-board {
        padding: 24px;
    }
    .regional-board a {
        padding: 20px 0;
    }
    .senate-masthead {
        font-size: 9px;
        letter-spacing: 0.08em;
        margin-bottom: 30px;
    }
    .senate-index {
        border-left: 0;
        border-top: 1px solid #bcb7ac;
        padding: 24px 0 0;
    }
    .senate-index strong {
        font-size: 22px;
    }
    .senate-index a {
        padding-block: 18px;
    }
}
@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }
}
/* Respect the shared accessibility control across all compositions. */
html[data-accessibility-contrast="high"] .mandate-hero,
html[data-accessibility-contrast="high"] .council-board,
html[data-accessibility-contrast="high"] .regional-board,
html[data-accessibility-contrast="high"] .template-preview,
html[data-accessibility-contrast="high"] .template-card,
html[data-accessibility-contrast="high"] .template-miniature {
    background: #000;
    color: #fff;
}
html[data-accessibility-contrast="high"] .mandate-lead,
html[data-accessibility-contrast="high"] .regional-board small,
html[data-accessibility-contrast="high"] .section-kicker {
    color: #fff;
}
/* Translate each composition into the shared components' semantic tokens. */
[data-theme="mandate"] body {
    --tenant-primary: var(--model-ink);
    --tenant-primary-text: var(--model-ink);
    --tenant-primary-foreground: #fff;
    --tenant-secondary: var(--model-wash);
    --tenant-secondary-foreground: var(--model-ink);
    --tenant-accent: var(--model-accent);
    --tenant-accent-foreground: var(--model-ink);
    --tenant-brand-deep: var(--model-ink);
    --tenant-surface: #fff;
    --tenant-surface-subtle: var(--model-wash);
    --tenant-surface-info: var(--model-wash);
    --tenant-border: var(--model-border);
    --tenant-focus: var(--model-ink);
    --primary: var(--model-ink);
    --primary-foreground: #fff;
    --soft: var(--model-wash);
}
.mandate-hero .mandate-actions {
    background: transparent;
}
[data-theme="mandate"] .service-strip {
    margin: 0 auto;
    width: min(1240px, calc(100% - 72px));
    padding-block: 28px;
}
[data-theme="mandate"] .service-grid {
    box-shadow: none;
    border-radius: 12px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
}
[data-theme="mandate"] .service-card {
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 14px;
    padding: 22px 18px;
    min-height: 128px;
}
[data-theme="mandate"] .service-card-accessibility {
    border: 0;
    background: #fff;
    color: var(--model-ink);
    text-align: left;
}
[data-theme="mandate"] .service-card strong {
    font-size: 17px;
    line-height: 1.3;
}
[data-theme="mandate"] .service-card small {
    font-size: 9px;
}
[data-theme="mandate"] .service-icon {
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: var(--model-ink);
    color: white;
}
[data-theme="mandate"] .listening-grid {
    display: grid;
    grid-template-columns: 1.1fr 1fr;
    gap: 24px;
}
[data-theme="mandate"] .listening-card {
    padding: 32px;
    border: 1px solid var(--model-border);
    background: #fff;
    border-radius: 14px;
    min-width: 0;
}
[data-theme="mandate"] .listening-action {
    background: var(--model-wash);
}
[data-theme="mandate"] .listening-card-top {
    align-items: center;
    font-size: 10px;
    flex-wrap: wrap;
}
[data-theme="mandate"] .listening-card a {
    font-size: 14px;
    font-weight: 700;
    text-underline-offset: 5px;
}
[data-theme="mandate"] .listening-steps {
    display: grid;
    gap: 20px;
    padding-left: 22px;
    margin: 24px 0;
}
[data-theme="mandate"] .listening-steps li {
    padding-left: 6px;
}
[data-theme="mandate"] .territory-summary,
[data-theme="mandate"] .territory-localities article {
    background: var(--model-ink);
}
[data-theme="mandate"] .territory-summary span {
    color: #e0e9e5;
}
[data-theme="mandate"] .updates,
[data-theme="mandate"] .overview {
    background: #fff;
}
[data-theme="mandate"] .update-card {
    box-shadow: none;
    border: 1px solid var(--model-border);
}
[data-template="senador"] .listening-card {
    border-radius: 2px;
}
@media (max-width: 1100px) {
    [data-theme="mandate"] .service-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    [data-theme="mandate"] .service-card:nth-child(-n + 2) {
        border-bottom: 1px solid var(--model-border);
    }
}
@media (max-width: 767px) {
    [data-theme="mandate"] .service-strip {
        width: calc(100% - 40px);
        padding-block: 20px;
    }
    [data-theme="mandate"] .listening-grid {
        grid-template-columns: 1fr;
    }
    [data-theme="mandate"] .listening-card {
        padding: 24px;
    }
    [data-theme="mandate"] .service-card {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        padding: 20px 16px;
        gap: 12px;
    }
    [data-theme="mandate"] .service-card strong {
        font-size: 15px;
    }
    [data-theme="mandate"] .service-card em {
        font-size: 11px;
    }
    [data-theme="mandate"] .service-card small {
        display: none;
    }
}
