/* Design 3 "Clarity" applied to every framework page (?design=3, remembered in the gwp_design cookie). Layered on v2_shell.css + v3_shell.css. */
html.gwp_v2.gwp_v3, html.gwp_v2.gwp_v3 body { background: #fff !important; }
html.gwp_v2.gwp_v3 body, html.gwp_v2.gwp_v3 #gwp_frame { font-family: 'Figtree', 'DM Sans', system-ui, sans-serif; color: var(--v2-ink); }

/* ---------- top bar: same on every page ---------- */
html.gwp_v2.gwp_v3 .gwp_topbuttonbar { background: #fff; box-shadow: none; border: 0; transition: none; }
/* output.css (base, pre-Clarity) turns off the bar's own position:sticky below 900px width —
   undocumented, no comment explaining why — so on mobile the bar scrolls away with the page
   instead of staying fixed like it does on desktop. User-reported 2026-09-29. Restored for
   Clarity only; left alone for the old design in case that was deliberate there. */
@media (max-width: 900px) {
    html.gwp_v2.gwp_v3 .gwp_topbuttonbar { position: sticky !important; top: 0; }
}
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 .gwp_topbuttonbar { padding: 10px 32px; gap: 16px; }
    html.gwp_v2.gwp_v3 #gwp_v2_head.v2_generic { padding: 28px 32px 4px; }
    /* the Library is fully styled, so it keeps the wider margins */
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_topbuttonbar { padding: 20px 88px; gap: 20px; }
}
html.gwp_v2.gwp_v3 .gwp_nav_pagetitle { font-weight: 600; }

/* page title inserted by v2_shell.js on pages that have no title of their own */
html.gwp_v2.gwp_v3 #gwp_v2_head.v2_generic h1 { margin: 0; font-size: 40px; font-weight: 600; letter-spacing: -.03em; line-height: 1.1; color: var(--v2-ink); }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 #gwp_v2_head.v2_generic h1 { font-size: 30px; } }

/* ---------- switchers, dropdown selects, tabs used in the top bar ---------- */
html.gwp_v2.gwp_v3 .select_singleframe, html.gwp_v2.gwp_v3 .gwp_nav_filters .select_singleframe { border-radius: 999px; }
html.gwp_v2.gwp_v3 .gwp_nav_btn { border: 0; border-radius: 999px; background: var(--v3-soft); font-family: inherit; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_nav_btn:hover { background: var(--gwp_tool_tint, #eaedfa); }

/* ---------- the hamburger menu, redesigned light ---------- */
html.gwp_v2.gwp_v3 .gwp_menuoverlay { background: rgba(15, 17, 21, .18); }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show { background: #fff; width: 320px; min-width: 320px; box-shadow: 0 0 80px rgba(15, 17, 21, .16); font-family: 'Figtree', 'DM Sans', system-ui, sans-serif; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show { width: 100%; } }
html.gwp_v2.gwp_v3 .v2m_brand { padding: 36px 32px 20px; gap: 14px; }
html.gwp_v2.gwp_v3 .v2m_word { color: var(--v2-ink); font-size: 22px; font-weight: 700; letter-spacing: -.03em; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menucontent { padding: 4px 0 28px; }
html.gwp_v2.gwp_v3 .v2m_grp { margin: 32px 32px 8px; color: var(--v2-muted); font-size: 11px; letter-spacing: .14em; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show a { color: var(--v2-ink); margin: 2px 16px; padding: 11px 16px; border-radius: 14px; font-size: 15px; font-weight: 500; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show a i { color: var(--v2c, var(--v2-muted)); font-size: 20px; }
/* Log Out is a <div onclick="..."> (it needs a confirm/POST, not a plain nav link), so the
   tag-qualified rule above never touches it — it was stuck at the old design's small 3px/5px
   padding while its three <a> siblings (Account/Dashboard/Settings) got the roomier Clarity
   touch target, making the bottom icon row visually uneven. Same treatment, by class instead
   of tag, so all four match. */
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show .gwp_submenulink { margin: 2px 16px; padding: 11px 16px; border-radius: 14px; font-size: 15px; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show .gwp_submenulink i { font-size: 20px; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show>a:hover, html.gwp_v2.gwp_v3 .gwp_dropdown-menucontent>a:hover { background: var(--v3-soft); color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show>a:hover i, html.gwp_v2.gwp_v3 .gwp_dropdown-menucontent>a:hover i { color: var(--v2c, var(--v2-ink)); }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show a.gwp_menuitemselected { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); font-weight: 600; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show a.gwp_menuitemselected i { color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_nav_beta { border-color: var(--v2-muted); color: var(--v2-muted); background: transparent; }
html.gwp_v2.gwp_v3 .gwp_nav_close_btn { color: var(--v2-ink); background: var(--v3-soft); top: 28px; right: 24px; }
html.gwp_v2.gwp_v3 .gwp_nav_close_btn:hover { background: #e9e9e5; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_menuitemhr { border-color: var(--v2-line); margin: 12px 32px; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show .gwp_submenu { border-top: 1px solid var(--v2-line); padding: 12px 16px; }
html.gwp_v2.gwp_v3 .gwp_submenulink { color: var(--v2-muted); border-radius: 12px; }
html.gwp_v2.gwp_v3 .gwp_submenulink:hover { background: var(--v3-soft); color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_dropdown-menu-show, html.gwp_v2.gwp_v3 .gwp_dropdown-menucontent { scrollbar-color: #d6d6d0 transparent; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menucontent::-webkit-scrollbar-thumb { background: #d6d6d0; }
html.gwp_v2.gwp_v3 .gwp_dropdown-menucontent::-webkit-scrollbar-thumb:hover { background: #b9b9b2; }

/* ---------- ‹ label › switchers (Broadcasts, Database, Compliance, Groups, Expenses, Kiosk...): grow to fit their longest label ---------- */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 .gwp_lib_type_dropdown { flex: none; }
    html.gwp_v2.gwp_v3 .gwp_lib_type_dropdown .gwp_lib_type_current { width: auto !important; min-width: 0 !important; max-width: none; padding: 0 10px; gap: 6px; }
    html.gwp_v2.gwp_v3 .gwp_lib_type_current > span { flex: 1; text-align: center; white-space: nowrap; padding: 0 8px; }
    html.gwp_v2.gwp_v3 .gwp_lib_type_list { min-width: 100%; width: max-content; max-width: 360px; }
    html.gwp_v2.gwp_v3 .gwp_lib_type_item { white-space: nowrap; }
}
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 .gwp_lib_type_current > span { flex: 1; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}

/* ---------- Calendar: header is 64px with 10px above/below, the same as every other page's bar ---------- */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 .gwp_calheader { height: 64px !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_topbuttonbar { padding: 10px 32px; gap: 12px; align-items: center; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_addtopbuttons { gap: 12px; align-items: center; }
    html.gwp_v2.gwp_v3 #gwp_fa-filter, html.gwp_v2.gwp_v3 #gwp_lmsearch, html.gwp_v2.gwp_v3 #gwp_calviewwrap > .gwp_topbutton, html.gwp_v2.gwp_v3 #gwp_calmorewrap > .gwp_topbutton {
        display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; width: 44px; height: 44px; flex-shrink: 0; margin: 0; padding: 0; border: 0; border-radius: 50%; background: var(--v3-soft); box-shadow: none; color: var(--v2-ink); font-size: 20px; line-height: 1; cursor: pointer; }
    html.gwp_v2.gwp_v3 #gwp_lmsearch .gwp_topbutton { margin: 0; font-size: 20px; }
    html.gwp_v2.gwp_v3 #gwp_fa-filter:hover, html.gwp_v2.gwp_v3 #gwp_lmsearch:hover, html.gwp_v2.gwp_v3 #gwp_calviewwrap > .gwp_topbutton:hover, html.gwp_v2.gwp_v3 #gwp_calmorewrap > .gwp_topbutton:hover { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
    html.gwp_v2.gwp_v3 #gwp_calviewwrap, html.gwp_v2.gwp_v3 #gwp_calmorewrap { display: inline-flex; align-items: center; }
}

/* Generic mobile top-bar padding was 12px a side, 8px inside the page content's own
   20px gutter (see "GUTTERS" rule below) — same specificity as v3_shell.css's correct
   12px/20px, but this file loads after it, so it silently won. That's why the top bar's
   right-hand buttons sit further right than the content below (confirmed live on Polls'
   edit screen). Match the content gutter instead — this is the rule every other page's
   20px assumes is already true.
   Exception: pages built around the type-switcher pill (Library, Broadcasts, Database,
   Compliance, Groups, Expenses, Kiosk — anywhere .gwp_lib_type_dropdown appears) genuinely
   need the tighter 12px; their switcher label is already sized to the millimetre against
   that budget (e.g. "Remote media" exactly fills it) and 20px reopens the truncation this
   was fixed for earlier. */
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 .gwp_topbuttonbar { padding: 10px 20px; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_topbuttonbar { padding: 12px 20px; }
    html.gwp_v2.gwp_v3 .gwp_topbuttonbar:has(.gwp_lib_type_dropdown) { padding: 10px 12px; }
}

/* Library: same compact button sizing as Calendar's bar (both carry a wide pill next to a
   full set of icon buttons, same crowding pattern — confirmed live 2026-09-29, "Recent" was
   truncating to "Rec…" at 320px). Scoped to #gwp_mediaframe (Library's own page identifier,
   already used elsewhere in this file), not rolled out generally — most pages have room to
   spare at the default 44px sizing and don't need this. */
@media (max-width: 768px) {
    /* #gwp_navigation (and the switcher inside it) has flex-grow:1 by default — fine on pages
       whose bar only ever has one flex-growing element, but on Library the add button shrinks by
       34px whenever "Bin" is selected (gwp_med_selecttype calls gwp_addbtn_set(null) there, since
       you can't add new items to the bin, which hides the "+" half entirely) and that freed width
       gets grabbed by the switcher pill instead of just disappearing — "Bin" ballooning to 216px
       for a 3-character label, confirmed live 2026-09-29. Nothing to do with the word "Bin"
       itself; any tab would do this if it triggered the same add-button state change. Calendar's
       #gwp_navigation already got this same flex:0 1 auto fix earlier — Library never did. */
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_navigation, html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_lib_type_dropdown { flex: 0 1 auto; min-width: 0; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_appchooser .gwp_menubutton { width: 38px !important; height: 38px !important; line-height: 38px !important; font-size: 18px; flex-shrink: 0; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_mmultiselect, html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_mmultiselectactive { width: 38px !important; height: 38px !important; flex-shrink: 0 !important; }
    /* The wrap's own width was never constrained, only the icon inside it — 45px vs the icon's
       correct 38px, same "wrap left to its natural size" gap as the split-add fixes elsewhere,
       just never caught here since nothing else needed the wrap's outer edge before. Also the
       "button bigger than the others" the user reported 2026-09-29. */
    /* output.css (base, pre-Clarity) gives this wrap a 6px right padding on mobile — with its
       box-sizing:content-box that adds straight onto the declared width below, so it was
       actually rendering 6px wider than intended (40px, not 34/38) despite the icon inside
       being correctly sized. Found while explaining the padding/gap difference to the pill's
       width, 2026-09-29. */
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_mediasettingswrap { width: 38px; flex-shrink: 0; padding-right: 0; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_mediasettingswrap > .gwp_topbutton { width: 38px !important; height: 38px !important; flex-shrink: 0 !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_addtb.gwp_split, html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_main, html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_caret { height: 38px !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_main { width: 40px !important; padding: 0 !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_caret { width: 32px !important; }
    /* [data-noprimary="true"] (no add action for the current tab — e.g. Bin, nothing to add to
       it) makes output.css show a "+ Create ⌄" label INSIDE the caret itself, on the assumption
       there's room for it — there isn't here. Squeezed into this 32px circle it rendered as the
       "+" and "⌄" glyphs overlapping in one oval, "Create" text is already hidden by the mobile
       default. User-reported 2026-09-29 ("I can see the plus and down arrow in the oval"). Keep
       just the chevron, same as the normal (has-a-primary-action) state. */
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_plus { display: none !important; }
    /* Multi-select + "…": merged into one pill (rounded outer corners, flat shared inner edge,
       hairline divider) instead of two separate circles with a gap — same treatment as Calendar's
       eye/kebab merge. js/dist/library_v2.js (the file actually served — library.js is a stale
       copy, kept in sync anyway) now moves #gwp_mmultiselect next to #gwp_mediasettingswrap in
       #gwp_addtopbuttons so they're adjacent siblings; the negative margin cancels the 8px gap
       measured live between them at this breakpoint. */
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_mmultiselect { flex-shrink: 0; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_mediasettingswrap { margin-left: -8px; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_mmultiselect { border-radius: 999px 0 0 999px !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_mediasettingswrap > .gwp_topbutton { border-radius: 0 999px 999px 0 !important; border-left: 1px solid var(--v2-line) !important; }
    /* Arrows restored (user-requested 2026-09-29) — "Remote media" will truncate further than
       elsewhere as a result, that's accepted. Pill height matched to the 38px icon row beside it,
       same fix as Calendar's date pill. */
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_lib_type_current { height: 38px !important; }
}
@media (max-width: 380px) {
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_appchooser .gwp_menubutton { width: 34px !important; height: 34px !important; line-height: 34px !important; font-size: 16px; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_mmultiselect, html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_mmultiselectactive { width: 34px !important; height: 34px !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_mediasettingswrap { width: 34px; padding-right: 0; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_mediasettingswrap > .gwp_topbutton { width: 34px !important; height: 34px !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_addtb.gwp_split, html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_main, html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_caret { height: 34px !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_main { width: 34px !important; padding: 0 !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_split_caret { width: 27px !important; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_lib_type_current { height: 34px !important; }
}

/* Add button (every page with the shared split-add control): briefly collapsed to a single "+"
   tap target on mobile (2026-09-29) to save space, then restored the same day once the button
   sizing elsewhere on the bar was fixed and the room concern went away — back to the original
   two-segment split (quick-add "+" / dropdown "▾" for everything else), sized by v2_shell.css. */

/* Content Store: tabs move to the top-bar switcher; the body header (title + tab pills) is replaced by the page heading */
html.gwp_v2.gwp_v3 .gwp_so_header { display: none; }
/* Meetings and Broadcasts: the bar's own title becomes the page heading */
html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_pagetitle { display: none; }

/* ---------- Workspace ---------- */
html.gwp_v2.gwp_v3 .gwp_ts_view_tabs, html.gwp_v2.gwp_v3 .gwp_ts_view_mobilenav { display: none !important; }
html.gwp_v2.gwp_v3 .gwp_workspace_toolbar { background: transparent; border: 0; padding: 12px 24px; }
html.gwp_v2.gwp_v3 .gwp_ts_proj_title_bar { font-size: 18px; font-weight: 600; letter-spacing: -.02em; }
html.gwp_v2.gwp_v3 .gwp_ts_btn { border-radius: 999px; padding: 9px 18px; font-family: inherit; font-size: 14px; font-weight: 600; transition: none; }
html.gwp_v2.gwp_v3 .gwp_ts_btn_sm { padding: 5px 12px; font-size: 12.5px; }
html.gwp_v2.gwp_v3 .gwp_ts_btn_primary { background: var(--gwp_tool, #4259cd); color: #fff; }
html.gwp_v2.gwp_v3 .gwp_ts_btn_primary:hover { background: var(--gwp_tool_hover, #334bc2); opacity: 1; }
html.gwp_v2.gwp_v3 .gwp_ts_btn_secondary, html.gwp_v2.gwp_v3 .gwp_ts_btn_ghost { background: var(--v3-soft); border: 0; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_ts_btn_secondary:hover, html.gwp_v2.gwp_v3 .gwp_ts_btn_ghost:hover { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_ts_add_card_btn, html.gwp_v2.gwp_v3 .gwp_ts_add_col_btn, html.gwp_v2.gwp_v3 .gwp_ts_inline_add { border-radius: 999px; font-family: inherit; }
html.gwp_v2.gwp_v3 .gwp_ts_icon_btn { border-radius: 50%; width: 32px; height: 32px; display: inline-grid; place-items: center; padding: 0; }
html.gwp_v2.gwp_v3 .gwp_ts_project_item { border-radius: 12px; padding: 9px 12px; }
html.gwp_v2.gwp_v3 .gwp_ts_project_item.gwp_ts_active { background: var(--gwp_tool_tint, #eaedfa); }
html.gwp_v2.gwp_v3 .gwp_ts_project_item.gwp_ts_active .gwp_ts_project_name { color: var(--gwp_tool_text, #2e43ae); }

/* the top-bar switchers never underline (the source of the hover underline wasn't found in the plugin's own CSS, so this is a safeguard) */
html.gwp_v2.gwp_v3 .gwp_topbuttonbar, html.gwp_v2.gwp_v3 .gwp_topbuttonbar *, html.gwp_v2.gwp_v3 .gwp_lib_type_list, html.gwp_v2.gwp_v3 .gwp_lib_type_list *,
html.gwp_v2.gwp_v3 .gwp_lib_type_current:hover, html.gwp_v2.gwp_v3 .gwp_lib_type_current:hover *, html.gwp_v2.gwp_v3 .gwp_lib_type_item:hover, html.gwp_v2.gwp_v3 .gwp_lib_type_item:hover * { text-decoration: none !important; }

/* Workspace: buttons/filters that now live in the top bar are hidden in the toolbar */
html.gwp_v2.gwp_v3 .gwp_workspace_toolbar[data-v2mirror] .gwp_ts_toolbar_right button[onclick*="gwp_tasks_new_list_modal"], html.gwp_v2.gwp_v3 .gwp_workspace_toolbar[data-v2mirror] .gwp_ts_toolbar_right button[onclick*="gwp_ts_open_note_editor"] { display: none; }
html.gwp_v2.gwp_v3 .gwp_workspace_toolbar[data-v2sel] select.gwp_ts_panel_select { display: none; }
html.gwp_v2.gwp_v3 .v2_navselect { height: 44px; max-width: 260px; padding: 0 16px; border: 0; border-radius: 999px; background-color: var(--v3-soft); color: var(--v2-ink); font: 500 14.5px 'Figtree', system-ui, sans-serif; cursor: pointer; margin: 0 0 0 4px; }
html.gwp_v2.gwp_v3 .v2_navselect:focus { outline: 2px solid var(--gwp_tool, #4259cd); outline-offset: 0; }

/* =====================================================================================
   PAGE BODIES (design 3): one gutter shared with the top bar and title, hairlines instead of boxes, pill controls
   ===================================================================================== */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 #gwp_aframe, html.gwp_v2.gwp_v3 #gwp_userframe, html.gwp_v2.gwp_v3 #gwp_databaseframe, html.gwp_v2.gwp_v3 #gwp_curriculumframe { margin-left: 0 !important; margin-right: 0 !important; padding-left: 32px !important; padding-right: 32px !important; box-sizing: border-box; width: 100%; max-width: 100%; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_aframe { padding-left: 0 !important; padding-right: 0 !important; }
}
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_aframe, html.gwp_v2.gwp_v3 #gwp_userframe, html.gwp_v2.gwp_v3 #gwp_databaseframe, html.gwp_v2.gwp_v3 #gwp_curriculumframe { padding-left: 16px !important; padding-right: 16px !important; box-sizing: border-box; }
}
html.gwp_v2.gwp_v3 .gwp_expenses_page, html.gwp_v2.gwp_v3 .gwp_so_content, html.gwp_v2.gwp_v3 .gwp_curriculum_listframe { background: transparent; }
html.gwp_v2.gwp_v3 .gwp_exp_search_wrap { background: transparent; border: 0; box-shadow: none; }
html.gwp_v2.gwp_v3 #gwp_curriculumframe .gwp_curriculum_grid, html.gwp_v2.gwp_v3 .gwp_taxp_grid, html.gwp_v2.gwp_v3 .gwp_groups_grid { padding-left: 0; padding-right: 0; margin-left: 0; margin-right: 0; }

/* ---- list-like items: no boxes, a hairline between them ---- */
html.gwp_v2.gwp_v3 .gwp_schedule_card, html.gwp_v2.gwp_v3 .gwp_dbitem, html.gwp_v2.gwp_v3 .gwp_tk_event_card, html.gwp_v2.gwp_v3 .gwp_bc_card, html.gwp_v2.gwp_v3 .gwp_blog_card, html.gwp_v2.gwp_v3 .gwp_so_list_item {
    background: transparent; border: 0; border-bottom: 1px solid var(--v2-line); border-radius: 0; box-shadow: none; margin-left: 0; margin-right: 0; }
html.gwp_v2.gwp_v3 .gwp_schedule_card:hover, html.gwp_v2.gwp_v3 .gwp_dbitem:hover, html.gwp_v2.gwp_v3 .gwp_tk_event_card:hover, html.gwp_v2.gwp_v3 .gwp_bc_card:hover, html.gwp_v2.gwp_v3 .gwp_blog_card:hover { box-shadow: none; background: var(--v3-soft); }
html.gwp_v2.gwp_v3 .gwp_dbitem, html.gwp_v2.gwp_v3 .gwp_tk_event_card, html.gwp_v2.gwp_v3 .gwp_bc_card { padding-top: 22px; padding-bottom: 22px; }
html.gwp_v2.gwp_v3 .gwp_dbitem_icon { border: 0; border-radius: 14px; }

/* ---- grid cards: soft filled tiles ---- */
html.gwp_v2.gwp_v3 .gwp_cur_card, html.gwp_v2.gwp_v3 .gwp_taxp_card, html.gwp_v2.gwp_v3 .gwp_groups_card, html.gwp_v2.gwp_v3 .gwp_so_card {
    background: var(--v3-soft); border: 0; border-radius: 20px; box-shadow: none; overflow: hidden; }
html.gwp_v2.gwp_v3 .gwp_cur_card:hover, html.gwp_v2.gwp_v3 .gwp_taxp_card:hover, html.gwp_v2.gwp_v3 .gwp_groups_card:hover, html.gwp_v2.gwp_v3 .gwp_so_card:hover { box-shadow: none; background: #ecece7; transform: none; }
html.gwp_v2.gwp_v3 .gwp_cur_card_footer, html.gwp_v2.gwp_v3 .gwp_so_card_footer, html.gwp_v2.gwp_v3 .gwp_groups_card_count { border-top: 1px solid rgba(15, 17, 21, .07); background: transparent; }
html.gwp_v2.gwp_v3 .gwp_taxp_card_add { background: transparent; border: 2px dashed #d6d6d0; }
html.gwp_v2.gwp_v3 .gwp_curriculum_grid, html.gwp_v2.gwp_v3 .gwp_taxp_grid { gap: 24px; }
html.gwp_v2.gwp_v3 .gwp_so_grid { gap: 24px; }

/* ---- Members list ---- */
html.gwp_v2.gwp_v3 .gwp_members_list_header { background: transparent; border-bottom: 1px solid var(--v2-line); color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_members_item { border-bottom: 1px solid var(--v2-line); background: transparent; padding-top: 14px; padding-bottom: 14px; }
html.gwp_v2.gwp_v3 .gwp_members_item:hover { background: var(--v3-soft); }
html.gwp_v2.gwp_v3 .gwp_members_list { border: 0; box-shadow: none; background: transparent; }
html.gwp_v2.gwp_v3 .gwp_members_btn { border-radius: 999px; font-family: inherit; }
html.gwp_v2.gwp_v3 .gwp_members_btn_primary { background: var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 .gwp_members_btn_secondary { background: var(--v3-soft); border: 0; color: var(--v2-ink); }

/* ---- controls: pills instead of boxes ---- */
html.gwp_v2.gwp_v3 .gwp_nav_filters .select_singleframe .select_singledropdown, html.gwp_v2.gwp_v3 #gwp_navigation .select_singleframe .select_singledropdown {
    height: 44px; box-sizing: border-box; display: flex; align-items: center; padding: 0 18px; border: 0; border-radius: 999px; background: var(--v3-soft); font: 500 14.5px 'Figtree', system-ui, sans-serif; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 #gwp_navigation .select_singleframe { min-width: 150px; }
html.gwp_v2.gwp_v3 .gwp_so_search, html.gwp_v2.gwp_v3 .gwp_so_filter_select, html.gwp_v2.gwp_v3 .gwp_so_fav_toggle, html.gwp_v2.gwp_v3 .gwp_bc_filter_select, html.gwp_v2.gwp_v3 .gwp_bc_search_input,
html.gwp_v2.gwp_v3 .gwp_exp_search_input, html.gwp_v2.gwp_v3 .gwp_exp_filter_select, html.gwp_v2.gwp_v3 .gwp_exp_date_input {
    height: 44px; box-sizing: border-box; padding: 0 18px; border: 0; border-radius: 999px; background: var(--v3-soft); color: var(--v2-ink); font: 500 14.5px 'Figtree', system-ui, sans-serif; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_so_search:focus, html.gwp_v2.gwp_v3 .gwp_bc_search_input:focus, html.gwp_v2.gwp_v3 .gwp_exp_search_input:focus { outline: 2px solid var(--gwp_tool, #4259cd); }
/* The real <select>s in that shared rule got the same 18px padding on both sides as the
   plain text inputs it's shared with, leaving the browser's own native dropdown arrow to
   render wherever that OS/browser puts it — inconsistent, and on some mobile browsers it
   sits past where the pill visually ends. Draw the arrow ourselves so every device matches. */
html.gwp_v2.gwp_v3 select.gwp_so_filter_select, html.gwp_v2.gwp_v3 select.gwp_bc_filter_select, html.gwp_v2.gwp_v3 select.gwp_exp_filter_select {
    appearance: none; -webkit-appearance: none; -moz-appearance: none;
    padding: 0 40px 0 18px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
}
html.gwp_v2.gwp_v3 .gwp_so_fav_toggle { cursor: pointer; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_so_filters, html.gwp_v2.gwp_v3 .gwp_bc_filters { gap: 12px; margin-bottom: 24px; }

/* ---- Content Store buttons ---- */
html.gwp_v2.gwp_v3 .gwp_so_btn { border-radius: 999px; font-family: inherit; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_so_btn_primary { background: var(--gwp_tool, #4259cd); color: #fff; border: 0; }
html.gwp_v2.gwp_v3 .gwp_so_btn_secondary { background: var(--v3-soft); color: var(--v2-ink); border: 0; }

/* ---- Calendar date picker ---- */
html.gwp_v2.gwp_v3 .gwp_calheader .select_date { height: 44px; box-sizing: border-box; display: inline-flex; align-items: center; padding: 0 18px; border: 0; border-radius: 999px; background: var(--v3-soft); font: 600 15px 'Figtree', system-ui, sans-serif; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 #gwp_store_page, html.gwp_v2.gwp_v3 .gwp_bc_page, html.gwp_v2.gwp_v3 .gwp_tk_events_wrap, html.gwp_v2.gwp_v3 .gwp_expenses_page { background: transparent !important; }

/* inner wrappers that added their own 15-20px side inset: the frame's 32px gutter is the only one */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 .gwp_tk_events_wrap, html.gwp_v2.gwp_v3 .gwp_bc_page, html.gwp_v2.gwp_v3 .gwp_cp_tabcontent, html.gwp_v2.gwp_v3 .gwp_curriculum_grid, html.gwp_v2.gwp_v3 .gwp_curriculum_listframe,
    html.gwp_v2.gwp_v3 .gwpm_wrap, html.gwp_v2.gwp_v3 .gwp_taxp_total, html.gwp_v2.gwp_v3 .gwp_taxp_switcher_count, html.gwp_v2.gwp_v3 .gwp_tg_content { margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_tk_events_list, html.gwp_v2.gwp_v3 .gwp_bc_filters, html.gwp_v2.gwp_v3 .gwp_bc_list, html.gwp_v2.gwp_v3 .gwp_bc_pagination { margin-left: 0 !important; margin-right: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_schedule_card, html.gwp_v2.gwp_v3 .gwp_dbitem, html.gwp_v2.gwp_v3 .gwp_tk_event_card, html.gwp_v2.gwp_v3 .gwp_bc_card, html.gwp_v2.gwp_v3 .gwp_blog_card { padding-left: 0; padding-right: 0; }
}

/* pages whose top bar is position:fixed (e.g. Teams & Groups): the heading clears it, and the frame's own compensating top space goes */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 #gwp_frame.v2_fixedbar #gwp_v2_head.v2_generic { padding-top: 92px; }
    html.gwp_v2.gwp_v3 #gwp_frame.v2_fixedbar #gwp_aframe, html.gwp_v2.gwp_v3 #gwp_frame.v2_fixedbar #gwp_userframe, html.gwp_v2.gwp_v3 #gwp_frame.v2_fixedbar #gwp_databaseframe { padding-top: 12px !important; margin-top: 0 !important; }
}

/* Workspace: same gutter, white ground, sidebar without a divider */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 #gwp_workspaceframe { padding-left: 32px; padding-right: 32px; box-sizing: border-box; }
}
html.gwp_v2.gwp_v3 .gwp_workspace_wrap { background: transparent; }
html.gwp_v2.gwp_v3 .gwp_workspace_sidebar { background: transparent; border-right: 0; }
html.gwp_v2.gwp_v3 .gwp_workspace_main { background: transparent; }

/* Calendar grid: same gutter as the bar */
@media screen and (min-width: 769px) {
    html.gwp_v2.gwp_v3 #gwp_calframe { margin-left: 32px !important; margin-right: 32px !important; width: auto; }
}

/* card ⋮ menus (Schedules, Blogs) stay small so they don't cover badges */
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_nav_icon_btn, html.gwp_v2.gwp_v3 .gwp_blog_card .gwp_nav_icon_btn { width: 36px; height: 36px; font-size: 17px; }

html.gwp_v2.gwp_v3 .gwp_blog_card_header { padding-right: 56px; }
@media (min-width: 769px) { html.gwp_v2.gwp_v3 .gwp_exp_panel, html.gwp_v2.gwp_v3 .gwp_exp_search_wrap, html.gwp_v2.gwp_v3 .gwp_exp_empty { margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; } }

/* ---- Broadcasts: streams and subscribers ---- */
html.gwp_v2.gwp_v3 .gwp_bc_stream_card { background: var(--v3-soft); border: 0; border-radius: 20px; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_bc_stream_card:hover { box-shadow: none; background: #ecece7; }
html.gwp_v2.gwp_v3 .gwp_bc_sub_wrap { border: 0; border-radius: 0; background: transparent; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_bc_sub_table thead th { background: transparent; color: var(--v2-muted); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; border-bottom: 1px solid var(--v2-line); }
html.gwp_v2.gwp_v3 .gwp_bc_sub_table th, html.gwp_v2.gwp_v3 .gwp_bc_sub_table td { border-bottom: 1px solid var(--v2-line); padding: 14px 12px; }
html.gwp_v2.gwp_v3 .gwp_bc_sub_table tbody tr:hover { background: var(--v3-soft); }
html.gwp_v2.gwp_v3 .gwp_bc_sub_chip { border-radius: 999px; }
html.gwp_v2.gwp_v3 .gwp_bc_btn { border-radius: 999px; font-family: inherit; }
html.gwp_v2.gwp_v3 .gwp_bc_btn_primary { background: var(--gwp_tool, #4259cd); border-color: var(--gwp_tool, #4259cd); color: #fff; }
html.gwp_v2.gwp_v3 .gwp_bc_btn_secondary, html.gwp_v2.gwp_v3 .gwp_bc_btn_outline { background: var(--v3-soft); border: 0; color: var(--v2-ink); }

/* switcher hover/click: a slightly deeper fill only (no ring, no outline, no arrow boxes) */
html.gwp_v2.gwp_v3 .gwp_lib_type_current:hover, html.gwp_v2.gwp_v3 .gwp_lib_type_current:active, html.gwp_v2.gwp_v3 .gwp_lib_type_current:focus, html.gwp_v2.gwp_v3 .gwp_lib_type_current:focus-visible { box-shadow: none !important; outline: none !important; border: 0 !important; background: #ebebe6 !important; }
html.gwp_v2.gwp_v3 .gwp_lib_type_current > span, html.gwp_v2.gwp_v3 .gwp_lib_type_current > span:hover { border: 0 !important; border-bottom: 0 !important; box-shadow: none !important; text-decoration: none !important; }
html.gwp_v2.gwp_v3 .gwp_lib_type_arrow:hover, html.gwp_v2.gwp_v3 .gwp_lib_type_arrow:active, html.gwp_v2.gwp_v3 .gwp_lib_type_arrow:focus { background: transparent !important; box-shadow: none !important; outline: none !important; color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_lib_type_arrow_disabled:hover { color: inherit; }

/* hover: list-style items don't change shade; grid tiles darken a touch */
html.gwp_v2.gwp_v3 .gwp_schedule_card:hover, html.gwp_v2.gwp_v3 .gwp_dbitem:hover, html.gwp_v2.gwp_v3 .gwp_tk_event_card:hover, html.gwp_v2.gwp_v3 .gwp_bc_card:hover, html.gwp_v2.gwp_v3 .gwp_blog_card:hover { background: transparent; }
html.gwp_v2.gwp_v3 .gwp_schedule_title_row:hover, html.gwp_v2.gwp_v3 .gwp_schedule_title_row .gwp_h3:hover, html.gwp_v2.gwp_v3 .gwp_scheduletitle:hover, html.gwp_v2.gwp_v3 .gwp_scheduletitle:focus { background: transparent; box-shadow: none; outline: none; }
/* Curriculum's list frame carries its own inline 16px padding: the page frame's gutter is the only one */
html.gwp_v2.gwp_v3 #gwp_curriculum_listframe { padding: 0 !important; }

html.gwp_v2.gwp_v3 #gwp_v2_head.v2_generic p { margin: 8px 0 0; color: var(--v2-muted); font-size: 16px; }
/* leftover 12-15px insets inside list rows: text and icons start on the shared 32px edge */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 .gwp_dbitem_main, html.gwp_v2.gwp_v3 .gwp_schedule_title_row, html.gwp_v2.gwp_v3 .gwp_so_content { padding-left: 0 !important; padding-right: 0 !important; }
    html.gwp_v2.gwp_v3 #gwp_curriculumframe { padding-top: 16px !important; }
}

/* ---- Kiosk Mode admin and Parent Portal: same width and title rules as every other page ---- */
html.gwp_v2.gwp_v3 .gwp_kiosk_admin_wrap, html.gwp_v2.gwp_v3 .gwp_pp_page { max-width: none; width: 100%; margin: 0; padding-left: 0; padding-right: 0; }
html.gwp_v2.gwp_v3 .gwp_kiosk_admin_header, html.gwp_v2.gwp_v3 .gwp_kiosk_admin_sub, html.gwp_v2.gwp_v3 .gwp_pp_header h2 { display: none; }
html.gwp_v2.gwp_v3 .gwp_pp_header { border-bottom: 0; padding-bottom: 0; margin-bottom: 16px; }
html.gwp_v2.gwp_v3 .gwp_kiosk_device_btn, html.gwp_v2.gwp_v3 .gwp_kiosk_live_btn, html.gwp_v2.gwp_v3 .gwp_kiosk_pairing_generate_btn, html.gwp_v2.gwp_v3 .gwp_kiosk_btn_revoke_unused, html.gwp_v2.gwp_v3 .gwp_kiosk_btn_delete_revoked, html.gwp_v2.gwp_v3 .gwp_pp_btn {
    border-radius: 999px; border: 0; background: var(--v3-soft); color: var(--v2-ink); font-family: inherit; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_kiosk_device_btn:hover, html.gwp_v2.gwp_v3 .gwp_kiosk_live_btn:hover, html.gwp_v2.gwp_v3 .gwp_pp_btn:hover { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_kiosk_pairing_generate_btn, html.gwp_v2.gwp_v3 .gwp_pp_btn_primary { background: var(--gwp_tool, #4259cd); color: #fff; }
html.gwp_v2.gwp_v3 .gwp_kiosk_device_btn_danger { background: #fbe6ee; color: #8f1f4d; }
html.gwp_v2.gwp_v3 .gwp_kiosk_table th { background: transparent; }
/* "Create" with no primary action (caret only): a full pill, not a square with one rounded side */
html.gwp_v2.gwp_v3 #gwp_addtb.gwp_split[data-caretonly="true"] .gwp_split_caret { border-radius: 999px; width: auto; padding: 0 16px; }
html.gwp_v2.gwp_v3 #gwp_v2_head.v2_generic { display: block; }

/* Calendar: the grid scrolls inside .gwp_calframecontents, whose scrollbar made the rows narrower than the weekday header above them. The scrollbar is hidden (scrolling still works) so header and grid are exactly the same width. */
html.gwp_v2.gwp_v3 .gwp_calframecontents { scrollbar-width: none !important; -ms-overflow-style: none; }
html.gwp_v2.gwp_v3 .gwp_calframecontents::-webkit-scrollbar { display: none !important; width: 0 !important; height: 0 !important; }
@media screen and (min-width: 769px) {
    html.gwp_v2.gwp_v3 #gwp_calframecontents { height: calc(100vh - 164px) !important; }
}

/* ---------- Mobile: one 20px gutter (same as the title). Frames used to add their own margin on top of padding, and list wrappers/cards added another 8-20px each, so content sat 36-56px in. ---------- */
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_aframe, html.gwp_v2.gwp_v3 #gwp_userframe, html.gwp_v2.gwp_v3 #gwp_databaseframe, html.gwp_v2.gwp_v3 #gwp_curriculumframe { margin-left: 0 !important; margin-right: 0 !important; padding-left: 20px !important; padding-right: 20px !important; width: 100%; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_aframe { padding-left: 0 !important; padding-right: 0 !important; }
    html.gwp_v2.gwp_v3 #gwp_content0, html.gwp_v2.gwp_v3 .gwp_tk_events_wrap, html.gwp_v2.gwp_v3 .gwp_bc_page, html.gwp_v2.gwp_v3 .gwp_dbitem_main, html.gwp_v2.gwp_v3 .gwp_schedule_title_row { padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_tk_event_card, html.gwp_v2.gwp_v3 .gwp_bc_card, html.gwp_v2.gwp_v3 #gwp_databaseframe > div[id] { padding-left: 0 !important; padding-right: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_bc_page, html.gwp_v2.gwp_v3 .gwp_bc_list, html.gwp_v2.gwp_v3 .gwp_bc_card { max-width: 100%; box-sizing: border-box; }
    html.gwp_v2.gwp_v3 .gwp_bc_card_title, html.gwp_v2.gwp_v3 .gwp_bc_card_meta { min-width: 0; overflow-wrap: anywhere; }
}
/* Mobile search: a 44px icon-only button that opens a fixed, full-width field on focus —
   universal now, not a per-page pattern (was built for Teams & Groups only, then copied for
   Database; user asked for it everywhere 2026-09-29). #gwp_navigation .gwp_nav_search matches
   it regardless of which page's DOM wraps it (direct child on some pages, nested a level deeper
   in .gwp_nav_controls on others) — and simply doesn't match on pages where search instead lives
   inside the "…" menu, so those are untouched. */
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_navigation { flex: 1 1 0; min-width: 0; }
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_controls { width: 100%; min-width: 0; }
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_search { flex: 0 0 44px; width: 44px !important; min-width: 0; overflow: hidden; position: relative; }
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_search input { position: absolute; left: 0; top: 0; width: 100%; height: 100%; opacity: 0; padding: 0; border: 0; background: transparent; font-size: 16px; }
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_search:focus-within { position: fixed; left: 12px; right: 12px; top: 10px; width: auto !important; height: 44px; z-index: 9100; overflow: visible; background: var(--v3-soft); box-shadow: 0 6px 24px rgba(20, 20, 40, .18); }
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_search:focus-within input { opacity: 1; padding: 0 16px 0 46px; }
    /* Centred for the 44px collapsed circle; a fixed left:16px (right for the expanded/focused
       field below, matching its input's left padding) left it a few px off-centre in the circle
       — user-reported 2026-09-29. */
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_search > i { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 1; pointer-events: none; }
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_search:focus-within > i { left: 16px; transform: translateY(-50%); }
}
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 .gwp_calheader { height: 64px !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_topbuttonbar { padding: 10px 8px !important; gap: 6px !important; flex-wrap: nowrap; }
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_navigation { flex: 0 1 auto; min-width: 0; }
    /* v2_shell.css's mobile hamburger size (40px) was never brought down alongside everything
       else on this bar — 38/34px matches the eye/kebab pill and date pill. User-reported 2026-09-29. */
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_appchooser .gwp_menubutton { width: 38px !important; height: 38px !important; line-height: 38px !important; font-size: 18px; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_addtopbuttons { gap: 6px !important; flex: none; }
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate { max-width: 100%; }
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_date, html.gwp_v2.gwp_v3 .gwp_calheader #select_dateselect_caldate { padding: 0 6px !important; font-size: 14px !important; white-space: nowrap; }
    /* flex-shrink:0 is load-bearing here, not decoration: these are flex items of #gwp_addtopbuttons
       and without it the browser silently shrinks them a few px on the main axis (width) only —
       width:Npx!important sets the TARGET size, it doesn't opt an item out of the shrink algorithm.
       Height (the cross axis) isn't touched by shrink, so the box goes width<height — a circle
       (border-radius:50%) rendered on a box like that is an oval. Confirmed live 2026-09-29. */
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calviewwrap > .gwp_topbutton, html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calmorewrap > .gwp_topbutton { width: 38px !important; height: 38px !important; flex-shrink: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calviewwrap, html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calmorewrap { width: 38px; flex-shrink: 0; }
    /* These buttons only get their soft-grey fill from the @media (min-width:769px) rule further
       up — nothing mobile-side ever set it, so below 769px they fell back to v2_shell.css's base
       (white background, 1px border): a bare outlined glyph next to the date pill's solid fill,
       which read as "smaller"/lighter than the pill even though the box itself was correctly
       sized. User-reported 2026-09-29. */
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calviewwrap > .gwp_topbutton, html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calmorewrap > .gwp_topbutton { background: var(--v3-soft); border: 0; }

    /* Calendar's add button: both segments (quick-add "+" / dropdown "▾") match the 38px height
       everything else on this bar uses; widths are just enough for one icon each, tighter than
       v2_shell.css's default 40/30px since this bar has less room to spare than most pages. */
    /* Widened from a near-square 44x38 (two ~20px halves) — hard to land a thumb on the right
       half specifically — to a real pill matching the eye/kebab merge's proportions, so each
       half is an actually comfortable tap target. User-reported 2026-09-29. */
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_addtb.gwp_split, html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_main, html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_caret { height: 38px !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_main { width: 40px !important; padding: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_caret { width: 32px !important; }
    /* Same [data-noprimary="true"] fix as Library — see that block's comment. Preventive here:
       not yet confirmed any Calendar view hits data-noprimary, but it's the same shared
       component and the same 32px circle, so it would break the same way if one does. */
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_plus { display: none !important; }

    /* Eye + kebab: merge into one pill (rounded outer corners, flat shared inner edge, hairline
       divider) instead of two separate circles with a gap between them — same two tap targets,
       less width. The negative margin cancels exactly this breakpoint's #gwp_addtopbuttons gap
       (6px, set above) between just these two items; the <380px block below matches its own gap. */
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calmorewrap { margin-left: -6px; }
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calviewwrap > .gwp_topbutton { border-radius: 999px 0 0 999px; }
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calmorewrap > .gwp_topbutton { border-radius: 0 999px 999px 0; border-left: 1px solid var(--v2-line); }
}

/* =====================================================================================
   POPUPS (design 3): colours, radii, fields and footer buttons only. No layout, z-index, display, animation or DOM changes, so opening/stacking/TinyMCE-Quill behaviour is untouched.
   ===================================================================================== */
html.gwp_v2.gwp_v3 .gwp_popup { background-color: rgba(24, 24, 36, .42); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbody, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbodyd, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbodyda { border-radius: 20px; box-shadow: 0 24px 60px rgba(20, 20, 36, .28); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popuptitle, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popuptitlealt { font-family: 'Figtree', system-ui, sans-serif; font-weight: 700; letter-spacing: -.02em; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader { border-bottom-color: var(--v2-line); }

html.gwp_v2.gwp_v3 .gwp_popup .select_singledropdown, html.gwp_v2.gwp_v3 .gwp_popup .select_dateinput, html.gwp_v2.gwp_v3 .gwp_popup .select_timeinput,
html.gwp_v2.gwp_v3 .gwp_popup input.gwp_input, html.gwp_v2.gwp_v3 .gwp_popup input[type="text"], html.gwp_v2.gwp_v3 .gwp_popup input[type="email"], html.gwp_v2.gwp_v3 .gwp_popup input[type="number"],
html.gwp_v2.gwp_v3 .gwp_popup input[type="password"], html.gwp_v2.gwp_v3 .gwp_popup input[type="date"], html.gwp_v2.gwp_v3 .gwp_popup input[type="time"], html.gwp_v2.gwp_v3 .gwp_popup input[type="search"], html.gwp_v2.gwp_v3 .gwp_popup textarea, html.gwp_v2.gwp_v3 .gwp_popup select:not(.ql-header):not(.ql-color):not(.ql-background):not(.ql-align) {
    border: 1px solid var(--v2-line); border-radius: 12px; background-color: #fff; color: var(--v2-ink); font-family: 'Figtree', system-ui, sans-serif; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_popup .select_singledropdown:hover, html.gwp_v2.gwp_v3 .gwp_popup input:hover:not([type="checkbox"]):not([type="radio"]), html.gwp_v2.gwp_v3 .gwp_popup textarea:hover { border-color: #c9ccd8; }
html.gwp_v2.gwp_v3 .gwp_popup input:focus:not([type="checkbox"]):not([type="radio"]), html.gwp_v2.gwp_v3 .gwp_popup textarea:focus, html.gwp_v2.gwp_v3 .gwp_popup select:focus { outline: 0; border-color: var(--gwp_tool, #4259cd); box-shadow: 0 0 0 3px var(--gwp_tool_tint, rgba(66, 89, 205, .14)); }

html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons { border-top-color: var(--v2-line); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_bottombuttons button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_auth_btn_secondary {
    border-radius: 999px; text-transform: none; letter-spacing: 0; font-family: 'Figtree', system-ui, sans-serif; font-size: 14px; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons .gwp_close_button { background: #fff; border: 1px solid var(--v2-line); color: var(--v2-ink); box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons .gwp_close_button:hover { background: var(--v3-soft); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons .gwp_save_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn_save { background: var(--gwp_tool, #4259cd); border: 1px solid var(--gwp_tool, #4259cd); color: #fff; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons .gwp_save_button:hover, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn_save:hover { background: var(--gwp_tool_hover, #3247b8); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_sbuttonsmall { border-radius: 999px; }

html.gwp_v2.gwp_v3 .gwp_popup h2.gwp_lmsearch, html.gwp_v2.gwp_v3 .gwp_popup h2#gwp_lmsearch, html.gwp_v2.gwp_v3 .gwp_popup h2#gwp_createactivity, html.gwp_v2.gwp_v3 .gwp_popup h2#gwp_createremotemedia { width: auto; height: auto; margin: 0 4px; padding: 4px; border: 0; border-radius: 8px; background: transparent; display: inline-flex; align-items: center; justify-content: center; }
html.gwp_v2.gwp_v3 .gwp_popup h2.gwp_lmsearch:hover, html.gwp_v2.gwp_v3 .gwp_popup h2#gwp_lmsearch:hover { background: var(--v3-soft); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tab.gwp_popup_tabselected, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabselected { color: var(--gwp_tool_text, #2e43ae); }

/* ---------- Schedules: each schedule is its own card so where one ends and the next begins is obvious (the inner hairlines used to look the same as the between-item ones) ---------- */
html.gwp_v2.gwp_v3 .gwp_schedule_card { background: #fff; border: 1px solid var(--v2-line); border-radius: 20px; margin: 0 0 16px; padding: 6px 20px 14px; box-shadow: 0 1px 2px rgba(20, 20, 40, .04); }
html.gwp_v2.gwp_v3 .gwp_schedule_card:hover { background: #fff; box-shadow: 0 4px 16px rgba(20, 20, 40, .08); }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedule_title_row { border-bottom: 0; padding-top: 10px; }
html.gwp_v2.gwp_v3 .gwp_schedule_card [class*="gwp_schedule_"][style*="border-bottom"], html.gwp_v2.gwp_v3 .gwp_schedule_card hr { border-color: var(--v3-soft); }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .gwp_schedule_card { padding: 4px 16px 12px; border-radius: 18px; } }

/* ---------- Calendar month picker: one pill like the page switchers, arrows inside it ---------- */
html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate { display: inline-flex !important; align-items: center; height: 44px; box-sizing: border-box; padding: 0 10px; gap: 4px; border-radius: 999px; background: var(--v3-soft); vertical-align: middle; }
html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_date { background: transparent; padding: 0 8px; height: 44px; }
html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_calmleft, html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_calmright { display: inline-flex !important; line-height: 1; align-self: center; align-items: center; justify-content: center; width: 28px; height: 28px; margin: 0; padding: 0; border-radius: 50%; font-size: 14px; color: var(--v2-muted); cursor: pointer; position: static; }
html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_calmleft:hover, html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_calmright:hover { color: var(--gwp_tool_text, #2e43ae); background: transparent; }
html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_date::after { display: none; }

/* ---------- Blog / News ---------- */
html.gwp_v2.gwp_v3 #gwp_blogs_status_filter { min-width: 0 !important; }
html.gwp_v2.gwp_v3 #gwp_blogs_status_filter .select_singledropdown { height: 44px; box-sizing: border-box; display: inline-flex; align-items: center; padding: 0 34px 0 18px; border: 0; border-radius: 999px; background-color: var(--v3-soft); font: 600 14.5px 'Figtree', system-ui, sans-serif; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_blog_card_header { gap: 12px; }
html.gwp_v2.gwp_v3 .gwp_blog_card .gwp_blog_card_title { font-weight: 600; letter-spacing: -.01em; }
html.gwp_v2.gwp_v3 #gwp_blogs_status_filter .select_singledropdown { gap: 10px; min-width: 96px; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .gwp_blog_card { padding-left: 0 !important; padding-right: 0 !important; } html.gwp_v2.gwp_v3 .gwp_blog_card_header { padding-left: 0 !important; } }

/* ---------- Settings ---------- */
@media (min-width: 769px) { html.gwp_v2.gwp_v3 #gwp_sframe { margin-left: 32px; margin-right: 32px; } }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 #gwp_sframe { margin-left: 20px; margin-right: 20px; } }
html.gwp_v2.gwp_v3 .gwp_filtersettings .select_tabmcontainer { display: inline-flex; align-items: center; height: 44px; box-sizing: border-box; padding: 0 10px; gap: 4px; border: 0; border-radius: 999px; background: var(--v3-soft); }
html.gwp_v2.gwp_v3 .gwp_filtersettings .select_tabmdropdown { background: transparent; border: 0; padding: 0 12px; font: 600 15px 'Figtree', system-ui, sans-serif; color: var(--v2-ink); text-align: center; }
html.gwp_v2.gwp_v3 .gwp_filtersettings .select_tabmleftalt, html.gwp_v2.gwp_v3 .gwp_filtersettings .select_tabmright { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; font-size: 14px; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_filtersettings .select_tabmleftalt, html.gwp_v2.gwp_v3 .gwp_filtersettings .select_tabmright { display: inline-flex !important; line-height: 1; align-self: center; position: static; }
html.gwp_v2.gwp_v3 .gwp_filtersettings .select_tabmdropdown::after, html.gwp_v2.gwp_v3 .gwp_filtersettings .select_tabmdropdown::before { display: none !important; }

/* =====================================================================================
   BROADCASTS: content step (Block Builder / Editor) — same pills, hairlines and radii as the rest of design 3
   ===================================================================================== */
html.gwp_v2.gwp_v3 .gwp_bc_subject_input { height: 48px; padding: 0 18px; border: 1px solid var(--v2-line); border-radius: 14px; background: #fff; font: 500 16px 'Figtree', system-ui, sans-serif; color: var(--v2-ink); box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_bc_subject_input:focus { border-color: var(--gwp_tool, #4259cd); box-shadow: 0 0 0 3px var(--gwp_tool_tint, rgba(66, 89, 205, .14)); }
html.gwp_v2.gwp_v3 .gwp_bc_editor_wrap { border: 1px solid var(--v2-line); border-radius: 20px; overflow: hidden; background: #fff; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_bc_unified_toolbar { background: #fff; border: 0; border-bottom: 1px solid var(--v2-line); padding: 10px 14px; gap: 12px; align-items: center; }
html.gwp_v2.gwp_v3 .gwp_bc_unified_left { display: inline-flex; gap: 4px; padding: 4px; border-radius: 999px; background: var(--v3-soft); flex: none; }
html.gwp_v2.gwp_v3 .gwp_bc_editor_tab { display: inline-flex; align-items: center; gap: 8px; padding: 0 16px; height: 36px; border: 0; border-radius: 999px; background: transparent; font: 600 14px 'Figtree', system-ui, sans-serif; color: var(--v2-muted); white-space: nowrap; }
html.gwp_v2.gwp_v3 .gwp_bc_editor_tab:hover { color: var(--v2-ink); background: transparent; }
html.gwp_v2.gwp_v3 .gwp_bc_editor_tab.gwp_bc_editor_tab_active { background: #fff; color: var(--gwp_tool_text, #2e43ae); box-shadow: 0 1px 3px rgba(20, 20, 40, .12); border: 0; }
html.gwp_v2.gwp_v3 .gwp_bc_inuse { display: inline-flex; align-items: center; margin-left: 2px; padding: 2px 9px; border-radius: 999px; background: var(--gwp_tool, #4259cd); color: #fff; font: 700 10.5px 'Figtree', system-ui, sans-serif; letter-spacing: .04em; text-transform: uppercase; }
html.gwp_v2.gwp_v3 .gwp_bc_unified_right .gwp_bc_tab, html.gwp_v2.gwp_v3 .gwp_bblocks_settings_tab { height: 32px; padding: 0 14px; border: 0; border-radius: 999px; font: 600 13px 'Figtree', system-ui, sans-serif; color: var(--v2-muted); background: transparent; }
html.gwp_v2.gwp_v3 .gwp_bc_unified_right .gwp_bc_tab_active, html.gwp_v2.gwp_v3 .gwp_bblocks_settings_tab.gwp_bblocks_settings_tab_active, html.gwp_v2.gwp_v3 .gwp_bblocks_settings_tab.active { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); border: 0; }
html.gwp_v2.gwp_v3 .gwp_bblocks_toolbar_btn, html.gwp_v2.gwp_v3 .gwp_bblocks_preview_device_btn { border: 1px solid var(--v2-line); border-radius: 999px; background: #fff; }
html.gwp_v2.gwp_v3 .gwp_bblocks_preview_device_btn.active, html.gwp_v2.gwp_v3 .gwp_bblocks_preview_device_btn.gwp_bblocks_active { border-color: var(--gwp_tool, #4259cd); background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }

html.gwp_v2.gwp_v3 .gwp_bc_builder_palette, html.gwp_v2.gwp_v3 .gwp_bblocks_palette { background: #fff; border-right: 1px solid var(--v2-line); }
html.gwp_v2.gwp_v3 .gwp_bblocks_palette_label { font: 700 11px 'Figtree', system-ui, sans-serif; letter-spacing: .09em; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_bblocks_palette_item { border: 1px solid var(--v2-line); border-radius: 14px; background: #fff; color: var(--v2-ink); font-family: 'Figtree', system-ui, sans-serif; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_bblocks_palette_item:hover { border-color: var(--gwp_tool, #4259cd); background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_bc_builder_canvas_wrap, html.gwp_v2.gwp_v3 .gwp_bblocks_canvas_wrap { background: var(--v3-soft); }
html.gwp_v2.gwp_v3 .gwp_bblocks_block_selected { outline-color: var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 .gwp_bblocks_block_toolbar { border-radius: 999px; background: var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 .gwp_bblocks_insert_btn { border-radius: 50%; border: 1px solid var(--v2-line); background: #fff; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_bblocks_insert_btn:hover { border-color: var(--gwp_tool, #4259cd); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_bblocks_canvas_empty { border-radius: 18px; border-color: var(--v2-line); }
html.gwp_v2.gwp_v3 .gwp_bblocks_insert_popup { border: 1px solid var(--v2-line); border-radius: 16px; box-shadow: 0 16px 40px rgba(20, 20, 40, .16); }

html.gwp_v2.gwp_v3 .gwp_bc_builder_settings { background: #fff; border-left: 1px solid var(--v2-line); }
html.gwp_v2.gwp_v3 .gwp_bblocks_settings_title { font: 700 15px 'Figtree', system-ui, sans-serif; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_bblocks_section { border: 1px solid var(--v2-line); border-radius: 16px; background: #fff; overflow: hidden; }
html.gwp_v2.gwp_v3 .gwp_bblocks_section_header { font: 700 11px 'Figtree', system-ui, sans-serif; letter-spacing: .09em; color: var(--v2-muted); background: transparent; }
html.gwp_v2.gwp_v3 .gwp_bblocks_field label { font: 700 11px 'Figtree', system-ui, sans-serif; letter-spacing: .07em; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_bblocks_input, html.gwp_v2.gwp_v3 .gwp_bblocks_font_select, html.gwp_v2.gwp_v3 .gwp_bc_builder_settings input[type="text"], html.gwp_v2.gwp_v3 .gwp_bc_builder_settings input[type="number"], html.gwp_v2.gwp_v3 .gwp_bc_builder_settings select, html.gwp_v2.gwp_v3 .gwp_bc_builder_settings textarea {
    border: 1px solid var(--v2-line); border-radius: 12px; background: #fff; font-family: 'Figtree', system-ui, sans-serif; color: var(--v2-ink); box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_bblocks_input:focus, html.gwp_v2.gwp_v3 .gwp_bblocks_font_select:focus, html.gwp_v2.gwp_v3 .gwp_bc_builder_settings input:focus, html.gwp_v2.gwp_v3 .gwp_bc_builder_settings select:focus, html.gwp_v2.gwp_v3 .gwp_bc_builder_settings textarea:focus { outline: 0; border-color: var(--gwp_tool, #4259cd); box-shadow: 0 0 0 3px var(--gwp_tool_tint, rgba(66, 89, 205, .14)); }
html.gwp_v2.gwp_v3 .gwp_bblocks_swatch { border-radius: 50%; }
html.gwp_v2.gwp_v3 .gwp_bblocks_template_btn, html.gwp_v2.gwp_v3 .gwp_bblocks_upload_btn { border-radius: 999px; }
html.gwp_v2.gwp_v3 .gwp_bblocks_template_btn_primary { background: var(--gwp_tool, #4259cd); border-color: var(--gwp_tool, #4259cd); color: #fff; }
html.gwp_v2.gwp_v3 .gwp_bblocks_template_modal, html.gwp_v2.gwp_v3 .gwp_bblocks_picker { border-radius: 20px; box-shadow: 0 24px 60px rgba(20, 20, 36, .28); }
html.gwp_v2.gwp_v3 .gwp_bblocks_template_card { border: 1px solid var(--v2-line); border-radius: 16px; }
html.gwp_v2.gwp_v3 .gwp_bblocks_picker_search { border: 1px solid var(--v2-line); border-radius: 999px; }

/* Editor side: merge bar + attachments in the same style */
html.gwp_v2.gwp_v3 .gwp_bc_merge_bar { background: #fff !important; border: 0 !important; border-bottom: 1px solid var(--v2-line) !important; border-radius: 0 !important; padding: 12px 16px !important; }
html.gwp_v2.gwp_v3 .gwp_bc_merge_bar .gwp_bc_btn { border-radius: 999px !important; padding: 5px 12px !important; background: var(--v3-soft) !important; border: 0 !important; color: var(--v2-ink) !important; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_bc_merge_bar .gwp_bc_btn:hover { background: var(--gwp_tool_tint, #eaedfa) !important; color: var(--gwp_tool_text, #2e43ae) !important; }
html.gwp_v2.gwp_v3 #gwp_bc_spotless_container { padding: 14px 16px; }
html.gwp_v2.gwp_v3 #gwp_bc_spotless_container .gwp_quill_wrap .ql-toolbar.ql-snow { border-radius: 14px 14px 0 0; border-color: var(--v2-line); background: #fff; }
html.gwp_v2.gwp_v3 #gwp_bc_spotless_container .gwp_quill_wrap .ql-container.ql-snow { border-radius: 0 0 14px 14px; border-color: var(--v2-line); }
html.gwp_v2.gwp_v3 .gwp_bblocks_settings_tab.gwp_bblocks_tab_active { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); border: 0; }
html.gwp_v2.gwp_v3 .gwp_bc_builder_settings input, html.gwp_v2.gwp_v3 .gwp_bc_builder_settings select, html.gwp_v2.gwp_v3 .gwp_bc_builder_settings textarea { max-width: 100%; box-sizing: border-box; }
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 .gwp_bc_topbar { flex-wrap: wrap; gap: 12px; }
    html.gwp_v2.gwp_v3 .gwp_bc_topbar_actions { flex-wrap: wrap; gap: 8px; }
    html.gwp_v2.gwp_v3 .gwp_bc_editor_tab { padding: 0 12px; }
    html.gwp_v2.gwp_v3 .gwp_bc_inuse { display: none; }
    html.gwp_v2.gwp_v3 .gwp_bc_editor_wrap { overflow: visible; }
}

/* ---------- Empty states (a page with nothing in it yet): soft icon tile, plain text, one clear pill button ---------- */
html.gwp_v2.gwp_v3 :is(.gwp_cp_empty, .gwp_bc_empty, .gwp_groups_empty, .gwp_members_empty, .gwp_taxp_empty, .gwp_so_empty, .gwp_exp_empty, .gwp_curriculum_empty, .gwp_lib_empty, .gwp_empty, .gwp_reg_empty, .polls_empty) {
    display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 72px 20px; border: 0; background: transparent; }
html.gwp_v2.gwp_v3 :is(.gwp_cp_empty, .gwp_bc_empty, .gwp_groups_empty, .gwp_members_empty, .gwp_taxp_empty, .gwp_so_empty, .gwp_exp_empty, .gwp_curriculum_empty, .gwp_lib_empty, .gwp_empty, .gwp_reg_empty, .polls_empty) > i:first-child {
    display: inline-flex !important; align-items: center; justify-content: center; width: 76px; height: 76px; margin: 0 0 20px !important; border-radius: 50%; background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae) !important; font-size: 32px !important; }
html.gwp_v2.gwp_v3 :is(.gwp_cp_empty, .gwp_bc_empty, .gwp_groups_empty, .gwp_members_empty, .gwp_taxp_empty, .gwp_so_empty, .gwp_exp_empty, .gwp_curriculum_empty, .gwp_lib_empty, .gwp_empty, .gwp_reg_empty, .polls_empty) :is(h3, .gwp_groups_empty_title, .gwp_taxp_empty_title) { margin: 0 0 6px; font: 700 20px 'Figtree', system-ui, sans-serif; letter-spacing: -.01em; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 :is(.gwp_cp_empty, .gwp_bc_empty, .gwp_groups_empty, .gwp_members_empty, .gwp_taxp_empty, .gwp_so_empty, .gwp_exp_empty, .gwp_curriculum_empty, .gwp_lib_empty, .gwp_empty, .gwp_reg_empty, .polls_empty) :is(p, div, .gwp_groups_empty_text, .gwp_members_empty_text, .gwp_taxp_empty_text) { color: var(--v2-muted) !important; font-size: 15px !important; max-width: 420px; }
html.gwp_v2.gwp_v3 :is(.gwp_cp_empty, .gwp_bc_empty, .gwp_groups_empty, .gwp_members_empty, .gwp_taxp_empty, .gwp_so_empty, .gwp_exp_empty, .gwp_curriculum_empty, .gwp_lib_empty, .gwp_empty, .gwp_reg_empty, .polls_empty) button {
    display: inline-flex; align-items: center; gap: 8px; height: 44px; margin-top: 22px !important; padding: 0 22px; border: 0; border-radius: 999px; background: var(--gwp_tool, #4259cd); color: #fff; font: 600 14.5px 'Figtree', system-ui, sans-serif; cursor: pointer; }
html.gwp_v2.gwp_v3 :is(.gwp_cp_empty, .gwp_bc_empty, .gwp_groups_empty, .gwp_members_empty, .gwp_taxp_empty, .gwp_so_empty, .gwp_exp_empty, .gwp_curriculum_empty, .gwp_lib_empty, .gwp_empty, .gwp_reg_empty, .polls_empty) button:hover { background: var(--gwp_tool_hover, #3247b8); }

/* ---------- Mobile: the page switcher takes all the room the bar has left (as the original did), and fixed-bar pages keep their heading clear of the bar ---------- */
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_lib_type_dropdown { flex: 1 1 0; min-width: 0; width: auto; }
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_lib_type_dropdown .gwp_lib_type_current { width: 100% !important; min-width: 0 !important; box-sizing: border-box; }
    html.gwp_v2.gwp_v3 #gwp_navigation .gwp_lib_type_current > span { min-width: 0 !important; }
    html.gwp_v2.gwp_v3 #gwp_frame.v2_fixedbar #gwp_v2_head.v2_generic { padding-top: 84px; }
    html.gwp_v2.gwp_v3 #gwp_frame.v2_fixedbar #gwp_aframe, html.gwp_v2.gwp_v3 #gwp_frame.v2_fixedbar #gwp_userframe, html.gwp_v2.gwp_v3 #gwp_frame.v2_fixedbar #gwp_databaseframe { padding-top: 12px !important; margin-top: 0 !important; }
}

/* ---------- No movement while the page builds: body margin and the bar's height are fixed from the first paint ---------- */
html.gwp_v2.gwp_v3 body { margin: 0; }
html.gwp_v2.gwp_v3 #gwp_topbuttonbar { min-height: 64px; box-sizing: border-box; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 #gwp_calframe { margin-left: 8px !important; margin-right: 8px !important; width: auto !important; } }
@media (max-width: 768px) {
    /* The switcher itself growing to fill the room the now-universally-collapsed search (above)
       frees up — .gwp_nav_search's own sizing/focus behavior is handled generically above and no
       longer repeated per page here. */
    html.gwp_v2.gwp_v3 #gwp_navigation > #gwp_tg_switcher ~ .gwp_nav_controls { margin: 0; }
    html.gwp_v2.gwp_v3 #gwp_navigation > #gwp_tg_switcher ~ .gwp_nav_controls { flex: 0 0 44px; width: 44px; }
    html.gwp_v2.gwp_v3 #gwp_tg_switcher { flex: 1 1 0; min-width: 0; width: auto; }
    html.gwp_v2.gwp_v3 #gwp_tg_switcher .gwp_lib_type_current { width: 100% !important; box-sizing: border-box; }
    html.gwp_v2.gwp_v3 #gwp_tg_switcher .gwp_tg_tab_label { flex: 1 1 auto; min-width: 0; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    html.gwp_v2.gwp_v3 #gwp_db_typedropdown { flex: 1 1 0; min-width: 0; width: auto; }
}
html.gwp_v2.gwp_v3 #gwp_topbuttonbar > #gwp_navigation:empty { display: none; }

/* ---------- Opened top-bar menu buttons (calendar view / more): the original gave the wrapper a white "tab" that joins the dropdown, which shows as a white square behind our round buttons ---------- */
html.gwp_v2.gwp_v3 #gwp_calviewwrap.gwp_navactive, html.gwp_v2.gwp_v3 #gwp_calmorewrap.gwp_navactive { background: transparent; box-shadow: none; border-radius: 50%; border-bottom-color: transparent; }
html.gwp_v2.gwp_v3 #gwp_calviewwrap.gwp_navactive > .gwp_topbutton, html.gwp_v2.gwp_v3 #gwp_calmorewrap.gwp_navactive > .gwp_topbutton { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_navactive .gwp_dropdown-additem { border: 1px solid var(--v2-line); border-radius: 18px; box-shadow: 0 16px 40px rgba(20, 20, 40, .16); margin-top: 8px; }
html.gwp_v2.gwp_v3 .gwp_topbutton, html.gwp_v2.gwp_v3 .gwp_topbuttonc { -webkit-tap-highlight-color: transparent; }

/* ---------- Calendar on phones: use the whole width (7 equal columns, no leftover strip on the right), full month label ---------- */
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_calframe { margin-left: 4px !important; margin-right: 4px !important; }
    html.gwp_v2.gwp_v3 #gwp_cframe { padding-left: 0 !important; padding-right: 0 !important; }
    html.gwp_v2.gwp_v3 #gwp_calframe [id^="gwp_row"]:not([style*="display: none"]):not([style*="display:none"]) { display: flex !important; width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; box-sizing: border-box; }
    html.gwp_v2.gwp_v3 #gwp_calframe [id^="gwp_row"]:not([style*="display: none"]):not([style*="display:none"]) > * { flex: 1 1 0 !important; width: auto !important; min-width: 0 !important; box-sizing: border-box; }
    /* #select_caldate sits inside #gwp_navigation, general framework markup that's allowed to
       shrink to nothing (flex-basis:0, min-width:0) so the top bar never causes page-wide
       horizontal overflow — confirmed live it gets squeezed to ~100px on a narrow phone while
       its siblings (the hamburger, the Add/Eye/More group) stay fixed-width. Making the pill
       itself refuse to shrink (flex-shrink:0) was tried first and just relocated the overflow
       from "arrow spills past the pill" to "pill spills past its own parent, into the Add
       button" — confirmed live both ways at 320–375px. Arrows stay fixed and protected; the
       month label is the one thing that gives, with a small min-width + ellipsis instead of
       demanding its full text width via min-width:max-content — full "September 2026" only
       where there's actually room for it.
       flex-grow was 1 here (and on #gwp_navigation) so the pill filled whatever bar width was
       left over — user-reported 2026-09-29 as visible empty space past the month text. 0 still
       lets it shrink under real pressure, it just no longer stretches past its own content. Also
       matches the pill's height (44px, unchanged since desktop) down to the icon buttons beside
       it (38px here, 34px under 380px) — they read as two different-sized controls otherwise. */
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate { padding: 0 6px; gap: 0; flex: 0 1 auto; min-width: 0; height: 38px; }
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_date, html.gwp_v2.gwp_v3 .gwp_calheader #select_dateselect_caldate { height: 38px; }
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_calmleft, html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_calmright { width: 22px; height: 22px; flex: 0 0 22px; }
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_date, html.gwp_v2.gwp_v3 .gwp_calheader #select_dateselect_caldate { padding: 0 2px !important; font-size: 13.5px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 40px; flex: 0 1 auto; }
}

/* ---------- Mobile: strip the extra inner padding some pages add inside the shared 20px gutter ---------- */
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_exp_panel_receipts, html.gwp_v2.gwp_v3 .gwp_exp_search_wrap, html.gwp_v2.gwp_v3 .gwp_so_content { padding-left: 0 !important; padding-right: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_expenses_page input[type="date"], html.gwp_v2.gwp_v3 .gwp_expenses_page select { min-width: 0; max-width: 100%; box-sizing: border-box; }
    html.gwp_v2.gwp_v3 #gwp_addtb { flex: none; }
}

/* ---------- Mobile: things that used to run off the right edge ---------- */
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_sframe [style*="display:grid"], html.gwp_v2.gwp_v3 #gwp_sframe [style*="display: grid"] { grid-template-columns: minmax(0, 1fr) !important; }
    html.gwp_v2.gwp_v3 #gwp_sframe .gwp_cgd_perm_list { max-width: 100%; }
    /* Kiosk Mode admin tables become one card per row, with every action button reachable */
    html.gwp_v2.gwp_v3 .gwp_kiosk_table, html.gwp_v2.gwp_v3 .gwp_kiosk_table tbody { display: block; width: 100%; }
    html.gwp_v2.gwp_v3 .gwp_kiosk_table thead { display: none; }
    html.gwp_v2.gwp_v3 .gwp_kiosk_table tr { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: 18px 0; border-bottom: 1px solid var(--v2-line); }
    html.gwp_v2.gwp_v3 .gwp_kiosk_table td { display: block; padding: 0; border: 0; font-size: 14px; color: var(--v2-muted); }
    html.gwp_v2.gwp_v3 .gwp_kiosk_table td:first-child { flex: 1 1 100%; font-size: 17px; font-weight: 600; color: var(--v2-ink); }
    html.gwp_v2.gwp_v3 .gwp_kiosk_table td.gwp_kiosk_device_actions { flex: 1 1 100%; display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
}
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 .gwp_bc_card_main { min-width: 0; max-width: 100%; flex: 1 1 100%; }
    html.gwp_v2.gwp_v3 .gwp_bc_card_meta { flex-wrap: wrap; }
}
@media (max-width: 380px) {
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_topbuttonbar { padding-left: 6px !important; padding-right: 6px !important; gap: 4px !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_addtopbuttons { gap: 4px !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_appchooser .gwp_menubutton { width: 34px !important; height: 34px !important; line-height: 34px !important; font-size: 16px; }
    /* Below this width even the 40px label floor (768px rule above) is tight; let it go
       smaller still rather than force the arrows or Add button to move. */
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_date, html.gwp_v2.gwp_v3 .gwp_calheader #select_dateselect_caldate { min-width: 24px !important; }
    /* width without a matching height turns these circular arrows into ovals below 768px too —
       same class of bug as the eye/kebab circles, just a plain missing declaration this time
       rather than a flex-shrink cause. Fixed alongside matching the pill's height to the 34px
       icon buttons at this width (was 44px, unchanged since desktop). */
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate { height: 34px; }
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_date, html.gwp_v2.gwp_v3 .gwp_calheader #select_dateselect_caldate { height: 34px; }
    /* width alone doesn't win here: the 768px block above sets flex:0 0 22px, and flex-basis
       beats a plain width property for a flex item's main-axis size regardless of cascade order
       — this "width:18px" was silently never applying even before today's height fix, the arrows
       have been 22px (not 18px) wide under 380px this whole time. flex-basis must move too. */
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_calmleft, html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_calmright { width: 18px; height: 18px; flex: 0 0 18px; }
    html.gwp_v2.gwp_v3 .gwp_calheader #select_caldate > .select_date, html.gwp_v2.gwp_v3 .gwp_calheader #select_dateselect_caldate { font-size: 12.5px !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calviewwrap > .gwp_topbutton, html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calmorewrap > .gwp_topbutton { width: 34px !important; height: 34px !important; flex-shrink: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calviewwrap, html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calmorewrap { width: 34px; flex-shrink: 0; }
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_addtb.gwp_split, html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_main, html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_caret { height: 34px !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_main { width: 34px !important; padding: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_caret { width: 27px !important; }
    /* cancel this breakpoint's own 4px gap (768px block above cancels its 6px) */
    html.gwp_v2.gwp_v3 .gwp_calheader #gwp_calmorewrap { margin-left: -4px; }
}

/* Create buttons that are a single "+ Create ⌄" control (no separate main button): one whole pill, on every width */
html.gwp_v2.gwp_v3 #gwp_addtb.gwp_split[data-noprimary="true"] .gwp_split_caret { border-radius: 999px; width: auto; padding: 0 14px 0 16px; border-left-width: 1px; }
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_addtb.gwp_split[data-noprimary="true"] .gwp_split_caret { padding: 0 12px; gap: 4px; }
    /* Matched to Calendar's bar (8px/6px padding, 6px/4px gap) — user asked 2026-09-29 why
       Library's switcher had less room than Calendar's despite the same icon clusters; this
       12px padding + the default ~8px inter-cluster gap was the answer, never tightened down
       like Calendar's was earlier in this same session. */
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_topbuttonbar { padding: 10px 8px !important; gap: 6px !important; }
}
@media (max-width: 380px) {
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_topbuttonbar { padding-left: 6px !important; padding-right: 6px !important; gap: 4px !important; }
}
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .gwp_schedule_card, html.gwp_v2.gwp_v3 #gwp_content0.gwp_schedule_card { padding-left: 16px !important; padding-right: 16px !important; } }

/* Tablet widths: the calendar bar has more controls than fit beside a text "New Event" button */
@media (min-width: 769px) and (max-width: 1100px) {
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_split_main .t { display: none; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_topbuttonbar { padding-left: 16px; padding-right: 16px; gap: 8px; }
    html.gwp_v2.gwp_v3 .gwp_calheader .gwp_addtopbuttons { gap: 8px; }
}

/* =====================================================================================
   POLLS (design 3): the host screens (list, editor, modals) move onto the shared light palette through the page's own --polls-* variables.
   The presenter and join screens are shown on a projector, so they keep their dark look.
   ===================================================================================== */
html.gwp_v2.gwp_v3 body {
    --polls-bg: #fff; --polls-surface: #fff; --polls-surface2: #f3f3f0; --polls-border: #e7e7e3;
    --polls-text: #16151f; --polls-text-dim: #5e5e6a; --polls-text-muted: #8a8a96;
    --polls-primary: var(--gwp_tool, #4259cd); --polls-primary-glow: rgba(66, 89, 205, .16); --polls-accent: #6d5bd0;
    --polls-radius: 24px; --polls-radius-sm: 999px;
}
html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_presenter, html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_join_screen, html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_join_overlay {
    --polls-bg: #0e0f13; --polls-surface: #16171c; --polls-surface2: #1f2127; --polls-border: #2a2c34; --polls-text: #f4f4f6; --polls-text-dim: #a3a5b0; --polls-text-muted: #71737f; --polls-radius: 12px; --polls-radius-sm: 8px; --polls-primary: #6366f1; --polls-primary-glow: rgba(99, 102, 241, .3); --polls-accent: #8b5cf6;
}
html.gwp_v2.gwp_v3 #gwp_topbuttonbar.ov_topbuttonbar_override { display: flex !important; padding: 10px 32px !important; min-height: 64px !important; height: auto !important; background: transparent !important; border: 0 !important; box-sizing: border-box; }
html.gwp_v2.gwp_v3 .polls_dashboard, html.gwp_v2.gwp_v3 .polls_editor { min-height: 0; background: transparent; padding: 0 32px 64px; font-family: 'Figtree', system-ui, sans-serif; color: var(--polls-text); }
html.gwp_v2.gwp_v3 .polls_header { justify-content: flex-end; padding: 8px 0 16px; border: 0; background: none; }
html.gwp_v2.gwp_v3 .polls_header h1, html.gwp_v2.gwp_v3 .polls_ham_btn { display: none; }
html.gwp_v2.gwp_v3 .polls_header_actions { display: flex; gap: 10px; }
html.gwp_v2.gwp_v3 .polls_btn { height: 42px; padding: 0 18px; border: 1px solid var(--polls-border); border-radius: 999px; background: #fff; color: var(--polls-text); font: 600 14px 'Figtree', system-ui, sans-serif; box-shadow: none; transition: none; }
html.gwp_v2.gwp_v3 .polls_btn:hover { background: var(--polls-surface2); box-shadow: none; transform: none; }
html.gwp_v2.gwp_v3 .polls_btn_sm { height: 38px; padding: 0 16px; font-size: 13.5px; }
html.gwp_v2.gwp_v3 .polls_btn_primary { background: var(--polls-primary); border-color: var(--polls-primary); color: #fff; background-image: none; }
html.gwp_v2.gwp_v3 .polls_btn_primary:hover { background: var(--gwp_tool_hover, #3247b8); }
html.gwp_v2.gwp_v3 .polls_btn_success { background: #e3f3ec; border-color: transparent; color: #0b6b49; }
html.gwp_v2.gwp_v3 .polls_btn_accent { background: #ece9fb; border-color: transparent; color: #4a3aa8; }
html.gwp_v2.gwp_v3 .polls_btn_danger { background: #fff; border-color: #f0c9d6; color: #b3264f; }
html.gwp_v2.gwp_v3 .polls_btn_danger:hover { background: #fbe6ee; }
html.gwp_v2.gwp_v3 .polls_btn_warning { background: #fdf0d9; border-color: transparent; color: #8a5300; }
html.gwp_v2.gwp_v3 .polls_btn_ghost, html.gwp_v2.gwp_v3 .polls_btn_outline { background: #fff; }

html.gwp_v2.gwp_v3 .polls_group_tabs { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 0 20px; }
html.gwp_v2.gwp_v3 .polls_gtab { height: 38px; padding: 0 18px; border: 0; border-radius: 999px; background: var(--polls-surface2); color: var(--polls-text-dim); font: 600 14px 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .polls_gtab_active { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .polls_list { padding: 0; gap: 16px; }
html.gwp_v2.gwp_v3 .polls_card { padding: 24px 28px; border: 1px solid var(--polls-border); border-radius: 24px; background: #fff; box-shadow: none; }
html.gwp_v2.gwp_v3 .polls_card:hover { background: #fff; border-color: #cfcfca; box-shadow: none; transform: none; }
html.gwp_v2.gwp_v3 .polls_card_header h3 { font: 700 19px 'Figtree', system-ui, sans-serif; letter-spacing: -.01em; color: var(--polls-text); }
html.gwp_v2.gwp_v3 .polls_card_meta { color: var(--polls-text-muted); }
html.gwp_v2.gwp_v3 .polls_card_actions { border-top: 1px solid var(--polls-border); }
html.gwp_v2.gwp_v3 .polls_status { border: 0; border-radius: 999px; font: 700 11px 'Figtree', system-ui, sans-serif; letter-spacing: .06em; padding: 5px 12px; }
html.gwp_v2.gwp_v3 .polls_status_live { background: #e3f3ec; color: #0b6b49; }
html.gwp_v2.gwp_v3 .polls_status_draft { background: #ecebf1; color: #575468; }
html.gwp_v2.gwp_v3 .polls_status_closed { background: #fbe6ee; color: #8f1f4d; }

html.gwp_v2.gwp_v3 .polls_editor_header { padding: 8px 0 16px; border: 0; background: none; }
html.gwp_v2.gwp_v3 .polls_editor_header h2, html.gwp_v2.gwp_v3 .polls_editor_header h1 { font: 700 26px 'Figtree', system-ui, sans-serif; letter-spacing: -.02em; color: var(--polls-text); background: none; -webkit-text-fill-color: currentColor; }
html.gwp_v2.gwp_v3 .polls_access_code_bar { border: 1px solid var(--polls-border); border-radius: 20px; background: #fff; }
html.gwp_v2.gwp_v3 .polls_editor .polls_join_code, html.gwp_v2.gwp_v3 .polls_editor .polls_code_badge { color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .polls_input, html.gwp_v2.gwp_v3 .polls_textarea, html.gwp_v2.gwp_v3 .polls_option_input, html.gwp_v2.gwp_v3 .polls_dashboard select, html.gwp_v2.gwp_v3 .polls_editor select, html.gwp_v2.gwp_v3 .polls_modal_box input, html.gwp_v2.gwp_v3 .polls_modal_box select { border: 1px solid var(--polls-border); border-radius: 14px; background: #fff; color: var(--polls-text); font-family: 'Figtree', system-ui, sans-serif; box-shadow: none; }
html.gwp_v2.gwp_v3 .polls_input:focus, html.gwp_v2.gwp_v3 .polls_textarea:focus, html.gwp_v2.gwp_v3 .polls_option_input:focus { outline: 0; border-color: var(--polls-primary); box-shadow: 0 0 0 3px var(--polls-primary-glow); }
html.gwp_v2.gwp_v3 .polls_field_label, html.gwp_v2.gwp_v3 .polls_section_header { font: 700 11.5px 'Figtree', system-ui, sans-serif; letter-spacing: .08em; color: var(--polls-text-muted); }
html.gwp_v2.gwp_v3 .polls_section { border-color: var(--polls-border); }
html.gwp_v2.gwp_v3 .polls_question_card { border: 1px solid var(--polls-border); border-radius: 24px; background: #fff; box-shadow: none; }
html.gwp_v2.gwp_v3 .polls_question_number, html.gwp_v2.gwp_v3 .polls_option_letter { background: var(--polls-primary); color: #fff; }
html.gwp_v2.gwp_v3 .polls_type_option { border: 1px solid var(--polls-border); border-radius: 999px; background: #fff; color: var(--polls-text-dim); font-family: 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .polls_type_option:hover { background: var(--polls-surface2); }
html.gwp_v2.gwp_v3 .polls_type_option_active, html.gwp_v2.gwp_v3 .polls_type_option.active, html.gwp_v2.gwp_v3 .polls_type_option.selected { background: var(--polls-primary); border-color: var(--polls-primary); color: #fff; }
html.gwp_v2.gwp_v3 .polls_modal_overlay { background: rgba(24, 24, 36, .42); }
html.gwp_v2.gwp_v3 .polls_modal_box, html.gwp_v2.gwp_v3 .polls_confirm_box { border: 0; border-radius: 28px; background: #fff; box-shadow: 0 30px 80px rgba(20, 20, 36, .28); color: var(--polls-text); }
html.gwp_v2.gwp_v3 .polls_modal_header, html.gwp_v2.gwp_v3 .polls_modal_footer { border-color: var(--polls-border); }
html.gwp_v2.gwp_v3 .polls_toast { border-radius: 999px; font-family: 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .polls_back_link { color: var(--polls-text-dim); }
@media (max-width: 768px) {
    /* Was 12px against this same block's own 20px content padding one line below —
       the actual rule governing Polls' top bar (more specific than the generic
       .gwp_topbuttonbar rule, and !important), confirmed live as the real cause of
       the bar overhanging the content on the poll editor. */
    html.gwp_v2.gwp_v3 #gwp_topbuttonbar.ov_topbuttonbar_override { padding: 10px 20px !important; }
    html.gwp_v2.gwp_v3 .polls_dashboard, html.gwp_v2.gwp_v3 .polls_editor { padding: 0 20px 48px; }
    html.gwp_v2.gwp_v3 .polls_header { justify-content: flex-start; }
    html.gwp_v2.gwp_v3 .polls_card { padding: 20px; }
    html.gwp_v2.gwp_v3 .polls_card_actions { flex-wrap: wrap; gap: 8px; }
}
html.gwp_v2.gwp_v3 .polls_gtab { display: inline-flex; align-items: center; line-height: 1; }
html.gwp_v2.gwp_v3 .polls_header { padding: 0 0 12px; }
html.gwp_v2.gwp_v3 #gwp_frame:has(.polls_editor) #gwp_v2_head, html.gwp_v2.gwp_v3 #gwp_frame:has(.polls_presenter) #gwp_v2_head, html.gwp_v2.gwp_v3 #gwp_frame:has(.polls_presenter) #gwp_topbuttonbar { display: none !important; }
html.gwp_v2.gwp_v3 .polls_editor .polls_access_code_bar { margin: 0 0 20px; }
html.gwp_v2.gwp_v3 .polls_editor .polls_section { padding-left: 0; padding-right: 0; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .polls_editor .polls_access_code_bar { padding: 16px; } html.gwp_v2.gwp_v3 .polls_editor .polls_question_card { padding: 16px; } }

/* Presenter in the dark theme keeps its own dark buttons; the light host-screen button styling must not leak in */
html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_presenter .polls_btn, html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_join_overlay .polls_btn { background: var(--polls-surface); color: var(--polls-text); border-color: var(--polls-border); }
html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_presenter .polls_btn_primary { background: var(--polls-primary); border-color: var(--polls-primary); color: #fff; }
html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_presenter .polls_btn_success { background: #16a34a; border-color: #16a34a; color: #fff; }
html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_presenter .polls_btn_accent { background: var(--polls-accent); border-color: var(--polls-accent); color: #fff; }
html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_presenter .polls_btn_danger { background: transparent; border-color: #ef4444; color: #ef4444; }
html.gwp_v2.gwp_v3:not([data-poll-theme="light"]) .polls_presenter .polls_btn_warning { background: #eab308; border-color: #eab308; color: #1c1917; }

/* Polls: "New Poll" lives in the top bar's Create button; "New Group" sits on the same row as the group tabs */
html.gwp_v2.gwp_v3 .polls_dashboard { display: flex; flex-wrap: wrap; align-items: center; gap: 0 12px; }
html.gwp_v2.gwp_v3 .polls_dashboard > .polls_header { order: 2; margin-left: auto; padding: 0 0 20px; flex: 0 0 auto; }
html.gwp_v2.gwp_v3 .polls_dashboard > .polls_group_tabs { order: 1; flex: 1 1 auto; }
html.gwp_v2.gwp_v3 .polls_dashboard > .polls_list { order: 3; flex: 1 1 100%; }
html.gwp_v2.gwp_v3 .polls_header_actions .polls_btn_primary { display: none; }
html.gwp_v2.gwp_v3 .polls_theme_seg { background: var(--v3-soft); border: 0; }
html.gwp_v2.gwp_v3 .polls_theme_opt { font-family: 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .polls_theme_opt_on { background: #fff; color: var(--v2-ink); box-shadow: 0 1px 3px rgba(20, 20, 40, .14); }
html.gwp_v2.gwp_v3 .polls_dashboard > .polls_header { display: none; }

/* SweetAlert dialogs (confirmations, prompts) in the same shape as the other popups */
html.gwp_v2.gwp_v3 .swal2-popup { border-radius: 28px; padding: 28px 28px 24px; font-family: 'Figtree', system-ui, sans-serif; box-shadow: 0 30px 80px rgba(20, 20, 36, .28); }
html.gwp_v2.gwp_v3 .swal2-title { font-weight: 700; letter-spacing: -.02em; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .swal2-input, html.gwp_v2.gwp_v3 .swal2-textarea { border: 1px solid var(--v2-line); border-radius: 14px; box-shadow: none; font-family: inherit; }
html.gwp_v2.gwp_v3 .swal2-styled { border-radius: 999px !important; height: 44px; padding: 0 24px !important; font-family: inherit; font-weight: 600; box-shadow: none !important; }
html.gwp_v2.gwp_v3 .swal2-styled.swal2-confirm { background-color: var(--gwp_tool, #4259cd) !important; }
html.gwp_v2.gwp_v3 .swal2-styled.swal2-cancel { background-color: var(--v3-soft) !important; color: var(--v2-ink) !important; }

/* Tickets: the scan and back buttons are icon-only, so they are proper 44px circles with the icon centred (they were a padded pill with an inline icon) */
html.gwp_v2.gwp_v3 #gwp_tk_btn_scan, html.gwp_v2.gwp_v3 #gwp_tk_btn_back { width: 44px; padding: 0; gap: 0; align-items: center; justify-content: center; }
html.gwp_v2.gwp_v3 #gwp_tk_btn_scan:not([style*="display: none"]):not([style*="display:none"]), html.gwp_v2.gwp_v3 #gwp_tk_btn_back:not([style*="display: none"]):not([style*="display:none"]) { display: inline-flex !important; }
html.gwp_v2.gwp_v3 #gwp_tk_btn_scan .gwp_itopbutton, html.gwp_v2.gwp_v3 #gwp_tk_btn_back .gwp_itopbutton { margin: 0; padding: 0; line-height: 1; font-size: 20px; display: block; }
html.gwp_v2.gwp_v3 #gwp_tk_btns { display: inline-flex; align-items: center; gap: 8px; margin-right: 8px; }

/* ---------- Text lines up with the page title and top bar: no inset on list rows ---------- */
html.gwp_v2.gwp_v3 .gwp_members_list_header, html.gwp_v2.gwp_v3 .gwp_members_item { padding-left: 0; padding-right: 0; }
/* Schedules stay as cards (clear where each one starts and ends); the page heading is indented to line up with the text inside the cards */
html.gwp_v2.gwp_v3 .gwp_schedule_card, html.gwp_v2.gwp_v3 #gwp_content0.gwp_schedule_card { background: #fff; border: 1px solid var(--v2-line); border-radius: 20px; margin: 0 0 16px; padding: 14px 20px 18px !important; box-shadow: 0 1px 2px rgba(20, 20, 40, .04); }
html.gwp_v2.gwp_v3 .gwp_schedule_card:hover { background: #fff; box-shadow: 0 4px 16px rgba(20, 20, 40, .08); }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedule_title_row { border-bottom: 0; padding-top: 10px; }
html.gwp_v2.gwp_v3 .gwp_members_col_check { justify-content: flex-start; padding-left: 0; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_h3 { font-family: 'Figtree', system-ui, sans-serif; font-weight: 700; letter-spacing: -.01em; }
html.gwp_v2.gwp_v3 .gwp_members_col_check input[type="checkbox"] { margin-left: 0; }

/* Card pages: the card edges stay on the shared 32px edge, and the text inside the cards plus the page heading sit at 45px, level with the hamburger's three lines */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 #gwp_frame:has(.gwp_schedule_card, .gwp_cur_card, .gwp_groups_card, .gwp_so_card, .gwp_settingframe, .gwp_taxp_card) #gwp_v2_head.v2_generic { padding-left: 45px; }
    html.gwp_v2.gwp_v3 .gwp_schedule_card, html.gwp_v2.gwp_v3 #gwp_content0.gwp_schedule_card { padding-left: 12px !important; padding-right: 12px !important; }
    html.gwp_v2.gwp_v3 .gwp_groups_grid { margin-left: -4px; margin-right: -4px; }
    html.gwp_v2.gwp_v3 .gwp_groups_card { padding-left: 13px; padding-right: 13px; }
    html.gwp_v2.gwp_v3 .gwp_taxp_card { padding-left: 13px; padding-right: 13px; }
    html.gwp_v2.gwp_v3 .gwp_settingframe { padding-left: 12px; padding-right: 12px; }
    html.gwp_v2.gwp_v3 .gwp_cur_card_body { padding-left: 13px; padding-right: 13px; }
}
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_frame:has(.gwp_schedule_card, .gwp_cur_card, .gwp_groups_card, .gwp_so_card, .gwp_settingframe, .gwp_taxp_card) #gwp_v2_head.v2_generic { padding-left: 38px; }
}

/* Member avatars whose saved colour is white (or nearly) would show white initials on white: give them a readable tint instead */
html.gwp_v2.gwp_v3 .gwp_members_avatar[style*="background:#ffffff"], html.gwp_v2.gwp_v3 .gwp_members_avatar[style*="background: #ffffff"], html.gwp_v2.gwp_v3 .gwp_members_avatar[style*="background:#fff;"], html.gwp_v2.gwp_v3 .gwp_members_avatar[style*="background:white"], html.gwp_v2.gwp_v3 .gwp_members_avatar[style*="background: rgb(255, 255, 255)"] { background: var(--gwp_tool_tint, #eaedfa) !important; color: var(--gwp_tool_text, #2e43ae) !important; }
/* Type badges saved with white text (the light blue "Member" one) would be white on pale blue */
html.gwp_v2.gwp_v3 .gwp_members_type_badge[style*="color:#ffffff"], html.gwp_v2.gwp_v3 .gwp_members_type_badge[style*="color: #ffffff"], html.gwp_v2.gwp_v3 .gwp_members_type_badge[style*="color:#fff;"], html.gwp_v2.gwp_v3 .gwp_members_type_badge[style*="color:white"] { color: #1e40af !important; }

/* =====================================================================================
   SCHEDULES LIST: card, actions, page chooser, filter
   ===================================================================================== */
/* card: one border, no inner hairlines, no empty gap under the title */
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedule_title_row { border: 0; padding-top: 4px; align-items: center; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_more_buttonwrap { border: 0; padding: 4px 0 0; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedule_tags:empty { display: none; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedule_tags { display: flex; flex-wrap: wrap; gap: 8px; padding: 6px 0 12px; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedule_tags > div { margin: 0; }
html.gwp_v2.gwp_v3 .gwp_itemcounttext { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 999px; background: var(--v3-soft); color: var(--v2-ink); font: 600 12.5px 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_sched_preview_clip { max-height: 190px; }
html.gwp_v2.gwp_v3 .gwp_schedule_card [class*="gwp_schedule_"][style*="border"], html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedulewrap { border-top: 0; border-bottom: 0; }
/* the title opens the schedule */
html.gwp_v2.gwp_v3 .gwp_sched_open[role="button"] { cursor: pointer; }
html.gwp_v2.gwp_v3 .gwp_sched_open[role="button"]:hover { color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_sched_open:focus-visible { outline: 2px solid var(--gwp_tool, #4259cd); outline-offset: 3px; border-radius: 6px; }
/* ⋮ is a real button now */
html.gwp_v2.gwp_v3 .gwp_schedule_card button.gwp_nav_icon_btn { border: 0; padding: 0; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; background: var(--v3-soft); color: var(--v2-ink); font-size: 18px; }
html.gwp_v2.gwp_v3 .gwp_schedule_card button.gwp_nav_icon_btn:focus-visible { outline: 2px solid var(--gwp_tool, #4259cd); outline-offset: 2px; }
html.gwp_v2.gwp_v3 .gwp_nav_dropdown { border: 1px solid var(--v2-line); border-radius: 16px; box-shadow: 0 16px 40px rgba(20, 20, 40, .16); padding: 6px; min-width: 190px; }
html.gwp_v2.gwp_v3 .gwp_nav_dropdown > a, html.gwp_v2.gwp_v3 .gwp_nav_dropdown > .gwp_nav_menu_item, html.gwp_v2.gwp_v3 .gwp_nav_dropdown > div { border-radius: 10px; padding: 10px 12px; font: 500 14px 'Figtree', system-ui, sans-serif; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_nav_dropdown > .gwp_nav_menu_item:hover, html.gwp_v2.gwp_v3 .gwp_nav_dropdown > a:hover { background: var(--v3-soft); }
html.gwp_v2.gwp_v3 .gwp_nav_dropdown > .gwp_nav_menu_danger, html.gwp_v2.gwp_v3 .gwp_nav_dropdown > .gwp_nav_menu_danger i { color: #b3264f; }
/* page chooser: same pill as the page switchers */
html.gwp_v2.gwp_v3 .select_paginateframe { display: inline-block; }
html.gwp_v2.gwp_v3 .select_paginate_current { display: inline-flex; align-items: center; gap: 2px; height: 44px; box-sizing: border-box; padding: 0 8px; border: 0; border-radius: 999px; background: var(--v3-soft); box-shadow: none; cursor: pointer; }
html.gwp_v2.gwp_v3 .select_paginate_current:hover { background: #ebebe6; border: 0; }
html.gwp_v2.gwp_v3 .select_paginate_label { min-width: 26px; text-align: center; font: 700 15px 'Figtree', system-ui, sans-serif; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .select_paginate_arrow { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; color: var(--v2-muted); font-size: 14px; }
html.gwp_v2.gwp_v3 .select_paginate_arrow:not(.select_paginate_arrow_disabled):hover { background: #fff; color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .select_paginate_panel { margin-top: 8px; padding: 6px; border: 1px solid var(--v2-line); border-radius: 16px; background: #fff; box-shadow: 0 16px 40px rgba(20, 20, 40, .16); }
html.gwp_v2.gwp_v3 .select_paginate_panel > div { border-radius: 10px; font: 600 14px 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .select_paginate_item_active { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
/* Filter: a neutral pill like the other bar controls */
html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_btn { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 18px; border: 0; border-radius: 999px; background: var(--v3-soft); color: var(--v2-ink); font: 600 14px 'Figtree', system-ui, sans-serif; box-shadow: none; }
html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_btn:hover { background: #ebebe6; }
html.gwp_v2.gwp_v3 #gwp_navigation .gwp_nav_btn i { color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedule_title_row { margin-bottom: 0; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedule_tags { margin: 0; padding: 6px 0 12px; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedulewrap { margin-top: 0; padding-top: 0; }

/* =====================================================================================
   POPUPS, second pass: one header, one tab style, one footer across every popup.
   Colours, shapes and type only: layout, display, z-index, mobile tab dropdowns and all behaviour are untouched.
   ===================================================================================== */
/* header: title + a hairline (the thick blue rule is gone) */
html.gwp_v2.gwp_v3 .gwp_popup hr.gwp_popuptitlehr { border: 0; height: 1px; margin: 12px 0 0; background: var(--v2-line); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader { border-bottom-color: var(--v2-line); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popuptitle, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popuptitlealt, html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_title, html.gwp_v2.gwp_v3 .gwp_popup .gwp_vevt_title, html.gwp_v2.gwp_v3 .gwp_popup .gwp_sharetitle, html.gwp_v2.gwp_v3 .gwp_popup .gwp_emediatitle { font-family: 'Figtree', system-ui, sans-serif; font-size: 24px; font-weight: 700; letter-spacing: -.02em; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_popup a.gwp_close { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; background: var(--v3-soft); color: var(--v2-muted); font-size: 20px; line-height: 1; text-decoration: none; }
html.gwp_v2.gwp_v3 .gwp_popup a.gwp_close:hover { background: #ebebe6; color: var(--v2-ink); }
/* tabs: pills, selected one tinted */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabs, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabsalt { border-bottom: 0; gap: 6px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tab, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_taba, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabselected, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabaselected {
    border: 0; border-radius: 999px; padding: 8px 16px; background: transparent; box-shadow: none; color: var(--v2-muted); font: 600 14px 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tab:hover, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_taba:hover { background: var(--v3-soft); color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabselected, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabaselected, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tab.gwp_active, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tab[class*="active"], html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_taba[class*="active"] { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); border: 0; }
/* footer: the same pill buttons everywhere */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_close_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_save_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_delete_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_btn, html.gwp_v2.gwp_v3 .gwp_popup .gwp_msgcompose_btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; padding: 0 22px; border-radius: 999px; font: 600 14px 'Figtree', system-ui, sans-serif; text-transform: none; letter-spacing: 0; text-decoration: none; cursor: pointer; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_close_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn_secondary { background: var(--v3-soft); border: 0; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_close_button:hover, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn_secondary:hover { background: #ebebe6; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_save_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn_save, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_btn_primary { background: var(--gwp_tool, #4259cd); border: 1px solid var(--gwp_tool, #4259cd); color: #fff; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_save_button:hover, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn_save:hover { background: var(--gwp_tool_hover, #3247b8); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_delete_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn_delete { background: #fbe6ee; border: 0; color: #b3264f; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_delete_button:hover, html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_btn_delete:hover { background: #f6d2df; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_submitbox { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
/* fields that were underline-only or square inside popups */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_activity_input.select_input, html.gwp_v2.gwp_v3 .gwp_popup .gwp_newtaxinput.select_input, html.gwp_v2.gwp_v3 .gwp_popup .gwp_mmember_messagesubject.select_input, html.gwp_v2.gwp_v3 .gwp_popup .select_singlesearch, html.gwp_v2.gwp_v3 .gwp_popup .select_esearch, html.gwp_v2.gwp_v3 .gwp_popup .gwp_icsnumberinput {
    border: 1px solid var(--v2-line); border-radius: 12px; background: #fff; padding: 9px 14px; box-shadow: none; font-family: 'Figtree', system-ui, sans-serif; color: var(--v2-ink); box-sizing: border-box; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_activity_input.select_input:focus, html.gwp_v2.gwp_v3 .gwp_popup .gwp_newtaxinput.select_input:focus, html.gwp_v2.gwp_v3 .gwp_popup .gwp_mmember_messagesubject.select_input:focus { outline: 0; border-color: var(--gwp_tool, #4259cd); box-shadow: 0 0 0 3px var(--gwp_tool_tint, rgba(66, 89, 205, .14)); }
/* attendance popup quick buttons and date arrows */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_att_quick_btn { min-height: 38px; padding: 0 16px; border: 0; border-radius: 999px; background: var(--v3-soft); color: var(--v2-ink); font: 600 13.5px 'Figtree', system-ui, sans-serif; cursor: pointer; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_att_quick_btn:hover { background: #ebebe6; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_att_date_nav { width: 34px; height: 34px; border: 0; border-radius: 50%; background: var(--v3-soft); color: var(--v2-ink); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }

/* POPUPS, third pass: footer alignment, type-picker tiles, media insert button */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_submitbox > hr, html.gwp_v2.gwp_v3 .gwp_popup .gwp_submitbox > .gwp_hr { display: none; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons .gwp_close_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_submitbox button { margin: 0; text-transform: none; }
html.gwp_v2.gwp_v3 .gwp_popup #gwp_insertmedialink { background: var(--gwp_tool, #4259cd); color: #fff; border: 1px solid var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 .gwp_popup #gwp_insertmedialink:hover { background: var(--gwp_tool_hover, #3247b8); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_ipelements { gap: 12px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_ipelement { border: 1px solid var(--v2-line); border-radius: 16px; background: #fff; min-height: 96px; padding: 18px 8px 14px; font-family: 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_ipelement:hover { background: var(--gwp_tool_tint, #eaedfa); border-color: var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_ipicon { width: 44px; height: 44px; border-radius: 999px; background: var(--v3-soft); display: flex; align-items: center; justify-content: center; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_ipelement:hover .gwp_ipicon { background: #fff; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_ipicon i { font-size: 24px; color: var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_iptitle { font-weight: 600; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_upload_btn { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 22px; border: 0; border-radius: 999px; background: var(--gwp_tool, #4259cd); color: #fff; font: 600 14px 'Figtree', system-ui, sans-serif; cursor: pointer; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_drop_label { border-radius: 16px; }

/* POPUPS, fourth pass: compact picker modals, tabs alignment, status/save sizing, location + add fields */
html.gwp_v2.gwp_v3 #gwp_addtolib > .gwp_popupbody, html.gwp_v2.gwp_v3 #gwp_adddocuments > .gwp_popupbody, html.gwp_v2.gwp_v3 #gwp_ticketconfig > .gwp_popupbody { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: min(560px, calc(100vw - 24px)); height: auto; max-height: calc(100vh - 24px); margin: 0; padding: 22px 24px 18px; box-sizing: border-box; overflow-y: auto; }
html.gwp_v2.gwp_v3 #gwp_adddocuments > .gwp_popupbody { width: min(440px, calc(100vw - 24px)); }
html.gwp_v2.gwp_v3 #gwp_ticketconfig > .gwp_popupbody { width: min(720px, calc(100vw - 24px)); }
html.gwp_v2.gwp_v3 #gwp_ticketconfig_popup_tabs { background: transparent; border-radius: 0; padding: 0; margin-left: 16px; }
html.gwp_v2.gwp_v3 #gwp_ticketconfig_popupcontent { min-height: 460px; }
html.gwp_v2.gwp_v3 #gwp_addtolib .gwp_popupbuttons, html.gwp_v2.gwp_v3 #gwp_adddocuments .gwp_popupbuttons, html.gwp_v2.gwp_v3 #gwp_ticketconfig .gwp_popupbuttons { margin-top: 4px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader .gwp_popup_tabs { margin: 12px 0 0; padding: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabs .gwp_popup_tab:first-child, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popup_tabs .gwp_popup_tabselected:first-child { margin-left: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_poststatus { display: inline-flex; align-items: center; margin: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_poststatus .select_singleframe, html.gwp_v2.gwp_v3 .gwp_popup .gwp_poststatus .select_singledropdown { min-height: 42px; box-sizing: border-box; border-radius: 999px; padding-top: 0; padding-bottom: 0; display: flex; align-items: center; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_save_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_locationdata .gwp_save_button { margin-right: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_addressfield.select_input { display: block; border: 1px solid var(--v2-line); border-radius: 12px; background: #fff; padding: 10px 14px; box-sizing: border-box; font-family: 'Figtree', system-ui, sans-serif; color: var(--v2-ink); margin-bottom: 8px; min-height: 42px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_addressfield.select_input:empty:before { content: attr(data-text); color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_addressfield.select_input[contenteditable="true"]:focus { outline: 0; border-color: var(--gwp_tool, #4259cd); box-shadow: 0 0 0 3px var(--gwp_tool_tint, rgba(66, 89, 205, .14)); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_locationdata .gwp_save_button { display: inline-flex; margin: 6px 8px 0 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_add { width: 42px; height: 42px; border: 0; border-radius: 999px; background: var(--v3-soft); color: var(--v2-ink); flex: 0 0 42px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_add:hover { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); border: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_roombox, html.gwp_v2.gwp_v3 .gwp_popup .gwp_seriesbox, html.gwp_v2.gwp_v3 .gwp_popup .gwp_topicbox, html.gwp_v2.gwp_v3 .gwp_popup .gwp_categoriesbox, html.gwp_v2.gwp_v3 .gwp_popup .gwp_projectsbox { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_roombox > .gwp_taxonomy_input { flex: 1 1 0; min-width: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_addtaxbox { flex: 1 0 100%; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_addtaxbutton { min-height: 42px; display: inline-flex; align-items: center; padding: 0 18px; border-radius: 999px; }

/* POPUPS, fifth pass: footer breathing room, tab text aligned with title */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons { padding: 12px 0 18px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbody > .gwp_popupcontent { min-height: 0; overflow-y: auto; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader > .gwp_popup_tabs { margin-left: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader:has(> .gwp_popup_tabs) > .gwp_popuptitle { padding-left: 16px; }
@media (max-width: 700px) { html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader.gwp_has_mobilenav:has(> .gwp_popup_tabs) > .gwp_popuptitle { padding-left: 0; } }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_submitbox > .gwp_evt_actionbar { flex: 1 1 100%; min-width: 0; }

/* SCHEDULE EDITOR POPUP: row cards, calm buttons, mobile fit */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_actions:empty { display: none; }
@media (max-width: 700px) { html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader.gwp_has_mobilenav .gwp_dbtabs_mobilenav { margin-right: 50px; } }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupcontent .gwp_save_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupcontent .gwp_stoggle { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 38px; padding: 0 16px; border: 0; border-radius: 999px; background: var(--v3-soft); color: var(--v2-ink); font: 600 13.5px 'Figtree', system-ui, sans-serif; box-shadow: none; text-decoration: none; margin: 0; cursor: pointer; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupcontent .gwp_save_button:hover, html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupcontent .gwp_stoggle:hover { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); filter: none; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule { list-style: none; margin: 0 0 10px; padding: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_li { list-style: none; margin: 0; padding: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_formcontainer { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; column-gap: 10px; align-items: start; box-sizing: border-box; width: 100%; padding: 12px; background: #fff; border: 1px solid var(--v2-line); border-radius: 16px; box-shadow: none; margin: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_formcontainer::after { display: none; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_dragicon { float: none; margin: 0; padding-top: 9px; width: 24px; min-width: 24px; justify-content: center; color: var(--v2-muted); cursor: grab; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_fieldcontainer { float: none; width: auto; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_fieldcontainer > .gwp_save_button { margin: 0 !important; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_fieldcontainer > .gwp_scheduler_extrafields, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_fieldcontainer > .gwp_litem { flex: 1 1 100%; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule { border: 0; background: none; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_time, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_activity { margin: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_activity { flex: 1 1 240px; min-width: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_activityinput { display: block; width: 100%; box-sizing: border-box; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_removecontainer { float: none; margin: 0; display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_removecontainer .gwp_save_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_fieldcontainer > div > .gwp_save_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_itemmedia .gwp_save_button[onclick*="viewmedia"] { width: 38px; min-width: 38px; padding: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_removecontainer #gwp_remove_button:hover, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_removecontainer [onclick*="remove"]:hover { background: #fbe6ee; color: #b3264f; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrafields { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--v2-line); display: grid; gap: 8px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrafields > * { min-width: 0; margin: 0; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_notes textarea { border: 1px solid var(--v2-line); border-radius: 12px; padding: 10px 14px; font-family: 'Figtree', system-ui, sans-serif; box-sizing: border-box; }
@media (max-width: 700px) {
  html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_formcontainer { grid-template-columns: auto minmax(0, 1fr); padding: 10px; row-gap: 8px; }
  html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_removecontainer { grid-column: 1 / -1; grid-row: 2; justify-content: flex-end; padding-top: 8px; border-top: 1px solid var(--v2-line); }
  html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_dragicon { width: 20px; min-width: 20px; }
}
@media (min-width: 701px) { html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_activity { flex: 1 1 200px; max-width: calc(100% - 300px); } }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_activity { display: flex; align-items: center; gap: 8px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_activity > .gwp_save_button { margin: 0 !important; flex: 0 0 38px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_activityinput { flex: 1 1 0; min-width: 0; width: auto; }
@media (max-width: 700px) { html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_mobilenav.gwp_lib_type_dropdown { width: calc(100% - 50px); box-sizing: border-box; } }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .select_multidropdown, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .select_tagbox, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .select_singledropdown, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .select_inputframe { border-radius: 12px; min-height: 40px; box-sizing: border-box; border: 1px solid var(--v2-line); background: #fff; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_leaderinput, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_usersinput, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .select_tagframe, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .select_multiframe { width: 100%; box-sizing: border-box; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrarow { display: flex; flex-wrap: wrap; gap: 8px; }
@media (min-width: 701px) {
  html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrafields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrafields > .gwp_scheduler_notes, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrafields > .gwp_scheduler_extrarow, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrafields > .gwp_scheduler_itemtags, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrafields > .gwp_scheduler_itemmedia { grid-column: 1 / -1; }
}
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_itemmedia { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_extrafields[style*="block"] { display: grid !important; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_itemmedia { padding: 0; margin: 0; }

/* publish-details footer: full-width, flush to the popup's rounded bottom edge */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_submitbox > .gwp_evt_pubfooter { flex: 1 1 100%; min-width: 0; box-sizing: border-box; margin: 14px -20px 0; padding: 12px 24px; background: var(--v3-soft, #f4f4f0); border-top: 1px solid var(--v2-line); border-radius: 0 0 20px 20px; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons:has(.gwp_evt_pubfooter[style*="block"]) { padding-bottom: 0; }
@media (max-width: 700px) { html.gwp_v2.gwp_v3 .gwp_popup .gwp_submitbox > .gwp_evt_pubfooter { margin: 12px -10px 0; padding: 10px 16px; } }
/* Schedule tab: rows keep a tinted card (as before) with white fields; Add is the tool-colour action */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_formcontainer { background: var(--v3-soft, #f4f4f0); }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_bottombuttons > .gwp_save_button:first-child { background: var(--gwp_tool, #4259cd); color: #fff; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_bottombuttons > .gwp_save_button:first-child:hover { background: var(--gwp_tool_hover, #3247b8); color: #fff; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_removecontainer .gwp_save_button, html.gwp_v2.gwp_v3 .gwp_popup .gwp_schedule .gwp_scheduler_activity > .gwp_save_button { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }

/* GUTTERS: every page uses the same 32px side margin (20px on mobile) and the same head-to-content rhythm, Library included */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_topbuttonbar { padding: 10px 32px; gap: 16px; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_v2_head { padding: 28px 32px 4px; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_lib_view { padding: 24px 32px 96px; }
}
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons .gwp_save_button[id*="delete"] { background: #fbe6ee; border-color: transparent; color: #b3264f; }
html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupbuttons .gwp_save_button[id*="delete"]:hover { background: #f6d2df; }

/* PAGE TITLES: the heading text starts level with the hamburger's three lines on every page */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 #gwp_frame #gwp_v2_head, html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) #gwp_v2_head { padding-left: 45px; }
    html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_mediaframe) .gwp_lib_view { padding-left: 32px; }
}
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 #gwp_frame #gwp_v2_head, html.gwp_v2.gwp_v3 #gwp_frame:has(.gwp_schedule_card, .gwp_cur_card, .gwp_groups_card, .gwp_so_card, .gwp_settingframe, .gwp_taxp_card) #gwp_v2_head.v2_generic { padding-left: 23px; }
}

/* CALENDAR EXPORT (ICS) popup: a clean stacked form that fits the phone */
html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsdetails { background: var(--v3-soft, #f4f4f0); border-radius: 16px; padding: 14px; max-width: 640px; box-sizing: border-box; }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsdetails > div { display: grid; gap: 10px; }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsdetails > div + div { margin-top: 10px; }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_utaxonomy { margin: 0; min-width: 0; }
html.gwp_v2.gwp_v3 #gwp_ics #gwp_titleics { display: block; width: 100%; min-height: 42px; box-sizing: border-box; white-space: normal; overflow-wrap: anywhere; }
html.gwp_v2.gwp_v3 #gwp_ics #gwp_titleics:empty:before { content: attr(data-text); color: var(--v2-muted); }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsinfo { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; line-height: 1.4; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsinfo i { flex: 0 0 auto; margin-top: 1px; }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsnumberinput, html.gwp_v2.gwp_v3 #gwp_ics .gwp_icstax, html.gwp_v2.gwp_v3 #gwp_ics .select_multiframe { width: 100%; box-sizing: border-box; }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsnumberinput { min-height: 42px; border: 1px solid var(--v2-line); border-radius: 12px; padding: 0 14px; background: #fff; font-family: 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_bottombuttons { margin-left: 0; display: block; }
html.gwp_v2.gwp_v3 #gwp_ics #topics-add-toggle { margin-top: 12px; }
@media (min-width: 701px) { html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsdetails > div:first-child { grid-template-columns: repeat(2, minmax(0, 1fr)); } html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsdetails #gwp_titleics, html.gwp_v2.gwp_v3 #gwp_ics .gwp_icsdetails .gwp_icsinfo { grid-column: 1 / -1; } }
html.gwp_v2.gwp_v3 #gwp_ics .gwp_utaxonomy:has(> .select_multiframe:empty) { display: none; }

/* TAG PILLS: topic, series, item-count AND duration pills all share one shape, height
   and baseline. .gwp_durationwrap/.gwp_durationtext added here 2026-09-30 — the
   activity item pages' own badge rule further down duplicated this shape with a
   competing (non-!important) declaration that only .gwp_durationwrap ever actually
   used, since topic/series always won the specificity fight via THIS rule instead —
   so Duration pills were visibly a different size (8px/14px padding, auto height) from
   Topic/Series pills (fixed 28px height, 12px padding) on the activity item pages. */
html.gwp_v2.gwp_v3 .gwp_taxonomies { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
html.gwp_v2.gwp_v3 .gwp_taxonomies > .gwp_topicwrap, html.gwp_v2.gwp_v3 .gwp_taxonomies > .gwp_serieswrap, html.gwp_v2.gwp_v3 .gwp_taxonomies > .gwp_itemcountwrap, html.gwp_v2.gwp_v3 .gwp_taxonomies > .gwp_durationwrap { display: inline-flex !important; align-items: center; margin: 0 !important; padding: 0 !important; background: none !important; border: 0 !important; line-height: 1; }
html.gwp_v2.gwp_v3 .gwp_taxonomies .gwp_topictext, html.gwp_v2.gwp_v3 .gwp_taxonomies .gwp_seriestext, html.gwp_v2.gwp_v3 .gwp_taxonomies .gwp_itemcounttext, html.gwp_v2.gwp_v3 .gwp_taxonomies .gwp_durationtext { display: inline-flex; align-items: center; gap: 6px; box-sizing: border-box; height: 28px; padding: 0 12px; border-radius: 999px; background: var(--v3-soft, #f4f4f0); color: var(--v2-ink); font: 600 12.5px/1 'Figtree', system-ui, sans-serif; white-space: nowrap; }
html.gwp_v2.gwp_v3 .gwp_taxonomies .gwp_topictext i, html.gwp_v2.gwp_v3 .gwp_taxonomies .gwp_seriestext i, html.gwp_v2.gwp_v3 .gwp_taxonomies .gwp_itemcounttext i, html.gwp_v2.gwp_v3 .gwp_taxonomies .gwp_durationtext i { font-size: 15px; line-height: 1; display: inline-flex; align-items: center; }

/* CONTENT LINES UP WITH THE TITLE: list rows keep their hairlines on the 32px page edge, but their text starts level with the title / hamburger lines */
@media (min-width: 769px) {
    html.gwp_v2.gwp_v3 .gwp_blog_card, html.gwp_v2.gwp_v3 .gwp_tk_event_card, html.gwp_v2.gwp_v3 .gwp_bc_card { padding-left: 13px !important; padding-right: 13px !important; }
    html.gwp_v2.gwp_v3 .gwp_taxp_switcher_count, html.gwp_v2.gwp_v3 .gwp_lib_recent_header { padding-left: 13px; }
}
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 .gwp_blog_card, html.gwp_v2.gwp_v3 .gwp_tk_event_card, html.gwp_v2.gwp_v3 .gwp_bc_card { padding-left: 3px !important; padding-right: 3px !important; }
    html.gwp_v2.gwp_v3 .gwp_taxp_switcher_count, html.gwp_v2.gwp_v3 .gwp_lib_recent_header { padding-left: 3px; }
}
html.gwp_v2.gwp_v3 #gwp_userframe #gwp_taxp_total { padding-left: 13px !important; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 #gwp_userframe #gwp_taxp_total { padding-left: 3px !important; } html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card { padding-left: 3px !important; padding-right: 3px !important; } }
@media (min-width: 769px) { html.gwp_v2.gwp_v3 .gwp_members_item, html.gwp_v2.gwp_v3 .gwp_members_list_header, html.gwp_v2.gwp_v3 .gwp_dbitem, html.gwp_v2.gwp_v3 .gwp_exp_panel { padding-left: 13px !important; padding-right: 13px !important; } }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .gwp_members_item, html.gwp_v2.gwp_v3 .gwp_members_list_header, html.gwp_v2.gwp_v3 .gwp_dbitem, html.gwp_v2.gwp_v3 .gwp_exp_panel { padding-left: 3px !important; padding-right: 3px !important; } }

/* BLOG/NEWS: card grid */
html.gwp_v2.gwp_v3 #gwp_aframe.gwp_blogs_page { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 20px; align-items: start; }
html.gwp_v2.gwp_v3 #gwp_aframe.gwp_blogs_page > .gwp_getpages, html.gwp_v2.gwp_v3 #gwp_aframe.gwp_blogs_page > #gwp_content { grid-column: 1 / -1; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card { display: flex; flex-direction: column; gap: 12px; min-width: 0; margin: 0; padding: 20px 20px 16px !important; background: var(--v3-soft); border: 0; border-radius: 20px; box-shadow: none; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card:has([id^="gwp_shadow"][style*="block"]) { grid-column: 1 / -1; background: #fff; box-shadow: inset 0 0 0 2px var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_header { display: flex; flex-direction: column; gap: 10px; padding: 0 44px 0 0 !important; cursor: pointer; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_top { display: flex; align-items: center; gap: 10px; min-height: 36px; margin-right: -44px; padding-right: 44px; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_date { color: var(--v2-muted); font-size: 13px; font-variant-numeric: tabular-nums; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_title_row { display: flex; align-items: flex-start; gap: 8px; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card .gwp_blog_card_title { margin: 0; font-size: 21px; line-height: 1.25; font-weight: 600; letter-spacing: -.015em; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_toggle { margin-top: 4px; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_excerpt { margin: 0; color: var(--v2-muted); font-size: 15px; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_excerpt:empty { display: none; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card:has([id^="gwp_shadow"][style*="block"]) .gwp_blog_card_excerpt { display: none; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_actions { top: 14px; right: 14px; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_tags { display: flex; flex-wrap: wrap; gap: 8px; padding: 0; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_tags:empty { display: none; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_tag { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; border-radius: 999px; background: #fff; color: var(--v2-ink); font: 600 12.5px/1 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_tag i { color: var(--gwp_tool, #4259cd); font-size: 14px; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_foot { display: flex; align-items: center; gap: 8px; margin-top: 2px; padding-top: 12px; border-top: 1px solid var(--v2-line); }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_author { color: var(--v2-muted); font-size: 13px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_more { margin-left: auto; height: 38px; padding: 0 18px; border: 0; border-radius: 999px; background: #fff; color: var(--v2-ink); font: 600 13.5px 'Figtree', system-ui, sans-serif; cursor: pointer; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_more:hover { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_editbar { border-top: 1px solid var(--v2-line); margin: 0; padding: 12px 0 0; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card { padding: 16px 16px 14px !important; } }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_header { align-items: stretch; justify-content: flex-start; text-align: left; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_top { margin-right: 0; padding-right: 0; justify-content: flex-start; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_title_row { width: 100%; justify-content: flex-start; padding: 0; margin: 0; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_title { flex: 0 1 auto; text-align: left; padding: 0; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_top { padding: 0; margin: 0; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_top .gwp_blog_status_badge { margin: 0; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card .gwp_blog_card_title { white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_author { display: flex; align-items: center; gap: 8px; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_av { width: 26px; height: 26px; flex: none; border-radius: 999px; display: grid; place-items: center; background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); font-size: 11px; font-weight: 700; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_authorname { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card .gwp_blog_card_actions .gwp_nav_icon_btn { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 999px; background: transparent; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card .gwp_blog_card_actions .gwp_nav_icon_btn:hover { background: var(--v3-soft-2, #ebebe6); }
html.gwp_v2.gwp_v3 #gwp_aframe [id^="gwp_blogtoggledown"] { display: none !important; }

/* BLOG POST reading page: clean sans */
html.gwp_v2.gwp_v3:has(.gwp_blog_post) body { background: var(--v3-soft, #f4f4f0); }
html.gwp_v2.gwp_v3 .gwp_blog_post { max-width: 760px; margin: 24px auto 64px; background: #fff; border: 0; border-radius: 24px; padding: clamp(24px, 5vw, 56px); font-family: 'Figtree', system-ui, sans-serif; box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_blog_post_header { text-align: left; margin: 0 0 14px; }
html.gwp_v2.gwp_v3 .gwp_blog_post_title { font-size: clamp(32px, 6vw, 46px); font-weight: 700; letter-spacing: -.025em; line-height: 1.12; color: var(--v2-ink); margin: 0 0 14px; text-wrap: balance; }
html.gwp_v2.gwp_v3 .gwp_blog_post_meta { justify-content: flex-start; gap: 16px; font: 500 14px 'Figtree', system-ui, sans-serif; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_blog_post_meta i { color: var(--gwp_tool, #4259cd); margin-right: 6px; }
html.gwp_v2.gwp_v3 .gwp_blog_post_tags { justify-content: flex-start; gap: 8px; margin-bottom: 28px; }
html.gwp_v2.gwp_v3 .gwp_blog_post_tags:empty { display: none; }
html.gwp_v2.gwp_v3 .gwp_blog_post .gwp_blog_tag { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; border-radius: 999px; background: var(--v3-soft, #f4f4f0); color: var(--v2-ink); font: 600 12.5px/1 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .gwp_blog_post .gwp_blog_tag i { color: var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 .gwp_blog_post [id^="gwp_shadow"] { display: block; max-width: 66ch; font-family: 'Figtree', system-ui, sans-serif; font-size: 18px; line-height: 1.7; color: #34343d; }
@media (max-width: 600px) { html.gwp_v2.gwp_v3 .gwp_blog_post { margin: 12px auto 40px; border-radius: 20px; } }
html.gwp_v2.gwp_v3:has(.gwp_blog_post), html.gwp_v2.gwp_v3:has(.gwp_blog_post) body, html.gwp_v2.gwp_v3:has(.gwp_blog_post) #gwp_frame, html.gwp_v2.gwp_v3:has(.gwp_blog_post) #gwp_bframe { background: var(--v3-soft, #f4f4f0) !important; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 article.gwp_blog_post { padding: 24px 20px !important; margin: 12px 12px 40px !important; max-width: none; } }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 article#gwp_content0.gwp_blog_post, html.gwp_v2.gwp_v3 article.gwp_blog_post[id^="gwp_content"] { padding: 24px 20px !important; margin: 12px 12px 40px !important; } }
html.gwp_v2.gwp_v3 .gwp_blog_post .gwp_blog_tag, html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_tag { color: var(--v2-ink) !important; background: var(--v3-soft, #f4f4f0) !important; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_tag { background: #fff !important; }

/* MOBILE POPUP TAB SWITCHER: always a full-width row under the title and the close/share buttons */
@media (max-width: 700px) {
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_titlerow { flex-wrap: wrap; align-items: center; row-gap: 10px; }
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_titlerow > .gwp_dbtabs_title { order: 1; flex: 1 1 0; min-width: 0; }
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_titlerow > .gwp_dbtabs_topright { order: 2; margin-left: auto; flex: 0 0 auto; }
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_titlerow > .gwp_dbtabs_mobilenav.gwp_lib_type_dropdown { order: 3; flex: 0 0 100% !important; width: 100% !important; max-width: 100% !important; margin: 0 !important; box-sizing: border-box; }
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_mobilenav .gwp_lib_type_current { width: 100%; box-sizing: border-box; }
}
@media (max-width: 700px) {
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader.gwp_has_mobilenav > .gwp_dbtabs_mobilenav { width: 100% !important; max-width: 100% !important; margin: 0 0 10px !important; flex: none !important; box-sizing: border-box; }
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_popupheader.gwp_has_mobilenav > .gwp_dbtabs_titlerow { min-height: 44px; }
}
@media (max-width: 700px) {
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_titlerow { padding-right: 0 !important; }
    html.gwp_v2.gwp_v3 .gwp_popup .gwp_dbtabs_titlerow > .gwp_dbtabs_title { padding-right: 8px; }
}
html.gwp_v2.gwp_v3 .gwp_popup .select_multidropdown, html.gwp_v2.gwp_v3 .gwp_popup .select_tagbox { border-radius: 12px; min-height: 40px; box-sizing: border-box; border: 1px solid var(--v2-line); background: #fff; font-family: 'Figtree', system-ui, sans-serif; }

/* BLOG/NEWS controls: status segments with counts, sort, count */
.gwp_blog_controls { display: none; }
html.gwp_v2.gwp_v3 .gwp_blog_controls { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 4px 13px 16px; }
html.gwp_v2.gwp_v3 .gwp_blog_seg { display: flex; gap: 4px; padding: 4px; border-radius: 999px; background: var(--v3-soft, #f4f4f0); }
html.gwp_v2.gwp_v3 .gwp_blog_seg button { display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 16px; border: 0; border-radius: 999px; background: transparent; color: var(--v2-muted); font: 600 14px 'Figtree', system-ui, sans-serif; cursor: pointer; }
html.gwp_v2.gwp_v3 .gwp_blog_seg button .n { font-size: 12px; padding: 1px 8px; border-radius: 999px; background: #ebebe6; font-variant-numeric: tabular-nums; }
html.gwp_v2.gwp_v3 .gwp_blog_seg button[aria-pressed="true"] { background: #fff; color: var(--v2-ink); box-shadow: 0 1px 3px rgba(0, 0, 0, .12); }
html.gwp_v2.gwp_v3 .gwp_blog_seg button[aria-pressed="true"] .n { background: var(--gwp_tool_tint, #f8e6ee); color: var(--gwp_tool_text, #7d1c40); }
html.gwp_v2.gwp_v3 .gwp_blog_sort { height: 44px; padding: 0 16px; border: 0; border-radius: 999px; background: var(--v3-soft, #f4f4f0); color: var(--v2-ink); font: 500 14px 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .gwp_blog_count { margin-left: auto; color: var(--v2-muted); font-size: 13.5px; }
html.gwp_v2.gwp_v3 #gwp_blogs_status_filter, html.gwp_v2.gwp_v3 .gwp_nav_filter_toggle:has(+ .gwp_nav_filters #gwp_blogs_status_filter) { display: none !important; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_edit { margin-left: auto; height: 38px; padding: 0 18px; border: 0; border-radius: 999px; background: transparent; color: var(--v2-ink); font: 600 13.5px 'Figtree', system-ui, sans-serif; cursor: pointer; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_edit:hover { background: #fff; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_edit + .gwp_blog_card_more { margin-left: 0; }

/* BLOG POST page: dark theme, follows the device setting */
@media (prefers-color-scheme: dark) {
    html.gwp_v2.gwp_v3:has(.gwp_blog_post), html.gwp_v2.gwp_v3:has(.gwp_blog_post) body, html.gwp_v2.gwp_v3:has(.gwp_blog_post) #gwp_frame, html.gwp_v2.gwp_v3:has(.gwp_blog_post) #gwp_bframe { background: #121216 !important; color-scheme: dark; }
    html.gwp_v2.gwp_v3:has(.gwp_blog_post) .gwp_topbuttonbar, html.gwp_v2.gwp_v3:has(.gwp_blog_post) #gwp_calheader { background: #1b1b21 !important; border-color: #2b2b33 !important; }
    html.gwp_v2.gwp_v3:has(.gwp_blog_post) .gwp_topbuttonbar [class*="circle"], html.gwp_v2.gwp_v3:has(.gwp_blog_post) .gwp_menubutton, html.gwp_v2.gwp_v3:has(.gwp_blog_post) .gwp_lmsearch, html.gwp_v2.gwp_v3:has(.gwp_blog_post) .gwp_topbuttonbar .gwp_nav_icon_btn { background: #2a2a33 !important; color: #f3f3f6 !important; }
    html.gwp_v2.gwp_v3 article.gwp_blog_post { background: #1b1b21; }
    html.gwp_v2.gwp_v3 .gwp_blog_post_title { color: #f3f3f6; }
    html.gwp_v2.gwp_v3 .gwp_blog_post_meta { color: #9c9ca8; }
    html.gwp_v2.gwp_v3 .gwp_blog_post .gwp_blog_tag { background: #2a2a33 !important; color: #f3f3f6 !important; }
    html.gwp_v2.gwp_v3 .gwp_blog_post [id^="gwp_shadow"] { color: #d2d2da; }
}
html.gwp_v2.gwp_v3 html .gwp_blog_tag a, html.gwp_v2.gwp_v3 .gwp_blog_tag a, html.gwp_v2.gwp_v3 .gwp_blog_tag i { color: inherit !important; text-decoration: none; }
html.gwp_v2.gwp_v3 .gwp_blog_tag i { color: var(--gwp_tool, #a8285a) !important; }
html.gwp_v2.gwp_v3 .gwp_blog_controls { padding: 4px 0 16px; margin: 0 32px; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .gwp_blog_controls { margin: 0 20px; } }
html.gwp_v2.gwp_v3 .gwp_blog_controls { margin-top: 12px; }

/* NOTIFICATIONS panel */
html.gwp_v2.gwp_v3 .gwp_dropdown-addnotification {
    right: 16px; margin-top: 8px; width: 400px; max-width: calc(100vw - 24px); max-height: min(560px, 80vh);
    background: #fff; border: 1px solid var(--v2-line); border-radius: 20px; box-shadow: 0 24px 60px rgba(20, 20, 36, .22);
    font-family: 'Figtree', system-ui, sans-serif; overflow-x: hidden; scrollbar-width: thin;
}
html.gwp_v2.gwp_v3 .gwp_notif_header { padding: 16px 16px 12px 20px; border-bottom: 1px solid var(--v2-line); background: #fff; }
html.gwp_v2.gwp_v3 .gwp_notif_header h4 { font: 700 18px 'Figtree', system-ui, sans-serif; letter-spacing: -.01em; color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_notif_actions { gap: 6px; }
html.gwp_v2.gwp_v3 .gwp_notif_actions button { width: 36px; height: 36px; padding: 0; justify-content: center; border-radius: 999px; background: var(--v3-soft, #f4f4f0); color: var(--v2-ink); }
html.gwp_v2.gwp_v3 .gwp_notif_actions button:hover { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_notif_actions button i { font-size: 17px; }
html.gwp_v2.gwp_v3 .gwp_notif_card { gap: 14px; padding: 14px 20px; border-bottom: 1px solid var(--v2-line); border-left: 0; transition: none; }
html.gwp_v2.gwp_v3 .gwp_notif_card.gwp_notif_unread, html.gwp_v2.gwp_v3 .gwp_notif_card.gwp_notif_read { border-left: 0; padding-left: 20px; }
html.gwp_v2.gwp_v3 .gwp_notif_card.gwp_notif_unread { background: var(--gwp_tool_tint, #f0f3fc); }
html.gwp_v2.gwp_v3 .gwp_notif_card.gwp_notif_unread::after { content: ""; position: absolute; top: 18px; right: 18px; width: 8px; height: 8px; border-radius: 999px; background: var(--gwp_tool, #4259cd); }
html.gwp_v2.gwp_v3 .gwp_notif_card.gwp_notif_unread:hover::after { display: none; }
html.gwp_v2.gwp_v3 .gwp_notif_card.gwp_notif_read { background: #fff; opacity: .72; }
html.gwp_v2.gwp_v3 .gwp_notif_card:hover, html.gwp_v2.gwp_v3 .gwp_dropdown-addnotification > .gwp_notif_card:hover { background: var(--v3-soft, #f4f4f0); }
html.gwp_v2.gwp_v3 .gwp_notif_icon { width: 40px; height: 40px; border-radius: 14px; }
html.gwp_v2.gwp_v3 .gwp_notif_message { font-size: 14px; line-height: 1.45; color: var(--v2-ink); padding-right: 22px; }
html.gwp_v2.gwp_v3 .gwp_notif_message b { font-weight: 700; }
html.gwp_v2.gwp_v3 .gwp_notif_meta { margin-top: 6px; gap: 8px; font-size: 12.5px; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_notif_origin_badge { padding: 2px 10px; border-radius: 999px; background: var(--v3-soft, #f4f4f0); color: var(--v2-ink); font-size: 11.5px; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_notif_card:hover .gwp_notif_origin_badge { background: #fff; }
html.gwp_v2.gwp_v3 .gwp_notif_card_actions { position: absolute; top: 10px; right: 12px; flex-direction: row; gap: 4px; }
html.gwp_v2.gwp_v3 .gwp_notif_card_actions button { width: 30px; height: 30px; padding: 0; border-radius: 999px; display: grid; place-items: center; background: #fff; color: var(--v2-ink); font-size: 15px; }
html.gwp_v2.gwp_v3 .gwp_notif_card_actions button:hover { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 .gwp_notif_empty { padding: 48px 20px; color: var(--v2-muted); }
html.gwp_v2.gwp_v3 .gwp_notif_empty i { opacity: .35; }
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .gwp_dropdown-addnotification { left: 12px; right: 12px; width: auto; max-width: none; } }
html.gwp_v2.gwp_v3 .gwp_dropdown-addnotification { top: 66px; margin-top: 0; max-height: calc(100vh - 84px); }

/* SCHEDULE CARDS: item rows now match #gwp_schedule-item's own row styling exactly —
   see the shared ".gwp_schedule_card" additions merged into that block below via :is(),
   so both contexts are defined and maintained in one place. */
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_schedulewrap { display: flex; flex-direction: column; gap: 0; }
html.gwp_v2.gwp_v3 .gwp_schedule_card .gwp_space_row { display: none; }
@media (prefers-color-scheme: dark) {
    html.gwp_v2.gwp_v3:has(.gwp_blog_post) #gwp_fa-filter, html.gwp_v2.gwp_v3:has(.gwp_blog_post) .gwp_notification-wrapper, html.gwp_v2.gwp_v3:has(.gwp_blog_post) #gwp_la-signout, html.gwp_v2.gwp_v3:has(.gwp_blog_post) .gwp_topbutton { background: #2a2a33 !important; color: #f3f3f6 !important; }
}
html.gwp_v2.gwp_v3 .gwp_blog_sort { -webkit-appearance: none; appearance: none; padding-right: 38px; background: var(--v3-soft, #f4f4f0) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%236b6b76' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 16px center; cursor: pointer; }
@media (max-width: 768px) {
    html.gwp_v2.gwp_v3 .gwp_dbitem { position: relative; }
    html.gwp_v2.gwp_v3 .gwp_dbitem_actions { position: absolute; top: 50%; right: 13px; transform: translateY(-50%); display: flex; gap: 6px; margin: 0; padding: 0; border: 0; }
    html.gwp_v2.gwp_v3 .gwp_dbitem_btn { width: 34px; height: 34px; min-width: 0; padding: 0; border-radius: 999px; display: grid; place-items: center; }
    html.gwp_v2.gwp_v3 .gwp_dbitem_arrow { display: none; }
    html.gwp_v2.gwp_v3 .gwp_dbitem_content { padding-right: 122px; min-width: 0; }
}
@media (max-width: 768px) {
    /* padding-left/right and #gwp_navigation's flex used to be redeclared here, silently
       overriding the tuned values set earlier in this file (the v3_global.css last-wins trap
       again, this time within the same file) — #gwp_navigation's flex:1 1 0 was letting it (and
       the date pill inside it) grow to fill leftover bar width instead of hugging its own
       content, which is why the pill had visible empty space past "September 2026". Removed;
       the earlier .gwp_calheader rules (padding 10px 8px, #gwp_navigation flex:0 1 auto) are
       the authoritative ones now. Confirmed live 2026-09-29. */
    html.gwp_v2.gwp_v3 #gwp_filtersettings, html.gwp_v2.gwp_v3 #gwp_selectsettingtype, html.gwp_v2.gwp_v3 .gwp_filtersettings { max-width: 100%; min-width: 0; box-sizing: border-box; }
}
@media (max-width: 768px) { html.gwp_v2.gwp_v3 .gwp_calheader #gwp_navigation [class*="select_tabmcontainer"] { max-width: 100% !important; width: 100% !important; box-sizing: border-box; } }

/* POPUP FOOTERS: same distance from the bottom edge everywhere */
html.gwp_v2.gwp_v3 .gwp_popup .gwp_evt_actionbar { padding-bottom: 0; }
html.gwp_v2.gwp_v3 #gwp_expande .gwp_popupbuttons, html.gwp_v2.gwp_v3 #gwp_vmember .gwp_popupbuttons, html.gwp_v2.gwp_v3 #gwp_emember .gwp_popupbuttons, html.gwp_v2.gwp_v3 #gwp_invite .gwp_popupbuttons, html.gwp_v2.gwp_v3 #gwp_mmember .gwp_popupbuttons { margin-bottom: -15px; }

/* BLOG/NEWS: marker on posts that come from a broadcast or Mailchimp */
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_source { margin-left: auto; margin-right: 44px; padding: 2px 10px; border-radius: 999px; background: #fff; color: var(--v2-muted); font: 600 11.5px 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_source, html.gwp_v2.gwp_v3 #gwp_aframe .gwp_blog_card_date { white-space: nowrap; }

/* TICKET TYPE ROWS (js/dist/cposts.js gwp_tw_buildTypeList, Ticket Configuration popup):
   built entirely from inline styles, one flex row — move-up/down buttons, a flex:1 Ticket
   Name field, a fixed 92px Price field, a fixed 70px Max Qty field and a delete button, all
   side by side. On a phone the fixed-width siblings alone eat almost the whole row, so the
   flex:1 Ticket Name field (min-width:0, no protection) collapses to a few px and its label
   visually runs into Price's — confirmed live. Only !important can beat the inline styles
   here (no class to hand-edit) without touching the dense generated JS. Ticket Name gets
   its own full-width line above everything else; Price/Max Qty flex instead of staying
   fixed-width so they still fit alongside the move/delete buttons on the second line. */
@media (max-width: 600px) {
    .gwp_tw_typerow > div { flex-wrap: wrap !important; row-gap: 8px !important; }
    .gwp_tw_typerow > div > div[style*="flex:1;min-width:0"] { flex-basis: 100% !important; order: -1; }
    .gwp_tw_typerow > div > div[style*="width:92px;flex-shrink:0"] { width: auto !important; flex: 1 1 80px !important; }
    .gwp_tw_typerow > div > div[style*="width:70px;flex-shrink:0"] { width: auto !important; flex: 1 1 70px !important; }
}

/* =====================================================================================
   CALENDAR LIST VIEW: redesigned 2026-09-29 at the user's request (see the "Calendar List
   View Redesign" artifact). Was never touched by Clarity at all before this — zero rules for
   any of these selectors existed anywhere in v2_shell/v3_shell/v3_global, confirmed by grep.
   A colour dot replaces the (until now effectively invisible — .gwp_evt_accent had no width/
   height outside an unrelated @media print block) accent bar; times go through the new
   gwp_sdFormatTime() helper (calfuncs.js) instead of the old raw-24h+am/pm-suffix concatenation;
   "edit event" becomes an icon-only button via a Line Awesome pseudo-element (no DOM change —
   the existing <i>edit event</i> text is hidden, not removed, so no behaviour changed, only
   what's visible); the " | " separator between title and edit is hidden with the same
   font-size:0-then-restore trick this file's own @media print block already uses for the same
   text node. Layout/permission/onclick logic in calfuncs.js is untouched.
   ===================================================================================== */
html.gwp_v2.gwp_v3 .gwp_singleday { margin: 0 0 24px; border-radius: 0; background: transparent; }
html.gwp_v2.gwp_v3 .gwp_singledaytitle {
    background: transparent; border-left: 0; border-bottom: 1px solid #ececec;
    padding: 4px 4px 10px; text-transform: none; letter-spacing: normal;
    /* Was 13px — smaller than the 15px event titles it groups, an inverted hierarchy
       (user-flagged 2026-09-29). A section label should read as more prominent than the
       items under it, not less. */
    font: 600 17px 'Figtree', system-ui, sans-serif; color: #0f1115;
}
html.gwp_v2.gwp_v3 .gwp_sdevents { padding: 0; }
html.gwp_v2.gwp_v3 .gwp_sdehr { display: none; }
html.gwp_v2.gwp_v3 .gwp_sdevent {
    display: flex; align-items: flex-start; gap: 12px;
    padding: 14px 4px; margin: 0; border: 0; border-bottom: 1px solid #ececec; border-radius: 0;
    background: transparent; font-size: 0; line-height: 1.5; transition: none;
}
html.gwp_v2.gwp_v3 .gwp_sdevent:hover { background: #fafaf9; }
html.gwp_v2.gwp_v3 .gwp_sdevent .gwp_evt_accent {
    display: inline-block; width: 8px; height: 8px; border-radius: 999px;
    margin-top: 7px; flex: 0 0 8px;
}
html.gwp_v2.gwp_v3 .gwp_sdevent > i.la-calendar-day { display: none; }
html.gwp_v2.gwp_v3 .gwp_sdeventtitle {
    flex: 1 1 auto; min-width: 0; padding: 0; background: transparent;
    color: #0f1115; font-family: 'Figtree', system-ui, sans-serif; font-size: 15px; font-weight: 600;
}
html.gwp_v2.gwp_v3 .gwp_sdeventtitle:hover { background: transparent; color: #334bc2; }
html.gwp_v2.gwp_v3 .gwp_sdeventtitle b { font-weight: 600; color: #6b7280; margin-right: 5px; }
html.gwp_v2.gwp_v3 .gwp_sdeventtitle i { font-style: normal; font-size: 12.5px; color: #6b7280; font-weight: 500; }
html.gwp_v2.gwp_v3 .gwp_sdedit {
    flex: 0 0 30px; width: 30px; height: 30px; padding: 0; margin-left: auto;
    border-radius: 999px; background: #f3f3f0; display: flex; align-items: center; justify-content: center;
    position: relative;
}
html.gwp_v2.gwp_v3 .gwp_sdedit i { display: none; }
html.gwp_v2.gwp_v3 .gwp_sdedit:before {
    content: "\f304"; font-family: "Line Awesome Free"; font-weight: 900; font-size: 13px; color: #6b7280;
}
html.gwp_v2.gwp_v3 .gwp_sdedit:hover { background: #eaedfa; }
html.gwp_v2.gwp_v3 .gwp_sdedit:hover:before { color: #2e43ae; }

/* Multi-day/reoccurring list-view rows (gwp_createlrevent in calfuncs.js) share .gwp_sdevent's
   row container (flex/padding/hairline/font-size:0 above already applies) but use their own
   title class, .gwp_leventtitles, and have no .gwp_evt_accent dot or .gwp_sdedit button — same
   typography treatment as .gwp_sdeventtitle so both row kinds read consistently. */
html.gwp_v2.gwp_v3 .gwp_leventtitles {
    flex: 1 1 auto; min-width: 0; padding: 0; background: transparent;
    color: #0f1115; font-family: 'Figtree', system-ui, sans-serif; font-size: 15px; font-weight: 600;
}
html.gwp_v2.gwp_v3 .gwp_leventtitles b { font-weight: 600; color: #6b7280; margin-right: 5px; }
html.gwp_v2.gwp_v3 .gwp_leventtitles i { font-style: normal; font-size: 12.5px; color: #6b7280; font-weight: 500; }

/* ============================================================
   Schedule item (output/schedule_item.php) + Activity item
   (output/activity_item.php) full-page redesign — matches the
   approved "Schedule & Activity Item Redesign" design canvas.
   Row markup restructure (time+title on one line) lives in
   output/schedule_rows.php's non-compact branches only, which
   are exclusively consumed by schedule_item.php — the compact
   card-preview branches (output/schedules.php) are untouched.
   ============================================================ */
html.gwp_v2.gwp_v3 #gwp_schedule-item,
html.gwp_v2.gwp_v3 #gwp_activity-item {
    font-family: 'Figtree', 'DM Sans', system-ui, sans-serif;
    color: var(--v2-ink);
    /* schedule_item.css sets position:relative on #gwp_schedule-item (needed so the
       absolutely-positioned print button anchors to the card); activity_item.css never
       sets it on #gwp_activity-item at all. Without this, the print button on the
       standalone activity page would position relative to the page/viewport instead of
       the card — invisible on a narrow test viewport where the two nearly coincide, but
       badly wrong on any desktop screen wider than the card's own 860px max-width. */
    position: relative;
    /* schedule_item.css's own #gwp_schedule-item rule happens to set background:#fff,
       but activity_item.css's #gwp_activity-item never did — leaving it fully
       transparent there, so the grey page ground showed straight through as if the
       card itself were grey (and the off-white Description card inside it then read as
       LIGHTER than its own "card", the opposite of the schedule page). Set explicitly
       here so both pages get a real white card regardless of what their own base
       stylesheet happens to do. */
    background: #ffffff;
}
/* The "card on a grey page" look (border, shadow, radius, grey ground, the width
   constraint that makes it float centred) is a SCREEN thing — on paper there's no
   surrounding page to separate it from, so it should print as plain full-width content,
   which is what the base stylesheets' own @media print blocks already do (reset
   border/radius/shadow/padding to a flat, borderless, full-width layout). Everything
   below that creates the card must stay scoped to screen so it doesn't outrank that
   print reset — these rules have higher specificity than the base ones, so left
   unscoped they'd win in print too and the card chrome would show up on paper. */
@media screen {
    html.gwp_v2.gwp_v3 #gwp_schedule-item,
    html.gwp_v2.gwp_v3 #gwp_activity-item {
        border: 1px solid #ececec;
        box-shadow: 0 1px 3px rgba(15, 17, 21, .06);
        border-radius: 16px;
        padding: 40px 44px;
        max-width: 860px;
        margin: 24px auto;
    }
    html.gwp_v2.gwp_v3:has(#gwp_schedule-item),
    html.gwp_v2.gwp_v3:has(#gwp_schedule-item) body,
    html.gwp_v2.gwp_v3:has(#gwp_activity-item),
    html.gwp_v2.gwp_v3:has(#gwp_activity-item) body { background: #f3f3f0 !important; }
}
@media only screen and (max-width: 600px) {
    html.gwp_v2.gwp_v3 #gwp_schedule-item, html.gwp_v2.gwp_v3 #gwp_activity-item { padding: 22px 20px; margin: 12px auto; }
}
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_title_underline,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_item_hr,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_section_divider,
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_accent_bar { display: none; }
html.gwp_v2.gwp_v3 .gwp_title_wrap h1,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_item_header h1 {
    font-size: 30px; font-weight: 700; letter-spacing: -0.01em; line-height: 1.25; color: var(--v2-ink);
}
/* Base position (top/right) differs per page — schedule_item.css uses top:28px/right:28px,
   activity_item.css uses top:20px/right:30px — a real, visible inconsistency between the
   two pages since neither was ever overridden here. Pinned to one shared value matching
   this page's own 44px container padding (24px + roughly half the icon's own size, so
   it optically lines up with the title baseline rather than sitting flush in the corner). */
html.gwp_v2.gwp_v3 .gwp_item_print {
    border: 0; background: var(--v3-soft); border-radius: 999px;
    width: 44px; height: 44px; display: flex; align-items: center; justify-content: center;
    position: absolute; top: 32px; right: 32px;
}
@media only screen and (max-width: 600px) {
    html.gwp_v2.gwp_v3 .gwp_item_print { top: 18px; right: 16px; width: 40px; height: 40px; }
}
/* activity_item.css's own print block hides .gwp_icon_print (the glyph) but never the
   button around it — leaving an empty grey circle on the printed page. Hide the whole
   button, not just its icon. */
@media print {
    html.gwp_v2.gwp_v3 .gwp_item_print { display: none !important; }
}
html.gwp_v2.gwp_v3 .gwp_item_print:hover { background: var(--gwp_tool_tint, #eaedfa); box-shadow: none; }
html.gwp_v2.gwp_v3 .gwp_icon_print { border: 0; font-size: 18px; color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_icon_print:hover { color: var(--gwp_tool_text, #2e43ae); }

/* Metadata badges (schedule) + taxonomy/duration badges (activity) — scoped to these two
   page containers; output/schedules.php's own list-card badges reuse .gwp_topicwrap/
   .gwp_serieswrap/.gwp_durationwrap with no #gwp_schedule-item ancestor and are untouched. */
/* The true reference edge on this page is the PROGRAMME row list (.gwp_schedulerow etc)
   and the title — neither has any box of its own, so their text sits exactly flush with
   the card's own padding (inset 0). Pills/badges DO have their own box with 14px left
   padding, so a flush (margin:0) box leaves their TEXT sitting 14px right of that
   reference. User confirmed 2026-09-30: text must match the programme/title's flush
   inset, not just match other boxed elements — so the row is pulled left by the pill's
   own 14px padding, putting its BOX outside the programme's flush edge (a deliberate,
   small overhang into the card's outer padding, not a bug) so the TEXT lands exactly
   on it. */
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_schedule_metabadges { gap: 10px; margin: 20px 0 10px -14px; }
/* Topic and Series are two separate sibling .gwp_staxonomies wrappers inside one
   .gwp_block (unlike the activity page's single .gwp_taxonomies wrapping every pill).
   Same -14px text-alignment pull as .gwp_schedule_metabadges above, for the same reason —
   .gwp_topicwrap/.gwp_serieswrap also carry 14px of their own left padding. */
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_block:has(> .gwp_staxonomies) {
    display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 4px 0 0 -14px;
}
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_staxonomies { margin: 0; }
/* NOTE: on the ACTIVITY page, .gwp_topicwrap/.gwp_serieswrap/.gwp_durationwrap are
   deliberately NOT listed here — they sit inside .gwp_taxonomies there, which the
   canonical ".gwp_taxonomies >" pill rule above (with !important) owns entirely; a
   second, weaker rule for them here would either be dead weight or — as
   .gwp_durationwrap was until this was noticed — silently render differently because
   it was the one wrapper that rule never covered. On the SCHEDULE page, Topic/Series
   sit inside .gwp_staxonomies instead (a different wrapper, one pill per instance,
   no competing canonical rule), so .gwp_topicwrap/.gwp_serieswrap DO still need
   styling here — only for #gwp_schedule-item, never #gwp_activity-item. */
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_metabadge,
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_topicwrap,
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_serieswrap {
    /* Base CSS gives .gwp_topicwrap/.gwp_serieswrap their own margin-right:6px, which
       stacked on top of the flex row's gap:10px for a 16px gap instead of 10px. */
    margin: 0;
    background: #f3f3f0; border: 0; color: #6b7280;
    font-family: 'Figtree', system-ui, sans-serif; font-size: 13px; font-weight: 600;
    border-radius: 999px; padding: 8px 14px;
}
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_tagwrap { background: var(--gwp_tool_tint, #eaedfa); color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_metabadge i { color: #9ca3af; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_topictext, html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_seriestext,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_topictext, html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_seriestext, html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_durationtext {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 13px; color: #6b7280;
}
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_topictext b, html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_seriestext b,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_topictext b, html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_seriestext b, html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_durationtext b {
    color: var(--v2-ink);
}
/* The term links inside these pills (get_the_term_list()'s own <a> tags) inherit the
   base stylesheet's .gwp_topictext > a { color: var(--accent1) } — the SITE's own
   customizer accent colour (green on this install), not Clarity's tool colour. Activity's
   own topic/series links are also covered by the broader #gwp_activity-item a rule
   further down, but stated explicitly here too so both contexts read from one place. */
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_topictext a, html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_seriestext a,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_topictext a, html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_seriestext a {
    color: var(--gwp_tool_text, #2e43ae);
}

/* Description card (schedule) + all standard-space cards (activity: goal / equipment /
   description / link / attachments — all share .gwp_standard_space). margin-left pulls
   the box left by exactly its own left padding (24px) so its TEXT lands flush with the
   title/programme row text (inset 0), the same reference every other left-aligned
   element on the page uses — the box's own background then sits 24px further left than
   the programme's flush edge, which is expected: the programme has no box of its own to
   eat into that space, this card does. User confirmed 2026-09-30 this text-flush
   behaviour (not box-flush) is the correct one. */
html.gwp_v2.gwp_v3 .gwp_description_card,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_standard_space {
    background: #f9f9f7; border-left: 0; border-radius: 16px; padding: 22px 24px; margin: 24px 0 0 -24px;
}
/* Activity page's own taxonomy pills get their padding from the canonical
   ".gwp_taxonomies > ... .gwp_topictext" rule above (0 12px on the inner text span,
   wrapper itself unpadded) — pull the wrapper left by that same 12px so pill text lands
   on the same flush (inset 0) edge as .gwp_standard_space's text and the title, matching
   the schedule page's equivalent -14px pull just above (different number only because
   this page's pills pad their inner span 12px, not the wrapper div 14px like schedule's do). */
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_taxonomies { padding: 0; margin: 0 0 0 -12px; }
/* activity_item.css's own base CSS gives #gwp_header a legacy padding-left:10px
   (schedule_item.css has no such rule) — cancel it so the h1 sits flush with the
   card's own padding, unrelated to the box-shift fix above. */
html.gwp_v2.gwp_v3 #gwp_activity-item #gwp_header { padding-left: 0; }
html.gwp_v2.gwp_v3 .gwp_description_label {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 16px; font-weight: 700; letter-spacing: .01em;
    color: #6b7280; text-transform: uppercase; margin-bottom: 6px;
}
/* The align-left icon here (from output/schedule_item.php) is the only eyebrow label on
   either page that has an icon at all — Programme/Opening/Closing/Goal/Equipment are all
   plain text — and at this size a row of 4 horizontal bars reads more like a stray
   divider line than a meaningful icon. Dropped for consistency with every other label. */
html.gwp_v2.gwp_v3 .gwp_description_label i { display: none; }
html.gwp_v2.gwp_v3 .gwp_description_content,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_standard_space {
    font-size: 15px; line-height: 1.75; color: var(--v2-ink);
}
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_standard_space > b:first-child,
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_subheader {
    display: block; font-family: 'Figtree', system-ui, sans-serif; font-size: 16px; font-weight: 700;
    letter-spacing: .01em; text-transform: uppercase; color: #6b7280; margin-bottom: 8px;
}
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_standard_space ul,
html.gwp_v2.gwp_v3 .gwp_eq_pills {
    list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px;
}
/* Equipment pills sat on a #f3f3f0 background inside a #f9f9f7 card — two near-identical
   near-white greys, so the pills barely read as pills at all. Switched to the tool-tint
   colour already used for tag pills elsewhere (e.g. the schedule page's .gwp_tagwrap),
   which gives real contrast against the card while staying in the Clarity palette.
   .gwp_eq_pills is the same treatment for the Library Activities-tab preview's own
   Equipment list (js/dist/library_v2.js now emits individual <li> pills there too,
   instead of one comma-joined text string, to match this page — 2026-09-30). */
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_standard_space li,
html.gwp_v2.gwp_v3 .gwp_eq_pills li {
    background: var(--gwp_tool_tint, #eaedfa); border-radius: 999px; padding: 8px 14px;
    font-size: 13px; font-weight: 600; color: var(--gwp_tool_text, #2e43ae);
}
html.gwp_v2.gwp_v3 #gwp_activity-item .gwp_video_embed { border-radius: 10px; overflow: hidden; }
/* Attachments: images and documents share one tile grid, matching the Library tool's
   ACTUAL live-verified media grid (.gwp_media_grid / .gwp_mediaitem / .gwp_mediabox /
   .gwp_mediafilename — checked 2026-09-30 via a real logged-in session, not just static
   code: 130px tile, border-radius:16px, overflow:hidden, NO border, NO shadow; thumbnail
   zone .gwp_mediabox is a fixed 130x85 box (not a 4:3 aspect-ratio) on #f1f5f9; icon
   32px at #94a3b8; filename 13px, INK-coloured (not muted grey), padding 10px 4px 0,
   no border-top divider. An earlier pass here used approximated values from static-code
   research alone (grey filename, small 11px text, a border+shadow, 4:3 ratio) that
   turned out wrong once checked live — corrected to match exactly, gap included
   (user confirmed 2026-09-30: match Library fully, spacing may change to get there).
   Icon colour-coding by file type is kept as a deliberate addition beyond Library's
   plain grey icons — everything else matches. Unscoped from #gwp_activity-item (was
   originally scoped there) 2026-09-30: js/dist/library_v2.js's attachment-tile builder
   for the Activities-tab "More +" preview now emits these same class names too, so one
   set of rules serves both places — gwp_act_att_* is a name unique enough to this
   feature that leaving it unscoped carries no real collision risk. */
html.gwp_v2.gwp_v3 .gwp_act_att_grid {
    display: flex; flex-wrap: wrap; column-gap: 36px; row-gap: 44px;
}
html.gwp_v2.gwp_v3 .gwp_act_att_tile {
    display: block; width: 130px; border-radius: 16px; background: #fff; border: 0;
    box-shadow: none; text-decoration: none; overflow: hidden;
}
html.gwp_v2.gwp_v3 .gwp_act_att_tile_thumb {
    display: flex; align-items: center; justify-content: center; width: 130px; height: 85px;
    background: #f1f5f9; color: #94a3b8; font-size: 32px;
}
html.gwp_v2.gwp_v3 .gwp_act_att_tile_thumb img {
    width: 100%; height: 100%; object-fit: cover;
}
html.gwp_v2.gwp_v3 .gwp_act_att_tile_name {
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    padding: 10px 4px 0; border-top: 0;
    font-family: 'Figtree', system-ui, sans-serif; font-size: 13px; color: var(--v2-ink); line-height: 1.4;
}
html.gwp_v2.gwp_v3 #gwp_activity-item a { color: var(--gwp_tool_text, #2e43ae); }

/* Embedded "linked activity detail" eyebrow (schedule_item.php only, printed just
   above each reused #gwp_activity-item block when a schedule references an activity) */
html.gwp_v2.gwp_v3 .gwp_linked_activity_label {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 16px; font-weight: 700; letter-spacing: .02em;
    text-transform: uppercase; color: #6b7280; margin: 32px auto 12px; max-width: 860px; padding: 0 44px; box-sizing: border-box;
}
@media print {
    html.gwp_v2.gwp_v3 .gwp_linked_activity_label { display: none; }
}
@media only screen and (max-width: 600px) {
    html.gwp_v2.gwp_v3 .gwp_linked_activity_label { padding: 0 20px; margin: 24px auto 10px; }
}

/* Programme heading + row list. The row-list rules (gwp_schedulerow, gwp_header_row,
   gwp_sheader, gwp_stext, gwp_sdecision, gwp_slink, etc) are shared verbatim with the
   compact card-preview on output/schedules.php (.gwp_schedule_card) via :is(...) below —
   both contexts render identical row markup (output/schedule_rows.php unified them
   2026-09-30) so they must stay pixel-identical here too, not just at first glance.
   The Programme heading itself (below) stays #gwp_schedule-item only — the compact
   card has no such heading. */
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_programme_heading {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 16px; font-weight: 700; letter-spacing: .02em;
    text-transform: uppercase; color: #6b7280; padding-bottom: 0; margin-bottom: 8px;
}
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_schedulewrap.gwp_scheduleprogramme { border-top: 0; padding-top: 0; margin-top: 32px; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_schedulerow,
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_schedulerow_alt {
    background: transparent; border: 0; border-radius: 0; padding: 20px 0; margin-top: 0; border-bottom: 1px solid #ececec;
    display: block; overflow: visible;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_schedulewrap.gwp_scheduleprogramme > div:last-child { border-bottom: 0; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_header_row, html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_subheader_row { padding: 24px 0 18px; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_sheader {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 16px; font-weight: 700; letter-spacing: .02em;
    text-transform: uppercase; color: var(--gwp_tool_text, #2e43ae); border-bottom: 0; padding: 0;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_ssheader {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 16px; font-weight: 700; letter-spacing: .02em;
    text-transform: uppercase; color: #9ca3af;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_space_row { padding: 0; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_sspace { height: 10px; }

html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_item_number {
    background: transparent; color: #9ca3af; font-family: 'Figtree', system-ui, sans-serif;
    font-size: 14px; font-weight: 700; min-width: 22px; height: auto; margin-right: 4px; border-radius: 0;
    display: inline-flex; align-self: flex-start; padding-top: 1px;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_main_col { font-size: 15px; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_item_toprow { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
/* Time drops the colour-pill treatment: bold, dark, tabular numerals so a column of
   times lines up, with just the clock/coffee icon carrying a whisper of colour — the
   title next to it stays the loudest thing on the row, not a competing chip. */
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_time_col {
    display: inline-flex; align-items: center; gap: 5px; min-width: 0; flex-shrink: 0;
    font-family: 'Figtree', system-ui, sans-serif; font-size: 17px; font-weight: 700;
    font-variant-numeric: tabular-nums; color: var(--v2-ink); background: none; border-radius: 0; padding: 0; white-space: nowrap;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_time_col i { font-size: 15px; color: var(--gwp_tool_text, #4259cd); }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_break_badge { color: #92400e; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_break_badge i { color: #92400e; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_break_row .gwp_item_name { color: #6b7280; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_item_name {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 17px; font-weight: 600; color: var(--v2-ink); margin-bottom: 0;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_item_name b { font-weight: 600; color: inherit; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_stask_name i { color: #9ca3af; margin-right: 2px; }
/* Meta line is now one line of plain text joined by middots (built with that
   separator in output/schedule_rows.php) rather than a row of separate icon chips —
   priority/status keep a colour, as bold inline words, everything else stays plain. */
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_item_meta {
    margin-top: 8px; font-family: 'Figtree', system-ui, sans-serif; font-size: 14px; line-height: 1.6; color: #6b7280;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_spriority, html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_sstatus {
    font-family: 'Figtree', system-ui, sans-serif; font-weight: 700; background: none; border-radius: 0; padding: 0;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_inline_notes {
    margin-top: 8px; background: none; border-radius: 0; padding: 0;
    font-family: 'Figtree', system-ui, sans-serif; font-size: 14px; color: #6b7280; font-style: italic;
}

/* Text / decision / link rows */
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_stext { font-family: 'Figtree', system-ui, sans-serif; font-size: 14.5px; color: #6b7280; white-space: pre-wrap; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_sdecision {
    display: flex; align-items: flex-start; gap: 8px; background: transparent; border-left: 0; padding: 0;
    font-family: 'Figtree', system-ui, sans-serif; font-size: 16px; color: var(--v2-ink); font-weight: 600;
}
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_sdecision i { color: #9ca3af; margin-top: 2px; }
/* .gwp_sdecision_notes is a sibling of .gwp_sdecision, not a flex child of it (the status
   pill moved out of the title line and into this second line, combined with the notes
   text via an em dash in schedule_rows.php) — a plain block, no flex needed. */
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_sdecision_notes { font-style: normal; color: #6b7280; font-size: 14px; margin-top: 6px; font-weight: 400; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_slink { font-family: 'Figtree', system-ui, sans-serif; font-size: 15px; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_slink a { color: var(--gwp_tool_text, #2e43ae); font-weight: 600; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_slink i { color: #9ca3af; }
html.gwp_v2.gwp_v3 :is(#gwp_schedule-item, .gwp_schedule_card) .gwp_slink_notes { font-style: normal; color: #6b7280; font-size: 14px; }

/* Item media grid — scoped to the full schedule-item page container only, never the
   compact .gwp_schedule_card preview (output/schedules.php), which shares these same
   class names but must keep its own, separately-scoped Clarity styling untouched. */
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_caption {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 13px; font-weight: 600; color: #6b7280; margin-bottom: 12px;
}
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_caption i { color: #9ca3af; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_item { border: 0; border-radius: 10px; overflow: hidden; background: #f3f3f0; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_item.gwp_media_image { aspect-ratio: 1; background: #eef0fb; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_image img { object-fit: cover; height: 100%; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_label { font-family: 'Figtree', system-ui, sans-serif; font-size: 11px; color: #6b7280; border-top: 0; padding: 6px 8px; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_pdf_header, html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_doc_header,
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_embed_schedule_header { border-bottom: 1px solid #ececec; font-family: 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_pdf_header i, html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_doc_header i,
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_embed_schedule_header i { color: #9ca3af; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_pdf_open, html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_doc_open,
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_embed_schedule_link { color: var(--gwp_tool_text, #2e43ae); }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_audio { background: #f9f9f7; border-radius: 10px; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_file, html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_link_item {
    background: #f3f3f0; aspect-ratio: 1; display: flex; align-items: center; justify-content: center;
    color: #6b7280; font-family: 'Figtree', system-ui, sans-serif; font-size: 10px; font-weight: 600;
}
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_file a, html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_link_item a { display: flex; flex-direction: column; align-items: center; gap: 4px; color: inherit; text-decoration: none; padding: 8px; text-align: center; }
html.gwp_v2.gwp_v3 #gwp_schedule-item .gwp_media_file_icon { font-size: 18px; color: #6b7280; }

/* ============================================================
   Library — Activities tab preview cards (output/media.php,
   js/dist/library_v2.js's gwp_med_renderactivities()) — matched
   to output/activity_item.php's own styling per user request
   2026-09-30 ("they should all have same styling"). Base card
   (.gwp_activities) and title (.gwp_activitytitle) come from
   css/output_v2.css, unscoped, so they render this way regardless
   of Clarity — overridden here the same way every other shared
   class in this file is, via the html.gwp_v2.gwp_v3 prefix. The
   Topic/Series/Duration pills already match automatically: they
   go through output/activity_item.php's own ".gwp_taxonomies >"
   canonical pill rule earlier in this file (which is exactly why
   .gwp_durationwrap was added to that rule 2026-09-30 — this page
   was the other consumer of it, not just the activity pages). */
html.gwp_v2.gwp_v3 .gwp_activities {
    border-radius: 16px; border-color: #ececec;
}
/* The "underline" is a border-bottom baked directly onto the title element, coloured
   from the site's own --accent1 (green on this install) — the same class of bug fixed
   earlier for Topic/Series link colour. activity_item.php's own h1 has no underline at
   all, so this is removed entirely rather than recoloured, to genuinely match. */
html.gwp_v2.gwp_v3 .gwp_activitytitle {
    border-bottom: 0; padding-bottom: 0; margin-bottom: 8px;
    font-family: 'Figtree', system-ui, sans-serif; color: var(--v2-ink);
}
/* Expanded Goal/Description/Equipment body text ("More +") — base CSS still had it on
   "Lucida Sans Unicode"/"Lucida Grande" (pre-Clarity) rather than Figtree, and with no
   explicit size/line-height/colour at all, unlike output/activity_item.php's own
   .gwp_description_content (Figtree, 15px, 1.75 line-height, ink). Matched here so an
   activity's description reads the same whether you're looking at it on its own page or
   expanded inline in this Library list. */
html.gwp_v2.gwp_v3 .gwp_fieldcontent {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 15px; line-height: 1.75; color: var(--v2-ink);
}
html.gwp_v2.gwp_v3 .gwp_fieldcontent p { margin: 0 0 12px; }
html.gwp_v2.gwp_v3 .gwp_fieldcontent p:last-child { margin-bottom: 0; }
/* Goal/Description/Equipment each get their own soft-grey card on activity_item.php
   (.gwp_standard_space) — here, .gwp_goalbox used an old "colour-mixed tint + left
   accent border" card style, and .gwp_descriptionbox/.gwp_equipmentbox had no card at
   all (just plain text under a label). Unified all three to the same
   .gwp_standard_space treatment: #f9f9f7 background, 16px radius, no border. */
html.gwp_v2.gwp_v3 .gwp_goalbox,
html.gwp_v2.gwp_v3 .gwp_descriptionbox,
html.gwp_v2.gwp_v3 .gwp_equipmentbox {
    border-left: 0; background: #f9f9f7; border-radius: 16px; padding: 22px 24px; margin: 12px 0 0;
    font-size: 15px; color: var(--v2-ink);
}
html.gwp_v2.gwp_v3 .gwp_goalbox .gwp_fieldtitle,
html.gwp_v2.gwp_v3 .gwp_descriptionbox .gwp_fieldtitle,
html.gwp_v2.gwp_v3 .gwp_equipmentbox .gwp_fieldtitle {
    display: block; margin-bottom: 8px;
}
html.gwp_v2.gwp_v3 .gwp_goalbox .gwp_fieldtitle b,
html.gwp_v2.gwp_v3 .gwp_descriptionbox .gwp_fieldtitle b,
html.gwp_v2.gwp_v3 .gwp_equipmentbox .gwp_fieldtitle b {
    font-family: 'Figtree', system-ui, sans-serif; font-size: 16px; font-weight: 700;
    letter-spacing: .01em; text-transform: uppercase; color: #6b7280;
}

/* ============================================================
   HOME / DASHBOARD — the login card (.gwp_auth_card, css/login.css)
   and, where reachable, the #gwp_homeframe two-column dashboard.
   The auth card is a shared component used both by the real live
   front page (shortcode-embedded, inside the site's own theme
   header/nav — confirmed live 2026-09-30) and by output/home.php's
   #gwp_homeframe dashboard (currently unreachable in production —
   gwp_platform_site is off and no page maps to it — but fixed here
   too since it's a real, if dormant, code path). Deliberately keeps
   var(--accent1) for the button/focus/checkbox rather than forcing a
   Clarity tool colour: unlike an internal admin tool, this is a
   customer-facing branding surface, and each Gatherova site's own
   accent IS the intended colour here (joshdev.uk's happens to
   already be a Clarity-compatible blue, #4259cd, but that's this
   site's choice, not a hardcoded Clarity rule). Only the neutrals,
   font and shape move onto the Clarity system. ============ */
html.gwp_v2.gwp_v3 .gwp_auth_card {
    font-family: 'Figtree', system-ui, sans-serif;
}
html.gwp_v2.gwp_v3 .gwp_auth_title { font-weight: 600; color: #0f1115; }
html.gwp_v2.gwp_v3 .gwp_auth_sub { color: #6b7280; font-weight: 500; }
html.gwp_v2.gwp_v3 .gwp_auth_field label { color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_auth_input {
    font-family: 'Figtree', system-ui, sans-serif; border-color: #ececec; border-radius: 10px;
}
html.gwp_v2.gwp_v3 .gwp_auth_remember label { color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_auth_remember input[type="checkbox"] { border-color: #ececec; }
/* The real front page is a normal Salient page-builder page, which loads the theme's own
   CSS (unlike the framework admin pages, which strip it via se_remove_all_styles()) —
   Salient's own sitewide button reset (salient-dynamic-styles.css, the
   body[data-button-style*="slightly_rounded"] bucket) sets border-radius:4px!important on
   every <button>, silently defeating a plain (non-!important) rule regardless of this
   selector's higher specificity. Confirmed live 2026-09-30: without !important here the
   button visually never changed at all. */
html.gwp_v2.gwp_v3 .gwp_auth_btn_primary { font-family: 'Figtree', system-ui, sans-serif; border-radius: 999px !important; }
html.gwp_v2.gwp_v3 .gwp_auth_forgot a { color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_auth_msg { font-family: 'Figtree', system-ui, sans-serif; }

/* The #gwp_homeframe dashboard: grey page ground + one white radius-lg
   card per column (login, events), matching the card language used
   everywhere else in Clarity, rather than two bare flex columns with
   no visual boundary. */
html.gwp_v2.gwp_v3 #gwp_frame:has(#gwp_homeframe) { background: #f3f3f0; }
html.gwp_v2.gwp_v3 #gwp_homeframe { gap: 24px; padding: 24px; box-sizing: border-box; }
html.gwp_v2.gwp_v3 #gwp_homeframe .gwp_hcolumn {
    background: #ffffff; border: 1px solid #ececec; border-radius: 20px;
    box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 8px 24px rgba(15,17,21,.06);
    padding: 24px; box-sizing: border-box;
}
html.gwp_v2.gwp_v3 #gwp_homeframe .gwp_upcomingevents {
    font-family: 'Figtree', system-ui, sans-serif;
}

/* ============================================================
   MEETINGS (comms magenta #ab2b5e / tint #f6e8ed) — js/dist/meetings.js
   renders .gwpm_list_row items; classes are already uniquely
   namespaced (gwpm_) so no extra page-container scoping needed.
   data-tool is not currently wired up for this page (meetings.js
   never sets window.gwp_templatename), so the tool colour is
   hardcoded here rather than read from --gwp_tool_text. ============ */
html.gwp_v2.gwp_v3 .gwpm_list_row {
    border-bottom-color: #ececec; padding: 16px 22px; gap: 14px;
}
html.gwp_v2.gwp_v3 .gwpm_list_row:hover { background: #f3f3f0; }
html.gwp_v2.gwp_v3 .gwpm_list_icon {
    color: #ab2b5e; background: #f6e8ed; width: 36px; height: 36px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0;
}
html.gwp_v2.gwp_v3 .gwpm_list_title {
    font-family: 'Figtree', system-ui, sans-serif; font-weight: 600; color: #0f1115;
}
html.gwp_v2.gwp_v3 .gwpm_list_meta {
    font-family: 'Figtree', system-ui, sans-serif; font-weight: 500; color: #6b7280;
}
html.gwp_v2.gwp_v3 .gwpm_list_badge {
    font-family: 'Figtree', system-ui, sans-serif; font-weight: 700; padding: 6px 12px; border-radius: 999px;
}
html.gwp_v2.gwp_v3 .gwpm_list_arrow { color: #9ca3af; }

/* ============================================================
   MEMBERS (people teal #11768d / tint #e5f0f2) — css/members.css +
   js/dist/members.js. Type badge COLOURS are deliberately left as
   the JS-driven gwp_contact_types_config palette (background/text
   set inline per-badge) — those are semantic category colours, not
   branding, and already a reasonable muted palette; only shape/font
   move onto the Clarity system here, which the inline style doesn't
   touch (border-radius/font-family still come from the CSS class). */
html.gwp_v2.gwp_v3 .gwp_members_item:hover { background: #f3f3f0; }
html.gwp_v2.gwp_v3 .gwp_members_name { font-family: 'Figtree', system-ui, sans-serif; color: #0f1115; }
html.gwp_v2.gwp_v3 .gwp_members_name_sub { font-family: 'Figtree', system-ui, sans-serif; color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_members_contact_col { font-family: 'Figtree', system-ui, sans-serif; color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_members_avatar_member { background: #11768d; }
html.gwp_v2.gwp_v3 .gwp_members_type_badge {
    font-family: 'Figtree', system-ui, sans-serif; border-radius: 999px; padding: 6px 12px; text-transform: none;
}
html.gwp_v2.gwp_v3 .gwp_members_group_tag {
    font-family: 'Figtree', system-ui, sans-serif; font-weight: 600; border-radius: 999px; padding: 5px 11px;
    background: #f3f3f0; color: #6b7280;
}

/* ============================================================
   EXPENSES (people teal #11768d / tint #e5f0f2) — css/expenses.css +
   js/dist/expenses.js. Method/type badge colours are JS-driven
   (per-type hex, same pattern as Members) and left untouched —
   semantic, not branding. Card shape/font and the selected-state
   accent (previously var(--gwp_tool, #6366f1), never resolved since
   data-tool isn't wired up on this page) move onto Clarity. */
html.gwp_v2.gwp_v3 .gwp_exp_card {
    border-color: #ececec; border-radius: 16px;
    box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 6px 16px rgba(15,17,21,.05);
}
html.gwp_v2.gwp_v3 .gwp_exp_card:hover { box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 8px 22px rgba(15,17,21,.08); }
html.gwp_v2.gwp_v3 .gwp_exp_card.selected { border-color: #11768d; background: #e5f0f2; }
html.gwp_v2.gwp_v3 .gwp_exp_method_badge, html.gwp_v2.gwp_v3 .gwp_exp_type_badge, html.gwp_v2.gwp_v3 .gwp_exp_default_badge {
    font-family: 'Figtree', system-ui, sans-serif; border-radius: 999px;
}
html.gwp_v2.gwp_v3 .gwp_exp_method_badge { padding: 6px 12px; }
/* .gwp_exp_card_icon was a genuinely separate class from .gwp_exp_card (missed in the
   first pass) — its own base rule ships a fixed purple (#ede9fe/#7c3aed for .receipt,
   plus unrelated blue/green for .mileage/.sheet), completely unrelated to the page's own
   teal accent used everywhere else (nav buttons, active filter, selected-card state).
   User-reported 2026-09-30 (live screenshot): with the method badges' own genuinely
   semantic colours (blue/cyan/amber per payment method — left alone, same reasoning as
   Members) ALSO on screen, four unrelated hues (icon purple + nav teal + method blue +
   status amber) on one row reads as "all over the place". Unlike the method/status
   badges, the icon's receipt/mileage/sheet colour carries no real meaning beyond "which
   row type this is" — already conveyed by the icon glyph itself — so all three variants
   unify onto the one page accent instead of each other. */
html.gwp_v2.gwp_v3 .gwp_exp_card_icon,
html.gwp_v2.gwp_v3 .gwp_exp_card_icon.receipt,
html.gwp_v2.gwp_v3 .gwp_exp_card_icon.mileage,
html.gwp_v2.gwp_v3 .gwp_exp_card_icon.sheet {
    background: #e5f0f2; color: #11768d; border-radius: 12px;
}
html.gwp_v2.gwp_v3 .gwp_exp_unattached_badge, html.gwp_v2.gwp_v3 .gwp_exp_status {
    font-family: 'Figtree', system-ui, sans-serif; font-weight: 700; border-radius: 999px; padding: 6px 12px;
}

/* ============================================================
   TEAMS (people teal #11768d / tint #e5f0f2, same group as Members) —
   css/teams.css, rendered inside output/groups.php by js/dist/teams.js. */
html.gwp_v2.gwp_v3 .gwp_teams_card {
    border-color: #ececec; border-radius: 16px;
    box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 8px 20px rgba(15,17,21,.05);
}
html.gwp_v2.gwp_v3 .gwp_teams_card:hover { border-color: #ececec; background: #f9f9f7; box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 10px 24px rgba(15,17,21,.08); }
html.gwp_v2.gwp_v3 .gwp_teams_card_icon {
    width: 40px; height: 40px; border-radius: 11px; background: #e5f0f2; color: #11768d;
    display: flex; align-items: center; justify-content: center; font-size: 19px; margin-bottom: 4px;
}
html.gwp_v2.gwp_v3 .gwp_teams_card_name { font-family: 'Figtree', system-ui, sans-serif; font-weight: 600; color: #0f1115; }
html.gwp_v2.gwp_v3 .gwp_teams_card_desc { font-family: 'Figtree', system-ui, sans-serif; color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_teams_card_meta { font-family: 'Figtree', system-ui, sans-serif; font-weight: 600; color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_teams_draft_badge {
    display: inline-block; background: #fef3c7; color: #92400e !important; font-family: 'Figtree', system-ui, sans-serif;
    font-weight: 700; padding: 6px 12px; border-radius: 999px; font-size: 11px;
}

/* ============================================================
   RESOURCES (content blue-violet #4259cd / tint #eaedfa) —
   css/resources.css, output/resources.php, js/dist/resources.js. */
html.gwp_v2.gwp_v3 .gwp_res_card {
    border-color: #ececec; border-radius: 16px;
    box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 8px 20px rgba(15,17,21,.05);
}
html.gwp_v2.gwp_v3 .gwp_res_card_icon { background: #eaedfa; color: #4259cd; border-radius: 12px; }
html.gwp_v2.gwp_v3 .gwp_res_card_title { font-family: 'Figtree', system-ui, sans-serif; color: #0f1115; font-size: 16px; }
html.gwp_v2.gwp_v3 .gwp_res_card_desc { font-family: 'Figtree', system-ui, sans-serif; color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_res_card_meta {
    display: inline-block; font-family: 'Figtree', system-ui, sans-serif; font-weight: 600; color: #6b7280;
    background: #f3f3f0; padding: 5px 11px; border-radius: 999px; font-size: 11px; margin-top: 4px;
}
html.gwp_v2.gwp_v3 .gwp_res_file_card {
    border-color: #ececec; border-radius: 12px;
}
html.gwp_v2.gwp_v3 .gwp_res_file_card:hover { border-color: #4259cd; box-shadow: 0 2px 8px rgba(66,89,205,.15); }

/* ============================================================
   TEAM PUBLIC PAGE (people teal #11768d / tint #e5f0f2) —
   output/team_public.php. This page previously never activated
   Clarity at all — gwp_design_boot() only fires when 'popupfuncs' is
   in the array it's checked against, and this page's own gwp_output()
   call never included it. Fixed at the PHP level (a direct
   gwp_design_boot(['popupfuncs']) call, mirroring activity_item.php,
   avoiding the heavier popup-builder JS gwp_output()'s own switch-case
   would otherwise pull in) — this CSS is what actually reaches the
   page now that html.gwp_v2.gwp_v3 is present. Per-role avatar colour
   (role_colour) is a legitimate admin customisation and is NOT
   overridden here — only its default fallback (previously the
   literal #4285f4) was changed to People teal, in the PHP itself. */
html.gwp_v2.gwp_v3 .gwp_tpub_wrap { font-family: 'Figtree', system-ui, sans-serif; }
html.gwp_v2.gwp_v3 .gwp_tpub_title_row h1 { color: #0f1115; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_tpub_title_row h1 i { color: #11768d; }
html.gwp_v2.gwp_v3 .gwp_tpub_desc { color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_tpub_btn { background: #f3f3f0; border-color: #ececec; border-radius: 999px; color: #6b7280; font-weight: 600; }
html.gwp_v2.gwp_v3 .gwp_tpub_btn:hover { background: #e5f0f2; color: #11768d; }
html.gwp_v2.gwp_v3 .gwp_tpub_view_btn { border-color: #ececec; border-radius: 999px; color: #6b7280; font-weight: 600; }
/* User-reported 2026-09-30: the base rule's grey text (#6b7280) was inherited onto the
   .active state too, against the new teal background — nearly unreadable. The original
   base CSS set color:#fff explicitly on .active; this override dropped it. Restored. */
html.gwp_v2.gwp_v3 .gwp_tpub_view_btn.active { background: #11768d; border-color: #11768d; color: #ffffff; }
html.gwp_v2.gwp_v3 .gwp_tpub_view_btn:hover:not(.active) { background: #f3f3f0; }
html.gwp_v2.gwp_v3 .gwp_tpub_table { border-radius: 12px; overflow: hidden; }
html.gwp_v2.gwp_v3 .gwp_tpub_th, html.gwp_v2.gwp_v3 .gwp_tpub_foot { background: #f9f9f7; border-color: #ececec; }
html.gwp_v2.gwp_v3 .gwp_tpub_th_name, html.gwp_v2.gwp_v3 .gwp_tpub_card_name { color: #0f1115; }
html.gwp_v2.gwp_v3 .gwp_tpub_th_role, html.gwp_v2.gwp_v3 .gwp_tpub_foot, html.gwp_v2.gwp_v3 .gwp_tpub_card_total { color: #6b7280; }
html.gwp_v2.gwp_v3 .gwp_tpub_td { color: #374151; border-color: #f3f3f0; }
html.gwp_v2.gwp_v3 .gwp_tpub_card { border-color: #ececec; border-radius: 16px; box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 6px 16px rgba(15,17,21,.05); }
html.gwp_v2.gwp_v3 .gwp_tpub_card_header { background: #f9f9f7; border-color: #ececec; }
html.gwp_v2.gwp_v3 .gwp_tpub_card_person { color: #374151; border-color: #f3f3f0; }

/* ============================================================
   ITEM-DETAIL PAGES (document_item, list_item, note_item, media_item,
   workspace_item) — five near-identical skeletons (header/title/meta,
   icon box, body, tag footer), each with its own differently-named
   classes (gwp_doc_*, gwp_list_*, gwp_note_*, gwp_media_*, gwp_pb_*)
   doing the same job. One shared rule set covers all five. Neutral
   ink/soft treatment rather than a single tool colour, since these
   pages surface content from several different tools (compliance,
   workspace, database lists, notes, media) with no one fixed group. */
html.gwp_v2.gwp_v3 #gwp_document-item, html.gwp_v2.gwp_v3 #gwp_list-item,
html.gwp_v2.gwp_v3 #gwp_note-item, html.gwp_v2.gwp_v3 #gwp_media-item,
html.gwp_v2.gwp_v3 #gwp_workspace-item {
    font-family: 'Figtree', system-ui, sans-serif; border-color: #ececec; border-radius: 20px;
    box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 8px 24px rgba(15,17,21,.06); color: #374151;
}
html.gwp_v2.gwp_v3 #gwp_document-item a, html.gwp_v2.gwp_v3 #gwp_list-item a,
html.gwp_v2.gwp_v3 #gwp_note-item a, html.gwp_v2.gwp_v3 #gwp_media-item a,
html.gwp_v2.gwp_v3 #gwp_workspace-item a { color: #4259cd; }
html.gwp_v2.gwp_v3 .gwp_doc_title, html.gwp_v2.gwp_v3 .gwp_list_title, html.gwp_v2.gwp_v3 .gwp_note_title,
html.gwp_v2.gwp_v3 .gwp_media_title, html.gwp_v2.gwp_v3 .gwp_pb_title {
    font-family: 'Figtree', system-ui, sans-serif; font-weight: 600; color: #0f1115;
}
html.gwp_v2.gwp_v3 .gwp_doc_meta, html.gwp_v2.gwp_v3 .gwp_list_meta, html.gwp_v2.gwp_v3 .gwp_note_meta,
html.gwp_v2.gwp_v3 .gwp_pb_meta {
    font-family: 'Figtree', system-ui, sans-serif; color: #6b7280;
}
/* .gwp_doc_icon's own base rule (`border: 5px solid <colour>; border-radius: 3px`) came from
   a legacy pattern ("matches .occ_vaicon" per its own comment) with the colour set per-instance
   via inline style — replace the heavy border-box look with a proper tinted tile, keeping the
   per-instance colour (now used as the icon's own colour + a matching soft tint background,
   computed inline where the colour is set) rather than overriding it outright. */
html.gwp_v2.gwp_v3 .gwp_doc_icon {
    border: none; border-radius: 11px; background: #f3f3f0; color: inherit; width: 40px; height: 40px;
}
html.gwp_v2.gwp_v3 .gwp_doc_tag, html.gwp_v2.gwp_v3 .gwp_list_tag, html.gwp_v2.gwp_v3 .gwp_note_tag,
html.gwp_v2.gwp_v3 .gwp_media_tag, html.gwp_v2.gwp_v3 .gwp_pb_tag {
    font-family: 'Figtree', system-ui, sans-serif; font-weight: 600; background: #f3f3f0; border: none;
    border-radius: 999px; color: #6b7280; padding: 6px 12px;
}

/* ============================================================
   GROUPS — unify card fill/shadow/border with Teams (same switcher,
   same page, output/groups.php) for visual consistency. Per-group
   avatar colour (.gwp_groups_card_avatar) is deliberately left
   untouched — real admin-set data, useful for telling 17+ groups
   apart at a glance, unlike Teams' single uniform icon tile. This
   ONLY overrides .gwp_groups_card specifically — the shared base
   rule at line ~226 (background: var(--v3-soft); border: 0) still
   governs .gwp_cur_card/.gwp_taxp_card/.gwp_so_card, untouched. */
html.gwp_v2.gwp_v3 .gwp_groups_card {
    background: #ffffff; border: 1px solid #ececec;
    box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 8px 20px rgba(15,17,21,.05);
}
html.gwp_v2.gwp_v3 .gwp_groups_card:hover {
    background: #f9f9f7; border-color: #ececec;
    box-shadow: 0 1px 2px rgba(15,17,21,.04), 0 10px 24px rgba(15,17,21,.08);
}

/* ============================================================
   GROUP SINGLE VIEW (output/group.php, the /bible-study/-style page)
   Deliberately narrow: css/group.css already has real, working, on-pattern
   functionality (16 fixed identity colours, real per-group gradient hero,
   View all links, Forms edit icons, CSS multi-column masonry) — none of
   that is touched. Only the two genuine gaps found in the audit: no
   font-family anywhere in group.css (inherits page default), and the
   card radius (12px) sits behind the rest of Clarity's 16px system. */
html.gwp_v2.gwp_v3 [id^="gwp_grouppage_"] {
    font-family: 'Figtree', system-ui, sans-serif;
}
html.gwp_v2.gwp_v3 [id^="gwp_grouppage_"] > .gwp_selement[type="row"] {
    border-radius: 16px;
}
html.gwp_v2.gwp_v3 [id^="gwp_grouppage_"] .gwp_group_slideshow {
    border-radius: 0 0 16px 16px;
}
