/* explorer.css — «Классный проводник» (blox33 #1). Плитки/крошки берём из playlist.css (.pl-*);
   здесь только то, что новое: раскладка тела, шторка на весь экран, контекстное меню, метка
   «отправлено», предпросмотр. Цвета — ТОЛЬКО роль-токены (§11 lingo-ui), сырые ступени рампы запрещены. */

/* ── Скин проводника, ЕДИНЫЙ для всех трёх входов (story 7-bis; перекрашен blox51 #10) ──
   Владелец: «сделай дизайн идентичный Я.Диску и везде единый». Проводник и целевая
   панель плейлиста делят классы .pl-* (rule 7), а весь экран несёт .plscreen; шторка
   таска/сдачи — .overlay.exp-shutter. Поэтому ОДИН scoped-блок перекрывает роль-токены
   и красит ВСЕ входы одинаково, не протекая в остальное приложение (§11).

   ГРАНИЦА ЧУЖОГО И СВОЕГО проходит по одному признаку — ПОВЕРХНОСТЬ против КОНТРОЛА:
     • поверхность (фон файлов, полосы, волоски) остаётся яндексовской — чужой диск
       должен читаться как чужой диск;
     • кнопки, выделение и обводки НЕ переопределяются вовсе: они падают на палитру
       текущей схемы (--accent, --anchor, --accent-tint, --accent-fill из theme.css).
       Раньше здесь стояли --ya-accent/--ya-accent-dark, и заливка сегмента «Диск школы»
       с «⋯ Папка» горела чужим синим посреди баклажана и бумаги — владелец, blox51 #10:
       «все кнопки в проводнике — к текущей палитре».
   Побочно снят и старый костыль: --anchor подменяли на --ya-accent-dark только потому,
   что светлый --ya-accent под тёмным --ink давал 2.88:1 (axe, 02.09.2026). Якоря схем
   тёмные и несут белый текст сами — подменять нечего. */
.plscreen, .overlay.exp-shutter{
  /* поверхность — яндексовская */
  --line:var(--ya-line);
  --line-soft:var(--ya-line);
  --fill-soft:var(--ya-soft);
  --pl-line:var(--ya-line);
  --pl-src-bg:var(--ya-surface);
  --pl-tile:var(--ya-surface);   /* плитки списка — тоже поверхность диска, а не наша бумага */
  /* ЕДИНСТВЕННЫЙ контрол-цвет, оставшийся своим цветом, — ссылка: синий есть в палитре,
     поэтому её и не меняли. Но синий берётся из палитры (--exp-link), а не из бренда.
     ВНИМАНИЕ: токен носит не только ссылка, но и чипы (.pl-badge, .pl-ctrlflag) — их заливка
     поэтому обязана идти от --fill-soft, а НЕ от --accent схемы (см. playlist.css). */
  --accent-dark:var(--exp-link);
}

