/* ===== Стикер-паки: нижнее меню, конструктор, редактор, каталог, просмотр =====
   Слои по z-index: экраны 1500 < редактор 1550 < просмотр 9500 < тост 9999 <
   ui-confirm 13000 — чтобы подтверждения и тосты всегда были видны поверх своего экрана. */

/* «+» в шапке панели стикеров */
.sticker-header-actions{display:flex;align-items:center;gap:2px}
.sticker-add-btn{background:none;border:none;color:var(--accent);font-size:24px;line-height:1;width:34px;height:34px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;flex-shrink:0}
.sticker-add-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}
/* Название пака в панели — кликабельно, ведёт в полноэкранный просмотр этого пака */
.sticker-pack-name.clickable{cursor:pointer;display:flex;align-items:center;gap:5px}
.sticker-pack-name.clickable:hover{color:var(--accent)}
.sticker-item video{width:60px;height:60px;object-fit:contain}
/* Зажатие стикера — это жест приложения, а не «сохранить изображение» из браузера:
   гасим системное выделение/вызов меню и перетаскивание картинки. pointer-events на медиа
   снят ещё и затем, чтобы elementFromPoint отдавал саму плитку .sticker-item. */
.sticker-item{-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
.sticker-item img,.sticker-item video{pointer-events:none;-webkit-user-drag:none}
.sticker-preview{position:fixed;inset:0;z-index:9400;display:none;align-items:center;justify-content:center;
background:rgba(8,0,16,.72);backdrop-filter:blur(4px);animation:spPop .13s ease}
/* Палец ещё на экране — оверлей не должен перехватывать касания (см. setStickerPreviewHolding) */
.sticker-preview.holding{pointer-events:none}
.sticker-preview-card{display:flex;flex-direction:column;align-items:center;gap:16px;padding:18px;max-width:min(360px,88vw)}
.sticker-preview-stage{display:flex;align-items:center;justify-content:center;min-height:120px}
.sticker-preview-media{max-width:min(300px,72vw);max-height:52vh;width:auto;height:auto;object-fit:contain;
filter:drop-shadow(0 14px 40px rgba(0,0,0,.6))}
.sticker-preview-send{padding:12px 34px;border:none;border-radius:24px;background:var(--accent);color:#fff;
font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;transition:filter .15s,opacity .15s}
.sticker-preview-send:hover{filter:brightness(1.1)}
.sticker-preview.holding .sticker-preview-send{opacity:.5}

/* ---------- нижнее меню по «+» ---------- */
.sticker-sheet-overlay{position:fixed;inset:0;z-index:1500;display:none;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.55);padding:0}
.sticker-sheet{width:100%;max-width:460px;background:var(--bg-secondary);border:1px solid var(--border);border-bottom:none;border-radius:18px 18px 0 0;padding:14px 14px calc(14px + env(safe-area-inset-bottom,0px));box-shadow:0 -10px 40px var(--shadow);animation:spSheetUp .2s ease}
@keyframes spSheetUp{from{transform:translateY(20px);opacity:.6}to{transform:none;opacity:1}}
.sticker-sheet-title{font-size:13px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px 10px}
.sticker-sheet-item{width:100%;display:flex;align-items:center;gap:12px;padding:14px 12px;background:none;border:none;border-radius:12px;color:var(--text-primary);font-size:15px;font-family:inherit;text-align:left;cursor:pointer;transition:background .15s}
.sticker-sheet-item:hover{background:var(--bg-tertiary)}
.sticker-sheet-item span{font-size:20px;line-height:1}
.sticker-sheet-cancel{width:100%;margin-top:8px;padding:13px;background:var(--bg-tertiary);border:none;border-radius:12px;color:var(--text-secondary);font-size:15px;font-family:inherit;cursor:pointer}
.sticker-sheet-cancel:hover{color:var(--text-primary)}

