/* Brumed — camada sazonal aditiva.
   Carregar depois de app.css. O motor remove data-campaign ao desativar.
   Cores operacionais, dados, formulários e navegação continuam no legado. */

.campaign-scene,
#campaignLoginCopy,
#campaignLoginTheme { display: none; }
[hidden].campaign-banner,
[hidden].campaign-daily-card,
[hidden].campaign-header-button { display: none !important; }

html[data-campaign] {
  --campaign-border: color-mix(in srgb, var(--campaign-color) 35%, var(--border));
  --campaign-focus: var(--campaign-ink);
  --campaign-on-color: #152019;
  --campaign-login-bg: #faf7ef;
  --campaign-login-text: #123e30;
  --campaign-login-muted: #506054;
  --campaign-login-surface: rgba(255, 253, 248, .88);
  --campaign-login-field: #fffdf8;
  --campaign-login-edge: rgba(135, 99, 34, .23);
  --campaign-login-shadow: rgba(116, 82, 31, .15);
  --campaign-ribbon-opacity: .18;
}
html[data-campaign][data-theme="dark"] {
  --campaign-login-bg: #061c15;
  --campaign-login-text: #f3f5e8;
  --campaign-login-muted: #c2cbbb;
  --campaign-login-surface: rgba(15, 38, 29, .89);
  --campaign-login-field: #142e24;
  --campaign-login-edge: rgba(245, 211, 145, .25);
  --campaign-login-shadow: rgba(0, 0, 0, .3);
  --campaign-ribbon-opacity: .16;
}
@media (prefers-color-scheme: dark) {
  html[data-campaign]:not([data-theme="light"]) {
    --campaign-login-bg: #061c15;
    --campaign-login-text: #f3f5e8;
    --campaign-login-muted: #c2cbbb;
    --campaign-login-surface: rgba(15, 38, 29, .89);
    --campaign-login-field: #142e24;
    --campaign-login-edge: rgba(245, 211, 145, .25);
    --campaign-login-shadow: rgba(0, 0, 0, .3);
    --campaign-ribbon-opacity: .16;
  }
}

/* O laço fotográfico enviado pela Brumed é exclusivo do Setembro Amarelo.
   As demais campanhas mantêm o vetor cromático para respeitar suas cores. */
