/* Naël Andrianirainy — portfolio responsive */
:root{--bg:#0b1020;--bg-soft:#10172b;--panel:#121b31;--text:#f5f7ff;--muted:#a1acc4;--line:rgba(168,185,224,.15);--blue:#6d8cff;--purple:#b078ff;--cyan:#64d9e8;--font-body:"DM Sans",sans-serif;--font-heading:"Space Grotesk",sans-serif;--max:1160px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.7;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(ellipse at 80% 8%,rgba(80,76,200,.12),transparent 35%),radial-gradient(ellipse at 4% 45%,rgba(47,113,185,.08),transparent 34%)}a{color:inherit;text-decoration:none}button{font:inherit}.container{width:min(var(--max),calc(100% - 48px));margin-inline:auto}.section{padding:112px 0}.site-header{position:sticky;top:0;z-index:20;background:rgba(11,16,32,.83);backdrop-filter:blur(18px);border-bottom:1px solid rgba(255,255,255,.06)}.nav{height:76px;display:flex;align-items:center;justify-content:space-between}.brand{display:inline-flex;align-items:center;gap:10px;font:700 20px var(--font-heading);letter-spacing:-.6px}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff;font-size:18px}.brand-dot{color:var(--purple)}.nav-links{display:flex;align-items:center;gap:32px;color:var(--muted);font-size:13px;font-weight:600}.nav-links a{transition:color .2s}.nav-links a:hover{color:var(--text)}.nav-links .nav-contact{padding:10px 15px;border:1px solid var(--line);border-radius:10px;color:var(--text)}.nav-contact span{color:var(--cyan);margin-left:5px}.menu-toggle{display:none;background:none;border:0;color:var(--text)}.skip-link{position:absolute;top:-100px;left:12px;background:white;color:#111;padding:10px;z-index:100}.skip-link:focus{top:12px}.hero{min-height:690px;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;position:relative;padding-top:80px;padding-bottom:120px}.hero-copy{position:relative;z-index:2}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:#aab8dd;margin:0 0 22px;text-transform:uppercase}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#68e0a2;box-shadow:0 0 12px #68e0a2;margin-right:8px}.hero h1,.section-heading h2,.contact-panel h2{font:600 clamp(38px,5.3vw,66px)/1.1 var(--font-heading);letter-spacing:-2.8px;margin:0}.gradient-text{background:linear-gradient(100deg,#82a5ff 0%,#a48bff 52%,#e2a5f5 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.hero-role{font-size:18px;font-weight:600;margin:24px 0 12px}.role-divider{color:var(--purple);margin:0 8px}.hero-description{color:var(--muted);max-width:500px;font-size:15px;line-height:1.9}.hero-actions,.contact-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.button{display:inline-flex;align-items:center;justify-content:center;gap:13px;padding:13px 19px;border-radius:11px;font-size:13px;font-weight:700;transition:transform .2s,border-color .2s,filter .2s}.button:hover{transform:translateY(-2px)}.button-primary{background:linear-gradient(105deg,#6389ff,#9568ed);box-shadow:0 8px 26px rgba(107,120,255,.2);color:white}.button-primary:hover{filter:brightness(1.1)}.button-secondary{border:1px solid var(--line);background:rgba(255,255,255,.025)}.button-secondary:hover{border-color:rgba(146,160,255,.55)}.hero-meta{display:flex;flex-wrap:wrap;gap:20px;margin-top:36px;color:#8793ae;font-size:12px}.hero-meta span{display:flex;align-items:center;gap:8px}.hero-meta svg{width:15px;height:15px;fill:none;stroke:var(--cyan);stroke-width:1.5}.hero-art{min-height:480px;display:grid;place-items:center;position:relative;isolation:isolate}.art-glow{position:absolute;width:320px;height:320px;border-radius:50%;background:linear-gradient(135deg,rgba(89,113,255,.24),rgba(174,87,238,.18));filter:blur(50px);z-index:-1}.orbit{position:absolute;border:1px solid rgba(131,149,255,.17);border-radius:50%;transform:rotate(-24deg)}.orbit-one{width:420px;height:250px}.orbit-two{width:460px;height:320px;transform:rotate(34deg)}.profile-card{width:min(300px,78%);padding:19px 22px 22px;background:linear-gradient(150deg,rgba(26,37,66,.97),rgba(14,21,41,.97));border:1px solid rgba(163,174,255,.28);border-radius:20px;box-shadow:0 28px 85px rgba(0,0,0,.3);transform:rotate(2deg);z-index:2}.profile-top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:14px}.window-dots{display:flex;gap:5px}.window-dots i{width:6px;height:6px;border-radius:50%;background:#6879a4}.window-dots i:first-child{background:#fa8e9b}.window-dots i:nth-child(2){background:#f4c66d}.window-dots i:nth-child(3){background:#70d8b0}.card-label{font-size:8px;letter-spacing:1.3px;color:#7484a7}.avatar{position:relative;display:grid;place-items:center;width:96px;height:96px;margin:24px auto 15px;border-radius:28px;background:linear-gradient(135deg,#6e8dff,#a873e9);box-shadow:0 12px 35px rgba(116,111,255,.25);font:700 32px var(--font-heading);letter-spacing:-2px}.avatar-spark{position:absolute;right:-8px;top:-8px;font-size:21px;color:#bff6ff}.profile-name{text-align:center;font:600 18px var(--font-heading);margin:0}.profile-title{text-align:center;color:#93a2c2;font-size:11px;margin:4px 0 18px}.profile-line{height:1px;background:var(--line);margin-bottom:13px}.profile-stat{display:flex;justify-content:space-between;gap:10px;font-size:10px;margin:10px 0}.profile-stat span{color:#8190b0}.profile-stat strong{font-weight:600;color:#dbe3ff;text-align:right}.profile-tags{display:flex;gap:6px;margin-top:18px}.profile-tags span,.skill-pills span,.project-tags span,.timeline-tags span{font-size:9px;color:#b6c4e5;background:rgba(124,145,255,.09);border:1px solid rgba(124,145,255,.15);border-radius:6px;padding:4px 8px}.floating-chip{position:absolute;z-index:3;display:flex;align-items:center;gap:10px;padding:12px 14px;background:rgba(20,29,52,.94);border:1px solid rgba(153,170,236,.22);border-radius:13px;box-shadow:0 12px 30px rgba(0,0,0,.22)}.floating-chip b,.floating-chip small{display:block}.floating-chip b{font-size:11px}.floating-chip small{font-size:9px;color:#8998b8;margin-top:2px}.chip-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:rgba(112,143,255,.16);color:#9cb5ff;font:700 12px var(--font-heading)}.chip-code{top:95px;left:0}.chip-data{right:-2px;bottom:82px}.hero-grid{position:absolute;inset:10%;z-index:-2;opacity:.24;background-image:radial-gradient(rgba(140,160,255,.55) .7px,transparent .7px);background-size:16px 16px;mask-image:radial-gradient(ellipse,black,transparent 70%)}.scroll-cue{position:absolute;bottom:35px;left:0;display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:1.4px;text-transform:uppercase;color:#7f8ba6}.scroll-line{width:34px;height:1px;background:linear-gradient(90deg,var(--blue),transparent)}.about-section,.projects-section,.languages-section{background:rgba(255,255,255,.018);border-block:1px solid rgba(255,255,255,.045)}.about-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:100px}.section-heading h2{font-size:clamp(34px,4vw,48px);letter-spacing:-1.8px}.section-heading>p:not(.eyebrow){color:var(--muted);max-width:520px;font-size:14px;margin-top:18px}.about-copy{padding-top:14px}.about-copy p{color:var(--muted);font-size:14px;margin:0 0 17px}.about-copy .lead{color:#e3e9fb;font-size:19px;line-height:1.65}.about-facts{display:flex;gap:38px;border-top:1px solid var(--line);padding-top:23px;margin-top:28px}.about-facts div{display:flex;flex-direction:column}.about-facts strong{font:600 26px var(--font-heading);color:#b4b7ff}.about-facts span{font-size:10px;color:#8c9ab6}.centered{text-align:center;max-width:700px;margin:0 auto 44px}.centered .eyebrow{margin-bottom:17px}.centered>p:not(.eyebrow){margin-inline:auto}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.skill-card{padding:24px 21px 22px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,rgba(23,32,56,.8),rgba(15,22,40,.8));transition:transform .25s,border-color .25s}.skill-card:hover,.project-card:hover{transform:translateY(-5px);border-color:rgba(132,147,255,.4)}.skill-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;font-size:22px;margin-bottom:23px}.icon-purple{background:rgba(173,111,255,.13);color:#c49bff}.icon-blue{background:rgba(100,142,255,.14);color:#8caeff}.icon-cyan{background:rgba(87,212,223,.12);color:#77e4ee}.icon-orange{background:rgba(255,172,104,.12);color:#ffc08d}.skill-card h3,.project-content h3,.timeline-content h3{font:600 17px var(--font-heading);letter-spacing:-.3px;margin:0 0 9px}.skill-card p,.project-content p,.timeline-content p{font-size:12px;color:var(--muted);line-height:1.8;margin:0}.skill-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:19px}.skill-pills span{font-size:9px}.skills-note,.project-disclaimer{font-size:11px;color:#7785a2;margin-top:18px}.projects-section .section-heading{margin-bottom:38px}.projects-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.project-card{overflow:hidden;border:1px solid var(--line);border-radius:17px;background:linear-gradient(150deg,rgba(20,29,51,.9),rgba(13,20,37,.95));transition:transform .25s,border-color .25s}.project-featured{grid-row:span 2}.project-visual{height:215px;position:relative;overflow:hidden;background:linear-gradient(135deg,#1b2850,#24214b)}.project-featured .project-visual{height:290px}.project-visual img{width:100%;height:100%;object-fit:cover;display:block;position:relative;z-index:1;transition:transform .4s}.project-card:hover .project-visual img{transform:scale(1.04)}.hotel-visual{background:radial-gradient(circle at 20% 20%,rgba(108,147,255,.5),transparent 45%),linear-gradient(135deg,#172c4a,#382b60)}.restaurant-visual{background:radial-gradient(circle at 80% 20%,rgba(250,170,107,.25),transparent 40%),linear-gradient(135deg,#35253f,#202d50)}.smmc-visual{background:radial-gradient(circle at 80% 20%,rgba(89,219,219,.2),transparent 40%),linear-gradient(135deg,#163b4b,#20294d)}.image-fallback{display:none;place-content:center;text-align:center;gap:7px;height:100%;padding:24px;background-image:linear-gradient(135deg,rgba(104,140,255,.1),transparent),radial-gradient(rgba(255,255,255,.11) .7px,transparent .7px);background-size:auto,16px 16px}.image-fallback span{font:600 11px var(--font-heading);letter-spacing:2px;color:#a6b5ff}.image-fallback strong{font:600 24px var(--font-heading)}.image-fallback small{color:#a9b6d2;font-size:11px}.project-number{position:absolute;left:17px;top:16px;z-index:2;background:rgba(8,14,29,.65);border:1px solid rgba(255,255,255,.15);padding:5px 9px;border-radius:6px;font-size:9px;letter-spacing:1px}.project-content{padding:23px 24px 25px}.project-type,.timeline-label{font-size:9px;font-weight:700;letter-spacing:1.5px;color:#9c9bff;margin-bottom:10px}.project-content h3{font-size:19px}.project-content p{font-size:12px}.project-tags,.timeline-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:17px}.text-link{display:inline-flex;gap:8px;align-items:center;margin-top:18px;color:#aebaff;font-size:11px;font-weight:700}.text-link span{color:var(--cyan)}.timeline{max-width:850px;margin:42px auto 0}.timeline-item{display:grid;grid-template-columns:70px 18px 1fr;gap:22px;position:relative;padding-bottom:34px}.timeline-item:not(:last-child):before{content:"";position:absolute;top:15px;bottom:-1px;left:99px;width:1px;background:linear-gradient(var(--blue),rgba(128,139,255,.1))}.timeline-date{font:600 14px var(--font-heading);color:#9daaff;padding-top:2px}.timeline-marker{width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid #8797ff;margin-top:7px;z-index:1;box-shadow:0 0 0 5px rgba(117,135,255,.09)}.timeline-content{padding:0 0 0 2px}.timeline-content h3{font-size:19px;margin-bottom:8px}.timeline-content p{max-width:680px;font-size:13px}.languages-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px;align-items:center}.language-list{display:grid;gap:24px}.language-row{display:grid;grid-template-columns:1fr auto;gap:7px 18px;align-items:center}.language-row div:first-child{display:flex;flex-direction:column}.language-row strong{font-size:13px}.language-row span{font-size:10px;color:var(--muted)}.language-row>b{font-size:10px;color:#a7b2d0;font-weight:500;grid-column:2;grid-row:1/3}.language-track{height:4px;background:#222c45;border-radius:8px;overflow:hidden;grid-column:1/2}.language-track i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#668aff,#b27cf7)}.contact-section{padding-top:95px;padding-bottom:100px}.contact-panel{position:relative;overflow:hidden;text-align:center;padding:72px 24px;border:1px solid rgba(145,155,255,.2);border-radius:23px;background:linear-gradient(130deg,rgba(27,37,71,.85),rgba(21,22,51,.92))}.contact-orb{position:absolute;top:-200px;left:50%;transform:translateX(-50%);width:500px;height:350px;background:rgba(111,105,255,.19);filter:blur(80px);pointer-events:none}.contact-panel>*:not(.contact-orb){position:relative}.contact-panel .eyebrow{margin-bottom:18px}.contact-panel h2{font-size:clamp(34px,4.4vw,52px)}.contact-panel>p:not(.eyebrow){max-width:570px;margin:18px auto 0;color:var(--muted);font-size:13px}.contact-actions{justify-content:center;margin-top:27px}.contact-email{font-size:11px;color:#8593b3;margin-top:27px}.footer{border-top:1px solid rgba(255,255,255,.06)}.footer-inner{min-height:84px;display:flex;align-items:center;justify-content:space-between;gap:20px}.footer .brand{font-size:17px}.footer .brand-mark{width:28px;height:28px;font-size:14px}.footer p,.back-top{font-size:10px;color:#8490aa}.back-top:hover{color:var(--text)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .65s ease,transform .65s ease}.reveal.is-visible{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}@media(max-width:900px){.hero{grid-template-columns:1fr 1fr;gap:10px}.hero h1{font-size:clamp(40px,6vw,57px)}.hero-art{transform:scale(.9)}.about-grid,.languages-grid{gap:45px}.skills-grid{grid-template-columns:repeat(2,1fr)}.nav-links{gap:19px}.nav-links a{font-size:12px}}@media(max-width:700px){.container{width:min(100% - 36px,var(--max))}.section{padding:78px 0}.nav{height:68px}.menu-toggle{display:flex;flex-direction:column;gap:5px;padding:10px;cursor:pointer}.menu-toggle span{width:21px;height:2px;background:#e5eaff;border-radius:2px;transition:transform .2s}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(7px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-7px) rotate(-45deg)}.nav-links{display:none;position:absolute;top:67px;left:0;right:0;padding:18px 24px 24px;background:rgba(11,16,32,.98);border-bottom:1px solid var(--line);align-items:stretch;flex-direction:column;gap:0}.nav-links.is-open{display:flex}.nav-links a{padding:12px 0;font-size:14px}.nav-links .nav-contact{padding:12px;margin-top:7px;text-align:center}.hero{display:flex;flex-direction:column;align-items:stretch;gap:0;padding-top:70px;padding-bottom:90px}.hero h1{font-size:clamp(39px,10vw,58px);letter-spacing:-2px}.hero-role{font-size:15px}.hero-description{font-size:14px}.hero-art{width:100%;min-height:430px;transform:none;margin-top:12px}.profile-card{width:270px}.orbit-one{width:340px;height:220px}.orbit-two{width:360px;height:260px}.chip-code{left:0;top:70px}.chip-data{right:0;bottom:54px}.scroll-cue{bottom:20px}.about-grid,.languages-grid{grid-template-columns:1fr;gap:30px}.about-facts{gap:22px}.about-facts strong{font-size:23px}.about-facts span{font-size:9px}.section-heading h2{font-size:37px;letter-spacing:-1.4px}.centered{margin-bottom:30px}.skills-grid{gap:11px}.skill-card{padding:19px 15px}.skill-icon{margin-bottom:16px}.skill-card h3{font-size:15px}.skill-card p{font-size:11px}.projects-grid{grid-template-columns:1fr}.project-featured{grid-row:auto}.project-featured .project-visual,.project-visual{height:220px}.timeline-item{grid-template-columns:48px 14px 1fr;gap:12px}.timeline-item:not(:last-child):before{left:66px}.timeline-date{font-size:12px}.timeline-content h3{font-size:17px}.timeline-content p{font-size:12px}.language-list{gap:20px}.contact-panel{padding:55px 20px}.contact-panel h2{font-size:36px;letter-spacing:-1.4px}.footer-inner{flex-wrap:wrap;padding:18px 0;min-height:80px}.footer-inner p{order:3;width:100%;margin:0}.back-top{margin-left:auto}}@media(max-width:390px){.hero-actions,.contact-actions{flex-direction:column;align-items:stretch}.button{width:100%}.hero-meta{flex-direction:column;gap:9px}.skills-grid{grid-template-columns:1fr}.skill-card{padding:20px}.hero-art{min-height:390px}.profile-card{width:250px}.floating-chip{padding:9px}.chip-data{right:-5px}}
