/* Konfigurátor — posun a výřez fotografie (E3, agent B): překryv fotorámečku v náhledu (.pv-crop, vytváří
   cfg-crop.js), fotografie aktuální strany u náhledu (PLAN-2026-09-25 bod 11, partials/cfg/photo-page.latte: blok
   .pphoto na počítači, tlačítka .pv-tools na telefonu) a obsah vrstvy „Upravit fotografii“ ([data-cropmode-stage],
   nástroje a popisek ve vrstvě .cfg-cropmode; rozvržení a velikost vrstvy dodává cfg-sheet.css). */

/* Gesta patří jen překryvu nad fotkou — zbytek náhledu se na mobilu dál posouvá (ruší style.css .pv-host.is-pannable). */
.pv-host.is-pannable{touch-action:auto;cursor:auto}
/* Během posunu náhled neztmavujeme, ani když se na pozadí načítá nová strana. */
.pv-paper.is-loading .pv-host.is-gesture{opacity:1}

.pv-crop{position:absolute;z-index:2;touch-action:none;cursor:grab;border-radius:2px;outline:0;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;transition:box-shadow .15s}
.pv-crop[hidden]{display:none}
@media (hover:hover){.pv-crop:hover{box-shadow:inset 0 0 0 1px rgba(255,255,255,.9),0 0 0 1px rgba(23,24,26,.4)}}
.pv-crop:focus-visible{box-shadow:inset 0 0 0 2px #fff,0 0 0 2px var(--red)}
.pv-crop.is-panning{cursor:grabbing;box-shadow:inset 0 0 0 1px rgba(255,255,255,.9),0 0 0 1px rgba(23,24,26,.5)}
/* Nápověda ve fotce (bod 11 B): štítek při najetí myší, na fokusu z klávesnice ovládání klávesami (texty z data-tip*). */
.pv-crop::before{position:absolute;left:50%;top:8px;transform:translateX(-50%);max-width:calc(100% - 16px);padding:4px 10px;border-radius:999px;background:rgba(23,24,26,.74);color:#fff;font-size:11.5px;font-weight:600;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
@media (hover:hover) and (pointer:fine){.pv-crop:not(.pv-crop--tap):hover::before{content:attr(data-tip)}}
.pv-crop:not(.pv-crop--tap):focus-visible::before{content:attr(data-tip-keys)}
.pv-crop.is-panning::before{content:none}
/* Mobil v okně: jen klepnutí otevře režim výřezu. */
.pv-crop--tap{touch-action:manipulation;cursor:pointer}
.pv-crop--tap::after{content:'Upravit výřez';position:absolute;top:6px;right:6px;padding:4px 10px;border-radius:999px;background:rgba(23,24,26,.72);color:#fff;font-size:11.5px;font-weight:600;line-height:1.2;pointer-events:none;white-space:nowrap}

/* ---------- blok „Fotografie této strany“ pod náhledem (počítač, krok 4; viditelnost v cfg-sheet.css) ---------- */
.pphoto{position:relative;flex:1 1 100%;grid-template-columns:minmax(0,1fr);gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;transition:border-color .15s,box-shadow .15s,background-color .15s}
.pphoto__head{display:flex;align-items:center;gap:12px;min-width:0}
.pphoto__thumb{flex:none;width:64px;height:40px;border-radius:4px;border:1px dashed var(--line);background:repeating-linear-gradient(135deg,#F4EFE4 0 5px,#EDE6D8 5px 10px)}
.pphoto__thumb.has-photo{border:0;background:#fff center/cover no-repeat;box-shadow:0 1px 3px rgba(23,24,26,.2)}
.pphoto__txt{flex:1 1 auto;min-width:0;display:grid;gap:1px}
.pphoto__t{font-size:13.5px;font-weight:700;line-height:1.3}
.pphoto__s{font-size:12.5px;line-height:1.35;color:var(--muted);font-variant-numeric:tabular-nums}
.pphoto__s[data-level="ok"]{color:var(--sage-dark)}
.pphoto__s[data-level="warn"]{color:var(--ochre-dark)}
.pphoto__s[data-level="bad"]{color:var(--red-dark);font-weight:600}
.pphoto__acts{flex:none;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px}
.pphoto__acts .btn{padding:8px 14px}
.pphoto__up.is-busy{opacity:.65;pointer-events:none}
.pphoto__or{margin:-4px 0 0 76px;font-size:12.5px;color:var(--muted)}
.pphoto__progress{width:100%;flex:none}
.pphoto__lock{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:7px 8px 7px 12px;border-radius:8px;background:rgba(94,122,98,.12);border:1px solid rgba(94,122,98,.4);color:var(--sage-dark);font-size:13px;line-height:1.4}
.pphoto__lock-t{flex:1 1 24ch}
.pphoto__lock .btn{padding:7px 14px;background:#fff}
.pphoto__row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 18px}
.pphoto__row:not(:has(> :not([hidden]))){display:none}
.pphoto__zoom{flex:1 1 230px;min-width:0;padding-top:6px}
.pphoto__zoom .range-row{grid-template-columns:auto minmax(0,1fr) 40px;gap:10px}
.pphoto__cap{flex:1.4 1 280px;min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:3px 10px}
.pphoto__cap-l{font-size:13px}
.pphoto__cap .inp{padding:7px 10px;font-size:14px}
.pphoto__cap-h{grid-column:2;font-size:12px;line-height:1.35;color:var(--muted)}
.pphoto__nocap{margin:0;font-size:12.5px;color:var(--muted)}
.pphoto label.is-disabled{opacity:.45;cursor:not-allowed}
.pphoto label.is-disabled input{pointer-events:none}
.pphoto .inp:disabled{background:var(--paper-2);color:var(--muted);cursor:not-allowed}
.pphoto .btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
/* Zamčená strana (schválená, kopie v košíku): jen zámek s „Upravit stranu“ a Vyměnit — zakázaný posuvník, Vystředit
   a popisek by zvětšily lepivý pruh pod náhledem a zamčení říká řádek zámku (cfg-photos syncPage). */
.pphoto.is-locked .pphoto__row,.pphoto.is-locked [data-crop-center]{display:none}
/* přetažení souboru do bloku (pravidlo M.photos.dropState): přijme / vymění schválenou / odmítne s důvodem */
.pphoto__drop{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;margin:0;padding:8px 16px;border-radius:inherit;background:rgba(243,247,242,.94);color:var(--sage-dark);font-size:13.5px;font-weight:700;text-align:center;pointer-events:none}
.pphoto.is-over{border-color:var(--sage);box-shadow:0 0 0 2px rgba(94,122,98,.35)}
.pphoto.is-replace{border-color:var(--ochre);box-shadow:0 0 0 2px rgba(201,138,43,.35)}
.pphoto.is-replace .pphoto__drop{background:rgba(250,244,233,.95);color:var(--ochre-dark)}
.pphoto.is-denied{border-color:var(--red);box-shadow:0 0 0 2px rgba(215,20,26,.25)}
.pphoto.is-denied .pphoto__drop{background:rgba(252,238,238,.95);color:var(--red-dark)}
/* soubor se vybírá skrytým polem v <label> — fokus z klávesnice musí být vidět na tlačítku */
.pphoto__up:has(input:focus-visible),.pv-tool:has(input:focus-visible),.cfg-cropmode__up:has(input:focus-visible){outline:2px solid var(--red);outline-offset:3px}

/* ---------- telefon: Fotka / Výřez / Popisek pod kompaktním náhledem (krok 4; viditelnost v cfg-sheet.css) ---------- */
.pv-tools{flex:1 1 100%;gap:6px}
.pv-tool{position:relative;flex:1 1 0;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:0 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font:inherit;font-size:13px;font-weight:600;line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pv-tool[hidden]{display:none}
/* Výřez / Popisek bez fotky nebo u schválené strany: aria-disabled (fokus zůstane, klepnutí řekne proč — cfg-photos) */
.pv-tool:disabled,.pv-tool[aria-disabled="true"]{opacity:.45;cursor:not-allowed}
.pv-tool.is-busy{opacity:.6;pointer-events:none}
.pv-tool svg{flex:none}

/* ---------- vrstva „Upravit fotografii“: nástroje a popisek (rozvržení vrstvy v cfg-sheet.css) ---------- */
.cfg-cropmode__tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.cfg-cropmode__tools .upload-progress{flex:1 1 100%}
.cfg-cropmode__cap{display:grid;gap:4px}
.cfg-cropmode__cap-l{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--muted)}
.cfg-cropmode__cap .inp{font-size:16px} /* iOS jinak při fokusu stránku přiblíží */
.cfg-cropmode__cap-h{font-size:12px;line-height:1.35;color:var(--muted)}
/* rozlišení a hodnocení fotky pro tisk (cfg-photos renderMeta, živě podle přiblížení) */
.cfg-cropmode__meta{margin:0;font-size:12.5px;line-height:1.35;color:var(--muted);font-variant-numeric:tabular-nums}
.cfg-cropmode__meta[data-level="ok"]{color:var(--sage-dark)}
.cfg-cropmode__meta[data-level="warn"]{color:var(--ochre-dark)}
.cfg-cropmode__meta[data-level="bad"]{color:var(--red-dark);font-weight:600}
.cfg-cropmode .btn:disabled,.cfg-cropmode input:disabled{opacity:.45;cursor:not-allowed}

/* Režim výřezu: celá plocha přijímá gesta, průhledná část fotky je vidět i mimo rámeček. */
[data-cropmode-stage]{position:relative;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
[data-cropmode-stage] > svg{display:block;width:100%;height:100%;overflow:visible}

/* Přetažení fotky přímo do náhledu (cfg-photos): zvýrazněný fotorámeček aktuální strany, jen během tažení
   souboru nad papírem. Bez vloženého SVG a u strany bez fotky překrývá celý papír (.pv-drop--full). */
.pv-drop{position:absolute;z-index:3;display:flex;align-items:center;justify-content:center;padding:8px;border:2px dashed var(--sage);border-radius:3px;background:rgba(94,122,98,.18);pointer-events:none;text-align:center;box-sizing:border-box;overflow:hidden}
.pv-drop[hidden]{display:none}
.pv-drop--full{inset:0}
.pv-drop__t{max-width:100%;padding:6px 12px;border-radius:14px;background:rgba(23,24,26,.78);color:#fff;font-size:12.5px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}
/* Miniatura náhledu v okně: jen barevný rámeček bez nápisu. */
.pv-drop.is-compact{padding:0}
.pv-drop.is-compact .pv-drop__t{display:none}
.pv-drop.is-denied{border-color:var(--red);background:rgba(215,20,26,.08)}
.pv-drop.is-replace{border-color:var(--ochre);background:rgba(201,138,43,.14)}
.pv-drop.is-busy{border-style:solid}
.pv-drop.is-busy .pv-drop__t::before{content:'';display:inline-block;width:10px;height:10px;margin-right:8px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;vertical-align:-1px;animation:pv-drop-spin .8s linear infinite}
@keyframes pv-drop-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.pv-drop.is-busy .pv-drop__t::before{animation:none}}

/* Výzva v prázdném fotorámečku aktuální strany (cfg-photos, jen krok 4): ukáže předem, že fotku jde pustit
   přímo do náhledu, a klepnutím otevře výběr souboru. Barvy navazují na zástupný rámeček ze SVG
   (CalendarSvgRenderer PLACEHOLDER_*), který překryje. Při tažení ji nahradí .pv-drop. */
.pv-slot-cta{position:absolute;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px;box-sizing:border-box;overflow:hidden;background:#F2ECE0;border:1.5px dashed #BDB5A6;border-radius:3px;color:var(--ink);text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s,border-color .15s}
.pv-slot-cta[hidden]{display:none}
.pv-slot-cta__i{flex:none;width:22px;height:22px;padding:8px;box-sizing:content-box;border-radius:50%;background:#fff;color:var(--sage-dark,#46604B);box-shadow:0 1px 4px rgba(23,24,26,.14);transition:transform .15s}
.pv-slot-cta__t{margin-top:2px;font-size:13.5px;font-weight:700;line-height:1.25}
.pv-slot-cta__s{font-size:12px;line-height:1.3;color:#6B6A66}
.pv-slot-cta__m{font-size:11px;line-height:1.3;color:#8D8B85;font-variant-numeric:tabular-nums}
.pv-slot-cta__m:empty{display:none}
.pv-slot-cta__tap{display:none}
@media (hover:none),(pointer:coarse){.pv-slot-cta__drag{display:none}.pv-slot-cta__tap{display:inline}}
@media (hover:hover){
  .pv-slot-cta:hover{background:#EAF0E7;border-color:var(--sage)}
  .pv-slot-cta:hover .pv-slot-cta__i{transform:translateY(-2px)}
}
.pv-slot-cta:has(input:focus-visible){border-style:solid;border-color:var(--red);box-shadow:0 0 0 2px rgba(215,20,26,.2)}
.pv-slot-cta.is-medium{gap:3px;padding:6px}
.pv-slot-cta.is-medium .pv-slot-cta__i{width:18px;height:18px;padding:6px}
.pv-slot-cta.is-medium .pv-slot-cta__t{font-size:11.5px;line-height:1.2}
.pv-slot-cta.is-medium .pv-slot-cta__s,.pv-slot-cta.is-medium .pv-slot-cta__m{display:none}
.pv-slot-cta.is-compact{gap:0;padding:4px}
.pv-slot-cta.is-compact .pv-slot-cta__t,.pv-slot-cta.is-compact .pv-slot-cta__s,.pv-slot-cta.is-compact .pv-slot-cta__m{display:none}
@media (prefers-reduced-motion:reduce){.pv-slot-cta,.pv-slot-cta__i{transition:none}}