.campaign-ribbon { position: relative; display: block; flex: 0 0 auto; color: var(--campaign-color, #b9811d); overflow: visible; }
.campaign-ribbon-vector { display: block; width: 100%; height: 100%; overflow: visible; shape-rendering: geometricPrecision; }
.campaign-ribbon-photo { display: none; position: absolute; top: 0; bottom: 0; left: 50%; width: auto; max-width: none; height: 100%; transform: translateX(-50%); object-fit: contain; }
.campaign-ribbon[data-ribbon-campaign="setembro"] .campaign-ribbon-photo { display: block; }
.campaign-ribbon[data-ribbon-campaign="setembro"] .campaign-ribbon-vector { display: none; }
.campaign-ribbon--mini { width: 18px; height: 26px; }
.campaign-ribbon--normal { width: 34px; height: 50px; }
.campaign-ribbon--hero { width: 100%; height: 100%; }
.campaign-ribbon--watermark { width: 110px; height: 160px; opacity: .12; }

/* Amanhecer: uma única cena atravessa a marca, o laço e o formulário. */
html[data-campaign] #login {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(320px, .88fr);
  align-items: center;
  gap: clamp(40px, 7vw, 116px);
  padding: clamp(34px, 5vw, 78px) max(6vw, calc((100vw - 1280px) / 2));
  isolation: isolate;
  overflow-x: hidden;
  overflow-y: auto;
  background: var(--campaign-login-bg);
  color: var(--campaign-login-text);
  animation: none;
}
html[data-campaign] #login :is(.login-bg, .login-grade, .login-atmo, .login-dark,
  #globeCanvas, .brm-marker, .brm-label, .globe-tip, .globe-caption, .campaign-login-original) { display: none !important; }
html[data-campaign] #campaignScene { display: block; position: absolute; inset: 0; overflow: hidden; z-index: 0; pointer-events: none; }
html[data-campaign] .campaign-scene::before {
  content: ""; position: absolute; inset: -12%;
  background: radial-gradient(ellipse at 67% 88%, color-mix(in srgb, var(--campaign-glow) 35%, transparent), transparent 58%),
    linear-gradient(145deg, transparent 24%, color-mix(in srgb, var(--campaign-hero-from) 7%, transparent) 61%, color-mix(in srgb, var(--campaign-hero-to) 18%, transparent));
  animation: campaignDawn 32s ease-in-out infinite alternate;
}
html[data-campaign] .campaign-scene::after {
  content: ""; position: absolute; inset: 0; opacity: .045;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%238a754e' filter='url(%23n)' opacity='.6' d='M0 0h160v160H0z'/%3E%3C/svg%3E");
}
html[data-campaign] .campaign-halo {
  position: absolute; left: 34%; top: 3%; width: min(68vw, 1050px); aspect-ratio: 1;
  border-radius: 50%; border: 1px solid color-mix(in srgb, var(--campaign-glow) 23%, transparent);
  box-shadow: 0 0 0 64px color-mix(in srgb, var(--campaign-glow) 4%, transparent), 0 0 0 128px color-mix(in srgb, var(--campaign-glow) 3%, transparent);
  background: radial-gradient(circle, color-mix(in srgb, var(--campaign-glow) 16%, transparent), transparent 66%);
  animation: campaignBreathe 19s ease-in-out infinite alternate;
}
html[data-campaign] .campaign-light {
  position: absolute; width: 72%; height: 70%; left: 25%; bottom: -40%; border-radius: 50%;
  background: var(--campaign-glow); filter: blur(95px); opacity: .22;
  animation: campaignBreathe 24s ease-in-out infinite alternate;
}
html[data-campaign] .campaign-hero-ribbon {
  position: absolute; width: clamp(440px, 53vw, 840px); height: min(98vh, 930px);
  left: 35%; top: -7%; transform: rotate(-16deg);
  opacity: var(--campaign-ribbon-opacity); filter: drop-shadow(4px 14px 8px color-mix(in srgb, var(--campaign-hero-from) 17%, transparent)) drop-shadow(-3px -7px 5px color-mix(in srgb, var(--campaign-glow) 65%, transparent));
}
html[data-campaign] #login .login-side {
  position: relative; grid-column: 1; grid-row: 1; width: 100%; min-width: 0;
  min-height: min(76vh, 680px); display: flex; gap: 36px; padding: 0; z-index: 3;
  color: var(--campaign-login-text); pointer-events: auto;
}
html[data-campaign] #login .ls-logo {
  width: clamp(210px, 19vw, 275px); max-width: 100%; filter: none;
  animation: campaignEnter .55s ease both;
}
html[data-campaign][data-theme="dark"] #login .ls-logo { filter: brightness(0) invert(1); }
@media (prefers-color-scheme: dark) {
  html[data-campaign]:not([data-theme="light"]) #login .ls-logo { filter: brightness(0) invert(1); }
}
html[data-campaign] #login .ls-mid { width: 100%; max-width: 570px; }
html[data-campaign] #campaignLoginCopy { display: block; }
.campaign-kicker {
  display: inline-flex; align-items: center; gap: 9px; color: var(--campaign-ink, var(--accent-strong));
  font-size: 11px; font-weight: 800; line-height: 1.5; text-transform: uppercase; letter-spacing: .13em;
}
html[data-campaign] #campaignLoginCopy .campaign-kicker {
  padding: 7px 12px; border: 1px solid var(--campaign-login-edge); border-radius: 99px;
  background: color-mix(in srgb, var(--campaign-login-surface) 65%, transparent);
  animation: campaignEnter .55s .06s ease both;
}
html[data-campaign] #campaignLoginCopy h1 {
  font-family: "Bricolage Grotesque", system-ui, sans-serif;
  font-size: clamp(40px, 4.35vw, 65px); font-weight: 600; letter-spacing: -.045em; line-height: 1.04;
  color: var(--campaign-login-text); margin: 24px 0 21px; max-width: 15ch;
  text-wrap: balance; animation: campaignEnter .6s .12s ease both;
}
html[data-campaign] #campaignLoginCopy > p {
  color: var(--campaign-login-muted); font-size: clamp(14px, 1.2vw, 16px); line-height: 1.75;
  max-width: 42ch; animation: campaignEnter .6s .18s ease both;
}
.campaign-login-message {
  max-width: 43ch; margin-top: 28px; padding-left: 17px;
  border-left: 2px solid var(--campaign-color); animation: campaignEnter .6s .24s ease both;
}
.campaign-login-message small,
.campaign-daily-card small {
  display: block; font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
  color: var(--campaign-ink, var(--accent-strong)); margin-bottom: 8px;
}
.campaign-login-message blockquote { font-size: 15px; line-height: 1.6; color: var(--campaign-login-text); font-weight: 500; overflow-wrap: anywhere; }
.campaign-support { display: inline-block; font-size: 12px; line-height: 1.6; color: var(--fg-2); overflow-wrap: anywhere; text-decoration: none; }
a.campaign-support:hover { color: var(--campaign-ink, var(--accent-strong)); text-decoration: underline; }
html[data-campaign] #campaignLoginCopy .campaign-support { margin-top: 15px; color: var(--campaign-login-muted); font-size: 11px; }
html[data-campaign] #login .ls-foot { color: var(--campaign-login-muted); font-size: 11px; font-weight: 600; letter-spacing: .04em; }
html[data-campaign] #loginRight {
  position: relative; grid-column: 2; grid-row: 1; inset: auto;
  min-width: 0; width: 100%; overflow: visible; z-index: 4;
}
html[data-campaign] #login .login-box.glass {
  position: relative; inset: auto; transform: none; width: 100%; max-width: 430px; margin: 0 auto;
  padding: clamp(28px, 3vw, 42px); border: 1px solid var(--campaign-login-edge); border-radius: 28px;
  background: linear-gradient(135deg, color-mix(in srgb, var(--campaign-glow) 9%, var(--campaign-login-surface)), var(--campaign-login-surface) 43%);
  color: var(--campaign-login-text);
  box-shadow: 0 30px 85px -25px var(--campaign-login-shadow), 0 0 72px -30px color-mix(in srgb, var(--campaign-glow) 40%, transparent), inset 0 1px 0 rgba(255,255,255,.28);
  backdrop-filter: blur(28px); -webkit-backdrop-filter: blur(28px);
  animation: campaignEnter .65s .3s ease both;
}
html[data-campaign] #login .login-box.glass .eyebrow { color: var(--campaign-ink); font-size: 10px; font-weight: 800; letter-spacing: .12em; }
html[data-campaign] #login .login-box.glass h2 { color: var(--campaign-login-text); font-family: "Bricolage Grotesque", system-ui, sans-serif; font-size: 29px; font-weight: 600; letter-spacing: -.03em; }
html[data-campaign] #login .login-box.glass .sub { color: var(--campaign-login-muted); margin-bottom: 28px; font-size: 13px; line-height: 1.5; }
html[data-campaign] #login .login-box.glass label { color: var(--campaign-login-text); font-size: 12px; }
html[data-campaign] #login .login-box.glass input {
  min-height: 50px; background: var(--campaign-login-field); color: var(--campaign-login-text);
  border-color: var(--campaign-login-edge); border-radius: 12px;
  transition: background-color .2s, box-shadow .2s, border-color .2s;
}
html[data-campaign] #login .login-box.glass input::placeholder { color: var(--campaign-login-muted); opacity: .85; }
html[data-campaign] #login .login-box.glass input:hover:not(:focus) { border-color: var(--campaign-ink); }
html[data-campaign] #login .login-box.glass input:focus {
  border-color: var(--campaign-ink); box-shadow: 0 0 0 4px color-mix(in srgb, var(--campaign-glow) 20%, transparent);
}
html[data-campaign] #login .login-box.glass input:-webkit-autofill {
  -webkit-text-fill-color: var(--campaign-login-text); caret-color: var(--campaign-login-text);
  box-shadow: 0 0 0 1000px var(--campaign-login-field) inset;
}
html[data-campaign] #login .login-box.glass .field-ico { stroke: var(--campaign-login-muted); }
html[data-campaign] #login .login-box.glass .field-eye {
  width: 44px; height: 44px; right: 3px; color: var(--campaign-login-muted); transition: color .18s, background .18s;
}
html[data-campaign] #login .login-box.glass .field-eye:hover { color: var(--campaign-ink); background: var(--campaign-soft); }
html[data-campaign] #loginPass { padding-right: 50px; }
html[data-campaign] #login .login-box.glass .linkbtn { color: var(--campaign-ink); font-size: 11px; min-height: 30px; }
html[data-campaign] #login .login-box.glass .btn {
  min-height: 51px; border: 1px solid color-mix(in srgb, var(--campaign-color) 65%, transparent);
  background: linear-gradient(175deg, var(--campaign-glow), var(--campaign-color)); color: var(--campaign-on-color);
  box-shadow: 0 9px 25px -12px color-mix(in srgb, var(--campaign-color) 65%, transparent), inset 0 1px 0 rgba(255,255,255,.3);
}
html[data-campaign] #login .login-box.glass .btn:hover:not(:disabled) {
  transform: translateY(-1px); filter: brightness(1.04);
  box-shadow: 0 13px 32px -12px color-mix(in srgb, var(--campaign-color) 70%, transparent), inset 0 1px 0 rgba(255,255,255,.4);
}
html[data-campaign] #login .login-box.glass .lf-foot,
html[data-campaign] #login .login-box.glass .lf-foot svg { color: var(--campaign-login-muted); stroke: currentColor; font-size: 10px; }
html[data-campaign] #login .login-box.glass .erro-msg { color: var(--st-falta); background: color-mix(in srgb, var(--st-falta) 10%, var(--campaign-login-field)); border-color: color-mix(in srgb, var(--st-falta) 40%, transparent); }
html[data-campaign] #loginStage .ls-msg { color: var(--campaign-login-text); text-shadow: none; }
html[data-campaign] #loginStage .ls-spin { border-top-color: var(--campaign-color); }
html[data-campaign] #campaignLoginTheme {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  position: absolute; right: 28px; top: 22px; z-index: 6; min-width: 44px; min-height: 44px;
  padding: 8px 12px; border: 1px solid var(--campaign-login-edge); border-radius: 99px;
  background: var(--campaign-login-surface); color: var(--campaign-login-text); font-size: 12px;
}

