
:root { color-scheme: light; --ink: oklch(0.2657 0.0351 176.97); --muted: oklch(0.32 0.025 163.69); --paper: oklch(0.9665 0.0108 95.16); --card: oklch(0.9942 0.0069 88.64); --lime: oklch(0.8588 0.1624 117.30); --line: oklch(0.5874 0.0232 161.02); --red: oklch(0.4280 0.1236 23.95); --green: oklch(0.4033 0.0739 165.70); }
* { box-sizing: border-box; }
html { font-size: 100%; scroll-behavior: smooth; }
body { margin: 0; min-height: 100vh; color: var(--ink); background: var(--paper); font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-size: 1rem; line-height: 1.6; -webkit-font-smoothing: antialiased; text-rendering: optimizeSpeed; }
h1, h2, h3 { text-wrap: balance; }
p { max-width: 80ch; line-height: 1.6; text-wrap: pretty; }
a { color: inherit; overflow-wrap: break-word; }
.skip-link { position: absolute; z-index: 10; inset-block-start: 1rem; inset-inline-start: 1rem; transform: translateY(-200%); padding: .75rem 1rem; border-radius: .25rem; background: var(--ink); color: oklch(1 0 0); font-weight: 700; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -.0625rem; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.skip-link:focus-visible { transform: translateY(0); }
:where(a, button, input, summary):focus-visible { outline: .1875rem solid var(--ink); outline-offset: .25rem; box-shadow: 0 0 0 .375rem var(--lime); }
.site-header { display: flex; align-items: center; justify-content: space-between; gap: 2rem; max-width: 73.75rem; margin: auto; padding: 2rem 1.5rem; }
.brand { display: inline-flex; align-items: center; gap: .8rem; text-decoration: none; }
.brand-mark { display: grid; place-items: center; width: 2.8rem; height: 2.8rem; background: var(--ink); color: var(--lime); border-radius: 50%; font: 700 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; letter-spacing: .08em; }
.brand strong, .brand small { display: block; }.brand strong { font: 800 1.1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; letter-spacing: .13em; }.brand small { margin-top: .15rem; color: var(--muted); font: 600 .9375rem/1.4 system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .06em; }
.header-note { color: var(--muted); font: 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .08em; }
.header-side { display: flex; align-items: center; gap: 1.25rem; }
.account-nav ul { display: flex; align-items: center; gap: 1.25rem; margin: 0; padding: 0; list-style: none; }
.account-cta { color: var(--green); font: 700 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; white-space: nowrap; }
.account-cta:hover { color: var(--ink); }
.account-nav a { display: inline-flex; align-items: center; gap: .4rem; text-decoration: underline; text-underline-offset: .2em; transition: color .15s ease; }.account-nav .logout { white-space: nowrap; color: var(--muted); }.account-nav .logout:hover { color: var(--green); }.account-nav form { margin: 0; }.account-nav button.linklike { display: inline-flex; align-items: center; gap: .4rem; padding: 0; border: 0; background: none; color: var(--muted); font: inherit; text-decoration: underline; text-underline-offset: .2em; white-space: nowrap; cursor: pointer; transition: color .15s ease; }.account-nav button.linklike:hover { color: var(--green); }.icone { flex-shrink: 0; vertical-align: -.125rem; }.icone.alerta { color: var(--red); }.icone-externa { margin-left: .3rem; }.icone-antes { margin-right: .4rem; }
main { max-width: 73.75rem; margin: auto; padding: 2rem 1.5rem 3rem; }.auth-shell { max-width: 32.5rem; margin: 4vh auto; }.dashboard-shell { max-width: 73.75rem; margin: 1vh auto; }.dashboard-shell .form { max-width: 44rem; }.dashboard-shell .review-list { max-width: 44rem; }
.panel { background: color-mix(in oklch, var(--card) 92%, transparent); border: .0625rem solid var(--line); box-shadow: 0 1.25rem 3.75rem oklch(0.3123 0.0443 164.44 / 0.07); padding: clamp(1.5rem, 4vw, 3rem); border-radius: .5rem; }
.kicker { color: var(--green); font: 700 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .12em; }.title { margin: .6rem 0 .7rem; font-size: clamp(2rem, 5vw, 3.7rem); line-height: .98; letter-spacing: 0; }.intro { color: var(--muted); line-height: 1.6; max-width: 42rem; }.page-title { margin: .6rem 0 .7rem; font-size: clamp(2rem, 5vw, 3.7rem); line-height: .98; }.page-summary { margin: .75rem 0 1.5rem; color: var(--muted); line-height: 1.6; max-width: 72ch; }.page-summary + .page-summary { margin-top: 0; }
.form { display: grid; gap: 1rem; margin-top: 2rem; }.form h2 { margin: .5rem 0 .25rem; font-size: 1.25rem; }.field { display: grid; gap: .4rem; font: 700 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }.field span { color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }.field input { width: 100%; border: .0625rem solid var(--line); border-radius: .25rem; padding: .85rem .9rem; background: oklch(1 0 0); color: var(--ink); font-size: 1rem; }.field input:focus { outline: .1875rem solid oklch(0.8588 0.1624 117.30 / 0.3); border-color: var(--green); }.field input:user-invalid { border-color: var(--red); }.field-hint { color: var(--muted); font-size: 1rem; font-weight: 400; line-height: 1.5; }
.consent-field { display: flex; align-items: flex-start; gap: .85rem; margin: .5rem 0; padding: 1rem; border: .0625rem solid var(--line); border-radius: .375rem; background: oklch(1 0 0); cursor: pointer; }
.consent-field input[type="checkbox"] { width: auto; height: auto; margin: .15rem 0 0; cursor: pointer; accent-color: var(--green); flex: 0 0 auto; border: .0625rem solid var(--line); }
.consent-field .consent-label { color: var(--muted); line-height: 1.5; font: 400 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
.consent-field .consent-label a { color: var(--green); }
.consent-error { margin-top: .25rem; padding-left: 1.75rem; color: var(--red); font: 400 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
.actions { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: .5rem; }.button { border: 0; border-radius: .25rem; background: var(--ink); color: oklch(1 0 0); padding: .85rem 1.2rem; cursor: pointer; transition: background-color .15s ease; font: 700 .875rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; letter-spacing: .05em; text-transform: uppercase; }.button:hover { background: var(--green); }.button.secondary { background: var(--lime); color: var(--ink); }.button.secondary:hover { background: color-mix(in oklch, var(--lime) 82%, var(--ink)); }.button:active { transform: translateY(.0625rem); }.link { color: var(--green); font-size: 1rem; }.auth-switch { margin-top: 2rem; padding: 1.5rem; border: .0625rem solid var(--line); border-radius: .5rem; background: color-mix(in oklch, var(--lime) 16%, var(--card)); }.auth-switch-title { margin: 0 0 .5rem; font-size: 1.15rem; line-height: 1.2; }.auth-switch-text { margin: 0 0 1.25rem; color: var(--muted); font-size: .95rem; line-height: 1.55; }.notice { margin: .5rem 0 1.25rem; border-left: .25rem solid var(--red); padding: .75rem 1rem; background: oklch(0.9454 0.0188 38.15); color: var(--red); font-size: 1rem; }.notice.success { border-color: var(--green); background: oklch(0.9489 0.0182 155.81); color: var(--green); }.notice.aviso { border-color: var(--lime); background: var(--card); color: var(--ink); }.notice p { margin: 0; }.notice ul { display: grid; gap: .3rem; margin: .4rem 0 0; padding-left: 1.25rem; }
.notice:focus-visible { outline: .1875rem solid var(--ink); outline-offset: .25rem; box-shadow: 0 0 0 .375rem var(--lime); }
@media (forced-colors: active) { .notice { border-color: CanvasText; } .pagination-item.is-current { forced-color-adjust: none; background: Highlight; color: HighlightText; border-color: Highlight; } .skip-link { background: Canvas; color: CanvasText; } }

.dashboard-head { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2rem; }.dashboard-head h1 { margin: .5rem 0; font-size: clamp(2rem, 6vw, 4.2rem); line-height: .9; }.dashboard-profile { display: flex; flex-wrap: wrap; gap: 1.5rem; margin: 1.25rem 0 0; padding: 0; }.dashboard-profile > div { display: flex; align-items: baseline; gap: .5rem; }.dashboard-profile dt { color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .07em; }.dashboard-profile dd { margin: 0; font-weight: 700; color: var(--green); }.logout { font-size: 1rem; color: var(--muted); }button.logout { padding: 0; border: 0; background: none; font: inherit; font-size: 1rem; color: var(--muted); cursor: pointer; text-decoration: underline; text-underline-offset: .2em; transition: color .15s ease; }button.logout:hover { color: var(--green); }.metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 1rem; margin-bottom: 1rem; }.metric { padding: 1.2rem; background: var(--ink); color: oklch(1 0 0); border-radius: .375rem; }.metric strong { display: block; margin-top: .25rem; color: var(--lime); font-size: 2rem; }.metric span { color: oklch(0.9175 0.0249 137.81); font-size: .875rem; text-transform: uppercase; letter-spacing: .08em; }.section { margin-top: 2rem; }.section h2 { margin: 0 0 1rem; font-size: 1.4rem; }.table-wrap { overflow-x: auto; overscroll-behavior-inline: contain; border: .0625rem solid var(--line); border-radius: .375rem; background: linear-gradient(to right, var(--card) 50%, transparent) 0 0 / 2.5rem 100% no-repeat local, linear-gradient(to left, var(--card) 50%, transparent) 100% 0 / 2.5rem 100% no-repeat local, radial-gradient(farthest-side at 0 50%, color-mix(in oklch, var(--ink) 20%, transparent), transparent) 0 0 / .875rem 100% no-repeat scroll, radial-gradient(farthest-side at 100% 50%, color-mix(in oklch, var(--ink) 20%, transparent), transparent) 100% 0 / .875rem 100% no-repeat scroll, var(--card); }.table-wrap:focus-visible { outline: .1875rem solid var(--ink); outline-offset: .25rem; box-shadow: 0 0 0 .375rem var(--lime); }.table { width: 100%; border-collapse: collapse; min-width: 40.625rem; }.table th, .table td { padding: 1rem; text-align: left; border-bottom: .0625rem solid var(--line); }.table th { background: oklch(0.9589 0.0130 100.00); border-bottom-color: color-mix(in oklch, var(--line) 72%, var(--ink)); color: var(--muted); font: 700 .875rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .07em; }.table td { font-size: 1rem; vertical-align: top; overflow-wrap: anywhere; }.table tbody tr:hover { background: color-mix(in oklch, var(--lime) 12%, transparent); }.table tr:last-child td { border-bottom: 0; }.table th.table-num, .table td.table-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }.table-nowrap { white-space: nowrap; }.easypay-id { font-size: .875rem; overflow-wrap: anywhere; }.table th.actions-col, .table td.actions-col { text-align: right; white-space: nowrap; }.table .actions-col .table-actions, .table .table-actions.actions-col { justify-content: flex-end; }.table .empty { text-align: center; padding: 1.5rem 1rem; }.status { display: inline-block; padding: .3rem .55rem; border-radius: 999rem; background: oklch(0.9180 0.0723 88.10); color: oklch(0.4587 0.0890 82.31); font: 700 .875rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; }.status.paga { background: oklch(0.9315 0.0316 154.15); color: var(--green); }.status.negativa { background: oklch(0.9454 0.0188 38.15); color: var(--red); }.empty { color: var(--muted); padding: 1rem; font-style: italic; }
.site-footer { margin-top: 3rem; padding: 3rem 1.5rem 2.5rem; background: var(--ink); color: oklch(0.9942 0.0069 88.64); }.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.4fr; gap: 2.5rem; max-width: 73.75rem; margin: 0 auto 2.5rem; }.footer-col { display: grid; align-content: start; gap: .75rem; }.footer-title { margin: 0 0 .25rem; color: var(--lime); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .1em; }.footer-about-text { margin: 0; color: oklch(0.9942 0.0069 88.64); font-size: 1rem; line-height: 1.6; }.footer-list { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }.footer-link { color: oklch(0.9175 0.0249 137.81); font-size: 1rem; text-decoration: underline; text-decoration-color: transparent; text-underline-offset: .2em; transition: color .15s ease, text-decoration-color .15s ease; }.footer-link:hover { color: var(--lime); text-decoration-color: var(--lime); }.footer-link:focus-visible { outline: .1875rem solid var(--lime); outline-offset: .25rem; }.footer-institutional-link { display: inline-flex; align-items: center; gap: .25rem; margin-top: .25rem; color: var(--lime); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-decoration: none; transition: color .15s ease; }.footer-institutional-link:hover { color: oklch(0.9175 0.0249 137.81); text-decoration: underline; text-underline-offset: .2em; }.footer-institutional-link:focus-visible { outline: .1875rem solid var(--lime); outline-offset: .25rem; }.footer-contact { font-style: normal; }.footer-contact-list, .footer-hours-list { display: grid; gap: .5rem; margin: 0; }.footer-contact-row { display: grid; gap: .125rem; }.footer-contact-row dt { color: oklch(0.9942 0.0069 88.64); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .07em; opacity: .85; }.footer-contact-row dd { margin: 0; font-size: .9375rem; line-height: 1.5; }.footer-subtitle { margin: 1.25rem 0 .5rem; color: var(--lime); font: 700 .8125rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .1em; }.footer-hours { margin: 0; }.footer-hours-note { margin: .75rem 0 0; color: oklch(0.9942 0.0069 88.64); font-size: .9375rem; line-height: 1.55; }.footer-bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; max-width: 73.75rem; margin: 0 auto; padding-top: 1.5rem; border-top: .0625rem solid oklch(0.9942 0.0069 88.64 / 0.2); }.footer-copy, .footer-credit { margin: 0; color: oklch(0.9942 0.0069 88.64); font-size: .9375rem; }.footer-credit-link { color: var(--lime); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-decoration: none; transition: color .15s ease; }.footer-credit-link:hover { color: oklch(0.9175 0.0249 137.81); text-decoration: underline; text-underline-offset: .2em; }.footer-credit-link:focus-visible { outline: .1875rem solid var(--lime); outline-offset: .25rem; }
.home-hero { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(2rem, 5vw, 4rem); align-items: start; margin: 2vh auto 3rem; }.home-hero-copy .title { margin: .6rem 0 .7rem; font-size: clamp(2.4rem, 6vw, 4.6rem); line-height: .95; }.home-cta { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; margin-top: 2rem; }.home-cta .button { display: inline-flex; align-items: center; justify-content: center; min-height: 3rem; padding: .85rem 1.5rem; text-align: center; }.button.primary { background: var(--green); color: oklch(1 0 0); }.button.primary:hover { background: var(--ink); }.button.ghost { background: transparent; color: var(--ink); border: .0625rem solid var(--ink); }.button.ghost:hover { border-color: var(--green); color: var(--green); background: transparent; }.home-trust-list { display: grid; gap: .6rem; margin: 1.75rem 0 0; padding: 0; list-style: none; }.home-trust-list li { position: relative; padding-left: 1.6rem; color: var(--muted); font-size: 1rem; line-height: 1.5; }.home-trust-list li::before { content: '✓'; position: absolute; left: 0; top: 0; color: var(--green); font-weight: 700; }.home-card { padding: clamp(1.5rem, 3vw, 2.25rem); border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); box-shadow: 0 1.25rem 3.75rem oklch(0.3123 0.0443 164.44 / 0.07); }.home-card .kicker { display: block; margin: 0; }.home-steps { display: grid; gap: 1.5rem; margin: 1.5rem 0 1.75rem; padding: 0; list-style: none; }.home-steps li { display: grid; grid-template-columns: auto 1fr; column-gap: 1rem; align-items: start; }.home-step-number { display: grid; place-items: center; width: 2.25rem; height: 2.25rem; border-radius: 50%; background: var(--lime); color: var(--ink); font: 700 .9rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }.home-steps strong { grid-column: 2; font-size: 1.05rem; }.home-steps p { grid-column: 2; margin: .25rem 0 0; color: var(--muted); font-size: 1rem; line-height: 1.5; }.home-activities { margin: 3rem auto 0; }.home-activities-intro { margin-bottom: 1.5rem; }.home-activities-title { margin: .5rem 0 .75rem; font-size: clamp(1.6rem, 4vw, 2.4rem); line-height: 1.1; }.home-activities .activities-grid { margin-top: .5rem; }.home-activities .activity-card .button { margin-top: .25rem; }
.payments-shell { max-width: 54rem; margin: 1vh auto; }.payments-intro { margin-bottom: 2rem; }.payments-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 3rem; }.payment-method { display: flex; flex-direction: column; padding: 1.5rem; border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); }.payment-method h2 { margin: 0 0 .75rem; font-size: 1.2rem; line-height: 1.2; }.payment-description { margin: 0 0 1.25rem; color: var(--muted); font-size: .95rem; line-height: 1.55; }.payment-details { display: grid; gap: .75rem; margin: 0 0 1.25rem; }.payment-detail { display: grid; gap: .15rem; padding: .75rem; border-radius: .375rem; background: oklch(0.9489 0.0182 155.81); }.payment-detail dt { color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .07em; }.payment-detail dd { margin: 0; font-size: 1rem; font-weight: 700; overflow-wrap: anywhere; }.payment-note { margin: auto 0 0; padding-top: 1rem; border-top: .0625rem solid var(--line); color: var(--muted); font-size: 1rem; line-height: 1.6; }.payments-steps { margin-bottom: 2rem; }.payments-section-title { margin: .6rem 0 1.25rem; font-size: clamp(1.4rem, 3vw, 2rem); line-height: 1.15; }.payments-steps-list { display: grid; gap: 1.25rem; margin: 0; padding: 0; list-style: none; }.payments-steps-list li { display: grid; grid-template-columns: auto 1fr; column-gap: 1rem; align-items: start; }.payments-step-number { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--lime); color: var(--ink); font: 700 .875rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }.payments-steps-list strong { grid-column: 2; font-size: 1rem; }.payments-steps-list p { grid-column: 2; margin: .25rem 0 0; color: var(--muted); font-size: 1rem; line-height: 1.5; }.payments-actions { display: flex; align-items: center; gap: 1.5rem; margin-top: 2rem; }.payments-contact { margin-bottom: 2rem; padding: 1.5rem; border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); }.payments-contact .payment-details { grid-template-columns: repeat(2, 1fr); }
.contacts-shell { max-width: 54rem; margin: 1vh auto; }.contacts-intro { margin-bottom: 2rem; }.contacts-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 3rem; }.contact-card { display: flex; flex-direction: column; padding: 1.5rem; border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); }.contact-card h2 { margin: 0 0 .75rem; font-size: 1.2rem; line-height: 1.2; }.contact-description { margin: 0 0 1.25rem; color: var(--muted); font-size: .95rem; line-height: 1.55; }.contact-details { display: grid; gap: .75rem; margin: 0 0 1.25rem; }.contact-detail { display: grid; gap: .15rem; padding: .75rem; border-radius: .375rem; background: oklch(0.9489 0.0182 155.81); }.contact-detail dt { color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .07em; }.contact-detail dd { margin: 0; font-size: 1rem; font-weight: 700; overflow-wrap: anywhere; }.contact-note { margin: auto 0 0; padding-top: 1rem; border-top: .0625rem solid var(--line); color: var(--muted); font-size: 1rem; line-height: 1.6; }.contacts-maps { margin-bottom: 2rem; }.contacts-section-title { margin: .6rem 0 1.25rem; font-size: clamp(1.4rem, 3vw, 2rem); line-height: 1.15; }.contacts-maps-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 0; padding: 0; list-style: none; }.map-link { display: flex; flex-direction: column; gap: .35rem; padding: 1.25rem; border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); text-decoration: none; }.map-link strong { font-size: 1.05rem; }.map-link span { color: var(--muted); font-size: 1rem; line-height: 1.6; }.map-link:hover { border-color: var(--green); }.contacts-actions { display: flex; align-items: center; gap: 1.5rem; margin-top: 2rem; }
.faq-shell { max-width: 52rem; margin: 1vh auto; }.faq-intro { margin-bottom: 2rem; }.faq-toc { margin: 0 0 2.5rem; padding: 1.1rem 1.25rem; border: .0625rem solid var(--line); border-radius: .5rem; background: color-mix(in oklch, var(--lime) 6%, var(--card)); }.faq-toc-title { display: block; margin: 0 0 .5rem; color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .06em; }.faq-toc-list { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }.faq-toc-list li { display: inline-flex; align-items: center; gap: .5rem; }.faq-toc-link { color: var(--green); font-size: 1rem; text-decoration: underline; text-underline-offset: .2em; }.faq-toc-link:hover { color: var(--ink); }.faq-group { scroll-margin-top: 1.5rem; }.faq-group + .faq-group { margin-block-start: 2rem; }.faq-group-title { margin: 0 0 .25rem; padding-inline-start: .75rem; border-inline-start: .25rem solid var(--lime); font-size: clamp(1.2rem, 2vw, 1.45rem); line-height: 1.2; }.faq-list { margin: 1.25rem 0 0; padding: 0; }.faq-item { border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); }.faq-item + .faq-item { margin-block-start: .75rem; }.faq-item summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 1.25rem; cursor: pointer; list-style: none; font-size: clamp(1rem, 2vw, 1.2rem); font-weight: 700; color: var(--ink); border-radius: .5rem; }.faq-item summary::-webkit-details-marker { display: none; }.faq-item summary:hover { background: color-mix(in oklch, var(--lime) 12%, var(--card)); }.faq-item summary::after { display: grid; place-items: center; flex-shrink: 0; width: 1.9rem; height: 1.9rem; border: .0625rem solid var(--line); border-radius: 50%; content: '+'; color: var(--green); font-size: 1.3rem; font-weight: 700; line-height: 1; }.faq-item[open] summary::after { content: '−'; background: color-mix(in oklch, var(--lime) 28%, var(--card)); border-color: var(--green); color: var(--ink); }.faq-item[open] { border-color: color-mix(in oklch, var(--lime) 55%, var(--line)); background: color-mix(in oklch, var(--lime) 8%, var(--card)); }.faq-item p { max-width: 46rem; margin: 1rem 1.25rem 1.35rem; color: var(--ink); line-height: 1.6; }.faq-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: 2.5rem; }
.home-member { margin: 0 auto 3rem; }.home-member-title { margin: .6rem 0 .7rem; font-size: clamp(1.5rem, 3vw, 2.2rem); line-height: 1.1; }.home-member-benefits { display: grid; gap: .6rem; margin: 1.5rem 0 0; padding: 0; list-style: none; }.home-member-benefits li { position: relative; padding-left: 1.6rem; color: var(--muted); font-size: 1rem; line-height: 1.6; }.home-member-benefits li::before { content: '✓'; position: absolute; left: 0; top: 0; color: var(--green); font-weight: 700; }.home-member-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; margin-top: 1.75rem; }.home-member-actions .button { display: inline-flex; align-items: center; justify-content: center; min-height: 3rem; padding: .85rem 1.5rem; text-align: center; }.auth-switch-actions { justify-content: flex-start; margin-top: 0; }.register-member-callout { display: grid; gap: .75rem; margin-top: 2rem; padding: 1.5rem; border: .0625rem solid color-mix(in oklch, var(--lime) 50%, var(--line)); border-radius: .5rem; background: color-mix(in oklch, var(--lime) 16%, var(--card)); }.register-member-callout h2 { margin: 0; font-size: 1.2rem; line-height: 1.2; }.register-member-callout p { margin: 0; color: var(--muted); line-height: 1.6; }.register-member-actions { justify-content: flex-start; margin-top: .25rem; }
@media (max-width: 43.75rem) { .home-member-actions { align-items: stretch; flex-direction: column; } }

