/* Format Studio — pdf.js viewer, live compile status, SyncTeX controls and
   editor problem markers. Loaded after the page's inline styles. */

/* ── viewer ── */
.pdfv{ flex:1; min-height:0; overflow:auto; position:relative; background:#525659; outline:none;
  overscroll-behavior:contain; }
.pdfv.hidden{ display:none; }
.pdfv-pages{ position:relative; width:max-content; min-width:100%; box-sizing:border-box; }
.pdfv-pages.incoming{ position:absolute; top:0; left:0; visibility:hidden; pointer-events:none; }
.pdfv-page{ position:relative; margin:0 auto 12px; background:#fff; flex:none;
  box-shadow:0 1px 3px rgba(0,0,0,.35), 0 8px 24px -10px rgba(0,0,0,.45); }
.pdfv-page canvas{ position:absolute; left:0; top:0; display:block; }

/* pdf.js text layer (subset of pdf_viewer.css 4.10) — transparent, selectable */
.pdfv-page .textLayer{ position:absolute; text-align:initial; inset:0; overflow:clip; opacity:1; line-height:1;
  -webkit-text-size-adjust:none; text-size-adjust:none; forced-color-adjust:none; transform-origin:0 0; z-index:1; }
.pdfv-page .textLayer :is(span,br){ color:transparent; position:absolute; white-space:pre; cursor:text; transform-origin:0% 0%; }
.pdfv-page .textLayer span.markedContent{ top:0; height:0; }
.pdfv-page .textLayer ::selection{ background:rgba(53,87,214,.28); }
.pdfv-page .textLayer br::selection{ background:transparent; }
.pdfv-page .textLayer .endOfContent{ display:block; position:absolute; inset:100% 0 0; z-index:0; cursor:default; user-select:none; }
.pdfv-page .textLayer.selecting .endOfContent{ top:0; }

.pdfv-links{ position:absolute; inset:0; z-index:3; pointer-events:none; }
.pdfv-link{ position:absolute; pointer-events:auto; border-radius:2px; }
.pdfv-link:hover{ background:rgba(53,87,214,.12); outline:1px solid rgba(53,87,214,.4); }
.pdfv-flash{ position:absolute; z-index:4; border-radius:4px; pointer-events:none;
  background:rgba(255,200,0,.32); outline:2px solid rgba(255,164,0,.9);
  animation:pdfvflash 1.8s ease forwards; }