/* Camada operacional: somente ações, navegação e seleção. */
html[data-campaign] .dock a.on { color: var(--campaign-ink); background: var(--campaign-soft); border-color: var(--campaign-border); animation: none; box-shadow: none; }
html[data-campaign] .dock a.on svg { animation: none !important; }
html[data-campaign] :is(#tutorialNovoAgenda, #btnNovoTrab, #wNext),
.campaign-settings .btn-sm,
.campaign-dialog-actions .btn-sm {
  background: var(--campaign-color, var(--accent)); color: var(--campaign-on-color, #fff);
  border: 1px solid var(--campaign-border, var(--border)); min-height: 42px;
}
html[data-campaign] #wizard .steps .s.on .n { background: var(--campaign-color); color: var(--campaign-on-color); box-shadow: 0 0 0 1px var(--campaign-color); }
html[data-campaign] :is(#login, #view-agenda, #view-trabalhadores, #wizard) :is(input, select, textarea):focus { border-color: var(--campaign-ink); box-shadow: 0 0 0 3px var(--campaign-soft); }
html[data-campaign] :is(button, a, input, select, textarea):focus-visible,
:is(.campaign-settings, #campaignModal) :is(button, a, input, select, textarea):focus-visible {
  outline: 2px solid var(--campaign-focus, var(--accent-strong)); outline-offset: 3px;
}
.campaign-header-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; flex: 0 0 auto;
  min-width: 44px; min-height: 44px; padding: 9px 12px; border-radius: 12px;
  background: var(--campaign-soft); border: 1px solid var(--campaign-border);
  color: var(--campaign-ink); font-size: 12px; font-weight: 700;
}
.campaign-banner {
  position: relative; display: flex; align-items: center; gap: 21px; min-width: 0;
  padding: 22px 25px; margin-bottom: 18px; border: 1px solid var(--campaign-border);
  border-radius: 18px; background: linear-gradient(112deg, var(--campaign-soft), var(--surface) 76%);
}
.campaign-banner-copy { flex: 1; min-width: 0; }
.campaign-banner-copy small { display: block; margin-bottom: 5px; color: var(--campaign-ink); font-size: 10px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.campaign-banner-copy h2,
.campaign-banner-copy strong { display: block; font-size: 17px; font-weight: 700; color: var(--text); line-height: 1.35; }
.campaign-banner-copy p { margin-top: 7px; color: var(--fg-2); font-size: 13px; line-height: 1.6; overflow-wrap: anywhere; }
.campaign-banner-copy .campaign-kicker { margin-bottom: 5px; }
.campaign-banner-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.campaign-banner-actions button,
.campaign-daily-card button { min-height: 42px; padding: 9px 12px; border: 1px solid var(--campaign-border); border-radius: 11px; color: var(--campaign-ink); background: var(--surface); font-size: 12px; font-weight: 700; }
.campaign-banner-actions button:hover,
.campaign-daily-card button:hover { background: var(--campaign-soft); }
.campaign-banner.is-compact { min-height: 61px; padding: 9px 17px; gap: 13px; }
.campaign-banner.is-compact .campaign-ribbon { width: 21px; height: 31px; }
.campaign-banner.is-compact .campaign-banner-copy h2,
.campaign-banner.is-compact .campaign-banner-copy strong { font-size: 13px; }
.campaign-banner.is-compact .campaign-banner-copy small { font-size: 9px; margin-bottom: 2px; }
.campaign-banner.is-compact .campaign-kicker { margin: 0; font-size: 10px; }
.campaign-banner.is-compact .campaign-banner-message { display: none; }
.campaign-banner.is-compact .campaign-banner-actions button { min-height: 40px; padding: 7px 11px; }
.campaign-daily-card {
  display: flex; align-items: center; gap: 16px; padding: 17px 19px; margin-bottom: 18px;
  border: 1px solid var(--campaign-border); border-radius: 15px; background: var(--surface);
}
.campaign-daily-card > div { flex: 1; min-width: 0; }
.campaign-daily-card blockquote { color: var(--text); font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.campaign-daily-card p { color: var(--campaign-ink); font-size: 11px; margin-top: 6px; }
.campaign-daily-card .campaign-ribbon { width: 25px; height: 36px; }

/* Modal próprio: altura controlada, leitura e ações alcançáveis. */
#campaignModal { align-items: center; padding: 20px; }
#campaignModal .campaign-message-dialog {
  position: relative; width: min(100%, 490px); max-height: calc(100dvh - 40px); overflow: auto;
  border: 1px solid var(--campaign-border); border-radius: 25px; padding: 0;
  background: linear-gradient(150deg, var(--campaign-soft), var(--surface) 54%);
  color: var(--text); box-shadow: 0 24px 80px rgba(0,0,0,.23);
}
#campaignModal .campaign-message-dialog > .campaign-ribbon { margin: 0 0 22px; }
#campaignModal .campaign-message-dialog .mh { padding: 17px 22px 10px; border: 0; background: transparent; backdrop-filter: none; }
#campaignModal .campaign-message-dialog .mh h3 { color: var(--fg-2); font-family: inherit; font-weight: 700; font-size: 11px; line-height: 1.4; letter-spacing: .03em; }
#campaignModal .campaign-message-dialog .mh h3::before { display: none; }
#campaignModal .campaign-message-dialog .mh button { min-width: 44px; min-height: 44px; font-size: 22px; }
#campaignModal .campaign-message-dialog .mb { padding: 10px clamp(25px, 4vw, 38px) 24px; }
#campaignModalBody > .campaign-ribbon { margin-bottom: 22px; }
#campaignModalBody > .campaign-kicker { margin-bottom: 15px; }
#campaignModal .campaign-message-dialog .mf { padding: 15px clamp(25px, 4vw, 38px) 23px; margin: 0; background: transparent; border-color: var(--border); }
#campaignModal .campaign-message-dialog h2 { color: var(--campaign-ink); font-size: 11px; text-transform: uppercase; letter-spacing: .13em; margin: 0 42px 14px 0; }
#campaignModal .campaign-message-dialog blockquote { font-family: "Bricolage Grotesque", system-ui, sans-serif; font-size: clamp(25px, 4vw, 32px); font-weight: 500; letter-spacing: -.03em; line-height: 1.22; text-wrap: balance; overflow-wrap: anywhere; }
#campaignModal .campaign-message-dialog > p { font-size: 13px; line-height: 1.65; color: var(--fg-2); margin-top: 19px; }
#campaignModal .campaign-support { padding-top: 18px; margin-top: 22px; border-top: 1px solid var(--border); }
#campaignModal .campaign-message-dialog > button,
#campaignModal .campaign-dialog-close { position: absolute; right: 15px; top: 15px; min-width: 44px; min-height: 44px; border-radius: 50%; background: var(--surface); color: var(--fg-2); border: 1px solid var(--border); font-size: 21px; }
.campaign-dialog-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.campaign-dialog-actions button { min-height: 44px; padding: 10px 15px; border-radius: 12px; font-weight: 700; }

/* Administração: edição persistente e preview compartilham componentes. */
.campaign-settings { grid-column: 1 / -1; min-width: 0; }
.campaign-settings .ph { gap: 12px; flex-wrap: wrap; }
.campaign-settings .ph small { display: block; margin-top: 4px; color: var(--fg-2); font-size: 11px; line-height: 1.5; }
.campaign-settings .pb { min-width: 0; }
.campaign-settings .hint { color: var(--fg-2); line-height: 1.6; }
.campaign-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.campaign-fields > div,
.campaign-fields > label { min-width: 0; }
.campaign-fields label { color: var(--fg-2); font-size: 12px; line-height: 1.5; }
.campaign-fields :is(input, select) { min-width: 0; max-width: 100%; margin: 6px 0 0; min-height: 44px; }
.campaign-settings :is(input[type="checkbox"], .campaign-message-row input[type="checkbox"]) { width: 19px; height: 19px; min-height: 0; margin: 0; flex: 0 0 19px; accent-color: var(--campaign-ink, var(--accent)); }
.campaign-settings label:has(input[type="checkbox"]) { display: flex; align-items: center; gap: 10px; min-height: 44px; margin: 0; }
.campaign-messages-list { display: grid; gap: 10px; margin: 16px 0; }
.campaign-messages-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 24px 0 12px; }
.campaign-messages-heading h4 { color: var(--text); font-size: 14px; }
.campaign-messages-heading h4 span { margin-left: 5px; color: var(--fg-2); font-size: 11px; font-weight: 500; }
.campaign-messages-heading button { min-height: 44px; }
.campaign-message-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 14px; padding: 14px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface-2); min-width: 0; }
.campaign-message-row textarea { grid-column: 1/-1; width: 100%; min-height: 84px; margin: 0; resize: vertical; font-size: 13px; line-height: 1.6; }
.campaign-message-row > label { grid-column: 1; font-size: 11px; color: var(--fg-2); }
.campaign-message-row > label:first-child { grid-column: 1 / -1; display: grid; gap: 7px; margin-bottom: 0; }
.campaign-message-content { min-width:0; }
.campaign-message-kicker {
  color:var(--campaign-ink,var(--accent-strong)); font-size:9px; font-weight:850;
  letter-spacing:.09em; text-transform:uppercase;
}
.campaign-message-date {
  color:var(--text); font-family:"Bricolage Grotesque",system-ui,sans-serif;
  font-size:14px; line-height:1.35; text-wrap:pretty; overflow-wrap:anywhere;
}
.campaign-message-content > small { color:var(--muted); font-size:10px; line-height:1.45; font-variant-numeric:tabular-nums; }
.campaign-message-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 5px; }
.campaign-message-actions button { min-width: 40px; min-height: 40px; padding: 8px 10px; font-size: 11px; border: 1px solid var(--border-2); border-radius: 9px; background: var(--surface); color: var(--fg-2); }
.campaign-message-actions button:hover { border-color: var(--campaign-ink, var(--accent)); }
.campaign-message-actions button:disabled { opacity: .42; cursor: default; }
.campaign-message-actions button[data-campaign-action="delete"] { color: var(--st-falta); }
.campaign-preview { margin-top: 20px; padding: 20px; border-radius: 15px; border: 1px solid var(--campaign-border, var(--border)); background: linear-gradient(145deg, var(--campaign-soft, var(--surface-2)), var(--surface)); overflow-wrap: anywhere; }
.campaign-preview .campaign-ribbon { margin-bottom: 14px; }
.campaign-preview h3 { font-size: 12px; color: var(--campaign-ink, var(--accent-strong)); margin-bottom: 10px; }
.campaign-preview blockquote { font-family: "Bricolage Grotesque", system-ui, sans-serif; color: var(--text); font-size: 22px; line-height: 1.35; }
.campaign-preview .campaign-support { margin-top: 15px; }
.campaign-settings-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 20px; }
.campaign-settings-actions button { min-height: 44px; }
.campaign-admin-status { min-height: 22px; margin-top: 12px; font-size: 12px; line-height: 1.55; color: var(--fg-2); overflow-wrap: anywhere; }
.campaign-admin-status.is-error { color: var(--st-falta); }