.legal-shell { max-width: 54rem; margin: 1vh auto; }.legal-intro { margin-bottom: 2rem; }.legal-index { margin: 2rem 0 3rem; padding: 1.25rem 1.5rem; border: .0625rem solid var(--line); border-radius: .375rem; background: var(--card); }.legal-index strong { display: block; margin-bottom: .75rem; }.legal-index ol { display: grid; gap: .5rem; margin: 0; padding-inline-start: 1.5rem; }.legal-section { max-width: 80ch; margin-block: 2.5rem; scroll-margin-block-start: 1rem; }.legal-section h2 { margin: 0 0 .75rem; font-size: clamp(1.25rem, 2vw, 1.6rem); line-height: 1.2; }.legal-section p { margin: 0; color: var(--muted); line-height: 1.65; }.legal-section p + p { margin-top: .85rem; }.legal-update { margin-top: 3rem; padding-top: 1rem; border-top: .0625rem solid var(--line); color: var(--muted); }
.breadcrumbs { margin-bottom: 1.5rem; }.breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0; padding: 0; list-style: none; }.breadcrumbs li { display: flex; align-items: center; gap: .5rem; font-size: .9375rem; }.breadcrumbs li + li::before { content: '›'; content: '›' / ''; color: var(--muted); }.breadcrumbs a { color: var(--green); padding: .125rem .25rem; border-radius: .25rem; text-decoration: underline; text-underline-offset: .2em; transition: color .15s ease, background-color .15s ease; }.breadcrumbs a:hover { color: var(--ink); background-color: color-mix(in oklch, var(--lime) 25%, transparent); }.breadcrumbs [aria-current='page'] { color: var(--muted); padding: .125rem .25rem; }
.institutional-address { display: block; margin: 0; color: oklch(0.9942 0.0069 88.64); font-style: normal; line-height: 1.6; font-size: .9375rem; }
.activities-shell { max-width: 54rem; margin: 1vh auto; }.activities-intro { margin-bottom: 2rem; }.activities-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr)); gap: 1rem; margin: 0; padding: 0; list-style: none; }.activity-card { display: flex; flex-direction: column; gap: .75rem; padding: 1.5rem; border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); }.activity-card h2, .activity-card h3 { margin: 0; font-size: 1.3rem; line-height: 1.2; }.activity-description { margin: 0; color: var(--muted); font-size: .95rem; line-height: 1.55; }.activity-local { margin: 0; color: var(--muted); font-size: .95rem; }.activity-status { margin: 0; }.activity-card .activity-status { margin-top: auto; }.activity-card .button { align-self: flex-start; }
.activity-shell { max-width: 54rem; margin: 1vh auto; }.activity-info { max-width: 44rem; margin-top: 2rem; padding: 1.25rem 1.5rem; border: .0625rem solid var(--line); border-radius: .375rem; background: var(--card); }.activity-info p { margin: .4rem 0; color: var(--muted); }.activity-info strong { color: var(--ink); }.activity-priority { margin-top: .75rem; padding-top: .75rem; border-top: .0625rem solid var(--line); }.activities-actions { display: flex; align-items: center; gap: 1.5rem; margin-top: 2rem; }.activity-turmas { margin-top: 2.5rem; }.activity-turmas h2 { margin: 0 0 .75rem; font-size: 1.4rem; }.activity-turmas .table-wrap { margin-top: .5rem; }.activity-turmas .table { min-width: 44rem; }.activity-docentes { max-width: 44rem; margin-top: 2.5rem; }.activity-docentes h2 { margin: 0 0 .5rem; font-size: 1.4rem; }.docentes-list { display: grid; gap: .4rem; margin: 1rem 0 0; padding: 0; list-style: none; }.docentes-list li { padding: .55rem .75rem; border-radius: .25rem; background: var(--card); border: .0625rem solid var(--line); font-size: .95rem; }
.wizard-panel { max-width: 54rem; margin: 1vh auto; }.wizard-title { margin: .4rem 0 .7rem; font-size: clamp(1.5rem, 3vw, 2.2rem); line-height: 1.1; }.opt-group { margin: 0 0 1rem; padding: 0; border: 0; }.opt-group legend, .consents legend { margin-bottom: .5rem; padding: 0; color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .06em; }.opt-grid { display: grid; gap: .5rem; }.opt-set { margin: 0 0 1rem; padding: 0; border: 0; }.opt-set .opt-legend { margin-bottom: .5rem; padding: 0; color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .06em; }.opt { display: flex; align-items: center; gap: .6rem; min-height: 2.75rem; padding: .8rem 1rem; border: .0625rem solid var(--line); border-radius: .375rem; background: oklch(1 0 0); cursor: pointer; }.opt:has(input:checked) { border-color: var(--green); background: oklch(0.9489 0.0182 155.81); }.opt input { width: auto; height: auto; margin: 0; accent-color: var(--green); }.opt span { color: var(--ink); font: 400 .95rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }.wizard-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin-top: .5rem; }.wizard-hint { margin-top: 1.25rem; color: var(--muted); font-size: 1rem; }
.wizard-hint.compact { margin-top: .25rem; }
.wizard-hint.flush { margin-top: 0; }
.wizard-review { margin-top: 2rem; padding: 1.5rem; border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); }.wizard-review h3 { margin: 0 0 .75rem; font-size: 1.1rem; }.wizard-review h3 + * { margin-top: 1rem; }.wizard-review h3:not(:first-child) { margin-top: 1.5rem; }.review-list { display: grid; gap: .5rem; margin: 0 0 1.25rem; }.review-list div { display: grid; grid-template-columns: minmax(9rem, 12rem) 1fr; gap: 1rem; padding: .55rem .75rem; border-radius: .25rem; background: oklch(0.9589 0.0130 100.00); }.review-list dt { color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .06em; }.review-list dd { margin: 0; font-size: .95rem; }.review-students { display: grid; gap: .75rem; margin: 0; padding: 0; list-style: none; }.review-students li { padding: .9rem; border: .0625rem solid var(--line); border-radius: .375rem; background: oklch(1 0 0); }.review-students .review-list { margin-bottom: 0; }.consents { margin-top: 1.5rem; padding: 0; border: 0; }.consents legend { margin-bottom: .75rem; }
.inscricao-payment { margin-top: 1.5rem; padding: 1.5rem; border: .0625rem solid var(--line); border-radius: .5rem; background: color-mix(in oklch, var(--lime) 14%, var(--card)); }.inscricao-payment h3 { margin: 0 0 .75rem; font-size: 1.1rem; }.inscricao-payment p { margin: .4rem 0; color: var(--muted); }.inscricao-payment strong { color: var(--ink); }
.inscricao-total { margin: 1.25rem 0 0; padding: .9rem 1.1rem; border: .0625rem solid color-mix(in oklch, var(--green) 45%, var(--line)); border-radius: .5rem; background: color-mix(in oklch, var(--lime) 22%, var(--card)); font-size: 1.05rem; color: var(--ink); }.inscricao-total strong { font-size: 1.15rem; }
.dashboard-payment { margin-top: 1rem; padding: 1.5rem; border: .0625rem solid var(--line); border-radius: .5rem; background: var(--card); }
.dashboard-note { margin-top: 1rem; }.dashboard-payment .review-list div { font-size: 1rem; }.dashboard-payment dt { min-width: 7rem; }
.table-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }.table-actions form { margin: 0; }
.inscricao-alunos { display: grid; gap: .35rem; margin: 0; padding: 0; list-style: none; }.inscricao-aluno-sessao { color: var(--muted); font-size: 1rem; }

