/* ipp-picker-v1.28.css */
/* ============================================================
   ipp-picker-v1.28.css — Picker view
   CHANGELOG
     v1.28 (15 Oct 2026, IPP Build S17). Equal gaps between the section
       cards. The canvas already spaces cards 20px apart (v1.19), but
       .ipp-cat-re, -events and -txa still carried margin-top:14px from
       the pre-card layout and Greeting carried 0, so Articles to Events
       read 34px and Events to Greeting 20px. In the picker view every
       section's margin-top is now 0 and the canvas gap alone sets the
       distance. One rule; nothing else changed. Pairs with picker
       v1.38 and markup v1.15 unchanged.
     v1.27 (13 Oct 2026, Allocator RE Events · 5, step 2). Pairs
       ipp-picker-v1.38.js + markup v1.15. One block appended at the
       end; nothing above it changed.
       - DONE PICKING: .ipp-done-host sits at the right of a list frame's
         header; .ipp-done is the tick (a 16px box like the Content
         Controller's, blue when on), .ipp-dirty gives it the gold pending
         border (platform rule, #C4A35A), disabled greys it. .ipp-done-cancel
         is the small Cancel link beside it; .ipp-done-note the grey note.
       - .ipp-list-why--bad and .ipp-sp-note--bad: a count with no design,
         in salmon, on the tile and in the slot panel.
     v1.26 (13 Oct 2026, IPP Build S16 · Catalog S2). Pairs
       ipp-picker-v1.37.js. One block appended at the end; nothing
       above it changed.
       - CONTENT CONTROLLER ROWS on the rail are a fixed grid: box,
         label, count (right, mono). Every row is 34px; a row with a
         change waiting grows to 50px for its note line, so nothing
         else moves. Labels never wrap (ellipsis).
       - PENDING ROW: gold border and glow (--ipp-edit-dirty-*), the
         note in gold-bright mono, a small Cancel (ix-revert) at the
         note's right.
       - .ipp-cc-wait: the list's text before the plan is read, and
         when the plan has no catalog (salmon).
       - .ipp-pk-tab: the rail's Editorial button carries its
         ticked/total count, like Layout's.
       - No new tokens.
     v1.25 (13 Oct 2026). Pairs ipp-picker-v1.34.js. One block appended
       at the end; nothing above it changed.
       - THE SECTION IS TEXT: .ipp-tsec-name (a small sage square, then
         the name), .ipp-tsec-none ("No Section", salmon), the dashed
         .ipp-ttag.is-none ("No type") and .ipp-tsec-go ("Set it on the
         article", a blue text link). The dropdown rules above stay for
         locked plans read with an older script; v1.34 no longer uses them.
       - No new tokens.
     v1.24 (Controls parity, 12 Oct 2026). Pairs ipp-picker-v1.33.js.
       - ARTICLE TILES LINE UP. The picture is a fixed 4:3 box and the
         title always takes two lines, so a one-line headline no longer
         gets a taller picture. Tiles size to their content; the grid
         row keeps a row of tiles the same height (was aspect-ratio
         210/235 with the picture filling what the title left).
       - .ipp-tfacts under the headline: the Section dropdown
         (.ipp-tsec-sel, gold border when changed, salmon text when
         there is none) and the type (.ipp-ttag; salmon .is-bad and
         .ipp-tclash when it clashes with the slot or is missing), with
         a small Cancel (.ipp-tsec-cx). Gold and salmon are the IPP
         tokens already in use; nothing new.
     v1.22 (from v1.21). Pairs ipp-picker-v1.27.js (unchanged).
       - AI GENERATE, WHEN ON, IS GREEN, NOT SALMON (Jeff, 8 Oct 2026:
         salmon reads red, which reads "problem"). Fill --ix-ok #1F7A5C,
         the same green as the filled-tile check and the "Ready" line;
         white letters 5.25:1. Hover #186349 (7.19:1). Disabled unchanged.
       HC-P-S7-6 changes: the hover is now #186349 (no token for a
         pressed green yet; propose --ix-ok-press). #A5361F retired.
     v1.21 (from v1.20, IPP Build S7 · slice 4). Pairs ipp-picker-v1.26.js.
       - .ipp-list-names: up to three item names under a list tile's count.
       - .ipp-list-why: why a list tile cannot be filled here (The Find,
         unreadable design settings, new slot before Save). Text-mid ink.
       - List panel: .ipp-sp-lsel (a line in the slot, with Remove),
         .ipp-sp-lrm (salmon on hover, like Empty this slot), .ipp-sp-note
         (the order rule). No new tokens.
     v1.20 (from v1.19, IPP Build S7 · Greeting last). Pairs
       ipp-picker-v1.25.js + ipp-picker-markup-v1.13.js. One block
       appended at the end; nothing above it changed.
       - Greeting body is two columns: the AI Generate button on the
         left (160px wide, 148px tall), the three boxes on the right
         (Title and Super-short side by side, Paragraph under them).
       - AI Generate when on: salmon fill, white letters. Fill is
         --ix-salmon-ink #C0432B (white on it 5.15:1); hover #A5361F
         (6.67:1). When off: gray fill #EFECE4, letters --ix-text-mid
         #5A6478 (5.04:1), no hover, default cursor.
       - The reason line under it in --ix-text-mid; "Ready" in --ix-ok.
       - Cancel + Save keep the right end of the head.
     HARDCODING: HC-P-S7-6 the 160x148 button and #A5361F hover (no
       token for a darker salmon yet; propose --ix-salmon-press).
     v1.19 (from v1.18, IPP Build S6 · layout B). Pairs
       ipp-picker-v1.24.js + ipp-picker-markup-v1.12.js +
       ipp-shell-v1.11.js / ipp-shell-v1.6.css. New rules in the v1.19
       block at the end; the Picker grid line in the v1.18 block now
       reads 290px / 1fr / auto.
       - Canvas sections are white cards on the cream-deep page (14px
         corners, soft shadow). Section names in Fraunces: 21px, Articles
         28px. Counts in DM Mono.
       - Article tiles fill the width (each 190px or wider, gap 16px), so
         they spread out when the right panel is collapsed.
       - Greeting: Title and Super-short side by side on one line each
         (44px), Paragraph under them across both (76px). The row stops
         at 1120px so the boxes never stretch across a wide screen.
         AI Generate, Save and Cancel sit at the right of its head.
       - Content Controller on the dark rail: no card, labels
         --ix-rail-text (6.8:1), on labels white, ticked boxes white with
         a rail-colour tick, a gold border still means unsaved.
       - Allocations card: 370px, white, no border. Head on one line:
         title, then 34px refresh, lock and collapse buttons (fixed size,
         UX-030). The badge line under the title. 26px between that line
         and the first section. Legend in a fixed 2 x 2 grid.
       - Refresh turns while it reads (0.9s at least); nothing turns when
         the browser asks for reduced motion.
       - Collapsed: the card hides and a 48px strip shows, full height.
       - Locked plan: AI Generate, Undo and the Greeting's Save and Cancel
         are hidden, the boxes read as text, the Content Controller does
         not react.
     v1.18 (from v1.17, IPP Build S6 · the Allocations ledger). Pairs
       ipp-picker-v1.23.js + ipp-picker-markup-v1.11.js.
       - The Picker's right rail is 50px wider (320px to 370px).
       - v1.18 block at the end of this file: the ledger. Title in
         Fraunces with the refresh or lock icon; section headers in DM
         Mono bold with a heavier rule and 26px above; plain rows at a
         fixed 38px; a 9px dot; a fixed 68px action column for Assign and
         Cancel; a gold border and gold dot on a row waiting for Save;
         the four-entry legend pinned at the bottom.
       - Tiles holding a print item with no article (hollow green): a
         green border, "No article yet", and a filled Create article
         button. List tiles show the print title.
       - A locked plan hides every edit control (belt and braces; the JS
         does not draw them).
       - Colours are tokens only, with fallbacks (HC-P-IA-11):
         gray --ix-text-light #6B7280 (4.83:1), orange --ix-salmon-deep
         #D25842 (4.03:1), green --ix-ok #1F7A5C (5.25:1), gold --ix-gold
         #C4A35A, Create --ix-blue-deep #3F57B0 (6.56:1, white text).
       - The v1.17 rules for chips, cards and the available list are left
         in place and no longer match anything.
     v1.17 (from v1.16, first live look). Pairs ipp-picker-v1.17.js.
       - FIX: line buttons were full size. ix-buttons sets .ix-btn padding,
         min-height and font-size with !important, which beat the Picker's
         plain compact rule, so two buttons crushed the title. The compact
         size now carries !important at higher specificity.
       - A line's buttons sit on their own right-aligned row under the
         source line (pairs the JS change). The title keeps its two-line
         clamp, now over the full width.
     v1.16 (from v1.15, IPP Build S4 · slice 3 · LINK). Pairs
       ipp-picker-v1.16.js + markup v1.10 (unchanged). Additions only, in
       the v1.16 block at the end of this file:
       - .ipp-al-it--linking: the line whose Link panel is open (blue
         outline, so you can see which allocation you are linking).
       - .ipp-al-soon: Create and link, shown but not wired (muted).
       - .ipp-al-linkcancel: the small Cancel beside "link waiting".
       - Two buttons fit on a salmon line (Create and link · Link).
     v1.15 (from v1.14). Pairs ipp-picker-v1.15.js + markup v1.10.
       - Greeting: all three boxes are one fixed height (96px), so their
         bottoms and character counters line up. Longer text scrolls
         inside its box. Nothing else changed.
     v1.14 (from v1.13, live Greeting test on WLN-998). Pairs
       ipp-picker-v1.14.js (unchanged).
       - FIX: a hidden Cancel link still showed. ix-form-controls (now on
         the plan page) gives .ix-revert display:inline-block !important,
         which beats the browser's [hidden]. The Greeting's Cancel stayed
         on screen after Save, so the card looked as if it had not reset.
         Any hidden .ix-revert inside the IPP now stays hidden.
       - Nothing else changed.
     v1.13 (from v1.12, IA55). Pairs ipp-picker-v1.14.js.
       - .ipp-sp-opt--off: an article already in another slot, shown in
         the slot picker but not pickable (greyed, no hover, no pointer).
       - Nothing else changed.
     v1.12 (from v1.11, first live look on WLN-998). Pairs ipp-picker-v1.12.js.
       - FIX: the Add article tile drew as a 50px sliver with half a blue
         circle. It is a <button>, and a grid item with an aspect-ratio
         does not stretch to its column; it shrank to its content. It now
         fills its column and matches the row height of the tiles beside
         it, with its circle and label showing.
       - Empty list grids with no Add tile are hidden (pairs the JS change).
     v1.11 (from v1.10, IPP Build S3 slice 2 · WRITE). Pairs
       ipp-picker-v1.11.js + ipp-picker-markup-v1.8.js. Everything above
       the v1.11 block at the end of this file is v1.10, except one fix:
       - FIX: a stray fragment of a keyframes rule ("100%{...}}") sat
         right after this header. Its extra closing brace made the
         browser drop the first real rule after it (.ipp-cc-card).
         Removed.
       - v1.11 block: pending tiles (gold, the platform's dirty colour,
         on article and list tiles alike), removing (struck through), new
         (gold, "New"), Place targets (outlined), the per-tile Cancel and
         Remove slot links, "Did not save" lines, the Add tile in the list
         grids, the Place bar, gold lines in the Allocations list with
         their Place, Retry and Cancel actions, the slot picker panel, and
         the save bar's Save and Cancel all. Colours are tokens only
         (--ix-gold, --ix-gold-glow, --ix-gold-ink, --ix-salmon-ink,
         --ix-ok), with fallbacks (HC-P-IA-11).
     v1.10 (from v1.9, first live look at WLN-998 on a wide screen):
       - Tiles keep a working size on wide screens. Article tiles were
         stretching to a sixth of the canvas (about 300px wide and very
         tall); banner tiles to a quarter (over 400px wide, with a tiny
         image frame in the middle). All board grids now fill the row
         with tiles of a set size range instead of a fixed column count:
           Articles      150 to 190px
           Banner Ads    170 to 220px
           Events / RE / The Find  170 to 240px
       - Banner tile rows grow from 84px to 96px, so the name line under
         the image is no longer cut off.
       - Nothing else changed. ipp-picker-v1.9.js still pairs.
     v1.9 (from v1.8, IPP Build S2 slice 1 · READ). Pairs
       ipp-picker-v1.9.js + ipp-picker-markup-v1.7.js. Everything above
       the v1.9 block at the end of this file is v1.8, unchanged.
       - Picker grid: the right rail widens to 320px on the Picker view
         only, to hold the Allocations list. Layout and Publish keep the
         shell's 248px.
       - Board tiles: .ipp-slot--ok (filled and saved: green edge and a
         ✓ in the corner), .ipp-slot--bad (salmon: the record it names
         is gone), ghost (empty). Position tag on every tile. Article
         thumbnails as background images. Real banner images in the
         banner frame. The banner grid grows with the plan's real slot
         count instead of a fixed 3-row box.
       - .ipp-list-tile for Events, Real Estate and The Find: one tile
         per row, with its item count.
       - .ipp-at-line: an Around Town opener as a thin header line across
         the Articles grid, with its teaser.
       - .ipp-focus-on: the quiet outline on the section in focus.
       - .ipp-board-msg: the line at the top of the canvas (reading,
         notes from the plan data, or a salmon error with Try again).
       - Rows with no asset type: salmon list.
       - Allocations card: heading with the ix-info badge and Reload,
         ix-btn pill chips, the lines (green / plain / salmon), the page
         link, available assets with search.
       - Colours are platform tokens only: --ix-ok, --ix-salmon,
         --ix-salmon-ink, --ix-gold (HC-P-IA-11), with fallbacks.
       v1.8 (from v1.7): DROPDOWN PANEL styling for ipp-dropdown-v1.0.js —
         .ipp-dd-panel (floating searchable list), .ipp-dd-search/.ipp-dd-input,
         .ipp-dd-list, .ipp-dd-opt (+ --clear), .ipp-dd-opt-label/-sub, .ipp-dd-empty.
         Uses existing IPP tokens (cream surface, gold accent, teal text). Pairs
         ipp-picker-v1.6.js tile-dropdown wiring. No change to edit-state rules.
       v1.7 (from v1.6): CANONICAL EDIT-STATE STYLING (pairs ipp-picker-v1.5.js).
         Introduces ONE dirty/selected treatment used by every editable control
         — text inputs, customer dropdowns, and tiles — so "this will be written
         on Save" reads identically across the whole picker.
           · --ipp-edit-dirty-border  (HARDCODE: resolves to var(--ipp-gold);
             single source of truth for the dirty border — Tracker-logged)
           · .ipp-dirty  — canonical class. On greeting inputs it co-applies with
             the legacy .ix-picker-input--changed (kept as compat alias). On
             dropdown buttons (.ipp-splash-customer/.ipp-banner-customer/
             .ipp-lbp-customer/.txa-customer/.ipp-re-address/.event-name) and on
             tiles it paints the same gold 2px border + gold-glow surface.
           · .ipp-cancel-link — canonical small text revert link injected by
             editState.ensureCancel into any [data-ipp-cancel-host] scope. Same
             look + behavior everywhere. (Greeting keeps its existing in-head
             Cancel button, which delegates to editState.revert — unchanged look.)
         Distinct from char-limit .near/.at (those style the COUNT, not the field).
       v1.6 (from v1.5): char-counter color states on .ipp-char-count,
         matching ASF logic. .near (>=85% of cap) = gold warn; .at (exact cap,
         hard-block ceiling) = teal emphasis. No .over rule — hard maxlength
         makes over unreachable. Replaces the old .warn/.over pair.
       v1.5 (from v1.4): greeting row rebuilt for THREE fields (Title /
         Paragraph / Super-short) to match the GR-block-row contract. Grid
         1fr 2fr → 1fr 1.6fr 1.4fr. .ipp-greeting-msg rule generalized to
         .ipp-greeting-para + .ipp-greeting-ss. Edit-state styling unchanged.
       v1.4 (from v1.3): greeting edit-state, conforming to ix-form-controls
         canon. Adopts the canonical "changed" treatment (--ix-changed-border
         gold + gold-glow surface) on dirty greeting inputs via the canonical
         .ix-picker-input--changed class, mapped onto IPP's .ipp-greeting-input
         base (consumer-adoption path, not a fork). Adds greeting action row
         (.ipp-gr-actions) with Save (.ipp-gr-save) + Cancel (.ix-revert, styled
         by ix-form-controls). Savebar dirty-state hook (.ipp-savebar.ipp-dirty).
         ix-form-controls-v1.0.0.css MUST be loaded on the page (provides
         --ix-* tokens + .ix-revert). Fallback gold values inlined so the
         changed border still reads if a token is missing.
       v1.3 (from v1.2):
         - FIX (pair w/ ipp-picker-v1.1.js): CC state classes renamed
           on→ipp-on, locked→ipp-locked to avoid Webflow global .locked
           (50x50 red box) collision. Selectors updated to match.
       v1.2: !important-hardened .ipp-cc-box against host CSS bleed.
       v1.1: collapsed conflicting cc-box defs; appearance:none.
       v1.0: initial Scope A — v33 content port, namespaced, CC live.
   ============================================================ */