/* ── тело проводника: колонка, сетка тянется и скроллится сама (rule 1 — страница не прыгает) ── */
.exp{display:flex;flex-direction:column;min-height:0;height:100%}
.exp .exp-grid{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.exp .exp-bread{flex:0 0 auto}
.exp .exp-msg{flex:0 0 auto}
.exp .exp-selbar{flex:0 0 auto}

/* старый уровень при переходе в папку не стираем — лишь затемняем, пока грузится новый */
.exp.exp-loading .exp-grid{opacity:.5;pointer-events:none;transition:opacity .12s}

/* плитка = палец: минимум 44px (G5/WCAG 2.5.5). Долгое нажатие не должно выделять текст/звать callout. */
.exp .exp-ent{min-height:44px;position:relative;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

/* «✓ отправлено» — временная метка после одиночной отправки (§10 в1: шторка остаётся открытой) */
.exp .exp-sent{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  gap:6px;font-weight:800;font-size:var(--fs-sm);color:var(--on-dark);
  background:var(--ok-solid);border-radius:inherit;animation:exp-fade 1.8s ease forwards}
@keyframes exp-fade{0%{opacity:0}12%{opacity:1}75%{opacity:1}100%{opacity:0}}
.exp .exp-ent.exp-sending{opacity:.6}

/* кнопка ⤶(N) — та же роль, что btn-primary; чуть крупнее в панели выбора */
.exp .exp-batch{width:100%;justify-content:center;gap:8px}

/* ── контекстное меню (правый клик / долгое нажатие) ── */
.exp-menu{position:fixed;z-index:70;min-width:200px;padding:6px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--sheet-3)}
.exp-menu-i{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:8px 12px;
  border:none;background:none;font:inherit;color:var(--ink);text-align:left;cursor:pointer;
  border-radius:var(--r-sm)}
@media (hover:hover){.exp-menu-i:hover{background:var(--fill-soft)}}
.exp-menu-i:active{background:var(--accent-tint)}

/* ── окно проводника (Story 7): стиль файлового браузера Я.Диска ──
   Своё окно поверх экрана (кнопка-триггер → окно). На телефоне почти во весь экран, на ПК просто
   крупнее (owner: «то же самое, но окошко больше»). Закрывается только ✕ (rule 6). */
/* blox33 #3 — окно проводника ДОЛЖНО лежать ПОВЕРХ окна таска. Окно «Новый таск» — это .emodal
   c z-index:60, а базовый .overlay = 50, поэтому шторка проводника открывалась ПОЗАДИ таска (кнопка
   «Приложить с Я.Диска» будто ничего не делала). Поднимаем шторку выше таск-модалки; предпросмотр
   (Открыть из шторки) и контекст-меню — ещё выше, чтобы не спрятаться за самой шторкой. */
.overlay.exp-shutter{z-index:65}
.overlay.exp-prevov{z-index:75}
.overlay.exp-shutter .exp-sheet{display:flex;flex-direction:column;height:88vh;max-height:88vh;
  width:100%;max-width:640px;padding:0;overflow:hidden;border-radius:var(--r-lg)}
.exp-shutter .exp-host{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;padding:0 14px 12px}
@media(min-width:560px){ .overlay.exp-shutter .exp-sheet{height:82vh;max-width:880px} }

/* шапка окна — как заголовок файлового окна: иконка диска слева, ✕ справа, тонкая линия снизу */
.exp-winhead{margin:0;padding:13px 14px;border-bottom:1px solid var(--line);
  background:var(--fill-soft);border-radius:var(--r-lg) var(--r-lg) 0 0}
.exp-winhead b{display:flex;align-items:center;gap:8px}

/* адресная строка = крошки: светлая «плашка пути» под шапкой */
.exp-win .exp-bread{margin:10px 0 8px;padding:7px 10px;background:var(--fill-soft);
  border:1px solid var(--line);border-radius:var(--r-md);flex-wrap:wrap}
/* «⋯ Папка» (смена корня Я.Диска) — ВТОРОСТЕПЕННАЯ кнопка-пилюля (blox52 #16 п.4): раньше она
   несла ту же якорную заливку, что сегмент «Я Диск школы» (.pl-seg.on), и два разных смысла —
   «выбранный источник» и «редкое действие сменить папку» — говорили одной краской. Теперь это
   бумажная ghost (язык движка кнопок: карточка + волосок + чернила); заливка якоря осталась
   только у выбранного источника. Рамка в покое сохраняет «читается как кнопка» (blox28 #6).
   margin-left:auto прижимает её к правому краю адресной строки в обоих проводниках
   (окно таска/сдачи и панель-источник плейлиста). Специфичность .plscreen .exp-bread .exp-reroot
   перебивает .plscreen .pl-lnk (цвет/паддинг). */
.plscreen .exp-bread .exp-reroot{margin-left:auto;display:inline-flex;align-items:center;gap:5px;
  padding:6px 11px;border-radius:var(--r-sm);font-weight:700;font-size:var(--fs-sm);
  background:var(--card);color:var(--ink);border:1px solid var(--line)}
@media (hover:hover){.plscreen .exp-bread .exp-reroot:hover{text-decoration:none;
  border-color:var(--accent-deep);background:var(--accent-tint)}}
/* «Выбрать» (режим галочек) — иконка-галочка слева от подписи (та же check-circle, что у пункта меню
   «Выбрать» и что помечает выбранные строки), Task2 */
.plscreen .exp-selstart{display:inline-flex;align-items:center;gap:5px}

/* actionsRow (источник плейлиста): «Выбрать»+«⋯ Папка» — отдельной строкой НАД крошками. Две .pl-bread
   подряд; верхняя (действия) без нижней границы/паддинга, нижняя (крошки) обычная — читаются как один
   блок-шапка. Спец-ть .plscreen .exp-bread.exp-actions перебивает базовое .plscreen .pl-bread. */
.plscreen .exp-bread.exp-actions{border-bottom:none;padding-bottom:0}
.plscreen .exp-bread.exp-crumbs{padding-top:6px}

/* плитки в ОКНЕ — ЕДИНЫЙ плоский файловый список Я.Диска (story 7-bis). Шторка несёт класс
   .pl-list (см. openExplorerShutter), поэтому строки берут ТОТ ЖЕ облик, что и панель плейлиста:
   без рамок-карточек, ховер — светло-серый, разделены волоском. Так окно таска/сдачи и панель
   плейлиста выглядят одинаково (rule 7 — один класс, одна реализация). Бывшие точечные правила
   .exp-shutter .exp-grid .pl-tile удалены как дубль (leftover) — всё держит .pl-list. */

/* ── выбранный файл (multi:false: таск, сдача) — ✕ и «ОК» НА самой плитке (blox43 #2).
   Футер-карточка внизу окна снесена: метка выбора живёт там же, где выбирали. Контейнер
   .exp-pickctl прижат к правому краю строки и лежит ПОВЕРХ длинного имени (position:absolute
   на relative-плитке); подложка непрозрачная, чтобы контролы читались над обрезанным текстом. */
.plscreen .pl-tile.exp-pick{border-color:var(--accent-deep);
  background:color-mix(in srgb,var(--accent) 12%,var(--pl-tile))}
.exp-pickctl{position:absolute;right:6px;top:50%;transform:translateY(-50%);
  display:inline-flex;align-items:center;gap:8px;padding:3px 4px 3px 10px;border-radius:var(--r-sm);
  background:color-mix(in srgb,var(--accent) 12%,var(--pl-tile))}
/* ✕ снятия выбора — виден и на ПК (Task5): базовое .plscreen .pl-rm = display:none (показ только на
   ховер плитки или на телефоне), а у выбранной плитки он нужен всегда. position:static — крестик
   стоит в строке контролов, а не в углу плитки (базовое .pl-rm — absolute). */
.plscreen .exp-pickctl .pl-rm{position:static;display:inline-flex;flex:0 0 auto}
/* blox33 #4 — «ОК»: подтвердить выбор и закрыть окно (функция крестика шапки), явной кнопкой.
   width:auto + margin:0 перебивают «.sheet .btn-primary{width:100%;margin-top:6px}» (style.css):
   окно проводника — это .sheet, поэтому без этого «ОК» раздувалась бы на всю ширину (та же
   правка, что была у футерной «ОК» и у кнопки отправки в родительском чате). */
.exp-pickctl .exp-pick-ok{flex:0 0 auto;width:auto;margin:0;min-height:32px;padding:6px 16px;
  display:inline-flex;align-items:center;cursor:pointer}

/* ── предпросмотр (Открыть) ── */
.overlay.exp-prevov .exp-prevsheet{width:100%;max-width:560px}
.exp-prevbody{margin-top:6px}
