/* ЛОББИ /play/ в стиле главной (server/portal.js, portal.css): белый фон, фиолетовый #5B2BD9 + жёлтый #FFB21E,
   Manrope/Unbounded. Шапка с запуском партии закреплена при прокрутке, ниже — карточки игр под плакаты.
   Всё под #lobby: игровой экран и окна остаются тёмными. В приложении #lobby нет — там #appMenu. */
@font-face{font-family:'Manrope';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/manrope-latin-500-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/manrope-cyrillic-500-normal.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/manrope-latin-600-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/manrope-cyrillic-600-normal.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Manrope';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/manrope-latin-700-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/manrope-cyrillic-700-normal.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Manrope';font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/manrope-latin-800-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/manrope-cyrillic-800-normal.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/unbounded-latin-700-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/unbounded-cyrillic-700-normal.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/unbounded-latin-800-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/unbounded-cyrillic-800-normal.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}

/* лобби — единственный экран кроме партии: класс playing снимается, значит на экране лобби */
html:has(> body:not(.playing):not(.in-app)),body:not(.playing):not(.in-app){background:#FFFFFF}
/* шапка закрепляется только если лобби растёт по содержимому: при height:100% она отставала через экран */
body:not(.playing):not(.in-app) #app{max-width:none;height:auto;min-height:100%;padding:0}
#lobby{--ease:cubic-bezier(.22,.61,.36,1);--ink:#1E1442;--mute:#5E5878;--pri:#5B2BD9;--pri2:#3D1A9E;--tint:#F3EFFD;--line:#E6E0F5;
  height:auto;min-height:100%;padding:0 0 calc(40px + var(--sa-bottom,0px));color:var(--ink);font-family:'Manrope',system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
#lobby button{font:inherit;font-weight:700;color:var(--ink);background:#FFFFFF;border:1px solid var(--line);border-radius:12px;padding:0 16px;min-height:44px;cursor:pointer;
  transition:color .6s var(--ease),background .6s var(--ease),border-color .6s var(--ease),box-shadow .6s var(--ease),opacity .6s var(--ease),transform .3s var(--ease)}

/* ---------- шапка ---------- */
#lobby .lb-head{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.94);-webkit-backdrop-filter:saturate(1.5) blur(12px);backdrop-filter:saturate(1.5) blur(12px);
  border-bottom:1px solid #ECE7F7;padding-top:var(--sa-top,0px)}
#lobby .lb-row{max-width:1240px;margin:0 auto;padding:0 max(24px,env(safe-area-inset-left));display:flex;align-items:center;gap:12px}
#lobby .lb-top{min-height:66px}
#lobby .lb-logo{flex:none;display:flex;transition:opacity .6s var(--ease)}
#lobby .lb-logo img{height:34px;width:auto;display:block}
#lobby .who{flex:1 1 auto;min-width:0;min-height:0;margin:0 0 0 12px;text-align:left;color:var(--mute);font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#lobby .lb-acc{display:flex;align-items:center;gap:6px;margin-left:auto;flex:none}
#lobby .lb-acc button{min-height:42px;font-size:15px;border:0;background:none;padding:0 14px}
#lobby #btnAuth{border:2px solid var(--pri);color:var(--pri)}
/* «Рейтинг» — текстом: под словом растёт линия */
#lobby #btnTop{background:linear-gradient(currentColor,currentColor) 50% 76%/0 2px no-repeat;background-origin:content-box}

#lobby .lb-ctl{flex-wrap:wrap;gap:10px 12px;padding-bottom:12px}
#lobby .lb-opts{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0}
#lobby .lb-pick{display:flex;flex-direction:column;line-height:1.2;min-width:0;max-width:240px;margin-right:6px}
#lobby .lb-pick span{font-size:12px;font-weight:600;color:var(--mute)}
#lobby .lb-pick b{font-family:'Unbounded',sans-serif;font-weight:700;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* сложность и число игроков — переключатель-«таблетка», как выбор языка на главной */
#lobby .seatrow{flex:none;margin:0;gap:2px;padding:3px;background:var(--tint);border-radius:999px;color:var(--mute);font-size:13px;font-weight:700}
#lobby .seatrow>span{padding:0 6px 0 12px}
#lobby .seatrow button{min-height:38px;padding:0 14px;border:0;background:none;border-radius:999px;font-size:14px;color:var(--mute)}
#lobby .seatrow button.on{background:#FFFFFF;color:var(--pri);box-shadow:0 1px 3px rgba(40,20,100,.18)}
#lobby .switch.give{flex:none;margin:0;padding:0 14px;min-height:44px;gap:8px;background:var(--tint);border-radius:999px;font-size:14px;font-weight:700;cursor:pointer;transition:color .6s var(--ease)}
#lobby .switch.give small{display:none}
#lobby .switch input{width:18px;height:18px;accent-color:var(--pri)}

