:root{--bg:#fbf7f2;--ink:#2a2342;--muted:#6b6385;--soft:#a39cb6;--line:rgba(42,35,66,.09);--glass:rgba(255,255,255,.74);--lilac:#8b6cf6;--lilac2:#6d4ee8;--lilac-s:#efe9ff;--peach:#ff9a6b;--peach2:#e8703f;--peach-s:#ffeee5;--mint:#2fbf8a;--mint2:#16855d;--mint-s:#e0f7ec;--sun:#ffc23d;--sun2:#a87400;--sun-s:#fff4d4;--sky:#4aa8ff;--sky2:#2a86d9;--sky-s:#e3f1ff;--rose:#ff5c82;--r:24px;--r-sm:16px;--sh:0 1px 2px rgba(42,35,66,.04),0 12px 32px -14px rgba(76,52,160,.24);--sh-lg:0 26px 60px -22px rgba(76,52,160,.42);--ease:cubic-bezier(.22,1,.36,1);--spring:cubic-bezier(.34,1.56,.64,1);--head:'Fredoka',ui-rounded,system-ui,sans-serif;--body:'Nunito',system-ui,-apple-system,sans-serif;--sb:env(safe-area-inset-bottom,0px);--st:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scrollbar-width:thin;scrollbar-color:#d8cdf7 transparent}
body{margin:0;min-height:100dvh;background:var(--bg);color:var(--ink);font:500 16px/1.55 var(--body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden;overscroll-behavior-y:none}
body.lock{overflow:hidden}
::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#d8cdf7;border-radius:8px}::-webkit-scrollbar-track{background:transparent}
::selection{background:var(--lilac-s);color:var(--lilac2)}
h1,h2,h3{font-family:var(--head);font-weight:600;line-height:1.15;margin:0;letter-spacing:-.01em}
h1{font-size:clamp(30px,6vw,44px)}h2{font-size:clamp(21px,3.4vw,26px)}h3{font-size:18px}
p{margin:0}a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;-webkit-user-drag:none;user-select:none;-webkit-user-select:none}
button,input,textarea{font:inherit;color:inherit;letter-spacing:inherit}
button{background:none;border:0;padding:0;cursor:pointer;touch-action:manipulation}
button:disabled{cursor:default;opacity:.45}
:focus{outline:none}:focus-visible{outline:3px solid rgba(139,108,246,.45);outline-offset:3px}
.i{width:1.25em;height:1.25em;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.i-play{fill:currentColor;stroke-width:1.2}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;opacity:0}

.bg{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.bg i{position:absolute;width:75vmax;height:75vmax;border-radius:50%;opacity:.7;will-change:transform;animation:drift 28s ease-in-out infinite alternate}
.bg i:nth-child(1){background:radial-gradient(closest-side,#e2d7ff,transparent);top:-35vmax;left:-25vmax}
.bg i:nth-child(2){background:radial-gradient(closest-side,#ffe0cf,transparent);top:15vh;right:-40vmax;animation-duration:34s;animation-delay:-9s}
.bg i:nth-child(3){background:radial-gradient(closest-side,#d3f5e6,transparent);bottom:-45vmax;left:5vw;animation-duration:40s;animation-delay:-18s}
@keyframes drift{to{transform:translate3d(9vmax,7vmax,0) scale(1.18)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes rise{from{opacity:0;transform:translateY(18px) scale(.98)}}
@keyframes fade{from{opacity:0}}
@keyframes float{50%{transform:translateY(-10px)}}
@keyframes pop{40%{transform:scale(1.45)}}
@keyframes breathe{50%{opacity:.55;transform:scale(.94)}}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}

.splash{min-height:100dvh;display:grid;place-items:center}
.splash img,.auth-logo{width:84px;height:84px;border-radius:26px;box-shadow:var(--sh-lg)}
.splash img{animation:breathe 1.4s ease-in-out infinite}
.loader{width:36px;height:36px;margin:40px auto;border-radius:50%;border:3px solid var(--lilac-s);border-top-color:var(--lilac);animation:spin .8s linear infinite}

.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:calc(var(--st) + 12px) max(18px,calc((100vw - 1120px)/2)) 12px;background:rgba(251,247,242,.72);backdrop-filter:saturate(1.5) blur(18px);-webkit-backdrop-filter:saturate(1.5) blur(18px)}
.brand{display:flex;align-items:center;gap:10px;font:700 26px/1 var(--head);letter-spacing:-.03em}
.brand img{width:38px;height:38px;border-radius:12px;box-shadow:var(--sh);transition:transform .5s var(--spring)}
.brand:hover img{transform:rotate(-10deg) scale(1.06)}
.brand em{font-style:normal}.brand em,.brand-xl span{color:var(--lilac)}
.tagline{font-size:12px;font-weight:700;color:var(--muted);line-height:1.3;border-left:1.5px solid var(--line);padding-left:14px}
.avatar{margin-left:auto;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex:none;background:linear-gradient(135deg,var(--lilac),var(--peach));color:#fff;font:600 18px var(--head);overflow:hidden;box-shadow:0 0 0 3px #fff,var(--sh);transition:transform .35s var(--spring)}
.avatar:active{transform:scale(.9)}.avatar img{width:100%;height:100%;object-fit:cover}
.avatar.xl{width:96px;height:96px;font-size:40px;margin:0}
#view{max-width:1120px;margin:0 auto;padding:6px 18px calc(116px + var(--sb))}
#view.enter{animation:rise .5s var(--ease)}
section{margin:0 0 34px}

.tabbar{position:fixed;z-index:30;left:50%;bottom:calc(12px + var(--sb));transform:translateX(-50%);width:min(560px,calc(100% - 24px));display:grid;grid-template-columns:repeat(5,1fr);padding:6px;border-radius:28px;background:rgba(255,255,255,.84);backdrop-filter:saturate(1.6) blur(20px);-webkit-backdrop-filter:saturate(1.6) blur(20px);box-shadow:0 18px 44px -16px rgba(60,40,120,.4),inset 0 0 0 1px rgba(255,255,255,.8)}
.tabbar a{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;font-size:11px;font-weight:800;color:var(--soft);transition:color .3s}
.tabbar a .i{width:24px;height:24px;transition:transform .5s var(--spring)}
.tabbar a.on{color:var(--lilac2)}.tabbar a.on .i{transform:translateY(-2px) scale(1.12)}
.tabbar a:active .i{transform:scale(.85)}
.tabbar a.on .i-heart{fill:currentColor}
.ink{position:absolute;top:6px;bottom:6px;left:6px;width:calc((100% - 12px)/5);border-radius:22px;background:var(--lilac-s);transform:translateX(calc(var(--i,0)*100%));transition:transform .55s var(--spring)}

.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:999px;background:#fff;color:var(--ink);font-weight:800;font-size:15px;white-space:nowrap;box-shadow:var(--sh),inset 0 0 0 1px var(--line);transition:transform .35s var(--spring),box-shadow .3s,background .3s,color .3s}
.btn:hover{transform:translateY(-2px)}.btn:active{transform:scale(.95)}
.btn.primary{background:linear-gradient(135deg,var(--lilac),var(--lilac2));color:#fff;box-shadow:0 14px 28px -12px rgba(109,78,232,.7)}
.btn.soft{background:var(--lilac-s);color:var(--lilac2);box-shadow:none}
.btn.light{background:#fff;color:var(--mint2);box-shadow:0 12px 24px -12px rgba(0,0,0,.35)}
.btn.ghost{background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn.danger{color:#d8435f}
.btn.sm{min-height:40px;padding:0 16px;font-size:14px}
.btn.wide{display:flex;width:100%}
.btn.loading{color:transparent!important;pointer-events:none}
.btn.loading::after{content:'';position:absolute;width:20px;height:20px;border-radius:50%;border:2.5px solid rgba(255,255,255,.45);border-top-color:#fff;animation:spin .7s linear infinite}
.btn:not(.primary).loading::after{border-color:var(--lilac-s);border-top-color:var(--lilac)}
.btn .count{min-width:20px;height:20px;padding:0 6px;border-radius:10px;display:grid;place-items:center;background:var(--lilac);color:#fff;font-size:12px;animation:pop .4s var(--spring)}
.icon-btn{width:40px;height:40px;border-radius:50%;display:inline-grid;place-items:center;flex:none;background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);transition:transform .3s var(--spring),background .2s,color .2s}
.icon-btn:hover{background:var(--lilac-s);color:var(--lilac2)}.icon-btn:active{transform:scale(.88)}
.icon-btn.sm{width:30px;height:30px}.icon-btn.sm .i{width:15px;height:15px}
.link{display:inline-flex;align-items:center;gap:6px;color:var(--lilac2);font-weight:800;font-size:14px;transition:opacity .2s}
.link:hover{opacity:.75}.link .i{width:18px;height:18px}

input,textarea{width:100%;border:0;border-radius:var(--r-sm);background:#fff;padding:14px 16px;box-shadow:inset 0 0 0 1.5px var(--line);transition:box-shadow .25s;-webkit-appearance:none;appearance:none;font-size:16px}
input:focus,textarea:focus{box-shadow:inset 0 0 0 2px var(--lilac),0 0 0 5px rgba(139,108,246,.13)}
textarea{resize:none;line-height:1.5}
::placeholder{color:var(--soft);opacity:1}
input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none;display:none}
input:-webkit-autofill{-webkit-box-shadow:inset 0 0 0 40px #fff;-webkit-text-fill-color:var(--ink)}
.search{position:relative;display:flex;align-items:center;flex:1}
.search>.i{position:absolute;left:18px;z-index:1;color:var(--soft);pointer-events:none}
.search input{min-height:54px;padding:0 20px 0 50px;border-radius:999px;box-shadow:var(--sh),inset 0 0 0 1px var(--line)}
.search input:focus{box-shadow:var(--sh),inset 0 0 0 2px var(--lilac)}
#home-search input{padding-right:58px}
.search .go{position:absolute;right:6px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--lilac),var(--lilac2));color:#fff;transition:transform .35s var(--spring)}
.search .go:hover{transform:translateX(2px)}.search .go:active{transform:scale(.88)}

.hello{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:14px 0 18px}
.kicker{color:var(--muted);font-weight:700}
.wave{display:inline-block;color:var(--sun);animation:sway 3s ease-in-out infinite}
@keyframes sway{50%{transform:rotate(25deg) scale(1.2)}}
.today{text-align:right;font-size:13px;font-weight:700;color:var(--muted)}.today small{display:block;font-size:13px}
.today strong{display:block;color:var(--ink);font:600 17px var(--head)}
.hero{position:relative;isolation:isolate;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:24px;margin:22px 0 34px;padding:32px;border-radius:32px;overflow:hidden;color:#fff;background:linear-gradient(130deg,#7a58ef,#a283ff 48%,#ffa982);background-size:200% 200%;box-shadow:var(--sh-lg);animation:sheen 14s ease-in-out infinite alternate}
@keyframes sheen{to{background-position:100% 100%}}
.hero::before,.hero::after{content:'';position:absolute;z-index:-1;border-radius:50%;background:rgba(255,255,255,.14);animation:float 9s ease-in-out infinite}
.hero::before{width:260px;height:260px;top:-100px;left:-70px}.hero::after{width:170px;height:170px;bottom:-70px;left:42%;animation-delay:-4s}
.hero h2{font-size:clamp(26px,4.4vw,38px);margin:8px 0 10px}
.hero p{opacity:.92;margin-bottom:22px}
.hero img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:24px;box-shadow:0 22px 40px -18px rgba(20,10,60,.55);transform:rotate(2deg);transition:transform .7s var(--spring)}
.hero:hover img{transform:rotate(0) scale(1.02)}
.hero .btn.primary{background:#fff;color:var(--lilac2);box-shadow:0 14px 30px -12px rgba(20,10,60,.45)}
.eyebrow{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--lilac)}
.hero .eyebrow,.magic .eyebrow{color:rgba(255,255,255,.88)}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}
.head p{color:var(--muted);font-size:14px;margin-top:4px}
.more{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-weight:800;font-size:14px;color:var(--lilac2)}
.more .i{width:16px;height:16px;transition:transform .3s var(--spring)}.more:hover .i{transform:translateX(4px)}
.moments{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.moment{display:flex;flex-direction:column;align-items:center;gap:10px;padding:18px 8px;border-radius:22px;background:#fff;box-shadow:var(--sh);font-weight:800;font-size:14px;transition:transform .45s var(--spring);animation:rise .6s var(--ease) backwards}
.moment span{width:56px;height:56px;border-radius:19px;display:grid;place-items:center;transition:transform .55s var(--spring)}
.moment span .i{width:26px;height:26px}
.moment:hover{transform:translateY(-5px)}.moment:hover span{transform:rotate(-10deg) scale(1.1)}.moment:active{transform:scale(.94)}
.c0 span{background:var(--lilac-s);color:var(--lilac2)}.c1 span{background:var(--peach-s);color:var(--peach2)}.c2 span{background:var(--mint-s);color:var(--mint2)}.c3 span{background:var(--sky-s);color:var(--sky2)}.c4 span{background:var(--sun-s);color:var(--sun2)}
.rail{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -18px;padding:4px 18px 18px;scrollbar-width:none;scroll-padding:0 18px}
.rail::-webkit-scrollbar{display:none}
.rail>.card{flex:0 0 min(260px,72vw);scroll-snap-align:start}
.chips-rail{gap:8px;padding-bottom:10px}
.chips-rail .chip{scroll-snap-align:start}
.duo{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;margin-bottom:34px;align-items:start}
.duo>section,.duo>.stack{margin:0}
.stack{display:grid;gap:18px}
.panel{background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-radius:var(--r);padding:22px;box-shadow:var(--sh),inset 0 0 0 1px rgba(255,255,255,.85)}
.magic{position:relative;overflow:hidden;color:#fff;background:linear-gradient(145deg,#2fbf8a,#3fb1e6);box-shadow:0 22px 44px -20px rgba(31,140,120,.6)}
.magic h3{font-size:24px;margin:6px 0 8px}.magic p{opacity:.94;margin-bottom:18px}
.magic::after{content:'✳';position:absolute;right:20px;top:4px;font-size:68px;line-height:1;opacity:.22;animation:spin 18s linear infinite}
.mini{display:flex;align-items:center;gap:12px;padding:12px 6px;border-radius:14px;border-top:1px solid var(--line);transition:background .2s}
.mini:hover{background:rgba(255,255,255,.7)}
.head+.mini{border-top:0}
.mini i{width:10px;height:10px;border-radius:50%;flex:none;background:var(--lilac);box-shadow:0 0 0 4px var(--lilac-s)}
.mini span{flex:1;font-weight:800}
.mini small{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.mini em{font-style:normal;font-size:13px;font-weight:700;color:var(--muted)}
.blank{display:flex;gap:16px;align-items:flex-start}
.blank>.i{width:50px;height:50px;padding:13px;border-radius:17px;background:var(--peach-s);color:var(--peach2)}
.blank p{color:var(--muted);margin:4px 0 14px;font-size:14px}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px}
.card{position:relative;background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);transition:transform .5s var(--spring),box-shadow .35s;animation:rise .6s var(--ease) backwards}
.grid>:nth-child(2),.rail>:nth-child(2),.moment:nth-child(2),.steps>:nth-child(2){animation-delay:.05s}
.grid>:nth-child(3),.rail>:nth-child(3),.moment:nth-child(3),.steps>:nth-child(3){animation-delay:.1s}
.grid>:nth-child(4),.rail>:nth-child(4),.moment:nth-child(4),.steps>:nth-child(4){animation-delay:.15s}
.grid>:nth-child(5),.rail>:nth-child(5),.moment:nth-child(5),.steps>:nth-child(5){animation-delay:.2s}
.grid>:nth-child(n+6),.rail>:nth-child(n+6){animation-delay:.25s}
.card:hover{transform:translateY(-6px);box-shadow:var(--sh-lg)}
.card:active{transform:scale(.98)}
.card>a{display:block}
.art{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--lilac-s)}
.art>img{width:100%;height:100%;object-fit:cover}
.art>img,.art>.scene{transition:scale .9s var(--ease)}
.card:hover .art>img,.card:hover .art>.scene{scale:1.07}
.art>.scene,.row-art>.scene{position:absolute;left:0;top:50%;width:100%;translate:0 -50%}
.badge{position:absolute;left:12px;bottom:12px;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font-size:12px;font-weight:800}
.badge .i{width:14px;height:14px;color:var(--lilac2)}
.body{padding:16px 18px 18px}
.body h3{margin-bottom:8px}
.meta{display:flex;gap:14px;margin-bottom:12px;color:var(--muted);font-size:13px;font-weight:700}
.meta span{display:inline-flex;align-items:center;gap:5px}.meta .i{width:15px;height:15px}
.tag{display:inline-block;padding:5px 12px;border-radius:999px;background:var(--mint-s);color:var(--mint2);font-size:12px;font-weight:800}
.fav{position:absolute;top:12px;right:12px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--muted);background:rgba(255,255,255,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 6px 16px -6px rgba(0,0,0,.28);transition:transform .35s var(--spring),color .25s}
.fav:hover{transform:scale(1.08)}.fav:active{transform:scale(.85)}
.fav.on,.btn.on{color:var(--rose)}
.fav.on .i-heart,.btn.on .i-heart{fill:currentColor}
.pop .i-heart{animation:pop .5s var(--spring)}
.ph{display:grid;place-items:center;width:100%;height:100%;color:var(--lilac)}.ph .i{width:40px;height:40px}
.scene{position:relative;overflow:hidden;aspect-ratio:1;background:#f4effb}
.scene img{position:absolute;top:0;left:0;width:200%;height:200%;max-width:none;object-fit:cover}
.q1 img{left:-100%}.q2 img{top:-100%}.q3 img{left:-100%;top:-100%}

.page-head{margin:16px 0 22px}.page-head h1{margin:6px 0 8px}.page-head p{color:var(--muted)}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}
.toolbar .search{min-width:min(100%,280px)}
.chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 16px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);font-weight:700;font-size:14px;white-space:nowrap;transition:background .25s,color .25s,box-shadow .25s,transform .35s var(--spring)}
.chip:hover{box-shadow:inset 0 0 0 1.5px var(--lilac)}
.chip:active{transform:scale(.92)}
.chip.on{background:var(--ink);color:#fff;box-shadow:0 8px 18px -8px rgba(42,35,66,.55)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips .chip.on{background:linear-gradient(135deg,var(--lilac),var(--lilac2));box-shadow:0 8px 18px -8px rgba(109,78,232,.6)}
.count-line{color:var(--muted);font-weight:700;font-size:14px;margin:6px 0 14px}
.fields{display:grid;gap:22px}
.fields.two{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.field{display:grid;gap:10px;align-content:start}
.label{font-weight:800;font-size:14px}
.form{display:grid;gap:22px}
.form-foot{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px}
.note{color:var(--muted);font-size:14px}
.stepper{display:inline-flex;align-items:center;gap:4px;width:max-content;padding:5px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line)}
.stepper button{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--lilac-s);color:var(--lilac2);transition:transform .3s var(--spring)}
.stepper button:active{transform:scale(.85)}
.stepper input{width:88px;padding:8px 0;text-align:center;background:transparent;box-shadow:none;font-weight:800;font-size:17px}
.stepper input:focus{box-shadow:none}
#matches{margin-top:30px}

.back{display:inline-flex;align-items:center;gap:8px;margin:14px 0 18px;padding:8px 16px 8px 10px;border-radius:999px;background:#fff;box-shadow:var(--sh);font-weight:800;font-size:14px;transition:transform .35s var(--spring)}
.back:hover{transform:translateX(-4px)}
.detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:30px;align-items:start;margin-bottom:34px}
.detail-media{display:grid;gap:22px}
.detail-media h3{margin-bottom:10px}
.cover{border-radius:28px;overflow:hidden;box-shadow:var(--sh-lg);animation:rise .7s var(--ease) backwards}
.cover>img{width:100%;aspect-ratio:4/3;object-fit:cover}
.detail-info{position:sticky;top:84px}
.detail-info h1{margin:12px 0}
.lead{font-size:18px;color:var(--muted)}
.actions{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 16px}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:24px}
.facts div{padding:16px 18px;border-radius:20px;background:#fff;box-shadow:var(--sh);animation:rise .6s var(--ease) backwards}
.facts div:nth-child(2){animation-delay:.06s}.facts div:nth-child(3){animation-delay:.12s}.facts div:nth-child(4){animation-delay:.18s}
.facts small{display:block;margin-bottom:4px;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}
.facts strong{font:600 17px/1.3 var(--head)}
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.steps li{position:relative;background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);animation:rise .6s var(--ease) backwards}
.steps li:not(:has(.scene)){padding-top:58px}
.steps .num{position:absolute;top:12px;left:12px;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--lilac);color:#fff;font:600 18px var(--head);box-shadow:0 0 0 4px rgba(255,255,255,.85)}
.steps p{padding:16px 18px 18px;font-weight:700}
.guide{display:flex;gap:16px}
.guide .ico{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;flex:none;background:var(--peach-s);color:var(--peach2)}
.guide h3{margin-bottom:6px}.guide p,.info p{color:var(--muted)}
.guide.alt .ico{background:var(--sky-s);color:var(--sky2)}
.guide.safety{background:linear-gradient(135deg,var(--sun-s),rgba(255,255,255,.8))}
.guide.safety .ico{background:#ffe6a3;color:var(--sun2)}
.info h3{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.info p+h3{margin-top:18px}
.info .i{color:var(--lilac)}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
.info .link{display:inline}

.vid{display:grid;justify-items:center}
.player{position:relative;isolation:isolate;width:min(100%,calc(74vh*9/16),440px);aspect-ratio:9/16;border-radius:28px;overflow:hidden;background:#151026;box-shadow:var(--sh-lg);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;animation:rise .7s var(--ease) backwards}
.player video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#151026}
.player video::-webkit-media-controls{display:none!important}
.player.full{position:fixed;inset:0;z-index:200;width:100%;height:100%;aspect-ratio:auto;border-radius:0;animation:none}
.p-big{position:absolute;inset:0;z-index:2;margin:auto;width:84px;height:84px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.94);color:var(--lilac2);box-shadow:0 20px 44px -12px rgba(0,0,0,.55);transition:transform .5s var(--spring),opacity .35s}
.p-big .i{width:34px;height:34px;margin-left:4px}
.p-big::before{content:'';position:absolute;inset:-10px;border-radius:50%;border:2px solid rgba(255,255,255,.6);animation:ring 2.2s var(--ease) infinite}
@keyframes ring{from{transform:scale(.9);opacity:1}to{transform:scale(1.4);opacity:0}}
.p-big:active{transform:scale(.9)}
.player.started .p-big{opacity:0;transform:scale(.5);pointer-events:none}
.player.started:not(.playing) .p-big{opacity:1;transform:none;pointer-events:auto}
.p-spin{position:absolute;inset:0;z-index:2;margin:auto;width:48px;height:48px;border-radius:50%;border:3px solid rgba(255,255,255,.25);border-top-color:#fff;opacity:0;pointer-events:none;transition:opacity .25s;animation:spin .8s linear infinite}
.player.wait.playing .p-spin{opacity:1}
.p-msg{position:absolute;left:18px;right:18px;bottom:22px;z-index:3;color:#fff;text-align:center;font-weight:700;font-size:14px;opacity:0;transition:opacity .3s}
.player.off .p-msg{opacity:1}.player.off .p-big{opacity:.35;pointer-events:none}
.player.local::after{content:'Salvo no app';position:absolute;top:14px;left:14px;z-index:3;padding:5px 11px;border-radius:999px;background:rgba(47,191,138,.92);color:#fff;font-size:11px;font-weight:800;transition:opacity .35s}
.player.local.playing::after{opacity:0}
.p-bar{position:absolute;left:10px;right:10px;bottom:calc(10px + var(--sb));z-index:3;display:flex;align-items:center;gap:4px;padding:6px 8px;border-radius:20px;background:rgba(21,16,38,.58);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#fff;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;transition:opacity .35s,transform .5s var(--ease)}
.player:not(.full) .p-bar{bottom:10px}
.player:not(.started) .p-bar,.player.idle .p-bar{opacity:0;transform:translateY(18px);pointer-events:none}
.player.idle{cursor:none}
.p-bar button{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;transition:background .2s,transform .3s var(--spring)}
.p-bar button:hover{background:rgba(255,255,255,.16)}.p-bar button:active{transform:scale(.85)}
.p-bar .i{width:20px;height:20px}
.p-bar .p-rate{width:auto;min-width:36px;padding:0 6px;border-radius:12px;font-size:12px}
.player .i-pause,.player .i-mute,.player.playing .p-bar .i-play,.player.muted .i-vol{display:none}
.player.playing .p-bar .i-pause,.player.muted .i-mute{display:block}
.p-t,.p-d{min-width:32px;text-align:center}
.p-track{position:relative;flex:1;height:30px;cursor:pointer;touch-action:none}
.p-track::before,.p-buf,.p-fill{content:'';position:absolute;left:0;top:50%;height:4px;margin-top:-2px;border-radius:4px}
.p-track::before{right:0;background:rgba(255,255,255,.22)}
.p-buf{width:calc(var(--b,0)*100%);background:rgba(255,255,255,.38)}
.p-fill{width:calc(var(--p,0)*100%);background:linear-gradient(90deg,var(--peach),var(--lilac))}
.p-track b{position:absolute;top:50%;left:calc(var(--p,0)*100%);width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.4);transition:transform .25s var(--spring)}
.seeking .p-track b,.p-track:hover b{transform:scale(1.4)}
.dl{position:relative;display:flex;align-items:center;gap:10px;margin-top:14px;padding:7px 18px 7px 7px;border-radius:999px;background:#fff;box-shadow:var(--sh);font-weight:800;font-size:14px;transition:transform .35s var(--spring),background .3s}
.dl:hover{transform:translateY(-2px)}.dl:active{transform:scale(.95)}
.dl .ring{width:38px;height:38px;flex:none;transform:rotate(-90deg)}
.dl circle{fill:var(--lilac-s);stroke:none;transition:fill .3s}
.dl .bar{fill:none;stroke:var(--lilac);stroke-width:3;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:calc(100 - var(--d,0)*100);opacity:0;transition:stroke-dashoffset .15s linear,opacity .2s}
.dl.busy .bar{opacity:1}
.dl>.i{position:absolute;left:17px;width:18px;height:18px;color:var(--lilac2)}
.dl .i-check,.dl.done .i-download{display:none}
.dl.done .i-check{display:block;color:var(--mint2);animation:pop .45s var(--spring)}
.dl.done circle{fill:var(--mint-s)}
.dl.busy .i-download{animation:bob 1s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(3px)}}

.plan-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}
.seg{position:relative;display:inline-grid;grid-auto-flow:column;grid-auto-columns:1fr;padding:5px;margin-bottom:20px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line)}
.seg::before{content:'';position:absolute;top:5px;bottom:5px;left:5px;width:calc((100% - 10px)/var(--n,2));border-radius:999px;background:var(--ink);box-shadow:0 8px 18px -8px rgba(42,35,66,.6);transform:translateX(calc(var(--i,0)*100%));transition:transform .5s var(--spring)}
.seg button{position:relative;z-index:1;padding:10px 18px;border-radius:999px;font-weight:800;font-size:14px;white-space:nowrap;transition:color .35s}
.seg button.on{color:#fff}
.plan-bar .seg{margin:0}
.date-nav{display:flex;align-items:center;gap:8px}
.date-btn{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 16px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);font-weight:800;font-size:14px;transition:transform .3s var(--spring)}
.date-btn:active{transform:scale(.95)}.date-btn .i{color:var(--lilac)}
.class-name{margin-bottom:14px}
.week{display:grid;grid-template-columns:repeat(5,minmax(190px,1fr));gap:14px;overflow-x:auto;padding:4px 2px 14px;scroll-snap-type:x mandatory}
.week>*{scroll-snap-align:start}
.oneday{max-width:560px}
.daycol{margin:0;padding:16px;border-radius:var(--r);background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--sh);animation:rise .55s var(--ease) backwards}
.week>:nth-child(2){animation-delay:.05s}.week>:nth-child(3){animation-delay:.1s}.week>:nth-child(4){animation-delay:.15s}.week>:nth-child(5){animation-delay:.2s}
.daycol header{margin-bottom:6px}
.daycol header strong{display:block;font:600 18px var(--head)}
.daycol header small{color:var(--muted);font-weight:700}
.daycol.is-today{box-shadow:inset 0 0 0 2px var(--lilac),var(--sh)}
.slot{margin-top:10px;padding:12px;border-radius:18px;background:#fff;border-left:4px solid var(--c)}
.s0{--c:var(--peach)}.s1{--c:var(--mint)}.s2{--c:var(--sky)}.s3{--c:var(--sun)}.s4{--c:var(--lilac)}
.slot-name{display:block;margin-bottom:6px;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.planned{display:flex;align-items:center;gap:8px;margin-bottom:6px;padding:8px 8px 8px 12px;border-radius:12px;background:var(--bg);animation:rise .4s var(--ease) backwards}
.planned a{flex:1;font-weight:800;font-size:14px;line-height:1.3}
.planned small{display:block;color:var(--muted);font-size:12px}
.add{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:8px 10px;border-radius:12px;border:1.5px dashed rgba(139,108,246,.35);color:var(--lilac2);font-weight:800;font-size:13px;transition:background .25s,border-color .25s}
.add:hover{background:var(--lilac-s);border-color:var(--lilac)}.add .i{width:16px;height:16px}

.list{display:grid;gap:10px}
.row{display:flex;align-items:center;gap:14px;width:100%;padding:10px 12px 10px 10px;border-radius:20px;background:#fff;box-shadow:var(--sh);text-align:left;transition:background .25s,transform .35s var(--spring);animation:rise .5s var(--ease) backwards}
.row-art{position:relative;width:64px;height:64px;flex:none;border-radius:14px;overflow:hidden;background:var(--lilac-s)}
.row-art>img{width:100%;height:100%;object-fit:cover}
.row-main{flex:1;min-width:0}
.row-main strong{display:block;font-weight:800;line-height:1.3}
.row-main small{display:block;color:var(--muted);font-size:13px}
.row-ico{width:44px;height:44px;flex:none;border-radius:14px;display:grid;place-items:center;background:var(--mint-s);color:var(--mint2)}
.r-1{background:var(--sun-s);color:var(--sun2)}.r-2{background:var(--peach-s);color:var(--peach2)}
.row.pick{box-shadow:inset 0 0 0 1.5px var(--line)}
.row.pick:hover{background:var(--lilac-s)}.row.pick:active{transform:scale(.98)}
.row .icon-btn{pointer-events:auto}
.row.pick .icon-btn{pointer-events:none}

.me{display:flex;align-items:center;gap:22px;margin-bottom:18px}
.me-avatar{position:relative;flex:none}
.me-avatar.busy .avatar{animation:breathe 1s ease-in-out infinite}
.cam{position:absolute;right:-4px;bottom:-4px;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;cursor:pointer;box-shadow:0 0 0 3px #fff;transition:transform .35s var(--spring)}
.cam:hover{transform:scale(1.08) rotate(-8deg)}.cam:active{transform:scale(.88)}
.cam .i{width:18px;height:18px}
.me p{margin:2px 0 6px;color:var(--muted);font-size:14px;word-break:break-all}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}
.stats div{padding:18px 10px;border-radius:20px;background:#fff;box-shadow:var(--sh);text-align:center;animation:rise .55s var(--ease) backwards}
.stats div:nth-child(2){animation-delay:.06s}.stats div:nth-child(3){animation-delay:.12s}
.stats strong{display:block;font:600 32px/1.1 var(--head);background:linear-gradient(135deg,var(--lilac),var(--peach));-webkit-background-clip:text;background-clip:text;color:transparent}
.stats small{color:var(--muted);font-weight:700;font-size:13px}
#view>.panel,#view>form{margin-bottom:18px}

.empty{grid-column:1/-1;padding:40px 20px;border-radius:var(--r);background:var(--glass);box-shadow:var(--sh);text-align:center;animation:rise .6s var(--ease) backwards}
.empty-ico{width:66px;height:66px;margin:0 auto 14px;border-radius:22px;display:grid;place-items:center;background:var(--lilac-s);color:var(--lilac2);animation:float 4s ease-in-out infinite}
.empty-ico .i{width:30px;height:30px}
.empty p{max-width:380px;margin:6px auto 18px;color:var(--muted)}

#sheet{position:fixed;inset:0;z-index:150;display:flex;align-items:flex-end;justify-content:center;background:rgba(30,22,52,0);visibility:hidden;transition:background .4s,visibility 0s .45s}
#sheet.on{visibility:visible;background:rgba(30,22,52,.4);transition:background .4s}
.sheet{width:min(620px,100%);max-height:92dvh;display:flex;flex-direction:column;background:var(--bg);border-radius:30px 30px 0 0;box-shadow:0 -20px 60px -20px rgba(30,22,52,.45);transform:translateY(105%);transition:transform .55s var(--ease)}
#sheet.on .sheet{transform:none}
.sheet.dragging{transition:none}
.grab{flex:none;height:28px;display:grid;place-items:center;cursor:grab;touch-action:none}
.grab i{width:44px;height:5px;border-radius:5px;background:rgba(42,35,66,.18)}
.sheet header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 20px 12px}
.sheet-body{display:grid;gap:20px;overflow-y:auto;overscroll-behavior:contain;padding:4px 20px calc(22px + var(--sb))}
.sheet-body>*{animation:rise .5s var(--ease) backwards}
.sheet-body>:nth-child(2){animation-delay:.05s}.sheet-body>:nth-child(3){animation-delay:.1s}.sheet-body>:nth-child(n+4){animation-delay:.15s}
.sheet-foot{position:sticky;bottom:calc(-22px - var(--sb));display:flex;gap:10px;margin:0 -20px calc(-22px - var(--sb));padding:16px 20px calc(16px + var(--sb));background:linear-gradient(rgba(251,247,242,0),var(--bg) 35%)}
.sheet-foot .btn{flex:1}

.cal{padding:14px;border-radius:22px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line)}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cal-head strong{font:600 17px var(--head)}
.cal-week,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.cal-week span{padding:6px 0;font-size:12px;font-weight:800;color:var(--soft)}
.slide-l .cal-grid{animation:from-l .4s var(--ease)}.slide-r .cal-grid{animation:from-r .4s var(--ease)}
@keyframes from-l{from{opacity:0;transform:translateX(-26px)}}
@keyframes from-r{from{opacity:0;transform:translateX(26px)}}
.day{height:42px;border-radius:14px;font-weight:700;font-size:15px;transition:background .2s,color .2s,transform .35s var(--spring),box-shadow .2s}
.day:hover:not(:disabled){background:var(--lilac-s)}
.day.now{color:var(--lilac2);box-shadow:inset 0 0 0 1.5px var(--lilac)}
.day.on{background:linear-gradient(135deg,var(--lilac),var(--lilac2));color:#fff;transform:scale(1.06);box-shadow:0 8px 16px -6px rgba(109,78,232,.6)}
.day:disabled{opacity:.25}

#toast{position:fixed;left:50%;top:calc(var(--st) + 14px);z-index:300;max-width:calc(100% - 32px);padding:13px 20px;border-radius:999px;background:var(--ink);color:#fff;font-weight:700;font-size:14px;text-align:center;box-shadow:0 18px 40px -14px rgba(30,22,52,.6);opacity:0;transform:translate(-50%,-150%);transition:transform .55s var(--spring),opacity .3s;pointer-events:none}
#toast.on{opacity:1;transform:translate(-50%,0)}

.auth{min-height:100dvh;display:grid;place-items:center;align-content:center;gap:18px;padding:calc(var(--st) + 24px) 18px calc(24px + var(--sb))}
.auth-card{width:min(420px,100%);padding:36px 26px 28px;border-radius:32px;background:rgba(255,255,255,.8);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);box-shadow:var(--sh-lg),inset 0 0 0 1px rgba(255,255,255,.9);text-align:center;animation:rise .7s var(--ease) backwards}
.auth-card.bye{animation:bye .45s var(--ease) forwards}
@keyframes bye{to{opacity:0;transform:scale(.94) translateY(-12px)}}
.auth-logo{margin:0 auto 14px;animation:bounce 3.4s var(--ease) infinite}
@keyframes bounce{50%{transform:translateY(-10px) rotate(-5deg)}}
.brand-xl{font:700 42px/1 var(--head);letter-spacing:-.03em}
.auth-sub{margin:12px 0 24px;color:var(--muted)}
.auth-form{display:grid;gap:14px;text-align:left}
.auth-form.shake{animation:shake .45s}
.input-ico{position:relative;display:block}
.input-ico .i{position:absolute;left:18px;top:50%;z-index:1;margin-top:-.625em;color:var(--soft)}
.input-ico input{min-height:56px;padding-left:50px;border-radius:18px}
.otp{position:relative;display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.otp input{position:absolute;inset:0;z-index:2;opacity:0;padding:0;caret-color:transparent;color:transparent}
.otp i{height:60px;border-radius:16px;display:grid;place-items:center;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);font:600 26px var(--head);transition:box-shadow .2s,transform .35s var(--spring)}
.otp i.on{box-shadow:inset 0 0 0 2px var(--lilac),0 0 0 5px rgba(139,108,246,.13);transform:translateY(-3px)}
.otp i:not(:empty){animation:pop .3s var(--spring)}
.auth-links{display:flex;justify-content:space-between;gap:10px}
.auth-foot{color:var(--muted);font-size:14px;font-weight:700}

@media(max-width:860px){.detail{grid-template-columns:1fr}.detail-info{position:static}.duo{grid-template-columns:1fr}}
@media(max-width:720px){.hero{grid-template-columns:1fr;padding:22px;gap:20px}.hero img{order:-1;aspect-ratio:16/10;transform:none}.hero .btn{width:100%;white-space:normal;text-align:center}.plan-bar{flex-direction:column;align-items:stretch}.date-nav{justify-content:space-between}.date-btn{flex:1;justify-content:center}}
@media(max-width:640px){.tagline{display:none}.moments{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -18px;padding:4px 18px 14px;scrollbar-width:none}.moments::-webkit-scrollbar{display:none}.moment{flex:0 0 108px;scroll-snap-align:start}.toolbar .search{flex-basis:100%}.toolbar .btn{flex:1}.grid{grid-template-columns:1fr 1fr;gap:12px}.body{padding:12px 14px 14px}.body h3{font-size:16px}.meta{flex-direction:column;gap:2px;margin-bottom:10px}.fav{width:36px;height:36px;top:8px;right:8px}.badge{left:8px;bottom:8px;padding:4px 9px;font-size:11px}.stats strong{font-size:26px}.me{flex-direction:column;text-align:center}.seg{display:grid;width:100%}.seg button{padding:10px 8px}}
@media(max-width:360px){.grid{grid-template-columns:1fr}}
@media(min-width:760px){#sheet{align-items:center}.sheet{border-radius:30px;opacity:0;transform:translateY(40px) scale(.96);transition:transform .5s var(--spring),opacity .3s}#sheet.on .sheet{opacity:1}.grab{visibility:hidden;height:18px}.sheet-body{padding-bottom:22px}.sheet-foot{bottom:-22px;margin-bottom:-22px;padding-bottom:16px}}
@media(hover:none){.card:hover,.btn:hover,.moment:hover,.dl:hover,.back:hover{transform:none}.card:hover .art>img,.card:hover .art>.scene{scale:1}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:.01ms!important}}