/* ---------- общий каркас экранов ---------- */
.sticker-screen{position:fixed;inset:0;z-index:1500;display:none;flex-direction:column;background:var(--bg-primary)}
.sticker-screen-header{display:flex;align-items:center;gap:10px;padding:calc(12px + env(safe-area-inset-top,0px)) 14px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}
.sticker-screen-header h3{font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sticker-back-btn{background:none;border:none;color:var(--text-primary);font-size:26px;line-height:1;width:38px;height:38px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s}
.sticker-back-btn:hover{background:var(--bg-tertiary)}
.sticker-screen-body{flex:1;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:14px}
.sticker-screen-footer{flex-shrink:0;padding:12px 14px calc(12px + env(safe-area-inset-bottom,0px));background:var(--bg-secondary);border-top:1px solid var(--border)}
.sticker-screen-footer .auth-btn{margin:0}
.sticker-screen-hint{font-size:13px;color:var(--text-secondary);text-align:center;padding:18px 10px}

/* ---------- конструктор ---------- */
.sticker-add-file-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;background:var(--bg-tertiary);border:1px dashed var(--border);border-radius:14px;color:var(--text-primary);font-size:15px;cursor:pointer;transition:border-color .15s,background .15s}
.sticker-add-file-btn:hover{border-color:var(--accent);background:var(--bg-secondary)}
.sp-draft-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.sp-draft-head h4{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.4px}
.sp-draft-head span{font-size:12px;color:var(--text-muted)}
.sticker-draft-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px}
.sp-draft-item{position:relative;aspect-ratio:1;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.sp-draft-media{width:100%;height:100%;object-fit:contain}
.sp-draft-del{position:absolute;top:3px;right:3px;width:22px;height:22px;border:none;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sp-draft-del:hover{background:var(--danger)}
/* Галочка «Опубликовать в каталог»: по умолчанию снята — пак сохраняется только у автора */
.sp-publish-row{display:flex;align-items:flex-start;gap:11px;padding:13px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:14px;cursor:pointer}
.sp-publish-row input[type=checkbox]{width:19px;height:19px;margin-top:1px;flex-shrink:0;accent-color:var(--accent);cursor:pointer}
.sp-publish-text{display:flex;flex-direction:column;gap:3px;font-size:12.5px;line-height:1.42;color:var(--text-secondary)}
.sp-publish-text b{font-size:14.5px;font-weight:600;color:var(--text-primary)}

/* ---------- редактор обрезки ---------- */
.sticker-editor{position:fixed;inset:0;z-index:1550;display:none;flex-direction:column;background:var(--bg-primary)}
.sticker-editor-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;position:relative;background:
linear-gradient(45deg,rgba(255,255,255,.045) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.045) 75%),
linear-gradient(45deg,rgba(255,255,255,.045) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.045) 75%);
background-size:22px 22px;background-position:0 0,11px 11px}
#sticker-editor-canvas{border-radius:14px;box-shadow:0 0 0 2px var(--accent),0 10px 40px rgba(0,0,0,.5);touch-action:none;cursor:grab;background:transparent}
#sticker-editor-canvas:active{cursor:grabbing}
.sticker-editor-tools{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:10px 18px;background:var(--bg-secondary);border-top:1px solid var(--border)}
.sticker-editor-tools input[type=range]{flex:1;accent-color:var(--accent)}
.sp-tool-btn{background:var(--bg-tertiary);border:none;color:var(--text-primary);width:40px;height:40px;border-radius:50%;font-size:19px;cursor:pointer;flex-shrink:0;transition:background .15s}
.sp-tool-btn:hover{background:var(--border)}
.sticker-editor-hint{font-size:12px;color:var(--text-secondary);text-align:center;padding:0 14px 8px;background:var(--bg-secondary)}

