/* =========================================================
   PolMatch - arkusz stylow
   Kolorowy, nowoczesny front portalu randkowego
   ========================================================= */

:root{
  --hue: 330;
  --pink:      hsl(var(--hue) 100% 64%);
  --pink-dark: hsl(var(--hue) 78% 50%);
  --violet:    #8b5cf6;
  --violet-dk: #6d34e0;
  --cyan:      #22d3ee;
  --lime:      #34d399;
  --amber:     #fbbf24;
  --coral:     #ff7a59;

  --grad-hot:   linear-gradient(135deg, var(--pink) 0%, var(--violet) 100%);
  --grad-sun:   linear-gradient(135deg, #ffb347 0%, var(--pink) 100%);
  --grad-cool:  linear-gradient(135deg, var(--cyan) 0%, var(--violet) 100%);
  --grad-mint:  linear-gradient(135deg, var(--lime) 0%, var(--cyan) 100%);

  --ink:       #1d1f36;
  --ink-2:     #3c4066;
  --muted:     #767b9c;
  --line:      #e8e9f5;
  --bg:        #f6f7fc;
  --card:      #ffffff;

  --r-sm: 10px;
  --r:    16px;
  --r-lg: 24px;
  --r-xl: 32px;

  --sh-1: 0 1px 2px rgba(29,31,54,.06), 0 2px 8px rgba(29,31,54,.05);
  --sh-2: 0 4px 12px rgba(29,31,54,.08), 0 12px 32px rgba(29,31,54,.08);
  --sh-3: 0 18px 48px rgba(139,92,246,.22);

  --wrap: 1180px;
  --font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  overflow-x:hidden;
  font-family:var(--font);
  color:var(--ink);
  background:
    radial-gradient(1100px 500px at 8% -8%, hsl(var(--hue) 100% 95%) 0%, transparent 60%),
    radial-gradient(900px 420px at 95% 0%, #ede9fe 0%, transparent 55%),
    var(--bg);
  font-size:16px;
  line-height:1.6;
  min-height:100vh;
}
img{max-width:100%;display:block}
a{color:var(--violet-dk);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{line-height:1.22;margin:0 0 .5em;color:var(--ink);font-weight:800;letter-spacing:-.02em}
h1{font-size:clamp(1.8rem,4vw,2.7rem)}
h2{font-size:clamp(1.35rem,2.6vw,1.9rem)}
h3{font-size:1.15rem}
p{margin:0 0 1em}
small,.small{font-size:.86rem}
.muted{color:var(--muted)}
.center{text-align:center}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 16px}
.main{padding-top:24px;padding-bottom:48px;min-height:52vh}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:#fff;padding:8px 14px;border-radius:8px;z-index:999}
hr{border:0;border-top:1px solid var(--line);margin:22px 0}

/* ---------------------------------------------------- topbar */
.topbar{
  position:sticky;top:0;z-index:60;
  background:rgba(255,255,255,.86);
  backdrop-filter:saturate(1.6) blur(14px);
  border-bottom:1px solid var(--line);
}
.topbar-in{display:flex;align-items:center;gap:14px;height:64px}
.brand{display:flex;align-items:center;gap:9px;font-weight:900;font-size:1.22rem;color:var(--ink);
  text-decoration:none;flex:0 1 auto;min-width:0;max-width:min(38vw,330px);overflow:hidden}
.brand:hover{text-decoration:none}
.brand-mark{font-size:1.4rem;filter:drop-shadow(0 2px 6px rgba(255,77,125,.45))}
.brand-name{background:var(--grad-hot);-webkit-background-clip:text;background-clip:text;color:transparent;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.mainnav{display:flex;align-items:center;gap:2px;margin-left:8px;flex:1 1 auto;min-width:0;overflow:visible}
.topbar-in>.mainnav{flex-wrap:nowrap}
.mainnav>a,.nav-more-btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 10px;border-radius:999px;color:var(--ink-2);
  font-weight:600;font-size:.9rem;white-space:nowrap;text-decoration:none;
  border:0;background:transparent;cursor:pointer;font-family:inherit;
}
@media (max-width:1180px){.mainnav>a,.nav-more-btn{padding:7px 8px;font-size:.85rem}}
.mainnav>a:hover,.nav-more-btn:hover{background:hsl(var(--hue) 100% 96%);color:var(--pink-dark);text-decoration:none}
.mainnav>a.on{background:var(--grad-hot);color:#fff}
.badge{
  display:inline-block;min-width:18px;padding:0 5px;margin-left:2px;
  background:var(--coral);color:#fff;border-radius:999px;
  font-size:.7rem;line-height:18px;text-align:center;font-weight:800;
}
.topbar-right{display:flex;align-items:center;gap:10px;margin-left:auto;flex:0 0 auto;
  position:relative;z-index:2;background:inherit}
.players{display:flex;gap:4px}
.pbtn{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff;
  font-size:1rem;cursor:pointer;line-height:1;display:grid;place-items:center;
  transition:transform .12s, box-shadow .2s, border-color .2s;
}
.pbtn:hover{border-color:var(--pink);transform:translateY(-1px);box-shadow:0 6px 16px rgba(255,77,125,.25)}
.langsw{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:#fff}
.langsw a{padding:5px 11px;font-size:.8rem;font-weight:800;color:var(--muted);text-decoration:none}
.langsw a.on{background:var(--grad-cool);color:#fff}

.burger{display:none;flex-direction:column;gap:4px;background:none;border:0;padding:8px;cursor:pointer;margin-left:auto}
.burger span{width:22px;height:2px;background:var(--ink);border-radius:2px;transition:.2s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* dropdowny */
.nav-more,.usermenu{position:relative}
.nav-more-panel,.usermenu-panel{
  position:absolute;right:0;top:calc(100% + 10px);min-width:216px;
  background:#fff;border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh-2);padding:6px;display:none;z-index:70;
}
.nav-more.open .nav-more-panel,.usermenu.open .usermenu-panel{display:block}
.nav-more-panel a,.usermenu-panel a{
  display:block;padding:9px 12px;border-radius:10px;color:var(--ink-2);
  font-size:.92rem;font-weight:600;text-decoration:none;
}
.nav-more-panel a:hover,.usermenu-panel a:hover{background:var(--bg);text-decoration:none}
.usermenu-panel a.danger{color:#dc2626}
.usermenu-btn{
  display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);
  border-radius:999px;padding:4px 12px 4px 4px;cursor:pointer;font-family:inherit;
  font-weight:700;font-size:.9rem;color:var(--ink);
}
.usermenu-btn:hover{border-color:var(--pink)}
.usermenu-name{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------------------------------------------------- przyciski */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 22px;border-radius:999px;border:1px solid transparent;
  font-weight:800;font-size:.95rem;font-family:inherit;cursor:pointer;
  text-decoration:none;transition:transform .12s ease, box-shadow .2s ease, background .2s;
  line-height:1.2;
}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-primary{background:var(--grad-hot);color:#fff;box-shadow:0 8px 20px rgba(255,77,125,.32)}
.btn-primary:hover{box-shadow:0 12px 26px rgba(255,77,125,.42)}
.btn-violet{background:var(--grad-cool);color:#fff;box-shadow:0 8px 20px rgba(139,92,246,.3)}
.btn-mint{background:var(--grad-mint);color:#07312a;box-shadow:0 8px 20px rgba(52,211,153,.3)}
.btn-ghost{background:#fff;color:var(--ink);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--pink);color:var(--pink-dark)}
.btn-white{background:#fff;color:var(--ink)}
.btn-danger{background:#fee2e2;color:#b91c1c;border-color:#fecaca}
.btn-danger:hover{background:#fecaca}
.btn-sm{padding:8px 15px;font-size:.87rem}
.btn-xs{padding:5px 12px;font-size:.78rem}
.btn-lg{padding:15px 32px;font-size:1.05rem}
.btn-block{display:flex;width:100%}
.btn[disabled],.btn.is-off{opacity:.55;pointer-events:none}

/* ---------------------------------------------------- karty / siatki */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh-1);padding:22px;
}
.card+.card{margin-top:18px}
.card-pad-sm{padding:16px}
.grid{display:grid;gap:18px}
.g-2{grid-template-columns:repeat(2,1fr)}
.g-3{grid-template-columns:repeat(3,1fr)}
.g-4{grid-template-columns:repeat(4,1fr)}
.cols{display:grid;grid-template-columns:1fr 300px;gap:22px;align-items:start}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.row-between{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.stack>*+*{margin-top:12px}
.sticky{position:sticky;top:82px}

/* ---------------------------------------------------- hero */
.hero{
  position:relative;overflow:hidden;border-radius:var(--r-xl);
  background:var(--grad-hot);color:#fff;padding:54px 40px;
  box-shadow:var(--sh-3);margin-bottom:26px;
}
.hero::before,.hero::after{
  content:"";position:absolute;border-radius:50%;pointer-events:none;
  background:rgba(255,255,255,.14);
}
.hero::before{width:420px;height:420px;right:-120px;top:-160px}
.hero::after{width:260px;height:260px;left:-90px;bottom:-130px;background:rgba(255,255,255,.1)}
.hero-in{position:relative;z-index:2;max-width:640px}
.hero h1{color:#fff;margin-bottom:.35em;text-shadow:0 2px 18px rgba(0,0,0,.14)}
.hero p{font-size:1.1rem;opacity:.95}
.hero .btn-ghost{background:rgba(255,255,255,.16);color:#fff;border-color:rgba(255,255,255,.5)}
.hero .btn-ghost:hover{background:rgba(255,255,255,.28);color:#fff}
.pill-free{
  display:inline-block;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.4);
  padding:5px 14px;border-radius:999px;font-weight:800;font-size:.82rem;margin-bottom:14px;
  letter-spacing:.04em;text-transform:uppercase;
}
.hero-hearts{position:absolute;inset:0;z-index:1;opacity:.5}
.hero-hearts span{position:absolute;font-size:22px;animation:floaty 9s ease-in-out infinite}
@keyframes floaty{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-16px) rotate(6deg)}}

/* ---------------------------------------------------- statystyki */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:-46px 0 26px;position:relative;z-index:5}
.stat{background:#fff;border-radius:var(--r);box-shadow:var(--sh-2);padding:18px;text-align:center;border:1px solid var(--line)}
.stat b{display:block;font-size:1.9rem;line-height:1.1;background:var(--grad-hot);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.stat span{color:var(--muted);font-size:.85rem;font-weight:600}

/* ---------------------------------------------------- karta profilu */
.profiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:18px}
.pcard{
  position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  overflow:hidden;box-shadow:var(--sh-1);transition:transform .16s, box-shadow .2s;
  display:flex;flex-direction:column;
}
.pcard:hover{transform:translateY(-4px);box-shadow:var(--sh-2)}
.pcard-photo{position:relative;aspect-ratio:3/4;overflow:hidden;background:var(--bg)}
.pcard-photo img{width:100%;height:100%;object-fit:cover;transition:transform .35s}
.pcard:hover .pcard-photo img{transform:scale(1.05)}
.pcard-body{padding:12px 14px 14px}
.pcard-name{font-weight:800;font-size:1.02rem;display:flex;align-items:center;gap:6px;color:var(--ink)}
.pcard-meta{color:var(--muted);font-size:.85rem;margin-top:2px}
.pcard-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.pcard a.stretch{position:absolute;inset:0;z-index:3}
.pcard-actions{display:flex;gap:6px;padding:0 14px 14px;position:relative;z-index:4}

.dot-online{
  display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--lime);
  box-shadow:0 0 0 3px rgba(52,211,153,.24);flex:0 0 auto;
}
.dot-off{display:inline-block;width:9px;height:9px;border-radius:50%;background:#cbd0e0;flex:0 0 auto}

.chip{
  display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;
  background:hsl(var(--hue) 100% 96%);color:var(--pink-dark);
  font-size:.76rem;font-weight:700;border:1px solid hsl(var(--hue) 100% 92%);
}
.chip-violet{background:#f3efff;color:var(--violet-dk);border-color:#e6ddff}
.chip-mint{background:#e8fbf4;color:#0f766e;border-color:#ccf5e7}
.chip-amber{background:#fff7e6;color:#a16207;border-color:#fdeec9}
.chip-grey{background:#f1f2f8;color:var(--muted);border-color:var(--line)}

.ribbon{
  position:absolute;left:10px;top:10px;z-index:4;padding:4px 10px;border-radius:999px;
  font-size:.72rem;font-weight:800;color:#fff;background:rgba(29,31,54,.6);backdrop-filter:blur(6px);
}
.ribbon-online{background:rgba(16,185,129,.9)}
.ribbon-new{background:rgba(139,92,246,.9)}
.ribbon-match{background:var(--grad-hot)}
.score-badge{
  position:absolute;right:10px;top:10px;z-index:4;width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.94);display:grid;place-items:center;font-weight:900;
  font-size:.82rem;color:var(--pink-dark);box-shadow:var(--sh-1);
}

/* ---------------------------------------------------- avatary */
.ava{width:56px;height:56px;border-radius:50%;object-fit:cover;background:var(--bg);border:2px solid #fff;box-shadow:var(--sh-1)}
.ava-xs{width:30px;height:30px;border-width:1px}
.ava-sm{width:44px;height:44px}
.ava-lg{width:96px;height:96px;border-width:3px}
.ava-xl{width:150px;height:150px;border-width:4px}

/* ---------------------------------------------------- formularze */
.form{max-width:560px}
.form-wide{max-width:100%}
.field{margin-bottom:16px}
.field>label,.lbl{display:block;font-weight:700;font-size:.88rem;margin-bottom:6px;color:var(--ink-2)}
.hint{font-size:.8rem;color:var(--muted);margin-top:5px}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],
input[type=search],input[type=url],select,textarea{
  width:100%;padding:11px 14px;border:1.5px solid var(--line);border-radius:var(--r-sm);
  font-family:inherit;font-size:.96rem;color:var(--ink);background:#fff;transition:border-color .15s, box-shadow .15s;
}
input:focus,select:focus,textarea:focus{
  outline:0;border-color:var(--pink);box-shadow:0 0 0 4px hsl(var(--hue) 100% 93%);
}
textarea{min-height:120px;resize:vertical;line-height:1.55}
select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8'><path d='M1 1l5 5 5-5' stroke='%23767b9c' stroke-width='2' fill='none' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
.check{display:flex;gap:10px;align-items:flex-start;margin-bottom:11px;font-size:.92rem;line-height:1.5}
.check input{margin-top:3px;width:17px;height:17px;accent-color:var(--pink);flex:0 0 auto}
.check label{font-weight:500;color:var(--ink-2)}
.field-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.field-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
fieldset{border:1px solid var(--line);border-radius:var(--r);padding:16px;margin:0 0 18px}
legend{font-weight:800;font-size:.92rem;padding:0 8px;color:var(--pink-dark)}

.pills{display:flex;flex-wrap:wrap;gap:8px}
.pills input{position:absolute;opacity:0;width:0;height:0}
.pills label{
  display:inline-block;padding:7px 14px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;font-size:.86rem;font-weight:600;cursor:pointer;color:var(--ink-2);transition:.15s;
}
.pills input:checked+label{background:var(--grad-hot);border-color:transparent;color:#fff;box-shadow:0 4px 12px rgba(255,77,125,.3)}
.pills label:hover{border-color:var(--pink)}

/* ---------------------------------------------------- komunikaty */
.flash-wrap{margin-bottom:18px}
.flash{
  padding:13px 18px;border-radius:var(--r);margin-bottom:10px;font-weight:600;font-size:.94rem;
  border:1px solid;display:block;line-height:1.55;
}
.flash a{color:inherit;text-decoration:underline}
.flash-ok{background:#e9fbf3;border-color:#bdf0dc;color:#0b6b4f}
.flash-err{background:#fef2f2;border-color:#fecaca;color:#b91c1c}
.flash-warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
.flash-info{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}
.errors{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;border-radius:var(--r);padding:13px 18px;margin-bottom:16px}
.errors ul{margin:0;padding-left:20px}
.strip{padding:9px 0;font-size:.9rem;font-weight:700;color:#fff}
.strip-warn{background:var(--grad-sun)}
.strip .wrap{display:flex;gap:12px;align-items:center;flex-wrap:wrap}

.note{background:#f3efff;border-left:4px solid var(--violet);padding:12px 16px;border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:.9rem;color:var(--ink-2)}
.note-warn{background:#fffbeb;border-color:var(--amber)}
.note-info{background:#eff6ff;border-color:#3b82f6}

/* ---------------------------------------------------- sekcje */
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:30px 0 16px;flex-wrap:wrap}
.sec-head h2{margin:0}
.sec-head a{font-weight:700;font-size:.9rem}
.lead{font-size:1.06rem;color:var(--ink-2)}

.how{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.how-item{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:24px;box-shadow:var(--sh-1);position:relative;overflow:hidden}
.how-item::after{content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:var(--grad-hot);opacity:.09}
.how-item h3{margin-bottom:.4em}
.how-num{font-size:1.8rem;margin-bottom:8px;display:block}

.why{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.why li{list-style:none;display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);padding:13px 16px;font-weight:600;font-size:.94rem;box-shadow:var(--sh-1)}
.why ul{margin:0;padding:0}
.why-ico{font-size:1.15rem;flex:0 0 auto}

/* ---------------------------------------------------- profil */
.profile-head{
  background:var(--grad-hot);border-radius:var(--r-xl) var(--r-xl) 0 0;height:170px;position:relative;overflow:hidden;
}
.profile-head::after{content:"";position:absolute;width:320px;height:320px;border-radius:50%;
  background:rgba(255,255,255,.12);right:-90px;top:-130px}
/* position+z-index konieczne: .profile-head jest elementem pozycjonowanym,
   więc bez tego malowałby się NAD zdjęciem profilowym, które wsuwa się pod niego
   ujemnym marginesem. Na telefonie zasłaniało to pół twarzy. */
.profile-card{background:#fff;border:1px solid var(--line);border-top:0;border-radius:0 0 var(--r-xl) var(--r-xl);
  padding:0 26px 26px;box-shadow:var(--sh-1);margin-bottom:20px;position:relative;z-index:1}
.profile-top{display:flex;gap:20px;align-items:flex-end;margin-top:-58px;flex-wrap:wrap}
.profile-id{flex:1 1 240px;padding-bottom:6px}
.profile-id h1{margin:0 0 4px;font-size:1.7rem;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.profile-acts{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:6px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:.93rem}
.kv dt{color:var(--muted);font-weight:600}
.kv dd{margin:0;font-weight:600;color:var(--ink)}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.gallery img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r);cursor:zoom-in;box-shadow:var(--sh-1)}
.ipbox{background:#f3efff;border:1px dashed var(--violet);border-radius:var(--r);padding:14px 16px;font-size:.9rem}
.ipbox code{background:#fff;padding:3px 9px;border-radius:7px;font-weight:800;color:var(--violet-dk);font-size:1rem}

.meter{height:9px;background:var(--line);border-radius:999px;overflow:hidden}
.meter i{display:block;height:100%;background:var(--grad-mint);border-radius:999px}
.meter-hot i{background:var(--grad-hot)}

/* ---------------------------------------------------- czat */
.chat-layout{display:grid;grid-template-columns:300px 1fr;gap:18px;align-items:start}
.thread-list{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-1)}
.thread-item{display:flex;gap:11px;padding:12px 14px;border-bottom:1px solid var(--line);align-items:center;color:var(--ink);text-decoration:none}
.thread-item:hover{background:var(--bg);text-decoration:none}
.thread-item.on{background:hsl(var(--hue) 100% 97%)}
.thread-meta{min-width:0;flex:1}
.thread-name{font-weight:800;font-size:.93rem;display:flex;gap:6px;align-items:center}
.thread-last{color:var(--muted);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-box{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);display:flex;flex-direction:column;height:min(70vh,620px)}
.chat-head{display:flex;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.chat-scroll{flex:1;overflow-y:auto;padding:18px 16px;background:linear-gradient(180deg,#fbfaff,#fff);scroll-behavior:smooth}
.msg{max-width:74%;margin-bottom:12px;clear:both}
.msg-in{float:left}
.msg-out{float:right}
.bubble{
  padding:10px 15px;border-radius:18px;font-size:.94rem;line-height:1.5;
  word-wrap:break-word;overflow-wrap:anywhere;box-shadow:var(--sh-1);
}
.msg-in .bubble{background:#fff;border:1px solid var(--line);border-bottom-left-radius:5px}
.msg-out .bubble{background:var(--grad-hot);color:#fff;border-bottom-right-radius:5px}
.msg-time{font-size:.71rem;color:var(--muted);margin-top:4px;padding:0 6px}
.msg-out .msg-time{text-align:right}
.msg-emoji .bubble{font-size:2rem;background:transparent;box-shadow:none;border:0;padding:2px 6px}
.chat-form{display:flex;gap:9px;padding:12px;border-top:1px solid var(--line);align-items:flex-end}
.chat-form textarea{min-height:44px;max-height:130px;resize:none;border-radius:22px;padding:11px 16px}
.chat-day{text-align:center;margin:14px 0;clear:both}
.chat-day span{background:#eef0f8;color:var(--muted);font-size:.74rem;font-weight:700;padding:3px 12px;border-radius:999px}
.emoji-bar{display:flex;gap:4px;flex-wrap:wrap;padding:0 12px 10px}
.emoji-bar button{background:#fff;border:1px solid var(--line);border-radius:10px;font-size:1.05rem;padding:3px 7px;cursor:pointer;line-height:1.3}
.emoji-bar button:hover{background:hsl(var(--hue) 100% 96%);border-color:var(--pink)}

/* ---------------------------------------------------- listy */
.ulist{display:grid;gap:10px}
.uitem{display:flex;gap:13px;align-items:center;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);padding:12px 15px;box-shadow:var(--sh-1)}
.uitem .grow{flex:1;min-width:0}
.uitem .uname{font-weight:800;display:flex;gap:7px;align-items:center}
.table{width:100%;border-collapse:collapse;font-size:.9rem;background:#fff;border-radius:var(--r);overflow:hidden}
.table th,.table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.table th{background:var(--bg);font-weight:800;font-size:.82rem;color:var(--ink-2);white-space:nowrap}
.table tr:hover td{background:#fcfcff}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1)}

.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px}
.tabs a{padding:9px 17px;border-radius:999px;background:#fff;border:1px solid var(--line);
  font-weight:700;font-size:.9rem;color:var(--ink-2);text-decoration:none}
.tabs a.on{background:var(--grad-hot);color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(255,77,125,.28)}
.tabs a:hover{text-decoration:none;border-color:var(--pink)}

.pager{display:flex;gap:6px;justify-content:center;margin:26px 0;flex-wrap:wrap}
.pg{min-width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;
  padding:0 10px;border-radius:10px;background:#fff;border:1px solid var(--line);font-weight:700;
  color:var(--ink-2);text-decoration:none}
.pg:hover{border-color:var(--pink);text-decoration:none}
.pg-cur{background:var(--grad-hot);color:#fff;border-color:transparent}
.pg-dots{align-self:center;color:var(--muted)}

.empty{text-align:center;padding:48px 20px;color:var(--muted)}
.empty-ico{font-size:3rem;margin-bottom:10px;display:block}

/* ---------------------------------------------------- zodiak / horoskop */
.zodiac-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
.zsign{background:#fff;border:1.5px solid var(--line);border-radius:var(--r);padding:14px 8px;text-align:center;
  cursor:pointer;font-weight:700;font-size:.85rem;transition:.15s;color:var(--ink-2);text-decoration:none;display:block}
.zsign:hover{border-color:var(--violet);transform:translateY(-2px);text-decoration:none}
.zsign.on{background:var(--grad-cool);color:#fff;border-color:transparent}
.zsym{font-size:1.9rem;display:block;line-height:1.2}
.compat-ring{width:140px;height:140px;border-radius:50%;display:grid;place-items:center;margin:0 auto 12px;
  background:conic-gradient(var(--pink) calc(var(--v)*1%), #eceefa 0);position:relative}
.compat-ring::after{content:"";position:absolute;inset:11px;border-radius:50%;background:#fff}
.compat-ring b{position:relative;z-index:2;font-size:1.9rem;background:var(--grad-hot);
  -webkit-background-clip:text;background-clip:text;color:transparent}

/* ---------------------------------------------------- tryb przedpremierowy */
.launch-box{
  background:#fff;border:1px solid var(--line);border-radius:var(--r-xl);
  padding:24px 26px;box-shadow:var(--sh-2);margin:-46px 0 26px;position:relative;z-index:5;
}
.launch-head{display:flex;gap:16px;align-items:flex-start;margin-bottom:16px}
.launch-ico{font-size:2.1rem;flex:0 0 auto}
.launch-bar{height:14px;background:var(--line);border-radius:999px;overflow:hidden}
.launch-bar i{display:block;height:100%;background:var(--grad-hot);border-radius:999px;transition:width .6s}
.launch-nums{display:flex;gap:8px;align-items:baseline;margin-top:10px;flex-wrap:wrap}
.launch-nums b{font-size:1.6rem;background:var(--grad-hot);-webkit-background-clip:text;
  background-clip:text;color:transparent}
.ribbon-demo{background:rgba(100,104,140,.92);font-weight:700}

/* ---------------------------------------------------- zasady / moderacja */
.rules-page{max-width:820px;margin:0 auto}
.rules-box{
  background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  padding:26px 28px;box-shadow:var(--sh-1);max-height:62vh;overflow-y:auto;scroll-behavior:smooth;
}
.rules-box h2{font-size:1.15rem;margin-top:1.5em;color:var(--violet-dk)}
.rules-box h2:first-child{margin-top:0}
.rules-box p,.rules-box li{font-size:.97rem;line-height:1.7}
.rules-ban{list-style:none;padding:0;margin:14px 0}
.rules-ban li{
  background:#fff5f6;border:1px solid #ffd9de;border-left:4px solid var(--pink);
  border-radius:0 var(--r-sm) var(--r-sm) 0;padding:11px 15px;margin-bottom:9px;
}
.rules-ban-compact li{background:#fff8f9;padding:7px 13px;margin-bottom:6px;font-size:.9rem}
.rules-end{
  margin-top:28px;padding:18px;text-align:center;border-top:2px dashed var(--line);
  color:var(--muted);font-weight:700;letter-spacing:.06em;
}
.rules-sign{margin-top:22px;color:var(--ink-2)}
.rules-gate{
  background:#fff;border:2px solid var(--line);border-radius:var(--r-lg);
  padding:20px 22px;margin-top:18px;box-shadow:var(--sh-1);
}
.rules-reminder{
  background:linear-gradient(135deg,#fffaf0,#fff5f7);
  border:1px solid #ffe0c7;border-radius:var(--r-lg);padding:18px 20px;margin-top:18px;
}
.rules-reminder h3{margin:0 0 8px;font-size:1.02rem}
.rules-reminder p{font-size:.93rem;margin-bottom:8px}

/* ---------------------------------------------------- kalkulator diety */
.diet-result{background:linear-gradient(135deg,#fff,#f7fbff);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-1)}
.diet-big{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:16px 0}
.diet-tile{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:15px;text-align:center}
.diet-tile b{display:block;font-size:1.7rem;line-height:1.15;background:var(--grad-cool);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.diet-tile span{font-size:.8rem;color:var(--muted);font-weight:700}
.macro-bar{display:flex;height:26px;border-radius:999px;overflow:hidden;margin:10px 0}
.macro-bar i{display:block;height:100%}
.macro-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:.84rem;margin-top:6px}
.macro-legend span{display:inline-flex;align-items:center;gap:6px}
.macro-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}

/* ---------------------------------------------------- horoskop / kosmogram */
.astro-head{background:linear-gradient(135deg,#fff 0%,#faf7ff 100%)}
.astro-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:2px 20px;margin-top:14px}
.astro-kv{display:flex;justify-content:space-between;gap:14px;padding:6px 0;
  border-bottom:1px dashed var(--line);font-size:.88rem;align-items:baseline}
.astro-kv span{color:var(--muted);font-weight:600;flex:0 0 auto}
.astro-kv b{text-align:right;font-weight:700}
.astro-list{margin:0;padding-left:20px}
.astro-list li{margin-bottom:7px;font-size:.93rem}
.wheel-card{text-align:center}
.wheel-wrap{max-width:540px;margin:0 auto}
.wheel{width:100%;height:auto;display:block}
.wheel-legend{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-top:10px;
  font-size:.78rem;color:var(--muted)}
.wheel-legend span{display:inline-flex;align-items:center;gap:6px}
.wheel-legend i{width:14px;height:3px;border-radius:2px;display:inline-block}

.geo-wrap{position:relative}
.geo-list{position:absolute;left:0;right:0;top:100%;z-index:40;background:#fff;
  border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--sh-2);
  max-height:260px;overflow-y:auto;display:none;margin-top:4px}
.geo-list.on{display:block}
.geo-item{display:block;width:100%;text-align:left;background:none;border:0;
  padding:9px 13px;cursor:pointer;font-family:inherit;border-bottom:1px solid var(--line)}
.geo-item:hover{background:hsl(var(--hue) 100% 97%)}
.geo-item b{display:block;font-size:.9rem}
.geo-item span{font-size:.76rem;color:var(--muted)}
.geo-status{color:#0b7a53;font-weight:700}

/* ---------------------------------------------------- gra */
.memo{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:440px;margin:0 auto}
.memo-card{aspect-ratio:1;border-radius:var(--r);border:0;cursor:pointer;font-size:2rem;
  background:var(--grad-cool);color:transparent;display:grid;place-items:center;transition:.25s;box-shadow:var(--sh-1)}
.memo-card.open,.memo-card.done{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.memo-card.done{opacity:.45;cursor:default}

.game-tile{position:relative;overflow:hidden}
.game-tile::after{content:"";position:absolute;right:-40px;top:-40px;width:150px;height:150px;
  border-radius:50%;background:var(--grad-hot);opacity:.1}
.game-tile-duo::after{background:var(--grad-cool)}
.game-ico{font-size:2.4rem;display:block;margin-bottom:6px}
.game-play{background:linear-gradient(135deg,#fff,#fdf7ff)}
.question-box{position:relative;background:var(--grad-cool);color:#fff;border-radius:var(--r-lg);
  padding:26px 26px 26px 74px;box-shadow:var(--sh-2);margin-top:6px}
.q-num{position:absolute;left:22px;top:22px;width:38px;height:38px;border-radius:50%;
  background:rgba(255,255,255,.25);display:grid;place-items:center;font-weight:900;font-size:1.05rem}
.q-text{margin:0;font-size:1.12rem;font-weight:700;line-height:1.5}
.answers{display:grid;gap:12px;margin-top:16px}
.answer{border-radius:var(--r);padding:13px 16px;border:1px solid var(--line);background:#fff}
.answer-head{display:flex;align-items:center;gap:7px;font-size:.84rem;margin-bottom:6px;color:var(--muted)}
.answer p{margin:0;font-size:.95rem;line-height:1.55}
.answer-mine{border-left:3px solid var(--pink);background:hsl(var(--hue) 100% 98%)}
.answer-theirs{border-left:3px solid var(--violet);background:#faf8ff}
.answer-wait{border-style:dashed;background:var(--bg)}
.round-block{padding:14px 0;border-bottom:1px solid var(--line)}
.round-block:last-child{border-bottom:0}
.round-block h3{font-size:.98rem;color:var(--violet-dk)}

/* ---------------------------------------------------- artykuły */
.art-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}
.art-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--sh-1);display:flex;flex-direction:column;transition:transform .16s,box-shadow .2s}
.art-card:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.art-card img{width:100%;aspect-ratio:16/9;object-fit:cover}
.art-card .art-body{padding:16px;display:flex;flex-direction:column;gap:7px;flex:1}
.art-card h3{margin:0;font-size:1.05rem}
.art-card p{margin:0;font-size:.89rem;color:var(--muted);flex:1}
.art-meta{font-size:.76rem;color:var(--muted);display:flex;gap:10px;flex-wrap:wrap}
.article-body{font-size:1.04rem;line-height:1.75;max-width:72ch}
.article-body h2{margin-top:1.4em;font-size:1.35rem}
.article-body h3{margin-top:1.2em}
.article-body img{border-radius:var(--r);margin:1.2em 0}
.article-body blockquote{margin:1.2em 0;padding:12px 20px;border-left:4px solid var(--pink);
  background:hsl(var(--hue) 100% 97%);border-radius:0 var(--r-sm) var(--r-sm) 0;font-style:italic}
.article-hero{width:100%;max-height:420px;object-fit:cover;border-radius:var(--r-xl);margin-bottom:20px}

/* ---------------------------------------------------- reklamy */
.ad-wrap{margin:14px auto}
.ad{position:relative;background:#fff;border:1px dashed var(--line);border-radius:var(--r);
  padding:14px 16px 12px;text-align:center;overflow:hidden}
.ad-tag{position:absolute;left:10px;top:6px;font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;
  color:var(--muted);font-weight:800}
.ad-link{display:inline-flex;flex-direction:column;align-items:center;gap:8px;font-weight:700;color:var(--violet-dk)}
.ad-link img{max-height:120px;border-radius:10px;margin:0 auto}
.ad-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0}
.ad-row-one{grid-template-columns:1fr}
/* Własny baner HTML rysuje sobie tło i ramkę sam — zdejmujemy otoczkę,
   żeby nie siedział w kratkowanym pudełku i mógł zająć pełną szerokość. */
.ad:has(> [class^="mz"]){background:none;border:0;padding:22px 0 0;text-align:left}
.ad:has(> [class^="mz"]) .ad-tag{left:0;top:2px}
.ad-side{margin-bottom:16px}
.ad-top{margin-top:14px}

/* ---------------------------------------------------- stopka */
.footer{background:#171a33;color:#c8ccea;margin-top:40px;padding-top:36px}
.footer-in{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:26px;padding-bottom:28px}
.footer h4{color:#fff;font-size:.95rem;margin-bottom:12px;text-transform:uppercase;letter-spacing:.06em}
.footer-col a{display:block;color:#a7adcf;padding:4px 0;font-size:.9rem}
.footer-col a:hover{color:#fff}
.footer .muted{color:#8b91b8}
.brand-footer .brand-name{background:var(--grad-hot);-webkit-background-clip:text;background-clip:text;color:transparent}
.badge-18{display:inline-block;border:1.5px solid #ff6b95;color:#ff9db8;border-radius:999px;
  padding:3px 12px;font-size:.78rem;font-weight:800}
.footer-bar{border-top:1px solid #272b4d;padding:16px 0;font-size:.84rem;color:#8b91b8}
.footer-bar-in{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.credit{text-align:right;font-weight:700;color:#c8ccea;line-height:1.5}
.credit a{color:#ff9db8;font-weight:800}
.credit a:hover{color:#fff}
@media(max-width:520px){.footer-bar-in{flex-direction:column;text-align:center}.credit{text-align:center}}

/* ---------------------------------------------------- admin */
.admin-layout{display:grid;grid-template-columns:210px 1fr;gap:20px;align-items:start}
.admin-nav{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:8px;box-shadow:var(--sh-1)}
.admin-nav a{display:block;padding:10px 13px;border-radius:10px;font-weight:700;font-size:.9rem;color:var(--ink-2)}
.admin-nav a:hover{background:var(--bg);text-decoration:none}
.admin-nav a.on{background:var(--grad-cool);color:#fff}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--sh-1)}
.kpi b{display:block;font-size:1.7rem;line-height:1.15;color:var(--ink)}
.kpi span{color:var(--muted);font-size:.83rem;font-weight:700}
.kpi-hot b{color:var(--pink-dark)}
.kpi-warn b{color:#d97706}

/* ---------------------------------------------------- lightbox */
.lb{position:fixed;inset:0;background:rgba(12,13,28,.9);display:none;place-items:center;z-index:200;padding:24px}
.lb.on{display:grid}
.lb img{max-width:92vw;max-height:88vh;border-radius:var(--r);box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lb-close{position:absolute;top:18px;right:22px;background:#fff;border:0;width:42px;height:42px;
  border-radius:50%;font-size:1.3rem;cursor:pointer;font-weight:800}

/* ---------------------------------------------------- responsywnosc */
@media (max-width:1020px){
  .cols{grid-template-columns:1fr}
  .chat-layout{grid-template-columns:1fr}
  .admin-layout{grid-template-columns:1fr}
  .footer-in{grid-template-columns:1fr 1fr}
}
@media (max-width:1200px){
  .burger{display:flex}
  .mainnav{
    display:none;order:5;width:100%;flex:1 0 100%;flex-direction:column;align-items:stretch;
    background:#fff;border-top:1px solid var(--line);padding:10px 0;gap:2px;margin-left:0;
  }
  .mainnav.open{display:flex}
  .mainnav>a,.nav-more-btn{border-radius:10px;justify-content:flex-start}
  .nav-more-panel{position:static;display:block;box-shadow:none;border:0;padding:0 0 0 12px;min-width:0}
  .topbar-right{margin-left:auto;order:3}
  .topbar-in{flex-wrap:wrap;height:auto;min-height:64px;padding-top:6px;padding-bottom:6px}
  .hero{padding:38px 22px}
  .how,.why,.g-3,.g-4{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr;margin-top:-20px}
  .ad-row{grid-template-columns:1fr}
  .profile-head{height:120px}
  .profile-top{margin-top:-46px;gap:14px}
  .ava-xl{width:112px;height:112px}
  .field-2,.field-3{grid-template-columns:1fr}
  .profiles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .msg{max-width:86%}
  .memo{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:560px){
  .g-2{grid-template-columns:1fr}
  .profiles{grid-template-columns:repeat(2,1fr)}
  .profile-top{margin-top:-44px}
  .usermenu-name{display:none}
  .footer-in{grid-template-columns:1fr}
  .card{padding:16px}
  .topbar-right{width:100%;order:4;justify-content:space-between;padding-bottom:8px;gap:6px}
  .topbar-right .btn{padding:7px 12px;font-size:.82rem}
  .topbar-in{height:auto;padding-top:8px;row-gap:4px}
  .brand-name{font-size:1.05rem}
  .pbtn{width:32px;height:32px}
  .hero{padding:30px 18px;border-radius:var(--r-lg)}
  .question-box{padding:20px 18px 20px 18px}
  .q-num{position:static;margin-bottom:10px}
  .memo{grid-template-columns:repeat(4,1fr);gap:7px}
  .memo-card{font-size:1.4rem}
  .tabs a{padding:7px 12px;font-size:.84rem}
}
@media (max-width:380px){
  .profiles{grid-template-columns:1fr}
}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}

/* druk */
@media print{
  .topbar,.footer,.ad,.ad-wrap,.btn{display:none!important}
  body{background:#fff}
}

/* ---------------------------------------------------- dok odtwarzacza (telefon) */
.pm-dock{
  position:fixed;left:0;right:0;bottom:0;z-index:120;
  background:#0d1230;color:#f1f3ff;border-top:1px solid rgba(150,168,255,.3);
  box-shadow:0 -12px 34px rgba(0,0,0,.45);
  display:flex;flex-direction:column;
}
.pm-dock-bar{
  display:flex;align-items:center;gap:6px;padding:8px 10px;
  background:rgba(109,92,240,.22);border-bottom:1px solid rgba(150,168,255,.22);
}
.pm-dock-name{flex:1 1 auto;font-weight:800;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pm-dock-btn{
  flex:0 0 auto;width:34px;height:34px;border-radius:9px;cursor:pointer;
  background:rgba(255,255,255,.1);border:1px solid rgba(150,168,255,.3);
  color:#f1f3ff;font-size:1rem;line-height:1;font-family:inherit;
}
.pm-dock-btn:active{background:rgba(255,255,255,.22)}
.pm-dock-body{height:300px;transition:height .2s ease}
.pm-dock-yt .pm-dock-body{height:340px}
.pm-dock-body iframe{width:100%;height:100%;border:0;display:block;background:#05060f}
.pm-dock-mini .pm-dock-body{height:0;overflow:hidden}
/* miejsce na dok, żeby nie zasłaniał stopki i treści */
body.has-dock{padding-bottom:352px}
body.has-dock:has(.pm-dock-mini){padding-bottom:56px}
@media (min-width:861px){
  .pm-dock{left:auto;right:18px;bottom:18px;width:380px;border-radius:16px;border:1px solid rgba(150,168,255,.3)}
  .pm-dock-bar{border-radius:15px 15px 0 0}
  body.has-dock{padding-bottom:0}
}

/* ---------------------------------------------------- status konta na profilu */
.status-ok{border-left:4px solid #34d399;background:linear-gradient(100deg,#ecfdf5,#fff 60%)}
.status-ok h3{color:#047857}
.status-wait{border-left:4px solid var(--amber);background:linear-gradient(100deg,#fffbeb,#fff 60%)}
.status-wait h3{color:#92400e}
