/* شهاب — files: ملفات شهاب.

   صفحة تحريرية فاتحة بترتيب واحد: هيرو «مكتب الملفات» على ورق الملفات الدافئ
   (يمين: المسار والعنوان والوصف ثم الملف المفتوح بعنوانه ووصفه وثلاث مواد منه
   وزرّه؛ يسار: غلافه الكبير — الغلاف الحاد الوحيد عندنا، 900px — وتحته
   «ملفات مفتوحة أيضًا»؛ العمودان يبدآن وينتهيان على نفس الخط)، «آخر الملفات»، «ملفات تفاعلية» كتلتين فاتحتين
   (الخريطة ومكتب البيانات، والرقم الحي كبير من js/figures.js)، و«من أرشيف شهاب»
   صف من 4. البطاقة .sh-reveal (components.css): الغلاف وحده، والعنوان والتاريخ يطلعوا
   عليه مع الهوفر. أغلفة الموقع القديم 452×267 على الأكثر،
   فمفيش بطاقة أعرض من ~400px على اللابتوب. على الموبايل البطاقات صفوف
   (غلاف صغير جنب العنوان). لا ترقيم ولا لافتات ولا خطوط زمنية مزخرفة. */
a{transition:color .16s ease,opacity .16s ease,border-color .16s ease,background .16s ease,gap .16s ease}

/* ================================================================= tiles */
.sh-fl-tile{position:relative;display:block;overflow:hidden;background:var(--sh-navy-2);isolation:isolate}
.sh-fl-tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
a:hover .sh-fl-tile img,a.sh-fl-tile:hover img,a:focus-visible .sh-fl-tile img{transform:scale(1.03)}
a:focus-visible .sh-fl-tile,a.sh-fl-tile:focus-visible{outline:2px solid var(--sh-blue);outline-offset:3px}

/* ================================================================== hero */
/* grid areas make the two columns start and end together: the cover spans the
   head and the top of the file, «also» sits under the cover beside the file's foot */
.sh-fl-hero{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-rows:auto 1fr auto;grid-template-areas:"head cover" "file cover" "file also";gap:0 48px;padding:32px 0 48px;background:var(--color-surface-warm);box-shadow:0 0 0 100vmax var(--color-surface-warm);clip-path:inset(0 -100vmax)}
.sh-fl-hero__head{grid-area:head;min-width:0}
.sh-fl-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px 9px;font-family:var(--sh-font);font-size:14px;color:var(--sh-mute)}
.sh-fl-crumbs a{color:var(--sh-mute)}
.sh-fl-crumbs a::after{content:"/";margin-inline-start:9px;color:var(--color-text-faint)}
@media (hover:hover){.sh-fl-crumbs a:hover{color:var(--sh-blue)}}
.sh-fl-crumbs span{color:var(--sh-navy);font-weight:700}
.sh-fl-title{margin:14px 0 0;font-family:var(--sh-font);font-size:clamp(40px,4.2vw,60px);font-weight:800;line-height:1.1;color:var(--sh-navy)}
.sh-fl-dek{margin:12px 0 0;font-family:var(--sh-font);font-size:18px;font-weight:400;line-height:1.8;color:var(--sh-ink-2);text-wrap:pretty}

.sh-fl-hero__cover{grid-area:cover;align-self:stretch;min-height:340px}   /* no ratio of its own: the file column sets the height, so both columns end together with no gap */
@media (hover:hover){.sh-fl-hero__cover:hover img{transform:scale(1.02)}}

