.conf-grid{--px-per-min:1;--minute:calc(var(--px-per-min)*1px);position:relative;background:var(--conf-list-bg, transparent);/* overflow-x:hidden убран для Safari scroll */}
.conf-grid__controls{display:flex;gap:8px;margin:8px 0;align-items:center;min-height:34px;--filter-h:36px}
.conf-grid__controls .conf-filter[data-key="q"]{border:1px solid #2e2e2e;border-radius:var(--conf-radius,16px);background:#141414;color:var(--conf-text,#f2f2f2);padding:6px 10px;height:calc(var(--filter-h) - 2px);line-height:1;box-sizing:border-box}
.conf-grid__controls .conf-search{margin-left:auto;display:inline-flex;align-items:center;gap:8px;max-width:100%}
.conf-grid__controls .conf-search .conf-search__group{flex:1 1 auto;min-width:0}
.conf-grid__controls .conf-search .conf-filter[data-key="q"]{flex:1 1 auto;width:100%}
.conf-search__group{position:relative;display:inline-flex;align-items:center;max-width:100%}
.conf-search{position:relative;display:inline-flex;align-items:center}
.conf-search .conf-filter[data-key="q"],
.conf-search__group .conf-filter[data-key="q"]{padding-right:28px;height:calc(var(--filter-h) - 2px);box-sizing:border-box;line-height:1;margin:0;vertical-align:middle}
.conf-search__clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:6px;background:transparent;color:#aaa;cursor:pointer;padding:0}
.conf-search__clear:hover{background:#1f1f1f;color:#ddd}
.conf-search__clear svg{width:14px;height:14px;display:block}
.conf-search:not(.has-value) .conf-search__clear{display:none}
.conf-legend{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto}
.conf-legend__item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--conf-text,#e8e8e8)}
.conf-legend__swatch{width:12px;height:12px;border-radius:3px;border:1px solid #2e2e2e}
.conf-date-pills{display:flex;gap:8px}
.conf-date-pill{padding:6px 10px;border:1px solid #2e2e2e;border-radius:var(--conf-radius,16px);cursor:pointer;background:#141414;color:var(--conf-text,#e8e8e8);display:inline-flex;align-items:center;height:calc(var(--filter-h) - 2px);box-sizing:border-box;line-height:1}
.conf-date-pill.is-active{background:#1f1f1f;border-color:var(--conf-accent,#7bd68a);color:#fff}
.conf-grid__header{margin:8px 0 12px}
.conf-grid .conf-day-header{margin:0;font-weight:600;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.conf-grid .conf-day-header__left{min-width:0}
.conf-grid .conf-day-header__city{color:var(--conf-city, var(--conf-heading, #ffffff))}
.conf-grid .conf-day-header .meta{font-size:13px;color:var(--conf-city, var(--conf-heading, #ffffff))}
.conf-grid__body{position:relative;border:1px solid var(--conf-day-border,#2e2e2e);border-radius:8px;overflow:visible}
.conf-grid__timeline{display:none}
.conf-grid__cols{position:relative;display:grid;grid-template-columns:repeat(var(--cols, 1), minmax(0,1fr));min-width:100%;box-sizing:border-box;gap:8px;padding:8px;overflow-x:hidden}
.conf-grid__events{position:relative;color:var(--conf-card-fg,#f2f2f2);display:grid;grid-template-columns:repeat(var(--cols, 1), minmax(0,1fr));gap:8px;padding:8px;grid-auto-rows:auto}
.conf-grid__now{display:none}
.conf-grid__event{position:relative;min-height:56px;border-radius:var(--conf-radius,6px);border:1px solid #333;background:var(--conf-card-bg,#141414);padding:6px 8px;box-sizing:border-box;overflow:visible;transition:transform .12s ease;z-index:1}
.conf-grid__event[data-has-details="1"]{cursor:pointer}
.conf-grid__event[data-has-details="1"]:hover{border:1px dashed var(--conf-accent,#7bd68a)}
.conf-grid__event[class*="conf-grid__event--"] {border-color: color-mix(in srgb, currentColor 8%, transparent)}
.conf-grid__event--talk{background:var(--fmt-talk, var(--conf-card-bg,#141414))}
.conf-grid__event--panel{background:var(--fmt-panel, var(--conf-card-bg,#141414))}
.conf-grid__event--workshop{background:var(--fmt-workshop, var(--conf-card-bg,#141414))}
.conf-grid__event--registration{background:var(--fmt-registration, var(--conf-card-bg,#141414))}
.conf-grid__event--break{background:var(--fmt-break, var(--conf-card-bg,#141414))}
.conf-grid__event.is-open{z-index:2;border-left:1px solid #7aa7f6;border-right:1px solid #7aa7f6;border-top:1px solid #7aa7f6/* outline:1px solid #7aa7f6 */}
.conf-grid__event--break,.conf-grid__event--registration{font-size:12px;opacity:.95}
.conf-grid__event[data-hall-id="0"]{background:var(--conf-all-halls-bg,#2b6cb0);grid-column:1 / -1}
.conf-grid__event .s{opacity:.85;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conf-grid__event .t{font-size:14px;font-weight:600;margin:2px 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conf-grid__meta{margin-bottom:4px;color:#d0d0d0}
.conf-grid__meta-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conf-grid__event .h{font-size:12px;opacity:.9;color:var(--conf-heading,#ffffff)}

/* Hall titles in columns */
.conf-col__title{font-weight:600;color:var(--conf-city, var(--conf-heading, #ffffff))}
.conf-grid__event__details{display:none;position:absolute;left:-1px;right:auto;top:100%;width:calc(100% + 2px);margin-top:0;border:0;border-top:1px dashed #333;border-bottom-left-radius:var(--conf-radius,6px);border-bottom-right-radius:var(--conf-radius,6px);background:inherit;color:var(--conf-card-fg,#f2f2f2);padding:10px;box-shadow:0 14px 28px rgba(0,0,0,.35);font-size:12px;opacity:.98;clip-path:inset(-2000px -2000px -2000px -2000px);overflow:visible;box-sizing:border-box}
.conf-grid__event.is-open .conf-grid__event__details{display:block}
/* Обводка деталей как у открытой карточки: слева, справа, снизу */
.conf-grid__event.is-open .conf-grid__event__details{border-left:1px solid #7aa7f6;border-right:1px solid #7aa7f6;border-bottom:1px solid #7aa7f6;/* outline:1px solid #7aa7f6; *//* outline-offset:-1px */}
.conf-grid__event.is-open .conf-grid__event__details:hover{border-left:1px dashed var(--conf-accent,#7bd68a);border-right:1px dashed var(--conf-accent,#7bd68a);border-bottom:1px dashed var(--conf-accent,#7bd68a)}
/* Hover эффект на детали, когда курсор над всей карточкой (включая registration) */
.conf-grid__event.is-open:hover .conf-grid__event__details,
.conf-grid__event--registration.is-open:hover .conf-grid__event__details{border-left:1px dashed var(--conf-accent,#7bd68a);border-right:1px dashed var(--conf-accent,#7bd68a);border-bottom:1px dashed var(--conf-accent,#7bd68a)}
.conf-grid__event.is-open{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}
/* Исправление опечатки: .conf-grid__event */
/* .conf-grid__event.is-open:hover{border-top:1px dashed var(--conf-accent,#7bd68a);border-left:1px solid var(--conf-accent,#7bd68a);border-right:1px solid var(--conf-accent,#7bd68a)} */
/* фон деталей наследуется от карточки (включая «Все залы» и цвета форматов) */
.conf-grid__toggle-icon{float:right;color:#bbb;font-size:12px}
.conf-grid__desc{margin-bottom:6px;color:#d6d6d6}
.conf-grid__speakers{margin-top:4px}
.conf-grid__speaker{display:flex;gap:10px;margin:6px 0}
.conf-grid__speaker img{width:36px;height:36px;border-radius:50%;object-fit:cover;flex-shrink:0;object-position:top;transition:transform .18s ease;transform-origin:bottom left}
/* Hover zoom to 200px width (≈36px → scale ~5.56) */
.conf-grid__speaker img:hover{transform:scale(4);position:relative;z-index:1000}
/* Hover zoom when text block (.info) or its content is hovered */
.conf-grid__speaker:has(.info:hover) img{transform:scale(4);position:relative;z-index:1000}
/* Поднимаем карточку над соседями, чтобы масштабированный аватар не перекрывался верхним блоком */
.conf-grid__event:hover,
.conf-grid__event:has(.conf-grid__speaker img:hover),
.conf-grid__event:has(.conf-grid__speaker .info:hover){z-index:20}
.conf-grid__avatar{width:36px;height:36px;border-radius:50%;background:#333}
.conf-grid__speaker .info .name{font-weight:600;color:#fff}
.conf-grid__speaker .info .role{font-size:12px;opacity:.85;color:#ddd}

/* Session resource links (reuse list styles for consistency) */
.conf-grid .conf-session-links{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.conf-grid .conf-session-btn{display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;font-size:12px;line-height:1;border:1px solid var(--conf-session-link, var(--conf-accent,#7bd68a));background:transparent;color:var(--conf-session-link, var(--conf-accent,#7bd68a));border-radius:var(--conf-radius,8px);text-decoration:none;cursor:pointer;white-space:nowrap}
.conf-grid .conf-session-btn:hover,.conf-grid .conf-session-btn:focus{background:var(--conf-session-link, var(--conf-accent,#7bd68a));color:#111;text-decoration:none}

/* Blocks (Grid) */
.conf-grid__block{border:1px dashed #454545;border-radius:var(--conf-radius, 12px);padding:10px;background:var(--conf-block-bg, rgba(123,214,138,0.06));margin:4px 0}
.conf-grid__block__body{display:grid;grid-template-columns:repeat(var(--cols, 1), minmax(0,1fr));gap:8px;padding:8px 0 0}
.conf-grid__block__header{border-bottom:1px dashed #3a3a3a;margin-bottom:8px;padding-bottom:6px;background:var(--conf-block-bg, rgba(123,214,138,0.06));border-radius:var(--conf-radius, 8px) var(--conf-radius, 8px) 0 0;padding-left:10px;padding-right:10px}
.conf-grid__block__title{font-weight:800;color:#eaffea;letter-spacing:.2px}
.conf-grid__block__time{font-family:monospace;color:var(--conf-block-time, var(--conf-accent, #7bd68a));margin-top:4px}
.conf-grid__block__desc{color:#e0f4e4;margin-top:6px}

.conf-grid .conf-ics-btn{position:absolute;padding:1px;top:25px;right:30px;width:24px;height:24px;border-radius:6px;border:0px solid var(--conf-ics-btn-border, var(--conf-accent,#7bd68a));background:var(--conf-ics-btn-bg, #141414);display:inline-flex;align-items:center;justify-content:center;color:var(--conf-ics-btn-fg, var(--conf-accent,#7bd68a));cursor:pointer;transition:background .15s ease, transform .08s ease}
.conf-grid .conf-ics-btn:hover{background:color-mix(in srgb, var(--conf-ics-btn-bg, #141414) 85%, black)}
.conf-grid .conf-ics-btn:active{transform:scale(.96)}
.conf-grid .conf-ics-btn svg{width:16px;height:16px;display:block}
.conf-grid .conf-ics-btn svg *:not([fill="none"]){ fill: currentColor; }
.conf-grid .conf-ics-btn svg [stroke]{ stroke: currentColor; }

/* Favorite button next to ICS */
.conf-grid .conf-fav-btn{position:absolute;padding:1px;top:25px;right:58px;width:24px;height:24px;border-radius:6px;border:1px solid var(--conf-fav-btn-border,#3a3a3a);background:#141414;display:inline-flex;align-items:center;justify-content:center;color:var(--conf-fav-btn-fg,#aaa);cursor:pointer;transition:background .15s ease, transform .08s ease}
.conf-grid .conf-fav-btn:hover{background:#1f1f1f;color:#ddd}
.conf-grid .conf-fav-btn.is-active{color:var(--conf-fav-btn-active-fg,#ffcc33);border-color:var(--conf-fav-btn-active-border,#ffcc33)}
.conf-grid .conf-fav-btn svg{width:16px;height:16px;display:block}
.conf-grid .conf-fav-btn svg *:not([fill="none"]){ fill: currentColor; }
.conf-grid .conf-fav-btn svg [stroke]{ stroke: currentColor; }
/* Когда ICS скрыт — фаворит занимает его позицию */
.conf-grid .conf-grid__event.conf-no-ics .conf-fav-btn{right:30px}

@media (max-width: 768px){
  .conf-grid__controls{flex-wrap:wrap}
  /* Плашки дат — отдельной строкой на всю ширину */
  .conf-grid__controls .conf-date-pills{flex:1 0 100%;width:100%}
  /* Поиск + Избранное — в одной строке: поиск растягивается, избранное справа */
  .conf-grid__controls .conf-search{flex:1 1 0%;width:auto;margin-left:0;min-width:0}
  .conf-grid__controls .conf-fav-only{flex:0 0 auto}
  /* На мобильных показываем только иконку избранного */
  .conf-fav-only span{display:none}
  .conf-fav-only{padding:6px}
}

@media (min-width: 769px){
  .conf-grid__event .t {
    white-space: normal;
    padding-right: 50px;
}
.conf-grid__toggle-icon {
    
    position: absolute;
    right: 10px;
    top: 25px;
}
}
/* Favorites-only toggle next to search (reuse list styles) */
.conf-fav-only{margin-left:8px;height:calc(var(--filter-h) - 2px);display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--conf-fav-btn-border,#2e2e2e);border-radius:var(--conf-radius, 16px);background:#141414;color:var(--conf-fav-btn-fg,#aaa);cursor:pointer;box-sizing:border-box;line-height:1;margin-top:0;margin-bottom:0;vertical-align:middle}
.conf-fav-only .ico{width:16px;height:16px;display:inline-block}
.conf-fav-only .ico svg{width:100%;height:100%;display:block}
.conf-fav-only .ico svg *:not([fill="none"]){ fill: currentColor; }
.conf-fav-only .ico svg [stroke]{ stroke: currentColor; }
/* Избавляемся от системного outline, чтобы он не обрезался родителем с overflow-x:hidden */
.conf-fav-only:focus, .conf-fav-only:focus-visible{outline:none}
/* Активное состояние — утолщение рамки рисуем безопасно внутрь элемента */
.conf-fav-only.is-active{border-color:var(--conf-fav-btn-active-border,#ffcc33);color:var(--conf-fav-btn-active-fg,#ffeb99);box-shadow:inset 0 0 0 1px var(--conf-fav-btn-active-border,#ffcc33)}
/* Dynamic spacer injected to avoid clipping expanded last card */
.conf-grid__expander{height:0;}

/* Program / Day headings (new structure) */
.conf-day-program-title{margin:22px 0 6px;font-size:1.45rem;line-height:1.25;font-weight:600;color:var(--conf-heading,#ffffff);font-family:inherit}
.conf-day-title{margin:4px 0 8px;font-size:1.1rem;line-height:1.3;font-weight:600;color:var(--conf-heading,#ffffff);font-family:inherit}
.conf-day-city{margin:0 0 4px;font-size:.95rem;font-weight:500;color:var(--conf-heading,#ffffff)}
.conf-day-desc{margin:0 0 8px;font-size:.9rem;opacity:.9;color:var(--conf-text,#d0d0d0)}
.conf-day-venue{margin:0 0 4px;font-size:.75rem;opacity:.75;color:var(--conf-text,#d0d0d0)}


