.story-film,.expedition{min-height:0;height:100%;display:grid;gap:12px;padding:14px 18px;border:1px solid #c6ab673f;border-radius:18px;background:#142c25e8;overflow:hidden}.story-film{grid-template-rows:auto minmax(100px,1fr) auto auto auto}.story-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.story-heading h1,.expedition h1{font-size:clamp(23px,2.7vw,38px);margin:5px 0 0}.story-heading .button{flex:none;min-height:38px;padding:8px 15px}.story-movie{position:relative;min-height:0;background:#071811;border-radius:11px;overflow:hidden;display:flex;align-items:center;justify-content:center}.story-movie video{width:100%;height:100%;object-fit:contain}.story-movie #play-film{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);white-space:nowrap}.story-movie [hidden]{display:none!important}.story-subtitles{min-height:74px;display:grid;align-content:center;gap:4px;border-left:2px solid #d8b674;padding:2px 16px;background:#10251ed9}.story-subtitles span{color:#e2bc78;font-size:12px;letter-spacing:.06em}.story-subtitles #film-caption{display:block!important;font:19px/1.4 Arial,sans-serif;color:#fff5de;margin:0;min-height:0}.story-controls{display:flex;gap:14px;align-items:center}.story-controls .primary{margin-left:auto}.story-controls .waiting{margin-left:auto}.story-controls #film-time{font-size:13px;font-variant-numeric:tabular-nums;color:#d0cbbd}.story-note{font:12px/1.35 Arial,sans-serif;margin:0;color:#b8c7b9;text-align:center}.story-movie #film-fallback{position:absolute;inset:0;background:#173b2def;padding:20px;display:grid;place-content:center}.expedition{grid-template-rows:auto minmax(0,1fr) auto auto}.expedition-body{min-height:0;display:grid;grid-template-columns:1.15fr 1fr;gap:18px}.museum-view{position:relative;min-height:0;display:flex;flex-direction:column;border-radius:12px;overflow:hidden;background:#163127}.museum-view #museum-viewport{position:relative;flex:1;min-height:0}.museum-view canvas,.museum-view img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.museum-view .ready>img{visibility:hidden}.museum-label{padding:10px 16px;display:grid;gap:4px;border-top:1px solid #dab77842;background:#183b30}.museum-label span{font-size:12px;color:#dfcba4}.museum-label strong{font:25px Georgia;color:#fff0cf}.expedition-route{display:flex;flex-direction:column;list-style:none;padding:0;margin:0;gap:6px;min-height:0}.expedition-route li{flex:1;min-height:0;border:1px solid #b9bd9930;border-radius:9px;background:#1d352c88;position:relative}.expedition-route li[data-current=true]{border-color:#dfb86d;background:#3b4630}.route-stop{width:100%;height:100%;display:flex;align-items:center;gap:12px;padding:8px 13px;color:#fff0d6;border:0;background:none;text-align:left;cursor:pointer}.route-stop:focus-visible{outline:3px solid #92e8de;outline-offset:1px;border-radius:8px}.route-stop>span:last-child{display:grid;gap:3px;min-width:0}.route-number{display:flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border:1px solid #bca47777;border-radius:50%;font:17px Georgia}.route-stop small{font:11px Arial;color:#cabfa5}.route-stop strong{font:22px Georgia}.route-stop em{font:12px Arial;color:#b7cabe;font-style:normal}.expedition-actions{display:flex;justify-content:space-between;gap:10px;align-items:center}.material-transition{position:absolute;inset:0;pointer-events:none;z-index:7;overflow:hidden;border-radius:inherit}.material-transition canvas{position:absolute;inset:0;width:100%;height:100%}.material-transition span{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);max-width:95%;padding:8px 12px;border-radius:8px;background:#102a24ed;color:#ffe3aa;font:14px Arial;text-align:center;width:max-content}.quick-story{min-height:30px;padding:5px 9px;font-size:12px;border:1px solid #c3ab6955;border-radius:6px;background:#15392c;color:#e3d5b7}.lore-dialog p{font-size:18px}.lore-dialog{max-width:760px}
@media(max-width:700px){.story-film,.expedition{padding:9px;gap:8px;border-radius:12px}.story-heading h1,.expedition h1{font-size:23px}.story-heading .eyebrow,.expedition .eyebrow{font-size:9px}.story-heading{gap:8px}.story-heading .button{font-size:12px;padding:7px 9px;min-height:36px}.story-film{grid-template-rows:auto minmax(90px,1fr) auto auto auto}.story-subtitles{min-height:88px;padding:7px 9px}.story-subtitles #film-caption{font-size:16px;line-height:1.35}.story-subtitles span{font-size:10px}.story-controls{gap:6px}.story-controls .button{font-size:12px;min-height:40px;padding:8px 9px}.story-controls #film-time{font-size:10px;white-space:nowrap}.story-controls .waiting{font-size:11px;text-align:right}.story-note{font-size:10px}.expedition-heading h1{font-size:22px}.expedition-body{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(75px,.44fr) minmax(205px,1fr);gap:7px}.museum-label{position:absolute;left:0;bottom:0;right:0;padding:5px 9px;background:linear-gradient(transparent,#102820ed);border:0}.museum-label span{font-size:10px}.museum-label strong{font-size:17px}.expedition-route{gap:4px}.route-stop{padding:4px 8px;gap:9px}.route-number{width:24px;height:24px;font-size:14px}.route-stop>span:last-child{grid-template-columns:minmax(0,1fr) auto;gap:2px 7px;width:100%}.route-stop small{font-size:9px;grid-column:1}.route-stop strong{font-size:16px;grid-column:1;line-height:1.05}.route-stop em{grid-column:2;grid-row:1/3;font-size:9px;max-width:73px;text-align:right;align-self:center}.expedition-actions{gap:6px}.expedition-actions .button{font-size:12px;min-height:38px;padding:7px}.expedition-actions .primary{flex:1}.expedition-actions .waiting{font-size:12px}.expedition-actions #read-catchup{max-width:81px;font-size:11px}.quick-story{font-size:10px;min-height:28px;padding:4px 6px}.expedition>.story-note{display:none}}
@media(max-width:360px){.story-heading h1{font-size:20px}.story-subtitles{min-height:93px}.story-subtitles #film-caption{font-size:15px}.story-film>.story-note{display:none}.story-film{grid-template-rows:auto minmax(90px,1fr) auto auto}.expedition-heading h1{font-size:20px}.expedition{grid-template-rows:auto minmax(0,1fr) auto}.route-stop strong{font-size:15px}.expedition-body{grid-template-rows:minmax(68px,.35fr) minmax(205px,1fr)}}
@media(prefers-reduced-motion:reduce){.material-transition{display:none}}
@media(min-width:701px){.story-film{position:relative;background:#102820}.story-film .story-movie{position:absolute;inset:0;border-radius:inherit}.story-film .story-movie video{object-fit:cover;object-position:center 42%}.story-film:before{content:"";grid-row:2;min-height:0}.story-film:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(#11291fc9 0%,transparent 35%,transparent 50%,#10271bea 80%,#10271bf5);z-index:1}.story-film .story-heading{grid-row:1;z-index:2}.story-film .story-subtitles{grid-row:3;z-index:2;background:#10261ae6}.story-film .story-controls{grid-row:4;z-index:2}.story-film .story-note{grid-row:5;z-index:2}.story-film #play-film{z-index:3}}

.story-movie #film-fallback{z-index:4}
@media(max-width:700px){.story-movie video{object-fit:cover;object-position:center 42%}}
/* v15: подписи звеньев стали длиннее. Строка маршрута не сжимается меньше своего текста:
   статус справа, две строки вместо трёх; если высоты всё же мало — список прокручивается. */
.expedition-route{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.expedition-route li{flex:1 0 auto;min-height:0}
@media(min-width:701px){.route-stop>span:last-child{grid-template-columns:minmax(0,1fr) auto;column-gap:12px;width:100%;align-items:center}.route-stop small{grid-column:1;line-height:1.25}.route-stop strong{grid-column:1;line-height:1.1}.route-stop em{grid-column:2;grid-row:1/3;text-align:right;white-space:nowrap;line-height:1.3}}
@media(min-width:701px) and (max-height:820px){.expedition-route{gap:5px}.route-stop{padding:6px 12px}.route-stop strong{font-size:19px}.route-number{width:26px;height:26px;font-size:15px}}
@media(min-width:701px) and (max-height:620px){.expedition>.story-note{display:none}.expedition h1{font-size:24px}.expedition-route{gap:3px}.route-stop{padding:3px 10px}.route-stop small{font-size:10px;line-height:1.15}.route-stop strong{font-size:17px}.route-number{width:24px;height:24px;font-size:14px}}

/* Ролики R01–R12 (film-player.mjs): кадр целиком — на планшетах и в книге есть текст; субтитры и кнопки под кадром. */
.story-film.film-stage{grid-template-rows:auto minmax(0,1fr) auto auto auto;background:#102820}
.story-film.film-stage:before,.story-film.film-stage:after{content:none;display:none}
.story-film.film-stage .story-movie{position:relative;inset:auto;border-radius:11px;background:#050d0a}
.story-film.film-stage .story-movie video{object-fit:contain;object-position:center}
.film-stage .story-controls{flex-wrap:wrap;row-gap:8px}
.film-stage .film-quality{display:flex;align-items:center;gap:6px;font-size:13px;color:#d0cbbd}
.film-stage .film-quality select{background:#10251e;color:#f1eee1;border:1px solid #c6ab6760;border-radius:8px;padding:6px 8px;font:inherit;min-height:36px}
.film-stage #film-sound{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:3;white-space:nowrap}
.film-stage .film-subtitles{min-height:64px}
@media(max-width:700px){.story-film.film-stage{grid-template-rows:auto auto auto auto}.story-film.film-stage .story-movie{aspect-ratio:16/9;height:auto}.film-stage .film-subtitles{min-height:84px}.film-stage .film-quality{font-size:11px}}

/* 01.10.2026 — ролики на ПК: кадр на большую часть экрана, с 900 px заголовок и кнопки ролика — узкой колонкой справа.
   Под кадром — ползунок перемотки и строка субтитров (.film-under): на сам кадр они не ложатся нигде — ни на телефоне,
   ни на ПК, ни во весь экран. Строка субтитров держит место под две строки (реплика — посередине), чтобы кадр не прыгал.
   «На весь экран» разворачивает весь блок ролика с ползунком, субтитрами и кнопками (film-player.mjs). */
.film-stage .film-under{display:flex;flex-direction:column;gap:6px;min-width:0}
.film-stage .film-seekbar{display:flex;align-items:center;gap:10px;min-width:0}
.film-stage .film-seekbar[hidden]{display:none}
.film-stage #film-seek{flex:1;min-width:0;height:30px;margin:0;accent-color:#d8b674;cursor:pointer}
.film-stage #film-live{flex:none;min-height:32px;padding:5px 12px;font-size:13px;margin:0}
@media(max-width:700px){.story-film.film-stage{align-content:center}.film-stage .film-under{gap:4px}.film-stage #film-live{font-size:11px;padding:5px 8px}}
@media(min-width:701px){
 .story-film.film-stage{grid-template-rows:auto minmax(0,1fr) auto auto auto;gap:10px;padding:12px 16px}
 .film-stage>*{grid-column:1}
 .film-stage .story-heading{grid-row:1}
 .film-stage .story-heading h1{font-size:clamp(22px,2vw,30px);margin-top:2px}
 .film-stage .story-movie{grid-row:2}
 .film-stage .film-under{grid-row:3}
 .film-stage .film-subtitles{font-size:clamp(17px,1.3vw,24px);min-height:calc(2.8em + 13px);padding:6px 18px 7px;border-left:0;border-radius:10px;background:#06120d;text-align:center}
 .film-stage .film-subtitles #film-caption{font-size:1em}
 .film-stage .story-controls{grid-row:4}
 .film-stage .story-note{grid-row:5;margin-top:-2px}
}
@media(min-width:701px) and (max-height:620px){
 .film-stage .story-note{display:none}
 .film-stage .story-heading h1{font-size:20px}
 .film-stage .film-subtitles{font-size:16px}
}
/* С 900 px — правая колонка: заголовок, кнопки, примечание; кадр слева на всю высоту, под ним ползунок и субтитры. */
@media(min-width:900px){
 #app:has(.film-stage){max-width:1880px}
 .story-film.film-stage{grid-template-columns:minmax(0,1fr) clamp(230px,19%,320px);grid-template-rows:auto minmax(0,1fr) auto;column-gap:18px}
 .film-stage .story-heading{grid-column:2;grid-row:1;flex-direction:column;align-items:stretch;gap:8px}
 .film-stage .story-heading h1{font-size:clamp(20px,1.6vw,26px);line-height:1.15}
 .film-stage .story-movie{grid-column:1;grid-row:1/3}
 .film-stage .film-under{grid-column:1;grid-row:3}
 .film-stage .story-controls{grid-column:2;grid-row:2;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:10px;min-height:0;overflow:auto}
 .film-stage .story-controls .button{width:100%}
 .film-stage .story-controls #film-time{text-align:center}
 .film-stage .story-controls>.primary,.film-stage .story-controls>.waiting{margin:auto 0 0}
 .film-stage .film-quality{justify-content:space-between}
 .film-stage .story-note{grid-column:2;grid-row:3;align-self:end;margin:0;text-align:left}
}
@media(min-width:900px) and (max-height:720px){
 .story-film.film-stage{row-gap:8px;padding:8px 14px}
 .film-stage .story-controls{gap:6px}
 .film-stage .story-controls .button,.film-stage .story-heading .button{min-height:36px;padding:6px 12px;font-size:14px}
}
@media(min-width:900px) and (max-height:620px){.film-stage .story-heading h1{display:none}}
@media(min-width:701px){
 .story-film.film-stage:fullscreen{border:0;border-radius:0;padding:10px 18px 12px;background:#020806;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto auto;gap:8px}
 .story-film.film-stage:fullscreen .story-heading,.story-film.film-stage:fullscreen .story-note{display:none}
 .story-film.film-stage:fullscreen .story-movie{grid-column:1;grid-row:1;border-radius:6px;background:#000}
 .story-film.film-stage:fullscreen .film-under{grid-column:1;grid-row:2}
 .story-film.film-stage:fullscreen .film-subtitles{background:#000;font-size:clamp(20px,1.7vw,32px)}
 .story-film.film-stage:fullscreen .story-controls{grid-column:1;grid-row:3;flex-direction:row;flex-wrap:wrap;align-items:center}
 .story-film.film-stage:fullscreen .story-controls .button{width:auto}
 .story-film.film-stage:fullscreen .story-controls>.primary,.story-film.film-stage:fullscreen .story-controls>.waiting{margin:0 0 0 auto}
 .story-film.film-stage::backdrop{background:#000}
}
/* Низкий экран (телефон боком, высота до 500 px): кадр слева во всю высоту, справа субтитры и кнопки; заголовок и
   примечание прячутся (история есть на карте). Во весь экран — общая раскладка выше. */
@media(min-width:701px) and (max-height:500px){
 .story-film.film-stage:not(:fullscreen){grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto auto;gap:6px 12px;padding:8px 10px}
 .story-film.film-stage:not(:fullscreen) .story-heading,.story-film.film-stage:not(:fullscreen) .story-note{display:none}
 .story-film.film-stage:not(:fullscreen) .film-under{display:contents}
 .story-film.film-stage:not(:fullscreen) .story-movie{grid-column:1;grid-row:1/3}
 .story-film.film-stage:not(:fullscreen) .film-seekbar{grid-column:1;grid-row:3}
 .story-film.film-stage:not(:fullscreen) .film-subtitles{grid-column:2;grid-row:1;min-height:0;overflow:auto;font-size:15px}
 .story-film.film-stage:not(:fullscreen) .story-controls{grid-column:2;grid-row:2/4;flex-direction:row;flex-wrap:wrap;align-items:center;align-content:end;gap:6px}
 .story-film.film-stage:not(:fullscreen) .story-controls .button{width:auto;min-height:34px;padding:5px 9px;font-size:12px}
 .story-film.film-stage:not(:fullscreen) .story-controls>.primary,.story-film.film-stage:not(:fullscreen) .story-controls>.waiting{margin:0 0 0 auto}
}
@media(max-width:700px){.film-stage #film-full{display:none!important}}

/* 01.10.2026: щелчок по кадру — пауза и продолжение (двойной — на весь экран); кнопка ▶/❚❚ слева от ползунка;
   надписи поверх кадра в конце ролика (film.overlay — фразы с листка в R06) проявляются плавно и остаются висеть. */
.film-stage .story-movie video{cursor:pointer}
.film-toggle{flex:none;width:40px;height:40px;padding:0;border-radius:50%;border:1px solid #d8b67499;background:#0d211b;color:#f3e7c8;display:grid;place-items:center;cursor:pointer}
.film-toggle svg{width:20px;height:20px;fill:currentColor}
.film-toggle:hover:not(:disabled){background:#1b3b30;border-color:#d8b674}
.film-toggle:focus-visible{outline:3px solid #91e9dc;outline-offset:2px}
.film-toggle:disabled{opacity:.45;cursor:default}
.film-overlay{position:absolute;inset:0;z-index:3;display:grid;place-items:center;padding:4% 7%;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .9s ease,visibility 0s linear .9s;background:radial-gradient(ellipse at center,#06120ddd 0%,#06120daa 48%,#06120d40 100%)}
.film-overlay.shown{opacity:1;visibility:visible;transition:opacity .9s ease}
.film-overlay .film-lines{display:grid;gap:.55em;max-width:100%}
.film-overlay p{margin:0;font:italic 400 clamp(18px,3vw,52px)/1.3 Georgia,'Times New Roman',serif;color:#f6ecd3;text-align:center;text-shadow:0 2px 16px #000c;overflow-wrap:anywhere}
.film-overlay b{color:#f0c46a;font-weight:700}
@media(prefers-reduced-motion:reduce){.film-overlay,.film-overlay.shown{transition:none}}
/* 01.10.2026: карта «Архив живых уроков» — кадры из роликов станций вместо 3D-витрины. Смена — плавная, наплыв —
   один медленный проход (без вечной анимации); при «уменьшить движение» — без наплыва и без перехода. */
.map-slides{position:absolute;inset:0;overflow:hidden;border-radius:inherit;background:#0b1a15}
.map-slides img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 45%;opacity:0;transform:scale(1.03);transition:opacity .7s ease}
.map-slides img.active{opacity:1;animation:map-drift 26s ease-out forwards}
@keyframes map-drift{from{transform:scale(1.03)}to{transform:scale(1.12) translate(-1.5%,-1%)}}
@media(prefers-reduced-motion:reduce){.map-slides img{transition:none}.map-slides img.active{animation:none}}
/* 01.10.2026, аудит контраста: подпись под картой ярче и с тенью — она лежит на фото архива. */
.expedition>.story-note{color:#dbe4d8;text-shadow:0 1px 3px #000c}
/* 01.10.2026, пользовательский тест на телефонах: подписи карты не мельче 10–11 px, подпись предмета — на плотной
   подложке (на светлых кадрах была 1,1–2,7:1). */
@media(max-width:700px){
 .quick-story{font-size:11px;min-height:32px}
 .route-stop small,.route-stop em{font-size:10px}
 .museum-label{background:linear-gradient(#10282000,#102820d9 35%,#102820f2)}
 .museum-label span{font-size:11px}
}
/* 01.10.2026: запас на загрузку перед общим стартом ролика (2–3,5 с) — на кадре знак, что ролик сейчас начнётся. */
.story-movie.film-starting::after{content:'Начинаем…';position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:3;padding:6px 14px;border-radius:999px;background:#0d221bcc;color:#f3e6c7;font:600 14px/1.2 Arial,sans-serif;letter-spacing:.04em;pointer-events:none;animation:film-starting 1.1s ease-in-out infinite alternate}
@keyframes film-starting{from{opacity:.55}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.story-movie.film-starting::after{animation:none}}
/* 01.10.2026, тест учителя: на карте видно, какая станция выбрана щелчком (текущая — золотая, выбранная — рамка). */
.route-stop[aria-pressed=true]{box-shadow:inset 0 0 0 2px #92e8de;border-radius:8px}
@media(max-width:700px){.story-heading .eyebrow,.expedition .eyebrow{font-size:11px}}
/* 02.10.2026 (владелец, снимок с iPhone; тест WebKit): на невысоком экране кадр ролика не уменьшался и наезжал на полосу
   с ▶/❚❚ и ползунком. Теперь кадр занимает оставшееся место (не больше 16:9 по ширине) и виден целиком, полоса — всегда
   под ним; на коротком экране субтитры в две строки, а пояснение под кнопками скрыто. Список «Качество» — 16 px: на iPhone
   Safari иначе приближает страницу. */
@media(max-width:700px){
 .story-film.film-stage:not(:fullscreen){grid-template-rows:auto minmax(0,1fr) auto auto auto}
 .story-film.film-stage:not(:fullscreen) .story-movie{aspect-ratio:auto;height:100%;max-height:calc((100vw - 36px) * 9 / 16 - 4px);min-height:96px;width:100%;align-self:center}
 .story-film.film-stage:not(:fullscreen) .story-movie video{object-fit:contain}
 .film-stage .film-quality select{font-size:16px}
 .museum-label{background:#102820e6}
 .route-stop small,.route-stop em{font-size:11px}
}
@media(max-width:700px) and (max-height:700px){
 .film-stage .film-subtitles{min-height:58px}
 .film-stage .story-note{display:none}
}