.sh-fl-hero__file{grid-area:file;display:flex;flex-direction:column;min-width:0;padding-top:40px}
.sh-fl-hero__meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-family:var(--sh-font);font-size:14px;color:var(--sh-mute)}
.sh-fl-hero__meta b{padding:3px 10px;background:var(--sh-navy);color:#fff;font-weight:700}
.sh-fl-hero__title{margin:14px 0 0;font-family:var(--sh-font);font-size:clamp(26px,2.4vw,34px);font-weight:800;line-height:1.35;text-wrap:balance}
.sh-fl-hero__title a{color:var(--sh-navy)}
@media (hover:hover){.sh-fl-hero__title a:hover{color:var(--sh-blue)}}
.sh-fl-hero__dek{margin:12px 0 0;font-family:var(--sh-font);font-size:17px;line-height:1.8;color:var(--sh-ink-2);text-wrap:pretty}
/* what the file holds: rows, the one soft line between them is the list's own */
.sh-fl-hero__docs{list-style:none;margin:18px 0 26px;padding:0}
.sh-fl-hero__docs li + li{border-top:1px solid var(--color-border)}
.sh-fl-hero__docs a{display:block;padding:13px 0;font-family:var(--sh-font);font-size:17px;font-weight:700;line-height:1.55;color:var(--sh-navy);text-wrap:pretty}
@media (hover:hover){.sh-fl-hero__docs a:hover{color:var(--sh-blue)}}
.sh-fl-hero__cta,.sh-fl-hero__cta:hover{color:#fff}   /* base.css a:hover would paint the label blue on blue */
.sh-fl-hero__cta{display:inline-flex;align-self:flex-start;align-items:center;gap:12px;margin-top:auto;padding:0 26px;min-height:50px;background:var(--sh-blue);font-family:var(--sh-font);font-size:16px;font-weight:800}
@media (hover:hover){.sh-fl-hero__cta:hover{background:var(--color-brand-blue-deep);gap:16px}}
.sh-fl-hero__cta:focus-visible{outline:2px solid var(--sh-blue);outline-offset:2px}

.sh-fl-hero__also{grid-area:also;min-width:0;padding-top:26px}
.sh-fl-hero__also-h{margin:0;font-family:var(--sh-font);font-size:16px;font-weight:800;color:var(--sh-navy)}
.sh-fl-hero__also-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:12px}
.sh-fl-mini{display:flex;flex-direction:column;min-width:0;color:var(--sh-ink)}
@media (hover:hover){.sh-fl-mini:hover{color:var(--sh-ink)}}
.sh-fl-mini .sh-fl-tile{aspect-ratio:16/9}
.sh-fl-mini__t{display:block;margin-top:10px;font-family:var(--sh-font);font-size:17px;font-weight:800;line-height:1.45;color:var(--sh-navy);text-wrap:pretty}
@media (hover:hover){.sh-fl-mini:hover .sh-fl-mini__t{color:var(--sh-blue)}}
.sh-fl-mini__m{display:block;margin-top:2px;font-family:var(--sh-font);font-size:13px;color:var(--sh-mute)}

/* ============================================================== sections */
.sh-fl-sec{margin-top:64px}
.sh-fl-sec--last{margin-bottom:64px}
.sh-fl-sec .sh-section__head{align-items:baseline;gap:18px}
.sh-fl-sec .sh-section__title{font-size:clamp(24px,2.2vw,30px);font-weight:800;gap:12px}
.sh-fl-sec .sh-meta__note{font-size:14px}
.sh-fl-all{font-size:15px;color:var(--sh-blue)}
@media (hover:hover){.sh-fl-all:hover{color:var(--sh-blue)}}

/* ================================================================= cards */
.sh-fl-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 28px;margin-top:22px}
.sh-fl-grid--4{grid-template-columns:repeat(4,minmax(0,1fr));gap:32px 24px}
/* the file card is .sh-reveal (css/components.css): the cover at rest, title and date rise on hover */
.sh-fl-grid--4 .sh-reveal__title{font-size:18px}

/* ======================================================= interactive files */
/* two light tool blocks on the soft tint, no frame: a small picture, what the tool is,
   its name, and the live figure it keeps, set large because the number is the point */
.sh-fl-tools__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:22px}
.sh-fl-tool{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:0 22px;align-items:center;min-width:0;padding:18px;background:var(--color-surface-soft);color:var(--sh-ink);transition:background .25s ease}
@media (hover:hover){.sh-fl-tool:hover{background:var(--color-surface-blue);color:var(--sh-ink)}}
.sh-fl-tool:focus-visible{outline:2px solid var(--sh-blue);outline-offset:3px}
.sh-fl-tool__pic{aspect-ratio:16/10}
.sh-fl-tool__body{display:flex;flex-direction:column;gap:6px;min-width:0}
.sh-fl-tool__kind{display:inline-flex;align-items:center;gap:8px;font-family:var(--sh-font);font-size:14px;font-weight:700;color:var(--sh-blue)}
.sh-fl-tool__kind .sh-i{font-size:13px}
.sh-fl-tool__title{display:block;font-family:var(--sh-font);font-size:19px;font-weight:800;line-height:1.45;color:var(--sh-navy);text-wrap:pretty}
@media (hover:hover){.sh-fl-tool:hover .sh-fl-tool__title{color:var(--sh-blue)}}
.sh-fl-tool__fig{display:flex;align-items:baseline;gap:8px;margin-top:4px;font-family:var(--sh-font);font-size:15px;font-weight:700;color:var(--sh-mute)}
.sh-fl-tool__fig b{font-size:30px;font-weight:800;line-height:1.1;color:var(--sh-navy);direction:ltr;unicode-bidi:isolate}