.button.danger { background: var(--red); color: oklch(1 0 0); border-color: var(--red); }
.button.danger:hover { background: oklch(0.36 0.11 23.95); }
/* Alvo de toque ≥ 2.75rem (44 px) — WCAG 2.5.5 (AAA) e a norma interna dos
   restantes controlos (.button, CTAs e «voltar ao topo»). O inline-flex
   garante a altura mínima também nos <a class="button small"> (um elemento em
   linha ignora min-height); o gap separa o ícone do rótulo. */
.button.small { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; min-height: 2.75rem; padding: .45rem .85rem; font-size: .9375rem; }

@media (max-width: 43.75rem) { .activities-actions, .wizard-actions { align-items: stretch; flex-direction: column; }.review-list div { grid-template-columns: 1fr; gap: .15rem; } }
.register-choice { max-width: 72rem; margin: 0 auto; }.register-choice-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-top: 2rem; }.register-option { display: grid; align-content: start; gap: 1rem; }.register-option h2 { margin: 0; font-size: clamp(1.25rem, 2vw, 1.6rem); line-height: 1.15; }.register-option p { margin: 0; color: var(--muted); line-height: 1.55; }.register-option ul { display: grid; gap: .4rem; margin: 0; padding-left: 1.25rem; color: var(--muted); font-size: .95rem; line-height: 1.5; }.register-option .register-option-actions { justify-content: flex-start; margin-top: .25rem; }
@media (max-width: 50rem) { .register-choice-grid { grid-template-columns: 1fr; } .register-choice { max-width: 32.5rem; } }
@media (max-width: 43.75rem) { .site-header { align-items: flex-start; padding-top: 1.25rem; }.header-note { display: none; }.header-side { align-items: flex-end; flex-direction: column; gap: .6rem; }.account-nav ul { flex-wrap: wrap; justify-content: flex-end; gap: .5rem 1.25rem; }.account-nav a { padding: .45rem 0; }.account-nav button.linklike { padding: .45rem 0; }.metrics { grid-template-columns: 1fr; }.dashboard-head { align-items: flex-start; flex-direction: column; gap: .5rem; }.actions { align-items: stretch; flex-direction: column; }.button { width: 100%; }.panel { padding: 1.25rem; }.home-hero { grid-template-columns: 1fr; gap: 1.5rem; }.home-cta { align-items: stretch; flex-direction: column; }.payments-grid { grid-template-columns: 1fr; }.payments-actions { align-items: stretch; flex-direction: column; }.contacts-grid { grid-template-columns: 1fr; }.contacts-maps-grid { grid-template-columns: 1fr; }.contacts-actions { align-items: stretch; flex-direction: column; }.footer-grid { grid-template-columns: 1fr; gap: 2rem; }.footer-bottom { flex-direction: column; align-items: flex-start; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } }
@media (forced-colors: active) { :where(a, button, input, summary):focus-visible { outline: .1875rem solid Highlight; box-shadow: none; } }
.busy-overlay { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 1.5rem; background: color-mix(in oklch, var(--ink) 55%, transparent); }
.busy-overlay[hidden] { display: none; }
.busy-panel { display: grid; justify-items: center; gap: .9rem; margin: 0; max-width: 26rem; padding: 2rem 2.25rem; border: .0625rem solid color-mix(in oklch, var(--lime) 45%, var(--line)); border-radius: .5rem; background: var(--card); box-shadow: 0 1.25rem 3.75rem oklch(0.3123 0.0443 164.44 / 0.28); text-align: center; }
.busy-panel strong { font-size: 1.1rem; }
.busy-panel span:not(.busy-spinner) { color: var(--muted); font-size: .9375rem; line-height: 1.45; }
.busy-spinner { width: 2.5rem; height: 2.5rem; border: .25rem solid color-mix(in oklch, var(--green) 22%, var(--card)); border-top-color: var(--green); border-radius: 50%; animation: busy-girar 1s linear infinite; }
@keyframes busy-girar { to { transform: rotate(360deg); } }
body.is-busy, body.is-busy :where(a, button, input, select, textarea, summary, label) { cursor: progress; }
@media (prefers-reduced-motion: reduce) { .busy-spinner { display: none; } }
.field select { width: 100%; padding: .75rem .9rem; border: .0625rem solid var(--line); border-radius: .25rem; background: var(--card); color: var(--ink); font: 400 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
/* As áreas de texto herdam a fonte do sistema (um textarea sem regra usa a do
   browser) e não se redimensionam na horizontal (partiriam o layout). */
.field textarea { width: 100%; border: .0625rem solid var(--line); border-radius: .25rem; padding: .85rem .9rem; background: oklch(1 0 0); color: var(--ink); font: 400 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; line-height: 1.6; resize: vertical; }
.field select:focus-visible { outline: .1875rem solid var(--green); outline-offset: .0625rem; }
.toolbar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem; margin: 1.5rem 0 2rem; }
.toolbar-field { flex: 1 1 16rem; min-width: 14rem; }
.wizard-progress { margin: .4rem 0 1.5rem; }.wizard-progress ol { display: flex; flex-wrap: wrap; gap: .5rem 1.75rem; margin: 0; padding: 0; list-style: none; }.wizard-progress li { display: inline-flex; align-items: center; gap: .5rem; color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .06em; }.wizard-progress li.atual { color: var(--ink); }.wizard-progress li.concluida { color: var(--green); }.wizard-progress-numero { display: grid; place-items: center; min-width: 1.6rem; height: 1.6rem; padding: 0 .3rem; border: .0625rem solid var(--line); border-radius: 999rem; font-size: .875rem; }.wizard-progress li.atual .wizard-progress-numero { border-color: var(--green); background: var(--green); color: oklch(1 0 0); }.wizard-progress li.concluida .wizard-progress-numero { border-color: var(--green); color: var(--green); }.wizard-remove { margin: .25rem 0 0; }.wizard-remove .link { padding: 0; background: none; border: 0; cursor: pointer; }.danger-link { color: var(--red); }.wizard-remove .danger-link:hover { color: var(--ink); }
.dados-revisao { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin: 1.5rem 0; padding: 1.1rem 1.25rem; border: .0625rem solid color-mix(in oklch, var(--green) 38%, var(--line)); border-radius: .5rem; background: color-mix(in oklch, var(--lime) 14%, var(--card)); }.dados-revisao p { margin: 0; max-width: 46rem; }.dados-revisao-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }.dados-revisao-actions form { margin: 0; }.educando-opcoes { display: grid; gap: .75rem; margin: 0; padding: 0; list-style: none; }.educando-opcoes li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; padding: 1rem 1.1rem; border: .0625rem solid var(--line); border-radius: .375rem; background: var(--card); }
.pagination { margin-top: 1.75rem; }.pagination ul { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin: 0; padding: 0; list-style: none; }.pagination li { margin: 0; }.pagination-item { display: inline-flex; align-items: center; justify-content: center; min-width: 2.75rem; min-height: 2.75rem; padding: .4rem .7rem; border: .0625rem solid var(--line); border-radius: .375rem; background: var(--card); color: var(--ink); font: 700 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-align: center; text-decoration: none; }.pagination-item:hover { border-color: var(--ink); background: color-mix(in oklch, var(--lime) 24%, var(--card)); }.pagination-item:focus-visible { outline: .1875rem solid var(--ink); outline-offset: .125rem; box-shadow: 0 0 0 .375rem var(--lime); }.pagination-item.is-current { border-color: var(--ink); background: var(--lime); cursor: default; }.pagination-elipse { padding: .4rem .3rem; color: var(--muted); font-weight: 700; }.assiduidade-dia { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem; margin: 1.5rem 0; }.assiduidade-dia label { display: grid; gap: .4rem; font: 700 .875rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }.assiduidade-dia input, .assiduidade-dia select { border: .0625rem solid var(--line); border-radius: .375rem; padding: .7rem .8rem; background: oklch(1 0 0); color: var(--ink); font-size: 1rem; }.assiduidade-dia input:focus, .assiduidade-dia select:focus { outline: .1875rem solid oklch(0.8588 0.1624 117.30 / 0.3); border-color: var(--green); }.assiduidade-mes { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem; margin: 1.5rem 0; }.assiduidade-mes label { display: grid; gap: .4rem; font: 700 .875rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }.assiduidade-mes select { border: .0625rem solid var(--line); border-radius: .375rem; padding: .7rem .8rem; background: oklch(1 0 0); color: var(--ink); font-size: 1rem; }.assiduidade-mes select:focus { outline: .1875rem solid oklch(0.8588 0.1624 117.30 / 0.3); border-color: var(--green); }.assiduidade-aviso { margin: 0 0 1rem; padding: .75rem 1rem; border: .0625rem solid color-mix(in oklch, var(--lime) 50%, var(--line)); border-radius: .375rem; background: color-mix(in oklch, var(--lime) 14%, var(--card)); color: var(--ink); font-size: 1rem; }.assiduidade-estados { display: flex; flex-wrap: wrap; gap: .45rem; }.assiduidade-opt { display: inline-flex; align-items: center; gap: .45rem; min-height: 2.75rem; padding: .45rem .8rem; border: .0625rem solid var(--line); border-radius: .375rem; background: oklch(1 0 0); cursor: pointer; font: 400 1rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }.assiduidade-opt input { width: auto; height: auto; margin: 0; accent-color: var(--green); }.assiduidade-opt:hover { border-color: var(--ink); }.assiduidade-opt:has(input:focus-visible) { outline: .1875rem solid var(--ink); outline-offset: .125rem; }.assiduidade-opt:has(input:checked) { border-color: color-mix(in oklch, var(--lime) 70%, var(--green)); background: color-mix(in oklch, var(--lime) 18%, oklch(1 0 0)); font-weight: 700; }.assiduidade-opt-presente:has(input:checked) { border-color: var(--green); background: oklch(0.9489 0.0182 155.81); }.assiduidade-opt-falta:has(input:checked) { border-color: var(--red); background: color-mix(in oklch, var(--red) 8%, oklch(1 0 0)); }.assiduidade-totais th, .assiduidade-totais td { border-top: .125rem solid var(--ink); font-weight: 700; }.assiduidade-grelha th, .assiduidade-grelha td { white-space: nowrap; }.assiduidade-grelha td:first-child { white-space: normal; min-width: 11rem; }.assiduidade-celula { display: inline-flex; gap: .3rem; }.assiduidade-mini { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border: .0625rem solid var(--line); border-radius: .375rem; background: oklch(1 0 0); cursor: pointer; font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }.assiduidade-mini input { position: absolute; width: 1px; height: 1px; margin: -.0625rem; overflow: hidden; clip-path: inset(50%); }.assiduidade-mini:hover { border-color: var(--ink); }.assiduidade-mini:has(input:focus-visible) { outline: .1875rem solid var(--ink); outline-offset: .125rem; }.assiduidade-mini.is-ativo { border-color: var(--green); background: color-mix(in oklch, var(--lime) 30%, oklch(1 0 0)); }@media (forced-colors: active) { .assiduidade-opt:has(input:checked) { border-color: Highlight; background: Highlight; color: HighlightText; } }

