.rh1{position:relative;width:100vw;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;overflow-x:hidden;isolation:isolate;
background:radial-gradient(120% 80% at 50% -4%,#161310 0%,#0a0806 42%,#000 100%);
font-family:'Inter',system-ui,-apple-system,sans-serif;padding:0 0 120px;-webkit-font-smoothing:antialiased}
.rh1 *{box-sizing:border-box}
.rh1 h1,.rh1 h2,.rh1 h3,.rh1 h4,.rh1 p,.rh1 span,.rh1 b,.rh1 button,.rh1 em,.rh1 small,.rh1 li,.rh1 a,.rh1 div{color:#f1ede4;-webkit-text-fill-color:#f1ede4}
.rh1-veil{position:absolute;inset:0;z-index:0;pointer-events:none;background:
radial-gradient(60% 40% at 50% 40%,rgba(233,200,119,.10),transparent 62%)}
.rh1-wrap{position:relative;z-index:2;max-width:1000px;margin:0 auto;padding:0 20px}
.rh1-head{padding:74px 0 8px;text-align:center}
.rh1-kick{display:inline-flex;align-items:center;gap:9px;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.32em;text-transform:uppercase;
color:#e9c877!important;-webkit-text-fill-color:#e9c877!important;font-weight:600;margin-bottom:18px}
.rh1-kick i{width:6px;height:6px;border-radius:50%;background:#e9c877;box-shadow:0 0 12px #e9c877;font-style:normal;animation:rh1blip 2s ease-in-out infinite}
@keyframes rh1blip{50%{opacity:.35}}
.rh1-head h2{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:clamp(33px,7.2vw,60px);line-height:1.03;margin:0 0 14px;color:#fff!important;-webkit-text-fill-color:#fff!important}
.rh1-head h2 em{font-style:italic;color:#e9c877!important;-webkit-text-fill-color:#e9c877!important}
.rh1-head p{max-width:540px;margin:0 auto;font-size:15px;line-height:1.7;color:#b3ab9b!important;-webkit-text-fill-color:#b3ab9b!important}
/* ===== HUD stage ===== */
.rh1-hud{position:relative;margin:26px 0 0;border-radius:20px;overflow:hidden;
background:linear-gradient(180deg,rgba(20,17,12,.6),rgba(0,0,0,.86));border:1px solid rgba(233,200,119,.2);
box-shadow:0 40px 100px -54px rgba(0,0,0,1),inset 0 0 90px rgba(0,0,0,.7)}
.rh1-hud::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:4;opacity:.5;
background:repeating-linear-gradient(0deg,rgba(233,200,119,.04) 0 1px,transparent 1px 3px)}
.rh1-cnr{position:absolute;width:26px;height:26px;z-index:5;border:2px solid rgba(233,200,119,.6);pointer-events:none}
.rh1-cnr.tl{top:12px;left:12px;border-right:0;border-bottom:0}
.rh1-cnr.tr{top:12px;right:12px;border-left:0;border-bottom:0}
.rh1-cnr.bl{bottom:12px;left:12px;border-right:0;border-top:0}
.rh1-cnr.br{bottom:12px;right:12px;border-left:0;border-top:0}
.rh1-stage-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:0}
.rh1-canvaswrap{position:relative;min-height:340px}
.rh1-canvaswrap canvas{display:block;width:100%;height:100%;position:absolute;inset:0}
.rh1-cap{position:absolute;left:0;right:0;bottom:14px;text-align:center;z-index:3;font-family:'JetBrains Mono',monospace;
font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:#8a8272!important;-webkit-text-fill-color:#8a8272!important}
/* readout */
.rh1-read{position:relative;z-index:3;padding:26px 24px;border-left:1px solid rgba(233,200,119,.14);display:flex;flex-direction:column;min-height:340px}
.rh1-status{font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:14px;
color:#8a8272!important;-webkit-text-fill-color:#8a8272!important;display:flex;align-items:center;gap:8px}
.rh1-status .led{width:8px;height:8px;border-radius:50%;background:#e9c877;box-shadow:0 0 8px #e9c877}
.rh1-fig{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.rh1-fig .n{font-family:'Cormorant Garamond',serif;font-size:56px;font-weight:600;line-height:.9;color:#fff!important;-webkit-text-fill-color:#fff!important}
.rh1-fig .u{font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#e9c877!important;-webkit-text-fill-color:#e9c877!important}
.rh1-rtitle{font-size:16px;font-weight:700;color:#fff!important;-webkit-text-fill-color:#fff!important;margin:6px 0 8px}
.rh1-steps{margin:0;padding:0;list-style:none}
.rh1-steps li{position:relative;padding-left:20px;margin:0 0 9px;font-size:13.4px;line-height:1.55;color:#ccc4b4!important;-webkit-text-fill-color:#ccc4b4!important}
.rh1-steps li::before{content:"";position:absolute;left:1px;top:7px;width:7px;height:7px;border-radius:2px;background:#e9c877;box-shadow:0 0 7px rgba(233,200,119,.7)}
.rh1-steps li b{color:#fff!important;-webkit-text-fill-color:#fff!important}
.rh1-steps li .g{color:#a9e08f!important;-webkit-text-fill-color:#a9e08f!important;font-weight:600}
.rh1-steps li .w{color:#f0c86a!important;-webkit-text-fill-color:#f0c86a!important;font-weight:600}
.rh1-tag{display:inline-block;margin-top:auto;align-self:flex-start;padding:5px 12px;border-radius:100px;font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:700;letter-spacing:.06em}
.rh1-tag.good{background:rgba(120,190,120,.16);color:#a9e08f!important;-webkit-text-fill-color:#a9e08f!important}
.rh1-tag.warn{background:rgba(233,200,119,.16);color:#f0d68c!important;-webkit-text-fill-color:#f0d68c!important}
.rh1-tag.neut{background:rgba(200,200,200,.12);color:#cfc8b8!important;-webkit-text-fill-color:#cfc8b8!important}
/* control bar */
.rh1-ctrl{position:relative;z-index:3;padding:16px 16px 18px;border-top:1px solid rgba(233,200,119,.14);background:rgba(255,255,255,.015)}
.rh1-ctrl-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.rh1-prompt{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#8a8272!important;-webkit-text-fill-color:#8a8272!important}
.rh1-meter{display:flex;align-items:center;gap:10px}
.rh1-meter .mt{font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.08em;color:#e9c877!important;-webkit-text-fill-color:#e9c877!important}
.rh1-pips{display:flex;gap:5px}
.rh1-pip{width:16px;height:5px;border-radius:3px;background:rgba(255,255,255,.14);transition:.3s}
.rh1-pip.on{background:linear-gradient(90deg,#f3d792,#e0b458);box-shadow:0 0 8px rgba(233,200,119,.7)}
.rh1-chips{display:flex;flex-wrap:wrap;gap:9px}
.rh1-chip{appearance:none;border:1px solid rgba(233,200,119,.28);background:rgba(233,200,119,.06);cursor:pointer;font-family:'Inter',sans-serif;
font-size:13px;font-weight:600;padding:10px 15px;border-radius:100px;color:#f0dca6!important;-webkit-text-fill-color:#f0dca6!important;transition:.22s;-webkit-tap-highlight-color:transparent;position:relative}
.rh1-chip:hover,.rh1-chip:focus-visible{background:rgba(233,200,119,.16);border-color:rgba(233,200,119,.55);outline:none;transform:translateY(-1px)}
.rh1-chip.on{background:linear-gradient(180deg,#f3d792,#e0b458);color:#1a1405!important;-webkit-text-fill-color:#1a1405!important;border-color:#e9c877}
.rh1-chip.seen::after{content:"✓";position:absolute;top:-6px;right:-4px;width:16px;height:16px;font-size:10px;border-radius:50%;
background:#a9e08f;color:#0c1a0c!important;-webkit-text-fill-color:#0c1a0c!important;display:flex;align-items:center;justify-content:center;font-weight:700}
.rh1-done{margin:12px 0 0;text-align:center;font-family:'JetBrains Mono',monospace;font-size:11.5px;letter-spacing:.1em;color:#a9e08f!important;-webkit-text-fill-color:#a9e08f!important;opacity:0;transition:.5s;height:0;overflow:hidden}
.rh1-done.show{opacity:1;height:auto;margin-top:14px}
/* ===== plain info ===== */
.rh1-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0 0}
.rh1-card{padding:24px 22px;border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.015));border:1px solid rgba(255,255,255,.09)}
.rh1-card .ch{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.rh1-card .ci{width:34px;height:34px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center;background:rgba(233,200,119,.14);border:1px solid rgba(233,200,119,.3)}
.rh1-card .ci svg{width:17px;height:17px;stroke:#e9c877;fill:none;stroke-width:1.8}
.rh1-card h3{margin:0;font-family:'Cormorant Garamond',serif;font-weight:600;font-size:22px;color:#fff!important;-webkit-text-fill-color:#fff!important}
.rh1-card ul{margin:0;padding:0;list-style:none}
.rh1-card li{position:relative;padding:0 0 0 22px;margin:0 0 11px;font-size:13.6px;line-height:1.62;color:#c9c2b3!important;-webkit-text-fill-color:#c9c2b3!important}
.rh1-card li:last-child{margin-bottom:0}
.rh1-card li::before{content:"";position:absolute;left:2px;top:8px;width:7px;height:7px;border-radius:50%;background:#e9c877;box-shadow:0 0 8px rgba(233,200,119,.7)}
.rh1-card li b{color:#fff!important;-webkit-text-fill-color:#fff!important;font-weight:700}
.rh1-cta{margin:34px auto 0;text-align:center;padding:38px 24px;border-radius:18px;
background:radial-gradient(120% 130% at 50% 0%,rgba(233,200,119,.14),rgba(255,255,255,.015));border:1px solid rgba(233,200,119,.24)}
.rh1-cta h3{margin:0 0 8px;font-family:'Cormorant Garamond',serif;font-weight:500;font-size:clamp(24px,4.6vw,36px);color:#fff!important;-webkit-text-fill-color:#fff!important}
.rh1-cta p{margin:0 0 20px;font-size:14.5px;color:#b3ab9b!important;-webkit-text-fill-color:#b3ab9b!important}
.rh1-btn{display:inline-flex;align-items:center;gap:10px;padding:15px 30px;border-radius:100px;background:linear-gradient(180deg,#f3d792,#e0b458);
color:#1a1405!important;-webkit-text-fill-color:#1a1405!important;font-weight:700;font-size:14.5px;text-decoration:none;box-shadow:0 16px 40px -14px rgba(233,200,119,.7);transition:.22s}
.rh1-btn:hover{transform:translateY(-2px)}
@media(max-width:780px){
.rh1-stage-grid{grid-template-columns:1fr}
.rh1-read{border-left:0;border-top:1px solid rgba(233,200,119,.14);min-height:0}
.rh1-canvaswrap{min-height:300px}
.rh1-cols{grid-template-columns:1fr}
.rh1-head{padding-top:56px}
}
Returns & Refunds · The Flaire
Run your return through the console
Tap your situation and watch the gem respond. Your exact path lights up on the right — window, shipping, outcome.
◇ Flaire returns core · live
Awaiting input — select a situation
—
Your return path appears here
- Pick a situation below — faulty, changed mind, wrong size, damaged, or EU.
- The console maps your window, who covers shipping, and how you're made whole.
- Map all six to complete the returns brief.
◇ STANDBY
My item is faulty
I changed my mind
Wrong size
Damaged / wrong item
I'm in the EU
Can't be returned?
◆ RETURNS BRIEF COMPLETE — you're fully covered. ◆
-
Unworn & unused, in original condition with all tags attached and original packaging.
-
Free of marks or scents — no perfume, makeup, lotion or pet hair.
-
Securely packaged for the journey back; anything short of this may not be accepted.
-
Faulty items ship back free on a prepaid label. Change-of-mind & size returns: shipping is on you.
-
Personalised or custom pieces made just for you.
-
Personal-care items, for hygiene reasons, and gift cards.
-
Not a defect: bending, dropping or tugging, and damage from perfume, chlorine or lotions.
-
Wrong address at checkout: if a parcel can't be delivered and isn't returned to us, store credit only, at our discretion.
(function(){
var s=document.currentScript.previousElementSibling;
if(!s||!s.classList.contains('rh1')){var all=document.getElementsByClassName('rh1');s=all[all.length-1];}
var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion:reduce)').matches;
/* ================= HOLO-GEM CANVAS ================= */
var cv=s.querySelector('#rh1-cv');
var ctx=cv&&cv.getContext?cv.getContext('2d'):null;
var host=cv?cv.parentNode:null;
var W=0,H=0,DPR=Math.min(window.devicePixelRatio||1,2);
var ang=0, tilt=0.42, pulse=0, tint=[233,200,119], baseTint=[233,200,119];
var sparks=[], raf=null, vis=true;
// diamond model
var TN=8, verts=[], edges=[];
(function build(){
var table=[],girdle=[];
for(var i=0;i<TN;i++){
var a=i/TN*Math.PI*2;
table.push([Math.cos(a)*0.44,0.5,Math.sin(a)*0.44]);
girdle.push([Math.cos(a)*1.0,0.12,Math.sin(a)*1.0]);
}
var culet=[0,-1.15,0];
var ti=[],gi=[];
table.forEach(function(v){ti.push(verts.push(v)-1);});
girdle.forEach(function(v){gi.push(verts.push(v)-1);});
var ci=verts.push(culet)-1;
for(var i=0;i<TN;i++){
edges.push([ti[i],ti[(i+1)%TN]]); // table ring
edges.push([gi[i],gi[(i+1)%TN]]); // girdle ring
edges.push([ti[i],gi[i]]); // crown facet
edges.push([ti[i],gi[(i+1)%TN]]); // crown facet diagonal
edges.push([gi[i],ci]); // pavilion
}
})();
function size(){
if(!host)return;
W=host.clientWidth;H=host.clientHeight||340;
cv.width=W*DPR;cv.height=H*DPR;ctx.setTransform(DPR,0,0,DPR,0,0);
}
function mkSpark(){
var r=(0.55+Math.random()*0.9);
return {r:r,a:Math.random()*Math.PI*2,sp:(0.002+Math.random()*0.006)*(Math.random()<.5?1:-1),
ph:Math.random()*Math.PI*2,tw:0.6+Math.random()*1.4,sz:0.6+Math.random()*1.5,yj:(Math.random()-0.5)*0.5};
}
for(var i=0;i<26;i++)sparks.push(mkSpark());
function project(v,scale,cx,cy){
// rotate Y
var x=v[0]*Math.cos(ang)+v[2]*Math.sin(ang);
var z=-v[0]*Math.sin(ang)+v[2]*Math.cos(ang);
var y=v[1];
// tilt X
var y2=y*Math.cos(tilt)-z*Math.sin(tilt);
var z2=y*Math.sin(tilt)+z*Math.cos(tilt);
var f=4.2, p=f/(f-z2);
return {x:cx+x*scale*p, y:cy - y2*scale*p, z:z2, p:p};
}
function frame(){
if(!vis){raf=null;return;}
raf=requestAnimationFrame(frame);
ctx.clearRect(0,0,W,H);
var cx=W/2, cy=H/2, scale=Math.min(W,H)*0.30;
if(!reduce)ang+=0.008;
if(pulse>0)pulse*=0.94;
var col=[
Math.round(baseTint[0]+(tint[0]-baseTint[0])*pulse),
Math.round(baseTint[1]+(tint[1]-baseTint[1])*pulse),
Math.round(baseTint[2]+(tint[2]-baseTint[2])*pulse)
];
// orbiting sparks (behind)
for(var i=0;i<sparks.length;i++){
var sp=sparks[i];if(!reduce)sp.a+=sp.sp;
var sx=cx+Math.cos(sp.a)*scale*(1.05+sp.r);
var sy=cy+Math.sin(sp.a)*scale*(0.55+sp.r*0.5)+sp.yj*scale;
var tw=0.35+0.65*Math.abs(Math.sin(Date.now?0:0));
tw=0.4+0.6*Math.abs(Math.sin(sp.ph+ang*sp.tw*6));
ctx.beginPath();ctx.arc(sx,sy,sp.sz*(1+pulse),0,6.283);
ctx.fillStyle='rgba('+col[0]+','+col[1]+','+col[2]+','+(0.25+0.5*tw)+')';
ctx.shadowColor='rgba('+col[0]+','+col[1]+','+col[2]+',.9)';ctx.shadowBlur=6;ctx.fill();
}
ctx.shadowBlur=0;
// project verts
var P=[];for(var i=0;i<verts.length;i++)P.push(project(verts[i],scale,cx,cy));
// glow halo
var grd=ctx.createRadialGradient(cx,cy,scale*0.2,cx,cy,scale*1.5);
grd.addColorStop(0,'rgba('+col[0]+','+col[1]+','+col[2]+','+(0.10+0.14*pulse)+')');
grd.addColorStop(1,'rgba(0,0,0,0)');
ctx.fillStyle=grd;ctx.fillRect(0,0,W,H);
// edges
ctx.lineWidth=1.2;
for(var i=0;i<edges.length;i++){
var a=P[edges[i][0]],b=P[edges[i][1]];
var depth=(a.z+b.z)/2;
var al=0.30+0.55*((depth+1.2)/2.4);al=Math.max(0.12,Math.min(0.95,al))*(0.8+0.5*pulse);
ctx.beginPath();ctx.moveTo(a.x,a.y);ctx.lineTo(b.x,b.y);
ctx.strokeStyle='rgba('+col[0]+','+col[1]+','+col[2]+','+al+')';
ctx.shadowColor='rgba('+col[0]+','+col[1]+','+col[2]+',.8)';ctx.shadowBlur=8*(0.5+pulse);
ctx.stroke();
}
ctx.shadowBlur=0;
// vertex glints
for(var i=0;i<P.length;i++){
var v=P[i];var al=0.4+0.55*((v.z+1.2)/2.4);
ctx.beginPath();ctx.arc(v.x,v.y,1.6+1.4*((v.z+1.2)/2.4)+pulse,0,6.283);
ctx.fillStyle='rgba(255,'+Math.min(255,col[1]+30)+','+Math.min(255,col[2]+60)+','+Math.max(0.3,al)+')';
ctx.shadowColor='rgba('+col[0]+','+col[1]+','+col[2]+',1)';ctx.shadowBlur=8;ctx.fill();
}
ctx.shadowBlur=0;
}
if(host){
size();window.addEventListener('resize',size);
if('IntersectionObserver' in window){
new IntersectionObserver(function(e){vis=e[0].isIntersecting;if(vis&&!raf)frame();},{threshold:.02}).observe(host);
}
frame();
}
/* ================= interaction ================= */
var chips=Array.prototype.slice.call(s.querySelectorAll('.rh1-chip'));
var pips=Array.prototype.slice.call(s.querySelectorAll('.rh1-pip'));
var st=s.querySelector('#rh1-st'), fn=s.querySelector('#rh1-fn'), fu=s.querySelector('#rh1-fu'),
rt=s.querySelector('#rh1-rt'), stepsEl=s.querySelector('#rh1-steps'), tagEl=s.querySelector('#rh1-tag'),
led=s.querySelector('#rh1-led'), doneEl=s.querySelector('#rh1-done'), cap=s.querySelector('#rh1-cap');
var DATA={
faulty:{fn:30,fu:'days to report',st:'PATH · FAULTY ITEM',rt:'Faulty within 30 days',tint:[150,220,150],tag:['good','◆ FREE RETURN'],
steps:['Report within <b>30 days</b> of arrival to <b>support@the-flaire.com</b>.','We send a <span class="g">prepaid label</span> — <b>the return is on us</b>.','Outcome: replacement or full resolution.']},
mind:{fn:12,fu:'months credit',st:'PATH · CHANGE OF MIND',rt:'Store credit, valid a year',tint:[240,214,140],tag:['warn','★ STORE CREDIT'],
steps:['Email us within <b>30 days</b> of delivery.','You receive <span class="g">store credit</span>, valid a <b>full year</b>.','Return shipping is <span class="w">on you</span>; piece unworn, tags on, packaging intact.']},
size:{fn:12,fu:'months credit',st:'PATH · WRONG SIZE',rt:'Swap it, keep the value',tint:[240,214,140],tag:['warn','★ STORE CREDIT'],
steps:['Treated as change of mind — <span class="g">store credit</span>, one year.','Fastest: <b>return first</b>, then reorder your size — no waiting.','Return shipping is <span class="w">on you</span>; codes can’t apply to exchanges.']},
wrong:{fn:48,fu:'hours to flag',st:'PATH · DAMAGED / WRONG',rt:'On us — we fix it',tint:[150,220,150],tag:['good','◆ NO COST'],
steps:['Contact us within <b>48 hours</b> of delivery.','We handle everything — <span class="g">at no cost to you</span>.','A correct piece or full resolution, fast.']},
eu:{fn:14,fu:'days cooling-off',st:'PATH · EU ORDER',rt:'14 days, no questions',tint:[150,220,150],tag:['good','◆ NO QUESTIONS'],
steps:['EU orders get a <b>14-day cooling-off period</b>.','<span class="g">No questions asked</span> — change your mind freely.','Return in original condition with tags and packaging.']},
no:{fn:'✕',fu:'not returnable',st:'PATH · EXCEPTIONS',rt:'A few pieces stay yours',tint:[210,210,210],tag:['neut','✕ EXCEPTIONS'],
steps:['Can’t return: <b>personalised / custom</b>, personal-care items, gift cards.','Wear-and-tear isn’t a defect: bending, drops, chemical exposure.','Follow the care card to keep your warranty alive.']}
};
var seen={}, count=0;
function countUp(target){
if(typeof target!=='number'){fn.textContent=target;return;}
if(reduce){fn.textContent=target;return;}
var t0=null,dur=700;
function step(ts){if(!t0)t0=ts;var p=Math.min(1,(ts-t0)/dur);fn.textContent=Math.round(target*(1-Math.pow(1-p,3)));if(p<1)requestAnimationFrame(step);}
requestAnimationFrame(step);
}
function select(k,el){
var d=DATA[k];if(!d)return;
chips.forEach(function(x){x.classList.remove('on');});el.classList.add('on');
st.textContent=d.st; rt.textContent=d.rt; fu.textContent=d.fu;
countUp(d.fn);
stepsEl.innerHTML=d.steps.map(function(x){return '<li>'+x+'</li>';}).join('');
tagEl.className='rh1-tag '+d.tag[0]; tagEl.textContent=d.tag[1];
led.style.background='rgb('+d.tint[0]+','+d.tint[1]+','+d.tint[2]+')';
led.style.boxShadow='0 0 8px rgb('+d.tint[0]+','+d.tint[1]+','+d.tint[2]+')';
cap.textContent='◇ '+d.st.toLowerCase();
// gem reacts
tint=d.tint.slice(); pulse=1;
for(var i=0;i<10;i++)sparks.push(mkSpark());
if(sparks.length>60)sparks.splice(0,sparks.length-60);
// meter
if(!seen[k]){seen[k]=1;count++;if(pips[count-1])pips[count-1].classList.add('on');el.classList.add('seen');
if(count>=chips.length){doneEl.classList.add('show');}}
}
chips.forEach(function(c){c.addEventListener('click',function(){select(c.getAttribute('data-k'),c);});});
})();