/* ---------- каталог ---------- */
.sticker-catalog-search{flex-shrink:0;padding:12px 14px;background:var(--bg-secondary);border-bottom:1px solid var(--border)}
.sticker-catalog-search .auth-input{margin:0}
.sticker-catalog-list{flex:1;overflow-y:auto;padding:10px 12px calc(20px + env(safe-area-inset-bottom,0px))}
.sp-row{display:flex;align-items:center;gap:10px;padding:10px;margin-bottom:8px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:14px;transition:background .2s,opacity .2s}
.sp-row.installed{background:var(--bg-tertiary);opacity:.72}
.sp-row.installed .sp-row-name::after{content:' ✓';color:var(--success)}
.sp-row-main{flex:1;min-width:0}
.sp-row-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;touch-action:pan-y}
.sp-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.03);border-radius:10px;overflow:hidden}
.sp-cell-media{width:100%;height:100%;object-fit:contain;pointer-events:none}
.sp-cell-empty{grid-column:1/-1;aspect-ratio:auto;padding:22px 8px;font-size:13px;color:var(--text-muted)}
.sp-row-meta{display:flex;align-items:baseline;gap:8px;margin-top:8px;min-width:0}
.sp-row-name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-row-count{font-size:12px;color:var(--text-muted);flex-shrink:0}
.sp-add-btn{flex-shrink:0;padding:9px 14px;border:none;border-radius:20px;background:var(--accent);color:#fff;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:filter .15s,background .15s}
.sp-add-btn:hover:not(:disabled){filter:brightness(1.1)}
.sp-add-btn.added{background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border)}
.sp-add-btn:disabled{opacity:.5;cursor:default}
/* Карусель: новые три стикера «влетают» с той стороны, откуда пришёл свайп */
@keyframes spSlideL{from{transform:translateX(22px);opacity:.35}to{transform:none;opacity:1}}
@keyframes spSlideR{from{transform:translateX(-22px);opacity:.35}to{transform:none;opacity:1}}
.sp-slide-l{animation:spSlideL .22s ease}
.sp-slide-r{animation:spSlideR .22s ease}
/* Скелетоны/спиннер/ошибки */
.sp-cell-skeleton,.sp-skel-line{background:linear-gradient(90deg,rgba(255,255,255,.05),rgba(255,255,255,.12),rgba(255,255,255,.05));background-size:200% 100%;animation:spShimmer 1.2s linear infinite;border-radius:10px}
.sp-skel-line{height:12px;width:120px;margin-top:8px;display:block}
@keyframes spShimmer{from{background-position:200% 0}to{background-position:-200% 0}}
.sp-skeleton{pointer-events:none}
.sp-footer{padding:14px 6px 24px;text-align:center}
.sp-spinner{width:26px;height:26px;margin:0 auto;border:2.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spSpin .8s linear infinite}
@keyframes spSpin{to{transform:rotate(360deg)}}
.sp-end,.sp-empty{font-size:13px;color:var(--text-muted);text-align:center;padding:10px}
.sp-error{font-size:13px;color:var(--text-secondary);display:flex;flex-direction:column;align-items:center;gap:10px}
.sp-retry-btn{padding:9px 20px;border:1px solid var(--border);border-radius:20px;background:var(--bg-secondary);color:var(--text-primary);font-size:13px;font-family:inherit;cursor:pointer}
.sp-retry-btn:hover{background:var(--bg-tertiary)}

/* ---------- экран «Удалить стикеры и паки» ---------- */
.sticker-sheet-item.danger{color:var(--danger)}
.sticker-manager-hint{flex-shrink:0;padding:12px 16px;font-size:12.5px;line-height:1.45;color:var(--text-secondary);background:var(--bg-secondary);border-bottom:1px solid var(--border)}
.sp-mgr-row{display:block;padding:0;overflow:hidden}
.sp-mgr-head{display:flex;align-items:center;gap:12px;padding:10px;cursor:pointer}
.sp-mgr-preview{flex:1;min-width:0;max-width:190px}
.sp-mgr-row .sp-row-meta{flex:1;flex-wrap:wrap;margin-top:0}
.sp-mgr-tag{flex-shrink:0;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:2px 7px;border-radius:999px}
.sp-mgr-tag.mine{background:rgba(176,110,243,.22);color:var(--accent)}
/* Пак сохранён, но НЕ опубликован — нейтральная метка, чтобы не путать с «в каталоге» */
.sp-mgr-tag.own{background:rgba(255,255,255,.09);color:var(--text-secondary)}
.sp-mgr-tag.fav{background:rgba(239,68,68,.18);color:#ff8f8f}
.sp-mgr-chevron{margin-left:auto;color:var(--text-muted);font-size:15px;flex-shrink:0}
.sp-mgr-body{border-top:1px solid var(--border);padding:12px 10px}
.sp-mgr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:9px}
.sp-mgr-sticker{position:relative;aspect-ratio:1;background:rgba(255,255,255,.04);border-radius:11px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.sp-mgr-sticker.hidden-sticker{opacity:.38}
.sp-mgr-sticker.hidden-sticker::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(45deg,transparent,transparent 6px,rgba(255,255,255,.07) 6px,rgba(255,255,255,.07) 12px);pointer-events:none}
.sp-mgr-restore{position:absolute;top:3px;right:3px;width:22px;height:22px;border:none;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2}
.sp-mgr-restore:hover{background:var(--accent)}
.sp-mgr-actions{display:flex;gap:9px;margin-top:14px;flex-wrap:wrap}
.sp-mgr-btn{flex:1;min-width:140px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:var(--bg-tertiary);color:var(--text-primary);font-size:13.5px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,filter .15s}
.sp-mgr-btn:hover{background:var(--border)}
.sp-mgr-btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
.sp-mgr-btn.danger:hover{filter:brightness(1.1);background:var(--danger)}
.sp-screen-hint{font-size:13px;color:var(--text-muted);padding:10px}

