#view-home #catsGrid .home-cats-toggle{font:inherit;text-align:left;appearance:none;-webkit-appearance:none}
#view-home #catsGrid .home-cats-toggle .cat-head{width:100%}
/* RADAR V313 — feature styles layered on top of the reference visual system.
   This file contains only components added after the original visual prototype. */

:root{
  --accent:var(--gold-bright);
  --green:var(--ok);
  --bad:var(--off);
  --card:var(--surface);
  --soft:var(--tile);
}

/* Category component: one shared structural layer. Device layout lives only in
   mobile.css and desktop.css, so old geometry cannot override the release. */
#view-home #catsGrid{min-width:0}
#view-home #catsGrid .cat{
  position:relative;box-sizing:border-box;display:block;min-width:0;color:var(--ink);
  text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;contain:layout paint
}
#view-home #catsGrid .cat-head{position:relative;z-index:2;min-width:0}
#view-home #catsGrid .cat-art{position:absolute;z-index:1;display:grid;place-items:center;pointer-events:none}
#view-home #catsGrid .cat-fallback,#view-home #catsGrid .cat-ico-large{display:grid;place-items:center}
#view-home #catsGrid .cat-fallback svg,#view-home #catsGrid .cat-ico-large svg{display:block;max-width:100%;max-height:100%}
#view-home #catsGrid .cat-photo{display:block;max-width:100%;max-height:100%;object-fit:contain}
#view-home #catsGrid .cat-photo[hidden]{display:none!important}
#view-home #catsGrid .cat-art-custom .cat-fallback{display:none!important}
#view-home #catsGrid .cat:focus-visible{outline:2px solid color-mix(in oklab,var(--accent) 72%,transparent);outline-offset:2px}
.cats-collapse{display:flex;justify-content:center;margin-top:12px}
.cats-collapse:empty{display:none}
.cats-collapse-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:0 15px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--dim);font:600 13px/1 var(--sans);cursor:pointer}
.cats-collapse-btn .ic{width:15px;height:15px}

/* Accessible, consistent focus without flattening every control to one size. */
:where(.btn,.icon-btn,.cat-btn,.acct-chip,.chip,.csel-btn,.csel-tab,button,a[role="button"]):focus-visible{
  outline:2px solid color-mix(in oklab,var(--accent) 72%,transparent);
  outline-offset:2px;
}
:where(button,.btn,.icon-btn)[disabled]{opacity:.52;cursor:not-allowed;transform:none!important}

/* Search / empty states. */
.ac-empty,.ac-hint{color:var(--dim);cursor:default!important}
.ac-empty{padding:15px!important;text-align:center;font-size:13px}
.chat-empty{
  display:flex;align-items:center;justify-content:center;min-height:120px;margin:8px;padding:18px;
  border:1px dashed var(--line);border-radius:14px;background:color-mix(in oklab,var(--surface) 76%,transparent);
  color:var(--dim);font-size:13.5px;text-align:center
}
.empty-state.compact{min-height:180px}

/* Authentication feedback. */
.auth-pass-hint{margin:-4px 2px 12px;color:var(--dim);font-size:12px;line-height:1.45}
.auth-error{
  display:none;margin:0 0 12px;padding:10px 12px;border:1px solid color-mix(in oklab,var(--bad) 38%,var(--line));
  border-radius:12px;background:color-mix(in oklab,var(--bad) 8%,var(--surface));color:var(--bad);font-size:12.5px;line-height:1.4
}
.auth-error.show{display:block}

