.modal { position:fixed; z-index:70; inset:0; display:flex; align-items:flex-end; visibility:hidden; opacity:0; pointer-events:none; }
.modal.is-open { visibility:visible; opacity:1; pointer-events:auto; }
.modal.is-closing { pointer-events:none; }
.modal-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.48); opacity:var(--modal-backdrop-opacity,1); transition:opacity 280ms ease; will-change:opacity; }
.modal-dialog { position:relative; z-index:1; display:flex; width:100%; height:min(92svh,760px); min-height:0; flex-direction:column; overflow:hidden; padding:12px 20px 0; border-radius:30px 30px 0 0; background:#fff; box-shadow:0 -10px 35px rgba(0,0,0,.12); transform:translate3d(0,var(--modal-drag-offset,0px),0); transition:transform 420ms cubic-bezier(.22,1,.36,1); will-change:transform; }
.modal.is-opening .modal-dialog { transform:translate3d(0,105%,0); }
.modal.is-opening .modal-backdrop { opacity:0; }
.modal.is-closing .modal-dialog { transform:translate3d(0,105%,0); }
.modal.is-closing .modal-backdrop { opacity:0; }
.modal.is-dragging .modal-dialog,.modal.is-dragging .modal-backdrop { transition:none; }
.modal-header { position:relative; display:block; min-height:44px; flex:0 0 auto; margin:0 0 8px; touch-action:none; }
.modal-drag-handle { position:absolute; top:2px; left:50%; width:40px; height:4px; border-radius:999px; background:#c9c9cd; transform:translateX(-50%); }
.modal-close,.modal-share { position:absolute; top:0; display:inline-flex; width:44px; height:44px; padding:0; align-items:center; justify-content:center; border:1px solid var(--line); border-radius:50%; color:var(--text); background:#fff; line-height:0; flex:0 0 auto; -webkit-tap-highlight-color:transparent; }
.modal-close { right:12px; }
.modal-share { left:12px; cursor:pointer; }
.modal-close svg { display:block; width:16px; height:16px; margin:0; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; transform:none; }
.modal-share svg { display:block; width:18px; height:18px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; }
.modal-share:active { transform:scale(.98); }
.modal-share:focus-visible,.modal-close:focus-visible { outline:3px solid rgba(249,115,22,.6); outline-offset:3px; }
#modal-content { min-height:0; flex:1 1 auto; overflow-y:auto; padding-bottom:calc(var(--bottom-nav-total-height) + 16px); overscroll-behavior:contain; overflow-anchor:none; -webkit-overflow-scrolling:touch; }
#modal-content h2 { margin:6px 0 16px; color:#1d1d1f; font-size:clamp(1.5rem,6.15vw,1.8rem); line-height:1.15; text-align:center; }
.modal-description { color:#3a3a3c; font-size:17px; line-height:1.55; }
.modal-info { display:grid; gap:10px; margin:25px 0; color:#444; font-size:.95rem; }
.modal-toast { position:fixed; z-index:11; bottom:28px; left:50%; padding:10px 14px; border-radius:10px; color:#fff; background:#1d1d1f; box-shadow:0 8px 24px rgba(0,0,0,.16); font-size:14px; font-weight:600; transform:translateX(-50%); }
@media (max-width:699px) { .modal-dialog { height:calc(100dvh - clamp(60px,10dvh,80px)); } }

/* API vacancy description */
.modal-loading { display:flex; min-height:240px; align-items:center; justify-content:center; gap:12px; color:#5f6368; font-size:15px; }
.modal-spinner { width:22px; height:22px; border:2px solid #fed7aa; border-top-color:#F97316; border-radius:50%; animation:modal-spin .8s linear infinite; }
@keyframes modal-spin { to { transform:rotate(360deg); } }
.vacancy-description { padding:2px 2px 10px; color:#3f3f42; font-size:16px; line-height:1.55; }
.vacancy-description p { margin:0 0 12px; }
.vacancy-description strong,.vacancy-description b { font-weight:600; }
.vacancy-description em,.vacancy-description i { font-style:normal; }
.vacancy-description__intro { margin-bottom:12px !important; color:#55555a; }
.vacancy-section { margin:23px 0 0; }
.vacancy-section:first-of-type { margin-top:18px; }
.vacancy-section__title,.vacancy-description h3 { display:flex; margin:23px 0 10px; align-items:center; gap:9px; color:var(--text-primary); font-size:16px; font-weight:var(--font-weight-semibold); line-height:1.35; }
.vacancy-description>h3:first-child { margin-top:18px; }
.vacancy-section__icon { width:19px; height:19px; flex:0 0 19px; fill:none; stroke:#F97316; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.8; }
.vacancy-section__body { color:#3f3f42; }
.vacancy-section__body>p:last-child { margin-bottom:0; }
.vacancy-section__location { margin:0 !important; padding-left:28px; color:#252528; font-size:16.5px; line-height:1.45; }
.vacancy-section__location+.vacancy-section__location { margin-top:4px !important; }
.vacancy-section__list,.vacancy-description ul { display:grid; gap:8px; margin:0; padding:0; list-style:none; }
.vacancy-section__list li,.vacancy-description ul li { position:relative; margin:0; padding-left:28px; }
.vacancy-section__list li::before,.vacancy-description ul li::before { content:""; position:absolute; top:.64em; left:8px; width:6px; height:6px; border-radius:50%; background:#F97316; transform:translateY(-50%); }
.vacancy-section__list--checks li::before { width:16px; height:16px; top:.78em; left:2px; border:1.7px solid #F97316; background:transparent; }
.vacancy-section__list--checks li::after { content:""; position:absolute; top:.53em; left:7px; width:6px; height:3px; border-bottom:1.7px solid #F97316; border-left:1.7px solid #F97316; transform:rotate(-45deg); }
.vacancy-description-table-wrap { overflow-x:auto; margin:14px 0; }
.vacancy-description-table { width:100%; border-collapse:collapse; }
.vacancy-description-table td { padding:9px; border:1px solid #e5e5e7; vertical-align:top; }
.modal-error { margin:24px 0; padding:18px; border-radius:16px; background:#fff7ed; color:#7c2d12; text-align:center; }
.modal-error p { margin:7px 0 0; line-height:1.45; }
.recruiter-card--info { margin:24px 0 0; padding:22px 18px; border:1px solid rgba(249,115,22,.14); border-radius:20px; background:#fffaf6; text-align:center; }
.recruiter-card--info h3 { margin:0 0 10px; color:var(--text-primary); font-family:var(--font-sans); font-size:20px; font-weight:700; line-height:1.2; text-align:center; }
.recruiter-card--info>p { margin:0; color:#4b4b51; font-family:var(--font-sans); font-size:15px; font-weight:400; line-height:1.45; text-align:center; }
.contact-cards { display:grid; gap:14px; margin-top:14px; padding:0; border:0; background:transparent; }
.modal-apply-card { font:inherit; cursor:pointer; text-align:left; }
@media (min-width:700px) {
  #modal-content h2 { font-size:29px; }
  .vacancy-description { font-size:17px; }
}

@media (prefers-reduced-motion:reduce) {
  .modal-dialog,.modal-backdrop,#modal-content { transition-duration:1ms; }
}