/* Tela administrativa dedicada. O editor continua usando o mesmo estado e os
   mesmos endpoints; esta camada apenas organiza tema e mensagens lado a lado. */
.nav-campaign-ribbon,
.dock-campaign-ribbon { display:block; width:20px; height:20px; object-fit:contain; }
.profile-menu .nav-campaign-ribbon { flex:0 0 19px; width:19px; height:19px; }
.dock .dock-campaign-ribbon { flex:0 0 20px; }
.settings-overview-ribbon img { display:block; width:24px; height:24px; object-fit:contain; }
.campaigns-view { min-width:0; padding-bottom:24px; }
.campaigns-page-head { align-items:flex-end; }
.campaigns-access-badge,
.campaign-admin-security {
  display:inline-flex; align-items:center; gap:7px; min-height:30px; padding:6px 10px;
  border:1px solid var(--campaign-border,var(--border)); border-radius:999px;
  color:var(--campaign-ink,var(--accent-strong)); background:var(--campaign-soft,var(--surface-2));
  font-size:10px; font-weight:850; letter-spacing:.045em; white-space:nowrap;
}
#view-campanhas .campaign-settings { border:0; background:transparent; box-shadow:none; }
#view-campanhas .campaign-settings > .ph {
  min-height:58px; margin-bottom:14px; padding:13px 16px; border:1px solid var(--border);
  border-radius:17px; background:var(--surface); box-shadow:var(--shadow-sm);
}
#view-campanhas .campaign-settings > .pb { padding:0; }
#view-campanhas .campaign-admin-status {
  min-height:0; margin:0 0 12px; padding:10px 13px; border:1px solid var(--border);
  border-radius:12px; background:var(--surface-2);
}
.campaign-admin-columns { display:grid; grid-template-columns:minmax(330px,.9fr) minmax(440px,1.25fr); gap:16px; align-items:start; }
.campaign-editor-card {
  min-width:0; padding:18px; border:1px solid var(--border); border-radius:19px;
  background:var(--surface); box-shadow:var(--shadow-sm);
}
.campaign-editor-head { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:14px; }
.campaign-editor-head h3,
.campaign-messages-heading h3 { color:var(--text); font-size:15px; letter-spacing:-.02em; }
.campaign-editor-head small,
.campaign-messages-heading small { display:block; margin-top:3px; color:var(--muted); font-size:10.5px; line-height:1.4; }
.campaign-active-control {
  flex:0 0 auto; min-height:38px!important; padding:7px 10px; border:1px solid var(--campaign-border);
  border-radius:999px; background:var(--campaign-soft); color:var(--campaign-ink)!important; font-weight:800;
}
.campaign-active-control span { white-space:nowrap; }
.campaign-theme-options { display:grid; gap:7px; }
.campaign-theme-option {
  display:grid; grid-template-columns:29px minmax(0,1fr) auto; align-items:center; gap:10px;
  width:100%; min-height:55px; padding:8px 11px; border:1px solid var(--border); border-radius:13px;
  background:var(--surface-2); color:var(--text); text-align:left; transition:border-color .16s,background .16s,transform .16s;
}
.campaign-theme-option:hover { transform:translateY(-1px); border-color:var(--campaign-border); }
.campaign-theme-option:focus-visible { outline:2px solid var(--campaign-focus,var(--accent-strong)); outline-offset:2px; }
.campaign-theme-option > i { width:27px; height:27px; border-radius:9px; background:var(--theme-swatch); box-shadow:inset 0 1px 0 rgba(255,255,255,.38); }
.campaign-theme-option > span { min-width:0; }
.campaign-theme-option b,
.campaign-theme-option small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.campaign-theme-option b { font-size:12px; }
.campaign-theme-option small { margin-top:2px; color:var(--muted); font-size:9.5px; }
.campaign-theme-option em { color:var(--muted); font-size:9px; font-style:normal; font-weight:900; letter-spacing:.045em; }
.campaign-theme-option.is-selected {
  border-color:var(--campaign-color); background:linear-gradient(110deg,var(--campaign-soft),var(--surface));
  box-shadow:0 0 0 1px color-mix(in srgb,var(--campaign-color) 20%,transparent);
}
.campaign-theme-option.is-selected em { color:var(--campaign-ink); }
.campaign-period-fields { margin-top:15px; padding-top:15px; border-top:1px solid var(--border); }
.campaign-period-fields label:last-child { grid-column:1/-1; }
#view-campanhas .campaign-preview { margin-top:15px; }
#view-campanhas .campaign-messages-heading { margin:0 0 10px; }
#view-campanhas .campaign-messages-heading > div { flex:1 1 190px; }
#view-campanhas .campaign-messages-heading h4 { margin-left:auto; }
#view-campanhas .campaign-messages-list {
  max-height:min(58vh,610px); margin:13px -4px 0 0; padding-right:6px; overflow:auto; overscroll-behavior:contain;
  scrollbar-color:color-mix(in srgb,var(--campaign-color) 45%,var(--border)) transparent;
}
#view-campanhas .campaign-settings-actions {
  position:static; margin:16px 0 0; padding:14px 0 0; border-top:1px solid var(--border);
  background:transparent; box-shadow:none;
}

