/* SyntaxFlow Familia — the agenda page.
   ===========================================================================
   On top of base.css, sf.css, px-tokens.css (the product colours) and
   px-base.css ([data-px="familia"] sets --px, --px-ink and --px-tint from
   --px-familia, and turns the page's opening band berry).
   No fixed colours here: light and dark come from the tokens.
   Phone first (360 px): one column, controls at least 42 px high, nothing
   wider than the screen; the calendar table stacks its days on a phone.
   States always carry text and an icon, never colour alone.
   =========================================================================== */
.pxf-app{ display:grid; gap:14px; min-width:0; }
.pxf-top{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 16px; padding:4px 0 12px; border-bottom:1px solid var(--rule); }
.pxf-mode{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; margin:0; font-size:.92rem; color:var(--ink-2); max-width:62ch; }
.pxf-top-acts{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.pxf-save{ font-size:.88rem; color:var(--ink-3); }
.pxf-banner:empty{ display:none; }
.pxf-banner .px-state{ margin:0 0 8px; }

/* adding */
.pxf-add{ display:grid; gap:12px; padding:16px; border:1px solid var(--rule); border-top:4px solid var(--px); border-radius:12px; background:var(--surface); min-width:0; }
.pxf-add h2{ margin:0; font-size:1.15rem; }
.pxf-add textarea{ width:100%; min-height:9em; resize:vertical; }
.pxf-seg{ flex-wrap:wrap; }
.pxf-seg button{ min-height:42px; }
.pxf-acts{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.pxf-acts-end{ justify-content:flex-end; }
.pxf-inline{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; }
.pxf-inline label{ font-size:.92rem; font-weight:560; color:var(--ink-2); }
.pxf-inline input,.pxf-inline select{ width:auto; max-width:100%; min-width:0; }
.pxf-inline input[type=number]{ width:7em; }
.pxf-note{ display:flex; gap:8px; align-items:flex-start; margin:0; padding:8px 12px; border-radius:8px; background:var(--px-tint); color:var(--ink); font-size:.93rem; }
.pxf-note .pxf-ic{ color:var(--px); flex:none; margin-top:2px; }
.pxf-kids,.pxf-radios,.pxf-occ{ border:1px solid var(--rule); border-radius:10px; padding:10px 12px; margin:0; display:flex; flex-wrap:wrap; gap:6px 16px; min-width:0; }
.pxf-kids legend,.pxf-radios legend,.pxf-occ legend{ font-size:.92rem; font-weight:600; color:var(--ink-2); padding:0 4px; border:0; margin:0; width:auto; }
.pxf-radios{ flex-direction:column; gap:4px; }
.pxf-check{ display:inline-flex; align-items:center; gap:8px; min-height:42px; cursor:pointer; color:var(--ink); }
.pxf-check input{ width:20px; height:20px; margin:0; accent-color:var(--px); flex:none; }
.pxf-manual{ display:grid; gap:12px; }
.pxf-imgform{ display:grid; gap:14px; }
.pxf-img{ margin:0; border:1px solid var(--rule); border-radius:10px; padding:8px; background:var(--surface-2); }
.pxf-img img{ display:block; max-width:100%; height:auto; border-radius:6px; }
.pxf-img figcaption{ font-size:.86rem; color:var(--ink-3); margin-top:6px; overflow-wrap:anywhere; }
.pxf-imgright{ display:grid; gap:12px; min-width:0; }
.pxf-imgright h3{ margin:4px 0 0; font-size:1rem; }
@media (min-width:860px){ .pxf-imgform{ grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); align-items:start; } }

/* tabs */
.pxf-tabs{ display:flex; gap:4px; padding:4px; border-radius:12px; background:var(--paper-2); overflow-x:auto; scrollbar-width:thin; position:sticky; top:calc(var(--hd,61px) + 4px); z-index:5; }
.pxf-tabs [role=tab]{ flex:1 0 auto; min-height:44px; padding:8px 12px; border:0; border-radius:9px; background:transparent; color:var(--ink-2); font:inherit; font-weight:600; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; gap:6px; white-space:nowrap; }
.pxf-tabs [role=tab][aria-selected=true]{ background:var(--surface); color:var(--ink); box-shadow:var(--e1),inset 0 -3px 0 var(--px); }
.pxf-tabs [role=tab]:hover{ color:var(--ink); }
.pxf-count{ display:inline-grid; place-items:center; min-width:22px; height:22px; padding:0 6px; border-radius:999px; background:var(--px); color:var(--px-ink); font-size:.8rem; font-weight:700; }
.pxf-panel{ min-width:0; }
.pxf-panel:focus-visible{ outline:3px solid var(--px); outline-offset:4px; border-radius:6px; }
.pxf-h{ font-size:clamp(1.2rem,1rem + .8vw,1.5rem); margin:4px 0 12px; }

/* sections and lists */
.pxf-sec{ padding:14px 0; border-top:1px solid var(--rule); }
.pxf-sec:first-of-type{ border-top:0; padding-top:0; }
.pxf-sec h3{ font-size:1.04rem; margin:0 0 10px; display:flex; align-items:center; gap:8px; }
.pxf-sec h3::before{ content:""; width:4px; height:1.05em; border-radius:2px; background:var(--px); flex:0 0 4px; }
.pxf-none{ margin:0; color:var(--ink-3); font-size:.95rem; }
.pxf-agenda{ list-style:none; margin:0; padding:0; display:grid; gap:8px; }
.pxf-ag{ display:grid; grid-template-columns:1fr; gap:4px 12px; padding:10px 12px; border:1px solid var(--rule); border-left:4px solid var(--px); border-radius:10px; background:var(--surface); min-width:0; }
.pxf-ag-task{ border-left-color:var(--alu); }
.pxf-ag-reminder{ border-left-color:var(--ink-3); }
.pxf-ag.is-cancelled{ border-left-style:dashed; border-left-color:var(--fail); }
.pxf-ag.is-cancelled .pxf-ag-title{ text-decoration:line-through; color:var(--ink-2); }
.pxf-ag.is-done .pxf-ag-title{ text-decoration:line-through; color:var(--ink-2); }
.pxf-ag-time{ font-family:var(--mono); font-size:.9rem; font-variant-numeric:tabular-nums; color:var(--ink-2); font-weight:600; }
.pxf-ag-main{ min-width:0; display:grid; gap:4px; }
.pxf-ag-title{ font-weight:640; color:var(--ink); text-align:left; overflow-wrap:anywhere; }
button.pxf-ag-title{ text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.18em; min-height:32px; }
.pxf-ag-acts{ display:flex; gap:6px; align-items:flex-start; }
@media (min-width:640px){ .pxf-ag{ grid-template-columns:7.5rem minmax(0,1fr) auto; align-items:start; } }
.pxf-meta{ display:flex; flex-wrap:wrap; gap:6px; margin:0; align-items:center; }
.pxf-chip{ display:inline-flex; align-items:center; gap:5px; padding:2px 9px; border-radius:999px; border:1px solid var(--rule); background:var(--surface-2); color:var(--ink-2); font-size:.84rem; font-weight:560; line-height:1.45; max-width:100%; overflow-wrap:anywhere; }
.pxf-chip .pxf-ic{ width:15px; height:15px; flex:none; }
.pxf-kind{ color:var(--ink); border-color:color-mix(in srgb,var(--px) 45%,var(--rule)); background:var(--px-tint); }
.pxf-kind .pxf-ic{ color:var(--px); }
.pxf-muted{ color:var(--ink-3); }
.pxf-cancel{ color:var(--fail); border-color:color-mix(in srgb,var(--fail) 45%,var(--rule)); }
.pxf-ok{ color:var(--pass); border-color:color-mix(in srgb,var(--pass) 45%,var(--rule)); }
.pxf-warnchip{ color:var(--warn); border-color:color-mix(in srgb,var(--warn) 50%,var(--rule)); }
.pxf-ic{ flex:none; }
.pxf-ck{ list-style:none; margin:2px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:0 16px; }
.pxf-who,.pxf-sumlist,.pxf-profiles,.pxf-histlist{ list-style:none; margin:0; padding:0; display:grid; gap:6px; }
.pxf-who li,.pxf-sumlist li,.pxf-profiles li{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; overflow-wrap:anywhere; }
.pxf-who .pxf-ic,.pxf-sumlist .pxf-ic,.pxf-profiles .pxf-ic{ color:var(--px); }
.pxf-histlist li{ font-size:.88rem; color:var(--ink-2); overflow-wrap:anywhere; }

/* review */
.pxf-entry{ display:grid; gap:12px; padding:14px; margin:0 0 16px; border:1px solid var(--rule); border-radius:14px; background:var(--surface-2); min-width:0; }
.pxf-entry-h h3{ margin:0 0 6px; font-size:1.08rem; overflow-wrap:anywhere; }
.pxf-entry-h h3:focus{ outline:3px solid var(--px); outline-offset:3px; border-radius:4px; }
.pxf-ref{ display:grid; gap:8px; padding:10px 12px; border-radius:10px; background:var(--surface); border:1px solid var(--rule); }
.pxf-ref p{ display:flex; gap:8px; align-items:flex-start; margin:0; }
.pxf-ref .pxf-ic{ color:var(--px); margin-top:2px; }
.pxf-ref-need{ border-color:color-mix(in srgb,var(--warn) 55%,var(--rule)); border-left:4px solid var(--warn); }
.pxf-ref-need .pxf-ic{ color:var(--warn); }
.pxf-q{ font-weight:560; color:var(--ink); }
.pxf-warn{ display:flex; gap:10px; align-items:flex-start; padding:10px 12px; border-radius:10px; border:1px solid color-mix(in srgb,var(--warn) 50%,var(--rule)); border-left:4px solid var(--warn); background:var(--surface); }
.pxf-warn > .pxf-ic{ color:var(--warn); margin-top:2px; }
.pxf-warn p{ margin:0; }
.pxf-warn ul{ margin:6px 0 0; padding-left:18px; }
.pxf-warn blockquote{ margin:6px 0 0; padding:6px 10px; border-left:3px solid var(--warn); background:var(--surface-2); white-space:pre-wrap; overflow-wrap:anywhere; font-size:.9rem; }
.pxf-item{ display:grid; gap:10px; padding:14px; border:1px solid var(--rule); border-radius:12px; background:var(--surface); min-width:0; }
.pxf-item-h{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.pxf-item-t{ margin:0; font-size:1.06rem; overflow-wrap:anywhere; }
.pxf-fields{ display:grid; gap:10px; grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr)); }
.pxf-lbl{ margin:0 0 4px; font-size:.86rem; font-weight:600; color:var(--ink-2); }
.pxf-list{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:6px 14px; }
.pxf-list li{ display:inline-flex; align-items:center; gap:6px; }
.pxf-list .pxf-ic{ color:var(--px); }
.pxf-from blockquote{ margin:0; padding:6px 10px; border-left:3px solid var(--px); background:var(--surface-2); color:var(--ink); white-space:pre-wrap; overflow-wrap:anywhere; font-size:.93rem; }
.pxf-srcbtn{ display:inline-flex; align-items:center; gap:6px; margin-top:6px; color:var(--ink-2); font-size:.9rem; min-height:32px; text-decoration:underline; }
.pxf-question{ display:grid; gap:8px; padding:10px 12px; border-radius:10px; border:1px solid color-mix(in srgb,var(--warn) 50%,var(--rule)); border-left:4px solid var(--warn); background:var(--surface); }
.pxf-question .pxf-q{ display:flex; gap:8px; align-items:flex-start; margin:0; }
.pxf-question .pxf-ic{ color:var(--warn); margin-top:2px; }
.pxf-question .pxf-radios{ border:0; padding:0; }
.pxf-miss{ display:flex; gap:6px; align-items:flex-start; flex-basis:100%; margin:0; color:var(--ink); font-size:.93rem; }
.pxf-miss .pxf-ic{ color:var(--warn); margin-top:2px; }
.pxf-acts .btn[disabled]{ opacity:.55; cursor:not-allowed; }
.pxf-closed{ display:flex; gap:8px; align-items:center; margin:0; color:var(--ink-2); font-size:.93rem; overflow-wrap:anywhere; }
.pxf-closed .pxf-ic{ color:var(--pass); }
.pxf-src summary,.pxf-done summary,.pxf-hist summary{ cursor:pointer; font-weight:600; color:var(--ink-2); min-height:32px; padding:4px 0; }
.pxf-srctext{ margin:8px 0 0; padding:10px 12px; border:1px solid var(--rule); border-radius:8px; background:var(--surface); font:inherit; font-size:.95rem; white-space:pre-wrap; overflow-wrap:anywhere; max-height:22em; overflow:auto; }
.pxf-srctext mark{ background:var(--px-tint); color:var(--ink); border-bottom:2px solid var(--px); padding:0 1px; }
.pxf-srctext mark.pxf-mark-w{ background:transparent; border-bottom:2px dashed var(--warn); }
.pxf-srctext mark.on{ outline:2px solid var(--px); outline-offset:1px; }
.pxf-done-row{ display:flex; gap:8px; align-items:center; margin:6px 0 0; font-size:.9rem; color:var(--ink-2); overflow-wrap:anywhere; }
.pxf-tablewrap{ overflow-x:auto; max-width:100%; }
.pxf-diff{ width:100%; border-collapse:collapse; font-size:.95rem; }
.pxf-diff th,.pxf-diff td{ text-align:left; padding:8px; border-bottom:1px solid var(--rule); vertical-align:top; }
.pxf-diff thead th{ font-size:.84rem; color:var(--ink-2); }
.pxf-diff input{ width:20px; height:20px; accent-color:var(--px); }
.pxf-diff .pxf-after{ font-weight:640; color:var(--ink); }
.pxf-diff .pxf-same td,.pxf-diff .pxf-same th{ color:var(--ink-3); }
.pxf-sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; }

