/*
Theme Name: ISE — Hello Elementor Child
Theme URI: https://www.software-engineering.ie
Description: Brand-foundation child theme for Immersive Software Engineering (ISE), University of Limerick. Establishes UL-brand design tokens (colours, typography, spacing) and utility classes consumed by Elementor sections. Parent: Hello Elementor.
Author: ISE / University of Limerick
Template: hello-elementor
Version: 0.1.0
Text Domain: hello-elementor-child
*/

/* =============================================================
   UL BRAND DESIGN TOKENS
   Single CSS source of truth. Mirror these into Elementor
   Site Settings -> Global Colors / Global Fonts.
   Colours confirmed against UL brand guidelines:
     UL Green (core)      #005335   (verify vs #005844 on official kit)
     UL Modern Green      #00B140
     UL Heritage Green    #003726
   Fonts: Saol / Inter / Formula Condensed (brand);
   licence-clean fallbacks: Cormorant Garamond / Inter / Roboto Condensed.
   ============================================================= */
:root {
  /* --- Brand greens --- */
  --ul-green:            #005335;   /* core / primary */
  --ul-green-modern:     #00B140;   /* bright accent, sparing use */
  --ul-green-heritage:   #003726;   /* deep backgrounds, footer */
  --ul-green-050:        #e6efeb;   /* tint for section bands */
  --ul-green-100:        #cde0d8;

  /* --- Neutrals --- */
  --ink:                 #16211c;   /* near-black text, green-cast */
  --ink-70:              #46514c;
  --ink-50:              #6b746f;
  --line:                #dfe4e1;   /* hairline borders */
  --paper:               #ffffff;
  --paper-off:           #f6f8f7;   /* off-white section bg */

  /* --- Typography --- */
  --font-display: "Roboto Condensed", "Formula Condensed", "Arial Narrow", sans-serif; /* Spirit / display */
  --font-serif:   "Cormorant Garamond", "Saol", Georgia, "Times New Roman", serif;      /* Heritage / editorial */
  --font-sans:    "Inter", "Helvetica Neue", Arial, sans-serif;                          /* Modern / body + UI */

  --fs-hero:   clamp(2.75rem, 6vw, 5rem);
  --fs-h1:     clamp(2.25rem, 4.5vw, 3.5rem);
  --fs-h2:     clamp(1.75rem, 3vw, 2.5rem);
  --fs-h3:     clamp(1.25rem, 2vw, 1.6rem);
  --fs-lead:   clamp(1.125rem, 1.6vw, 1.375rem);
  --fs-body:   1.0625rem;
  --fs-small:  0.875rem;
  --lh-tight:  1.05;
  --lh-snug:   1.25;
  --lh-body:   1.6;

  /* --- Spacing / layout --- */
  --container:      1200px;
  --container-wide: 1440px;
  --gutter:         clamp(1rem, 4vw, 3rem);
  --section-y:      clamp(3.5rem, 8vw, 7rem);
  --space-1: .5rem; --space-2: 1rem; --space-3: 1.5rem; --space-4: 2rem;
  --space-5: 3rem; --space-6: 4rem;

  /* --- Form --- */
  --radius:    10px;
  --radius-lg: 18px;
  --shadow-sm: 0 1px 2px rgba(3,55,38,.06), 0 2px 8px rgba(3,55,38,.06);
  --shadow-md: 0 8px 30px rgba(3,55,38,.12);
  --focus:     0 0 0 3px rgba(0,177,64,.45);
  --transition: 200ms cubic-bezier(.2,.6,.2,1);
}

/* =============================================================
   BASE
   ============================================================= */
body {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}
h1,h2,h3,h4,h5 { font-family: var(--font-display); font-weight: 700; line-height: var(--lh-tight); letter-spacing: -0.01em; color: var(--ul-green-heritage); text-transform: none; }
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); line-height: var(--lh-snug); }
a { color: var(--ul-green); text-underline-offset: 3px; }
a:hover { color: var(--ul-green-modern); }
:focus-visible { outline: none; box-shadow: var(--focus); border-radius: 4px; }

/* =============================================================
   UTILITY CLASSES  (apply via Elementor "CSS Classes" field)
   ============================================================= */
