/* =========================================================================
   Nossa Clínica — componentes globais do plugin (mobile first)
   Tokens vêm do theme.json (--wp--preset--*) com fallback.
   ========================================================================= */
:root {
	--nc-primary: var(--wp--preset--color--primary, #0e5aa7);
	--nc-primary-deep: var(--wp--preset--color--primary-deep, #0a3e73);
	--nc-secondary: var(--wp--preset--color--secondary, #0f7f78);
	--nc-accent: var(--wp--preset--color--accent, #f2a541);
	--nc-surface: var(--wp--preset--color--surface, #f6f8fb);
	--nc-surface-warm: var(--wp--preset--color--surface-warm, #fff7ee);
	--nc-ink: var(--wp--preset--color--ink, #1a2433);
	--nc-ink-soft: var(--wp--preset--color--ink-soft, #4a5568);
	--nc-line: var(--wp--preset--color--line, #d9e1ec);
	--nc-white: #fff;
	--nc-success: var(--wp--preset--color--success, #1e7f4f);
	--nc-warning: var(--wp--preset--color--warning, #8a5a00);
	--nc-danger: var(--wp--preset--color--danger, #b42318);
	--nc-wa: #128c4b;
	--nc-radius-sm: 8px;
	--nc-radius-md: 16px;
	--nc-radius-lg: 28px;
	--nc-radius-pill: 999px;
	--nc-shadow-1: 0 1px 2px rgba(16, 40, 72, .06), 0 2px 8px rgba(16, 40, 72, .06);
	--nc-shadow-2: 0 8px 24px rgba(16, 40, 72, .10);
	--nc-shadow-3: 0 18px 48px rgba(16, 40, 72, .16);
	--nc-focus: 0 0 0 3px var(--nc-white), 0 0 0 6px var(--nc-primary-deep);
	--motion-fast: 160ms;
	--motion-base: 280ms;
	--motion-slow: 520ms;
	--ease-out: cubic-bezier(.22, 1, .36, 1);
	--ease-in-out: cubic-bezier(.65, 0, .35, 1);
	--nc-text-scale: 1;
}

/* Ícones do sprite: traço herdado. */
.nc-icon { flex: none; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; vertical-align: middle; }

.screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; }

/* ----------------------------------------------------------------- Botões */
.nc-btn {
	--_bg: transparent; --_fg: var(--nc-primary-deep); --_bd: transparent;
	display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
	min-height: 48px; padding: .75rem 1.25rem; border: 2px solid var(--_bd); border-radius: var(--nc-radius-pill);
	background: var(--_bg); color: var(--_fg); font: inherit; font-weight: 650; line-height: 1.2; text-decoration: none; cursor: pointer;
	position: relative; overflow: hidden; isolation: isolate;
	transition: transform var(--motion-fast) var(--ease-out), box-shadow var(--motion-base) var(--ease-out), background-color var(--motion-base), color var(--motion-base), border-color var(--motion-base);
}
.nc-btn::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--_hover, rgba(255, 255, 255, .16)); transform: scaleX(0); transform-origin: var(--_origin, left); transition: transform var(--motion-base) var(--ease-out); }
.nc-btn:hover::before { transform: scaleX(1); }
.nc-btn:hover .nc-icon { transform: translateX(3px); }
.nc-btn .nc-icon { transition: transform var(--motion-base) var(--ease-out); }
.nc-btn:active { transform: scale(.98); }
.nc-btn:focus-visible { outline: none; box-shadow: var(--nc-focus); }
.nc-btn[disabled], .nc-btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }
.nc-btn--primary { --_bg: var(--nc-primary); --_fg: var(--nc-white); --_bd: var(--nc-primary); box-shadow: 0 6px 18px rgba(14, 90, 167, .25); }
.nc-btn--primary:hover { --_bg: var(--nc-primary-deep); --_bd: var(--nc-primary-deep); box-shadow: 0 10px 26px rgba(14, 90, 167, .32); }
.nc-btn--outline { --_bd: currentColor; --_hover: rgba(14, 90, 167, .08); }
.nc-btn--ghost { --_hover: rgba(14, 90, 167, .08); text-decoration: underline; text-underline-offset: .2em; }
.nc-btn--light { --_bg: var(--nc-white); --_fg: var(--nc-primary-deep); --_bd: var(--nc-white); --_hover: rgba(14, 90, 167, .08); }
.nc-btn--ghost-light { --_fg: var(--nc-white); --_bd: rgba(255, 255, 255, .75); }
.nc-btn--lg { min-height: 56px; padding: .9rem 1.6rem; font-size: 1.0625rem; }
.nc-btn--block { width: 100%; }
.nc-btn--sm { min-height: 44px; padding: .5rem .9rem; font-size: .9375rem; gap: .4rem; }
.nc-icon-btn { display: inline-grid; place-items: center; width: 48px; height: 48px; border: 0; border-radius: 50%; background: transparent; color: inherit; cursor: pointer; }
.nc-icon-btn:hover { background: rgba(14, 90, 167, .08); }
.nc-icon-btn:focus-visible { outline: none; box-shadow: var(--nc-focus); }

/* ---------------------------------------------------- Botões flutuantes */
.nc-fab { position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom)); z-index: 90; display: flex; flex-direction: column; align-items: flex-end; gap: 12px; pointer-events: none; transition: transform var(--motion-base) var(--ease-out); }
/* Enquanto o aviso de cookies está aberto, no celular os botões saem de cena (sem cobrir conteúdo). */
@media (max-width: 1099px) { .has-cookie-banner .nc-fab { transform: translateY(calc(100% + 32px)); } }
.nc-fab__btn { pointer-events: auto; position: relative; display: grid; place-items: center; width: 56px; height: 56px; border: 0; border-radius: 50%; color: var(--nc-white); background: var(--nc-primary-deep); box-shadow: var(--nc-shadow-2); cursor: pointer; text-decoration: none; transition: transform var(--motion-base) var(--ease-out), box-shadow var(--motion-base), opacity var(--motion-base); }
.nc-fab__btn:hover { transform: translateY(-2px) scale(1.04); box-shadow: var(--nc-shadow-3); }
.nc-fab__btn:focus-visible { outline: none; box-shadow: var(--nc-focus), var(--nc-shadow-2); }
.nc-fab__btn[hidden] { display: grid; opacity: 0; transform: translateY(12px) scale(.9); pointer-events: none; visibility: hidden; }
.nc-fab__btn--wa { width: 60px; height: 60px; background: var(--nc-wa); }
.nc-fab__btn--wa::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: 0 0 0 0 rgba(18, 140, 75, .5); animation: nc-pulse 2.4s var(--ease-out) 4s 2; }
.nc-fab__btn--a11y { background: var(--nc-white); color: var(--nc-primary-deep); border: 2px solid var(--nc-primary-deep); }
.nc-fab__btn--top { width: 48px; height: 48px; background: var(--nc-white); color: var(--nc-primary-deep); }
.nc-fab__ring { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.nc-fab__ring circle { fill: none; stroke: var(--nc-primary); stroke-width: 3; stroke-dasharray: 1; stroke-dashoffset: 1; }
.nc-fab__tip { position: absolute; right: calc(100% + 12px); top: 50%; translate: 0 -50%; white-space: nowrap; padding: .4rem .75rem; border-radius: var(--nc-radius-pill); background: var(--nc-ink); color: var(--nc-white); font-size: .9375rem; opacity: 0; transform: translateX(6px); transition: opacity var(--motion-base), transform var(--motion-base) var(--ease-out); pointer-events: none; }
.nc-fab__btn--wa:hover .nc-fab__tip, .nc-fab__btn--wa:focus-visible .nc-fab__tip { opacity: 1; transform: none; }
@keyframes nc-pulse { 70% { box-shadow: 0 0 0 16px rgba(18, 140, 75, 0); } 100% { box-shadow: 0 0 0 0 rgba(18, 140, 75, 0); } }

/* -------------------------------------------------------------- Diálogos */
.nc-dialog { width: min(560px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); padding: 0; border: 0; border-radius: var(--nc-radius-lg); background: var(--nc-white); color: var(--nc-ink); box-shadow: var(--nc-shadow-3); overflow: auto; overscroll-behavior: contain; }
.nc-dialog::backdrop { background: rgba(10, 30, 60, .45); backdrop-filter: blur(3px); }
.nc-dialog[open] { animation: nc-dialog-in var(--motion-base) var(--ease-out); }
.nc-dialog--side { margin: auto 12px 12px auto; }
.nc-dialog__body { padding: 1.25rem 1.25rem 1.5rem; }
.nc-dialog__head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .5rem; }
.nc-dialog__head h2 { margin: 0; font-size: 1.375rem; }
.nc-dialog__intro, .nc-dialog__small { color: var(--nc-ink-soft); margin: .25rem 0 1rem; }
.nc-dialog__small { font-size: .9375rem; margin-top: 1rem; }
.nc-dialog__foot { display: grid; gap: .5rem; margin-top: 1rem; }
.nc-dialog kbd { padding: .05rem .35rem; border: 1px solid var(--nc-line); border-radius: 4px; font: inherit; font-size: .875em; background: var(--nc-surface); }
@keyframes nc-dialog-in { from { opacity: 0; transform: translateY(16px) scale(.98); } }

/* Painel de acessibilidade */
.nc-a11y-size { border: 0; padding: 0; margin: 0 0 1rem; }
.nc-a11y-size legend { display: flex; gap: .5rem; align-items: center; font-weight: 650; margin-bottom: .5rem; }
.nc-seg { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; padding: 4px; border-radius: var(--nc-radius-md); background: var(--nc-surface); }
.nc-seg label { position: relative; }
.nc-seg input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.nc-seg span { display: grid; place-items: center; min-height: 48px; border-radius: 12px; font-weight: 700; transition: background var(--motion-fast), color var(--motion-fast); }
.nc-seg input:checked + span { background: var(--nc-primary); color: var(--nc-white); }
.nc-seg input:focus-visible + span { box-shadow: var(--nc-focus); }
.nc-a11y-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }

/* Switch */
.nc-switch-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .875rem 0; border-bottom: 1px solid var(--nc-line); cursor: pointer; }
.nc-switch-row--compact { padding: .6rem .75rem; border: 0; border-radius: 12px; }
.nc-switch-row--compact:hover { background: var(--nc-surface); }
.nc-switch-row > span { display: flex; gap: .6rem; align-items: center; }
.nc-switch-row__label { font-weight: 650; margin: 0; }
.nc-switch-row__desc { margin: .25rem 0 0; color: var(--nc-ink-soft); font-size: .9375rem; }
.nc-switch { appearance: none; flex: none; position: relative; width: 52px; height: 30px; border-radius: 999px; background: #8a97a8; cursor: pointer; transition: background var(--motion-base); margin: 0; }
.nc-switch::after { content: ""; position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; border-radius: 50%; background: var(--nc-white); box-shadow: var(--nc-shadow-1); transition: transform var(--motion-base) var(--ease-out); }
.nc-switch:checked { background: var(--nc-success); }
.nc-switch:checked::after { transform: translateX(22px); }
.nc-switch:disabled { opacity: .7; cursor: not-allowed; }
.nc-switch:focus-visible { outline: none; box-shadow: var(--nc-focus); }

/* ---------------------------------------------------------------- Cookies */
.nc-cookie { position: fixed; left: 0; right: 0; bottom: 0; z-index: 95; padding: 12px; padding-bottom: max(12px, env(safe-area-inset-bottom)); pointer-events: none; }
.nc-cookie__inner { pointer-events: auto; max-width: 980px; margin: 0 auto; padding: 1.25rem; border-radius: var(--nc-radius-lg); background: var(--nc-white); color: var(--nc-ink); box-shadow: var(--nc-shadow-3); border: 1px solid var(--nc-line); animation: nc-dialog-in var(--motion-slow) var(--ease-out); }
.nc-cookie__title { margin: 0 0 .25rem; font-size: 1.125rem; }
.nc-cookie__text { margin: 0 0 1rem; color: var(--nc-ink-soft); font-size: 1rem; }
.nc-cookie__text a { color: var(--nc-primary-deep); }
.nc-cookie__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.nc-cookie__actions [data-nc-consent="custom"] { grid-column: 1 / -1; min-height: 44px; padding-block: .4rem; }
@media (max-width: 639px) {
	.nc-cookie__inner { padding: 1rem 1rem .75rem; }
	.nc-cookie__title { font-size: 1.0625rem; }
	.nc-cookie__text { font-size: .9375rem; margin-bottom: .75rem; }
	.nc-cookie__actions .nc-btn { padding-inline: .75rem; }
}
@media (min-width: 640px) {
	.nc-cookie__actions { grid-template-columns: none; grid-auto-flow: column; justify-content: start; }
	.nc-cookie__actions [data-nc-consent="custom"] { grid-column: auto; }
}
@media (min-width: 960px) {
	.nc-cookie__inner { display: grid; grid-template-columns: 1fr auto; gap: 1.5rem; align-items: center; }
	.nc-cookie__inner > .nc-cookie__title { grid-column: 1; }
	.nc-cookie__text { grid-column: 1; margin: 0; }
	.nc-cookie__actions { grid-column: 2; grid-row: 1 / span 2; }
}

/* ---------------------------------------------------------- Status chip */
.nc-status { display: inline-flex; align-items: center; gap: .55rem; margin: 0; padding: .45rem .9rem .45rem .75rem; border-radius: var(--nc-radius-pill); background: var(--nc-white); color: var(--nc-ink); font-weight: 600; font-size: .9375rem; box-shadow: var(--nc-shadow-1); }
.nc-status__dot { width: 10px; height: 10px; border-radius: 50%; background: var(--nc-danger); position: relative; }
.nc-status.is-open .nc-status__dot { background: var(--nc-success); }
.nc-status.is-open .nc-status__dot::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 2px solid var(--nc-success); animation: nc-breathe 2.4s var(--ease-in-out) infinite; }
@keyframes nc-breathe { 0%, 100% { opacity: 0; transform: scale(.6); } 50% { opacity: .7; transform: scale(1.1); } }

/* ---------------------------------------------------------------- Alertas */
.nc-alert { display: flex; gap: .75rem; align-items: flex-start; padding: 1rem 1.125rem; border-radius: var(--nc-radius-md); border-left: 6px solid currentColor; background: var(--nc-surface); color: var(--nc-ink); margin: 0 0 1rem; }
.nc-alert > .nc-icon { margin-top: .1rem; }
.nc-alert p { margin: 0; }
.nc-alert p + p { margin-top: .35rem; }
.nc-alert--info { color: var(--nc-primary-deep); background: #eef4fb; }
.nc-alert--success { color: var(--nc-success); background: #ecf7f1; }
.nc-alert--warning { color: var(--nc-warning); background: #fff6e5; }
.nc-alert--error { color: var(--nc-danger); background: #fdeeed; }
.nc-alert > div { color: var(--nc-ink); }
.nc-alert:focus { outline: none; box-shadow: var(--nc-focus); }

/* --------------------------------------------- Guia de leitura e preferências */
.nc-reading-guide { position: fixed; left: 0; right: 0; top: 0; height: 48px; z-index: 89; pointer-events: none; background: rgba(242, 165, 65, .18); border-top: 2px solid var(--nc-accent); border-bottom: 2px solid var(--nc-accent); }
html { font-size: calc(100% * var(--nc-text-scale)); }
.nc-a11y-links a:not(.nc-btn):not(.nc-fab__btn) { text-decoration: underline !important; text-decoration-thickness: 2px !important; text-underline-offset: .2em; background: #fff3c4; color: #10243e !important; }
.nc-a11y-spacing body { letter-spacing: .12em; word-spacing: .16em; }
.nc-a11y-spacing p, .nc-a11y-spacing li { line-height: 2 !important; }
.nc-a11y-spacing p { margin-bottom: 2em; }
.nc-a11y-dyslexia body { font-family: Verdana, Tahoma, "Segoe UI", sans-serif !important; }
.nc-a11y-dyslexia body * { font-family: inherit !important; }
.nc-a11y-cursor, .nc-a11y-cursor * { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24'%3E%3Cpath d='M5 3l14 7-6 2-2 6z' fill='%23111' stroke='%23fff' stroke-width='1.5'/%3E%3C/svg%3E") 6 4, auto !important; }
.nc-a11y-motion *, .nc-a11y-motion *::before, .nc-a11y-motion *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }

/* Alto contraste: troca de tokens */
.nc-a11y-contrast {
	--nc-primary: #003a8c; --nc-primary-deep: #00224f; --nc-ink: #000; --nc-ink-soft: #1a1a1a; --nc-line: #000; --nc-surface: #fff; --nc-surface-warm: #fff;
	--wp--preset--color--primary: #003a8c; --wp--preset--color--primary-deep: #00224f; --wp--preset--color--secondary: #00524d; --wp--preset--color--ink: #000; --wp--preset--color--ink-soft: #111; --wp--preset--color--surface: #fff; --wp--preset--color--surface-warm: #fff; --wp--preset--color--line: #000;
}
.nc-a11y-contrast body { background: #fff !important; color: #000 !important; }
.nc-a11y-contrast a { color: #00224f; }
.nc-a11y-contrast *:focus-visible { outline: 4px solid #000 !important; outline-offset: 2px !important; }

@media (min-width: 768px) {
	.nc-dialog__body { padding: 1.75rem 2rem 2rem; }
	.nc-dialog--side { margin: auto 24px 24px auto; width: 420px; }
	.nc-fab { right: 24px; bottom: 24px; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

@media (forced-colors: active) {
	.nc-btn, .nc-fab__btn, .nc-switch { border: 2px solid ButtonText; }
	.nc-status__dot { forced-color-adjust: none; }
}

@media print {
	.nc-fab, .nc-cookie, .nc-dialog, .nc-reading-guide { display: none !important; }
}

/* ------------------------------------------------- Utilitários compartilhados */
.nc-stretched::after { content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: 1; }
.nc-stretched:focus-visible { outline: none; }
.nc-link-arrow { display: inline-flex; align-items: center; gap: .4rem; font-weight: 700; color: var(--nc-primary-deep); text-decoration: none; min-height: 44px; }
.nc-link-arrow:hover { text-decoration: underline; text-underline-offset: .2em; }
.nc-link-arrow .nc-icon { transition: transform var(--motion-base) var(--ease-out); }
.nc-link-arrow:hover .nc-icon { transform: translateX(4px); }
.nc-legal { margin: 0; font-size: .9375rem; line-height: 1.6; }
.nc-table-wrap { overflow-x: auto; border-radius: var(--nc-radius-md); }
.nc-table-wrap:focus-visible { outline: none; box-shadow: var(--nc-focus); }
.nc-table { width: 100%; min-width: 640px; border-collapse: collapse; background: var(--nc-white); }
.nc-table caption { text-align: left; font-weight: 700; padding: 0 0 .75rem; }
.nc-table th, .nc-table td { padding: .75rem 1rem; border-bottom: 1px solid var(--nc-line); text-align: left; vertical-align: top; }
.nc-table thead th { background: var(--nc-surface); font-size: .875rem; text-transform: uppercase; letter-spacing: .05em; }
.nc-crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: .25rem .5rem; margin: 0; padding: 0; font-size: .9375rem; color: var(--nc-ink-soft); }
.nc-crumbs li + li::before { content: "/"; margin-right: .5rem; color: #9aa6b5; }
.nc-crumbs a { color: var(--nc-primary-deep); text-decoration: none; display: inline-flex; min-height: 32px; align-items: center; }
.nc-crumbs a:hover { text-decoration: underline; }
.nc-sitemap { display: grid; gap: 2rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.nc-sitemap h2 { font-size: 1.25rem; }
.nc-sitemap ul { padding-left: 1.1rem; }
.nc-sitemap li { margin: .35rem 0; }

/* --------------------------------------------- Campos de formulário (globais) */
.nc-field { margin: 0 0 1.25rem; border: 0; padding: 0; min-width: 0; }
.nc-field[hidden] { display: none; }
.nc-field > label, .nc-field > legend, .nc-choices > legend { display: block; margin-bottom: .45rem; font-weight: 650; padding: 0; }
.nc-req, .nc-opt { font-weight: 500; color: var(--nc-ink-soft); font-size: .9375rem; }
.nc-field input[type="text"], .nc-field input[type="tel"], .nc-field input[type="email"], .nc-field input[type="search"], .nc-field select, .nc-field textarea {
	width: 100%; min-height: 52px; padding: .75rem 1rem; border: 2px solid #b8c4d3; border-radius: 14px; background: var(--nc-white); color: var(--nc-ink); font: inherit; font-size: 1.0625rem; transition: border-color var(--motion-fast), box-shadow var(--motion-fast);
}
.nc-field select { appearance: none; padding-right: 2.75rem; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%230a3e73' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; }
.nc-field input:hover, .nc-field select:hover, .nc-field textarea:hover { border-color: #7f90a6; }
.nc-field input:focus, .nc-field select:focus, .nc-field textarea:focus { outline: none; border-color: var(--nc-primary); box-shadow: 0 0 0 4px rgba(14, 90, 167, .18); }
.nc-field [aria-invalid="true"] { border-color: var(--nc-danger) !important; }
.nc-hint { margin: .4rem 0 0; color: var(--nc-ink-soft); font-size: .9375rem; }
.nc-error { display: flex; gap: .35rem; margin: .45rem 0 0; color: var(--nc-danger); font-weight: 650; font-size: .9375rem; }
.nc-error::before { content: "!"; display: grid; place-items: center; flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--nc-danger); color: #fff; font-size: .75rem; }
.nc-error[hidden], .nc-hint[hidden] { display: none; }