html[data-campaign][data-campaign-intensity="discreta"] { --campaign-ribbon-opacity: .09; }
html[data-campaign-intensity="discreta"] :is(.campaign-halo, .campaign-light) { opacity: .12; animation: none; }
html[data-campaign][data-campaign-intensity="marcante"] { --campaign-ribbon-opacity: .24; }
.campaign-preview[data-campaign-intensity="discreta"] { background: var(--surface); }
.campaign-preview[data-campaign-intensity="marcante"] { background: var(--campaign-soft); border-color: var(--campaign-color); }
.campaign-preview.is-default { background: var(--surface-2); border-color: var(--border); }

/* Texto de erro legível; não altera tokens nem badges operacionais. */
.campaign-admin-status.is-error,
.campaign-message-actions button[data-campaign-action="delete"],
html[data-campaign] #login .login-box.glass .erro-msg { color: #b42318; }
[data-theme="dark"] .campaign-settings .btn-sm { color: #152019; }
[data-theme="dark"] .campaign-admin-status.is-error,
[data-theme="dark"] .campaign-message-actions button[data-campaign-action="delete"],
html[data-campaign][data-theme="dark"] #login .login-box.glass .erro-msg { color: #ffc0bc; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .campaign-settings .btn-sm { color: #152019; }
  :root:not([data-theme="light"]) .campaign-admin-status.is-error,
  :root:not([data-theme="light"]) .campaign-message-actions button[data-campaign-action="delete"],
  html[data-campaign]:not([data-theme="light"]) #login .login-box.glass .erro-msg { color: #ffc0bc; }
}