/* Ads rendered by the API/admin configuration. */
.ad-chip{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:20px;padding:0 7px;border-radius:6px;background:rgba(12,13,17,.78);color:#fff;font:800 9px/1 var(--mono);letter-spacing:.08em}
.ca-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* Service availability. */
.sc-down,.d-down{
  display:inline-flex;align-items:center;gap:6px;flex:none;padding:4px 9px;border-radius:8px;
  background:color-mix(in oklab,var(--bad) 13%,transparent);color:var(--bad);font:800 10.5px/1 var(--mono);text-transform:uppercase;white-space:nowrap
}
.sc-down .sd-dot,.d-down .sd-dot{width:7px;height:7px;border-radius:50%;background:var(--bad);flex:none}
.mir-empty{padding:14px 16px;border:1px dashed var(--line-strong);border-radius:13px;color:var(--dim);background:var(--tile);font-size:13px}
.sc-badges-full{display:flex;flex-wrap:wrap;align-items:center;gap:7px;max-width:100%}

/* Catalog search and filters: one visual language, no nested square input. */
#view-catalog .catalog-search{
  display:flex;align-items:center;gap:10px;width:100%;height:var(--control-h);min-height:var(--control-h);padding:0 15px;
  border:1px solid var(--line-strong);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-sm)
}
#view-catalog .catalog-search:focus-within{border-color:var(--ink);box-shadow:0 0 0 4px color-mix(in oklab,var(--ink) 8%,transparent)}
#view-catalog .catalog-search .si{position:static;transform:none;color:var(--faint);display:inline-flex}
#view-catalog .catalog-search input{
  width:100%!important;height:var(--control-h)!important;min-height:var(--control-h)!important;min-width:0!important;margin:0!important;padding:0!important;
  border:0!important;border-radius:0!important;outline:0!important;box-shadow:none!important;background:transparent!important;color:var(--ink)!important
}
#view-catalog .subchip-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:10px 0 18px;padding:0}
#view-catalog .subchip-row .chip,#view-catalog .subchip-row .sub-chip{
  display:inline-flex;align-items:center;justify-content:center;height:var(--filter-h);min-height:var(--filter-h);padding:0 14px;margin:0;
  border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer
}
#view-catalog .subchip-row :is(.chip,.sub-chip).active{background:var(--ink);border-color:var(--ink);color:var(--on-brand)}

/* Exchange selector: reference geometry with retained smart search and type tabs. */
#view-exchange .csel-pop{overflow:hidden;border-radius:14px;box-shadow:var(--shadow-lg)}
#view-exchange .csel-pop-head{padding:10px 10px 8px;background:var(--surface);border-bottom:1px solid var(--line)}
#view-exchange .csel-search-wrap{display:flex;align-items:center;gap:8px;height:40px;padding:0 11px;margin:0 0 9px;border:1px solid var(--line-strong);border-radius:11px;background:var(--surface)}
#view-exchange .csel-search-wrap:focus-within{border-color:var(--line-strong);background:var(--surface);box-shadow:0 0 0 2px color-mix(in oklab,var(--accent) 16%,transparent)}
#view-exchange .csel-search-wrap input{flex:1;min-width:0;height:100%!important;min-height:0!important;padding:0!important;border:0!important;border-radius:0!important;outline:0!important;background:transparent!important;box-shadow:none!important;color:var(--ink);font-size:16px;-webkit-appearance:none;appearance:none}
#view-exchange .csel-search-wrap input::-webkit-search-cancel-button{display:none}
#view-exchange .csel-tabs{display:flex;align-items:center;gap:6px;overflow-x:auto;scrollbar-width:none}
#view-exchange .csel-tabs::-webkit-scrollbar{display:none}
#view-exchange .csel-tab{flex:0 0 auto;height:var(--filter-h-popup);min-height:var(--filter-h-popup);padding:0 12px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--dim);font-size:12.5px;font-weight:600;cursor:pointer}
#view-exchange .csel-tab.on{background:var(--ink);border-color:var(--ink);color:var(--on-brand)}
#view-exchange .csel-list{padding:6px;overflow:auto}
#view-exchange .csel-opt{min-height:42px;gap:10px;padding:9px 10px;border-radius:8px}
#view-exchange .csel-empty{padding:22px 12px;text-align:center;color:var(--dim);font-size:13px}

