/* Обещание айдола на экране песни (public/idol-promise.js, 29.10.2026). Основа — карточка просьбы о пушах
   (public/push-ask.css: .pa-card, пузырь, «печатает…», кнопки 44 px); здесь только своё: крестик, карточка-приманка
   (размытая фотокарточка с замком — открывается, когда проверка сдана), главная кнопка во всю ширину и ряд
   мелких «чипов» под ней (мессенджер · На почту ✓ · Не надо), вопросы проверки сеткой 2×2. */
.ip-card .pa-top{position:relative;padding-right:30px}
.ip-x{position:absolute;top:-4px;right:-4px;width:44px;height:44px;border:0;background:transparent;
  color:var(--pa-mut);font:inherit;font-size:22px;line-height:1;cursor:pointer;border-radius:50%;
  -webkit-tap-highlight-color:transparent}
.ip-x:focus-visible{outline:2px solid #6C46D8;outline-offset:-4px}
/* Карточка-приманка. Размытие — фильтр картинки, замок поверх; .open снимает и то и другое (переход 600 мс). */
.ip-card-img{position:relative;display:block;width:96px;height:144px;margin:2px 0 0;border-radius:10px;overflow:hidden;
  box-shadow:0 0 0 1px var(--pa-bub-line),0 6px 16px rgba(23,32,56,.18);flex:0 0 auto}
.ip-card-img img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 25%;
  filter:blur(9px) saturate(1.15);transform:scale(1.12);transition:filter 600ms var(--ease,ease),transform 600ms var(--ease,ease)}
.ip-lock{position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;fill:none;stroke:#fff;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 3px rgba(0,0,0,.55));transition:opacity 300ms}
.ip-card-img.open img{filter:none;transform:none}
/* Запас: размытый портрет айдола под карточкой — виден, пока карточка грузится, и вместо неё, если не загрузилась (30.10). */
.ip-card-img::before{content:'';position:absolute;inset:-14px;background:var(--ip-fb,none) 50% 25%/cover no-repeat;filter:blur(9px) saturate(1.15)}
.ip-card-img img{position:relative;z-index:1}
.ip-lock{z-index:2}
.ip-card-img.open .ip-lock{opacity:0}
.ip-prize .ip-card-img{width:132px;height:198px;margin:2px auto 0}
.ip-body:empty{display:none}
.ip-ask{margin:0;font-size:14px;line-height:1.35;font-weight:700}
.ip-acts{flex-direction:column;align-items:stretch;gap:4px}
.ip-acts .ip-main{white-space:normal;line-height:1.25;padding:8px 16px;text-align:center}
.ip-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px 4px}
.ip-chip{min-height:44px;padding:0 10px;border:0;background:transparent;font:inherit;font-size:13.5px;font-weight:600;
  color:var(--pa-mut);cursor:pointer;border-radius:999px;-webkit-tap-highlight-color:transparent}
.ip-chip[aria-pressed="true"]{color:var(--pa-ok)}
.ip-chip:not(.ip-no):not(.ip-on):not([aria-pressed="true"]){text-decoration:underline;text-underline-offset:3px}
.ip-chip:disabled{opacity:.6;cursor:default}
.ip-chip:focus-visible,.ip-opt:focus-visible{outline:2px solid #6C46D8;outline-offset:2px}
.ip-inline{color:inherit;font-weight:700;text-underline-offset:3px}
.ip-code{display:inline-block;margin-left:4px;padding:2px 8px;border-radius:8px;background:var(--pa-bub);
  border:1px solid var(--pa-bub-line);color:inherit;font-size:16px;letter-spacing:.12em;user-select:all;-webkit-user-select:all}
/* Проверка: вопрос и четыре варианта сеткой 2×2 — палец попадает (44 px), длинный глосс переносится. */
.ip-quiz .ip-body{display:flex;flex-direction:column;gap:8px}
.ip-q{margin:0;font-size:15px;line-height:1.35;font-weight:700}
.ip-q b{font-size:18px}
.ip-step{display:inline-block;margin-right:4px;font-size:12px;font-weight:700;color:var(--pa-mut);font-variant-numeric:tabular-nums}
.ip-opts{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.ip-opt{min-height:44px;padding:8px 10px;border-radius:12px;border:1px solid var(--pa-bub-line);background:var(--pa-bub);
  color:inherit;font:inherit;font-size:14px;font-weight:600;line-height:1.25;text-align:center;overflow-wrap:anywhere;cursor:pointer;
  -webkit-tap-highlight-color:transparent}
.ip-opt:active{transform:scale(.98)}
.ip-score{margin:0;font-size:15px;font-weight:800}
.ip-res{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;font-size:14px;line-height:1.3}
.ip-res li{overflow-wrap:anywhere}
.ip-res .ip-yes span{color:var(--pa-ok);font-weight:800}
.ip-res .ip-no span{color:#B3261E;font-weight:800}
.ip-wait{display:flex;gap:4px;justify-content:center;padding:12px 0}
.ip-wait i{width:7px;height:7px;border-radius:50%;background:var(--pa-mut);opacity:.35;animation:pa-dot 900ms infinite ease-in-out}
.ip-wait i:nth-child(2){animation-delay:150ms}.ip-wait i:nth-child(3){animation-delay:300ms}
/* Высокая карточка на низком экране — прокрутка внутри, а не за край. */
.ip-card{max-height:calc(100dvh - 24px - env(safe-area-inset-bottom,0px));overflow-y:auto;overscroll-behavior:contain}
html[data-theme="dark"] .ip-res .ip-no span{color:#FF8A80}
html[data-theme="dark"] .ip-x:focus-visible,html[data-theme="dark"] .ip-chip:focus-visible,html[data-theme="dark"] .ip-opt:focus-visible{outline-color:#F3D9AC}
@media (prefers-reduced-motion:reduce){.ip-wait i{animation:none}.ip-card-img img{transition:none}}
/* Непрозрачный фон: на экране песни под карточкой яркие строки, и 2–3 % прозрачности .pa-card их просвечивали. */
.ip-card{background:linear-gradient(180deg,#fff,#F6DEC8)}
html[data-theme="dark"] .ip-card{background:linear-gradient(180deg,#302442,#1E1629)}
/* «Пришлю в Telegram ✓» — человек уже на связи (вошёл через Telegram/LINE): отметка, не кнопка. */
.ip-chip.ip-on{display:inline-flex;align-items:center;cursor:default;color:var(--pa-ok);text-decoration:none}