@keyframes campaignDawn { from { transform: translate3d(-1%, 0, 0) scale(1); } to { transform: translate3d(1%, -1%, 0) scale(1.04); } }
@keyframes campaignBreathe { from { opacity: .2; } to { opacity: .32; } }
@keyframes campaignEnter { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

@media (max-width: 1100px) and (min-width: 901px) {
  html[data-campaign] #login { gap: 35px; padding-left: 4vw; padding-right: 4vw; }
  html[data-campaign] #campaignLoginCopy h1 { font-size: 45px; }
}
@media (max-width: 900px) {
  .campaign-admin-columns { grid-template-columns:minmax(0,1fr); }
  #view-campanhas .campaign-messages-list { max-height:none; overflow:visible; padding-right:0; }
  #view-campanhas .campaign-settings-actions { position:static; }
  html[data-campaign] #login {
    grid-template-columns: minmax(0, 1fr); align-content: start; gap: 28px;
    padding: 38px max(24px, calc((100vw - 540px) / 2)) 30px;
  }
  html[data-campaign] #login .login-side { grid-column: 1; grid-row: 1; display: flex; min-height: 0; gap: 28px; }
  html[data-campaign] #loginRight { grid-column: 1; grid-row: 2; width: 100%; }
  html[data-campaign] #login .ls-logo { width: 215px; }
  html[data-campaign] #login .ls-foot { display: none; }
  html[data-campaign] #campaignLoginCopy h1 { font-size: 42px; max-width: 19ch; margin: 18px 0 14px; }
  html[data-campaign] #campaignLoginCopy > p { max-width: 48ch; font-size: 14px; }
  html[data-campaign] #login .login-box.glass { max-width: none; padding: 30px; }
  html[data-campaign] .campaign-hero-ribbon { left: 44%; top: -40px; width: 450px; height: 660px; opacity: .12; }
  html[data-campaign] .campaign-halo { left: 18%; top: 10%; width: 110vw; }
  html[data-campaign] .campaign-light { left: 10%; width: 100%; height: 60%; bottom: 0; opacity: .12; }
  .campaign-login-message { margin-top: 19px; max-width: none; }
  html[data-campaign] #campaignLoginTheme { right: 20px; top: 25px; }
  .campaign-banner { flex-wrap: wrap; gap: 14px; padding: 19px; }
  .campaign-banner-actions { margin-left: 48px; }
  .campaign-banner.is-compact .campaign-banner-actions { margin-left: 0; }
}
@media (max-width: 768px) {
  .campaign-fields { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .campaign-settings .panel { min-width: 0; }
  .campaign-header-button { padding: 8px; }
  .campaign-header-button > span { display: none; }
  .campaign-daily-card { align-items: flex-start; flex-wrap: wrap; gap: 12px; }
  .campaign-daily-card button { margin-left: 37px; }
  .campaign-banner.is-compact { gap: 10px; }
  .campaign-banner.is-compact .campaign-banner-actions { width: 100%; padding-left: 31px; }
  html[data-campaign] #view-agenda > .panel > .ph > div { min-width: 0; flex-wrap: wrap; gap: 9px !important; }
  html[data-campaign] #view-agenda > .panel > .ph { flex-wrap: wrap; gap: 10px; }
  html[data-campaign] #view-agenda .vista-tog button { min-height: 40px; }
  html[data-campaign] #view-agenda #tutorialNovoAgenda { white-space: normal; }
  html[data-campaign] #view-agenda .cal .day { min-width: 0; }
  html[data-campaign] #view-agenda .cal .day .agn { overflow: hidden; text-overflow: ellipsis; }
  html[data-campaign] #wizard :is(.f1, .sc-field, .dd, .dd-btn) { min-width: 0; max-width: 100%; }
  html[data-campaign] #wizard .rev-row b { overflow-wrap: anywhere; }
}
@media (max-width: 480px) {
  .campaigns-page-head { align-items:flex-start; }
  .campaigns-access-badge { display:none; }
  #view-campanhas .campaign-settings > .ph { align-items:flex-start; }
  .campaign-admin-security { white-space:normal; }
  .campaign-editor-card { padding:14px; border-radius:16px; }
  .campaign-editor-head { align-items:flex-start; flex-direction:column; }
  .campaign-active-control { width:100%; }
  .campaign-theme-option { grid-template-columns:27px minmax(0,1fr); }
  .campaign-theme-option em { grid-column:2; }
  html[data-campaign] #login { padding: 24px 20px 28px; gap: 23px; }
  html[data-campaign] #login .login-side { gap: 25px; }
  html[data-campaign] #login .ls-logo { width: 185px; }
  html[data-campaign] #campaignLoginTheme { top: 17px; right: 18px; min-width: 42px; min-height: 42px; padding: 8px; }
  html[data-campaign] #campaignLoginTheme span { display: none; }
  html[data-campaign] #campaignLoginCopy .campaign-kicker { font-size: 9px; padding: 6px 9px; }
  html[data-campaign] #campaignLoginCopy h1 { font-size: 36px; letter-spacing: -.04em; line-height: 1.07; margin: 16px 0 13px; }
  html[data-campaign] #campaignLoginCopy > p { font-size: 12px; line-height: 1.7; }
  .campaign-login-message { margin-top: 17px; padding-left: 13px; }
  .campaign-login-message small { font-size: 9px; margin-bottom: 5px; }
  .campaign-login-message blockquote { font-size: 13px; }
  html[data-campaign] #campaignLoginCopy .campaign-support { font-size: 10px; margin-top: 11px; }
  html[data-campaign] #login .login-box.glass { padding: 26px 23px; border-radius: 23px; }
  html[data-campaign] #login .login-box.glass h2 { font-size: 27px; }
  html[data-campaign] #login .login-box.glass input { font-size: 16px; }
  html[data-campaign] .campaign-hero-ribbon { width: 360px; height: 510px; left: 41%; top: 6px; opacity: .1; }
  html[data-campaign] .campaign-scene::after { opacity: .025; }
  .campaign-banner { padding: 15px; border-radius: 14px; }
  .campaign-banner-copy h2, .campaign-banner-copy strong { font-size: 15px; }
  .campaign-banner-copy p { font-size: 12px; }
  .campaign-banner .campaign-ribbon--normal { width: 26px; height: 38px; }
  .campaign-banner-actions { margin-left: 40px; gap: 7px; }
  .campaign-banner-actions button { font-size: 11px; min-height: 44px; padding: 8px 10px; }
  .campaign-banner.is-compact { padding: 10px 13px; }
  .campaign-daily-card { padding: 14px; }
  .campaign-daily-card blockquote { font-size: 13px; }
  .campaign-message-row { padding: 11px; gap: 9px; }
  .campaign-message-row > label { grid-column: 1/-1; }
  .campaign-message-actions { grid-column: 1/-1; justify-content: flex-start; }
  .campaign-message-actions button { min-width: 44px; min-height: 44px; }
  .campaign-settings-actions { align-items: stretch; }
  .campaign-settings-actions button { flex: 1 1 auto; justify-content: center; }
  #campaignModal { padding: 16px; }
  #campaignModal .campaign-message-dialog { max-height: calc(100dvh - 32px); padding: 0; border-radius: 22px; }
  #campaignModal .campaign-message-dialog .mh { padding: 12px 17px 8px; }
  #campaignModal .campaign-message-dialog .mb { padding: 10px 23px 24px; }
  #campaignModal .campaign-message-dialog .mf { padding: 15px 23px 23px; }
  .campaign-dialog-actions button { flex: 1; }
}
@media (max-height: 760px) and (min-width: 901px) {
  html[data-campaign] #login { padding-top: 34px; padding-bottom: 34px; }
  html[data-campaign] #login .login-side { min-height: 560px; gap: 24px; }
  html[data-campaign] #campaignLoginCopy h1 { font-size: 47px; }
  html[data-campaign] #login .ls-logo { width: 215px; }
}
@media (prefers-reduced-motion: reduce) {
  html[data-campaign] #login *, html[data-campaign] #login *::before, html[data-campaign] #login *::after,
  .campaign-banner, .campaign-banner *, .campaign-daily-card *, .campaign-settings *, #campaignModal *,
  html[data-campaign] .dock *, html[data-campaign] #wizard * {
    animation: none !important; transition: none !important; scroll-behavior: auto !important;
  }
  html[data-campaign] #login .login-box.glass,
  html[data-campaign] #login .login-box.glass .btn:hover:not(:disabled) { transform: none; }
}

