/* Line in Bio prototype. Full-screen, phone-first. Single dark world. */
:root{
  --ink:#F3F1FA; --mut:rgba(243,241,250,.58);
  --peach:#FFB199; --mint:#7FF0E0; --tint:#0B1022;
  --display:"Unbounded", "Avenir Next", "Segoe UI", sans-serif;
  --body:"Instrument Sans", "Helvetica Neue", Arial, sans-serif;
  --st:env(safe-area-inset-top, 0px); --sb:env(safe-area-inset-bottom, 0px);
  --gutter:max(16px, calc(50% - 210px));
  --ctop:calc(var(--st) + 84px);
  color-scheme:dark;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0;background:#04050A;overflow:hidden;overscroll-behavior:none}
body{color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.45;touch-action:manipulation;-webkit-user-select:none;user-select:none}

#screen{position:fixed;inset:0;overflow:hidden;isolation:isolate;background:radial-gradient(120% 70% at 50% 110%,var(--tint) 0,#04050A 60%);transition:background .8s}
#screen[data-mode="pre"],#screen[data-mode="idle"]{cursor:pointer}
#screen canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.orb-fallback{position:absolute;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,var(--peach) 35%,#3B3F9E 70%,#141A4D);box-shadow:0 0 60px var(--mint);z-index:0;transform:translate(-50%,-50%)}
.layer{position:absolute;inset:0;z-index:1}

.pfp{position:absolute;top:calc(var(--st) + 22px);left:50%;width:40px;height:40px;margin-left:-20px;border-radius:50%;z-index:3;
  background:radial-gradient(circle at 50% 40%,#F2C4A8 0 21%,transparent 22%),radial-gradient(circle at 50% 33%,#2A1712 0 31%,transparent 32%),radial-gradient(ellipse 60% 40% at 50% 100%,#23285E 0 99%,transparent 100%),linear-gradient(160deg,var(--peach),#6C5CE7);
  box-shadow:0 0 0 2px rgba(255,255,255,.14);-webkit-touch-callout:none}
#screen[data-mode="agent"] .pfp{animation:halo 1.6s ease-in-out infinite}
@keyframes halo{0%,100%{box-shadow:0 0 0 2px var(--peach),0 0 14px 2px var(--peach)}50%{box-shadow:0 0 0 2px var(--mint),0 0 22px 6px var(--mint)}}

/* vibe toast (after a long-press on the profile picture) */
.toast{position:absolute;top:calc(var(--st) + 72px);left:50%;transform:translate(-50%,-6px);z-index:4;font-size:14px;letter-spacing:.14em;text-transform:uppercase;padding:6px 14px;border-radius:999px;background:rgba(255,255,255,.1);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);opacity:0;transition:opacity .3s,transform .3s;pointer-events:none}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* invitation */
.pre{position:absolute;inset:0;z-index:2;transition:opacity .7s,transform .7s}
.pre.gone{opacity:0;transform:translateY(18px);pointer-events:none}
.tap{position:absolute;top:56%;left:0;right:0;text-align:center;font-size:14px;letter-spacing:.2em;text-transform:uppercase;color:rgba(243,241,250,.7);animation:breathe 2.8s ease-in-out infinite}
@keyframes breathe{0%,100%{opacity:.35}50%{opacity:.9}}
.feat{position:absolute;left:var(--gutter);right:var(--gutter);bottom:calc(var(--sb) + 22px);display:flex;gap:14px;align-items:center;padding:12px;border-radius:26px;
  background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.035));border:1px solid rgba(255,255,255,.13);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);animation:float 6s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.feat .cover{width:74px;height:74px;border-radius:18px;flex:none}
.feat .k{font-size:14px;color:var(--mut)}
.feat .t{font-family:var(--display);font-size:17px;font-weight:500;line-height:1.15}
.eq{display:flex;gap:3px;align-items:flex-end;height:16px;margin-top:6px}
.eq i{width:3px;border-radius:2px;background:var(--mint);animation:eq 1s ease-in-out infinite}
.eq i:nth-child(2){animation-delay:-.3s}.eq i:nth-child(3){animation-delay:-.6s}.eq i:nth-child(4){animation-delay:-.15s}
@keyframes eq{0%,100%{height:4px}50%{height:16px}}

