:root{
  --bg:#020309;
  --panel:#080a11;
  --line:rgba(255,255,255,.11);
  --line2:rgba(255,255,255,.18);
  --text:#f4f0e8;
  --sub:#c9c1b6;
  --muted:#8f867b;
  --gold:#d7bd77;
  --rose:#efa8bd;
  --flame:#e2785d;
  --autumn:#c7904f;
  --ice:#a1d4ee;
  --sans:'Noto Sans KR',system-ui,-apple-system,BlinkMacSystemFont,sans-serif;
  --shadow:0 24px 84px rgba(0,0,0,.58);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  min-height:100vh;
  color:var(--text);
  font-family:var(--sans);
  word-break:keep-all;
  overflow-x:hidden;
  background:
    radial-gradient(circle at 14% 8%, rgba(239,168,189,.06), transparent 28%),
    radial-gradient(circle at 84% 12%, rgba(161,212,238,.05), transparent 30%),
    linear-gradient(160deg,#020309 0%,#070910 52%,#020309 100%);
}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.grain{
  position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
}

.opening{
  position:fixed;inset:0;z-index:30;display:grid;place-items:center;
  background:
    radial-gradient(circle at 50% 50%,rgba(215,189,119,.18),transparent 17%),
    radial-gradient(circle at 50% 50%,rgba(255,255,255,.04),transparent 38%),
    #020309;
  transition:opacity .42s ease,transform .42s ease;
}
.opening.done{opacity:0;transform:scale(1.015);pointer-events:none}
.opening-gate{
  position:relative;
  width:min(330px,66vw);
  aspect-ratio:1;
  border:0;
  padding:0;
  background:transparent;
  display:grid;
  place-items:center;
  filter:drop-shadow(0 28px 76px rgba(0,0,0,.76));
}
.gate-halo,.gate-ring,.gate-line,.gate-mark,.gate-core,.gate-spark{position:absolute;pointer-events:none}
.gate-halo{
  inset:18%;
  border-radius:50%;
  background:radial-gradient(circle,rgba(215,189,119,.18),rgba(215,189,119,.05) 42%,transparent 66%);
  animation:breath 2.4s ease-in-out infinite;
}
.gate-ring{
  border-radius:50%;
  border:1px solid rgba(215,189,119,.34);
}
.ring-1{
  inset:0;
  box-shadow:0 0 46px rgba(215,189,119,.16),0 0 0 1px rgba(255,255,255,.035) inset;
  animation:spin 24s linear infinite;
}
.ring-2{
  inset:14%;
  border-color:rgba(255,255,255,.16);
  animation:spinReverse 18s linear infinite;
}
.ring-3{
  inset:31%;
  border-color:rgba(215,189,119,.28);
  animation:spin 12s linear infinite;
}
.gate-line{
  width:88%;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(215,189,119,.55),transparent);
  opacity:.78;
}
.line-a{transform:rotate(45deg)}
.line-b{transform:rotate(-45deg)}
.gate-mark{
  font-weight:900;
  font-size:clamp(1.65rem,5.6vw,2.55rem);
  line-height:1;
  text-shadow:0 0 18px rgba(255,255,255,.14);
}
.mark-spring{top:-.18em;left:50%;transform:translateX(-50%);color:var(--rose)}
.mark-summer{right:-.16em;top:50%;transform:translateY(-50%);color:var(--flame)}
.mark-autumn{bottom:-.18em;left:50%;transform:translateX(-50%);color:var(--autumn)}
.mark-winter{left:-.16em;top:50%;transform:translateY(-50%);color:var(--ice)}
.gate-core{
  display:grid;
  place-items:center;
  width:32%;
  aspect-ratio:1;
  border-radius:50%;
  border:1px solid rgba(215,189,119,.55);
  background:radial-gradient(circle,rgba(215,189,119,.34),rgba(215,189,119,.08) 60%,transparent);
  color:#f8ecd0;
  font-weight:900;
  font-size:clamp(2rem,6.2vw,3.05rem);
  box-shadow:0 0 44px rgba(215,189,119,.24);
}
.gate-core:after{
  content:'';
  position:absolute;
  inset:-18%;
  border-radius:50%;
  border:1px solid rgba(215,189,119,.42);
  animation:pulse 1.7s ease-out infinite;
}
.gate-spark{
  width:5px;height:5px;border-radius:50%;
  background:#f3e2b5;
  box-shadow:0 0 16px rgba(215,189,119,.95);
  opacity:.8;
  animation:spark 2.2s ease-in-out infinite;
}
.spark-1{top:18%;left:24%;animation-delay:0s}
.spark-2{top:28%;right:17%;animation-delay:.45s}
.spark-3{bottom:20%;right:28%;animation-delay:.9s}
.spark-4{bottom:30%;left:18%;animation-delay:1.35s}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes spinReverse{to{transform:rotate(-360deg)}}
@keyframes pulse{from{transform:scale(.94);opacity:.55}to{transform:scale(1.65);opacity:0}}
@keyframes breath{50%{transform:scale(1.08);opacity:.82}}
@keyframes spark{0%,100%{transform:scale(.8);opacity:.35}50%{transform:scale(1.4);opacity:1}}