#lobby .menu{flex:none;flex-direction:row;align-items:center;gap:10px}
#lobby #btnBot{min-height:48px;padding:0 26px;border-radius:14px;border-color:var(--pri);background:var(--pri);color:#FFFFFF;font-weight:800;font-size:16px}
#lobby .lb-dd{position:relative}
#lobby .lb-dd-btn{display:flex;align-items:center;gap:8px;min-height:48px;border-radius:14px;border-color:transparent;background:var(--tint);color:var(--pri2)}
#lobby .lb-dd-btn::after{content:'';width:6px;height:6px;margin:0 2px 3px 2px;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);transition:transform .6s var(--ease),margin .6s var(--ease)}
#lobby .lb-dd.open .lb-dd-btn{border-color:var(--pri)}
#lobby .lb-dd.open .lb-dd-btn::after{margin:3px 2px 0 2px;transform:rotate(-135deg)}
#lobby .lb-pop{display:flex;visibility:hidden;opacity:0;transform:translateY(-6px);transition:opacity .4s var(--ease),transform .4s var(--ease),visibility 0s .4s;position:absolute;right:0;top:calc(100% + 8px);z-index:2;width:310px;max-width:calc(100vw - 32px);padding:14px;flex-direction:column;gap:8px;
  background:#FFFFFF;border:1px solid var(--line);border-radius:18px;box-shadow:0 18px 48px rgba(40,20,100,.16)}
#lobby .lb-dd.open .lb-pop{visibility:visible;opacity:1;transform:none;transition-delay:0s}
#lobby .lb-pop-h{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin:0 2px 2px}
#lobby .lb-pop>button{width:100%;text-align:left}
#lobby #btnCreate{text-align:center;border-color:#FFB21E;background:#FFB21E;color:#24124F;font-weight:800}
#lobby .join{gap:8px}
#lobby .join input{min-width:0;min-height:44px;padding:0 12px;font:inherit;font-weight:700;letter-spacing:3px;background:#FBF9FF;color:var(--ink);border:1px solid var(--line);border-radius:12px;transition:border-color .6s var(--ease),box-shadow .6s var(--ease)}
#lobby .join input::placeholder{color:#9A93B5;letter-spacing:1px}
#lobby .join input:focus{outline:0;border-color:var(--pri);box-shadow:0 0 0 1px var(--pri)}
#lobby #btnJoin{flex:none;border-color:var(--pri);background:var(--pri);color:#FFFFFF}
#lobby .msg{max-width:1240px;margin:0 auto;padding:0 24px 10px;min-height:0;text-align:left;color:#D93A2B;font-size:14px;font-weight:600}
#lobby .msg:empty{display:none}

/* ---------- карточки игр: верх — место под плакат (3:4), пока там иконка игры ---------- */
#lobby>h1{width:100%;max-width:1240px;margin:40px auto 20px;padding:0 24px;text-align:left;font-family:'Unbounded',sans-serif;font-weight:800;font-size:36px;line-height:1.2}
#lobby .games{width:100%;max-width:1240px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}
/* плакат на всю карточку, название поверх снизу; до плаката — иконка на градиенте Duelio */
#lobby .games button{position:relative;display:block;aspect-ratio:3/4;min-width:0;min-height:0;padding:0;overflow:hidden;border:0;border-radius:18px;text-align:left;font-size:15px;font-weight:800;
  background:#3D1A9E;box-shadow:0 4px 14px rgba(40,20,100,.14);outline:3px solid transparent;outline-offset:3px;transition:transform .6s var(--ease),box-shadow .6s var(--ease),outline-color .6s var(--ease)}