/* Public roulette lifecycle, history and verifiable result. */
#homeRaffleAnnounce.is-pending{background:linear-gradient(135deg,#17191f,#25211a)}
#homeRaffleAnnounce.is-result{background:linear-gradient(135deg,#111b18,#172d25)}
.roulette-page-title .cnt{text-transform:none}
.roulette-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;margin-left:6px;padding:0 6px;border-radius:999px;background:var(--soft);color:var(--dim);font-size:11px;font-weight:800}
.roulette-phase-badge{display:inline-flex;width:max-content;margin-top:10px;padding:6px 10px;border-radius:999px;background:var(--soft);color:var(--dim);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.roulette-phase-badge.active,.roulette-phase-badge.finished{background:color-mix(in oklab,var(--green) 12%,transparent);color:var(--green)}
.roulette-phase-badge.drawing,.roulette-phase-badge.awaiting_draw{background:rgba(211,159,64,.14);color:#9a6b13}
.roulette-phase-panel{min-width:250px;display:flex;align-items:center;gap:14px;padding:17px 18px;border:1px solid var(--line);border-radius:16px;background:var(--soft)}
.roulette-phase-panel>.ic{width:25px;height:25px;flex:none}.roulette-phase-panel>div{display:flex;flex-direction:column;gap:4px}.roulette-phase-panel b{font-size:14px}.roulette-phase-panel span{color:var(--dim);font-size:12.5px;line-height:1.45}
.roulette-phase-panel.pending{background:rgba(211,159,64,.08);border-color:rgba(211,159,64,.25)}
.prize{min-width:0}.prize-copy{display:grid;min-width:0;gap:2px;line-height:1.25}.prize-copy b{min-width:0;overflow-wrap:anywhere}.prize-place{display:none;color:var(--faint);font:700 10px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.04em}.prize .pq{margin-left:auto;white-space:nowrap;flex:none}.prize.p-other .pn{background:var(--line-strong);color:var(--dim)}.roulette-prizes-empty{display:block;padding:10px 0}
.roulette-phase-panel.finished{background:color-mix(in oklab,var(--green) 8%,transparent);border-color:color-mix(in oklab,var(--green) 22%,transparent)}
.roulette-result-block{margin-top:20px;padding-top:20px;border-top:1px solid var(--line)}
/* V331: список победителей — авто-колонки при большом числе, чтобы длинный
   список не превращался в бесконечный узкий столбец. На узком экране 1 колонка. */
/* Логотип-картинка сервиса: заполняет контейнер (.sc-logo/.d-logo/.lg), скругление
   наследует от родителя. Раньше картинка-лого вставлялась текстом и не показывалась. */
.sc-logo .logo-img,.d-logo .logo-img,.lg .logo-img,.ex-card-h .lg .logo-img,.ex-name .lg .logo-img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}

.roulette-winners-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:9px}
/* Много победителей — ограничиваем высоту и включаем прокрутку блока. */
.roulette-winners-list.many{max-height:420px;overflow-y:auto;padding-right:4px;scrollbar-width:thin}
.roulette-winners-list.many::-webkit-scrollbar{width:6px}
.roulette-winners-list.many::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.roulette-winner-row{display:grid;grid-template-columns:auto minmax(120px,1fr) minmax(140px,auto);align-items:center;gap:12px;min-height:48px;padding:8px 12px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.roulette-winner-name{font-weight:800;overflow-wrap:anywhere}.roulette-winner-row .pz{color:var(--dim);text-align:right;overflow-wrap:anywhere}
/* V331: чистая «медаль» — объёмный кружок с бликом, без бледности и лишних слоёв. */
.roulette-winner-row .medal{position:relative;flex:none;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:40px;height:40px;border-radius:50%;font-weight:800;font-size:14px;line-height:1;background:var(--surface);border:1px solid var(--line);color:var(--ink);overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.35)}
/* внутреннее кольцо-ободок медали (глубина, а не плоский диск) */
.roulette-winner-row .medal::before{content:"";position:absolute;inset:3px;border-radius:50%;border:1px solid rgba(255,255,255,.35);pointer-events:none}
/* диагональный блик по металлу */
.roulette-winner-row .medal::after{content:"";position:absolute;inset:0;background:linear-gradient(125deg,rgba(255,255,255,.55) 0%,rgba(255,255,255,0) 42%);pointer-events:none}
.roulette-winner-row .medal .medal-crown{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;margin-bottom:1px;opacity:.85}
.roulette-winner-row .medal .medal-crown svg,.roulette-winner-row .medal .medal-crown .ic{width:12px;height:12px}
.roulette-winner-row .medal .medal-rank{position:relative;z-index:1;display:inline-block;font-size:13px;text-shadow:0 1px 0 rgba(255,255,255,.25)}
.roulette-winner-row .medal.c1{background:radial-gradient(120% 120% at 32% 22%,#fdefac 0%,#f2ca57 42%,#d4a520 78%,#b6860f 100%);color:#4a3a06;border-color:#caa017}
.roulette-winner-row .medal.c2{background:radial-gradient(120% 120% at 32% 22%,#fbfdff 0%,#d3dce6 44%,#a9b6c6 80%,#8593a4 100%);color:#2b3340;border-color:#9aa7b6}
.roulette-winner-row .medal.c3{background:radial-gradient(120% 120% at 32% 22%,#f4c7a0 0%,#dc9f6a 44%,#bb7840 80%,#98572a 100%);color:#fff;border-color:#a9602e}
/* места вне тройки — нейтральный, но не «сырой» кружок */
.roulette-winner-row .medal:not(.c1):not(.c2):not(.c3){background:var(--tile);border-color:var(--line);color:var(--dim);box-shadow:none}
.roulette-winner-row .medal:not(.c1):not(.c2):not(.c3)::before,.roulette-winner-row .medal:not(.c1):not(.c2):not(.c3)::after{display:none}
.roulette-no-winners{padding:16px;border:1px dashed var(--line);border-radius:14px;color:var(--dim);font-size:13px;line-height:1.55}
.roulette-proof{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}
.roulette-proof>div{display:flex;flex-direction:column;gap:5px;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:var(--soft)}
.roulette-proof b{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--dim)}.roulette-proof span{font-size:13px;font-weight:700}.roulette-proof .roulette-proof-hash{grid-column:1/-1}
.roulette-proof code{display:block;max-width:100%;padding:9px 10px;border-radius:9px;background:var(--card);font:11px/1.5 var(--mono);overflow-wrap:anywhere;user-select:all}
.roulette-parts-head{margin:22px 0 12px}.roulette-chat-head{margin:26px 0 12px}.roulette-history-head{margin:20px 0 14px}.roulette-history-head h2{font-size:18px}
.roulette-history-list{display:grid;gap:14px}.roulette-history-card{padding:20px;border:1px solid var(--line);border-radius:20px;background:var(--card);box-shadow:var(--shadow-sm)}
.rhc-top{display:flex;justify-content:space-between;align-items:center;gap:12px}.rhc-number{color:var(--dim);font:700 11px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.rhc-status{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;background:color-mix(in oklab,var(--green) 10%,transparent);color:var(--green);font-size:11px;font-weight:800}.rhc-status .ic{width:14px;height:14px}
.roulette-history-card h3{margin:12px 0 10px;font-size:20px;line-height:1.25;overflow-wrap:anywhere}.rhc-meta{display:flex;flex-wrap:wrap;gap:8px 14px;color:var(--dim);font-size:12px}.rhc-meta span{display:inline-flex;align-items:center;gap:6px}.rhc-meta .ic{width:15px;height:15px}
.rhc-prize-line{margin-top:15px}.rhc-prize-line>.rfl-sec{margin:0 0 9px}.rhc-prize-line .prizes{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:9px;margin:0}.rhc-prize-line .prize{box-sizing:border-box;width:100%;min-width:0;min-height:56px}.rhc-winners{display:grid;gap:7px;margin-top:14px}.rhc-winners .roulette-winner-row{min-height:42px;padding:6px 9px}
.roulette-detail-btn{margin-top:14px}.roulette-history-detail{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.roulette-history-detail[hidden]{display:none!important}
.rhd-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:18px}.checklist.compact{margin-bottom:0}.prizes.compact{margin-top:8px}
/* V316: ровные карточки призов в текущей рулетке — одинаковая ширина, выровненные колонки номер|название|кол-во */
.prizes.compact{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.prizes.compact .prize{display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-width:0;box-sizing:border-box}
.prizes.compact .prize .prize-copy{min-width:0}
.prizes.compact .prize .pq{margin-left:0;align-self:center;justify-self:end}
.roulette-detail-loading,.roulette-history-count{padding:12px 2px;text-align:center}.roulette-history-more{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:16px 0 4px}.roulette-history-more .roulette-history-count{padding:0;text-align:left}

/* Profile states introduced by the account/API work. */
.pf-wins-empty{display:flex;flex-direction:column;align-items:flex-start;gap:7px;padding:8px 0 4px}
.pf-wins-empty .ic{width:32px;height:32px;padding:7px;border-radius:12px;background:var(--gold-soft);color:var(--gold)}
.pf-wins-empty b{font-size:16px;line-height:1.2;color:var(--ink)}.pf-wins-empty span,.pf-empty-sub{font-size:13.5px;line-height:1.55;color:var(--dim)}
.pf-empty-btn{margin-top:12px}

/* Install guide. */
.install-sheet{position:relative;width:min(520px,calc(100vw - 24px));padding:24px 22px 22px!important;border:1px solid var(--line)!important;border-radius:26px!important;background:var(--surface)!important}
.install-sheet-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.install-sheet-badge{display:inline-flex;align-items:center;min-height:30px;padding:0 11px;border:1px solid var(--line);border-radius:999px;background:var(--tile);color:var(--dim);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.install-detected{margin-top:6px;color:var(--faint);font-size:11.5px}
.install-sheet-icon{width:52px;height:52px;border:1px solid var(--line);border-radius:17px;background:var(--tile);display:grid;place-items:center;color:var(--ink);flex:none}.install-sheet-icon .ic{width:23px;height:23px}.install-sheet-close{position:absolute!important;top:14px!important;right:14px!important}.install-sheet h3{margin:0 52px 8px 0!important;font-size:22px!important;line-height:1.15!important}.install-sheet-lead{margin:0 0 16px;color:var(--dim);font-size:14.5px;line-height:1.55}.install-steps{display:grid;gap:9px}.install-step{display:flex;align-items:flex-start;gap:11px;padding:12px 13px;border:1px solid var(--line);border-radius:16px;background:var(--tile)}.install-step-num{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--ink);color:var(--on-brand);font-weight:800}.install-step-body{display:grid;gap:3px;min-width:0}.install-step-body b{font-size:13.5px}.install-step-body span{color:var(--dim);font-size:13px;line-height:1.45}.install-sheet-note{margin-top:11px;padding:11px 13px;border-radius:14px;background:var(--gold-soft);color:var(--dim);font-size:13px;line-height:1.45}.install-sheet-actions{display:flex;margin-top:15px}.install-sheet-actions .btn{min-width:148px}

/* Mobile chat portal; desktop remains the regular two-column chat. */
.mobile-chat-sheet-bar,.mobile-chat-portal{display:none}

@media (max-width:720px){
  .roulette-current-card .rfl-hero{gap:18px}.roulette-phase-panel{min-width:0;width:100%}.roulette-winner-row{grid-template-columns:auto minmax(0,1fr)}.roulette-winner-row .pz{grid-column:2;text-align:left}.roulette-proof,.rhd-grid{grid-template-columns:1fr}.roulette-proof .roulette-proof-hash{grid-column:auto}.roulette-history-card{padding:16px;border-radius:17px}.rhc-top{align-items:flex-start}.rhc-meta{display:grid;grid-template-columns:1fr;gap:7px}.rhc-prize-line .prizes{grid-template-columns:1fr}.rhc-prize-line .prize{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;padding:11px 12px}.rhc-prize-line .prize-place{display:block}.rhc-prize-line .prize .pq{align-self:center}.prizes.compact{grid-template-columns:1fr}.roulette-history-head{display:block}.roulette-history-head .eyebrow{display:block;margin-top:5px}.roulette-history-more{align-items:stretch;flex-direction:column}.roulette-history-more .btn{width:100%}.roulette-history-more .roulette-history-count{text-align:center}
}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
