/* =========================================================
   Share WebApp — Mini App styles
   Design system: premium-ui-designer tokens
   Goal: mobile-first, dark premium, spring-feel interactions
   ========================================================= */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}

:root{
  --bg-0:#07070A;
  --bg-1:#0D0D12;
  --bg-2:#14141B;
  --bg-3:#1C1C25;
  --bg-4:#26262F;
  --text-1:rgba(237,237,237,1);
  --text-2:rgba(237,237,237,0.70);
  --text-3:rgba(237,237,237,0.45);
  --text-4:rgba(237,237,237,0.25);
  --accent:#A78BFA;
  --accent-2:#F472B6;
  --accent-glow:rgba(167,139,250,0.3);
  --success:#22C55E;
  --border:rgba(255,255,255,0.06);
  --border-top:rgba(255,255,255,0.12);
  --border-strong:rgba(255,255,255,0.14);

  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bot: env(safe-area-inset-bottom, 0px);

  --spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

html,body{
  background:var(--bg-0);
  color:var(--text-1);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  min-height:100dvh;
  overflow-x:hidden;
  overscroll-behavior-y:none;
  /* TG dark theme by default */
}
body{
  background-image:
    radial-gradient(circle at 15% -5%, rgba(167,139,250,0.12) 0%, transparent 45%),
    radial-gradient(circle at 85% 100%, rgba(244,114,182,0.10) 0%, transparent 45%);
  min-height:100dvh;
}

button{
  background:transparent;
  border:0;
  color:inherit;
  font:inherit;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  user-select:none;
}

/* ---------- Screens ---------- */
.screen{display:none;flex-direction:column;min-height:100dvh}
.screen--active{display:flex}

/* =========================================================
   SCREEN 1: GRID
   ========================================================= */
.top{
  padding:calc(var(--safe-top) + 24px) 20px 18px;
}
.top-eyebrow{
  display:inline-block;
  padding:6px 12px;
  background:var(--bg-2);
  border:1px solid var(--border);
  border-top-color:var(--border-top);
  border-radius:100px;
  font-size:11px;
  font-weight:600;
  letter-spacing:.1em;
  color:var(--text-2);
  text-transform:uppercase;
  margin-bottom:14px;
}
.top-title{
  font-size:32px;
  font-weight:800;
  letter-spacing:-.03em;
  line-height:1;
  margin-bottom:6px;
  background:linear-gradient(180deg,#FFF 0%,rgba(255,255,255,.6) 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.top-sub{
  font-size:14px;
  color:var(--text-2);
  line-height:1.4;
}
.top-sub b{color:var(--text-1);font-weight:600}

.grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:14px;
  padding:8px 20px 24px;
}

.card{
  position:relative;
  aspect-ratio:9/16;
  background:var(--bg-2);
  border:1px solid var(--border);
  border-top-color:var(--border-top);
  border-radius:18px;
  overflow:hidden;
  cursor:pointer;
  transition:transform 220ms var(--spring), border-color 180ms, box-shadow 220ms;
  will-change:transform;
}
.card:active{
  transform:scale(0.96);
  transition:transform 80ms ease-out;
}
.card-thumb{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
  background:var(--bg-3);
  opacity:0;
  transition:opacity 350ms var(--ease);
}
.card-thumb.loaded{opacity:1}
.card-skel{
  position:absolute;inset:0;
  background:linear-gradient(110deg, var(--bg-2) 0%, var(--bg-3) 35%, var(--bg-2) 70%);
  background-size:200% 100%;
  animation:shimmer 1.6s linear infinite;
}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.card-label{
  position:absolute;
  left:10px;right:10px;bottom:10px;
  display:flex;align-items:center;gap:8px;
  background:linear-gradient(180deg,rgba(20,20,27,0),rgba(20,20,27,0.85) 30%,rgba(20,20,27,0.95));
  padding:12px 10px 8px;
  border-radius:0 0 12px 12px;
  margin:0 -10px -10px;
}
.card-num{
  flex-shrink:0;
  font-size:10px;font-weight:700;letter-spacing:.05em;
  color:var(--text-3);
  background:rgba(255,255,255,0.06);
  border:1px solid var(--border);
  padding:3px 7px;border-radius:5px;
  font-feature-settings:"tnum";
}
.card-name{
  font-size:12px;font-weight:600;letter-spacing:-.005em;
  color:var(--text-1);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.card-badge{
  position:absolute;top:10px;right:10px;
  width:22px;height:22px;
  border-radius:50%;
  background:linear-gradient(135deg,#A78BFA,#F472B6);
  display:grid;place-items:center;
  font-size:10px;color:#0A0A0A;font-weight:800;
  box-shadow:0 0 0 1px rgba(167,139,250,.4), 0 0 14px 2px rgba(167,139,250,.35);
}

.grid-foot{
  padding:16px 20px calc(var(--safe-bot) + 28px);
  text-align:center;
  font-size:12px;
  color:var(--text-3);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  letter-spacing:.01em;
}
.foot-dot{
  width:6px;height:6px;border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 0 1px rgba(167,139,250,.3),0 0 8px 2px rgba(167,139,250,.3);
  animation:pulseDot 2.4s ease-in-out infinite;
}
@keyframes pulseDot{0%,100%{opacity:.5}50%{opacity:1}}

/* =========================================================
   SCREEN 2: Fullscreen view
   ========================================================= */
#screen-view{background:var(--bg-0)}

.view-head{
  position:relative;
  display:flex;align-items:center;gap:14px;
  padding:calc(var(--safe-top) + 14px) 14px 10px;
  z-index:2;
}
.view-back{
  flex-shrink:0;
  width:42px;height:42px;
  border-radius:50%;
  background:var(--bg-2);
  border:1px solid var(--border);
  border-top-color:var(--border-top);
  display:grid;place-items:center;
  transition:transform 160ms var(--spring), background 160ms;
}
.view-back svg{width:18px;height:18px;color:var(--text-1)}
.view-back:active{transform:scale(0.9);background:var(--bg-3)}

.view-title{
  flex:1;min-width:0;
}
.view-num{
  font-size:10px;font-weight:700;letter-spacing:.15em;color:var(--text-3);
  text-transform:uppercase;
}
.view-name{
  font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--text-1);
  margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.view-dot-trail{
  display:flex;gap:4px;align-items:center;
}
.view-dot-trail span{
  width:5px;height:5px;border-radius:50%;
  background:var(--text-4);
  transition:width 220ms var(--spring),background 180ms;
}
.view-dot-trail span.on{
  width:14px;
  border-radius:3px;
  background:var(--accent);
  box-shadow:0 0 8px 1px rgba(167,139,250,.4);
}

.pager{
  flex:1;
  display:flex;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  scroll-behavior:smooth;
}
.pager::-webkit-scrollbar{display:none}

.page{
  flex:0 0 100%;
  scroll-snap-align:center;
  scroll-snap-stop:always;
  display:grid;
  place-items:center;
  padding:8px 16px 16px;
  min-width:100%;
}

.page-frame{
  position:relative;
  width:100%;
  max-width:420px;
  aspect-ratio:9/16;
  border-radius:24px;
  overflow:hidden;
  background:var(--bg-2);
  border:1px solid var(--border-top);
  box-shadow:
    0 0 0 1px rgba(167,139,250,.18),
    0 10px 40px rgba(0,0,0,.5),
    0 0 60px 10px rgba(167,139,250,.10);
}
.page-frame img{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
  opacity:0;
  transition:opacity 350ms var(--ease);
}
.page-frame img.loaded{opacity:1}
.page-skel{
  position:absolute;inset:0;
  background:linear-gradient(110deg, var(--bg-2) 0%, var(--bg-3) 35%, var(--bg-2) 70%);
  background-size:200% 100%;
  animation:shimmer 1.6s linear infinite;
}

.view-actions{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:8px;
  padding:12px 16px calc(var(--safe-bot) + 14px);
  background:linear-gradient(180deg,rgba(7,7,10,0),rgba(7,7,10,0.85) 35%,var(--bg-0));
  position:relative;
  z-index:3;
}
.act{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  height:60px;
  border-radius:14px;
  background:var(--bg-2);
  border:1px solid var(--border);
  border-top-color:var(--border-top);
  color:var(--text-1);
  font-weight:600;
  font-size:12px;
  letter-spacing:-.005em;
  transition:transform 80ms ease-out, background 180ms, border-color 180ms, opacity 180ms;
}
.act:active{transform:scale(0.94);background:var(--bg-3)}
.act-ic{font-size:20px;line-height:1}
.act-lbl{font-size:11px;font-weight:600;color:var(--text-2);letter-spacing:.01em}
.act[disabled], .act.is-disabled{opacity:.45;pointer-events:none}
.act.is-loading .act-ic{animation:spin 900ms linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* =========================================================
   TOAST
   ========================================================= */
.toast{
  position:fixed;
  left:50%;bottom:calc(var(--safe-bot) + 100px);
  transform:translateX(-50%) translateY(40px);
  background:var(--bg-3);
  border:1px solid var(--border-strong);
  color:var(--text-1);
  padding:12px 18px;
  border-radius:100px;
  font-size:13px;
  font-weight:600;
  opacity:0;
  pointer-events:none;
  transition:opacity 220ms var(--ease), transform 220ms var(--spring);
  z-index:100;
  box-shadow:0 10px 30px rgba(0,0,0,.5);
}
.toast.show{
  opacity:1;
  transform:translateX(-50%) translateY(0);
  pointer-events:auto;
}
.toast.success{border-color:rgba(34,197,94,.4);box-shadow:0 10px 30px rgba(0,0,0,.5),0 0 30px 2px rgba(34,197,94,.2)}

/* =========================================================
   MEDIA — мелкие телефоны
   ========================================================= */
@media (max-width:360px){
  .top-title{font-size:28px}
  .grid{gap:10px;padding:8px 14px 20px}
  .card-name{font-size:11px}
  .view-actions{gap:6px;padding:10px 12px calc(var(--safe-bot) + 12px)}
  .act{height:56px}
  .act-ic{font-size:18px}
  .act-lbl{font-size:10px}
}

/* =========================================================
   MEDIA — Telegram light theme (если юзер такой выбрал)
   Bot использует в основном dark, но на всякий
   ========================================================= */
@media (prefers-color-scheme:light){
  /* оставляем dark — design спроектирован под dark */
}