/* ─── Fase 2: navegação principal, rodapé condicional, voltar ao topo e páginas institucionais ─── */
.site-header { flex-wrap: wrap; }
.primary-nav { width: 100%; order: 3; }
.primary-nav-list { display: flex; gap: .25rem; margin: 0; padding: 0; list-style: none; overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; }
.primary-nav-list > li { scroll-snap-align: start; }
.primary-nav-link { display: inline-block; padding: .6rem .75rem; border-radius: .375rem; color: var(--ink); font-weight: 600; text-decoration: none; white-space: nowrap; transition: background-color .15s ease, color .15s ease; }
.primary-nav-link:hover { background: color-mix(in oklch, var(--lime) 20%, transparent); }
.primary-nav-link[aria-current="page"] { background: var(--ink); color: oklch(0.9942 0.0069 88.64); }
.primary-nav-link:focus-visible { outline: .1875rem solid var(--green); outline-offset: .125rem; }
.back-to-top { position: fixed; right: 1rem; bottom: 1rem; z-index: 30; display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border: .0625rem solid var(--line); border-radius: 999px; background: var(--card); color: var(--ink); box-shadow: 0 .5rem 1.5rem oklch(0.2657 0.0351 176.97 / 0.18); text-decoration: none; transition: opacity .2s ease, transform .2s ease, background-color .15s ease; }
.back-to-top .icone-topo { transform: rotate(-90deg); }
.back-to-top:hover { background: color-mix(in oklch, var(--lime) 26%, var(--card)); }
.back-to-top:focus-visible { outline: .1875rem solid var(--green); outline-offset: .125rem; }
.tem-js .back-to-top { opacity: 0; pointer-events: none; transform: translateY(.5rem); }
.tem-js .back-to-top.is-visivel { opacity: 1; pointer-events: auto; transform: none; }
.footer-reduzido { margin-top: 2.5rem; padding: 1.75rem 1.5rem 1.5rem; }
.footer-reduzido-linha { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 1.5rem; max-width: 73.75rem; margin: 0 auto; }
.footer-reduzido-marca { margin: 0; font-size: .9375rem; }
.footer-reduzido-lista { display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; margin: 0; padding: 0; list-style: none; }
.footer-reduzido-contacto { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin: 0; font-size: .9375rem; }
.footer-reduzido-horario { max-width: 73.75rem; margin: 1rem auto 0; font-size: .875rem; }
.footer-reduzido .footer-bottom { margin-top: 1.25rem; }
.haptico-oculto { position: fixed; width: .0625rem; height: .0625rem; opacity: 0; pointer-events: none; border: 0; padding: 0; margin: 0; clip-path: inset(50%); }
.page-indice { margin: 2rem 0 0; padding: 1.1rem 1.25rem; border: .0625rem solid var(--line); border-radius: .5rem; background: color-mix(in oklch, var(--lime) 6%, var(--card)); }
.page-indice strong { display: block; margin-bottom: .5rem; }
.page-indice ol, .page-indice ul { display: grid; gap: .35rem; margin: 0; padding-inline-start: 1.1rem; }
/* Reforço do indicador de foco em campos de formulário: em teclado, o anel é o
   traço escuro da marca (o :focus simples mantém o anel suave para o rato) —
   WCAG 2.4.7/1.4.11. */
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible,
.assiduidade-dia input:focus-visible, .assiduidade-dia select:focus-visible,
.assiduidade-mes select:focus-visible, .assiduidade-mini:has(input:focus-visible) { outline: .1875rem solid var(--green); outline-offset: .125rem; }
/* WCAG 2.4.11 (foco não obscurecido): espaço no fim do rodapé para o botão fixo
   «voltar ao topo» (44 px + 1 rem de margem) nunca tapar um elemento focado. */