.ise-container { max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.ise-section   { padding-block: var(--section-y); }
.ise-band      { background: var(--paper-off); }
.ise-band--green    { background: var(--ul-green); color: #fff; }
.ise-band--heritage { background: var(--ul-green-heritage); color: #fff; }
.ise-band--green h1, .ise-band--green h2, .ise-band--green h3,
.ise-band--heritage h1, .ise-band--heritage h2, .ise-band--heritage h3 { color: #fff; }

/* Eyebrow / kicker label */
.ise-eyebrow {
  font-family: var(--font-sans);
  text-transform: uppercase;
  letter-spacing: .14em;
  font-weight: 600;
  font-size: var(--fs-small);
  color: var(--ul-green-modern);
}

/* Editorial serif accent for pull quotes / lead statements */
.ise-serif  { font-family: var(--font-serif); font-weight: 500; font-size: var(--fs-lead); line-height: 1.4; }
.ise-lead   { font-size: var(--fs-lead); color: var(--ink-70); line-height: 1.5; }

/* Buttons */
.ise-btn {
  display: inline-flex; align-items: center; gap: .5rem;
  font-family: var(--font-sans); font-weight: 600; font-size: 1rem;
  padding: .85rem 1.5rem; border-radius: var(--radius);
  text-decoration: none; transition: var(--transition); cursor: pointer;
  border: 2px solid transparent;
}
.ise-btn--primary { background: var(--ul-green); color: #fff; }
.ise-btn--primary:hover { background: var(--ul-green-modern); color: #052; transform: translateY(-1px); }
.ise-btn--ghost { background: transparent; color: var(--ul-green); border-color: var(--ul-green); }
.ise-btn--ghost:hover { background: var(--ul-green); color: #fff; }
.ise-btn--on-dark { background: #fff; color: var(--ul-green-heritage); }
.ise-btn--on-dark.ise-btn--ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.7); }

/* Hero overlay (place over full-bleed image) */
.ise-hero { position: relative; color: #fff; }
.ise-hero::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(3,55,38,.35) 0%, rgba(0,83,53,.78) 100%);
}
.ise-hero > * { position: relative; z-index: 1; }
.ise-hero h1 { color: #fff; font-size: var(--fs-hero); }

/* Stat block */
.ise-stat__num { font-family: var(--font-display); font-weight: 700; font-size: clamp(2.5rem,5vw,3.75rem); color: var(--ul-green); line-height: 1; }
.ise-stat__label { font-size: var(--fs-small); color: var(--ink-70); text-transform: uppercase; letter-spacing: .08em; }

/* Partner logo wall */
.ise-logo-wall { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px,1fr)); gap: clamp(1rem,3vw,2.5rem); align-items: center; }
.ise-logo-wall img { max-height: 46px; width: auto; margin-inline: auto; filter: grayscale(1); opacity: .7; transition: var(--transition); }
.ise-logo-wall img:hover { filter: none; opacity: 1; }

/* Card */
.ise-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--space-4); transition: var(--transition); }
.ise-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }

/* Rounded media */
.ise-media-round img { border-radius: var(--radius-lg); }

/* Footer (heritage green) */
.ise-footer { background: var(--ul-green-heritage); color: #cfe3da; }
.ise-footer a { color: #fff; }
.ise-footer a:hover { color: var(--ul-green-modern); }

/* --- Brand header/footer with the official white ISE·UL lockup on dark green --- */
.ise-nav { background: var(--ul-green-heritage); }
.ise-nav a { color: #eaf3ee; }
.ise-nav a:hover { color: #fff; }
.ise-logo-wall.ise-logo-wall--mono img { filter: none; opacity: .85; max-height: 52px; }
.ise-logo-wall.ise-logo-wall--mono img:hover { opacity: 1; }

/* --- Partner logo wall: uniform white silhouettes on dark green, in chips --- */
.ise-logo-wall.ise-logo-wall--mono { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.ise-logo-cell {
  display: flex; align-items: center; justify-content: center;
  padding: 1.1rem 1rem; min-height: 84px;
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 12px;
}
.ise-logo-cell img {
  max-height: 40px; width: auto;
  filter: brightness(0) invert(1);   /* normalise any logo colour to clean white */
  opacity: .82; transition: opacity var(--transition);
}
.ise-logo-cell:hover img { opacity: 1; }

/* --- FAQ accordion --- */
.ise-faq details { border-bottom: 1px solid var(--line); padding: 1.15rem 0; }
.ise-faq summary { cursor: pointer; font-family: var(--font-display); font-weight: 700; font-size: 1.2rem; color: var(--ul-green-heritage); list-style: none; display: flex; justify-content: space-between; gap: 1rem; }
.ise-faq summary::-webkit-details-marker { display: none; }
.ise-faq summary::after { content: "+"; color: var(--ul-green-modern); font-weight: 700; }
.ise-faq details[open] summary::after { content: "\2013"; }
.ise-faq details > p { margin: .75rem 0 0; color: var(--ink-70); max-width: 72ch; }

/* --- Simple two-column prose block --- */
.ise-prose p { max-width: 68ch; color: var(--ink-70); font-size: var(--fs-lead); line-height: 1.55; }

/* --- Photography: split image + text --- */
.ise-split { display: grid; grid-template-columns: 1fr 1fr; align-items: stretch; }
.ise-split img { width: 100%; height: 100%; object-fit: cover; min-height: 360px; display: block; }
.ise-split__text { padding: clamp(2rem, 5vw, 4.5rem); align-self: center; max-width: 640px; }
@media (max-width: 820px){ .ise-split, .ise-split--rev { grid-template-columns: 1fr; } .ise-split--rev > img { order: -1; } .ise-split img { min-height: 260px; } }

/* --- Photography: portrait "meet the cohort" cards --- */
.ise-pcards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.ise-pcard { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); }
.ise-pcard img { width: 100%; height: 300px; object-fit: cover; object-position: top center; display: block; }
.ise-pcard__c { padding: 1.1rem 1.25rem; }
.ise-pcard__c h3 { margin: 0 0 .2rem; font-size: 1.15rem; }
.ise-pcard__c p { margin: 0; color: var(--ink-70); font-size: .95rem; }
@media (max-width: 820px){ .ise-pcards { grid-template-columns: 1fr; } }

/* --- Audience chooser: student flow vs partner flow --- */
.ise-paths { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.ise-path { border-radius: var(--radius-lg); padding: clamp(1.75rem, 3vw, 2.5rem); border: 1px solid var(--line); background: #fff; display: flex; flex-direction: column; box-shadow: var(--shadow-sm); }
.ise-path h3 { font-size: 1.6rem; margin: .25rem 0 .5rem; }
.ise-path p { color: var(--ink-70); margin: 0 0 1.25rem; max-width: 44ch; }
.ise-path .row { margin-top: auto; display: flex; align-items: center; gap: 1.1rem; flex-wrap: wrap; }
.ise-path--dark { background: var(--ul-green-heritage); border-color: transparent; color: #fff; }
.ise-path--dark h3 { color: #fff; }
.ise-path--dark p { color: #d7e8df; }
.ise-path--dark .ise-eyebrow { color: #8fe3b0; }
@media (max-width: 820px){ .ise-paths { grid-template-columns: 1fr; } }

/* --- Student testimonials --- */
.ise-tcards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.ise-tcard { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 1.75rem; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; gap: 1.1rem; }
.ise-tcard__quote { font-family: var(--font-serif); font-size: 1.22rem; line-height: 1.4; color: var(--ul-green-heritage); margin: 0; }
.ise-tcard__quote::before { content: "\201C"; color: var(--ul-green-modern); font-weight: 700; margin-right: .05em; }
.ise-tcard__who { display: flex; align-items: center; gap: .85rem; margin-top: auto; }
.ise-tcard__who img { width: 54px; height: 54px; border-radius: 50%; object-fit: cover; object-position: top center; flex: none; }
.ise-tcard__name { font-weight: 700; font-family: var(--font-sans); color: var(--ink); line-height: 1.2; }
.ise-tcard__proj { font-size: .85rem; color: var(--ink-70); }
@media (max-width: 820px){ .ise-tcards { grid-template-columns: 1fr; } }

/* =============================================================
   JOBS BOARD
   ============================================================= */
.jb-toolbar { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: .75rem; margin-bottom: 1.25rem; }
.jb-toolbar input, .jb-toolbar select {
  font-family: var(--font-sans); font-size: 1rem; padding: .8rem 1rem;
  border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: var(--ink); width: 100%;
}
.jb-toolbar input:focus, .jb-toolbar select:focus { outline: none; box-shadow: var(--focus); border-color: var(--ul-green); }
.jb-count { color: var(--ink-70); font-size: .9rem; margin-bottom: 1rem; }
.jb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1.25rem; }
.jb-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 1.5rem; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; gap: .85rem; transition: var(--transition); cursor: pointer; }
.jb-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.jb-card__top { display: flex; align-items: center; gap: .9rem; }
.jb-logo { width: 48px; height: 48px; border-radius: 12px; background: var(--ul-green-heritage); display: flex; align-items: center; justify-content: center; flex: none; }
.jb-logo img { max-width: 30px; max-height: 26px; filter: brightness(0) invert(1); }
.jb-title { font-family: var(--font-display); font-weight: 700; font-size: 1.2rem; color: var(--ul-green-heritage); margin: 0; line-height: 1.15; }
.jb-company { font-size: .9rem; color: var(--ink-70); margin-top: .15rem; }
.jb-summary { margin: 0; color: var(--ink-70); font-size: .95rem; line-height: 1.5; }
.jb-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
.jb-tag { font-size: .78rem; font-weight: 600; letter-spacing: .02em; color: var(--ul-green); background: var(--ul-green-050); border-radius: 999px; padding: .25rem .7rem; }
.jb-card__foot { display: flex; align-items: center; justify-content: space-between; margin-top: auto; padding-top: .4rem; }
.jb-posted { font-size: .82rem; color: var(--ink-50); }
.jb-view { font-family: var(--font-sans); font-weight: 600; color: var(--ul-green); background: none; border: 0; cursor: pointer; font-size: .95rem; }
.jb-empty { text-align: center; color: var(--ink-70); padding: 3rem 1rem; font-size: 1.05rem; }

/* modal */
.jb-modal { position: fixed; inset: 0; z-index: 999; display: flex; align-items: flex-start; justify-content: center; padding: 5vh 1rem; background: rgba(3,55,38,.55); overflow-y: auto; }
.jb-modal[hidden] { display: none; }
.jb-modal__box { background: #fff; border-radius: var(--radius-lg); max-width: 640px; width: 100%; padding: clamp(1.5rem, 4vw, 2.5rem); position: relative; box-shadow: var(--shadow-md); }
.jb-modal__close { position: absolute; top: 1rem; right: 1rem; width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line); background: #fff; font-size: 1.3rem; line-height: 1; cursor: pointer; color: var(--ink-70); }
.jb-modal__close:hover { background: var(--paper-off); }
.jb-modal h3 { font-size: 1.7rem; margin: .25rem 0 .3rem; }
.jb-modal .jb-company { font-size: 1rem; }
.jb-modal__meta { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0; }
.jb-modal__desc { color: var(--ink-70); line-height: 1.65; }
.jb-modal__desc ul { padding-left: 1.1rem; }
.jb-modal__apply { margin-top: 1.5rem; }
@media (max-width: 820px){ .jb-toolbar { grid-template-columns: 1fr 1fr; } .jb-toolbar input { grid-column: 1 / -1; } }

/* =============================================================
   RESIDENCY JOB BOARD (mirrors the ISE Softr board structure)
   ============================================================= */
.rb-rounds { display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem; max-width: 860px; }
.rb-round-btn { display: block; text-align: center; padding: .9rem 1rem; border-radius: var(--radius); font-weight: 600; font-family: var(--font-sans); text-decoration: none; font-size: .98rem; }
.rb-round-btn--closed { background: rgba(255,255,255,.12); color: #a9c9bb; cursor: default; }
.rb-round-btn--post { background: var(--ul-green-modern); color: #04231a; }
.rb-round-btn--post:hover { filter: brightness(1.05); }
@media (max-width: 700px){ .rb-rounds { grid-template-columns: 1fr 1fr; } }

.rb-round { margin-bottom: 3rem; }
.rb-round__head { text-align: center; margin-bottom: 1.25rem; }
.rb-search { width: 100%; font-family: var(--font-sans); font-size: 1rem; padding: .85rem 1.1rem; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: var(--ink); margin-bottom: 1rem; }
.rb-search:focus { outline: none; box-shadow: var(--focus); border-color: var(--ul-green); }
.rb-count { color: var(--ink-70); font-size: .88rem; margin-bottom: 1rem; }
.rb-pos { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 1.5rem 1.75rem; box-shadow: var(--shadow-sm); margin-bottom: 1rem; }
.rb-pos__title { font-family: var(--font-display); font-weight: 700; font-size: 1.3rem; color: var(--ul-green-heritage); margin: 0 0 1rem; padding-bottom: .8rem; border-bottom: 1px solid var(--line); }
.rb-pos__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.25rem; }
.rb-label { display: block; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-50); margin-bottom: .3rem; }
.rb-val { color: var(--ink); font-size: .95rem; word-break: break-word; }
.rb-val a { color: var(--ul-green); }
.rb-empty { color: var(--ink-70); padding: 1.5rem 0; }
@media (max-width: 820px){ .rb-pos__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px){ .rb-pos__grid { grid-template-columns: 1fr; } }

/* Residency board: company logo tile in position cards */
.rb-pos__head { display: flex; align-items: center; gap: .9rem; margin-bottom: 1rem; padding-bottom: .8rem; border-bottom: 1px solid var(--line); }
.rb-pos__head .rb-pos__title { margin: 0; padding: 0; border: 0; }
.rb-logo { width: 46px; height: 46px; border-radius: 10px; background: var(--ul-green-heritage); display: flex; align-items: center; justify-content: center; flex: none; }
.rb-logo img { max-width: 28px; max-height: 24px; filter: brightness(0) invert(1); }

/* Residency board: search + skill filter tools, skills row */
.rb-tools { display: grid; grid-template-columns: 2fr 1fr; gap: .75rem; margin-bottom: 1rem; }
.rb-tools .rb-search { margin-bottom: 0; }
.rb-skill-filter { font-family: var(--font-sans); font-size: 1rem; padding: .85rem 1.1rem; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: var(--ink); }
.rb-skill-filter:focus { outline: none; box-shadow: var(--focus); border-color: var(--ul-green); }
.rb-skills { margin-top: 1rem; display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.rb-skills__label { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-50); margin-right: .25rem; }
@media (max-width: 600px){ .rb-tools { grid-template-columns: 1fr; } }

/* Student profiles + directory */
.sp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: start; }
@media (max-width: 820px){ .sp-grid { grid-template-columns: 1fr; } }
.sp-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 1.75rem; }
.sp-card__head { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; }
.sp-photo { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; object-position: top center; flex: none; }
.sp-photo--initials { display: flex; align-items: center; justify-content: center; background: var(--ul-green); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 1.7rem; }
.sp-name { margin: 0; font-size: 1.35rem; }
.sp-headline { color: var(--ul-green); font-weight: 600; font-size: .95rem; }
.sp-bio { color: var(--ink-70); line-height: 1.55; }
.sp-skills { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin: 1rem 0 0; }
.sp-links { display: flex; gap: 1.25rem; margin-top: 1rem; }
.sp-links a { font-weight: 600; color: var(--ul-green); }
.sp-directory { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.5rem; }
.ise-form label { font-weight: 600; font-size: .9rem; color: var(--ink); }

/* In-app apply + favourites + applications */
.rb-apply-row { margin-top: 1rem; }
.rb-applied { color: var(--ul-green); font-weight: 700; font-size: .9rem; }
.sp-dir-item { position: relative; }
.sp-fav { position: absolute; top: 1.1rem; right: 1.1rem; z-index: 2; width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line); background: #fff; color: #c9ccca; font-size: 1.1rem; line-height: 1; cursor: pointer; transition: var(--transition); }
.sp-fav:hover { color: #e0245e; }
.sp-fav.is-fav { color: #e0245e; border-color: #f2c9d5; background: #fff5f8; }
.sp-savedonly { display: flex; align-items: center; gap: .4rem; white-space: nowrap; font-size: .9rem; color: var(--ink-70); }
.sp-count { color: var(--ink-70); font-size: .88rem; margin-bottom: 1rem; }

/* Residency bookmarking (student "Save" on the board) */
.rb-apply-row { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.rb-bm { background: none; border: 1px solid var(--line); border-radius: 999px; padding: .5rem .95rem; font-family: var(--font-sans); font-weight: 600; font-size: .85rem; color: var(--ink-70); cursor: pointer; transition: var(--transition); }
.rb-bm:hover { color: var(--ul-green); border-color: var(--ul-green); }
.rb-bm.is-bm { color: var(--ul-green); border-color: var(--ul-green); background: var(--ul-green-050); }
