/* Aniversários e diálogos com a identidade do portal. */
.birthday-card{border-top:3px solid #eebd42}.birthday-month{text-transform:capitalize}.birthday-list{list-style:none;margin:0;padding:0}.birthday-list li{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--line)}.birthday-list li>div{flex:1;min-width:0}.birthday-list strong,.birthday-list small{display:block;overflow-wrap:anywhere}.birthday-list small{color:var(--muted)}.birthday-date{display:grid;place-items:center;width:44px;min-height:48px;flex-shrink:0;background:var(--gold);border-radius:14px;font:500 22px var(--display);color:var(--navy)}.birthday-today{color:var(--teal);font-weight:700;font-size:12px}.birthday-list-page{max-width:850px}
.birthday-portal{background:radial-gradient(ellipse at 80% 0,#fff1c06b,transparent 55%),var(--bg)}.birthday-portal .topbar{border-bottom-color:#e7bf61}.birthday-banner{display:flex;align-items:center;gap:18px;background:linear-gradient(115deg,var(--gold),var(--pink-soft),var(--sky));border:1px solid var(--line);border-radius:22px;padding:24px;margin-bottom:24px;position:relative;isolation:isolate}.birthday-banner .birthday-banner-icon{font-size:38px;flex-shrink:0}.birthday-banner h2{font-size:clamp(22px,3vw,31px);margin:5px 0 8px;overflow-wrap:anywhere}.birthday-banner p{max-width:650px}.birthday-effects{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:12}.birthday-balloon{position:absolute;bottom:-160px;left:var(--left);width:39px;height:49px;background:var(--balloon);border-radius:50% 50% 47% 47%;opacity:.38;animation:birthday-rise var(--duration) linear var(--delay) infinite}.birthday-balloon::before{content:'';position:absolute;width:8px;height:10px;background:var(--balloon);bottom:-6px;left:16px;clip-path:polygon(50% 0,100% 100%,0 100%)}.birthday-balloon::after{content:'';position:absolute;width:1px;height:70px;left:19px;top:55px;background:var(--muted);opacity:.5}.birthday-balloon i{position:absolute;width:8px;height:15px;left:8px;top:8px;border-radius:50%;background:#ffffff90;transform:rotate(25deg)}
@keyframes birthday-rise{0%{transform:translate3d(0,0,0) rotate(-8deg)}50%{transform:translate3d(20px,-55vh,0) rotate(8deg)}100%{transform:translate3d(-10px,calc(-100vh - 240px),0) rotate(-5deg)}}
.birthday-motion-control{margin-top:14px}.birthday-motion-control .btn{font-size:12px}.mail-manual-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.mail-manual-actions .btn{margin:0;min-height:42px}.portal-dialog{width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:28px;border:1px solid var(--line);border-radius:24px;background:var(--surface);color:var(--ink);box-shadow:0 22px 90px #10233b40;overflow:auto}.portal-dialog::backdrop{background:#10233b80;backdrop-filter:blur(3px)}.portal-dialog-symbol{display:grid;place-items:center;width:46px;height:46px;border-radius:15px;background:var(--gold);color:var(--navy);font:500 25px var(--display);margin-bottom:18px}.portal-dialog h2{font-size:26px;margin:6px 0 14px}.portal-dialog #portal-dialog-description{white-space:pre-line;overflow-wrap:anywhere;color:var(--muted)}.portal-dialog label{display:grid;gap:8px;margin-top:22px;font-weight:600}.portal-dialog .form-actions{justify-content:flex-end;margin-top:26px}.portal-dialog .btn{min-height:43px}.portal-dialog .inline-error{margin-top:8px}.birthday-paused .birthday-balloon{animation-play-state:paused}
@media(max-width:760px){.birthday-banner{padding:20px;gap:12px;align-items:flex-start}.birthday-banner .birthday-banner-icon{font-size:28px}.birthday-balloon{width:29px;height:37px}.birthday-balloon::before{left:11px}.birthday-balloon::after{left:14px;top:43px}.birthday-list li{gap:10px}.mail-manual-actions{display:grid;grid-template-columns:1fr}.mail-manual-actions .btn{width:100%}.portal-dialog{padding:22px}.portal-dialog .form-actions{display:grid;grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){.birthday-balloon{animation:none;bottom:auto;top:22%;opacity:.14}.birthday-balloon:nth-child(even){top:65%}.birthday-motion-control{display:none}}
@media print{.birthday-effects,.birthday-motion-control,.portal-dialog{display:none!important}.birthday-banner{break-inside:avoid}.birthday-portal{background:none}}
/* Protege a tela enquanto a sessão é conferida após retorno à aba. */
html.portal-session-covered #app,html.portal-session-covered dialog,html.portal-session-covered #toast,html.portal-session-covered #session-warning{visibility:hidden!important}
html.portal-session-covered::after{content:'Conferindo seu acesso ao portal…';position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;padding:24px;background:var(--bg,#f6f8fb);color:var(--ink,#17334a);font:600 1rem/1.5 system-ui,sans-serif;text-align:center}
#session-warning{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:1000;width:min(92vw,650px);padding:16px 20px;border:1px solid #e9c572;border-radius:14px;background:#fff5da;color:#493812;box-shadow:0 8px 30px #17334a20;font-size:.94rem;line-height:1.5}

/* Segurança 3: confirmação de acesso e navegadores pessoais. */
.access-code{font-size:1.5rem;letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums}
.login-box .access-trust{display:flex;align-items:flex-start;gap:10px;font-weight:500;margin-top:18px}
.login-box .access-trust input{width:18px;min-width:18px;height:18px;margin:2px 0 0;accent-color:var(--primary,#4678ba)}
.trusted-browser-list{list-style:none;padding:0;margin:0 0 18px}
.trusted-browser-list li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--border,#e4e9ef)}
.trusted-browser-list p{font-size:.85rem;margin:6px 0 0}
@media(max-width:540px){.trusted-browser-list li{align-items:flex-start;flex-direction:column}.login-box .form-actions{flex-wrap:wrap}}

/* Passkeys da direção. */
.recovery-box{width:min(760px,100%);margin:auto;padding:24px}
.recovery-codes{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.9rem;line-height:1.9;background:var(--bg,#f2f5fa);padding:18px;border-radius:12px;user-select:all}
.passkey-card .form-actions{flex-wrap:wrap}
.login-box details{margin:24px 0}.login-box details form{margin-top:16px}

/* Recado compartilhado por turma/data. */
.common-day-note{margin:0 0 20px}.common-day-note>label{font-weight:700}.common-day-note textarea{width:100%;min-height:100px;resize:vertical}.common-day-note .field-help{margin:8px 0}.agenda-day-message{margin:16px 0;padding:14px 16px;border-left:3px solid var(--blue,#2177bc);background:var(--sky,#f1f8ff);border-radius:10px}.agenda-day-message h3{margin:0 0 8px;font-size:1rem}.agenda-day-message p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