/* week */
.pxf-weeknav{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.pxf-filters{ display:grid; gap:10px; grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr)); align-items:end; margin-bottom:12px; }
.pxf-week{ display:grid; gap:4px; }
.pxf-day{ padding:10px 0; border-top:1px solid var(--rule); }
.pxf-day h3{ margin:0 0 8px; font-size:1rem; }
.pxf-day.is-today h3{ color:var(--px); }
.pxf-cal{ width:100%; border-collapse:collapse; table-layout:fixed; }
.pxf-cal caption{ text-align:left; font-size:.88rem; color:var(--ink-3); padding-bottom:6px; }
.pxf-cal th,.pxf-cal td{ border:1px solid var(--rule); padding:6px; vertical-align:top; text-align:left; }
.pxf-cal th{ font-size:.86rem; background:var(--surface-2); }
.pxf-cal td{ background:var(--surface); min-height:5em; }
.pxf-cal .is-today{ box-shadow:inset 0 3px 0 var(--px); }
.pxf-cal-day{ display:none; font-weight:640; margin-bottom:4px; }
.pxf-cal-list{ list-style:none; margin:0; padding:0; display:grid; gap:4px; font-size:.86rem; }
.pxf-cal-list li{ padding:3px 5px; border-radius:6px; background:var(--px-tint); overflow-wrap:anywhere; }
.pxf-cal-list .pxf-cal-task{ background:var(--surface-2); border:1px solid var(--rule); }
.pxf-cal-list .is-cancelled{ text-decoration:line-through; }
.pxf-cal-list .is-conflict{ box-shadow:inset 3px 0 0 var(--warn); }
.pxf-cal-list .linklike{ text-align:left; min-height:28px; }
.pxf-cal-none{ color:var(--ink-3); }
@media (max-width:720px){
  .pxf-cal,.pxf-cal tbody,.pxf-cal tr,.pxf-cal td{ display:block; width:100%; }
  .pxf-cal thead{ position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .pxf-cal td{ border-width:0 0 1px; padding:8px 0; }
  .pxf-cal-day{ display:block; }
}
.pxf-out{ margin-top:16px; padding-top:12px; border-top:1px solid var(--rule); display:grid; gap:8px; }

/* tasks */
.pxf-tasks{ list-style:none; margin:0; padding:0; display:grid; gap:12px; }
.pxf-task{ display:grid; gap:10px; padding:14px; border:1px solid var(--rule); border-left:4px solid var(--alu); border-radius:12px; background:var(--surface); min-width:0; }
.pxf-task.is-done{ border-left-color:var(--pass); }
.pxf-task.is-done .pxf-item-t{ text-decoration:line-through; color:var(--ink-2); }
.pxf-whobox{ display:grid; gap:8px; }
.pxf-whobox > p{ display:flex; align-items:center; gap:6px; margin:0; }
.pxf-cklist{ display:grid; gap:6px; }
.pxf-ckadd input{ flex:1 1 12em; }
.pxf-newtask{ margin-bottom:14px; }
.pxf-newtask summary{ cursor:pointer; font-weight:640; }

/* settings */
.pxf-settings summary{ cursor:pointer; font-weight:640; }
.pxf-setblock{ display:grid; gap:8px; padding:12px 0; border-top:1px solid var(--rule); }
.pxf-setblock h3{ margin:0; font-size:1rem; }
.pxf-setblock .px-state{ margin:4px 0; }

/* the printable week: off screen until asked; the only thing printed */
.pxf-work{ display:none; }
.pxf-work.is-open{ display:block; }
.pxf-paperwrap{ background:var(--paper-2); padding:12px; border-radius:12px; }
.pxf-printdoc{ background:var(--surface); color:var(--ink); padding:18px; border-radius:8px; border:1px solid var(--rule); font-size:.95rem; }
.pxf-printdoc header h2{ font-size:1.3rem; margin:0 0 2px; }
.pxf-printdoc header p{ margin:0 0 10px; color:var(--ink-2); }
.pxf-pday{ padding:8px 0; border-top:1px solid var(--rule); break-inside:avoid; }
.pxf-pday h3{ font-size:1rem; margin:0 0 4px; }
.pxf-pday ul{ margin:0; padding-left:0; list-style:none; display:grid; gap:4px; }
.pxf-ptime{ display:inline-block; min-width:5.5em; font-family:var(--mono); font-variant-numeric:tabular-nums; }
.pxf-pkind{ font-size:.82rem; color:var(--ink-2); }
.pxf-pmeta{ display:block; font-size:.86rem; color:var(--ink-2); padding-left:5.5em; }
.pxf-pck{ padding-left:5.5em !important; font-size:.88rem; }
.pxf-p-cancel strong{ text-decoration:line-through; }
.pxf-pnone{ margin:0; color:var(--ink-3); }
.pxf-printdoc footer p{ margin:10px 0 0; font-size:.82rem; color:var(--ink-3); }
@media print{
  body.app main > #pxf-app{ display:block !important; padding:0 !important; }
  #pxf-app > :not(#pxf-work){ display:none !important; }
  #pxf-app > #pxf-work{ display:block !important; }
  .pxf-paperwrap{ background:none; padding:0; }
  .pxf-printdoc{ border:0; padding:0; color:#000; background:#fff; }
  .pxf-printdoc *{ color:#000 !important; }
  .pxf-pday{ border-color:#999; }
}