@keyframes pdfvflash{ 0%{ opacity:0; transform:scale(1.06); } 12%{ opacity:1; transform:none; } 70%{ opacity:1; } 100%{ opacity:0; } }
.pdfv-ping{ position:absolute; z-index:4; width:24px; height:24px; margin:-12px 0 0 -12px; border-radius:50%;
  border:2px solid #3557d6; pointer-events:none; animation:pdfvping .7s ease-out forwards; }
@keyframes pdfvping{ from{ transform:scale(.3); opacity:1; } to{ transform:scale(1.9); opacity:0; } }

/* ── preview toolbar ── */
.pv-tools{ display:inline-flex; align-items:center; gap:.2rem; margin-left:.4rem; }
.pv-tools[hidden]{ display:none; }
.pv-b{ min-width:26px; height:26px; padding:0 .45rem; border-radius:7px; border:1px solid transparent; background:transparent;
  color:var(--ink-soft); font-family:var(--disp); font-weight:600; font-size:.82rem; cursor:pointer; line-height:1; }
.pv-b:hover{ border-color:var(--line); background:var(--panel); color:var(--ac); }
.pv-zl{ font-family:var(--mono); font-size:.68rem; min-width:48px; }
.pv-sep{ width:1px; height:16px; background:var(--line); margin:0 .25rem; }
.pv-page{ display:inline-flex; align-items:center; gap:.25rem; font-family:var(--mono); font-size:.72rem; color:var(--muted); }
.pv-page input{ width:3.2em; height:24px; padding:0 .3rem; text-align:right; font-family:var(--mono); font-size:.72rem;
  border:1px solid var(--line); border-radius:6px; background:var(--panel); color:var(--ink); }

/* ── compile progress: a hairline under the toolbar + a floating status pill ── */
.cbar{ position:relative; height:3px; margin-top:-3px; z-index:6; overflow:hidden; pointer-events:none; }
.cbar[hidden]{ display:none; }
.cbar-fill{ position:absolute; left:0; top:0; bottom:0; width:0; background:linear-gradient(90deg,#199a53,#34d399);
  transition:width .35s ease; box-shadow:0 0 8px rgba(52,211,153,.8); }
.cbar.indet .cbar-fill{ width:34% !important; animation:cbarslide 1.1s ease-in-out infinite; }
@keyframes cbarslide{ from{ left:-34%; } to{ left:100%; } }
.cstat{ position:absolute; top:calc(2.6rem + 10px); right:12px; z-index:7; display:flex; align-items:center; gap:.55rem;
  padding:.42rem .5rem .42rem .75rem; border-radius:999px; background:rgba(20,24,33,.86); color:#e8ecf3;
  font-family:var(--mono); font-size:.72rem; box-shadow:0 10px 30px -12px rgba(0,0,0,.6); backdrop-filter:blur(6px);
  max-width:calc(100% - 60px); }
.cstat[hidden]{ display:none; }
.cstat .cs-text{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cstat .cs-time{ color:#9aa6b8; font-variant-numeric:tabular-nums; }
.cstat .cs-spin{ width:12px; height:12px; flex:none; border-radius:50%; border:2px solid rgba(255,255,255,.25);
  border-top-color:#34d399; animation:spin .8s linear infinite; }
.cstat button{ font-family:var(--disp); font-weight:600; font-size:.7rem; padding:.28rem .7rem; border-radius:999px;
  border:0; background:#e5484d; color:#fff; cursor:pointer; }
.cstat button:hover{ filter:brightness(1.1); }
.cstat.fail{ background:rgba(120,24,30,.92); }
.cstat.fail .cs-spin, .cstat.done .cs-spin{ display:none; }
.recompile.stop{ background:#e5484d; box-shadow:0 6px 16px -8px #e5484d; animation:none; }

/* ── SyncTeX: floating arrows on the preview's left edge (Overleaf's divider arrows) ── */
.sync-rail{ position:absolute; left:8px; top:50%; transform:translateY(-50%); z-index:6; display:flex; flex-direction:column;
  gap:6px; }
.sync-rail[hidden]{ display:none; }
.sync-rail button{ width:28px; height:28px; border-radius:8px; border:1px solid rgba(255,255,255,.18);
  background:rgba(20,24,33,.72); color:#fff; font-size:.8rem; cursor:pointer; backdrop-filter:blur(4px);
  box-shadow:0 6px 16px -8px rgba(0,0,0,.6); transition:.15s; }
.sync-rail button:hover{ background:#3557d6; border-color:transparent; }

/* ── editor: problem markers in their own gutter, flashed target line ── */
.CodeMirror .rg-prob{ width:12px; }
.rg-dot{ display:block; width:8px; height:8px; margin:5px 0 0 2px; border-radius:50%; cursor:help; }
.rg-dot.error{ background:#e5484d; box-shadow:0 0 0 2px color-mix(in srgb,#e5484d 25%,transparent); }
.rg-dot.warning{ background:#f5a524; }
.rg-dot.box{ background:#9aa3bd; }
.CodeMirror .cm-l-error{ background:color-mix(in srgb,#e5484d 11%,transparent); }
.CodeMirror .cm-l-warning{ background:color-mix(in srgb,#f5a524 9%,transparent); }
.CodeMirror .cm-l-flash{ animation:cmflash 1.6s ease; }
@keyframes cmflash{ 0%,40%{ background:color-mix(in srgb,#ffc400 38%,transparent); } 100%{ background:transparent; } }

/* ── Problems panel: file:line chips ── */
.prow .pf{ font-family:var(--mono); font-size:.66rem; color:var(--muted); margin-left:auto; white-space:nowrap; }
.prow.box .pi{ opacity:.6; }
.con-filter{ display:inline-flex; gap:.25rem; margin-left:.4rem; }
.con-filter label{ font-family:var(--mono); font-size:.64rem; color:var(--muted); display:inline-flex; align-items:center; gap:.2rem; cursor:pointer; }