/* ===================================================================
   Experiência sazonal 2026 — tradução do protótipo aprovado para o app.
   A camada continua aditiva: sem data-campaign, o visual institucional
   permanece intacto e nenhuma regra operacional é alterada.
   =================================================================== */
.campaign-banner,
.campaign-daily-card { isolation:isolate; overflow:hidden; }
.campaign-banner-aura {
  position:absolute; inset:-70% -12% auto auto; z-index:-1; width:430px; aspect-ratio:1;
  border-radius:50%; pointer-events:none; opacity:.62;
  background:radial-gradient(circle,color-mix(in srgb,var(--campaign-glow) 28%,transparent),transparent 68%);
  filter:blur(2px); animation:campaignBreathe 9s ease-in-out infinite alternate;
}
.campaign-banner {
  display:grid; grid-template-columns:auto minmax(0,1fr) minmax(230px,300px) auto;
  align-items:center; gap:clamp(16px,2.4vw,28px); min-height:160px;
  padding:clamp(20px,2.5vw,27px) clamp(20px,2.7vw,29px); border-radius:22px;
  background:linear-gradient(118deg,var(--campaign-soft),var(--surface) 74%);
  box-shadow:var(--shadow-sm); animation:campaignEnter .45s ease both;
}
.campaign-banner > .campaign-ribbon--normal { width:43px; height:65px; filter:drop-shadow(0 10px 18px color-mix(in srgb,var(--campaign-color) 23%,transparent)); }
.campaign-banner-copy small { letter-spacing:.14em; }
.campaign-banner-copy strong {
  font-family:"Bricolage Grotesque",sans-serif; font-size:clamp(23px,2.6vw,31px);
  line-height:1.08; letter-spacing:-.035em; text-wrap:balance;
}
.campaign-banner-copy p { max-width:54ch; margin-top:9px; font-size:14px; line-height:1.55; text-wrap:pretty; }
.campaign-banner-support {
  display:flex; flex-direction:column; gap:7px; min-width:0; padding:16px 18px;
  border:1px solid var(--campaign-border); border-radius:16px; background:var(--surface);
  box-shadow:var(--shadow-sm);
}
.campaign-banner-support b { color:var(--text); font-size:13.5px; line-height:1.35; }
.campaign-banner-support span { color:var(--fg-2); font-size:12px; line-height:1.5; }
.campaign-banner-support button {
  align-self:flex-start; min-height:30px; padding:3px 0; border-bottom:1px solid var(--campaign-border);
  color:var(--campaign-ink); font-size:11.5px; font-weight:800;
}
.campaign-banner-actions { align-self:start; margin-left:-12px; }
.campaign-banner-actions button[data-campaign-action="collapse"] { min-width:44px; font-size:0; padding:8px; }
.campaign-banner-actions button[data-campaign-action="collapse"]::before { content:"−"; font-size:18px; line-height:1; }
.campaign-banner.is-compact {
  display:flex; min-height:56px; padding:8px 14px; margin-bottom:12px; border-radius:15px; gap:11px;
}
.campaign-banner.is-compact .campaign-banner-aura,
.campaign-banner.is-compact .campaign-banner-support,
.campaign-banner.is-compact .campaign-banner-message { display:none; }
.campaign-banner.is-compact .campaign-banner-actions { margin-left:auto; }
.campaign-banner.is-compact > .campaign-ribbon--normal { width:24px; height:35px; filter:drop-shadow(0 6px 10px color-mix(in srgb,var(--campaign-color) 20%,transparent)); }
.campaign-banner.is-compact .campaign-banner-actions button[data-campaign-action="collapse"]::before { content:"+"; }