.footer-bottom { padding-bottom: 3.5rem; }
html { scroll-behavior: smooth; }
section[id], .legal-section, .faq-group { scroll-margin-top: 1.5rem; }
@media (min-width: 61.25rem) { .primary-nav { width: auto; order: 2; } }
@media (min-width: 64rem) {
  .faq-shell, .legal-shell, .payments-shell, .contacts-shell { max-width: 73.75rem; display: grid; grid-template-columns: minmax(14rem, 17rem) minmax(0, 1fr); grid-template-areas: "intro intro" "indice conteudo" "acoes acoes"; column-gap: 2.5rem; align-items: start; }
  .faq-shell > .faq-intro, .legal-shell > .legal-intro, .payments-shell > .payments-intro, .contacts-shell > .contacts-intro { grid-area: intro; }
  .faq-shell > .faq-toc, .legal-shell > .legal-index, .payments-shell > .page-indice, .contacts-shell > .page-indice { grid-area: indice; position: sticky; top: 1.5rem; margin-top: 0; }
  .faq-shell > .faq-list, .legal-shell > .legal-conteudo, .payments-shell > .payments-conteudo, .contacts-shell > .contacts-conteudo { grid-area: conteudo; margin-top: 0; }
  .faq-shell > .faq-actions, .legal-shell > .legal-update, .payments-shell > .payments-actions, .contacts-shell > .contacts-actions { grid-area: acoes; }
}
@media (min-width: 80rem) {
  .faq-group { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.5rem; }
  .faq-group-title { grid-column: 1 / -1; }
  .faq-group > .faq-item { margin: 0; }
}
/* ─── Barra lateral da gestão — área reservada /gestao/* — ver docs/gestao.md ───
   Ecrãs estreitos: gaveta deslizante (*off-canvas*) controlada pelo script do
   Layout. Sem JavaScript (ou se o script falhar) o botão não aparece (é a
   classe .tem-js que o liga) e a navegação fica em fluxo, sempre visível —
   nunca se perde acesso. Ecrãs largos (≥ 64rem): coluna fixa (sticky). */
