/* アーケードのトップ・図鑑・ノート */
.hub-hero { position: relative; text-align: center; padding: 0 16px 26px; overflow: hidden; border-bottom: 1px solid var(--line);
  background: radial-gradient(600px 300px at 50% 0%, rgba(255, 62, 165, .35), transparent 70%), linear-gradient(180deg, #160c33, #0b0716); }
.hub-hero::before { content: ""; position: absolute; left: -50%; right: -50%; bottom: -10px; height: 180px; background-image: linear-gradient(rgba(34, 227, 255, .5) 1px, transparent 1px), linear-gradient(90deg, rgba(34, 227, 255, .5) 1px, transparent 1px); background-size: 40px 40px; transform: perspective(300px) rotateX(60deg); transform-origin: bottom; opacity: .35; animation: gridmove 2s linear infinite; pointer-events: none; }
@keyframes gridmove { to { background-position: 0 40px; } }
.hub-hero::after { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(0deg, rgba(0, 0, 0, .18) 0 2px, transparent 2px 4px); pointer-events: none; }
.marquee { overflow: hidden; white-space: nowrap; margin: 0 -16px 18px; padding: 6px 0; background: linear-gradient(90deg, var(--pink), var(--purple), var(--cyan)); color: #fff; font-family: var(--display); font-size: 13px; letter-spacing: .06em; }
.marquee span { display: inline-block; padding-left: 100%; animation: marq 26s linear infinite; }
@keyframes marq { to { transform: translateX(-100%); } }
.hub-title { position: relative; z-index: 1; margin: 6px 0 8px; font-weight: 400; line-height: 1.05; }
.ht-small { display: block; font-family: var(--display); font-size: 16px; color: var(--yellow); letter-spacing: .3em; }
.ht-big { display: block; font-family: var(--display); font-size: clamp(42px, 13vw, 84px); background: linear-gradient(180deg, #fff 0%, #ffd1f0 40%, #ff3ea5 70%, #7a5cff 100%); -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 0 18px rgba(255, 62, 165, .55)) drop-shadow(0 4px 0 #2a0b40); }
.ht-en { display: block; margin-top: 8px; font-family: var(--display); font-size: 13px; letter-spacing: .4em; color: var(--cyan); text-shadow: 0 0 10px var(--cyan); }
.hub-lead { position: relative; z-index: 1; max-width: 620px; margin: 10px auto 14px; font-weight: 800; font-size: 15px; }
.hub-lead b { color: var(--yellow); font-size: 1.25em; }
.hub-stats { position: relative; z-index: 1; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.hub-stats div { min-width: 74px; background: rgba(0, 0, 0, .45); border: 1px solid var(--line); border-radius: 14px; padding: 6px 10px; }
.hub-stats div.mine { border-color: var(--yellow); }
.hub-stats b { display: block; font-family: var(--display); font-size: 22px; font-weight: 400; color: #fff; }
.hub-stats span { font-size: 11px; color: var(--mute); }
.insert { position: relative; z-index: 1; display: inline-block; margin-top: 16px; font-family: var(--display); color: var(--yellow); font-size: 20px; letter-spacing: .15em; animation: blink 1s steps(2) infinite; cursor: pointer; }
.hub-main { max-width: 1100px; margin: 0 auto; padding: 0 16px 30px; }
.hub-sec { margin-top: 24px; }
.hub-sec h2 { font-size: 20px; margin: 0 0 10px; }
.hub-sec h2 small { font-size: 14px; color: var(--mute); }
.lv-row { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin; }
.lvchip { flex: none; display: flex; flex-direction: column; align-items: flex-start; gap: 0; padding: 8px 14px; border-radius: 14px; border: 2px solid var(--line); background: var(--panel); color: #fff; cursor: pointer; text-align: left; }
.lvchip .lc-i { font-size: 22px; }
.lvchip b { font-size: 13px; } .lvchip small { font-size: 10px; color: var(--mute); }
.lvchip.on { border-color: var(--yellow); box-shadow: 0 0 16px rgba(255, 225, 77, .35); background: #2a2000; }
.today-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
@media (max-width: 700px) { .today-grid { grid-template-columns: 1fr; } }
.hub-btns { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 12px; }
@media (max-width: 560px) { .hub-btns { grid-template-columns: 1fr; } }
.filters { position: sticky; top: 49px; z-index: 5; background: rgba(11, 7, 22, .94); backdrop-filter: blur(6px); padding: 8px 0; margin: 0 -16px 10px; padding-left: 16px; padding-right: 16px; border-bottom: 1px solid var(--line); }
.search { width: 100%; font-size: 16px; padding: 10px 14px; border-radius: 99px; border: 2px solid var(--line); background: #120b26; color: #fff; font-family: inherit; }
.search:focus { outline: none; border-color: var(--pink); }
.chips { display: flex; gap: 6px; overflow-x: auto; margin-top: 6px; padding-bottom: 2px; scrollbar-width: none; }
.chips::-webkit-scrollbar { display: none; }
.chip { flex: none; padding: 5px 12px; border-radius: 99px; border: 1px solid var(--line); background: var(--panel); color: var(--ink2); font-size: 13px; font-weight: 800; cursor: pointer; white-space: nowrap; }
.chip.on { background: linear-gradient(90deg, var(--pink), var(--purple)); color: #fff; border-color: transparent; }
.g-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; }
@media (max-width: 420px) { .g-grid { grid-template-columns: 1fr 1fr; gap: 8px; } }
.gcard { position: relative; display: flex; flex-direction: column; gap: 2px; min-height: 140px; padding: 12px; border-radius: 18px; text-decoration: none; color: #fff; overflow: hidden;
  background: linear-gradient(150deg, var(--c1), var(--c2)); box-shadow: 0 6px 16px rgba(0, 0, 0, .35), inset 0 0 0 1px rgba(255, 255, 255, .18); transition: transform .12s; }
.gcard::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(255, 255, 255, .18), transparent 40%, rgba(0, 0, 0, .25)); pointer-events: none; }
.gcard:hover { transform: translateY(-3px) rotate(-.5deg); }
.gcard:active { transform: scale(.97); }
.gcard[hidden] { display: none; }
.gc-e { font-size: 40px; line-height: 1.1; filter: drop-shadow(0 3px 4px rgba(0, 0, 0, .35)); }
.gc-t { font-weight: 900; font-size: 15px; line-height: 1.3; text-shadow: 0 1px 2px rgba(0, 0, 0, .4); }
.gc-en { font-family: var(--display); font-size: 9px; letter-spacing: .08em; opacity: .85; }
.gc-tags { margin-top: auto; display: flex; gap: 4px; flex-wrap: wrap; }
.gc-tags i { font-style: normal; font-size: 10px; font-weight: 800; background: rgba(0, 0, 0, .3); padding: 1px 7px; border-radius: 99px; }
.gc-best { position: absolute; top: 8px; right: 8px; z-index: 1; font-family: var(--display); font-size: 14px; background: rgba(0, 0, 0, .45); color: var(--yellow); border-radius: 8px; padding: 0 6px; }
.gcard.big { min-height: 170px; padding: 16px; }
.gcard.big .gc-e { font-size: 54px; } .gcard.big .gc-t { font-size: 18px; }
.gc-badge { position: absolute; top: 10px; right: 10px; z-index: 1; background: var(--yellow); color: #1a0b00; font-weight: 900; font-size: 11px; padding: 2px 8px; border-radius: 99px; }
.gc-done { position: absolute; bottom: 10px; right: 10px; z-index: 1; font-size: 11px; font-weight: 900; }
.g-grid.small .gcard { min-height: 110px; }
.empty { text-align: center; color: var(--mute); padding: 30px; }
.seo-hub { color: var(--ink2); font-size: 14px; }
.seo-hub ul { padding-left: 20px; }

/* 図鑑・ノート */
.page-h1 { font-family: var(--display); font-weight: 400; font-size: clamp(26px, 7vw, 38px); margin: 8px 0 12px; }
.gacha { text-align: center; padding: 18px; border-radius: 24px; background: linear-gradient(160deg, #3a1470, #140a2e); border: 2px solid var(--line); position: relative; overflow: hidden; }
.gacha-machine { font-size: 110px; line-height: 1; display: inline-block; }
.gacha-machine.shake { animation: gshake .12s 8; }
@keyframes gshake { 25% { transform: rotate(-8deg); } 75% { transform: rotate(8deg); } }
.gacha-result { min-height: 180px; display: grid; place-items: center; }
.capsule { font-size: 70px; animation: drop .6s cubic-bezier(.3, 1.6, .5, 1); }
@keyframes drop { from { transform: translateY(-120px) rotate(-180deg); opacity: 0; } }
.mon-reveal { animation: rankin .6s cubic-bezier(.2, 1.6, .4, 1); }
.mon-reveal .me { font-size: 90px; line-height: 1.1; }
.mon-reveal .mn { font-family: var(--display); font-size: 24px; }
.mon-reveal .mk { color: var(--mute); font-size: 13px; }
.mon-reveal .md { max-width: 460px; margin: 6px auto 0; font-weight: 700; }
.stars { color: var(--yellow); letter-spacing: 2px; }
.r5 .mn { background: linear-gradient(90deg, #ffe14d, #ff3ea5, #22e3ff); -webkit-background-clip: text; background-clip: text; color: transparent; }
.zgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; margin-top: 12px; }
.zcell { background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 8px 4px; text-align: center; cursor: pointer; }
.zcell .ze { font-size: 36px; } .zcell .zn { font-size: 11px; font-weight: 800; word-break: break-word; }
.zcell.no { opacity: .45; } .zcell.no .ze { filter: brightness(0); }
.zcell .zc { font-size: 10px; color: var(--yellow); }
.note-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
@media (max-width: 560px) { .note-stats { grid-template-columns: 1fr 1fr; } }
.note-stats div { background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 10px; text-align: center; }
.note-stats b { display: block; font-family: var(--display); font-size: 24px; font-weight: 400; }
.note-stats span { font-size: 12px; color: var(--mute); }
.cal { display: grid; grid-template-columns: repeat(15, 1fr); gap: 3px; margin-top: 8px; }
.cal i { aspect-ratio: 1; border-radius: 4px; background: #241a46; }
.cal i.l1 { background: #5b3db8; } .cal i.l2 { background: #a34bd8; } .cal i.l3 { background: #ff3ea5; }
.wlist { list-style: none; padding: 0; margin: 10px 0; display: grid; gap: 6px; }
.wlist li { display: flex; align-items: center; gap: 10px; background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 8px 12px; }
.wlist .we { font-weight: 900; font-size: 17px; } .wlist .wj { color: var(--ink2); flex: 1; } .wlist .wn { color: var(--red); font-size: 12px; font-weight: 800; }
.wlist button { border: 0; border-radius: 50%; width: 32px; height: 32px; cursor: pointer; background: var(--cyan); }
.wlist button.del { background: #3a2d6e; color: #fff; }