.campaign-daily-card {
  position:relative; min-height:128px; padding:clamp(20px,2.4vw,26px); border-radius:22px;
  background:linear-gradient(118deg,var(--campaign-soft),var(--surface) 72%); box-shadow:var(--shadow-sm);
}
.campaign-daily-card > .campaign-ribbon { width:32px; height:47px; }
.campaign-daily-card blockquote {
  max-width:48ch; font-family:"Bricolage Grotesque",sans-serif;
  font-size:clamp(19px,2vw,24px); line-height:1.22; letter-spacing:-.03em; text-wrap:pretty;
}
.campaign-daily-card .campaign-support { display:block; margin-top:10px; }

.campaign-context-strip {
  display:flex; align-items:center; gap:12px; min-height:58px; margin:-4px 0 17px; padding:10px 15px;
  border:1px solid var(--campaign-border); border-radius:15px;
  background:linear-gradient(105deg,var(--campaign-soft),var(--surface) 76%); box-shadow:var(--shadow-sm);
  animation:campaignEnter .35s ease both;
}
.campaign-context-strip > .campaign-ribbon { width:18px; height:28px; }
.campaign-context-strip > span { display:flex; flex:1; align-items:baseline; gap:7px; min-width:0; }
.campaign-context-strip b { flex:0 0 auto; color:var(--campaign-ink); font-size:11.5px; }
.campaign-context-strip span span { min-width:0; color:var(--fg-2); font-size:12px; line-height:1.45; overflow-wrap:anywhere; }
.campaign-context-strip button {
  flex:0 0 auto; padding:4px 0; border-bottom:1px solid var(--campaign-border);
  color:var(--campaign-ink); font-size:11.5px; font-weight:800; white-space:nowrap;
}
html[data-campaign] .page-head .eyebrow { color:var(--campaign-ink); }
html[data-campaign] .cal .day.today {
  border-color:var(--campaign-color); background:var(--campaign-soft);
}
html[data-campaign] .cal .day.today .dnum { background:var(--campaign-color); color:var(--campaign-on-color); }
html[data-campaign] .cal .day .cnt { color:var(--campaign-ink); background:var(--campaign-soft); }

@media (max-width:900px) {
  .campaign-banner { grid-template-columns:auto minmax(0,1fr); min-height:0; }
  .campaign-banner-support { grid-column:2; }
  .campaign-banner-actions { position:absolute; top:12px; right:12px; margin:0; }
}
@media (max-width:640px) {
  .campaign-banner { display:flex; align-items:flex-start; padding:17px 16px; border-radius:17px; }
  .campaign-banner > .campaign-ribbon--normal { width:28px; height:43px; }
  .campaign-banner-copy strong { font-size:20px; }
  .campaign-banner-copy p { font-size:12.5px; }
  .campaign-banner-support { width:100%; margin-left:40px; padding:13px 14px; }
  .campaign-banner:not(.is-compact) { flex-wrap:wrap; }
  .campaign-banner-actions { top:9px; right:9px; }
  .campaign-context-strip { align-items:flex-start; margin-top:-5px; padding:11px 13px; }
  .campaign-context-strip > span { display:grid; gap:3px; }
  .campaign-context-strip button { align-self:center; font-size:0; border:0; }
  .campaign-context-strip button::before { content:"Ver"; font-size:11px; }
}
