/* ============================================================
   ipp-picker-v1.8.css — Picker view (+ tile dropdown panel styling)
   CHANGELOG
     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.
   ============================================================ */
100%{border-color:transparent;background:transparent}}

/* ── 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}