/* ---------- полноэкранный просмотр ---------- */
.sticker-viewer{position:fixed;inset:0;z-index:9500;display:none;flex-direction:column;align-items:center;background:rgba(8,0,16,.96);backdrop-filter:blur(6px)}
.sticker-viewer .sticker-back-btn{position:absolute;top:calc(10px + env(safe-area-inset-top,0px));left:10px;z-index:3;background:rgba(255,255,255,.08)}
.sp-viewer-badge{margin-top:calc(16px + env(safe-area-inset-top,0px));max-width:76%;padding:7px 16px;border-radius:999px;background:var(--bg-tertiary);border:1px solid var(--border);font-size:14px;font-weight:600;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-viewer-count{margin-top:5px;font-size:12px;color:var(--text-muted);min-height:15px}
.sp-viewer-nav{flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 6px}
.sp-viewer-arrow{width:46px;height:70px;flex-shrink:0;border:none;border-radius:12px;background:rgba(255,255,255,.07);color:#fff;font-size:34px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:background .15s}
.sp-viewer-arrow:hover{background:rgba(255,255,255,.15)}
/* Лента пака: все стикеры сразу (как в Telegram), крупно — по зажатию плитки */
.sp-vgrid{flex:1;min-width:0;align-self:stretch;overflow-y:auto;overflow-x:hidden;align-content:start;
display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px;padding:4px 2px 10px;
max-width:520px;touch-action:pan-y}
.sp-vgrid-item{aspect-ratio:1;padding:6px;border-radius:12px;background:rgba(255,255,255,.05);
display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none;
-webkit-user-select:none;-webkit-touch-callout:none;transition:background .15s,box-shadow .15s}
.sp-vgrid-item:hover{background:rgba(255,255,255,.1)}
.sp-vgrid-item.active{background:rgba(255,255,255,.14);box-shadow:0 0 0 1.5px var(--accent)}
.sp-vgrid-media{width:100%;height:100%;object-fit:contain;pointer-events:none}
.sp-viewer-hint{flex-shrink:0;font-size:12px;color:var(--text-muted);text-align:center;padding:2px 14px 0}
/* Предпросмотр по зажатию — поверх ленты, сквозной для указателя (палец всё ещё «на плитке») */
.sp-vpreview{position:absolute;inset:0;z-index:4;display:none;align-items:center;justify-content:center;
background:rgba(8,0,16,.82);backdrop-filter:blur(3px);pointer-events:none;animation:spPop .13s ease}
.sp-vpreview-media{max-width:min(340px,74vw);max-height:64vh;width:auto;height:auto;object-fit:contain;
filter:drop-shadow(0 14px 40px rgba(0,0,0,.6))}
@keyframes spPop{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.sp-vpreview{animation:none}}
.sp-viewer-actions{flex-shrink:0;width:100%;max-width:520px;display:flex;gap:10px;padding:10px 14px calc(18px + env(safe-area-inset-bottom,0px))}
.sp-viewer-btn{flex:1;padding:13px 10px;border:1px solid var(--border);border-radius:14px;background:var(--bg-secondary);color:var(--text-primary);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,filter .15s}
.sp-viewer-btn:hover:not(:disabled){background:var(--bg-tertiary)}
.sp-viewer-btn.active{border-color:var(--accent);color:var(--accent)}
.sp-viewer-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.sp-viewer-btn.primary:hover:not(:disabled){filter:brightness(1.1);background:var(--accent)}
.sp-viewer-btn:disabled{opacity:.55;cursor:default}

@media(max-width:768px){
.sp-viewer-arrow{width:32px;height:56px;font-size:26px}
.sp-vgrid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:6px}
.sticker-draft-grid{grid-template-columns:repeat(auto-fill,minmax(72px,1fr))}
}
