/* Fonts (self-hosted): Inter for the app and its titles (V2), Lora only for the PRIVS logo; Nunito Sans kept as fallback */
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/inter-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/inter-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/inter-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/inter-latin-700-normal.woff2") format("woff2")}
@font-face{font-family:"Nunito Sans";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/nunito-sans-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Nunito Sans";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/nunito-sans-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Nunito Sans";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/nunito-sans-latin-700-normal.woff2") format("woff2")}
@font-face{font-family:"Nunito Sans";font-style:normal;font-weight:800;font-display:swap;src:url("/fonts/nunito-sans-latin-800-normal.woff2") format("woff2")}
@font-face{font-family:"Lora";font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/lora-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Lora";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/lora-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Lora";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/lora-latin-700-normal.woff2") format("woff2")}
/* ============================ Themes ============================ */
:is(.pp,body.pp-body){--bg:#F5F7FA;--surface:#FFFFFF;--surface2:#F0F3F7;--head:#E6EDF5;--date:#EEF3F9;--ink:#1F2933;--ink2:#52606D;--ink3:#626A74;--line:#DDE3EA;--line2:#C5CED8;--band:#36587F;--bandInk:#FFFFFF;--primary:#36587F;--primary2:#2B4766;--primaryInk:#FFFFFF;--note:#FFC000;--noteInk:#AC001F;--focus:#8FB4DE;--err:#B42318;--errbg:#FDECEA;--warn:#F4B400;--warnInk:#8A5A00;--warnbg:#FFF4D6;--okInk:#2A7448;--okbg:#E7F4EC;
--yellow:#FFF1A8;--yellowDate:#FBE27A;--yellowInk:#6A5200;--lilac:#EBE0F6;--lilacDate:#D7C4EE;--lilacInk:#5A3E91;--hover:rgba(54,88,127,.08);--overlay:rgba(40,40,40,.45);--shadow:0 18px 48px rgba(0,0,0,.22);--pressed:#DCE6F2;--pressedLine:#8FB4DE;--chipHigh:#FFD166;--focusCell:#E8F0F9;--yolk:#F4B400;--memo:#F8DDE3;--memoDate:#EFB9C5;--memoInk:#7A1F35}
:is(.pp,body.pp-body)[data-theme="dark"],body.pp-body[data-theme="dark"] .pp{--bg:#151C2E;--surface:#1E2840;--surface2:#19223A;--head:#26314C;--date:#212B45;--ink:#E8ECF5;--ink2:#B4BED4;--ink3:#97A3BF;--line:#2C3754;--line2:#3D4A6B;--band:#151C2E;--bandInk:#FFFFFF;--primary:#73B7F1;--primary2:#9CCBF5;--primaryInk:#0B1A2B;--note:#E8B33A;--noteInk:#2B1D00;--focus:#9CCBF5;--err:#F4978E;--errbg:#3A2230;--warn:#E6B450;--warnInk:#F2CC7A;--warnbg:#332E1E;--okInk:#86D3A0;--okbg:#17332A;
--yellow:#3D3510;--yellowDate:#54491A;--yellowInk:#FFE38A;--lilac:#302642;--lilacDate:#43365E;--lilacInk:#D5C2F5;--hover:rgba(255,255,255,.07);--overlay:rgba(8,12,24,.62);--shadow:0 0 0 1px rgba(255,255,255,.06),0 18px 48px rgba(5,8,18,.55);--pressed:#2D6A6E;--pressedLine:#4E9AA0;--chipHigh:#C9A23A;--focusCell:#264E52;--memo:#3F2029;--memoDate:#56303B;--memoInk:#FFC2D1;--yolk:#E8B33A}


/* Teal headings and highlights */
:is(.pp,body.pp-body)[data-theme="light"] .pp-block h2,:is(.pp,body.pp-body)[data-theme="light"] .pp-section h2,:is(.pp,body.pp-body)[data-theme="light"] .pp-help article h2,:is(.pp,body.pp-body)[data-theme="light"] .pp-mhead h3{color:#2B6C7A}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-block h2,:is(.pp,body.pp-body)[data-theme="dark"] .pp-section h2,:is(.pp,body.pp-body)[data-theme="dark"] .pp-help article h2,:is(.pp,body.pp-body)[data-theme="dark"] .pp-mhead h3{color:#8CC3D3}
:is(.pp,body.pp-body)[data-theme="light"] .pp-grid thead tr.pp-head th{color:#22565F}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-grid thead tr.pp-head th{color:#8CC3D3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-link{color:var(--primary)!important}
:is(.pp,body.pp-body)[data-theme="light"] .pp-link{color:#5670A0!important}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-toggle[aria-pressed="true"]{color:#E6F6F8}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-btn:not(.fui-Button).is-primary,:is(.pp,body.pp-body)[data-theme="light"] .pp-btn:not(.fui-Button).is-primary{font-weight:700}






.pp-chip.is-zero{border-style:dashed}
.pp-chip.is-dragging{opacity:.4}
.pp-chip b{background:#DCE9F6;color:#174A7D}



/* ============================ Base ============================ */
html,body{margin:0}
.pp{font-family:"Nunito Sans","Segoe UI","Helvetica Neue",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);min-height:100vh;min-height:100dvh;font-size:15px;line-height:1.4;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}
.pp *{box-sizing:border-box}
.pp button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pp :focus-visible{outline:2px solid var(--focus);outline-offset:2px}
/* Text size. --zc scales the frame (top bar, side menu, dock, title and tabs, windows) and --zm the content.
   Regular: everything at 92 %; Pequeño: 10 % less (83 %); Grande: the frame at 100 % and the content at 116 %.
   Heights measured in JS are rewritten for the content (stickyMetrics), and its full-height boxes divide 100dvh by
   --zm, because the zoom also scales viewport units. */
body.pp-body{--zm:1;--zc:1}
body.pp-body[data-size="md"]{--zm:.92;--zc:.92}
body.pp-body[data-size="xs"]{--zm:.83;--zc:.83}
body.pp-body[data-size="lg"]{--zm:1.16;--zc:1}
body.pp-body .pp-main{zoom:var(--zm)}
body.pp-body :is(.pp-band,.pp-appbar-in,.pp-side>*,.pp-dock>*,.fui-DialogSurface:not(.is-anchored),.pp-acct.is-anchored>*){zoom:var(--zc)}

/* ============================ Header ============================ */
.pp-band{background:var(--band);color:var(--bandInk);padding-top:env(safe-area-inset-top)}
.pp-band-in{max-width:1480px;margin:0 auto;padding:16px 24px 0;display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end;justify-content:space-between}
.pp-brand{display:flex;align-items:center;gap:12px}
.pp-logo{width:44px;height:44px;border-radius:10px;background:#EEF2F6;border:1px solid var(--line);color:#141414;display:grid;place-items:center;flex:none;box-shadow:0 1px 0 rgba(0,0,0,.15);overflow:hidden}
.pp-logo img{width:100%;height:100%;display:block;object-fit:cover}
.pp-month{display:flex;align-items:center;gap:8px}
.pp-month h1{margin:0;font-size:32px;line-height:1.1;font-weight:700;letter-spacing:-.01em;display:grid}
.pp-month h1>span{grid-area:1/1;white-space:nowrap}
.pp-month h1>.pp-sizer{visibility:hidden}
.pp-arrows{display:flex;gap:6px;align-items:center}
.pp-today{margin-left:4px}
.pp-arrow{background:transparent;border:1px solid rgba(255,255,255,.35);border-radius:8px;width:38px;height:38px;display:grid;place-items:center;color:var(--bandInk)!important}
.pp-arrow:hover{background:rgba(255,255,255,.12)}
.pp-hright{display:flex;align-items:center;gap:8px;padding-bottom:4px;flex-wrap:wrap}
.pp-status{font-size:13px;padding:5px 11px;border-radius:999px;background:#2B844E;color:#FFFFFF;white-space:nowrap;font-weight:600}
.pp-status.is-dirty{background:#E0A100;color:#1A1400}
.pp-status.is-error{background:#fff;color:#B42318}
.pp-ghost{background:transparent;border:1px solid rgba(255,255,255,.4);color:var(--bandInk)!important;border-radius:8px;padding:6px 10px;display:inline-flex;gap:6px;align-items:center;font-size:13px;min-height:36px}
.pp-ghost:disabled{opacity:.45;cursor:default}
.pp-tabs{max-width:1480px;margin:0 auto;padding:14px 24px 0;display:flex;gap:4px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.pp-tabs::-webkit-scrollbar{display:none}
.pp-tab{background:transparent;border:0;color:var(--bandInk)!important;opacity:.82;padding:10px 14px;border-radius:10px 10px 0 0;display:inline-flex;gap:8px;align-items:center;font-weight:600;white-space:nowrap}
.pp-tab[aria-selected="true"]{background:var(--bg);color:var(--ink)!important;opacity:1}
.pp-main{max-width:1480px;margin:0 auto;padding:20px 24px 110px}

/* ============================ Buttons and fields ============================ */
.pp-toolbar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;margin-bottom:12px}
.pp-actions{display:flex;flex-wrap:wrap;gap:8px}
.pp-btn:not(.fui-Button){display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line2);background:var(--surface);border-radius:8px;padding:8px 13px;font-weight:600;font-size:14px;color:var(--ink);text-decoration:none;min-height:40px}
.pp-btn:not(.fui-Button):hover{border-color:var(--primary)}
.pp-btn:not(.fui-Button):disabled{opacity:.5;cursor:default}
.pp-btn:not(.fui-Button).is-primary{background:var(--primary);border-color:var(--primary);color:var(--primaryInk)!important}
.pp-btn:not(.fui-Button).is-primary:hover{background:var(--primary2)}
.pp-btn:not(.fui-Button).is-danger{color:var(--err)!important}
.pp-btn:not(.fui-Button).is-yolk{background:var(--yolk);border-color:#D39A00;color:#141414!important;font-weight:800;font-size:15.5px;padding:10px 18px;min-height:46px;box-shadow:0 2px 0 #C58F00}
.pp-btn:not(.fui-Button).is-yolk:hover{background:#FFC21F;border-color:#B98600}
.pp-btn:not(.fui-Button).is-hero{font-size:17px;padding:12px 30px;min-height:54px;border-radius:12px;letter-spacing:.03em;box-shadow:0 6px 18px rgba(246,180,14,.45),0 2px 0 #C58F00}
.pp-btn:not(.fui-Button).is-hero:not(:disabled):hover{box-shadow:0 8px 22px rgba(246,180,14,.55),0 2px 0 #C58F00}
.pp-sw2:not(.fui-Switch){appearance:none;-webkit-appearance:none;width:44px;height:26px;border-radius:999px;background:var(--line2);position:relative;cursor:pointer;flex:none;transition:background .15s;margin:0}
.pp-sw2:not(.fui-Switch)::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:left .15s}
.pp-sw2:not(.fui-Switch):checked{background:var(--primary)}
.pp-sw2:not(.fui-Switch):checked::after{left:21px}
.pp-range{width:100%;accent-color:var(--primary)}
.pp-panel{max-width:820px;display:flex;flex-direction:column;gap:14px}
.pp-set{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid var(--line)}
.pp-set:first-of-type{border-top:0}
.pp-set b{display:block;font-size:14.5px}
.pp-set span{display:block;color:var(--ink2);font-size:13.5px}
.pp-grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.pp-meter i.m-ok{background:#2B844E}.pp-meter i.m-mid{background:var(--warn)}.pp-meter i.m-hi{background:var(--err)}
.pp-bigstat{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;margin-bottom:10px}
.pp-dot{width:12px;height:12px;border-radius:50%;background:#2B844E;flex:none}.pp-dot.is-dirty{background:var(--warn)}.pp-dot.is-error{background:var(--err)}
.pp-btn:not(.fui-Button).is-small{padding:5px 10px;font-size:13px;min-height:36px}
.pp-link{background:none;border:0;padding:0;color:var(--primary)!important;font-weight:600;text-decoration:underline;text-underline-offset:2px;font-size:inherit}
.pp-summary{margin:0;color:var(--ink2);font-size:14px}
.pp-hint{background:var(--surface);border:1px dashed var(--line2);border-radius:10px;padding:10px 14px;margin:0 0 12px;color:var(--ink2);font-size:14px}
.pp-banner{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:space-between;background:var(--warnbg);color:var(--warnInk);border-radius:10px;padding:10px 14px;margin:0 0 12px;font-size:14px}
.pp-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pp-input{border:1px solid var(--line2);border-radius:8px;padding:8px 10px;font:inherit;font-size:14px;background:var(--surface);color:var(--ink);min-height:40px}
.pp-field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-size:13px;color:var(--ink2)}
textarea.pp-input{resize:vertical;min-height:56px;width:100%}
.pp-choice{display:inline-flex;border:1px solid var(--line2);border-radius:9px;overflow:hidden;flex-wrap:wrap}
.pp-choice button:not(.fui-ToggleButton){background:var(--surface);border:0;border-right:1px solid var(--line2);padding:7px 12px;display:inline-flex;gap:6px;align-items:center;font-weight:600;font-size:13.5px;min-height:40px;color:var(--ink)}
.pp-choice button:not(.fui-ToggleButton):last-child{border-right:0}
.pp-choice button:not(.fui-ToggleButton)[aria-pressed="true"]{background:var(--primary);color:var(--primaryInk)!important}
.pp-switch{display:inline-flex;gap:6px;align-items:center;font-size:13px;color:var(--ink2);white-space:nowrap;cursor:pointer}
.pp-switch input{accent-color:var(--primary);width:17px;height:17px}

/* ============================ Program table ============================ */
.pp-board{background:var(--surface);border:1px solid var(--line2);border-radius:10px;overflow-x:auto;-webkit-overflow-scrolling:touch}
@media (min-width:1100px){.pp-board{overflow:visible}}
.pp-grid{width:100%;table-layout:fixed}
.pp-grid col.pp-col-date{width:200px}
/* Minimum table width from the number of columns (narrow screens scroll sideways instead of squeezing names) */
.pp-grid{min-width:calc(200px + 92px * var(--cols, 10))}
/* Extra small: compact table so far more fits on a phone in desktop layout, still readable */
.pp-grid{border-collapse:separate;border-spacing:0}
.pp-grid th,.pp-grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:0}
.pp-grid thead th{position:sticky;z-index:2;background:var(--head);font-size:12.5px;font-weight:700;color:var(--ink);padding:9px 8px;text-align:center;line-height:1.2}
.pp-grid thead tr.pp-notes th{position:static;height:48px;background:var(--surface);padding:5px 4px;border-bottom:0}
.pp-grid thead tr.pp-head th{top:0;box-shadow:0 1px 0 var(--line2)}
.pp-grid thead th.pp-corner{left:0;z-index:4}
.pp-grid thead tr.pp-notes th.pp-corner{position:static}
.pp-note{display:block;background:var(--note);color:var(--noteInk);font-weight:700;font-size:11.5px;line-height:1.25;padding:5px 6px;border-radius:4px;white-space:pre-line}
.pp-grid td{background:var(--surface)}
.pp-grid tbody tr:nth-child(odd) td{background:var(--surface2)}
.pp-grid tbody tr.k-label td,.pp-grid tbody tr.k-assembly td{background:var(--yellow)}
.pp-grid tbody tr.k-visit td{background:var(--lilac)}
.pp-grid tbody tr.k-memorial td{background:var(--memo)}
.pp-grid tbody tr.k-memorial .pp-date{background:var(--memoDate)}
.pp-asm.is-memo{color:var(--memoInk)}
small.b-memorial{color:var(--memoInk)!important;font-weight:700!important}
.pp-sw.memo{background:var(--memoDate);border-color:var(--memoDate)}
.pp-check:not(.fui-Checkbox).c-memo{background:var(--memo);border:1px solid var(--memoDate);margin:4px 0 8px}
.pp-date{position:sticky;left:0;z-index:1;background:var(--date);text-align:left}
.pp-grid tbody tr.k-label .pp-date,.pp-grid tbody tr.k-assembly .pp-date{background:var(--yellowDate)}
.pp-grid tbody tr.k-visit .pp-date{background:var(--lilacDate)}
.pp-datebtn{display:block;width:100%;text-align:left;background:transparent;border:0;padding:10px 12px;font-weight:700;font-size:14px;color:var(--ink)}
.pp-datebtn:hover{background:var(--hover)}
.pp-datebtn small{display:block;font-weight:500;font-size:12px;color:var(--ink2);margin-top:2px}
.pp-datebtn small.has-unav{color:var(--err)}
small.b-label,small.b-assembly{color:var(--yellowInk)!important;font-weight:700!important}
small.b-visit{color:var(--lilacInk)!important;font-weight:700!important}
.pp-asm{text-align:center;font-weight:800;letter-spacing:.06em;color:var(--yellowInk);font-size:16px;padding:14px}
.pp-asm small{display:block;font-weight:500;letter-spacing:0;font-size:12.5px;margin-top:2px}
.pp-cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;min-height:56px;padding:8px 12px;background:transparent;border:0;text-align:center;font-size:14px;font-weight:500;line-height:1.25;color:var(--ink)}
.pp-cell:hover{background:var(--hover)}
.pp-cell.is-empty{color:var(--ink3);font-weight:400;font-size:13px}
.pp-cell.is-locked{font-weight:700}
.pp-cell.is-warn{box-shadow:inset 0 -3px 0 var(--warn)}
.pp-cell.is-error{box-shadow:inset 0 0 0 2px var(--err);color:var(--err)}
.pp-pin{position:absolute;top:5px;right:5px;color:var(--primary)}
.pp-cell{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.pp-cell.is-drop{box-shadow:inset 0 0 0 3px var(--yolk)!important;background:var(--focusCell)!important}
.pp-cell.is-dragging{opacity:.4}
.pp-ghost-drag{position:fixed;z-index:80;pointer-events:none;background:var(--yolk);color:#141414;font-weight:800;font-size:14px;padding:8px 12px;border-radius:10px;box-shadow:var(--shadow);transform:translate(-50%,-130%);white-space:nowrap}
body.pp-dragging{cursor:grabbing}
.has-focus .pp-cell:not(.is-focus){opacity:.35}
.pp-cell.is-focus{background:var(--focusCell)!important;box-shadow:inset 0 0 0 3px var(--primary);opacity:1}

/* Appointments (app only) */
.pp-appt{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.04em;line-height:1;padding:3px 5px;border-radius:4px;border:1px solid transparent}
.pp-appt.a-pb{background:#FFFFFF;color:#333;border-color:#BDBDBD}
.pp-appt.a-sm{background:#2B844E;color:#FFFFFF}
.pp-appt.a-an{background:#D4A52A;color:#1A1400}
.pp-appt.a-w{background:#F7C6E6;color:#6B1F52}
/* People: row color by appointment (baptized publisher white, ministerial servant green, elder gold) */
.pp-prow.a-pb{background:#FFFFFF;box-shadow:inset 5px 0 0 #C9C9C9}
.pp-prow.a-sm{background:#E6F4EA;box-shadow:inset 5px 0 0 #2B844E}
.pp-prow.a-an{background:#FFF4CF;box-shadow:inset 5px 0 0 #D4A52A}
.pp-prow.a-w{background:#FDE7F4;box-shadow:inset 5px 0 0 #E064B4}
.pp-prow.a-w .pp-pname{color:#8E2A6E}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-w{background:#3D1D33;box-shadow:inset 5px 0 0 #F09AD2}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-w .pp-pname{color:#F7B6E0}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-pb{background:#2A3644;box-shadow:inset 5px 0 0 #F2F2F2}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-sm{background:#15311F;box-shadow:inset 5px 0 0 #4CC27A}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-an{background:#3A3112;box-shadow:inset 5px 0 0 #E0B84A}
.pp-prow.a-sm .pp-pname{color:#1E6B3A}.pp-prow.a-an .pp-pname{color:#7A5A00}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-sm .pp-pname{color:#8FD9A8}:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-an .pp-pname{color:#F2CF74}

/* ============================ Phone layout ============================ */

/* ============================ Below the table ============================ */
.pp-below{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between;margin:12px 0 28px}
.pp-legend{margin:0;color:var(--ink2);font-size:13px;display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.pp-key{display:inline-flex;gap:6px;align-items:center}
.pp-sw{width:16px;height:14px;border-radius:3px;display:inline-block;background:var(--surface);border:1px solid var(--line2)}
.pp-sw.warn{box-shadow:inset 0 -3px 0 var(--warn)}
.pp-sw.error{border:2px solid var(--err)}
.pp-sw.yellow{background:var(--yellowDate);border-color:var(--yellowDate)}
.pp-sw.lilac{background:var(--lilacDate);border-color:var(--lilacDate)}
.pp-section h2,.pp-block h2{font-size:18px;margin:0 0 4px}
.pp-section>p,.pp-block>p{margin:0 0 12px;color:var(--ink2);font-size:14px}
.pp-chips{display:flex;flex-wrap:wrap;gap:6px}
.pp-chip{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 5px 4px 12px;font-size:13.5px;color:var(--ink);min-height:36px}
.pp-chip{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation;cursor:grab}
.pp-chip.is-zero{border-style:dashed}
.pp-chip.is-dragging{opacity:.4}
.pp-chip b{min-width:26px;height:26px;border-radius:999px;display:grid;place-items:center;background:var(--head);font-size:13px;font-variant-numeric:tabular-nums}
.pp-chip.is-high b{background:var(--chipHigh);color:#000}
.pp-chip[aria-pressed="true"]{border-color:var(--primary);background:var(--primary);color:var(--primaryInk)}
.pp-chip[aria-pressed="true"] b{background:var(--primaryInk);color:var(--primary)}
.pp-focusinfo{background:var(--surface);border:1px solid var(--primary);border-radius:10px;padding:10px 14px;margin:0 0 12px;font-size:14px}

/* ============================ Dialogs ============================ */

.pp-modal:not(.fui-DialogSurface){background:var(--surface);color:var(--ink);border-radius:14px;width:100%;max-width:560px;box-shadow:var(--shadow);display:flex;flex-direction:column;max-height:88vh;max-height:88dvh}
.pp-modal:not(.fui-DialogSurface).is-wide{max-width:1120px}
.pp-mhead:not(.fui-DialogTitle){display:flex;justify-content:space-between;gap:12px;padding:18px 20px 12px;border-bottom:1px solid var(--line)}
.pp-mhead h3{margin:0;font-size:19px}
.pp-mhead p{margin:2px 0 0;color:var(--ink2);font-size:14px}
.pp-x:not(.fui-Button){background:transparent;border:0;width:38px;height:38px;border-radius:8px;display:grid;place-items:center;color:var(--ink2);flex:none}
.pp-x:not(.fui-Button):hover{background:var(--bg)}
.pp-mbody:not(.fui-DialogContent){padding:14px 20px;overflow:auto;-webkit-overflow-scrolling:touch}
.pp-mfoot:not(.fui-DialogActions){display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;padding:12px 20px 16px;border-top:1px solid var(--line)}
.pp-current{background:var(--bg);border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:14px}
.pp-current strong{font-size:16px}
.pp-issue{display:flex;gap:10px;flex-wrap:wrap;align-items:baseline;font-size:13.5px;margin-top:6px}
.pp-issue.error{color:var(--err)}
.pp-issue.warn{color:var(--warnInk)}
.pp-sub{font-size:13px;font-weight:700;color:var(--ink2);margin:14px 0 6px}
.pp-cands{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.pp-cand{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:50px}
.pp-cand:hover{border-color:var(--primary)}
.pp-cand.is-current{border-color:var(--primary);background:var(--surface2)}
.pp-cand.is-hard{opacity:.62}
.pp-cand.is-active{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary)}
.pp-cellsearch{width:100%;margin-bottom:10px}
.pp-cellsearch input{width:100%;min-width:0;font-size:16px;min-height:46px}
.pp-cand-name{font-weight:600;flex:1;min-width:0}
.pp-cand-count{font-size:12.5px;color:var(--ink2);font-variant-numeric:tabular-nums;white-space:nowrap}
.pp-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.pp-tag{font-size:11.5px;border-radius:6px;padding:2px 7px;background:var(--bg);color:var(--ink2);font-weight:600}
.pp-tag.error{background:var(--errbg);color:var(--err)}
.pp-tag.warn{background:var(--warnbg);color:var(--warnInk)}
.pp-tag.best{background:var(--okbg);color:var(--okInk)}
.pp-check:not(.fui-Checkbox){display:flex;align-items:center;gap:10px;padding:8px;border-radius:8px;cursor:pointer;min-height:46px}
.pp-check:not(.fui-Checkbox):hover{background:var(--bg)}
.pp-check input{width:19px;height:19px;accent-color:var(--primary);flex:none}
.pp-check em{margin-left:auto;font-style:normal;font-size:12px;color:var(--ink2)}
.pp-check b{display:block}
.pp-check small{display:block;color:var(--ink2);font-size:12.5px}
.pp-check:not(.fui-Checkbox).c-lilac{background:var(--lilac);border:1px solid var(--lilacDate);margin:4px 0 8px}
.pp-check:not(.fui-Checkbox).c-yellow{background:var(--yellow);border:1px solid var(--yellowDate);margin:4px 0 8px}
.pp-search:not(.fui-Input){position:relative;display:inline-flex}
.pp-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--ink3)}
.pp-search input{padding-left:34px;min-width:240px}
.pp-preview{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:6px;-webkit-touch-callout:default}
.pp-warnbox:not(.fui-MessageBar){background:var(--warnbg);color:var(--warnInk);border-radius:8px;padding:8px 12px;font-size:13.5px;margin-bottom:10px}
.pp-ok:not(.fui-MessageBar){background:var(--okbg);color:var(--okInk);border-radius:8px;padding:8px 12px;font-size:13.5px;margin-top:10px}
.pp-vlist{list-style:none;margin:0;padding:0}
.pp-vlist li{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.pp-vlist small{display:block;color:var(--ink2)}

/* ============================ People, privileges, settings ============================ */
.pp-top{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:12px}
.pp-filter{border:1px solid var(--line2);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;min-height:36px}
.pp-filter[aria-pressed="true"]{background:var(--primary);border-color:var(--primary);color:var(--primaryInk)!important}
.pp-plist{list-style:none;margin:0;padding:0;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.pp-prow{display:grid;grid-template-columns:minmax(190px,250px) 1fr auto auto;gap:8px 16px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}
.pp-prow:last-child{border-bottom:0}
.pp-prow.is-inactive .pp-pname{color:var(--ink3);text-decoration:line-through}
.pp-pname{border:1px solid transparent;border-radius:6px;padding:6px 8px;font:inherit;font-weight:600;background:transparent;color:var(--ink);width:100%}
.pp-pname:hover,.pp-pname:focus{border-color:var(--line2);background:var(--surface)}
.pp-pmeta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--ink3);padding-left:9px;margin-top:2px}
.pp-load.l-1{border-color:var(--line2)}.pp-load.l-2{border-color:var(--primary)}.pp-load.l-3{border-color:var(--yolk);font-weight:700}
.pp-pmeta select{font-size:12px;border:1px solid var(--line2);border-radius:6px;background:var(--surface);color:var(--ink);padding:2px 4px;min-height:30px} /* 30 px: still 24 px or more when the text size shrinks the page (Pequeño 83 %) */
.pp-toggles{display:flex;flex-wrap:wrap;gap:5px}
.pp-toggle{border:1px solid var(--line2);background:var(--surface);border-radius:6px;padding:5px 9px;font-size:12.5px;font-weight:600;color:var(--ink3);min-height:34px}
.pp-toggle[aria-pressed="true"]{background:var(--pressed);border-color:var(--pressedLine);color:var(--primary2);box-shadow:inset 0 -2px 0 var(--primary)}
.pp-icon:not(.fui-Button){background:transparent;border:0;width:40px;height:40px;border-radius:8px;display:grid;place-items:center;color:var(--ink3)}
.pp-icon:not(.fui-Button):hover{background:var(--bg);color:var(--ink)}
.pp-icon:not(.fui-Button).is-del:hover{background:var(--errbg);color:var(--err)}
.pp-icon:not(.fui-Button):disabled{opacity:.3}
.pp-callout{background:var(--surface);border:1px solid var(--line2);border-left:5px solid var(--note);border-radius:10px;padding:14px 16px;margin-bottom:16px}
.pp-callout h3{margin:0 0 4px;font-size:16px}
.pp-callout p{margin:0 0 8px;color:var(--ink2);font-size:14px}
.pp-mm{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:7px 0;border-top:1px dashed var(--line)}
.pp-mm>span{flex:1;min-width:220px;font-size:14px}
.pp-block{display:flex;flex-direction:column;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px 18px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.pp-stepper{display:inline-flex;align-items:center;border:1px solid var(--line2);border-radius:8px;overflow:hidden;min-height:40px}
.pp-stepper button{border:0;background:var(--surface);width:38px;height:40px;display:grid;place-items:center}
.pp-stepper .pp-stepper-value{min-width:34px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}
.pp-meter{height:10px;border-radius:999px;background:var(--bg);overflow:hidden;border:1px solid var(--line)}
.pp-meter i{display:block;height:100%;background:var(--primary)}

/* ============================ Help ============================ */
.pp-help{display:grid;grid-template-columns:260px 1fr;gap:20px;align-items:start}
.pp-help nav{position:sticky;top:12px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px}
.pp-help nav button{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:8px;padding:8px 10px;font-size:14px;color:var(--ink)}
.pp-help nav button[aria-current="true"]{background:var(--pressed);font-weight:700}
.pp-help article{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:18px 22px;margin-bottom:14px}
.pp-help article h2{margin:0 0 6px;font-size:20px}
.pp-help article h3{margin:16px 0 4px;font-size:16px}
.pp-help article p,.pp-help article li{font-size:14.5px;line-height:1.55;color:var(--ink)}
.pp-help article ol,.pp-help article ul{padding-left:22px;margin:6px 0}
.pp-help mark{background:var(--yellowDate);color:inherit;border-radius:3px;padding:0 2px}
.pp-help-search{width:100%;margin-bottom:14px;display:flex}
.pp-help-search input{width:100%}
.pp-help .pp-search input{width:100%}

/* ============================ Sign-in ============================ */
.pp-center{display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:20px;color:var(--ink2)}
.pp-login{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px 22px;box-shadow:var(--shadow);color:var(--ink)}
.pp-login-head{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:16px;text-align:center}
.pp-login-head .pp-logo{width:76px;height:76px;border-radius:17px}
.pp-login h1{margin:0;font-size:22px}
.pp-login p{margin:0;color:var(--ink2);font-size:14px}
.pp-people{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow:auto}
.pp-person{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line2);border-radius:12px;padding:10px 12px;font-weight:600;font-size:16px;min-height:56px;color:var(--ink)}
.pp-person:hover{border-color:var(--primary)}
.pp-avatar{width:36px;height:36px;border-radius:50%;background:var(--yolk);color:#141414;display:grid;place-items:center;font-weight:800;font-size:14px;flex:none}
/* the keys keep their own size and weight (the general «font: inherit» of buttons was shrinking the digits to 14 px) */
.pp .pp-key-btn{font-size:24px;font-weight:600;font-variant-numeric:tabular-nums}.pp .pp-key-btn.is-del{font-size:15px}
/* dark text on the yellow buttons, also in dark mode (the general «color: inherit» of buttons was winning) */
.pp .pp-login-cta{color:#1A1300}
/* the PIN keypad is the same everywhere (sign-in and lock screen): full width of its card; the dots keep room for the eye */
.pp-pinpad{width:100%;align-self:stretch}
.pp-pinview{display:flex;align-items:center;justify-content:center;gap:10px;background:var(--bg);border:1px solid var(--line2);border-radius:12px;height:64px;margin:14px 0 12px;padding:0 52px;position:relative}
.pp-pinview span{width:16px;height:16px;border-radius:50%;border:2px solid var(--ink3)}
.pp-pinview span.on{background:var(--ink);border-color:var(--ink)}
.pp-pinview b{font-size:30px;letter-spacing:.3em;font-variant-numeric:tabular-nums}
.pp-pinview .pp-icon:not(.fui-Button){position:absolute;right:6px;top:50%;transform:translateY(-50%)}
.pp-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pp-key-btn{height:62px;border-radius:14px;border:1px solid var(--line2);background:var(--surface);font-size:24px;font-weight:700;color:var(--ink);display:grid;place-items:center;touch-action:manipulation;user-select:none}
.pp-key-btn:active{background:var(--pressed)}
.pp-key-btn.is-enter{background:var(--primary);border-color:var(--primary);color:var(--primaryInk)!important}
.pp-key-btn.is-del{font-size:15px}
.pp-shake{animation:pp-shake .35s}
@keyframes pp-shake{25%{transform:translateX(-8px)}50%{transform:translateX(8px)}75%{transform:translateX(-4px)}}

/* ============================ Save status and toasts ============================ */
.pp-toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--ink);color:var(--bg);border-radius:10px;padding:10px 12px 10px 16px;display:flex;gap:14px;align-items:center;z-index:60;box-shadow:var(--shadow);font-size:14px;max-width:calc(100vw - 28px)}
.pp-toast button{background:transparent;border:1px solid currentColor;color:inherit!important;border-radius:7px;padding:4px 10px;font-weight:600;white-space:nowrap}
@keyframes pp-spin{to{transform:rotate(360deg)}}
/* Forced layouts: phone cards on a wide screen stay readable and centered */
.pp-btn:not(.fui-Button).is-whatsapp{background:#25D366;border-color:#1DA851;color:#06331B!important;font-weight:700}
.pp-btn:not(.fui-Button).is-whatsapp:hover{background:#2EE072}
/* Privilege and special-day cards */
.pp-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.pp-pcard,.pp-scard{display:flex;align-items:stretch;background:var(--surface);border:1px solid var(--line2);border-radius:12px;overflow:hidden;box-shadow:inset 8px 0 0 var(--bar,var(--band))}
.pp-pcard-main{flex:1;min-width:0;text-align:left;background:transparent;border:0;padding:12px 14px 12px 22px;display:flex;flex-direction:column;gap:2px;color:var(--ink)}
.pp-pcard-main b{font-size:16px}
.pp-pcard-main span{font-size:13.5px;color:var(--ink2)}
.pp-pcard-main small{font-size:12.5px;color:var(--ink3)}
.pp-pcard-side{display:flex;align-items:center;gap:2px;padding:0 8px;border-left:1px solid var(--line)}
.pp-scard{flex-direction:column;padding:10px 12px 12px 22px}
.pp-scard-head{display:flex;align-items:center;gap:8px}
.pp-scard-head b{font-size:16px}
.pp-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-top:8px}
.pp-slotbtn{display:flex;align-items:center;gap:8px;text-align:left;border:1px solid var(--line2);background:var(--surface2);border-radius:10px;padding:10px 12px;min-height:48px;font-size:15px;font-weight:700;color:var(--ink)}
.pp-slotbtn small{font-size:12px;color:var(--ink3);font-weight:700}
.pp-slotbtn.is-empty{border-style:dashed;color:var(--ink3);font-weight:500}
.pp-rule-ctl{display:flex;align-items:center;gap:10px;flex:none}.pp-weight{width:auto;min-width:150px;font-size:13px}
.pp-colors{display:flex;flex-wrap:wrap;gap:8px}
.pp-color{width:34px;height:34px;border-radius:50%;border:2px solid var(--line2);display:grid;place-items:center;color:#fff}
.pp-color[aria-pressed="true"]{border-color:var(--ink);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--ink)}
.pp-form2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px 12px}
.pp-checklist{max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:4px}
.pp-check:not(.fui-Checkbox).is-w{background:#FDE7F4}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-check:not(.fui-Checkbox).is-w{background:#3D1D33}
/* Person color (profile avatar, swatches, dot in the load list) */
.pp-prow{grid-template-columns:auto minmax(190px,250px) 1fr auto auto}
.pp-pid{position:relative;align-self:start}
.pp-pavatar{width:38px;height:38px;border-radius:50%;border:2px solid rgba(255,255,255,.9);box-shadow:0 0 0 1px var(--line2);color:#fff;font-weight:800;font-size:13px;display:grid;place-items:center}
.pp-swatches{position:absolute;z-index:20;top:44px;left:0;display:grid;grid-template-columns:repeat(6,26px);gap:6px;background:var(--surface);border:1px solid var(--line2);border-radius:10px;padding:8px;box-shadow:var(--shadow)}
.pp-swatch{width:26px;height:26px;border-radius:50%;border:2px solid transparent}
.pp-swatch[aria-pressed="true"]{border-color:var(--ink);box-shadow:0 0 0 2px var(--surface) inset}
.pp-pdot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:-2px;flex:none}
.pp-ended{display:flex;gap:12px;align-items:center;background:var(--warnbg);color:var(--warnInk);border-radius:10px;padding:10px 14px;margin:0 0 12px;font-size:14px}
/* Settings > Acerca de */
.pp-about-head{display:flex;gap:14px;align-items:center;margin-bottom:12px}
.pp-about dl{margin:0}
.pp-about-row{display:grid;grid-template-columns:170px 1fr;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:14px}
.pp-about-row dt{color:var(--ink2);font-weight:700}
.pp-about-row dd{margin:0;color:var(--ink)}
.pp-about a{color:var(--primary)}
@media (max-width:719px){.pp-about-row{grid-template-columns:1fr;gap:2px}}
/* Blocked (frozen) month */
.pp-frozen{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line2);border-left:5px solid var(--primary);border-radius:10px;padding:10px 14px;margin:0 0 12px;font-size:14px;color:var(--ink)}
.pp-frozen>span{flex:1 1 200px;min-width:0}
.pp-frozen>.pp-btn{flex:none;margin-left:auto}
.pp-board.is-frozen .pp-cell{cursor:default}
.pp-board.is-frozen{box-shadow:inset 0 0 0 2px var(--line2)}
.pp-btn:not(.fui-Button).is-locked-btn{border-color:var(--primary);color:var(--primary)!important}
.pp-fieldset{border:0;margin:0;padding:0;min-width:0}
.pp-fieldset:disabled{opacity:.6}
/* Build label (bottom corner) */
.pp-arrow:disabled{opacity:.35;cursor:default}
/* ============================ Animations ============================ */
@keyframes pp-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes pp-fade{from{opacity:0}to{opacity:1}}
@keyframes pp-up{from{opacity:0;transform:translateY(28px) scale(.98)}to{opacity:1;transform:none}}
@keyframes pp-pop{0%{transform:scale(.92)}55%{transform:scale(1.04)}100%{transform:scale(1)}}
@keyframes pp-toast-in{from{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%,0)}}
.pp-view{animation:pp-in .28s cubic-bezier(.2,.8,.2,1)}
.pp-modal:not(.fui-DialogSurface){animation:pp-up .26s cubic-bezier(.2,.8,.2,1)}
.pp-toast{animation:pp-toast-in .25s cubic-bezier(.2,.8,.2,1)}
.pp-btn:not(.fui-Button),.pp-tab,.pp-chip,.pp-toggle,.pp-filter,.pp-key-btn,.pp-subtabs button,.pp-choice button:not(.fui-ToggleButton),.pp-person,.pp-cand,.pp-arrow,.pp-ghost,.pp-icon:not(.fui-Button),.pp-datebtn{transition:transform .14s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,color .2s ease,opacity .2s ease}
.pp-cell{transition:background-color .2s ease,box-shadow .2s ease,opacity .25s ease,transform .14s ease}
.pp-btn:not(.fui-Button):not(:disabled):hover,.pp-person:hover,.pp-cand:hover{transform:translateY(-1px)}
.pp-btn:not(.fui-Button):not(:disabled):active,.pp-tab:active,.pp-chip:active,.pp-toggle:active,.pp-filter:active,.pp-key-btn:active,.pp-subtabs button:active,.pp-choice button:not(.fui-ToggleButton):active,.pp-person:active,.pp-cand:active,.pp-arrow:active,.pp-ghost:not(:disabled):active,.pp-icon:not(.fui-Button):not(:disabled):active{transform:scale(.95)}
.pp-cell:active{transform:scale(.97)}
.pp-tab[aria-selected="true"],.pp-subtabs button[aria-selected="true"],.pp-choice button:not(.fui-ToggleButton)[aria-pressed="true"],.pp-chip[aria-pressed="true"],.pp-filter[aria-pressed="true"]{animation:pp-pop .3s cubic-bezier(.2,.8,.2,1)}
.pp-sw2:not(.fui-Switch),.pp-sw2:not(.fui-Switch)::after{transition:all .2s cubic-bezier(.2,.8,.2,1)}
/* Weekday picker */

.pp-spin{animation:pp-spin 1s linear infinite}
@media (prefers-reduced-motion:reduce){.pp *,.pp-spin,.pp-shake{animation:none!important;transition:none!important}}

/* ============================ Phone ============================ */
@media (max-width:719px){
  .pp-month h1{font-size:24px}
  .pp-band-in{padding:12px 14px 0}
  .pp-brand .pp-logo{display:none}
  .pp-today-t{display:none}
  .pp-tabs{padding:10px 8px 0}
  .pp-tab{padding:9px 11px}
  .pp-main{padding:14px 12px 110px}
  .pp-prow{grid-template-columns:auto 1fr auto auto}
  .pp-toggles{grid-column:1/-1;order:5}
  .pp-search:not(.fui-Input),.pp-search input{min-width:0;width:100%}
  .pp-input,.pp-pname{font-size:16px}
  .pp-modal:not(.fui-DialogSurface){border-radius:16px 16px 0 0;max-height:92vh;max-height:92dvh;padding-bottom:env(safe-area-inset-bottom)}
  .pp-actions .pp-btn:not(.fui-Button){flex:1 1 calc(50% - 8px)}
  .pp-help{grid-template-columns:1fr}
  .pp-help nav{position:static}
  .pp-btn:not(.fui-Button).is-yolk{flex:1 1 100%}
}

/* ============================ Printing ============================ */
#pp-print{display:none}
@media print{
  body.pp-printing *{visibility:hidden!important}
  body.pp-printing #pp-print,body.pp-printing #pp-print *{visibility:visible!important}
  body.pp-printing #pp-print{display:block!important;position:absolute;left:0;top:0;width:100%}
  body.pp-printing #pp-print img{width:100%;height:auto}
  @page{size:landscape;margin:8mm}
}

/* ============================ Fluent UI integration ============================ */
/* Fluent UI components carry the PRIVS colors (theme in src/ui/theme.ts); these rules keep the app's own look. */
.pp.fui-FluentProvider{background:var(--bg);color:var(--ink)}
.pp-btn.is-yolk.fui-Button{background:var(--yolk);border-color:#D99A00;color:#1A1300;font-weight:700}
.pp-btn.is-yolk.fui-Button:hover{background:#FFC633;border-color:#D99A00;color:#1A1300}
.pp-btn.is-danger.fui-Button{background:var(--err);border-color:var(--err);color:#fff}
.pp-btn.is-danger.fui-Button:hover{filter:brightness(.92);background:var(--err);color:#fff}
.pp-btn.is-locked-btn.fui-Button{border-color:var(--primary);color:var(--primary)}
.pp-icon.is-del.fui-Button{color:var(--err)}
.pp-modal.fui-DialogSurface{width:min(560px,calc(100vw - 24px));max-width:560px;background:var(--surface);color:var(--ink)}
.pp-modal.is-wide.fui-DialogSurface{width:min(880px,calc(100vw - 24px));max-width:880px}
.pp-mbody.fui-DialogContent{max-height:min(68vh,640px);overflow:auto}
.pp-mtitle{display:block}
.pp-msub{display:block;font-size:13px;font-weight:400;color:var(--ink2);margin-top:2px}
.pp-mfoot.fui-DialogActions{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;grid-column:1/-1}
.pp-choice{display:flex;flex-wrap:wrap;gap:6px}
.pp-block{margin:0 0 14px;color:var(--ink)}
.pp-search.fui-Input{width:100%;max-width:100%}
.pp-warnbox.fui-MessageBar,.pp-ok.fui-MessageBar{margin:10px 0}
.pp-check.fui-Checkbox small{display:block;color:var(--ink2);font-size:12.5px;font-weight:400}
.pp-stepper{display:inline-flex;align-items:center;gap:2px}

/* ============================ Navigation (hamburger) ============================ */
.pp-area-title{margin:0;font-size:28px;line-height:1.15;color:var(--ink);font-weight:800}
/* areas without tabs (Inicio, Ajustes, Usuarios, Ayuda): the band needs its own bottom space */
.pp-band.is-plain .pp-band-in{padding-bottom:16px;align-items:center}
.pp-navlist{display:flex;flex-direction:column;gap:4px}
.pp-navitem{display:flex;align-items:center;gap:12px;padding:12px 14px;border:0;border-radius:10px;background:transparent;color:var(--ink);font:inherit;font-size:16px;font-weight:600;text-align:left;cursor:pointer}
.pp-navitem:hover{background:var(--surface2)}
.pp-navitem.is-on{background:var(--primary);color:#fff}

/* ============================ Inicio ============================ */


/* ============================ Vida y Ministerio ============================ */
.pp-vweek .pp-vweek-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.pp-vweek-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;margin-bottom:6px}
.pp-vweek-n{font-size:12px;font-weight:800;letter-spacing:.06em;color:var(--ink3)}
.pp-vweek-head b{font-size:17px}
.pp-vweek-read{font-weight:700;color:var(--ink2)}
.pp-vweek.is-assembly,.pp-vweek.is-empty{border-style:dashed}
.pp-vrow{display:flex;flex-wrap:wrap;gap:10px 14px;margin:8px 0}
.pp-vslot{display:flex;flex-direction:column;gap:3px;min-width:220px;flex:1 1 220px;font-size:12.5px;color:var(--ink2);font-weight:600}
.pp-psel{width:100%}
.pp-vsongs > span:last-child{display:flex;gap:6px}
.pp-song{width:64px !important;text-align:center}
.pp-vsec{margin-top:12px}
.pp-vsec h3{margin:0 0 6px;padding:6px 10px;border-radius:6px;color:#fff;font-size:13px;letter-spacing:.04em}
.pp-vsec.s-treasures h3{background:#5F6368}
.pp-vsec.s-ministry h3{background:#956E00}
.pp-vsec.s-living h3{background:#9B0A30}
.pp-vsec.s-weekend h3{background:#003F6E}
.pp-vsec ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pp-vpart{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.pp-vpart-t{font-size:14px}
.pp-vpart-t small{color:var(--ink2)}
.pp-vpart-d{display:block;margin-top:2px;font-size:12.5px}
.pp-vpart-who{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:6px}
.pp-vissues{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.pp-tag.is-visit{display:inline-block;background:var(--visitbg,#EDE7F6);color:var(--ink);padding:6px 10px;border-radius:8px;font-size:13px}
.pp-vperson{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.pp-vperson.is-w{border-left:4px solid #E88FC7}
.pp-vperson-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:8px}
.pp-vperson-h b{flex:1 1 180px;font-size:15px}
.pp-vprivs{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink2)}
.pp-vroles{display:flex;flex-wrap:wrap;gap:6px}
.pp-vrole{font-size:12.5px;padding:4px 10px;border-radius:999px}
.pp-vrole.is-on{background:var(--primary);color:#fff;border-color:var(--primary)}
.pp-vrole:disabled{opacity:.35;cursor:not-allowed}
@media (max-width:719px){.pp-vslot{min-width:100%}.pp-area-title{font-size:20px}}

.pp-vpart-edit{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pp-vpart-edit .pp-input:not(.pp-song){flex:1 1 220px}
.pp-vpart-dt{flex:2 1 260px !important}

.pp-check.is-vmc{opacity:.85}
.pp-vmcwhy{color:var(--err);font-style:normal;font-weight:600}

/* Inicio: share-ready previews */


/* Vida y Ministerio: collapsible week cards with short alerts */
.pp-vweek-toggle{display:flex;align-items:flex-start;gap:6px;flex:1;min-width:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.pp-vweek-toggle .pp-vweek-head{margin-bottom:0}
.pp-valerts{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 2px}
.pp-tag.is-okay{background:#E3F4E8;color:#1F6B3A;border-color:#B7E0C3}

/* ============================ Predicación pública ============================ */
.pp-pp-period{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-size:17px}
.pp-ppcell{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--line2);border-left:8px solid var(--place,#ccc);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-size:13.5px;text-align:left;cursor:pointer}
.pp-ppcell:hover{border-color:var(--primary)}
.pp-ppcell.is-error{border-color:var(--err)}
.pp-ppcell.is-short{background:var(--surface2)}
.pp-ppcell-h{font-size:11.5px;font-weight:700;color:var(--ink2);margin-bottom:2px}
.pp-ppcell .is-lead{font-weight:800}
.pp-pplist{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px;max-height:48vh;overflow:auto}
.pp-pplist li{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pp-pppref{display:grid;gap:6px;margin-bottom:8px}
.pp-pppref-day{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pp-pppref-day > span{min-width:84px;font-size:12.5px;font-weight:700;color:var(--ink2)}
.pp-ppset{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;background:var(--surface)}
.pp-ppset .pp-input{flex:1 1 220px}

/* Brand: titles in Lora */
.pp-month h1,.pp-area-title,.pp-login-head h1,.pp-block > h2,.pp-vweek-head b{font-family:var(--font-title);letter-spacing:0}
/* Login: congregation name above the logo */
.pp-login-org{margin:0;font-family:var(--font-title);font-size:18px;font-weight:600;color:var(--primary)}
.pp-login-head .pp-logo.is-large{width:112px;height:112px;border-radius:24px}

/* Publicadores */

.pp-pubs-app{width:auto;min-width:180px}
.pp-pubs-dup{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;background:var(--surface)}
.pp-vperson.is-off{opacity:.6}

/* Discursos públicos */
.pp-talk-ext{align-items:flex-end}
.pp-talk-phone{font-weight:700;color:var(--primary);padding:8px 0}
.pp-talk-outlines{width:100%;font-family:inherit;font-size:13.5px;line-height:1.45}

/* Predicación */
.pp-frow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 0;border-top:1px solid var(--line)}
.pp-frow:first-of-type{border-top:0}
.pp-frow.is-error{background:var(--errbg);border-radius:8px;padding:8px}
.pp-fslot{flex:0 1 190px}.pp-fplace{flex:1 1 170px}.pp-ffacet{flex:0 1 150px}.pp-fcond{flex:1 1 180px}.pp-fnote{flex:1 1 160px}
.pp-fterr{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:2 1 260px}
.pp-fchip{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 10px;font-size:12.5px}
.pp-fchip button{border:0;background:transparent;color:inherit;font-size:16px;line-height:1;cursor:pointer;padding:0 2px}
.pp-fadd{flex:0 1 220px}
.pp-fgroup{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 0;border-top:1px solid var(--line)}

/* ============================ Fixed top bar (V9.9) ============================ */
.pp-appbar{position:sticky;top:0;z-index:60;background:var(--band);color:var(--bandInk,#fff);padding-top:env(safe-area-inset-top);transition:box-shadow .25s ease}
.pp-appbar.is-scrolled{box-shadow:0 2px 14px rgba(16,24,40,.28)}
.pp-appbar-in{max-width:1480px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:8px 18px;min-height:58px}
.pp-appbar-brand{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0;padding:4px 6px;border:0;border-radius:10px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background-color .2s ease}
.pp-appbar-brand:hover{background:rgba(255,255,255,.08)}
.pp-appbar .pp-logo{width:36px;height:36px;border-radius:9px;flex:none}
.pp-appbar-name{font-family:var(--font-brand);font-weight:700;font-size:20px;letter-spacing:.03em}
.pp-appbar-text{display:flex;align-items:center;gap:10px;min-width:0}
.pp-appbar-org{font-size:14px;opacity:.88;padding-left:10px;border-left:1px solid rgba(255,255,255,.35);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.pp-appbar-actions{flex:none;display:flex;align-items:center;gap:6px}
.pp-appbar-actions .pp-ghost{color:#fff;border-color:rgba(255,255,255,.35)}
.pp-band{padding-top:0}
.pp-band .pp-band-in{padding-top:12px}
@media (max-width:719px){
  .pp-appbar-in{padding:6px 10px;gap:6px;min-height:52px}
  .pp-appbar .pp-logo{width:30px;height:30px}
  .pp-appbar-name{font-size:17px}
  .pp-appbar-org{font-size:12.5px;padding-left:8px}
  /* actions show only their icons on a phone (the user's initials stay) */
  .pp-appbar-actions .pp-ghost:not(:last-child){font-size:0;gap:0;padding:8px}
  /* on a phone: name above, congregation below; the save status is a small dot */
  .pp-appbar-text{flex-direction:column;align-items:flex-start;gap:0;line-height:1.15}
  .pp-appbar-org{padding-left:0;border-left:0;font-size:12px}
  .pp-appbar-actions .pp-status{font-size:0;width:12px;height:12px;min-width:0;padding:0;border-radius:50%;border:2px solid rgba(255,255,255,.7)}
  .pp-appbar-actions .pp-status svg{display:none}
}

/* ============================ Transitions ============================ */
@keyframes pp-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.pp-view{animation:pp-in .28s cubic-bezier(.2,.7,.2,1) both}
.pp-home2 [style*="--i"]{animation:pp-in .4s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i) * 45ms)}
.pp-tab,.pp-navitem,.pp-btn,.pp-ghost,.pp-chip,.pp-cell{transition:background-color .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.pp-navitem:active,.pp-share:active{transform:scale(.98)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none !important;transition:none !important}}

/* ============================ Inicio (V9.9) ============================ */
.pp-home2{max-width:1180px;margin:0 auto}
.pp-sec-h{display:flex;align-items:center;gap:8px;margin:26px 0 12px;font-family:var(--font-title);font-size:19px;color:var(--ink)}
.pp-count{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 7px;border-radius:999px;background:var(--yolk);color:#1A1300;font-family:"Nunito Sans",sans-serif;font-size:12.5px;font-weight:800}
.pp-meet{display:flex;flex-direction:column;gap:10px;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 1px 3px rgba(16,24,40,.06);transition:transform .2s ease,box-shadow .2s ease}
.pp-meet:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(16,24,40,.1)}
.pp-meet-day{margin:0;font-family:var(--font-title);font-size:18px;font-weight:700;color:var(--primary)}
.pp-meet-privs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 14px}
.pp-meet-privs li{display:flex;flex-direction:column;padding:6px 10px;border-radius:8px;background:var(--surface2)}
.pp-meet-privs li span{font-size:11.5px;color:var(--ink2);text-transform:uppercase;letter-spacing:.03em}
.pp-meet-privs li b{font-size:14px}
.pp-meet footer{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:4px}
.pp-share-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}
.pp-share{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.pp-share:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(16,24,40,.12);border-color:var(--primary)}
.pp-share-img{display:block;aspect-ratio:3/4;overflow:hidden;border-radius:8px;background:var(--surface2);border:1px solid var(--line)}
.pp-share-img img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.pp-share-t{display:flex;align-items:center;gap:6px;font-size:13.5px}
.pp-share-s{font-size:12.5px;color:var(--ink2)}
.pp-rem2{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pp-rem2 button{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font:inherit;font-size:14.5px;text-align:left;cursor:pointer;transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease}
.pp-rem2 button:hover{border-color:var(--primary);transform:translateX(2px);box-shadow:0 4px 12px rgba(16,24,40,.08)}
.pp-rem2-t{flex:1}
.pp-rem2-ic{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;flex:none;background:#E6EDF5;color:#36587F}
.pp-rem2-ic.a-vmc{background:#F3E2C7;color:#8A5A00}.pp-rem2-ic.a-pp{background:#E3DAF0;color:#5B3E8F}.pp-rem2-ic.a-talks{background:#E7F4EC;color:#2A7448}.pp-rem2-ic.a-field{background:#D9E3EA;color:#2F6FB0}
@media (max-width:719px){
  .pp-share-grid{grid-template-columns:repeat(2,1fr)}
}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rem2-ic{filter:brightness(.85)}

/* Inicio has no title band: leave room under the fixed bar */
.pp-main:has(.pp-home2){padding-top:20px}

/* Replacements on meeting days already held */
.pp-cell.is-replaced{box-shadow:inset 3px 0 0 #2F6FB0}
.pp-rep{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;background:#E8F1FB;color:#2F6FB0;font-size:10.5px;font-weight:800;vertical-align:middle}
/* Meeting in progress */
.pp-now-tag{display:inline-flex;align-items:center;gap:6px;margin-top:4px;padding:2px 8px;border-radius:999px;background:#B42318;color:#fff;font-size:10.5px;font-weight:800;letter-spacing:.04em}
tr.is-now th.pp-date{box-shadow:inset 4px 0 0 #B42318}

.pp-clock{font-size:13.5px;font-weight:700;opacity:.92;white-space:nowrap;margin-right:4px}
.pp-zoomset{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 10px}
.pp-zoomset legend{font-weight:800;padding:0 6px}
@media (max-width:719px){.pp-clock{font-size:12.5px}.pp-clock-d{display:none}}

/* Inicio: one meeting, meeting in progress and Zoom */

.pp-meet.is-live{border-color:#B42318;box-shadow:0 0 0 2px rgba(180,35,24,.15),0 8px 22px rgba(16,24,40,.1)}
.pp-meet header{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.pp-zoom-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:18px 0 4px}
.pp-zoom-ic{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#2D8CFF;color:#fff;flex:none}

/* Predicación: every day has outings or a reason */

.pp-frow.is-pending{background:#FFF8E6;border-radius:8px;padding:8px}
.pp-tag.warn{background:#FFF4D6;color:#8A5A00;border-color:#F2D58A}

/* The top bar is always docked to the top of the screen (fixed, so no scrolling container can move it) */
.pp-appbar{position:fixed;top:0;left:0;right:0}
.pp-appbar-spacer{height:calc(58px)}
@media (max-width:719px){.pp-appbar-spacer{height:calc(52px)}}

/* Primary (filled) buttons: white text on the brand blue in every theme (WCAG AA); a general text color
   rule was turning it dark on light and gray themes */
.pp-btn.fui-Button.is-primary:not(:disabled),.pp-btn.fui-Button.is-primary:not(:disabled) *{color:#FFFFFF !important}
/* selected option buttons (Choice): white text on the brand blue in every theme */
.fui-ToggleButton[aria-pressed="true"],.fui-ToggleButton[aria-pressed="true"] *{color:#FFFFFF !important}

/* Publicadores: groups board */
/* the groups keep their width: when they don't fit (panel open, narrow screen) the row slides sideways */
.pp-groups{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:12px;padding-bottom:8px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.pp-groups>.pp-group{scroll-snap-align:start;min-width:240px}
.pp-group{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--surface)}
.pp-group h3{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px;font-family:var(--font-title);font-size:16px;color:var(--primary)}
.pp-glabel{display:flex;flex-direction:column;gap:2px;font-size:11.5px;font-weight:700;color:var(--ink2);margin-bottom:6px}
.pp-glead{font-size:13px}
.pp-group ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:2px;font-size:13px}
.pp-group li{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:3px 6px;border-radius:6px}
.pp-group li:nth-child(odd){background:var(--surface2)}
.pp-group li.is-off{color:var(--ink3)}
.pp-gtag{display:inline-block;padding:0 6px;border-radius:999px;font-size:10.5px;font-weight:800;background:#E6EDF5;color:#36587F}
.pp-gtag.t-an{background:#36587F;color:#fff}.pp-gtag.t-sm{background:#DCE6F2;color:#2B4766}.pp-gtag.t-pr{background:#FFF4D6;color:#8A5A00}.pp-gtag.t-nb{background:#E7F4EC;color:#2A7448}.pp-gtag.t-off{background:#FDECEA;color:#B42318}
.pp-pubs-group{width:auto;min-width:130px}


/* Bell (reminders) */
.pp-bell-wrap{position:relative}
.pp-bell{position:relative;color:#fff;border-color:rgba(255,255,255,.35)}
.pp-bell-n{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--yolk);color:#1A1300;font-size:11px;font-weight:800;display:grid;place-items:center}
.pp-bell-shade{position:fixed;inset:0;z-index:70}
.pp-bell-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:71;width:min(380px,92vw);max-height:70vh;overflow:auto;padding:12px;border-radius:14px;background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:0 16px 40px rgba(16,24,40,.25);animation:pp-in .2s ease-out both}
.pp-bell-pop h3{margin:2px 4px 10px;font-family:var(--font-title);font-size:17px}
/* Inicio: my assignments */

/* Public start page */
.pp-public{padding:20px 16px 40px}
.pp-login-cta{padding:16px 34px;border:0;border-radius:14px;background:var(--yolk);color:#1A1300;font:inherit;font-size:18px;font-weight:800;letter-spacing:.04em;cursor:pointer;box-shadow:0 8px 22px rgba(244,180,0,.45);transition:transform .18s ease,box-shadow .18s ease}
.pp-login-cta:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(244,180,0,.55)}

/* Publicadores: first and last name, spouse */
.pp-pubs-first{flex:1 1 140px;font-weight:700}.pp-pubs-last{flex:1 1 160px;font-weight:700}.pp-pubs-spouse{width:auto;min-width:200px}
/* Inicio: my assignments side by side on wide screens */

/* Libreto: pages to pick and share */
.pp-book{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin-top:10px}
.pp-book-page{position:relative;display:flex;flex-direction:column;gap:6px;padding:8px;border:2px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer;transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease}
.pp-book-page.is-on{border-color:var(--primary);box-shadow:0 6px 16px rgba(54,88,127,.18)}
.pp-book-page:hover{transform:translateY(-2px)}
.pp-book-page input{position:absolute;top:12px;left:12px;width:20px;height:20px;accent-color:var(--primary)}
.pp-book-img{display:block;aspect-ratio:8.5/11;overflow:hidden;border-radius:6px;border:1px solid var(--line);background:#fff;box-shadow:2px 2px 0 var(--line),4px 4px 0 var(--surface2)}
.pp-book-img img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.pp-book-label{font-weight:700;font-size:13.5px;text-align:center}
/* traffic lights */
.pp-light{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none;margin-right:6px;vertical-align:middle;box-shadow:0 0 0 2px rgba(255,255,255,.7)}
.pp-light.l-green{background:#2A9D5B;box-shadow:0 0 6px rgba(42,157,91,.6)}
.pp-light.l-orange{background:#F08C00;box-shadow:0 0 6px rgba(240,140,0,.6)}
.pp-light.l-red{background:#D92D20;box-shadow:0 0 6px rgba(217,45,32,.55)}
/* quick actions always visible under the top bar, in every menu */
.pp-toolbar{position:sticky;top:var(--appbar-h, 58px);z-index:40;background:var(--bg);padding:8px 0;margin-top:-8px}
.pp-cleanspecial{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;padding:6px 10px;border-radius:8px;background:#FFF4D6;color:#5A3D00;font-size:13.5px}
.pp-vprivs.is-disabled{opacity:.5}
.pp-inactive{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:var(--err)}
.pp-inactive .pp-input{width:auto}

/* Pizarra de anuncios title */
/* current menu in the top bar */
.pp-appbar-area{font-size:14px;font-weight:800;color:var(--yolk);padding-left:10px;margin-left:2px;border-left:1px solid rgba(255,255,255,.35);white-space:nowrap}
@media (max-width:719px){.pp-appbar-area{padding-left:0;border-left:0;font-size:12px}}
/* hamburger menu: glass, what is behind stays visible (blurred) */
.fui-OverlayDrawer__backdrop{background:rgba(15,25,40,.18)!important;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.pp-drawer.fui-OverlayDrawer{background:rgba(255,255,255,.72)!important;backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);box-shadow:8px 0 30px rgba(16,24,40,.18)!important;border-right:1px solid rgba(255,255,255,.5)}
body.pp-body[data-theme="dark"] .pp-drawer.fui-OverlayDrawer{background:rgba(27,37,51,.72)!important;border-right-color:rgba(255,255,255,.08)}

.pp-search-x{display:grid;place-items:center;border:0;background:transparent;color:var(--ink2);cursor:pointer;padding:2px;border-radius:6px}
.pp-search-x:hover{background:var(--surface2);color:var(--ink)}

/* Loading: PRIVS letters fade out and in, one after the other */
.pp-loader{display:flex;justify-content:center;align-items:center;gap:4px;min-height:40vh;font-family:var(--font-brand);font-size:42px;font-weight:700;letter-spacing:.06em;color:var(--primary)}
.pp-loader span{animation:pp-letter 1.6s ease-in-out infinite;animation-delay:calc(var(--i) * .2s)}
@keyframes pp-letter{0%,40%,100%{opacity:1}20%{opacity:.12}}
@media (prefers-reduced-motion:reduce){.pp-loader span{animation:none}}
.pp-filters{display:flex;flex-wrap:wrap;gap:8px 14px;margin:8px 0}
.pp-filter-group{display:flex;flex-wrap:wrap;gap:6px}
.pp-fchipbtn{cursor:pointer;border:1px solid var(--line2);padding:5px 12px;font-size:13px}
.pp-fchipbtn.is-on{background:var(--primary);border-color:var(--primary);color:#fff}
.pp-readonly{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:8px 12px;border-radius:10px;background:#EEF3F9;color:#2F6FB0;font-weight:700;font-size:13.5px}
.pp-hosp{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 12px;padding:10px 12px;border-radius:10px;background:var(--surface);border:1px solid var(--line);font-size:14px}
/* Fluent's container for menus and dialogs gets the app's .pp class: it must not paint over the page */
.fui-FluentProvider[data-portal-node]{background:transparent!important;min-height:0!important;height:auto!important}
.pp-offline{position:sticky;top:var(--appbar-h, 58px);z-index:45;display:flex;align-items:center;gap:8px;padding:8px 16px;background:#FDECEA;color:#B42318;font-weight:700;font-size:13.5px}
.pp-vaux{margin-top:6px;padding:6px 8px;border-left:3px solid var(--yolk);background:var(--surface2);border-radius:6px}
.pp-vaux-tag{align-self:center;font-size:12px;font-weight:800;color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}
.pp-undo-fab{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom));z-index:60;display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:0;border-radius:999px;background:var(--primary);color:#fff;font:inherit;font-weight:800;box-shadow:0 8px 24px rgba(16,24,40,.25);cursor:pointer;animation:pp-pop .2s ease}
@keyframes pp-pop{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}

/* Field service: two-week calendar */
.pp-ghost-btn{display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 10px;border:1px solid var(--line2);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-weight:700;cursor:pointer}

/* Día especial: compact grid of privileges */
.pp-shead h2{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}
.pp-shead-date{font-weight:500;font-size:15px;color:var(--ink2)}
.pp-sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin:0;padding:0;list-style:none}
.pp-sgrid .pp-scard{margin:0;padding:10px 12px;border:1px solid var(--line);border-top:4px solid var(--bar);border-left-width:1px;border-radius:10px;background:var(--surface)}
.pp-sgrid .pp-scard-head{display:flex;align-items:center;gap:6px;margin-bottom:6px;font-size:14px}
.pp-sgrid .pp-slots{display:flex;flex-direction:column;gap:5px}
.pp-sgrid .pp-slotbtn{width:100%;min-height:36px;padding:6px 10px;font-size:14px}
.pp-vplan{margin:6px 0 10px;padding:10px 12px;border:1px dashed var(--line2);border-radius:10px;background:var(--surface2)}
.pp-vvisit{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.pp-vvisit h4{margin:6px 0 0;font-size:14px;color:var(--primary)}
.pp-vplan-rows{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.pp-vplan-rows .pp-row{width:100%}
.pp-datenote{display:flex;gap:8px;align-items:flex-start;margin:0 0 12px;padding:10px 12px;border-radius:10px;background:var(--surface2);font-size:13.5px;color:var(--ink2)}
.pp-sched-always{display:inline-flex;align-items:center;min-height:38px;padding:0 4px}
.pp-setrow{display:flex;align-items:center;gap:14px;padding:10px 0;cursor:pointer}
.pp-week-e.k-holiday{font-weight:600}
.pp-print-prev{height:54px;border-radius:10px 10px 4px 4px;display:flex;align-items:center;padding:0 16px;margin:4px 0 10px}.pp-print-prev b{color:#FFFFFF;font-size:14px}.pp-print-prev{gap:12px}.pp-print-mark{font-family:var(--font-brand);font-style:normal;font-weight:700;letter-spacing:.08em;color:#FFFFFF;opacity:.12;font-size:16px}
.pp-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.pp-colors{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:12px 0 4px}
.pp-colorf{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink)}
.pp-colorf input{width:56px;height:34px;padding:2px;border:1px solid var(--line2);border-radius:8px;background:var(--surface);cursor:pointer}
.pp-adv-g-h{margin:16px 0 6px;font-size:14px;color:var(--ink2);font-weight:600}
.pp-steps{margin:10px 0;padding-left:22px;display:flex;flex-direction:column;gap:6px}
.pp-errlog{max-height:220px;overflow:auto;margin:10px 0 0;padding:10px;border-radius:8px;background:var(--head);color:var(--ink);font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;word-break:break-word}
.pp-adv-g h3{margin:14px 0 4px;font-size:14px;color:var(--ink2);font-weight:600}
.pp-adv-row{justify-content:space-between;flex-wrap:wrap;cursor:default}
.pp-adv-ctl{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;flex:none}
.pp-adv-ctl .pp-input{width:84px;text-align:right}.pp-adv-ctl small{color:var(--ink2)}.pp-adv-ok{color:var(--okInk)!important}
.pp-health{list-style:none;margin:6px 0 10px;padding:0}
.pp-health li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.pp-health li:last-child{border-bottom:0}
.pp-health li>span:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column}.pp-health small{color:var(--ink2);font-size:12px}
.pp-health-dot{width:10px;height:10px;border-radius:50%;flex:none;background:var(--line2)}
.pp-health .h-ok .pp-health-dot{background:#2A8A57}.pp-health .h-warn .pp-health-dot{background:#D98B00}.pp-health .h-bad .pp-health-dot{background:#C0392B}
.pp-health-st{font-size:12px;color:var(--ink2);flex:none}
.pp-health-sum{margin:0 0 4px;font-weight:600}.pp-health-sum.is-ok{color:var(--okInk)}.pp-health-sum.is-warn{color:#B45309}
.pp-offline.is-server{background:#7A4A00;color:#FFF7E6}
.pp-bk-test{flex:1 0 100%;margin:4px 0 0;color:var(--okInk)}
.pp-mail-list{list-style:none;margin:6px 0;padding:0;gap:6px}
.pp-xl-set{border:0;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.pp-xl-set legend{font-weight:600;margin-bottom:6px;color:var(--ink)}
.pp-recent{margin-left:auto;align-self:center;gap:6px;font-size:13px;flex:none;white-space:nowrap}
@media (max-width:719px){.pp-recent{padding:8px}.pp-recent span{display:none}}
.pp-hist{margin:0;padding:0;list-style:none;display:flex;flex-direction:column}
.pp-hist li{display:grid;grid-template-columns:118px minmax(0,1fr);gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px;color:var(--ink)}
.pp-hist li:last-child{border-bottom:0}
.pp-hist time{color:var(--ink2);font-size:12.5px;font-variant-numeric:tabular-nums}
.pp-hist small{display:block;color:var(--ink2);font-size:12px;margin-top:2px}
.pp-setcol{flex-direction:column;align-items:stretch;gap:8px}
.pp-acct-outs{display:grid;grid-template-columns:1fr;gap:8px;width:100%}.pp-acct-outs .pp-btn{justify-content:center}
.pp-acct-all{display:flex;flex-direction:column;gap:8px;width:100%}.pp-acct-all .pp-row{justify-content:flex-end;gap:8px}
.pp-autosaved{display:inline-flex;align-items:center;gap:5px;margin-right:auto;font-size:12.5px}
.pp-menu-row{justify-content:space-between;border-bottom:1px solid var(--line)}.pp-menu-row:last-of-type{border-bottom:0}
.pp-setrow>span.pp-menu-name{display:inline-flex;flex-direction:row;align-items:center;gap:10px;font-weight:600;color:var(--ink)}
.pp-setrow>span{display:flex;flex-direction:column;gap:3px}
.pp-setrow small{color:var(--ink2);font-size:13px;line-height:1.4}
/* Settings sections as tabs, like the month menus */
.pp-subtabs{display:flex;gap:2px;overflow-x:auto;margin:0 0 16px;padding:0;border-bottom:1px solid var(--line2);scrollbar-width:none}
.pp-subtabs button{display:inline-flex;align-items:center;gap:6px;flex:none;padding:10px 14px;border:0;border-radius:8px 8px 0 0;background:transparent;color:var(--ink2);font:inherit;font-weight:700;font-size:14px;cursor:pointer;white-space:nowrap}
.pp-subtabs button:hover{color:var(--ink);background:var(--surface2)}
.pp-subtabs button[aria-selected="true"]{background:var(--surface);color:var(--primary);box-shadow:inset 0 3px 0 var(--yolk),0 1px 0 var(--surface);border:1px solid var(--line2);border-bottom-color:var(--surface);margin-bottom:-1px}
.pp-langs{display:flex;flex-direction:column;gap:8px}
.pp-langbar{display:flex;height:8px;border-radius:999px;overflow:hidden;background:var(--line)}
.pp-langbar i{display:block;height:100%}
.pp-langs ul{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;list-style:none;font-size:13px}
.pp-langs li{display:inline-flex;align-items:center;gap:6px;font-weight:700}
.pp-langs li b{width:10px;height:10px;border-radius:50%}
.pp-langs li span{font-weight:400;color:var(--ink2)}
.pp-pairs{display:flex;flex-direction:column;gap:8px;margin:0 0 12px;padding:0;list-style:none}
.pp-pairs li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface2)}
.pp-pair-n{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--primary);color:#fff;font-weight:800}
.pp-pair-groups{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.pp-newspeaker{margin-top:8px;padding:10px;border:1px dashed var(--yolk);border-radius:10px;background:var(--surface2)}

/* Carrito settings: compact */
.pp-twocol{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;align-items:start}
.pp-twocol .pp-plist{display:flex;flex-direction:column;gap:6px}
.pp-twocol .pp-ppset{padding:6px 8px;gap:8px}
.pp-twocol .pp-ppset .pp-input{min-height:36px}
.pp-ppmatrix{display:grid;gap:4px;overflow-x:auto;padding-bottom:4px}
.pp-ppmatrix-day{text-align:center;font-size:12.5px;color:var(--ink2);text-transform:capitalize;padding:4px 0}
.pp-ppmatrix-place{display:flex;align-items:center;padding:6px 8px;border-left:5px solid;border-radius:6px;background:var(--surface2);font-weight:700;font-size:13px}
.pp-ppmatrix-cell{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;align-content:center;padding:4px;border:1px solid var(--line);border-radius:6px;background:var(--surface)}
.pp-ppslot{min-width:34px;padding:3px 6px;border:1px solid var(--line2);border-radius:999px;background:var(--surface);color:var(--ink2);font:inherit;font-size:11.5px;font-weight:700;cursor:pointer}
.pp-ppslot.is-on{background:var(--primary);border-color:var(--primary);color:#fff}

/* people as cards */
.pp-pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin:0;padding:0;list-style:none}
.pp-pcard{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%;min-height:64px;padding:10px 12px;border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}
.pp-pcard:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(16,24,40,.08)}
.pp-pcard.is-w{border-left-color:#C2589B}
.pp-pcard.is-off{opacity:.55}
.pp-pcard.is-on{border-left-color:#2A9D5B}
.pp-pcard b{font-size:14.5px}
.pp-pcard-tags{display:flex;flex-wrap:wrap;gap:4px}
.pp-pcard-tags .pp-tag,.pp-pcard-tags .pp-gtag{font-size:11px;padding:1px 7px}
/* the search box stands out from the forms */
.pp-searchbar.fui-Input{min-height:44px;border-radius:999px!important;background:var(--surface2)!important;border:2px solid var(--primary)!important}
.pp-searchbar input{font-size:15px}

/* Predicación: month calendar */
.pp-mcal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.pp-mcal-head{text-align:center;font-size:12.5px;color:var(--ink2);text-transform:capitalize;padding:4px 0}
.pp-mcal-day{display:flex;flex-direction:column;align-items:stretch;gap:3px;min-height:104px;padding:6px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;overflow:hidden}
.pp-mcal-day:hover:not(:disabled){border-color:var(--primary);box-shadow:0 2px 8px rgba(16,24,40,.08)}
.pp-mcal-day.is-off{background:var(--surface2);color:var(--ink3);cursor:default}
.pp-mcal-day.is-today{border:2px solid var(--yolk)}
.pp-mcal-day.is-warn{box-shadow:inset 0 3px 0 #F08C00}
.pp-mcal-day.is-empty{background:repeating-linear-gradient(135deg,var(--surface),var(--surface) 8px,var(--surface2) 8px,var(--surface2) 16px)}
.pp-mcal-n{font-weight:800;font-size:15px}
.pp-mcal-day small{font-size:11px;color:var(--ink2)}
.pp-mcal-reason{color:#7A5A00!important;font-weight:700}
.pp-mcal-out{font-size:11.5px;padding:2px 5px;border-radius:5px;background:var(--surface2);border-left:3px solid var(--primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-mcal-out.is-zoom{border-left-color:#2D8CFF}
.pp-tag.is-zoom{background:#E3EEFF;color:#1F5BC4;font-weight:700}
@media (max-width:719px){.pp-mcal{gap:3px}.pp-mcal-day{min-height:70px;padding:3px}.pp-mcal-out{font-size:9.5px;padding:1px 3px}.pp-mcal-head{font-size:10.5px}}

/* Vida y Ministerio: each week's header stays visible under the toolbar while that week is being edited */
.pp-vweek .pp-vweek-top{position:sticky;top:calc(var(--appbar-h) + var(--tb-h, 0px));z-index:30;margin:-16px -18px 0;padding:10px 18px;background:var(--surface);border-radius:10px 10px 0 0;box-shadow:0 6px 10px -9px rgba(16,24,40,.25)}

/* Aseo: a half year, each month with its weeks as cards */
.pp-cleanmonth{margin:16px 0 8px}
.pp-cleanmonth h3{margin:0 0 8px;font-family:var(--font-title);font-size:18px;color:var(--primary);text-transform:capitalize}
.pp-cleangrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.pp-cleangrid .pp-cleanweek{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid var(--line);border-top:4px solid var(--primary);border-radius:10px;background:var(--surface)}
.pp-cleangrid .pp-cleanweek.is-changed{border-top-color:#F08C00}
.pp-cleangrid .pp-cleanweek.has-special{border-top-color:var(--yolk)}
.pp-cleangrid .pp-cleanweek .pp-vweek-head{font-size:14px}
.pp-cleangrid .pp-cleanweek .pp-row{gap:6px}
.pp-cleangrid .pp-cleanweek .pp-vslot{flex:1 1 100px!important}
.pp-cleangrid .pp-cleanweek .pp-summary{margin:0;font-size:12.5px}

/* Predicación > Días y Horas */
.pp-fdays{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
.pp-fdays li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.pp-fdays li.is-off{background:var(--surface2)}
.pp-fdays-name{flex:0 0 110px;text-transform:capitalize}
.pp-fdays-times{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.pp-fdays-times small{color:var(--ink3)}
.pp-fdays-time{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;background:var(--surface2);border:1px solid var(--line2);font-weight:700;font-size:13px}
.pp-fdays-time.m-zoom{background:#E3EEFF;border-color:#B9D2FF;color:#1F5BC4}
.pp-fdays-time.m-both{background:#F1EAFB;border-color:#D9C8F2;color:#5B3E96}
.pp-fdays-edit{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}
.pp-fdays-edit .pp-input{max-width:140px}
.pp-tag-more{display:inline-flex;align-items:center;gap:4px;border:0;cursor:pointer;font:inherit}
.pp-vrepeats{margin:4px 0 8px;padding:8px 12px 8px 26px;border-radius:8px;background:#FFF7E0;font-size:12.5px;color:#7A5A00;columns:2 260px}

/* field calendar: a readable list on phones */
@media (max-width:719px){
}
/* Vida y Ministerio: parts in two columns on wide screens; bigger dropdowns on phones */
@media (min-width:1100px){.pp-vsec>ul{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;align-items:start}.pp-vsec>ul>.pp-vpart{margin:0}}
@media (max-width:719px){.pp-psel select,.pp-vmc .pp-psel{min-height:44px!important;font-size:15px!important}.pp-psel.fui-Select{height:44px}}
/* Carrito: the two weeks as a grid of days; the period header like the month titles */

.pp-pp-period{display:flex;align-items:center;gap:8px;margin:0 0 12px}
.pp-pp-period b{font-family:var(--font-title);font-size:20px;color:var(--primary);text-transform:capitalize}
@media (max-width:719px){.pp-pp-period b{font-size:16px}}

/* V13.3 visual pass */
.pp-vsec>ul{padding:0;margin:0;list-style:none}
.pp-vpart{box-sizing:border-box;max-width:100%;min-width:0}
.pp-vpart .pp-vrow,.pp-vpart .pp-vslot{min-width:0}
.pp-title-short{display:none}
@media (max-width:719px){.pp-title-long{display:none}.pp-title-short{display:inline}}
@media (max-width:719px){
  .pp-prow[style*="grid-template-columns"]{display:flex!important;flex-wrap:wrap;gap:8px;align-items:center}
}
.pp-modal .pp-prow{flex-wrap:wrap}
.pp-modal .pp-toggles{flex-wrap:wrap}
.pp-modal .pp-choice{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:6px;border:0;overflow:visible;width:100%}
.pp-modal .pp-choice>button{border:1px solid var(--line2);border-radius:9px;justify-content:center}
@media (max-width:719px){
  .pp-bell-pop{position:fixed;left:4vw;right:4vw;width:auto;top:64px}
  .pp-mcal-day.is-off small{display:none}
}
/* inside the person window the row is a single column (it never fits as a 4-column grid) */
.pp-modal .pp-prow{grid-template-columns:1fr;border-bottom:0;padding:4px 0}
.pp-modal .pp-plist{margin:0;padding:0;list-style:none}

/* WCAG 2.2 AA contrast (V13.7) */
.pp-appbar-area{color:#F7C740}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-chip[aria-pressed="true"],:is(.pp,body.pp-body)[data-theme="dark"] .pp-chip.is-on{color:#0F1B2B}

/* accessibility (V13.7) */
.pp-invite-code{margin:14px 0 4px;padding:14px;border-radius:12px;background:var(--surface2);text-align:center;font:700 28px/1.1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;color:var(--ink);user-select:all}
.pp-invite-in{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase;text-align:center;font-size:20px}
.pp-login-find{margin-bottom:8px}
.pp-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
h2.pp-vweek-head{margin:0;font:inherit;font-size:inherit}
/* touch targets (WCAG 2.5.8: at least 24 px everywhere; 44 px on touch screens, Apple/Google guidance) */
.pp-link{min-height:24px;display:inline-flex;align-items:center}
.pp-range{height:24px}
@media (pointer:coarse){
  .pp-icon.fui-Button,.pp-ghost,.pp-arrow{min-width:44px!important;min-height:44px!important}
  .pp-tab,.pp-subtabs button{min-height:44px}
  .pp-input,select.pp-input,.fui-Select__select,.fui-Input{min-height:44px}
  .pp-toggle,.pp-chip{min-height:40px}
  .pp-ppslot{min-height:36px;min-width:44px}
  .pp-link{min-height:44px}
}
/* touch targets, second pass (V13.7) */
.pp-about-row dd a{display:inline-flex;align-items:center;min-height:24px}
.pp-vweek-toggle{min-height:24px}
@media (pointer:coarse){
  .pp-btn.fui-Button,.pp-slotbtn,.pp-vweek-toggle,.pp-about-row dd a{min-height:44px}
  .fui-Select,.fui-Select__select{min-height:44px!important}
  .pp-input{min-height:44px!important}
  .pp-toggle,.pp-chip{min-height:44px}
}

/* Activity log */
.pp-log{margin:10px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;max-height:52vh;overflow:auto}
.pp-log li{display:grid;grid-template-columns:auto auto 1fr;gap:8px;align-items:baseline;padding:6px 10px;border-radius:8px;background:var(--surface2);font-size:13px;border-left:4px solid var(--line2)}
.pp-log li.is-warn{border-left-color:#B7791F}
.pp-log li.is-error{border-left-color:#B42318}
.pp-log time{color:var(--ink2);font-variant-numeric:tabular-nums;white-space:nowrap}
.pp-log-area{font-weight:800;color:var(--primary);text-transform:uppercase;font-size:11.5px}
.pp-log-msg{overflow-wrap:anywhere}
.pp-slow{margin:18px auto 0;max-width:360px;padding:12px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--line2);text-align:center;font-size:14px}
.pp-slow p{margin:6px 0 10px;color:var(--ink2)}

/* Pizarra: Vida y Ministerio easy to read (V13.12) */
.pp-meet-talk{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0 0 10px;padding:10px 12px;border-radius:10px;background:var(--surface2)}
.pp-meet-talk span{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink2);flex-basis:100%}
.pp-meet-talk small{color:var(--ink2);font-size:13px}
@media (max-width:719px){
}
/* Pizarra: announcements (V13.12) */
.pp-ann{margin:22px 0 8px}
.pp-ann .pp-sec-h{display:flex;align-items:center;gap:8px}
.pp-ann-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin:0;padding:0;list-style:none}
.pp-ann-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden;box-shadow:0 1px 3px rgba(16,24,40,.06)}
.pp-ann-card.has-file{border-color:var(--yolk);box-shadow:0 0 0 2px rgba(244,180,0,.35)}
.pp-ann-preview{position:relative;display:block;width:100%;height:190px;padding:0;border:0;background:var(--surface2);cursor:pointer;overflow:hidden}
.pp-ann-preview img{width:100%;height:100%;object-fit:cover;object-position:top}
.pp-ann-noprev{display:grid;place-items:center;height:100%;color:var(--ink2)}
.pp-ann-badge{position:absolute;left:8px;bottom:8px;display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;background:#1F2933;color:#fff;font-size:12px;font-weight:700}
.pp-ann-body{display:flex;flex-direction:column;gap:6px;padding:12px 14px 14px}
.pp-ann-body h3{margin:0;font-family:var(--font-title);font-size:17px;line-height:1.3}
.pp-ann-body p{margin:0;font-size:14px;line-height:1.45;white-space:pre-line}
.pp-ann-meta{color:var(--ink2);font-size:12.5px!important}
.pp-ann-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;min-height:200px;height:100%;padding:16px;border:2px dashed var(--line2);border-radius:14px;background:transparent;color:var(--ink2);font:inherit;cursor:pointer;text-align:center}
.pp-ann-add:hover,.pp-ann-add:focus-visible{border-color:var(--primary);color:var(--primary);background:var(--surface2)}
.pp-ann-plus{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:var(--surface2);color:var(--primary)}
.pp-ann-add b{font-size:15px;color:var(--ink)}
.pp-ann-add small{font-size:12.5px;max-width:220px}
.pp-ann-drop{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px;border:2px dashed var(--line2);border-radius:12px;cursor:pointer;color:var(--primary);font-weight:700;text-align:center}
.pp-ann-drop small{font-weight:400;color:var(--ink2)}
.pp-ann-drop:focus-within{outline:2px solid var(--primary);outline-offset:2px}
.pp-ann-file{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;background:var(--surface2)}
.pp-ann-file>span{flex:1;overflow-wrap:anywhere}
.pp-req{color:#B42318}
.pp-field-err{margin:4px 0 8px;color:#B42318;font-size:13.5px;font-weight:600}
/* Zoom cards */
.pp-zoom-card{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);flex:1 1 300px}
.pp-zoom-card.is-live{border:2px solid #B42318;box-shadow:0 0 0 4px rgba(180,35,24,.12)}
.pp-zoom-txt{display:flex;flex-direction:column;gap:2px;flex:1 1 160px}
.pp-zoom-txt small{color:var(--ink2)}
.pp-zoom-act{display:flex;gap:8px;flex-wrap:wrap}
.pp-zoom-act .pp-btn{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:1px solid var(--line2);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.pp-zoom-act .pp-btn.is-primary{background:var(--primary);border-color:var(--primary);color:#fff}
@media (pointer:coarse){.pp-zoom-act .pp-btn{min-height:44px}}
/* the meeting in the bar of every menu, from one hour before */
.pp-live{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:0 12px;border:0;border-radius:999px;background:#F7C740;color:#1F2933;font:inherit;font-size:13px;font-weight:800;cursor:pointer;white-space:nowrap}
.pp-live.is-live{background:#B42318;color:#fff;text-transform:uppercase;letter-spacing:.03em}
.pp-live-dot{width:9px;height:9px;border-radius:50%;background:currentColor}
.pp-live.is-live .pp-live-dot{animation:pp-blink 1.4s ease-in-out infinite}
@keyframes pp-blink{0%,100%{opacity:1}50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.pp-live.is-live .pp-live-dot{animation:none}}
@media (max-width:719px){.pp-live{font-size:11.5px;padding:0 9px;min-height:30px}}
.pp-appbar .pp-live{color:#1F2933}
.pp-appbar .pp-live.is-live{color:#fff}
.pp-now-tag::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;animation:pp-blink 1.4s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.pp-now-tag::before{animation:none}}
.pp-soon-tag{display:inline-flex;align-items:center;align-self:flex-start;gap:6px;margin-top:4px;padding:2px 9px;border-radius:999px;background:#F7C740;color:#1F2933;font-size:11px;font-weight:800;letter-spacing:.03em}
.pp-zoom-txt .pp-now-tag{align-self:flex-start}
.pp-meet.is-soon{border-color:#E0A800;box-shadow:0 0 0 3px rgba(247,199,64,.25)}
.pp-zoom-card.is-soon{border:2px solid #E0A800}
/* on phones and tablets (an iPad mini standing) the meeting shows as a full-width strip under the bar: the bar has no
   room for it next to the logo, the clock and the name */
.pp-live-strip{display:none}
@media (max-width:1023px){
  .pp-appbar .pp-live{display:none}
  .pp-live-strip{display:flex;align-items:center;justify-content:center;gap:8px;position:sticky;top:var(--bar-h, 52px);z-index:59;width:100%;min-height:36px;border:0;background:#F7C740;color:#1F2933;font:inherit;font-size:13.5px;font-weight:800;cursor:pointer;box-shadow:0 2px 6px rgba(16,24,40,.15)}
  .pp-live-strip.is-live{background:#B42318;color:#fff;text-transform:uppercase;letter-spacing:.03em}
  .pp-live-strip.is-live .pp-live-dot{animation:pp-blink 1.4s ease-in-out infinite}
}
@media (max-width:1023px) and (prefers-reduced-motion:reduce){.pp-live-strip.is-live .pp-live-dot{animation:none}}
@media (max-width:400px){.pp-appbar .pp-clock{display:none}} /* very narrow phones: the phone shows the time; the bar keeps the name readable */
.pp-host-groups{display:flex;flex-direction:column;gap:6px;margin:10px 0 0;padding:0;list-style:none}
.pp-host-groups li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface2);font-weight:600}
.pp-rem2-row{display:flex;align-items:stretch;gap:6px}
.pp-rem2-row>button:first-child{flex:1;min-width:0}
.pp-rem2-ignore{flex:none;align-self:center;min-height:32px;padding:0 10px;border:1px solid var(--line2);border-radius:8px;background:var(--surface);color:var(--ink2);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.pp-rem2-ignore:hover{color:var(--ink);border-color:var(--ink2)}
@media (pointer:coarse){.pp-rem2-ignore{min-height:44px}}
.pp-notify-h{margin:16px 0 6px;font-size:14.5px;color:var(--primary)}
/* bell: the notice takes the row; Ignorar keeps its own size */
.pp-rem2 li.pp-rem2-row{display:flex;align-items:center;gap:6px}
.pp-rem2 li.pp-rem2-row>button:first-child{flex:1 1 auto;width:auto;min-width:0}
.pp-rem2 li.pp-rem2-row>button.pp-rem2-ignore{flex:0 0 auto;width:auto}
/* Predicación > Encargados: square tiles, 3 per row on desktop (V13.16) */
.pp-field-filters{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 4px}
.pp-field-filters button{min-height:34px;padding:0 12px;border:1px solid var(--line2);border-radius:999px;background:var(--surface);font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.pp-field-filters button[aria-pressed="true"]{background:var(--primary);border-color:var(--primary);color:#fff}
.pp-ftile-sw{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}
@media (pointer:coarse){.pp-pedit .pp-chip{min-height:36px}}
.pp-choice.pp-field-filters{border:0;overflow:visible;background:transparent}
.pp-tdays{display:flex;flex-wrap:wrap;align-items:center;gap:4px;flex-basis:100%}
.pp-tdays .pp-chip{min-height:28px;padding:0 9px;font-size:12px}
.pp-rotate{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:8px 0 12px;padding:10px 12px;border-radius:10px;background:var(--surface2)}
.pp-rotate-t{flex:1 1 220px;font-size:14px}
.pp-rotate.is-due{background:#FFF4D6;border:1px solid #E0A800}
/* Territorios (V13.18): three sections, cards for territories and meeting places */
.pp-tsecs{margin:0 0 12px}
.pp-tcard{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:12px;background:var(--surface)}
.pp-tcard.is-group{border-left-color:#956E00}
.pp-tcard-h{display:flex;align-items:center;gap:8px}
.pp-tcard-h .pp-input{flex:1 1 auto;min-width:0}
.pp-tcard-h .pp-tnum{flex:0 0 76px}
.pp-tplace-n{display:grid;place-items:center;flex:0 0 22px;height:22px;border-radius:50%;background:var(--primary);color:#fff;font-size:12px;font-weight:800}
.pp-tplace-t{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;font-size:14px;font-weight:600}
.pp-tplace-t small{font-weight:400;color:var(--ink2);font-size:12px}
.pp-book-page.is-featured{grid-column:1/-1;border:2px solid var(--yolk);box-shadow:0 0 0 3px rgba(244,180,0,.25)}
.pp-book-page.is-featured .pp-book-label{font-weight:800}
.pp-flabel{display:flex;flex-direction:column;gap:3px;min-width:0}
.pp-flabel>span,.pp-flabel-t{font-size:11.5px;font-weight:700;color:var(--ink2);text-transform:uppercase;letter-spacing:.03em}
.pp-flabel-place,.pp-flabel-note{flex:1 1 220px}
.pp-fterr{display:flex;flex-direction:column;gap:3px}
.pp-tdesc{min-height:52px;resize:vertical;font-size:13.5px}
.pp-mapview{display:grid;place-items:center;max-height:70vh;overflow:auto;background:var(--surface2);border-radius:10px}
.pp-mapview img{max-width:100%;height:auto;display:block}
/* outing row with labels (V13.21): the width goes to the label, the field keeps its normal height */
.pp-frow{align-items:flex-end}
.pp-frow .pp-flabel>.pp-input{flex:0 0 auto;width:100%}
.pp-flabel:has(>.pp-fslot){flex:0 1 190px}.pp-flabel:has(>.pp-fplace){flex:1 1 170px}.pp-flabel:has(>.pp-ffacet){flex:0 1 150px}
.pp-flabel:has(>.pp-fcond){flex:1 1 180px}.pp-flabel:has(>.pp-fnote){flex:1 1 160px}
.pp-fterr .pp-fadd{flex:0 0 auto;width:100%}
.pp-frow .pp-fterr{align-items:stretch}
/* Usuarios (V13.22): cards like Publicadores; the window uses the same rows as Ajustes */
.pp-pcard.is-admin{border-left-color:#956E00}
.pp-pcard-sum{flex-basis:100%;font-size:12.5px;color:var(--ink2);line-height:1.35}
.pp-uedit{display:flex;flex-direction:column;gap:6px}
.pp-uedit .pp-setrow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 14px;padding:8px 0;border-top:1px solid var(--line)}
.pp-uedit .pp-setrow>span{display:flex;flex-direction:column;min-width:150px}
.pp-uedit .pp-setrow small{color:var(--ink2);font-size:12.5px}
.pp-uedit-h{margin:12px 0 0;font-size:14.5px;color:var(--primary)}
.pp-uedit-actions{justify-content:space-between;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
/* segmented choices in a window: options in one row, same width, at most 380 px (next to the label on desktop) */
.pp-uedit .pp-choice{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);width:min(100%,380px);gap:4px}
.pp-uedit .pp-choice>button{min-width:0;padding:0 6px;font-size:13px;white-space:nowrap}
.pp-plan{margin:6px 0 10px;padding-left:18px;font-size:13.5px;line-height:1.5}
.pp-plan li{margin:2px 0}
.pp-pioneer-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 14px;width:100%;padding:6px 0}
.pp-pioneer-row .pp-choice{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);width:min(100%,380px);gap:4px}
.pp-aux-until{flex:1 1 180px;margin:0}
/* Informes (V13.26) */


.pp-rrow{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border:1px solid var(--line);border-left:4px solid var(--line2);border-radius:12px;background:var(--surface)}
.pp-rrow.is-done{border-left-color:#2B844E}
.pp-tag.is-reg{background:#E6EDF5;color:var(--primary);font-weight:800}
.pp-rtable{width:100%;border-collapse:collapse;margin:6px 0 10px;font-size:14px}
.pp-rtable th,.pp-rtable td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left}
.pp-rtable td{text-align:right;font-variant-numeric:tabular-nums}
.pp-rtable thead th{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink2)}
.pp-rtable tr.is-total th,.pp-rtable tr.is-total td{font-weight:800;border-top:2px solid var(--line2)}
.pp-rtable th small{font-weight:400;color:var(--ink2)}
.pp-rscroll{overflow-x:auto}
.pp-dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--line2);vertical-align:middle}
.pp-months{display:flex;flex-wrap:wrap;gap:4px}
.pp-months span{padding:2px 7px;border-radius:999px;font-size:12px;font-weight:700;background:var(--surface2)}
.pp-months .is-ok{color:#1E6B3A}.pp-months .is-no{color:#B42318}
:is(.pp,body.pp-body) .pp-undo-fab,:is(.pp,body.pp-body) .pp-undo-fab *{color:var(--primaryInk)} /* readable text on the PRIVS blue in light and dark (a general button rule was overriding it) */



/* ===================== V14: desktop harmony (see docs/GUIA-UI.md) ===================== */
/* one radius for every card and block (the Privilegios / Vida y Ministerio standard) */
.pp-block,.pp-pcard,.pp-tcard,.pp-ftile,.pp-rrow,.pp-zoom-card,.pp-meet,.pp-ann-card,.pp-ann-add,.pp-vweek,.pp-callout{border-radius:10px}
/* buttons: the radius of the fields (8 px); never under 28 px with a mouse */
.pp .fui-Button,.pp-btn{border-radius:8px}
@media (pointer:fine){.pp .fui-Button{min-height:28px}}
.pp-zoom-act .pp-btn{min-height:32px;padding:0 12px;border-radius:8px}
/* panels use the width of the page (the old 820 px limit left half the screen empty) */
.pp-panel{max-width:none}
.pp-setgrid{display:grid;gap:16px;align-items:start}
@media (min-width:1100px){.pp-setgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pp-setgrid>*{margin:0}
.pp-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:12px}
/* a segmented choice inside a card is compact (like in the windows) */
.pp-block>.pp-choice{display:inline-grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);width:min(100%,420px);gap:4px}
/* section titles inside a menu: Lora 18 px in the primary color (Informes groups too) */

/* Carrito's period looks like the month of the other menus */
.pp-pp-period{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.pp-pp-period h2,.pp-pp-period b{font-family:var(--font-title);font-size:22px;color:var(--ink)}
.pp-talk-grid{display:grid;gap:12px;align-items:start}
@media (min-width:1100px){.pp-talk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pp-talk-grid>.pp-block{margin:0}
.pp-setgrid>.pp-subtabs{grid-column:1/-1}
/* a single button inside a card keeps its own width (it never stretches across the card) */
.pp-block>.pp-btn,.pp-block>.fui-Button{justify-self:start;align-self:flex-start;width:auto}
/* number columns: the heading lines up with its numbers */
.pp-rtable thead th:not(:first-child){text-align:right}
.pp-rtable{max-width:960px}
.pp-rsuggest{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0;padding:6px 10px;border-radius:8px;background:#FFF4D6;color:#5C4400;font-size:13px}
.pp-navsec{display:flex;flex-direction:column;gap:2px}
.pp-navsec+.pp-navsec{margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}
.pp-navsec-t{margin:0 0 2px;padding:0 14px;font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}
/* Telemetría (V14.4) */
.pp-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0 0 14px}
.pp-kpi{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:10px;background:var(--surface)}
.pp-kpi b{font-family:var(--font-title);font-size:26px;color:var(--ink)}
.pp-kpi span{font-size:13px;font-weight:700;color:var(--ink2)}
.pp-kpi small{font-size:12px;color:var(--ink2)}
.pp-kpi em{align-self:flex-start;margin-top:4px;padding:1px 8px;border-radius:999px;font-style:normal;font-size:12px;font-weight:800}
.pp-kpi.is-good{border-left-color:#2B844E}.pp-kpi.is-good em{background:#E3F4E8;color:#1E6B3A}
.pp-kpi.is-mid{border-left-color:#D97706}.pp-kpi.is-mid em{background:#FFF4D6;color:#7A4B00}
.pp-kpi.is-bad{border-left-color:#B42318}.pp-kpi.is-bad em{background:#FDE7E7;color:#8F1D14}
.pp-bars{display:flex;align-items:flex-end;gap:4px;height:160px;padding:6px 0}
.pp-bar{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:1 1 0;min-width:6px;height:100%}
.pp-bar span{display:block;width:100%;min-height:2px;border-radius:4px 4px 0 0;background:var(--primary)}
.pp-bar small{margin-top:4px;font-size:10.5px;color:var(--ink2)}
.pp-rtable td.pp-tl{text-align:left;color:var(--ink2);font-variant-numeric:normal}
.pp-r-bad{color:#B42318;font-weight:800}.pp-r-mid{color:#7A4B00;font-weight:700}
.pp-tel-errors{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.pp-tel-errors li{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1px solid var(--line);border-left:4px solid #B42318;border-radius:10px}
.pp-tel-errors code{font-size:12px;color:var(--ink2);word-break:break-all}
.pp-rtable thead th.pp-tl{text-align:left}
.pp-bar{max-width:42px}
.pp-bars{justify-content:flex-start}
/* Ajustes (V14.5): cards stack in columns with no holes (a grid row was as tall as its tallest card); a tab with a
   single card uses the full width */
@media (min-width:1100px){
  .pp-setgrid{display:block;column-count:2;column-gap:16px}
  .pp-setgrid>*{break-inside:avoid;display:block;width:100%;margin:0 0 16px}
  .pp-setgrid>.pp-subtabs{column-span:all}
  .pp-setgrid:has(>:only-child){column-count:1}
}
.pp-tel-mine{display:flex;align-items:center;justify-content:flex-start;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);cursor:pointer}
.pp-tel-mine>span{display:flex;flex-direction:column;gap:1px}
.pp-tel-mine small{color:var(--ink2);font-size:12.5px}
/* V14.9: one color strip per card (an old inner shadow from V12 doubled the V14 border) */
.pp-pcard{box-shadow:none}
.pp-scard{box-shadow:none;border-left:4px solid var(--bar,var(--band))}
/* the notice board: platform assignments in their own card, apart from Privilegios */
.pp-meet+.pp-meet{margin-top:14px}
/* Privilegios: the table scrolls inside its board, so the row of headings (Fecha, Parqueo…) stays on top while scrolling
   down and the dates stay on the left while scrolling sideways (a board that only scrolled sideways kept them from sticking) */
.pp-board{overflow:auto;max-height:calc(100dvh / var(--zm, 1) - var(--appbar-h, 58px) - var(--tb-h, 0px) - 32px)}
.pp-grid thead th{top:0;z-index:3}
.pp-grid thead tr.pp-notes th{position:static}
.pp-grid thead tr.pp-head th.pp-corner{left:0;z-index:4}
.pp-scard-ghost{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:8px;min-height:120px;padding:12px;border:2px dashed var(--line2);border-radius:10px;background:transparent;box-shadow:none}
.pp-scard-ghost>button.pp-ghost-open{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;flex:1;border:0;background:transparent;color:var(--ink2);font:inherit;font-weight:700;cursor:pointer;border-radius:8px}
.pp-scard-ghost>button.pp-ghost-open:hover{background:var(--surface2);color:var(--primary)}
.pp-special-foot{display:flex;justify-content:center;margin:14px 0 0}
/* Discursos on phones: the column never grows past the screen (a select with long outline titles pushed it to 737 px) */
.pp-talk-grid{grid-template-columns:minmax(0,1fr)}
@media (min-width:1100px){.pp-talk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pp-talk,.pp-talk .pp-vslot{min-width:0}
.pp-talk .pp-input,.pp-talk select{max-width:100%;min-width:0}
.pp-talk .pp-vrow{flex-wrap:wrap}
.pp-gtag.t-irregular,.pp-tag.t-irregular{background:#FFF4D6;color:#7A4B00}
.pp-gtag.t-inactive,.pp-tag.t-inactive{background:#FDE7E7;color:#8F1D14}
.pp-login-cta.pp-login-bar{display:inline-flex;align-items:center;gap:6px;min-height:36px;margin:0 0 0 10px;padding:0 14px;border-radius:999px;font-size:14px;font-weight:800;text-transform:none;letter-spacing:0;box-shadow:none;white-space:nowrap}
@media (max-width:420px){.pp-login-cta.pp-login-bar{padding:0 10px;font-size:13px}}
/* on a computer the table fits in width: the headings stick to the page, under the bar and the toolbar (like the dates
   of Vida y Ministerio); on phones the table keeps its own scroll (it is wider than the screen) */
@media (min-width:1100px){
  .pp-board{overflow:visible;max-height:none}
  .pp-grid thead tr.pp-head th{top:calc(var(--appbar-h, 58px) + var(--tb-h, 0px))}
}
/* Bienvenido (V14.10, option C2): greeting, white assignment cards with how much is left, and the buttons */
@media (min-width:1100px){
}
@media (min-width:1100px){
}
/* Bienvenido V14.11: phones and tablets, one compact row per assignment (two tall columns looked huge);
   computers, every card in one row (a fifth card no longer drops to a second row) */
@media (min-width:1100px){
}
.pp-avail{display:flex;flex-direction:column;gap:10px}
.pp-avail-place{display:flex;flex-direction:column;gap:4px;padding:8px 10px;border:1px solid var(--line);border-radius:10px}
.pp-avail-place>b{font-size:14px;color:var(--primary)}
.pp-mates ol{margin:4px 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px}
.pp-mates li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 2px 2px 10px;border-radius:8px;background:var(--surface2)}
/* Bienvenido V15.0: each assignment is a centered card (date in gray, the assignment in bold, how much is left) and a
   button that opens its detail; small cards on phones, one row on computers */
.pp-mine-detail{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0 0 10px}
.pp-mine-detail dt{color:var(--ink2);font-weight:700}.pp-mine-detail dd{margin:0}
@media (min-width:1100px){
}
/* the notice board: each card with the color of its kind, like the reminders (Privilegios yellow, platform gold) */
.pp-meet{border-top:4px solid #F4B400}
/* the meeting in progress: its whole row stands out a little, to find everything during the meeting */
.pp-grid tr.is-now>td,.pp-grid tr.is-now>th{background:rgba(244,180,0,.13)}
/* Carrito V15.0: the two weeks as a calendar (only groups with people; tap a day to fill it) */
.pp-ppcal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.pp-ppcal-wd{text-align:center;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}
.pp-ppcal-day{display:flex;flex-direction:column;align-items:stretch;gap:5px;min-height:118px;padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.pp-ppcal-day:hover:not(:disabled){border-color:var(--primary);box-shadow:0 2px 8px rgba(16,24,40,.08)}
.pp-ppcal-day:disabled{opacity:.45;cursor:default;background:transparent}
.pp-ppcal-day.is-today{border:2px solid var(--primary)}
.pp-ppcal-day.is-error{border-color:#B42318}
.pp-ppcal-n{display:flex;align-items:baseline;gap:6px}.pp-ppcal-n b{font-size:18px}.pp-ppcal-n small{color:var(--ink2);font-size:12px;text-transform:capitalize}
.pp-ppcal-g{display:flex;flex-direction:column;gap:1px;padding:4px 6px;border-left:3px solid var(--place,#999);border-radius:6px;background:var(--surface2);font-size:12.5px;line-height:1.25}
.pp-ppcal-g small{color:var(--ink2);font-size:11.5px;font-weight:700}
.pp-ppcal-add{display:flex;align-items:center;gap:4px;margin-top:auto;color:var(--primary);font-size:12.5px;font-weight:700}
.pp-ppday-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pp-ppday-list .pp-ppcell{width:100%}
@media (max-width:899px){.pp-ppcal{grid-template-columns:1fr}.pp-ppcal-wd{display:none}.pp-ppcal-day{min-height:0}}
/* Carrito V15.01: a warning (outside availability, too many turns) is orange; an error (two places at once, alone) red */
.pp-ppcal-day.is-warn{border-color:#D97706}
.pp-ppcal-g.is-warn{border-left-color:#D97706;background:#FFF4D6}
.pp-ppcal-g.is-error{border-left-color:#B42318;background:#FDE7E7}
.pp-ppcell.is-warn{border-color:#D97706;background:#FFF8E8}
.pp-rsuggest.pp-freq{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pp-rsuggest.pp-freq>span{font-weight:700;color:var(--ink2)}
/* Predicación V15.03: an arrangement in three lines (time, facet and place; territories; conductor, note and delete) */
.pp-frow{display:grid;grid-template-columns:minmax(120px,170px) minmax(130px,190px) minmax(0,1fr);grid-template-areas:"time facet place" "terr terr terr" "cond note del";gap:10px 12px;align-items:end}
.pp-frow .pp-f-time{grid-area:time}.pp-frow .pp-f-facet{grid-area:facet}.pp-frow .pp-flabel-place{grid-area:place}
.pp-frow .pp-fterr{grid-area:terr;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pp-frow .pp-fterr .pp-flabel-t{flex:1 0 100%}
.pp-frow .pp-fterr .pp-fadd{flex:1 1 220px;max-width:340px}
.pp-frow .pp-f-cond{grid-area:cond}.pp-frow .pp-flabel-note{grid-area:note;grid-column:2 / 3}.pp-frow:has(.pp-f-cond){grid-template-areas:"time facet place" "terr terr terr" "cond cond note"}
.pp-frow:has(.pp-f-cond) .pp-flabel-note{grid-column:3 / 4;grid-row:3}
.pp-frow>.pp-vissues,.pp-frow>.pp-summary,.pp-frow>.pp-tag{grid-column:1 / -1}
.pp-frow .pp-flabel{min-width:0}.pp-frow .pp-input{width:100%;min-width:0}
@media (max-width:700px){.pp-frow{grid-template-columns:1fr;grid-template-areas:"time" "facet" "place" "terr" "cond" "note"}.pp-frow .pp-flabel-note,.pp-frow:has(.pp-f-cond) .pp-flabel-note{grid-column:1;grid-row:auto}}
.pp-zones{flex-wrap:wrap;align-items:center;gap:6px}
/* the territories of an arrangement: label on top, then the chosen ones side by side and the selector (normal height) */
.pp-frow .pp-fterr{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;align-content:flex-start;gap:6px}
.pp-frow .pp-fterr .pp-flabel-t{flex:1 0 100%;text-align:left}
.pp-frow .pp-fterr .pp-fadd{flex:0 1 300px;width:auto;height:auto;min-height:0;align-self:center}
.pp-frow .pp-fterr .pp-fchip{flex:0 0 auto}
/* Predicación V15.04: calendar without stripes, arrangements with facet color, side panel with compact arrangements */
.pp-mcal-day.is-empty{background:var(--surface)}
.pp-mcal-day.is-free{background:var(--surface)}
.pp-mcal-day.is-past{opacity:.6}
.pp-mcal-day.is-sel{border:2px solid var(--primary);box-shadow:0 0 0 3px rgba(54,88,127,.16)}
.pp-mcal-day.is-warn{box-shadow:none}
.pp-mcal-n{display:flex;align-items:center;justify-content:space-between}
.pp-mcal-dot{width:8px;height:8px;border-radius:50%;background:#D97706}
.pp-mcal-out{display:flex;flex-direction:column;gap:0;padding:3px 6px;border-left:3px solid #36587F;border-radius:6px;background:var(--surface2);font-size:12px;line-height:1.25;text-align:left}
.pp-mcal-out small{color:var(--ink2);font-size:11.5px}
.pp-mcal-out.f-letter{border-left-color:#7A5CC2;background:#F1ECFA}
.pp-mcal-out.f-groups{border-left-color:#2E8C88;background:#E7F4F3}
.pp-mcal-out.is-pend small{color:#9A5B00;font-weight:700}
.pp-mcal-add{margin-top:auto;color:var(--primary);font-size:12px;font-weight:700;opacity:.8}
.pp-flegend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;color:var(--ink2);font-size:12.5px}
.pp-flegend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;background:#36587F}
.pp-flegend i.f-letter{background:#7A5CC2}.pp-flegend i.f-groups{background:#2E8C88}.pp-flegend i.is-pend{background:#D97706}
.pp-toolbar .pp-fsum{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto;align-items:center}
.pp-tag.is-warn{background:#FFF4D6;color:#7A4B00}
.pp-fprog.has-panel{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:16px;align-items:start}
.pp-fpanel{position:sticky;top:calc(var(--appbar-h, 58px) + 12px);display:flex;flex-direction:column;gap:10px;max-height:calc(100dvh / var(--zm, 1) - var(--appbar-h, 58px) - 24px);overflow:auto;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.pp-fpanel-h{display:flex;align-items:center;justify-content:space-between;gap:8px}.pp-fpanel-h h3{margin:0;font:650 18px/1.25 var(--font-title);letter-spacing:-.01em}
.pp-fpanel-nav{display:flex;justify-content:space-between;gap:8px;margin-top:4px}
.pp-fcard{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}
.pp-fcard-h{display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;border:0;background:#FBFCFD;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.pp-fcard-h:hover{background:var(--surface2)}
.pp-fcard-t{min-width:66px;font-size:14.5px}
.pp-fcard-m{display:flex;flex-direction:column;flex:1;min-width:0}.pp-fcard-m small{color:var(--ink2)}
.pp-fcard.is-open .pp-fcard-h{border-bottom:1px solid var(--line)}
.pp-fcard .pp-frow{margin:0;border:0;border-radius:0;background:transparent;padding:10px 11px 12px;grid-template-columns:1fr 1fr;grid-template-areas:"time facet" "place place" "terr terr" "cond note"}
.pp-fcard .pp-frow .pp-flabel-note,.pp-fcard .pp-frow:has(.pp-f-cond) .pp-flabel-note{grid-column:2;grid-row:auto}
.pp-link.is-danger{color:#B42318;font-weight:700}
@media (max-width:700px){.pp-fcard .pp-frow{grid-template-columns:1fr;grid-template-areas:"time" "facet" "place" "terr" "cond" "note"}.pp-fcard .pp-frow .pp-flabel-note{grid-column:1}}
/* Predicación on phones: the window stacks every field in one column (the row's desktop placement does not apply);
   the calendar shows each day's number, its dot and how many arrangements it has (text does not fit in 7 columns) */
.pp-mcal-count{display:none}
@media (max-width:700px){
  .pp-fcard .pp-frow{display:flex;flex-direction:column;align-items:stretch;gap:10px}
  .pp-mcal-day{min-height:58px;padding:5px}
  .pp-mcal-out,.pp-mcal-add,.pp-mcal-day small{display:none}
  .pp-mcal-count{display:inline-grid;place-items:center;align-self:flex-start;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--surface2);color:var(--primary);font-size:12px;font-weight:800}
}
@media (max-width:700px){.pp-fcard .pp-frow>*{flex:0 0 auto;min-height:0}}
/* past days: a soft background and a gray number (the text keeps its contrast) */
.pp-mcal-day.is-past{opacity:1;background:#F6F7F9}
.pp-mcal-day.is-past .pp-mcal-n{color:var(--ink2)}
/* V15.05 phones: the welcome cards take only their own height (the list stretched its rows), three per row and small;
   an open arrangement is compact: Hora and Faceta side by side, the rest full width, lower fields (16 px text, so the
   iPhone does not zoom in when a field is touched) */
@media (max-width:700px){
  .pp-modal .pp-fcard .pp-frow{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:none;gap:8px 8px;padding:8px 10px 10px}
  .pp-modal .pp-fcard .pp-frow>*{grid-column:1 / -1;grid-row:auto;flex:none;min-width:0}
  .pp-modal .pp-fcard .pp-frow>.pp-f-time,.pp-modal .pp-fcard .pp-frow>.pp-f-facet{grid-column:auto}
  .pp-modal .pp-fcard .pp-frow .pp-flabel{gap:2px}
  .pp-modal .pp-fcard .pp-frow .pp-flabel>span,.pp-modal .pp-fcard .pp-frow .pp-flabel-t{font-size:10.5px;letter-spacing:.04em}
  .pp-modal .pp-fcard .pp-frow .pp-input{height:38px;min-height:38px;padding:0 8px;font-size:16px}
  .pp-modal .pp-fcard .pp-frow .pp-fterr{gap:5px}
  .pp-modal .pp-fcard .pp-frow .pp-fterr .pp-fadd{flex:1 1 100%;max-width:none}
  .pp-modal .pp-fcard-h{padding:8px 10px}
}
@media (max-width:700px){
  /* order on phones: Hora | Faceta, then Lugar, Territorio, Encargado, Nota and Quitar (the markup has Lugar in between) */
  .pp-modal .pp-fcard .pp-frow>.pp-f-time{order:1}.pp-modal .pp-fcard .pp-frow>.pp-f-facet{order:2}
  .pp-modal .pp-fcard .pp-frow>.pp-flabel-place{order:3}.pp-modal .pp-fcard .pp-frow>.pp-fterr{order:4}
  .pp-modal .pp-fcard .pp-frow>.pp-f-cond{order:5}.pp-modal .pp-fcard .pp-frow>.pp-flabel-note{order:6;grid-column:1 / -1;grid-row:auto}
  .pp-modal .pp-fcard .pp-frow>.pp-vissues,.pp-modal .pp-fcard .pp-frow>.pp-summary,.pp-modal .pp-fcard .pp-frow>.pp-tag{order:8}
}
/* V15.06: the day panel opens smoothly. The page is always two columns on a computer and the panel's column goes
   from 0 to 420 px (the calendar narrows at the same time); the panel slides in from the right and fades in; changing
   day fades its content. Native CSS transitions: the browser animates them on its own, nothing extra is loaded. */
.pp-fprog.is-wide{display:grid;grid-template-columns:minmax(0,1fr) 0px;column-gap:0;align-items:start;
  transition:grid-template-columns .42s cubic-bezier(.22,.8,.22,1),column-gap .42s cubic-bezier(.22,.8,.22,1)}
.pp-fprog.is-wide.has-panel{grid-template-columns:minmax(0,1fr) var(--split-w,420px);column-gap:16px}
.pp-fprog.is-wide>.pp-fpanel{position:sticky;top:calc(var(--appbar-h, 58px) + 12px);display:block;min-width:0;max-height:none;padding:0;border:0;background:transparent;overflow:hidden;
  opacity:0;transform:translateX(32px);transition:opacity .3s ease .06s,transform .42s cubic-bezier(.22,.8,.22,1)}
.pp-fprog.is-wide>.pp-fpanel.is-open{opacity:1;transform:none}
.pp-fpanel-in{display:flex;flex-direction:column;gap:10px;width:var(--split-w,420px);max-height:calc(100dvh / var(--zm, 1) - var(--appbar-h, 58px) - 24px);overflow:auto;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--surface);
  animation:pp-fpanel-in .24s ease}
@keyframes pp-fpanel-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.pp-mcal-day{transition:border-color .2s,box-shadow .2s,background-color .2s}
/* Territorio before Lugar de reunión (the place depends on the territories) */
.pp-fcard .pp-frow{grid-template-areas:"time facet" "terr terr" "place place" "cond note"}
@media (max-width:700px){.pp-modal .pp-fcard .pp-frow>.pp-fterr{order:3}.pp-modal .pp-fcard .pp-frow>.pp-flabel-place{order:4}}
@media (prefers-reduced-motion:reduce){.pp-fprog.is-wide,.pp-fprog.is-wide>.pp-fpanel,.pp-fpanel-in,.pp-mcal-day{transition:none;animation:none}}
/* V15.07: explanations as an (i) beside titles and labels (shown on hover or tap), instead of paragraphs */
.pp-helptip{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-left:6px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--ink2);vertical-align:middle;cursor:help}
.pp-helptip:hover,.pp-helptip:focus-visible{background:var(--surface2);color:var(--primary)}
.pp-helptip:focus-visible{outline:2px solid var(--primary);outline-offset:1px}
.pp-helptip-pop{max-width:300px;font-size:13.5px;line-height:1.45}
h2.pp-h-help{display:flex;align-items:center;gap:2px}
.pp-block>.pp-helptip{float:right}
.pp-tel-eh{display:flex;align-items:center;gap:4px}
.pp-tel-eh>b{flex:1;min-width:0}
/* Discursos públicos > Discursantes (V15.07): two columns on a computer; guests as clean rows, the congregation as a grid */
@media (min-width:1100px){.pp-spk{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px;align-items:start}}
.pp-spk-add{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin:0 0 12px}
.pp-spk-add .pp-spk-name{grid-column:1 / -1}
.pp-spk-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.pp-spk-list li{display:flex;align-items:center;gap:10px;padding:9px 2px;border-top:1px solid var(--line)}
.pp-spk-info{display:flex;flex-direction:column;flex:1;min-width:0}.pp-spk-info small{color:var(--ink2)}
.pp-spk-edit{display:grid;grid-template-columns:1fr 1fr;gap:6px;flex:1;min-width:0}.pp-spk-edit .pp-input:first-child{grid-column:1 / -1}
.pp-spk-av{display:inline-grid;place-items:center;flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:var(--surface2);color:var(--primary);font-size:12px;font-weight:800}
.pp-spk-locals{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px}
.pp-spk-locals li{display:flex;align-items:center;gap:8px;padding:5px 8px 5px 5px;border:1px solid var(--line);border-radius:999px;font-size:13.5px}
.pp-spk-locals .pp-spk-av{flex-basis:26px;width:26px;height:26px;font-size:11px}
.pp-spk-empty{margin:4px 0 0;color:var(--ink2)}
@media (max-width:600px){.pp-spk-add{grid-template-columns:1fr}.pp-spk-edit{grid-template-columns:1fr}}
.pp-helptip{width:24px;height:24px;min-width:24px;min-height:24px}
/* V15.08: the notes row keeps a positioned cell (relative, not sticky): its hidden screen-reader texts are anchored to
   the cell again, inside the table's scroll; static cells let them anchor to the page and widen it on phones */
.pp-grid thead tr.pp-notes th{position:relative}
h3.pp-h-help,h4.pp-h-help{display:flex;align-items:center;gap:2px}
/* Informes V15.09: Mes (groups and a keyboard table; cards on phones), Resumen (cards), Tarjetas S-21 (list and card) */
.pp-rmonth-grid{display:grid;grid-template-columns:230px minmax(0,1fr);gap:14px;align-items:start}
.pp-rgroups{display:flex;flex-direction:column;gap:3px;padding:10px;position:sticky;top:calc(var(--appbar-h,58px) + 12px)}
.pp-rgroups-h{margin:2px 6px 6px;font-size:11.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--ink2)}
.pp-rgroup{display:flex;flex-direction:column;gap:5px;padding:8px 9px;border:0;border-radius:8px;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.pp-rgroup>span:first-child{display:flex;justify-content:space-between;gap:8px}.pp-rgroup small{color:var(--ink2)}
.pp-rgroup:hover,.pp-rgroup.is-on{background:var(--surface2)}
.pp-rprog{display:block;height:6px;border-radius:99px;background:var(--surface2);overflow:hidden}.pp-rgroup.is-on .pp-rprog{background:var(--surface)}
.pp-rprog i{display:block;height:100%;background:#2B844E}.pp-rprog i.is-low{background:#D97706}
.pp-rgroups-strip{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:8px}
.pp-rgroups-strip .pp-rgroup{flex:0 0 auto;flex-direction:row;padding:6px 11px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:13px}
.pp-rgroups-strip .pp-rgroup.is-on{background:var(--primary);color:#fff;border-color:var(--primary)}.pp-rgroups-strip .pp-rgroup.is-on small{color:#fff}
.pp-rtab-card{padding:0;overflow:hidden}.pp-rtab-h{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}.pp-rtab-h h2{margin:0;flex:1}
.pp-rtab{width:100%;border-collapse:collapse}
.pp-rtab th,.pp-rtab td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.pp-rtab thead th{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink2);background:var(--surface2)}
.pp-rtab tbody th{font-weight:700;white-space:nowrap}.pp-rtab tbody th .pp-tag{margin-left:6px}
.pp-rtab tbody tr:focus{outline:none;background:#FFF8E6}.pp-rtab tbody tr:focus-within{background:#FFFBF0}
.pp-rtab tbody tr.is-missing th{box-shadow:inset 3px 0 0 #D97706}
.pp-yn{display:inline-flex;border:1px solid var(--line2,#CBD3DD);border-radius:8px;overflow:hidden}
.pp-yn button{min-width:40px;min-height:30px;padding:0 10px;border:0;background:var(--surface);color:var(--ink);font:inherit;font-weight:700;cursor:pointer}
.pp-yn button+button{border-left:1px solid var(--line)}
.pp-yn .is-y[aria-pressed="true"]{background:#2B844E;color:#fff}.pp-yn .is-n[aria-pressed="true"]{background:#F6D4CF;color:#8F1D14}
.pp-step{display:inline-flex;align-items:center;border:1px solid var(--line2,#CBD3DD);border-radius:8px;overflow:hidden}
.pp-step button{width:30px;min-height:30px;border:0;background:var(--surface);color:var(--ink2);font:inherit;font-weight:800;cursor:pointer}.pp-step button:disabled{opacity:.4;cursor:default}
.pp-step b{min-width:28px;text-align:center}
.pp-rbox{width:20px;height:20px;accent-color:var(--primary)}
.pp-rnum{width:76px;text-align:right}.pp-robs{min-width:140px}
.pp-rkeys{display:inline-flex;align-items:center;color:var(--ink2);font-size:12.5px}
.pp-rcards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pp-rcard{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.pp-rcard.is-missing{border-left:3px solid #D97706}
.pp-rcard-h{display:flex;flex-direction:column;flex:1;min-width:0;padding:0;border:0;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.pp-rcard-h b{display:flex;align-items:center;gap:6px}.pp-rcard-h small{color:var(--ink2)}.pp-rcard.is-missing .pp-rcard-h small{color:#9A5B00;font-weight:700}
.pp-rcard .pp-yn button{min-width:46px;min-height:38px}
.pp-rcard-more{flex:1 0 100%;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:8px;border-top:1px solid var(--line)}
.pp-rcard-obs{grid-column:1 / -1}.pp-rcard-aux{display:flex;align-items:center;gap:8px;grid-column:1 / -1}
.pp-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:0 0 12px}
.pp-rbranch{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:12px}
.pp-rbranch .pp-block{margin:0}.pp-rline{display:flex;justify-content:space-between;margin:0;padding:6px 0;border-bottom:1px dashed var(--line)}.pp-rline:last-child{border:0}.pp-rline b{font-size:17px}
.pp-s21-grid{display:grid;grid-template-columns:320px minmax(0,1fr);gap:14px;align-items:start}
.pp-s21-list{padding:10px;position:sticky;top:calc(var(--appbar-h,58px) + 12px);max-height:calc(100dvh / var(--zm, 1) - var(--appbar-h,58px) - 24px);overflow:auto}
.pp-s21-list ul{list-style:none;margin:0;padding:0}
.pp-s21-list li{display:flex;align-items:center;gap:6px;padding:2px 4px;border-radius:8px}.pp-s21-list li.is-on{background:var(--surface2)}
.pp-s21-list li>button{display:flex;align-items:center;gap:7px;flex:1;min-width:0;min-height:34px;padding:2px 4px;border:0;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.pp-s21-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pp-s21-list small{color:var(--ink2)}
.pp-ldot{flex:0 0 9px;width:9px;height:9px;border-radius:50%;background:#C8D0DA}.pp-ldot.l-green{background:#2B844E}.pp-ldot.l-orange{background:#D97706}.pp-ldot.l-red{background:#B42318}
.pp-s21-detail{display:flex;flex-direction:column;gap:10px;min-width:0}
.pp-s21-sheet{display:block;width:100%;max-width:640px;margin:0 auto;border:1px solid #C9D1DB;box-shadow:0 4px 18px rgba(16,24,40,.10);background:#fff}
.pp-s21-actions{justify-content:center}.pp-s21-more{margin:0}
.pp-tag.is-aux{background:#FFF4D6;color:#7A4B00}
@media (max-width:900px){.pp-s21-grid{grid-template-columns:1fr}.pp-s21-list{position:static;max-height:300px}}
@media (max-width:600px){.pp-rcard-more{grid-template-columns:1fr}}
/* Informes on phones: the toolbar scrolls with the page (it took a quarter of the screen), the filters are one line
   that slides, and the studies stepper keeps its size */
@media (max-width:759px){
  .pp-rmonth .pp-field-filters,.pp-s21 .pp-field-filters{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
  .pp-rmonth .pp-field-filters button,.pp-s21 .pp-field-filters button{flex:0 0 auto}
}
.pp-rcard-more .pp-step{align-self:flex-start}
/* V15.10: what is fixed beside or under the buttons bar starts below it (it no longer covers it) */
.pp-rgroups,.pp-s21-list,.pp-fprog.is-wide>.pp-fpanel{top:calc(var(--appbar-h, 58px) + var(--tb-h, 0px) + 10px)}
.pp-s21-list{max-height:calc(100dvh / var(--zm, 1) - var(--appbar-h, 58px) - var(--tb-h, 0px) - 20px)}
.pp-fpanel-in{max-height:calc(100dvh / var(--zm, 1) - var(--appbar-h, 58px) - var(--tb-h, 0px) - 20px)}
/* V15.12 Predicación: alerts in red with an exclamation mark; days chosen to delete together; companions */
.pp-mcal-dot{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;background:#B42318;color:#fff;font:800 11px/1 system-ui,sans-serif}
.pp-mcal-out.is-pend small{color:#B42318;font-weight:800}.pp-mcal-out.is-pend small::before{content:'! '}
.pp-flegend i.is-pend{background:#B42318}
.pp-mcal-day.is-picked{border:2px solid #B42318;background:#FDECEC}
.pp-fpick{display:flex;align-items:center;gap:6px}
.pp-fmate{border-style:dashed;color:var(--primary);font-weight:700;cursor:pointer;background:var(--surface)}.pp-fmate small{color:var(--ink2);font-weight:600}
.pp-busy{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.pp-busy-add{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.pp-busy-add .pp-input{flex:1 1 130px;min-width:0}
.pp-busy-list{display:flex;flex-wrap:wrap;gap:5px}
/* V15.14 Predicación > Territorios: one bar of tools; each territory a short line that opens to edit (no overflow) */
.pp-ttool{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 8px}.pp-ttool .pp-search{flex:1 1 240px;min-width:0}.pp-ttool>select{flex:0 1 200px;min-width:0}
.pp-tadd{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}.pp-tadd .pp-tnum{flex:0 0 96px}.pp-tadd .pp-input:not(.pp-tnum){flex:1 1 200px;min-width:0}
.pp-tlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.pp-titem{border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden;min-width:0}
.pp-titem.is-group{border-left:3px solid #2E8C88}
.pp-titem-h{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:0;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-width:0}
.pp-titem-h:hover{background:var(--surface2)}.pp-titem.is-open .pp-titem-h{border-bottom:1px solid var(--line);background:var(--surface2)}
.pp-tnumb{flex:0 0 auto;min-width:46px;padding:3px 7px;border-radius:7px;background:var(--surface2);color:var(--primary);text-align:center;font-size:13px}
.pp-titem.is-open .pp-tnumb{background:var(--surface)}
.pp-titem-m{display:flex;flex-direction:column;flex:1;min-width:0}.pp-titem-m b,.pp-titem-m small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pp-titem-m small{color:var(--ink2)}
.pp-titem-last{flex:0 0 auto;color:var(--ink2);font-size:12px}
.pp-tedit{display:grid;grid-template-columns:110px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:10px 12px;padding:12px}
.pp-tedit .pp-flabel{min-width:0;gap:3px}.pp-tedit .pp-input{width:100%;min-width:0}.pp-tedit select.pp-input{height:38px}
.pp-tedit-wide{grid-column:1 / -1}
.pp-tsec{display:flex;flex-direction:column;gap:6px;min-width:0}.pp-tchips{flex-wrap:wrap;gap:6px}
.pp-tpick{max-width:360px;height:38px;flex:none}
.pp-tplist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.pp-tplist li{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;background:var(--surface2);min-width:0}.pp-tplist .pp-tplace-t{flex:1;min-width:0;display:flex;flex-direction:column}.pp-tplist small{color:var(--ink2)}
.pp-tfoot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding-top:6px;border-top:1px dashed var(--line)}
.pp-tmapbtn{position:relative;cursor:pointer}
@media (max-width:760px){.pp-tedit{grid-template-columns:96px minmax(0,1fr)}.pp-ttool>select{flex:1 1 140px}.pp-titem-last{display:none}.pp-tpick{max-width:none}}
@media (max-width:760px){
  /* phone: Número | Nombre, then Zona | Distancia at half width each; the search on its own line */
  .pp-tedit{grid-template-columns:96px minmax(0,1fr) minmax(0,1fr)}
  .pp-tedit>.pp-flabel:nth-child(2){grid-column:2 / 4}
  .pp-tedit>.pp-flabel:nth-child(3){grid-column:1 / 3}
  .pp-tedit>.pp-flabel:nth-child(4){grid-column:3 / 4}
  .pp-ttool .pp-search{flex:1 1 100%}
}
.pp-fdays-edit{flex-wrap:wrap}.pp-fdays-freq{flex:1 1 180px;min-width:0;height:36px}.pp-fdays-from{display:flex;align-items:center;gap:6px}.pp-fdays-from .pp-input{width:auto}
.pp-fdays-time.is-freq small{font-weight:700;opacity:.8}
.pp-frozen.is-paused{background:#FFF4D6;border-color:#F2D58A;color:#6B4600}
/* V15.16: «Instalar app» at the end of the board */
.pp-install{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 6px;padding:12px 14px;border:1px dashed var(--line);border-radius:12px;background:var(--surface)}
.pp-install-ic{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--surface2);color:var(--primary)}
.pp-install-t{display:flex;flex-direction:column;flex:1 1 200px;min-width:0}.pp-install-t small{color:var(--ink2)}
.pp-install-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.pp-install-steps li{display:flex;gap:10px;align-items:flex-start}.pp-install-n{display:grid;place-items:center;flex:0 0 26px;height:26px;border-radius:50%;background:var(--primary);color:#fff;font-weight:800}
.pp-install-key{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface2)}
/* V15.17 Publicadores: the card in sections; the delete link apart at the end */
.pp-pubcard{display:flex;flex-direction:column;gap:12px}
.pp-pubsec{display:flex;flex-direction:column;gap:8px;padding:10px 0 0;border-top:1px solid var(--line)}.pp-pubsec:first-child{border-top:0;padding-top:0}
.pp-pubsec h4{margin:0;font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}
.pp-pubfoot{display:flex;justify-content:flex-end;padding-top:8px;border-top:1px dashed var(--line)}.pp-pubfoot .pp-link{display:inline-flex;align-items:center;gap:6px}
/* V15.17 Días y Horas: each time is its own card (number, time, type, frequency, delete); letters in light blue */
.pp-fdays-edit{display:grid;grid-template-columns:28px 130px minmax(0,1fr) auto;grid-template-areas:"n tm mode del" "n fq fq fq";align-items:center;gap:8px 10px;padding:10px 12px;margin:0 0 8px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 1px 2px rgba(16,24,40,.04)}
.pp-fdays-edit.m-zoom{background:#EEF5FD;border-color:#C9DDF5}
.pp-fdays-edit.m-both{background:#F6F8FB}
.pp-fdays-n{grid-area:n;align-self:start;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface2);color:var(--primary);font-weight:800;font-size:12.5px}
.pp-fdays-edit.m-zoom .pp-fdays-n{background:#fff}
.pp-fdays-tm{grid-area:tm;width:100%;min-width:0}
.pp-fdays-mode{grid-area:mode;display:flex;min-width:0}.pp-fdays-mode button{flex:1 1 0;min-width:0;white-space:nowrap}
.pp-fdays-edit>.pp-icon,.pp-fdays-edit>button[aria-label]:last-child{grid-area:del;justify-self:end}
.pp-fdays-edit .pp-fdays-freq{grid-area:fq;max-width:260px}
.pp-fdays-edit .pp-fdays-from{grid-column:3 / 5;grid-row:2;justify-self:end}
.pp-fdays-time.m-zoom{background:#EEF5FD;border-color:#C9DDF5;color:#1F5C99}
@media (max-width:600px){.pp-fdays-edit{grid-template-columns:28px minmax(0,1fr) auto;grid-template-areas:"n tm del" "n mode mode" "n fq fq"}.pp-fdays-edit .pp-fdays-from{grid-column:2 / 4;grid-row:4;justify-self:start}.pp-fdays-mode button{font-size:12.5px;padding:0 6px}}
/* the card's fields at their normal height (an older rule stretched them) and Sexo side by side */
.pp-pubcard .pp-input{height:38px;min-height:38px;flex:none;align-self:stretch}
.pp-pubcard .pp-choice{display:flex;flex-direction:row;flex-wrap:nowrap}.pp-pubcard .pp-choice button{flex:1 1 0}
/* the three types of a time in equal columns, on one line */
.pp-fdays-mode{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.pp-fdays-mode button{padding:0 8px;font-size:13px;justify-content:center}
/* a time card: time, frequency and delete on the first line; the three types across the second line */
.pp-pedit .pp-fdays-edit{grid-template-columns:28px 140px minmax(0,1fr) auto;grid-template-areas:"n tm fq del" "n mode mode mode" "n from from from"}
.pp-pedit .pp-fdays-edit .pp-fdays-freq{grid-area:fq;max-width:none;width:100%}
.pp-pedit .pp-fdays-edit .pp-choice.pp-fdays-mode{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));flex-wrap:nowrap;gap:6px}
.pp-pedit .pp-fdays-edit .pp-fdays-from{grid-area:from;grid-column:auto;grid-row:auto;justify-self:start}
@media (max-width:600px){.pp-pedit .pp-fdays-edit{grid-template-columns:28px minmax(0,1fr) auto;grid-template-areas:"n tm del" "n fq fq" "n mode mode" "n from from"}}
.pp-pedit .pp-fdays-edit .pp-fdays-mode button{min-width:0;overflow:hidden;text-overflow:ellipsis}
/* V15.19 Publicadores: extra data of the cards (contact number…) and the window to create them */




/* V15.20: the conductor's contact data in the field service program; the switch per data in the window */



/* V15.21 Predicación > Encargados and Territorios: thin lines; the editor in the side panel that narrows the list */
.pp-tedit{grid-template-columns:96px minmax(0,1fr) minmax(0,1fr);padding:4px 0 8px}
.pp-tedit>.pp-flabel:nth-child(2){grid-column:2 / 4}.pp-tedit>.pp-flabel:nth-child(3){grid-column:1 / 3}.pp-tedit>.pp-flabel:nth-child(4){grid-column:3 / 4}
.pp-fpanel-in .pp-tedit .pp-tpick{max-width:none}
.pp-split{align-items:start}.pp-split>.pp-fprog-main{min-width:0}
.pp-split .pp-titem.is-open{border-color:var(--primary);box-shadow:0 0 0 2px rgba(54,88,127,.14)}.pp-split .pp-titem.is-open .pp-titem-h{border-bottom:0;background:var(--surface2)}
.pp-erow{display:flex;align-items:center;gap:6px;padding-right:10px}.pp-erow .pp-titem-h{flex:1;min-width:0}
.pp-erow.is-off .pp-titem-m b{color:var(--ink2)}.pp-erow-sw{flex:0 0 auto}
.pp-pedit{display:flex;flex-direction:column;gap:12px}
.pp-pedit .pp-pppref{display:flex;flex-direction:column;gap:6px}.pp-pedit .pp-pppref-day{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.pp-pedit .pp-pppref-day>span{flex:0 0 74px;font-size:12px;color:var(--ink2);font-weight:700}
.pp-pedit .pp-ftile-sw{display:flex;align-items:center;gap:8px;font-weight:600}

.pp-pedit .pp-chip{min-height:28px;padding:0 8px;font-size:12px}
/* V15.22 black dark theme: the page itself, and the browser's overscroll */
body.pp-body{background:var(--bg);color:var(--ink)}
html:has(body.pp-body[data-theme="dark"]){background:#151C2E;color-scheme:dark}


/* V15.22: the trash can of an arrangement sits at the top of its card, beside the time, place and conductor */
.pp-fcard-top{display:flex;align-items:stretch}.pp-fcard-top .pp-fcard-h{flex:1 1 auto;min-width:0;width:auto}
.pp-fcard-top>.pp-icon,.pp-fcard-top>button:last-child{flex:0 0 auto;align-self:center;margin:0 6px 0 2px}
.pp-fcard.is-open .pp-fcard-top{border-bottom:1px solid var(--line)}.pp-fcard.is-open .pp-fcard-top .pp-fcard-h{border-bottom:0}
/* V15.22 the divider between a list and its panel (draggable, remembered); Días y Horas as lines that open in the panel */
.pp-fprog.is-wide{position:relative}
.pp-split-grip{position:absolute;top:0;bottom:0;right:calc(var(--split-w,420px) + 2px);width:12px;cursor:col-resize;touch-action:none;z-index:5;outline:0}
.pp-split-grip::after{content:'';position:absolute;left:5px;top:10px;bottom:10px;width:2px;border-radius:2px;background:var(--line2);transition:background .15s,width .15s,left .15s}
.pp-split-grip:hover::after,.pp-split-grip:focus-visible::after,.pp-fprog.is-resizing .pp-split-grip::after{background:var(--primary);width:4px;left:4px}
.pp-fprog.is-resizing{user-select:none;cursor:col-resize}.pp-fprog.is-resizing,.pp-fprog.is-resizing>.pp-fpanel,.pp-fprog.is-resizing .pp-fpanel-in{transition:none;animation:none}
.pp-fdays li{padding:0 10px 0 0}.pp-fdays-row{flex:1 1 auto;display:flex;align-items:center;gap:10px;min-width:0;padding:8px 0 8px 10px;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.pp-fdays li.is-open{border-color:var(--primary);box-shadow:0 0 0 2px rgba(54,88,127,.14)}

/* a narrow panel (dragged to its minimum): the frequency of a time goes on its own line */
.pp-fpanel-in{container-type:inline-size}
@container (max-width:400px){.pp-pedit .pp-fdays-edit{grid-template-columns:28px minmax(0,1fr) auto;grid-template-areas:"n tm del" "n fq fq" "n mode mode" "n from from"}.pp-pedit .pp-fdays-edit .pp-fdays-freq{max-width:none}.pp-pedit .pp-fdays-mode button{font-size:12px;padding:0 3px;gap:3px}.pp-pedit .pp-fdays-mode button svg{display:none}}

:is(.pp,body.pp-body)[data-theme="dark"] .pp-rgroups-strip .pp-rgroup.is-on small{color:var(--primaryInk)}


/* V15.23 the split pane handle: invisible until the pointer is over it (or it has the keyboard focus, or it is being
   dragged), and it only exists once the panel has finished sliding in */
.pp-split-grip{visibility:hidden;cursor:col-resize}
.pp-fprog.has-panel .pp-split-grip{visibility:visible;animation:pp-grip-in 0s .44s both}
@keyframes pp-grip-in{from{visibility:hidden}to{visibility:visible}}
.pp-split-grip::after{opacity:0;transition:opacity .15s ease,background .15s,width .15s,left .15s}
.pp-split-grip:hover::after,.pp-split-grip:focus-visible::after,.pp-fprog.is-resizing .pp-split-grip::after{opacity:1}
@media (hover:none){.pp-split-grip::after{opacity:.55}}

/* V15.23 Informes > Mes: several at once (check boxes and the bulk bar) */
.pp-rbulk{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
.pp-rtab .pp-rsel{width:34px;text-align:center}.pp-rtab tr.is-sel>*{background:var(--focusCell)}
.pp-rcard{position:relative}.pp-rcard-sel{position:absolute;left:8px;top:11px;z-index:1;width:26px;height:26px;margin:0}.pp-rcard .pp-rcard-h{padding-left:44px}.pp-rcard.is-sel{border-color:var(--primary)}

/* V15.23 telemetry: one day (date or a bar of the chart) */
.pp-tel-day{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700}.pp-tel-day .pp-input{height:34px}
button.pp-bar{border:0;background:transparent;padding:0;font:inherit;color:inherit;cursor:pointer}button.pp-bar:hover>span,button.pp-bar:focus-visible>span{filter:brightness(1.15);outline:2px solid var(--primary);outline-offset:1px}

/* V15.23 person cards with the side panel: the selected card is marked */
.pp-pcard.is-open{border-color:var(--primary);box-shadow:0 0 0 2px rgba(54,88,127,.14)}

/* V15.24 Predicación: the rotation of the groups' territories (a reminder a month before, an alert when due) */
.pp-rotnote{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:0 0 12px;padding:10px 14px;border:1px solid var(--line2);border-left:4px solid #F4B400;border-radius:10px;background:var(--surface)}
.pp-rotnote>span{flex:1 1 260px;display:flex;flex-direction:column;gap:2px}.pp-rotnote small{color:var(--ink2)}
.pp-rotnote.is-due{border-left-color:#B42318;background:var(--errbg, #FDECEA)}.pp-rotnote.is-due b{color:var(--err, #B42318)}

/* V15.24 who is in the app: small circles with the initials, a green (active) or orange (away) ring, bottom right */
.pp-presence{position:fixed;right:14px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:55;display:flex;flex-direction:row-reverse;gap:6px;margin:0;padding:0;list-style:none;pointer-events:auto}
.pp-pres{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--surface);color:var(--ink);font-size:11px;font-weight:800;letter-spacing:.02em;box-shadow:0 0 0 2.5px var(--pres-ring,#9AA5B1),0 2px 6px rgba(0,0,0,.18);cursor:default;user-select:none}
.pp-pres.is-active{--pres-ring:#22A35A}.pp-pres.is-away{--pres-ring:#F59E0B}.pp-pres.is-more{--pres-ring:var(--line2);font-size:10.5px;color:var(--ink2)}
.pp-pres:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
.pp-presence~.pp-undo-fab{bottom:calc(58px + env(safe-area-inset-bottom))}
@media print{.pp-presence{display:none}}

/* sliding the finger sideways changes the tab (useSwipeTabs): the browser's own swipe-to-go-back inside the page is
   turned off, otherwise a swipe to the right also ran «back» and undid the change (the system's edge gesture stays) */
html,body{overscroll-behavior-x:none}

/* V15.24 a list to add one of many (territories): below the field, limited height, typing filters */
.pp-picklist{width:100%;min-width:0}.pp-picklist-lb{max-height:min(320px,45vh) !important;overflow-y:auto}

/* V15.25 dark mode, refined (UXABLES, Material Design, Apple HIG): black background; elevation by lighter surfaces, not
   shadows; text off-white at 87 / 60 / 55 %; softer accents. The menu and the top bar are translucent glass. */
body.pp-body[data-theme="dark"] .pp-drawer.fui-OverlayDrawer{background:rgba(25,34,58,.66)!important;backdrop-filter:blur(24px) saturate(160%);-webkit-backdrop-filter:blur(24px) saturate(160%);border-right:1px solid rgba(255,255,255,.10);box-shadow:8px 0 40px rgba(0,0,0,.55)}
body.pp-body[data-theme="dark"] .pp-drawer .pp-navitem:hover{background:rgba(255,255,255,.08)}
body.pp-body[data-theme="dark"] .pp-drawer .pp-navitem[aria-current=page],body.pp-body[data-theme="dark"] .pp-drawer .pp-navitem.is-on{background:rgba(143,180,222,.16)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-appbar{background:rgba(21,28,46,.78);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border-bottom:1px solid rgba(255,255,255,.08)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){body.pp-body[data-theme="dark"] .pp-drawer.fui-OverlayDrawer{background:#19223A!important}:is(.pp,body.pp-body)[data-theme="dark"] .pp-appbar{background:#151C2E}}
/* cards and panels lifted by a hairline instead of a shadow (a shadow does not show on black) */

/* the page behind the menu is dimmed less, so the menu's glass shows */
body.pp-body .fui-OverlayDrawer__backdrop{background-color:rgba(0,0,0,.28)!important}
body.pp-body[data-theme="dark"] .fui-OverlayDrawer__backdrop{background-color:rgba(8,12,24,.45)!important}

/* V15.26 the user button: a pill with the initials in a gold circle and «Nombre I.», easy to find */
.pp-appbar-actions .pp-user{display:inline-flex;align-items:center;gap:8px;height:38px;max-width:210px;padding:3px 14px 3px 3px;border-radius:999px;border:1px solid rgba(255,255,255,.42);background:rgba(255,255,255,.16);color:#fff;font:inherit;font-weight:800;font-size:13.5px;line-height:1;white-space:nowrap;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.12);transition:background .15s,border-color .15s,transform .1s}
.pp-appbar-actions .pp-user:hover{background:rgba(255,255,255,.26);border-color:rgba(255,255,255,.65)}
.pp-appbar-actions .pp-user:active{transform:scale(.98)}
.pp-appbar-actions .pp-user:focus-visible{outline:2px solid var(--yolk,#F4B400);outline-offset:2px}
.pp-user-name{overflow:hidden;text-overflow:ellipsis}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-appbar-actions .pp-user{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-appbar-actions .pp-user:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.34)}

/* the clock gives way to the user's name on narrow screens (it was drawn over the congregation's name) */
@media (max-width:640px){.pp-appbar .pp-clock{display:none}}

/* V15.27 a group arrangement: only its facet and ARREGLO DE GRUPOS (no time, place, territory or conductor) */
.pp-frow.is-groups{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}.pp-fgroups-only{margin:0;padding:8px 16px;border:1.5px solid #2E8C88;border-radius:999px;background:#EEF8F7;color:#1F6F6B;font-weight:800;letter-spacing:.03em}
.pp-groups-label{color:#1F6F6B;letter-spacing:.03em}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fgroups-only{background:#0F2523;border-color:#4FB3AD;color:#8FD8D2}:is(.pp,body.pp-body)[data-theme="dark"] .pp-groups-label{color:#8FD8D2}

/* V15.28 the group conductor's assignment: the title, then the time and the place in smaller lines */
.pp-mine-sub{display:block;font-size:12px;font-weight:600;line-height:1.25;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
dd .pp-mine-sub{display:block;margin-top:2px}

/* V15.28 text settings (Predicación > Configuración): the field takes the right half on a computer */
.pp-settext .pp-input{width:min(100%,360px)}
/* ================= V2.0 · Sereno: calm, clinical and minimal. Only variables, so light and dark come from the same
   rules. Motion uses Fluent UI's own tokens (durations and curves) and turns off when the device asks for less motion. */
:is(.pp,body.pp-body){--font-ui:"Inter","Nunito Sans","Segoe UI",system-ui,sans-serif;--font-title:var(--font-ui);--font-brand:Lora,Georgia,serif;
  --bg:#F6F7F9;--surface:#FFFFFF;--surface2:#F3F5F8;--head:#F3F5F8;--date:#F3F5F8;--line:#E9EDF2;--line2:#DCE2E9;--band:var(--bg);--bandInk:var(--ink);
  --elev1:0 1px 2px rgba(16,24,40,.04),0 4px 14px rgba(16,24,40,.05);--elev2:0 12px 32px rgba(16,24,40,.14);--r-l:16px;--r-m:12px;--r-s:10px;
  --bar-bg:rgba(246,247,249,.84);--side-bg:var(--bg);--nav-on-bg:var(--surface);--nav-on-sh:0 1px 3px rgba(16,24,40,.09);--hover:rgba(16,24,40,.05);
  --dur-fast:var(--durationFaster,100ms);--dur:var(--durationNormal,200ms);--dur-slow:var(--durationSlow,300ms);--ease-out:var(--curveDecelerateMid,cubic-bezier(.1,.9,.2,1));--ease:var(--curveEasyEase,cubic-bezier(.33,0,.67,1))}
:is(.pp,body.pp-body)[data-theme="dark"],body.pp-body[data-theme="dark"] .pp{--bg:#151C2E;--surface:#1E2840;--surface2:#26314C;--head:#26314C;--date:#212B45;--line:#2C3754;--line2:#3D4A6B;--band:var(--bg);--bandInk:var(--ink);
  --elev1:0 0 0 1px rgba(255,255,255,.05);--elev2:0 16px 40px rgba(5,8,18,.6),0 0 0 1px #34415F;--bar-bg:rgba(21,28,46,.82);--side-bg:#121829;--nav-on-bg:#26314C;--nav-on-sh:0 0 0 1px #34415F;--hover:rgba(255,255,255,.07)}
body.pp-body,.pp,.pp button,.pp input,.pp select,.pp textarea{font-family:var(--font-ui)}
body.pp-body{background:var(--bg)}
/* cards: no borders, a soft shadow, rounder */
.pp-block{border:0;border-radius:var(--r-l);box-shadow:var(--elev1);padding:18px 20px}
.pp-month h1,.pp-area-title{font-weight:650;letter-spacing:-.02em}
/* top bar: light and translucent (no blue band); the brand lives in the side menu on a computer */
.pp-appbar{background:var(--bar-bg);color:var(--ink);border-bottom:1px solid var(--line);-webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px)}
.pp-appbar-name{color:var(--ink)}.pp-appbar-org,.pp-appbar-area{border-left-color:var(--line2)}.pp-appbar-area{color:var(--primary)}
.pp-appbar-brand:hover{background:var(--hover)}.pp-appbar-actions .pp-ghost{color:var(--ink);border-color:var(--line2)}
.pp-appbar-actions .pp-user{background:var(--surface);border-color:var(--line2);color:var(--ink);box-shadow:var(--elev1)}
.pp-appbar-actions .pp-user:hover{background:var(--surface);border-color:var(--primary)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-appbar-actions .pp-user{background:var(--surface);border-color:var(--line2)}
/* tabs: an underline in the brand color */
.pp-tab{color:var(--ink2)!important;opacity:1;border-radius:var(--r-s) var(--r-s) 0 0;transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease)}
.pp-tab:hover{background:var(--hover)}
:is(.pp,body.pp-body) .pp-tab[aria-selected="true"]{background:transparent;color:var(--primary)!important;box-shadow:inset 0 -2.5px 0 var(--primary)}
/* the month header and its controls on the light bar (the blue band is gone): everything from variables */
.pp-band{background:var(--bg);color:var(--ink);box-shadow:none;border-bottom:1px solid var(--line)}
.pp-arrow,.pp-ghost,.pp-bell{color:var(--ink)!important;border-color:var(--line2)}
.pp-arrow:hover,.pp-ghost:hover,.pp-bell:hover{background:var(--hover)}
/* the bell of the top bar: no outline, the bell centered in its round button and the count on its corner */
.pp-appbar .pp-bell{display:grid;place-items:center;width:40px;height:40px;min-height:40px;padding:0;border:0;border-radius:999px;gap:0}
.pp-appbar .pp-bell > svg{display:block}
.pp-appbar .pp-bell .pp-bell-n{top:1px;right:0}
.pp-subtabs button[aria-selected="true"]{box-shadow:inset 0 -2.5px 0 var(--primary),0 1px 0 var(--surface)}
/* Publicadores: the person's panel, compact (it fits whole on 1280 x 800): two fields per row, chips for on/off */
.pp-pubcard.is-compact{display:flex;flex-direction:column;gap:12px}
.pp-pubrow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}.pp-pubrow>.is-wide{grid-column:1/-1}
.pp-pubcard.is-compact .pp-input{width:100%;min-width:0;max-width:100%;box-sizing:border-box;min-height:36px}
.pp-fprog.is-wide>.pp-fpanel{scroll-margin-top:calc(var(--appbar-h, 58px) + var(--tb-h, 0px) + 10px)}
.pp-pubcard.is-compact .pp-pioneer-row{flex-direction:column;align-items:stretch;justify-content:flex-start;padding:0;gap:3px}.pp-pubcard.is-compact .pp-pioneer-row .pp-choice{width:auto}.pp-pub-shown{margin:-4px 0 0}
.pp-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pp-chips .pp-fchipbtn{min-height:32px;padding:0 12px;gap:5px;cursor:pointer}.pp-chips .pp-inactive-date{width:auto;min-height:32px}
.pp-pioneer-row .pp-row{gap:8px;flex-wrap:wrap}.pp-pioneer-row .pp-aux-until{width:auto;min-height:32px}
.pp-pubcard.is-compact .pp-pubfoot{margin-top:2px}
.pp-ulink{margin:8px 0 4px;gap:6px}.pp-ulink .pp-row{gap:10px;align-items:baseline}
/* the phone menu marks the open screen like the side menu does (light card, brand text), in light and dark */
:is(.pp,body.pp-body) .pp-drawer .pp-navitem.is-on,:is(.pp,body.pp-body)[data-theme="dark"] .pp-drawer .pp-navitem.is-on{background:var(--nav-on-bg);color:var(--primary);box-shadow:var(--nav-on-sh)}
/* danger buttons in dark: the red is light there, so its text is dark */
:is(.pp,body.pp-body)[data-theme="dark"] .pp-btn.is-danger.fui-Button{color:#2C1412}
/* The user card: who, how the app looks here, security and reminders. Rows like a settings list (icon, label, control).
   On a computer it opens from the user button's corner (anchored, like a menu); on a phone it is a window. */
.pp-acct.pp-modal.fui-DialogSurface{width:min(420px,calc(100vw - 24px));max-width:420px;padding:18px 18px 14px}
.pp-acct.is-anchored.fui-DialogSurface{position:fixed;inset:var(--pop-top) var(--pop-right) auto auto!important;margin:0!important;width:380px;max-height:calc(100dvh - var(--pop-top) - 12px);overflow:auto;transform-origin:top right;animation:pp-acct-in var(--dur,.2s) var(--ease,cubic-bezier(.2,.8,.2,1)) both;box-shadow:0 18px 50px rgba(16,24,40,.18),0 2px 6px rgba(16,24,40,.08);border:1px solid var(--line)}
@keyframes pp-acct-in{from{opacity:0;transform:translateY(-6px) scale(.96)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pp-acct.is-anchored.fui-DialogSurface{animation:none}}
.pp-pop-backdrop.fui-DialogSurface__backdrop{background:transparent}
.pp-acct .pp-mbody{padding:0}
.pp-acct-who{display:flex;align-items:center;gap:12px;min-width:0}.pp-acct-who b{display:block;font-size:16px;font-weight:650;line-height:1.2}.pp-acct-who small{display:block;color:var(--ink2);font-size:12.5px;font-weight:500}
.pp-acct-av{display:grid;place-items:center;flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:var(--yolk);color:#1A1300;font-size:14px;font-weight:800}
.pp-acct-g{margin-top:14px}
.pp-acct-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;min-height:42px;padding:6px 0;border-top:1px solid var(--line)}
.pp-acct-ic{display:grid;place-items:center;width:20px;color:var(--ink2)}
.pp-acct-l{flex:1 1 120px;min-width:0;font-size:14px;font-weight:500}.pp-acct-l small{display:block;color:var(--ink3);font-size:12px;font-weight:400;line-height:1.35}
.pp-acct-c{margin-left:auto;display:flex;align-items:center}
/* segmented like Apple/Linear: a quiet track, the chosen option as a raised pill */
.pp-modal.pp-acct .pp-choice{display:inline-flex;flex-wrap:nowrap;width:auto;gap:2px;padding:2px;border:0;border-radius:9px;background:var(--surface2)}
.pp-modal.pp-acct .pp-choice>.fui-ToggleButton{min-width:0;height:28px;padding:0 9px;gap:4px;font-size:12.5px;font-weight:500;border:0;border-radius:7px;background:transparent;color:var(--ink2);box-shadow:none}
.pp-modal.pp-acct .pp-choice>.fui-ToggleButton[aria-pressed="true"],.pp-modal.pp-acct .pp-choice>.fui-ToggleButton[aria-pressed="true"]:hover{background:var(--surface);color:var(--ink)!important;box-shadow:0 1px 2px rgba(16,24,40,.12),0 0 0 1px var(--line)}
.pp-modal.pp-acct .pp-choice>.fui-ToggleButton[aria-pressed="true"] [class*="__icon"],.pp-modal.pp-acct .pp-choice>.fui-ToggleButton[aria-pressed="true"] svg,.pp-modal.pp-acct .pp-choice>.fui-ToggleButton[aria-pressed="true"] svg *{color:var(--primary)!important}
/* phone: the card fits one screen (the long explanations stay on the computer) */
@media (max-width:1023px){.pp-acct.pp-modal.fui-DialogSurface{max-height:calc(100dvh - 20px)}.pp-acct small.is-more{display:none}.pp-acct-g{margin-top:10px}.pp-acct-row{min-height:40px;padding:4px 0}}
.pp-acct .pp-mfoot .pp-acct-out{width:100%}
.pp-acct .pp-acct-personal.pp-btn{width:100%;justify-content:center;margin-top:12px}
.pp-personal .pp-acct-row{min-height:48px}.pp-personal .pp-acct-row:first-of-type{border-top:0}.pp-personal .pp-dockfavs{padding:10px 0 4px;border-top:1px solid var(--line)}
.pp-acct .pp-mhead.fui-DialogTitle{min-width:0}
.pp-modal.pp-acct .pp-choice>.fui-ToggleButton:hover{color:var(--ink)}
.pp-acct-msg{margin:2px 0 6px 30px}
.pp-acct .pp-dockfavs{padding:0 0 8px 30px}.pp-acct .pp-dockfavs>.pp-field{display:none}.pp-acct .pp-dockfavs .pp-summary{margin:0 0 6px;font-size:12px}
.pp-acct .pp-dockfav{min-height:30px;padding:0 10px;font-size:12.5px}
.pp-acct .pp-mfoot{display:flex;padding:12px 0 0;margin-top:10px;border-top:1px solid var(--line)}.pp-acct .pp-mfoot .pp-acct-out{flex:1;justify-content:center}
/* ============ V2.0 Beta 3 · Pizarra de anuncios (option B: Linear lists with the current colors) ============
   The blue band keeps the greeting, two round actions, the user's assignments as pills and the week; below, the next
   meeting and Predicación, and a quiet column with Vida y Ministerio, sharing and announcements. Nothing shrinks: pills
   and day boxes wrap or scroll inside their own box, and the columns only split when the content area is wide enough
   (container query, so an open side menu counts). */
:is(.pp,body.pp-body){--okDot:#4ADE80;--band2:#36587F;--hTeal:#2B6C7A;--kField:#0F766E;--kGroups:#6D28D9;--kMeet:#36587F;--pillBg:#FFF4D1;--pillInk:#4A3200;--pill1Bg:#F4B400;--pill1Ink:#1A1300}
:is(.pp,body.pp-body)[data-theme="dark"]{--okDot:#4ADE80;--band2:#2B385A;--hTeal:#8CC3D3;--kField:#5EC8BC;--kGroups:#C4B5FD;--kMeet:#8FB4DE;--pillBg:#3A2F0F;--pillInk:#F3CF7D;--pill1Bg:#E8B33A;--pill1Ink:#1A1300}
.pp-home2{container-type:inline-size}
.pp-home2 .pp-hello{display:block;padding:20px 22px 18px;margin:0;border-radius:18px;background:linear-gradient(135deg,#42678F,#36587F);color:#fff;box-shadow:0 8px 24px rgba(54,88,127,.22)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-home2 .pp-hello{background:linear-gradient(135deg,#3D4B78,#2B385A);box-shadow:0 10px 30px rgba(5,8,18,.45),inset 0 0 0 1px rgba(255,255,255,.06)}
.pp-hello-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}
.pp-hello-who{min-width:0}
.pp-home2 .pp-hello-date{display:block;font-size:13px;font-weight:500;opacity:.85}
.pp-home2 .pp-welcome-h{margin:2px 0 0;font-size:26px;line-height:1.15;font-weight:700;letter-spacing:-.02em;color:#fff}
.pp-home2 .pp-hello-name{display:inline}
.pp-home2 .pp-hello-actions{display:flex;flex-direction:row;gap:8px;flex:0 0 auto;max-width:none}
/* round icon buttons (IconButton round): the base, then the white-on-blue look of the Pizarra's band */
.pp-icon.is-round.fui-Button{border-radius:50%;min-width:40px;width:40px;height:40px;padding:0}
.pp-hello .pp-icon.pp-hello-ic.fui-Button{border:1px solid rgba(255,255,255,.38);background:rgba(255,255,255,.10);color:#fff!important;transition:background-color var(--dur,.2s) var(--ease,ease),transform var(--dur,.2s) var(--ease,ease)}
.pp-hello .pp-icon.pp-hello-ic.fui-Button:hover{background:rgba(255,255,255,.22);color:#fff!important}.pp-hello .pp-icon.pp-hello-ic.fui-Button:active{transform:scale(.94)}
.pp-hello .pp-icon.pp-hello-ic.fui-Button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.pp-hello-ic.is-on{cursor:default;position:relative}.pp-hello-ic.is-on::after{content:"";position:absolute;right:5px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--okDot);box-shadow:0 0 0 2px var(--band2)}
/* reminders off: the bell asks for attention once every 10 s (a short glow and a small swing), only on the Pizarra */
.pp-hello-ic.is-nudge{animation:pp-nudge 10s ease-in-out infinite}
.pp-hello-ic.is-nudge svg{transform-origin:50% 10%;animation:pp-nudge-bell 10s ease-in-out infinite}
@keyframes pp-nudge{0%,14%,100%{box-shadow:0 0 0 0 rgba(244,180,0,0),inset 0 0 0 0 rgba(244,180,0,0)}3%{box-shadow:0 0 0 6px rgba(244,180,0,.45),inset 0 0 0 2px #F4B400}9%{box-shadow:0 0 0 14px rgba(244,180,0,0),inset 0 0 0 2px rgba(244,180,0,0)}}
@keyframes pp-nudge-bell{0%,10%,100%{transform:rotate(0)}2%{transform:rotate(14deg)}4%{transform:rotate(-12deg)}6%{transform:rotate(8deg)}8%{transform:rotate(-4deg)}}
.pp-hello-ic.is-pk svg{transform-origin:50% 50%;animation:pp-nudge-face 10s ease-in-out infinite} /* Face ID: the same ring, the face breathes instead of ringing */
.pp-hello-ic.is-pk{animation-delay:5s}.pp-hello-ic.is-pk svg{animation-delay:5s} /* half a cycle after the bell, so they take turns */
@keyframes pp-nudge-face{0%,12%,100%{transform:scale(1)}3%{transform:scale(1.22)}6%{transform:scale(.94)}9%{transform:scale(1.08)}}
.pp-hello-msg{margin:6px 0 0;font-size:13px;color:var(--bandInk,#fff);opacity:.95}
@media (prefers-reduced-motion:reduce){.pp-hello-ic.is-nudge,.pp-hello-ic.is-nudge svg{animation:none}.pp-hello-ic.is-nudge{box-shadow:inset 0 0 0 2px #F4B400}}
/* the user's assignments: pills that wrap (never squeezed) */
.pp-home2 .pp-mine{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0;padding:0;list-style:none}
.pp-home2 .pp-hello{text-align:left}

.pp-home2 .pp-mine-none{margin:12px 0 0;font-size:14px;opacity:.9}
/* the week inside the band */
/* narrow content (phone, or a tight window): the day boxes keep their number and show the activities as dots */
@container (max-width:620px){
  .pp-home2 .pp-hello{padding:16px}.pp-home2 .pp-welcome-h{font-size:22px}
}
/* below the band */
.pp-home-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;margin-top:18px;align-items:start}
@container (min-width:900px){.pp-home-cols{grid-template-columns:minmax(0,1fr) minmax(280px,340px)}}
.pp-home-main,.pp-home-rail{display:flex;flex-direction:column;gap:16px;min-width:0}
.pp-home-main .pp-meet+.pp-meet{margin-top:0}
.pp-hcard{min-width:0;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 1px 3px rgba(16,24,40,.06)}
.pp-hcard-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.pp-hcard-h h3{display:flex;align-items:center;gap:8px;margin:0;font-size:15.5px;font-weight:650;color:var(--hTeal)}
.pp-hcard-sub{font-size:12.5px;color:var(--ink2)}.pp-hcard-sub .pp-now-tag{margin:0}
.pp-hcard-empty{margin:6px 0 2px}
/* Linear-style rows */
.pp-lrow{display:flex;align-items:center;gap:10px;min-height:44px;padding:4px 0;border-top:1px solid var(--line);font-size:13.5px;min-width:0}
.pp-lrow-ic{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border-radius:8px;background:color-mix(in srgb,var(--kField) 14%,transparent);color:var(--kField)}
.pp-lrow.k-groups .pp-lrow-ic{background:color-mix(in srgb,var(--kGroups) 14%,transparent);color:var(--kGroups)}
.pp-lrow-t{flex:1 1 auto;min-width:0}.pp-lrow-t b{font-weight:600;overflow-wrap:anywhere}.pp-lrow-t small{display:block;color:var(--ink3);font-size:12px}
.pp-lrow-m{display:flex;align-items:center;gap:6px;flex:0 0 auto;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
.pp-kbd{display:inline-flex;align-items:center;height:20px;padding:0 6px;border-radius:5px;border:1px solid var(--line2);background:var(--surface);font-size:11.5px;font-weight:600;color:var(--ink2);white-space:nowrap}
.pp-lrow-time{min-width:64px;text-align:right;font-size:12.5px;color:var(--ink2);font-variant-numeric:tabular-nums;white-space:nowrap}
.pp-fweek-day{padding-top:6px}.pp-fweek-day+.pp-fweek-day{margin-top:4px}
.pp-fweek-date{padding:4px 0;font-size:12.5px;font-weight:650;color:var(--ink2);text-transform:capitalize}.pp-fweek-date span{font-weight:500;color:var(--ink3)}
.pp-fweek-day.is-today .pp-fweek-date{color:var(--primary)}
/* what already happened reads quieter (gray text that still passes AA, no transparency) */
.pp-fweek-day.is-past :is(.pp-fweek-date,.pp-fweek-date span,.pp-lrow-t b,.pp-lrow-t small,.pp-lrow-time){color:var(--ink3)}.pp-fweek-day.is-past .pp-lrow-ic{filter:grayscale(1);opacity:.7}
/* Vida y Ministerio: its own scroll; the part on stage marked, what ended dimmed */
/* its own scroll, but when it reaches the end the page keeps scrolling (scroll chaining is left on) */
/* Vida y Ministerio on the Pizarra as a timeline: a line with a dot per moment, the time, the title and who */
.pp-vnow-roles{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px;padding:0;list-style:none}
.pp-vnow-roles li{padding:4px 11px;border-radius:999px;background:var(--head);font-size:13px;font-weight:600;color:var(--ink)}
.pp-vnow-roles li span{font-weight:500;color:var(--ink2)}
.pp-vtl{--vtl-c:var(--ink3);position:relative;max-height:min(560px,70vh);overflow:auto;scroll-behavior:smooth;margin:0;padding:2px 4px 2px 0;list-style:none;border-radius:10px}
.pp-vtl:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.pp-vtl-i{position:relative;margin-left:7px;padding:0 0 12px 20px;border-left:2px solid var(--line2);transition:opacity .3s ease}
.pp-vtl-i:last-child{border-left-color:transparent;padding-bottom:2px}
.pp-vtl-i.s-treasures{--vtl-c:#3D6670}.pp-vtl-i.s-ministry{--vtl-c:#8A6500}.pp-vtl-i.s-living{--vtl-c:#9A0E2E}
.pp-vtl-sec{display:block;margin:2px 0 6px;font-size:11.5px;font-weight:700;letter-spacing:.02em;color:var(--vtl-c)}
.pp-vtl-dot{position:absolute;left:-6px;top:var(--dot-top,5px);width:10px;height:10px;border-radius:50%;background:var(--surface);box-shadow:inset 0 0 0 2px var(--vtl-c)}
.pp-vtl-sec+.pp-vtl-dot{--dot-top:29px}
.pp-vtl-i.is-fixed .pp-vtl-dot{width:8px;height:8px;left:-5px;background:var(--line2);box-shadow:none}
.pp-vtl-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;min-width:0}
.pp-vtl-time{flex:none;min-width:52px;font-size:12px;font-weight:600;color:var(--ink2);font-variant-numeric:tabular-nums}
.pp-vtl-title{min-width:0;font-size:14px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.pp-vtl-fixed{display:inline-flex;align-items:center;gap:5px;min-width:0;font-size:13px;color:var(--ink2)}
.pp-vtl-fixed svg{flex:none;opacity:.8}
.pp-vtl-who{display:block;padding-left:60px;font-size:13px;color:var(--ink2)}
.pp-vtl-who small{display:block;color:var(--ink3);font-size:12px}
.pp-vtl-i.is-done{opacity:.55}
.pp-vtl-i.is-now .pp-vtl-dot{background:var(--live,#B42318);box-shadow:0 0 0 4px color-mix(in srgb,var(--live,#B42318) 22%,transparent)}
.pp-vtl-i.is-now .pp-vtl-time{color:var(--live,#B42318)}
.pp-vtl-i .pp-now-tag{margin:0;align-self:center}
@media (prefers-reduced-motion:no-preference){.pp-vtl-i.is-now .pp-vtl-dot{animation:pp-blink 1.4s ease-in-out infinite}}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-vtl-i.s-treasures{--vtl-c:#8CC3D3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-vtl-i.s-ministry{--vtl-c:#F0C35A}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-vtl-i.s-living{--vtl-c:#F49AA8}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-vtl-i.is-now .pp-vtl-time{color:#F4978E}
.pp-hshare .pp-share-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
/* the right column folds: one card open at a time (HomeRail). The title is the button; the body folds smoothly */
.pp-rail-card{padding:0;overflow:hidden}
.pp-rail-h{margin:0}
.pp-rail-h>button{display:flex;align-items:center;gap:8px;width:100%;min-height:52px;padding:10px 16px;border:0;background:transparent;color:var(--hTeal);font:inherit;font-size:15.5px;font-weight:650;text-align:left;cursor:pointer;border-radius:14px}
.pp-rail-h>button:hover{background:var(--hover)}.pp-rail-h>button:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
.pp-rail-t{flex:1 1 auto;min-width:0}
.pp-rail-h .pp-hcard-sub{font-weight:500}
.pp-rail-chev{display:grid;place-items:center;color:var(--ink2);transition:transform var(--dur,.2s) var(--ease,ease)}
.pp-rail-card.is-open .pp-rail-chev{transform:rotate(180deg)}
.pp-rail-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur,.24s) var(--ease,ease)}
.pp-rail-card.is-open .pp-rail-body{grid-template-rows:1fr}
.pp-rail-in{min-height:0;overflow:hidden;padding:0 16px}
.pp-rail-card.is-open .pp-rail-in{padding-bottom:14px}
@media (prefers-reduced-motion:reduce){.pp-rail-body,.pp-rail-chev{transition:none}}
.pp-home-rail .pp-ann.is-bare{margin:0}.pp-home-rail .pp-ann-grid{grid-template-columns:minmax(0,1fr)}
/* Predicación: the territory's name first; Zoom outings carry their own «Unirse» */
.pp-lrow.k-zoom .pp-lrow-ic{background:color-mix(in srgb,var(--zoomInk,#4F46E5) 14%,transparent);color:var(--zoomInk,#4F46E5)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-lrow.k-zoom .pp-lrow-ic{--zoomInk:#A5B4FC}
.pp-lrow-join.pp-btn{min-height:30px;padding:0 10px;gap:5px;font-size:12.5px;white-space:nowrap}
/* the user: a pill with the name only (no initials circle); on a phone it keeps to the first name's width */
.pp-appbar-actions .pp-user{padding:0 14px;gap:0;font-weight:600;font-size:13.5px}
@media (max-width:560px){.pp-appbar-actions .pp-user{max-width:118px;padding:0 12px}}
/* the theme toggle (top bar, also on the public Pizarra and the sign-in): sun on light, moon on dark */
.pp-theme-toggle{position:relative;flex:0 0 auto;width:60px;height:32px;padding:0;border:0;border-radius:999px;background:transparent;cursor:pointer}
.pp-theme-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
.pp-tt-track{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between;padding:0 9px;border-radius:999px;background:#E4E8EF;box-shadow:inset 0 1px 3px rgba(16,24,40,.18);transition:background-color .35s ease}
.pp-tt-ghost{display:grid;place-items:center;color:#5F6878;transition:opacity .3s ease}
.pp-theme-toggle:not(.is-dark) .is-sun,.pp-theme-toggle.is-dark .is-moon{opacity:0}
.pp-tt-knob{position:absolute;top:2px;left:2px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#FFFFFF;color:#C96A00;box-shadow:0 2px 6px rgba(16,24,40,.25),0 0 0 1px rgba(16,24,40,.05);transition:transform .32s cubic-bezier(.34,1.56,.64,1),width .18s ease,color .3s ease}
.pp-theme-toggle.is-dark .pp-tt-track{background:#3D4B78}.pp-theme-toggle.is-dark .pp-tt-ghost{color:#AAB6D3}
.pp-theme-toggle.is-dark .pp-tt-knob{transform:translateX(28px);color:#4F63D2}
.pp-theme-toggle:active .pp-tt-knob{width:32px}.pp-theme-toggle.is-dark:active .pp-tt-knob{transform:translateX(24px)}
.pp-theme-toggle{touch-action:pan-y;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
.pp-theme-toggle.is-drag .pp-tt-knob{transition:color .3s ease;width:32px}
@media (prefers-reduced-motion:reduce){.pp-tt-knob,.pp-tt-track,.pp-tt-ghost{transition:none}}
.pp-public .pp-theme-toggle,.pp-appbar-in>.pp-theme-toggle{margin-right:8px}
.pp-login-theme{position:fixed;top:max(12px,env(safe-area-inset-top));right:14px;z-index:5}
/* the theme change spreads from the toggle: the new look grows as a circle over the old one */
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
::view-transition-new(root){z-index:2}::view-transition-old(root){z-index:1}
/* the main card: the next meeting's program (Vida y Ministerio on a weekday, the weekend meeting otherwise) */
.pp-next{padding:16px 18px}
.pp-next-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.pp-next-h .pp-meet-day{display:flex;align-items:center;gap:8px;color:var(--hTeal)}
.pp-next-when{font-size:13px;color:var(--ink2)}.pp-next-when .pp-now-tag,.pp-next-when .pp-soon-tag{margin:0}
.pp-next.is-live{box-shadow:0 0 0 2px #B42318,0 6px 20px rgba(180,35,24,.12)}.pp-next.is-soon{box-shadow:0 0 0 2px #F4B400}
.pp-next-roles{margin-bottom:8px}
.pp-rail-privs{grid-template-columns:minmax(0,1fr)}
.pp-block.pp-findbar{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:12px 14px}
.pp-findbar .pp-search{flex:1 1 260px;min-width:0;margin:0}.pp-findbar .pp-filters{flex:0 1 auto;margin:0}
/* Publicadores: each name in the groups opens its editor */
.pp-gname{flex:1 1 auto;min-width:0;padding:2px 0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:4px;overflow-wrap:anywhere}
.pp-gname:hover{color:var(--primary);text-decoration:underline}
.pp-gname.is-open{color:var(--primary);font-weight:650}
.pp-group li:has(.pp-gname.is-open){box-shadow:inset 3px 0 0 var(--primary)}
.pp-group.is-nogroup h3{color:var(--ink2)}
.pp-pubs-head .pp-row{flex-wrap:wrap;gap:8px 12px}
/* today's meeting in the top bar: orange «Reunión en 25 min» from 30 minutes before, red «Reunión en curso» with a
   recording light once it starts; a small camera says the tap invites to join by Zoom */
.pp-live.is-soon,.pp-live-strip.is-soon{background:#F5A524;color:#2A1A00}
.pp-appbar .pp-live.is-soon{color:#2A1A00}
.pp-live.is-soon .pp-live-dot,.pp-live-strip.is-soon .pp-live-dot{background:#2A1A00;opacity:.75}
.pp-live-join{display:grid;place-items:center;margin-left:2px;opacity:.9}
.pp-join-what{margin:0 0 4px;font-weight:600}
.pp-join-go.pp-btn{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border-radius:10px;text-decoration:none}
tr.is-soon th.pp-date{box-shadow:inset 4px 0 0 #F5A524}
.pp-grid tr.is-soon>td,.pp-grid tr.is-soon>th{background:rgba(245,165,36,.10)}
.pp-soon-tag{background:#F5A524;color:#2A1A00}
/* Zoom on the Pizarra: compact rows */
.pp-zoom-row{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;margin:12px 0 0}
.pp-zoom-card{gap:8px 10px;padding:8px 10px;border-radius:12px;flex:1 1 240px}
.pp-zoom-card .pp-zoom-ic{width:30px;height:30px;border-radius:9px}
.pp-zoom-card .pp-zoom-txt{flex:1 1 140px;gap:1px}.pp-zoom-card .pp-zoom-txt b{font-size:13.5px}.pp-zoom-card .pp-zoom-txt small{font-size:12px}
.pp-zoom-card .pp-zoom-act .pp-btn{min-height:32px;padding:0 10px;gap:5px;font-size:12.5px;border-radius:8px}
@media (pointer:coarse){.pp-zoom-card .pp-zoom-act .pp-btn{min-height:36px}}
.pp-zoom-card.is-live{border-width:2px}.pp-zoom-card.is-soon{border:2px solid #F5A524}
/* «Recordatorios» in the band (V2.0 Beta 4): glass chips and day cards that harmonize with the blue band in both
   themes. Each kind has its own soft color (a dot, never the whole chip); the nearest assignment is a bit brighter. */
:is(.pp,body.pp-body){--kPrivs:#7DD3FC;--kVmc:#86EFAC;--kTalks:#C4B5FD;--kClean:#FDBA74;--kFieldB:#5EEAD4;--kPp:#F9A8D4;--glass:rgba(255,255,255,.12);--glass2:rgba(255,255,255,.2);--glassLine:rgba(255,255,255,.22)}
.pp-home2 .pp-mine{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0;padding:0;list-style:none}
.pp-home2 .pp-mine li{flex:0 0 auto;max-width:100%;padding:0;border:1px solid var(--glassLine);border-radius:12px;background:var(--glass);overflow:hidden;--k:var(--kPrivs)}
.pp-home2 .pp-mine li.k-vmc{--k:var(--kVmc)}.pp-home2 .pp-mine li.k-talks{--k:var(--kTalks)}.pp-home2 .pp-mine li.k-cleaning{--k:var(--kClean)}.pp-home2 .pp-mine li.k-field{--k:var(--kFieldB)}.pp-home2 .pp-mine li.k-pp{--k:var(--kPp)}
.pp-home2 .pp-mine li:first-child{background:var(--glass2);border-color:rgba(255,255,255,.34)}
.pp-home2 .pp-mine li>button{display:flex;align-items:center;gap:8px;max-width:100%;min-height:38px;padding:0 12px 0 10px;border:0;background:transparent;color:#fff;font:inherit;text-align:left;cursor:pointer;white-space:nowrap}
.pp-home2 .pp-mine li>button::before{content:"";flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--k);box-shadow:0 0 0 3px color-mix(in srgb,var(--k) 30%,transparent)}
.pp-home2 .pp-mine li>button:hover{background:rgba(255,255,255,.08)}
.pp-home2 .pp-mine li b{font-size:13.5px;font-weight:650;overflow:hidden;text-overflow:ellipsis;text-transform:none;letter-spacing:0;color:#fff}
.pp-home2 .pp-mine li small{font-size:12.5px;font-weight:500;color:rgba(255,255,255,.82)}
.pp-home2 .pp-mine li .pp-left{margin:0;padding:1px 8px;border-radius:999px;background:rgba(255,255,255,.9);color:#1E2B45;font-size:12px;font-weight:700}
.pp-home2 .pp-mine li .pp-left.is-near{background:#FECACA;color:#7F1D1D}
.pp-home2 .pp-mine-none{margin:12px 0 0;font-size:14px;color:rgba(255,255,255,.9)}
/* today and the next five days: each card says what happens and when */
.pp-week{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:16px 0 0;padding:0;list-style:none}
.pp-week-d{min-width:0;padding:9px 10px 10px;border:1px solid var(--glassLine);border-radius:12px;background:var(--glass);color:#fff}
.pp-week-d.is-today{background:var(--glass2);border-color:#7DD3FC;box-shadow:0 0 0 1px #7DD3FC}
.pp-week-h{display:flex;align-items:baseline;justify-content:space-between;gap:6px;font-size:12px;font-weight:600;color:rgba(255,255,255,.85);text-transform:capitalize}
.pp-week-h b{font-size:18px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums}
.pp-week-l{display:flex;flex-direction:column;gap:4px;margin-top:7px;min-width:0}
.pp-week-e{display:flex;align-items:baseline;gap:5px;min-width:0;font-size:12px;line-height:1.3;color:#fff}
.pp-week-e i{flex:0 0 auto;align-self:center;width:6px;height:6px;border-radius:50%;background:#C7D2FE}
.pp-week-e em{flex:0 0 auto;font-style:normal;font-weight:600;color:rgba(255,255,255,.8);font-variant-numeric:tabular-nums}
.pp-week-e{flex-wrap:wrap;row-gap:0}
/* what it is goes beside the time, or under it when a word would not fit (words are never split) */
.pp-week-e>span{flex:1 1 0;min-width:min-content;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:break-word}
.pp-week-e.k-mine{font-weight:650}.pp-week-e.k-mine i{background:var(--kPrivs);box-shadow:0 0 0 2px rgba(125,211,252,.35)}
.pp-week-e.k-field i{background:var(--kFieldB)}.pp-week-e.k-zoom i{background:#A5B4FC}.pp-week-e.k-groups i{background:var(--kTalks)}
.pp-week-free,.pp-week-more{font-size:12px;color:rgba(255,255,255,.72)}
/* narrow content: the six days slide sideways (each keeps room for its details) */
/* narrower content: the six days in three columns (two rows), nothing to scroll sideways */
@container (max-width:900px){.pp-week{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container (max-width:420px){.pp-week{gap:6px}.pp-week-d{padding:8px}.pp-week-e{font-size:11.5px}}
/* presence: a small card over the circle on hover or focus (name and «Activo hace 5 min») */
.pp-pres{position:relative}
.pp-pres-tip{position:absolute;right:0;bottom:calc(100% + 10px);display:flex;flex-direction:column;gap:2px;min-width:max-content;padding:8px 11px;border-radius:10px;background:var(--surface);color:var(--ink);box-shadow:0 8px 24px rgba(16,24,40,.18),0 0 0 1px var(--line);font-size:12.5px;font-weight:500;letter-spacing:0;text-align:left;opacity:0;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease;pointer-events:none;white-space:nowrap}
.pp-pres-tip b{font-weight:650}.pp-pres-tip span{display:flex;align-items:center;gap:6px;color:var(--ink2)}
.pp-pres:hover .pp-pres-tip,.pp-pres:focus-visible .pp-pres-tip,.pp-pres:active .pp-pres-tip{opacity:1;transform:none}
.pp-pres-dot{width:8px;height:8px;border-radius:50%;background:#22A35A}.pp-pres-dot.is-away{background:#F59E0B}
@media (prefers-reduced-motion:reduce){.pp-pres-tip{transition:none}}
/* the side menu (computer): open by default, hidden with its button or «[», resized with its divider */
.pp-side{display:none}
@media (min-width:1024px){
  .pp-side{display:flex;flex-direction:column;position:fixed;z-index:61;top:0;bottom:0;left:0;width:var(--side-w,256px);padding:calc(14px + env(safe-area-inset-top)) 12px 14px;background:var(--side-bg);border-right:1px solid var(--line);transition:transform var(--dur-slow) var(--ease-out)}
  .pp-side.is-hidden{transform:translateX(-100%);visibility:hidden;transition:transform var(--dur-slow) var(--ease-out),visibility 0s var(--dur-slow)}
  body.pp-body.has-side{padding-left:var(--side-w,256px);transition:padding-left var(--dur-slow) var(--ease-out)}
  body.pp-body.has-side .pp-appbar{left:var(--side-w,256px)}
  body.pp-body.has-side .pp-appbar-name,body.pp-body.has-side .pp-appbar-org{display:none}
  body.pp-body.side-resizing,body.pp-body.side-resizing .pp-side{transition:none;user-select:none}
}
.pp-side-h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:2px 4px 10px}
.pp-side-brand{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:4px 6px;border:0;border-radius:var(--r-s);background:transparent;color:var(--ink);cursor:pointer;text-align:left;min-width:0}
.pp-side-brand b{font-family:var(--font-brand);font-size:22px;font-weight:700;letter-spacing:.06em}.pp-side-brand small{font-size:12px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pp-side-hide,.pp-side-show{display:grid;place-items:center;width:34px;height:34px;flex:none;border:0;border-radius:var(--r-s);background:transparent;color:var(--ink2);cursor:pointer;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}
.pp-side-hide:hover,.pp-side-show:hover{background:var(--hover);color:var(--ink)}
/* «Mostrar barra lateral»: only on a computer while the side menu is hidden (after the general rule, so it wins) */
.pp-side-show{display:none}
@media (min-width:1024px){.pp-side-show{display:grid;margin-right:4px}}
.pp-side-body{flex:1;overflow-y:auto;margin:0 -4px;padding:0 4px;scrollbar-width:thin}
.pp-side .pp-navsec{margin-bottom:6px}.pp-side .pp-navsec-t{margin:12px 10px 4px;font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink3)}
.pp-sideitem{display:flex;align-items:center;gap:11px;width:100%;padding:8px 10px;border:0;border-radius:var(--r-s);background:transparent;color:var(--ink2);font:inherit;font-size:13.5px;font-weight:600;text-align:left;cursor:pointer;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.pp-sideitem:hover{background:var(--hover);color:var(--ink)}
.pp-sideitem.is-on{background:var(--nav-on-bg);color:var(--primary);box-shadow:var(--nav-on-sh)}
.pp-sideitem span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-sideitem:focus-visible,.pp-side-brand:focus-visible,.pp-side-hide:focus-visible,.pp-side-show:focus-visible,.pp-dockitem:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
/* the dividers (side panels and side menu): one component, one look; the line shows on hover, focus or drag */
.pp-grip{position:absolute;top:0;bottom:0;width:12px;cursor:col-resize;touch-action:none;z-index:2}
.pp-grip::after{content:"";position:absolute;top:0;bottom:0;left:5px;width:2px;border-radius:2px;background:var(--primary);opacity:0;transition:opacity var(--dur) var(--ease)}
.pp-grip:hover::after,.pp-grip:focus-visible::after,.pp-grip:active::after{opacity:.55}.pp-grip:focus-visible{outline:none}
.pp-side-grip{right:-6px}
@media (hover:none){.pp-grip::after{opacity:.35}}
/* the dock (phone): the Pizarra, three favorites and «Más» */
.pp-dock{display:none}
@media (max-width:1023px){
  .pp-dock{display:flex;justify-content:space-around;position:fixed;z-index:62;left:0;right:0;bottom:0;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:var(--bar-bg);border-top:1px solid var(--line);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px)}
  body.pp-body .pp-main{padding-bottom:calc(120px + env(safe-area-inset-bottom))}
  .pp-presence{bottom:calc(76px + env(safe-area-inset-bottom))}.pp-undo-fab{bottom:calc(76px + env(safe-area-inset-bottom))}
  .pp-presence~.pp-undo-fab{bottom:calc(120px + env(safe-area-inset-bottom))}
}
/* with the menu open the dock stays on top (above the drawer's shade), so «Más» closes it; the drawer ends above it */
.pp-dock.is-menu{z-index:1000001}
@media (max-width:1023px){.pp-drawer.fui-OverlayDrawer{bottom:calc(61px + env(safe-area-inset-bottom))!important;height:auto!important}}
.pp-dockitem{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;min-height:48px;padding:6px 4px;border:0;border-radius:14px;background:transparent;color:var(--ink3);font:inherit;font-size:10.5px;font-weight:600;cursor:pointer;transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease)}
.pp-dockitem small{font-size:10.5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-dockitem.is-on{color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent)}
/* the lock screen (five minutes without activity) */
.pp-lock{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;padding:20px;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(22px) saturate(140%);backdrop-filter:blur(22px) saturate(140%)}
.pp-lock-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;width:min(400px,100%);padding:28px 22px;border-radius:24px;background:var(--surface);box-shadow:var(--elev2);text-align:center}
.pp-lock-ic{position:absolute;top:16px;left:16px;color:var(--ink3)}.pp-lock-av{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--yolk);color:#1A1300;font-size:22px;font-weight:800}
.pp-lock-card h2{margin:4px 0 0;font-size:20px;font-weight:650}.pp-lock-msg{min-height:18px;margin:0;color:var(--err);font-size:13px;font-weight:600}
/* motion: screens enter softly, cards rise, buttons press; all off with «reduce motion» */
@media (prefers-reduced-motion:no-preference){
  .pp-view{animation:pp-v2-enter var(--dur-slow) var(--ease-out) both}
  .pp-view .pp-block{animation:pp-v2-rise var(--dur-slow) var(--ease-out) both}
  .pp-view .pp-block:nth-child(2){animation-delay:40ms}.pp-view .pp-block:nth-child(3){animation-delay:80ms}.pp-view .pp-block:nth-child(n+4){animation-delay:120ms}
  .pp-lock-card{animation:pp-v2-pop var(--dur-slow) var(--ease-out) both}
  .pp-btn:active,.pp-dockitem:active,.pp-sideitem:active{transform:scale(.97)}
  .pp-btn,.pp-pcard,.pp-mcal-day{transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur) var(--ease),background-color var(--dur) var(--ease),border-color var(--dur) var(--ease)}
  .pp-pcard:hover,.pp-mcal-day:hover{transform:translateY(-1px);box-shadow:var(--elev1)}
}
@keyframes pp-v2-enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes pp-v2-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes pp-v2-pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}

.pp-dockfavs{margin:6px 0 14px}.pp-dockfav{display:inline-flex;align-items:center;gap:6px}.pp-dockfav-n{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--primary);color:#fff;font-size:11px}

/* V2: the main column of a screen with a side panel may shrink (minmax(0,1fr)): a wide table scrolls inside its box
   instead of pushing the page sideways (with the side menu there is less room) */
.pp-fprog.is-wide>*{min-width:0}
body.pp-body.has-side .pp-main{min-width:0}
/* V2: with the side menu there is less room: the program table scrolls inside its box (its header stays fixed in it) */
@media (min-width:1024px){body.pp-body.has-side .pp-board{overflow:auto;max-height:calc(100dvh / var(--zm, 1) / var(--zm, 1) - var(--appbar-h,58px) - var(--tb-h,0px) - 32px)}}

/* V2: with the side menu open there is less room; up to 1400 px the program table scrolls inside its box (hiding the
   side menu gives it the whole width again) */
@media (min-width:1024px) and (max-width:1399px){body.pp-body.has-side .pp-board{overflow-x:auto;-webkit-overflow-scrolling:touch}}

/* DARK-GENERATED:BEGIN */
/* generated by tools/dark-overrides.py: do not edit by hand */
:is(.pp,body.pp-body)[data-theme="dark"] .pp-chip b{background:#132639;color:#b3cce6}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-status.is-dirty{background:#392f13;color:#e6dab3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-status.is-error{background:#1E2840;color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-sw2:not(.fui-Switch)::after{background:#1E2840}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-appt.a-pb{background:#1E2840;border-color:#34415F;color:#E8ECF5}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-appt.a-an{background:#392f13;color:#e6dab3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-appt.a-w{background:#39132c;color:#e6b3d5}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-pb{background:#1E2840}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-sm{background:#173520}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-an{background:#393113}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-w{background:#39132a}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-w .pp-pname{color:#e6b3d5}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-sm .pp-pname{color:#b3e6c5}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-prow.a-an .pp-pname{color:#e6d8b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-btn:not(.fui-Button).is-whatsapp{background:#133921;color:#b3e6ca!important}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-btn:not(.fui-Button).is-whatsapp:hover{background:#133922}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-check:not(.fui-Checkbox).is-w{background:#39132a}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-navitem.is-on{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.is-visit{background:var(--visitbg,#231538)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-vperson.is-w{border-left:4px solid #67224e}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-vrole.is-on{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.is-okay{background:#16371f;border-color:#296039;color:#b3e6c5}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-ppcell{border-left:8px solid var(--place,#34415F)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rem2-ic{background:#162537;color:#b7cbe1}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rem2-ic.a-vmc{background:#392b13;color:#e6d4b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rem2-ic.a-pp{background:#231636;color:#c6b8e0}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rem2-ic.a-talks{background:#183423;color:#b4e4c7}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rem2-ic.a-field{background:#1b2831}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rep{background:#132539}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-frow.is-pending{background:#392f13}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.warn{background:#392f13;border-color:#675422;color:#e6d4b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-gtag{background:#162537;color:#b7cbe1}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-gtag.t-sm{background:#152538;color:#b7cbe1}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-gtag.t-pr{background:#392f13;color:#e6d4b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-gtag.t-nb{background:#183423;color:#b4e4c7}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-gtag.t-off{background:#391713;color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-book-img{background:#1E2840}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-cleanspecial{background:#392f13;color:#e6d5b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fchipbtn.is-on{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-readonly{background:#1E2840}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-offline{background:#391713;color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-undo-fab{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-health-sum.is-warn{color:#e6c9b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-pair-n{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-ppslot.is-on{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-mcal-reason{color:#e6d8b3!important}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.is-zoom{background:#132239;color:#b3c5e6}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fdays-time.m-zoom{background:#132239;border-color:#223b67;color:#b3c5e6}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fdays-time.m-both{background:#231339;border-color:#3e2267;color:#c5b7e1}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-vrepeats{background:#393013;color:#e6d8b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-req{color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-field-err{color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-zoom-act .pp-btn.is-primary{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-field-filters button[aria-pressed="true"]{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rotate.is-due{background:#392f13;border:1px solid #675622}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tplace-n{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.is-reg{background:#162537}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-months .is-ok{color:#b3e6c5}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-months .is-no{color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rsuggest{background:#392f13;color:#e6d8b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-kpi.is-good em{background:#16371f;color:#b3e6c5}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-kpi.is-mid em{background:#392f13;color:#e6d2b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-kpi.is-bad em{background:#391313;color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-r-bad{color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-r-mid{color:#e6d2b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-gtag.t-irregular,
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.t-irregular{background:#392f13;color:#e6d2b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-gtag.t-inactive,
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.t-inactive{background:#391313;color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-meet{border-top:4px solid #675522}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-ppcal-g.is-warn{background:#392f13}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-ppcal-g.is-error{background:#391313}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-ppcell.is-warn{background:#392e13}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-mcal-out.f-letter{background:#211339}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-mcal-out.f-groups{background:#183432}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-mcal-out.is-pend small{color:#e6d1b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.is-warn{background:#392f13;color:#e6d2b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fcard-h{background:#1E2840}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-link.is-danger{color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-mcal-day.is-past{background:#1E2840}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rgroups-strip .pp-rgroup.is-on{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rtab tbody tr:focus{background:#392f13}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rtab tbody tr:focus-within{background:#392f13}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-yn{border:1px solid var(--line2,#364353)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-yn .is-n[aria-pressed="true"]{background:#391813;color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-step{border:1px solid var(--line2,#364353)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rcard.is-missing .pp-rcard-h small{color:#e6d1b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-ldot{background:#1f252e}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-tag.is-aux{background:#392f13;color:#e6d2b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-mcal-out.is-pend small{color:#e6b6b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-mcal-day.is-picked{background:#391313}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-frozen.is-paused{background:#392f13;border-color:#675422;color:#e6d4b3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-install-n{color:var(--primaryInk)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fdays-edit.m-zoom{background:#132539;border-color:#224267}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fdays-edit.m-both{background:#1E2840}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fdays-edit.m-zoom .pp-fdays-n{background:#1E2840}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fdays-time.m-zoom{background:#132539;border-color:#224267;color:#b3cce6}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rotnote{border-left:4px solid #675522}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rotnote.is-due{background:var(--errbg, #391713)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-rotnote.is-due b{color:var(--err, #e6b6b3)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-fgroups-only{background:#1E2840;color:#b3e6e3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-groups-label{color:#b3e6e3}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-vtl-i.is-now .pp-vtl-time{color:var(--live,#e6b6b3)}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-pres-dot.is-away{background:#392b13}
:is(.pp,body.pp-body)[data-theme="dark"] .pp-dockfav-n{color:var(--primaryInk)}
/* DARK-GENERATED:END */