/* ============================================================ breakpoints */
@media (max-width:1023px){
  .sh-fl-hero{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-template-areas:"head" "cover" "file" "also";padding:28px 0 40px}
  .sh-fl-hero__cover{margin-top:26px;align-self:auto;aspect-ratio:16/10;min-height:0}
  .sh-fl-hero__file{padding-top:28px}
  .sh-fl-hero__cta{margin-top:0}
  .sh-fl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sh-fl-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sh-fl-tools__grid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:767px){
  /* the other open files become rows under the file */
  .sh-fl-hero__also-grid{grid-template-columns:minmax(0,1fr);gap:16px}
  .sh-fl-mini{display:grid;grid-template-columns:136px minmax(0,1fr);grid-template-rows:auto 1fr;gap:2px 14px;align-content:start}
  .sh-fl-mini .sh-fl-tile{grid-row:1/span 2}
  .sh-fl-mini__t{margin-top:0;font-size:16.5px}
  .sh-fl-sec{margin-top:48px}
  .sh-fl-sec--last{margin-bottom:48px}
  /* cards become rows: the cover small beside its title, so the phone page is not ten screens of covers */
  .sh-fl-grid,.sh-fl-grid--4{grid-template-columns:minmax(0,1fr);gap:18px}
  .sh-fl-grid--4 .sh-reveal__title{font-size:17px}
  .sh-fl-tools__grid{grid-template-columns:minmax(0,1fr);gap:14px}
  .sh-fl-tool{grid-template-columns:120px minmax(0,1fr);gap:0 14px;padding:12px}
  .sh-fl-tool__title{font-size:16.5px}
  .sh-fl-tool__fig b{font-size:24px}
}
@media (max-width:640px){
  .sh-fl-hero{padding:20px 0 32px}
  .sh-fl-crumbs{font-size:13px}
  .sh-fl-title{margin-top:8px;font-size:36px}
  .sh-fl-dek{font-size:16px;margin-top:6px}
  .sh-fl-hero__cover{margin-inline:calc(var(--sh-gutter,16px) * -1);width:calc(100% + var(--sh-gutter,16px) * 2);max-width:none;margin-top:20px}   /* the cover edge to edge */
  .sh-fl-hero__file{padding-top:22px}
  .sh-fl-hero__title{font-size:25px}
  .sh-fl-hero__dek{font-size:16px}
  .sh-fl-hero__docs{margin-bottom:20px}
  .sh-fl-hero__docs a{font-size:16px;padding:11px 0}
  .sh-fl-hero__cta{width:100%;justify-content:center}
  .sh-fl-all{display:inline-flex;align-items:center;min-height:44px}
  .sh-fl-tool__kind{font-size:13px}
}
@media (prefers-reduced-motion:reduce){
  .sh-fl-tile img{transition:none}
  a:hover .sh-fl-tile img,a.sh-fl-tile:hover img,a:focus-visible .sh-fl-tile img{transform:none}
}

/* A press has to answer on a touch screen, where :hover never fires: the ground
   steps to navy for as long as the control is held. No transform and no radius —
   the timing is the colour transition the control already carries. */
body[data-sh-page="files"] :where(.sh-more,.sh-pager__btn,.sh-chip,.sh-tag,.sh-btn):active{
  background:var(--sh-navy);color:#fff;border-color:var(--sh-navy);
}
body[data-sh-page="files"] :where(.sh-band,.sh-navy,[class*="--on-dark"]) :where(a,button):active{
  background:rgba(255,255,255,.18);
}
body[data-sh-page="files"] :where(.sh-list__row,.sh-card,.sh-fig,.sh-op__row):active{
  background:var(--color-surface-soft);
}

/* the burger and its chevron live in the shared css/responsive.css, which feeds
   the four locked pages, so their guard is written here, per page */
@media (prefers-reduced-motion:reduce){
  body[data-sh-page="files"] .sh-nav-toggle span,
  body[data-sh-page="files"] header nav .sh-menu > a > span:last-child{transition:none}
}
