/* Additive immersion layer. The original portfolio styling remains in its source HTML. */
[hidden]{display:none!important}.scroll-sequence{position:relative;z-index:12;background:#05070d;isolation:isolate}.scroll-screen{height:100svh;position:sticky;top:0;overflow:hidden;background:#05070d;perspective:1200px}.scene-layer{position:absolute;inset:0;opacity:0;overflow:hidden;will-change:opacity;pointer-events:none}.scene-layer img,.scene-layer video{position:absolute;width:100%;height:100%;inset:0;object-fit:cover;will-change:transform}.scene-layer video{opacity:0}.scene-layer video.decoded{opacity:1}.scene-layer video.decoded+img{opacity:0}.story-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,rgba(2,5,11,.87),transparent 54%,rgba(2,5,11,.4)),radial-gradient(ellipse at center,transparent 48%,rgba(2,5,11,.35));z-index:5}.opening-sequence .story-vignette{background:linear-gradient(0deg,rgba(2,5,11,.5),transparent 35%,rgba(2,5,11,.35))}.story-top{position:absolute;top:26px;left:4vw;right:4vw;display:flex;justify-content:space-between;align-items:center;gap:20px;z-index:9;color:#d8e1f1;font:10px/1.6 'IBM Plex Mono',monospace;letter-spacing:.16em;text-transform:uppercase}.story-top a,.story-top button{color:inherit;font:inherit;background:#070d15a6;border:1px solid #ffffff35;border-radius:30px;padding:10px 17px;cursor:pointer;text-decoration:none;backdrop-filter:blur(10px);letter-spacing:.05em}.story-top a:hover,.story-top button:hover{border-color:var(--orange,#ff8a2b);color:var(--orange,#ff8a2b)}.story-copy{position:absolute;bottom:15vh;left:8vw;max-width:820px;z-index:8;padding-right:30px;pointer-events:none}.story-label{font:11px/1.6 'IBM Plex Mono',monospace;letter-spacing:.2em;text-transform:uppercase;color:#ffce9a;margin:0 0 20px;text-shadow:0 2px 10px #000}.story-copy h1,.story-copy h2{font:400 clamp(36px,5.3vw,76px)/1.06 Fraunces,Georgia,serif;letter-spacing:-.025em;color:#fbf5ec;margin:0;text-wrap:balance;text-shadow:0 3px 30px #0008}.story-copy p:not(.story-label){font:400 clamp(14px,1.35vw,18px)/1.65 Inter,sans-serif;color:#d0d9e7;max-width:48ch;margin:24px 0 0;text-shadow:0 2px 18px #000}.opening-sequence .story-copy{bottom:13vh;left:0;right:0;text-align:center;max-width:none;padding:0 20px}.opening-sequence .story-copy h2,.opening-sequence .story-copy>p:not(.story-label){display:none}.opening-sequence .story-label{font-size:10px;letter-spacing:.23em;color:#f0e4d6}.story-bottom{position:absolute;bottom:27px;left:4vw;right:4vw;display:flex;align-items:center;gap:25px;z-index:9;color:#c0cee4;font:10px/1.5 'IBM Plex Mono',monospace;letter-spacing:.1em}.story-track{height:1px;background:#ffffff30;flex:1;position:relative}.story-fill{display:block;width:100%;height:1px;background:#ff8a2b;transform:scaleX(0);transform-origin:left;box-shadow:0 0 10px #ff8a2b}.story-steps{display:flex;gap:8px;position:absolute;right:4vw;top:50%;z-index:8;flex-direction:column;transform:translateY(-50%)}.story-steps button{padding:0;background:#ffffff35;width:5px;height:5px;border:0;border-radius:50%;cursor:pointer;position:relative}.story-steps button:before{content:'';position:absolute;inset:-7px}.story-steps button[aria-current=true]{background:#ffb56e;box-shadow:0 0 12px #ff8a2b;transform:scale(1.5)}.story-cue{white-space:nowrap}.story-fallback{position:absolute;top:70px;left:4vw;color:#c3cad5;font:11px Inter,sans-serif;z-index:8}.story-end{position:relative;z-index:15;background:radial-gradient(ellipse at 50% 0,#172134,#05070d 70%);min-height:85vh;padding:100px 8vw;text-align:center;color:#e9ecf4}.story-end .end-kicker{font:11px 'IBM Plex Mono',monospace;color:#ff8a2b;letter-spacing:.2em;text-transform:uppercase}.story-end h2{font:400 clamp(35px,5vw,64px)/1.12 Fraunces,Georgia,serif;max-width:800px;margin:28px auto}.story-end p{font:14px/1.8 Inter,sans-serif;color:#9aa7c2;max-width:58ch;margin:24px auto}.story-end .end-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:18px;margin-top:40px}.story-end .end-actions a{display:inline-block;border:1px solid #ff8a2b70;border-radius:30px;padding:14px 25px;color:#ffce9a;font:11px 'IBM Plex Mono',monospace;text-decoration:none}.story-end .end-actions a:hover{background:#ff8a2b16}.source-list{max-width:800px;margin:40px auto;text-align:left}.source-list a{display:flex;justify-content:space-between;gap:20px;padding:22px 0;border-bottom:1px solid #ffffff24;color:#c8d5eb;font:14px/1.6 Inter,sans-serif;text-decoration:none}.source-list a span{color:#ff8a2b;white-space:nowrap;font:10px 'IBM Plex Mono',monospace;padding-top:5px}.source-list a:hover{color:#ffce9a}.chapter-body{margin:0;background:#05070d;color:#e9ecf4}a:focus-visible,button:focus-visible,[role=link]:focus-visible{outline:2px solid #ffce9a;outline-offset:7px}.chapter-home{border:0;color:#ffce9a}.cinema-return{position:fixed;z-index:60;right:20px;top:18px;display:none;color:#b9c8de!important;border:1px solid #ffffff25!important;background:#08111fc4;backdrop-filter:blur(10px);border-radius:30px;padding:8px 15px;font:10px 'IBM Plex Mono',monospace;text-decoration:none}.original-visible .cinema-return{display:block}#gate{z-index:20}#opening{z-index:20}.card[role=link]{outline-offset:8px}.card .enter{opacity:1!important;transform:none!important}@media(max-width:700px){.story-top{top:18px;left:5vw;right:5vw;gap:12px;font-size:8px;letter-spacing:.06em}.story-top>span{max-width:45%}.story-top a,.story-top button{font-size:9px;padding:9px 12px}.story-copy{left:7vw;right:7vw;bottom:16vh;padding:0}.story-copy h1,.story-copy h2{font-size:clamp(30px,8vw,46px)}.story-copy p:not(.story-label){font-size:13px;margin-top:18px;line-height:1.65}.story-label{font-size:9px;letter-spacing:.12em;margin-bottom:16px}.story-bottom{bottom:23px;left:6vw;right:6vw;font-size:8px;gap:12px}.story-cue{max-width:120px;white-space:normal;text-align:right}.story-steps{right:3vw;gap:12px}.story-end{padding:70px 7vw}.story-end p{font-size:13px}.source-list a{font-size:12px}.cinema-return{font-size:8px;right:12px;top:12px}.story-end .end-actions{flex-direction:column}.story-screen .scene-layer img{object-position:center}.opening-sequence .scene-layer img,.opening-sequence .scene-layer video{object-position:58% center}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.scene-layer{will-change:auto}.scene-layer img,.scene-layer video{transform:none!important}.story-steps button{transform:none!important}}
/* Scene navigation has separate, non-overlapping hit areas. */
.story-steps{gap:0}
.story-steps button{width:24px;height:24px;background:none;box-shadow:none;border-radius:0;transform:none}
.story-steps button:before{content:'';inset:auto;left:10px;top:10px;width:4px;height:4px;border-radius:50%;background:#ffffff50}
.story-steps button[aria-current=true]{background:none;box-shadow:none;transform:none}
.story-steps button[aria-current=true]:before{background:#ffb56e;box-shadow:0 0 10px #ff8a2b;transform:scale(1.5)}

/* Full-resolution Flow colour plates; native-source vector outlines preserve detailed edges. */
.card:has(.flow-diorama-black){mix-blend-mode:screen}
.flow-diorama-masked{-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;mask-mode:alpha}
#campus-bangalore .flow-diorama-masked{-webkit-mask-image:url('assets/isle-bangalore-mask.svg');mask-image:url('assets/isle-bangalore-mask.svg')}
#campus-victoria .flow-diorama-masked{-webkit-mask-image:url('assets/isle-victoria-mask.svg');mask-image:url('assets/isle-victoria-mask.svg')}

/* A compact status label identifies the present workplace without changing the timeline. */
#campus-sfx .campus-kicker{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.45rem .75rem}
.current-workplace-label{display:inline-block;max-width:100%;box-sizing:border-box;padding:.35rem .65rem;border:1px solid #ff8a2b55;border-radius:999px;background:#ff8a2b0d;color:var(--orange,#ff8a2b);font:500 .62rem/1.5 'IBM Plex Mono',monospace;letter-spacing:.12em;text-transform:uppercase;overflow-wrap:anywhere}
@media(max-width:699px){#campus-sfx .campus-kicker{justify-content:flex-start}}

/* Space dissolves into the existing hero, then content arrives without an empty interval. */
#intro{margin-top:-100svh}
#opening.seamless-wait .scroll-screen{position:fixed;inset:0;width:100%;z-index:25}
.seamless-portfolio:has(#opening.seamless-wait) .cinema-return{display:none}
.seamless-portfolio .seamless-opening .scene-layer img,.seamless-portfolio .seamless-opening .scene-layer video,.seamless-portfolio #islandVid{object-fit:var(--cinema-object-fit,cover)!important;object-position:var(--cinema-object-position,50% 50%)!important}
.seamless-portfolio #islandVid{transform:translate(-50%,-50%)!important}
.seamless-portfolio #gl{opacity:var(--hero-arrival,0)}
.seamless-portfolio #heroFx>div:first-child{opacity:var(--hero-arrival,0)}
.seamless-portfolio #heroFx>div:last-child{opacity:calc(.045 * var(--hero-arrival,0))!important}
#intro>.hero-scroll-space{height:140svh!important}
#about{padding-top:10vh!important;padding-bottom:10vh!important}
.constellation-heading{height:54svh!important;min-height:320px}
[data-screen-label="Constellation"]{overflow:clip}
#spine{padding-top:4vh!important}
.story-actions{display:flex;align-items:center;gap:10px}
.story-top .story-explore{color:#ffce9a;border-color:#ff8a2b70}
@media(max-width:700px){.story-actions{gap:6px}.story-top .story-explore{padding:9px 10px}.story-top:has(.story-actions)>span{max-width:30%}.constellation-heading{height:50svh!important;min-height:260px}}

/* Keep all scene targets available on short landscape screens. */
.story-steps{max-height:calc(100svh - 180px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#ffb56e66 transparent}
.story-steps button{flex:0 0 24px}
@media(prefers-reduced-motion:reduce){.campus .card,.campus .connector,.campus .node{transition:none!important}.isle img{animation:none!important;transform:none!important}}

.story-steps button:focus-visible{outline-offset:-2px}
/* Keyboard focus must remain visible before a campus scroll reveal has completed. */
.campus .card[role=link]:focus-visible{opacity:1!important;transform:none!important;transition:none!important}

/* Osmania uses the accepted full-resolution master and native-source vector silhouette. */
#campus-osmania .flow-diorama-masked{-webkit-mask-image:url('assets/isle-osmania-black-mask.svg');mask-image:url('assets/isle-osmania-black-mask.svg')}
