/* IPO Phase 01 */
.ipo-page, .ipo-page *, .ipo-page *::before, .ipo-page *::after { box-sizing: border-box; }
.ipo-hero { background:#f8fafc; color:#0f172a; padding-top:max(1.25rem, env(safe-area-inset-top)); padding-bottom:max(2.5rem, env(safe-area-inset-bottom)); overflow:hidden; }
.ipo-hero__container { width:100%; max-width:1200px; min-height:fit-content; margin:0 auto; padding:clamp(1.35rem, 3.25vw, 2.5rem) 1.5rem clamp(2.5rem, 5vw, 3.5rem); display:grid; align-items:center; justify-items:center; text-align:center; }
.ipo-hero__content, .ipo-hero__visual { width:100%; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.ipo-hero__eyebrow { margin:0 0 .9rem; padding:.48rem .78rem; border:1px solid #93c5fd; border-radius:50px; background:#eff6ff; color:#2563eb; font-size:.78rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.ipo-hero h1 { max-width:720px; margin:0; font-size:clamp(1.5rem, 4vw, 2.5rem); line-height:1.16; letter-spacing:-.035em; }
.text-accent { color:#2563eb; }
.ipo-hero__intro { max-width:650px; margin:1rem 0 0; color:#475569; font-size:clamp(.94rem, 1.8vw, 1.05rem); line-height:1.65; }
.ipo-hero__badges { display:flex; flex-wrap:wrap; justify-content:center; margin:1.4rem 0 0; }
.ipo-badge { min-height:36px; margin:0 6px 10px; padding:.48rem 1rem; border:1px solid transparent; border-radius:50px; font-size:.85rem; font-weight:700; line-height:1.35; }
.ipo-badge--all { border-color:#bfdbfe; background:#dbeafe; color:#1d4ed8; }
.ipo-badge--mainboard { border-color:#a7f3d0; background:#ecfdf5; color:#047857; }
.ipo-badge--sme { border-color:#ddd6fe; background:#f5f3ff; color:#6d28d9; }
.ipo-hero__metrics { width:100%; display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); margin:1.1rem 0 0; padding:0; }
.ipo-metric { min-width:0; min-height:78px; margin:0 6px 12px; padding:12px 8px; border:1px solid #e2e8f0; border-radius:10px; background:#fff; box-shadow:0 2px 4px rgba(0,0,0,.02); }
.ipo-metric dt { color:#475569; font-size:clamp(.68rem, 2.5vw, .78rem); font-weight:700; line-height:1.45; }
.ipo-metric dd { margin:9px 0 0; color:#2563eb; font-size:clamp(1.3rem, 4vw, 1.75rem); font-weight:800; line-height:1.15; }
.ipo-hero__visual { max-width:480px; margin:1.5rem auto 0; }
.ipo-hero__visual .ipo-lifecycle { display:block; width:100%; height:auto; min-width:280px; max-width:100%; overflow:visible; }
@media (max-width:360px) { .ipo-hero__container { padding-left:12px; padding-right:12px; } .ipo-hero__badges { display:block; width:100%; max-width:240px; } .ipo-badge { display:block; width:100%; margin:0 0 8px; } .ipo-metric { margin-left:4px; margin-right:4px; padding:8px; } }
@media (min-width:361px) and (max-width:480px) { .ipo-hero__visual { max-width:360px; } }
@media (min-width:481px) and (max-width:767px) { .ipo-hero__container { max-width:600px; } .ipo-hero__visual { max-width:420px; } }
@media (min-width:768px) and (max-width:1023px) { .ipo-hero__badges { flex-wrap:nowrap; } .ipo-badge { margin-right:6px; margin-left:6px; } .ipo-hero__metrics { grid-template-columns:repeat(4, minmax(0, 1fr)); } }
@media (min-width:1024px) and (max-width:1279px) { .ipo-hero__container { grid-template-columns:60% 40%; } .ipo-hero__visual { margin-top:0; } .ipo-hero__metrics { grid-template-columns:repeat(4, minmax(0, 1fr)); } }
@media (min-width:1280px) { .ipo-hero__container { grid-template-columns:58% 42%; column-gap:48px; } .ipo-hero__visual { margin-top:0; } .ipo-hero__metrics { grid-template-columns:repeat(4, minmax(0, 1fr)); } }

/* IPO Phase 02 — IPOs at a Glance */
.ipo-glance { padding:clamp(3rem, 6vw, 5rem) 0; background:#fff; color:#0f172a; }
.ipo-glance__container { width:100%; max-width:1200px; min-height:fit-content; margin:0 auto; padding:0 1.5rem; }
.ipo-glance__header { margin:0 auto 2rem; text-align:center; }
.ipo-glance__header p { margin:0 0 .55rem; color:#2563eb; font-size:.78rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.ipo-glance__header h2 { margin:0; font-size:clamp(1.6rem, 3vw, 2.3rem); letter-spacing:-.025em; }
.ipo-glance__header > span { display:block; margin-top:.75rem; color:#475569; font-size:.96rem; }
.ipo-stage { margin:0 0 2.5rem; }
.ipo-stage__header { display:flex; align-items:center; margin:0 0 1rem; border-bottom:1px solid #e2e8f0; padding-bottom:.7rem; }
.ipo-stage__header h3 { margin:0; color:#0f172a; font-size:clamp(1.15rem, 2vw, 1.35rem); }
.ipo-stage__header span { display:inline-flex; min-width:26px; min-height:26px; align-items:center; justify-content:center; margin-left:.6rem; border-radius:50px; background:#eff6ff; color:#1d4ed8; font-size:.78rem; font-weight:800; }
.ipo-stage__empty { margin:0; padding:1rem; border-radius:10px; background:#f8fafc; color:#64748b; text-align:center; }
.ipo-card { display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); grid-template-areas:"company badges" "price investment" "dates actions" "details details"; overflow:hidden; margin:0 0 1rem; border:1px solid #e2e8f0; border-radius:14px; background:#fff; box-shadow:0 4px 14px rgba(15,23,42,.04); }
.ipo-card__company { grid-area:company; min-width:0; padding:1rem; text-align:left; }
.ipo-card__company h3 { margin:0; font-size:clamp(.96rem, 2.8vw, 1.1rem); line-height:1.35; }
.ipo-card__badges { grid-area:badges; min-width:0; padding:1rem; text-align:right; }
.ipo-type-badge, .ipo-status { display:inline-block; margin:0 0 4px 4px; padding:.3rem .5rem; border-radius:50px; font-size:.69rem; font-weight:800; line-height:1.25; }
.ipo-type-badge { background:#f1f5f9; color:#334155; }.ipo-status--open{background:#ecfdf5;color:#047857}.ipo-status--upcoming{background:#eff6ff;color:#1d4ed8}.ipo-status--closed{background:#fffbeb;color:#b45309}.ipo-status--listed{background:#f5f3ff;color:#6d28d9}
.ipo-card__metric { min-height:77px; padding:.85rem .5rem; background:#f8fafc; text-align:center; }.ipo-card__metric:first-of-type { margin-right:1px; }
.ipo-card__metric span, .ipo-card__dates small, .ipo-detail-grid span, .ipo-listing span, .ipo-timeline span { display:block; color:#64748b; font-size:.7rem; font-weight:700; line-height:1.35; }
.ipo-card__metric strong { display:block; margin-top:.35rem; color:#0f172a; font-size:.84rem; line-height:1.3; }
.ipo-card__dates { grid-area:dates; display:flex; min-width:0; padding:.8rem .45rem; text-align:center; }.ipo-card__dates span { width:50%; min-width:0; color:#0f172a; font-size:.74rem; font-weight:700; }.ipo-card__dates span + span { border-left:1px solid #e2e8f0; }
.ipo-card__dates small { margin-bottom:.25rem; }
.ipo-card__actions { grid-area:actions; display:flex; padding:.7rem .45rem; }.ipo-card__actions > * { width:50%; min-height:38px; display:inline-flex; align-items:center; justify-content:center; border-radius:7px; font:inherit; font-size:.73rem; font-weight:800; text-align:center; text-decoration:none; cursor:pointer; -webkit-appearance:none; -webkit-tap-highlight-color:transparent; }.ipo-apply { margin-right:4px; background:#2563eb; color:#fff; border:1px solid #2563eb; }.ipo-details-toggle { margin-left:4px; border:1px solid #cbd5e1; background:#fff; color:#1e293b; }.ipo-card__actions > *:focus-visible { outline:3px solid #93c5fd; outline-offset:2px; }
.ipo-card__details { grid-area:details; padding:1.1rem; border-top:1px solid #e2e8f0; background:#f8fafc; }.ipo-card__details[hidden] { display:none; }.ipo-card__details section + section { margin-top:1.2rem; }.ipo-card__details h4 { margin:0 0 .7rem; color:#0f172a; font-size:.78rem; letter-spacing:.08em; text-align:center; text-transform:uppercase; }
.ipo-detail-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); }.ipo-detail-grid > div { min-height:66px; margin:0 4px 8px; padding:.6rem .35rem; border:1px solid #e2e8f0; border-radius:8px; background:#fff; text-align:center; }.ipo-detail-grid strong, .ipo-listing strong { display:block; margin-top:.28rem; color:#0f172a; font-size:.79rem; line-height:1.35; }.ipo-listing { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); }.ipo-listing h4 { grid-column:1 / -1; }.ipo-listing > div { min-height:67px; margin:0 4px; padding:.65rem .4rem; border-radius:8px; background:#fff; text-align:center; }.ipo-listing .ipo-gain { color:#059669; }
.ipo-timeline ol { display:flex; margin:0; padding:0; list-style:none; }.ipo-timeline li { position:relative; width:20%; min-width:0; padding:.65rem .2rem 0; text-align:center; }.ipo-timeline li::before { content:""; position:absolute; top:0; left:0; width:100%; height:2px; background:#bfdbfe; }.ipo-timeline li:first-child::before { left:50%; width:50%; }.ipo-timeline li:last-child::before { width:50%; }.ipo-timeline li::after { content:""; position:absolute; top:-4px; left:50%; width:10px; height:10px; border:2px solid #2563eb; border-radius:50%; background:#fff; transform:translateX(-50%); }.ipo-timeline strong { display:block; margin-top:.3rem; color:#0f172a; font-size:.68rem; line-height:1.3; }
@media (max-width:360px) { .ipo-glance__container { padding-right:12px; padding-left:12px; }.ipo-card__company,.ipo-card__badges { padding:.75rem .55rem; }.ipo-card__actions { padding:.6rem .25rem; }.ipo-card__actions > * { font-size:.66rem; }.ipo-card__details { padding:.8rem .45rem; }.ipo-detail-grid > div { margin-right:3px; margin-left:3px; } }
@media (min-width:481px) and (max-width:767px) { .ipo-stage__list { max-width:600px; margin:0 auto; } }
@media (min-width:768px) and (max-width:1023px) { .ipo-detail-grid { grid-template-columns:repeat(4, minmax(0, 1fr)); }.ipo-detail-grid > div { margin-bottom:0; }.ipo-card__details { padding:1.3rem; } }
@media (min-width:1024px) { .ipo-card { grid-template-columns:1.35fr 1fr 1fr 1fr 1.1fr 1.25fr; grid-template-areas:"company badges price investment dates actions" "details details details details details details"; align-items:stretch; }.ipo-card__company,.ipo-card__badges,.ipo-card__metric,.ipo-card__dates,.ipo-card__actions { display:flex; flex-direction:column; justify-content:center; min-height:96px; border-right:1px solid #e2e8f0; }.ipo-card__badges { align-items:flex-end; }.ipo-card__metric { margin:0 !important; background:#fff; }.ipo-card__dates { flex-direction:row; align-items:center; padding-right:.25rem; padding-left:.25rem; }.ipo-card__actions { flex-direction:row; align-items:center; border-right:0; }.ipo-card__actions > * { min-height:36px; height:36px; }.ipo-detail-grid { grid-template-columns:repeat(4, minmax(0, 1fr)); }.ipo-detail-grid > div { margin-bottom:0; }.ipo-card__details { padding:1.5rem; } }
@media (prefers-reduced-motion:reduce) { .ipo-apply,.ipo-details-toggle { transition:none; } }

/* IPO Phase 03 — application roadmap */
.ipo-process { padding:clamp(3rem, 6vw, 5rem) 0; background:#f8fafc; color:#0f172a; }
.ipo-process__container { width:100%; max-width:1200px; margin:0 auto; padding:0 24px; }
.ipo-process__header { margin:0 0 1.5rem; text-align:left; }.ipo-process__header h2 { margin:0; font-size:clamp(1.5rem, 3vw, 2.25rem); letter-spacing:-.025em; }.ipo-process__header p { max-width:720px; margin:.8rem 0 0; color:#475569; font-size:clamp(.9rem, 1.7vw, 1rem); line-height:1.65; }
.ipo-process__canvas { border:1px solid #e2e8f0; border-radius:24px; background:linear-gradient(135deg,#f8fafc 0%,#eff6ff 100%); padding:clamp(2rem, 5vw, 3.5rem) clamp(1rem, 4vw, 3rem); }
.ipo-process__list { position:relative; max-width:900px; margin:0; padding:0; list-style:none; }.ipo-process__list::before { content:""; position:absolute; top:24px; bottom:24px; left:23px; width:4px; border-radius:4px; background:linear-gradient(180deg,#2563eb 0%,#93c5fd 100%); }
.ipo-process__step { position:relative; display:flex; align-items:flex-start; min-height:48px; margin:0 0 1rem; opacity:1; transform:none; }.ipo-process__step:last-child { margin-bottom:0; }.ipo-process__node { position:relative; z-index:1; flex:0 0 48px; width:48px; height:48px; display:flex; align-items:center; justify-content:center; margin-right:1rem; border-radius:50%; background:#2563eb; color:#fff; font-size:1rem; font-weight:800; line-height:1; }.ipo-process__step article { flex:1 1 auto; min-width:0; padding:1rem 1.1rem; border:1px solid #e2e8f0; border-radius:16px; background:#fff; box-shadow:0 4px 12px rgba(15,23,42,.03); text-align:left; }.ipo-process__step article > span { display:block; color:#2563eb; font-size:.85rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }.ipo-process__step article p { margin:.42rem 0 0; color:#0f172a; font-size:1.1rem; line-height:1.6; }.ipo-process__step article em { color:#475569; font-style:normal; }
.ipo-process.is-pending .ipo-process__step { opacity:0; transform:translateY(18px); }.ipo-process.is-visible .ipo-process__step { animation:ipo-process-entry 480ms cubic-bezier(.22,.8,.32,1) both; }.ipo-process.is-visible .ipo-process__step:nth-child(2){animation-delay:90ms}.ipo-process.is-visible .ipo-process__step:nth-child(3){animation-delay:180ms}.ipo-process.is-visible .ipo-process__step:nth-child(4){animation-delay:270ms}.ipo-process.is-visible .ipo-process__step:nth-child(5){animation-delay:360ms}@keyframes ipo-process-entry{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media (max-width:360px) { .ipo-process__container { padding:0 12px; }.ipo-process__canvas { padding:24px 16px; border-radius:16px; }.ipo-process__list::before { left:14px; top:16px; bottom:16px; width:3px; }.ipo-process__node { flex-basis:30px; width:30px; height:30px; margin-right:.7rem; font-size:.78rem; }.ipo-process__step article { padding:.75rem .8rem; }.ipo-process__step article p { font-size:.85rem; } }
@media (min-width:361px) and (max-width:480px) { .ipo-process__container { padding:0 16px; }.ipo-process__canvas { padding:28px 20px; border-radius:18px; }.ipo-process__list::before { left:20px; }.ipo-process__node { flex-basis:44px; width:44px; height:44px; margin-right:.85rem; }.ipo-process__step article p { font-size:.9rem; } }
@media (min-width:481px) and (max-width:767px) { .ipo-process__canvas { padding:32px 24px; border-radius:20px; }.ipo-process__list::before { left:22px; }.ipo-process__node { flex-basis:48px; width:48px; height:48px; }.ipo-process__step article p { font-size:.95rem; } }
@media (min-width:768px) and (max-width:1023px) { .ipo-process__canvas { padding:40px 32px; border-radius:20px; }.ipo-process__list::before { left:15px; }.ipo-process__node { flex-basis:34px; width:34px; height:34px; margin-right:1.1rem; font-size:.85rem; }.ipo-process__step article p { font-size:1rem; } }
@media (min-width:1024px) and (max-width:1279px) { .ipo-process__canvas { padding:48px 40px; }.ipo-process__list::before { left:18px; }.ipo-process__node { flex-basis:40px; width:40px; height:40px; margin-right:1.25rem; }.ipo-process__step article p { font-size:1.05rem; } }
@media (min-width:1280px) { .ipo-process__canvas { padding:56px 48px; }.ipo-process__list::before { left:22px; }.ipo-process__node { flex-basis:48px; width:48px; height:48px; margin-right:1.35rem; }.ipo-process__step article p { font-size:1.1rem; } }
@media (prefers-reduced-motion:reduce) { .ipo-process.is-visible .ipo-process__step { animation:none; } }

/* IPO Phase 04 — FAQ */
.ipo-faq { padding:0 0 clamp(3rem,6vw,5rem); background:#fff; color:#0f172a; }.ipo-faq__container { max-width:960px; margin:0 auto; padding:72px 24px; }.ipo-faq__header { margin:0 0 2rem; text-align:center; }.ipo-faq__header h2 { margin:0; font-size:clamp(1.5rem,3vw,2.2rem); letter-spacing:-.025em; }.ipo-faq__header p { max-width:720px; margin:.8rem auto 0; color:#475569; font-size:1rem; line-height:1.65; }
.ipo-faq__item { margin:0 0 16px; border:1px solid #e2e8f0; border-radius:16px; background:#fff; overflow:hidden; transition:border-color .2s ease,box-shadow .2s ease; }.ipo-faq__item:hover,.ipo-faq__item.is-open { border-color:#2563eb; box-shadow:0 4px 14px rgba(37,99,235,.06); }.ipo-faq__item h3 { margin:0; }.ipo-faq__trigger { width:100%; min-height:58px; display:flex; align-items:center; justify-content:space-between; padding:1.1rem 1.2rem; border:0; background:#fff; color:#0f172a; cursor:pointer; font:inherit; font-size:1.125rem; font-weight:700; line-height:1.4; text-align:left; -webkit-appearance:none; -webkit-tap-highlight-color:transparent; }.ipo-faq__trigger span { min-width:0; }.ipo-faq__trigger svg { flex:0 0 24px; margin-left:1rem; color:#2563eb; transition:transform .3s cubic-bezier(.4,0,.2,1); }.ipo-faq__trigger[aria-expanded="true"] svg { transform:rotate(180deg); }.ipo-faq__trigger:focus-visible { outline:3px solid #93c5fd; outline-offset:-3px; }.ipo-faq__answer { max-height:0; overflow:hidden; padding:0 1.2rem; color:#334155; font-size:1.025rem; line-height:1.7; transition:max-height .35s ease,padding .35s ease; }.ipo-faq__answer p { margin:0 0 .85rem; }.ipo-faq__answer p:last-child { margin-bottom:0; }.ipo-faq__item.is-open .ipo-faq__answer { padding-top:0; padding-bottom:1.2rem; }
@media (max-width:360px) { .ipo-faq__container { padding:32px 12px; }.ipo-faq__trigger { min-height:50px; padding:.85rem .8rem; font-size:.9rem; }.ipo-faq__trigger svg { flex-basis:20px; width:20px; height:20px; margin-left:.6rem; }.ipo-faq__answer { padding-right:.8rem; padding-left:.8rem; font-size:.825rem; }.ipo-faq__item.is-open .ipo-faq__answer { padding-bottom:.85rem; } }
@media (min-width:361px) and (max-width:480px) { .ipo-faq__container { padding:40px 16px; }.ipo-faq__trigger { font-size:.95rem; }.ipo-faq__answer { font-size:.875rem; } }
@media (min-width:481px) and (max-width:767px) { .ipo-faq__container { max-width:600px; padding:48px 20px; }.ipo-faq__trigger { font-size:1rem; }.ipo-faq__answer { font-size:.925rem; } }
@media (min-width:768px) and (max-width:1023px) { .ipo-faq__container { max-width:780px; padding:56px 24px; }.ipo-faq__trigger { font-size:1.05rem; }.ipo-faq__answer { font-size:.95rem; } }
@media (min-width:1024px) and (max-width:1279px) { .ipo-faq__container { max-width:880px; padding:64px 24px; }.ipo-faq__trigger { font-size:1.1rem; }.ipo-faq__answer { font-size:1rem; } }
@media (min-width:1280px) { .ipo-faq__container { max-width:960px; padding:72px 24px; } }
@media (prefers-reduced-motion:reduce) { .ipo-faq__item,.ipo-faq__trigger svg,.ipo-faq__answer { transition:none; } }

/* Phase corrections */
@media (min-width:1024px) { .ipo-card__badges { flex-direction:row; align-items:center; justify-content:flex-end; white-space:nowrap; }.ipo-card__badges .ipo-type-badge,.ipo-card__badges .ipo-status { margin-top:0; margin-bottom:0; } }
.ipo-process__list { --ipo-node-size:48px; }.ipo-process__list::before { content:none; }.ipo-process__step:not(:last-child)::after { content:""; position:absolute; z-index:0; top:calc(var(--ipo-node-size) / 2); bottom:-1rem; left:calc((var(--ipo-node-size) / 2) - 2px); width:4px; border-radius:4px; background:linear-gradient(180deg,#2563eb 0%,#93c5fd 100%); }
.ipo-faq__header { text-align:left; }.ipo-faq__header p { margin-right:0; margin-left:0; }
@media (max-width:360px) { .ipo-process__list { --ipo-node-size:30px; } }
@media (min-width:361px) and (max-width:480px) { .ipo-process__list { --ipo-node-size:44px; } }
@media (min-width:768px) and (max-width:1023px) { .ipo-process__list { --ipo-node-size:34px; } }
@media (min-width:1024px) and (max-width:1279px) { .ipo-process__list { --ipo-node-size:40px; } }