.gestao-nav-toggle { display: none; align-items: center; justify-content: center; gap: .5rem; width: 100%; margin-bottom: 1.25rem; padding: .85rem 1rem; border: .0625rem solid var(--line); border-radius: .375rem; background: var(--card); color: var(--ink); font: 700 .875rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; letter-spacing: .05em; text-transform: uppercase; cursor: pointer; transition: background-color .15s ease, color .15s ease; }
.tem-js .gestao-nav-toggle { display: inline-flex; }
.gestao-nav-toggle:hover { background: color-mix(in oklch, var(--lime) 22%, var(--card)); }
.gestao-nav-toggle[aria-expanded="true"] { background: var(--ink); color: oklch(0.9942 0.0069 88.64); }
.gestao-nav-fechar { display: none; }
/* Botão de recolher/expandir (só em ecrãs largos, com JavaScript): em modo
   compacto a barra fica numa faixa de ícones e os rótulos passam a texto
   visualmente escondido (continuam a ser o nome acessível das ligações). */
.gestao-nav-recolher { display: none; align-items: center; justify-content: center; gap: .5rem; width: 100%; min-height: 2.75rem; margin-bottom: .75rem; padding: .6rem .8rem; border: .0625rem solid var(--line); border-radius: .375rem; background: var(--card); color: var(--ink); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; cursor: pointer; transition: background-color .15s ease, color .15s ease; }
.gestao-nav-recolher:hover { background: color-mix(in oklch, var(--lime) 22%, var(--card)); }
.gestao-nav-recolher .gestao-nav-recolher-icone { transition: transform .15s ease; }
.gestao-sidebar { padding: 1.1rem 1rem; border: .0625rem solid var(--line); border-radius: .5rem; background: color-mix(in oklch, var(--card) 92%, transparent); }
.gestao-sidebar:focus-visible { outline: .1875rem solid var(--green); outline-offset: .125rem; }
.gestao-sidebar-grupo + .gestao-sidebar-grupo { margin-top: 1.15rem; }
.gestao-sidebar-titulo { margin: 0 0 .4rem; color: var(--muted); font-size: .9375rem; text-transform: uppercase; letter-spacing: .06em; }
.gestao-sidebar-lista { display: grid; gap: .15rem; margin: 0; padding: 0; list-style: none; }
.gestao-sidebar-link { display: flex; align-items: center; gap: .55rem; padding: .6rem .65rem; border-radius: .375rem; color: var(--ink); font-size: 1rem; font-weight: 600; text-decoration: none; transition: background-color .15s ease, color .15s ease; }
.gestao-sidebar-link:hover { background: color-mix(in oklch, var(--lime) 22%, transparent); }
.gestao-sidebar-link[aria-current="page"] { background: var(--ink); color: oklch(0.9942 0.0069 88.64); }
.gestao-sidebar-icone { opacity: .8; }
.gestao-sidebar-link[aria-current="page"] .gestao-sidebar-icone { opacity: 1; }
.gestao-sidebar-atalhos { margin-top: 1.25rem; padding-top: 1rem; border-top: .0625rem solid var(--line); }
.gestao-nav-overlay { position: fixed; inset: 0; z-index: 55; background: oklch(0.2657 0.0351 176.97 / 0.55); }
@media (forced-colors: active) { .gestao-sidebar-link[aria-current="page"] { forced-color-adjust: none; background: Highlight; color: HighlightText; } }
@media (max-width: 63.9375rem) {
  /* Bloqueio do scroll exterior com a gaveta aberta — html e body (só o html
     não chega no iOS Safari). */
  .tem-js.gestao-nav-aberta, .tem-js.gestao-nav-aberta body { overflow: hidden; }
  .tem-js .gestao-sidebar { position: fixed; inset-block: 0; inset-inline-start: 0; z-index: 60; width: min(20rem, 86vw); max-height: 100vh; overflow-y: auto; overscroll-behavior: contain; border: 0; border-inline-end: .0625rem solid var(--line); border-radius: 0; padding: 1.25rem 1.1rem 2rem; transform: translateX(-100%); visibility: hidden; transition: transform .22s ease, visibility .22s ease; }
  .tem-js.gestao-nav-aberta .gestao-sidebar { transform: none; visibility: visible; }
  .tem-js .gestao-nav-fechar { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; padding: .6rem .8rem; border: .0625rem solid var(--line); border-radius: .375rem; background: var(--card); color: var(--ink); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; cursor: pointer; }
}
@media (min-width: 64rem) {
  .gestao-shell { display: grid; grid-template-columns: minmax(14rem, 17rem) minmax(0, 1fr); column-gap: 2.5rem; align-items: start; }
  .gestao-nav { position: sticky; top: 1.5rem; max-height: calc(100vh - 3rem); max-height: calc(100dvh - 3rem); overflow-y: auto; }
  .tem-js .gestao-nav-toggle, .gestao-nav-overlay { display: none; }
  .tem-js .gestao-nav-recolher { display: inline-flex; }
  /* Modo compacto (escolha do utilizador, guardada no browser): faixa de ícones. */
  .tem-js.gestao-nav-compacta .gestao-shell { grid-template-columns: 4.5rem minmax(0, 1fr); }
  .tem-js.gestao-nav-compacta .gestao-sidebar { padding: 1rem .5rem; }
  .tem-js.gestao-nav-compacta .gestao-sidebar-link { justify-content: center; gap: 0; padding: .7rem .4rem; }
  .tem-js.gestao-nav-compacta .gestao-sidebar-icone { width: 1.25rem; height: 1.25rem; opacity: 1; }
  .tem-js.gestao-nav-compacta .gestao-nav-recolher { justify-content: center; }
  .tem-js.gestao-nav-compacta .gestao-nav-recolher .gestao-nav-recolher-icone { transform: rotate(180deg); }
  .tem-js.gestao-nav-compacta .gestao-sidebar-grupo + .gestao-sidebar-grupo { margin-top: .35rem; padding-top: .4rem; border-top: .0625rem solid var(--line); }
  .tem-js.gestao-nav-compacta :is(.gestao-sidebar-rotulo, .gestao-sidebar-titulo, .gestao-nav-recolher-rotulo) { position: absolute; width: 1px; height: 1px; padding: 0; margin: -.0625rem; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .primary-nav-link, .back-to-top, .gestao-sidebar-link, .gestao-nav-toggle, .gestao-nav-recolher { transition: none; }
  .tem-js .back-to-top { transform: none; }
  .tem-js .gestao-sidebar { transition: none; }
  .gestao-nav-recolher .gestao-nav-recolher-icone { transition: none; }
}

/* ─── Fase 4: elementos que existiam no markup sem qualquer regra ───
   Controlos e conteúdo usados nas vistas mas sem estilo próprio (herdavam só o
   genérico ou o padrão do browser): o campo de observação da assiduidade da
   música, o bloco informativo das avenças e o módulo da Escola de Música
   (agenda semanal, cartões de aula e avaliações). Estilos só com as variáveis
   da paleta — ver docs/design-principles.md. */
.nota-input { width: 100%; min-width: 9rem; min-height: 2.75rem; border: .0625rem solid var(--line); border-radius: .25rem; padding: .5rem .6rem; background: oklch(1 0 0); color: var(--ink); font-size: 1rem; }
.nota-input:focus-visible { outline: .1875rem solid var(--green); outline-offset: .125rem; }
details.notice-info { margin: .5rem 0 1.25rem; border-left: .25rem solid var(--lime); padding: .75rem 1rem; background: var(--card); color: var(--ink); font-size: 1rem; }
/* Alvo de toque do disclosure: padding em vez de display flex, que apagaria o
   triângulo nativo do summary (a affordance de abrir/fechar). */
details.notice-info summary { padding: .65rem 0; cursor: pointer; font-weight: 700; }
details.notice-info ul { display: grid; gap: .35rem; margin: .6rem 0 0; padding-inline-start: 1.2rem; color: var(--muted); }
.agenda-semana { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1.25rem; margin: 0; }
.agenda-dia { display: grid; gap: .5rem; align-content: start; }
.agenda-dia dt { color: var(--muted); font: 700 .9375rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; letter-spacing: .06em; }
.agenda-dia dt.data-hoje { color: var(--green); }
.agenda-dia dd { display: grid; gap: .6rem; margin: 0; }
.aula-card { display: grid; gap: .45rem; padding: .9rem 1rem; border: .0625rem solid var(--line); border-left: .25rem solid var(--lime); border-radius: .375rem; background: var(--card); }
.aula-card.estado-dada, .aula-card.estado-compensacao { border-left-color: var(--green); }
.aula-card.estado-cancelada { border-left-color: var(--red); }
.aula-card.estado-reagendada { border-left-color: var(--muted); }
.aula-header { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .75rem; }
.aula-tipo { font-weight: 700; }
.aula-hora { color: var(--muted); font-variant-numeric: tabular-nums; }
.aula-estado { margin-left: auto; padding: .2rem .5rem; border-radius: 999rem; background: oklch(0.9180 0.0723 88.10); color: oklch(0.4587 0.0890 82.31); font: 700 .875rem system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: uppercase; }
.aula-estado.dada, .aula-estado.compensacao { background: oklch(0.9315 0.0316 154.15); color: var(--green); }
.aula-estado.cancelada { background: oklch(0.9454 0.0188 38.15); color: var(--red); }
.aula-estado.reagendada { background: oklch(0.9589 0.0130 100.00); color: var(--muted); }
.aula-modalidade, .aula-local { margin: 0; color: var(--muted); font-size: .9375rem; }
.aula-alunos { display: grid; gap: .2rem; margin: 0; padding: 0; list-style: none; font-size: .9375rem; }
.aula-acoes { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .15rem; }
.avaliacoes-list { display: grid; gap: .75rem; margin: 0; padding: 0; list-style: none; }
.avaliacao-item { padding: .9rem 1rem; border: .0625rem solid var(--line); border-radius: .375rem; background: var(--card); }
.avaliacao-header { display: flex; flex-wrap: wrap; align-items: baseline; gap: .4rem .75rem; margin-bottom: .35rem; }
.avaliacao-periodo { font-weight: 700; }
.avaliacao-epoca { color: var(--muted); font-size: .9375rem; }
.avaliacao-parecer { margin: 0 0 .35rem; }

/* ─── Fase 3: impressão A4 (pautas, relatórios, listas de presenças e fichas de turma) ─── */
@media print {
  @page { size: A4; margin: 14mm; }
  html, body { background: #fff; color: #000; }
  .skip-link, .site-header, .site-footer, .breadcrumbs, .back-to-top, .busy-overlay, .toolbar, .actions, .activities-actions, .page-indice, .faq-toc, .legal-index, .wizard-progress, .print-oculto, .gestao-nav, .gestao-nav-toggle, .gestao-nav-overlay, .gestao-nav-recolher { display: none !important; }
  main { max-width: none; margin: 0; padding: 0; }
  .gestao-shell { display: block; }
  a { color: #000; text-decoration: none; }
  .table-wrap { overflow: visible; box-shadow: none; border: 0; }
  table { width: 100%; border-collapse: collapse; }
  caption { caption-side: top; text-align: left; font-weight: 700; margin-bottom: .35rem; }
  th, td { border: .0625rem solid #000; padding: .3rem .4rem; }
  thead { display: table-header-group; }
  tr, .card, .faq-item, .payment-method, .contact-card, .panel, .aula-card, .avaliacao-item { break-inside: avoid; }
  h1, h2, h3 { break-after: avoid; }
  .panel, .card, .faq-item, .legal-section, .payment-method, .contact-card, .aula-card, .avaliacao-item { border-color: #000; box-shadow: none; background: #fff; }
}
