/* =========================================================
   public.css — Ochiq sahifalar (Vakansiyalar, Resurslar) zamonaviy dizayn
   ========================================================= */
*, *::before, *::after { box-sizing:border-box; }
body.pub {
    margin:0; min-height:100vh; color:#0f1220;
    font-family:"Inter","Segoe UI",system-ui,sans-serif;
    background:
        radial-gradient(55rem 55rem at 10% 6%,  rgba(94,160,255,.30), transparent 55%),
        radial-gradient(50rem 50rem at 90% 18%, rgba(168,131,255,.28), transparent 55%),
        radial-gradient(55rem 55rem at 50% 112%, rgba(80,220,180,.22), transparent 55%),
        linear-gradient(135deg,#eef3ff 0%,#f4eefe 45%,#eafaf4 100%);
    background-attachment:fixed;
}

/* ---------- Navbar ---------- */
.pub-nav { position:sticky; top:0; z-index:50; background:rgba(255,255,255,.62);
           backdrop-filter:saturate(180%) blur(18px); border-bottom:1px solid rgba(255,255,255,.55); }
.pub-nav .inner { max-width:1120px; margin:auto; padding:.75rem clamp(1.1rem,3.5vw,2rem);
                  display:flex; align-items:center; justify-content:space-between; gap:.6rem; }
.pub-brand { font-weight:800; font-size:1.12rem; color:#0f1220; text-decoration:none; display:flex; gap:.5rem; align-items:center; letter-spacing:-.2px; }
.pub-brand i { color:#2563eb; }
.pub-actions { display:flex; gap:.5rem; align-items:center; }
.pbtn { display:inline-flex; align-items:center; gap:.4rem; font-weight:600; font-size:.88rem;
        padding:.45rem .9rem; border-radius:10px; text-decoration:none; border:1px solid transparent; transition:.16s; white-space:nowrap; }
.pbtn-glass { background:rgba(255,255,255,.8); border-color:rgba(0,0,0,.07); color:#1b1b2b; }
.pbtn-glass:hover { background:#fff; transform:translateY(-1px); color:#0f1220; }
.pbtn-grad { background:linear-gradient(100deg,#2563eb,#4f7dff); color:#fff; box-shadow:0 8px 20px rgba(37,99,235,.35); }
.pbtn-grad:hover { color:#fff; transform:translateY(-2px); box-shadow:0 12px 26px rgba(37,99,235,.45); }

/* ---------- Hero header ---------- */
.pub-hero { max-width:1120px; margin:0 auto; padding:2.8rem clamp(1.1rem,3.5vw,2rem) .6rem; text-align:center; }
.pub-badge { display:inline-flex; align-items:center; gap:.45rem; padding:.42rem .95rem; border-radius:999px;
             font-size:.8rem; font-weight:700; color:#fff; letter-spacing:.2px; margin-bottom:1rem;
             background:linear-gradient(100deg,#2563eb,#7c3aed); box-shadow:0 10px 24px rgba(80,58,180,.28); }
.pub-hero h1 { font-weight:900; font-size:clamp(1.8rem,4vw,2.6rem); letter-spacing:-.7px; margin:0; }
.pub-hero h1 .grad { background:linear-gradient(100deg,#2563eb,#7c3aed 55%,#0ea5a0);
                     -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.pub-hero p { color:#5c6178; max-width:640px; margin:.85rem auto 0; font-size:1.05rem; line-height:1.6; }

.pub-wrap { max-width:1120px; margin:0 auto; padding:1.6rem clamp(1.1rem,3.5vw,2rem) 1rem; }
.pub-foot { text-align:center; color:#5f6478; font-size:.82rem; padding:1.6rem 1rem 2.4rem; }
.pub-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); gap:1.1rem; }
.pub-sec-title { display:flex; align-items:center; gap:.55rem; font-weight:800; font-size:1.15rem;
                 color:#0f1220; margin:2rem 0 1rem; }
.pub-sec-title i { color:#2563eb; }

/* ---------- Vakansiya kartasi ---------- */
.vcard { background:rgba(255,255,255,.8); border:1px solid rgba(255,255,255,.7); border-radius:18px;
         padding:1.25rem 1.35rem; box-shadow:0 12px 30px rgba(20,40,80,.08); backdrop-filter:blur(10px);
         display:flex; flex-direction:column; transition:transform .18s, box-shadow .18s; }
.vcard:hover { transform:translateY(-5px); box-shadow:0 22px 46px rgba(20,40,80,.16); }
.vcard .top { display:flex; align-items:flex-start; gap:.8rem; }
.v-ic { width:48px; height:48px; border-radius:14px; flex:none; display:flex; align-items:center; justify-content:center;
        color:#fff; font-size:1.3rem; background:linear-gradient(135deg,#2563eb,#7c3aed); }
.vcard h3 { font-size:1.05rem; font-weight:800; margin:0; color:#0f1220; line-height:1.25; }
.v-school { color:#5c6178; font-size:.85rem; margin-top:.15rem; }
.v-open { margin-left:auto; background:rgba(5,150,105,.12); color:#047857; font-weight:700;
          font-size:.72rem; padding:.22rem .6rem; border-radius:999px; white-space:nowrap; }
.vcard .desc { color:#444a5e; font-size:.9rem; line-height:1.5; margin:.9rem 0 0; }
.v-tags { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.9rem; }
.v-tag { font-size:.78rem; font-weight:600; padding:.25rem .6rem; border-radius:8px;
         display:inline-flex; align-items:center; gap:.3rem; background:rgba(37,99,235,.1); color:#1d4ed8; }
.v-tag.salary { background:rgba(5,150,105,.12); color:#047857; }
.v-tag.contact { background:rgba(124,58,237,.1); color:#6d28d9; }
.v-date { color:#8a90a0; font-size:.78rem; margin-top:.8rem; }

/* ---------- Resurs kartasi ---------- */
.rescard { background:rgba(255,255,255,.8); border:1px solid rgba(255,255,255,.7); border-radius:18px;
           padding:1.1rem 1.2rem; box-shadow:0 12px 30px rgba(20,40,80,.07); backdrop-filter:blur(10px);
           display:flex; align-items:flex-start; gap:.9rem; transition:transform .18s, box-shadow .18s; height:100%; }
.rescard:hover { transform:translateY(-5px); box-shadow:0 22px 46px rgba(20,40,80,.15); }
.res-ic { width:48px; height:48px; border-radius:14px; flex:none; display:flex; align-items:center; justify-content:center;
          font-size:1.35rem; background:var(--accent-soft,#eaf2fb); color:#2563eb; }
.rescard h3 { font-size:1rem; font-weight:700; margin:0 0 .2rem; color:#0f1220; }
.rescard p { color:#5c6178; font-size:.85rem; margin:0 0 .7rem; line-height:1.45; }
.res-link { display:inline-flex; align-items:center; gap:.35rem; font-weight:600; font-size:.85rem;
            color:#2563eb; text-decoration:none; }
.res-link:hover { text-decoration:underline; }

/* ---------- Hujjatlar ro'yxati (qatorlar) ---------- */
.doc-list { display:flex; flex-direction:column; gap:.7rem; }
.doc-row { display:flex; align-items:center; gap:1rem; text-decoration:none;
           background:rgba(255,255,255,.78); border:1px solid rgba(255,255,255,.7); border-radius:16px;
           padding:.95rem 1.1rem; box-shadow:0 8px 22px rgba(20,40,80,.06); backdrop-filter:blur(10px);
           position:relative; overflow:hidden; transition:transform .16s, box-shadow .16s, border-color .16s; }
.doc-row::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
                   background:linear-gradient(180deg,#2563eb,#7c3aed); opacity:0; transition:opacity .16s; }
.doc-row:hover { transform:translateY(-2px); box-shadow:0 16px 34px rgba(20,40,80,.12); border-color:rgba(37,99,235,.25); }
.doc-row:hover::before { opacity:1; }
.doc-row .res-ic { width:46px; height:46px; font-size:1.3rem; }
.doc-main { min-width:0; flex:1; }
.doc-main h3 { font-size:1rem; font-weight:700; margin:0; color:#0f1220; line-height:1.3; }
.doc-main p { color:#5c6178; font-size:.84rem; margin:.15rem 0 0; line-height:1.4;
              overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; }
.doc-side { display:flex; align-items:center; gap:.7rem; flex:none; }
.doc-size { font-size:.78rem; color:#8a90a0; font-weight:600; white-space:nowrap; }
.doc-dl-ic { width:38px; height:38px; border-radius:11px; flex:none; display:flex; align-items:center; justify-content:center;
             background:rgba(37,99,235,.1); color:#2563eb; font-size:1.05rem; transition:background .16s, color .16s; }
.doc-row:hover .doc-dl-ic { background:linear-gradient(135deg,#2563eb,#7c3aed); color:#fff; }

/* Fayl turi belgisi va ikonka rangi */
.ft-badge { font-size:.68rem; font-weight:800; letter-spacing:.03em; padding:.2rem .5rem; border-radius:7px; white-space:nowrap; }
.res-ic.ft-pdf, .ft-badge.ft-pdf { background:rgba(220,38,38,.12); color:#dc2626; }
.res-ic.ft-doc, .ft-badge.ft-doc { background:rgba(37,99,235,.12); color:#2563eb; }
.res-ic.ft-xls, .ft-badge.ft-xls { background:rgba(5,150,105,.12); color:#059669; }
.res-ic.ft-ppt, .ft-badge.ft-ppt { background:rgba(234,88,12,.12);  color:#ea580c; }

@media (max-width:520px){
  .doc-main p { display:none; }
  .doc-side .doc-size { display:none; }
  .doc-row { padding:.8rem .9rem; gap:.8rem; }
}

.pub-empty { background:rgba(255,255,255,.7); border:1px dashed rgba(20,40,80,.2); border-radius:16px;
             padding:2.5rem 1.5rem; text-align:center; color:#5c6178; }

/* ---------- Reveal animatsiya ---------- */
.reveal { opacity:0; transform:translateY(20px);
          transition:opacity .5s cubic-bezier(.22,1,.36,1), transform .5s cubic-bezier(.22,1,.36,1); }
.reveal.in { opacity:1; transform:none; }

/* ---------- SPA progress bar ---------- */
#spaTopbar { position:fixed; top:0; left:0; height:3px; width:0; z-index:3000; opacity:0;
             background:linear-gradient(90deg,#2563eb,#7c3aed); border-radius:0 3px 3px 0;
             transition:width .25s ease, opacity .3s ease; }

@media (max-width:575.98px){
    .pub-brand span { display:none; }      /* faqat logo */
    .pbtn { padding:.45rem .7rem; font-size:.82rem; }
    .pub-hero { padding-top:2rem; }
}
@media (prefers-reduced-motion:reduce){
    .reveal { opacity:1!important; transform:none!important; }
}