/* ---------- cards ---------- */
.card{position:absolute;left:var(--gutter);right:var(--gutter);top:var(--ctop);height:var(--ch);border-radius:28px;padding:14px;display:flex;flex-direction:column;gap:12px;color:var(--ink);overflow:hidden;
  background:linear-gradient(180deg,rgba(255,255,255,.11),rgba(255,255,255,.04));border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(26px) saturate(150%);-webkit-backdrop-filter:blur(26px) saturate(150%);box-shadow:0 30px 60px -24px rgba(0,0,0,.8)}
.card button.cta{margin-top:auto;border:0;border-radius:999px;background:var(--ink);color:#08090D;font:600 16px var(--body);padding:13px;cursor:pointer}
.card button:focus-visible,.bub:focus-visible{outline:2px solid var(--mint);outline-offset:2px}
.card .muted{font-size:14px;color:var(--mut)}
.glint::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.22) 50%,transparent 70%);transform:translateX(-100%);animation:glint 1.2s ease-out forwards;pointer-events:none}
@keyframes glint{to{transform:translateX(100%)}}

.cover{background:radial-gradient(circle at 70% 28%,#FFF3DA 0 11%,rgba(255,243,218,.25) 12% 17%,transparent 18%),linear-gradient(170deg,#1C2066 0,#6B4A9E 55%,#F09A86 100%)}
.art{border-radius:20px;flex:1;min-height:0;position:relative;display:grid;place-items:center;overflow:hidden}
.art svg{height:78%;filter:drop-shadow(0 18px 20px rgba(0,0,0,.45));animation:float 5s ease-in-out infinite}
.art-hoodie{background:radial-gradient(80% 70% at 50% 40%,#2E5E4C 0,#10231D 100%)}
.art-oil{background:radial-gradient(80% 70% at 50% 40%,#6E3350 0,#200E18 100%)}
.pill{position:absolute;top:10px;left:10px;font-size:14px;padding:4px 10px;border-radius:999px;background:rgba(0,0,0,.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.pill.code{color:var(--peach);border:1px solid var(--peach)}
.prow{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.pname{font-family:var(--display);font-size:16px;font-weight:500;line-height:1.2}
.price{font-family:var(--display);font-size:18px;text-align:right;line-height:1.15;white-space:nowrap}
.price s{display:block;font-family:var(--body);font-size:14px;color:var(--mut)}
.sizes{display:flex;gap:6px}
.sizes span{flex:1;text-align:center;font-size:14px;padding:7px 0;border-radius:12px;border:1px solid rgba(255,255,255,.16)}
.sizes span.on{background:var(--mint);color:#06201C;border-color:var(--mint);font-weight:600}

.tour-hero{display:flex;gap:14px;align-items:center;padding:6px 2px 2px;position:relative}
.bigdate{display:grid;justify-items:center;line-height:1}
.bigdate b{font-family:var(--display);font-size:52px;font-weight:700;background:linear-gradient(180deg,#fff,var(--peach));-webkit-background-clip:text;background-clip:text;color:transparent}
.bigdate span{font-size:14px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut);margin-top:4px}
.venue{display:grid;gap:2px}
.venue b{font-family:var(--display);font-size:17px;font-weight:500}
.venue em{font-style:normal;font-size:14px;color:var(--peach);display:flex;align-items:center;gap:6px}
.venue em::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--peach);box-shadow:0 0 10px var(--peach)}
.others{display:grid;gap:8px;border-top:1px solid rgba(255,255,255,.1);padding-top:12px}
.others div{display:flex;justify-content:space-between;font-size:14px;color:var(--mut)}
.others div b{color:var(--ink);font-weight:500}
.k-tour::before{content:"";position:absolute;right:-40px;top:-40px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,var(--peach),transparent 65%);opacity:.35;pointer-events:none}

.thumb{aspect-ratio:16/9;border-radius:20px;position:relative;display:grid;place-items:center;flex:none;background:radial-gradient(circle at 74% 30%,#FFF3DA 0 8%,rgba(255,243,218,.2) 9% 14%,transparent 15%),linear-gradient(180deg,#171B55 0,#533F86 60%,#E8907C 100%)}
.thumb .play{width:54px;height:54px;border-radius:50%;background:rgba(255,255,255,.18);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:grid;place-items:center;border:1px solid rgba(255,255,255,.35)}
.thumb .play::after{content:"";border-left:15px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.thumb .dur{position:absolute;right:10px;bottom:8px;font-size:14px;background:rgba(0,0,0,.5);padding:0 7px;border-radius:8px}

.recap h3{font-family:var(--display);font-weight:500;font-size:17px;margin:2px 2px 0}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px;flex:1;min-height:0}
.tiles div{border-radius:16px;padding:10px;display:flex;flex-direction:column;justify-content:flex-end;font-size:14px;line-height:1.2;min-height:0}
.t1{background:linear-gradient(160deg,rgba(255,255,255,.22),rgba(255,255,255,.04))}
.t2{background:radial-gradient(80% 70% at 50% 30%,#2E5E4C,#10231D)}
.t3{background:radial-gradient(80% 70% at 50% 30%,#6E3350,#200E18)}
.t4{background:linear-gradient(180deg,#171B55,#533F86 60%,#E8907C)}

/* ---------- Horizon: orb sets into the bottom edge, cards glide sideways ---------- */
[data-layout="horizon"]{--ch:min(380px, calc(79dvh - var(--ctop) - 44px))}
[data-layout="horizon"] .card{transition:transform .8s cubic-bezier(.2,.8,.2,1),opacity .7s}
[data-layout="horizon"] .card.side{cursor:pointer}
[data-layout="horizon"] .card.side > *{pointer-events:none}
.dots{position:absolute;top:calc(var(--ctop) + var(--ch) + 16px);left:0;right:0;display:flex;justify-content:center;gap:6px}
.dots i{width:6px;height:6px;border-radius:3px;background:rgba(255,255,255,.3);transition:width .4s,background .4s}
.dots i.on{width:18px;background:var(--ink)}

/* ---------- Aura: orb becomes the room, cards float in the light ---------- */
[data-layout="aura"]{--ch:min(400px, calc(100dvh - var(--ctop) - var(--sb) - 110px))}
[data-layout="aura"] .card.arrive{animation:arrive .8s cubic-bezier(.2,.8,.2,1) both}
[data-layout="aura"] .card.leave{animation:leave .6s ease-in both;pointer-events:none}
@keyframes arrive{from{opacity:0;transform:scale(.9);filter:blur(10px)}to{opacity:1;transform:none;filter:none}}
@keyframes leave{to{opacity:0;transform:translateY(40vh) scale(.25);filter:blur(6px)}}
.bubbles{position:absolute;bottom:calc(var(--sb) + 26px);left:0;right:0;display:flex;justify-content:center;gap:12px}
.bub{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);cursor:pointer;animation:arrive .6s both;transition:transform .3s,border-color .3s;padding:0}
.bub svg{width:22px;height:22px;fill:none;stroke:var(--ink);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.bub.on{border-color:var(--mint);transform:scale(1.12);box-shadow:0 0 18px var(--mint)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ---------- live mode (?agent=…) ---------- */
.endx{position:absolute;top:calc(var(--st) + 24px);right:18px;z-index:4;width:36px;height:36px;border-radius:50%;display:none;place-items:center;padding:0;cursor:pointer;
  border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.endx svg{width:16px;height:16px;fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round}
.endx:focus-visible{outline:2px solid var(--mint);outline-offset:2px}
#screen[data-live="1"] .endx{display:grid}
#screen[data-muted="1"] .pfp{filter:grayscale(1) brightness(.7)}
.art img,.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.thumb .play{position:relative;z-index:1}
.art-plain{background:radial-gradient(80% 70% at 50% 35%,rgba(255,255,255,.14),rgba(255,255,255,.02))}
.pfp.photo{background-size:cover;background-position:center}