/* ── Content Controller (single clean block) ── */
[data-ipp-root] .ipp-cc-card{flex:0 0 auto}
[data-ipp-root] .ipp-cc-card h4{font:700 10px var(--ipp-font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ipp-text-light);margin:0 0 12px}
[data-ipp-root] .ipp-cc-list{display:flex;flex-direction:column;gap:1px}
[data-ipp-root] .ipp-cc-item{display:flex;align-items:center;gap:10px;padding:7px 6px;border-radius:6px;cursor:pointer;transition:.13s;position:relative;border:1.5px solid transparent;user-select:none}
[data-ipp-root] .ipp-cc-item:hover{background:var(--ipp-cream)}
[data-ipp-root] .ipp-cc-item.ipp-locked{cursor:not-allowed}
[data-ipp-root] .ipp-cc-item.ipp-locked:hover{background:transparent}
[data-ipp-root] .ipp-cc-box{box-sizing:border-box!important;width:16px!important;height:16px!important;min-width:16px!important;max-width:16px!important;border:1.5px solid var(--ipp-border-input)!important;border-radius:3px!important;flex:0 0 16px!important;position:relative!important;transition:.13s!important;background:#fff!important;padding:0!important;margin:0!important;appearance:none!important;-webkit-appearance:none!important;accent-color:auto!important;box-shadow:none!important}
[data-ipp-root] .ipp-cc-item.ipp-on .ipp-cc-box{background:var(--ipp-blue)!important;border-color:var(--ipp-blue)!important}
[data-ipp-root] .ipp-cc-item.ipp-on .ipp-cc-box::after{content:"";position:absolute;left:4.5px;top:1.5px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
[data-ipp-root] .ipp-cc-item.ipp-locked.ipp-on .ipp-cc-box{background:var(--ipp-text-light)!important;border-color:var(--ipp-text-light)!important}
[data-ipp-root] .ipp-cc-label{font:600 12.5px var(--ipp-font-body);color:var(--ipp-text-dark);flex:1;line-height:1.2}
[data-ipp-root] .ipp-cc-item.ipp-locked .ipp-cc-label{color:var(--ipp-text-mid)}
[data-ipp-root] .ipp-cc-count{font:600 10.5px var(--ipp-font-body);color:var(--ipp-text-light);background:var(--ipp-cream-warm);border-radius:999px;padding:2px 8px;flex:none}
@keyframes ippCcSaved{0%{border-color:var(--ipp-gold);background:var(--ipp-gold-glow)}100%{border-color:transparent;background:transparent}}
[data-ipp-root] .ipp-cc-item.just-saved{animation:ippCcSaved 1.1s ease-out}
[data-ipp-root] .ipp-cc-item.saving{opacity:.55;pointer-events:none}
[data-ipp-root] .ipp-cat-section[hidden]{display:none}
[data-ipp-root] .ipp-cat-section{display:flex;flex-direction:column;gap:8px;min-height:0}
[data-ipp-root] .ipp-cat-head{display:flex;align-items:center;gap:10px;padding:0 2px}
[data-ipp-root] .ipp-cat-head h5{margin:0;font:700 11px var(--ipp-font-body);text-transform:uppercase;letter-spacing:.09em;color:var(--ipp-text-mid)}
[data-ipp-root] .ipp-cat-head .ct{font-size:11.5px;color:var(--ipp-text-light)}
[data-ipp-root] .ipp-cat-head .ct b{color:var(--ipp-text-dark);font-weight:700}
[data-ipp-root] .ipp-cat-articles{flex:0 0 auto;display:flex;flex-direction:column;gap:8px}
[data-ipp-root] .ipp-cat-articles .ipp-cat-tiles{display:grid;
  grid-template-columns:repeat(6,1fr);
  gap:10px}
[data-ipp-root] .ipp-cat-articles .ipp-ctile{aspect-ratio:210/235;
  padding:10px 11px;
  display:flex;
  flex-direction:column;
  gap:6px;
  min-height:0;
  overflow:hidden}
[data-ipp-root] .ipp-cat-articles .ipp-ctile .ipp-ghost-img{flex:1;min-height:50px;height:auto}
[data-ipp-root] .ipp-cat-articles .ipp-ctile .ipp-ttitle{flex:0 0 auto;font:600 13px var(--ipp-font-display);line-height:1.22;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
[data-ipp-root] .ipp-cat-articles .ipp-ctile .ipp-tmeta{flex:0 0 auto;margin-top:auto}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.ghost .ipp-ghost-line{flex:0 0 auto}
[data-ipp-root] .ipp-cat-articles .ipp-ctile:not(.add) .ipp-del-btn{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;
  border:1px solid var(--ipp-border);background:rgba(255,255,255,.95);
  color:var(--ipp-text-mid);font:700 17px/1 var(--ipp-font-body);
  cursor:pointer;display:grid;place-items:center;padding:0 0 2px 0;
  opacity:.65;transition:.15s;z-index:3}
[data-ipp-root] .ipp-cat-articles .ipp-ctile:not(.add):hover .ipp-del-btn{opacity:1}
[data-ipp-root] .ipp-cat-articles .ipp-ctile:not(.add) .ipp-del-btn:hover{background:rgba(193,69,47,.10);border-color:var(--ipp-err);color:var(--ipp-err);transform:scale(1.08)}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add{aspect-ratio:210/235;
  border:2.5px dotted var(--ipp-blue);
  background:transparent;
  border-radius:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:12px;cursor:pointer;transition:.18s;
  padding:10px 11px;color:var(--ipp-blue-deep);font:inherit;outline:none;
  min-height:0;overflow:hidden;box-shadow:none}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add:hover{border-color:var(--ipp-blue-deep);
  background:var(--ipp-blue-ghost);
  transform:translateY(-3px);
  box-shadow:0 8px 22px -10px var(--ipp-blue-shadow)}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add .ipp-add-circle{width:50px;height:50px;border-radius:50%;
  background:var(--ipp-blue);
  border:none;
  display:grid;place-items:center;
  font:400 30px var(--ipp-font-display);line-height:1;color:#fff;
  box-shadow:0 4px 12px -3px var(--ipp-blue-shadow);
  transition:.15s}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add:hover .ipp-add-circle{background:var(--ipp-blue-deep);
  transform:scale(1.08)}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add .ipp-add-lbl{font:700 11px var(--ipp-font-body);text-transform:uppercase;letter-spacing:.10em;
  text-align:center;color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-ctile{background:var(--ipp-cream);border:1px solid var(--ipp-border);border-radius:10px;
  padding:9px 10px;display:flex;flex-direction:column;gap:5px;cursor:pointer;transition:.15s;
  min-height:0;overflow:hidden;position:relative}
[data-ipp-root] .ipp-ctile:hover{transform:translateY(-1px);border-color:var(--ipp-blue-light);background:#fff;
  box-shadow:0 6px 18px -10px rgba(30,42,58,.25)}
[data-ipp-root] .ipp-ctile.filled{background:#fff}
[data-ipp-root] .ipp-ctile.ghost{background:repeating-linear-gradient(135deg,#fff,#fff 8px,var(--ipp-cream) 8px,var(--ipp-cream) 16px);
  border:1.5px dashed var(--ipp-border-input)}
[data-ipp-root] .ipp-ctile.sponsored::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--ipp-gold),var(--ipp-gold-warm))}
[data-ipp-root] .ipp-ctile .pos-tag{font:700 9px var(--ipp-font-body);color:var(--ipp-text-light);letter-spacing:.07em;text-transform:uppercase}
[data-ipp-root] .ipp-ctile .ipp-ttitle{font:600 13px var(--ipp-font-display);line-height:1.25;letter-spacing:-.005em;color:var(--ipp-text-dark);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
[data-ipp-root] .ipp-ctile.ghost .ipp-ttitle{color:var(--ipp-text-light);font-style:italic;font-weight:500}
[data-ipp-root] .ipp-ctile .ipp-tmeta{font-size:10.5px;color:var(--ipp-text-light);display:flex;align-items:center;gap:5px;margin-top:auto;flex-wrap:wrap}
[data-ipp-root] .ipp-ctile .tspon{font:700 8.5px var(--ipp-font-body);color:#9c7e3a;background:var(--ipp-gold-glow);
  padding:1.5px 4px;border-radius:3px;letter-spacing:.06em;text-transform:uppercase}
[data-ipp-root] .ipp-ghost-img{height:30px;background:linear-gradient(135deg,var(--ipp-cream-deep),var(--ipp-cream-warm));
  border-radius:5px;position:relative;overflow:hidden;flex:none}
[data-ipp-root] .ipp-ghost-img::after{content:"";position:absolute;inset:0;
  background-image:repeating-linear-gradient(45deg,transparent 0 6px,rgba(0,0,0,.05) 6px 7px)}
[data-ipp-root] .ipp-ghost-img.banner{height:18px}
[data-ipp-root] .ipp-ghost-img.tall{height:42px}
[data-ipp-root] .ipp-ghost-line{height:5px;background:var(--ipp-border-input);border-radius:2.5px;flex:none}
[data-ipp-root] .ipp-ghost-line.short{width:62%}
[data-ipp-root] .ipp-ghost-line.x-short{width:38%}
[data-ipp-root] .ipp-ghost-line.long{width:88%}
[data-ipp-root] .ipp-cat-ads{margin-top:14px;flex:0 0 auto}
[data-ipp-root] .ipp-cat-ads .ipp-ad-row{display:flex;gap:10px;align-items:stretch;margin-top:6px}
[data-ipp-root] .ipp-cat-ads .ipp-splash-col{display:flex;flex-direction:column;gap:5px;flex-shrink:0}
[data-ipp-root] .ipp-cat-ads .ipp-banner-col{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0}
[data-ipp-root] .ipp-cat-ads .ipp-ad-label{font:700 10px var(--ipp-font-body);letter-spacing:.12em;text-transform:uppercase;
  color:var(--ipp-text-mid);padding-left:2px;flex:0 0 auto}
[data-ipp-root] .ipp-cat-ads .ipp-splash-wrap{aspect-ratio:1080/1280;flex-shrink:0;height:240px;position:relative}
[data-ipp-root] .ipp-cat-ads .ipp-splash-tile{width:100%;height:100%;
  background:#fff;border:1px solid var(--ipp-border);border-radius:10px;
  padding:9px 10px;
  display:flex;flex-direction:column;gap:6px;
  cursor:pointer;transition:.15s;
  position:relative;overflow:hidden}
[data-ipp-root] .ipp-cat-ads .ipp-splash-tile:hover{transform:translateY(-1px);border-color:var(--ipp-blue-light);
  box-shadow:0 8px 22px -10px rgba(30,42,58,.25)}
[data-ipp-root] .ipp-cat-ads .ipp-splash-tile.ghost{background:repeating-linear-gradient(135deg,#fff,#fff 8px,var(--ipp-cream) 8px,var(--ipp-cream) 16px);
  border:1.5px dashed var(--ipp-border-input)}
[data-ipp-root] .ipp-cat-ads .ipp-splash-img{flex:1;min-height:0;
  background:linear-gradient(135deg,var(--ipp-cream-deep),var(--ipp-cream-warm));
  border-radius:6px;border:1px solid var(--ipp-border);position:relative;overflow:hidden}
[data-ipp-root] .ipp-cat-ads .ipp-splash-img::after{content:"";position:absolute;inset:0;
  background-image:repeating-linear-gradient(45deg,transparent 0 7px,rgba(0,0,0,.05) 7px 8px)}
[data-ipp-root] .ipp-cat-ads .ipp-splash-customer{align-self:center;max-width:calc(100% - 8px);min-height:22px;
  background:var(--ipp-cream);border:1px solid var(--ipp-border);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:6px;
  padding:4px 10px;border-radius:6px;
  font:600 12px var(--ipp-font-display);color:var(--ipp-text-dark);
  letter-spacing:-.005em;line-height:1.2;
  flex:0 0 auto;transition:.15s;
  white-space:nowrap;overflow:hidden}
[data-ipp-root] .ipp-cat-ads .ipp-splash-customer .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  min-width:0;flex:1 1 auto}
[data-ipp-root] .ipp-cat-ads .ipp-splash-customer .chev{font:700 9px var(--ipp-font-body);color:var(--ipp-text-light);
  flex:0 0 auto;line-height:1;transition:.15s;
  display:inline-block;transform:translateY(1px)}
[data-ipp-root] .ipp-cat-ads .ipp-splash-customer:hover{background:var(--ipp-blue-ghost);border-color:var(--ipp-blue);color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-ads .ipp-splash-customer:hover .chev{color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-ads .ipp-splash-tile.ghost .ipp-splash-customer{color:var(--ipp-text-light);font-style:italic;font-weight:500}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile.lead{border-color:var(--ipp-gold);box-shadow:0 0 0 1.5px var(--ipp-gold-glow),0 2px 6px -2px rgba(196,163,90,.25)}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile.lead:hover{border-color:var(--ipp-gold-deep)}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile .ipp-lead-badge{position:absolute;top:5px;left:5px;z-index:3;
  font:700 9.5px var(--ipp-font-body);letter-spacing:.14em;color:#fff;
  background:var(--ipp-gold);
  border:1px solid var(--ipp-gold-deep);
  padding:2px 7px;border-radius:3px;
  box-shadow:0 1px 4px -1px rgba(0,0,0,.25);pointer-events:none}
[data-ipp-root] .ipp-cat-ads .ipp-banner-grid{height:240px;
  display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,1fr);gap:6px;min-width:0}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile{background:#fff;border:1px solid var(--ipp-border);border-radius:8px;
  padding:5px 6px 5px;
  display:flex;flex-direction:column;gap:4px;justify-content:flex-start;
  cursor:pointer;transition:.15s;
  position:relative;overflow:hidden;min-width:0;min-height:0}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile:hover{transform:translateY(-1px);border-color:var(--ipp-blue-light);
  box-shadow:0 6px 16px -10px rgba(30,42,58,.22)}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile.ghost{background:repeating-linear-gradient(135deg,#fff,#fff 7px,var(--ipp-cream) 7px,var(--ipp-cream) 14px);
  border:1.5px dashed var(--ipp-border-input)}
[data-ipp-root] .ipp-cat-ads .ipp-banner-img-frame{width:100%;height:40px;
  display:grid;place-items:center;
  background:rgba(30,42,58,.035);border-radius:3px;
  flex-shrink:0;overflow:hidden}
[data-ipp-root] .ipp-cat-ads .ipp-banner-img{height:100%;width:auto;
  aspect-ratio:700/235;
  max-width:100%;
  background:linear-gradient(135deg,var(--ipp-cream-deep),var(--ipp-cream-warm));
  border:1px solid var(--ipp-border);border-radius:3px;
  position:relative;overflow:hidden}
[data-ipp-root] .ipp-cat-ads .ipp-banner-img::after{content:"";position:absolute;inset:0;
  background-image:repeating-linear-gradient(45deg,transparent 0 5px,rgba(0,0,0,.05) 5px 6px)}
[data-ipp-root] .ipp-cat-ads .ipp-banner-img.ar-700x300{aspect-ratio:700/300}
[data-ipp-root] .ipp-cat-ads .ipp-banner-img.ar-700x400{aspect-ratio:700/400}
[data-ipp-root] .ipp-cat-ads .ipp-banner-customer{align-self:center;max-width:calc(100% - 6px);min-height:20px;
  background:var(--ipp-cream);border:1px solid var(--ipp-border);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:5px;
  padding:3px 8px;border-radius:5px;
  font:600 10.5px var(--ipp-font-body);color:var(--ipp-text-dark);
  letter-spacing:-.005em;line-height:1.2;
  flex:0 0 auto;margin-top:auto;transition:.15s;
  white-space:nowrap;overflow:hidden}
[data-ipp-root] .ipp-cat-ads .ipp-banner-customer .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  min-width:0;flex:1 1 auto}
[data-ipp-root] .ipp-cat-ads .ipp-banner-customer .chev{font:700 8px var(--ipp-font-body);color:var(--ipp-text-light);
  flex:0 0 auto;line-height:1;transition:.15s;
  display:inline-block;transform:translateY(1px)}
[data-ipp-root] .ipp-cat-ads .ipp-banner-customer:hover{background:var(--ipp-blue-ghost);border-color:var(--ipp-blue);color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-ads .ipp-banner-customer:hover .chev{color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile.ghost .ipp-banner-customer{color:var(--ipp-text-light);font-style:italic;font-weight:500}
[data-ipp-root] .ipp-cat-ads .ipp-splash-tile .ipp-del-btn, [data-ipp-root] .ipp-cat-ads .ipp-banner-tile .ipp-del-btn{position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;
  border:1px solid var(--ipp-border);background:rgba(255,255,255,.95);
  color:var(--ipp-text-mid);font:700 14px/1 var(--ipp-font-body);
  cursor:pointer;display:grid;place-items:center;padding:0 0 2px 0;
  opacity:.65;transition:.15s;z-index:3}
[data-ipp-root] .ipp-cat-ads .ipp-splash-tile:hover .ipp-del-btn, [data-ipp-root] .ipp-cat-ads .ipp-banner-tile:hover .ipp-del-btn{opacity:1}
[data-ipp-root] .ipp-cat-ads .ipp-splash-tile .ipp-del-btn:hover, [data-ipp-root] .ipp-cat-ads .ipp-banner-tile .ipp-del-btn:hover{background:rgba(193,69,47,.10);border-color:var(--ipp-err);color:var(--ipp-err);transform:scale(1.08)}
[data-ipp-root] .ipp-banner-add-bar{width:100%;margin-top:10px;padding:11px 16px;
  border:2.5px dotted var(--ipp-blue);border-radius:10px;
  background:transparent;
  display:flex;align-items:center;justify-content:center;gap:11px;
  cursor:pointer;transition:.18s;
  color:var(--ipp-blue-deep);
  font:700 11px var(--ipp-font-body);text-transform:uppercase;letter-spacing:.10em}
[data-ipp-root] .ipp-banner-add-bar:hover{background:var(--ipp-blue-ghost);border-color:var(--ipp-blue-deep);
  box-shadow:0 6px 18px -10px var(--ipp-blue-shadow)}
[data-ipp-root] .ipp-banner-add-bar .ipp-add-circle{width:26px;height:26px;border-radius:50%;
  background:var(--ipp-blue);color:#fff;display:grid;place-items:center;
  font:400 18px var(--ipp-font-display);line-height:1;flex-shrink:0;
  box-shadow:0 3px 9px -3px var(--ipp-blue-shadow);transition:.15s}
[data-ipp-root] .ipp-banner-add-bar:hover .ipp-add-circle{background:var(--ipp-blue-deep);transform:scale(1.06)}
[data-ipp-root] .ipp-cat-stub{margin-top:14px;flex:0 0 auto}
[data-ipp-root] .ipp-cat-stub .ipp-cat-placeholder{padding:36px 24px;margin-top:6px;
  background:var(--ipp-cream);
  border:1.5px dashed var(--ipp-border-input);
  border-radius:10px;text-align:center;
  color:var(--ipp-text-light);
  font:500 13px var(--ipp-font-body);font-style:italic}
[data-ipp-root] .ipp-cat-re{margin-top:14px;flex:0 0 auto}
[data-ipp-root] .ipp-cat-re .re-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:6px}
[data-ipp-root] .ipp-cat-re .ipp-re-tile{background:#fff;border:1px solid var(--ipp-border);border-radius:10px;
  padding:5px 5px 7px;display:flex;flex-direction:column;gap:5px;
  cursor:pointer;transition:.15s;position:relative;overflow:hidden;min-width:0}
[data-ipp-root] .ipp-cat-re .ipp-re-tile:hover{transform:translateY(-1px);border-color:var(--ipp-blue-light);
  box-shadow:0 6px 18px -10px rgba(30,42,58,.22)}
[data-ipp-root] .ipp-cat-re .ipp-re-tile.ghost{background:repeating-linear-gradient(135deg,#fff,#fff 8px,var(--ipp-cream) 8px,var(--ipp-cream) 16px);
  border:1.5px dashed var(--ipp-border-input)}
[data-ipp-root] .ipp-cat-re .ipp-re-img{width:100%;aspect-ratio:4/3;
  background:linear-gradient(135deg,var(--ipp-cream-deep),var(--ipp-cream-warm));
  border-radius:6px;border:1px solid var(--ipp-border);
  position:relative;overflow:hidden;flex-shrink:0}
[data-ipp-root] .ipp-cat-re .ipp-re-img::after{content:"";position:absolute;inset:0;
  background-image:repeating-linear-gradient(45deg,transparent 0 6px,rgba(0,0,0,.05) 6px 7px)}
[data-ipp-root] .ipp-cat-re .ipp-re-address{align-self:center;max-width:calc(100% - 4px);min-height:20px;
  background:var(--ipp-cream);border:1px solid var(--ipp-border);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:5px;
  padding:3px 8px;border-radius:5px;
  font:600 10.5px var(--ipp-font-body);color:var(--ipp-text-dark);
  letter-spacing:-.005em;line-height:1.2;flex:0 0 auto;margin-top:auto;
  transition:.15s;white-space:nowrap;overflow:hidden}
[data-ipp-root] .ipp-cat-re .ipp-re-address .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1 1 auto}
[data-ipp-root] .ipp-cat-re .ipp-re-address .chev{font:700 8px var(--ipp-font-body);color:var(--ipp-text-light);
  flex:0 0 auto;line-height:1;transition:.15s;display:inline-block;transform:translateY(1px)}
[data-ipp-root] .ipp-cat-re .ipp-re-address:hover{background:var(--ipp-blue-ghost);border-color:var(--ipp-blue);color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-re .ipp-re-address:hover .chev{color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-re .ipp-re-tile.ghost .ipp-re-address{color:var(--ipp-text-light);font-style:italic;font-weight:500}
[data-ipp-root] .ipp-cat-re .ipp-re-tile .ipp-del-btn, [data-ipp-root] .ipp-cat-events .ipp-event-tile .ipp-del-btn{position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;
  border:1px solid var(--ipp-border);background:rgba(255,255,255,.95);
  color:var(--ipp-text-mid);font:700 14px/1 var(--ipp-font-body);
  cursor:pointer;display:grid;place-items:center;padding:0 0 2px 0;
  opacity:.65;transition:.15s;z-index:3}
[data-ipp-root] .ipp-cat-re .ipp-re-tile:hover .ipp-del-btn, [data-ipp-root] .ipp-cat-events .ipp-event-tile:hover .ipp-del-btn{opacity:1}
[data-ipp-root] .ipp-cat-re .ipp-re-tile .ipp-del-btn:hover, [data-ipp-root] .ipp-cat-events .ipp-event-tile .ipp-del-btn:hover{background:rgba(193,69,47,.10);border-color:var(--ipp-err);color:var(--ipp-err);transform:scale(1.08)}
[data-ipp-root] .ipp-cat-re .ipp-re-add, [data-ipp-root] .ipp-cat-events .ipp-event-add{aspect-ratio:auto;height:100%;min-height:100%;
  border:2.5px dotted var(--ipp-blue);background:transparent;
  border-radius:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;cursor:pointer;transition:.18s;
  padding:10px 11px;color:var(--ipp-blue-deep);font:inherit;outline:none;
  min-height:0;overflow:hidden}
[data-ipp-root] .ipp-cat-re .ipp-re-add:hover, [data-ipp-root] .ipp-cat-events .ipp-event-add:hover{border-color:var(--ipp-blue-deep);background:var(--ipp-blue-ghost);
  transform:translateY(-2px);
  box-shadow:0 8px 22px -10px var(--ipp-blue-shadow)}
[data-ipp-root] .ipp-cat-re .ipp-re-add .ipp-add-circle, [data-ipp-root] .ipp-cat-events .ipp-event-add .ipp-add-circle{width:44px;height:44px;border-radius:50%;background:var(--ipp-blue);
  border:none;display:grid;place-items:center;
  font:400 26px var(--ipp-font-display);line-height:1;color:#fff;
  box-shadow:0 4px 12px -3px var(--ipp-blue-shadow);transition:.15s}
[data-ipp-root] .ipp-cat-re .ipp-re-add:hover .ipp-add-circle, [data-ipp-root] .ipp-cat-events .ipp-event-add:hover .ipp-add-circle{background:var(--ipp-blue-deep);transform:scale(1.06)}
[data-ipp-root] .ipp-cat-re .ipp-re-add .ipp-add-lbl, [data-ipp-root] .ipp-cat-events .ipp-event-add .ipp-add-lbl{font:700 10.5px var(--ipp-font-body);text-transform:uppercase;letter-spacing:.10em;
  text-align:center;color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-events{margin-top:14px;flex:0 0 auto}
[data-ipp-root] .ipp-cat-events .event-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:6px}
[data-ipp-root] .ipp-cat-events .ipp-event-tile{background:#fff;border:1px solid var(--ipp-border);border-radius:10px;
  padding:5px 5px 7px;display:flex;flex-direction:column;gap:4px;
  cursor:pointer;transition:.15s;position:relative;overflow:hidden;min-width:0}
[data-ipp-root] .ipp-cat-events .ipp-event-tile:hover{transform:translateY(-1px);border-color:var(--ipp-blue-light);
  box-shadow:0 6px 18px -10px rgba(30,42,58,.22)}
[data-ipp-root] .ipp-cat-events .ipp-event-tile.ghost{background:repeating-linear-gradient(135deg,#fff,#fff 8px,var(--ipp-cream) 8px,var(--ipp-cream) 16px);
  border:1.5px dashed var(--ipp-border-input)}
[data-ipp-root] .ipp-cat-events .event-img-frame{width:100%;height:88px;flex-shrink:0;
  display:grid;place-items:center;
  background:rgba(30,42,58,.035);border-radius:6px;overflow:hidden}
[data-ipp-root] .ipp-cat-events .event-img{height:100%;width:auto;aspect-ratio:16/9;max-width:100%;
  background:linear-gradient(135deg,var(--ipp-cream-deep),var(--ipp-cream-warm));
  border:1px solid var(--ipp-border);border-radius:5px;
  position:relative;overflow:hidden}
[data-ipp-root] .ipp-cat-events .event-img::after{content:"";position:absolute;inset:0;
  background-image:repeating-linear-gradient(45deg,transparent 0 6px,rgba(0,0,0,.05) 6px 7px)}
[data-ipp-root] .ipp-cat-events .event-img.ar-4-3{aspect-ratio:4/3}
[data-ipp-root] .ipp-cat-events .event-img.ar-3-2{aspect-ratio:3/2}
[data-ipp-root] .ipp-cat-events .event-img.ar-1-1{aspect-ratio:1/1}
[data-ipp-root] .ipp-cat-events .event-img.ar-4-5{aspect-ratio:4/5}
[data-ipp-root] .ipp-cat-events .event-img.ar-3-4{aspect-ratio:3/4}
[data-ipp-root] .ipp-cat-events .event-name{align-self:center;max-width:calc(100% - 4px);min-height:20px;
  background:var(--ipp-cream);border:1px solid var(--ipp-border);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:5px;
  padding:3px 8px;border-radius:5px;
  font:600 10.5px var(--ipp-font-body);color:var(--ipp-text-dark);
  letter-spacing:-.005em;line-height:1.2;flex:0 0 auto;margin-top:6px;
  transition:.15s;white-space:nowrap;overflow:hidden}
[data-ipp-root] .ipp-cat-events .event-name .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1 1 auto}
[data-ipp-root] .ipp-cat-events .event-name .chev{font:700 8px var(--ipp-font-body);color:var(--ipp-text-light);
  flex:0 0 auto;line-height:1;transition:.15s;display:inline-block;transform:translateY(1px)}
[data-ipp-root] .ipp-cat-events .event-name:hover{background:var(--ipp-blue-ghost);border-color:var(--ipp-blue);color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-events .event-name:hover .chev{color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-events .ipp-event-tile.ghost .event-name{color:var(--ipp-text-light);font-style:italic;font-weight:500}
[data-ipp-root] .ipp-cat-events .event-meta{font:500 9.5px var(--ipp-font-body);color:var(--ipp-text-light);
  text-align:center;letter-spacing:.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  flex:0 0 auto;margin-top:auto}
[data-ipp-root] .ipp-cat-lbp{margin-top:14px;flex:0 0 auto}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-row{display:flex;gap:10px;margin-top:6px;height:240px;flex-wrap:wrap}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-wrap{height:100%;aspect-ratio:1080/1280;flex-shrink:0;position:relative}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-tile{width:100%;height:100%;
  background:#fff;border:1px solid var(--ipp-border);border-radius:10px;
  padding:9px 10px;
  display:flex;flex-direction:column;gap:8px;
  cursor:pointer;transition:.15s;
  position:relative;overflow:hidden}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-tile:hover{transform:translateY(-1px);border-color:var(--ipp-blue-light);
  box-shadow:0 8px 22px -10px rgba(30,42,58,.25)}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-tile.ghost{background:repeating-linear-gradient(135deg,#fff,#fff 8px,var(--ipp-cream) 8px,var(--ipp-cream) 16px);
  border:1.5px dashed var(--ipp-border-input)}
[data-ipp-root] .ipp-cat-lbp .lbp-profile-img{flex:1;min-height:0;
  background:linear-gradient(135deg,var(--ipp-cream-deep),var(--ipp-cream-warm));
  border-radius:6px;border:1px solid var(--ipp-border);
  position:relative;overflow:hidden}
[data-ipp-root] .ipp-cat-lbp .lbp-profile-img::after{content:"";position:absolute;inset:0;
  background-image:repeating-linear-gradient(45deg,transparent 0 7px,rgba(0,0,0,.05) 7px 8px)}
[data-ipp-root] .ipp-cat-lbp .lbp-foot{display:flex;align-items:center;gap:7px;flex:0 0 auto;min-width:0}
[data-ipp-root] .ipp-cat-lbp .lbp-logo{width:32px;height:32px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,#fff,var(--ipp-cream-deep));
  border:1.5px solid var(--ipp-border);
  position:relative;overflow:hidden;
  box-shadow:0 2px 6px -2px rgba(30,42,58,.18)}
[data-ipp-root] .ipp-cat-lbp .lbp-logo::after{content:"";position:absolute;inset:2px;border-radius:50%;
  background-image:repeating-linear-gradient(45deg,transparent 0 4px,rgba(0,0,0,.06) 4px 5px)}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-customer{flex:1;min-width:0;min-height:22px;
  background:var(--ipp-cream);border:1px solid var(--ipp-border);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:5px;
  padding:4px 8px;border-radius:6px;
  font:600 11.5px var(--ipp-font-display);color:var(--ipp-text-dark);
  letter-spacing:-.005em;line-height:1.2;
  transition:.15s;white-space:nowrap;overflow:hidden}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-customer .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  min-width:0;flex:1 1 auto}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-customer .chev{font:700 9px var(--ipp-font-body);color:var(--ipp-text-light);
  flex:0 0 auto;line-height:1;transition:.15s;display:inline-block;transform:translateY(1px)}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-customer:hover{background:var(--ipp-blue-ghost);border-color:var(--ipp-blue);color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-customer:hover .chev{color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-tile.ghost .ipp-lbp-customer{color:var(--ipp-text-light);font-style:italic;font-weight:500}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-tile .ipp-del-btn, [data-ipp-root] .ipp-cat-txa .ipp-txa-tile .ipp-del-btn{position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;
  border:1px solid var(--ipp-border);background:rgba(255,255,255,.95);
  color:var(--ipp-text-mid);font:700 14px/1 var(--ipp-font-body);
  cursor:pointer;display:grid;place-items:center;padding:0 0 2px 0;
  opacity:.65;transition:.15s;z-index:3}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-tile:hover .ipp-del-btn, [data-ipp-root] .ipp-cat-txa .ipp-txa-tile:hover .ipp-del-btn{opacity:1}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-tile .ipp-del-btn:hover, [data-ipp-root] .ipp-cat-txa .ipp-txa-tile .ipp-del-btn:hover{background:rgba(193,69,47,.10);border-color:var(--ipp-err);color:var(--ipp-err);transform:scale(1.08)}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-add{height:100%;aspect-ratio:1080/1280;flex-shrink:0;
  border:2.5px dotted var(--ipp-blue);background:transparent;border-radius:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;cursor:pointer;transition:.18s;
  padding:10px 11px;color:var(--ipp-blue-deep);font:inherit;outline:none}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-add:hover{border-color:var(--ipp-blue-deep);background:var(--ipp-blue-ghost);
  transform:translateY(-2px);box-shadow:0 8px 22px -10px var(--ipp-blue-shadow)}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-add .ipp-add-circle{width:44px;height:44px;border-radius:50%;
  background:var(--ipp-blue);border:none;display:grid;place-items:center;
  font:400 26px var(--ipp-font-display);line-height:1;color:#fff;
  box-shadow:0 4px 12px -3px var(--ipp-blue-shadow);transition:.15s}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-add:hover .ipp-add-circle{background:var(--ipp-blue-deep);transform:scale(1.06)}
[data-ipp-root] .ipp-cat-lbp .ipp-lbp-add .ipp-add-lbl{font:700 10.5px var(--ipp-font-body);text-transform:uppercase;
  letter-spacing:.10em;text-align:center;color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-txa{margin-top:14px;flex:0 0 auto}
[data-ipp-root] .ipp-cat-txa .ipp-cat-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
[data-ipp-root] .ipp-cat-txa .ipp-cat-head h5{flex:0 0 auto}
[data-ipp-root] .ipp-cat-txa .ipp-cat-head .ct{margin-left:auto}
[data-ipp-root] .txa-category .ipp-cat-prefix{color:var(--ipp-text-light);font-weight:600;letter-spacing:.02em}
[data-ipp-root] .txa-category .ipp-cat-value{color:var(--ipp-blue-deep);font-weight:700}
[data-ipp-root] .txa-category .ipp-cat-value.custom{color:var(--ipp-gold-warm);font-style:italic}
[data-ipp-root] .ipp-cat-txa .txa-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:6px}
[data-ipp-root] .ipp-cat-txa .ipp-txa-tile{background:#fff;border:1px solid var(--ipp-border);border-radius:10px;
  padding:10px 8px 8px;
  display:flex;flex-direction:column;align-items:center;gap:7px;
  cursor:pointer;transition:.15s;position:relative;overflow:hidden;min-width:0}
[data-ipp-root] .ipp-cat-txa .ipp-txa-tile:hover{transform:translateY(-1px);border-color:var(--ipp-blue-light);
  box-shadow:0 6px 18px -10px rgba(30,42,58,.22)}
[data-ipp-root] .ipp-cat-txa .ipp-txa-tile.ghost{background:repeating-linear-gradient(135deg,#fff,#fff 8px,var(--ipp-cream) 8px,var(--ipp-cream) 16px);
  border:1.5px dashed var(--ipp-border-input)}
[data-ipp-root] .ipp-cat-txa .txa-logo{width:48px;height:48px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,#fff,var(--ipp-cream-deep));
  border:1.5px solid var(--ipp-border);
  position:relative;overflow:hidden;
  box-shadow:0 3px 10px -3px rgba(30,42,58,.18)}
[data-ipp-root] .ipp-cat-txa .txa-logo::after{content:"";position:absolute;inset:3px;border-radius:50%;
  background-image:repeating-linear-gradient(45deg,transparent 0 5px,rgba(0,0,0,.06) 5px 6px)}
[data-ipp-root] .ipp-cat-txa .txa-customer{align-self:center;max-width:calc(100% - 4px);min-height:22px;
  background:var(--ipp-cream);border:1px solid var(--ipp-border);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:5px;
  padding:3px 8px;border-radius:5px;
  font:600 10.5px var(--ipp-font-body);color:var(--ipp-text-dark);
  letter-spacing:-.005em;line-height:1.2;
  transition:.15s;white-space:nowrap;overflow:hidden;flex:0 0 auto;margin-top:auto}
[data-ipp-root] .ipp-cat-txa .txa-customer .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  min-width:0;flex:1 1 auto}
[data-ipp-root] .ipp-cat-txa .txa-customer .chev{font:700 8px var(--ipp-font-body);color:var(--ipp-text-light);
  flex:0 0 auto;line-height:1;transition:.15s;display:inline-block;transform:translateY(1px)}
[data-ipp-root] .ipp-cat-txa .txa-customer:hover{background:var(--ipp-blue-ghost);border-color:var(--ipp-blue);color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-txa .txa-customer:hover .chev{color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-txa .ipp-txa-tile.ghost .txa-customer{color:var(--ipp-text-light);font-style:italic;font-weight:500}
[data-ipp-root] .ipp-cat-txa .txa-add{border:2.5px dotted var(--ipp-blue);background:transparent;border-radius:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:8px;cursor:pointer;transition:.18s;
  padding:10px 8px 8px;color:var(--ipp-blue-deep);font:inherit;outline:none;min-height:0}
[data-ipp-root] .ipp-cat-txa .txa-add:hover{border-color:var(--ipp-blue-deep);background:var(--ipp-blue-ghost);
  transform:translateY(-2px);box-shadow:0 8px 22px -10px var(--ipp-blue-shadow)}
[data-ipp-root] .ipp-cat-txa .txa-add .ipp-add-circle{width:40px;height:40px;border-radius:50%;
  background:var(--ipp-blue);border:none;display:grid;place-items:center;
  font:400 24px var(--ipp-font-display);line-height:1;color:#fff;
  box-shadow:0 4px 12px -3px var(--ipp-blue-shadow);transition:.15s}
[data-ipp-root] .ipp-cat-txa .txa-add:hover .ipp-add-circle{background:var(--ipp-blue-deep);transform:scale(1.06)}
[data-ipp-root] .ipp-cat-txa .txa-add .ipp-add-lbl{font:700 10px var(--ipp-font-body);text-transform:uppercase;
  letter-spacing:.10em;text-align:center;color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-cat-greeting{margin-top:0;flex:0 0 auto}
[data-ipp-root] .ipp-cat-greeting .ipp-cat-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
[data-ipp-root] .ipp-cat-greeting .ipp-cat-head h5{flex:0 0 auto}
[data-ipp-root] .ipp-cat-greeting .ipp-cat-head .ct{margin-left:auto}
[data-ipp-root] .ipp-ai-generate-btn{display:inline-flex;align-items:center;gap:6px;
  background:linear-gradient(135deg,#fdf6dc,#f4e8b8);
  border:1px solid #d4b54a;
  cursor:pointer;
  padding:5px 12px;border-radius:7px;
  font:700 10.5px var(--ipp-font-body);color:#7a5e15;
  letter-spacing:.02em;
  transition:.15s;flex:0 0 auto;
  box-shadow:0 2px 6px -2px rgba(196,163,90,.25)}
[data-ipp-root] .ipp-ai-generate-btn:hover:not(.loading){background:linear-gradient(135deg,#f4e8b8,#e9d894);
  border-color:#b8943f;
  transform:translateY(-1px);
  box-shadow:0 6px 14px -4px rgba(196,163,90,.45)}
[data-ipp-root] .ipp-ai-generate-btn .ipp-ai-icon{width:14px;height:14px;flex-shrink:0;color:#a47d1f}
[data-ipp-root] .ipp-ai-generate-btn .ipp-btn-label{white-space:nowrap}
[data-ipp-root] .ipp-ai-generate-btn.loading{background:linear-gradient(135deg,#f4e8b8,#e9d894);
  cursor:wait;opacity:.85}
[data-ipp-root] .ipp-ai-generate-btn.loading .ipp-ai-icon{animation:ai-spin 1s linear infinite}
[data-ipp-root] .ipp-ai-generate-btn.again{background:linear-gradient(135deg,#fff,#fdf6dc)}
[data-ipp-root] .ipp-ai-undo-btn{display:inline-flex;align-items:center;gap:5px;
  background:transparent;border:1px solid transparent;cursor:pointer;
  padding:5px 10px;border-radius:6px;
  font:600 10.5px var(--ipp-font-body);color:var(--ipp-text-mid);
  letter-spacing:.01em;transition:.15s;flex:0 0 auto}
[data-ipp-root] .ipp-ai-undo-btn:hover{background:var(--ipp-cream);border-color:var(--ipp-border);color:var(--ipp-text-dark)}
[data-ipp-root] .ipp-ai-undo-btn .ipp-undo-icon{width:12px;height:12px;flex-shrink:0}
[data-ipp-root] .ipp-ai-undo-btn[hidden]{display:none}
[data-ipp-root] .ipp-ai-badge{display:inline-flex;align-items:center;gap:3px;
  background:linear-gradient(135deg,#fdf6dc,#f4e8b8);
  color:#7a5e15;border:1px solid #d4b54a;
  padding:1px 6px 1px 5px;border-radius:999px;
  font:700 8.5px var(--ipp-font-body);letter-spacing:.06em;text-transform:uppercase;
  margin-left:auto}
[data-ipp-root] .ipp-ai-badge svg{width:8px;height:8px;flex-shrink:0;color:#a47d1f}
[data-ipp-root] .ipp-ai-badge[hidden]{display:none}
[data-ipp-root] .ipp-greeting-field[data-ai="true"] .ipp-greeting-input{border-color:rgba(196,163,90,.6);
  background:linear-gradient(135deg,#fff,#fdfaf0)}
[data-ipp-root] .ipp-greeting-field[data-ai="true"] .ipp-greeting-input:focus{border-color:var(--ipp-blue);
  background:#fff;
  box-shadow:0 0 0 3px var(--ipp-blue-glow)}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-row{display:grid;grid-template-columns:1fr 1.6fr 1.4fr;gap:10px;margin-top:6px}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-field{display:flex;flex-direction:column;gap:4px;min-width:0}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-label{font:700 10px var(--ipp-font-body);letter-spacing:.12em;text-transform:uppercase;
  color:var(--ipp-text-mid);
  display:flex;align-items:center;gap:6px;width:100%}
[data-ipp-root] .ipp-cat-greeting .ipp-char-limit{font:600 9px var(--ipp-font-body);color:var(--ipp-text-light);
  letter-spacing:.02em;text-transform:none}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-input{border:1px solid var(--ipp-border);border-radius:8px;
  padding:9px 13px;
  font:500 13px var(--ipp-font-body);color:var(--ipp-text-dark);
  background:#fff;resize:none;outline:none;width:100%;
  transition:.15s;font-family:inherit;line-height:1.4;letter-spacing:-.005em}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-input::placeholder{color:var(--ipp-text-light);font-style:italic}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-input:focus{border-color:var(--ipp-blue);background:#fff;
  box-shadow:0 0 0 3px var(--ipp-blue-glow)}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-para{min-height:66px}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-ss{min-height:52px}
[data-ipp-root] .ipp-cat-greeting .ipp-char-count{font:500 10px var(--ipp-font-body);color:var(--ipp-text-light);
  text-align:right;letter-spacing:.02em;font-feature-settings:"tnum"}
[data-ipp-root] .ipp-cat-greeting .ipp-char-count.near{color:var(--ipp-gold-deep);font-weight:600}
[data-ipp-root] .ipp-cat-greeting .ipp-char-count.at{color:var(--ipp-text-dark);font-weight:700}


/* ════════════════════════════════════════════════════════════
   GREETING EDIT-STATE  (v1.4) — conforms to ix-form-controls canon
   ════════════════════════════════════════════════════════════ */

/* Dirty field: canonical "changed" treatment mapped onto the IPP
   greeting input base. Same gold border + gold-glow surface as
   .ix-picker-input--changed in ix-form-controls-v1.0.0.css. */
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-input.ix-picker-input--changed{
  background-color:var(--ix-gold-glow,var(--ipp-gold-glow,rgba(196,163,90,.12)))!important;
  background-image:none!important;
  border:2px solid var(--ix-changed-border,var(--ipp-gold,#C4A35A))!important;
  color:var(--ipp-text-dark)!important;
  font-weight:600!important;
}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-input.ix-picker-input--changed:focus{
  outline:none!important;
  box-shadow:var(--ix-shadow-gold,0 0 0 3px var(--ipp-gold-shadow,rgba(196,163,90,.20)))!important;
  border-color:var(--ix-changed-border,var(--ipp-gold,#C4A35A))!important;
}

/* Greeting action row in the cat-head: pushes Save/Cancel to the right. */
[data-ipp-root] .ipp-cat-greeting .ipp-gr-actions{
  display:inline-flex;align-items:center;gap:12px;margin-left:auto;flex:none}

/* Save button — IPP blue primary, compact. */
[data-ipp-root] .ipp-cat-greeting .ipp-gr-save{
  font-family:var(--ipp-font-body);font-weight:600;font-size:11.5px;letter-spacing:.02em;
  cursor:pointer;border:none;border-radius:var(--ipp-rs);padding:7px 16px;line-height:1;
  color:#fff;background:linear-gradient(135deg,var(--ipp-blue),var(--ipp-blue-deep));
  box-shadow:0 2px 8px var(--ipp-blue-shadow);transition:.15s}
[data-ipp-root] .ipp-cat-greeting .ipp-gr-save:hover:not(:disabled){
  transform:translateY(-1px);box-shadow:0 6px 16px -6px var(--ipp-blue-shadow)}
[data-ipp-root] .ipp-cat-greeting .ipp-gr-save:disabled{
  opacity:.4;cursor:not-allowed;box-shadow:none;transform:none}

/* Savebar dirty hook — gold dot + emphasis when greeting has edits. */
[data-ipp-root] .ipp-savebar.ipp-dirty .dot{background:var(--ipp-gold);box-shadow:0 0 0 4px var(--ipp-gold-shadow)}
[data-ipp-root] .ipp-savebar.ipp-dirty .stat{color:var(--ipp-text-dark);font-weight:600}


/* ════════════════════════════════════════════════════════════
   CANONICAL EDIT-STATE  (v1.7) — pairs ipp-picker-v1.5.js
   One dirty/selected treatment for EVERY editable control so the
   "will be written on Save" signal is identical picker-wide.
   ════════════════════════════════════════════════════════════ */

/* Single source of truth for the dirty border. HARDCODE (Tracker-logged):
   resolves to the existing gold accent. Change here = change everywhere. */
[data-ipp-root]{
  --ipp-edit-dirty-border: var(--ipp-gold, #C4A35A);
  --ipp-edit-dirty-glow:   var(--ipp-gold-glow, rgba(196,163,90,.12));
  --ipp-edit-dirty-shadow: var(--ipp-gold-shadow, rgba(196,163,90,.20));
}

/* ── Dirty DROPDOWN buttons (customer/asset pickers) ──────────
   Every picker button shares the same selected/dirty border so the
   operator sees at a glance which assignments are pending a Save.
   The chevron + label colors are left to each tile's own hover rule;
   we only override the resting border + surface when .ipp-dirty. */
[data-ipp-root] .ipp-splash-customer.ipp-dirty,
[data-ipp-root] .ipp-banner-customer.ipp-dirty,
[data-ipp-root] .ipp-lbp-customer.ipp-dirty,
[data-ipp-root] .txa-customer.ipp-dirty,
[data-ipp-root] .ipp-re-address.ipp-dirty,
[data-ipp-root] .event-name.ipp-dirty{
  border:2px solid var(--ipp-edit-dirty-border)!important;
  background:var(--ipp-edit-dirty-glow)!important;
  color:var(--ipp-text-dark)!important;
  box-shadow:0 0 0 1px var(--ipp-edit-dirty-glow)!important;
}
[data-ipp-root] .ipp-splash-customer.ipp-dirty .ipp-chev,
[data-ipp-root] .ipp-banner-customer.ipp-dirty .ipp-chev,
[data-ipp-root] .ipp-lbp-customer.ipp-dirty .ipp-chev,
[data-ipp-root] .txa-customer.ipp-dirty .ipp-chev,
[data-ipp-root] .ipp-re-address.ipp-dirty .ipp-chev,
[data-ipp-root] .event-name.ipp-dirty .ipp-chev{ color:var(--ipp-gold-deep)!important; }

/* ── Dirty TILES (when a whole tile is the changed unit) ──────
   Optional: if a tile itself is registered (e.g. a slot reassigned
   or cleared), the tile frame carries the same gold edge. */
[data-ipp-root] .ipp-banner-tile.ipp-dirty,
[data-ipp-root] .ipp-splash-tile.ipp-dirty,
[data-ipp-root] .ipp-lbp-tile.ipp-dirty,
[data-ipp-root] .ipp-txa-tile.ipp-dirty,
[data-ipp-root] .ipp-re-tile.ipp-dirty,
[data-ipp-root] .event-tile.ipp-dirty,
[data-ipp-root] .ipp-ctile.ipp-dirty{
  border-color:var(--ipp-edit-dirty-border)!important;
  box-shadow:0 0 0 1.5px var(--ipp-edit-dirty-glow),0 2px 6px -2px var(--ipp-edit-dirty-shadow)!important;
}

/* ── Dirty CC toggle (Content Controller checklist) ───────────
   A pending include-* change gets the same gold edge as everything
   else. (Under per-click optimistic save it commits immediately, so
   this is normally transient — present for batched-save parity.) */
[data-ipp-root] .ipp-cc-item.ipp-dirty{
  border-color:var(--ipp-edit-dirty-border)!important;
  background:var(--ipp-edit-dirty-glow)!important;
}

/* ── Dirty TEXT INPUTS (greeting + any future text control) ───
   Canonical .ipp-dirty for inputs. Mirrors the greeting's existing
   .ix-picker-input--changed (which still applies via compat alias),
   so this is the same look whether a field uses the new class, the
   legacy class, or both. */
[data-ipp-root] .ipp-greeting-input.ipp-dirty,
[data-ipp-root] input.ipp-dirty,
[data-ipp-root] textarea.ipp-dirty{
  background-color:var(--ipp-edit-dirty-glow)!important;
  background-image:none!important;
  border:2px solid var(--ipp-edit-dirty-border)!important;
  color:var(--ipp-text-dark)!important;
  font-weight:600!important;
}
[data-ipp-root] .ipp-greeting-input.ipp-dirty:focus,
[data-ipp-root] input.ipp-dirty:focus,
[data-ipp-root] textarea.ipp-dirty:focus{
  outline:none!important;
  box-shadow:0 0 0 3px var(--ipp-edit-dirty-shadow)!important;
  border-color:var(--ipp-edit-dirty-border)!important;
}

/* ── Canonical CANCEL link ───────────────────────────────────
   Small text revert link. One look, every scope. Injected by
   editState into [data-ipp-cancel-host] scopes; greeting's own
   in-head Cancel button keeps its existing .ix-revert styling. */
[data-ipp-root] .ipp-cancel-link{
  appearance:none;-webkit-appearance:none;
  background:none;border:none;padding:0;margin:0 0 0 4px;
  font:600 11px var(--ipp-font-body);letter-spacing:.01em;
  color:var(--ipp-text-light);text-decoration:underline;text-underline-offset:2px;
  cursor:pointer;transition:.13s;flex:0 0 auto}
[data-ipp-root] .ipp-cancel-link:hover{color:var(--ipp-err)}
[data-ipp-root] .ipp-cancel-link[hidden]{display:none}


/* ════════════════════════════════════════════════════════════
   TILE DROPDOWN PANEL  (v1.8) — pairs ipp-dropdown-v1.0.js
   Floating searchable list opened from any tile picker button.
   ════════════════════════════════════════════════════════════ */
.ipp-dd-panel{
  position:absolute;z-index:99999;
  max-height:340px;display:flex;flex-direction:column;
  background:var(--ipp-cream,#FAF9F5);
  border:1px solid var(--ipp-border,#e4ddcf);
  border-radius:10px;
  box-shadow:0 12px 40px -8px rgba(26,58,58,.28),0 2px 8px -2px rgba(26,58,58,.18);
  overflow:hidden;font-family:var(--ipp-font-body)}
.ipp-dd-panel[hidden]{display:none}
.ipp-dd-search{padding:8px;border-bottom:1px solid var(--ipp-border,#e4ddcf);background:var(--ipp-cream-warm,#FDFCF8)}
.ipp-dd-input{
  width:100%;box-sizing:border-box;padding:7px 10px;
  border:1px solid var(--ipp-border-input,#d8cfbc);border-radius:7px;
  font:400 13px var(--ipp-font-body);color:var(--ipp-text-dark,#1A3A3A);
  background:#fff;outline:none}
.ipp-dd-input:focus{border-color:var(--ipp-gold,#C4A35A);box-shadow:0 0 0 3px var(--ipp-gold-glow,rgba(196,163,90,.12))}
.ipp-dd-list{overflow-y:auto;padding:4px}
.ipp-dd-opt{
  display:block;width:100%;text-align:left;box-sizing:border-box;
  padding:8px 10px;border:none;background:none;border-radius:7px;cursor:pointer;
  font:400 13px var(--ipp-font-body);color:var(--ipp-text-dark,#1A3A3A);
  transition:.1s}
.ipp-dd-opt:hover{background:var(--ipp-gold-glow,rgba(196,163,90,.12))}
.ipp-dd-opt--clear{color:var(--ipp-text-light,#8a8577);font-style:italic;border-bottom:1px solid var(--ipp-border,#e4ddcf);border-radius:0;margin-bottom:2px}
.ipp-dd-opt-label{display:block;font-weight:500}
.ipp-dd-opt-sub{display:block;font-size:11px;color:var(--ipp-text-light,#8a8577);margin-top:1px}
.ipp-dd-empty{padding:14px 10px;text-align:center;color:var(--ipp-text-light,#8a8577);font-size:12px;font-style:italic}


/* ════════════════════════════════════════════════════════════
   v1.9 · PLAN BOARD (slice 1, read-only)
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-nl{grid-template-columns:var(--ipp-b-rail,290px) minmax(0,1fr) auto}   /* v1.19: the card sets its own 370px */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-rail-right{display:flex;flex-direction:column;gap:12px}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-rail-right .ipp-card.readiness{flex:0 0 auto}

/* board message */
[data-ipp-root] .ipp-board-msg{font:500 12.5px var(--ipp-font-body);color:var(--ix-text-mid,#5A6478);
  padding:8px 12px;border-radius:8px;background:var(--ipp-cream);margin:0 0 4px}
[data-ipp-root] .ipp-board-msg{flex:0 0 auto}
[data-ipp-root] .ipp-board-msg[hidden]{display:none}
[data-ipp-root] .ipp-cat-untyped{flex:0 0 auto;margin-bottom:14px}
[data-ipp-root] .ipp-board-msg--note{background:transparent;padding:0 2px}
[data-ipp-root] .ipp-board-msg--bad{background:var(--ix-salmon-ghost,rgba(236,114,89,.07));
  border:1px solid var(--ix-salmon,#EC7259);color:var(--ix-salmon-ink,#C0432B)}
[data-ipp-root] .ipp-board-notes summary{cursor:pointer;font:600 11.5px var(--ipp-font-body);color:var(--ix-text-mid,#5A6478)}
[data-ipp-root] .ipp-board-notes ul{margin:6px 0 0 18px;padding:0;font-size:11.5px;line-height:1.5}
[data-ipp-root] .ipp-board-retry{appearance:none;background:none;border:none;padding:0;margin-left:6px;cursor:pointer;
  font:600 12px var(--ipp-font-body);color:inherit;text-decoration:underline;text-underline-offset:2px}

/* focus outline */
[data-ipp-root] .ipp-cat-section{border-radius:12px;outline:2px solid transparent;outline-offset:6px;transition:outline-color .15s}
[data-ipp-root] .ipp-cat-section.ipp-focus-on{outline-color:var(--ix-teal-soft,rgba(26,58,58,.10))}
[data-ipp-root] .ipp-cat-section.ipp-focus-on .ipp-cat-head h5{color:var(--ix-teal,#1A3A3A)}
[data-ipp-root] .ipp-sec-empty{grid-column:1/-1;font:500 12px var(--ipp-font-body);color:var(--ipp-text-light);padding:10px 2px}

/* tiles: shared states */
[data-ipp-root] .ipp-slot{position:relative}
[data-ipp-root] .ipp-slot .pos-tag{position:absolute;top:6px;left:8px;z-index:2;font:700 9px var(--ipp-font-body);
  letter-spacing:.07em;text-transform:uppercase;color:var(--ipp-text-light);background:rgba(255,255,255,.9);
  padding:1px 5px;border-radius:4px}
[data-ipp-root] .ipp-slot-check{position:absolute;top:5px;right:6px;z-index:2;width:18px;height:18px;border-radius:50%;
  display:grid;place-items:center;font:700 11px/1 var(--ipp-font-body);color:#fff;background:var(--ix-ok,#1F7A5C)}
[data-ipp-root] .ipp-slot.ipp-slot--ok{border-color:var(--ix-ok,#1F7A5C)!important;
  box-shadow:0 0 0 1px rgba(31,122,92,.18)}
[data-ipp-root] .ipp-slot.ipp-slot--bad{border:1.5px solid var(--ix-salmon,#EC7259)!important;
  background:var(--ix-salmon-ghost,rgba(236,114,89,.07))!important}
[data-ipp-root] .ipp-slot.ipp-slot--bad .ipp-ttitle,
[data-ipp-root] .ipp-slot.ipp-slot--bad .ipp-slot-name{color:var(--ix-salmon-ink,#C0432B)}
[data-ipp-root] .ipp-slot{cursor:default}
[data-ipp-root] .ipp-slot:hover{transform:none}

/* article tiles */
[data-ipp-root] .ipp-cat-articles .ipp-ctile.ipp-slot{padding-top:24px}
[data-ipp-root] .ipp-cat-articles .ipp-ctile .ipp-art-thumb{flex:1;min-height:50px;border-radius:6px}
[data-ipp-root] .ipp-slot-thumb{background-size:cover;background-position:center;background-color:var(--ipp-cream-deep)}

/* Around Town opener line */
[data-ipp-root] .ipp-at-line{grid-column:1/-1;display:flex;align-items:center;gap:10px;position:relative;
  padding:6px 10px;border-left:3px solid var(--ix-teal,#1A3A3A);background:var(--ix-teal-ghost,rgba(26,58,58,.05));
  border-radius:0 8px 8px 0;cursor:default}
[data-ipp-root] .ipp-at-line .ipp-at-tag{font:700 10px var(--ipp-font-body);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ix-teal,#1A3A3A);flex:0 0 auto}
[data-ipp-root] .ipp-at-line .ipp-at-teaser{font:500 12px var(--ipp-font-body);color:var(--ipp-text-mid);flex:1;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
[data-ipp-root] .ipp-at-line .pos-tag{position:static;background:none;padding:0;font:700 9px var(--ipp-font-body);
  letter-spacing:.07em;text-transform:uppercase;color:var(--ipp-text-light);flex:0 0 auto}

/* banner tiles: grid follows the real slot count */
[data-ipp-root] .ipp-cat-ads .ipp-banner-grid--board{height:auto;grid-template-rows:none;grid-auto-rows:84px}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile.ipp-slot{padding-top:22px}
[data-ipp-root] .ipp-cat-ads .ipp-banner-photo{max-width:100%;max-height:100%;object-fit:contain;display:block}
[data-ipp-root] .ipp-cat-ads .ipp-slot-name{font:600 11px var(--ipp-font-body);color:var(--ipp-text-dark);text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
[data-ipp-root] .ipp-cat-ads .ipp-banner-tile.ghost .ipp-slot-name{color:var(--ipp-text-light);font-style:italic;font-weight:500}
[data-ipp-root] .ipp-cat-ads .ipp-splash-notyet{cursor:default}
[data-ipp-root] .ipp-cat-ads .ipp-splash-note{font:500 11px var(--ipp-font-body);color:var(--ipp-text-light);text-align:center;font-style:italic}

/* list tiles: Events, Real Estate, The Find */
[data-ipp-root] .ipp-list-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:6px}
[data-ipp-root] .ipp-list-tile{background:#fff;border:1px solid var(--ipp-border);border-radius:10px;min-height:76px;
  display:flex;align-items:flex-end;padding:24px 10px 10px}
[data-ipp-root] .ipp-list-tile.ghost{background:repeating-linear-gradient(135deg,#fff,#fff 8px,var(--ipp-cream) 8px,var(--ipp-cream) 16px);
  border:1.5px dashed var(--ipp-border-input)}
[data-ipp-root] .ipp-list-count{font:600 13px var(--ipp-font-display);color:var(--ipp-text-dark)}
[data-ipp-root] .ipp-list-tile.ghost .ipp-list-count{font:500 12px var(--ipp-font-body);font-style:italic;color:var(--ipp-text-light)}

/* rows with no asset type */
[data-ipp-root] .ipp-untyped-list{display:flex;flex-wrap:wrap;gap:6px}
[data-ipp-root] .ipp-untyped-row{font:600 11.5px var(--ipp-font-body);color:var(--ix-salmon-ink,#C0432B);
  background:var(--ix-salmon-ghost,rgba(236,114,89,.07));border:1px solid var(--ix-salmon,#EC7259);
  border-radius:6px;padding:4px 8px;white-space:nowrap}

/* ── Allocations card ─────────────────────────────────────── */
[data-ipp-root] .ipp-rail-right .ipp-card.ipp-al-card{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:10px}
[data-ipp-root] .ipp-al-head{display:flex;align-items:center;gap:6px}
[data-ipp-root] .ipp-al-head h4{margin:0!important}
[data-ipp-root] .ipp-al-info{display:inline-flex;align-items:center}
[data-ipp-root] .ipp-al-reload{appearance:none;background:none;border:none;padding:0;margin-left:auto;cursor:pointer;
  font:600 11px var(--ipp-font-body);color:var(--ipp-text-light);text-decoration:underline;text-underline-offset:2px}
[data-ipp-root] .ipp-al-reload:hover{color:var(--ix-teal,#1A3A3A)}
[data-ipp-root] .ipp-al-chips{display:flex;flex-wrap:wrap;gap:5px}
[data-ipp-root] .ipp-al-chips .ix-btn{font-size:11px;padding:4px 10px;min-height:0}
[data-ipp-root] .ipp-al-list{flex:1 1 auto;min-height:60px;overflow-y:auto;display:flex;flex-direction:column;gap:5px;margin:0 -4px;padding:0 4px}
[data-ipp-root] .ipp-al-it{border:1px solid var(--ipp-border);border-radius:8px;padding:7px 9px;background:#fff}
[data-ipp-root] .ipp-al-it--green{border-color:rgba(31,122,92,.35);background:rgba(31,122,92,.04)}
[data-ipp-root] .ipp-al-it--salmon{border-left:4px solid var(--ix-salmon,#EC7259);padding-left:7px}
[data-ipp-root] .ipp-al-t{font:600 12.5px var(--ipp-font-body);color:var(--ipp-text-dark);line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
[data-ipp-root] .ipp-al-ok{color:var(--ix-ok,#1F7A5C);font-weight:700;margin-right:5px}
[data-ipp-root] .ipp-al-asset{font:500 11px var(--ipp-font-body);color:var(--ipp-text-mid);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
[data-ipp-root] .ipp-al-sub{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:3px;
  font:500 11px var(--ipp-font-body);color:var(--ipp-text-light)}
[data-ipp-root] .ipp-al-dot{opacity:.6}
[data-ipp-root] .ipp-al-cust{color:var(--ipp-text-mid);font-weight:600}
[data-ipp-root] .ipp-al-src{font:600 11px var(--ipp-font-body);color:var(--ipp-text-mid)}
[data-ipp-root] button.ipp-al-pdf{appearance:none;background:none;border:none;padding:0;cursor:pointer;
  color:var(--ix-teal,#1A3A3A);text-decoration:underline;text-underline-offset:2px}
[data-ipp-root] .ipp-al-word--salmon{color:var(--ix-salmon-ink,#C0432B);font-weight:700}
[data-ipp-root] .ipp-al-word--match{color:var(--ix-gold-ink,#8A6E2E);font-weight:600}
[data-ipp-root] .ipp-al-empty{font:500 12px var(--ipp-font-body);color:var(--ipp-text-light);padding:8px 2px;line-height:1.45}
[data-ipp-root] .ipp-al-empty--bad{color:var(--ix-salmon-ink,#C0432B)}
[data-ipp-root] .ipp-al-avail{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--ipp-border);padding-top:8px}
[data-ipp-root] .ipp-al-avail[hidden]{display:none}
[data-ipp-root] .ipp-al-availlink{appearance:none;background:none;border:none;padding:0;cursor:pointer;align-self:flex-start;
  font:600 11.5px var(--ipp-font-body);color:var(--ix-teal,#1A3A3A);text-decoration:underline;text-underline-offset:2px}
[data-ipp-root] .ipp-al-availbox{display:flex;flex-direction:column;gap:6px}
[data-ipp-root] .ipp-al-availbox[hidden]{display:none}
[data-ipp-root] .ipp-al-search{width:100%;box-sizing:border-box;padding:6px 9px;border:1px solid var(--ipp-border-input);
  border-radius:7px;font:400 12px var(--ipp-font-body);background:#fff}
[data-ipp-root] .ipp-al-availlist{max-height:260px;flex:0 0 auto}

/* ════════════════════════════════════════════════════════════
   v1.10 · tile sizes on wide screens
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-cat-articles .ipp-cat-tiles{grid-template-columns:repeat(auto-fill,minmax(150px,190px))}
[data-ipp-root] .ipp-cat-ads .ipp-banner-grid--board{grid-template-columns:repeat(auto-fill,minmax(170px,220px));grid-auto-rows:96px}
[data-ipp-root] .ipp-list-tiles{grid-template-columns:repeat(auto-fill,minmax(170px,240px))}


/* ════════════════════════════════════════════════════════════
   v1.11 · WRITES: pending, gold, Cancel, Place, Add, slot picker
   ════════════════════════════════════════════════════════════ */
/* a tile that opens the slot picker */
[data-ipp-root] .ipp-slot[data-ipp-open]{cursor:pointer}
[data-ipp-root] .ipp-slot[data-ipp-open]:hover{border-color:var(--ipp-blue-light);box-shadow:0 6px 18px -10px rgba(30,42,58,.25)}

/* pending (gold) on every tile kind */
[data-ipp-root] .ipp-slot.ipp-dirty,
[data-ipp-root] .ipp-list-tile.ipp-dirty{
  border:2px solid var(--ix-gold,var(--ipp-edit-dirty-border,#C4A35A))!important;
  background:var(--ix-gold-glow,var(--ipp-edit-dirty-glow,rgba(196,163,90,.12)))!important;
  box-shadow:0 0 0 1.5px var(--ix-gold-glow,rgba(196,163,90,.12)),0 2px 8px -3px rgba(196,163,90,.35)!important}
[data-ipp-root] .ipp-slot .ipp-tile-word{color:var(--ix-gold-ink,#8A6E2E);font-weight:600}
[data-ipp-root] .ipp-slot--new .pos-tag{color:var(--ix-gold-ink,#8A6E2E);background:#fff}
[data-ipp-root] .ipp-slot--removing .ipp-tile-word,
[data-ipp-root] .ipp-slot--removing .ipp-list-count{text-decoration:line-through;text-decoration-thickness:1.5px}
[data-ipp-root] .ipp-slot--removing .ipp-ghost-img{opacity:.45}

/* Place targets */
@keyframes ippTargetPulse{0%,100%{outline-color:var(--ix-gold,#C4A35A)}50%{outline-color:rgba(196,163,90,.35)}}
[data-ipp-root] .ipp-slot.ipp-slot--target{outline:2px dashed var(--ix-gold,#C4A35A);outline-offset:2px;
  animation:ippTargetPulse 1.4s ease-in-out infinite;cursor:copy}

/* tile footer: Cancel and Remove slot (small text links) */
[data-ipp-root] .ipp-tile-actions{display:flex;justify-content:flex-end;gap:8px;flex:0 0 auto;margin-top:2px;position:relative;z-index:2}
[data-ipp-root] .ipp-list-tile .ipp-tile-actions{margin-left:auto;align-self:flex-end}
[data-ipp-root] .ipp-tile-actions .ix-revert{font-size:10.5px!important;padding:0 2px!important}
[data-ipp-root] .ipp-tile-actions .ipp-tile-remove{color:var(--ipp-text-light)!important}
[data-ipp-root] .ipp-tile-actions .ipp-tile-remove:hover{color:var(--ix-salmon-ink,#C0432B)!important}
[data-ipp-root] .ipp-tile-fail{font:600 10.5px var(--ipp-font-body);color:var(--ix-salmon-ink,#C0432B);line-height:1.3;flex:0 0 auto}
[data-ipp-root] .ipp-list-tile{gap:6px;flex-wrap:wrap}

/* Add tile inside the list grids (Events, Real Estate) */
[data-ipp-root] .ipp-list-tiles .ipp-add-tile{border:2.5px dotted var(--ipp-blue);background:transparent;
  align-items:center;justify-content:center;gap:10px;cursor:pointer;padding:10px;font:inherit;color:var(--ipp-blue-deep);transition:.18s}
[data-ipp-root] .ipp-list-tiles .ipp-add-tile:hover{background:var(--ipp-blue-ghost);border-color:var(--ipp-blue-deep)}
[data-ipp-root] .ipp-list-tiles .ipp-add-tile .ipp-add-circle{width:30px;height:30px;border-radius:50%;background:var(--ipp-blue);
  color:#fff;display:grid;place-items:center;font:400 20px var(--ipp-font-display);line-height:1}
[data-ipp-root] .ipp-list-tiles .ipp-add-tile .ipp-add-lbl{font:700 10.5px var(--ipp-font-body);text-transform:uppercase;letter-spacing:.10em}

/* Place bar */
[data-ipp-root] .ipp-place-bar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:8px;
  font:500 12.5px var(--ipp-font-body);color:var(--ipp-text-dark);
  background:var(--ix-gold-glow,rgba(196,163,90,.12));border:1.5px solid var(--ix-gold,#C4A35A)}
[data-ipp-root] .ipp-place-bar[hidden]{display:none}
[data-ipp-root] .ipp-place-bar .ix-revert{margin-left:auto}

/* Allocations lines: actions, gold, armed */
[data-ipp-root] .ipp-al-row{display:flex;align-items:flex-start;gap:8px}
[data-ipp-root] .ipp-al-row .ipp-al-t{flex:1;min-width:0}
[data-ipp-root] .ipp-al-act{flex:0 0 auto;display:flex;align-items:center}
[data-ipp-root] .ipp-al-act .ix-btn{font-size:10.5px;padding:3px 9px;min-height:0;line-height:1.2}
[data-ipp-root] .ipp-al-act .ix-revert{font-size:10.5px!important}
[data-ipp-root] .ipp-al-it--gold{border:2px solid var(--ix-gold,#C4A35A);background:var(--ix-gold-glow,rgba(196,163,90,.12));padding:6px 8px}
[data-ipp-root] .ipp-al-it--armed{outline:2px dashed var(--ix-gold,#C4A35A);outline-offset:1px}
[data-ipp-root] .ipp-al-word--gold{color:var(--ix-gold-ink,#8A6E2E);font-weight:700}

/* the slot picker panel (inside the IPP root, fixed to the viewport) */
[data-ipp-root] .ipp-sp{position:fixed;z-index:60;display:flex;flex-direction:column;gap:8px;overflow-y:auto;
  background:#fff;border:1px solid var(--ipp-border);border-radius:10px;padding:10px 12px 12px;
  box-shadow:0 14px 40px -10px rgba(26,58,58,.32),0 2px 8px -2px rgba(26,58,58,.16);font-family:var(--ipp-font-body)}
[data-ipp-root] .ipp-sp[hidden]{display:none}
[data-ipp-root] .ipp-sp-head{display:flex;align-items:center;gap:6px;font:500 12.5px var(--ipp-font-body);color:var(--ipp-text-dark)}
[data-ipp-root] .ipp-sp-head .ix-revert{margin-left:auto}
[data-ipp-root] .ipp-sp-cur{font:500 12px var(--ipp-font-body);color:var(--ipp-text-mid)}
[data-ipp-root] .ipp-sp-sec{font:700 10px var(--ipp-font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ipp-text-light);margin-top:2px}
[data-ipp-root] .ipp-sp-list{display:flex;flex-direction:column;border:1px solid var(--ipp-border);border-radius:8px;overflow:hidden;flex:0 0 auto}
[data-ipp-root] .ipp-sp-list--avail{max-height:240px;overflow-y:auto}
[data-ipp-root] .ipp-sp .ix-picker-option.ipp-sp-opt{display:flex!important;flex-direction:column;gap:1px}
[data-ipp-root] .ipp-sp-t{font-weight:600}
[data-ipp-root] .ipp-sp-availbox{display:flex;flex-direction:column;gap:6px}
[data-ipp-root] .ipp-sp-foot{border-top:1px solid var(--ipp-border);padding-top:8px;display:flex}
[data-ipp-root] .ipp-sp-foot .ipp-sp-empty:hover{color:var(--ix-salmon-ink,#C0432B)!important}

/* save bar: Save and Cancel all, pushed right */
[data-ipp-root] .ipp-savebar .ipp-board-actions{margin-left:auto;display:inline-flex;align-items:center;gap:14px}
[data-ipp-root] .ipp-savebar .ipp-board-actions [hidden]{display:none!important}
[data-ipp-root] .ipp-savebar.saving .ipp-board-actions .ix-btn{opacity:.7;cursor:progress}

/* ════════════════════════════════════════════════════════════
   v1.12 · the Add article tile fills its column
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add.ipp-add-tile{
  width:100%;min-width:0;justify-self:stretch;align-self:stretch;box-sizing:border-box;
  aspect-ratio:auto;height:auto;min-height:180px;margin:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add.ipp-add-tile .ipp-add-circle{flex:0 0 auto}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add.ipp-add-tile .ipp-add-lbl{display:block}
[data-ipp-root] .ipp-list-tiles[hidden]{display:none}

/* ════════════════════════════════════════════════════════════
   v1.13 · slot picker: shown, not offered (IA55)
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-sp .ix-picker-option.ipp-sp-opt--off{cursor:default!important;opacity:.55;background-color:transparent!important}
[data-ipp-root] .ipp-sp .ix-picker-option.ipp-sp-opt--off:hover{background-color:transparent!important}

/* ════════════════════════════════════════════════════════════
   v1.14 · a hidden Cancel stays hidden (beats ix-revert's !important)
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ix-revert.ix-revert[hidden],
[data-ipp-root] button.ix-revert[hidden]{display:none!important}

/* ════════════════════════════════════════════════════════════
   v1.15 · Greeting boxes: one height, level bottoms
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-row{align-items:start}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-input{
  box-sizing:border-box;height:96px;min-height:96px;max-height:96px;resize:none;overflow-y:auto;display:block}
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-field .ipp-char-count{height:16px;line-height:16px}

/* ════════════════════════════════════════════════════════════
   v1.16 · Link (slice 3)
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-al-act{gap:6px}
[data-ipp-root] .ipp-al-it--linking{outline:2px solid var(--ix-blue,#5B7FFF);outline-offset:1px}
[data-ipp-root] .ipp-al-act .ix-btn.ipp-al-soon{opacity:.55;cursor:help}
[data-ipp-root] .ipp-al-act .ix-btn.ipp-al-soon:hover{opacity:.75}
[data-ipp-root] .ipp-al-sub .ix-revert.ipp-al-linkcancel{font-size:10.5px!important;margin-left:2px}
[data-ipp-root] .ipp-al-sub .ix-revert.ipp-al-linkcancel[hidden]{display:none!important}

/* ════════════════════════════════════════════════════════════
   v1.17 · line buttons on their own row, compact for real
   ix-buttons sets .ix-btn sizing with !important at (0,1,0); these
   carry !important at (0,4,0), so they win.
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-al-it > .ipp-al-act{display:flex;justify-content:flex-end;align-items:center;gap:6px;margin-top:6px}
[data-ipp-root] .ipp-al-it .ipp-al-act .ix-btn{
  padding:3px 9px !important;min-height:0 !important;height:auto !important;
  font-size:10.5px !important;line-height:1.3 !important;letter-spacing:.02em !important}
[data-ipp-root] .ipp-al-it .ipp-al-act .ix-revert{font-size:10.5px !important}

/* ════════════════════════════════════════════════════════════
   v1.18 — the Allocations ledger (IPP Build S6)
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-rail-right .ipp-card.ipp-al-card{gap:0}
[data-ipp-root] .ipp-al-head{display:flex;align-items:center;gap:8px;padding:0 4px 10px}
[data-ipp-root] .ipp-al-head h4.ipp-al-title{font:600 20px var(--ipp-font-display,'Fraunces',Georgia,serif)!important;
  letter-spacing:-.005em!important;text-transform:none!important;color:var(--ipp-text-dark,#1e2a3a)!important;margin:0!important;line-height:1.2}
[data-ipp-root] .ipp-al-headicon{margin-left:auto;display:inline-flex;align-items:center;color:var(--ix-text-light,#6B7280)}
[data-ipp-root] .ipp-al-head .ipp-al-reload{margin-left:0;display:inline-flex;align-items:center;padding:2px;
  color:var(--ix-text-light,#6B7280);background:none;border:none;cursor:pointer}
[data-ipp-root] .ipp-al-head .ipp-al-reload:hover{color:var(--ipp-text-dark,#1e2a3a)}
[data-ipp-root] .ipp-al-reload[hidden],[data-ipp-root] .ipp-al-lock[hidden]{display:none!important}
[data-ipp-root] .ipp-al-lock{display:inline-flex;padding:2px}

[data-ipp-root] .ipp-al-list{gap:0;margin:0;padding:0}
[data-ipp-root] .ipp-al-sec{display:flex;flex-direction:column;margin-top:26px}
[data-ipp-root] .ipp-al-sec:first-child{margin-top:0}
[data-ipp-root] .ipp-al-sechead{font:700 11.5px 'DM Mono',ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ipp-text-dark,#1e2a3a);padding:0 4px 7px;border-bottom:2px solid #CFC6AF;margin-bottom:2px}

/* one row: fixed 38px (UX-030) */
[data-ipp-root] .ipp-al-line{box-sizing:border-box;height:38px;flex:0 0 38px;padding:0 10px;display:flex;align-items:center;gap:10px;
  border-bottom:1px solid #E4E0D4;background:transparent}
[data-ipp-root] .ipp-al-line--gold{box-shadow:inset 0 0 0 2px var(--ix-gold,#C4A35A);background:var(--ix-gold-glow,rgba(196,163,90,.12));border-radius:4px}
[data-ipp-root] .ipp-al-name{flex:1;min-width:0;font:400 13px var(--ipp-font-body,'DM Sans',system-ui,sans-serif);color:var(--ipp-text-dark,#1e2a3a);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
[data-ipp-root] .ipp-al-name .ipp-al-cust{color:var(--ix-text-light,#6B7280);font-weight:400}
[data-ipp-root] .ipp-al-col{flex:0 0 68px;width:68px;text-align:right;white-space:nowrap}
[data-ipp-root] .ipp-al-assign{appearance:none;background:none;border:none;padding:0;cursor:pointer;
  font:600 12px var(--ipp-font-body,'DM Sans',sans-serif);color:var(--ix-blue-deep,#3F57B0)}
[data-ipp-root] .ipp-al-assign:hover{text-decoration:underline}
[data-ipp-root] .ipp-al-cancel{appearance:none;background:none;border:none;padding:0;cursor:pointer;
  font:500 12px var(--ipp-font-body,'DM Sans',sans-serif);color:var(--ix-text-light,#6B7280);text-decoration:underline}
[data-ipp-root] .ipp-al-cancel:hover{color:var(--ipp-text-dark,#1e2a3a)}
[data-ipp-root] .ipp-al-line--fail .ipp-al-name{color:var(--ix-salmon-ink,#C0432B)}

/* the dot: 9px, state only */
[data-ipp-root] .ipp-dot{display:inline-block;box-sizing:border-box;width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:transparent}
[data-ipp-root] .ipp-dot--gray{border:1.5px solid var(--ix-text-light,#6B7280)}
[data-ipp-root] .ipp-dot--orange{border:2px solid var(--ix-salmon-deep,#D25842)}
[data-ipp-root] .ipp-dot--hgreen{border:2px solid var(--ix-ok,#1F7A5C)}
[data-ipp-root] .ipp-dot--green{background:var(--ix-ok,#1F7A5C);border:1.5px solid var(--ix-ok,#1F7A5C)}
[data-ipp-root] .ipp-dot--gold{background:var(--ix-gold,#C4A35A);border:1.5px solid var(--ix-gold,#C4A35A)}

/* the legend, pinned at the bottom of the card */
[data-ipp-root] .ipp-al-legend{flex:0 0 auto;margin-top:auto;padding:11px 4px 0;border-top:1px solid #DDD9C8;
  display:flex;flex-wrap:wrap;gap:6px 14px;font:400 11px var(--ipp-font-body,'DM Sans',sans-serif);color:#4a5568}
[data-ipp-root] .ipp-al-legend span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
[data-ipp-root] .ipp-al-list{margin-bottom:24px}

/* tiles holding a print item with no article (hollow green) */
[data-ipp-root] .ipp-ctile.ipp-slot--held:not(.ipp-dirty){border:2px solid var(--ix-ok,#1F7A5C);background:#fff}
[data-ipp-root] .ipp-ctile.ipp-slot--held .ipp-held-img{flex:0 0 76px;min-height:0;height:76px}
[data-ipp-root] .ipp-ctile .ipp-tile-noart{font:600 11px var(--ipp-font-body,'DM Sans',sans-serif);color:var(--ix-salmon-ink,#C0432B)}
[data-ipp-root] .ipp-ctile .ipp-tile-create{margin-top:auto}
[data-ipp-root] .ipp-create-btn{appearance:none;width:100%;padding:7px 0;border:none;border-radius:6px;cursor:pointer;
  font:600 12px var(--ipp-font-body,'DM Sans',sans-serif);background:var(--ix-blue-deep,#3F57B0);color:#fff}
[data-ipp-root] .ipp-create-btn:hover{filter:brightness(1.08)}
[data-ipp-root] .ipp-list-tile.ipp-slot--held:not(.ipp-dirty){border:2px solid var(--ix-ok,#1F7A5C);background:#fff}
[data-ipp-root] .ipp-list-tile .ipp-list-title{font:600 12.5px var(--ipp-font-display,'Fraunces',Georgia,serif);line-height:1.25;
  color:var(--ipp-text-dark,#1e2a3a);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

/* a locked plan: no edit controls (the JS does not draw them either) */
[data-ipp-root] .ipp-plan-locked .ipp-al-assign,
[data-ipp-root] .ipp-plan-locked .ipp-al-cancel,
[data-ipp-root] .ipp-plan-locked .ipp-tile-create,
[data-ipp-root] .ipp-plan-locked .ipp-tile-remove,
[data-ipp-root] .ipp-plan-locked .ipp-add-tile{display:none!important}
[data-ipp-root] .ipp-plan-locked .ipp-ctile[data-ipp-open]{cursor:default}

/* ════════════════════════════════════════════════════════════
   v1.19 — layout B "Anchor" (IPP Build S6)
   ════════════════════════════════════════════════════════════ */
/* sections are cards on the page */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-canvas{gap:20px}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-section{margin-top:0}   /* v1.28: the canvas gap alone */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-section:not([hidden]){background:#fff;border-radius:14px;
  box-shadow:0 1px 2px rgba(30,42,58,.06),0 8px 24px rgba(30,42,58,.06);padding:22px 26px 24px;gap:16px;flex:0 0 auto}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-head{gap:14px;padding:0;margin-bottom:0}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-head h5{font:600 21px var(--ipp-font-display,'Fraunces',Georgia,serif);
  text-transform:none;letter-spacing:-.005em;color:var(--ix-text-dark,#1E2A3A)}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-articles .ipp-cat-head h5{font-size:28px;letter-spacing:-.01em}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-head .ipp-ct{font:400 12.5px var(--ix-font-mono,'DM Mono',ui-monospace,monospace);
  color:var(--ix-text-mid,#5A6478)}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-head .ipp-ct b{color:var(--ix-text-dark,#1E2A3A)}

/* article tiles fill the card */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-articles .ipp-cat-tiles{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-articles .ipp-ctile{border-radius:12px;padding:12px}

/* Greeting: Title and Super-short on one line each, Paragraph under them */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-cat-head .ipp-ct{order:1;margin-left:0;font-family:var(--ipp-font-body,'DM Sans',sans-serif);font-size:13px}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-ai-generate-btn{order:2;margin-left:auto}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-ai-undo-btn{order:3}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-actions{order:4}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-row{grid-template-columns:1fr 1fr;gap:14px 18px;max-width:1120px;margin-top:0}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field:nth-child(1){grid-column:1;grid-row:1}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field:nth-child(3){grid-column:2;grid-row:1}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field:nth-child(2){grid-column:1 / span 2;grid-row:2}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-title,
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-ss{height:44px;min-height:44px;max-height:44px;
  white-space:nowrap;overflow:hidden;padding-top:11px;padding-bottom:11px}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-para{height:76px;min-height:76px;max-height:76px}

/* Content Controller on the dark rail */
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-card{background:transparent;border:0;border-top:1px solid var(--ix-rail-lift,#24504F);
  border-radius:0;box-shadow:none;padding:20px 0 0}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-card h4{font:500 11px var(--ix-font-mono,'DM Mono',ui-monospace,monospace);letter-spacing:.14em;
  color:var(--ix-rail-text,#B9C2C2);margin:0 0 6px}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item{min-height:40px;padding:0 8px;margin:0 -8px;gap:12px}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item:hover{background:rgba(255,255,255,.06)}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-locked:hover{background:transparent}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-label{font:500 14px var(--ipp-font-body,'DM Sans',sans-serif);color:var(--ix-rail-text,#B9C2C2)}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-on .ipp-cc-label{color:#fff}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item .ipp-cc-box{width:18px!important;height:18px!important;min-width:18px!important;max-width:18px!important;
  flex:0 0 18px!important;border:1.5px solid #6E8585!important;background:transparent!important;border-radius:4px!important}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-on .ipp-cc-box{background:#fff!important;border-color:#fff!important}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-on .ipp-cc-box::after{left:5.5px;top:2px;border-color:var(--ix-rail,#1A3A3A)}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-locked.ipp-on .ipp-cc-box{background:var(--ix-rail-text,#B9C2C2)!important;border-color:var(--ix-rail-text,#B9C2C2)!important}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-count{background:transparent;padding:0;font:400 11px var(--ix-font-mono,'DM Mono',ui-monospace,monospace);
  color:var(--ix-rail-text,#B9C2C2)}

/* the Allocations card */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-rail-right{min-height:0}
[data-ipp-root] .ipp-rail-right .ipp-card.ipp-al-card{width:370px;box-sizing:border-box;border:0;border-radius:14px;padding:22px 22px 18px;
  box-shadow:0 1px 2px rgba(30,42,58,.06),0 8px 24px rgba(30,42,58,.06)}
[data-ipp-root] .ipp-al-head{gap:8px;padding:0;flex-wrap:nowrap}
[data-ipp-root] .ipp-al-head h4.ipp-al-title{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-size:22px!important;letter-spacing:-.01em!important}
[data-ipp-root] .ipp-al-head .ipp-al-hbtn{box-sizing:border-box;flex:0 0 34px;width:34px;height:34px;margin:0;padding:0;
  display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--ix-border,#E4E0D4);border-radius:8px;
  background:#fff;color:var(--ix-text-mid,#5A6478);cursor:pointer}
[data-ipp-root] .ipp-al-head .ipp-al-hbtn:hover{color:var(--ix-text-dark,#1E2A3A);border-color:#CFC8B6}
[data-ipp-root] .ipp-al-head .ipp-al-lock{cursor:default}
[data-ipp-root] .ipp-al-head .ipp-al-hbtn[hidden]{display:none!important}
[data-ipp-root] .ipp-al-subtitle{min-height:18px;margin-top:2px;display:flex;align-items:center;
  font:400 11px var(--ix-font-mono,'DM Mono',ui-monospace,monospace);color:var(--ix-text-light,#6B7280)}
[data-ipp-root] .ipp-al-card .ipp-al-list{margin-top:26px}
[data-ipp-root] .ipp-al-sechead{color:var(--ix-text-dark,#1E2A3A);border-bottom-color:var(--ix-text-dark,#1E2A3A)}
[data-ipp-root] .ipp-al-legend{display:grid;grid-template-columns:1fr 1fr;gap:9px 12px;padding-top:14px;font-size:12px;color:var(--ix-text-mid,#5A6478)}
[data-ipp-root] .ipp-al-legend span{white-space:nowrap;gap:7px}

/* refresh turns while it reads */
@keyframes ippAlSpin{to{transform:rotate(360deg)}}
[data-ipp-root] .ipp-al-reload.ipp-al-spin svg{animation:ippAlSpin .8s linear infinite}
@media (prefers-reduced-motion:reduce){[data-ipp-root] .ipp-al-reload.ipp-al-spin svg{animation:none}}

/* collapsed: a 48px strip */
[data-ipp-root] .ipp-al-strip{display:none}
[data-ipp-root] .ipp-al-folded .ipp-rail-right .ipp-card.ipp-al-card{display:none!important}
[data-ipp-root] .ipp-al-folded .ipp-al-strip{appearance:none;box-sizing:border-box;width:48px;flex:1 1 auto;min-height:0;margin:0;
  display:flex;flex-direction:column;align-items:center;gap:18px;padding:16px 0;border:0;border-radius:14px;background:#fff;
  box-shadow:0 1px 2px rgba(30,42,58,.06),0 8px 24px rgba(30,42,58,.06);color:var(--ix-text-mid,#5A6478);cursor:pointer;font:inherit}
[data-ipp-root] .ipp-al-folded .ipp-al-strip:hover{color:var(--ix-text-dark,#1E2A3A)}
[data-ipp-root] .ipp-al-folded .ipp-al-strip:focus-visible{outline:2px solid var(--ix-blue-deep,#3F57B0);outline-offset:2px}
[data-ipp-root] .ipp-al-strip-label{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;
  font:500 12px var(--ix-font-mono,'DM Mono',ui-monospace,monospace);letter-spacing:.14em;text-transform:uppercase}
[data-ipp-root] .ipp-al-strip-dots{display:flex;flex-direction:column;align-items:center;gap:8px}

/* a locked plan closes all editing */
[data-ipp-root] .ipp-plan-locked .ipp-ai-generate-btn,
[data-ipp-root] .ipp-plan-locked .ipp-ai-undo-btn,
[data-ipp-root] .ipp-plan-locked .ipp-gr-actions{display:none!important}
[data-ipp-root] .ipp-plan-locked .ipp-greeting-input{background:var(--ix-cream,#FAF9F5);cursor:default}
[data-ipp-root] .ipp-plan-locked .ipp-greeting-input:focus{box-shadow:none;border-color:var(--ix-border,#E4E0D4)}
[data-ipp-root] .ipp-plan-locked .ipp-cc-item{cursor:default;pointer-events:none}

/* ═══ v1.20 · Greeting last, AI Generate gate (IPP Build S7) ═══ */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-actions{order:4;margin-left:auto}
[data-ipp-root] .ipp-cat-greeting .ipp-gr-body{display:grid;grid-template-columns:160px minmax(0,1fr);gap:22px;align-items:start}
[data-ipp-root] .ipp-cat-greeting .ipp-gr-gen{display:flex;flex-direction:column;gap:8px;padding-top:21px}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-row{max-width:none}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-generate-btn{
  order:0;margin:0;width:160px;height:148px;flex-direction:column;justify-content:center;gap:10px;
  border-radius:12px;border:0;padding:12px;
  font:700 15px var(--ipp-font-body,'DM Sans',sans-serif);letter-spacing:.01em;
  background:var(--ix-ok,#1F7A5C);color:var(--ix-text-invert,#FFFFFF);
  box-shadow:0 8px 20px -10px rgba(31,122,92,.7);transform:none;cursor:pointer}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-generate-btn .ipp-ai-icon{width:30px;height:30px;color:currentColor}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-generate-btn:hover:not(:disabled){
  background:#186349;border:0;transform:translateY(-1px);box-shadow:0 12px 24px -12px rgba(31,122,92,.8)}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-generate-btn:focus-visible{
  outline:3px solid var(--ix-gold,#C4A35A);outline-offset:3px}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-generate-btn:disabled{
  background:#EFECE4;color:var(--ix-text-mid,#5A6478);box-shadow:none;cursor:default;transform:none}
[data-ipp-root] .ipp-cat-greeting .ipp-gr-why{font:500 12px/1.4 var(--ipp-font-body,'DM Sans',sans-serif);color:var(--ix-text-mid,#5A6478)}
[data-ipp-root] .ipp-cat-greeting .ipp-gr-why--ok{color:var(--ix-ok,#1F7A5C);font-weight:600}
[data-ipp-root] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-undo-btn{align-self:flex-start}
@media (max-width:900px){
  [data-ipp-root] .ipp-cat-greeting .ipp-gr-body{grid-template-columns:1fr}
  [data-ipp-root] .ipp-cat-greeting .ipp-gr-gen{padding-top:0}
  [data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-generate-btn{width:100%;height:64px;flex-direction:row}
}

/* v1.21 — slice 4: list tiles and the list panel */
[data-ipp-root] .ipp-list-names{flex-basis:100%;font:500 11.5px var(--ipp-font-body);color:var(--ipp-text-mid);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
[data-ipp-root] .ipp-list-why{flex-basis:100%;font:500 11.5px var(--ipp-font-body);color:var(--ix-text-mid,#5A6478)}
[data-ipp-root] .ipp-sp-list--sel{display:flex;flex-direction:column;gap:4px}
[data-ipp-root] .ipp-sp-lsel{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:8px;
  padding:6px 8px;border:1px solid var(--ipp-border);border-radius:8px;background:#fff}
[data-ipp-root] .ipp-sp-lsel .ipp-sp-t{grid-column:1;font:600 12.5px var(--ipp-font-body);color:var(--ipp-text-dark)}
[data-ipp-root] .ipp-sp-lsel .ix-picker-option-meta{grid-column:1}
[data-ipp-root] .ipp-sp-lsel .ipp-sp-lrm{grid-column:2;grid-row:1 / span 2}
[data-ipp-root] .ipp-sp-lsel .ipp-sp-lrm:hover{color:var(--ix-salmon-ink,#C0432B)!important}
[data-ipp-root] .ipp-sp-note{font:500 11.5px var(--ipp-font-body);color:var(--ix-text-mid,#5A6478)}


/* ════════════════════════════════════════════════════════════
   v1.23 (pairs ipp-picker-v1.29.js)
   ════════════════════════════════════════════════════════════ */
/* Greeting boxes fit their words. JS sets the height; these lift the
   fixed heights, the clip and the one-line rule that hid text. */
[data-ipp-root] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-input,
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-title,
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-ss,
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-para{
  height:auto;max-height:none;white-space:pre-wrap;overflow:hidden;resize:none;line-height:1.45}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-title,
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-ss{min-height:44px}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-greeting-field .ipp-greeting-para{min-height:76px}

/* AI Generate while writing: stays green, stars pulse. */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-generate-btn{position:relative;overflow:hidden}
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-greeting .ipp-gr-gen .ipp-ai-generate-btn[aria-busy="true"]{
  background:var(--ix-ok,#1F7A5C);color:var(--ix-text-invert,#FFFFFF);cursor:progress;
  box-shadow:0 8px 20px -10px rgba(31,122,92,.7)}
[data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"] .ipp-ai-icon path{transform-box:fill-box;transform-origin:center;
  animation:ipp-star-pulse 1.1s ease-in-out infinite}
[data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"] .ipp-ai-icon path:nth-child(2){animation-delay:.45s}
[data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"]::before,
[data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"]::after{
  content:"\2726";position:absolute;color:currentColor;pointer-events:none;
  animation:ipp-star-twinkle 1.4s ease-in-out infinite}
[data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"]::before{top:18%;left:20%;font-size:11px}
[data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"]::after{top:26%;right:18%;font-size:14px;animation-delay:.7s}
@keyframes ipp-star-pulse{0%,100%{transform:scale(.8);opacity:.6}50%{transform:scale(1.18);opacity:1}}
@keyframes ipp-star-twinkle{0%,100%{transform:scale(.4) rotate(0);opacity:0}50%{transform:scale(1) rotate(45deg);opacity:.9}}
@media (prefers-reduced-motion:reduce){
  [data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"] .ipp-ai-icon path,
  [data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"]::before,
  [data-ipp-root] .ipp-ai-generate-btn[aria-busy="true"]::after{animation-duration:2.4s}
}

/* v1.24 — article tiles: same-size pictures, two-line titles, Section and type */
[data-ipp-root] .ipp-cat-articles .ipp-ctile{aspect-ratio:auto}
[data-ipp-root] .ipp-cat-articles .ipp-ctile.add{aspect-ratio:auto;min-height:100%}
[data-ipp-root] .ipp-cat-articles .ipp-ctile .ipp-art-thumb,
[data-ipp-root] .ipp-cat-articles .ipp-ctile .ipp-ghost-img{flex:0 0 auto;width:100%;height:auto;min-height:0;aspect-ratio:4/3}
[data-ipp-root] .ipp-cat-articles .ipp-ctile .ipp-ttitle{min-height:calc(2em * 1.22)}
[data-ipp-root] .ipp-tfacts{display:flex;flex-direction:column;gap:4px;margin-top:auto}
[data-ipp-root] .ipp-tsec-sel{width:100%;height:24px;padding:0 6px;border:1px solid var(--ipp-border-input);border-radius:5px;
  background:#fff;font:500 11px var(--ipp-font-body);color:var(--ipp-text-dark);cursor:pointer}
[data-ipp-root] .ipp-tsec-sel.is-none{color:var(--ipp-err)}
[data-ipp-root] .ipp-tsec-sel.is-changed{border-color:var(--ipp-edit-dirty-border, var(--ipp-gold));box-shadow:0 0 0 1px var(--ipp-edit-dirty-border, var(--ipp-gold))}
[data-ipp-root] .ipp-tsec-sel:disabled{cursor:default;background:var(--ipp-cream)}
[data-ipp-root] .ipp-tsec-wait{font-size:10.5px;color:var(--ipp-text-light)}
[data-ipp-root] .ipp-ttype{display:flex;align-items:center;gap:6px;min-height:18px}
[data-ipp-root] .ipp-ttag{font:700 10px var(--ipp-font-body);letter-spacing:.04em;padding:2px 6px;border-radius:4px;
  background:var(--ipp-cream-deep);color:var(--ipp-text-dark)}
[data-ipp-root] .ipp-ttag.is-bad{background:#fff;color:var(--ipp-err);box-shadow:inset 0 0 0 1.5px var(--ipp-err)}
[data-ipp-root] .ipp-tclash{font:600 10.5px var(--ipp-font-body);color:var(--ipp-err)}
[data-ipp-root] .ipp-tsec-cx{margin-left:auto;font-size:10.5px}

/* v1.25 — the Section as text (ipp-picker-v1.34.js) */
[data-ipp-root] .ipp-tsec-name{display:flex;align-items:center;gap:6px;min-height:20px;font:500 11.5px var(--ipp-font-body);color:var(--ipp-text-dark);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
[data-ipp-root] .ipp-tsec-dot{flex:none;width:8px;height:8px;border-radius:2px;background:#9DAA8C}
[data-ipp-root] .ipp-tsec-none{min-height:20px;display:flex;align-items:center;font:600 11.5px var(--ipp-font-body);color:var(--ipp-err)}
[data-ipp-root] .ipp-ttag.is-none{background:#fff;color:var(--ipp-text-mid);box-shadow:none;outline:1.5px dashed #B9B2A2;outline-offset:-1.5px}
[data-ipp-root] .ipp-tsec-go{margin-left:auto;padding:0;border:0;background:none;font:500 10.5px var(--ipp-font-body);color:#3F57B0;text-decoration:underline;cursor:pointer}
[data-ipp-root] .ipp-tsec-go:hover{color:#2C3F8A}
[data-ipp-root] .ipp-tsec-go:focus-visible{outline:2px solid #3F57B0;outline-offset:2px;border-radius:2px}

/* ════════════════════════════════════════════════════════════
   v1.26 · Content Controller from the catalog (ipp-picker-v1.37.js)
   ════════════════════════════════════════════════════════════ */
[data-ipp-root] .ipp-cc-list{display:flex;flex-direction:column;gap:0}
[data-ipp-root] .ipp-cc-wait{font:400 12px var(--ipp-font-body);color:var(--ix-rail-text,#B9C2C2);padding:6px 0;line-height:1.4}
[data-ipp-root] .ipp-cc-wait--bad{color:var(--ix-rail-alert,#F08A73)}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item{display:grid;grid-template-columns:18px 1fr 28px;grid-template-rows:34px;column-gap:11px;row-gap:0;align-items:center;
  box-sizing:border-box;min-height:34px;height:34px;padding:0 8px;margin:0 -8px;border:1.5px solid transparent;border-radius:7px}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item:focus-visible{outline:2px solid #fff;outline-offset:1px}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-size:13.5px}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-count{text-align:right;min-width:0}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-count[hidden]{display:block;visibility:hidden}
/* a change waiting: gold, one note line, own Cancel */
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-cc-pending{grid-template-rows:30px 16px;height:50px;min-height:50px;
  border-color:var(--ipp-edit-dirty-border,#C4A35A);background:var(--ipp-edit-dirty-glow,rgba(196,163,90,.12))}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-cc-pending:hover{background:var(--ipp-edit-dirty-glow,rgba(196,163,90,.12))}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-cc-pending .ipp-cc-box{border-color:var(--ix-gold-bright,#E8C172)!important}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-item.ipp-cc-pending.ipp-on .ipp-cc-box{background:var(--ix-gold-bright,#E8C172)!important;border-color:var(--ix-gold-bright,#E8C172)!important}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-note{grid-column:2/4;grid-row:2;align-self:start;display:flex;align-items:center;justify-content:space-between;gap:8px;
  font:400 9.5px var(--ix-font-mono,'DM Mono',ui-monospace,monospace);letter-spacing:.02em;color:var(--ix-gold-bright,#E8C172);white-space:nowrap;overflow:hidden;min-width:0}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-cx{flex:none;font:500 10.5px var(--ipp-font-body,'DM Sans',sans-serif);color:var(--ix-gold-bright,#E8C172);
  background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
[data-ipp-root].ipp-b .ipp-rail .ipp-cc-cx:hover{color:#fff}
[data-ipp-root] .ipp-plan-locked .ipp-cc-cx{display:none}
/* the rail's Editorial button: name, then ticked/total (as Layout's) */
.ipp-switcher button.ipp-pk-tab{display:flex;align-items:center}
.ipp-switcher button.ipp-pk-tab .ipp-pk-tabname{flex:1;text-align:left}
.ipp-switcher button.ipp-pk-tab .ipp-pk-tabn{font:500 12px var(--ix-font-mono,'DM Mono',ui-monospace,monospace);opacity:.9}

/* ── v1.27 · Done picking (one tick per list frame) ─────────────── */
[data-ipp-root] .ipp-view[data-view="picker"] .ipp-cat-head .ipp-done-host{margin-left:auto;display:inline-flex;align-items:center;gap:10px;flex:0 0 auto}
[data-ipp-root] .ipp-done{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 10px 0 8px;border:1.5px solid var(--ix-border,#D9DDE3);border-radius:8px;background:#fff;
  font:600 12.5px var(--ipp-font-body,'DM Sans',sans-serif);color:var(--ix-text-dark,#1E2A3A);cursor:pointer;user-select:none;transition:.13s}
[data-ipp-root] .ipp-done:hover:not(:disabled){background:var(--ipp-cream,#FAF9F5)}
[data-ipp-root] .ipp-done:disabled{cursor:not-allowed;opacity:.55}
[data-ipp-root] .ipp-done-box{box-sizing:border-box;width:16px;height:16px;flex:0 0 16px;border:1.5px solid var(--ipp-border-input,#C9CED6);border-radius:3px;background:#fff;position:relative;transition:.13s}
[data-ipp-root] .ipp-done.ipp-on .ipp-done-box{background:var(--ipp-blue,#5b7fff);border-color:var(--ipp-blue,#5b7fff)}
[data-ipp-root] .ipp-done.ipp-on .ipp-done-box::after{content:"";position:absolute;left:4.5px;top:1.5px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
[data-ipp-root] .ipp-done.ipp-dirty{border:2px solid var(--ix-changed-border,#C4A35A);background:var(--ix-gold-glow,rgba(196,163,90,.12))}
[data-ipp-root] .ipp-done-cancel{font-size:12px}
[data-ipp-root] .ipp-done-note{font:500 11.5px var(--ipp-font-body,'DM Sans',sans-serif);color:var(--ix-text-mid,#5A6478)}
[data-ipp-root] .ipp-list-why--bad,[data-ipp-root] .ipp-sp-note--bad{color:var(--ix-salmon-ink,#C0432B);font-weight:600}
