/* ============================================================
   V2: РОБОТ-КОМПАНЬОН
   ============================================================ */
.robot {
  position: fixed; right: 22px; top: 34vh; z-index: 90;
  width: 96px; pointer-events: none; will-change: transform;
  display: none;
}
@media (min-width: 1024px) { .robot { display: block; } }
.robot-svg { width: 96px; height: auto; filter: drop-shadow(0 10px 18px rgba(19,34,63,.22)); }
.robot-body-wrap { animation: robotHover 3.2s ease-in-out infinite; transform-origin: 50% 50%; }
@keyframes robotHover { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-9px); } }
.robot-flame { opacity: .35; transform-origin: 60px 128px; transition: opacity .2s; }
.robot.is-moving .robot-flame { opacity: 1; animation: flame .18s linear infinite alternate; }
@keyframes flame { from { transform: scaleY(.7); } to { transform: scaleY(1.15); } }
.robot-antenna { animation: antennaBlink 1.6s steps(1) infinite; }
@keyframes antennaBlink { 0%,60% { fill: #D93A2B; } 61%,100% { fill: #FFC93C; } }
.robot-eyes { animation: blink 4.4s infinite; transform-origin: 60px 39px; }
@keyframes blink { 0%, 94%, 100% { transform: scaleY(1); } 96%, 98% { transform: scaleY(.08); } }
.robot-arm-wave { transform-origin: 84px 76px; }
.robot.is-waving .robot-arm-wave { animation: wave .5s ease-in-out 3; }
@keyframes wave { 0%,100% { transform: rotate(0); } 50% { transform: rotate(-28deg); } }
.robot-bubble {
  position: absolute; right: 100%; top: 4px; margin-right: 12px;
  background: #fff; border: 2px solid var(--navy); color: var(--navy);
  border-radius: 16px 16px 4px 16px; padding: 10px 14px;
  font-weight: 800; font-size: 13.5px; line-height: 1.35; width: max-content; max-width: 220px;
  box-shadow: 0 10px 24px rgba(19,34,63,.16);
  opacity: 0; transform: translateY(8px) scale(.9); transform-origin: 100% 100%;
  transition: opacity .3s var(--ease), transform .3s var(--ease);
}
.robot-bubble.show { opacity: 1; transform: translateY(0) scale(1); }
.robot-bubble::after {
  content: ''; position: absolute; right: -8px; bottom: 10px;
  border: 7px solid transparent; border-left-color: var(--navy);
}

/* ============================================================
   V2: АКЦЕНТ «БЕСПЛАТНО»
   ============================================================ */
.free-pill {
  flex: none; display: inline-grid; place-items: center;
  min-width: 52px; height: 40px; padding: 0 12px; border-radius: 999px;
  background: var(--green); color: #fff; font-weight: 900; font-size: 16px;
  animation: freePulse 2.4s infinite;
}
@keyframes freePulse {
  0% { box-shadow: 0 0 0 0 rgba(43,168,74,.45); }
  70% { box-shadow: 0 0 0 12px rgba(43,168,74,0); }
  100% { box-shadow: 0 0 0 0 rgba(43,168,74,0); }
}
.badge-pulse { animation: freePulse 2.4s infinite; }
.free-sticker {
  position: absolute; z-index: 2; top: -18px; right: 6px;
  width: 92px; height: 92px; border-radius: 50%;
  background: conic-gradient(from 20deg, var(--green), #37C85D, var(--green));
  color: #fff; display: grid; place-items: center; text-align: center;
  font-family: var(--font-head); font-weight: 900; font-size: 24px; line-height: 1;
  box-shadow: 0 14px 30px rgba(43,168,74,.4);
  transform: rotate(10deg); animation: stickerWob 4s ease-in-out infinite;
}
.free-sticker i { display: block; font-style: normal; font-family: var(--font-body); font-size: 12px; font-weight: 800; opacity: .95; }
@keyframes stickerWob { 0%,100% { transform: rotate(10deg) scale(1); } 50% { transform: rotate(4deg) scale(1.06); } }
.mq-free {
  font-family: var(--font-head); font-weight: 900; font-size: 15px;
  color: var(--navy-deep); background: var(--yellow);
  padding: 3px 12px; border-radius: 8px; white-space: nowrap;
}
.admission-hours {
  display: inline-block; background: rgba(255,255,255,.18); border-radius: 12px;
  padding: 8px 16px; margin: 0 0 12px !important; font-size: 17px;
}
.freebar { padding: 20px 0 40px; }
.freebar-title { font-family: var(--font-head); font-weight: 700; font-size: clamp(22px, 3vw, 32px); margin: 0 0 24px; color: var(--navy); }
.freebar-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.free-tile {
  background: var(--surface); border-radius: var(--radius); padding: 22px 24px;
  box-shadow: var(--shadow); border-bottom: 5px solid var(--green);
  display: flex; flex-direction: column; gap: 2px;
  transition: transform var(--dur) var(--ease);
}
.free-tile:hover { transform: translateY(-5px); }
.free-tile b { font-family: var(--font-head); font-weight: 900; font-size: 34px; color: var(--green); }
.free-tile span:last-child { font-size: 14px; font-weight: 700; color: var(--ink-soft); }
.freebar-note { margin: 18px 0 0; color: var(--ink-soft); font-size: 15px; }
.hours-note { padding-top: 8px; border-top: 1px dashed var(--line); margin-top: 4px; }

/* ============================================================
   V2: ДВА МИРА — КОМПАКТ
   ============================================================ */
.worlds-compact { margin-bottom: 20px; }
.worlds-compact .world-card { display: flex; align-items: center; gap: 22px; padding: 24px 28px; }
.worlds-compact .world-icon { width: 72px; margin: 0; flex: none; }
.worlds-compact .world-text { flex: 1; min-width: 0; }
.worlds-compact .world-card h3 { margin: 0 0 4px; font-size: 21px; }
.worlds-compact .world-card p { margin: 0; font-size: 15px; }
.worlds-compact .world-actions { display: flex; flex-direction: column; gap: 8px; align-items: flex-end; flex: none; }
.worlds-foot { color: var(--ink-soft); font-size: 15px; margin: 0; }
.link-inline {
  background: none; border: none; padding: 0; color: var(--blue);
  font: inherit; font-weight: 800; cursor: pointer;
}
.link-inline:hover { color: var(--orange); }

/* ============================================================
   V2: ЧЕК-ЛИСТ ДОКУМЕНТОВ
   ============================================================ */
.docs-inner {
  display: grid; grid-template-columns: 1fr 320px; gap: 0 40px;
  grid-template-areas: "head aside" "list aside" "done aside"; align-items: start;
}
.docs-head { grid-area: head; }
.check-list { grid-area: list; }
.docs-done { grid-area: done; }
.bring-card { grid-area: aside; position: sticky; top: 96px; }
.docs-progress { display: flex; align-items: center; gap: 16px; margin-top: 6px; }
.docs-bar { flex: 1; height: 12px; background: #E3EAF4; border-radius: 999px; overflow: hidden; }
.docs-bar-fill {
  height: 100%; width: 0; border-radius: 999px;
  background: linear-gradient(90deg, var(--green), #37C85D);
  transition: width .5s var(--ease);
}
.docs-count { font-weight: 800; font-size: 14px; color: var(--ink-soft); white-space: nowrap; }
.check-list { list-style: none; margin: 24px 0 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.check-step {
  display: flex; gap: 18px; align-items: flex-start;
  background: var(--surface); border-radius: var(--radius); padding: 22px 24px;
  box-shadow: var(--shadow); border: 2px solid transparent;
  transition: border-color var(--dur), transform var(--dur) var(--ease), background var(--dur);
}
.check-step:hover { transform: translateX(4px); }
.check-step.is-done { border-color: #BFE8CC; background: #F4FBF6; }
.check-step.is-done .check-body h3 { text-decoration: line-through; text-decoration-color: var(--green); text-decoration-thickness: 3px; }
.check-step.is-done .check-num { background: var(--green); color: #fff; }
.check-box {
  flex: none; width: 52px; height: 52px; border-radius: 16px;
  border: 3px solid #C9D6E8; background: #fff; padding: 8px;
  transition: border-color var(--dur), background var(--dur), transform .15s;
  cursor: pointer;
}
.check-box:hover { border-color: var(--green); transform: scale(1.06); }
.check-box:active { transform: scale(.92); }
.check-box svg { width: 100%; height: 100%; }
.check-mark {
  stroke: var(--green); stroke-dasharray: 24; stroke-dashoffset: 24;
  transition: stroke-dashoffset .35s var(--ease) .05s;
}
.check-step.is-done .check-box { background: #E2F6E8; border-color: var(--green); animation: checkPop .4s var(--ease); }
.check-step.is-done .check-mark { stroke-dashoffset: 0; }
@keyframes checkPop { 0% { transform: scale(.8); } 55% { transform: scale(1.14); } 100% { transform: scale(1); } }
.check-body { position: relative; padding-left: 44px; flex: 1; min-width: 0; }
.check-num {
  position: absolute; left: 0; top: 0; width: 32px; height: 32px;
  display: grid; place-items: center; border-radius: 10px;
  background: #E5EEFC; color: var(--blue);
  font-family: var(--font-head); font-weight: 700; font-size: 15px;
  transition: background var(--dur), color var(--dur);
}
.check-body h3 { margin: 2px 0 6px; font-size: 18px; font-weight: 800; color: var(--navy); }
.check-body p { margin: 0; font-size: 15px; color: var(--ink-soft); }
.check-step-opt { border: 2px dashed var(--line); box-shadow: none; }
.docs-done {
  margin-top: 18px; background: linear-gradient(120deg, var(--green), #37C85D);
  color: #fff; border-radius: var(--radius-sm); padding: 18px 24px; font-size: 16px;
  animation: checkPop .5s var(--ease);
}
.bring-card {
  background: var(--navy); color: #EAF1FF; border-radius: var(--radius);
  padding: 28px; box-shadow: var(--shadow-lift);
}
.bring-card h3 { font-family: var(--font-head); font-weight: 700; font-size: 18px; margin: 0 0 18px; color: #fff; }
.bring-card dl { margin: 0; display: flex; flex-direction: column; gap: 14px; }
.bring-card dl > div { display: grid; grid-template-columns: 64px 1fr; gap: 12px; align-items: start; }
.bring-card dt {
  font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .07em;
  color: var(--yellow); padding-top: 2px;
}
.bring-card dd { margin: 0; font-size: 15px; font-weight: 600; }
.bring-note { margin: 18px 0 0; font-size: 13.5px; color: #B9C7E4; border-top: 1px dashed #3D5CA6; padding-top: 14px; }

/* ============================================================
   V2: РАСПИСАНИЕ — КОМПАКТ + ПО ДНЯМ
   ============================================================ */
.view-toggle { display: flex; gap: 8px; }
.sched-row {
  display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center;
  background: #16295C; border: 1px solid #26407F; border-radius: var(--radius-sm);
  padding: 14px 18px;
}
.sched-row + .sched-row { margin-top: 10px; }
.sched-row-name { flex: 0 0 250px; min-width: 0; }
.sched-row-name b { color: #fff; font-size: 16px; display: block; }
.sched-row-name span { font-size: 12.5px; color: #8CA2D4; }
.sched-chips { flex: 1; display: flex; flex-wrap: wrap; gap: 8px; min-width: 260px; }
.gchip {
  display: inline-flex; align-items: center; gap: 8px;
  background: #0F2357; border: 1px solid #34519B; border-radius: 10px;
  padding: 6px 12px; font-size: 13.5px; color: #D7E2F8; line-height: 1.35;
  transition: border-color var(--dur), transform var(--dur);
}
.gchip:hover { border-color: var(--cyan); transform: translateY(-2px); }
.gchip b { color: var(--yellow); font-weight: 800; }
.gchip .gc-age { color: #8FD9FF; font-weight: 700; }
.gchip.is-full { opacity: .55; border-style: dashed; }
.gchip.is-full .gc-status { color: #FF9E93; font-weight: 800; }
.gchip .gc-status { color: #7BE39A; font-weight: 800; }
.sched-day-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 10px; }
.day-item {
  display: flex; gap: 14px; align-items: center;
  background: #16295C; border: 1px solid #26407F; border-radius: var(--radius-sm);
  padding: 12px 16px;
}
.day-item.is-full { opacity: .55; }
.day-time {
  flex: none; font-family: var(--font-head); font-weight: 700; font-size: 15px;
  color: var(--yellow); font-variant-numeric: tabular-nums; width: 106px;
}
.day-info { flex: 1; min-width: 0; }
.day-info b { color: #fff; font-size: 14.5px; display: block; }
.day-info span { font-size: 12.5px; color: #8CA2D4; }
.day-status { flex: none; font-size: 11.5px; font-weight: 800; padding: 3px 10px; border-radius: 999px; }
.day-status.open { background: #123F24; color: #7BE39A; }
.day-status.full { background: #4A1610; color: #FF9E93; }
.sched-legend {
  display: flex; flex-wrap: wrap; gap: 10px 24px; align-items: center;
  margin-top: 26px; font-size: 14px; color: #8CA2D4;
}
.sched-legend .dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; }
.dot-open { background: #7BE39A; }
.dot-full { background: #FF9E93; }
.sched-live { display: inline-flex; align-items: center; gap: 8px; }
.sched-live::before {
  content: ''; width: 8px; height: 8px; border-radius: 50%; background: #7BE39A;
  animation: freePulse 2s infinite;
}
.tv-link { margin-left: auto; color: #8FD9FF; font-weight: 800; font-size: 14px; }
.tv-link:hover { color: #fff; }

/* ТВ-табло (?tv=1) оформляется отдельным файлом assets/css/tv.css */

/* ============================================================
   V2: АДАПТИВ
   ============================================================ */
@media (max-width: 1024px) {
  .freebar-grid { grid-template-columns: repeat(2, 1fr); }
  .docs-inner { grid-template-columns: 1fr; grid-template-areas: "head" "aside" "list" "done"; gap: 24px; }
  .bring-card { position: static; }
}
@media (max-width: 640px) {
  .free-pill { display: none; }
  .free-sticker { width: 74px; height: 74px; font-size: 19px; top: -10px; }
  .freebar-grid { grid-template-columns: 1fr 1fr; gap: 12px; }
  .free-tile { padding: 16px; }
  .free-tile b { font-size: 26px; }
  .worlds-compact .world-card { flex-direction: column; align-items: flex-start; gap: 14px; }
  .worlds-compact .world-actions { flex-direction: row; align-items: center; }
  .sched-row-name { flex-basis: 100%; }
  .check-step { padding: 16px; gap: 12px; }
  .check-box { width: 46px; height: 46px; }
  .check-body { padding-left: 0; }
  .check-num { position: static; display: inline-grid; margin-bottom: 6px; }
  .tv-board { grid-template-columns: 1fr; }
}
