/* Shared visual system for the entire Área do Devoto. */
.portal-layout { --portal-sidebar:224px; --portal-header:88px; --ink:#193e5d; --muted:#60788c; --brand-gold:#b17c1c; --gold-700:#b17c1c; --gold-600:#b17c1c; --line:#e2e8ed; background:#f5f6f8; }
.portal-layout .site-frame { display:block; overflow:clip; background:#f5f6f8; }
.portal-layout .top-header { position:sticky; top:0; z-index:40; min-height:var(--portal-header); height:var(--portal-header); padding:12px 26px; background:#fffffffa; gap:24px; border-bottom:1px solid #e8edf1; }
.portal-layout .brand { flex:0 1 280px; min-width:160px; }
.portal-layout .brand-logo { max-width:280px; max-height:58px; }
.portal-layout .desktop-journey-nav { gap:25px; }
.portal-layout .desktop-journey-nav a,.portal-layout .desktop-journey-nav button { font-size:12px; }
.portal-layout .desktop-journey-nav [data-home-nav] { border-bottom-color:transparent; }
.portal-layout .desktop-journey-nav [aria-current=page] { border-bottom-color:#b17c1c; }
.portal-layout .top-header .header-account { min-height:52px; min-width:180px; border:0; border-radius:30px; background:#f2f5f8; }
.portal-layout .top-header .header-account-copy strong { font-size:13px; }
.portal-layout .header-user-initials { background:#194b6b; color:#fff; font-family:Georgia,serif; }
.portal-layout .portal-sidebar { display:flex !important; position:fixed; z-index:30; top:var(--portal-header); bottom:0; left:0; width:var(--portal-sidebar); overflow-y:auto; overscroll-behavior:contain; flex-direction:column; flex-wrap:nowrap; justify-content:flex-start; align-items:stretch; gap:4px; padding:18px 12px; background:linear-gradient(#fff,#f7f8fa); color:#26455e; border:0; box-shadow:none; scrollbar-width:thin; }
.portal-layout .portal-sidebar a { display:flex; flex:0 0 auto; align-items:center; gap:12px; min-height:42px; margin:0; padding:11px 12px; border:0; border-radius:7px; color:#26455e; font:12px/1.4 Arial,sans-serif; text-transform:none; white-space:normal; text-decoration:none; }
.portal-sidebar svg { flex:0 0 19px; width:19px; height:19px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.portal-layout .portal-sidebar a:hover,.portal-layout .portal-sidebar a[aria-current=page] { background:#f2ede3; color:#996714; }
.portal-resource-menu { border-top:1px solid #e9edf1; margin:12px 0 6px; padding-top:9px; flex-shrink:0; }
.portal-resource-menu summary { display:flex; justify-content:space-between; padding:12px; cursor:pointer; font:600 10px Arial,sans-serif; text-transform:uppercase; letter-spacing:1.2px; color:#7b8893; list-style:none; }
.portal-resource-menu summary::-webkit-details-marker { display:none; }
.portal-layout .portal-resource-menu a { font-size:12px; min-height:39px; padding-top:9px; padding-bottom:9px; }
.portal-layout .portal-sidebar .portal-give { background:#f4eee2; color:#996714; margin-top:8px; }
.portal-quote { position:relative; flex-shrink:0; min-height:160px; padding:28px 8px 15px; margin-top:16px; text-align:center; overflow:hidden; border-radius:10px; background:#f3f0e9; }
.portal-quote img { position:absolute; right:-25px; bottom:-60px; height:215px; opacity:.2; }
.portal-quote p { position:relative; font:20px/1.5 Georgia,serif; margin:0 0 10px; }
.portal-quote small { position:relative; font-size:10px; color:#60788c; }
.portal-layout .devotee-main,.portal-layout.account-page-open .devotee-main { width:calc(100% - var(--portal-sidebar)); max-width:none; margin:0 0 0 var(--portal-sidebar); padding:24px; min-height:calc(100svh - var(--portal-header)); }
.portal-layout .welcome-hero { margin:-24px -24px 24px; height:265px; border-radius:0; background-image:linear-gradient(90deg,#f5f3ef 5%,#f5f3efe6 40%,#f5f3ef25),url('../img/fatima-hero.png'); overflow:hidden; }
.portal-layout .welcome-copy { padding:34px; max-width:76%; }
.portal-layout .welcome-copy .welcome-eyebrow { font:700 28px/1.2 Georgia,serif; margin-bottom:10px; color:#173f5e; }
.portal-layout .welcome-copy h1 { font:400 24px/1.25 Georgia,serif; letter-spacing:0; }
.portal-layout .welcome-copy h1 br { display:none; }
.portal-layout .welcome-copy blockquote { margin-top:15px; }
.portal-layout .welcome-copy blockquote p { font-size:13px; }
.portal-layout .welcome-hero > img { height:290px; right:3%; bottom:-26px; }
.portal-layout .journey-shortcuts { margin:0 0 26px; padding:0; gap:14px; background:transparent; box-shadow:none; }
.portal-layout .journey-shortcuts button,.portal-layout .journey-shortcuts a { padding:18px 14px; border:0; border-radius:10px; background:#fff; }
.portal-layout .journey-shortcuts span { width:36px; height:36px; background:#f4eee3; color:#a67421; }
.portal-layout .journey-shortcuts strong { font:600 13px Arial,sans-serif; }
.portal-layout .journey-shortcuts small { font-size:11px; }
.portal-layout .resources { max-width:none; }
.portal-layout .section-head h2 { color:#193e5d; font:700 25px Georgia,serif; }
.portal-layout .section-head p { font-size:12px; color:#60788c; }
.portal-layout .resource-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:15px; }
.portal-layout .resource-card { display:grid; grid-template-columns:44px minmax(0,1fr) 12px; align-items:center; text-align:left; min-height:116px; padding:20px; gap:14px; background:#fff; color:#234660; border:1px solid #edf0f3; border-radius:10px; box-shadow:0 4px 16px #193e5d03; }
.portal-layout .resource-card::before,.portal-layout .resource-card::after { display:none; }
.portal-layout .resource-card:hover { border-color:#d7c39d; background:#fffdfa; transform:translateY(-2px); }
.portal-layout .resource-card .resource-icon { display:grid; place-items:center; margin:0; width:44px; height:44px; border-radius:50%; color:#aa7720; background:#f5efe3; }
.portal-layout .resource-card .resource-copy strong { color:#234660; font:600 14px/1.4 Arial,sans-serif; }
.portal-layout .resource-card .resource-copy small { display:block; color:#6c8090; font:11px/1.5 Arial,sans-serif; }
.portal-layout .resource-arrow { display:block; color:#9bafbd; align-self:center; padding:0; }
.portal-layout .blessing-banner { background:#f3efe6; border:0; border-radius:11px; margin-top:25px; }
.portal-layout .site-footer { margin-left:var(--portal-sidebar); padding:24px; background:#f0f2f5; color:#49667c; border-top:1px solid #e0e6ec; }
.portal-layout .site-footer a,.portal-layout .site-footer p { color:#49667c; }
.portal-layout .site-footer .footer-logo { content:url('../img/logo.svg'); }
.portal-layout .site-footer h3 { color:#9e721f; }
.portal-layout .site-footer .footer-bottom { border-color:#dce4eb; }
/* Shared surfaces and controls across reading, prayer, donation and account. */
.portal-layout :is(.bible-module,.guided-module,.devotion-module,.app-resource-module,.donation-page,.site-pages-module) { max-width:none; width:100%; margin:0; }
.portal-layout :is(.bible-shell,.guided-shell,.prayer-shell,.app-resource-shell,.site-pages-module) { border:1px solid #e6ebef; border-radius:12px; background:#fff; box-shadow:0 6px 24px #23455b05; overflow:hidden; }
.portal-layout :is(.bible-topbar,.guided-topbar,.prayer-topbar,.app-resource-topbar,.site-page-header) { background:linear-gradient(110deg,#f3f0e9,#f5f7f9); color:#234660; border-bottom:1px solid #e7ebee; padding:24px; }
.portal-layout :is(.bible-topbar,.guided-topbar,.prayer-topbar,.app-resource-topbar,.site-page-header) h2 { color:#173f5e; font-family:Georgia,serif; }
.portal-layout :is(.bible-topbar,.guided-topbar,.prayer-topbar,.app-resource-topbar) span { color:#9e721f; }
.portal-layout .module-subnav { background:#fafbfd; border-color:#e5eaf0; }
.portal-layout :is(.novena-day-card,.consecration-day-card,.guided-plan-card,.bible-book-card,.devotion-history,.donation-card) { border-color:#e4e9ee; border-radius:10px; box-shadow:none; }
.portal-layout :is(.primary-action,.banner-donate) { background:#b17c1c; color:#fff; border-color:#b17c1c; border-radius:7px; }
.portal-layout :is(.auth-form,.donation-form,.devotion-form,.chat-form) :is(input,select,textarea) { background:#f8f9fb; border:1px solid #dbe4ec; border-radius:6px; color:#24455f; }
.portal-layout .candle-module .candle-panel { background:#fffffff2; border:1px solid #e4e9ee; outline:0; border-radius:12px; box-shadow:0 10px 30px #142f4620; }
.portal-layout .rosary-module :is(.rosary-prayer-card,.rosary-progress,.rosary-actions,.rosary-layout) { background:#fffffff2; border-color:#e3e8ed; }
.portal-layout .rosary-module .rosary-shell,.portal-layout .candle-module .candle-shell { border-radius:12px; overflow:hidden; }
.portal-layout .rosary-module .rosary-shell { min-height:calc(100svh - 136px); }
.portal-layout .account-page-module { max-width:none; }
.portal-layout .account-page-shell { grid-template-columns:minmax(0,1fr); min-height:0; }
.portal-layout .account-page-shell .account-subnav { display:none; }
.portal-layout .account-page-shell .account-page-header { grid-column:1; margin:-24px -24px 0; }
.portal-layout .account-page-shell .account-page-content { grid-column:1; padding:24px 0 0; }
.portal-layout .auth-dialog,.portal-layout .resource-dialog { border:1px solid #e1e7ed; border-radius:14px; }
@media(min-width:821px) and (max-width:1150px) {
 .portal-layout { --portal-sidebar:200px; }
 .portal-layout .top-header { padding:12px 18px; gap:16px; }
 .portal-layout .brand { flex-basis:225px; }
 .portal-layout .desktop-journey-nav { gap:14px; }
 .portal-layout .desktop-journey-nav a,.portal-layout .desktop-journey-nav button { font-size:11px; }
 .portal-layout .top-header .header-account { min-width:155px; }
 .portal-layout .journey-shortcuts { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .portal-layout .resource-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .portal-layout .candle-module .candle-layout { grid-template-columns:minmax(0,1fr) minmax(0,360px); gap:15px; padding:25px; }
 .portal-layout .rosary-scene-quote { display:none; }
}
@media(max-width:820px) {
 .portal-layout { --portal-header:68px; padding-bottom:68px; }
 .portal-layout .top-header { padding:10px 16px; gap:12px; }
 .portal-layout .brand { min-width:0; flex:1; max-width:235px; }
 .portal-layout .top-header .header-account { min-width:0; min-height:38px; padding:4px; }
 .portal-layout .top-header .header-account-copy { display:none; }
 .portal-layout .header-user-initials { width:32px; height:32px; }
 .portal-layout .portal-sidebar { display:none !important; }
 .portal-layout.mobile-menu-open .portal-sidebar { display:flex !important; position:fixed; top:68px; bottom:68px; width:min(320px,100%); padding:16px; box-shadow:12px 0 35px #163a5a25; }
 .portal-layout.mobile-menu-open { overflow:hidden; }
 .portal-layout .devotee-main,.portal-layout.account-page-open .devotee-main { margin:0; padding:16px; width:100%; min-height:calc(100svh - 136px); }
 .portal-layout .welcome-hero { margin:-16px -16px 18px; height:235px; }
 .portal-layout .welcome-copy { padding:28px 20px; max-width:77%; }
 .portal-layout .welcome-copy .welcome-eyebrow { font-size:24px; }
 .portal-layout .welcome-copy h1 { font-size:20px; }
 .portal-layout .welcome-copy blockquote p { font-size:11px; }
 .portal-layout .welcome-hero > img { height:240px; right:-15px; opacity:.65; }
 .portal-layout .resource-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
 .portal-layout .resource-card { grid-template-columns:1fr; align-content:start; gap:12px; min-height:145px; padding:16px; }
 .portal-layout .resource-card .resource-copy strong { font-size:13px; }
 .portal-layout .resource-card .resource-icon { width:36px; height:36px; }
 .portal-layout .resource-arrow { display:none; }
 .portal-layout .section-head h2 { font-size:23px; }
 .portal-layout .mobile-mission { margin:0 0 20px; border:0; box-shadow:none; }
 .portal-layout .site-footer { margin:0; padding:22px 16px; }
 .portal-layout .account-page-shell .account-page-header { margin:-16px -16px 0; }
 .portal-layout .account-page-shell .account-page-content { padding:16px 0 0; }
 .portal-layout .account-page-module { padding-bottom:0; }
 .portal-layout :is(.bible-topbar,.guided-topbar,.prayer-topbar,.app-resource-topbar,.site-page-header) { padding:18px; }
 .portal-layout :is(.auth-form,.donation-form,.devotion-form,.chat-form) :is(input,select,textarea) { font-size:16px; }
 .portal-layout .devoto-bottom-nav { border-top:1px solid #e5eaf0; box-shadow:0 -4px 15px #1f405507; }
}
@media(prefers-reduced-motion:reduce) { .portal-layout .resource-card:hover { transform:none; } }
/* Explicit sizing prevents legacy horizontal-navigation dimensions leaking in. */
.portal-layout .portal-sidebar { height:auto; max-height:none; }
.portal-layout .portal-sidebar a { height:auto; }
.portal-layout .portal-sidebar a.active::after { display:none; }
.portal-layout :is(.bible-shell,.guided-shell) { grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto minmax(0,1fr); align-content:start; }
.portal-layout :is(.bible-topbar,.guided-topbar) { grid-column:1; grid-row:1; height:auto; min-height:110px; }
.portal-layout :is(.bible-shell,.guided-shell) .module-subnav { grid-column:1; grid-row:2; min-height:54px; align-self:start; }
.portal-layout .site-footer .footer-bottom small { color:#637b8c; }
@media(max-width:820px) { .portal-layout :is(.bible-topbar,.guided-topbar) { min-height:0; } }
/* Keep the scene caption inside the content column, including with a sidebar. */
@media (min-width:821px) {
 .portal-layout .candle-module .candle-scene-quote { position:static; margin:8px 18px 0 auto; max-width:180px; font-size:21px; }
}
