/* 마이: 프로필 카드와 취향 구획(취향·예상 평점·등급 사다리). ink.css 다음에 읽어 그쪽 .me-card 규칙을 덮는다. */
.lv-badge{display:block;flex-shrink:0;overflow:visible}
.lv-badge>g{filter:url(#ink-fine)}
/* 팝콘 테두리·눈·통 안쪽은 배지가 놓인 바탕색으로 칠한다 */
.lv-eye{fill:var(--lv-hole,var(--bg))}
.lv-hs{stroke:var(--lv-hole,var(--bg))}

/* 카드: 사진 | 별명·등급·취향 | 수정·로그아웃. 좁은 화면에서는 두 버튼이 카드 아래 한 줄로 나란히. */
.me-card{grid-template-columns:64px 1fr auto;gap:16px;align-items:center}
.me-card .me-avatar{width:64px;height:64px}
.me-copy .me-nick{font-size:18px;letter-spacing:-.4px}
/* 등급 + 별명을 한 이름처럼. 누르면 등급표 시트(.grade-dialog) */
.me-title{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-width:0;min-height:0;padding:0;background:none;border:0;color:inherit;text-align:left;cursor:pointer}
.me-title .me-grade-name{padding:3px 10px 3px 5px;border:1px solid #4d5536;border-radius:15px}
.me-title .me-nick{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0}
.me-grade{display:grid;gap:6px;justify-items:start;min-width:0;margin-top:5px;padding:0;background:none;border:0;color:inherit;text-align:left;cursor:pointer}
.me-grade-name{display:flex;align-items:center;gap:6px}
.me-grade-name .lv-badge{width:26px;height:26px;margin:-4px 0;color:var(--yellow)}
.me-copy .me-grade-name b{font-size:13px;font-weight:700;color:var(--yellow)}
.me-grade-name small{font-size:11px;color:var(--muted)}
.me-card .me-level{margin:0}
.me-card .me-taste{display:block;margin:0;font-size:12px;color:var(--muted)}
.me-copy .me-taste b{font-size:12px;color:var(--ink);margin-left:3px}
.me-card .me-acts{flex-direction:row;align-items:center;gap:8px;margin:0}
.me-card .me-acts .me-act{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 15px;border:1px solid var(--line);border-radius:17px;background:none;font-size:12px;font-weight:600;line-height:1;color:var(--ink);text-decoration:none}
.me-card .me-acts a.me-act{font-weight:500;color:var(--muted)}
@media (max-width:520px){
 .me-card{grid-template-columns:56px 1fr;row-gap:14px}
 .me-card .me-avatar{width:56px;height:56px}
 .me-card .me-acts{grid-column:1/-1;justify-content:stretch}
 .me-card .me-acts .me-act{flex:1}
}

/* 마이 › 취향 */
.my-panel{padding:18px 0 22px;border-bottom:1px solid var(--line)}
.my-panel:last-of-type{border-bottom:0}
.my-panel h2{margin:0 0 10px;font-size:12px;font-weight:700;color:var(--muted)}
.taste-name{margin:0 0 4px;font-size:20px;font-weight:700;letter-spacing:-.5px}
.panel-note{display:block;margin:0;font-size:11px;line-height:1.6;color:var(--muted)}
.taste-genres{display:grid;gap:9px;max-width:520px;margin:14px 0 0;padding:0;list-style:none}
.taste-genres li{display:grid;grid-template-columns:76px 1fr 36px;align-items:center;gap:10px;font-size:13px}
.taste-genres i{height:6px;border-radius:3px;background:#2f342c;overflow:hidden}
.taste-genres i b{display:block;height:100%;border-radius:3px;background:var(--yellow)}
.taste-genres small{font-size:11px;color:var(--muted);text-align:right}
.taste-empty{margin:12px 0 0;font-size:12px;color:var(--muted)}
.my-panel .predict-note{margin:0 0 6px;font-size:14px;color:var(--ink)}
.grade-now{display:flex;align-items:center;gap:14px;margin-bottom:12px}
.grade-now .lv-badge{width:72px;height:72px;color:var(--yellow)}
.grade-now b{display:block;font-size:20px;font-weight:700;letter-spacing:-.5px;color:var(--yellow)}
.grade-now small{display:block;margin:2px 0 8px;font-size:12px;color:var(--muted)}
.grade-now .me-level{display:flex;align-items:center;gap:8px}
.grade-ladder{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 8px;margin:20px 0 0;padding:0;list-style:none}
.grade-ladder li{--lv-hole:var(--panel);position:relative;display:grid;justify-items:center;gap:3px;padding:12px 4px 10px;border-radius:var(--wob);text-align:center;color:var(--yellow);background:var(--panel)}
/* 모든 등급은 검은 칸에 형광 배지. 지금 등급만 흰 칸(배지에 진한 윤곽)·노란 테두리·'지금' 꼬리표·움직임 */
.grade-ladder li[data-state=now]{--lv-hole:#2a2d27;background:#fff;box-shadow:inset 0 0 0 2px var(--yellow),0 0 0 4px #ecf2262e}
.grade-ladder li[data-state=now] .lv-badge{filter:drop-shadow(0 0 .7px #2a2d27) drop-shadow(0 0 .7px #2a2d27) drop-shadow(0 0 .5px #2a2d27)}
.grade-ladder li[data-state=now] b{color:#141615}
.grade-ladder li[data-state=now] small{color:#5d6356}
.grade-ladder li[data-state=now]:before{content:'지금';position:absolute;top:-8px;left:50%;transform:translateX(-50%);padding:2px 8px;border-radius:9px;background:var(--yellow);color:#171b10;font-size:10px;font-weight:700;line-height:1.3}
.grade-ladder .lv-badge{width:44px;height:44px;margin-bottom:4px}
.grade-ladder b{font-size:11.5px;font-weight:650;white-space:nowrap;color:var(--ink)}
.grade-ladder small{font-size:10px;color:var(--muted)}
@media (min-width:768px){.grade-ladder{grid-template-columns:repeat(9,1fr)}}

/* 등급 배지 움직임: 지금 등급 배지만 움직인다(프로필 카드 · 등급 큰 배지 · 사다리의 지금 칸, 확인 페이지는 .lv-live).
   걷는 티켓(catalog.css .walker)처럼 눌렸다 튀는 리듬을 작게 쓰고, 한 번 움직인 뒤 잠깐 쉰다. 움직일 부분은 levels.js의 m(). */
.lv-m{transform-box:fill-box;transform-origin:50% 100%}
.lv-jit{--lv-a:lv-jit 2.6s ease-in-out infinite}
.lv-hop{--lv-a:lv-hop 2.4s cubic-bezier(.3,.6,.4,1) infinite}
.lv-wave{--lv-a:lv-wave 2.4s cubic-bezier(.3,.6,.4,1) infinite}
.lv-peek{--lv-a:lv-peek 2.7s ease-in-out infinite}
.lv-flip{transform-origin:50% 50%;--lv-a:lv-flip 2.6s cubic-bezier(.3,.6,.4,1) infinite}
.lv-swing{transform-origin:50% 0;--lv-a:lv-swing 2.8s ease-in-out infinite}
.lv-teeter{--lv-a:lv-teeter 2.8s ease-in-out infinite}
.lv-boil{--lv-a:lv-boil 2.4s ease-out infinite}
.lv-float{transform-origin:50% 50%;--lv-a:lv-float 3s ease-in-out infinite}
.lv-tw{transform-origin:50% 50%;--lv-a:lv-tw 1.8s ease-in-out infinite}
.lv-d1{--lv-delay:.18s}
.lv-d2{--lv-delay:.36s}
.lv-d3{--lv-delay:.9s}
.lv-peek.lv-d1{--lv-delay:.9s}
.lv-peek.lv-d2{--lv-delay:1.8s}
:is(.me-grade-name,.grade-now,.grade-ladder li[data-state=now],.lv-live) .lv-m{animation:var(--lv-a,none);animation-delay:var(--lv-delay,0s)}
/* 알갱이: 달아올라 좌우로 떤다 */
@keyframes lv-jit{0%,50%,100%{transform:rotate(0)}55%{transform:rotate(-6deg)}60%{transform:rotate(6deg)}65%{transform:rotate(-5deg)}70%{transform:rotate(5deg)}75%{transform:rotate(-2deg)}80%{transform:rotate(0)}}
/* 낟알: 움츠렸다 통 튄다 */
@keyframes lv-hop{0%,42%,100%{transform:translateY(0) scale(1)}8%{transform:translateY(0) scale(1.08,.9)}20%{transform:translateY(-7px) scale(.95,1.06)}32%{transform:translateY(0) scale(1.08,.9)}38%{transform:translateY(-1px) scale(.98,1.02)}}
/* 한 줌: 셋이 왼쪽부터 차례로 폴짝 */
@keyframes lv-wave{0%,30%,100%{transform:translateY(0) scale(1)}10%{transform:translateY(-4.5px) scale(.96,1.05)}20%{transform:translateY(0) scale(1.06,.93)}26%{transform:translateY(0) scale(1)}}
/* 봉투: 팝콘 셋이 번갈아 고개를 쏙 내민다 */
@keyframes lv-peek{0%,34%,100%{transform:translateY(0)}10%,24%{transform:translateY(-3px)}}
/* 컵: 맨 위 팝콘이 톡 튀어 한 바퀴 돌고 다시 들어간다 */
@keyframes lv-flip{0%,46%,100%{transform:translateY(0) rotate(0)}54%{transform:translateY(-8px) rotate(-90deg)}62%{transform:translateY(-10px) rotate(-200deg)}72%{transform:translateY(0) rotate(-360deg)}78%{transform:translateY(-1px) rotate(-360deg)}84%{transform:translateY(0) rotate(-360deg)}}
/* 바구니: 손잡이에 매달린 듯 흔들 */
@keyframes lv-swing{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
/* 탑: 균형을 잡듯 기우뚱 */
@keyframes lv-teeter{0%,100%{transform:rotate(0)}25%{transform:rotate(-4deg)}55%{transform:rotate(3deg)}80%{transform:rotate(-1deg)}}
/* 기계: 유리 상자 안 팝콘이 두 번 들썩인다 */
@keyframes lv-boil{0%,46%,100%{transform:translateY(0)}8%{transform:translateY(-3.5px)}16%{transform:translateY(0)}24%{transform:translateY(-2px)}32%{transform:translateY(0)}}
/* 열기구: 둥실 떠오르고, 둘레 반짝임이 깜빡인다 */
@keyframes lv-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-3.5px)}}
@keyframes lv-tw{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.25;transform:scale(.55)}}
@media (prefers-reduced-motion:reduce){.lv-m{animation:none!important}}

/* 등급표 시트(프로필 카드의 등급을 누르면) */
.grade-dialog h2 small{display:block;margin-top:4px;font-size:12px;font-weight:400;color:var(--muted)}
.grade-dialog .grade-sheet-bar{display:flex;align-items:center;justify-content:center;gap:8px;margin:12px 0 14px}
.grade-dialog .grade-ladder{grid-template-columns:repeat(3,1fr)}
.grade-all{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:0;font-size:12px;color:var(--yellow)}
.grade-all svg{width:14px;height:14px}
