/* ==========================================================================
   Components — Harbour (light) system
   ========================================================================== */

/* partner wall */
.partners{display:grid;gap:24px}
.p-row{display:grid;gap:10px}
.p-row h3{display:flex;align-items:center;gap:12px;font:700 12.5px var(--fb);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.p-row h3::after{content:"";flex:1;height:1px;background:var(--line)}
.p-logos{display:grid;gap:12px}
.p-row.headline .p-logos{grid-template-columns:1fr}
.p-row.gold .p-logos{grid-template-columns:repeat(3,1fr)}
.p-row.silver .p-logos{grid-template-columns:repeat(5,1fr)}
.p-row.support .p-logos{grid-template-columns:repeat(6,1fr)}
@media (max-width:900px){.p-row.gold .p-logos{grid-template-columns:1fr 1fr}.p-row.silver .p-logos,.p-row.support .p-logos{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.p-row.gold .p-logos{grid-template-columns:1fr}.p-row.silver .p-logos,.p-row.support .p-logos{grid-template-columns:1fr 1fr}}
.logo-slot{position:relative;display:grid;place-items:center;gap:4px;min-height:88px;padding:16px;border-radius:10px;text-align:center;text-decoration:none;color:var(--muted);background:#fff;border:1px dashed var(--line-2);transition:border-color .2s,background .2s}
.logo-slot:hover{border-color:var(--sea);background:var(--sea-tint)}
.logo-slot img{max-height:52px;max-width:80%;object-fit:contain;filter:grayscale(1);opacity:.75}
.logo-slot b{font:600 15px var(--fd);color:var(--ink)}
.logo-slot span{font-size:13px}
.p-row.headline .logo-slot{min-height:132px;border:2px dashed var(--navy)}
.p-row.headline .logo-slot b{font-size:20px}
.p-row.gold .logo-slot{min-height:108px}
.p-row.support .logo-slot{min-height:72px;padding:10px}

/* "why attend" feature list with photo */
.features{display:grid;gap:0;border-top:1px solid var(--line)}
.feature{display:grid;grid-template-columns:46px 1fr;gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}
.feature .ico{width:46px;height:46px;border-radius:10px;display:grid;place-items:center;background:var(--sea-tint);color:var(--sea-2)}
.feature .ico svg{width:23px;height:23px}
.feature.m .ico{background:var(--orange-tint);color:var(--orange-2)}
.feature h3{font-size:19px;margin:2px 0 4px}
.feature p{margin:0;color:var(--ink-2);font-size:15.5px}

/* sponsorship */
.tiers{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.tiers .span-2{grid-column:span 2;grid-row:span 2}
.tiers .tier.span-2 .price{font-size:64px}
@media (max-width:1080px){.tiers{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.tiers{grid-template-columns:1fr}.tiers .span-2{grid-column:auto;grid-row:auto}}
.items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.item{position:relative;display:grid;gap:6px;padding:20px;border-radius:12px;border:1px solid var(--line);background:#fff;color:var(--ink);text-decoration:none;transition:border-color .2s,box-shadow .2s}
.item:hover{border-color:var(--sea);box-shadow:var(--shadow)}
.item b{font:600 17px var(--fd)}
.item span{font-size:14.5px;color:var(--muted)}
.item .item-p{font:700 26px var(--fd);color:var(--navy)}
.item .item-p small{font:500 13px var(--fb);color:var(--muted)}
.item em{position:absolute;right:14px;top:16px;font-style:normal;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:var(--mist);color:var(--ink-2)}
@media (max-width:900px){.items{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.items{grid-template-columns:1fr}}
.aud{display:grid;gap:18px}
.aud-row{display:grid;grid-template-columns:210px 1fr 56px;gap:16px;align-items:center;font-size:15.5px}
.aud-row b{font:700 22px var(--fd);text-align:right}
.aud-bar{height:10px;border-radius:10px;background:var(--line);overflow:hidden}
.aud-bar i{display:block;height:100%;width:0;border-radius:10px;transition:width 1.4s var(--ease) .2s}
.aud.in .aud-bar i{width:var(--w)}
.aud-bar .c{background:var(--sea)}.aud-bar .m{background:var(--orange)}.aud-bar .g{background:var(--navy)}.aud-bar .v{background:#8FB6CC}
@media (max-width:560px){.aud-row{grid-template-columns:1fr 50px}.aud-row .aud-bar{grid-column:1/-1;grid-row:2}}
.placement{padding:clamp(12px,2vw,20px);border-radius:var(--r-lg);background:#fff;border:1px solid var(--line)}
.placement svg{width:100%;height:auto}
.hot{cursor:help;outline:none}
.hot circle{fill:var(--orange);stroke:#fff;stroke-width:3}
.hot text{fill:#fff;font:700 16px var(--fb);text-anchor:middle;pointer-events:none}
.hot:hover circle,.hot:focus circle{fill:var(--navy)}
.matrix td:not(:first-child),.matrix th:not(:first-child){text-align:center}
.sz{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap}
.sz.xl{background:var(--navy);color:#fff}.sz.l{background:var(--sea-tint);color:var(--sea-2)}.sz.m{background:var(--mist);color:var(--ink-2)}.sz.s{background:#fff;border:1px solid var(--line);color:var(--muted)}
.floor svg{width:100%;height:auto}
.floor .st{fill:#fff;stroke:#9AA6AE;stroke-width:1.2}
.floor .st.gd{stroke:var(--navy);stroke-width:1.8}
.floor .st.hl{fill:#FBE3D6;stroke:var(--orange);stroke-width:2}
.floor .st.ex{stroke-dasharray:3 3}
.floor text{fill:var(--ink);font:600 11.5px var(--fb);text-anchor:middle;pointer-events:none}
.floor .zone{fill:#E8EFEE;stroke:#9CC3C1;stroke-dasharray:4 5}
.floor .zt{fill:var(--sea-2);font-weight:500}
.steps .card .num{position:static;display:inline-grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--navy);color:#fff;font:700 16px var(--fd)}

/* call for papers */
.cfp-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:32px;max-width:860px;border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.cfp-meta div{padding:16px 18px}
.cfp-meta div+div{border-left:1px solid var(--line)}
.cfp-meta small{display:block;font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.cfp-meta b{font:700 20px/1.3 var(--fd);color:var(--navy)}
@media (max-width:640px){.cfp-meta{grid-template-columns:1fr 1fr}.cfp-meta div:nth-child(3){border-left:0}.cfp-meta div:nth-child(n+3){border-top:1px solid var(--line)}}
.acc{display:grid;gap:10px}
.acc details{border-radius:12px;background:#fff;border:1px solid var(--line)}
.acc details[open]{border-color:var(--line-2);box-shadow:var(--shadow-sm)}
.acc summary{display:flex;align-items:center;gap:16px;padding:18px 22px;cursor:pointer;list-style:none;font:600 clamp(18px,1.8vw,22px)/1.3 var(--fd)}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";margin-left:auto;font:400 24px var(--fb);transition:transform .25s}
.acc details[open] summary::after{transform:rotate(45deg)}
.acc .tn{font:700 13px var(--fb);color:var(--sea);min-width:26px}
.acc-body{padding:0 22px 22px 64px}
.acc-body ul{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 28px;color:var(--ink-2)}
.acc-body li{display:flex;gap:10px}.acc-body li::before{content:"";flex:none;width:6px;height:6px;margin-top:9px;border-radius:50%;background:var(--sea)}
@media (max-width:700px){.acc-body{padding-left:22px}.acc-body ul{grid-template-columns:1fr}}

/* programme */
.legend{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:26px;font-size:14px;color:var(--ink-2)}
.lg{display:inline-flex;align-items:center;gap:8px}
.lg::before{content:"";width:12px;height:12px;border-radius:3px}
.lg.pl::before{background:var(--navy)}.lg.tr::before{background:var(--sea)}.lg.in::before{background:var(--orange)}.lg.so::before{background:var(--gold)}.lg.br::before{background:var(--line-2)}
.days{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:14px;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x mandatory}
.day{display:flex;flex-direction:column;gap:8px;scroll-snap-align:start}
.day header{padding:16px 18px;border-radius:12px;background:var(--navy);color:#fff}
.day header small{display:block;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#A8DCDA}
.day header b{display:block;font:700 26px/1.15 var(--fd)}
.day header span{font-size:14px;color:var(--on-dark-2)}
.slot{position:relative;display:grid;gap:2px;padding:12px 14px 12px 18px;border-radius:10px;background:#fff;border:1px solid var(--line)}
.slot::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:4px;border-radius:0 4px 4px 0}
.slot time{font-size:13px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.slot b{font:600 15.5px/1.35 var(--fd);color:var(--ink)}
.slot span{font-size:13.5px;color:var(--muted);line-height:1.4}
.slot.pl::before{background:var(--navy)}.slot.tr::before{background:var(--sea)}.slot.in::before{background:var(--orange)}.slot.so::before{background:var(--gold)}.slot.br{background:var(--mist);border-color:transparent}.slot.br::before{background:var(--line-2)}
.slot.tall{min-height:110px;align-content:start}

/* about */
.compare{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.cmp-head,.cmp-row{display:grid;grid-template-columns:150px 1fr 1fr}
.cmp-head>*,.cmp-row>*{padding:16px 18px;margin:0}
.cmp-head{background:var(--mist)}
.cmp-head b{font:700 17px var(--fd)}
.cmp-row{border-top:1px solid var(--line)}
.cmp-row span{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--sea-2)}
.cmp-row p:nth-child(2){color:var(--muted)}
.cmp-row p:nth-child(3){color:var(--ink);font-weight:500}
@media (max-width:700px){.cmp-head,.cmp-row{grid-template-columns:1fr 1fr}.cmp-head span,.cmp-row span{grid-column:1/-1;padding-bottom:0}}

/* venue map + misc */
.mapcard svg{width:100%;height:auto;border-radius:12px;border:1px solid var(--line)}
.mapcard .mt{fill:#4F7F9A;font:italic 500 12px var(--fb)}
.pin circle{stroke:#fff;stroke-width:2.5}
.pin text{fill:var(--ink);font:600 12.5px var(--fb);paint-order:stroke;stroke:#EEF0EC;stroke-width:4px}
.pin.v circle{fill:var(--orange)}.pin.c circle{fill:var(--navy)}.pin.h circle{fill:var(--sea)}.pin.e circle{fill:var(--gold)}.pin.a circle{fill:#5E6469}
.contact-form{display:grid;gap:18px}
.contact-card{text-decoration:none;display:block}
.contact-card h3{font-size:18px;word-break:break-word}
.nf{min-height:60vh;display:grid;align-items:center}

/* world map */
.worldmap{position:relative;margin:0}
.worldmap svg{width:100%;height:auto}
.worldmap .land{fill:#DCE3EA}
.navy .worldmap .land,.dark .worldmap .land{fill:rgba(255,255,255,.14)}
.worldmap .route{fill:none;stroke:var(--orange);stroke-width:1.3;stroke-linecap:round;opacity:.7;stroke-dasharray:1;stroke-dashoffset:1}
.worldmap.in .route{animation:route 2.4s var(--ease) forwards;animation-delay:calc(var(--i,0) * 60ms)}
@keyframes route{to{stroke-dashoffset:0}}
.worldmap .city{fill:var(--navy)}
.navy .worldmap .city,.dark .worldmap .city{fill:#fff}
.worldmap .abz{fill:var(--orange);stroke:#fff;stroke-width:2}
.worldmap .abz-ring{fill:none;stroke:var(--orange);stroke-width:1.5;transform-box:fill-box;transform-origin:center;animation:ring 2.4s ease-out infinite}
@keyframes ring{from{transform:scale(1);opacity:.9}to{transform:scale(3.2);opacity:0}}
.worldmap .abz-label{font:700 13px var(--fb);fill:var(--navy)}
.navy .worldmap .abz-label{fill:#fff}

/* journey (registration steps) */
.journey{display:grid;grid-template-columns:repeat(5,1fr);gap:0;counter-reset:j}
.jstep{position:relative;padding:22px 18px 0 0}
.jstep::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--line)}
.jstep .jn{display:inline-grid;place-items:center;width:34px;height:34px;margin-top:-39px;border-radius:50%;background:var(--navy);color:#fff;font:700 15px var(--fd);position:relative}
.jstep h3{font-size:18px;margin:14px 0 6px}
.jstep p{margin:0 0 10px;color:var(--ink-2);font-size:15px}
.jstep .jmeta{display:grid;gap:4px;font-size:14px;color:var(--muted)}
.jstep .jmeta b{color:var(--ink);font-weight:600}
.jstep .jmeta .btn{justify-self:start;margin-top:8px}
@media (max-width:980px){.journey{grid-template-columns:1fr 1fr;row-gap:30px}}
@media (max-width:560px){.journey{grid-template-columns:1fr}}

/* keynotes */
.speakers{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.spk{position:relative;display:flex;flex-direction:column;gap:6px;padding:20px;border-radius:var(--r-lg);border:1px dashed var(--line-2);background:#fff;min-height:220px;justify-content:flex-end}
.dark .spk,.navy .spk{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.3)}
.spk svg.sil{display:none}
.spk b{font:700 19px/1.25 var(--fd)}
.spk span{font-size:14.5px;color:var(--muted)}
.dark .spk span,.navy .spk span{color:var(--on-dark-2)}
.spk .q{position:absolute;top:16px;left:20px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border-radius:999px;background:var(--orange-tint);color:var(--orange-2)}
@media (max-width:900px){.speakers{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* brand page */
.emblem-stage{display:grid;place-items:center;aspect-ratio:1;max-width:420px;width:100%;margin-inline:auto;border-radius:var(--r-lg);background:var(--mist);border:1px solid var(--line)}
.emblem-anim{width:58%}
.emblem-anim .e1,.emblem-anim .e2,.emblem-anim .e3{stroke-dasharray:1;stroke-dashoffset:1}
.emblem-stage.in .e1{animation:draw 1s var(--ease) .2s forwards}
.emblem-stage.in .e2{animation:draw 1s var(--ease) .6s forwards}
.emblem-stage.in .e3{animation:draw 1.2s var(--ease) 1s forwards}
.emblem-anim .e4{transform-box:fill-box;transform-origin:center;transform:scale(0)}
.emblem-stage.in .e4{animation:pop2 .5s var(--ease) 1.8s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes pop2{to{transform:scale(1)}}
.legend-row{display:flex;gap:14px;align-items:center}
.legend-row i{flex:none;width:40px;height:40px;border-radius:8px}
.legend-row b{display:block;font:600 17px var(--fd)}
.legend-row span{font-size:15px;color:var(--muted)}
.sw-c{background:#3FB8B5}.sw-m{background:#F06A3C}.sw-w{background:#fff;border:1px solid var(--line-2)}.sw-g{background:var(--navy)}
.swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.swatch{display:grid;gap:3px;padding:0 0 14px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;text-align:left;cursor:copy;color:inherit}
.swatch i{display:block;height:110px;margin-bottom:10px}
.swatch b{padding:0 14px;font:600 15px var(--fd)}
.swatch code{padding:0 14px;font-size:13px;color:var(--muted)}
.s-ink{background:var(--ink)}.s-sea{background:var(--sea)}.s-signal{background:var(--orange)}.s-glass{background:#3FB8B5}.s-granite{background:#8C97A3}.s-bone{background:var(--sand)}.s-paper{background:#fff}.s-steel{background:var(--mist)}
@media (max-width:760px){.swatches{grid-template-columns:repeat(2,minmax(0,1fr))}}
.type-card small{font-size:13px;color:var(--muted);font-weight:600}
.tbig{font-size:110px;line-height:1;margin:8px 0;color:var(--navy)}
.td{font-family:var(--fd);font-weight:700}.ts{font-family:var(--fd);font-weight:500}.tb{font-family:var(--fb);font-weight:400}
.apps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:end}
@media (max-width:980px){.apps{grid-template-columns:repeat(2,minmax(0,1fr))}}
.app{display:grid;gap:10px;justify-items:center}
.app-cap{font-size:13px;font-weight:600;color:var(--muted)}
.bm-strap{width:70px;height:56px;border-left:12px solid var(--sea);border-right:12px solid var(--sea)}
.bm-card{width:190px;overflow:hidden;border-radius:10px;background:#fff;color:var(--ink);text-align:center;box-shadow:0 20px 40px -20px rgba(0,0,0,.6)}
.bm-top{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;background:var(--navy);color:#fff}
.bm-top img{width:24px}.bm-top b{font:800 17px var(--fd)}.bm-top span{font-size:12px;opacity:.75}
.bm-name{font:700 20px var(--fd);margin-top:16px}.bm-org{font-size:12px;color:var(--muted)}
.bm-role{margin:12px auto 0;display:inline-block;padding:4px 10px;border-radius:999px;background:var(--orange);color:#fff;font:700 10px var(--fb);letter-spacing:.12em}
.bm-partner{margin:14px;padding:8px;border-radius:6px;background:var(--mist);font:600 10px var(--fb);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.pm{position:relative;width:190px;aspect-ratio:1/1.414;background:#fff;padding:12px;display:flex;flex-direction:column;gap:8px;overflow:hidden;border-radius:4px;box-shadow:0 20px 40px -20px rgba(0,0,0,.6)}
.pm::before{content:"";position:absolute;inset:0 0 auto;height:62px;background:var(--navy)}
.pm-head{position:relative;display:flex;gap:6px;align-items:center;color:#fff;font:600 8.5px var(--fb)}.pm-head img{width:16px}
.pm-title{position:relative;color:#fff;font:700 11.5px/1.2 var(--fd);margin-bottom:12px}
.pm-cols{flex:1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.pm-cols i{background:repeating-linear-gradient(180deg,#E3E7EC 0 3px,transparent 3px 8px)}
.pm-cols i:nth-child(2){background:linear-gradient(#CFE7EA 0 30%,transparent 30%),repeating-linear-gradient(180deg,#E3E7EC 0 3px,transparent 3px 8px)}
.slm{position:relative;width:100%;max-width:260px;aspect-ratio:16/9;overflow:hidden;border-radius:6px;background:#fff;padding:14px;display:flex;flex-direction:column;box-shadow:0 20px 40px -20px rgba(0,0,0,.6)}
.sm-beam{position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--orange)}
.slm b{position:relative;font:700 8.5px var(--fb);letter-spacing:.1em;color:var(--sea);text-transform:uppercase}
.sm-title{position:relative;font:700 19px/1.1 var(--fd);margin-top:6px;color:var(--navy)}
.sm-foot{margin-top:auto;display:flex;gap:6px;align-items:center;font-size:8px;color:var(--muted)}.sm-foot img{width:12px}
.cm{width:100%;max-width:260px;aspect-ratio:1.414/1;background:#fff;color:var(--ink);text-align:center;padding:16px;display:flex;flex-direction:column;align-items:center;gap:4px;border-radius:4px;box-shadow:0 20px 40px -20px rgba(0,0,0,.6),inset 0 0 0 6px #fff,inset 0 0 0 7px var(--line-2)}
.cm img{width:22px}.cm small{font:700 7.5px var(--fb);letter-spacing:.16em;text-transform:uppercase;color:var(--sea)}
.cm b{font:700 17px var(--fd)}.cm span{font-size:8.5px;color:var(--muted);line-height:1.4}
.cm-sig{display:flex;gap:20px;margin-top:auto}.cm-sig i{width:60px;border-top:1px solid var(--line-2)}
button.slot{border:0;text-align:left;cursor:pointer;width:100%;font:inherit}
.aurora-bar{display:none}
.cta-contacts{display:grid;gap:4px;padding:22px;border-radius:12px;background:rgba(255,255,255,.07);border:1px solid var(--line-d)}
.cta-contacts p{margin:0 0 10px;font-size:15px;color:var(--on-dark-2)}
.cta-contacts b{color:#fff}
.cta-band .link{color:#9FE0DE}
.s-text{background:#1C2329}.s-granite{background:#5E6469}.s-line{background:#E3E1DC}.s-ink{background:var(--navy)}