#lobby .games .gp{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding-bottom:22%;
  background:radial-gradient(circle at 50% 38%,rgba(255,255,255,.32),transparent 58%),linear-gradient(160deg,#8257F5,#3D1A9E)}
#lobby .games button:nth-child(3n+2) .gp{background:radial-gradient(circle at 50% 38%,rgba(255,255,255,.38),transparent 58%),linear-gradient(160deg,#FFCB57,#F07F1A)}
#lobby .games button:nth-child(3n) .gp{background:radial-gradient(circle at 50% 38%,rgba(255,255,255,.32),transparent 58%),linear-gradient(160deg,#5BAEFF,#2A55D6)}
#lobby .games .gp img{width:66%;height:auto;display:block;filter:drop-shadow(0 8px 14px rgba(20,10,50,.35));transition:transform .6s var(--ease)}
#lobby .games .gp.poster{padding:0;background:#3D1A9E}
#lobby .games .gp.poster img{width:100%;height:100%;object-fit:cover;filter:none}
#lobby .games .gn{position:absolute;left:0;right:0;bottom:0;padding:36px 12px 12px;line-height:1.2;color:#FFFFFF;text-shadow:0 1px 3px rgba(20,10,50,.5);
  background:linear-gradient(to bottom,transparent,rgba(20,10,50,.78));-webkit-hyphens:auto;hyphens:auto}
#lobby .games button.on{outline-color:var(--pri)}

@media (hover:hover){
  #lobby .lb-logo:hover{opacity:.72}
  #lobby .lb-acc #btnTop:hover{color:var(--pri);background-size:100% 2px}
  #lobby .switch.give:hover{color:var(--pri)}
  #lobby .join input:hover{border-color:#C9BCEF}
  #lobby #btnAuth:hover{background:var(--pri);color:#FFFFFF}
  #lobby .seatrow button:not(.on):hover{color:var(--pri)}
  #lobby #btnBot:hover,#lobby #btnJoin:hover{background:var(--pri2);border-color:var(--pri2)}
  #lobby .lb-dd-btn:hover{border-color:var(--pri)}
  #lobby #btnCreate:hover{background:#FFC24A}
  #lobby .lb-pop>button:not(#btnCreate):hover{color:var(--pri);border-color:var(--pri)}
  #lobby .games button:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(40,20,100,.24)}
  #lobby .games button:hover .gp img{transform:scale(1.06)}
}

/* ---------- телефон: шапка в три ряда, «С другом» и «Без интернета» — значками ---------- */
@media (max-width:720px){
  #lobby .lb-row{padding:0 16px;gap:8px}
  #lobby .lb-top{min-height:54px}
  #lobby .lb-logo img{height:26px}
  #lobby .who{margin-left:4px;font-size:13px}
  #lobby .lb-acc{gap:2px}
  #lobby .lb-acc button{min-height:36px;padding:0 10px;font-size:14px}
  #lobby .lb-x{display:none}
  /* nowrap обязателен: столбец с переносом берёт ширину ряда по самому широкому переключателю, и шапка вылезала за экран */
  #lobby .lb-ctl{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:8px;padding-bottom:10px}
  #lobby .lb-pick{display:none}
  /* переключатели (поддавки, соперник, игроки) переносятся рядами — прокрутки вбок быть не должно */
  #lobby .lb-opts{flex-wrap:wrap;gap:8px}
  #lobby .seatrow{flex:1 1 auto;max-width:100%}
  #lobby .seatrow>span{padding:0 4px 0 10px}
  #lobby .seatrow button{flex:1 1 0;min-width:0;min-height:34px;padding:0 8px;font-size:13px}
  #lobby .switch.give{min-height:40px}
  #lobby .menu{gap:8px}
  #lobby #btnBot{flex:1 1 auto;min-width:0;min-height:46px;padding:0 12px;font-size:15px}
  #lobby .lb-dd-btn{min-height:46px;width:46px;padding:0;justify-content:center}
  #lobby .lb-dd-btn::after{display:none}
  #lobby .lb-t{display:none}
  /* окно меню — во всю ширину под шапкой (её sticky-блок и есть точка отсчёта) */
  #lobby .lb-dd{position:static}
  #lobby .lb-pop{left:16px;right:16px;top:calc(100% - 4px);width:auto;max-width:none}
  #lobby .msg{padding:0 16px 8px}
  #lobby>h1{margin:24px auto 14px;padding:0 16px;font-size:24px}
  #lobby .games{padding:0 16px;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
  #lobby .games button{border-radius:14px;font-size:13px;outline-width:2px;outline-offset:2px}
  #lobby .games .gn{padding:26px 8px 9px}
}
@media (max-width:360px){#lobby #levelRow>span{display:none}}