.topbar{
  position:sticky;top:0;z-index:12;display:none;align-items:center;justify-content:space-between;gap:12px;
  padding:12px clamp(16px,4vw,42px);
  border-bottom:1px solid rgba(255,255,255,.08);
  background:rgba(3,4,8,.84);
  backdrop-filter:blur(18px);
}
.topbar.visible{display:flex}
.brand{display:flex;align-items:center;gap:10px;border:0;background:transparent;padding:0;text-align:left}
.brand-mark{
  display:grid;place-items:center;width:34px;height:34px;border-radius:12px;
  border:1px solid rgba(215,189,119,.34);color:var(--gold);background:rgba(215,189,119,.08);font-weight:900;
}
.brand b{display:block;font-size:.94rem;font-weight:900}
.brand small{display:block;color:var(--muted);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase}
nav{display:flex;gap:8px}
nav button,.filter-row button{
  border:1px solid rgba(255,255,255,.11);border-radius:999px;background:rgba(255,255,255,.045);
  padding:8px 13px;color:#f0e9df;transition:.18s ease;
}
nav button:hover,.filter-row button:hover,.filter-row button.active{background:#dcc685;color:#11100c;border-color:transparent}

.app{position:relative;z-index:2;width:min(1120px,92vw);margin:0 auto;padding:36px 0 72px}
.view{display:none}
.view.active{display:block;animation:fade .24s ease both}
@keyframes fade{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.eyebrow{margin:0 0 10px;color:var(--gold);font-size:.72rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase}
.home-hero{
  position:relative;overflow:hidden;padding:clamp(32px,5.2vw,56px);
  border:1px solid var(--line);border-radius:26px;
  background:linear-gradient(135deg,rgba(255,255,255,.058),rgba(255,255,255,.024)),radial-gradient(circle at 82% 22%,rgba(215,189,119,.08),transparent 26%);
  box-shadow:var(--shadow);
}
.home-hero h2,.section-head h2{
  margin:0;font-weight:900;font-size:clamp(2rem,4.7vw,4rem);letter-spacing:-.055em;line-height:1.12;
}
.home-hero p:not(.eyebrow),.section-head p:not(.eyebrow){max-width:720px;color:var(--sub);line-height:1.7;font-size:.98rem}
.portal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.portal{
  text-align:left;border:1px solid var(--line);border-radius:22px;padding:22px;
  background:linear-gradient(150deg,rgba(255,255,255,.048),rgba(255,255,255,.022));
  box-shadow:0 14px 40px rgba(0,0,0,.24);transition:transform .18s ease,border-color .18s ease,background .18s ease;
}
.portal:hover{transform:translateY(-3px);border-color:rgba(215,189,119,.35);background:linear-gradient(150deg,rgba(215,189,119,.08),rgba(255,255,255,.024))}
.portal span{color:var(--gold);font-weight:900;font-size:.72rem;letter-spacing:.16em}
.portal strong{display:block;margin:11px 0 8px;font-size:1.55rem;font-weight:900;letter-spacing:-.04em}
.portal em{display:block;color:#c4baac;font-style:normal;line-height:1.55;font-size:.92rem}
.section-head{margin:6px 0 18px;padding:16px 0}
.character-head{display:flex;justify-content:space-between;align-items:flex-end;gap:22px}
.tools{width:min(450px,100%)}
#searchInput{
  width:100%;height:43px;border:1px solid rgba(255,255,255,.12);border-radius:14px;
  background:rgba(255,255,255,.04);padding:0 14px;outline:none;
}
#searchInput:focus{border-color:rgba(215,189,119,.46);box-shadow:0 0 0 4px rgba(215,189,119,.08)}
.filter-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.filter-row button{font-size:.83rem;padding:7px 12px}

.world-stack{display:grid;gap:14px}
.world-card{
  border:1px solid var(--line);border-radius:21px;padding:22px;
  background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.022));
  box-shadow:0 14px 42px rgba(0,0,0,.24);
}
.world-card h3{margin:0 0 12px;font-size:1.4rem;font-weight:900;letter-spacing:-.04em}
.world-card p{color:#d0c7bb;line-height:1.68;font-size:.94rem}
.world-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.mini-card{border:1px solid rgba(255,255,255,.085);border-radius:16px;padding:14px;background:rgba(0,0,0,.17)}
.mini-card strong{display:block;margin-bottom:7px;color:#fff}
.mini-card span{display:inline-block;margin-bottom:7px;color:var(--gold);font-weight:900}
.family-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.family-panel{
  border-radius:18px;padding:15px;border:1px solid color-mix(in srgb,var(--fam),white 8%);
  background:linear-gradient(180deg,color-mix(in srgb,var(--fam),transparent 90%),rgba(255,255,255,.024));
}
.family-panel .symbol{font-size:1.65rem}
.family-panel h4{margin:7px 0;font-size:1.08rem}

.character-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.char-card{
  position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.095);border-radius:22px;
  background:rgba(255,255,255,.034);box-shadow:0 14px 42px rgba(0,0,0,.26);
  padding:0;text-align:left;transition:transform .18s ease,border-color .18s ease,background .18s ease;
}
.char-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--fam),white 14%);background:rgba(255,255,255,.047)}
.char-card img{width:100%;aspect-ratio:1216/832;object-fit:cover;display:block;background:#05060a}
.char-body{padding:14px}
.char-top{display:flex;align-items:center;justify-content:space-between;gap:9px}
.char-name{margin:0;font-weight:900;font-size:1.28rem;letter-spacing:-.045em}
.badge{
  flex:0 0 auto;border:1px solid color-mix(in srgb,var(--fam),white 6%);background:color-mix(in srgb,var(--fam),transparent 88%);
  border-radius:999px;padding:5px 8px;color:#fff;font-size:.68rem;font-weight:800;
}
.char-meta{margin:8px 0 9px;color:#beb5a9;font-size:.85rem}
.chip-row{display:flex;flex-wrap:wrap;gap:5px}
.chip{border:1px solid rgba(255,255,255,.10);border-radius:999px;padding:4px 7px;background:rgba(255,255,255,.038);font-size:.72rem;color:#ddd}
.char-card:after{content:'';position:absolute;inset:auto 0 0 0;height:3px;background:linear-gradient(90deg,var(--fam),transparent)}

.modal{
  width:min(1160px,94vw);max-height:94vh;border:0;border-radius:26px;padding:0;overflow:hidden;
  background:rgba(5,6,10,.98);color:var(--text);box-shadow:0 28px 110px rgba(0,0,0,.72);
}
.modal::backdrop{background:rgba(0,0,0,.78);backdrop-filter:blur(8px)}
.modal-shell{
  position:relative;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);
  max-height:92vh;overflow-y:auto;border:1px solid rgba(255,255,255,.12);border-radius:26px;overscroll-behavior:contain;
}
.modal-close{
  position:absolute;right:14px;top:12px;z-index:4;width:40px;height:40px;border:1px solid rgba(255,255,255,.16);
  border-radius:50%;background:rgba(0,0,0,.52);font-size:1.65rem;line-height:1;
}
.modal-media{
  min-height:0;padding:20px;border-right:1px solid rgba(255,255,255,.08);
  background:radial-gradient(circle at 35% 18%,color-mix(in srgb,var(--modal-fam,#d7bd77),transparent 86%),transparent 58%),#05060a;
}
.modal-media img{width:100%;height:auto;aspect-ratio:1216/832;object-fit:contain;border-radius:18px;display:block;background:#05060a}
.emotion-buttons{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:12px}
.emotion-buttons button{border:1px solid rgba(255,255,255,.10);border-radius:12px;background:rgba(255,255,255,.045);padding:8px 5px;font-size:.78rem}
.emotion-buttons button.active{background:var(--modal-fam,#d7bd77);color:#111;border-color:transparent;font-weight:900}
.modal-info{min-height:0;overflow:visible;padding:34px 30px 42px}
.modal-family{margin:0 0 8px;color:var(--modal-fam,#d7bd77);font-weight:900;letter-spacing:.06em}
.modal-info h3{margin:0;font-size:2.35rem;font-weight:900;letter-spacing:-.055em}
.modal-intro{margin:12px 0 16px;color:#d6cec2;line-height:1.68}
.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}
.profile-item{border:1px solid rgba(255,255,255,.085);border-radius:14px;padding:12px;background:rgba(255,255,255,.035)}
.profile-item b{display:block;margin-bottom:4px;color:#fff;font-size:.76rem}
.profile-item span{color:#ccc3b7;font-size:.86rem;line-height:1.55}
.detail-stack{display:grid;gap:10px;padding-bottom:10px}
.detail-block{border-left:3px solid var(--modal-fam,#d7bd77);padding:9px 0 9px 13px}
.detail-block b{display:block;margin-bottom:5px;color:#fff}
.detail-block p{margin:0;color:#ccc3b7;line-height:1.68;font-size:.9rem}

@media (max-width:960px){
  .portal-grid,.world-grid,.family-board{grid-template-columns:1fr}
  .character-head{display:block}
  .tools{margin-top:14px;width:100%}
  .character-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .modal{width:96vw;max-height:94vh}
  .modal-shell{display:block;max-height:94vh;overflow-y:auto}
  .modal-media{border-right:0;border-bottom:1px solid rgba(255,255,255,.08);padding:14px}
  .modal-info{padding:22px 18px 34px}
  .profile-grid{grid-template-columns:1fr}
}

@media (max-width:620px){
  .opening-gate{width:min(310px,68vw)}
  .topbar{padding:10px 12px;gap:8px}
  .brand{gap:8px}
  .brand-mark{width:30px;height:30px;border-radius:10px;font-size:.88rem}
  .brand b{font-size:.86rem}
  .brand small{display:none}
  nav{gap:6px}
  nav button{padding:7px 10px;font-size:.78rem}

  .app{width:min(100% - 24px,1120px);padding-top:0;padding-bottom:52px}

  
  .home-view.active{
    min-height:calc(100svh - 52px);
    display:flex;
    flex-direction:column;
    justify-content:center;
    gap:12px;
    padding-bottom:7vh;
  }
  .home-hero{
    padding:20px 18px;
    border-radius:18px;
    box-shadow:0 18px 54px rgba(0,0,0,.34);
  }
  .home-hero h2,.section-head h2{font-size:1.54rem;line-height:1.16;letter-spacing:-.045em}
  .home-hero p:not(.eyebrow),.section-head p:not(.eyebrow){font-size:.84rem;line-height:1.58}
  .eyebrow{font-size:.62rem;letter-spacing:.15em}
  .portal-grid{grid-template-columns:1fr;gap:9px;margin-top:0}
  .portal{min-height:auto;padding:14px 16px;border-radius:16px}
  .portal strong{margin:8px 0 5px;font-size:1.08rem}
  .portal em{font-size:.78rem;line-height:1.42}

  .section-head{padding:18px 0 9px;margin-bottom:10px}
  #searchInput{height:40px;border-radius:13px;font-size:.84rem}
  .filter-row{gap:6px;margin-top:9px}
  .filter-row button{padding:6px 10px;font-size:.76rem}

  .world-stack{gap:12px}
  .world-card{padding:17px;border-radius:17px}
  .world-card h3{font-size:1.18rem;margin-bottom:9px}
  .world-card p{font-size:.84rem;line-height:1.62;margin:0 0 10px}
  .mini-card{padding:12px;border-radius:13px}
  .mini-card strong{font-size:.9rem}
  .mini-card span{font-size:.78rem}

  
  .character-grid{grid-template-columns:1fr;gap:10px}
  .char-card{
    display:grid;
    grid-template-columns:112px 1fr;
    min-height:128px;
    border-radius:16px;
  }
  .char-card img{
    width:112px;
    height:128px;
    aspect-ratio:auto;
    object-fit:cover;
  }
  .char-body{
    min-width:0;
    padding:12px 12px 10px;
    align-self:center;
  }
  .char-top{display:flex;align-items:center;gap:8px}
  .char-name{
    min-width:0;
    font-size:1.02rem;
    line-height:1.12;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .badge{
    margin-left:auto;
    padding:3px 6px;
    font-size:.58rem;
  }
  .char-meta{
    font-size:.68rem;
    line-height:1.35;
    margin:7px 0;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .chip{font-size:.6rem;padding:3px 6px}
  .chip:nth-child(n+3){display:none}

  .modal{width:100vw;max-width:100vw;max-height:100dvh;border-radius:0}
  .modal-shell{max-height:100dvh;border-radius:0;border:0}
  .modal-close{right:10px;top:10px;width:38px;height:38px}
  .modal-media{padding:12px}
  .modal-media img{border-radius:14px}
  .emotion-buttons{grid-template-columns:repeat(2,1fr);gap:6px}
  .emotion-buttons button{font-size:.72rem;padding:8px 4px}
  .modal-info{padding:20px 16px 38px}
  .modal-info h3{font-size:1.85rem}
  .modal-intro{font-size:.88rem;line-height:1.62}
  .detail-block p{font-size:.84rem;line-height:1.62}
}

@media (max-width:360px){
  .app{width:min(100% - 18px,1120px)}
  nav button{padding:7px 8px}
  .char-card{grid-template-columns:100px 1fr;min-height:120px}
  .char-card img{width:100px;height:120px}
  .char-name{font-size:.96rem}
  .char-body{padding:10px}
}

img{
  max-width:100%;
  -webkit-user-drag:none;
}
.char-card,
.world-card,
.portal{
  content-visibility:auto;
  contain-intrinsic-size:260px;
}
.char-card img,
.modal-media img{
  image-rendering:auto;
}
@media (hover:hover){
  .char-card:hover,
  .portal:hover{
    transform:translateY(-3px);
  }
}
@media (max-width:620px){
  .grain{display:none}
  body{
    background:#020309;
  }
  .opening{
    background:
      radial-gradient(circle at 50% 50%,rgba(215,189,119,.14),transparent 19%),
      #020309;
  }
  .opening-gate{
    width:min(300px,64vw);
  }
  .gate-spark{
    width:4px;
    height:4px;
  }
  .app{
    width:min(100% - 22px,1120px);
  }
  .home-view.active{
    min-height:calc(100svh - 52px);
    justify-content:center;
    padding-bottom:5vh;
  }
  .home-hero{
    padding:18px 16px;
    border-radius:17px;
    box-shadow:0 14px 38px rgba(0,0,0,.28);
  }
  .home-hero h2{
    font-size:1.42rem;
  }
  .home-hero p:not(.eyebrow){
    font-size:.82rem;
    line-height:1.5;
    margin-bottom:0;
  }
  .portal{
    padding:13px 15px;
    border-radius:15px;
    box-shadow:none;
  }
  .portal strong{
    font-size:1.03rem;
  }
  .portal em{
    font-size:.76rem;
  }
  .character-grid{
    gap:9px;
  }
  .char-card{
    grid-template-columns:96px 1fr;
    min-height:112px;
    border-radius:14px;
    box-shadow:none;
  }
  .char-card img{
    width:96px;
    height:112px;
  }
  .char-body{
    padding:10px 11px;
  }
  .char-name{
    font-size:.96rem;
  }
  .char-meta{
    margin:6px 0;
    font-size:.64rem;
  }
  .badge{
    font-size:.55rem;
    padding:3px 6px;
  }
  .chip{
    font-size:.57rem;
    padding:2px 5px;
  }
  .world-card,
  .mini-card,
  .family-panel{
    box-shadow:none;
  }
}
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
}

.char-card img{
  image-rendering:auto;
  object-fit:cover;
}
@media (min-width:621px){
  .char-card img{
    aspect-ratio:1216/832;
  }
}

@media (min-width: 621px){
  .character-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
  }
  .char-card{
    display:grid;
    grid-template-columns:44% 56%;
    min-height:232px;
    border-radius:20px;
    overflow:hidden;
    align-items:stretch;
  }
  .char-card img{
    width:100%;
    height:100%;
    min-height:232px;
    aspect-ratio:auto;
    object-fit:cover;
  }
  .char-body{
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:16px 16px 14px;
    min-width:0;
  }
  .char-top{
    display:flex;
    align-items:center;
    gap:10px;
  }
  .char-name{
    font-size:1.22rem;
    line-height:1.15;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .badge{
    margin-left:auto;
    font-size:.64rem;
    padding:4px 8px;
  }
  .char-meta{
    margin:8px 0 9px;
    font-size:.82rem;
    line-height:1.4;
  }
  .chip{
    font-size:.68rem;
    padding:4px 7px;
  }
}

@media (min-width: 1100px){
  .character-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:16px;
  }
  .char-card{
    grid-template-columns:1fr;
    min-height:0;
  }
  .char-card img{
    width:100%;
    height:auto;
    min-height:0;
    aspect-ratio:1216/700;
    object-fit:cover;
  }
  .char-body{
    display:block;
    padding:14px;
  }
  .char-name{
    font-size:1.18rem;
  }
  .char-meta{
    font-size:.8rem;
  }
  .chip{
    font-size:.66rem;
  }
}

@media (max-width:620px){
  .character-grid{
    grid-template-columns:1fr;
    gap:9px;
  }
}


/* v12 mobile image response */
.modal-media img{
  transition:opacity .12s ease;
  will-change:opacity;
}
@media (max-width:620px){
  .emotion-buttons button{
    touch-action:manipulation;
  }
  .modal-media img{
    max-height:54svh;
  }
  .gate-spark{
    animation-duration:2.8s;
  }
  .ring-1{
    animation-duration:34s;
  }
  .ring-2{
    animation-duration:26s;
  }
  .ring-3{
    animation-duration:18s;
  }
}

